At this moment
makesdna doesn’t support
enum fields. As a result, the DNA structs have a lot of
char fields that actually take predefined values from some enumeration. The problem is that it’s often not that clear, at least not at first sight, which values are supposed to go into which field.
Just to name one concrete example, the
Object struct in
DNA_object_types.h has a field
int mode. There is no comment that explains what should go in there, and it’s left as an exercise for the reader to discover there is
DNA_object_enums.h with an
eObjectMode enum. Ok, the enum itself has a comment
/** #Object.mode */ above it, so there is a pointer from the enum to the property that uses it, but not the opposite way. The compiler or an IDE of course has no idea that these two (the
int mode field and the
enum eObjectMode) are related at all.
I think that using enums more widely in Blender’s code base will make it easier to understand for humans, and also will allow compilers to help us developers more.
Since for C an
enum field is just treated as an
int, I would suggest to add enum support to
makesdna. I don’t know much about
makesdna, but as it parses text, I don’t think it should be too hard to just have it interpret
enum eSomeEnumType as an alias for