예제 #1
0
        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));
        }
예제 #2
0
 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));
 }
예제 #3
0
        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;
        }
예제 #4
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));
             }
         }
     }
 }
예제 #5
0
 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));
         }
     }
 }
예제 #6
0
        private int ReducedCountForNullBitMap(int count, BitMap4 bitMap)
        {
            int nullCount = 0;

            for (int i = 0; i < count; i++)
            {
                if (bitMap.IsTrue(i))
                {
                    nullCount++;
                }
            }
            return(nullCount);
        }
예제 #7
0
 public virtual bool IsNull(int fieldIndex)
 {
     return(_nullBitMap.IsTrue(fieldIndex));
 }