// add methods to the generated class private static void AddClassMembers(RubyClass /*!*/ cls, string[] /*!*/ structMembers) { var newInstance = new RuleGenerator(RuleGenerators.InstanceConstructor); cls.SingletonClass.DefineRuleGenerator("[]", (int)RubyMethodAttributes.PublicSingleton, newInstance); cls.SingletonClass.DefineRuleGenerator("new", (int)RubyMethodAttributes.PublicSingleton, newInstance); cls.SingletonClass.DefineLibraryMethod("members", (int)RubyMethodAttributes.PublicSingleton, new Func <RubyClass, List <object> >(GetMembers) ); for (int i = 0; i < structMembers.Length; i++) { string getter = structMembers[i]; cls.DefineRuleGenerator(getter, (int)RubyMethodAttributes.PublicInstance, CreateGetter(i)); cls.DefineRuleGenerator(getter + '=', (int)RubyMethodAttributes.PublicInstance, CreateSetter(i)); } }
// add methods to the generated class private static void AddClassMembers(RubyClass/*!*/ cls, string[]/*!*/ structMembers) { var newInstance = new RuleGenerator(RuleGenerators.InstanceConstructor); cls.SingletonClass.DefineRuleGenerator("[]", (int)RubyMethodAttributes.PublicSingleton, newInstance); cls.SingletonClass.DefineRuleGenerator("new", (int)RubyMethodAttributes.PublicSingleton, newInstance); cls.SingletonClass.DefineLibraryMethod("members", (int)RubyMethodAttributes.PublicSingleton, new Func<RubyClass, List<object>>(GetMembers) ); for (int i = 0; i < structMembers.Length; i++) { string getter = structMembers[i]; cls.DefineRuleGenerator(getter, (int)RubyMethodAttributes.PublicInstance, CreateGetter(i)); cls.DefineRuleGenerator(getter + '=', (int)RubyMethodAttributes.PublicInstance, CreateSetter(i)); } }