summaryrefslogtreecommitdiff
path: root/python/generator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'python/generator.cpp')
-rw-r--r--python/generator.cpp27
1 files changed, 8 insertions, 19 deletions
diff --git a/python/generator.cpp b/python/generator.cpp
index 08485315..730b317c 100644
--- a/python/generator.cpp
+++ b/python/generator.cpp
@@ -101,7 +101,7 @@ void OutputType(FILE* out, Type* type, bool isReturnType = false, bool isCallbac
fprintf(out, "%s", type->GetQualifiedName(type->GetStructure()->GetName()).c_str());
break;
case EnumerationTypeClass:
- fprintf(out, "%s", type->GetQualifiedName(type->GetEnumeration()->GetName()).c_str());
+ fprintf(out, "%sEnum", type->GetQualifiedName(type->GetEnumeration()->GetName()).c_str());
break;
case PointerTypeClass:
if (isCallback || (type->GetChildType()->GetClass() == VoidTypeClass))
@@ -165,7 +165,7 @@ int main(int argc, char* argv[])
FILE* out = fopen(argv[2], "w");
- fprintf(out, "import ctypes, os\n\n");
+ fprintf(out, "import ctypes, os, enum\n\n");
fprintf(out, "# Load core module\n");
#if defined(__APPLE__)
@@ -184,7 +184,6 @@ int main(int argc, char* argv[])
// Create type objects
fprintf(out, "# Type definitions\n");
- map<string, int64_t> enumMembers;
for (auto& i : types)
{
if (i.second->GetClass() == StructureTypeClass)
@@ -194,19 +193,13 @@ int main(int argc, char* argv[])
}
else if (i.second->GetClass() == EnumerationTypeClass)
{
- fprintf(out, "%s = ctypes.c_int\n", i.first.c_str());
+ fprintf(out, "%sEnum = ctypes.c_int\n", i.first.c_str());
+ fprintf(out, "class %s(enum.IntEnum):\n", i.first.c_str());
for (auto& j : i.second->GetEnumeration()->GetMembers())
- fprintf(out, "%s = %" PRId64 "\n", j.name.c_str(), j.value);
- fprintf(out, "%s_names = {\n", i.first.c_str());
- for (auto& j : i.second->GetEnumeration()->GetMembers())
- fprintf(out, " %" PRId64 ": \"%s\",\n", j.value, j.name.c_str());
- fprintf(out, "}\n");
- fprintf(out, "%s_by_name = {\n", i.first.c_str());
- for (auto& j : i.second->GetEnumeration()->GetMembers())
- fprintf(out, " \"%s\": %" PRId64 ",\n", j.name.c_str(), j.value);
- fprintf(out, "}\n");
- for (auto& j : i.second->GetEnumeration()->GetMembers())
- enumMembers[j.name] = j.value;
+ {
+ fprintf(out, " %s = %" PRId64 "\n", j.name.c_str(), j.value);
+ }
+
}
else if ((i.second->GetClass() == BoolTypeClass) || (i.second->GetClass() == IntegerTypeClass) ||
(i.second->GetClass() == FloatTypeClass) || (i.second->GetClass() == ArrayTypeClass))
@@ -217,10 +210,6 @@ int main(int argc, char* argv[])
}
}
- fprintf(out, "all_enum_values = {\n");
- for (auto& i : enumMembers)
- fprintf(out, " \"%s\": %" PRId64 ",\n", i.first.c_str(), i.second);
- fprintf(out, "}\n");
fprintf(out, "\n# Structure definitions\n");
for (auto& i : types)