| /* | 
 |  * Main definitions and externals | 
 |  * | 
 |  * Copyright 2000 Bertho A. Stultiens (BS) | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU Lesser General Public | 
 |  * License as published by the Free Software Foundation; either | 
 |  * version 2.1 of the License, or (at your option) any later version. | 
 |  * | 
 |  * This library is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |  * Lesser General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU Lesser General Public | 
 |  * License along with this library; if not, write to the Free Software | 
 |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 |  */ | 
 |  | 
 | #ifndef __WMC_WMCTYPES_H | 
 | #define __WMC_WMCTYPES_H | 
 |  | 
 | #include <stdarg.h> | 
 | #include "windef.h" | 
 | #include "winbase.h" | 
 |  | 
 | /* Byteordering defines */ | 
 | #define WMC_BO_NATIVE	0x00 | 
 | #define WMC_BO_LITTLE	0x01 | 
 | #define WMC_BO_BIG	0x02 | 
 |  | 
 | #define WMC_LOBYTE(w)		((WORD)(w) & 0xff) | 
 | #define WMC_HIBYTE(w)		(((WORD)(w) >> 8) & 0xff) | 
 | #define WMC_LOWORD(d)		((DWORD)(d) & 0xffff) | 
 | #define WMC_HIWORD(d)		(((DWORD)(d) >> 16) & 0xffff) | 
 | #define BYTESWAP_WORD(w)	((WORD)(((WORD)WMC_LOBYTE(w) << 8) + (WORD)WMC_HIBYTE(w))) | 
 | #define BYTESWAP_DWORD(d)	((DWORD)(((DWORD)BYTESWAP_WORD(WMC_LOWORD(d)) << 16) + ((DWORD)BYTESWAP_WORD(WMC_HIWORD(d))))) | 
 |  | 
 | /* | 
 |  * Tokenizer types | 
 |  */ | 
 | typedef enum tok_enum { | 
 | 	tok_null = 0, | 
 | 	tok_keyword, | 
 | 	tok_severity, | 
 | 	tok_facility, | 
 | 	tok_language | 
 | } tok_e; | 
 |  | 
 | typedef struct token { | 
 | 	tok_e		type; | 
 | 	const WCHAR	*name;		/* Parsed name of token */ | 
 | 	int		token;		/* Tokenvalue or language code */ | 
 | 	int		codepage; | 
 | 	const WCHAR	*alias; 	/* Alias or filename */ | 
 | 	int		fixed;		/* Cleared if token may change */ | 
 | } token_t; | 
 |  | 
 | typedef struct lan_cp { | 
 | 	int language; | 
 | 	int codepage; | 
 | } lan_cp_t; | 
 |  | 
 | typedef struct cp_xlat { | 
 | 	int	lan; | 
 | 	int	cpin; | 
 | 	int	cpout; | 
 | } cp_xlat_t; | 
 |  | 
 | typedef struct lanmsg { | 
 | 	int		lan;		/* Language code of message */ | 
 | 	int		cp;		/* Codepage of message */ | 
 | 	WCHAR		*msg;		/* Message text */ | 
 | 	int		len;		/* Message length including trailing '\0' */ | 
 | } lanmsg_t; | 
 |  | 
 | typedef struct msg { | 
 | 	int		id;		/* Message ID */ | 
 | 	unsigned	realid;		/* Combined message ID */ | 
 | 	WCHAR		*sym;		/* Symbolic name */ | 
 | 	int		sev;		/* Severity code */ | 
 | 	int		fac;		/* Facility code */ | 
 | 	lanmsg_t	**msgs;		/* Array message texts */ | 
 | 	int		nmsgs;		/* Number of message texts in array */ | 
 | 	int		base;		/* Base of number to print */ | 
 | 	WCHAR		*cast;		/* Typecase to use */ | 
 | } msg_t; | 
 |  | 
 | typedef enum { | 
 | 	nd_msg, | 
 | 	nd_comment | 
 | } node_e; | 
 |  | 
 | typedef struct node { | 
 | 	struct node	*next; | 
 | 	struct node	*prev; | 
 | 	node_e		type; | 
 | 	union { | 
 | 		void 	*all; | 
 | 		WCHAR	*comment; | 
 | 		msg_t	*msg; | 
 | 	} u; | 
 | } node_t; | 
 |  | 
 | typedef struct block { | 
 | 	unsigned	idlo;		/* Lowest ID in this set */ | 
 | 	unsigned	idhi;		/* Highest ID in this set */ | 
 | 	int		size;		/* Size of this set */ | 
 | 	lanmsg_t	**msgs;		/* Array of messages in this set */ | 
 | 	int		nmsg;		/* Number of array entries */ | 
 | } block_t; | 
 |  | 
 | typedef struct lan_blk { | 
 | 	struct lan_blk	*next;		/* Linkage for languages */ | 
 | 	struct lan_blk	*prev; | 
 | 	int		lan;		/* The language of this block */ | 
 | 	block_t		*blks;		/* Array of blocks for this language */ | 
 | 	int		nblk;		/* Nr of blocks in array */ | 
 | } lan_blk_t; | 
 |  | 
 | #endif |