Files
TeslaRel410/BORLAND/BC45/SOURCE/RTL/RTLINC/COMMON32/_LOCALE.H
T
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 07:33:26 -05:00

689 lines
16 KiB
C++

/*
*
* _LOCALE.H
*
* locale support definitions
*
*
*/
/*
* C/C++ Run Time Library - Version 1.5
*
* Copyright (c) 1992, 1994 by Borland International
* All Rights Reserved.
*
*/
#ifndef ___LOCALE_H
#define ___LOCALE_H
#if !defined(___DEFS_H)
#include <_defs.h>
#endif
#if !defined(__STDDEF_H)
#include <stddef.h>
#endif
#if !defined(__LOCALE_H)
#include <locale.h>
#endif
#if !defined(__DIR_H)
#include <dir.h>
#endif
#pragma option -a-
/* version info */
#define LCLIB_MAJOR_VERSION 1
#define LCLIB_MINOR_VERSION 0
#define LCLIB_REVISION 1
/* error codes */
#define LOCALE_NO_ERROR 0
#define LOCALE_ERROR -1
#define OSFILE_NO_ERROR 0
#define OSFILE_ERROR -1
#define MAX_COMPRESS_ELEMENT_SIZE 10
#define MAX_EXPANSION_ELEMENT_SIZE 10
#define MAX_STRING_ELEMENT_SIZE 10
#define MAX_SUBSTITUTION_ELEMENT_SIZE 10
#define MAX_LEVELS 8
#define MAX_LOCALE_NAME 25
#define MAX_DAYS 7
#define MAX_MONS 12
#define MAX_AMPM 2
#define MAX_ALT_DIGITS 100
#define MAX_ABDAY_LEN 10
#define MAX_ABMON_LEN 10
#define MAX_DAY_LEN 20
#define MAX_MON_LEN 20
#define MAX_AMPM_LEN 10
#define MAX_DTFMT_LEN 25
#define MAX_ALT_DIGIT_LEN 10
#define _AM 0
#define _PM 1
#define FORWARD_RULE 0x01
#define BACKWARD_RULE 0x02
#define SUBSTITUTE_RULE 0x04
#define NO_SUBSTITUTE_RULE 0x08
#define POSITION_RULE 0x10
#define NO_POSITION_RULE 0x20
#define MAX_LCNAME_LEN 32
#define MAX_CATNAME_LEN 32
#define MAX_CSNAME_LEN 16
#define MAX_EXPAND_CHARS 16
#define MAX_COMPRESS_CHARS 16
#define MAX_SUBSTITUTE_STRS 16
/* SBCS code set size */
#define SBCS_SIZE 256
#define _TOUPPER_ SBCS_SIZE
#define _TOLOWER_ SBCS_SIZE
#define _SBCS_ 0x0101
#define _MBCS_12_ 0x0102
#define _DBCS_ 0x0202
#define _MBCS_STATE_ 0x0000
/* type size: */
/* collation class */
#define SBCS_COLLATECLASS_TSIZE ( SBCS_SIZE + 1 )
/* collation level */
#define SBCS_COLLATELEVEL_TSIZE ( SBCS_SIZE + 1 )
/* byte size: */
/* collation class */
#define SBCS_COLLATECLASS_BSIZE ( SBCS_COLLATECLASS_TSIZE * sizeof( unsigned char ) )
/* collation level */
#define SBCS_COLLATELEVEL_BSIZE ( SBCS_COLLATELEVEL_TSIZE * sizeof( unsigned char ) )
/* type size: */
/* ctype */
#define SBCS_CTYPE_TSIZE ( SBCS_SIZE + 1 )
/* lower */
#define SBCS_LOWER_TSIZE ( SBCS_SIZE )
/* upper */
#define SBCS_UPPER_TSIZE ( SBCS_SIZE )
/* byte size: */
/* ctype */
#define SBCS_CTYPE_BSIZE ( SBCS_CTYPE_TSIZE * sizeof( unsigned char ) )
/* lower */
#define SBCS_LOWER_BSIZE ( SBCS_LOWER_TSIZE * sizeof( unsigned char ) )
/* upper */
#define SBCS_UPPER_BSIZE ( SBCS_UPPER_TSIZE * sizeof( unsigned char ) )
/* category size: */
/* LC_CTYPE */
#define SBCS_CTYPE_CATSIZE ( \
SBCS_CTYPE_BSIZE + \
SBCS_LOWER_BSIZE + \
SBCS_UPPER_BSIZE \
)
#define LC_RESERVED1 8
#define LC_RESERVED2 9
#define LC_RESERVED3 10
#define LC_RESERVED4 11
#define LC_RESERVED5 12
#define LC_RESERVED6 13
/* computed bit masks */
#define __LC_COLLATE 0x0001
#define __LC_CTYPE 0x0002
#define __LC_MONETARY 0x0004
#define __LC_NUMERIC 0x0008
#define __LC_TIME 0x0010
#define __LC_MESSAGES 0x0020
#define __LC_userdef 0x0040
#define __LC_RESERVED1 0x0080
#define __LC_RESERVED2 0x0100
#define __LC_RESERVED3 0x0200
#define __LC_RESERVED4 0x0400
#define __LC_RESERVED5 0x0800
#define __LC_RESERVED6 0x1000
#define _STATIC 0x0000
#define _DYNAMIC 0x0001
#define SEGLOC 0x02
#define LENGTH_DIFFERENCE 0x07f7f
#define CODESET_SIZE SBCS_SIZE
/* string status */
#define INSTRING1 0x00
#define INSTRING2 0x01
#define INSUBSTITUTION 0x02
#define INEXPANSION 0x04
#define STRING_ENDED 0x80
/* collation character classes */
#define CLASS_NORMAL 0x01
#define CLASS_SUBSTITUTE 0x02
#define CLASS_EXPAND 0x04
#define CLASS_COMPRESS 0x08
#define CLASS_POSITION 0x10
#define IGNORE_WEIGHT 0x00
#define POSITION_PREFIX 0x01
#define LANGVAR "LANG"
#define LOCALE_LIB "LOCALE.BLL"
#define MODIFIER_SYM (short) '@'
#define LOCALE_STR_SYM (short) ';'
#define C_LOCALE_FULL_STR "C;C;C;C;C;C;;"
#define C_LOCALE_SHORT_STR "C"
#define POSIX_LOCALE_FULL_STR "POSIX;POSIX;POSIX;POSIX;POSIX;POSIX;;"
#define POSIX_LOCALE_SHORT_STR "POSIX"
struct Collate {
unsigned short CollationID;
unsigned short nLevels;
unsigned char LevelRules[ MAX_LEVELS ];
unsigned short nTableSize;
};
struct Compression {
unsigned char ElementLength;
unsigned char CmpCollationElement[ MAX_COMPRESS_ELEMENT_SIZE ];
unsigned char LevelWeight[ MAX_LEVELS ];
};
struct Expansion {
unsigned char ExpCollationElement;
unsigned char ExpansionLength;
unsigned char LevelWeight1[ MAX_LEVELS ][ MAX_EXPANSION_ELEMENT_SIZE ];
};
struct Substitution {
unsigned char StringLength;
unsigned char StringElement[ MAX_STRING_ELEMENT_SIZE ];
unsigned char SubstitutionLength;
unsigned char SubstitutionElement[ MAX_SUBSTITUTION_ELEMENT_SIZE ];
};
struct TimeDate {
unsigned char abday[ MAX_DAYS ][ MAX_ABDAY_LEN ];
unsigned char day[ MAX_DAYS ][ MAX_DAY_LEN ];
unsigned char abmon[ MAX_MONS ][ MAX_ABMON_LEN ];
unsigned char mon[ MAX_MONS ][ MAX_MON_LEN ];
unsigned char am_pm[ MAX_AMPM ][ MAX_AMPM_LEN ];
unsigned char d_t_fmt[ MAX_DTFMT_LEN ];
unsigned char d_fmt[ MAX_DTFMT_LEN ];
unsigned char t_fmt[ MAX_DTFMT_LEN ];
unsigned char t_fmt_ampm[ MAX_DTFMT_LEN ];
unsigned char era[ MAX_DTFMT_LEN ];
unsigned char era_year[ MAX_DTFMT_LEN ];
unsigned char era_d_fmt[ MAX_DTFMT_LEN ];
unsigned char alt_digits[ MAX_ALT_DIGITS * MAX_ALT_DIGIT_LEN ];
};
struct Numeric {
unsigned char decimal_point[ 2 ];
unsigned char thousands_sep[ 10 ];
unsigned char grouping[ 20 ];
};
struct Monetary {
unsigned char int_curr_symbol[ 5 ];
unsigned char currency_symbol[ 5 ];
unsigned char mon_decimal_point[ 2 ];
unsigned char mon_thousands_sep[ 5 ];
unsigned char mon_grouping[ 5 ];
unsigned char positive_sign[ 5 ];
unsigned char negative_sign[ 5 ];
unsigned char int_frac_digits;
unsigned char frac_digits;
unsigned char p_cs_precedes;
unsigned char p_sep_by_space;
unsigned char n_cs_precedes;
unsigned char n_sep_by_space;
unsigned char p_sign_posn;
unsigned char n_sign_posn;
};
struct Messages {
unsigned char yesexpr[ 5 ];
unsigned char noexpr[ 5 ];
};
struct CategoryHeader {
unsigned short CategorySize;
char CategoryName[ MAX_CATNAME_LEN ];
short DefaultCategory;
};
struct TimeCategory {
struct CategoryHeader Header;
struct TimeDate TimeDateInfo;
};
struct NumericCategory {
struct CategoryHeader Header;
struct Numeric NumericInfo;
};
struct MonetaryCategory {
struct CategoryHeader Header;
struct Monetary MonetaryInfo;
};
struct MessagesCategory {
struct CategoryHeader Header;
struct Messages MessagesInfo;
};
struct CollateCategory {
struct CategoryHeader Header;
struct Collate CollateInfo;
};
struct CtypeCategory {
struct CategoryHeader Header;
};
struct UserCategory {
struct CategoryHeader Header;
void * UserInfo;
};
struct LocaleVersion {
unsigned char _Name[ MAX_LCNAME_LEN ];
unsigned char _Major;
unsigned char _Minor;
unsigned char _Revision;
/* padding for word alignment */
unsigned char _Reserved;
};
struct LocaleLocation {
char LocaleName[ MAX_LCNAME_LEN ];
unsigned short ID;
long LocaleOffset;
};
struct LocaleLibraryHeader {
struct LocaleVersion LocaleLibraryVersion;
unsigned short nLocales;
};
struct LocaleHeader {
struct LocaleVersion ThisVersion;
short ObjAllocType;
unsigned short LocaleID;
unsigned short LanguageID;
/* minimum bytes in a character */
unsigned char nCharMinBytes;
/* maximum bytes in a character */
unsigned char nCharMaxBytes;
/* number of LC_ categories in this locale */
short nCategories;
/* number of user defined LC_ categories in this locale */
short nUserDefCategories;
/* LC_ categories supported: bitmap */
unsigned short CategoriesSupported;
/* LC_TYPE (character type tables) */
long TypeOffset;
/* LC_COLLATE (collation table area) */
long CollationOffset;
/* LC_TIME (time structure area) */
long TimeOffset;
/* LC_MONETARY (monetary structure area) */
long MonetaryOffset;
/* LC_NUMERIC (numeric structure area) */
long NumericOffset;
/* LC_MESSAGES (message table area) */
long MessagesOffset;
/* LC_userdef (user defined data structures area) */
long UserDefinitionsOffset;
};
struct LocaleLib {
struct LocaleLibraryHeader ThisLib;
struct LocaleLocation Locales;
};
struct LocaleLibraryStatus {
struct LocaleLibraryHeader LibHdr;
struct LocaleLocation Location;
struct CategoryHeader TempCatHdr;
int Lhandle;
const char *plocalename;
int localename_len;
unsigned char LoadDefaultCategory;
struct LOCALEOBJECT *ptmplocale;
};
struct LOCALEOBJECT {
struct LocaleHeader LocaleHdr;
char LocaleString[ ( LC_LAST * MAX_LCNAME_LEN ) ];
/* LC_CTYPE */
struct CtypeCategory CtypeCat;
unsigned char *pCtype;
unsigned char *pToLower;
unsigned char *pToUpper;
/* LC_COLLATE */
struct CollateCategory CollationCat;
/* class and collation tables */
void *pClass;
/* special collation tables */
struct Expansion *pExpandTbl;
struct Compression *pCompressTbl;
struct Substitution *pSubstitutionTbl;
/* collation function */
int _RTLENTRY _EXPFUNC (*pcollate) ( const char *__s1, const char *__s2 );
/* collation transform function */
size_t _RTLENTRY _EXPFUNC (*ptransform) ( char *__s1, const char *__s2, size_t __n );
/* LC_MONETARY */
struct MonetaryCategory MonetaryCat;
/* LC_NUMERIC */
struct NumericCategory NumericCat;
/* LC_TIME */
struct TimeCategory TimeCat;
/* LC_MESSAGES */
struct MessagesCategory MessagesCat;
/* LC_userdef */
struct UserCategory UserCat;
struct LOCALEOBJECT *pNextLocale;
};
struct path_components {
char _drive_[ MAXDRIVE ];
char _dir_ [ MAXDIR ];
char _name_ [ MAXFILE ];
char _ext_ [ MAXEXT ];
};
/* macros */
#define _ISLOCALESTRING( str ) \
\
( ( (str != NULL) && strchr( str, LOCALE_STR_SYM ) != NULL ) ? 1 : 0 )
#define _CHECKVERSION( hdr ) \
\
( ( hdr._Major == LCLIB_MAJOR_VERSION ) && ( hdr._Minor == LCLIB_MINOR_VERSION ) ? LOCALE_NO_ERROR : LOCALE_ERROR )
#define _OSFILEOPEN( filename, flags, fhandle ) \
\
( fhandle = open( (const char *) filename, flags ) )
#define _OSFILESEEK( fhandle, offset, mode ) \
\
lseek( fhandle, offset, mode )
#define _OSFILEREAD( fhandle, buffer, nBytes, nRead ) \
\
( nRead = read( fhandle, buffer, nBytes ) )
#define _OSFILECLOSE( fhandle ) \
\
close( fhandle );
#define _OSMEMALLOC( nitems, size ) \
\
calloc( (size_t) nitems, (size_t) size );
#define _OSMEMFREE( memptr ) \
\
free( memptr );
/* internal prototypes */
char * __lsetlocale( int __category, const char *__locale );
char * __set_c_locale( int __category );
int __find_localecat( struct LocaleLibraryStatus *__LibStatus );
int __set_localestring_locale( int __category, const char *__locale );
int __initialize_locale( void );
int _RTLENTRY _EXPFUNC __uninitialize_locale( void );
void __locale_error( struct LocaleLibraryStatus *__LibStatus, void * __MemPtr );
int __dup_locale( struct LOCALEOBJECT **__pdstlocale, struct LOCALEOBJECT **__psrclocale );
int __delete_locale( struct LOCALEOBJECT **__pdeletelocale );
int __open_localelib( struct LocaleLibraryStatus *__LibStatus );
int __open_locale( struct LocaleLibraryStatus *__LibStatus );
int __read_localecat( struct LocaleLibraryStatus *LibStatus, int __category );
char *__read_localeenv( int __category );
int __find_localelib( char *__localelib );
char *_RTLENTRY _EXPFUNC _setlocalelib( char *__fname );
void _RTLENTRY _EXPFUNC _setlocalebuff( void _FAR *__localebuff );
void _RTLENTRY _EXPFUNC _setstrxfrm
(
size_t _RTLENTRY _EXPFUNC (*ptransform) ( char *, const char *, size_t )
);
void _RTLENTRY _EXPFUNC _setstrcoll
(
int _RTLENTRY _EXPFUNC (*pcollate) ( const char *, const char * )
);
#if defined( _MT )
void _lock_locale( void );
void _unlock_locale( void );
void _RTLENTRY _init_locale( void );
#else
#define _lock_locale()
#define _unlock_locale()
#define _init_locale()
#endif
/* externals */
extern struct LOCALEOBJECT _Clocale;
#ifdef _Windows
extern char *_argv0;
#else
extern char **_Cdecl _argv;
#endif
extern const char *_LocaleCatNames[ LC_LAST + 1 ];
extern struct LOCALEOBJECT *_pLocale;
extern struct lconv _localeconvention;
extern char _LocaleLibName[ MAXPATH + 1 ];
#define __pLocale _pLocale
#endif /* ___LOCALE_H */