ReactOS 0.4.16-dev-1007-g2e85425
widl.h File Reference
#include "widltypes.h"
#include <time.h>
Include dependency graph for widl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define DEBUGLEVEL_NONE   0x0000
 
#define DEBUGLEVEL_CHAT   0x0001
 
#define DEBUGLEVEL_DUMP   0x0002
 
#define DEBUGLEVEL_TRACE   0x0004
 
#define DEBUGLEVEL_PPMSG   0x0008
 
#define DEBUGLEVEL_PPLEX   0x0010
 
#define DEBUGLEVEL_PPTRACE   0x0020
 

Enumerations

enum  target_cpu {
  CPU_x86 , CPU_x86_64 , CPU_POWERPC , CPU_ARM ,
  CPU_ARM64 , CPU_LAST = CPU_ARM64
}
 
enum  stub_mode { MODE_Os , MODE_Oi , MODE_Oif }
 

Functions

enum stub_mode get_stub_mode (void)
 
void write_header (const statement_list_t *stmts)
 
void write_id_data (const statement_list_t *stmts)
 
void write_proxies (const statement_list_t *stmts)
 
void write_client (const statement_list_t *stmts)
 
void write_server (const statement_list_t *stmts)
 
void write_regscript (const statement_list_t *stmts)
 
void write_typelib_regscript (const statement_list_t *stmts)
 
void output_typelib_regscript (const typelib_t *typelib)
 
void write_local_stubs (const statement_list_t *stmts)
 
void write_dlldata (const statement_list_t *stmts)
 
void start_cplusplus_guard (FILE *fp)
 
void end_cplusplus_guard (FILE *fp)
 

Variables

int debuglevel
 
int pedantic
 
int do_everything
 
int do_header
 
int do_typelib
 
int do_old_typelib
 
int do_proxies
 
int do_client
 
int do_server
 
int do_regscript
 
int do_idfile
 
int do_dlldata
 
int old_names
 
int win32_packing
 
int win64_packing
 
int winrt_mode
 
int use_abi_namespace
 
charinput_name
 
charinput_idl_name
 
characf_name
 
charheader_name
 
charheader_token
 
charlocal_stubs_name
 
chartypelib_name
 
chardlldata_name
 
charproxy_name
 
charproxy_token
 
charclient_name
 
charclient_token
 
charserver_name
 
charserver_token
 
charregscript_name
 
charregscript_token
 
const charprefix_client
 
const charprefix_server
 
unsigned int pointer_size
 
time_t now
 
int line_number
 
int char_number
 
enum target_cpu target_cpu
 

Macro Definition Documentation

◆ DEBUGLEVEL_CHAT

#define DEBUGLEVEL_CHAT   0x0001

Definition at line 30 of file widl.h.

◆ DEBUGLEVEL_DUMP

#define DEBUGLEVEL_DUMP   0x0002

Definition at line 31 of file widl.h.

◆ DEBUGLEVEL_NONE

#define DEBUGLEVEL_NONE   0x0000

Definition at line 29 of file widl.h.

◆ DEBUGLEVEL_PPLEX

#define DEBUGLEVEL_PPLEX   0x0010

Definition at line 34 of file widl.h.

◆ DEBUGLEVEL_PPMSG

#define DEBUGLEVEL_PPMSG   0x0008

Definition at line 33 of file widl.h.

◆ DEBUGLEVEL_PPTRACE

#define DEBUGLEVEL_PPTRACE   0x0020

Definition at line 35 of file widl.h.

◆ DEBUGLEVEL_TRACE

#define DEBUGLEVEL_TRACE   0x0004

Definition at line 32 of file widl.h.

Enumeration Type Documentation

◆ stub_mode

Enumerator
MODE_Os 
MODE_Oi 
MODE_Oif 

Definition at line 85 of file widl.h.

86{
87 MODE_Os, /* inline stubs */
88 MODE_Oi, /* old-style interpreted stubs */
89 MODE_Oif /* new-style fully interpreted stubs */
90};
@ MODE_Os
Definition: widl.h:87
@ MODE_Oif
Definition: widl.h:89
@ MODE_Oi
Definition: widl.h:88

◆ target_cpu

