Program Listing for File node_parser_registry.h

Return to documentation for file (include/converter/include/registry/node_parser_registry.h)

#ifndef MINDSPORE_LITE_INCLUDE_REGISTRY_NODE_PARSER_REGISTRY_H_
#define MINDSPORE_LITE_INCLUDE_REGISTRY_NODE_PARSER_REGISTRY_H_

#include <string>
#include <vector>
#include "include/registry/node_parser.h"
#include "include/api/dual_abi_helper.h"

namespace mindspore {
namespace registry {
class MS_API NodeParserRegistry {
 public:
  inline NodeParserRegistry(converter::FmkType fmk_type, const std::string &node_type,
                            const converter::NodeParserPtr &node_parser);

  ~NodeParserRegistry() = default;

  inline static converter::NodeParserPtr GetNodeParser(converter::FmkType fmk_type, const std::string &node_type);

 private:
  NodeParserRegistry(converter::FmkType fmk_type, const std::vector<char> &node_type,
                     const converter::NodeParserPtr &node_parser);
  static converter::NodeParserPtr GetNodeParser(converter::FmkType fmk_type, const std::vector<char> &node_type);
};

NodeParserRegistry::NodeParserRegistry(converter::FmkType fmk_type, const std::string &node_type,
                                       const converter::NodeParserPtr &node_parser)
    : NodeParserRegistry(fmk_type, StringToChar(node_type), node_parser) {}

converter::NodeParserPtr NodeParserRegistry::GetNodeParser(converter::FmkType fmk_type, const std::string &node_type) {
  return GetNodeParser(fmk_type, StringToChar(node_type));
}

#define REG_NODE_PARSER(fmk_type, node_type, node_parser) \
  static mindspore::registry::NodeParserRegistry g_##fmk_type##node_type##ParserReg(fmk_type, #node_type, node_parser);
}  // namespace registry
}  // namespace mindspore

#endif  // MINDSPORE_LITE_INCLUDE_REGISTRY_NODE_PARSER_REGISTRY_H_