#ifndef ENCODE_INDEX_H #define ENCODE_INDEX_H #include "leveldb/slice.h" #include "util/coding.h" namespace fielddb{ using namespace leveldb; struct ParsedInternalIndexKey { //key : {name : val} Slice user_key_; Slice name_; Slice val_; ParsedInternalIndexKey() {} // Intentionally left uninitialized (for speed) ParsedInternalIndexKey(const Slice& user_key, const Slice& name, const Slice& val) : user_key_(user_key), name_(name), val_(val) {} }; bool ParseInternalIndexKey(Slice input, ParsedInternalIndexKey* result); void AppendIndexKey(std::string* result, const ParsedInternalIndexKey& key); inline bool ParseInternalIndexKey(Slice input, ParsedInternalIndexKey* result){ return GetLengthPrefixedSlice(&input, &result->name_) && GetLengthPrefixedSlice(&input, &result->val_) && GetLengthPrefixedSlice(&input, &result->user_key_); } inline void AppendIndexKey(std::string* result, const ParsedInternalIndexKey& key){ PutLengthPrefixedSlice(result, key.name_); PutLengthPrefixedSlice(result, key.val_); PutLengthPrefixedSlice(result, key.user_key_); } } #endif