// TODO: Make public internal CpkColumnInfo(string name, CpkColumnStorage storage, CpkDataType type, CpkValue value = null) { Name = name ?? throw new ArgumentNullException(nameof(name)); Storage = storage; Type = type; Value = value; }
//// Writing - TODO: This needs a rewrite since the "Data" type isn't properly supported. /// <summary> /// Writes a value based on the given <see cref="CpkValue"/> and <see cref="CpkColumnInfo"/>. /// </summary> /// <param name="bw"></param> /// <param name="val"></param> /// <param name="col"></param> /// <param name="strings"></param> /// <param name="data"></param> private void WriteValue(BinaryWriterX bw, CpkValue val, CpkColumnInfo col, Dictionary <string, int> strings = null, Dictionary <int, int> data = null) { switch (val.Type) { case CpkDataType.UInt8: bw.Write((byte)val.Value); break; case CpkDataType.SInt8: bw.Write((sbyte)val.Value); break; case CpkDataType.UInt16: bw.Write((ushort)val.Value); break; case CpkDataType.SInt16: bw.Write((short)val.Value); break; case CpkDataType.UInt32: bw.Write((uint)val.Value); break; case CpkDataType.SInt32: bw.Write((int)val.Value); break; case CpkDataType.UInt64: bw.Write((ulong)val.Value); break; case CpkDataType.SInt64: bw.Write((long)val.Value); break; case CpkDataType.Float: bw.Write((float)val.Value); break; case CpkDataType.String: bw.Write(strings[(string)val.Value]); break; case CpkDataType.Data: bw.Write((int)val.Value); bw.Write(data[(int)val.Value]); break; } }
public void Add(string name, CpkValue value) { _values[name] = value; }
public static CpkColumnInfo CreateZero(string name, CpkDataType type) { return(new CpkColumnInfo(name, CpkColumnStorage.Default, type, CpkValue.Default(type))); }
// TODO: Remove methods and do creation externally public static CpkColumnInfo CreateConst(string name, CpkValue value) { return(new CpkColumnInfo(name, CpkColumnStorage.Const, value.Type, value)); }