Exemplo n.º 1
0
        public byte[] ToArray()
        {
            MemoryStream ms = new MemoryStream();
            UruStream s = new UruStream(ms);

            ulong bit = 1;
            Fields f = NodeFields;
            s.WriteULong((ulong)f);
            while (bit != 0 && bit <= (ulong)f) {
                switch ((f & (Fields)bit)) {
                    case Fields.kBlob_1:
                        s.WriteInt(fBlob[0].Length);
                        s.WriteBytes(fBlob[0]);
                        break;
                    case Fields.kBlob_2:
                        s.WriteInt(fBlob[1].Length);
                        s.WriteBytes(fBlob[1]);
                        break;
                    case Fields.kCreateAgeName:
                        s.WriteUnicodeStringV32(fCreateAgeName);
                        break;
                    case Fields.kCreateAgeUuid:
                        s.WriteBytes(fCreateAgeUuid.ToByteArray());
                        break;
                    case Fields.kCreateTime:
                        s.WriteUInt(ToUnixTime(fCreateTime));
                        break;
                    case Fields.kCreatorIdx:
                        s.WriteUInt(fCreatorIdx.Value);
                        break;
                    case Fields.kCreatorUuid:
                        s.WriteBytes(fCreatorUuid.ToByteArray());
                        break;
                    case Fields.kInt32_1:
                        s.WriteInt(fInt32[0].Value);
                        break;
                    case Fields.kInt32_2:
                        s.WriteInt(fInt32[1].Value);
                        break;
                    case Fields.kInt32_3:
                        s.WriteInt(fInt32[2].Value);
                        break;
                    case Fields.kInt32_4:
                        s.WriteInt(fInt32[3].Value);
                        break;
                    case Fields.kIString64_1:
                        s.WriteUnicodeStringV32(fIString64[0]);
                        break;
                    case Fields.kIString64_2:
                        s.WriteUnicodeStringV32(fIString64[1]);
                        break;
                    case Fields.kModifyTime:
                        s.WriteUInt(ToUnixTime(fModifyTime));
                        break;
                    case Fields.kNodeIdx:
                        s.WriteUInt(fIdx);
                        break;
                    case Fields.kNodeType:
                        s.WriteUInt((uint)fNodeType);
                        break;
                    case Fields.kString64_1:
                        s.WriteUnicodeStringV32(fString64[0]);
                        break;
                    case Fields.kString64_2:
                        s.WriteUnicodeStringV32(fString64[1]);
                        break;
                    case Fields.kString64_3:
                        s.WriteUnicodeStringV32(fString64[2]);
                        break;
                    case Fields.kString64_4:
                        s.WriteUnicodeStringV32(fString64[3]);
                        break;
                    case Fields.kString64_5:
                        s.WriteUnicodeStringV32(fString64[4]);
                        break;
                    case Fields.kString64_6:
                        s.WriteUnicodeStringV32(fString64[5]);
                        break;
                    case Fields.kText_1:
                        s.WriteUnicodeStringV32(fText[0]);
                        break;
                    case Fields.kText_2:
                        s.WriteUnicodeStringV32(fText[1]);
                        break;
                    case Fields.kUInt32_1:
                        s.WriteUInt(fUInt32[0].Value);
                        break;
                    case Fields.kUInt32_2:
                        s.WriteUInt(fUInt32[1].Value);
                        break;
                    case Fields.kUInt32_3:
                        s.WriteUInt(fUInt32[2].Value);
                        break;
                    case Fields.kUInt32_4:
                        s.WriteUInt(fUInt32[3].Value);
                        break;
                    case Fields.kUuid_1:
                        s.WriteBytes(fUuid[0].ToByteArray());
                        break;
                    case Fields.kUuid_2:
                        s.WriteBytes(fUuid[1].ToByteArray());
                        break;
                    case Fields.kUuid_3:
                        s.WriteBytes(fUuid[2].ToByteArray());
                        break;
                    case Fields.kUuid_4:
                        s.WriteBytes(fUuid[3].ToByteArray());
                        break;
                }

                bit <<= 1;
            }

            byte[] buf = ms.ToArray();
            s.Close();
            ms.Close();
            return buf;
        }