home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_07 / LATTIC_3.ZIP / HEADERS / LOCALE.H < prev    next >
C/C++ Source or Header  |  1990-07-04  |  4KB  |  144 lines

  1. /*
  2.  * locale.h - localisation functions and macros
  3.  *
  4.  * Started 16/11/89 Alex G. Kiernan based on Lattice source
  5.  *
  6.  * Copyright (c) 1989 HiSoft and Lattice,Inc.
  7.  */
  8.  
  9. #ifndef _LOCALE_H
  10. #define _LOCALE_H
  11.  
  12. #define NULL    ((void *) 0)
  13.  
  14. #ifndef _SIZE_T
  15. #define _SIZE_T
  16. typedef unsigned long size_t;
  17. #endif
  18.  
  19. #ifndef _WCHAR_T
  20. #define _WCHAR_T
  21. typedef unsigned int wchar_t;
  22. #endif
  23.  
  24. #define LC_COLLATE    0
  25. #define LC_CTYPE    1
  26. #define LC_NUMERIC    2
  27. #define LC_TIME    3
  28. #define LC_MONETARY    4
  29. #define LC_ALL    5
  30.  
  31. struct lconv
  32. {
  33.     char *decimal_point;
  34.     char *thousands_sep;
  35.     char *grouping;
  36. #define LCONVM int_curr_symbol
  37.     char *int_curr_symbol;
  38.     char *currency_symbol;
  39.     char *mon_decimal_point;
  40.     char *mon_thousands_sep;
  41.     char *mon_grouping;
  42.     char *positive_sign;
  43.     char *negative_sign;
  44.     char int_frac_digits;
  45.     char frac_digits;
  46.     char p_cs_precedes;
  47.     char p_sep_by_space;
  48.     char n_cs_precedes;
  49.     char n_sep_by_space;
  50.     char p_sign_posn;
  51.     char n_sign_posn;
  52. };
  53.  
  54. struct __lconvn            /* lconv from LC_NUMERIC */
  55. {
  56.     char *decimal_point;
  57.     char *thousands_sep;
  58.     char *grouping;
  59. };
  60.  
  61. struct __lconvm            /* lconv from LC_MONETARY */
  62. {
  63.     char *int_curr_symbol;
  64.     char *currency_symbol;
  65.     char *mon_decimal_point;
  66.     char *mon_thousands_sep;
  67.     char *mon_grouping;
  68.     char *positive_sign;
  69.     char *negative_sign;
  70.     char int_frac_digits;
  71.     char frac_digits;
  72.     char p_cs_precedes;
  73.     char p_sep_by_space;
  74.     char n_cs_precedes;
  75.     char n_sep_by_space;
  76.     char p_sign_posn;
  77.     char n_sign_posn;
  78. };
  79.  
  80. struct __locale
  81. {
  82.     struct __locale *nxtlc; /* next locale pointer */
  83.     char *lcname;            /* locale name                LC_ALL */
  84.     char **abswday;            /* abbreviated weekday nam    LC_TIME */
  85.     char **swday;            /* full weekday names        LC_TIME */
  86.     char **absmon;            /* abbrev. month names        LC_TIME */
  87.     char **smon;            /* full month names            LC_TIME */
  88.     char **sampm;            /* names for am. and pm.    LC_TIME */
  89.     char *stzone;            /* name for timezone        LC_TIME */
  90.     int *lccomp;            /* collating sequenc        LC_COLLATE? */
  91.     int *ixfrm;                /* translate table            LC_COLLATE */
  92.     char decpt;                /* decimal point char        LC_NUMERIC */
  93.     char mb_cur_max;        /* max bytes in wide character    LC_CTYPE */
  94.     char mb_state;            /* flag for state-dep mappings    LC_CTYPE */
  95.                             /* mblen function            LC_CTYPE */
  96.     int  (*mblen)(const char *, size_t);
  97.     int  mblen_state;        /* mblen shift state        LC_CTYPE */
  98.                             /* mbtowc function            LC_CTYPE */
  99.     int  (*mbtowc)(wchar_t *,const char *, size_t);
  100.     int  mbtowc_state;        /* mbtowc shift state        LC_CTYPE */
  101.                             /* wctomb function            LC_CTYPE */
  102.     int  (*wctomb)(char *, wchar_t);
  103.     int  wctomb_state;        /* wctomb shift state        LC_CTYPE */
  104.                             /* mbstowcs function        LC_CTYPE */
  105.     size_t    (*mbstowcs)(wchar_t *,const char *, size_t);
  106.     int  mbstowcs_state;    /* mbstowcs shift state     LC_CTYPE */
  107.                             /* wcstombs function        LC_CTYPE */
  108.     size_t    (*wcstombs)(char *, const wchar_t *,size_t);
  109.     int  wcstombs_state;    /* wcstombs shift state        LC_CTYPE */
  110.     struct __lconvn    *lconvn; /* structure for lconv        LC_NUMERIC */
  111.     struct __lconvm    *lconvm; /* structure for lconv        LC_MONETARY */
  112. };
  113.  
  114. extern struct __locale *__clocale[];    /* current locale for each category */
  115. extern struct lconv  __clconv;            /* current lconv array */
  116. extern char __decpt;                    /* current decimal point character */
  117. #define DECPT __decpt
  118. extern char __mb_cur_max;
  119. extern struct __locale *__flocale;        /* first locale in list ("C") */
  120. extern struct __locale *__llocale;        /* last locale in list */
  121.  
  122. char *setlocale(int, const char *);
  123. struct lconv *localeconv(void);
  124. struct __locale *readlocale(const char *);
  125.  
  126.  
  127. /*
  128.  *      Error messages when reading a locale, stored in lclerror
  129.  */
  130.  
  131. #define LCLNAME     1    /* pathname for locale file too long */
  132. #define LCLOPEN        2    /* Unable to open locale file */
  133. #define LCLCOLL        3    /* multiple collate spec */
  134. #define LCLCTYPE    4    /* multiple c types spec */
  135. #define LCLNUMERIC    5    /* multiple numeric spec */
  136. #define LCLTIME        6    /* multiple time spec */
  137. #define LCLMONETARY    7    /* multiple monetary spec */
  138. #define LCLREAD        8    /* Error reading locale file */
  139. #define LCLEND        9    /* Missing END record */
  140.  
  141. extern int __lclerror;
  142.  
  143. #endif
  144.