Объекты и системные функции

Каждая платформа предоставляет набор объектов и системных функций (syscall).

Объекты

Объекты упаковывают крупные блоки функциональности устройства и поставляются платформами. Поддерживаются не все объекты на каждой платформе - в этом и состоит смысл их определения именно в платформах.

В Tibbo BASIC/C объекты нельзя создавать экземплярами (размножать). Они существуют как данность. Их можно представить как «встроенные библиотеки» - неизменяемые и всегда доступные.

Многие объекты асинхронны и неблокирующие. Это значит, что если ваше приложение (работающее на виртуальной машине второго процесса) запрашивает действие, например открытие TCP-соединения, то фактически его выполняет первый процесс. Приложение не ждёт завершения, а продолжает работу во втором процессе. К моменту установления TCP-соединения приложение может успеть выполнить немало кода. О ходе установления соединения первый процесс сообщает приложению, генерируя события.

С объектами вы взаимодействуете через их события, свойства и методы.

События объектов - это то, на чём строится работа TiOS. Пока не сгенерировано событие, ничего не происходит.

При обработке события TiOS вызывает обработчик этого события, если он определён в вашем приложении.

Обработчики событий - это подпрограммы в Tibbo BASIC и функции типа void в Tibbo C. Об этом шла речь в разделе Процедуры и обработчики событий.

Свойства объектов подобны внутренним переменным объекта. Чтение и запись свойств определяют поведение объектов.

Некоторые свойства доступны только для чтения. Задать их значения нельзя. Такие свойства нужны, чтобы сообщать полезную информацию о текущем состоянии объекта.

Методы объектов - это действия, выполнить которые можно поручить объекту. Именно с помощью методов объекты заставляют делать что-то полезное.

Список доступных объектов, их свойств и методов находится на панели Browser-Project: View > Project-Browser, затем Platforms -> Objects.

События объектов перечислены отдельно, в ветке Events.

Пример кода, в котором используется взаимодействие с объектами:

sub on_sys_init()                          'using an event of a system (sys.) object
   ...
   sock.protocol=PL_SOCK_PROTOCOL_TCP      'setting up properties of a socket (sock.) object
   sock.localportlist="1000"               'the socket will be accepting incoming TCP connections on port 1000
   sock.inconmode=PL_SOCK_INCONMODE_ANY_IP_ANY_PORT
   sock.reconmode=PL_SOCK_RECONMODE_3
end sub
sub on_sock_data_arrival()                  'using an event of a socket (sock.) object
   sock.setdata(sock.getdata(sock.txfree))  'invoking 3 different methods of a sock. object on a single line!
end sub

В C вызовы методов необходимо писать со скобками, даже если аргументов нет, например так:

...
sock.connect(); //parentheses are important

Системные функции (syscall)

Системные функции - это API-функции, встроенные в платформы. Актуальный список системных функций можно посмотреть здесь.

Поддерживаются не все системные функции на каждой платформе - и снова в этом смысл их размещения в платформах.

Список доступных системных функций находится на панели Browser-Project: View > Project-Browser, затем Platforms -> Syscalls.

Системные функции можно считать процедурами (функциями) платформы.

Небольшой пример использования системных функций; он показывает работу со строковыми функциями:

string s="This is a test and this test tests some string syscalls";   //implicit "string load" syscall invocation
unsigned char x=instr(1,s,"test",3);                                  //using the instr() syscall to find the third occurrence of the word "test"
s=mid(s,x,255);                                                       //using the mid() syscall to cut out a portion of the string
...
Исходный материал Tibbo обновлён 12 сентября 2022Оригинал на docs.tibbo.com · Сообщить об ошибке