Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
DreamShell 4.0 - API Doc
Автор Сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #1
DreamShell 4.0 - API Doc
Полные списки функций без описания можно посмотреть здесь: http://www.dc-swat.ru/ds/doc/
В первую очередь постараюсь сделать описание функций ядра DreamShell, ибо описание остальных библиотек есть в инете.

Напоминаю, как и в предыдущей версии DreamShell, функции С в lua доступны в соответствующих названиям модулей объектах.
Допустим все функции модуля DS, доступны в lua через префикс "DS." (без кавычек) и т. д.
(Последний раз сообщение было отредактировано 16.12.2013 в 06:56, отредактировал пользователь SWAT.)
10.03.2009 12:45
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #2
DreamShell 4.0 - API Doc
Списки
Файл list.h в SDK.

Списки используются во многих местах DreamShell, в модулях, в событиях, в приложениях, в процессах...
Поэтому я начал с них. Зная принцип их работы, можно будет понять многие связанные функции, без особого труда в дальнейшем.
Итак.


Структура элемента списка
Код:
typedef struct Item {

// Точка входа SLIST, только для внутреннего использования.
SLIST_ENTRY(Item) list;

// Имя элемента списка
char *name;

// ID элемента списка
int id;

// Тип элемента списка
int type;

// Данные элемента списка
void *data;

} Item_t;

Определение типа для списка, используется SLIST из стандартной newlib библиотеки
Код:
typedef SLIST_HEAD(ItemList, Item) Item_list_t;

Определение типа функции, освобождающей память, занимаемую данными элемента.
Код:
typedef void listFreeItemFunc(void *);


Определенные типы данных элемента, которые есть в DreamShell, вы можете добавлять свои.
Если вы используете список, где данные элемента не подходят не под один существующий тип,
то можно использовать универсальный тип LIST_ITEM_USERDATA.

Код:
#define LIST_ITEM_USERDATA 0
#define LIST_ITEM_SDL_SURFACE 1

#define LIST_ITEM_GUI_SURFACE 2
#define LIST_ITEM_GUI_FONT 3
#define LIST_ITEM_GUI_WIDGET 4

#define LIST_ITEM_MODULE 5
#define LIST_ITEM_APP 6
#define LIST_ITEM_EVENT 7
#define LIST_ITEM_THREAD 8



Создает список и возвращает указатель на него. Возвращает NULL в случае не удачи.
Код:
Item_list_t *listMake();


Удаляет все элементы списка и сам список, аргумент ifree является функцией, для освобождения памяти, которую занимают данные элемента.
В основном подходит функция free, она же используется там по умолчанию, если указать вместо аргумента ifree - NULL
Код:
void listDestroy(Item_list_t *lst, listFreeItemFunc *ifree);

Получает ID последнего элемента (существующего или уже нет) из списка.
Код:
int listGetLastId(Item_list_t *lst);

Добавляет элемент в список и возвращает ссылку на него при успехе, а при ошибке возвращает NULL.
Код:
Item_t *listAddItem(Item_list_t *lst, int type, char *name, void *data);

Удаляет элемент из списка.
Код:
void listRemoveItem(Item_list_t *lst, Item_t *i, listFreeItemFunc *ifree);


Ищет элемент в списке по его имени.
Если элемент найден, возвращается ссылка на него, если же нет, то возвращает NULL.
Код:
Item_t *listGetItemByName(Item_list_t *lst, char *name);


Ищет элемент в списке по его ID.
Если элемент найден, возвращается ссылка на него, если же нет, то возвращает NULL.
Код:
Item_t *listGetItemById(Item_list_t *lst, int id);

Возвращает первый элемент списка.
Код:
Item_t *listGetItemFirst(Item_list_t *lst);

Возвращает следующий элемент списка, находящийся после элемента переданного аргументом i.
Код:
Item_t *listGetItemNext(Item_t *i);


Примечание:
Функции listGetItemFirst и listGetItemNext служат для создания циклической обработки списков.
(Последний раз сообщение было отредактировано 31.01.2010 в 12:00, отредактировал пользователь SWAT.)
18.03.2009 13:04
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  Need help building Dreamshell Rio 10 3974 01.07.2024 09:11
Посл. сообщение: SWAT
  DreamShell dev environment setup on macOS VeraBecker 17 11513 19.09.2023 06:25
Посл. сообщение: SWAT
  Приложение для DreamShell SuperClaw 170 444257 01.05.2016 08:12
Посл. сообщение: SWAT
  DreamShell 4.0 - XML Doc SWAT 6 36972 06.04.2015 13:41
Посл. сообщение: SWAT
  DreamShell 4.0 - Module dev SWAT 8 33720 23.12.2013 13:20
Посл. сообщение: SWAT
  Dreamshell BETA3/BETA4 Direct Swap atreyu187 3 20966 09.09.2011 14:27
Посл. сообщение: SWAT
  DreamShell 4.0 - App dev SWAT 3 23585 22.06.2011 23:09
Посл. сообщение: Jirohn
  DreamShell 4.0 - Bug Report SWAT 54 178095 28.03.2011 07:24
Посл. сообщение: SWAT
  Разработка блокнота для DreamShell zaero 28 94677 31.01.2011 16:02
Посл. сообщение: SWAT
  DreamShell 4.0 - Beta Testing SWAT 76 245523 14.07.2010 20:58
Посл. сообщение: SWAT

Переход:


Пользователи просматривают эту тему: 1 Гость(ей)