forked from iabudiab/ObjectiveRocks
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathRocksDBCallbackSliceTransform.cpp
More file actions
56 lines (47 loc) · 1.41 KB
/
Copy pathRocksDBCallbackSliceTransform.cpp
File metadata and controls
56 lines (47 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//
// RocksDBCallbackSliceTransform.cpp
// ObjectiveRocks
//
// Created by Iska on 26/12/14.
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
#include "RocksDBCallbackSliceTransform.h"
class RocksDBCallbackSliceTransformImpl : public rocksdb::SliceTransform
{
private:
void* instance;
const char* name;
TransformCallback transformCallback;
InDomainCallback inDomainCallback;
InRangeCallback inRangeCallback;
public:
RocksDBCallbackSliceTransformImpl(void* instance, const char* name,
TransformCallback transform,
InDomainCallback domain,
InRangeCallback range):
instance(instance), name(name), transformCallback(transform), inDomainCallback(domain), inRangeCallback(range) {}
virtual const char* Name() const
{
return name;
}
virtual rocksdb::Slice Transform(const rocksdb::Slice& src) const
{
return transformCallback(instance, src);
}
virtual bool InDomain(const rocksdb::Slice& src) const
{
return inDomainCallback(instance, src);
}
virtual bool InRange(const rocksdb::Slice& dst) const
{
return inRangeCallback(instance, dst);
}
};
rocksdb::SliceTransform* RocksDBCallbackSliceTransform(void* instance,
const char* name,
TransformCallback transform,
InDomainCallback domain,
InRangeCallback range)
{
return new RocksDBCallbackSliceTransformImpl(instance, name, transform, domain, range);
}