OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 08 Июль, 2025 00:36

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Преобразование типов
СообщениеДобавлено: Суббота, 11 Сентябрь, 2010 16:26 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Время от времени на форуме возникают вопросы, связанные с преобразованием типов. Может быть, начать собирать преобразователи в одном месте. Например, накопились процедуры
Код:
 PROCEDURE CharToBytes* (r: CHAR): POINTER TO ARRAY OF BYTE;

PROCEDURE SIntToBytes* (r: SHORTINT): POINTER TO ARRAY OF BYTE;
и т.д, и т.п.
Что-то нужно поправить, что-то можно обобщить. Если нужен такой раздел, то в каком виде выкладывать, чтобы было удобно редактировать и не повторяться? А если повторяться, то в одном месте(для сравнения).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Воскресенье, 12 Сентябрь, 2010 21:48 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Как-то жутко мне смотреть на процедуру преобразования, которая порождает мусор из 2-элементного массива. Бррррр. Такой стиль - это стиль Явы и скриптовых языков... Увы, сборщик мусора провоцирует на этот мусор.

P.S. Помнится, в конкретном случае, внутри какой-то реализации, когда мне нужен был функциональный вызов, я делал в модуле глобальный буфер, указатель на который и возвращал. Разумеется, много потоков в одно объектное пространство я принципиально не пускаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Среда, 27 Октябрь, 2010 13:51 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Обратил внимание, что в подсистеме С2ср у H.Zinn’a есть похожие функции
Код:
 MODULE C2cpStrings;

   TYPE DynString* = POINTER TO ARRAY OF CHAR;

   PROCEDURE MakeDynString* (s: ARRAY OF CHAR): DynString;
      …
   END MakeDynString;

   PROCEDURE MakeDynChar* (zeichen: CHAR; len: INTEGER): DynString;
      …
   END MakeDynChar;
Собственно вопрос в том, что переписав обероновский Juice, все модули которого теперь компилируются в ББ, осталась недоделана сама загрузка в браузер. Если возьмусь доделывать, то не известно когда. Все самодеятельные процедуры собраны в одном модуле. В принципе, могу выложить эту подсистему без него, но, если переписывать, то я не знаю, как лучше. А может, Juice вообще никого не интересует?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Среда, 27 Октябрь, 2010 14:33 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Я не работаю с http, поэтому не скажу, что juice мне сейчас нужен с практической точки зрения. Но иметь такую штуку хотелось бы, пусть пока и только ради любопытства. Глядишь, и подвернётся работка какая...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Среда, 27 Октябрь, 2010 14:34 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Если Juice был перенесён с расчётом на работу только в BlackBox, то можно расчитывать на модуль Цинна. Если же нужна универсальность между компиляторами Оберонов, то тогда нужно поставлять отдельным модулем, пожалуй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Среда, 27 Октябрь, 2010 16:08 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Роман М. писал(а):
Если Juice был перенесён с расчётом на работу только в BlackBox ...
Интересное утверждение, как-то я раньше пропустил.

Что, прям перенесен?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Среда, 27 Октябрь, 2010 16:10 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3807
Интересна тема. Я за создание такого сборника, если его нет конечно уже в составе какого нибудь пакета. Мне понадобилось туда сюда конвертировать REAL в буфер и из буфера и получилось что то вроде кода ниже (для паковки объектов в поток TCP использую WriteReal и ReadReal). Напоминает Stores. Может изобрел велосипед и в BB есть стандартные функции для таких задач?

