public virtual void ReadTypeInfo(Transaction trans, IReadBuffer buffer, ArrayInfo info, int classID) { BitMap4 typeInfoBitmap = new BitMap4(buffer.ReadByte()); info.Primitive(typeInfoBitmap.IsTrue(0)); info.Nullable(typeInfoBitmap.IsTrue(1)); }
private void TBit(BitMap4 map, int bit) { map.SetTrue(bit); Assert.IsTrue(map.IsTrue(bit)); map.SetFalse(bit); Assert.IsFalse(map.IsTrue(bit)); map.SetTrue(bit); Assert.IsTrue(map.IsTrue(bit)); }
public RawFieldSpec(AspectType aspectType, string name, int fieldTypeID, byte attribs ) { _type = aspectType; _name = name; _fieldTypeID = fieldTypeID; var bitmap = new BitMap4(attribs); _isPrimitive = bitmap.IsTrue(0); _isArray = bitmap.IsTrue(1); _isNArray = bitmap.IsTrue(2); _isVirtual = false; _indexID = 0; }
protected virtual void WriteElements(IWriteContext context, object obj, ArrayInfo info) { if (HandleAsByteArray(obj)) { context.WriteBytes((byte[])obj); } else { // byte[] performance optimisation if (HasNullBitmap(info)) { BitMap4 nullItems = NullItemsMap(ArrayReflector(Container(context)), obj); WriteNullBitmap(context, nullItems); for (int i = 0; i < info.ElementCount(); i++) { if (!nullItems.IsTrue(i)) { context.WriteObject(_handler, ArrayReflector(Container(context)).Get(obj, i)); } } } else { for (int i = 0; i < info.ElementCount(); i++) { context.WriteObject(_handler, ArrayReflector(Container(context)).Get(obj, i)); } } } }
protected void ReadInto(IReadContext context, ArrayInfo info, object array) { if (array == null) { return; } if (HandleAsByteArray(array)) { context.ReadBytes((byte[])array); // byte[] performance optimisation return; } if (HasNullBitmap(info)) { BitMap4 nullBitMap = ReadNullBitmap(context, info.ElementCount()); for (int i = 0; i < info.ElementCount(); i++) { object obj = nullBitMap.IsTrue(i) ? null : context.ReadObject(_handler); ArrayReflector(Container(context)).Set(array, i, obj); } } else { for (int i = 0; i < info.ElementCount(); i++) { ArrayReflector(Container(context)).Set(array, i, context.ReadObject(_handler)); } } }
private int ReducedCountForNullBitMap(int count, BitMap4 bitMap) { int nullCount = 0; for (int i = 0; i < count; i++) { if (bitMap.IsTrue(i)) { nullCount++; } } return(nullCount); }
public virtual bool IsNull(int fieldIndex) { return(_nullBitMap.IsTrue(fieldIndex)); }