80 lines
2.7 KiB
C
80 lines
2.7 KiB
C
|
|
/*
|
|||
|
|
* WorkflowGenerator.h
|
|||
|
|
*
|
|||
|
|
* Created on: Jul 28, 2011
|
|||
|
|
* Author: dev
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef PAI_FRAME_WORKFLOWENGINE_CWORKFLOWGENERATOR_H
|
|||
|
|
#define PAI_FRAME_WORKFLOWENGINE_CWORKFLOWGENERATOR_H
|
|||
|
|
|
|||
|
|
#include <string>
|
|||
|
|
#include "TemplateInformation.h"
|
|||
|
|
#include "ConfigureManager.h"
|
|||
|
|
#include <ctemplate/template.h>
|
|||
|
|
|
|||
|
|
using ctemplate::TemplateDictionary;
|
|||
|
|
using pai::workflow::CTemplateInformation;
|
|||
|
|
|
|||
|
|
namespace pai {
|
|||
|
|
namespace workflow {
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
*@brief 代码生成器类
|
|||
|
|
*模板文件定义了逻辑与文本分离的两种文件格式
|
|||
|
|
*此类是工作流代码生成器的核心,在此类中完成模板文件(.tpl格式)中
|
|||
|
|
*逻辑部分(缺省值)的代码实现,通过Data dictionary将文本代码与
|
|||
|
|
*逻辑代码匹配,从而生成代码文件。
|
|||
|
|
*/
|
|||
|
|
class CWorkflowGenerator {
|
|||
|
|
public:
|
|||
|
|
CWorkflowGenerator(const std::string&, const std::string&);
|
|||
|
|
CWorkflowGenerator();
|
|||
|
|
virtual ~CWorkflowGenerator();
|
|||
|
|
|
|||
|
|
/**@brief 生成工作流代码,完成模板逻辑信息的具体实现。
|
|||
|
|
* 在此函数中构建模板的Data dictionary,给出模板信息中variable与section的具体实现形式,
|
|||
|
|
* 完成模板逻辑信息的替换。
|
|||
|
|
* @param[in] info
|
|||
|
|
* @see CTemplateInformation
|
|||
|
|
*/
|
|||
|
|
void Generate(CTemplateInformation* info);
|
|||
|
|
/**
|
|||
|
|
* @brief 生成工作流代码Buff
|
|||
|
|
* 在此函数中构建模板的Data dictionary,给出模板信息中variable与section的具体实现形式,
|
|||
|
|
* 完成模板逻辑信息的替换。
|
|||
|
|
* @param[in] cTemplateInfo 填充的内容
|
|||
|
|
* @param[in/out] strOutContent 填充模板后的内容
|
|||
|
|
*/
|
|||
|
|
void GenerateBuff(CTemplateInformation* cTemplateInfo,std::string& strOutContent);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
void WriteToFile(const std::string& strOutContent);
|
|||
|
|
void GetCurrentContent(std::string& strOutContent);
|
|||
|
|
|
|||
|
|
void InitWorkflow(TemplateDictionary* parentDict);
|
|||
|
|
void FillModulesStatements(TemplateDictionary* parentDict);
|
|||
|
|
void FillModuleStatment(TemplateDictionary* parentDict,pai::workflow::SInitializationBlock& block);
|
|||
|
|
void FillStandardModuleParamBlocks(TemplateDictionary* parentDict,pai::workflow::SInitializationBlock& block);
|
|||
|
|
void FillNewBufferStatements(TemplateDictionary* parentDict);
|
|||
|
|
void FillOutputBufferStatements(TemplateDictionary* parentDict);
|
|||
|
|
void FillInputBufferStatements(TemplateDictionary* parentDict);
|
|||
|
|
|
|||
|
|
CWorkflowGenerator(const CWorkflowGenerator & generator);
|
|||
|
|
CWorkflowGenerator & operator=(const CWorkflowGenerator & generator);
|
|||
|
|
private:
|
|||
|
|
std::string cppfile;
|
|||
|
|
ctemplate::TemplateDictionary* rootDictionary;
|
|||
|
|
std::vector<SInitializationBlock> initializationBlocks;
|
|||
|
|
std::vector<SAddingNextModuleStatement> nextModuleStatements;
|
|||
|
|
std::vector<SSettingInputBufferStatement> inputBufferStatements;
|
|||
|
|
std::vector<SSettingOutputBufferStatement> outputBufferStatements;
|
|||
|
|
std::vector<SNewBufferStatement> newBufferStatements;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif
|