コード例 #1
0
        public IVector combine(IVector vector)
        {
            BasicSymbolVector v = (BasicSymbolVector)vector;
            int newSize         = this.rows() + v.rows();

            int[] newValue = new int[newSize];
            if (v.@base == @base)
            {
                values.AddRange(((BasicSymbolVector)vector).getdataArray());
            }
            else
            {
                SymbolBase vBase  = v.@base;
                int        length = vBase.size();
                int[]      mapper = new int[length];
                for (int i = 0; i < length; ++i)
                {
                    mapper[i] = @base.find(vBase.getSymbol(i), true);
                }
                length = v.rows();
                List <int> vValues = v.getdataArray();
                int        baseRow = this.rows();
                for (int i = 0; i < length; ++i)
                {
                    newValue[baseRow + i] = mapper[vValues[i]];
                }
            }
            return(new BasicSymbolVector(@base, newValue, false));
        }
コード例 #2
0
 public BasicSymbolVector(IList <string> list) : base(DATA_FORM.DF_VECTOR)
 {
     @base  = new SymbolBase(0);
     values = new List <int>(new int[list.Count]);
     for (int i = 0; i < list.Count; ++i)
     {
         values[i] = @base.find(list[i], true);
     }
 }
コード例 #3
0
        protected internal BasicSymbolVector(DATA_FORM df, ExtendedDataInput @in, SymbolBaseCollection collection) : base(df)
        {
            int rows    = @in.readInt();
            int columns = @in.readInt();
            int size    = rows * columns;

            values = new List <int>(new int[rows]);
            @base  = collection.add(@in);
            for (int i = 0; i < size; ++i)
            {
                values[i] = @in.readInt();
            }
        }
コード例 #4
0
        public virtual SymbolBase add(ExtendedDataInput @in)
        {
            int id = @in.readInt();

            if (symbaseMap.ContainsKey(id))
            {
                int size = @in.readInt();
                if (size != 0)
                {
                    throw new IOException("Invalid symbol base.");
                }
                lastSymbase = symbaseMap[id];
            }
            else
            {
                SymbolBase cur = new SymbolBase(id, @in);
                symbaseMap[id] = cur;
                lastSymbase    = cur;
            }
            return(lastSymbase);
        }
コード例 #5
0
        public virtual void write(ExtendedDataOutput @out, SymbolBase @base)
        {
            bool existing = false;
            int  id       = 0;

            if (existingBases == null)
            {
                existingBases        = new Dictionary <SymbolBase, int>();
                existingBases[@base] = 0;
            }
            else
            {
                int?curId = existingBases[@base];
                if (curId != null)
                {
                    existing = true;
                    id       = curId.Value;
                }
                else
                {
                    id = existingBases.Count;
                    existingBases[@base] = id;
                }
            }
            @out.writeInt(id);
            if (existing)
            {
                @out.writeInt(0);
            }
            else
            {
                int size = @base.size();
                @out.writeInt(size);
                for (int i = 0; i < size; ++i)
                {
                    @out.writeString(@base.getSymbol(i));
                }
            }
        }
コード例 #6
0
 public BasicSymbolVector(SymbolBase @base, int[] values, bool copy) : base(DATA_FORM.DF_VECTOR)
 {
     this.@base  = @base;
     this.values = new List <int>(values);
 }
コード例 #7
0
 public BasicSymbolVector(SymbolBase @base, int size) : base(DATA_FORM.DF_VECTOR)
 {
     this.@base = @base;
     values     = new List <int>(new int[size]);
 }
コード例 #8
0
 public BasicSymbolVector(int size) : base(DATA_FORM.DF_VECTOR)
 {
     @base  = new SymbolBase(0);
     values = new List <int>(new int[size]);
 }
コード例 #9
0
 public virtual void clear()
 {
     symbaseMap.Clear();
     lastSymbase = null;
 }