Изменения касаются аргументов натив-функций.
В связи с замечанием
Mistrick было решено переписать
спецификацию и API под поддерживаемый стиль нативов.
Главные изменения по оптимизации и рефакторингу кода:
- был написан автоматический
парсер структур с возможностью задания приоритетов;
- расставлены комментарии, где они могут понадобиться.
Главные изменения:
- появилась поддержка поточного исполнения всех запросов.
- есть возможность работать с целым набором данных (организовано через ArrayCell).
- передача аргументов теперь работает по типу ключ-значение
Например, есть структура user[UserStruct], можно передать как всю структуру целиком, так и её часть:
1) auth_adduser(UserStruct, user);
2) auth_adduser(us_nickname, "cstyler", us_password, "nekto123");
3) auth_adduser(UserStruct, user, us_nickname, "wopox"); Т.е. их можно даже комбинировать.
Чем правее находится аргумент, тем больше его приоритет (он переписывает предыдущее поле такого же типа).
В связи с созданием запросов в отдельном потоке, в API теперь добавлены параметры для обратного вызова.
У нативов они помечены как @callback. Чтобы использовать потоковый запрос, нужно всего-лишь добавить название функции в конец списка аргументов. Например:
1) auth_getuser(us_user_id, 5, "your_good_callback"); - в вашу public your_goot_callback(Array:h_array) придёт указатель на массив с данными.
2) auth_adduser(UserStruct, user, ""); - выполнить потоковый запрос без обратного вызова.
Если вы не укажете callback, то будет произведено последовательное выполнение запроса, а результат будет возвращен напрямую, например:
new Array:h_array = auth_getuser(us_steam, "STEAM:1:0:20102030");
Для удобного разбора результатов можно использовать сток
array_read_user(Array:handle, dest[UserRecord], index=-1);
Метод возвращает Bool:more_results - если в массиве есть ещё значения, то можно вызвать этот метод повторно и он автоматически прочтет следующую запись (полезно для чтения в цикле).
Для чтения конкретного индекса стоит задать переменную index.