Тема: Less Toolkit
Показать сообщение отдельно
Старый 26.01.2009, 17:14   #18 (Ссылка на пост)
Lester
Гаденыш
 
Аватар для Lester
Пол:
 
Активность Longevity
2/20 16/20
Today Сообщения
0/5 sssss4648
Благодарил(а): 2,442
Благодарили 5,834 раз в 2,093 постах
Галерея: 0
Вес репутации: 78 Lester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторы
Цитата:
Сообщение от zwitter Посмотреть сообщение
месье хардкодит меню ?
как это пошло....
"если уж вы окончательно перешли на французский язык, то называйте меня не месье, а ситуайен, что значит — гражданин"

как один из вариантов - почему нет, как мне по мне - вполне наглядное и легко настраиваемое решение

Lester добавил 26.01.2009 в 18:43
Цитата:
Сообщение от Marchello Посмотреть сообщение
Теперь к пану Lesterу, огласите весь список пожалуйста.
В смысле расскажите нам с высоты птичьего полета про ваш тулкит, а не по одному классу. Например список классов с кратчайшем описанием что для чего, ну в таком ключе.. А аудитория будет выбирать наиболее интересные вещи и просить их огласки (вот как с массивом). Это конечно если вы захотите.
это будет долго, толком начал я в принципе только в начале январе - многое еще не раз поменяется, ну и реализую я сейчас самые основы( базовые классы и виджеты уже есть, сейчас сайзеры делаю ) но базовое:
  • я отказался от монолитности - есть LT.so( dll ), он содержит все не связанное с gui напрямую( сайзеры, массивы, хэш-мапы, конфиг, контейнеры и т.д. и т.п. ), вся ОС специфическая часть с помощью интерфейсов вынесена в отдельные( автоматом подгружаемые ) библиотеки, я постарался свести к минимуму то, что там должно быть, что это дает - нет кучи #ifdef для разных ОС и как дополнительный бонус - можно использовать сторонний тулкит для создания виджетов, сейчас у меня есть такое дополнительное расширение для FLTK, будут для Qt, GTK, wxWidgets( это будет мега монстроидально ), Juce, Glui, Fox и т.п., благо писать много для реализации расширения не надо - сейчас расширение для FLTK статично с ним слинкованное весит 260Кб, т.е. всего-лишь указав параметр при инициализации можно получить гуй с использованием лишь winapi, cocoa, xlib, гуй для гнома, гуй для КДЕ и т.п., т.е. такой который впишется в любую ОС и DE, без всякого усилия от разработчика
  • упор сделан на минимизации труда при использовании тулкита, т.е. есть набор интефейсов, например рассмотрим I_TreeItem, реализовав который( пронаследовавшись от I_TreeItemImpl, в котором реализована вся логика ) - самому писать практически ничего не надо, можно просто указать виджетам( Tree, ColumnBrowser, List И т.п. ) его в качестве аргумента, и:
  1. мы автоматом покажем всю структуру
  2. мы не будем думать о синхронизации, можно иметь свой объект Table, наследованный от TreeItemImpl, если мы его удалим - он автоматом удалится везде из гуя, мы его создадим, указав в конструкторе "папу" - он автоматом добавится в гуй, точно также при изменении его свойств( иконка, подпись )
продолжать можно долго, я наверное все-таки буду писать тут последовательно - как и писал

Lester добавил 26.01.2009 в 18:47
Цитата:
Сообщение от zwitter Посмотреть сообщение
ну язвлю, да.
мне не нравится стиль автора.
сделал класс меню ?
ну засунь ты все меню в xml, там пропиши все пункты, иконки, action'ы, hot-key'и.
вгрузи его 1 вызовом и будет щастье.

вот тогда я скажу - да, это удобная штука, с радостью бы использовал
сомневаюсь, что это будет:
1. удобнее
2. читабельнее

но такое будет реализовано - причем не только для меню, но и для всего gui, ну и когда через пару месяцев будет рабочий вариант( с устоявшимися классами и интерфейсами ) я с удовольствием приму любые наработки( ес-но с сохранением всех авторских прав - и добавлением их автора в список разработчиков )

Lester добавил 26.01.2009 в 19:03
Цитата:
Сообщение от Marchello Посмотреть сообщение
Нужно где-то тулить DECLARE_ARRAY, потом DEFINE_ARRAY, а потом и саму переменную объявить.
Почему бы просто не написать шаблонный класс сразу? (собственно как vector<>).
Тогда пишем CustomArray<MyType> A; и готово. Может я не усмотрел где-то глубинный смысл задумки, но добавлять макросы в проект для каждого нового типа - реально неудобно.
тоже вариант - сделаю так отдельно

Цитата:
Сообщение от Marchello Посмотреть сообщение
Ладно.., дальше:
Код:
 T& operator[]( size_t index );
 T   operator[]( size_t index ) const;
Почему второй метод (константный) возвращает это, а не const T& ?
Ведь с константной ссылкой мы ничего не поменяем в классе name и в T - и это не нарушит иммутабельность. Вот этот момент хотелось бы подробней знать.
да - зевнул, уже исправил, спасибо

Цитата:
Сообщение от Marchello Посмотреть сообщение
Потом еще момент, есть конструктор который принимает указатель и кол-во элементов и создает массив.
Так вот ИМХО не помешало бы и такой метод иметь.
Например я создал массив (твой), поработал с ним, удалил все с него,
а потом хочу туда засунуть уже готовый массив (типа int a[64]) -
прийдется уже по одному делать Add(). То есть, можно добавить метод типа:
Код:
void FillFrom(size_t count, T* value );
ну это не критично конечно.
добавил - Import называется

Цитата:
Сообщение от Marchello Посмотреть сообщение
И последнее, метод Export, строка:
Код:
for( size_t i = 0 ; i < count ; ++i ) 
    res[ i ] = (T) ( mVector[ i ] );
Опять таки, почему (Т) ?
Ведь даже оператор присваивания принимает const name&, а так выходит что создается временный объект - он попадает в оператор присваивания, а потом удаляется.
И тут же момент, обычно Срр-шники юзают new/delete, а тут память выделяется через malloc, если этого не знать а потом вызвать
указателю delete [] - сам знаешь что будет. Но хотя если там написать
res = new T[count] - повызываются лишний раз конструкторы, тоже не хорошо.
исправил, надо будет мне пройтись по уже написанному - такие моменты найти и поисправлять, большое спасибо за критику и помощь

Lester добавил 26.01.2009 в 19:54
в том же Array в конструкторе name( size_t count, ... ) исправил на:

Код:
for( size_t i = 0 ; i < count ; ++i ) 
    Add( va_arg( vl, T ) );
было лишнее копирование
__________________
- Слава Україні! - закричали они, вместо приветствия.
- Что это за фашизм?! - возмутился журналист Гундырев. - Откуда у них столько ненависти к русским?

Последний раз редактировалось Lester, 26.01.2009 в 18:55. Причина: Добавлено сообщение
Lester вне форума  
Ответить с цитированием