Код:
MODULE TcpBytes;

    IMPORT
        SYSTEM, Kernel;

    TYPE
        B8 = ARRAY 8 OF BYTE;

    PROCEDURE WriteReal* (r: REAL; VAR b: ARRAY OF BYTE; VAR pos: INTEGER);
        VAR i: INTEGER; le: B8;
    BEGIN
        IF Kernel.littleEndian THEN
            le := SYSTEM.VAL(B8, r);
            FOR i := 0 TO 7 DO b[pos + i] := le[i] END
        ELSE
            le := SYSTEM.VAL(B8, r);
            FOR i := 0 TO 7 DO b[pos + i] := le[7 - i] END
        END; INC(pos, 8)
    END WriteReal;

    PROCEDURE WriteRealS* (r: REAL; VAR b: ARRAY OF BYTE; pos: INTEGER);
        VAR s: INTEGER;
    BEGIN
        s := pos; WriteReal(r, b, s)
    END WriteRealS;

    PROCEDURE RealToBytes* (r: REAL): POINTER TO ARRAY OF BYTE;
        VAR res: POINTER TO ARRAY OF BYTE; s: INTEGER;
    BEGIN
        NEW(res, 8); s := 0;
        WriteReal(r, res, s);
        RETURN res
    END RealToBytes;

    PROCEDURE ReadReal* (IN b: ARRAY OF BYTE; VAR pos: INTEGER): REAL;
        VAR i: INTEGER; le: B8;
    BEGIN
        IF Kernel.littleEndian THEN
            FOR i := 0 TO 7 DO le[i] := b[pos + i] END
        ELSE
            FOR i := 0 TO 7 DO le[7 - i] := b[pos + i] END
        END; INC(pos, 8);
        RETURN SYSTEM.VAL(REAL, le)
    END ReadReal;

    PROCEDURE ReadRealS* (IN b: ARRAY OF BYTE; pos: INTEGER): REAL;
        VAR s: INTEGER;
    BEGIN
        s := pos;
        RETURN ReadReal(b, s)
    END ReadRealS;
   
    PROCEDURE BytesToReal* (b: ARRAY 8 OF BYTE): REAL;
        VAR s: INTEGER;
    BEGIN
        s := 0;
        RETURN ReadReal(b, s);
    END BytesToReal;

END TcpBytes.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Среда, 27 Октябрь, 2010 16:48 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Info21 писал(а):
Роман М. писал(а):
Если Juice был перенесён с расчётом на работу только в BlackBox ...
Интересное утверждение, как-то я раньше пропустил.

Что, прям перенесен?

См. тремя сообщениями выше этой цитаты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Среда, 27 Октябрь, 2010 20:55 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
id_ler писал(а):
Собственно вопрос в том, что переписав обероновский Juice, все модули которого теперь компилируются в ББ, осталась недоделана сама загрузка в браузер. Если возьмусь доделывать, то не известно когда. Все самодеятельные процедуры собраны в одном модуле. В принципе, могу выложить эту подсистему без него, но, если переписывать, то я не знаю, как лучше. А может, Juice вообще никого не интересует?


Интересно, интересно.

Так не ясно - Вы просто переписали Джус на КП, или Вы его переделали так, что КП для него теперь - входной язык?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 07:52 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Илья Ермаков писал(а):
Так не ясно - Вы просто переписали Джус на КП, или Вы его переделали так, что КП для него теперь - входной язык?
Начал с тестового примера, а он потянул за собой все основные модули. Они конвертированы, а преобразование типов вынесено в отдельный модуль. Всё это компилируется в ББ, т.е. в ББ можно писать апплеты.

Теперь нужно научиться создавать сами апплеты так, чтобы их выполнял NP-plugin. Для меня проблемы начинаются с того, что Оперу 9.23 глючит от любого такого плагина(начиная с Акробата), хотя определяются они браузером правильно. Не буду в этой теме рассуждать о браузерах, но есть проблема, которая требует принципиального решения. Может быть, ограничиться самим ББ – делать из него браузер и т.д.?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 09:39 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2461
Откуда: Россия, Томск
Меня интересует Оберон в качестве скриптового языка, но не для браузера, а для обычных приложений. Есть такая возможность его использования (хотя бы потенциально)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 11:02 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Александр Ильин писал(а):
Меня интересует Оберон в качестве скриптового языка, но не для браузера, а для обычных приложений. Есть такая возможность его использования (хотя бы потенциально)?
Почему нет? Вся соль в том, что один и тот же язык воспроизводится на всех уровнях. В этом и суть расширяемости Оберонов.

Я делаю мелкую фигню при работе с текстами таким образом.
Правда, часть скриптов оформлять процедурами и не надо, т.к. имеют совсем простой вид "команда1;команда2;...".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 11:31 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2461
Откуда: Россия, Томск
Info21 писал(а):
Почему нет?
Тогда интересует, где можно посмотреть на этот Juice, чтобы оценить его потенциал в этом направлении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 11:48 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Александр Ильин писал(а):
где можно посмотреть на этот Juice
В этой теме исходники.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование типов
СообщениеДобавлено: Четверг, 30 Декабрь, 2010 15:06 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Александр Ильин писал(а):
Меня интересует Оберон в качестве скриптового языка, но не для браузера, а для обычных приложений. Есть такая возможность его использования (хотя бы потенциально)?
Здесь есть архив и ссылки на Oberon Script.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2025, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB