/*
 *
 * locale.h -- C include file defining locale.library information
 *
 * Copyright (C) 1990 Commodore Amiga Inc.  All rights reserved.
 *
 */

#ifndef _LOCALE_LOCALE_H
#define _LOCALE_LOCALE_H

#include <exec/types.h>

#define ENGLISH_LANG	"english"
#define GERMAN_LANG	"deutch"
#define FRENCH_LANG	"français"
#define SPANISH_LANG	"español"
#define ITALIAN_LANG	"italiano"
#define ROMANIAN_LANG	"româneste"

#define	LC_ALL		NULL
#define	LC_COLLATE	NULL
#define	LC_CTYPE	NULL
#define	LC_MONETARY	NULL
#define	LC_NUMERIC	NULL
#define	LC_TIME		NULL

struct lconv
{
	char	*decimal_point;		/* The character before the decimals */
	char	*thousands_sep;		/* To separate groups of digits */
	char	*grouping;		/* Indicate the size of each group */
	char	*int_curr_symbol;	/* ISO 4217 codes for currency */
	char	*currency_symbol;	/* Local currency symbol */
	char	*mon_decimal_point;	/* Decimal point for monetary values */
	char	*mon_thousands_sep;	/* Thousands separator for monetary */
	char	*mon_grouping;		/* Indicate size of each group */
	char	*positive_sign;		/* Indicate non-negative money value */
	char	*negative_sign;		/* Indicate negative monetary value */
	char	*int_frac_digits;	/* Fractional digits, international */
	char	frac_digits;		/* Number of fractional digits */
	char	p_cs_precedes;		/* Position of currency symbol, pos */
	char	p_sep_by_space;		/* Determine if separated by space */
	char	n_cs_precedes;		/* Position of currency symbol, neg */
	char	n_sep_by_space;		/* Determine if separated by space */
	char	p_sign_posn;		/* Position of positive sign */
	char	n_sign_posn;		/* Position of negative sign */
};

/*  Different countries have different formats for dates, times, money, and
 *  numbers
 */

struct Territory
{
	struct	Node Node;
	UBYTE	Flags;
	UBYTE	Version;
	UWORD	Count;

	struct	lconv lconv;		/* Monetary and numeric information */

	char	metric;			/* Identify measurement system used */
	char	*small_currency;	/* Small currency symbol */

	char	short_date1;		/* First element of short date */
	char	short_date2;		/* Second element of short date */
	char	short_date3;		/* Third element short date */
	char	*short_date_sep1;	/* First separator */
	char	*short_date_sep2;	/* Second separator */

	char	long_date1;		/* First entry of long date */
	char	long_date2;		/* Second entry of long date */
	char	long_date3;		/* Third entry of long date */
	char	long_date4;		/* Fourth entry of long date */
	char	*long_date_sep1;	/* First separator */
	char	*long_date_sep2;	/* Second separator */
	char	*long_date_sep3;	/* Third separator */

	char	time1;			/* First element of time format */
	char	time2;			/* Second element of time */
	char	time3;			/* Third element of time */
	char	time_appendix;		/* Unused. AM/PM/GMT/EDT/... */
	char	*time_sep1;		/* First time separator */
	char	*time_sep2;		/* Second time separator */
};

/*  Different languages have different collation tables, names for date strings,
 *  and character type classifications.
 */

struct Language
{
	struct	Node Node;
	UBYTE	Flags;
	UBYTE	Version;
	UWORD	Count;

	APTR	collate_1;		/* Either a table or a function */
	APTR	collate_2;
	APTR	collate_3;
	struct	DateStrings;		/* Strings used for long date format */
	char	*is[256];		/* isalpha(), islower()... table */
	char	*upper;			/* toupper(), tolower() table */
	char	*lower;			/* toupper(), tolower() table, cont. */
	char	space;			/* Hex code of space character */
};

struct Catalogue
{
	struct	Node Node;
	UBYTE	Flags;
	UBYTE	Version;
	UWORD	Count;
};

struct DateStrings
{
	char	*DAY_1;			/* Sunday */
	char	*DAY_2;			/* Monday */
	char	*DAY_3;			/* Tuesday */
	char	*DAY_4;			/* Wednesday */
	char	*DAY_5;			/* Thursday */
	char	*DAY_6;			/* Friday */
	char	*DAY_7;			/* Saturday */
	char	*ABDAY_1;		/* Sun */
	char	*ABDAY_2;		/* Mon */
	char	*ABDAY_3;		/* Tue */
	char	*ABDAY_4;		/* Wed */
	char	*ABDAY_5;		/* Thu */
	char	*ABDAY_6;		/* Fri */
	char	*ABDAY_7;		/* Sat */
	char	*MON_1;			/* January */
	char	*MON_2;			/* February */
	char	*MON_3;			/* March */
	char	*MON_4;			/* April */
	char	*MON_5;			/* May */
	char	*MON_6;			/* June */
	char	*MON_7;			/* July */
	char	*MON_8;			/* August */
	char	*MON_9;			/* September */
	char	*MON_10;		/* October */
	char	*MON_11;		/* November */
	char	*MON_12;		/* December */
	char	*MON_13;		/* Lunar 13 */
	char	*MON_14;		/* Lunar 14 */
	char	*MON_15;		/* Lunar 15 */
	char	*MON_16;		/* Lunar 16 */
	char	*ABMON_1;		/* Jan */
	char	*ABMON_2;		/* Feb */
	char	*ABMON_3;		/* Mar */
	char	*ABMON_4;		/* Apr */
	char	*ABMON_5;		/* May */
	char	*ABMON_6;		/* Jun */
	char	*ABMON_7;		/* Jul */
	char	*ABMON_8;		/* Aug */
	char	*ABMON_9;		/* Sep */
	char	*ABMON_10;		/* Oct */
	char	*ABMON_11;		/* Nov */
	char	*ABMON_12;		/* Dec */
	char	*ABMON_13;		/* Lun 13 */
	char	*ABMON_14;		/* Lun 14 */
	char	*ABMON_15;		/* Lun 15 */
	char	*ABMON_16;		/* Lun 16 */
	char	*AM_STR;		/* AM */
	char	*PM_STR;		/* PM */
};

#endif	/* _LOCALE_LOCALE_H */
