ClassΒΆ
base_class = CClass(
name="BaseClass",
members=[
CClass.Constructor(arguments=[CFunction.Argument('arg', Cuint32)], access=CClass.Access.public),
]
)
my_class = CClass(
name="InheritingClass",
inherit_from=CClass.Inherit(base_class, access=CClass.Access.public),
members=[
CClass.Using(base_class.constructor, access=CClass.Access.public,
doc=Doc("Constructor", "Reusing constructor from base class")),
CClass.Method('my_method', arguments=[CFunction.Argument('hello', Cuint8)], access=CClass.Access.protected,
static=True, doc=Doc("My Method")),
CClass.Attribute('u8My_attr', Cuint8, initial_value=3, access=CClass.Access.private, static=True,
constexpr=True, doc=Doc("My Attribute")),
CClass.TypeMember(Cuint8.type('NewType'), access=CClass.Access.public,
doc=Doc("New Type", "Defining types inside classes is awesome")),
],
doc=Doc("Class Example", "This class holds methods and attributes to represent objects")
)
print(my_class.declaration())
class InheritingClass;
print(my_class.definition())
/**
* @brief Class Example
*
* This class holds methods and attributes to represent objects
*/
class InheritingClass: public BaseClass
{
public:
/**
* @brief Constructor
*
* Reusing constructor from base class
*/
using BaseClass::BaseClass;
/**
* @brief New Type
*
* Defining types inside classes is awesome
*/
typedef uint8_t NewType;
protected:
/**
* @brief My Method
*
* @param hello
*/
static void my_method(uint8_t hello);
private:
/** @brief My Attribute */
static constexpr uint8_t u8My_attr = 3;
};
style = Style()
style.class_members = Style.ClassMembers.inline_access_preserve_order
print(my_class.definition(style))
/**
* @brief Class Example
*
* This class holds methods and attributes to represent objects
*/
class InheritingClass: public BaseClass
{
/**
* @brief Constructor
*
* Reusing constructor from base class
*/
public: using BaseClass::BaseClass;
/**
* @brief My Method
*
* @param hello
*/
protected: static void my_method(uint8_t hello);
/** @brief My Attribute */
private: static constexpr uint8_t u8My_attr = 3;
/**
* @brief New Type
*
* Defining types inside classes is awesome
*/
public: typedef uint8_t NewType;
};
print(my_class.all_members_definition().render())
static void InheritingClass::my_method(uint8_t hello)
{
};