OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 13:10

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Stdlib: стандартная библиотека
СообщениеДобавлено: Вторник, 16 Март, 2010 14:34 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
По мотивам темы Предложение по расширению каркаса BlackBox создал несколько модулей:
  1. StdlibObjects - модуль базового объекта, унаследованного от Stores.Store.
  2. StdlibLists - модуль поддержки динамических массивов с произвольным базовым типом.
  3. StdlibMem - набор процедур для низкоуровневой работы с памятью.
Их, конечно, планируется расширять, так как они сейчас являются пробной версией.

Привожу пример программы с использованием динамического массива.
Код:
MODULE TestLists;

   IMPORT Kernel, O := StdlibObjects, StdlibLists, Log := StdLog;

   TYPE
      MyList = POINTER TO RECORD (StdlibLists.List) END;
      
      MyObject = POINTER TO RECORD (O.Object)
         data: INTEGER;
      END;
      
      PROCEDURE (L: MyList) CompareItems (Index1, Index2: INTEGER): INTEGER;
         VAR object1, object2: MyObject; obj1, obj2: O.Object;
      BEGIN
         obj1 := L.Get(Index1); object1 := obj1(MyObject);
         obj2 := L.Get(Index2); object2 := obj2(MyObject);
         IF object1.data > object2.data THEN
            RETURN 1
         ELSIF object1.data < object2.data THEN
            RETURN -1
         ELSE
            RETURN 0
         END
      END CompareItems;
   
   PROCEDURE NewList (): MyList;
      VAR list: MyList;
   BEGIN
      NEW(list); list.Init;
      RETURN list
   END NewList;
   
   PROCEDURE NewObject (): MyObject;
      VAR object: MyObject;
   BEGIN
      NEW(object);
      RETURN object
   END NewObject;
   
   PROCEDURE AddItems (VAR L: MyList);
      VAR
         myObj: MyObject;
         counter: INTEGER;
         i, j: INTEGER;
   BEGIN
      counter := 0;
      FOR j := 1 TO 10 DO
         INC(counter);
         myObj := NewObject();
         myObj.data := counter*counter;
         IF ODD(counter) THEN myObj.data := -myObj.data END;
         i := L.Add(myObj);
      END;
   END AddItems;

   PROCEDURE Print (L: MyList);
      VAR j: INTEGER; o: O.Object; myObj: MyObject;
   BEGIN
      Log.Ln;
      FOR j := 0 TO L.Count - 1 DO
         o := L.Get(j); myObj := o(MyObject); (* get object and assign its pointer to descedant object *)
         Log.Int(myObj.data); Log.Ln
      END;
   END Print;
   
   PROCEDURE Do*;
      VAR
         mylist: MyList;
   BEGIN
      mylist := NewList();
      mylist.SetCapacity(12);
      
      (* Add 10 objects *)
      AddItems (mylist);
      
      (* Printing data of stored objects *)
      Print (mylist);
      
      (* Sort objects *)
      mylist.Sort;
      
      (* Printing data of stored objects *)
      Print (mylist);
   END Do;
   
END TestLists.

^Q TestLists.Do


Желающие опробовать, могут скачать Stdlib.
Вложение:
Stdlib.zip [16.69 КБ]
Скачиваний: 318


Приветствуются комментарии и конструктивные замечания.


Последний раз редактировалось Роман М. Среда, 24 Март, 2010 18:26, всего редактировалось 1 раз.

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

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
с каркасом связано только унаследование от Stores.Store...

я бы сказал что это доп. компоненты (расширение набора доступных компонент).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stdlib: стандартная библиотека
СообщениеДобавлено: Среда, 24 Март, 2010 18:33 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Обновлён модуль StdlibLists.

