source: trunk/src/binutils/binutils/windres.h@ 610

Last change on this file since 610 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 23.2 KB
Line 
1/* windres.h -- header file for windres program.
2 Copyright 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
3 Written by Ian Lance Taylor, Cygnus Support.
4
5 This file is part of GNU Binutils.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. */
21
22#include "ansidecl.h"
23
24/* This is the header file for the windres program. It defines
25 structures and declares functions used within the program. */
26
27#include "winduni.h"
28
29/* We represent resources internally as a tree, similar to the tree
30 used in the .rsrc section of a COFF file. The root is a
31 res_directory structure. */
32
33struct res_directory
34{
35 /* Resource flags. According to the MS docs, this is currently
36 always zero. */
37 unsigned long characteristics;
38 /* Time/date stamp. */
39 unsigned long time;
40 /* Major version number. */
41 unsigned short major;
42 /* Minor version number. */
43 unsigned short minor;
44 /* Directory entries. */
45 struct res_entry *entries;
46};
47
48/* A resource ID is stored in a res_id structure. */
49
50struct res_id
51{
52 /* Non-zero if this entry has a name rather than an ID. */
53 unsigned int named : 1;
54 union
55 {
56 /* If the named field is non-zero, this is the name. */
57 struct
58 {
59 /* Length of the name. */
60 int length;
61 /* Pointer to the name, which is a Unicode string. */
62 unichar *name;
63 } n;
64 /* If the named field is zero, this is the ID. */
65 unsigned long id;
66 } u;
67};
68
69/* Each entry in the tree is a res_entry structure. We mix
70 directories and resources because in a COFF file all entries in a
71 directory are sorted together, whether the entries are
72 subdirectories or resources. */
73
74struct res_entry
75{
76 /* Next entry. */
77 struct res_entry *next;
78 /* Resource ID. */
79 struct res_id id;
80 /* Non-zero if this entry is a subdirectory rather than a leaf. */
81 unsigned int subdir : 1;
82 union
83 {
84 /* If the subdir field is non-zero, this is a pointer to the
85 subdirectory. */
86 struct res_directory *dir;
87 /* If the subdir field is zero, this is a pointer to the resource
88 data. */
89 struct res_resource *res;
90 } u;
91};
92
93/* Types of resources. */
94
95enum res_type
96{
97 RES_TYPE_UNINITIALIZED,
98 RES_TYPE_ACCELERATOR,
99 RES_TYPE_BITMAP,
100 RES_TYPE_CURSOR,
101 RES_TYPE_GROUP_CURSOR,
102 RES_TYPE_DIALOG,
103 RES_TYPE_FONT,
104 RES_TYPE_FONTDIR,
105 RES_TYPE_ICON,
106 RES_TYPE_GROUP_ICON,
107 RES_TYPE_MENU,
108 RES_TYPE_MESSAGETABLE,
109 RES_TYPE_RCDATA,
110 RES_TYPE_STRINGTABLE,
111 RES_TYPE_USERDATA,
112 RES_TYPE_VERSIONINFO
113};
114
115/* A res file and a COFF file store information differently. The
116 res_info structures holds data which in a res file is stored with
117 each resource, but in a COFF file is stored elsewhere. */
118
119struct res_res_info
120{
121 /* Language. In a COFF file, the third level of the directory is
122 keyed by the language, so the language of a resource is defined
123 by its location in the resource tree. */
124 unsigned short language;
125 /* Characteristics of the resource. Entirely user defined. In a
126 COFF file, the res_directory structure has a characteristics
127 field, but I don't know if it's related to the one in the res
128 file. */
129 unsigned long characteristics;
130 /* Version of the resource. Entirely user defined. In a COFF file,
131 the res_directory structure has a characteristics field, but I
132 don't know if it's related to the one in the res file. */
133 unsigned long version;
134 /* Memory flags. This is a combination of the MEMFLAG values
135 defined below. Most of these values are historical, and are not
136 meaningful for win32. I don't think there is any way to store
137 this information in a COFF file. */
138 unsigned short memflags;
139};
140
141/* Each resource in a COFF file has some information which can does
142 not appear in a res file. */
143
144struct res_coff_info
145{
146 /* The code page used for the data. I don't really know what this
147 should be. */
148 unsigned long codepage;
149 /* A resource entry in a COFF file has a reserved field, which we
150 record here when reading a COFF file. When writing a COFF file,
151 we set this field to zero. */
152 unsigned long reserved;
153};
154
155/* Resource data is stored in a res_resource structure. */
156
157struct res_resource
158{
159 /* The type of resource. */
160 enum res_type type;
161 /* The data for the resource. */
162 union
163 {
164 struct
165 {
166 unsigned long length;
167 const unsigned char *data;
168 } data;
169 struct accelerator *acc;
170 struct cursor *cursor;
171 struct group_cursor *group_cursor;
172 struct dialog *dialog;
173 struct fontdir *fontdir;
174 struct group_icon *group_icon;
175 struct menu *menu;
176 struct rcdata_item *rcdata;
177 struct stringtable *stringtable;
178 struct rcdata_item *userdata;
179 struct versioninfo *versioninfo;
180 } u;
181 /* Information from a res file. */
182 struct res_res_info res_info;
183 /* Information from a COFF file. */
184 struct res_coff_info coff_info;
185};
186
187#define SUBLANG_SHIFT 10
188
189/* Memory flags in the memflags field of a struct res_resource. */
190
191#define MEMFLAG_MOVEABLE 0x10
192#define MEMFLAG_PURE 0x20
193#define MEMFLAG_PRELOAD 0x40
194#define MEMFLAG_DISCARDABLE 0x1000
195
196/* Standard resource type codes. These are used in the ID field of a
197 res_entry structure. */
198
199#define RT_CURSOR 1
200#define RT_BITMAP 2
201#define RT_ICON 3
202#define RT_MENU 4
203#define RT_DIALOG 5
204#define RT_STRING 6
205#define RT_FONTDIR 7
206#define RT_FONT 8
207#define RT_ACCELERATOR 9
208#define RT_RCDATA 10
209#define RT_MESSAGETABLE 11
210#define RT_GROUP_CURSOR 12
211#define RT_GROUP_ICON 14
212#define RT_VERSION 16
213#define RT_DLGINCLUDE 17
214#define RT_PLUGPLAY 19
215#define RT_VXD 20
216#define RT_ANICURSOR 21
217#define RT_ANIICON 22
218
219/* An accelerator resource is a linked list of these structures. */
220
221struct accelerator
222{
223 /* Next accelerator. */
224 struct accelerator *next;
225 /* Flags. A combination of the ACC values defined below. */
226 unsigned short flags;
227 /* Key value. */
228 unsigned short key;
229 /* Resource ID. */
230 unsigned short id;
231};
232
233/* Accelerator flags in the flags field of a struct accelerator.
234 These are the same values that appear in a res file. I hope. */
235
236#define ACC_VIRTKEY 0x01
237#define ACC_NOINVERT 0x02
238#define ACC_SHIFT 0x04
239#define ACC_CONTROL 0x08
240#define ACC_ALT 0x10
241#define ACC_LAST 0x80
242
243/* A cursor resource. */
244
245struct cursor
246{
247 /* X coordinate of hotspot. */
248 short xhotspot;
249 /* Y coordinate of hotspot. */
250 short yhotspot;
251 /* Length of bitmap data. */
252 unsigned long length;
253 /* Data. */
254 const unsigned char *data;
255};
256
257/* A group_cursor resource is a list of group_cursor structures. */
258
259struct group_cursor
260{
261 /* Next cursor in group. */
262 struct group_cursor *next;
263 /* Width. */
264 unsigned short width;
265 /* Height. */
266 unsigned short height;
267 /* Planes. */
268 unsigned short planes;
269 /* Bits per pixel. */
270 unsigned short bits;
271 /* Number of bytes in cursor resource. */
272 unsigned long bytes;
273 /* Index of cursor resource. */
274 unsigned short index;
275};
276
277/* A dialog resource. */
278
279struct dialog
280{
281 /* Basic window style. */
282 unsigned long style;
283 /* Extended window style. */
284 unsigned long exstyle;
285 /* X coordinate. */
286 unsigned short x;
287 /* Y coordinate. */
288 unsigned short y;
289 /* Width. */
290 unsigned short width;
291 /* Height. */
292 unsigned short height;
293 /* Menu name. */
294 struct res_id menu;
295 /* Class name. */
296 struct res_id class;
297 /* Caption. */
298 unichar *caption;
299 /* Font point size. */
300 unsigned short pointsize;
301 /* Font name. */
302 unichar *font;
303 /* Extended information for a dialogex. */
304 struct dialog_ex *ex;
305 /* Controls. */
306 struct dialog_control *controls;
307};
308
309/* An extended dialog has additional information. */
310
311struct dialog_ex
312{
313 /* Help ID. */
314 unsigned long help;
315 /* Font weight. */
316 unsigned short weight;
317 /* Whether the font is italic. */
318 unsigned char italic;
319 /* Character set. */
320 unsigned char charset;
321};
322
323/* Window style flags, from the winsup Defines.h header file. These
324 can appear in the style field of a struct dialog or a struct
325 dialog_control. */
326
327#define CW_USEDEFAULT (0x80000000)
328#define WS_BORDER (0x800000L)
329#define WS_CAPTION (0xc00000L)
330#define WS_CHILD (0x40000000L)
331#define WS_CHILDWINDOW (0x40000000L)
332#define WS_CLIPCHILDREN (0x2000000L)
333#define WS_CLIPSIBLINGS (0x4000000L)
334#define WS_DISABLED (0x8000000L)
335#define WS_DLGFRAME (0x400000L)
336#define WS_GROUP (0x20000L)
337#define WS_HSCROLL (0x100000L)
338#define WS_ICONIC (0x20000000L)
339#define WS_MAXIMIZE (0x1000000L)
340#define WS_MAXIMIZEBOX (0x10000L)
341#define WS_MINIMIZE (0x20000000L)
342#define WS_MINIMIZEBOX (0x20000L)
343#define WS_OVERLAPPED (0L)
344#define WS_OVERLAPPEDWINDOW (0xcf0000L)
345#define WS_POPUP (0x80000000L)
346#define WS_POPUPWINDOW (0x80880000L)
347#define WS_SIZEBOX (0x40000L)
348#define WS_SYSMENU (0x80000L)
349#define WS_TABSTOP (0x10000L)
350#define WS_THICKFRAME (0x40000L)
351#define WS_TILED (0L)
352#define WS_TILEDWINDOW (0xcf0000L)
353#define WS_VISIBLE (0x10000000L)
354#define WS_VSCROLL (0x200000L)
355#define MDIS_ALLCHILDSTYLES (0x1)
356#define BS_3STATE (0x5L)
357#define BS_AUTO3STATE (0x6L)
358#define BS_AUTOCHECKBOX (0x3L)
359#define BS_AUTORADIOBUTTON (0x9L)
360#define BS_BITMAP (0x80L)
361#define BS_BOTTOM (0x800L)
362#define BS_CENTER (0x300L)
363#define BS_CHECKBOX (0x2L)
364#define BS_DEFPUSHBUTTON (0x1L)
365#define BS_GROUPBOX (0x7L)
366#define BS_ICON (0x40L)
367#define BS_LEFT (0x100L)
368#define BS_LEFTTEXT (0x20L)
369#define BS_MULTILINE (0x2000L)
370#define BS_NOTIFY (0x4000L)
371#define BS_OWNERDRAW (0xbL)
372#define BS_PUSHBOX (0xcL) /* FIXME! What should this be? */
373#define BS_PUSHBUTTON (0L)
374#define BS_PUSHLIKE (0x1000L)
375#define BS_RADIOBUTTON (0x4L)
376#define BS_RIGHT (0x200L)
377#define BS_RIGHTBUTTON (0x20L)
378#define BS_TEXT (0L)
379#define BS_TOP (0x400L)
380#define BS_USERBUTTON (0x8L)
381#define BS_VCENTER (0xc00L)
382#define CBS_AUTOHSCROLL (0x40L)
383#define CBS_DISABLENOSCROLL (0x800L)
384#define CBS_DROPDOWN (0x2L)
385#define CBS_DROPDOWNLIST (0x3L)
386#define CBS_HASSTRINGS (0x200L)
387#define CBS_LOWERCASE (0x4000L)
388#define CBS_NOINTEGRALHEIGHT (0x400L)
389#define CBS_OEMCONVERT (0x80L)
390#define CBS_OWNERDRAWFIXED (0x10L)
391#define CBS_OWNERDRAWVARIABLE (0x20L)
392#define CBS_SIMPLE (0x1L)
393#define CBS_SORT (0x100L)
394#define CBS_UPPERCASE (0x2000L)
395#define ES_AUTOHSCROLL (0x80L)
396#define ES_AUTOVSCROLL (0x40L)
397#define ES_CENTER (0x1L)
398#define ES_LEFT (0L)
399#define ES_LOWERCASE (0x10L)
400#define ES_MULTILINE (0x4L)
401#define ES_NOHIDESEL (0x100L)
402#define ES_NUMBER (0x2000L)
403#define ES_OEMCONVERT (0x400L)
404#define ES_PASSWORD (0x20L)
405#define ES_READONLY (0x800L)
406#define ES_RIGHT (0x2L)
407#define ES_UPPERCASE (0x8L)
408#define ES_WANTRETURN (0x1000L)
409#define LBS_DISABLENOSCROLL (0x1000L)
410#define LBS_EXTENDEDSEL (0x800L)
411#define LBS_HASSTRINGS (0x40L)
412#define LBS_MULTICOLUMN (0x200L)
413#define LBS_MULTIPLESEL (0x8L)
414#define LBS_NODATA (0x2000L)
415#define LBS_NOINTEGRALHEIGHT (0x100L)
416#define LBS_NOREDRAW (0x4L)
417#define LBS_NOSEL (0x4000L)
418#define LBS_NOTIFY (0x1L)
419#define LBS_OWNERDRAWFIXED (0x10L)
420#define LBS_OWNERDRAWVARIABLE (0x20L)
421#define LBS_SORT (0x2L)
422#define LBS_STANDARD (0xa00003L)
423#define LBS_USETABSTOPS (0x80L)
424#define LBS_WANTKEYBOARDINPUT (0x400L)
425#define SBS_BOTTOMALIGN (0x4L)
426#define SBS_HORZ (0L)
427#define SBS_LEFTALIGN (0x2L)
428#define SBS_RIGHTALIGN (0x4L)
429#define SBS_SIZEBOX (0x8L)
430#define SBS_SIZEBOXBOTTOMRIGHTALIGN (0x4L)
431#define SBS_SIZEBOXTOPLEFTALIGN (0x2L)
432#define SBS_SIZEGRIP (0x10L)
433#define SBS_TOPALIGN (0x2L)
434#define SBS_VERT (0x1L)
435#define SS_BITMAP (0xeL)
436#define SS_BLACKFRAME (0x7L)
437#define SS_BLACKRECT (0x4L)
438#define SS_CENTER (0x1L)
439#define SS_CENTERIMAGE (0x200L)
440#define SS_ENHMETAFILE (0xfL)
441#define SS_ETCHEDFRAME (0x12L)
442#define SS_ETCHEDHORZ (0x10L)
443#define SS_ETCHEDVERT (0x11L)
444#define SS_GRAYFRAME (0x8L)
445#define SS_GRAYRECT (0x5L)
446#define SS_ICON (0x3L)
447#define SS_LEFT (0L)
448#define SS_LEFTNOWORDWRAP (0xcL)
449#define SS_NOPREFIX (0x80L)
450#define SS_NOTIFY (0x100L)
451#define SS_OWNERDRAW (0xdL)
452#define SS_REALSIZEIMAGE (0x800L)
453#define SS_RIGHT (0x2L)
454#define SS_RIGHTJUST (0x400L)
455#define SS_SIMPLE (0xbL)
456#define SS_SUNKEN (0x1000L)
457#define SS_USERITEM (0xaL)
458#define SS_WHITEFRAME (0x9L)
459#define SS_WHITERECT (0x6L)
460#define DS_3DLOOK (0x4L)
461#define DS_ABSALIGN (0x1L)
462#define DS_CENTER (0x800L)
463#define DS_CENTERMOUSE (0x1000L)
464#define DS_CONTEXTHELP (0x2000L)
465#define DS_CONTROL (0x400L)
466#define DS_FIXEDSYS (0x8L)
467#define DS_LOCALEDIT (0x20L)
468#define DS_MODALFRAME (0x80L)
469#define DS_NOFAILCREATE (0x10L)
470#define DS_NOIDLEMSG (0x100L)
471#define DS_SETFONT (0x40L)
472#define DS_SETFOREGROUND (0x200L)
473#define DS_SYSMODAL (0x2L)
474
475/* A dialog control. */
476
477struct dialog_control
478{
479 /* Next control. */
480 struct dialog_control *next;
481 /* ID. */
482 unsigned short id;
483 /* Style. */
484 unsigned long style;
485 /* Extended style. */
486 unsigned long exstyle;
487 /* X coordinate. */
488 unsigned short x;
489 /* Y coordinate. */
490 unsigned short y;
491 /* Width. */
492 unsigned short width;
493 /* Height. */
494 unsigned short height;
495 /* Class name. */
496 struct res_id class;
497 /* Associated text. */
498 struct res_id text;
499 /* Extra data for the window procedure. */
500 struct rcdata_item *data;
501 /* Help ID. Only used in an extended dialog. */
502 unsigned long help;
503};
504
505/* Control classes. These can be used as the ID field in a struct
506 dialog_control. */
507
508#define CTL_BUTTON 0x80
509#define CTL_EDIT 0x81
510#define CTL_STATIC 0x82
511#define CTL_LISTBOX 0x83
512#define CTL_SCROLLBAR 0x84
513#define CTL_COMBOBOX 0x85
514
515/* A fontdir resource is a list of fontdir structures. */
516
517struct fontdir
518{
519 struct fontdir *next;
520 /* Index of font entry. */
521 short index;
522 /* Length of font information. */
523 unsigned long length;
524 /* Font information. */
525 const unsigned char *data;
526};
527
528/* A group_icon resource is a list of group_icon structures. */
529
530struct group_icon
531{
532 /* Next icon in group. */
533 struct group_icon *next;
534 /* Width. */
535 unsigned char width;
536 /* Height. */
537 unsigned char height;
538 /* Color count. */
539 unsigned char colors;
540 /* Planes. */
541 unsigned short planes;
542 /* Bits per pixel. */
543 unsigned short bits;
544 /* Number of bytes in cursor resource. */
545 unsigned long bytes;
546 /* Index of cursor resource. */
547 unsigned short index;
548};
549
550/* A menu resource. */
551
552struct menu
553{
554 /* List of menuitems. */
555 struct menuitem *items;
556 /* Help ID. I don't think there is any way to set this in an rc
557 file, but it can appear in the binary format. */
558 unsigned long help;
559};
560
561/* A menu resource is a list of menuitem structures. */
562
563struct menuitem
564{
565 /* Next menuitem. */
566 struct menuitem *next;
567 /* Type. In a normal menu, rather than a menuex, this is the flags
568 field. */
569 unsigned long type;
570 /* State. This is only used in a menuex. */
571 unsigned long state;
572 /* Id. */
573 unsigned short id;
574 /* Unicode text. */
575 unichar *text;
576 /* Popup menu items for a popup. */
577 struct menuitem *popup;
578 /* Help ID. This is only used in a menuex. */
579 unsigned long help;
580};
581
582/* Menu item flags. These can appear in the flags field of a struct
583 menuitem. */
584
585#define MENUITEM_GRAYED 0x001
586#define MENUITEM_INACTIVE 0x002
587#define MENUITEM_BITMAP 0x004
588#define MENUITEM_OWNERDRAW 0x100
589#define MENUITEM_CHECKED 0x008
590#define MENUITEM_POPUP 0x010
591#define MENUITEM_MENUBARBREAK 0x020
592#define MENUITEM_MENUBREAK 0x040
593#define MENUITEM_ENDMENU 0x080
594#define MENUITEM_HELP 0x4000
595
596/* An rcdata resource is a pointer to a list of rcdata_item
597 structures. */
598
599struct rcdata_item
600{
601 /* Next data item. */
602 struct rcdata_item *next;
603 /* Type of data. */
604 enum
605 {
606 RCDATA_WORD,
607 RCDATA_DWORD,
608 RCDATA_STRING,
609 RCDATA_WSTRING,
610 RCDATA_BUFFER
611 } type;
612 union
613 {
614 unsigned int word;
615 unsigned long dword;
616 struct
617 {
618 unsigned long length;
619 const char *s;
620 } string;
621 struct
622 {
623 unsigned long length;
624 const unichar *w;
625 } wstring;
626 struct
627 {
628 unsigned long length;
629 const unsigned char *data;
630 } buffer;
631 } u;
632};
633
634/* A stringtable resource is a pointer to a stringtable structure. */
635
636struct stringtable
637{
638 /* Each stringtable resource is a list of 16 unicode strings. */
639 struct
640 {
641 /* Length of string. */
642 int length;
643 /* String data if length > 0. */
644 unichar *string;
645 } strings[16];
646};
647
648/* A versioninfo resource points to a versioninfo structure. */
649
650struct versioninfo
651{
652 /* Fixed version information. */
653 struct fixed_versioninfo *fixed;
654 /* Variable version information. */
655 struct ver_info *var;
656};
657
658/* The fixed portion of a versioninfo resource. */
659
660struct fixed_versioninfo
661{
662 /* The file version, which is two 32 bit integers. */
663 unsigned long file_version_ms;
664 unsigned long file_version_ls;
665 /* The product version, which is two 32 bit integers. */
666 unsigned long product_version_ms;
667 unsigned long product_version_ls;
668 /* The file flags mask. */
669 unsigned long file_flags_mask;
670 /* The file flags. */
671 unsigned long file_flags;
672 /* The OS type. */
673 unsigned long file_os;
674 /* The file type. */
675 unsigned long file_type;
676 /* The file subtype. */
677 unsigned long file_subtype;
678 /* The date, which in Windows is two 32 bit integers. */
679 unsigned long file_date_ms;
680 unsigned long file_date_ls;
681};
682
683/* A list of variable version information. */
684
685struct ver_info
686{
687 /* Next item. */
688 struct ver_info *next;
689 /* Type of data. */
690 enum { VERINFO_STRING, VERINFO_VAR } type;
691 union
692 {
693 /* StringFileInfo data. */
694 struct
695 {
696 /* Language. */
697 unichar *language;
698 /* Strings. */
699 struct ver_stringinfo *strings;
700 } string;
701 /* VarFileInfo data. */
702 struct
703 {
704 /* Key. */
705 unichar *key;
706 /* Values. */
707 struct ver_varinfo *var;
708 } var;
709 } u;
710};
711
712/* A list of string version information. */
713
714struct ver_stringinfo
715{
716 /* Next string. */
717 struct ver_stringinfo *next;
718 /* Key. */
719 unichar *key;
720 /* Value. */
721 unichar *value;
722};
723
724/* A list of variable version information. */
725
726struct ver_varinfo
727{
728 /* Next item. */
729 struct ver_varinfo *next;
730 /* Language ID. */
731 unsigned short language;
732 /* Character set ID. */
733 unsigned short charset;
734};
735
736/* This structure is used when converting resource information to
737 binary. */
738
739struct bindata
740{
741 /* Next data. */
742 struct bindata *next;
743 /* Length of data. */
744 unsigned long length;
745 /* Data. */
746 unsigned char *data;
747};
748
749extern int verbose;
750
751/* Function declarations. */
752
753extern struct res_directory *read_rc_file
754 PARAMS ((const char *, const char *, const char *, int, int));
755extern struct res_directory *read_res_file PARAMS ((const char *));
756extern struct res_directory *read_coff_rsrc
757 PARAMS ((const char *, const char *));
758extern void write_rc_file
759 PARAMS ((const char *, const struct res_directory *));
760extern void write_res_file
761 PARAMS ((const char *, const struct res_directory *));
762extern void write_coff_file
763 PARAMS ((const char *, const char *, const struct res_directory *));
764
765extern struct res_resource *bin_to_res
766 PARAMS ((struct res_id, const unsigned char *, unsigned long, int));
767extern struct bindata *res_to_bin PARAMS ((const struct res_resource *, int));
768
769extern FILE *open_file_search
770 PARAMS ((const char *, const char *, const char *, char **));
771
772extern PTR res_alloc PARAMS ((size_t));
773extern PTR reswr_alloc PARAMS ((size_t));
774
775/* Resource ID handling. */
776
777extern int res_id_cmp PARAMS ((struct res_id, struct res_id));
778extern void res_id_print PARAMS ((FILE *, struct res_id, int));
779extern void res_ids_print PARAMS ((FILE *, int, const struct res_id *));
780extern void res_string_to_id PARAMS ((struct res_id *, const char *));
781
782/* Manipulation of the resource tree. */
783
784extern struct res_resource *define_resource
785 PARAMS ((struct res_directory **, int, const struct res_id *, int));
786extern struct res_resource *define_standard_resource
787 PARAMS ((struct res_directory **, int, struct res_id, int, int));
788
789extern int extended_dialog PARAMS ((const struct dialog *));
790extern int extended_menu PARAMS ((const struct menu *));
791
792/* Communication between the rc file support and the parser and lexer. */
793
794extern int yydebug;
795extern FILE *yyin;
796extern char *rc_filename;
797extern int rc_lineno;
798
799extern int yyparse PARAMS ((void));
800extern int yylex PARAMS ((void));
801extern void yyerror PARAMS ((const char *));
802extern void rcparse_warning PARAMS ((const char *));
803extern void rcparse_set_language PARAMS ((int));
804extern void rcparse_discard_strings PARAMS ((void));
805extern void rcparse_rcdata PARAMS ((void));
806extern void rcparse_normal PARAMS ((void));
807
808extern void define_accelerator
809 PARAMS ((struct res_id, const struct res_res_info *, struct accelerator *));
810extern void define_bitmap
811 PARAMS ((struct res_id, const struct res_res_info *, const char *));
812extern void define_cursor
813 PARAMS ((struct res_id, const struct res_res_info *, const char *));
814extern void define_dialog
815 PARAMS ((struct res_id, const struct res_res_info *, const struct dialog *));
816extern struct dialog_control *define_control
817 PARAMS ((struct res_id, unsigned long, unsigned long, unsigned long,
818 unsigned long, unsigned long, unsigned long, unsigned long,
819 unsigned long));
820extern struct dialog_control *define_icon_control
821 PARAMS ((struct res_id, unsigned long, unsigned long,
822 unsigned long, unsigned long, unsigned long, unsigned long,
823 struct rcdata_item *, struct dialog_ex *));
824extern void define_font
825 PARAMS ((struct res_id, const struct res_res_info *, const char *));
826extern void define_icon
827 PARAMS ((struct res_id, const struct res_res_info *, const char *));
828extern void define_menu
829 PARAMS ((struct res_id, const struct res_res_info *, struct menuitem *));
830extern struct menuitem *define_menuitem
831 PARAMS ((const char *, int, unsigned long, unsigned long, unsigned long,
832 struct menuitem *));
833extern void define_messagetable
834 PARAMS ((struct res_id, const struct res_res_info *, const char *));
835extern void define_rcdata
836 PARAMS ((struct res_id, const struct res_res_info *, struct rcdata_item *));
837extern struct rcdata_item *define_rcdata_string
838 PARAMS ((const char *, unsigned long));
839extern struct rcdata_item *define_rcdata_number
840 PARAMS ((unsigned long, int));
841extern void define_stringtable
842 PARAMS ((const struct res_res_info *, unsigned long, const char *));
843extern void define_user_data
844 PARAMS ((struct res_id, struct res_id, const struct res_res_info *,
845 struct rcdata_item *));
846extern void define_user_file
847 PARAMS ((struct res_id, struct res_id, const struct res_res_info *,
848 const char *));
849extern void define_versioninfo
850 PARAMS ((struct res_id, int, struct fixed_versioninfo *,
851 struct ver_info *));
852extern struct ver_info *append_ver_stringfileinfo
853 PARAMS ((struct ver_info *, const char *, struct ver_stringinfo *));
854extern struct ver_info *append_ver_varfileinfo
855 PARAMS ((struct ver_info *, const char *, struct ver_varinfo *));
856extern struct ver_stringinfo *append_verval
857 PARAMS ((struct ver_stringinfo *, const char *, const char *));
858extern struct ver_varinfo *append_vertrans
859 PARAMS ((struct ver_varinfo *, unsigned long, unsigned long));
Note: See TracBrowser for help on using the repository browser.