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.