27 const Type *element_type = nullptr;
28 unsigned element_count = 0;
29 std::string load_type;
30 std::string conversion;
31 const Struct *struct_def = nullptr;
32 const Enum *enum_def = nullptr;
35 Type(const std::string &, Kind);
37 Type &set_cpp_type(const std::string &, const std::string & = std::string());
38 Type &set_elements(const Type &, unsigned = 0);
39 Type &set_struct(const Struct &);
40 Type &set_enum(const Enum &);
41 Type &set_load(const std::string &, const std::string & = std::string());
43 const std::string &get_name() const { return name; }
44 Kind get_kind() const { return kind; }
45 const std::string &get_cpp_type() const { return cpp_type; }
46 const std::string &get_header() const { return header; }
47 const Type &get_element_type() const;
48 const std::string &get_conversion() const { return conversion; }
49 const Struct &get_struct() const;
50 const Enum &get_enum() const;
52 bool needs_loader_function() const;
53 std::string create_loader_params(bool) const;
54 std::string create_loader_statement() const;