예제 #1
0
        private BTree Btree()
        {
            IClassIndexStrategy index = ClassMetadataFor(typeof(DebugBTreeNodeMarshalledLength.Item
                                                                )).Index();

            return(((BTreeClassIndexStrategy)index).Btree());
        }
예제 #2
0
        private void AssertIndex(object[] expected)
        {
            ExpectingVisitor    visitor = new ExpectingVisitor(expected);
            IClassIndexStrategy index   = ClassMetadataFor(typeof(ClassIndexTestCase.Item)).Index
                                              ();

            index.TraverseAll(Trans(), visitor);
            visitor.AssertExpectations();
        }
        public static BTree Btree(ClassMetadata clazz)
        {
            IClassIndexStrategy index = clazz.Index();

            if (!(index is Db4objects.Db4o.Internal.Classindex.BTreeClassIndexStrategy))
            {
                throw new InvalidOperationException();
            }
            return(((Db4objects.Db4o.Internal.Classindex.BTreeClassIndexStrategy)index).Btree
                       ());
        }
예제 #4
0
 protected ClassMetadata(ObjectContainerBase container)
 {
     if (null == container)
     {
         throw new ArgumentNullException();
     }
     _container = container;
     _index = CreateIndexStrategy();
     _classIndexed = true;
     _fieldAccessor = new StrictFieldAccessor();
 }
        public override void LoadFromClassIndex(ClassMetadata clazz)
        {
            IClassIndexStrategy index = clazz.Index();

            if (index is BTreeClassIndexStrategy)
            {
                BTree btree = ((BTreeClassIndexStrategy)index).Btree();
                _ids = new IntArrayList(btree.Size(Transaction()));
            }
            index.TraverseAll(_transaction, new _IVisitor4_107(this));
        }
예제 #6
0
        private IClassIndexStrategy ClassIndex(ClassMetadata classMetadata)
        {
            IClassIndexStrategy classIndex = (IClassIndexStrategy)_classIndices.Get(classMetadata
                                                                                    );

            if (classIndex == null)
            {
                classIndex = new BTreeClassIndexStrategy(classMetadata);
                _classIndices.Put(classMetadata, classIndex);
                classIndex.Initialize(_targetDb);
            }
            return(classIndex);
        }
예제 #7
0
        internal void LoadFromClassIndex()
        {
            if (!IsEmpty())
            {
                return;
            }
            QCandidates.TreeIntBuilder result = new QCandidates.TreeIntBuilder();
            IClassIndexStrategy        index  = i_classMetadata.Index();

            index.TraverseAll(i_trans, new _IVisitor4_346(this, result));
            i_root = result.tree;
            DiagnosticProcessor dp = i_trans.Container()._handlers.DiagnosticProcessor();

            if (dp.Enabled() && !IsClassOnlyQuery())
            {
                dp.LoadedFromClassIndex(i_classMetadata);
            }
            _loadedFromClassIndex = true;
        }
        public override void LoadFromClassIndexes(ClassMetadataIterator iter)
        {
            // duplicates because of inheritance hierarchies
            ByRef duplicates = new ByRef();

            while (iter.MoveNext())
            {
                ClassMetadata classMetadata = iter.CurrentClass();
                if (classMetadata.GetName() != null)
                {
                    IReflectClass claxx = classMetadata.ClassReflector();
                    if (claxx == null || !(Stream()._handlers.IclassInternal.IsAssignableFrom(claxx)))
                    {
                        IClassIndexStrategy index = classMetadata.Index();
                        index.TraverseAll(_transaction, new _IVisitor4_130(this, duplicates));
                    }
                }
            }
        }
예제 #9
0
 public ClassMetadata(ObjectContainerBase container, IReflectClass classReflector)
 {
     if (null == container)
     {
         throw new ArgumentNullException();
     }
     _container = container;
     ClassReflector(classReflector);
     _index = CreateIndexStrategy();
     _classIndexed = true;
     if (_container.Config().ExceptionsOnNotStorable())
     {
         _fieldAccessor = new StrictFieldAccessor();
     }
     else
     {
         _fieldAccessor = new LenientFieldAccessor();
     }
 }
예제 #10
0
 public virtual void DropClassIndex()
 {
     if (Container().IsClient)
     {
         throw new InvalidOperationException();
     }
     _index = CreateIndexStrategy();
     _index.Initialize(Container());
     Container().SetDirtyInSystemTransaction(this);
 }
예제 #11
0
 public virtual void LoadFromClassIndex(IClassIndexStrategy index)
 {
     _candidateIds = index.IdVisitable(_qCandidates.Transaction());
 }
예제 #12
0
		public virtual void LoadFromClassIndex(IClassIndexStrategy index)
		{
			_candidateIds = index.IdVisitable(_qCandidates.Transaction());
		}