8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 19:23:03 +01:00
firebird-mirror/src/intl/ld.h
Adriano dos Santos Fernandes bc4107c9c2 Fix MacOS UDR and Legacy_UserManager plugins not working due to not exported entry point. (#7088)
Add FB_DLL_EXPORT to public headers.

Use default visibility also for Linux/Unix (in addition to MacOS) as
user application can also be compiled with -fvisibility=hidden.
2021-12-27 08:29:04 -03:00

474 lines
11 KiB
C

/*
* PROGRAM: Intl
* MODULE: ld.h
* DESCRIPTION: Language Driver data structures
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*
* 2002.02.15 Sean Leyne - Code Cleanup, removed obsolete ports:
* - MAC ("MAC", "MAC_AUX" and "MAC_CP" defines)
* - XENIX and OS/2
*
* 2002.10.27 Sean Leyne - Code Cleanup, removed obsolete "Ultrix" port
*
* 2002.10.29 Sean Leyne - Removed obsolete "Netware" port
*
* 2002.10.30 Sean Leyne - Removed support for obsolete "MS_DOS" define
*
*/
/* ------------NOTE NOTE NOTE -----------
* This file is shared with the Language Driver kit used by PC/Windows
* products. This master is in the PC side kit, currently (931018) stored
* as DBENGINE:/area6/langdrv/h/ld.h
* with Martin Levy as module owner
* The file has been ported from ANSI C++ to K&R C, with minimal changes
* to support re-porting in the future.
* C++ comments are surrounded by C comments.
* Prototypes are #ifdef'ed out.
* Following is a bunch of remappings of InterBase data types to
* the type names as used on the PC
*/
#ifndef INTL_LD_H
#define INTL_LD_H
#ifdef CHAR
#undef CHAR
#endif
#define CHAR SCHAR
#define UINT16 USHORT
/* Following this line is LD.H from Borland Language Driver Kit */
/*
//-----------------------------------------------------------------
//
// LD.H
//
// Language Driver API header file
//
// 08-17-92 MLevy LdLibraryName[ LD_LIBNAME_LEN ] changed to pLdLibraryName.
// 08-05-92 MLevy Exposed LdExit() again.
// 06-09-92 MLevy ICELAND and BorlPORTUGUESE added.
// 05-20-92 MLevy File made.
//
//-----------------------------------------------------------------
*/
//#ifndef __LD_H
//#define __LD_H
/*
//-----------------------------------------------------------------
// DATA TYPE DEFINITIONS
//-----------------------------------------------------------------
*/
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/*
//-----------------------------------------------------------------
// API CONSTANT VALUES
//-----------------------------------------------------------------
*/
//#define YES TRUE
//#define NO FALSE
/*
// LdObject Windows resource type
*/
//#define LDRESOBJECT 1001
//#define LDOBJ_NAME1 101
//#define LDID 1002
//#define LDIDRESNAME "LDID"
/*
// Language type (file or resource)
*/
//#define LDOBJRES 1
//#define LDOBJFILE 2
//#define SECONDARY_DIFF 256
//#define TERTIARY_DIFF 512
//#define LENGTH_DIFF 1024
/*
//
// SORT/COLLATION TYPE PROVIDED BY LANGUAGE DRIVER
//
*/
//#define ASCII_SORT 1
//#define CODEPAGE_SORT ASCII_SORT
//#define DICT_SORT 2
//#define PHONETIC_SORT 3
//#define NAME_SORT 4
/*
//
// CODE PAGE/CHARACTER SET PLATFORM TYPES
//
*/
//#define DOS_CP 1
//#define OEM_CP DOS_CP
//#define WIN_CP 2
//#define ANSI_CP WIN_CP
/*
// UNIX etc.
*/
//#define SUNOS_CP 4
//#define VMS_CP 5
//#define HPUX_CP 6
//#define AIX_CP 8
//#define AUX_CP 9
/*
// SHIFT-JIS (JAPANESE DBCS)
*/
//#define SJIS_CP 255
/*
// length of descriptive language driver name (incl zero)
*/
//#define LD_SYMNAME_LEN 20
/*
// max length of language driver signature & file name (incl zero)
*/
//#define LD_SFNAME_LEN 20
/*
// max length of language driver resource file name (incl zero)
*/
//#define LD_LIBNAME_LEN 13
//#define LDSUCCESS 0
//#define LDFAILURE -1
#define REVERSE 0x01
#define EXPAND 0x02
#define SECONDARY 0x04
#define LOCAL_EXPAND 0x08
#define LOCAL_SECONDARY 0x10
/*
//
// TABLE INDEX CONSTANTS
//
*/
//#define CHARDEF_TBL 0
//#define UPPERCASE_TBL 1
//#define LOWERCASE_TBL 2
//#define EXPAND_TBL 3
//#define COMPRESS_TBL 4
//#define CASESORT_TBL 5
//#define NOCASESORT_TBL 6
//#define SOUNDEX_TBL 7
//#define LICSCP_TBL 8
//#define CPLICS_TBL 9
//#define PRIMALT_TBL 10
//#define ALTPRIM_TBL 11
//#define BASE_TBL 12
//#define EOF_VAL 13
//#define NUMBER_TBLS EOF_VAL + 1
/*
//-----------------------------------------------------------------
*/
static const unsigned SortOrderTblEntrySecondaryBits = 5;
struct SortOrderTblEntry {
// It's important that Secondary + Tertiary fits in a byte.
UINT16 Primary:8;
UINT16 Secondary:5; // SortOrderTblEntrySecondaryBits
UINT16 Tertiary:3;
UINT16 IsExpand:1;
UINT16 IsCompress:1;
};
/*
//
// CHARACTER EXPANSION STRUCTURE
//
*/
struct ExpandChar {
BYTE Ch;
BYTE ExpCh1;
BYTE ExpCh2;
};
/*
//
// CHARACTER PAIR TO SINGLE SORT WEIGHT STRUCTURE
//
*/
struct CompressPair {
BYTE CharPair[2];
SortOrderTblEntry CaseWeight;
SortOrderTblEntry NoCaseWeight;
};
/*
//-----------------------------------------------------------------
*/
/*
//-----------------------------------------------------------------
// CHARACTER/SYMBOL DEFINITION VALUES
//-----------------------------------------------------------------
*/
/*
// NO SPECIAL QUALITIES
*/
//#define CH_UNDEFINED 0x00
/*
// A NUMERIC CHARACTER
*/
//#define CH_DIGIT 0x01
/*
// AN UPPERCASE CHARACTER
*/
//#define CH_UPPER 0x02
/*
// A LOWERCASE CHARACTER
*/
//#define CH_LOWER 0x04
/*
// ALPHA CHARACTER
*/
//#define CH_ALPHA CH_LOWER + CH_UPPER
/*
// ALPHANUMERIC CHARACTER
*/
//#define CH_ALPHANUM CH_LOWER + CH_UPPER + CH_DIGIT
/*
//-----------------------------------------------------------------
// ID CODES
//-----------------------------------------------------------------
//
// PRODUCT ID
//
*/
//#define PDOX 0x1
//#define DBASE 0x2
//#define IBASE 0x4
//#define OTHER 0x8
//#define BORLAND 0x10
/*
//
// COUNTRY/LANGUAGE ID
//
*/
/*
//#define US 1
//#define CANADA 2
//#define LATINAMER 3
//#define NEDERLANDS 31
//#define BELGIUM 32
//#define FRANCE 33
//#define SPAIN 34
//#define HUNGARY 36
//#define YUGOSLAVIA 38
//#define ITALY 39
//#define SWITZ 41
//#define CZECH 42
//#define UK 44
//#define DENMARK 45
//#define SWEDEN 46
//#define NORWAY 47
//#define POLAND 48
//#define GERMANY 49
//#define BRAZIL 55
//#define INTL 61
//#define PORTUGAL 351
//#define FINLAND 358
//#define JAPAN 81
//#define ICELAND 354
//#define NORDAN DENMARK + NORWAY
//#define SWEDFIN SWEDEN + FINLAND
*/
/*
//
// UNIQUE LANGUAGE DRIVER ID
//
*/
/*
// Paradox
*/
/*
//#define pxUS 1
//#define pxINTL 2
//#define pxJAPANESE 3
//#define pxNORDAN 4
//#define pxNORDAN4 5
//#define pxSWEDFIN 6
*/
/*
// dBASE
*/
/*
//#define dbARABIC 7
//#define dbDANISH 8
//#define dbDUTCH 9
//#define dbDUTCH2 10
//#define dbFINNISH 11
//#define dbFINNISH2 12
//#define dbFRENCH 13
//#define dbFRENCH2 14
//#define dbGERMAN 15
//#define dbGERMAN2 16
//#define dbITALIAN 17
//#define dbITALIAN2 18
//#define dbJAPANESE 19
//#define dbSPANISH2 20
//#define dbSWEDISH 21
//#define dbSWEDISH2 22
//#define dbNORWEGIAN 23
//#define dbSPANISH 24
//#define dbUK 25
//#define dbUK2 26
//#define dbUS 27
//#define dbFRENCHCAN 28
//#define dbFRENCHCAN2 29
//#define dbFRENCHCAN3 30
//#define dbCZECH 31
//#define dbCZECH2 32
//#define dbGREEK 33
//#define dbHUNGARIAN 34
//#define dbPOLISH 35
//#define dbPORTUGUESE 36
//#define dbPORTUGUESE2 37
//#define dbRUSSIAN 38
*/
/*
// Borland
*/
/*
//#define BorlDANISH 39
//#define BorlDUTCH 40
//#define BorlFINNISH 41
//#define BorlFRENCH 42
//#define BorlCANADIAN 43
//#define BorlGERMAN 44
//#define BorlICELANDIC 45
//#define BorlITALIAN 46
//#define BorlJAPANESE 47
//#define BorlNORWEGIAN 48
//#define BorlSPANISH 49
//#define BorlSPANISH2 50
//#define BorlSWEDISH 51
//#define BorlUK 52
//#define BorlUS 53
//#define BorlPORTUGUESE 54
//#define dbUS2 55
*/
/*
// User Defined 201 - 254
*/
/*
//#define USERDEFINED_MIN 201
//#define USERDEFINED_MAX 255
*/
/*
//-----------------------------------------------------------------
// ERROR CODES
//-----------------------------------------------------------------
*/
//#define ERRBASE_LDAPI 0x7000
/*
// no errors at all
*/
//#define LDERR_NONE LDSUCCESS
/*
// LD memory could be allocated
*/
//#define LDERR_NOMEMORY ERRBASE_LDAPI + 0xA1
/*
// LD file corrupt/could not be read
*/
//#define LDERR_FILECORRUPT ERRBASE_LDAPI + 0xA2
/*
// LD version mismatch
*/
//#define LDERR_OLDVERSION ERRBASE_LDAPI + 0xA3
/*
// LD table not supported
*/
//#define LDERR_NOTSUPPORTED ERRBASE_LDAPI + 0xA4
/*
// LD file not accessible
*/
//#define LDERR_FILEOPEN ERRBASE_LDAPI + 0xA5
/*
// LD resource not accessible
*/
//#define LDERR_RESOPEN ERRBASE_LDAPI + 0xA6
/*
// unknown
*/
//#define LDERR_UNKNOWN ERRBASE_LDAPI + 0xA7
//#endif
#endif /* INTL_LD_H */