The goal of this thread is to come up with good rules regarding the usage of integer types in Blender. Those will then be added to our code style guide.
Please read the “Arithmetic” section of the C++ Core Guidelines and the “Integer Types” section of the Google C++ Style Guide.
Below I formulate work-in-progress rules. I’ll update them according to the feedback I get.
char of the builtin integer types. So, do not use
long long. Prefer fixed size integer types like
int16_t instead. You can assume that
int has at least 32 bits.
int64_t for integers that we know can be “big”.
false to represent truth values (instead of
int with 0 and 1).
If your code is a container with a size, be sure its size-type is large enough for any possible usage. When in doubt, use a larger type like
Use unsigned integers in bit manipulations and modular arithmetic. When using modular arithmetic, mention that in a comment.
When using unsigned integers, always use
Don’t use unsigned integers to indicate that a value is non-negative, use assertions instead.
Since bit operations are used on flags, those should be unsigned integers with a fixed size.
If your code is using
uint already, try to avoid doing any arithmetic on values of that type. Additions of small positive constants are likely OK but avoid subtraction or arithmetic with any values that might be negative.
As with most new rules, our current code base does not make a good job of following them. Nevertheless, I think it is worth adding these rules to our style guide. This way, new code can follow better practices and we have justification for cleanup commits in existing code.
CC: @brecht @ideasman42 @mont29 @LazyDodo @julianeisel @Howard_Trickey @sergey @JeroenBakker @sybren