public MethodEmitter CreateMethod(String name, MethodAttributes attributes)
        {
            MethodEmitter member = new MethodEmitter(this, name, attributes);

            methods.Add(member);
            return(member);
        }
        public MethodEmitter CreateMethod(string name, MethodAttributes attrs, Type returnType, params Type[] argumentTypes)
        {
            var member = new MethodEmitter(this, name, attrs, returnType, argumentTypes ?? Type.EmptyTypes);

            methods.Add(member);
            return(member);
        }
Esempio n. 3
0
 /// <summary>
 /// Initializes a new instance of the MslScriptEngine class.
 /// </summary>
 public MslScriptEngine()
 {
     language = new LanguageDefinition("MSL", new string[] { "mrc", "ini" }, LanguageFeatures.Procedural | LanguageFeatures.TypeSave);
     publishedMethods = new MethodCollection();
     Type scriptTextMethods = typeof(MslStringMethods);
     MethodInfo info = scriptTextMethods.GetMethod("Left");
     publishedMethods.Add("+", new MultiParamIdentifierDelegate(MslStringMethods.Concat));
     publishedMethods.Add("left", new MslStringMethods.LeftDelegate(MslStringMethods.Left));
     publishedMethods.Add("me", new SimpleStringIdentifier(MslDummyMethods.Me));
     publishedMethods.Add("true", new SimpleStringIdentifier(MslDummyMethods.True));
     publishedMethods.Add("false", new SimpleStringIdentifier(MslDummyMethods.False));
 }
Esempio n. 4
0
        internal ClassDefinition(JavaClassImage classImage)
            : base(classImage, (ClassInfo)classImage.ClassFile.ConstantPool.ResolveConstant(classImage.ClassFile.ThisClass))
        {
            Image = classImage;

            // Super class
            _superClass = new LazyValue <ClassReference>(() =>
                                                         classImage.ClassFile.SuperClass != 0
                    ? new ClassReference(classImage,
                                         (ClassInfo)classImage.ClassFile.ConstantPool.ResolveConstant(classImage.ClassFile.SuperClass))
                    : null);

            // Flags
            AccessFlags = classImage.ClassFile.AccessFlags;

            // Fields
            Fields = new FieldCollection(this);
            foreach (var field in classImage.ClassFile.Fields)
            {
                Fields.Add(new FieldDefinition(classImage, field));
            }

            // Methods
            Methods = new MethodCollection(this);
            foreach (var method in classImage.ClassFile.Methods)
            {
                Methods.Add(new MethodDefinition(classImage, method));
            }
        }
Esempio n. 5
0
        public Pipeline <Request> Call <Handler>(Action <Handler, Request> action)
        {
            Action <object, Request> typedHandler = (h, r) => action((Handler)h, (Request)r);
            var method = new Method <Action <object, Request>, Request>(typeof(Handler), typedHandler);

            _methods.Add(method);
            return(this);
        }
Esempio n. 6
0
        public AsyncPipeline <Request> Call <Handler>(Func <Handler, Request, Task> action)
        {
            Func <object, Request, Task> typedHandler = async(h, r) => await action((Handler)h, (Request)r);

            var method = new Method <Func <object, Request, Task>, Request>(typeof(Handler), typedHandler);

            _methods.Add(method);
            return(this);
        }
Esempio n. 7
0
        internal ClassDefinition(JavaClassImage classImage)
            : base(classImage, (ClassInfo)classImage.ClassFile.ConstantPool.ResolveConstant(classImage.ClassFile.ThisClass))
        {
            Image = classImage;

            // Super class
            _superClass = new LazyValue <ClassReference>(() =>
                                                         classImage.ClassFile.SuperClass != 0
                    ? new ClassReference(classImage,
                                         (ClassInfo)classImage.ClassFile.ConstantPool.ResolveConstant(classImage.ClassFile.SuperClass))
                    : null);

            // Flags
            AccessFlags = classImage.ClassFile.AccessFlags;

            // Fields
            Fields = new FieldCollection(this);
            foreach (var field in classImage.ClassFile.Fields)
            {
                Fields.Add(new FieldDefinition(classImage, field));
            }

            // Methods
            Methods = new MethodCollection(this);
            foreach (var method in classImage.ClassFile.Methods)
            {
                Methods.Add(new MethodDefinition(classImage, method));
            }

            // Attributes
            foreach (var attr in classImage.ClassFile.Attributes)
            {
                string name = classImage.ClassFile.ConstantPool.ResolveString(attr.NameIndex);
                switch (name)
                {
                // Source file
                case SingleIndexAttribute.SourceFileAttribute:
                    _sourceFile = new LazyValue <string>(() =>
                    {
                        var sourceFile = SingleIndexAttribute.FromReader(name, new MemoryBigEndianReader(attr.Contents));
                        return(classImage.ClassFile.ConstantPool.ResolveString(sourceFile.ConstantPoolIndex));
                    });
                    break;

                default:
                    ExtraAttributes.Add(name, attr.Clone());
                    break;
                }
            }
        }