// Copyright (c) 2013, Facebook, Inc. All rights reserved. // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #ifndef MERGE_OPERATORS_H #define MERGE_OPERATORS_H #include #include #include "rocksdb/merge_operator.h" namespace rocksdb { 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 rocksdb #endif