call() public abstract method

public abstract call ( ) : object
return object
コード例 #1
0
ファイル: Map.cs プロジェクト: syatanic/fantom
 public Map addList(List list, Func f)
 {
     modify();
     if (f == null)
     {
         for (int i = 0; i < list.sz(); ++i)
         {
             add(list.get(i), list.get(i));
         }
     }
     else if (f.@params().sz() == 1)
     {
         for (int i = 0; i < list.sz(); ++i)
         {
             add(f.call(list.get(i)), list.get(i));
         }
     }
     else
     {
         for (int i = 0; i < list.sz(); ++i)
         {
             add(f.call(list.get(i), i), list.get(i));
         }
     }
     return(this);
 }
コード例 #2
0
ファイル: List.cs プロジェクト: syatanic/fantom
        public long binaryFind(Func f)
        {
            object[] values = this.m_values;
            int      low = 0, high = m_size - 1;
            bool     oneArg = f.arity() == 1;

            while (low <= high)
            {
                int    probe = (low + high) >> 1;
                object val   = values[probe];
                object res   = oneArg ? f.call(val) : f.call(val, Long.valueOf(probe));
                long   cmp   = ((Long)res).longValue();
                if (cmp > 0)
                {
                    low = probe + 1;
                }
                else if (cmp < 0)
                {
                    high = probe - 1;
                }
                else
                {
                    return(probe);
                }
            }
            return(-(low + 1));
        }
コード例 #3
0
ファイル: Range.cs プロジェクト: Mzazvor/fantom
        public void each(Func f)
        {
            long start = m_start;
            long end   = m_end;

            if (start < end)
            {
                if (m_exclusive)
                {
                    --end;
                }
                for (long i = start; i <= end; ++i)
                {
                    f.call(i);
                }
            }
            else
            {
                if (m_exclusive)
                {
                    ++end;
                }
                for (long i = start; i >= end; --i)
                {
                    f.call(i);
                }
            }
        }
コード例 #4
0
ファイル: List.cs プロジェクト: syatanic/fantom
        public void eachRange(Range r, Func f)
        {
            int s = r.start(m_size);
            int e = r.end(m_size);
            int n = e - s + 1;

            if (n < 0)
            {
                throw IndexErr.make(r).val;
            }

            if (f.arity() == 1)
            {
                for (int i = s; i <= e; ++i)
                {
                    f.call(m_values[i]);
                }
            }
            else
            {
                for (int i = s; i <= e; ++i)
                {
                    f.call(m_values[i], i);
                }
            }
        }
コード例 #5
0
ファイル: Map.cs プロジェクト: syatanic/fantom
        public string join(string sep, Func f)
        {
            int size = (int)this.size();

            if (size == 0)
            {
                return("");
            }
            StringBuilder         s  = new StringBuilder(32 + size * 32);
            IDictionaryEnumerator en = m_map.GetEnumerator();

            while (en.MoveNext())
            {
                object key = en.Key;
                object val = en.Value;
                if (s.Length > 0)
                {
                    s.Append(sep);
                }
                if (f == null)
                {
                    s.Append(key).Append(": ").Append(val);
                }
                else
                {
                    s.Append(f.call(val, key));
                }
            }
            return(s.ToString());
        }
コード例 #6
0
ファイル: Map.cs プロジェクト: syatanic/fantom
        public Map map(Func f)
        {
            Type r = f.returns();

            if (r == Sys.VoidType)
            {
                r = Sys.ObjType.toNullable();
            }
            Map acc = new Map(m_type.m_k, r);

            if (this.ordered())
            {
                acc.ordered(true);
            }
            if (this.caseInsensitive())
            {
                acc.caseInsensitive(true);
            }
            IDictionaryEnumerator en = m_map.GetEnumerator();

            while (en.MoveNext())
            {
                object key = en.Key;
                object val = en.Value;
                acc.set(key, f.call(val, key));
            }
            return(acc);
        }
