// file : xsd-frontend/transformations/schema-per-type.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #ifndef XSD_FRONTEND_TRANSFORMATIONS_SCHEMA_PER_TYPE_HXX #define XSD_FRONTEND_TRANSFORMATIONS_SCHEMA_PER_TYPE_HXX #include #include #include // Path #include namespace XSDFrontend { namespace Transformations { using namespace Cult::Types; class TypeSchemaTranslator { public: virtual ~TypeSchemaTranslator (); virtual WideString translate (WideString const& ns, WideString const& name) = 0; }; // This transformation restructures the semantic graph to have // each type definition in a seperate schema file. // class SchemaPerType { public: struct Failed {}; // If a type of an element or attribute has a context entry // with the by_value_key key and it is true, then the schema // for this type is included "strongly". // SchemaPerType (TypeSchemaTranslator&, Char const* by_value_key = 0); Cult::Containers::Vector transform (SemanticGraph::Schema&); private: Char const* by_value_key_; TypeSchemaTranslator& trans_; }; } } #endif // XSD_FRONTEND_TRANSFORMATIONS_SCHEMA_PER_TYPE_HXX