#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#ifdef __cplusplus
extern "C"
{
#endif

#if !defined __SNANLS_INC__

#define __SNANLS_INC__

/* ********************* Constants ******************** */

#define	CP_37		37		/* EBCDIC Lower English	*/

#define	CP_273		273		
#define	CP_277		277		
#define	CP_278		278	
#define	CP_280		280	
#define	CP_284		284	
#define	CP_285		285	


#define	CP_290		290		/* EBCDIC Katakana	*/

#define	CP_297		297
#define CP_423		423
#define CP_500		500
#define CP_875		875	

#define	CP_930		930		/* EBCDIC Katakana + Kanji	*/
#define	CP_931		931		/* EBCDIC Lower English + Kanji	*/
#define	CP_932		932 	/* Japanese	*/

#define	CP_933		933		/* EBCDIC Korean	*/

#define CP_935		935		/* EBCDIC Simplified Chinese */
#define CP_936		936		/* Chinese */
#define	CP_937		937		/* EBCDIC Traditional Chinese	*/

#define	CP_939		939		/* EBCDIC Extended Lower English + Kanji	*/
#define	CP_949		949		/* Korean	*/
#define	CP_950		950		/* Taiwanese	*/
#define	CP_1027	    1027	/* EBCDIC Extended Lower English	*/


#define SNA_UNICODE   1  /* Result of Conversion is Unicode */
#define SNA_MULTIBYTE 2  /* Result of Conversion is MultiByte */

/* ********************* Functions ******************** */

/* ***************************************************************** */
/*		Initialization Routine : Local Machine						 */
/*			CodePage : The CodePage which we need to support         */
/*			return   : 1 if CodePage Translations are Supported      */
/*                     0 otherwise									 */
/* ***************************************************************** */

int WINAPI SnaNlsInit(UINT CodePage);

/* ***************************************************************** */
/*																	 */
/* Translation Routine												 */
/*																	 */
/*		Input														 */
/*																	 */
/*			lpSrcStr   : Input, Source String						 */
/*																	 */
/*			lpDestStr  : Output, Translated String			         */
/*							maybe NULL if out_length is 0			 */
/*																	 */
/*			inCodePage : CodePage of incoming string				 */
/*							ignored if input is in unicode			 */
/*																	 */
/*			outCodePage: CodePage of translated string.				 */
/*							ignored if output is in unicode			 */
/*																	 */
/*			in_length  : Length of input string				         */
/*							in characters if input is multibyte      */
/*							in wide chars if input is unicode        */
/*																	 */
/*          out_length : Length of output string					 */
/*							in characters if output is multibyte     */
/*							in wide chars if output is unicode       */
/*																	 */
/*			in_type    : SNA_UNICODE - Unicode Input				 */
/*						 SNA_MULTIBYTE - MultiByte Input			 */
/*																	 */
/*			out_type   : SNA_UNICODE - Unicode Output				 */
/*						 SNA_MULTIBYTE - MultiByte Output			 */
/*																	 */
/*			Options    : Multiple usage								 */
/*							Trnsdt Options							 */
/*							Default Character for Translation (NLS)  */
/*																	 */
/*		Output														 */
/*																	 */
/*			return val : 0 - Failure								 */
/*							Use GetLastError to retrieve error		 */
/*						 Else										 */
/*							Num of chars(wide) written to lpDestStr  */
/*																	 */
/*			lpDestStr  : Translated String							 */
/*																	 */
/* 			Options    : Required buffer length if call failed		 */
/*																	 */
/*			Errors	   : (Retrieved by using GetLastError)           */
/*																	 */
/*						  ERROR_NOT_SUPPORTED						 */
/*							Possible Reasons:		  				 */
/*								NLS is not available		 		 */
/*								Input & Output are not of same type	 */
/*																	 */
/*						 ERROR_BUFFER_OVERFLOW						 */
/*							Possible Reasons:						 */
/*								Output buffer is too small           */
/*																	 */
/*						 ERROR_INVALID_PARAMETER					 */
/*							Possible Reasons:						 */
/*								in_type or out_type is faulty        */
/*																	 */
/*						 ERROR_INVALID_DATA							 */
/*							Possible Reasons:						 */
/*								input data has a lead byte at end    */
/*																	 */
/*						 ERROR_OUTOFMEMORY							 */
/*							Possible Reasons:						 */
/*								malloc failed			             */
/*																	 */
/*																	 */
/* ***************************************************************** */

int WINAPI SnaNlsMapString (LPCTSTR lpSrcStr, LPTSTR lpDestStr,
					 UINT inCodePage, UINT outCodePage,
					 int in_length,   int out_length, 
					 UINT in_type, UINT out_type,  WORD * Options);



#endif

#ifdef __cplusplus
}
#endif
#pragma option pop /*P_O_Pop*/
