OberonCore
https://forum.oberoncore.ru/

Stdlib: стандартная библиотека
https://forum.oberoncore.ru/viewtopic.php?f=47&t=2444
Страница 1 из 1

Автор:  Роман М. [ Вторник, 16 Март, 2010 14:34 ]
Заголовок сообщения:  Stdlib: стандартная библиотека

По мотивам темы Предложение по расширению каркаса 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 КБ]
Скачиваний: 369


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

Автор:  Евгений Темиргалеев [ Вторник, 16 Март, 2010 15:31 ]
Заголовок сообщения:  Re: Stdlib: стандартная библиотека

с каркасом связано только унаследование от Stores.Store...

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

Автор:  Роман М. [ Среда, 24 Март, 2010 18:33 ]
Заголовок сообщения:  Re: Stdlib: стандартная библиотека

Обновлён модуль StdlibLists.

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

Автор:  Евгений Темиргалеев [ Вторник, 30 Март, 2010 09:23 ]
Заголовок сообщения:  Re: Stdlib: стандартная библиотека

Случайно заметил: 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.

Автор:  Роман М. [ Воскресенье, 12 Сентябрь, 2010 15:33 ]
Заголовок сообщения:  Re: Stdlib: стандартная библиотека

Хочу лишь уведомить о том, что проект доступен в репозитории SVN проекта Oberon Revival среди остальных компонент и интерфейсов к различным библиотекам.

Автор:  Info21 [ Воскресенье, 12 Сентябрь, 2010 18:28 ]
Заголовок сообщения:  Re: Stdlib: стандартная библиотека

Роман М. писал(а):
Приветствуются комментарии и конструктивные замечания.
Комментарии и замечания -- это, вроде, одно и то же.
Надо думать, комментарии допускаются неконструктивные.
Anyhow.
Вот комментарий:

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

Автор:  Роман М. [ Понедельник, 13 Сентябрь, 2010 11:49 ]
Заголовок сообщения:  Re: Stdlib: стандартная библиотека

Вот выдержка из 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.

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

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

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

Автор:  Евгений Темиргалеев [ Пятница, 22 Июль, 2011 13:43 ]
Заголовок сообщения:  Re: Stdlib: стандартная библиотека

Ышшо одна "стантартная" библиотека: 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. Пролетарии всех "стандартных" библиотек --- объединяйтесь! :)

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