5a42e15c4a
Squashed messages from 9 commits: 9. Properties now uses PropertyFamily and contained classes. Fetching,seting,clearing properties can be done with PropertyFamilyKey or PropertyTypeKey. Hierarchy of newly added clases is: Vertices -n-> PropertyFamily {name: String} <-1-n-> PropertyType {type: Property::Flags} Edges -n-> PropertyFamily {name: String} <-1-n-> PropertyType {type: Property::Flags} PropertyFamilyKey -> PropertyType PropertyTypeKey -> PropertyType PropertyType t0,t1; let t0!=t1 be true let t0.family==t1.family be true then next is true PropertyTypeKey{&t0}!=PropertyTypeKey{&t1} PropertyFamilyKey{&t0}==PropertyFamilyKey{&t1} PropertyFamilyKey{&t0}==PropertyTypeKey{&t1} PropertyTypeKey{&t0}==PropertyFamilyKey{&t1} 8. Intermedate commit. Noticed that integration queries throw SEGFAULT. 7. Defined interface for indexes. Fixed three memory leaks. Fixed integration_queries test which now passes. 6. Commit which return Xorshift128plus to valid shape. 5. Tmp commit. 4. Label Index is compiling. 3. tmp 2. Vertex::Accessor now updates Label index. 1. Applied changes for code review.
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "storage/indexes/index_base.hpp"
|
|
#include "storage/indexes/index_record.hpp"
|
|
|
|
#include "data_structures/concurrent/concurrent_list.hpp"
|
|
|
|
template <class T, class K>
|
|
class NonUniqueUnorderedIndex : public IndexBase<T, K>
|
|
{
|
|
public:
|
|
typedef T value_type;
|
|
typedef K key_type;
|
|
|
|
NonUniqueUnorderedIndex();
|
|
|
|
// Insert's value.
|
|
// nonunique => always succeds.
|
|
bool insert(IndexRecord<T, K> &&value) final;
|
|
|
|
// Returns iterator which returns valid records in range.
|
|
// ordered==None => doesn't guarantee any order of submitting records.
|
|
std::unique_ptr<IteratorBase<const typename T::Accessor>>
|
|
for_range(DbAccessor &t, Border<K> from = Border<K>(),
|
|
Border<K> to = Border<K>()) final;
|
|
|
|
// Same as for_range just whit known returned iterator.
|
|
auto for_range_exact(DbAccessor &t, Border<K> from = Border<K>(),
|
|
Border<K> to = Border<K>());
|
|
|
|
// Removes for all transactions obsolete Records.
|
|
// Cleaner has to call this method when he decideds that it is time for
|
|
// cleaning.
|
|
void clean(DbTransaction &) final;
|
|
|
|
private:
|
|
List<IndexRecord<T, K>> list;
|
|
};
|