Многие начинающие программисты решают общие задачи взаимодействия с операционной системой: вывод в консоль, определение нажатия клавиш, работа с последовательными портами, сетью или файлами, и многое другое. Эти задачи решены в библиотеке, и код, основанный на PIP будет компилироваться и работать одинаково на многих системах: Windows, любой Linux, Red Hat, FreeBSD, MacOS X и QNX. Типовое приложение на PIP выглядит примерно так:
void key_event(char key, void * );
PIConsole console(false, key_event);
int i = 2, j = 3;
void key_event(char key, void * ) {
switch (key) {
case '-':
i--;
break;
case '+':
i++;
break;
case '(':
j--;
break;
case ')':
j++;
break;
};
};
PIOBJECT(MainClass)
public:
MainClass() {}
protected:
void tick(int delimiter) {
}
};
MainClass main_class;
int main(int argc, char * argv[]) {
console.enableExitCapture();
cli.addArgument("console");
cli.addArgument("debug");
piDebug = cli.hasArgument(
"debug");
console.addTab("first tab", '1');
console.addString("PIP console", 1, PIConsole::Bold);
console.addVariable("int var (i)", &i, 1);
console.addVariable("int green var (j)", &j, 1, PIConsole::Green);
console.addString("'-' - i--", 2);
console.addString("'+' - i++", 2);
console.addString("'(' - j--", 2);
console.addString("')' - j++", 2);
console.addTab("second tab", '2');
console.addString("col 1", 1);
console.addString("col 2", 2);
console.addString("col 3", 3);
console.setTab("first tab");
if (cli.hasArgument("console"))
console.start();
main_class.start(25.);
console.waitForFinish();
return 0;
};
Класс парсера аргументов командной строки
Определения picli.h:40
Периодический таймер, который выдает тики из внутреннего рабочего потока.
Определения pitimer.h:60
bool piDebug
Глобальная переменная, включающая вывод в piCout, при старте true.
Определения piincludes.cpp:37
#define piCout
Макрос для условного (piDebug) вывода в PICout(StdOut).
Определения picout.h:36
Зонтичный include для публичного API PIP.
Этот код демонстрирует простую конфигурируемую программу, которая может быть запущена с консолью или без неё, с отладочным выводом или без. MainClass — центральный класс, который также может быть унаследован от PIThread с переопределением run().
У многих классов PIP есть события и обработчики, которые можно связывать между собой. Подробности — на странице PIObject (События и Обработчики событий).
Для настройки приложения из файла используйте PIConfig (см. Конфигурация из файла).
Дополнительные темы — на странице Дополнительные темы.