Добавлен модуль StdlibLocales для поддержки локализации программ: в глобальных переменных устанавливаются региональные стандарты (формат времени, дни недели и т.д.). Модуль реализации выполнен для Windows. Проверял, выставляя русский и иврит. Но особо не тестировал.
Версию для Линукса тоже не тяжело написать, в принципе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stdlib: стандартная библиотека
СообщениеДобавлено: Вторник, 30 Март, 2010 09:23 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Случайно заметил: http://www.zinnamturm.eu/downloadsAC.htm#Cam
Цитата:
Subsystem Cam comprises of a few handy "low-level" modules, which I use extensively. Most of them where build before I discovered the CPC website. The modules consist of:
...
* CamLists: The module CamLists defines the data types List and ListReader. Any storable object (extension of Stores.Store) can be added to a list. All manipulations to a list (adding and removing objects) which alter the contents of the list are implemented as operations. This means that all manipulation actions are undoable and redoable.
Ещё :) http://zinnamturm.eu/downloadsIN.htm#Misc
Цитата:
3) MiscSLists - simple linear list, based on items of type Stores.Store.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stdlib: стандартная библиотека
СообщениеДобавлено: Воскресенье, 12 Сентябрь, 2010 15:33 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Хочу лишь уведомить о том, что проект доступен в репозитории SVN проекта Oberon Revival среди остальных компонент и интерфейсов к различным библиотекам.


Последний раз редактировалось Роман М. Понедельник, 13 Сентябрь, 2010 09:38, всего редактировалось 1 раз.

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

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

Непонятно, какую проблему решает Stdlib.
Функциональность неубедительна.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stdlib: стандартная библиотека
СообщениеДобавлено: Понедельник, 13 Сентябрь, 2010 11:49 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Вот выдержка из Developing Standard Library for BlackBox's framework:
Цитата:
Stdlib subsystem

Note: Marked as deleted means that feature is not available and need development.

StdlibObjects

Provides a definition of basic object.
StdlibModels

Provides models for dynamic structures, like lists, trees, hashtables.
StdlibMem

Provides routines for various low-level memory operations.
StdlibBits

Provides routines for dealing with bits.
StdlibRandom

Provides routines for retrieving random numbers.
StdlibConfig

Provides routines for accessing configuration/serialization data formats/API, such as Ini/conf/YAML/JSON/XML/Registry.
StdlibRegex

Provides routines for Regular Expressions.
StdlibStrUtils

Provides routines for handling strings, such as matching, replacement etc.
StdlibLocales

Retrieving and Setting locale information
StdlibStrConv

Provides routines for conversions between strings and different data types such as Integers/Real and Date/Time/Currency (national).
StdlibCalendar

Provides routines for time/dates/calendar.
StdlibTexts

Provides routines for plain text files, line-by-line read/write.

Список будет пополняться по мере необходимости. В каркасе БлэкБокса есть лишь малая часть часто используемой в различных проектах функциональности и её часто не хватает.

Убеждать никого не буду. Кому надо - сами поймут.

Если кто желает обсудить целесообразность данной подсистемы, просьба создавать отдельную тему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stdlib: стандартная библиотека
СообщениеДобавлено: Пятница, 22 Июль, 2011 13:43 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Ышшо одна "стантартная" библиотека: http://www.zinnamturm.eu/downloadsAC.htm#Basics
Сюда пишу, т.к. имеются общие "места".
Цитата:
Program library for Bit-Manipulations, Dyn-Strings, File-I/Os, and Run-Parameters.

BasicsTerminals creates your own log windows as many as you like distinguish by name.

BasicsStderr offers services for writing messages to an stderr window. Any output to this window will cause it to pop up if it is not yet visible.

BasicsAssert The services of the module BasicsAssert are applied to implement design-by-contract. In case of trap the stderr window will show name and value of the variable causing the trap and the appropriate limits.

BasicsBits offers low level access to bits and bytes using the concept of SETs and avoiding the import of SYSTEM.

BasicsDynStrings provides a class for dynamic strings. It includes useful procedures for string manipulations without limitations of the string lenght. Converters between basic data types and dynamic strings are available too.

BasicsStrings offers the functionality of module Strings plus some additional services for dealing with Hex-Strings. In contrast to module Strings all output strings are delivered as POINTER TO ARRAY OF CHAR.

BasicsFiles deals with ASCII files and binary files as well. It sits on top of module Files and offers traditional file I/O.

BasicsParameters implements a scanner for analyzing parameters usually passed to programs via a command line. The parameter string ist passed to the module by calling ScanParameterString. Subsequently names and values of the parameters will be available by calling the according procedures.
P.S. Пролетарии всех "стандартных" библиотек --- объединяйтесь! :)


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

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


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

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


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

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