예제 #1
0
        // 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));
            }
        }
예제 #2
0
        // 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));
            }
        }