Code Generator
Utility CodeGen.exe generates files .h and .cpp in accordance with structure of User’s DLL,
described in configuration file.
Example:
Configuration file Stack.cfg
ProjectName = Stack
Methods = Create,Delete,Count,Write,Push,Pop,Peek,Clear,Contains, AddArray,ToArray
Run CodeGen.exe Stack.cfg
CodeGen.exe generates 2 files: Stack.cpp and Stack.h
Stack.cpp
#include "pch.h"
#include "..\PPL\PPL.h"
#include "..\PPL\Component\Component.h"
#include "..\PPL\Processing\processing.h"
#include "Stack.h"
using namespace std;
namespace PPLNS
{
static Stack* STACKInstance = nullptr;
void Stack_CreateInstance(PPL* ppl)
{
STACKInstance = new Stack(ppl);
STACKInstance->AddToKeywordDictionary();
}
Stack::Stack(PPL* ppl)
{
this->ppl = ppl;
keyword_dict = new unordered_map&, string&, Composite*)>>;
}
//=======================================================
void Stack::AddToKeywordDictionary()
{
//help_dict is created in BaseClass
AddKeyword("help", BaseClass::FuncHelp);
AddKeyword("Create", FuncCreate);
AddKeyword("Delete", FuncDelete);
AddKeyword("Count", FuncCount);
AddKeyword("Write", FuncWrite);
AddKeyword("Push", FuncPush);
AddKeyword("Pop", FuncPop);
AddKeyword("Peek", FuncPeek);
AddKeyword("Clear", FuncClear);
AddKeyword("Contains", FuncContains);
AddKeyword("AddArray", FuncAddArray);
AddKeyword("ToArray", FuncToArray);
help_dict->insert({ "help", "\tStack.help([name])" });
help_dict->insert({ "Create", "\t..." });
help_dict->insert({ "Delete", "\t..." });
help_dict->insert({ "Count", "\t..." });
help_dict->insert({ "Write", "\t..." });
help_dict->insert({ "Push", "\t..." });
help_dict->insert({ "Pop", "\t..." });
help_dict->insert({ "Peek", "\t..." });
help_dict->insert({ "Clear", "\t..." });
help_dict->insert({ "Contains", "\t..." });
help_dict->insert({ "AddArray", "\t..." });
help_dict->insert({ "ToArray", "\t..." });
for (const auto pair : *keyword_dict)
{
string key = "Stack." + pair.first;
ppl->processing->keyword_dict->insert({ key, pair.second });
}
ppl->ImportList.insert({ "Stack", this });
}
//=========================================================
bool Stack::FuncCreate(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncDelete(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncCount(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncWrite(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncPush(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncPop(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncPeek(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncClear(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncContains(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncAddArray(const vector& parameters, string& result, Composite* node) { return true; }
bool Stack::FuncToArray(const vector& parameters, string& result, Composite* node) { return true; }
}
Stack.h
/***************************************************************
*This code generated by Application CodeGen.exe *
*for creation User DLL *
*Add Project Reference PPL.Lib *
*Add pch.h from Project PPL *
*Author: Oscar Kogosov, email: ok21@hotmail.com *
*You must not remove this notice from this software. *
***************************************************************/
#ifndef STACK_H
#define STACK_H
#ifdef STACK_EXPORTS
#define STACK_API __declspec(dllexport)
#else
#define STACK_API __declspec(dllimport)
#endif
namespace PPLNS
{
class STACK_API Stack : public BaseClass
{
public:
Stack(PPL* ppl);
void AddToKeywordDictionary();
bool FuncCreate(const vector& parameters, string& result, Composite* node);
bool FuncDelete(const vector& parameters, string& result, Composite* node);
bool FuncCount(const vector& parameters, string& result, Composite* node);
bool FuncWrite(const vector& parameters, string& result, Composite* node);
bool FuncPush(const vector& parameters, string& result, Composite* node);
bool FuncPop(const vector& parameters, string& result, Composite* node);
bool FuncPeek(const vector& parameters, string& result, Composite* node);
bool FuncClear(const vector& parameters, string& result, Composite* node);
bool FuncContains(const vector& parameters, string& result, Composite* node);
bool FuncAddArray(const vector& parameters, string& result, Composite* node);
bool FuncToArray(const vector& parameters, string& result, Composite* node);
};
extern "C" void STACK_API Stack_CreateInstance(PPL* ppl);
}
#endif
Add commentary in lines:
help_dict->insert({ "…", "\t..." });
Add code to each of methods in Stack.cpp –
FuncCreate,
FuncDelete,
…….
Add to project file from CodeGen\x64\Debug\pch.h
Add to Project References the project PPL.
Add created DLL-file to directory Forest.