126 lines
3.3 KiB
C
126 lines
3.3 KiB
C
/*
|
|
* 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' */
|
|
const char *file; /* File location for definition */
|
|
int line;
|
|
} 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 */
|
|
int version; /* The resource version for auto-translated resources */
|
|
block_t *blks; /* Array of blocks for this language */
|
|
int nblk; /* Nr of blocks in array */
|
|
} lan_blk_t;
|
|
|
|
#endif
|