Exemple #1
0
        public static void Serialize <TDoc, TCursor>(TagElementStream <TDoc, TCursor, string> s,
                                                     ref Values.GroupTagData32 value)
            where TDoc : class
            where TCursor : class
        {
            bool reading = s.IsReading;

            var group_tag = reading
                                ? null
                                : value.TagString;
            var name = reading
                                ? null
                                : value.Name;
            var guid = reading
                                ? Values.KGuid.Empty
                                : value.Uuid;

            s.StreamAttribute("tag", ref group_tag);
            s.StreamAttributeOpt("guid", ref guid, Predicates.IsNotEmpty);
            s.StreamAttribute("name", ref name);

            if (reading)
            {
                value = new Values.GroupTagData32(group_tag, name, guid);
            }
        }
 public BlobChunkHeader(Values.GroupTagData32 signature, int version,
                        int dataSize = TypeExtensions.kNone, int flags = kFlagIsInitialized)
 {
     Signature = signature.ID;
     Size      = kSizeOf;
     if (dataSize.IsNotNone())
     {
         Size += dataSize;
     }
     Version = (short)version;
     Flags   = (short)flags;
 }
Exemple #3
0
        static void StreamElements <TDoc, TCursor>(TagElementStream <TDoc, TCursor, string> s,
                                                   ref Values.GroupTagData32[] tags)
            where TDoc : class
            where TCursor : class
        {
            const string k_element_name = "Group";

            if (s.IsReading)
            {
                var list = new List <Values.GroupTagData32>();

                foreach (var node in s.ElementsByName(k_element_name))
                {
                    using (s.EnterCursorBookmark(node))
                    {
                        Values.GroupTagData32 data = null;
                        Serialize(s, ref data);

                        list.Add(data);
                    }
                }

                tags = list.ToArray();
            }
            else if (s.IsWriting)
            {
                foreach (Values.GroupTagData32 data in tags)
                {
                    using (s.EnterCursorBookmark(k_element_name))
                    {
                        var temp = data;                         // can't pass a foreach value by ref
                        Serialize(s, ref temp);
                    }
                }
            }
        }