Enumerator
CPU_x86 
CPU_x86_64 
CPU_POWERPC 
CPU_ARM 
CPU_ARM64 
CPU_LAST 

Definition at line 78 of file widl.h.

79{
81};
@ CPU_LAST
Definition: widl.h:80
@ CPU_ARM
Definition: widl.h:80
@ CPU_x86_64
Definition: widl.h:80
@ CPU_x86
Definition: widl.h:80
@ CPU_ARM64
Definition: widl.h:80
@ CPU_POWERPC
Definition: widl.h:80

Function Documentation

◆ end_cplusplus_guard()

void end_cplusplus_guard ( FILE fp)

Definition at line 346 of file widl.c.

347{
348 fprintf(fp, "#ifdef __cplusplus\n");
349 fprintf(fp, "}\n");
350 fprintf(fp, "#endif\n\n");
351}
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)

Referenced by write_dlldata_list(), write_header(), and write_id_data().

◆ get_stub_mode()

enum stub_mode get_stub_mode ( void  )

◆ output_typelib_regscript()

void output_typelib_regscript ( const typelib_t typelib)

Definition at line 295 of file register.c.

296{
297 const UUID *typelib_uuid = get_attrp( typelib->attrs, ATTR_UUID );
298 const char *descr = get_attrp( typelib->attrs, ATTR_HELPSTRING );
299 const expr_t *lcid_expr = get_attrp( typelib->attrs, ATTR_LIBLCID );
300 unsigned int version = get_attrv( typelib->attrs, ATTR_VERSION );
301 unsigned int flags = 0;
302 char id_part[12] = "";
303 char *resname = typelib_name;
304 expr_t *expr;
305
306 if (is_attr( typelib->attrs, ATTR_RESTRICTED )) flags |= 1; /* LIBFLAG_FRESTRICTED */
307 if (is_attr( typelib->attrs, ATTR_CONTROL )) flags |= 2; /* LIBFLAG_FCONTROL */
308 if (is_attr( typelib->attrs, ATTR_HIDDEN )) flags |= 4; /* LIBFLAG_FHIDDEN */
309
310 put_str( indent, "HKCR\n" );
311 put_str( indent++, "{\n" );
312
313 put_str( indent, "NoRemove Typelib\n" );
314 put_str( indent++, "{\n" );
315 put_str( indent, "NoRemove '%s'\n", format_uuid( typelib_uuid ));
316 put_str( indent++, "{\n" );
317 put_str( indent, "'%u.%u' = s '%s'\n",
319 put_str( indent++, "{\n" );
320 expr = get_attrp( typelib->attrs, ATTR_ID );
321 if (expr)
322 {
323 sprintf(id_part, "\\%d", expr->cval);
324#ifndef __REACTOS__
325 resname = xmalloc( strlen(typelib_name) + 20 );
326 sprintf(resname, "%s\\%d", typelib_name, expr->cval);
327#endif
328 }
329 put_str( indent, "'%x' { %s = s '%%MODULE%%%s' }\n",
330 lcid_expr ? lcid_expr->cval : 0, pointer_size == 8 ? "win64" : "win32", id_part );
331 put_str( indent, "FLAGS = s '%u'\n", flags );
332 put_str( --indent, "}\n" );
333 put_str( --indent, "}\n" );
334 put_str( --indent, "}\n" );
335
336 put_str( indent, "NoRemove Interface\n" );
337 put_str( indent++, "{\n" );
339 put_str( --indent, "}\n" );
340
341 put_str( indent, "NoRemove CLSID\n" );
342 put_str( indent++, "{\n" );
344 put_str( --indent, "}\n" );
345
346 write_progids( typelib->stmts );
347 put_str( --indent, "}\n" );
348
349 add_output_to_resources( "WINE_REGISTRY", resname );
350}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
void * xmalloc(int size)
Definition: uimain.c:747
#define ATTR_HIDDEN
Definition: fat.h:160
static const WCHAR version[]
Definition: asmname.c:66
GLbitfield flags
Definition: glext.h:7161
#define sprintf(buf, format,...)
Definition: sprintf.c:55
const char * descr
Definition: boot.c:45
int is_attr(const attr_list_t *list, enum attr_type t)
Definition: header.c:99
unsigned int get_attrv(const attr_list_t *list, enum attr_type t)
Definition: header.c:115
void * get_attrp(const attr_list_t *list, enum attr_type t)
Definition: header.c:107
static void write_coclasses(const statement_list_t *stmts, const typelib_t *typelib)
Definition: register.c:179
static void write_progids(const statement_list_t *stmts)
Definition: register.c:221
static int indent
Definition: register.c:39
static void write_typelib_interfaces(const typelib_t *typelib)
Definition: register.c:138
static const char * format_uuid(const UUID *uuid)
Definition: register.c:41
void add_output_to_resources(const char *type, const char *name)
Definition: utils.c:307
void put_str(int indent, const char *format,...)
Definition: utils.c:423
#define MINORVERSION(version)
Definition: utils.h:76
#define MAJORVERSION(version)
Definition: utils.h:75
int cval
Definition: widltypes.h:319
Definition: query.h:86
char * typelib_name
Definition: widl.c:138
@ ATTR_UUID
Definition: widltypes.h:166
@ ATTR_VERSION
Definition: widltypes.h:169
@ ATTR_CONTROL
Definition: widltypes.h:86
@ ATTR_LIBLCID
Definition: widltypes.h:122
@ ATTR_RESTRICTED
Definition: widltypes.h:153
@ ATTR_ID
Definition: widltypes.h:112
@ ATTR_HELPSTRING
Definition: widltypes.h:108

Referenced by save_all_changes().

◆ start_cplusplus_guard()

void start_cplusplus_guard ( FILE fp)

Definition at line 339 of file widl.c.

340{
341 fprintf(fp, "#ifdef __cplusplus\n");
342 fprintf(fp, "extern \"C\" {\n");
343 fprintf(fp, "#endif\n\n");
344}

Referenced by write_dlldata_list(), write_header(), and write_id_data().

◆ write_client()

void write_client ( const statement_list_t stmts)

Definition at line 619 of file client.c.

620{
621 if (!do_client)
622 return;
623 if (do_everything && !need_stub_files(stmts))
624 return;
625
626 init_client();
627 if (!client)
628 return;
629
630 write_client_routines( stmts );
631 fclose(client);
632}
int need_stub_files(const statement_list_t *stmts)
Definition: proxy.c:850
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
static void init_client(void)
Definition: client.c:497
static FILE * client
Definition: client.c:41
static void write_client_routines(const statement_list_t *stmts)
Definition: client.c:593
int do_everything
Definition: widl.c:113
int do_client
Definition: widl.c:119

◆ write_dlldata()

void write_dlldata ( const statement_list_t stmts)

Definition at line 421 of file widl.c.

422{
423 struct list filenames = LIST_INIT(filenames);
424 int define_proxy_delegation = 0;
426 FILE *dlldata;
427
428 if (!do_dlldata || !need_proxy_file(stmts))
429 return;
430
431 define_proxy_delegation = need_proxy_delegation(stmts);
432
433 dlldata = fopen(dlldata_name, "r");
434 if (dlldata) {
435 static const char marker[] = "REFERENCE_PROXY_FILE";
436 static const char delegation_define[] = "#define PROXY_DELEGATION";
437 char *line = NULL;
438 size_t len = 0;
439
440 while (widl_getline(&line, &len, dlldata)) {
441 char *start, *end;
443 if (strncmp(start, marker, sizeof marker - 1) == 0) {
444 start = eat_space(start + sizeof marker - 1);
445 if (*start != '(')
446 continue;
447 end = start = eat_space(start + 1);
448 while (*end && *end != ')')
449 ++end;
450 if (*end != ')')
451 continue;
452 while (isspace((unsigned char) end[-1]))
453 --end;
454 *end = '\0';
455 if (start < end)
456 add_filename_node(&filenames, start);
457 }else if (!define_proxy_delegation && strncmp(start, delegation_define, sizeof(delegation_define)-1)) {
458 define_proxy_delegation = 1;
459 }
460 }
461
462 if (ferror(dlldata))
463 error("couldn't read from %s: %s\n", dlldata_name, strerror(errno));
464
465 free(line);
466 fclose(dlldata);
467 }
468
470 if (strcmp(proxy_token, node->filename) == 0) {
471 /* We're already in the list, no need to regenerate this file. */
472 free_filename_nodes(&filenames);
473 return;
474 }
475
476 add_filename_node(&filenames, proxy_token);
477 write_dlldata_list(&filenames, define_proxy_delegation);
478 free_filename_nodes(&filenames);
479}
#define isspace(c)
Definition: acclib.h:69
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
Definition: list.h:37
const WCHAR * link
Definition: db.cpp:997
#define free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
GLuint start
Definition: gl.h:1545
GLuint GLuint end
Definition: gl.h:1545
GLenum GLsizei len
Definition: glext.h:6722
int need_proxy_delegation(const statement_list_t *stmts)
Definition: proxy.c:814
int need_proxy_file(const statement_list_t *stmts)
Definition: proxy.c:809
_Check_return_ _CRTIMP int __cdecl ferror(_In_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
int marker
Definition: jpeglib.h:1030
#define error(str)
Definition: mkdosfs.c:1605
const char * strerror(int err)
Definition: compat_str.c:23
#define errno
Definition: errno.h:18
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
size_t widl_getline(char **linep, size_t *lenp, FILE *fp)
Definition: utils.c:172
Definition: parser.c:49
#define LIST_INIT(head)
Definition: queue.h:197
Definition: dlist.c:348
static void free_filename_nodes(struct list *list)
Definition: widl.c:366
char * dlldata_name
Definition: widl.c:139
static void add_filename_node(struct list *list, const char *name)
Definition: widl.c:359
static char * eat_space(char *s)
Definition: widl.c:414
char * proxy_token
Definition: widl.c:141
static void write_dlldata_list(struct list *filenames, int define_proxy_delegation)
Definition: widl.c:376
int do_dlldata
Definition: widl.c:123

◆ write_header()

void write_header ( const statement_list_t stmts)

Definition at line 1790 of file header.c.

1791{
1792 FILE *header;
1793
1794 if (!do_header) return;
1795
1796 if(!(header = fopen(header_name, "w"))) {
1797 error("Could not open %s for output\n", header_name);
1798 return;
1799 }
1800 fprintf(header, "/*** Autogenerated by WIDL %s from %s - Do not edit ***/\n\n", PACKAGE_VERSION, input_name);
1801
1802 fprintf(header, "#ifdef _WIN32\n");
1803 fprintf(header, "#ifndef __REQUIRED_RPCNDR_H_VERSION__\n");
1804 fprintf(header, "#define __REQUIRED_RPCNDR_H_VERSION__ 475\n");
1805 fprintf(header, "#endif\n\n");
1806
1807 fprintf(header, "#ifdef __REACTOS__\n");
1808 fprintf(header, "#define WIN32_LEAN_AND_MEAN\n");
1809 fprintf(header, "#endif\n\n");
1810
1811 fprintf(header, "#include <rpc.h>\n" );
1812 fprintf(header, "#include <rpcndr.h>\n" );
1814 fprintf(header, "#include <midles.h>\n" );
1815 fprintf(header, "#endif\n\n");
1816
1817 fprintf(header, "#ifndef COM_NO_WINDOWS_H\n");
1818 fprintf(header, "#include <windows.h>\n");
1819 fprintf(header, "#include <ole2.h>\n");
1820 fprintf(header, "#endif\n\n");
1821
1822 fprintf(header, "#ifndef __%s__\n", header_token);
1823 fprintf(header, "#define __%s__\n\n", header_token);
1824
1825 fprintf(header, "/* Forward declarations */\n\n");
1827
1828 fprintf(header, "/* Headers for imported files */\n\n");
1829 write_imports(header, stmts);
1830 fprintf(header, "\n");
1832
1834
1835 fprintf(header, "/* Begin additional prototypes for all interfaces */\n");
1836 fprintf(header, "\n");
1841 fprintf(header, "\n");
1842 fprintf(header, "/* End additional prototypes */\n");
1843 fprintf(header, "\n");
1844
1846 fprintf(header, "#endif /* __%s__ */\n", header_token);
1847
1848 fclose(header);
1849}
#define FALSE
Definition: types.h:117
#define PACKAGE_VERSION
Definition: config.h:835
static void write_generic_handle_routines(FILE *header)
Definition: header.c:783
static void write_imports(FILE *header, const statement_list_t *stmts)
Definition: header.c:1628
static int for_each_serializable(const statement_list_t *stmts, FILE *header, int(*proc)(FILE *, const type_t *))
Definition: header.c:730
static int write_serialize_function_decl(FILE *header, const type_t *type)
Definition: header.c:719
static void write_user_types(FILE *header)
Definition: header.c:760
static void write_context_handle_rundowns(FILE *header)
Definition: header.c:773
static void write_header_stmts(FILE *header, const statement_list_t *stmts, const type_t *iface, int ignore_funcs)
Definition: header.c:1700
static void write_forward_decls(FILE *header, const statement_list_t *stmts)
Definition: header.c:1660
static int serializable_exists(FILE *header, const type_t *type)
Definition: header.c:725
void start_cplusplus_guard(FILE *fp)
Definition: widl.c:339
int do_header
Definition: widl.c:115
char * header_token
Definition: widl.c:137
void end_cplusplus_guard(FILE *fp)
Definition: widl.c:346
char * header_name
Definition: widl.c:135
char * input_name
Definition: widl.c:132

◆ write_id_data()

void write_id_data ( const statement_list_t stmts)

Definition at line 528 of file widl.c.

529{
530 if (!do_idfile) return;
531
532 idfile = fopen(idfile_name, "w");
533 if (! idfile) {
534 error("Could not open %s for output\n", idfile_name);
535 return;
536 }
537
538 fprintf(idfile, "/*** Autogenerated by WIDL %s ", PACKAGE_VERSION);
539 fprintf(idfile, "from %s - Do not edit ***/\n\n", input_idl_name);
540
541 fprintf(idfile, "#ifdef __REACTOS__\n");
542 fprintf(idfile, "#define WIN32_NO_STATUS\n");
543 fprintf(idfile, "#define WIN32_LEAN_AND_MEAN\n");
544 fprintf(idfile, "#endif\n\n");
545
546 fprintf(idfile, "#include <rpc.h>\n");
547 fprintf(idfile, "#include <rpcndr.h>\n\n");
548
549 fprintf(idfile, "#ifdef _MIDL_USE_GUIDDEF_\n\n");
550
551 fprintf(idfile, "#ifndef INITGUID\n");
552 fprintf(idfile, "#define INITGUID\n");
553 fprintf(idfile, "#include <guiddef.h>\n");
554 fprintf(idfile, "#undef INITGUID\n");
555 fprintf(idfile, "#else\n");
556 fprintf(idfile, "#include <guiddef.h>\n");
557 fprintf(idfile, "#endif\n\n");
558
559 fprintf(idfile, "#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \\\n");
560 fprintf(idfile, " DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)\n\n");
561
562 fprintf(idfile, "#elif defined(__cplusplus)\n\n");
563
564 fprintf(idfile, "#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \\\n");
565 fprintf(idfile, " EXTERN_C const type DECLSPEC_SELECTANY name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}\n\n");
566
567 fprintf(idfile, "#else\n\n");
568
569 fprintf(idfile, "#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \\\n");
570 fprintf(idfile, " const type DECLSPEC_SELECTANY name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}\n\n");
571
572 fprintf(idfile, "#endif\n\n");
574
575 write_id_data_stmts(stmts);
576
577 fprintf(idfile, "\n");
579 fprintf(idfile, "#undef MIDL_DEFINE_GUID\n" );
580
581 fclose(idfile);
582}
int do_idfile
Definition: widl.c:122
char * input_idl_name
Definition: widl.c:133
static void write_id_data_stmts(const statement_list_t *stmts)
Definition: widl.c:491
static FILE * idfile
Definition: widl.c:155
static char * idfile_name
Definition: widl.c:148

◆ write_local_stubs()

void write_local_stubs ( const statement_list_t stmts)

Definition at line 1403 of file header.c.

1404{
1405 FILE *local_stubs;
1406
1407 if (!local_stubs_name) return;
1408
1409 local_stubs = fopen(local_stubs_name, "w");
1410 if (!local_stubs) {
1411 error("Could not open %s for output\n", local_stubs_name);
1412 return;
1413 }
1414 fprintf(local_stubs, "/* call_as/local stubs for %s */\n\n", input_name);
1415 fprintf(local_stubs, "#include <objbase.h>\n");
1416 fprintf(local_stubs, "#include \"%s\"\n\n", header_name);
1417
1418 write_local_stubs_stmts(local_stubs, stmts);
1419
1420 fclose(local_stubs);
1421}
static void write_local_stubs_stmts(FILE *local_stubs, const statement_list_t *stmts)
Definition: header.c:1393
char * local_stubs_name
Definition: widl.c:136

◆ write_proxies()

void write_proxies ( const statement_list_t stmts)

Definition at line 1077 of file proxy.c.

1078{
1079 if (!do_proxies) return;
1080 if (do_everything && !need_proxy_file(stmts)) return;
1081
1082 init_proxy(stmts);
1083 if(!proxy) return;
1084
1085 write_proxy_routines( stmts );
1086 fclose(proxy);
1087}
static void write_proxy_routines(const statement_list_t *stmts)
Definition: proxy.c:922
int need_proxy_file(const statement_list_t *stmts)
Definition: proxy.c:809
static FILE * proxy
Definition: proxy.c:40
static void init_proxy(const statement_list_t *stmts)
Definition: proxy.c:83
int do_proxies
Definition: widl.c:118

◆ write_regscript()

void write_regscript ( const statement_list_t stmts)

Definition at line 235 of file register.c.

236{
237 const type_t *ps_factory;
238
239 if (!do_regscript) return;
240 if (do_everything && !need_proxy_file( stmts )) return;
241
243
244 put_str( indent, "HKCR\n" );
245 put_str( indent++, "{\n" );
246
247 put_str( indent, "NoRemove Interface\n" );
248 put_str( indent++, "{\n" );
249 ps_factory = find_ps_factory( stmts );
250 if (ps_factory) write_interfaces( stmts, ps_factory );
251 put_str( --indent, "}\n" );
252
253 put_str( indent, "NoRemove CLSID\n" );
254 put_str( indent++, "{\n" );
255 write_coclasses( stmts, NULL );
256 put_str( --indent, "}\n" );
257
258 write_progids( stmts );
259 put_str( --indent, "}\n" );
260
261 if (strendswith( regscript_name, ".res" )) /* create a binary resource file */
262 {
263 add_output_to_resources( "WINE_REGISTRY", regscript_token );
265 }
266 else
267 {
268 FILE *f = fopen( regscript_name, "w" );
269 if (!f) error( "Could not open %s for output\n", regscript_name );
271 error( "Failed to write to %s\n", regscript_name );
272 if (fclose( f ))
273 error( "Failed to write to %s\n", regscript_name );
274 }
275}
GLfloat f
Definition: glext.h:7540
_Check_return_opt_ _CRTIMP size_t __cdecl fwrite(_In_reads_bytes_(_Size *_Count) const void *_Str, _In_ size_t _Size, _In_ size_t _Count, _Inout_ FILE *_File)
static const type_t * find_ps_factory(const statement_list_t *stmts)
Definition: register.c:65
static void write_interfaces(const statement_list_t *stmts, const type_t *ps_factory)
Definition: register.c:103
size_t output_buffer_pos
Definition: utils.c:253
void flush_output_resources(const char *name)
Definition: utils.c:341
int strendswith(const char *str, const char *end)
Definition: utils.c:238
void init_output_buffer(void)
Definition: utils.c:272
int do_regscript
Definition: widl.c:121
char * regscript_name
Definition: widl.c:146
char * regscript_token
Definition: widl.c:147

◆ write_server()

void write_server ( const statement_list_t stmts)

Definition at line 536 of file server.c.

537{
538 if (!do_server)
539 return;
540 if (do_everything && !need_stub_files(stmts))
541 return;
542
543 init_server();
544 if (!server)
545 return;
546
547 write_server_routines( stmts );
548 fclose(server);
549}
static void server(void)
Definition: server.c:2011
static void init_server(void)
Definition: server.c:441
static void write_server_routines(const statement_list_t *stmts)
Definition: server.c:498
int do_server
Definition: widl.c:120

◆ write_typelib_regscript()

void write_typelib_regscript ( const statement_list_t stmts)

Definition at line 277 of file register.c.

278{
279 const statement_t *stmt;
280 unsigned int count = 0;
281
282 if (!do_typelib) return;
283 if (stmts) LIST_FOR_EACH_ENTRY( stmt, stmts, const statement_t, entry )
284 {
285 if (stmt->type != STMT_LIBRARY) continue;
286 if (count && !strendswith( typelib_name, ".res" ))
287 error( "Cannot store multiple typelibs into %s\n", typelib_name );
288 else
289 create_msft_typelib( stmt->u.lib );
290 count++;
291 }
293}
GLuint GLuint GLsizei count
Definition: gl.h:1545
uint32_t entry
Definition: isohybrid.c:63
int create_msft_typelib(typelib_t *typelib)
Definition: write_msft.c:2657
statement_type_t type
Definition: parser.h:124
union _statement_t::@5190 u
typelib_t * lib
Definition: widltypes.h:540
int do_typelib
Definition: widl.c:116
@ STMT_LIBRARY
Definition: widltypes.h:240

Variable Documentation

◆ acf_name

char* acf_name
extern

Definition at line 134 of file widl.c.

Referenced by main().

◆ char_number

int char_number
extern

Referenced by pp_internal_error().

◆ client_name

char* client_name
extern

Definition at line 142 of file widl.c.

Referenced by init_client(), main(), and rm_tempfile().

◆ client_token

char* client_token
extern

Definition at line 143 of file widl.c.

Referenced by main(), and write_client_routines().

◆ debuglevel

int debuglevel
extern

Definition at line 109 of file widl.c.

Referenced by chat(), dump_var_desc(), and main().

◆ dlldata_name

char* dlldata_name
extern

Definition at line 139 of file widl.c.

Referenced by main(), write_dlldata(), and write_dlldata_list().

◆ do_client

int do_client
extern

Definition at line 119 of file widl.c.

Referenced by main(), rm_tempfile(), set_everything(), and write_client().

◆ do_dlldata

int do_dlldata
extern

Definition at line 123 of file widl.c.

Referenced by main(), set_everything(), and write_dlldata().

◆ do_everything

int do_everything
extern

Definition at line 113 of file widl.c.

Referenced by main(), write_client(), write_proxies(), write_regscript(), and write_server().

◆ do_header

int do_header
extern

Definition at line 115 of file widl.c.

Referenced by main(), rm_tempfile(), set_everything(), and write_header().

◆ do_idfile

int do_idfile
extern

Definition at line 122 of file widl.c.

Referenced by main(), rm_tempfile(), set_everything(), and write_id_data().

◆ do_old_typelib

int do_old_typelib
extern

Definition at line 117 of file widl.c.

Referenced by main(), and set_everything().

◆ do_proxies

int do_proxies
extern

Definition at line 118 of file widl.c.

Referenced by main(), rm_tempfile(), set_everything(), and write_proxies().

◆ do_regscript

int do_regscript
extern

Definition at line 121 of file widl.c.

Referenced by main(), rm_tempfile(), set_everything(), and write_regscript().

◆ do_server

int do_server
extern

Definition at line 120 of file widl.c.

Referenced by main(), rm_tempfile(), set_everything(), and write_server().

◆ do_typelib

int do_typelib
extern

Definition at line 116 of file widl.c.

Referenced by main(), rm_tempfile(), set_everything(), type_new_struct(), and write_typelib_regscript().

◆ header_name

◆ header_token

char* header_token
extern

Definition at line 137 of file widl.c.

Referenced by main(), and write_header().

◆ input_idl_name

char* input_idl_name
extern

Definition at line 133 of file widl.c.

Referenced by main(), and write_id_data().

◆ input_name

char* input_name
extern

Definition at line 132 of file widl.c.

Referenced by init_client(), init_proxy(), init_server(), main(), write_header(), and write_local_stubs().

◆ line_number

◆ local_stubs_name

char* local_stubs_name
extern

Definition at line 136 of file widl.c.

Referenced by main(), rm_tempfile(), and write_local_stubs().

◆ now

time_t now
extern

Definition at line 65 of file finger.c.

Referenced by __attribute__(), __drv_requiresIRQL(), _Dispatch_type_(), add_special_defines(), adns__fdevents(), adns__internal_submit(), adns__must_gettimeofday(), adns__procdgram(), adns__query_send(), adns__search_next(), adns__tcp_tryconnect(), adns__timeouts(), adns__update_expires(), adns_afterselect(), adns_beforeselect(), adns_check(), adns_firsttimeout(), adns_processany(), adns_processreadable(), adns_processtimeouts(), adns_processwriteable(), adns_submit(), authunix_create(), authunix_refresh(), CertDllVerifyRevocation(), ClasspRetryRequestDpc(), clnt_dg_create(), clnt_vc_create(), collect_connections(), connection_collector(), CoWaitForMultipleHandles(), create_cache_entry(), create_directory_fcb(), create_stream(), create_subvol(), delete_fileref(), delete_reparse_point(), do_create_snapshot(), DSoundRender_DoRenderSample(), duplicate_extents(), Ext2FirstUnusedMcb(), Ext2QueryUnusedBH(), Ext2QueryUnusedFcb(), fd_event(), file_create2(), FTPGetOneF(), FTPUpdateIOTimer(), get_test_year(), GetStartSpoolDate(), gettimeofday(), InitLsMonths(), inter_maxtoabs(), LogOpen(), look_for_roots(), LsCacheLookup(), main(), MediaControl_Run(), mknod(), move_across_subvols(), NetBTWaitForNameResponse(), open_file3(), print_ttl(), QualityControlRender_WaitFor(), query_alloc(), query_simple(), query_submit(), query_usetcp(), queue_current_time(), queue_timer_expire(), readclock_GetTime(), recvd_subvol(), NotifyArea::Refresh(), run_child_process(), SClose(), set_basic_information(), set_file_security(), set_link_information(), set_rename_information(), set_reparse_point2(), set_symlink(), set_zero_data(), SnmpSvcGetUptime(), SRead(), SRecv(), SRecvfrom(), SSend(), SSendto(), SSendtoByName(), stream_set_end_of_file_information(), sw_check_timers(), SWaitUntilReadyForReading(), SWaitUntilReadyForWriting(), SWrite(), tcp_connected(), tcp_events(), test_buffer(), test_buffer8(), test_cache_read(), test_get_state(), test_urlcacheA(), timeouts_queue(), timerqueue_thread_proc(), TpSetTimer(), TpSetWait(), UnDate(), UnLslR(), UnLslRLine(), UnMDTMDate(), UNUSED(), update_chunk_cache(), update_chunk_caches(), urlcache_entry_is_expired(), waitqueue_thread_proc(), warp_check(), write_one_file(), write_volume_label(), and WriteDefaultFirewallPrefs().

◆ old_names

int old_names
extern

◆ pedantic

int pedantic
extern

Definition at line 112 of file widl.c.

Referenced by main(), pp_internal_error(), and tt_loader_init().

◆ pointer_size

◆ prefix_client

◆ prefix_server

◆ proxy_name

char* proxy_name
extern

Definition at line 140 of file widl.c.

Referenced by init_proxy(), main(), and rm_tempfile().

◆ proxy_token

char* proxy_token
extern

Definition at line 141 of file widl.c.

Referenced by main(), write_dlldata(), and write_proxy_routines().

◆ regscript_name

char* regscript_name
extern

Definition at line 146 of file widl.c.

Referenced by main(), rm_tempfile(), and write_regscript().

◆ regscript_token

char* regscript_token
extern

Definition at line 147 of file widl.c.

Referenced by main(), and write_regscript().

◆ server_name

◆ server_token

char* server_token
extern

Definition at line 145 of file widl.c.

Referenced by main(), and write_server_routines().

◆ target_cpu

◆ typelib_name

char* typelib_name
extern

◆ use_abi_namespace

int use_abi_namespace
extern

◆ win32_packing

int win32_packing
extern

Definition at line 126 of file widl.c.

Referenced by clamp_align(), and main().

◆ win64_packing

int win64_packing
extern

Definition at line 127 of file widl.c.

Referenced by clamp_align(), and main().

◆ winrt_mode

int winrt_mode
extern

Definition at line 128 of file widl.c.

Referenced by main(), and write_com_interface_end().