#ifndef MERGE_OPERATORS_H #define MERGE_OPERATORS_H #include #include #include "rocksdb/merge_operator.h" namespace leveldb { class MergeOperators { public: static std::shared_ptr CreatePutOperator(); static std::shared_ptr CreateUInt64AddOperator(); static std::shared_ptr CreateStringAppendOperator(); static std::shared_ptr CreateStringAppendTESTOperator(); // Will return a different merge operator depending on the string. // TODO: Hook the "name" up to the actual Name() of the MergeOperators? static std::shared_ptr CreateFromStringId( const std::string& name) { if (name == "put") { return CreatePutOperator(); } else if ( name == "uint64add") { return CreateUInt64AddOperator(); } else if (name == "stringappend") { return CreateStringAppendOperator(); } else if (name == "stringappendtest") { return CreateStringAppendTESTOperator(); } else { // Empty or unknown, just return nullptr return nullptr; } } }; } // namespace leveldb #endif