Exemple #1
0
        public static UxlDocument Read(CacheReader f, SourcePackage upk)
        {
            var backend = (UxlBackendType)f.ReadByte();
            var flags   = (UxlDocumentFlags)f.ReadByte();

            SourceValue?cond = null;

            if (flags.HasFlag(UxlDocumentFlags.HasCondition))
            {
                cond = f.ReadGlobalValue();
            }

            var doc = new UxlDocument(upk, backend, cond);

            if (flags.HasFlag(UxlDocumentFlags.Defines))
            {
                f.ReadList(doc.Defines, UxlDefine.Read);
            }
            if (flags.HasFlag(UxlDocumentFlags.Usings))
            {
                f.ReadList(doc.Usings, r => r.ReadGlobalValue());
            }
            if (flags.HasFlag(UxlDocumentFlags.Declarations))
            {
                f.ReadList(doc.Declarations, UxlDeclare.Read);
            }
            if (flags.HasFlag(UxlDocumentFlags.Deprecations))
            {
                f.ReadList(doc.Deprecations, UxlDeprecate.Read);
            }
            if (flags.HasFlag(UxlDocumentFlags.Templates))
            {
                f.ReadList(doc.Templates, UxlTemplate.Read);
            }
            if (flags.HasFlag(UxlDocumentFlags.Types))
            {
                f.ReadList(doc.Types, UxlType.Read);
            }

            var entityFlags = (UxlEntityFlags)f.ReadByte();

            doc.ReadEntity(f, entityFlags);
            return(doc);
        }