| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | //  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.//  This source code is licensed under both the GPLv2 (found in the//  COPYING file in the root directory) and Apache 2.0 License//  (found in the LICENSE.Apache file in the root directory).//#pragma once#include "rocksdb/merge_operator.h"#include <stdio.h>#include <memory>#include <string>namespace ROCKSDB_NAMESPACE {class MergeOperators { public:  static std::shared_ptr<MergeOperator> CreatePutOperator();  static std::shared_ptr<MergeOperator> CreateDeprecatedPutOperator();  static std::shared_ptr<MergeOperator> CreateUInt64AddOperator();  static std::shared_ptr<MergeOperator> CreateStringAppendOperator();  static std::shared_ptr<MergeOperator> CreateStringAppendOperator(char delim_char);  static std::shared_ptr<MergeOperator> CreateStringAppendTESTOperator();  static std::shared_ptr<MergeOperator> CreateMaxOperator();  static std::shared_ptr<MergeOperator> CreateBytesXOROperator();  static std::shared_ptr<MergeOperator> CreateSortOperator();  // 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<MergeOperator> CreateFromStringId(      const std::string& name) {    if (name == "put") {      return CreatePutOperator();    } else if (name == "put_v1") {      return CreateDeprecatedPutOperator();    } else if ( name == "uint64add") {      return CreateUInt64AddOperator();    } else if (name == "stringappend") {      return CreateStringAppendOperator();    } else if (name == "stringappendtest") {      return CreateStringAppendTESTOperator();    } else if (name == "max") {      return CreateMaxOperator();    } else if (name == "bytesxor") {      return CreateBytesXOROperator();    } else if (name == "sortlist") {      return CreateSortOperator();    } else {      // Empty or unknown, just return nullptr      return nullptr;    }  }};}  // namespace ROCKSDB_NAMESPACE
 |