<ctpp/> home .:. download .:. documentation .:. faq  
o Home
    Download!
    Installation

o Help
    What is the CTPP library?
    How it works?
    Online documentation
    FAQ

o In action
    Projects
    First steps
    HOWTOs..
    Development

o In deveopment
    Schedule
    Credits




Урок 1: Пишем "Hello, World!"

Итак, пришло время познакомиться с C++ API шаблонизатора. Эта статья - первая в цикле "Hello, World" и в ней вы узнаете о том, как пользоваться виртуальной машиной CTPP2.
Нам потребуются следующие классы: OutputCollector или его аналог (FileOutputCollector) для вывода результатов работы, SyscallFactory - фабрика объектов, в которой хранятся функции, загрузчик образа файла VMFileLoader и VM - класс виртуальной машины.

Для упрощения, все необходимые файлы заголовков собраны в один, CTPP2.hpp, его и подключаем.


#include <CTPP2.hpp>


Далее - все просто:


// 1. Создаем коллектор результатов. Вывод направляем в STDOUT
FileOutputCollector oOutputCollector(stdout);

// 2. Создаем фабрику объектов
SyscallFactory oSyscallFactory(100);
// .... и загружаем стандартную библиотеку
STDLibInitializer::InitLibrary(oSyscallFactory);

// 3. Загружаем файл с диска
VMFileLoader oLoader(argv[1]);
// Получаем образ программы 
const VMMemoryCore * pVMMemoryCore = oLoader.GetCore();

// 4. Заполняем данные, которые хотим вывести
CDT oHash;
oHash["hello"] = "Hello, World!";

// 5. Создаем виртуальную машину
VM oVM(oSyscallFactory);

// 6. Инициализируем машину для запуска программы
oVM.Init(oOutputCollector, *pVMMemoryCore);

// 7. Запускаем программу
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!


Copyright © 2003 - 2008 CTPP Dev Team.