// file : libxsd-frontend/parser.hxx // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #ifndef LIBXSD_FRONTEND_PARSER_HXX #define LIBXSD_FRONTEND_PARSER_HXX #include #include // std::unique_ptr #include #include #include namespace XSDFrontend { struct InvalidSchema {}; class LIBXSD_FRONTEND_SYMEXPORT LocationTranslator { public: virtual ~LocationTranslator (); virtual NarrowString translate (NarrowString const& location) = 0; }; // Set of disabled warning IDs. Special ID "all" disables all // warnings. // typedef std::set WarningSet; class LIBXSD_FRONTEND_SYMEXPORT Parser { public: ~Parser (); Parser (bool proper_restriction, bool multiple_imports, bool full_schema_check); Parser (bool proper_restriction, bool multiple_imports, bool full_schema_check, LocationTranslator&, const WarningSet& disabled); private: Parser (Parser const&); Parser& operator= (Parser const&); public: // Parse a schema file. Throws InvalidSchema in case of a failure. // std::unique_ptr parse (SemanticGraph::Path const&); // Parse a number of schema files all into one semantic graph. // Each schema file is imported from an unnamed root translation // unit. Throws InvalidSchema in case of a failure. // std::unique_ptr parse (SemanticGraph::Paths const&); // Returns a schema graph that corresponds to the XML Schema // namespace with built-in type definitions. The path is fake // and is only used as a lable. // std::unique_ptr xml_schema (SemanticGraph::Path const&); private: class Impl; std::unique_ptr impl_; }; } #endif // LIBXSD_FRONTEND_PARSER_HXX