#ifndef  CLIB_LOCALE_PROTOS_H
#define  CLIB_LOCALE_PROTOS_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef  EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef  LIBRARIES_LOCALE_H
#include <libraries/locale.h>
#endif
#ifndef  DOS_DOS_H
#include <dos/dos.h>
#endif
#ifndef  UTILITY_HOOKS_H
#include <utility/hooks.h>
#endif
#ifndef  UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif
#ifndef  REXX_STORAGE_H
#include <rexx/storage.h>
#endif


#ifdef __cplusplus
extern "C" {
#endif

void CloseCatalog( struct Catalog *catalog );
void CloseLocale( struct Locale *locale );

ULONG ConvToLower( struct Locale *locale, unsigned long character );
ULONG ConvToUpper( struct Locale *locale, unsigned long character );

STRPTR GetCatalogStr( struct Catalog *catalog, long stringNum,STRPTR defaultString );
STRPTR GetLocaleStr( struct Locale *locale, unsigned long stringNum );

BOOL IsAlNum( struct Locale *locale, unsigned long character );
BOOL IsAlpha( struct Locale *locale, unsigned long character );
BOOL IsCntrl( struct Locale *locale, unsigned long character );
BOOL IsDigit( struct Locale *locale, unsigned long character );
BOOL IsGraph( struct Locale *locale, unsigned long character );
BOOL IsLower( struct Locale *locale, unsigned long character );
BOOL IsPrint( struct Locale *locale, unsigned long character );
BOOL IsPunct( struct Locale *locale, unsigned long character );
BOOL IsSpace( struct Locale *locale, unsigned long character );
BOOL IsUpper( struct Locale *locale, unsigned long character );
BOOL IsXDigit( struct Locale *locale, unsigned long character );

struct Catalog *OpenCatalogA( struct Locale *locale, STRPTR name,struct TagItem *tags );
struct Catalog *OpenCatalog( struct Locale *locale, STRPTR name, Tag tag1,... );
struct Locale *OpenLocale( STRPTR name );


LONG StrnCmp( struct Locale *locale, STRPTR string1, STRPTR string2,
        long length, unsigned long type );




#ifdef __IGNORE_NOT_SUPPORTED__

void FormatDate( struct Locale *locale, STRPTR fmtTemplate,struct DateStamp *date, struct Hook *putCharFunc );
APTR FormatString( struct Locale *locale, STRPTR fmtTemplate, APTR dataStream,struct Hook *putCharFunc );
BOOL ParseDate( struct Locale *locale, struct DateStamp *date,STRPTR fmtTemplate, struct Hook *getCharFunc );
ULONG StrConvert( struct Locale *locale, STRPTR string, APTR buffer,unsigned long bufferSize, unsigned long type );

#else

#define FormatDate FormatDate__NOT_COMPATIBLE__
void FormatDate( struct __NOT_COMPATIBLE__*,struct Locale *locale, STRPTR fmtTemplate,struct DateStamp *date, struct Hook *putCharFunc );

#define FormatString FormatString__NOT_SUPPORTED__
APTR FormatString( struct __NOT_SUPPORTED__*,struct Locale *locale, STRPTR fmtTemplate, APTR dataStream,struct Hook *putCharFunc );

#define ParseDate ParseDate__NOT_SUPPORTED__
BOOL ParseDate( struct __NOT_SUPPORTED__*,struct Locale *locale, struct DateStamp *date,STRPTR fmtTemplate, struct Hook *getCharFunc );

#define StrConvert StrConvert__NOT_SUPPORTED__
ULONG StrConvert( struct __NOT_SUPPORTED__*,struct Locale *locale, STRPTR string, APTR buffer,unsigned long bufferSize, unsigned long type );

#endif





#ifdef __cplusplus
}
#endif


#endif   /* CLIB_LOCALE_PROTOS_H */