コード例 #7
0
ファイル: Map.cs プロジェクト: syatanic/fantom
        public Map exclude(Func f)
        {
            Map acc = new Map(m_type);

            if (this.ordered())
            {
                acc.ordered(true);
            }
            if (this.caseInsensitive())
            {
                acc.caseInsensitive(true);
            }
            IDictionaryEnumerator en = m_map.GetEnumerator();

            while (en.MoveNext())
            {
                object key = en.Key;
                object val = en.Value;
                if (f.call(val, key) == Boolean.False)
                {
                    acc.set(key, val);
                }
            }
            return(acc);
        }
コード例 #8
0
ファイル: Test.cs プロジェクト: syatanic/fantom
 public void verifyErr(Type errType, Func f)
 {
     try
     {
         f.call(this);
     }
     catch (Err.Val e)
     {
         if (verbose)
         {
             System.Console.WriteLine("  verifyErr: " + e);
         }
         if (e.err().@typeof() == errType || errType == null)
         {
             verifyCount++; return;
         }
         fail(e.err().@typeof() + " thrown, expected " + errType);
     }
     catch (System.Exception e)
     {
         if (verbose)
         {
             System.Console.WriteLine("  verifyErr: " + e);
         }
         Err err = Fan.Sys.Err.make(e);
         if (err.@typeof() == errType || errType == null)
         {
             verifyCount++; return;
         }
         fail(e.GetType() + " thrown, expected " + errType);
     }
     fail("No err thrown, expected " + errType);
 }
コード例 #9
0
 public static void eachr(string self, Func f)
 {
     for (int i = self.Length - 1; i >= 0; --i)
     {
         f.call(self[i], i);
     }
 }
コード例 #10
0
ファイル: List.cs プロジェクト: syatanic/fantom
        public string join(string sep, Func f)
        {
            if (m_size == 0)
            {
                return("");
            }

            if (m_size == 1)
            {
                object v = m_values[0];
                if (f != null)
                {
                    return((string)f.call(v, 0));
                }
                if (v == null)
                {
                    return("null");
                }
                return(toStr(v));
            }

            StringBuilder s = new StringBuilder(32 + m_size * 32);

            for (int i = 0; i < m_size; i++)
            {
                if (i > 0)
                {
                    s.Append(sep);
                }
                if (f == null)
                {
                    if (m_values[i] == null)
                    {
                        s.Append("null");
                    }
                    else
                    {
                        s.Append(m_values[i]);
                    }
                }
                else
                {
                    s.Append(f.call(m_values[i], i));
                }
            }
            return(s.ToString());
        }
コード例 #11
0
ファイル: List.cs プロジェクト: syatanic/fantom
 public void eachr(Func f)
 {
     if (f.arity() == 1)
     {
         for (int i = m_size - 1; i >= 0; i--)
         {
             f.call(m_values[i]);
         }
     }
     else
     {
         for (int i = m_size - 1; i >= 0; i--)
         {
             f.call(m_values[i], i);
         }
     }
 }
コード例 #12
0
ファイル: List.cs プロジェクト: syatanic/fantom
        //////////////////////////////////////////////////////////////////////////
        // Iterators
        //////////////////////////////////////////////////////////////////////////

        public void each(Func f)
        {
            if (f.arity() == 1)
            {
                for (int i = 0; i < m_size; i++)
                {
                    f.call(m_values[i]);
                }
            }
            else
            {
                for (int i = 0; i < m_size; i++)
                {
                    f.call(m_values[i], i);
                }
            }
        }
コード例 #13
0
ファイル: List.cs プロジェクト: syatanic/fantom
 public object reduce(object reduction, Func f)
 {
     for (int i = 0; i < m_size; i++)
     {
         reduction = f.call(reduction, m_values[i], i);
     }
     return(reduction);
 }
コード例 #14
0
        //////////////////////////////////////////////////////////////////////////
        // Closures
        //////////////////////////////////////////////////////////////////////////

        public static void times(long self, Func f)
        {
            long val = self;

            for (long i = 0; i < val; i++)
            {
                f.call(i);
            }
        }
コード例 #15
0
        public static void each(string self, Func f)
        {
            int len = self.Length;

            for (int i = 0; i < len; i++)
            {
                f.call(self[i], i);
            }
        }
コード例 #16
0
        public virtual string readStrToken(Long max, Func f)
        {
            // max limit
            int maxChars = (max != null) ? max.intValue() : System.Int32.MaxValue;

            if (maxChars <= 0)
            {
                return(string.Empty);
            }

            // read first char, if at end of file bail
            int c = rChar();

            if (c < 0)
            {
                return(null);
            }

            // loop reading chars until our closure returns false
            StringBuilder buf = new StringBuilder();

            while (true)
            {
                // check for \n, \r\n, or \r
                bool terminate;
                if (f == null)
                {
                    terminate = FanInt.isSpace(c);
                }
                else
                {
                    terminate = ((Boolean)f.call(c)).booleanValue();
                }
                if (terminate)
                {
                    unreadChar(c);
                    break;
                }

                // Append to working buffer
                buf.Append((char)c);
                if (buf.Length >= maxChars)
                {
                    break;
                }

                // read next char
                c = rChar();
                if (c < 0)
                {
                    break;
                }
            }
            return(buf.ToString());
        }
コード例 #17
0
ファイル: Deprecated.cs プロジェクト: nomit007/f4
 public static Deprecated make(Func func)
 {
     Deprecated self = new Deprecated();
       if (func != null)
       {
     func.enterCtor(self);
     func.call(self);
     func.exitCtor();
       }
       return self;
 }
コード例 #18
0
ファイル: Serializable.cs プロジェクト: nomit007/f4
 public static Serializable make(Func func)
 {
     Serializable self = new Serializable();
       if (func != null)
       {
     func.enterCtor(self);
     func.call(self);
     func.exitCtor();
       }
       return self;
 }
