public LPCArray Append(LPCArray array)
 {
     foreach (LPCValue v in array.Values)
     {
         this.Add(v);
     }
     return(this);
 }
Exemple #2
0
        // Duplicate an lpcvalue object
        public static LPCValue Duplicate(LPCValue val)
        {
            if (val.IsInt)
            {
                return(Create(val.AsInt));
            }
            else if (val.IsFloat)
            {
                return(Create(val.AsFloat));
            }
            else if (val.IsString)
            {
                return(Create(val.AsString));
            }
            else if (val.IsBuffer)
            {
                return(Create((byte[])val.AsBuffer.Clone()));
            }
            else if (val.IsArray)
            {
                LPCArray dupVal = LPCArray.Empty;

                foreach (LPCValue element in val.AsArray.Values)
                {
                    dupVal.Add(Duplicate(element));
                }

                return(LPCValue.Create(dupVal));
            }
            else if (val.IsMapping)
            {
                LPCMapping dupVal = LPCMapping.Empty;
                LPCMapping valMap = val.AsMapping;
                foreach (object key in valMap.Keys)
                {
                    if (key is int)
                    {
                        int keyInt = (int)key;
                        dupVal.Add(keyInt, Duplicate(valMap[keyInt]));
                        continue;
                    }
                    else if (key is string)
                    {
                        string keyStr = (string)key;
                        dupVal.Add(keyStr, Duplicate(valMap[keyStr]));
                        continue;
                    }
                    throw new Exception("Unexpected key type.");
                }
                return(LPCValue.Create(dupVal));
            }
            else
            {
                throw new Exception("Unexpected duplicated.");
            }
        }
        /// <summary>
        /// 获取一段列表
        /// </summary>
        /// <returns>获取的新列表</returns>
        /// <param name="index">起点Index.</param>
        /// <param name="needCount">总个数.</param>
        public LPCArray GetRange(int index, int needCount)
        {
            if (_list == null || index >= Count)
            {
                return(LPCArray.Empty);
            }

            LPCArray retList = new LPCArray();
            int      need    = needCount;

            for (int i = index; i < Count && need > 0; i++)
            {
                need--;
                retList.Add(this [i]);
            }

            return(retList);
        }