18 #ifndef ROOT_TModuleGenerator
19 #define ROOT_TModuleGenerator
29 class CompilerInstance;
36 class TModuleGenerator {
38 enum ESourceFileKind {
45 TModuleGenerator(clang::CompilerInstance *CI,
47 const std::string &shLibFileName,
55 void ParseArgs(
const std::vector<std::string> &args);
57 const std::string &GetDictionaryName()
const {
58 return fDictionaryName;
61 const std::string &GetDemangledDictionaryName()
const {
62 return fDemangledDictionaryName;
65 const std::string &GetModuleFileName()
const {
66 return fModuleFileName;
68 const std::string &GetModuleDirName()
const {
69 return fModuleDirName;
72 int GetErrorCount()
const {
76 const std::string &GetUmbrellaName()
const {
79 const std::string &GetContentName()
const {
83 const std::vector<std::string> &GetHeaders()
const {
87 const std::vector<std::string> &GetIncludePaths()
const {
91 std::ostream &WritePPDefines(std::ostream &out)
const;
92 std::ostream &WritePPUndefines(std::ostream &out)
const;
94 void WriteRegistrationSource(std::ostream &out,
const std::string &fwdDeclnArgsToKeepString,
95 const std::string &headersClassesMapString,
const std::string &fwdDeclsString,
96 const std::string &extraIncludes,
bool hasCxxModule)
const;
97 void WriteContentHeader(std::ostream &out)
const;
98 void WriteUmbrellaHeader(std::ostream &out)
const;
101 void WriteRegistrationSourceImpl(std::ostream& out,
102 const std::string &dictName,
103 const std::string &demangledDictName,
104 const std::vector<std::string> &headerArray,
105 const std::vector<std::string> &includePathArray,
106 const std::string &fwdDeclStringRAW,
107 const std::string &fwdDeclnArgsToKeepString,
108 const std::string &payloadCodeWrapped,
109 const std::string &headersClassesMapString,
110 const std::string &extraIncludes,
111 bool hasCxxModule)
const;
113 void ConvertToCppString(std::string &text)
const;
115 std::ostream &WritePPIncludes(std::ostream &out)
const;
117 std::ostream &WritePPCode(std::ostream &out)
const {
121 WritePPUndefines(out);
122 return WritePPIncludes(out);
125 std::ostream &WriteHeaderArray(std::ostream &out)
const {
127 return WriteStringVec(fHeaders, out);
129 std::ostream &WriteIncludePathArray(std::ostream &out)
const {
131 return WriteStringVec(fCompI, out);
133 std::ostream &WriteDefinesArray(std::ostream &out)
const {
135 return WriteStringPairVec(fCompD, out);
137 std::ostream &WriteUndefinesArray(std::ostream &out)
const {
139 return WriteStringVec(fCompU, out);
142 bool FindHeader(
const std::string& hdrName, std::string& hdrFullPath)
const;
144 typedef std::vector<std::pair<std::string, std::string> > StringPairVec_t;
146 ESourceFileKind GetSourceFileKind(
const char *filename)
const;
147 std::ostream &WriteStringVec(
const std::vector<std::string> &vec,
148 std::ostream &out)
const;
149 std::ostream &WriteStringPairVec(
const StringPairVec_t &vecP,
150 std::ostream &out)
const;
152 clang::CompilerInstance *fCI;
155 bool fInlineInputHeaders;
157 std::string fDictionaryName;
158 std::string fDemangledDictionaryName;
159 std::string fModuleFileName;
160 std::string fModuleDirName;
161 std::string fUmbrellaName;
162 std::string fContentName;
164 std::vector<std::string> fHeaders;
165 std::string fLinkDefFile;
166 std::vector<std::string> fCompI;
168 StringPairVec_t fCompD;
169 std::vector<std::string> fCompU;
170 mutable int fErrorCount;
175 #endif // ROOT_TModuleGenerator