コード例 #19
0
ファイル: List.cs プロジェクト: syatanic/fantom
 public bool all(Func f)
 {
     for (int i = 0; i < m_size; i++)
     {
         if (f.call(m_values[i], i) == Boolean.False)
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #20
0
ファイル: Map.cs プロジェクト: syatanic/fantom
        public object getOrAdd(object key, Func valFunc)
        {
            if (containsKey(key))
            {
                return(get(key));
            }
            object val = valFunc.call(key);

            add(key, val);
            return(val);
        }
コード例 #21
0
ファイル: List.cs プロジェクト: syatanic/fantom
 public object find(Func f)
 {
     for (int i = 0; i < m_size; i++)
     {
         if (f.call(m_values[i], i) == Boolean.True)
         {
             return(m_values[i]);
         }
     }
     return(null);
 }
コード例 #22
0
ファイル: FacetMeta.cs プロジェクト: nomit007/f4
 public static FacetMeta make(Func func)
 {
     FacetMeta self = new FacetMeta();
       if (func != null)
       {
     func.enterCtor(self);
     func.call(self);
     func.exitCtor();
       }
       return self;
 }
コード例 #23
0
ファイル: Map.cs プロジェクト: syatanic/fantom
        //////////////////////////////////////////////////////////////////////////
        // Iterators
        //////////////////////////////////////////////////////////////////////////

        public void each(Func f)
        {
            IDictionaryEnumerator en = m_map.GetEnumerator();

            while (en.MoveNext())
            {
                object key = en.Key;
                object val = en.Value;
                f.call(val, key);
            }
        }
コード例 #24
0
        public static FacetMeta make(Func func)
        {
            FacetMeta self = new FacetMeta();

            if (func != null)
            {
                func.enterCtor(self);
                func.call(self);
                func.exitCtor();
            }
            return(self);
        }
コード例 #25
0
 public static object with(object self, Func f)
 {
     if (self is FanObj)
     {
         return(((FanObj)self).with(f));
     }
     else
     {
         f.call(self);
         return(self);
     }
 }
コード例 #26
0
ファイル: Serializable.cs プロジェクト: syatanic/fantom
        public static Serializable make(Func func)
        {
            Serializable self = new Serializable();

            if (func != null)
            {
                func.enterCtor(self);
                func.call(self);
                func.exitCtor();
            }
            return(self);
        }
コード例 #27
0
ファイル: List.cs プロジェクト: syatanic/fantom
 public object eachrWhile(Func f)
 {
     for (int i = m_size - 1; i >= 0; i--)
     {
         object r = f.call(m_values[i], i);
         if (r != null)
         {
             return(r);
         }
     }
     return(null);
 }
コード例 #28
0
ファイル: Map.cs プロジェクト: syatanic/fantom
        public object reduce(object reduction, Func f)
        {
            IDictionaryEnumerator en = m_map.GetEnumerator();

            while (en.MoveNext())
            {
                object key = en.Key;
                object val = en.Value;
                reduction = f.call(reduction, val, key);
            }
            return(reduction);
        }
コード例 #29
0
ファイル: List.cs プロジェクト: syatanic/fantom
 public Long findIndex(Func f)
 {
     for (int i = 0; i < m_size; ++i)
     {
         long pos = i;
         if (f.call(m_values[i], pos) == Boolean.True)
         {
             return(Long.valueOf(pos));
         }
     }
     return(null);
 }
コード例 #30
0
ファイル: Deprecated.cs プロジェクト: syatanic/fantom
        public static Deprecated make(Func func)
        {
            Deprecated self = new Deprecated();

            if (func != null)
            {
                func.enterCtor(self);
                func.call(self);
                func.exitCtor();
            }
            return(self);
        }
コード例 #31
0
ファイル: List.cs プロジェクト: syatanic/fantom
 public object eachWhile(Func f)
 {
     for (int i = 0; i < m_size; i++)
     {
         object r = f.call(m_values[i], i);
         if (r != null)
         {
             return(r);
         }
     }
     return(null);
 }
コード例 #32
0
ファイル: List.cs プロジェクト: syatanic/fantom
        public List exclude(Func f)
        {
            List acc = new List(m_of, m_size);

            for (int i = 0; i < m_size; i++)
            {
                if (f.call(m_values[i], i) == Boolean.False)
                {
                    acc.add(m_values[i]);
                }
            }
            return(acc);
        }
コード例 #33
0
        public static bool all(string self, Func f)
        {
            int len = self.Length;

            for (int i = 0; i < len; i++)
            {
                if (f.call(self[i], i) == Boolean.False)
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #34
0
ファイル: ActorPool.cs プロジェクト: nomit007/f4
        public static void make_(ActorPool self, Func itBlock)
        {
            if (itBlock != null)
              {
            itBlock.enterCtor(self);
            itBlock.call(self);
            itBlock.exitCtor();
              }
              if (self.m_maxThreads < 1) throw ArgErr.make("ActorPool.maxThreads must be >= 1, not " + self.m_maxThreads).val;

              self.m_threadPool = new ThreadPool((int)self.m_maxThreads);
              self.m_scheduler = new Scheduler();
        }
コード例 #35
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public object reduce(object reduction, Func f)
 {
     IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     reduction = f.call(reduction, val, key);
       }
       return reduction;
 }
コード例 #36
0
ファイル: List.cs プロジェクト: xored/f4
 public object reduce(object reduction, Func f)
 {
     for (int i=0; i<m_size; i++)
     reduction = f.call(reduction, m_values[i], i);
       return reduction;
 }
コード例 #37
0
ファイル: FanStr.cs プロジェクト: xored/f4
 public static bool any(string self, Func f)
 {
     int len = self.Length;
       for (int i=0; i<len ; i++)
     if (f.call(self[i], i) == Boolean.True)
       return true;
       return false;
 }
コード例 #38
0
ファイル: List.cs プロジェクト: xored/f4
        public string join(string sep, Func f)
        {
            if (m_size == 0) return "";

              if (m_size == 1)
              {
            object v = m_values[0];
            if (f != null) return (string)f.call(v, 0);
            if (v == null) return "null";
            return toStr(v);
              }

              StringBuilder s = new StringBuilder(32+m_size*32);
              for (int i=0; i<m_size; i++)
              {
            if (i > 0) s.Append(sep);
            if (f == null)
            {
              if (m_values[i] == null) s.Append("null");
              else s.Append(m_values[i]);
            }
            else
            {
              s.Append(f.call(m_values[i], i));
            }
              }
              return s.ToString();
        }
コード例 #39
0
ファイル: List.cs プロジェクト: xored/f4
 public List map(Func f)
 {
     Type r = f.returns();
       if (r == Sys.VoidType) r = Sys.ObjType.toNullable();
       List acc = new List(r, (int)size());
       for (int i=0; i<m_size; i++)
     acc.add(f.call(m_values[i], i));
       return acc;
 }
コード例 #40
0
ファイル: List.cs プロジェクト: xored/f4
 public List findAll(Func f)
 {
     List acc = new List(m_of, m_size);
       for (int i=0; i<m_size; i++)
     if (f.call(m_values[i], i) == Boolean.True)
       acc.add(m_values[i]);
       return acc;
 }
コード例 #41
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public Map findAll(Func f)
 {
     Map acc = new Map(m_type);
       if (this.ordered()) acc.ordered(true);
       if (this.caseInsensitive()) acc.caseInsensitive(true);
       IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     if (f.call(val, key) == Boolean.True)
       acc.set(key, val);
       }
       return acc;
 }
コード例 #42
0
ファイル: List.cs プロジェクト: xored/f4
 public object eachWhile(Func f)
 {
     for (int i=0; i<m_size; i++)
       {
     object r = f.call(m_values[i], i);
     if (r != null) return r;
       }
       return null;
 }
コード例 #43
0
ファイル: List.cs プロジェクト: xored/f4
 public object find(Func f)
 {
     for (int i=0; i<m_size; i++)
     if (f.call(m_values[i], i) == Boolean.True)
       return m_values[i];
       return null;
 }
コード例 #44
0
ファイル: List.cs プロジェクト: xored/f4
 public object eachrWhile(Func f)
 {
     for (int i=m_size-1; i>=0; i--)
       {
     object r = f.call(m_values[i], i);
     if (r != null) return r;
       }
       return null;
 }
コード例 #45
0
ファイル: List.cs プロジェクト: xored/f4
        public void eachRange(Range r, Func f)
        {
            int s = r.start(m_size);
              int e = r.end(m_size);
              int n = e - s + 1;
              if (n < 0) throw IndexErr.make(r).val;

              if (f.arity() == 1)
              {
            for (int i=s; i<=e; ++i)
              f.call(m_values[i]);
              }
              else
              {
            for (int i=s; i<=e; ++i)
              f.call(m_values[i], i);
              }
        }
コード例 #46
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public bool any(Func f)
 {
     if (m_map.Count == 0) return false;
       IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     if (f.call(val, key) == Boolean.True)
       return true;
       }
       return false;
 }
コード例 #47
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public string join(string sep, Func f)
 {
     int size = (int)this.size();
       if (size == 0) return "";
       StringBuilder s = new StringBuilder(32+size*32);
       IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     if (s.Length > 0) s.Append(sep);
     if (f == null)
       s.Append(key).Append(": ").Append(val);
     else
       s.Append(f.call(val, key));
       }
       return s.ToString();
 }
