Beispiel #1
0
 internal void WriteAtomAsLong(PTypeEnumeration vid, object data)
 {
     switch (vid)
     {
         case PTypeEnumeration.none: break;
         case PTypeEnumeration.boolean:
             {
                 bw.Write((bool)data);
                 bw.Write(new byte[] { 0, 0, 0, 0, 0, 0, 0 });
                 break;
             }
         case PTypeEnumeration.character:
             {
                 bw.Write(Encoding.Unicode.GetBytes(new[] { (char)data }));
                 bw.Write(new byte[] { 0, 0, 0, 0, 0, 0 });
                 break;
             }
         case PTypeEnumeration.integer:
             {
                 bw.Write((int)data);
                 bw.Write(0);
                 break;
             }
         case PTypeEnumeration.longinteger: bw.Write((long)data); break;
         case PTypeEnumeration.real: bw.Write((double)data); break;
         case PTypeEnumeration.@byte: bw.Write((byte)data); break;
     }
 }
Beispiel #2
0
 internal object ReadAtomFromLong(PTypeEnumeration vid, long offset)
 {
     SetOffset(offset);
     switch (vid)
     {
         case PTypeEnumeration.boolean:
             {
                 var b = br.ReadBoolean();
                 SetOffset(offset + 7);
                 return b;
             }
         case PTypeEnumeration.character:
             {
                 var ch = Encoding.Unicode.GetString(br.ReadBytes(2), 0, 2)[0];
                 SetOffset(offset + 6);
                 return ch;
             }
         case PTypeEnumeration.integer:
             {
                 var i = br.ReadInt32();
                 SetOffset(offset + 4);
                 return i;
             }
         case PTypeEnumeration.longinteger:
             {
                 return br.ReadInt64();
             }
         case PTypeEnumeration.real:
             {
                 return br.ReadDouble();
             }
         case PTypeEnumeration.@byte:
             {
                 return br.ReadByte();
             }
     }
     return null;
 }