public LPCArray Append(LPCArray array) { foreach (LPCValue v in array.Values) { this.Add(v); } return(this); }
// 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); }