Нижче наведено загальновживані типи даних, системні специфікатори та константи, визначені в специфікації BTRON.
typedef char B; /* Знакове 8-бітове ціле число */ typedef short H; /* Знакове 16-бітове ціле число */ typedef int W; /* Знакове 32-бітове ціле число */ typedef unsigned char UB; /* Беззнакове 8-бітове ціле число */ typedef unsigned short UH; /* Беззнакове 16-бітове ціле число */ typedef unsigned int UW; /* Беззнакове 32-бітове ціле число */ typedef char VB; /* Невизначені 8-бітові дані */ typedef short VH; /* Невизначені 16-бітові дані */ typedef int VW; /* Невизначені 32-бітові дані */ typedef void *VP; /* Вказівник на невизначені дані (void*) */ typedef void (*FP)(); /* Загальний вказівник на функцію */
Наведені вище типи даних є спільними для специфікацій ITRON та BTRON.
Volatile: специфікатор заборони оптимізації компіляторомtypedef volatile W _W; /* Заборона оптимізації: знакове 32-бітове ціле */ typedef volatile H _H; /* Заборона оптимізації: знакове 16-бітове ціле */ typedef volatile B _B; /* Заборона оптимізації: знакове 8-бітове ціле */ typedef volatile UW _UW; /* Заборона оптимізації: беззнакове 32-бітове ціле */ typedef volatile UH _UH; /* Заборона оптимізації: беззнакове 16-бітове ціле */ typedef volatile UB _UB; /* Заборона оптимізації: беззнакове 8-бітове ціле */ typedef volatile void _void;
#define CONST const /* Заборона присвоєння значення змінній/функції */
#define LOCAL static /* Використовується лише всередині модуля(*) */
/* змінна або функція */
#define EXPORT /* Оголошення змінної або функції, доступної */
/* з будь-якого місця програми. Оголошення EXPORT */
/* пишеться лише в одному місці програми */
#define IMPORT extern /* Оголошення зовнішнього посилання на змінну */
/* або функцію. Дозволяє використовувати */
/* експортовану (EXPORT) змінну чи функцію */
#define VOID void /* Порожній тип */
Програма створюється шляхом компіляції та компонування початкового коду. Зазвичай початковий код розділено на декілька вихідних файлів. Надалі в цьому документі один такий вихідний файл називається модулем.
typedef float FLOAT; /* Дійсне число одинарної точності (32 біти) */ typedef double DOUBLE; /* Дійсне число подвійної точності (64 біти) */ typedef int BOOL; /* Логічний тип: TRUE або FALSE */ typedef W (*FUNCP)(); /* Вказівник на функцію, що повертає значення типу W */
typedef enum {
False = 0,
True = 1
} Bool; /* Логічне значення */
typedef W ID; /* Системний ідентифікатор (ID) */
typedef W MSEC; /* Час у мілісекундах */ typedef W STIME; /* Системний час (секунди з 00:00:00 GMT 01.01.1985) */
typedef UH TC; /* Код символу TRON Code (16 біт) */ #define TNULL ((TC) 0) /* Термінатор символьного рядка (Null-character) */
Формат для архітектури з порядком байтів Big-Endian:
typedef union {
W err; /* Загальний код помилки */
struct {
H eclass; /* Клас помилки */
UH detail; /* Деталізований код помилки */
} c;
} ErrCode;
Формат для архітектури з порядком байтів Little-Endian:
typedef union {
W err; /* Загальний код помилки */
struct {
UH detail; /* Деталізований код помилки */
H eclass; /* Клас помилки */
} c;
} ErrCode;
Значення, що повертаються системними викликами, мають один із наступних типів:
typedef W ERR; /* Код помилки: використовується для системних викликів, */
/* що повертають лише успіх (OK) або код помилки */
typedef W WERR; /* Повертане значення системного виклику: */
/* використовується, коли виклик повертає або код помилки, */
/* або значення (наприклад, ID, довжину, лічильник) */
У звичайних випадках використовується тип ERR, а коли потрібні розширені деталі помилки — об'єднання ErrCode.
#define OK (0) /* Успішне виконання (OK) */
#define CLR 0x0000 /* Прапорець очищення ресурсів */ #define NOCLR 0x0008 /* Прапорець збереження ресурсів (без очищення) */ #define DELEXIT 0x8000 /* Запит на видалення об'єкта при завершенні процесу */
typedef struct Size {
H h; /* Ширина (Горизонтальний розмір) */
H v; /* Висота (Вертикальний розмір) */
} SIZE;
typedef struct point {
H x; /* Горизонтальна координата */
H y; /* Вертикальна координата */
} PNT;
typedef union rect {
struct _rect {
H left; /* Ліва координата */
H top; /* Верхня координата */
H right; /* Права координата */
H bottom; /* Нижня координата */
} c;
struct {
PNT lefttop; /* Верхня ліва точка */
PNT rightbot; /* Нижня права точка */
} p;
} RECT;
#define L_FSNM 20 /* Максимальна довжина назви файлової системи у символах */
typedef struct {
TC fs_name[L_FSNM];
/* Назва файлової системи (TRON Code) */
UH f_id; /* Ідентифікатор файла (File ID) */
UH atr1; /* Атрибутні дані 1 */
UH atr2; /* Атрибутні дані 2 */
UH atr3; /* Атрибутні дані 3 */
UH atr4; /* Атрибутні дані 4 */
UH atr5; /* Атрибутні дані 5 */
} LINK;
typedef W WID; /* Ідентифікатор вікна (Window ID) */