#ifndef XLIFF_FILE_H #define XLIFF_FILE_H #include "Values.h" #include "Configuration.h" #include <set> using namespace std; extern const XMLNamespaceMap XLIFF_NAMESPACES; extern const char*const XLIFF_XMLNS; struct Stats { string config; size_t files; size_t toBeTranslated; size_t noComments; size_t totalStrings; }; struct TransUnit { string id; StringResource source; StringResource target; StringResource altSource; StringResource altTarget; string rejectComment; }; class XLIFFFile { public: static XLIFFFile* Parse(const string& filename); static XLIFFFile* Create(const Configuration& sourceConfig, const Configuration& targetConfig, const string& currentVersion); ~XLIFFFile(); inline const Configuration& SourceConfig() const { return m_sourceConfig; } inline const Configuration& TargetConfig() const { return m_targetConfig; } inline const string& CurrentVersion() const { return m_currentVersion; } inline const string& OldVersion() const { return m_oldVersion; } set<string> Files() const; void AddStringResource(const StringResource& res); inline set<StringResource> const& GetStringResources() const { return m_strings; } bool FindStringResource(const string& filename, int version, bool source); void Filter(bool (*func)(const string&,const TransUnit&,void*), void* cookie); void Map(void (*func)(const string&,TransUnit*,void*), void* cookie); TransUnit* EditTransUnit(const string& file, const string& id); // exports this file as a n XMLNode, you own this object XMLNode* ToXMLNode() const; // writes the ValuesFile out to a string in the canonical format (i.e. writes the contents of // ToXMLNode()). string ToString() const; Stats GetStats(const string& config) const; private: struct File { int Compare(const File& that) const; inline bool operator<(const File& that) const { return Compare(that) < 0; } inline bool operator<=(const File& that) const { return Compare(that) <= 0; } inline bool operator==(const File& that) const { return Compare(that) == 0; } inline bool operator!=(const File& that) const { return Compare(that) != 0; } inline bool operator>=(const File& that) const { return Compare(that) >= 0; } inline bool operator>(const File& that) const { return Compare(that) > 0; } string filename; vector<TransUnit> transUnits; }; XLIFFFile(); StringResource* find_string_res(TransUnit& g, const StringResource& str); Configuration m_sourceConfig; Configuration m_targetConfig; string m_currentVersion; string m_oldVersion; set<StringResource> m_strings; vector<File> m_files; }; int convert_html_to_xliff(const XMLNode* original, const string& name, XMLNode* addTo, int* phID); #endif // XLIFF_FILE_H