10225501448 李度 10225101546 陈胤遒 10215501422 高宇菲
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

37 lines
1.1 KiB

#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