Changeset View
Changeset View
Standalone View
Standalone View
source/blender/makesrna/intern/makesrna.c
| Show First 20 Lines • Show All 4,426 Lines • ▼ Show 20 Lines | static const char *cpp_classes = | ||||
| "\n" | "\n" | ||||
| "#include <stdlib.h> /* for malloc */\n" | "#include <stdlib.h> /* for malloc */\n" | ||||
| "#include <string>\n" | "#include <string>\n" | ||||
| "#include <string.h> /* for memcpy */\n" | "#include <string.h> /* for memcpy */\n" | ||||
| "\n" | "\n" | ||||
| "namespace BL {\n" | "namespace BL {\n" | ||||
| "\n" | "\n" | ||||
| "#define BOOLEAN_PROPERTY(sname, identifier) \\\n" | "#define BOOLEAN_PROPERTY(sname, identifier) \\\n" | ||||
| " inline bool sname::identifier(void) { return sname##_##identifier##_get(&ptr) ? true: " | " inline bool sname::identifier(void) { return sname##_##identifier##_get(&m_ptr) ? true: " | ||||
| "false; } \\\n" | "false; } \\\n" | ||||
| " inline void sname::identifier(bool value) { sname##_##identifier##_set(&ptr, value); }\n" | " inline void sname::identifier(bool value) { sname##_##identifier##_set(&m_ptr, value); " | ||||
| "}\n" | |||||
| "\n" | "\n" | ||||
| "#define BOOLEAN_ARRAY_PROPERTY(sname, size, identifier) \\\n" | "#define BOOLEAN_ARRAY_PROPERTY(sname, size, identifier) \\\n" | ||||
| " inline Array<bool, size> sname::identifier(void) \\\n" | " inline Array<bool, size> sname::identifier(void) \\\n" | ||||
| " { Array<bool, size> ar; sname##_##identifier##_get(&ptr, ar.data); return ar; } \\\n" | " { Array<bool, size> ar; sname##_##identifier##_get(&m_ptr, ar.data); return ar; } " | ||||
| "\\\n" | |||||
| " inline void sname::identifier(bool values[size]) \\\n" | " inline void sname::identifier(bool values[size]) \\\n" | ||||
| " { sname##_##identifier##_set(&ptr, values); } \\\n" | " { sname##_##identifier##_set(&m_ptr, values); } \\\n" | ||||
| "\n" | "\n" | ||||
| "#define BOOLEAN_DYNAMIC_ARRAY_PROPERTY(sname, identifier) \\\n" | "#define BOOLEAN_DYNAMIC_ARRAY_PROPERTY(sname, identifier) \\\n" | ||||
| " inline DynamicArray<bool> sname::identifier(void) { \\\n" | " inline DynamicArray<bool> sname::identifier(void) { \\\n" | ||||
| " int arraylen[3]; \\\n" | " int arraylen[3]; \\\n" | ||||
| " int len = sname##_##identifier##_get_length(&ptr, arraylen); \\\n" | " int len = sname##_##identifier##_get_length(&m_ptr, arraylen); \\\n" | ||||
| " DynamicArray<bool> ar(len); \\\n" | " DynamicArray<bool> ar(len); \\\n" | ||||
| " sname##_##identifier##_get(&ptr, ar.data); \\\n" | " sname##_##identifier##_get(&m_ptr, ar.data); \\\n" | ||||
| " return ar; } \\\n" | " return ar; } \\\n" | ||||
| " inline void sname::identifier(bool values[]) \\\n" | " inline void sname::identifier(bool values[]) \\\n" | ||||
| " { sname##_##identifier##_set(&ptr, values); } \\\n" | " { sname##_##identifier##_set(&m_ptr, values); } \\\n" | ||||
| "\n" | "\n" | ||||
| "#define INT_PROPERTY(sname, identifier) \\\n" | "#define INT_PROPERTY(sname, identifier) \\\n" | ||||
| " inline int sname::identifier(void) { return sname##_##identifier##_get(&ptr); } \\\n" | " inline int sname::identifier(void) { return sname##_##identifier##_get(&m_ptr); } \\\n" | ||||
| " inline void sname::identifier(int value) { sname##_##identifier##_set(&ptr, value); }\n" | " inline void sname::identifier(int value) { sname##_##identifier##_set(&m_ptr, value); }\n" | ||||
| "\n" | "\n" | ||||
| "#define INT_ARRAY_PROPERTY(sname, size, identifier) \\\n" | "#define INT_ARRAY_PROPERTY(sname, size, identifier) \\\n" | ||||
| " inline Array<int, size> sname::identifier(void) \\\n" | " inline Array<int, size> sname::identifier(void) \\\n" | ||||
| " { Array<int, size> ar; sname##_##identifier##_get(&ptr, ar.data); return ar; } \\\n" | " { Array<int, size> ar; sname##_##identifier##_get(&m_ptr, ar.data); return ar; } \\\n" | ||||
| " inline void sname::identifier(int values[size]) \\\n" | " inline void sname::identifier(int values[size]) \\\n" | ||||
| " { sname##_##identifier##_set(&ptr, values); } \\\n" | " { sname##_##identifier##_set(&m_ptr, values); } \\\n" | ||||
| "\n" | "\n" | ||||
| "#define INT_DYNAMIC_ARRAY_PROPERTY(sname, identifier) \\\n" | "#define INT_DYNAMIC_ARRAY_PROPERTY(sname, identifier) \\\n" | ||||
| " inline DynamicArray<int> sname::identifier(void) { \\\n" | " inline DynamicArray<int> sname::identifier(void) { \\\n" | ||||
| " int arraylen[3]; \\\n" | " int arraylen[3]; \\\n" | ||||
| " int len = sname##_##identifier##_get_length(&ptr, arraylen); \\\n" | " int len = sname##_##identifier##_get_length(&m_ptr, arraylen); \\\n" | ||||
| " DynamicArray<int> ar(len); \\\n" | " DynamicArray<int> ar(len); \\\n" | ||||
| " sname##_##identifier##_get(&ptr, ar.data); \\\n" | " sname##_##identifier##_get(&m_ptr, ar.data); \\\n" | ||||
| " return ar; } \\\n" | " return ar; } \\\n" | ||||
| " inline void sname::identifier(int values[]) \\\n" | " inline void sname::identifier(int values[]) \\\n" | ||||
| " { sname##_##identifier##_set(&ptr, values); } \\\n" | " { sname##_##identifier##_set(&m_ptr, values); } \\\n" | ||||
| "\n" | "\n" | ||||
| "#define FLOAT_PROPERTY(sname, identifier) \\\n" | "#define FLOAT_PROPERTY(sname, identifier) \\\n" | ||||
| " inline float sname::identifier(void) { return sname##_##identifier##_get(&ptr); } \\\n" | " inline float sname::identifier(void) { return sname##_##identifier##_get(&m_ptr); } \\\n" | ||||
| " inline void sname::identifier(float value) { sname##_##identifier##_set(&ptr, value); }\n" | " inline void sname::identifier(float value) { sname##_##identifier##_set(&m_ptr, value); " | ||||
| "}\n" | |||||
| "\n" | "\n" | ||||
| "#define FLOAT_ARRAY_PROPERTY(sname, size, identifier) \\\n" | "#define FLOAT_ARRAY_PROPERTY(sname, size, identifier) \\\n" | ||||
| " inline Array<float, size> sname::identifier(void) \\\n" | " inline Array<float, size> sname::identifier(void) \\\n" | ||||
| " { Array<float, size> ar; sname##_##identifier##_get(&ptr, ar.data); return ar; } \\\n" | " { Array<float, size> ar; sname##_##identifier##_get(&m_ptr, ar.data); return ar; } " | ||||
| "\\\n" | |||||
| " inline void sname::identifier(float values[size]) \\\n" | " inline void sname::identifier(float values[size]) \\\n" | ||||
| " { sname##_##identifier##_set(&ptr, values); } \\\n" | " { sname##_##identifier##_set(&m_ptr, values); } \\\n" | ||||
| "\n" | "\n" | ||||
| "#define FLOAT_DYNAMIC_ARRAY_PROPERTY(sname, identifier) \\\n" | "#define FLOAT_DYNAMIC_ARRAY_PROPERTY(sname, identifier) \\\n" | ||||
| " inline DynamicArray<float> sname::identifier(void) { \\\n" | " inline DynamicArray<float> sname::identifier(void) { \\\n" | ||||
| " int arraylen[3]; \\\n" | " int arraylen[3]; \\\n" | ||||
| " int len = sname##_##identifier##_get_length(&ptr, arraylen); \\\n" | " int len = sname##_##identifier##_get_length(&m_ptr, arraylen); \\\n" | ||||
| " DynamicArray<float> ar(len); \\\n" | " DynamicArray<float> ar(len); \\\n" | ||||
| " sname##_##identifier##_get(&ptr, ar.data); \\\n" | " sname##_##identifier##_get(&m_ptr, ar.data); \\\n" | ||||
| " return ar; } \\\n" | " return ar; } \\\n" | ||||
| " inline void sname::identifier(float values[]) \\\n" | " inline void sname::identifier(float values[]) \\\n" | ||||
| " { sname##_##identifier##_set(&ptr, values); } \\\n" | " { sname##_##identifier##_set(&m_ptr, values); } \\\n" | ||||
| "\n" | "\n" | ||||
| "#define ENUM_PROPERTY(type, sname, identifier) \\\n" | "#define ENUM_PROPERTY(type, sname, identifier) \\\n" | ||||
| " inline sname::type sname::identifier(void) { return " | " inline sname::type sname::identifier(void) { return " | ||||
| "(type)sname##_##identifier##_get(&ptr); } \\\n" | "(type)sname##_##identifier##_get(&m_ptr); } \\\n" | ||||
| " inline void sname::identifier(sname::type value) { sname##_##identifier##_set(&ptr, " | " inline void sname::identifier(sname::type value) { sname##_##identifier##_set(&m_ptr, " | ||||
| "value); }\n" | "value); }\n" | ||||
| "\n" | "\n" | ||||
| "#define STRING_PROPERTY(sname, identifier) \\\n" | "#define STRING_PROPERTY(sname, identifier) \\\n" | ||||
| " inline std::string sname::identifier(void) { \\\n" | " inline std::string sname::identifier(void) { \\\n" | ||||
| " int len = sname##_##identifier##_length(&ptr); \\\n" | " int len = sname##_##identifier##_length(&m_ptr); \\\n" | ||||
| " std::string str; str.resize(len); \\\n" | " std::string str; str.resize(len); \\\n" | ||||
| " sname##_##identifier##_get(&ptr, &str[0]); return str; } \\\n" | " sname##_##identifier##_get(&m_ptr, &str[0]); return str; } \\\n" | ||||
| " inline void sname::identifier(const std::string& value) { \\\n" | " inline void sname::identifier(const std::string& value) { \\\n" | ||||
| " sname##_##identifier##_set(&ptr, value.c_str()); } \\\n" | " sname##_##identifier##_set(&m_ptr, value.c_str()); } \\\n" | ||||
| "\n" | "\n" | ||||
| "#define POINTER_PROPERTY(type, sname, identifier) \\\n" | "#define POINTER_PROPERTY(type, sname, identifier) \\\n" | ||||
| " inline type sname::identifier(void) { return type(sname##_##identifier##_get(&ptr)); }\n" | " inline type sname::identifier(void) { return type(sname##_##identifier##_get(&m_ptr)); " | ||||
| "}\n" | |||||
| "\n" | "\n" | ||||
| "#define COLLECTION_PROPERTY_LENGTH_false(sname, identifier) \\\n" | "#define COLLECTION_PROPERTY_LENGTH_false(sname, identifier) \\\n" | ||||
| " inline static int sname##_##identifier##_length_wrap(PointerRNA *ptr) \\\n" | " inline static int sname##_##identifier##_length_wrap(PointerRNA *ptr) \\\n" | ||||
| " { \\\n" | " { \\\n" | ||||
| " CollectionPropertyIterator iter; \\\n" | " CollectionPropertyIterator iter; \\\n" | ||||
| " int length = 0; \\\n" | " int length = 0; \\\n" | ||||
| " sname##_##identifier##_begin(&iter, ptr); \\\n" | " sname##_##identifier##_begin(&iter, ptr); \\\n" | ||||
| " while (iter.valid) { \\\n" | " while (iter.valid) { \\\n" | ||||
| " sname##_##identifier##_next(&iter); \\\n" | " sname##_##identifier##_next(&iter); \\\n" | ||||
| " ++length; \\\n" | " ++length; \\\n" | ||||
| " } \\\n" | " } \\\n" | ||||
| " sname##_##identifier##_end(&iter); \\\n" | " sname##_##identifier##_end(&iter); \\\n" | ||||
| " return length; \\\n" | " return length; \\\n" | ||||
| " } \n" | " } \n" | ||||
| "#define COLLECTION_PROPERTY_LENGTH_true(sname, identifier) \\\n" | "#define COLLECTION_PROPERTY_LENGTH_true(sname, identifier) \\\n" | ||||
| " inline static int sname##_##identifier##_length_wrap(PointerRNA *ptr) \\\n" | " inline static int sname##_##identifier##_length_wrap(PointerRNA *ptr) \\\n" | ||||
| " { return sname##_##identifier##_length(ptr); } \n" | " { return sname##_##identifier##_length(ptr); } \n" | ||||
| "\n" | "\n" | ||||
| "#define COLLECTION_PROPERTY_LOOKUP_INT_false(sname, identifier) \\\n" | "#define COLLECTION_PROPERTY_LOOKUP_INT_false(sname, identifier) \\\n" | ||||
| " inline static int sname##_##identifier##_lookup_int_wrap(PointerRNA *ptr, int key, " | " inline static int sname##_##identifier##_lookup_int_wrap(PointerRNA *ptr, int key, " | ||||
| "PointerRNA *r_ptr) \\\n" | "PointerRNA *r_ptr) \\\n" | ||||
| " { \\\n" | " { \\\n" | ||||
| " CollectionPropertyIterator iter; \\\n" | " CollectionPropertyIterator iter; \\\n" | ||||
| " int i = 0, found = 0; \\\n" | " int i = 0, found = 0; \\\n" | ||||
| " sname##_##identifier##_begin(&iter, ptr); \\\n" | " sname##_##identifier##_begin(&iter, m_ptr); \\\n" | ||||
| " while (iter.valid) { \\\n" | " while (iter.valid) { \\\n" | ||||
| " if (i == key) { \\\n" | " if (i == key) { \\\n" | ||||
| " *r_ptr = iter.ptr; \\\n" | " *r_ptr = iter.ptr; \\\n" | ||||
| " found = 1; \\\n" | " found = 1; \\\n" | ||||
| " break; \\\n" | " break; \\\n" | ||||
| " } \\\n" | " } \\\n" | ||||
| " sname##_##identifier##_next(&iter); \\\n" | " sname##_##identifier##_next(&iter); \\\n" | ||||
| " ++i; \\\n" | " ++i; \\\n" | ||||
| ▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | static const char *cpp_classes = | ||||
| " CollectionRef<sname, type, sname##_##identifier##_begin, \\\n" | " CollectionRef<sname, type, sname##_##identifier##_begin, \\\n" | ||||
| " sname##_##identifier##_next, sname##_##identifier##_end, \\\n" | " sname##_##identifier##_next, sname##_##identifier##_end, \\\n" | ||||
| " sname##_##identifier##_length_wrap, \\\n" | " sname##_##identifier##_length_wrap, \\\n" | ||||
| " sname##_##identifier##_lookup_int_wrap, sname##_##identifier##_lookup_string_wrap, " | " sname##_##identifier##_lookup_int_wrap, sname##_##identifier##_lookup_string_wrap, " | ||||
| "collection_funcs> identifier;\n" | "collection_funcs> identifier;\n" | ||||
| "\n" | "\n" | ||||
| "class Pointer {\n" | "class Pointer {\n" | ||||
| "public:\n" | "public:\n" | ||||
| " Pointer(const PointerRNA &p) : ptr(p) { }\n" | " Pointer(const PointerRNA &p) : m_ptr(p) { }\n" | ||||
| " operator const PointerRNA&() { return ptr; }\n" | " operator const PointerRNA&() { return m_ptr; }\n" | ||||
| " bool is_a(StructRNA *type) { return RNA_struct_is_a(ptr.type, type) ? true: false; }\n" | " bool is_a(StructRNA *type) { return RNA_struct_is_a(m_ptr.type, type) ? true: false; }\n" | ||||
| " operator void*() { return ptr.data; }\n" | " operator void*() { return m_ptr.data; }\n" | ||||
| " operator bool() { return ptr.data != NULL; }\n" | " operator bool() { return m_ptr.data != NULL; }\n" | ||||
| "\n" | "\n" | ||||
| " bool operator==(const Pointer &other) { return ptr.data == other.ptr.data; }\n" | " bool operator==(const Pointer &other) { return m_ptr.data == other.m_ptr.data; }\n" | ||||
| " bool operator!=(const Pointer &other) { return ptr.data != other.ptr.data; }\n" | " bool operator!=(const Pointer &other) { return m_ptr.data != other.m_ptr.data; }\n" | ||||
| "\n" | "\n" | ||||
| " PointerRNA ptr;\n" | " PointerRNA m_ptr;\n" | ||||
| "};\n" | "};\n" | ||||
| "\n" | "\n" | ||||
| "\n" | "\n" | ||||
| "template<typename T, int Tsize>\n" | "template<typename T, int Tsize>\n" | ||||
| "class Array {\n" | "class Array {\n" | ||||
| "public:\n" | "public:\n" | ||||
| " T data[Tsize];\n" | " T data[Tsize];\n" | ||||
| "\n" | "\n" | ||||
| ▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | static const char *cpp_classes = | ||||
| " T& operator*(void) { return t; }\n" | " T& operator*(void) { return t; }\n" | ||||
| " T* operator->(void) { return &t; }\n" | " T* operator->(void) { return &t; }\n" | ||||
| " bool operator == (const CollectionIterator<T, Tbegin, Tnext, Tend>& other) " | " bool operator == (const CollectionIterator<T, Tbegin, Tnext, Tend>& other) " | ||||
| "{ return iter.valid == other.iter.valid; }\n" | "{ return iter.valid == other.iter.valid; }\n" | ||||
| " bool operator!=(const CollectionIterator<T, Tbegin, Tnext, Tend>& other) " | " bool operator!=(const CollectionIterator<T, Tbegin, Tnext, Tend>& other) " | ||||
| "{ return iter.valid != other.iter.valid; }\n" | "{ return iter.valid != other.iter.valid; }\n" | ||||
| "\n" | "\n" | ||||
| " void begin(const Pointer &ptr)\n" | " void begin(const Pointer &ptr)\n" | ||||
| " { if (init) Tend(&iter); Tbegin(&iter, (PointerRNA *)&ptr.ptr); t = T(iter.ptr); init = " | " { if (init) Tend(&iter); Tbegin(&iter, (PointerRNA *)&m_ptr.ptr); t = T(iter.ptr); init " | ||||
| "true; }\n" | "= true; }\n" | ||||
| "\n" | "\n" | ||||
| "private:\n" | "private:\n" | ||||
| " const CollectionIterator<T, Tbegin, Tnext, Tend>& operator = " | " const CollectionIterator<T, Tbegin, Tnext, Tend>& operator = " | ||||
| "(const CollectionIterator<T, Tbegin, Tnext, Tend>& /*copy*/) {}\n" | "(const CollectionIterator<T, Tbegin, Tnext, Tend>& /*copy*/) {}\n" | ||||
| "" | "" | ||||
| " CollectionPropertyIterator iter;\n" | " CollectionPropertyIterator iter;\n" | ||||
| " T t;\n" | " T t;\n" | ||||
| " bool init;\n" | " bool init;\n" | ||||
| "};\n" | "};\n" | ||||
| "\n" | "\n" | ||||
| "template<typename Tp, typename T, TBeginFunc Tbegin, TNextFunc Tnext, TEndFunc Tend,\n" | "template<typename Tp, typename T, TBeginFunc Tbegin, TNextFunc Tnext, TEndFunc Tend,\n" | ||||
| " TLengthFunc Tlength, TLookupIntFunc Tlookup_int, TLookupStringFunc Tlookup_string,\n" | " TLengthFunc Tlength, TLookupIntFunc Tlookup_int, TLookupStringFunc Tlookup_string,\n" | ||||
| " typename Tcollection_funcs>\n" | " typename Tcollection_funcs>\n" | ||||
| "class CollectionRef : public Tcollection_funcs {\n" | "class CollectionRef : public Tcollection_funcs {\n" | ||||
| "public:\n" | "public:\n" | ||||
| " CollectionRef(const PointerRNA &p) : Tcollection_funcs(p), ptr(p) {}\n" | " CollectionRef(const PointerRNA &p) : Tcollection_funcs(p), m_ptr(p) {}\n" | ||||
| "\n" | "\n" | ||||
| " void begin(CollectionIterator<T, Tbegin, Tnext, Tend>& iter)\n" | " void begin(CollectionIterator<T, Tbegin, Tnext, Tend>& iter)\n" | ||||
| " { iter.begin(ptr); }\n" | " { iter.begin(m_ptr); }\n" | ||||
| " CollectionIterator<T, Tbegin, Tnext, Tend> end()\n" | " CollectionIterator<T, Tbegin, Tnext, Tend> end()\n" | ||||
| " { return CollectionIterator<T, Tbegin, Tnext, Tend>(); } /* test */ \n" | " { return CollectionIterator<T, Tbegin, Tnext, Tend>(); } /* test */ \n" | ||||
| "" | "" | ||||
| " int length()\n" | " int length()\n" | ||||
| " { return Tlength(&ptr); }\n" | " { return Tlength(&m_ptr); }\n" | ||||
| " T operator[](int key)\n" | " T operator[](int key)\n" | ||||
| " { PointerRNA r_ptr; Tlookup_int(&ptr, key, &r_ptr); return T(r_ptr); }\n" | " { PointerRNA r_ptr; Tlookup_int(&m_ptr, key, &r_ptr); return T(r_ptr); }\n" | ||||
| " T operator[](const std::string &key)\n" | " T operator[](const std::string &key)\n" | ||||
| " { PointerRNA r_ptr; Tlookup_string(&ptr, key.c_str(), &r_ptr); return T(r_ptr); }\n" | " { PointerRNA r_ptr; Tlookup_string(&m_ptr, key.c_str(), &r_ptr); return T(r_ptr); }\n" | ||||
| "\n" | "\n" | ||||
| "private:\n" | "private:\n" | ||||
| " PointerRNA ptr;\n" | " PointerRNA m_ptr;\n" | ||||
| "};\n" | "};\n" | ||||
| "\n" | "\n" | ||||
| "class DefaultCollectionFunctions {\n" | "class DefaultCollectionFunctions {\n" | ||||
| "public:\n" | "public:\n" | ||||
| " DefaultCollectionFunctions(const PointerRNA & /*p*/) {}\n" | " DefaultCollectionFunctions(const PointerRNA & /*p*/) {}\n" | ||||
| "};\n" | "};\n" | ||||
| "\n" | "\n" | ||||
| "\n"; | "\n"; | ||||
| ▲ Show 20 Lines • Show All 371 Lines • Show Last 20 Lines | |||||