| 16 | namespace LIEF::pdb::py { |
| 17 | template<> |
| 18 | void create<pdb::Type>(nb::module_& m) { |
| 19 | nb::module_ types = m.def_submodule("types", "PDB Types"_doc); |
| 20 | nb::class_<pdb::Type> type(m, "Type", |
| 21 | R"doc()doc"_doc |
| 22 | ); |
| 23 | |
| 24 | nb::enum_<Type::KIND>(type, "KIND") |
| 25 | .value("UNKNOWN", Type::KIND::UNKNOWN) |
| 26 | .value("CLASS", Type::KIND::CLASS) |
| 27 | .value("POINTER", Type::KIND::POINTER) |
| 28 | .value("SIMPLE", Type::KIND::SIMPLE) |
| 29 | .value("ENUM", Type::KIND::ENUM) |
| 30 | .value("FUNCTION", Type::KIND::FUNCTION) |
| 31 | .value("MODIFIER", Type::KIND::MODIFIER) |
| 32 | .value("BITFIELD", Type::KIND::BITFIELD) |
| 33 | .value("ARRAY", Type::KIND::ARRAY) |
| 34 | .value("UNION", Type::KIND::UNION) |
| 35 | .value("STRUCTURE", Type::KIND::STRUCTURE) |
| 36 | .value("INTERFACE", Type::KIND::INTERFACE) |
| 37 | ; |
| 38 | |
| 39 | type |
| 40 | .def_prop_ro("kind", &pdb::Type::kind, |
| 41 | R"doc( |
| 42 | Discriminator for the type's subclasses |
| 43 | )doc"_doc |
| 44 | ) |
| 45 | ; |
| 46 | |
| 47 | create<pdb::types::Simple>(types); |
| 48 | create<pdb::types::Array>(types); |
| 49 | create<pdb::types::BitField>(types); |
| 50 | create<pdb::types::ClassLike>(types); |
| 51 | create<pdb::types::Enum>(types); |
| 52 | create<pdb::types::Function>(types); |
| 53 | create<pdb::types::Modifier>(types); |
| 54 | create<pdb::types::Pointer>(types); |
| 55 | create<pdb::types::Union>(types); |
| 56 | } |
| 57 | } |