OberonCore https://forum.oberoncore.ru/ |
|
Stdlib: стандартная библиотека https://forum.oberoncore.ru/viewtopic.php?f=47&t=2444 |
Страница 1 из 1 |
Автор: | Роман М. [ Вторник, 16 Март, 2010 14:34 ] |
Заголовок сообщения: | Stdlib: стандартная библиотека |
По мотивам темы Предложение по расширению каркаса BlackBox создал несколько модулей:
Привожу пример программы с использованием динамического массива. Код: 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. Вложение: Приветствуются комментарии и конструктивные замечания. |
Автор: | Евгений Темиргалеев [ Вторник, 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. ![]() Цитата: 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. P.S. Пролетарии всех "стандартных" библиотек --- объединяйтесь! 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. ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |