23 #ifdef MTEMPLATE_EXPORTS
24 #define MTEMPLATE_API __declspec(dllexport)
26 #define MTEMPLATE_API __declspec(dllimport)
30 #ifndef MTEMPLATE_EXPORTS
43 #define MThread uintptr_t
45 #define MThread pthread_t
48 #include "MClientLib/MProcess.h"
49 #include "MClientLib/MStringRef.h"
50 #include "MClientLib/MJob.h"
56 #pragma warning(disable: 4251)
131 std::string filename;
136 std::string getMd5Hash();
137 std::string getFilename();
139 void setUid(
int _uid);
140 void setMd5Hash(std::string _hash);
141 void setFilename(std::string _filename);
157 std::string filename;
161 std::string getMd5Hash();
162 std::string getFilename();
164 void setMd5Hash(std::string _hash);
165 void setFilename(std::string _filename);
192 static MManager* getUniqueClass(
bool allocNewClass =
true);
193 static void destroyUniqueClass(
void);
194 static MManager* allocateClass(
void);
195 static void destroyClass(
MManager*);
196 static void setIsMacBundle(
bool isMacBundle);
197 static void setPythonPath(
const std::string& _pythonPath);
198 static std::string getPythonPath();
199 static std::string getInterpreterModuleName();
200 static void initializePythonPath(
bool showPath=
false, std::string moduleName=std::string());
202 bool normalizeTemplatesDirectories(
const std::string& basePath, std::string& versionsFilePath, std::string& macroFilePath, std::string& environmentsFilePath, std::string& logParserFilePath);
203 bool loadTemplateFromFile(
const std::string& filePath,
const std::string& basePath,
const std::string& baseName,
const std::string& versionsFilePath,
const std::string& macroFilePath,
const std::string& environmentsFilePath,
const std::string& logParserFilePath,
bool moveToInvalidFolders,
bool& moved, std::string& err);
204 bool saveTemplateToFile(
const std::string& filePath,
const std::string& baseName,
const std::string& basePath,
const std::string& versionsFilePath,
const std::string& macroFilePath,
const std::string& environmentsFilePath,
const std::string& logParserFilePath,
MTemplate* templateClass);
205 bool loadVersionsFromFile(
MTemplate* t,
const std::string& filePath);
206 bool loadMacrosFromFile(
MTemplate* t,
const std::string& filePath);
207 bool loadEnvironmentsFromFile(
MTemplate* t,
const std::string& filePath);
208 bool loadParserFromFile(
MTemplate* t,
const std::string& filePath);
209 bool loadVersionsFromBuffer(
MTemplate* t,
const std::string& buffer);
210 bool loadMacrosFromBuffer(
MTemplate* t,
const std::string& buffer);
211 bool loadEnvironmentsFromBuffer(
MTemplate* t,
const std::string& buffer);
212 bool loadParserFromBuffer(
MTemplate* t,
const std::string& buffer);
213 bool saveVersionsToFile(
MTemplate* t,
const std::string& filePath);
214 bool saveMacrosToFile(
MTemplate* t,
const std::string& filePath);
215 bool saveEnvironmentsToFile(
MTemplate* t,
const std::string& filePath);
216 bool saveParserToFile(
MTemplate* t,
const std::string& filePath);
217 bool saveVersionsToBuffer(
MTemplate* t, std::string& buffer);
218 bool saveEnvironmentsToBuffer(
MTemplate* t, std::string& buffer);
219 bool saveMacrosToBuffer(
MTemplate* t, std::string& buffer);
220 bool saveParserToBuffer(
MTemplate* t, std::string& buffer);
221 std::string encodeTemplate(
MTemplate *t);
222 bool decodeTemplate(
const std::string& content,
int&
id, std::string& md5Hash, std::string& filename, std::string& templateBuffer,
223 std::string& versionsBuffer, std::string& macrosBuffer, std::string& environmentsBuffer, std::string& parserBuffer);
225 bool installTemplate(
MTemplate* templateClass);
227 MTemplate* getNextTemplate(
int previous_uid);
228 std::string resolveMappingToJob(
int template_id,
const char* key) ;
229 std::string resolveMappingToTemplate(
int template_id,
const char* key) ;
233 void acquirePython(
void);
234 void releasePython(
void);
235 std::string getPyExceptionStr();
240 void onPythonStdout(
const char* out);
241 void onPythonStderr(
const char* out);
242 void onPythonStderrFlush();
243 void onPythonStdoutFlush();
245 bool _installPyTemplate(
void* templateClass);
250 void setExpressionOut(std::string);
251 std::string getExpressionOut();
254 std::string NormalizeToken(
const std::string& in);
264 MTemplate* getTemplate(
const char* name);
265 MTemplate* getTemplateByFilename(
const char* filename);
268 void unloadTemplate(
int id);
269 int getTemplatesCount();
270 int getNextFreeUID();
273 templatesHashesMap* getInternalHashesMap();
274 void fillInternalHashesMap();
275 std::string marshallHashesMap(templatesHashesMap*);
276 void unmarshallHashesMap(templatesHashesMap*,
const char*);
277 void makeHashesMap(templatesHashesMap*);
278 void calculateHashesDiffs(templatesHashesMap* remote, templatesHashesMap* out_of_date, templatesHashesMap* invalid);
279 void deleteHashesMap(templatesHashesMap*);
281 std::string calculateIconMD5(
const std::string& iconPath);
282 iconsHashesMap* getIconsHashesMap();
283 void fillIconsHashesMap(
const std::string& iconPath);
284 std::string marshallIconsHashesMap(iconsHashesMap*);
285 void unmarshallIconsHashesMap(iconsHashesMap*,
const char*);
286 void makeIconsHashesMap(iconsHashesMap*,
const std::string& iconPath);
287 void calculateIconsHashesDiffs(iconsHashesMap* remote, iconsHashesMap* out_of_date, iconsHashesMap* invalid);
288 void deleteIconsHashesMap(iconsHashesMap*);
290 void addIcon(
const std::string& iconFile);
291 void removeIcon(
const std::string& iconFile);
294 void sortListByField(
const std::string& field, std::list<MTemplate*>* list);
296 std::set<int> getTemplatesID();
304 iconsHashesMap icons_hash_map;
305 templatesHashesMap hash_map;
307 static bool _isMacBundle;
308 static bool pythonFromHere;
309 static std::map<MThread,void*> threadStates;
310 static void* mainThreadState;
311 static MThread mainThread;
312 static void* m_PyFormatException;
313 static void* m_pMainModule;
314 static void* m_pMainDict;
315 static std::string pythonPath;
316 static std::string interpreterModuleName;
317 static std::list<MTemplate*> gc;
318 std::string expressionOut;
323 std::string callbackContext;
329 const std::string field;
330 sortFunctor(
const std::string& field) : field(field) {}
Class holding data to an unique template file.
kTemplateScanSearchSystem
kTemplatesPythonOutputRedirection
kTemplatesProcessDetection
std::map< int, MTemplate * > templatesMap
Class holding the unique templates manager class singleton.
std::map< int, MTemplateHash * > templatesHashesMap
std::set< std::string > iconsSet
std::map< std::string, MIconHash * > iconsHashesMap
Class holding a string used across the API.
Class holding a chunk data.
Class holding a job data structure.
Class holding MD5 hasing of a template icon file.
void(* redirectionFuncPtr)(const char *, const char *)
Class holding a chunk data.