Объекты и системные функции
Каждая платформа предоставляет набор объектов и системных функций (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
...