X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=binutils%2Fwindres.h;h=2d0b3ffded35a96316915f066e49ddab5e62c914;hb=48bef97a1a4045d63d1b2dea4cdfca335ddfc1f8;hp=321be23f60431a501ede5ac7123b8596578b2e0a;hpb=8c2bc6877d75f8cd9073f206fab29920f73d325c;p=platform%2Fupstream%2Fbinutils.git diff --git a/binutils/windres.h b/binutils/windres.h index 321be23..2d0b3ff 100644 --- a/binutils/windres.h +++ b/binutils/windres.h @@ -1,12 +1,13 @@ /* windres.h -- header file for windres program. - Copyright 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. + Rewritten by Kai Tietz, Onevision. 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 + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -16,838 +17,106 @@ 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. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ -#include +#include "ansidecl.h" /* This is the header file for the windres program. It defines structures and declares functions used within the program. */ #include "winduni.h" - -/* 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. */ - int length; - /* Pointer to the name, which is a Unicode string. */ - unichar *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; - const 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 menu *menu; - struct rcdata_item *rcdata; - struct stringtable *stringtable; - struct rcdata_item *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_ACCELERATOR 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 19 -#define RT_VXD 20 -#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. */ - const 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. */ - unichar *caption; - /* Font point size. */ - unsigned short pointsize; - /* Font name. */ - unichar *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_item *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. */ - const 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. */ - -struct menu -{ - /* List of menuitems. */ - struct menuitem *items; - /* Help ID. I don't think there is any way to set this in an rc - file, but it can appear in the binary format. */ - unsigned long help; -}; - -/* 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; - /* Unicode text. */ - unichar *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_ENDMENU 0x080 -#define MENUITEM_HELP 0x4000 - -/* An rcdata resource is a pointer to 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; - struct - { - unsigned long length; - const char *s; - } string; - struct - { - unsigned long length; - const unichar *w; - } wstring; - struct - { - unsigned long length; - const 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. */ - int length; - /* String data if length > 0. */ - unichar *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. */ - unichar *language; - /* Strings. */ - struct ver_stringinfo *strings; - } string; - /* VarFileInfo data. */ - struct - { - /* Key. */ - unichar *key; - /* Values. */ - struct ver_varinfo *var; - } var; - } u; -}; - -/* A list of string version information. */ - -struct ver_stringinfo -{ - /* Next string. */ - struct ver_stringinfo *next; - /* Key. */ - unichar *key; - /* Value. */ - unichar *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; -}; - -/* This structure is used when converting resource information to - binary. */ - -struct bindata -{ - /* Next data. */ - struct bindata *next; - /* Length of data. */ - unsigned long length; - /* Data. */ - unsigned char *data; -}; +#include "windint.h" extern int verbose; /* Function declarations. */ -extern struct res_directory *read_rc_file - PARAMS ((const char *, const char *, const char *, int, 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 rc_res_directory *read_rc_file (const char *, const char *, const char *, int, int); +extern rc_res_directory *read_res_file (const char *); +extern rc_res_directory *read_coff_rsrc (const char *, const char *); +extern void write_rc_file (const char *, const rc_res_directory *); +extern void write_res_file (const char *, const rc_res_directory *); +extern void write_coff_file (const char *, const char *, const rc_res_directory *); -extern struct res_resource *bin_to_res - PARAMS ((struct res_id, const unsigned char *, unsigned long, int)); -extern struct bindata *res_to_bin PARAMS ((const struct res_resource *, int)); +extern rc_res_resource *bin_to_res (windres_bfd *, rc_res_id, const bfd_byte *, + rc_uint_type); +extern rc_uint_type res_to_bin (windres_bfd *, rc_uint_type, const rc_res_resource *); -extern FILE *open_file_search - PARAMS ((const char *, const char *, const char *, char **)); +extern FILE *open_file_search (const char *, const char *, const char *, char **); -extern PTR res_alloc PARAMS ((size_t)); -extern PTR reswr_alloc PARAMS ((size_t)); +extern void *res_alloc (rc_uint_type); +extern void *reswr_alloc (rc_uint_type); /* 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 *)); +extern int res_id_cmp (rc_res_id, rc_res_id); +extern void res_id_print (FILE *, rc_res_id, int); +extern void res_ids_print (FILE *, int, const rc_res_id *); +extern void res_string_to_id (rc_res_id *, const char *); +extern void res_unistring_to_id (rc_res_id *, const unichar *); /* 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 rc_res_resource *define_resource (rc_res_directory **, int, const rc_res_id *, + int); +extern rc_res_resource *define_standard_resource (rc_res_directory **, int, rc_res_id, + rc_uint_type, int); -extern int extended_dialog PARAMS ((const struct dialog *)); -extern int extended_menu PARAMS ((const struct menu *)); +extern int extended_dialog (const rc_dialog *); +extern int extended_menu (const rc_menu *); /* 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 rcparse_discard_strings PARAMS ((void)); -extern void rcparse_rcdata PARAMS ((void)); -extern void rcparse_normal PARAMS ((void)); -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 ((const char *, unsigned long, unsigned long, unsigned long, - unsigned long, unsigned long, unsigned long, unsigned long, - unsigned long)); -extern struct dialog_control *define_icon_control - PARAMS ((struct res_id, unsigned long, unsigned long, - unsigned long, unsigned long, unsigned long, unsigned long, - struct rcdata_item *, struct dialog_ex *)); -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 ((const 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_item *)); -extern struct rcdata_item *define_rcdata_string - PARAMS ((const char *, unsigned long)); -extern struct rcdata_item *define_rcdata_number PARAMS ((unsigned long, int)); -extern void define_stringtable - PARAMS ((const struct res_res_info *, unsigned long, const char *)); -extern void define_user_data - PARAMS ((struct res_id, struct res_id, const struct res_res_info *, - struct rcdata_item *)); -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 *, const char *, struct ver_stringinfo *)); -extern struct ver_info *append_ver_varfileinfo - PARAMS ((struct ver_info *, const char *, struct ver_varinfo *)); -extern struct ver_stringinfo *append_verval - PARAMS ((struct ver_stringinfo *, const char *, const char *)); -extern struct ver_varinfo *append_vertrans - PARAMS ((struct ver_varinfo *, unsigned long, unsigned long)); +extern int yyparse (void); +extern int yylex (void); +extern void yyerror (const char *); +extern void rcparse_warning (const char *); +extern void rcparse_set_language (int); +extern void rcparse_discard_strings (void); +extern void rcparse_rcdata (void); +extern void rcparse_normal (void); + +extern void define_accelerator (rc_res_id, const rc_res_res_info *, rc_accelerator *); +extern void define_bitmap (rc_res_id, const rc_res_res_info *, const char *); +extern void define_cursor (rc_res_id, const rc_res_res_info *, const char *); +extern void define_dialog (rc_res_id, const rc_res_res_info *, const rc_dialog *); +extern rc_dialog_control *define_control (const rc_res_id, rc_uint_type, rc_uint_type, + rc_uint_type, rc_uint_type, rc_uint_type, + const rc_res_id, rc_uint_type, rc_uint_type); +extern rc_dialog_control *define_icon_control (rc_res_id, rc_uint_type, rc_uint_type, + rc_uint_type, rc_uint_type, rc_uint_type, + rc_uint_type, rc_rcdata_item *, + rc_dialog_ex *); +extern void define_font (rc_res_id, const rc_res_res_info *, const char *); +extern void define_icon (rc_res_id, const rc_res_res_info *, const char *); +extern void define_menu (rc_res_id, const rc_res_res_info *, rc_menuitem *); +extern rc_menuitem *define_menuitem (const unichar *, rc_uint_type, rc_uint_type, + rc_uint_type, rc_uint_type, rc_menuitem *); +extern void define_messagetable (rc_res_id, const rc_res_res_info *, const char *); +extern void define_rcdata (rc_res_id, const rc_res_res_info *, rc_rcdata_item *); +extern void define_rcdata_file (rc_res_id, const rc_res_res_info *, const char *); +extern rc_rcdata_item *define_rcdata_string (const char *, rc_uint_type); +extern rc_rcdata_item *define_rcdata_unistring (const unichar *, rc_uint_type); +extern rc_rcdata_item *define_rcdata_number (rc_uint_type, int); +extern void define_stringtable (const rc_res_res_info *, rc_uint_type, const unichar *, int); +extern void define_user_data (rc_res_id, rc_res_id, const rc_res_res_info *, rc_rcdata_item *); +extern void define_toolbar (rc_res_id, rc_res_res_info *, rc_uint_type ,rc_uint_type ,rc_toolbar_item *); +extern void define_user_file (rc_res_id, rc_res_id, const rc_res_res_info *, const char *); +extern void define_versioninfo (rc_res_id, rc_uint_type, rc_fixed_versioninfo *, rc_ver_info *); +extern rc_ver_info *append_ver_stringfileinfo (rc_ver_info *, rc_ver_stringtable *); +extern rc_ver_stringtable *append_ver_stringtable (rc_ver_stringtable *, const char *, rc_ver_stringinfo *); +extern rc_ver_info *append_ver_varfileinfo (rc_ver_info *, const unichar *, rc_ver_varinfo *); +extern rc_ver_stringinfo *append_verval (rc_ver_stringinfo *, const unichar *, const unichar *); +extern rc_ver_varinfo *append_vertrans (rc_ver_varinfo *, rc_uint_type, rc_uint_type); + +extern bfd *windres_open_as_binary (const char *, int); +extern void windres_add_include_dir (const char *); + +extern int wr_printcomment (FILE *, const char *, ...); +extern int wr_print (FILE *, const char *, ...); +#define wr_print_flush(FP) wr_print ((FP),NULL)