OberonCore
https://forum.oberoncore.ru/

Lists
https://forum.oberoncore.ru/viewtopic.php?f=90&t=1980
Страница 1 из 1

Автор:  Доровских Александр [ Суббота, 24 Октябрь, 2009 16:32 ]
Заголовок сообщения:  Lists

При компиляции многих модулей столкнулся с тем, что отсутствует библиотека Lists. Где взять? (ББ 1.5).

(модератор) 19.01.2011 размещено в коллекции: http://oberoncore.ru/bbcc/subs/lists/start

Автор:  Иван Кузьмицкий [ Суббота, 24 Октябрь, 2009 20:05 ]
Заголовок сообщения:  Re: Где взять?

Это самописная библиотека. Её пока нет в коллекциях компонентов, поэтому прикладываю Lists.7z к этому сообщению.
вложение удалено модератором

Автор:  Info21 [ Суббота, 24 Октябрь, 2009 22:06 ]
Заголовок сообщения:  Re: Где взять?

Доровских Александр писал(а):
При компиляции многих модулей ...
Каких? Первый раз про Lists слышу.

Автор:  Доровских Александр [ Воскресенье, 25 Октябрь, 2009 01:17 ]
Заголовок сообщения:  Re: Где взять?

Stern например. И в других модулях встречается. Ивану Кузьмицкому Гран мерси :D

Автор:  Пётр Кушнир [ Воскресенье, 25 Октябрь, 2009 11:20 ]
Заголовок сообщения:  Re: Где взять библиотеку Lists?

Подсистема простейшая. была создана вместо множества повторяющихся модулей.
Всем привет из стройных рядов ВВ МВД :)

Автор:  Info21 [ Воскресенье, 25 Октябрь, 2009 13:40 ]
Заголовок сообщения:  Re: Где взять библиотеку Lists?

Пётр Кушнир писал(а):
Подсистема простейшая. была создана вместо множества повторяющихся модулей.
Любопытно.
У меня все списки либо не вписываются в эти схемы, либо проще настолько, что тащить такую подсистему -- избыточная сложность :)

А вот такое наследование, по-моему, ошибка архитектора:
Iterator = POINTER TO LIMITED RECORD (IteratorItem)

Пётр Кушнир писал(а):
Всем привет из стройных рядов ВВ МВД :)
Тоже любопытно. Это как -- почетный долг или просто работа такая? :)

Автор:  Пётр Кушнир [ Воскресенье, 25 Октябрь, 2009 16:33 ]
Заголовок сообщения:  Re: Где взять библиотеку Lists?

Не помню, даже, зачем я ввел такое наследование.

А в ВВ я в данный момент прохожу срочную службу. Как то так.

Автор:  Рыжий [ Четверг, 21 Январь, 2010 03:59 ]
Заголовок сообщения:  Re: Где взять библиотеку Lists?

Цитата:
Любопытно.
У меня все списки либо не вписываются в эти схемы, либо проще настолько, что тащить такую подсистему -- избыточная сложность

Ага, ну наконец-то! И "поинтер ту" при нем)))

Автор:  Илья Ермаков [ Четверг, 21 Январь, 2010 11:57 ]
Заголовок сообщения:  Re: Где взять библиотеку Lists?

Рыжий писал(а):
И "поинтер ту" при нем)))


А Вы что хотели? Отношение - оно и в Африке отношение, орграф он и в Африке орграф :) И пойнтер ту при нём, как конкретная модель на машине.

Автор:  budden [ Понедельник, 24 Декабрь, 2018 00:04 ]
Заголовок сообщения:  Re: Lists

Скачал архив с текущим выпуском. Посмотрел исходный текст. Не 100% уверен, но всё же мне кажется, что при уменьшении размера списка хвост не обнуляется. Поэтому живущие в списке объекты не будут освобождены сборщиком мусора, до тех пор пока не случится одно из двух:

а) сам список будет удалён
б) список обратно вырастет и эти элементы будут заменены чем-то другим

На мой взгляд, это является утечкой памяти. Если это так задумано, то об этом стоило бы написать в документации.

Автор:  Иван Денисов [ Четверг, 29 Октябрь, 2020 18:03 ]
Заголовок сообщения:  Re: Lists

На всякий случай кидаю тут ссылку:
https://blackbox.oberon.org/extension/Lists

Автор:  Иван Денисов [ Среда, 08 Ноябрь, 2023 23:54 ]
Заголовок сообщения:  Re: Lists

Просто пример, который делал для чата.

Код:
MODULE ListsObxOp;

   IMPORT ListsOp, Rnd := ObxRandom, Log;

   TYPE
      MyData = POINTER TO RECORD
         x: INTEGER
      END;

      MyAddOp = RECORD (ListsOp.AddOp)
         this*: MyData
      END;

      MyForEachOp = RECORD (ListsOp.ForEachOp)
         this*: MyData
      END;

   PROCEDURE (VAR op: MyForEachOp) Do (OUT break: BOOLEAN);
   BEGIN
      Log.Int(op.this.x); Log.Ln;
   END Do;

   PROCEDURE Test*;
      VAR
         i: INTEGER;
         list: ListsOp.List;
         addOperation: MyAddOp;
         forEachOperation: MyForEachOp;
   BEGIN
      list := ListsOp.New();
      i := 0;
      WHILE i < 10 DO
         NEW(addOperation.this);
         addOperation.this.x := SHORT(ENTIER(Rnd.Uniform() * 5000));
         list.Do(addOperation);
         INC(i);
      END;
      list.Do(forEachOperation)
   END Test;

END ListsObxOp.

 ListsObxOp.Test

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/