#ifndef FLATBUFFERS_BFBS_NAMER #define FLATBUFFERS_BFBS_NAMER #include "flatbuffers/reflection.h" #include "namer.h" namespace flatbuffers { // Provides Namer capabilities to types defined in the flatbuffers reflection. class BfbsNamer : public Namer { public: explicit BfbsNamer(Config config, std::set keywords) : Namer(config, std::move(keywords)) {} using Namer::Constant; using Namer::Denamespace; using Namer::Directories; using Namer::Field; using Namer::File; using Namer::Function; using Namer::Method; using Namer::Namespace; using Namer::NamespacedType; using Namer::ObjectType; using Namer::Type; using Namer::Variable; using Namer::Variant; template std::string Denamespace(T t, std::string &namespace_prefix, const char delimiter = '.') const { return Namer::Denamespace(t->name()->c_str(), namespace_prefix, delimiter); } template std::string Denamespace(T t, const char delimiter = '.') const { return Namer::Denamespace(t->name()->c_str(), delimiter); } virtual std::string Field(const ::reflection::Field &f) const { return Field(f.name()->str()); } virtual std::string Variable(const ::reflection::Field &f) const { return Variable(f.name()->str()); } }; } // namespace flatbuffers #endif // FLATBUFFERS_BFBS_NAMER