#ifndef DRACO_IO_FILE_READER_FACTORY_H_ #define DRACO_IO_FILE_READER_FACTORY_H_ #include #include #include "draco/io/file_reader_interface.h" namespace draco { class FileReaderFactory { public: using OpenFunction = std::unique_ptr (*)(const std::string &file_name); FileReaderFactory() = delete; FileReaderFactory(const FileReaderFactory &) = delete; FileReaderFactory &operator=(const FileReaderFactory &) = delete; ~FileReaderFactory() = default; // Registers the OpenFunction for a FileReaderInterface and returns true when // registration succeeds. static bool RegisterReader(OpenFunction open_function); // Passes |file_name| to each OpenFunction until one succeeds. Returns nullptr // when no reader is found for |file_name|. Otherwise a FileReaderInterface is // returned. static std::unique_ptr OpenReader( const std::string &file_name); }; } // namespace draco #endif // DRACO_IO_FILE_READER_FACTORY_H_