diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-06-22 21:35:35 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-06-22 21:35:35 +0000 |
commit | 1d371d35ee4269aea572319c41143a2c0b75bda1 (patch) | |
tree | 7bf9595c48d9b7654603b5da647c323060d0e443 /binutils/windres.h | |
parent | 677a92a07d3eac1a6a484ba34784f53cbee51a74 (diff) | |
download | gdb-1d371d35ee4269aea572319c41143a2c0b75bda1.zip gdb-1d371d35ee4269aea572319c41143a2c0b75bda1.tar.gz gdb-1d371d35ee4269aea572319c41143a2c0b75bda1.tar.bz2 |
First stab at Windows resource compiler:
* windres.h: New file.
* windres.c: New file.
* resrc.c: New file.
* rcparse.y: New file.
* rclex.l: New file.
* configure.in: Define and substitute BUILD_WINDRES.
* configure: Rebuild.
* Makefile.in: Rebuild dependencies.
(WINDRES_PROG): New variable.
(PROGS): Add @BUILD_WINDRES@.
(HFILES): Add dlltool.h and windres.h.
(CFILES): Add windres.c and resrc.c.
(GENERATED_CFILES): Add rcparse.c and rclex.c.
(WINDRES_OBJS): New variable.
$(WINDRES_PROG): New target.
(rcparse.c, rcparse.h, rclex.c): New targets.
Snapshot. windres can parse and print rc files.
Diffstat (limited to 'binutils/windres.h')
-rw-r--r-- | binutils/windres.h | 820 |
1 files changed, 820 insertions, 0 deletions
diff --git a/binutils/windres.h b/binutils/windres.h new file mode 100644 index 0000000..dbb9c5c --- /dev/null +++ b/binutils/windres.h @@ -0,0 +1,820 @@ +/* windres.h -- header file for windres program. + Copyright 1997 Free Software Foundation, Inc. + Written by Ian Lance Taylor, Cygnus Support. + + This file is part of GNU Binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +#include <ansidecl.h> + +/* This is the header file for the windres program. It defines + structures and declares functions used within the program. */ + +/* We represent resources internally as a tree, similar to the tree + used in the .rsrc section of a COFF file. The root is a + res_directory structure. */ + +struct res_directory +{ + /* Resource flags. According to the MS docs, this is currently + always zero. */ + unsigned long characteristics; + /* Time/date stamp. */ + unsigned long time; + /* Major version number. */ + unsigned short major; + /* Minor version number. */ + unsigned short minor; + /* Directory entries. */ + struct res_entry *entries; +}; + +/* A resource ID is stored in a res_id structure. */ + +struct res_id +{ + /* Non-zero if this entry has a name rather than an ID. */ + unsigned int named : 1; + union + { + /* If the named field is non-zero, this is the name. */ + struct + { + /* Length of the name. */ + unsigned short length; + /* Pointer to the name, which is a Unicode string. */ + unsigned short *name; + } n; + /* If the named field is zero, this is the ID. */ + unsigned long id; + } u; +}; + +/* Each entry in the tree is a res_entry structure. We mix + directories and resources because in a COFF file all entries in a + directory are sorted together, whether the entries are + subdirectories or resources. */ + +struct res_entry +{ + /* Next entry. */ + struct res_entry *next; + /* Resource ID. */ + struct res_id id; + /* Non-zero if this entry is a subdirectory rather than a leaf. */ + unsigned int subdir : 1; + union + { + /* If the subdir field is non-zero, this is a pointer to the + subdirectory. */ + struct res_directory *dir; + /* If the subdir field is zero, this is a pointer to the resource + data. */ + struct res_resource *res; + } u; +}; + +/* Types of resources. */ + +enum res_type +{ + RES_TYPE_UNINITIALIZED, + RES_TYPE_ACCELERATOR, + RES_TYPE_BITMAP, + RES_TYPE_CURSOR, + RES_TYPE_GROUP_CURSOR, + RES_TYPE_DIALOG, + RES_TYPE_FONT, + RES_TYPE_FONTDIR, + RES_TYPE_ICON, + RES_TYPE_GROUP_ICON, + RES_TYPE_MENU, + RES_TYPE_MESSAGETABLE, + RES_TYPE_RCDATA, + RES_TYPE_STRINGTABLE, + RES_TYPE_USERDATA, + RES_TYPE_VERSIONINFO +}; + +/* A res file and a COFF file store information differently. The + res_info structures holds data which in a res file is stored with + each resource, but in a COFF file is stored elsewhere. */ + +struct res_res_info +{ + /* Language. In a COFF file, the third level of the directory is + keyed by the language, so the language of a resource is defined + by its location in the resource tree. */ + unsigned short language; + /* Characteristics of the resource. Entirely user defined. In a + COFF file, the res_directory structure has a characteristics + field, but I don't know if it's related to the one in the res + file. */ + unsigned long characteristics; + /* Version of the resource. Entirely user defined. In a COFF file, + the res_directory structure has a characteristics field, but I + don't know if it's related to the one in the res file. */ + unsigned long version; + /* Memory flags. This is a combination of the MEMFLAG values + defined below. Most of these values are historical, and are not + meaningful for win32. I don't think there is any way to store + this information in a COFF file. */ + unsigned short memflags; +}; + +/* Each resource in a COFF file has some information which can does + not appear in a res file. */ + +struct res_coff_info +{ + /* The code page used for the data. I don't really know what this + should be. */ + unsigned long codepage; + /* A resource entry in a COFF file has a reserved field, which we + record here when reading a COFF file. When writing a COFF file, + we set this field to zero. */ + unsigned long reserved; +}; + +/* Resource data is stored in a res_resource structure. */ + +struct res_resource +{ + /* The type of resource. */ + enum res_type type; + /* The data for the resource. */ + union + { + struct + { + unsigned long length; + unsigned char *data; + } data; + struct accelerator *acc; + struct cursor *cursor; + struct group_cursor *group_cursor; + struct dialog *dialog; + struct fontdir *fontdir; + struct group_icon *group_icon; + struct menuitem *menu; + struct rcdata_data *rcdata; + struct stringtable *stringtable; + struct rcdata_data *userdata; + struct versioninfo *versioninfo; + } u; + /* Information from a res file. */ + struct res_res_info res_info; + /* Information from a COFF file. */ + struct res_coff_info coff_info; +}; + +/* Memory flags in the memflags field of a struct res_resource. */ + +#define MEMFLAG_MOVEABLE 0x10 +#define MEMFLAG_PURE 0x20 +#define MEMFLAG_PRELOAD 0x40 +#define MEMFLAG_DISCARDABLE 0x1000 + +/* Standard resource type codes. These are used in the ID field of a + res_entry structure. */ + +#define RT_CURSOR 1 +#define RT_BITMAP 2 +#define RT_ICON 3 +#define RT_MENU 4 +#define RT_DIALOG 5 +#define RT_STRING 6 +#define RT_FONTDIR 7 +#define RT_FONT 8 +#define RT_ACCELERATORS 9 +#define RT_RCDATA 10 +#define RT_MESSAGETABLE 11 +#define RT_GROUP_CURSOR 12 +#define RT_GROUP_ICON 14 +#define RT_VERSION 16 +#define RT_DLGINCLUDE 17 +#define RT_PLUGPLAY 18 +#define RT_VXD 19 +#define RT_ANICURSOR 21 +#define RT_ANIICON 22 + +/* An accelerator resource is a linked list of these structures. */ + +struct accelerator +{ + /* Next accelerator. */ + struct accelerator *next; + /* Flags. A combination of the ACC values defined below. */ + unsigned short flags; + /* Key value. */ + unsigned short key; + /* Resource ID. */ + unsigned short id; +}; + +/* Accelerator flags in the flags field of a struct accelerator. + These are the same values that appear in a res file. I hope. */ + +#define ACC_VIRTKEY 0x01 +#define ACC_NOINVERT 0x02 +#define ACC_SHIFT 0x04 +#define ACC_CONTROL 0x08 +#define ACC_ALT 0x10 +#define ACC_LAST 0x80 + +/* A cursor resource. */ + +struct cursor +{ + /* X coordinate of hotspot. */ + short xhotspot; + /* Y coordinate of hotspot. */ + short yhotspot; + /* Length of bitmap data. */ + unsigned long length; + /* Data. */ + unsigned char *data; +}; + +/* A group_cursor resource is a list of group_cursor structures. */ + +struct group_cursor +{ + /* Next cursor in group. */ + struct group_cursor *next; + /* Width. */ + unsigned short width; + /* Height. */ + unsigned short height; + /* Planes. */ + unsigned short planes; + /* Bits per pixel. */ + unsigned short bits; + /* Number of bytes in cursor resource. */ + unsigned long bytes; + /* Index of cursor resource. */ + unsigned short index; +}; + +/* A dialog resource. */ + +struct dialog +{ + /* Basic window style. */ + unsigned long style; + /* Extended window style. */ + unsigned long exstyle; + /* X coordinate. */ + unsigned short x; + /* Y coordinate. */ + unsigned short y; + /* Width. */ + unsigned short width; + /* Height. */ + unsigned short height; + /* Menu name. */ + struct res_id menu; + /* Class name. */ + struct res_id class; + /* Caption. */ + char *caption; + /* Font point size. */ + unsigned short pointsize; + /* Font name. */ + char *font; + /* Extended information for a dialogex. */ + struct dialog_ex *ex; + /* Controls. */ + struct dialog_control *controls; +}; + +/* An extended dialog has additional information. */ + +struct dialog_ex +{ + /* Help ID. */ + unsigned long help; + /* Font weight. */ + unsigned short weight; + /* Whether the font is italic. */ + unsigned short italic; +}; + +/* Window style flags, from the winsup Defines.h header file. These + can appear in the style field of a struct dialog or a struct + dialog_control. */ + +#define CW_USEDEFAULT (0x80000000) +#define WS_BORDER (0x800000L) +#define WS_CAPTION (0xc00000L) +#define WS_CHILD (0x40000000L) +#define WS_CHILDWINDOW (0x40000000L) +#define WS_CLIPCHILDREN (0x2000000L) +#define WS_CLIPSIBLINGS (0x4000000L) +#define WS_DISABLED (0x8000000L) +#define WS_DLGFRAME (0x400000L) +#define WS_GROUP (0x20000L) +#define WS_HSCROLL (0x100000L) +#define WS_ICONIC (0x20000000L) +#define WS_MAXIMIZE (0x1000000L) +#define WS_MAXIMIZEBOX (0x10000L) +#define WS_MINIMIZE (0x20000000L) +#define WS_MINIMIZEBOX (0x20000L) +#define WS_OVERLAPPED (0L) +#define WS_OVERLAPPEDWINDOW (0xcf0000L) +#define WS_POPUP (0x80000000L) +#define WS_POPUPWINDOW (0x80880000L) +#define WS_SIZEBOX (0x40000L) +#define WS_SYSMENU (0x80000L) +#define WS_TABSTOP (0x10000L) +#define WS_THICKFRAME (0x40000L) +#define WS_TILED (0L) +#define WS_TILEDWINDOW (0xcf0000L) +#define WS_VISIBLE (0x10000000L) +#define WS_VSCROLL (0x200000L) +#define MDIS_ALLCHILDSTYLES (0x1) +#define BS_3STATE (0x5L) +#define BS_AUTO3STATE (0x6L) +#define BS_AUTOCHECKBOX (0x3L) +#define BS_AUTORADIOBUTTON (0x9L) +#define BS_BITMAP (0x80L) +#define BS_BOTTOM (0x800L) +#define BS_CENTER (0x300L) +#define BS_CHECKBOX (0x2L) +#define BS_DEFPUSHBUTTON (0x1L) +#define BS_GROUPBOX (0x7L) +#define BS_ICON (0x40L) +#define BS_LEFT (0x100L) +#define BS_LEFTTEXT (0x20L) +#define BS_MULTILINE (0x2000L) +#define BS_NOTIFY (0x4000L) +#define BS_OWNERDRAW (0xbL) +#define BS_PUSHBOX (0xcL) /* FIXME! What should this be? */ +#define BS_PUSHBUTTON (0L) +#define BS_PUSHLIKE (0x1000L) +#define BS_RADIOBUTTON (0x4L) +#define BS_RIGHT (0x200L) +#define BS_RIGHTBUTTON (0x20L) +#define BS_TEXT (0L) +#define BS_TOP (0x400L) +#define BS_USERBUTTON (0x8L) +#define BS_VCENTER (0xc00L) +#define CBS_AUTOHSCROLL (0x40L) +#define CBS_DISABLENOSCROLL (0x800L) +#define CBS_DROPDOWN (0x2L) +#define CBS_DROPDOWNLIST (0x3L) +#define CBS_HASSTRINGS (0x200L) +#define CBS_LOWERCASE (0x4000L) +#define CBS_NOINTEGRALHEIGHT (0x400L) +#define CBS_OEMCONVERT (0x80L) +#define CBS_OWNERDRAWFIXED (0x10L) +#define CBS_OWNERDRAWVARIABLE (0x20L) +#define CBS_SIMPLE (0x1L) +#define CBS_SORT (0x100L) +#define CBS_UPPERCASE (0x2000L) +#define ES_AUTOHSCROLL (0x80L) +#define ES_AUTOVSCROLL (0x40L) +#define ES_CENTER (0x1L) +#define ES_LEFT (0L) +#define ES_LOWERCASE (0x10L) +#define ES_MULTILINE (0x4L) +#define ES_NOHIDESEL (0x100L) +#define ES_NUMBER (0x2000L) +#define ES_OEMCONVERT (0x400L) +#define ES_PASSWORD (0x20L) +#define ES_READONLY (0x800L) +#define ES_RIGHT (0x2L) +#define ES_UPPERCASE (0x8L) +#define ES_WANTRETURN (0x1000L) +#define LBS_DISABLENOSCROLL (0x1000L) +#define LBS_EXTENDEDSEL (0x800L) +#define LBS_HASSTRINGS (0x40L) +#define LBS_MULTICOLUMN (0x200L) +#define LBS_MULTIPLESEL (0x8L) +#define LBS_NODATA (0x2000L) +#define LBS_NOINTEGRALHEIGHT (0x100L) +#define LBS_NOREDRAW (0x4L) +#define LBS_NOSEL (0x4000L) +#define LBS_NOTIFY (0x1L) +#define LBS_OWNERDRAWFIXED (0x10L) +#define LBS_OWNERDRAWVARIABLE (0x20L) +#define LBS_SORT (0x2L) +#define LBS_STANDARD (0xa00003L) +#define LBS_USETABSTOPS (0x80L) +#define LBS_WANTKEYBOARDINPUT (0x400L) +#define SBS_BOTTOMALIGN (0x4L) +#define SBS_HORZ (0L) +#define SBS_LEFTALIGN (0x2L) +#define SBS_RIGHTALIGN (0x4L) +#define SBS_SIZEBOX (0x8L) +#define SBS_SIZEBOXBOTTOMRIGHTALIGN (0x4L) +#define SBS_SIZEBOXTOPLEFTALIGN (0x2L) +#define SBS_SIZEGRIP (0x10L) +#define SBS_TOPALIGN (0x2L) +#define SBS_VERT (0x1L) +#define SS_BITMAP (0xeL) +#define SS_BLACKFRAME (0x7L) +#define SS_BLACKRECT (0x4L) +#define SS_CENTER (0x1L) +#define SS_CENTERIMAGE (0x200L) +#define SS_ENHMETAFILE (0xfL) +#define SS_ETCHEDFRAME (0x12L) +#define SS_ETCHEDHORZ (0x10L) +#define SS_ETCHEDVERT (0x11L) +#define SS_GRAYFRAME (0x8L) +#define SS_GRAYRECT (0x5L) +#define SS_ICON (0x3L) +#define SS_LEFT (0L) +#define SS_LEFTNOWORDWRAP (0xcL) +#define SS_NOPREFIX (0x80L) +#define SS_NOTIFY (0x100L) +#define SS_OWNERDRAW (0xdL) +#define SS_REALSIZEIMAGE (0x800L) +#define SS_RIGHT (0x2L) +#define SS_RIGHTJUST (0x400L) +#define SS_SIMPLE (0xbL) +#define SS_SUNKEN (0x1000L) +#define SS_USERITEM (0xaL) +#define SS_WHITEFRAME (0x9L) +#define SS_WHITERECT (0x6L) +#define DS_3DLOOK (0x4L) +#define DS_ABSALIGN (0x1L) +#define DS_CENTER (0x800L) +#define DS_CENTERMOUSE (0x1000L) +#define DS_CONTEXTHELP (0x2000L) +#define DS_CONTROL (0x400L) +#define DS_FIXEDSYS (0x8L) +#define DS_LOCALEDIT (0x20L) +#define DS_MODALFRAME (0x80L) +#define DS_NOFAILCREATE (0x10L) +#define DS_NOIDLEMSG (0x100L) +#define DS_SETFONT (0x40L) +#define DS_SETFOREGROUND (0x200L) +#define DS_SYSMODAL (0x2L) + +/* A dialog control. */ + +struct dialog_control +{ + /* Next control. */ + struct dialog_control *next; + /* ID. */ + unsigned short id; + /* Style. */ + unsigned long style; + /* Extended style. */ + unsigned long exstyle; + /* X coordinate. */ + unsigned short x; + /* Y coordinate. */ + unsigned short y; + /* Width. */ + unsigned short width; + /* Height. */ + unsigned short height; + /* Class name. */ + struct res_id class; + /* Associated text. */ + struct res_id text; + /* Extra data for the window procedure. */ + struct rcdata_data *data; + /* Help ID. Only used in an extended dialog. */ + unsigned long help; +}; + +/* Control classes. These can be used as the ID field in a struct + dialog_control. */ + +#define CTL_BUTTON 0x80 +#define CTL_EDIT 0x81 +#define CTL_STATIC 0x82 +#define CTL_LISTBOX 0x83 +#define CTL_SCROLLBAR 0x84 +#define CTL_COMBOBOX 0x85 + +/* A fontdir resource is a list of fontdir structures. */ + +struct fontdir +{ + struct fontdir *next; + /* Index of font entry. */ + short index; + /* Length of font information. */ + unsigned long length; + /* Font information. */ + unsigned char *data; +}; + +/* A group_icon resource is a list of group_icon structures. */ + +struct group_icon +{ + /* Next icon in group. */ + struct group_icon *next; + /* Width. */ + unsigned char width; + /* Height. */ + unsigned char height; + /* Color count. */ + unsigned char colors; + /* Planes. */ + unsigned short planes; + /* Bits per pixel. */ + unsigned short bits; + /* Number of bytes in cursor resource. */ + unsigned long bytes; + /* Index of cursor resource. */ + unsigned short index; +}; + +/* A menu resource is a list of menuitem structures. */ + +struct menuitem +{ + /* Next menuitem. */ + struct menuitem *next; + /* Type. In a normal menu, rather than a menuex, this is the flags + field. */ + unsigned long type; + /* State. This is only used in a menuex. */ + unsigned long state; + /* Id. */ + unsigned short id; + /* Text. */ + char *text; + /* Popup menu items for a popup. */ + struct menuitem *popup; + /* Help ID. This is only used in a menuex. */ + unsigned long help; +}; + +/* Menu item flags. These can appear in the flags field of a struct + menuitem. */ + +#define MENUITEM_GRAYED 0x001 +#define MENUITEM_INACTIVE 0x002 +#define MENUITEM_BITMAP 0x004 +#define MENUITEM_OWNERDRAW 0x100 +#define MENUITEM_CHECKED 0x008 +#define MENUITEM_POPUP 0x010 +#define MENUITEM_MENUBARBREAK 0x020 +#define MENUITEM_MENUBREAK 0x040 +#define MENUITEM_HELP 0x4000 + +/* An rcdata resource is a pointer to an rcdata_data structure. */ + +struct rcdata_data +{ + /* First data item. */ + struct rcdata_item *first; + /* Last data item. */ + struct rcdata_item *last; +}; + +/* For an rcdata resource we keep a list of rcdata_item structures. */ + +struct rcdata_item +{ + /* Next data item. */ + struct rcdata_item *next; + /* Type of data. */ + enum + { + RCDATA_WORD, + RCDATA_DWORD, + RCDATA_STRING, + RCDATA_WSTRING, + RCDATA_BUFFER + } type; + union + { + unsigned int word; + unsigned long dword; + char *string; + unsigned short *wstring; + struct + { + unsigned long length; + unsigned char *data; + } buffer; + } u; +}; + +/* A stringtable resource is a pointer to a stringtable structure. */ + +struct stringtable +{ + /* Each stringtable resource is a list of 16 unicode strings. */ + struct + { + /* Length of string. */ + unsigned short length; + /* String data if length > 0. */ + unsigned short *string; + } strings[16]; +}; + +/* A versioninfo resource points to a versioninfo structure. */ + +struct versioninfo +{ + /* Fixed version information. */ + struct fixed_versioninfo *fixed; + /* Variable version information. */ + struct ver_info *var; +}; + +/* The fixed portion of a versioninfo resource. */ + +struct fixed_versioninfo +{ + /* The file version, which is two 32 bit integers. */ + unsigned long file_version_ms; + unsigned long file_version_ls; + /* The product version, which is two 32 bit integers. */ + unsigned long product_version_ms; + unsigned long product_version_ls; + /* The file flags mask. */ + unsigned long file_flags_mask; + /* The file flags. */ + unsigned long file_flags; + /* The OS type. */ + unsigned long file_os; + /* The file type. */ + unsigned long file_type; + /* The file subtype. */ + unsigned long file_subtype; + /* The date, which in Windows is two 32 bit integers. */ + unsigned long file_date_ms; + unsigned long file_date_ls; +}; + +/* A list of variable version information. */ + +struct ver_info +{ + /* Next item. */ + struct ver_info *next; + /* Type of data. */ + enum { VERINFO_STRING, VERINFO_VAR } type; + union + { + /* StringFileInfo data. */ + struct + { + /* Language. */ + unsigned short *language; + /* Strings. */ + struct ver_stringinfo *strings; + } string; + /* VarFileInfo data. */ + struct + { + /* Key. */ + unsigned short *key; + /* Values. */ + struct ver_varinfo *var; + } var; + } u; +}; + +/* A list of string version information. */ + +struct ver_stringinfo +{ + /* Next string. */ + struct ver_stringinfo *next; + /* Key. */ + unsigned short *key; + /* Value. */ + unsigned short *value; +}; + +/* A list of variable version information. */ + +struct ver_varinfo +{ + /* Next item. */ + struct ver_varinfo *next; + /* Language ID. */ + unsigned short language; + /* Character set ID. */ + unsigned short charset; +}; + +/* Function declarations. */ + +extern struct res_directory *read_rc_file + PARAMS ((const char *, const char *, const char *, int)); +extern struct res_directory *read_res_file PARAMS ((const char *)); +extern struct res_directory *read_coff_rsrc + PARAMS ((const char *, const char *)); +extern void write_rc_file + PARAMS ((const char *, const struct res_directory *)); +extern void write_res_file + PARAMS ((const char *, const struct res_directory *)); +extern void write_coff_file + PARAMS ((const char *, const char *, const struct res_directory *)); + +extern FILE *open_file_search + PARAMS ((const char *, const char *, const char *, char **)); + +/* Resource ID handling. */ + +extern int res_id_cmp PARAMS ((struct res_id, struct res_id)); +extern void res_id_print PARAMS ((FILE *, struct res_id, int)); +extern void res_ids_print PARAMS ((FILE *, int, const struct res_id *)); +extern void res_string_to_id PARAMS ((struct res_id *, const char *)); + +/* Unicode support. */ + +extern void unicode_from_ascii + PARAMS ((unsigned short *, unsigned short **, const char *)); +extern void unicode_print PARAMS ((FILE *, const unsigned short *, int)); + +/* Manipulation of the resource tree. */ + +extern struct res_resource *define_resource + PARAMS ((struct res_directory **, int, const struct res_id *, int)); +extern struct res_resource *define_standard_resource + PARAMS ((struct res_directory **, int, struct res_id, int, int)); + +extern int extended_dialog PARAMS ((const struct dialog *)); +extern int extended_menu PARAMS ((const struct menuitem *)); + +/* Communication between the rc file support and the parser and lexer. */ + +extern int yydebug; +extern FILE *yyin; +extern char *rc_filename; +extern int rc_lineno; +extern int yyparse PARAMS ((void)); +extern int yylex PARAMS ((void)); +extern void yyerror PARAMS ((const char *)); +extern void rcparse_warning PARAMS ((const char *)); +extern void rcparse_set_language PARAMS ((int)); + +extern void define_accelerator + PARAMS ((struct res_id, const struct res_res_info *, struct accelerator *)); +extern void define_bitmap + PARAMS ((struct res_id, const struct res_res_info *, const char *)); +extern void define_cursor + PARAMS ((struct res_id, const struct res_res_info *, const char *)); +extern void define_dialog + PARAMS ((struct res_id, const struct res_res_info *, const struct dialog *)); +extern struct dialog_control *define_control + PARAMS ((char *, unsigned long, unsigned long, unsigned long, + unsigned long, unsigned long, unsigned long, unsigned long, + unsigned long)); +extern void define_font + PARAMS ((struct res_id, const struct res_res_info *, const char *)); +extern void define_icon + PARAMS ((struct res_id, const struct res_res_info *, const char *)); +extern void define_menu + PARAMS ((struct res_id, const struct res_res_info *, struct menuitem *)); +extern struct menuitem *define_menuitem + PARAMS ((char *, int, unsigned long, unsigned long, unsigned long, + struct menuitem *)); +extern void define_messagetable + PARAMS ((struct res_id, const struct res_res_info *, const char *)); +extern void define_rcdata + PARAMS ((struct res_id, const struct res_res_info *, struct rcdata_data *)); +extern struct rcdata_data *append_rcdata_item + PARAMS ((struct rcdata_data *, struct rcdata_item *)); +extern struct rcdata_data *append_rcdata_string + PARAMS ((struct rcdata_data *, char *)); +extern struct rcdata_data *append_rcdata_number + PARAMS ((struct rcdata_data *, unsigned long, int)); +extern void define_stringtable + PARAMS ((const struct res_res_info *, unsigned long, char *)); +extern void define_user_data + PARAMS ((struct res_id, struct res_id, const struct res_res_info *, + struct rcdata_data *)); +extern void define_user_file + PARAMS ((struct res_id, struct res_id, const struct res_res_info *, + const char *)); +extern void define_versioninfo + PARAMS ((struct res_id, int, struct fixed_versioninfo *, + struct ver_info *)); +extern struct ver_info *append_ver_stringfileinfo + PARAMS ((struct ver_info *, char *, struct ver_stringinfo *)); +extern struct ver_info *append_ver_varfileinfo + PARAMS ((struct ver_info *, char *, struct ver_varinfo *)); +extern struct ver_stringinfo *append_verval + PARAMS ((struct ver_stringinfo *, char *, char *)); +extern struct ver_varinfo *append_vertrans + PARAMS ((struct ver_varinfo *, unsigned long, unsigned long)); |