コード例 #48
0
ファイル: List.cs プロジェクト: xored/f4
 public Long findIndex(Func f)
 {
     for (int i=0; i<m_size; ++i)
       {
     long pos = i;
     if (f.call(m_values[i], pos) == Boolean.True)
       return Long.valueOf(pos);
       }
       return null;
 }
コード例 #49
0
ファイル: List.cs プロジェクト: xored/f4
 public bool any(Func f)
 {
     for (int i=0; i<m_size; i++)
     if (f.call(m_values[i], i) == Boolean.True)
       return true;
       return false;
 }
コード例 #50
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public object eachWhile(Func f)
 {
     IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     object r = f.call(val, key);
     if (r != null) return r;
       }
       return null;
 }
コード例 #51
0
ファイル: Map.cs プロジェクト: nomit007/f4
 //////////////////////////////////////////////////////////////////////////
 // Iterators
 //////////////////////////////////////////////////////////////////////////
 public void each(Func f)
 {
     IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     f.call(val, key);
       }
 }
コード例 #52
0
ファイル: List.cs プロジェクト: xored/f4
 public long binaryFind(Func f)
 {
     object[] values = this.m_values;
       int low = 0, high = m_size-1;
       bool oneArg = f.arity() == 1;
       while (low <= high)
       {
     int probe = (low + high) >> 1;
     object val = values[probe];
     object res = oneArg ? f.call(val) : f.call(val, Long.valueOf(probe));
     long cmp = ((Long)res).longValue();
     if (cmp > 0)
       low = probe + 1;
     else if (cmp < 0)
       high = probe - 1;
     else
       return probe;
       }
       return -(low + 1);
 }
