home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------------------*)
- (* *)
- (* Amiga Oberon Interface Module: Date: 02-Nov-92 *)
- (* *)
- (* © 1992 by Fridtjof Siebert *)
- (* written by Kai Bolay, revised by hartmut Goebel) *)
- (* *)
- (*-------------------------------------------------------------------------*)
-
- MODULE Locale;
-
- IMPORT e * := Exec,
- d * := Dos,
- u * := Utility;
-
- CONST
- localeName * = "locale.library";
-
- (* constants for GetLocaleStr() *)
- day1 * = 1; (* Sunday *)
- day2 * = 2; (* Monday *)
- day3 * = 3; (* Tuesday *)
- day4 * = 4; (* Wednesday *)
- day5 * = 5; (* Thursday *)
- day6 * = 6; (* Friday *)
- day7 * = 7; (* Saturday *)
-
- abDay1 * = 8; (* Sun *)
- abDay2 * = 9; (* Mon *)
- abDay3 * = 10; (* Tue *)
- abDay4 * = 11; (* Wed *)
- abDay5 * = 12; (* Thu *)
- abDay6 * = 13; (* Fri *)
- abDay7 * = 14; (* Sat *)
-
- mon1 * = 15; (* January *)
- mon2 * = 16; (* February *)
- mon3 * = 17; (* March *)
- mon4 * = 18; (* April *)
- mon5 * = 19; (* May *)
- mon6 * = 20; (* June *)
- mon7 * = 21; (* July *)
- mon8 * = 22; (* August *)
- mon9 * = 23; (* September *)
- mon10 * = 24; (* October *)
- mon11 * = 25; (* November *)
- mon12 * = 26; (* December *)
-
- abMon1 * = 27; (* Jan *)
- abMon2 * = 28; (* Feb *)
- abMon3 * = 29; (* Mar *)
- abMon4 * = 30; (* Apr *)
- abMon5 * = 31; (* May *)
- abMon6 * = 32; (* Jun *)
- abMon7 * = 33; (* Jul *)
- abMon8 * = 34; (* Aug *)
- abMon9 * = 35; (* Sep *)
- abMon10 * = 36; (* Oct *)
- abMon11 * = 37; (* Nov *)
- abMon12 * = 38; (* Dec *)
-
- yesStr * = 39; (* affirmative response for yes/no queries *)
- noStr * = 40; (* negative response for yes/no queries *)
-
- amStr * = 41; (* AM *)
- pmStr * = 42; (* PM *)
-
- softHyphen * = 43; (* soft hyphenation *)
- hardHyphen * = 44; (* hard hyphenation *)
-
- openQuote * = 45; (* start of quoted block *)
- closeQuote * = 46; (* end of quoted block *)
-
- maxStrMsg * = 47; (* current number of defined strings *)
-
-
- (*****************************************************************************)
-
- TYPE
-
- (* This structure must only be allocated by locale.library and is READ-ONLY! *)
- LocalePtr * = UNTRACED POINTER TO Locale;
- Locale* = STRUCT
- localeName * : e.STRPTR; (* locale's name *)
- languageName * : e.STRPTR; (* language of this locale *)
- prefLanguages * : ARRAY 10 OF e.STRPTR; (* preferred languages *)
- flags * : LONGINT; (* see below *)
-
- codeSet * : LONGINT; (* for now, always 0 *)
- countryCode * : LONGINT; (* user's country code *)
- telephoneCode * : LONGINT; (* country's telephone code *)
- gmtOffset * : LONGINT; (* minutes from GMT *)
- measuringSystem* : SHORTINT; (* what measuring system? *)
- reserved0 * : ARRAY 3 OF SHORTINT;
-
- dateTimeFormat * : e.STRPTR; (* regular date & time format *)
- dateFormat * : e.STRPTR; (* date format by itself *)
- timeFormat * : e.STRPTR; (* time format by itself *)
-
- shortDateTimeFormat * : e.STRPTR; (* short date & time format *)
- shortDateFormat * : e.STRPTR; (* short date format by itself *)
- shortTimeFormat * : e.STRPTR; (* short time format by itself *)
-
- (* for numeric values *)
- decimalPoint * : e.STRPTR; (* character before the decimals *)
- groupSeparator * : e.STRPTR; (* separates groups of digits *)
- fracGroupSeparator * : e.STRPTR; (* separates groups of digits *)
- grouping * : e.ADDRESS; (* size of each group *)
- fracGrouping * : e.ADDRESS; (* size of each group *)
-
- (* for monetary values *)
- monDecimalPoint * : e.STRPTR;
- monGroupSeparator * : e.STRPTR;
- monFracGroupSeparator* : e.STRPTR;
- monGrouping * : e.ADDRESS;
- monFracGrouping * : e.ADDRESS;
- monFracDigits * : SHORTINT; (* digits after the decimal point *)
- monIntFracDigits * : SHORTINT; (* for international representation*)
- reserved1 * : ARRAY 2 OF SHORTINT;
-
- (* for currency symbols *)
- monCS * : e.STRPTR; (* currency symbol *)
- monSmallCS * : e.STRPTR; (* symbol for small amounts *)
- monIntCS * : e.STRPTR; (* internationl (ISO 4217) code *)
-
- (* for positive monetary values *)
- monPositiveSign * : e.STRPTR; (* indicate positive money value *)
- monPositiveSpaceSep * : SHORTINT; (* determine if separated by space *)
- monPositiveSignPos * : SHORTINT; (* position of positive sign *)
- monPositiveCSPos * : SHORTINT; (* position of currency symbol *)
- reserved2 * : SHORTINT;
-
- (* for negative monetary values *)
- monNegativeSign * : e.STRPTR; (* indicate negative money value *)
- monNegativeSpaceSep * : SHORTINT; (* determine if separated by space *)
- monNegativeSignPos * : SHORTINT; (* position of negative sign *)
- monNegativeCSPos * : SHORTINT; (* position of currency symbol *)
- reserved3 * : SHORTINT;
- END;
-
- CONST
-
- (* flags for Locale.flags *)
- locbUsesDst* = 0; (* user uses daylight savings time? *)
-
- (* constants for Locale.measuringSystem *)
- iso * = 0; (* international metric system *)
- american * = 1; (* american system *)
- imperial * = 2; (* imperial system *)
- british * = 3; (* british system *)
-
- (* constants for Locale.monPositiveSpaceSep and Locale.monNegativeSpaceSep *)
- nospace * = 0; (* cur. symbol is NOT separated from value with a space *)
- space * = 1; (* cur. symbol IS separated from value with a space *)
-
- (* constants for Locale.monPositiveSignPos and Locale.monNegativeSignPos *)
- parens * = 0; (* () surround the quantity and currencySymbol *)
- precAll * = 1; (* sign string comes before amount and symbol *)
- succAll * = 2; (* sign string comes after amount and symbol *)
- precCurr * = 3; (* sign string comes right before currency symbol *)
- succCurr * = 4; (* sign string comes right after currency symbol *)
-
- (* constants for Locale.monPositiveCSPos and Locale.monNegativeCSPos *)
- precedes * = 0; (* currency symbol comes before value *)
- succeeds * = 1; (* currency symbol comes after value *)
-
- (* elements of the byte arrays pointed to by:
- * Locale.grouping
- * Locale.fracGrouping
- * Locale.monGrouping
- * Locale.monFracGrouping
- * are interpreted as follows:
- *
- * 255 indicates that no further grouping is to be performed
- * 0 indicates that the previous element is to be repeatedly used
- * for the remainder of the digits
- * <other> the number of digits that comprises the current group
- *)
-
-
- (*****************************************************************************)
-
-
- (* Tags for OpenCatalog() *)
- tagBase * = u.user + 90000H;
-
- builtInLanguage * = tagBase+1; (* language of built-in strings *)
- builtInCodeSet * = tagBase+2; (* code set of built-in strings *)
- version * = tagBase+3; (* catalog version number required *)
- language * = tagBase+4; (* preferred language of catalog *)
-
-
- (*****************************************************************************)
-
-
- (* Comparison types for StrnCmp() *)
- ascii * = 0;
- collate1 * = 1;
- collate2 * = 2;
-
-
- (*****************************************************************************)
-
-
- TYPE
-
- (* This structure must only be allocated by locale.library and is READ-ONLY! *)
- CatalogPtr * = UNTRACED POINTER TO Catalog;
- Catalog * = STRUCT (link * : e.Node) (* for internal linkage *)
- pad * : INTEGER; (* to longword align *)
- language * : e.STRPTR; (* language of the catalog *)
- codeSet * : LONGINT; (* currently always 0 *)
- version * : INTEGER; (* version of the catalog *)
- revision * : INTEGER; (* revision of the catalog *)
- END;
-
-
- (*****************************************************************************)
-
- VAR
- base * : e.LibraryPtr;
-
- PROCEDURE CloseCatalog *{base,-36}(catalog{8} : CatalogPtr);
- PROCEDURE CloseLocale *{base,-42}(locale{8} : LocalePtr);
- PROCEDURE ConvToLower *{base,-48}(locale{8} : LocalePtr;
- character{0} : CHAR): CHAR;
- PROCEDURE ConvToUpper *{base,-54}(locale{8} : LocalePtr;
- character{0} : CHAR): CHAR;
- PROCEDURE FormatDate *{base,-60}(locale{8} : LocalePtr;
- string{9} : ARRAY OF CHAR;
- date{10} : d.Date;
- putCharFunc{11} : u.HookPtr);
- PROCEDURE FormatString *{base,-66}(locale{8} : LocalePtr;
- string{9} : ARRAY OF CHAR;
- dataStream{10} : e.ADDRESS;
- putCharFunc{11} : u.HookPtr): e.ADDRESS;
- PROCEDURE GetCatalogStr *{base,-72}(catalog{8} : CatalogPtr;
- stringNum{0} : LONGINT;
- defaultString{9} : ARRAY OF CHAR): e.STRPTR;
- PROCEDURE GetLocaleStr *{base,-78}(locale{8} : LocalePtr;
- stringNum{0} : LONGINT): e.STRPTR;
- PROCEDURE IsAlNum *{base,-84}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsAlpha *{base,-90}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsCntrl *{base,-96}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsDigit *{base,-102}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsGraph *{base,-108}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsLower *{base,-114}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsPrint *{base,-120}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsPunct *{base,-126}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsSpace *{base,-132}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsUpper *{base,-138}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE IsXDigit *{base,-144}(locale{8} : LocalePtr;
- character{0} : CHAR): BOOLEAN;
- PROCEDURE OpenCatalogA *{base,-150}(locale{8} : LocalePtr;
- name{9} : ARRAY OF CHAR;
- tagList{10} : ARRAY OF u.TagItem): CatalogPtr;
- PROCEDURE OpenCatalog *{base,-150}(locale{8} : LocalePtr;
- name{9} : ARRAY OF CHAR;
- tag1{10}.. : u.Tag): CatalogPtr;
- PROCEDURE OpenLocale *{base,-156}(name{8} : ARRAY OF CHAR): LocalePtr;
- PROCEDURE ParseDate *{base,-162}(locale{8} : LocalePtr;
- date{9} : d.Date;
- template{10} : ARRAY OF CHAR;
- getCharFunc{11} : u.HookPtr): BOOLEAN;
- PROCEDURE StrConvert *{base,-174}(locale{8} : LocalePtr;
- string{9} : ARRAY OF CHAR;
- VAR buffer{10} : ARRAY OF CHAR;
- bufferSize{0} : LONGINT;
- type{1} : LONGINT): LONGINT;
- PROCEDURE StrnCmp *{base,-180}(locale{8} : LocalePtr;
- string1{9} : ARRAY OF CHAR;
- string2{10} : ARRAY OF CHAR;
- length{0} : LONGINT;
- type{1} : LONGINT): LONGINT;
-
- BEGIN
- base := e.OpenLibrary (localeName, 38);
- CLOSE
- IF base#NIL THEN e.CloseLibrary (base) END;
- END Locale.
-
-