示例#1
0
        public ElaAsync RunAsync(ElaFunction fun)
        {
            var ret = new ElaAsync(this, fun);

            ret.Run();
            return(ret);
        }
示例#2
0
        public ElaUnit Sync(ElaFunction fun)
        {
            lock (syncRoot)
                fun.Call();

            return(ElaUnit.Instance);
        }
示例#3
0
        public string ReadLines(ElaFunction fun, string file)
        {
            using (var sr = File.OpenText(file))
            {
                var line = String.Empty;
                var sb = new StringBuilder();

                while ((line = sr.ReadLine()) != null)
                    sb.AppendLine((String)fun.Call(new ElaValue(line)).AsObject());

                return sb.ToString();
            }
        }
示例#4
0
 internal ElaLazy(ElaFunction function)
     : base(ElaTypeCode.Lazy)
 {
     Function = function;
     _value = default(ElaValue);
 }
示例#5
0
 public string FunName(ElaFunction fun)
 {
     return(fun.GetFunctionName());
 }
示例#6
0
 public int FunHandle(ElaFunction fun)
 {
     return(fun.Handle);
 }
示例#7
0
 public void SetDeffered(ElaFunction fun, int args)
 {
     Failed       = true;
     Fun          = fun;
     DefferedArgs = args;
 }
示例#8
0
 public FormatValue(ElaFunction showf, ElaValue val)
 {
     this.showf = showf;
     this.val = val;
 }
示例#9
0
 public int FunArgsCount(ElaFunction fun)
 {
     return fun.GetArgumentNumber();
 }
示例#10
0
 public ElaList FunAppliedArgs(ElaFunction fun)
 {
     return ElaList.FromEnumerable(fun.GetAppliedArguments());
 }
示例#11
0
 private void Initialize(AsyncModule mod, ElaFunction fun)
 {
     Thread = new ST.Thread(() => Return = fun.Call());
     mod.Threads.Add(Thread);
 }
示例#12
0
 internal ElaAsync(AsyncModule mod, ElaFunction fun)
 {
     Initialize(mod, fun);
 }
示例#13
0
 private void Initialize(AsyncModule mod, ElaFunction fun)
 {
     Thread = new ST.Thread(() => Return = fun.Call());
     mod.Threads.Add(Thread);
 }
示例#14
0
 internal ElaAsync(AsyncModule mod, ElaFunction fun)
 {
     Initialize(mod, fun);
 }
示例#15
0
 public int FunHandle(ElaFunction fun)
 {
     return fun.Handle;
 }
示例#16
0
        private string Format(string format, ElaFunction showf, IEnumerable<ElaValue> values)
        {
            var objs = new List<Object>(10);

            foreach (var v in values)
                objs.Insert(0, new FormatValue(showf, v));

            return String.Format(format, objs.ToArray());
        }
示例#17
0
 public ElaModule FunModule(ElaFunction fun)
 {
     return fun.GetFunctionModule();
 }
示例#18
0
文件: Class.cs 项目: ngoffee/ela
        internal void AddFunction(ElaBuiltinKind builtin, ElaFunction fun)
        {
            switch (builtin)
            {
            case ElaBuiltinKind.BitwiseAnd:
                and = fun;
                break;

            case ElaBuiltinKind.BitwiseOr:
                or = fun;
                break;

            case ElaBuiltinKind.BitwiseXor:
                xor = fun;
                break;

            case ElaBuiltinKind.BitwiseNot:
                not = fun;
                break;

            case ElaBuiltinKind.ShiftLeft:
                shl = fun;
                break;

            case ElaBuiltinKind.ShiftRight:
                shr = fun;
                break;

            case ElaBuiltinKind.Concat:
                cat = fun;
                break;

            case ElaBuiltinKind.Equal:
                eq = fun;
                break;

            case ElaBuiltinKind.NotEqual:
                neq = fun;
                break;

            case ElaBuiltinKind.Length:
                len = fun;
                break;

            case ElaBuiltinKind.GetValue:
                getval = fun;
                break;

            case ElaBuiltinKind.GetField:
                getfld = fun;
                break;

            case ElaBuiltinKind.Add:
                add = fun;
                break;

            case ElaBuiltinKind.Subtract:
                sub = fun;
                break;

            case ElaBuiltinKind.Multiply:
                mul = fun;
                break;

            case ElaBuiltinKind.Divide:
                div = fun;
                break;

            case ElaBuiltinKind.Power:
                pow = fun;
                break;

            case ElaBuiltinKind.Remainder:
                rem = fun;
                break;

            case ElaBuiltinKind.Negate:
                neg = fun;
                break;

            case ElaBuiltinKind.Greater:
                gt = fun;
                break;

            case ElaBuiltinKind.Lesser:
                lt = fun;
                break;

            case ElaBuiltinKind.LesserEqual:
                lteq = fun;
                break;

            case ElaBuiltinKind.GreaterEqual:
                gteq = fun;
                break;

            case ElaBuiltinKind.Head:
                head = fun;
                break;

            case ElaBuiltinKind.Tail:
                tail = fun;
                break;

            case ElaBuiltinKind.IsNil:
                isnil = fun;
                break;

            case ElaBuiltinKind.Show:
                show = fun;
                break;

            case ElaBuiltinKind.Modulus:
                mod = fun;
                break;

            case ElaBuiltinKind.HasField:
                hasfld = fun;
                break;
            }
        }
示例#19
0
 public string FunName(ElaFunction fun)
 {
     return fun.GetFunctionName();
 }
示例#20
0
 public ElaModule FunModule(ElaFunction fun)
 {
     return(fun.GetFunctionModule());
 }
示例#21
0
 public ElaAsync RunAsync(ElaFunction fun)
 {
     var ret = new ElaAsync(this, fun);
     ret.Run();
     return ret;
 }
示例#22
0
 public int FunAppliedArgsCount(ElaFunction fun)
 {
     return(fun.GetAppliedArgumentNumber());
 }
示例#23
0
        public ElaUnit Sync(ElaFunction fun)
        {
            lock (syncRoot)
                fun.Call();

            return ElaUnit.Instance;
        }
示例#24
0
 public ElaList FunAppliedArgs(ElaFunction fun)
 {
     return(ElaList.FromEnumerable(fun.GetAppliedArguments()));
 }
示例#25
0
 public void SetDeffered(ElaFunction fun, int args)
 {
     Failed = true;
     Fun = fun;
     DefferedArgs = args;
 }