onelang
Version:
OneLang transpiler framework core
38 lines (37 loc) • 1.44 kB
YAML
implements:
- interface: { name: One.Reflect, minver: 0.1, maxver: 0.1 }
language: go
implementation:
classes:
OneReflect:
includes: [one]
template: "one.Reflect"
templates:
afterClasses:
args: []
template: |-
{{if reflectedClasses.length > 0}}
func init() {
{{for class in reflectedClasses|sep=\n\n}}
one.Reflect_SetupClass((*{{class.name}})(nil),
[]*one.Field{
{{for field in class.fields}}
{{if field.static}}
one.Reflect_StaticField("{{field.name}}", &{{class.name}}{{field.name}}),
{{else}}
one.Reflect_InstanceField("{{field.name}}"),
{{/if}}
{{/for}}
},
[]*one.Method{
{{for method in class.methods}}
{{if method.static}}
one.Reflect_StaticMethod("{{method.name}}", {{class.name}}_{{method.name}}),
{{else}}
one.Reflect_InstanceMethod("{{method.name}}"),
{{/if}}
{{/for}}
});
{{/for}}
}
{{/if}}