• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef XLIFF_FILE_H
2 #define XLIFF_FILE_H
3 
4 #include "Values.h"
5 
6 #include "Configuration.h"
7 
8 #include <set>
9 
10 using namespace std;
11 
12 extern const XMLNamespaceMap XLIFF_NAMESPACES;
13 
14 extern const char*const XLIFF_XMLNS;
15 
16 struct Stats
17 {
18     string config;
19     size_t files;
20     size_t toBeTranslated;
21     size_t noComments;
22     size_t totalStrings;
23 };
24 
25 struct TransUnit {
26     string id;
27     StringResource source;
28     StringResource target;
29     StringResource altSource;
30     StringResource altTarget;
31     string rejectComment;
32 };
33 
34 class XLIFFFile
35 {
36 public:
37     static XLIFFFile* Parse(const string& filename);
38     static XLIFFFile* Create(const Configuration& sourceConfig, const Configuration& targetConfig,
39                                 const string& currentVersion);
40     ~XLIFFFile();
41 
SourceConfig()42     inline const Configuration& SourceConfig() const                { return m_sourceConfig; }
TargetConfig()43     inline const Configuration& TargetConfig() const                { return m_targetConfig; }
44 
CurrentVersion()45     inline const string& CurrentVersion() const                     { return m_currentVersion; }
OldVersion()46     inline const string& OldVersion() const                         { return m_oldVersion; }
47 
48     set<string> Files() const;
49 
50     void AddStringResource(const StringResource& res);
GetStringResources()51     inline set<StringResource> const& GetStringResources() const { return m_strings; }
52     bool FindStringResource(const string& filename, int version, bool source);
53 
54     void Filter(bool (*func)(const string&,const TransUnit&,void*), void* cookie);
55     void Map(void (*func)(const string&,TransUnit*,void*), void* cookie);
56 
57     TransUnit* EditTransUnit(const string& file, const string& id);
58 
59     // exports this file as a n XMLNode, you own this object
60     XMLNode* ToXMLNode() const;
61 
62     // writes the ValuesFile out to a string in the canonical format (i.e. writes the contents of
63     // ToXMLNode()).
64     string ToString() const;
65 
66     Stats GetStats(const string& config) const;
67 
68 private:
69     struct File {
70         int Compare(const File& that) const;
71 
72         inline bool operator<(const File& that) const { return Compare(that) < 0; }
73         inline bool operator<=(const File& that) const { return Compare(that) <= 0; }
74         inline bool operator==(const File& that) const { return Compare(that) == 0; }
75         inline bool operator!=(const File& that) const { return Compare(that) != 0; }
76         inline bool operator>=(const File& that) const { return Compare(that) >= 0; }
77         inline bool operator>(const File& that) const { return Compare(that) > 0; }
78 
79         string filename;
80         vector<TransUnit> transUnits;
81     };
82 
83     XLIFFFile();
84     StringResource* find_string_res(TransUnit& g, const StringResource& str);
85 
86     Configuration m_sourceConfig;
87     Configuration m_targetConfig;
88 
89     string m_currentVersion;
90     string m_oldVersion;
91 
92     set<StringResource> m_strings;
93     vector<File> m_files;
94 };
95 
96 int convert_html_to_xliff(const XMLNode* original, const string& name, XMLNode* addTo, int* phID);
97 
98 #endif // XLIFF_FILE_H
99