protected override void DefineCompiledCode() { var methods = decorated.methods.custom; var fields = decorated.variables.variables; for (int i = 0; i < fields.Count; i++) { var variable = decorated.variables.variables[i]; var field = FieldGenerator.Field(AccessModifier.Public, FieldModifier.None, variable.declaration.type, variable.name); field.Default(variable.declaration.defaultValue); @class.AddField(field); } for (int i = 0; i < methods.Count; i++) { var nest = decorated.methods.custom[i]; if (CanAddMethod(nest)) { var controlData = new ControlGenerationData(); controlData.returns = nest.entry.declaration.type; var body = nest.entry.invoke.hasAnyConnection ? (nest.entry.invoke.connection.destination?.unit as Unit).GenerateControl(nest.entry.invoke.connection.destination, controlData, 0) : string.Empty; var method = Method(nest.name, nest.entry.declaration.scope, nest.entry.declaration.modifier, nest.entry.declaration.type, body: body); AddParameters(method, nest); @class.AddMethod(method); } } var keys = decorated.methods.overrides.Keys().ToArray(); for (int i = 0; i < keys.Length; i++) { var nest = decorated.methods.overrides.current[keys[i]]; if (CanAddMethod(nest)) { var controlData = new ControlGenerationData(); controlData.returns = nest.entry.declaration.type; var body = nest.entry.invoke.hasAnyConnection? (nest.entry.invoke.connection.destination?.unit as Unit).GenerateControl(nest.entry.invoke.connection.destination, controlData, 0) : string.Empty; var method = nest.entry.declaration.type.Is().Void() ? Method( nest.name.Replace(" ", string.Empty), nest.entry.declaration.scope, MustOverride(nest) ? MethodModifier.Override : nest.entry.declaration.modifier, nest.entry.declaration.type, body: body ) : Method( nest.name.Replace(" ", string.Empty), nest.entry.declaration.scope, MustOverride(nest) ? MethodModifier.Override : nest.entry.declaration.modifier, nest.entry.declaration.type, body: body ); AddParameters(method, nest); @class.AddMethod(method); } } ; }
protected override void DefineLiveCode() { var keys = decorated.methods.overrides.KeysToArray(); // FORCE COMPILE SHELL //HUMQuery.For(keys, (list, index) => //{ // var nest = decorated.overrideMethods[keys[index]]; // if (CanAddMethod(nest)) // { // var method = Method(nest.name, nest.scope, nest.modifier, nest.returnType); // AddParameters(method, nest); // @class.AddMethod(method); // } //}); for (int i = 0; i < keys.Length; i++) { var nest = decorated.methods.overrides[keys[i]]; if (CanAddMethod(nest)) { var method = nest.returnType.Is().Void() ? Method(nest.name, nest.scope, nest.modifier, nest) : Method(nest.name, nest.scope, nest.modifier, nest.returnType); if (!nest.returnType.Is().Void()) { AddParameters(method, nest); } @class.AddMethod(method); } } ; }