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

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

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

Сообщений: 3868
Зарегистрирован: 04.01.2005
Рейтинг: 14
Сказал спасибо: 0
Поблагодарили 23 раз(а) в 20 сообщ.
Сообщение: #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
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 3868
Зарегистрирован: 04.01.2005
Рейтинг: 14
Сказал спасибо: 0
Поблагодарили 23 раз(а) в 20 сообщ.
Сообщение: #3
DreamShell 4.0 - API Doc
up

[Изображение: podpis.gif]
18.03.2009 14:43
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 253
Зарегистрирован: 04.04.2009
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #4
RE: DreamShell 4.0 - API Doc
Предлагаю создать список на классе. Я когда-то уже писал реализацию могу выложить если надо.
27.03.2011 19:57
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 3868
Зарегистрирован: 04.01.2005
Рейтинг: 14
Сказал спасибо: 0
Поблагодарили 23 раз(а) в 20 сообщ.
Сообщение: #5
RE: DreamShell 4.0 - API Doc
Я не буду мешать ядро системы с С++, оно должно быть на все на чистом Си. К тому же я больше чем уверен, то что ты хочешь предложить, даже не скомпилится под дрим.

[Изображение: podpis.gif]
(Последний раз сообщение было отредактировано 28.03.2011 в 07:22, отредактировал пользователь SWAT.)
28.03.2011 07:22
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 253
Зарегистрирован: 04.04.2009
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #6
RE: DreamShell 4.0 - API Doc
Эвона как? А откуда ты знаешь, наперед, скомпилится или нет?
(Последний раз сообщение было отредактировано 28.03.2011 в 20:23, отредактировал пользователь Rio.)
28.03.2011 20:22
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 3868
Зарегистрирован: 04.01.2005
Рейтинг: 14
Сказал спасибо: 0
Поблагодарили 23 раз(а) в 20 сообщ.
Сообщение: #7
RE: DreamShell 4.0 - API Doc
Покажи свой класс я тебе скажу почему.

[Изображение: podpis.gif]
29.03.2011 06:17
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 253
Зарегистрирован: 04.04.2009
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #8
RE: DreamShell 4.0 - API Doc
template <class T>;
class List{
List* prev;
List* next;
T data;

public:
List();
List(T data);
~List();
void AddNodeToFront(T data);
T DelNodeFromFront();

}

void List::AddNodeToFront(T const &data)
{
List *newNode = new List(data);
newNode->prev = this;
newNode->next = NULL;
newNode->data = data;
}

T List::DelNodeFromFront()
{
//ищем полседний элемент спереди
..
//удаляем
delete[] Node;
}
23.05.2011 09:48
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 3868
Зарегистрирован: 04.01.2005
Рейтинг: 14
Сказал спасибо: 0
Поблагодарили 23 раз(а) в 20 сообщ.
Сообщение: #9
RE: DreamShell 4.0 - API Doc
Ну пока ничего страшного не вижу.

[Изображение: podpis.gif]
23.05.2011 15:01
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 253
Зарегистрирован: 04.04.2009
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #10
RE: DreamShell 4.0 - API Doc
Ну а почему он должен не работать?
23.05.2011 18:41
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 3868
Зарегистрирован: 04.01.2005
Рейтинг: 14
Сказал спасибо: 0
Поблагодарили 23 раз(а) в 20 сообщ.
Сообщение: #11
RE: DreamShell 4.0 - API Doc
Не должен а может Smile
Ну пока ты не использовал того чего нет в С++ для дрима.
Ладно, эта тема не для этого.

[Изображение: podpis.gif]
(Последний раз сообщение было отредактировано 24.05.2011 в 14:25, отредактировал пользователь SWAT.)
24.05.2011 14:24
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 253
Зарегистрирован: 04.04.2009
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #12
RE: DreamShell 4.0 - API Doc
Где тогда можно задать соотв. вопрос?
24.05.2011 18:29
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 3868
Зарегистрирован: 04.01.2005
Рейтинг: 14
Сказал спасибо: 0
Поблагодарили 23 раз(а) в 20 сообщ.
Сообщение: #13
RE: DreamShell 4.0 - API Doc
В разделе программирование. Эта тема только для постинга доки.

[Изображение: podpis.gif]
25.05.2011 06:55
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  Dreamshell BETA3/BETA4 Direct Swap atreyu187 3 1559 09.09.2011 14:27
Посл. сообщение: SWAT
  DreamShell 4.0 - App dev SWAT 4 3539 22.06.2011 23:09
Посл. сообщение: Jirohn
  DreamShell 4.0 - Module dev SWAT 3 1459 19.06.2011 14:59
Посл. сообщение: Jirohn
  DreamShell 4.0 - Bug Report SWAT 54 11768 28.03.2011 07:24
Посл. сообщение: SWAT
  Разработка блокнота для DreamShell zaero 28 11923 31.01.2011 16:02
Посл. сообщение: SWAT
  DreamShell 4.0 - XML Doc SWAT 4 2623 18.08.2010 14:03
Посл. сообщение: SWAT
  DreamShell 4.0 - Beta Testing SWAT 76 15276 14.07.2010 20:58
Посл. сообщение: SWAT
  DreamShell 4.0 SWAT 43 13133 05.02.2010 07:10
Посл. сообщение: SWAT
  Модули DreamShell (.klf) SWAT 1 2331 05.03.2007 17:40
Посл. сообщение: SWAT
  DreamShell lua source code SWAT 30 18523 29.01.2007 20:58
Посл. сообщение: SWAT

Переход:


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