コード例 #53
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public object find(Func f)
 {
     IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     if (f.call(val, key) == Boolean.True)
       return val;
       }
       return null;
 }
コード例 #54
0
ファイル: List.cs プロジェクト: xored/f4
 //////////////////////////////////////////////////////////////////////////
 // Iterators
 //////////////////////////////////////////////////////////////////////////
 public void each(Func f)
 {
     if (f.arity() == 1)
       {
     for (int i=0; i<m_size; i++)
       f.call(m_values[i]);
       }
       else
       {
     for (int i=0; i<m_size; i++)
       f.call(m_values[i], i);
       }
 }
コード例 #55
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public object getOrAdd(object key, Func valFunc)
 {
     if (containsKey(key)) return get(key);
       object val = valFunc.call(key);
       add(key, val);
       return val;
 }
コード例 #56
0
ファイル: List.cs プロジェクト: xored/f4
 public void eachr(Func f)
 {
     if (f.arity() == 1)
       {
     for (int i=m_size-1; i>=0; i--)
       f.call(m_values[i]);
       }
       else
       {
     for (int i=m_size-1; i>=0; i--)
       f.call(m_values[i], i);
       }
 }
コード例 #57
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public Map map(Func f)
 {
     Type r = f.returns();
       if (r == Sys.VoidType) r = Sys.ObjType.toNullable();
       Map acc = new Map(m_type.m_k, r);
       if (this.ordered()) acc.ordered(true);
       if (this.caseInsensitive()) acc.caseInsensitive(true);
       IDictionaryEnumerator en = m_map.GetEnumerator();
       while (en.MoveNext())
       {
     object key = en.Key;
     object val = en.Value;
     acc.set(key, f.call(val, key));
       }
       return acc;
 }
コード例 #58
0
ファイル: FanStr.cs プロジェクト: xored/f4
 public static void each(string self, Func f)
 {
     int len = self.Length;
       for (int i=0; i<len ; i++)
     f.call(self[i], i);
 }
コード例 #59
0
ファイル: Map.cs プロジェクト: nomit007/f4
 public Map setList(List list, Func f)
 {
     modify();
       if (f == null)
       {
     for (int i=0; i<list.sz(); ++i)
       set(list.get(i), list.get(i));
       }
       else if (f.@params().sz() == 1)
       {
     for (int i=0; i<list.sz(); ++i)
       set(f.call(list.get(i)), list.get(i));
       }
       else
       {
     for (int i=0; i<list.sz(); ++i)
       set(f.call(list.get(i), i), list.get(i));
       }
       return this;
 }
コード例 #60
0
ファイル: FanStr.cs プロジェクト: xored/f4
 public static void eachr(string self, Func f)
 {
     for (int i=self.Length-1; i>=0; --i)
     f.call(self[i], i);
 }