OberonCore https://forum.oberoncore.ru/ |
|
Преобразование типов https://forum.oberoncore.ru/viewtopic.php?f=47&t=2836 |
Страница 1 из 1 |
Автор: | id_ler [ Суббота, 11 Сентябрь, 2010 16:26 ] |
Заголовок сообщения: | Преобразование типов |
Время от времени на форуме возникают вопросы, связанные с преобразованием типов. Может быть, начать собирать преобразователи в одном месте. Например, накопились процедуры Код: PROCEDURE CharToBytes* (r: CHAR): POINTER TO ARRAY OF BYTE; и т.д, и т.п.… PROCEDURE SIntToBytes* (r: SHORTINT): POINTER TO ARRAY OF BYTE; … Что-то нужно поправить, что-то можно обобщить. Если нужен такой раздел, то в каком виде выкладывать, чтобы было удобно редактировать и не повторяться? А если повторяться, то в одном месте(для сравнения). |
Автор: | Илья Ермаков [ Воскресенье, 12 Сентябрь, 2010 21:48 ] |
Заголовок сообщения: | Re: Преобразование типов |
Как-то жутко мне смотреть на процедуру преобразования, которая порождает мусор из 2-элементного массива. Бррррр. Такой стиль - это стиль Явы и скриптовых языков... Увы, сборщик мусора провоцирует на этот мусор. P.S. Помнится, в конкретном случае, внутри какой-то реализации, когда мне нужен был функциональный вызов, я делал в модуле глобальный буфер, указатель на который и возвращал. Разумеется, много потоков в одно объектное пространство я принципиально не пускаю. |
Автор: | id_ler [ Среда, 27 Октябрь, 2010 13:51 ] |
Заголовок сообщения: | Re: Преобразование типов |
Обратил внимание, что в подсистеме С2ср у H.Zinn’a есть похожие функции Код: MODULE C2cpStrings; Собственно вопрос в том, что переписав обероновский Juice, все модули которого теперь компилируются в ББ, осталась недоделана сама загрузка в браузер. Если возьмусь доделывать, то не известно когда. Все самодеятельные процедуры собраны в одном модуле. В принципе, могу выложить эту подсистему без него, но, если переписывать, то я не знаю, как лучше. А может, Juice вообще никого не интересует?
… 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; |
Автор: | Valery Solovey [ Среда, 27 Октябрь, 2010 14:33 ] |
Заголовок сообщения: | Re: Преобразование типов |
Я не работаю с http, поэтому не скажу, что juice мне сейчас нужен с практической точки зрения. Но иметь такую штуку хотелось бы, пусть пока и только ради любопытства. Глядишь, и подвернётся работка какая... |
Автор: | Роман М. [ Среда, 27 Октябрь, 2010 14:34 ] |
Заголовок сообщения: | Re: Преобразование типов |
Если Juice был перенесён с расчётом на работу только в BlackBox, то можно расчитывать на модуль Цинна. Если же нужна универсальность между компиляторами Оберонов, то тогда нужно поставлять отдельным модулем, пожалуй. |
Автор: | Info21 [ Среда, 27 Октябрь, 2010 16:08 ] |
Заголовок сообщения: | Re: Преобразование типов |
Роман М. писал(а): Если Juice был перенесён с расчётом на работу только в BlackBox ... Интересное утверждение, как-то я раньше пропустил.Что, прям перенесен? |
Автор: | Иван Денисов [ Среда, 27 Октябрь, 2010 16:10 ] |
Заголовок сообщения: | Re: Преобразование типов |
Интересна тема. Я за создание такого сборника, если его нет конечно уже в составе какого нибудь пакета. Мне понадобилось туда сюда конвертировать 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. |
Автор: | Роман М. [ Среда, 27 Октябрь, 2010 16:48 ] |
Заголовок сообщения: | Re: Преобразование типов |
Info21 писал(а): Роман М. писал(а): Если Juice был перенесён с расчётом на работу только в BlackBox ... Интересное утверждение, как-то я раньше пропустил.Что, прям перенесен? См. тремя сообщениями выше этой цитаты. |
Автор: | Илья Ермаков [ Среда, 27 Октябрь, 2010 20:55 ] |
Заголовок сообщения: | Re: Преобразование типов |
id_ler писал(а): Собственно вопрос в том, что переписав обероновский Juice, все модули которого теперь компилируются в ББ, осталась недоделана сама загрузка в браузер. Если возьмусь доделывать, то не известно когда. Все самодеятельные процедуры собраны в одном модуле. В принципе, могу выложить эту подсистему без него, но, если переписывать, то я не знаю, как лучше. А может, Juice вообще никого не интересует? Интересно, интересно. Так не ясно - Вы просто переписали Джус на КП, или Вы его переделали так, что КП для него теперь - входной язык? |
Автор: | id_ler [ Четверг, 28 Октябрь, 2010 07:52 ] |
Заголовок сообщения: | Re: Преобразование типов |
Илья Ермаков писал(а): Так не ясно - Вы просто переписали Джус на КП, или Вы его переделали так, что КП для него теперь - входной язык? Начал с тестового примера, а он потянул за собой все основные модули. Они конвертированы, а преобразование типов вынесено в отдельный модуль. Всё это компилируется в ББ, т.е. в ББ можно писать апплеты.Теперь нужно научиться создавать сами апплеты так, чтобы их выполнял NP-plugin. Для меня проблемы начинаются с того, что Оперу 9.23 глючит от любого такого плагина(начиная с Акробата), хотя определяются они браузером правильно. Не буду в этой теме рассуждать о браузерах, но есть проблема, которая требует принципиального решения. Может быть, ограничиться самим ББ – делать из него браузер и т.д.? |
Автор: | Александр Ильин [ Четверг, 28 Октябрь, 2010 09:39 ] |
Заголовок сообщения: | Re: Преобразование типов |
Меня интересует Оберон в качестве скриптового языка, но не для браузера, а для обычных приложений. Есть такая возможность его использования (хотя бы потенциально)? |
Автор: | Info21 [ Четверг, 28 Октябрь, 2010 11:02 ] |
Заголовок сообщения: | Re: Преобразование типов |
Александр Ильин писал(а): Меня интересует Оберон в качестве скриптового языка, но не для браузера, а для обычных приложений. Есть такая возможность его использования (хотя бы потенциально)? Почему нет? Вся соль в том, что один и тот же язык воспроизводится на всех уровнях. В этом и суть расширяемости Оберонов.Я делаю мелкую фигню при работе с текстами таким образом. Правда, часть скриптов оформлять процедурами и не надо, т.к. имеют совсем простой вид "команда1;команда2;...". |
Автор: | Александр Ильин [ Четверг, 28 Октябрь, 2010 11:31 ] |
Заголовок сообщения: | Re: Преобразование типов |
Info21 писал(а): Почему нет? Тогда интересует, где можно посмотреть на этот Juice, чтобы оценить его потенциал в этом направлении.
|
Автор: | id_ler [ Четверг, 28 Октябрь, 2010 11:48 ] |
Заголовок сообщения: | Re: Преобразование типов |
Александр Ильин писал(а): где можно посмотреть на этот Juice В этой теме исходники.
|
Автор: | id_ler [ Четверг, 30 Декабрь, 2010 15:06 ] |
Заголовок сообщения: | Re: Преобразование типов |
Александр Ильин писал(а): Меня интересует Оберон в качестве скриптового языка, но не для браузера, а для обычных приложений. Есть такая возможность его использования (хотя бы потенциально)? Здесь есть архив и ссылки на Oberon Script.
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |