Struct
You can create a struct by instantiating the CGT::Struct class (here abbreviated as CGT::Struct)
and adding methods to it.
method_full_name = CGT::Method.new("full_name", "String")
method_full_name.add_body("John Doe".dump)
struct_type = CGT::Struct.new("Person")
struct_type.add_method(method_full_name)
puts struct_type.generate
Output:
Included modules
Crygen::Modules::AnnotationCrygen::Modules::ClassVarCrygen::Modules::CommentCrygen::Modules::InstanceVarCrygen::Modules::MethodCrygen::Modules::MixinCrygen::Modules::Property
Adding multiple methods
You can add several methods at once using add_methods:
method_first_name = CGT::Method.new("first_name", "String")
method_first_name.add_body("John".dump)
method_last_name = CGT::Method.new("last_name", "String")
method_last_name.add_body("Doe".dump)
struct_type = CGT::Struct.new("User")
struct_type.add_methods(method_first_name, method_last_name)
puts struct_type.generate
Output:
Inheriting from an abstract struct
You can specify a parent abstract struct when creating a new struct:
Output:
Adding properties, mixins, and comments
You can also add properties, mixins, and comments to your struct:
struct_type = CGT::Struct.new("Point")
struct_type.add_property("x", "Int32")
struct_type.add_property("y", "Int32")
struct_type.add_mixin("JSON::Serializable")
struct_type.add_comment("Represents a 2D point.")
puts struct_type.generate
Output: