Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт ноя 13, 2018 4:19 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 53 сообщения ]  На страницу 1 2 3 4 След.
Автор Сообщение
 Заголовок сообщения: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Чт дек 27, 2007 3:31 pm 
Не в сети

Зарегистрирован: Чт дек 21, 2006 10:51 am
Сообщения: 88
Короче я тоже начал делать нечто подобное основанное на libc пока окрестил kfc (Kolibri Foundation Classes). Буду выкладывать код по мере написания. Пока вот есть файл для поддержки цветов для GUI. Можно юзать уже сейчас.

Сейчас работаю над классом Window думаю реализовать обработчики событий через функторы и биндеры (связыватели и адаптеры).

Собственно вот colors.hpp на #define _32_BIT_OS 1 #define _64_BIT_OS 0 пока что необращайте внимания.


Вложения:
color.hpp [2.67 КБ]
268 скачиваний

_________________
Если бы строители строили здания, так же как программисты пишут программы первый же залетевший дятел разрушил бы цивилизацию.
Вернуться к началу
 Заголовок сообщения: Re: С++ библиотека
СообщениеДобавлено: Чт дек 27, 2007 9:03 pm 
Не в сети

Зарегистрирован: Чт дек 21, 2006 10:51 am
Сообщения: 88
Вот что я собственно навоял, пока что перво-черная версия CWindow и вообще не работает в Kolibri.
Но реализована модель событий. Cобствено если убрать заглушку libc функций
пожалуй это будет работать (но пока не ручаюсь).
(Почему-то под виндами и MinGW libc наглухо отказался собиратся)

Инструкции для тех кто хочет подключится к проекту:

Инструкции по запуску всего этого. Привожу пока только пример который еще в KOS не работает (скоро поправлю).
1. Необходимый софт - установленная OS Window либо Linux.
2. libc - см. суда http://diamondz.land.ru/hll/hll.htm#gcc
3. boost (если у вас Linux то с большой долей вероятности boost у вас уже есть установленный и лежит в папке
/usr/include/boost). В случае с Windows его нужно скачать с http://www.boost.org (11MB) после чего
разархивировать в какую нибудь папку. Т.к я не использую библиотеки в cpp файлах то билдить его не нужно.
4.Code::Blocks (http://www.codeblocks.org 2MB) т.к. пока что нет make файлов (ну и вообще рефактор потребуется в дальнейшем). Для большинства распространенных Linux есть пакет и есть версия для Windows. Если вы устанавливаете версию для Windows то советую качать сразу версию с встроенным mingw.
5. Компилятор gcc (хотя в пирнципе пойдет любой С++ копилятор поддерживающий стандарт) в Linux - gcc 3.3 or hi
в Windows сойдет MinGW.
Собственно и все.

После установки откройте проект - console.cbp из приатаченного к посту зипа.

1.Идите суда - Buid->Compiller options (в самом низу)
2. В открывшемся окне - переходите на вкладку Directories
3. Жмете add и прописываете путь к boost
В винде напирмер у меня это E:\boost\boost_1_34_1
В Linux обычно /usr/include/boost
4. Для libc дейсвия аналогичны boost (но пока вместо libc функций заглушки).

Все можно компилировать и запускать (думаю как разберетесь).

Собственно пример показывет как пользоватся CWindow классом. Для того что-бы обработать сообщение от операционной системы нужно создать функцию - обработчик. Она дожна иметь сигнатуру
void <function name>(void);

После чего прибиндить ее к функтору с помощью boost::bind см. main.cpp
Вначале следует прибиндить функцию которая инициализирует окно
window.setInitialization(boost::bind(oninit));
Это может быть функция - метод класса или просто функция как в demo (см. документацию по boost:bind а лучше сразу суда - http://www.boost.org/libs/bind/bind.html#with_functions для начала).
Если вы вызовете handleEvent() до того как присоединили эту функцию - выбросится исключение.
Функция обязательно должна окончится вызовом из libc __menuet__window_redraw(2) если это будет рабочее
ПО для колибри. (Потом подумаю как исправить).

Заглушки висят в файле window.cpp где __menuet__wait_for_event() выдает что произошло событие EVENT_KEY т.е. нажата клавиша клавиатуры. И функции сигнализируют о том что произошла обработка события банальным методом
"cout<<". Если запустить получнный exe/a можно увидеть что событийная модель (а это патерн Command) работает.

Для тех кто будет писать "типа зачем выкладываеш то что в KOS не работает". Это собственно первая итерация разработки цель которой определить архитектуру и принцип работы библиотеки. Я не хочу чтоб потом все строилось на моем ИМХО. И возможно часть кода пока не правильная.

P.S. libc к сожалению - полная ж()па, ей можно пользоватся но это ИМХО маразм (покрайней мере те сорцы которые есть у меня) .Функции практически никак не документированы :(. Посему я попросил у кого есть libc нормальном виде скинуть куда нить и дать линк.


Вложения:
KFC.zip [7.31 КБ]
219 скачиваний

_________________
Если бы строители строили здания, так же как программисты пишут программы первый же залетевший дятел разрушил бы цивилизацию.
Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб дек 29, 2007 12:06 pm 
Про libc - согласен, но и в исправленном виде - это маразм

Надо делать что-нибудь объектно-ориентированное. С для данных целей не пригоден


Вернуться к началу
   
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб дек 29, 2007 7:05 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 4:16 pm
Сообщения: 426
libc обязательно нужен для развития KOS. Так же как и большинство стандартов POSIX. Нужны не как состовляющие, а как довесок, хотя вы можете относиться к ним и как к основополагающим. Это реальность, с которой нужно мириться. Это все ИМХО и спорить я не буду :-). То что делает SHREDER, тоже очень нужно. К названию претензий нет, собственно мне безразлично название, если это будет отлично ездить.

..bw


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Чт янв 03, 2008 11:05 pm 
Не в сети

Зарегистрирован: Вс окт 14, 2007 12:23 pm
Сообщения: 15
2shamaz.mazum
>Верно мыслите. Но не такой. Индусы делали.
нишариш


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 8:59 am 
Не в сети

Зарегистрирован: Пт янв 04, 2008 11:58 pm
Сообщения: 19
2kooser

shamaz.mazum шарит. Мне тоже не понравилось. Хотя могу исправить. Дело в том, что некоторые функции делают вообще НЕ ТО, что должны, судя по документации. Так что никакого POSIX


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 11:03 am 
Не в сети

Зарегистрирован: Вс окт 14, 2007 12:23 pm
Сообщения: 15
Все косяки libc исправятся после рекомпиляции программ с новой версией. а без оной этих программ не будет вобще.

Вы не познали Дзен колибри %)


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 11:19 am 
Не в сети

Зарегистрирован: Пт янв 04, 2008 11:58 pm
Сообщения: 19
Ну да. Не проникся.

kooser писал(а):
Все косяки libc исправятся после рекомпиляции программ с новой версией

Ну я на это надеюсь. А можно эту самую новую версию libc? Для ознакомления


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 1:57 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Это вы про какую новую версию libC говорите ?
Про ту, что описана в конце этой темы viewtopic.php?f=2&t=929&start=0 ?
Это та самая libC, что и на сайте diamond + несколько новых функций.
Есть еще и libCk (libC for KolibriOS) она пишется с нуля и пока что значительно уступает menuetlibc
по количеству функций.

P.S.

Чтобы не вводить в заблуждение, скажу, что обе libC для KolibriOS. Просто есть несколько причин,
почему пишется libCk, а не дополняется menuetlibc.

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 3:38 pm 
Не в сети

Зарегистрирован: Пт янв 04, 2008 11:58 pm
Сообщения: 19
Ну тогда, там багов дофига. Косорукие писали. Хотите пример идиотской функции?


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 3:52 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Melian

Насколько я понимаю, menuetlibc основана на libC для DOS из проекта DJGPP (порт GCC под DOS).

Если ты можеш что-то сделать лучше - делай. У нас всё на таком принципе основано. Можеш сделать лучше - делай (при этом не опплёвывая труд других людей).

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 4:04 pm 
Не в сети

Зарегистрирован: Пт янв 04, 2008 11:58 pm
Сообщения: 19
andrew_programmer писал(а):
Насколько я понимаю, menuetlibc основана на libC для DOS из проекта DJGPP (порт GCC под DOS).

Нафиг ДОС

andrew_programmer писал(а):
не опплёвывая труд других людей

Энто не труд, энто почесывание рук об клавиатуру. Пример ща будет. См след пост.


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 4:12 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Melian, надеюсь ты не такой как shamaz.mazum и не shamaz.mazum под новым ником.

P.S.

Конструктивная критика принимается.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Сб янв 05, 2008 4:35 pm 
Не в сети

Зарегистрирован: Пт янв 04, 2008 11:58 pm
Сообщения: 19
Пример того же чела, которого вы не любите:

int bcmp(const void *s1, const void *s2, size_t len);
Interface Level
Architecture independent level 1 (DDI/DKI).
Parameters
s1
Pointer to the first character string.
s2
Pointer to the second character string.
len
Number of bytes to be compared.

Description
The bcmp() function compares two byte arrays of length len.

Return Values
The bcmp() function returns 0 if the arrays are identical, or 1 if they are not.

Это дока с сайта sun, ещё можно смотреть в linux man pages
Ваш код: (кошмар имхо)
Код:
int bcmp(const void *ptr1, const void *ptr2, int length)
{
  char a;
  char b;

  if (ptr1 == ptr2) return 0;

  if (ptr1 == 0 || ptr2 == 0) return -1;

  while (length)
  {
    a=*((const char *)ptr1);
    b=*((const char *)ptr2);
    if (a !=b) return length;

    //if (*((char)ptr1)++ != *((char)ptr2)++)
    // return length;
    ptr1++;
    ptr2++;
    length--;
  }

  return 0;
}


Бред какой-то.
Вот как надо:

Код:
int bcmp (const void *s1, const void *s2, int len)
{
  for (int i = 0; i<len; i++)
  {
    if ((const char*) (*s1)!=(const char*) (*s2)) return 1;
    s1++;
    s2++;
  }
  return 0;
}

Всё!


Вернуться к началу
 Заголовок сообщения: Re: Kolibri Foundation Classes (KFC)
СообщениеДобавлено: Вс янв 06, 2008 12:10 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Из-за того, что menuetlibc алгоритмически сильно неоптимальна, я решил, что легче
написать новую libC чем переписывать menuetlibc. halyvin писал libC с нуля, а
потом это дело заглохло из за нехватки времени. Я взял исходные коды этой библиотеки
за основу. Вычистил из неё ошибки(их там было очень много). Добавил новые функции.
В частности функции форматированного вывода. Не все функции полность соответствуют
стандарту, так как дописать их до конца у меня просто нет времени. Я пишу только те
функции, которые мне нужны для моей научной программы.

Melian, как насчёт присоединения к разработкам libCk ?
Недостающие обертки на ассемблере для системных вызовов я могу написать. В текущей
libCk часть обёрток уже есть. А высокоуровневая часть libC написана на C.
Можно, например, добавить функцию для форматированного ввода. И на её основе сделать
остальные функции форматированного ввода. Ну так как насчёт присоединения ?

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 53 сообщения ]  На страницу 1 2 3 4 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB