示例#1
0
            private int CopyAcceptedClasses(DefragmentContextImpl context, int acceptedClasses
                                            )
            {
                int numClasses = context.ReadInt();

                for (int classIdx = 0; classIdx < numClasses; classIdx++)
                {
                    int classId = context.SourceBuffer().ReadInt();
                    if (!this.Accept(classId))
                    {
                        continue;
                    }
                    ++acceptedClasses;
                    context.WriteMappedID(classId);
                }
                return(acceptedClasses);
            }
示例#2
0
        public virtual void Defrag(ClassMetadata classMetadata, LatinStringIO sio, DefragmentContextImpl
                                   context, int classIndexID)
        {
            ReadName(sio, context.SourceBuffer());
            ReadName(sio, context.TargetBuffer());
            int metaClassID = 0;

            context.WriteInt(metaClassID);
            // ancestor ID
            context.CopyID();
            context.WriteInt((classMetadata.HasClassIndex() ? IndexIDForWriting(classIndexID)
                                 : 0));
            int aspectCount = context.ReadInt();

            if (aspectCount > classMetadata.DeclaredAspectCount())
            {
                throw new InvalidOperationException();
            }
            IntByRef processedAspectCount = new IntByRef(0);

            classMetadata.TraverseDeclaredAspects(new _IProcedure4_136(this, processedAspectCount
                                                                       , aspectCount, classMetadata, sio, context));
        }
示例#3
0
        public static void DefragIndex(DefragmentContextImpl context, IIndexable4 keyHandler
                                       )
        {
            // count
            int count = context.ReadInt();
            // leafByte
            byte leafByte = context.ReadByte();
            bool isLeaf   = (leafByte == 1);

            context.CopyID();
            // parent ID
            context.CopyID();
            // previous ID
            context.CopyID();
            // next ID
            for (int i = 0; i < count; i++)
            {
                keyHandler.DefragIndexEntry(context);
                if (!isLeaf)
                {
                    context.CopyID();
                }
            }
        }
示例#4
0
 public static void DefragIndex(DefragmentContextImpl context, IIndexable4 keyHandler
     )
 {
     // count
     var count = context.ReadInt();
     // leafByte
     var leafByte = context.ReadByte();
     var isLeaf = (leafByte == 1);
     context.CopyID();
     // parent ID
     context.CopyID();
     // previous ID
     context.CopyID();
     // next ID
     for (var i = 0; i < count; i++)
     {
         keyHandler.DefragIndexEntry(context);
         if (!isLeaf)
         {
             context.CopyID();
         }
     }
 }
示例#5
0
 public virtual void Defrag(ClassMetadata classMetadata, LatinStringIO sio, DefragmentContextImpl
     context, int classIndexID)
 {
     ReadName(sio, context.SourceBuffer());
     ReadName(sio, context.TargetBuffer());
     var metaClassID = 0;
     context.WriteInt(metaClassID);
     // ancestor ID
     context.CopyID();
     context.WriteInt((classMetadata.HasClassIndex()
         ? IndexIDForWriting(classIndexID)
         : 0));
     var aspectCount = context.ReadInt();
     if (aspectCount > classMetadata.DeclaredAspectCount())
     {
         throw new InvalidOperationException();
     }
     var processedAspectCount = new IntByRef(0);
     classMetadata.TraverseDeclaredAspects(new _IProcedure4_136(this, processedAspectCount
         , aspectCount, classMetadata, sio, context));
 }