Многие начинающие программисты решают общие задачи взаимодействия с операционной системой: вывод в консоль, определение нажатия клавиш, работа с последовательными портами, сетью или файлами, и многое другое. Эти задачи решены в библиотеке, и код, основанный на 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;
};
};
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.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;
};
Класс парсера аргументов командной строки
Definition: picli.h:40
#define PIOBJECT(name)
Поместите этот макрос внутрь объявления прямого наследника PIObject, чтобы включить регистрацию событ...
Definition: piobject_macros.h:46
Периодический таймер, который выдает тики из внутреннего рабочего потока.
Definition: pitimer.h:60
virtual void tick(int delimiter)
Виртуальный метод тика. Основной цикл передает делитель 1, дополнительные делители передают свое знач...
Definition: pitimer.h:241
@ Green
Definition: piscreentypes.h:48
bool piDebug
Глобальная переменная, включающая вывод в piCout, при старте true.
Definition: piincludes.cpp:37
#define piCout
Definition: picout.h:36
Зонтичный include для публичного API PIP.
Этот код демонстрирует простую конфигурируемую программу, которая может быть запущена с консолью или без неё, с отладочным выводом или без. MainClass — центральный класс, который также может быть унаследован от PIThread с переопределением run().
У многих классов PIP есть события и обработчики, которые можно связывать между собой. Подробности — на странице PIObject (События и Обработчики событий).
Для настройки приложения из файла используйте PIConfig (см. Конфигурация из файла).
Дополнительные темы — на странице Дополнительные темы.