Урок 1: Пишем "Hello, World!"
Итак, пришло время познакомиться с C++ API шаблонизатора. Эта статья - первая в цикле "Hello, World" и в ней вы узнаете о том, как пользоваться виртуальной машиной CTPP2.
Нам потребуются следующие классы: OutputCollector или его аналог (FileOutputCollector) для вывода результатов работы, SyscallFactory - фабрика объектов, в которой хранятся функции, загрузчик образа файла VMFileLoader и VM - класс виртуальной машины.
Для упрощения, все необходимые файлы заголовков собраны в один, CTPP2.hpp, его и подключаем.
#include <CTPP2.hpp>
Далее - все просто:
FileOutputCollector oOutputCollector(stdout);
SyscallFactory oSyscallFactory(100);
STDLibInitializer::InitLibrary(oSyscallFactory);
VMFileLoader oLoader(argv[1]);
const VMMemoryCore * pVMMemoryCore = oLoader.GetCore();
CDT oHash;
oHash["hello"] = "Hello, World!";
VM oVM(oSyscallFactory);
oVM.Init(oOutputCollector, *pVMMemoryCore);
UINT_32 iIP = 0;
oVM.Run(*pVMMemoryCore, iIP, oHash);
Заходим в каталог examples/extra_fn дистрибутива CTPP2 и компилируем файл:
g++ -I /usr/local/include/ctpp2 -L /usr/local/lib -lctpp2 hello.cpp -o hello
Компилируем шаблон:
ctpp2c hello.tmpl hello.ct2
Проверяем работу:
./hello hello.ct2
Hello, World!
|