home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / M2V11-1.LHA / modula / amiga / Locale.def < prev    next >
Encoding:
Text File  |  1993-11-10  |  11.0 KB  |  290 lines

  1. DEFINITION FOR LIBRARY MODULE Locale ;
  2.  
  3. FROM SYSTEM    IMPORT ADDRESS, STRING, LONGSET ;
  4. FROM Exec    IMPORT Library, Node ;
  5. FROM Utility    IMPORT TagItemPtr, Tag, TAG_USER, HookPtr ;
  6. FROM Dos    IMPORT DateStampPtr ;
  7.  
  8. (* constants for GetLocaleStr() *)
  9. CONST
  10.   DAY_1        = 1 ;    (* Sunday    *)
  11.   DAY_2        = 2 ;    (* Monday    *)
  12.   DAY_3        = 3 ;    (* Tuesday   *)
  13.   DAY_4        = 4 ;    (* Wednesday *)
  14.   DAY_5        = 5 ;    (* Thursday  *)
  15.   DAY_6        = 6 ;    (* Friday    *)
  16.   DAY_7        = 7 ;    (* Saturday  *)
  17.  
  18.   ABDAY_1    = 8 ;    (* Sun *)
  19.   ABDAY_2    = 9 ;    (* Mon *)
  20.   ABDAY_3    = 10 ;    (* Tue *)
  21.   ABDAY_4    = 11 ;    (* Wed *)
  22.   ABDAY_5    = 12 ;    (* Thu *)
  23.   ABDAY_6    = 13 ;    (* Fri *)
  24.   ABDAY_7    = 14 ;    (* Sat *)
  25.  
  26.   MON_1        = 15 ;    (* January   *)
  27.   MON_2        = 16 ;    (* February  *)
  28.   MON_3        = 17 ;    (* March     *)
  29.   MON_4        = 18 ;    (* April     *)
  30.   MON_5        = 19 ;    (* May         *)
  31.   MON_6        = 20 ;    (* June      *)
  32.   MON_7        = 21 ;    (* July      *)
  33.   MON_8        = 22 ;    (* August    *)
  34.   MON_9        = 23 ;    (* September *)
  35.   MON_10    = 24 ;    (* October   *)
  36.   MON_11    = 25 ;    (* November  *)
  37.   MON_12    = 26 ;    (* December  *)
  38.  
  39.   ABMON_1    = 27 ;    (* Jan *)
  40.   ABMON_2    = 28 ;    (* Feb *)
  41.   ABMON_3    = 29 ;    (* Mar *)
  42.   ABMON_4    = 30 ;    (* Apr *)
  43.   ABMON_5    = 31 ;    (* May *)
  44.   ABMON_6    = 32 ;    (* Jun *)
  45.   ABMON_7    = 33 ;    (* Jul *)
  46.   ABMON_8    = 34 ;    (* Aug *)
  47.   ABMON_9     = 35 ;  (* Sep *)
  48.   ABMON_10    = 36 ;    (* Oct *)
  49.   ABMON_11    = 37 ;    (* Nov *)
  50.   ABMON_12    = 38 ;    (* Dec *)
  51.  
  52.   YESSTR    = 39 ;    (* affirmative response for yes/no queries *)
  53.   NOSTR        = 40 ;    (* negative response for yes/no queries    *)
  54.  
  55.   AM_STR    = 41 ;    (* AM *)
  56.   PM_STR    = 42 ;    (* PM *)
  57.  
  58.   SOFTHYPHEN    = 43 ;    (* soft hyphenation *)
  59.   HARDHYPHEN    = 44 ;    (* hard hyphenation *)
  60.  
  61.   OPENQUOTE    = 45 ;    (* start of quoted block *)
  62.   CLOSEQUOTE    = 46 ;    (* end of quoted block     *)
  63.  
  64.   YESTERDAYSTR    = 47 ;    (* Yesterday *)
  65.   TODAYSTR    = 48 ;    (* Today     *)
  66.   TOMORROWSTR    = 49 ;    (* Tomorrow  *)
  67.   FUTURESTR    = 50 ;    (* Future    *)
  68.  
  69.   MAXSTRMSG    = 51 ;    (* current number of defined strings *)
  70.  
  71. (*===========================================================================*)
  72.  
  73. (* OpenLibrary("locale.library",0) returns a pointer to this structure *)
  74. TYPE
  75.   LocaleBasePtr = POINTER TO LocaleBaseRec ;
  76.   LocaleBaseRec = RECORD
  77.     lb_LibNode    : Library  ;
  78.     lb_SysPatches : CARDINAL ;   (* TRUE if locale installed its patches *)
  79.   END ;
  80.  
  81. (*===========================================================================*)
  82.  
  83. (* This structure must only be allocated by locale.library and is READ-ONLY! *)
  84. TYPE
  85.   LocalePtr = POINTER TO Locale ;
  86.   Locale = RECORD
  87.     loc_LocaleName        : STRING ;   (* locale's name             *)
  88.     loc_LanguageName        : STRING ;   (* language of this locale      *)
  89.     loc_PrefLanguages        : ARRAY [0..9] OF STRING ;
  90.                             (* preferred languages         *)
  91.     loc_Flags            : LONGSET ;  (* always 0 for now         *)
  92.  
  93.     loc_CodeSet            : LONGINT ;  (* always 0 for now         *)
  94.     loc_CountryCode        : LONGINT ;  (* user's country code         *)
  95.     loc_TelephoneCode        : LONGINT ;  (* country's telephone code     *)
  96.     loc_GMTOffset        : LONGINT ;  (* minutes from GMT         *)
  97.     loc_MeasuringSystem        : SHORTCARD ;
  98.                              (* what measuring system?       *)
  99.     loc_CalendarType        : SHORTCARD ;(* what calendar type?         *)
  100.     loc_Reserved0        : ARRAY [0..1] OF SHORTCARD ;
  101.  
  102.     loc_DateTimeFormat        : STRING ;   (* regular date & time format   *)
  103.     loc_DateFormat        : STRING ;   (* date format by itself         *)
  104.     loc_TimeFormat        : STRING ;   (* time format by itself         *)
  105.  
  106.     loc_ShortDateTimeFormat    : STRING ;   (* short date & time format     *)
  107.     loc_ShortDateFormat        : STRING ;   (* short date format by itself  *)
  108.     loc_ShortTimeFormat        : STRING ;   (* short time format by itself  *)
  109.  
  110.     (* for numeric values *)
  111.     loc_DecimalPoint        : STRING ;   (* character before the decimals*)
  112.     loc_GroupSeparator        : STRING ;   (* separates groups of digits   *)
  113.     loc_FracGroupSeparator    : STRING ;   (* separates groups of digits   *)
  114.     loc_Grouping        : ADDRESS ;  (* size of each group         *)
  115.     loc_FracGrouping        : ADDRESS ;  (* size of each group         *)
  116.  
  117.     (* for monetary values *)
  118.     loc_MonDecimalPoint        : STRING ;
  119.     loc_MonGroupSeparator    : STRING ;
  120.     loc_MonFracGroupSeparator    : STRING ;
  121.     loc_MonGrouping        : ADDRESS ;
  122.     loc_MonFracGrouping        : ADDRESS ;
  123.     loc_MonFracDigits        : SHORTCARD;(* digits after the decimal point *)
  124.     loc_MonIntFracDigits    : SHORTCARD;(*for international representation*)
  125.     loc_Reserved1        : ARRAY [0..1] OF SHORTCARD ;
  126.  
  127.     (* for currency symbols *)
  128.     loc_MonCS            : STRING ; (* currency symbol              *)
  129.     loc_MonSmallCS        : STRING ; (* symbol for small amounts        *)
  130.     loc_MonIntCS        : STRING ; (* internationl (ISO 4217) code    *)
  131.  
  132.     (* for positive monetary values *)
  133.     loc_MonPositiveSign        : STRING ;    (* indicate positive money value*)
  134.     loc_MonPositiveSpaceSep    : SHORTCARD ; (* determine if separated by sp *)
  135.     loc_MonPositiveSignPos    : SHORTCARD ; (* position of positive sign    *)
  136.     loc_MonPositiveCSPos    : SHORTCARD ; (* position of currency symbol  *)
  137.     loc_Reserved2        : SHORTCARD ;
  138.  
  139.     (* for negative monetary values *)
  140.     loc_MonNegativeSign        : STRING ;   (* indicate negative money value *)
  141.     loc_MonNegativeSpaceSep    : SHORTCARD ;(* determine if separated byspace*)
  142.     loc_MonNegativeSignPos    : SHORTCARD ;(* position of negative sign     *)
  143.     loc_MonNegativeCSPos    : SHORTCARD ;(* position of currency symbol   *)
  144.     loc_Reserved3        : SHORTCARD ;
  145.  END ;
  146.  
  147. (* constants for Locale.loc_MeasuringSystem *)
  148. CONST
  149.   MS_ISO    = 0 ;    (* international metric system *)
  150.   MS_AMERICAN    = 1 ;    (* american system           *)
  151.   MS_IMPERIAL    = 2 ;    (* imperial system           *)
  152.   MS_BRITISH    = 3 ;    (* british system           *)
  153.  
  154. (* constants for Locale.loc_CalendarType *)
  155.   CT_7SUN    = 0 ;   (* 7 days a week, Sunday is the first day    *)
  156.   CT_7MON    = 1 ;   (* 7 days a week, Monday is the first day    *)
  157.   CT_7TUE    = 2 ;   (* 7 days a week, Tuesday is the first day    *)
  158.   CT_7WED    = 3 ;   (* 7 days a week, Wednesday is the first day    *)
  159.   CT_7THU    = 4 ;   (* 7 days a week, Thursday is the first day    *)
  160.   CT_7FRI    = 5 ;   (* 7 days a week, Friday is the first day    *)
  161.   CT_7SAT    = 6 ;   (* 7 days a week, Saturday is the first day    *)
  162.  
  163. (* constants for Locale.loc_MonPositiveSpaceSep and    *)
  164. (* Locale.loc_MonNegativeSpaceSep            *)
  165.   SS_NOSPACE    = 0 ;   (* cur. symbol is NOTseparated from value with a space*)
  166.   SS_SPACE    = 1 ;   (* cur. symbol IS separated from value with a space   *)
  167.  
  168. (* constants for Locale.loc_MonPositiveSignPos and    *)
  169. (* Locale.loc_MonNegativeSignPos            *)
  170.   SP_PARENS    = 0 ;    (* () surround the quantity and currency_symbol   *)
  171.   SP_PREC_ALL    = 1 ;    (* sign string comes before amount and symbol      *)
  172.   SP_SUCC_ALL    = 2 ;    (* sign string comes after amount and symbol      *)
  173.   SP_PREC_CURR    = 3 ;    (* sign string comes right before currency symbol *)
  174.   SP_SUCC_CURR    = 4 ;    (* sign string comes right after currency symbol  *)
  175.  
  176. (* constants for Locale.loc_MonPositiveCSPos and Locale.loc_MonNegativeCSPos *)
  177.   CSP_PRECEDES    = 0 ;    (* currency symbol comes before value *)
  178.   CSP_SUCCEEDS    = 1 ;    (* currency symbol comes after value  *)
  179.  
  180. (* elements of the byte arrays pointed to by:                    *)
  181. (*   Locale.loc_Grouping                            *)
  182. (*   Locale.loc_FracGrouping                            *)
  183. (*   Locale.loc_MonGrouping                            *)
  184. (*   Locale.loc_MonFracGrouping                            *)
  185. (* are interpreted as follows:                            *)
  186. (*                                        *)
  187. (*    255     indicates that no further grouping is to be performed        *)
  188. (*    0       indicates that the previous element is to be repeatedly used  *)
  189. (*          for the remainder of the digits                    *)
  190. (*    <other> the number of digits that comprises the current group        *)
  191.  
  192. (*===========================================================================*)
  193.  
  194. (* Tags for OpenCatalog() *)
  195. CONST
  196.   OC_TagBase         = TAG_USER + 090000H ;
  197.   OC_BuiltInLanguage = OC_TagBase+1 ;  (* language of built-in strings    *)
  198.   OC_BuiltInCodeSet  = OC_TagBase+2 ;  (* code set of built-in strings    *)
  199.   OC_Version         = OC_TagBase+3 ;  (* catalog version number required *)
  200.   OC_Language         = OC_TagBase+4 ;  (* preferred language of catalog   *)
  201.  
  202. (*===========================================================================*)
  203.  
  204. (* Comparison types for StrnCmp() *)
  205. CONST
  206.   SC_ASCII    = 0 ;
  207.   SC_COLLATE1 = 1 ;
  208.   SC_COLLATE2 = 2 ;
  209.  
  210. (*===========================================================================*)
  211.  
  212. (* This structure must only be allocated by locale.library and is READ-ONLY! *)
  213. TYPE
  214.   CatalogPtr = POINTER TO Catalog ;
  215.   Catalog = RECORD
  216.     cat_Link     : Node     ; (* for internal linkage    *)
  217.     cat_Pad     : CARDINAL ; (* to longword align     *)
  218.     cat_Language : STRING   ; (* language of the catalog *)
  219.     cat_CodeSet  : LONGINT  ; (* currently always 0     *)
  220.     cat_Version  : CARDINAL ; (* version of the catalog  *)
  221.     cat_Revision : CARDINAL ; (* revision of the catalog *)
  222.   END ;
  223.  
  224. (*===========================================================================*)
  225.  
  226. VAR
  227.   LocaleBase : LocaleBasePtr ;
  228.  
  229. (*--- functions in V38 or higher (Release 2.1) ---*)
  230.  
  231. PROCEDURE CloseCatalog( catalog : CatalogPtr ) ;
  232. PROCEDURE CloseLocale ( locale  : LocalePtr  ) ;
  233.  
  234. PROCEDURE ConvToLower( locale : LocalePtr ; character : LONGINT ) : LONGINT ;
  235. PROCEDURE ConvToUpper( locale : LocalePtr ; character : LONGINT ) : LONGINT ;
  236.  
  237. PROCEDURE FormatDate( locale      : LocalePtr ;
  238.               fmtTemplate : STRING ;
  239.               date      : DateStampPtr ;
  240.               putCharFunc : HookPtr ) ;
  241.  
  242. PROCEDURE FormatString( locale        : LocalePtr ;
  243.                 fmtTemplate : STRING ;
  244.                 dataStream  : ADDRESS ;
  245.             putCharFunc : HookPtr ) : ADDRESS ;
  246.  
  247. PROCEDURE GetCatalogStr( catalog    : CatalogPtr ;
  248.              stringNum    : LONGINT ;
  249.              defaultString  : STRING ) : STRING ;
  250.  
  251. PROCEDURE GetLocaleStr( locale : LocalePtr ; stringNum : LONGINT ) : STRING ;
  252.  
  253. PROCEDURE IsAlNum ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  254. PROCEDURE IsAlpha ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  255. PROCEDURE IsCntrl ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  256. PROCEDURE IsDigit ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  257. PROCEDURE IsGraph ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  258. PROCEDURE IsLower ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  259. PROCEDURE IsPrint ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  260. PROCEDURE IsPunct ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  261. PROCEDURE IsSpace ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  262. PROCEDURE IsUpper ( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  263. PROCEDURE IsXDigit( locale : LocalePtr ; character : LONGINT ) : BOOLEAN ;
  264.  
  265. PROCEDURE OpenCatalogA( locale : LocalePtr ;
  266.             name   : STRING ;
  267.             tags   : TagItemPtr ) : CatalogPtr ;
  268.  
  269. PROCEDURE OpenCatalog( locale : LocalePtr ;
  270.                name   : STRING ;
  271.                tag1   : Tag ; .. ) : CatalogPtr ;
  272.  
  273. PROCEDURE OpenLocale( name : STRING ) : LocalePtr ;
  274.  
  275. PROCEDURE ParseDate( locale : LocalePtr ;
  276.              date : DateStampPtr ;
  277.              fmtTemplate : STRING ;
  278.              getCharFunc : HookPtr ) : BOOLEAN ;
  279.  
  280. PROCEDURE StrConvert( locale : LocalePtr ;
  281.               string : STRING ;
  282.               buffer : ADDRESS ;
  283.               bufferSize, type : LONGINT ) : LONGINT ;
  284.  
  285. PROCEDURE StrnCmp( locale : LocalePtr ;
  286.            string1 , string2 : STRING ;
  287.            length, type : LONGINT ) : LONGINT ;
  288.  
  289. END Locale.
  290.