Merge pull request #2301 from sonndinh/remove-dup-reactor-functions
[ACE_TAO.git] / TAO / TAO_IDL / be_include / be_global.h
blob40bbaab0eefc992b10b36a53aa067417e75bf334
1 // -*- C++ -*-
3 //=============================================================================
4 /**
5 * @file be_global.h
7 * Header file for class containing compiler back end global data.
9 * @author Jeff Parsons <parsons@cs.wustl.edu>
11 //=============================================================================
13 #ifndef _BE_GLOBAL_H
14 #define _BE_GLOBAL_H
16 #include "TAO_IDL_BE_Export.h"
18 #include "ace/Unbounded_Queue.h"
19 #include "ace/SString.h"
21 class be_interface;
22 class be_valuetype;
23 class be_module;
24 class be_interface;
25 class be_interface_fwd;
26 class UTL_String;
27 class AST_PredefinedType;
28 class AST_Generator;
30 // Defines a class containing all back end global data.
33 * Storage of global data specific to the compiler back end
35 class TAO_IDL_BE_Export BE_GlobalData
37 public:
38 /// various lookup strategies
39 enum LOOKUP_STRATEGY
41 TAO_LINEAR_SEARCH,
42 TAO_DYNAMIC_HASH,
43 TAO_PERFECT_HASH,
44 TAO_BINARY_SEARCH
47 /// To help with DDD portability in DDS4CCM
48 /// connectors.
49 enum DDS_IMPL
51 DDS_NONE,
52 NDDS,
53 OPENSPLICE,
54 OPENDDS,
55 COREDX
58 static const char *const core_versioned_ns_begin;
59 static const char *const core_versioned_ns_end;
61 BE_GlobalData ();
62 ~BE_GlobalData ();
64 // To switch between changing or non-changing standard include
65 // files (e.g. tao/corba.h) so that #include statements can be
66 // generated with ""s or <>s respectively.
67 void changing_standard_include_files (size_t changing);
68 size_t changing_standard_include_files ();
70 // Helper functions that generate the file names for the C++ mapping
71 // generated code.
72 // The parameter <base_name_only> set to 0 (no base name, but full
73 // name with output dir path, is useful, when I just want just the
74 // base name to use in #include's etc.
75 static const char *be_get_client_hdr_fname (
76 bool base_name_only = false);
78 static const char *be_get_client_stub_fname ();
80 static const char *be_get_client_inline_fname (
81 bool base_name_only = false);
83 static const char *be_get_server_hdr_fname (
84 bool base_name_only = false);
86 static const char *be_get_implementation_hdr_fname (
87 bool base_name_only = false);
89 static const char *be_get_implementation_skel_fname (
90 bool base_name_only = false);
92 static const char *be_get_server_template_hdr_fname (
93 bool base_name_only = false);
95 static const char *be_get_server_skeleton_fname ();
97 static const char *be_get_implementation_skeleton_fname ();
99 static const char *be_get_server_template_skeleton_fname (
100 bool base_name_only = false);
102 static const char *be_get_anyop_source_fname (
103 bool base_name_only = false);
105 static const char *be_get_anyop_header_fname (
106 bool base_name_only = false);
108 static const char *be_get_ciao_svnt_hdr_fname (
109 bool base_name_only = false);
111 static const char *be_get_ciao_tmpl_svnt_hdr_fname (
112 bool base_name_only=false);
114 static const char *be_get_ciao_svnt_src_fname (
115 bool base_name_only = false);
117 static const char *be_get_ciao_tmpl_svnt_src_fname (
118 bool base_name_only=false);
120 static const char *be_get_ciao_exec_hdr_fname (
121 bool base_name_only = false);
123 static const char *be_get_ciao_exec_src_fname (
124 bool base_name_only = false);
126 static const char *be_get_ciao_exec_stub_hdr_fname (
127 bool base_name_only = false);
129 static const char *be_get_ciao_exec_idl_fname (
130 bool base_name_only = false);
132 static const char *be_get_ciao_conn_hdr_fname (
133 bool base_name_only = false);
135 static const char *be_get_ciao_conn_src_fname (
136 bool base_name_only = false);
138 static const char *be_get_ciao_ami_conn_idl_fname (
139 bool base_name_only = false);
141 static const char *be_get_ciao_ami_conn_impl_hdr_fname (
142 bool base_name_only = false);
144 static const char *be_get_ciao_ami_conn_impl_src_fname (
145 bool base_name_only = false);
147 // Helper functions: obtain the names of each generated file given
148 // the IDL file name.
149 // The parameter <base_name_only> set to 0 (no base name, but full
150 // name with output dir path, is useful, when I want just the
151 // base name to use in #include's etc.
152 static const char *be_get_client_hdr (
153 UTL_String *idl_file_name,
154 bool base_name_only = false);
156 static const char *be_get_client_stub (
157 UTL_String *idl_file_name);
159 static const char *be_get_client_inline (
160 UTL_String *idl_file_name,
161 bool base_name_only = false);
163 static const char *be_get_server_hdr (
164 UTL_String *idl_file_name,
165 bool base_name_only = false);
167 static const char *be_get_svnt_template_hdr (
168 UTL_String *idl_file_name,
169 bool base_name_only = false);
171 static const char *be_get_implementation_hdr (
172 UTL_String *idl_file_name,
173 bool base_name_only = false);
175 static const char *be_get_implementation_skel (
176 UTL_String *idl_file_name,
177 bool base_name_only = false);
179 static const char *be_get_server_template_hdr (
180 UTL_String *idl_file_name,
181 bool base_name_only = false);
183 static const char *be_get_server_skeleton (
184 UTL_String *idl_file_name);
186 static const char *be_get_server_template_skeleton (
187 UTL_String *idl_file_name,
188 bool base_name_only = false);
190 static const char *be_get_anyop_header (
191 UTL_String *idl_file_name,
192 bool base_name_only = false);
194 static const char *be_get_anyop_source (
195 UTL_String *idl_file_name,
196 bool base_name_only = false);
198 static const char *be_get_ciao_svnt_header (
199 UTL_String *idl_file_name,
200 bool base_name_only = false);
202 static const char *be_get_ciao_svnt_template_header (
203 UTL_String *idl_file_name,
204 bool base_name_only = false);
206 static const char *be_get_ciao_svnt_source (
207 UTL_String *idl_file_name,
208 bool base_name_only = false);
210 static const char *be_get_ciao_svnt_template_source (
211 UTL_String *idl_file_name,
212 bool base_name_only = false);
214 static const char *be_get_ciao_exec_header (
215 UTL_String *idl_file_name,
216 bool base_name_only = false);
218 static const char *be_get_ciao_exec_source (
219 UTL_String *idl_file_name,
220 bool base_name_only = false);
222 static const char *be_get_ciao_exec_stub_header (
223 UTL_String *idl_file_name,
224 bool base_name_only = false);
226 static const char *be_get_ciao_exec_idl (
227 UTL_String *idl_file_name,
228 bool base_name_only = false);
230 static const char *be_get_ciao_conn_header (
231 UTL_String *idl_file_name,
232 bool base_name_only = false);
234 static const char *be_get_ciao_conn_source (
235 UTL_String *idl_file_name,
236 bool base_name_only = false);
238 static const char *be_get_dds_typesupport_header (
239 UTL_String *idl_file_name,
240 bool base_name_only = false);
242 static const char *be_get_ciao_ami_conn_idl (
243 UTL_String *idl_file_name,
244 bool base_name_only = false);
246 static const char *be_get_ciao_ami_conn_impl_hdr (
247 UTL_String *idl_file_name,
248 bool base_name_only = false);
250 static const char *be_get_ciao_ami_conn_impl_src (
251 UTL_String *idl_file_name,
252 bool base_name_only = false);
254 /// Returns the macro name for exporting server side classes in Win32
255 /// DLL.
256 const char* skel_export_macro () const;
258 /// Set the macro name for export server side classes in Win32 DLL.
259 void skel_export_macro (const char* s);
261 /// Returns the name of the include file that contains the server
262 /// side export macro definition.
263 const char* skel_export_include () const;
265 /// Set the name of the include file that contains the server side
266 /// export macro definition.
267 void skel_export_include (const char* s);
269 /// Returns the name of the include file that will be generated for the
270 /// server side export macro definition.
271 const char* skel_export_file () const;
273 /// Set the name of the include file that the will be generated for server
274 /// side export macro definition.
275 void skel_export_file (const char* s);
277 /// Returns the macro name for exporting client side classes in Win32
278 /// DLL.
279 const char* stub_export_macro () const;
281 /// Set the macro name for export client side classes in Win32 DLL.
282 void stub_export_macro (const char* s);
284 /// Returns the name of the include file that contains the client
285 /// side export macro definition.
286 const char* stub_export_include () const;
288 /// Set the name of the include file that contains the client side
289 /// export macro definition.
290 void stub_export_include (const char* s);
292 /// Returns the name of the include file will be generated for the client
293 /// side export macro definition.
294 const char* stub_export_file () const;
296 /// Set the name of the include file that will be generated for the client
297 /// side export macro definition.
298 void stub_export_file (const char* s);
300 /// Returns the macro name for exporting *A.h file classes in Win32
301 /// DLL.
302 const char* anyop_export_macro () const;
304 /// Set the macro name for export *A.h file classes in Win32 DLL.
305 void anyop_export_macro (const char* s);
307 /// Returns the name of the include file that contains the *A.h
308 /// file export macro definition.
309 const char* anyop_export_include () const;
311 /// Set the name of the include file that contains the *A.h file
312 /// export macro definition.
313 void anyop_export_include (const char* s);
315 /// Returns the macro name for exporting exec impl classes in Win32
316 /// DLL.
317 const char* exec_export_macro () const;
319 /// Set the macro name for export exec impl classes in Win32 DLL.
320 void exec_export_macro (const char* s);
322 /// Returns the name of the include file that contains the exec
323 /// impl export macro definition.
324 const char* exec_export_include () const;
326 /// Set the name of the include file that contains the exec impl
327 /// export macro definition.
328 void exec_export_include (const char* s);
330 /// Returns the macro name for exporting CIAO svnt classes in Win32
331 /// DLL.
332 const char* svnt_export_macro () const;
334 /// Set the macro name for export CIAO svnt classes in Win32 DLL.
335 void svnt_export_macro (const char* s);
337 /// Returns the name of the include file that contains the CIAO
338 /// svnt export macro definition.
339 const char* svnt_export_include () const;
341 /// Set the name of the include file that contains the CIAO svnt
342 /// export macro definition.
343 void svnt_export_include (const char* s);
345 /// Returns the macro name for exporting CIAO connector
346 /// classes in Win32 DLL.
347 const char* conn_export_macro () const;
349 /// Set the macro name for export CIAO connector
350 /// classes in Win32 DLL.
351 void conn_export_macro (const char* s);
353 /// Returns the name of the include file that contains the CIAO
354 /// connector export macro definition.
355 const char* conn_export_include () const;
357 /// Set the name of the include file that contains the CIAO
358 /// connector export macro definition.
359 void conn_export_include (const char* s);
361 /// Returns the name of the include file to be used for precompiled
362 /// header support.
363 const char* pch_include () const;
365 /// Set the name of the include file to be used for precompiled
366 /// header support.
367 void pch_include (const char* s);
369 /// Returns the name of the include file to be put at the top of
370 /// every header file.
371 const char* pre_include () const;
373 /// Set the name of the include file to be put at the top of every
374 /// header file.
375 void pre_include (const char* s);
377 /// Returns the name of the include file to be put at the bottom of
378 /// every header file.
379 const char* post_include () const;
381 /// Set the name of the include file to be put at the bottom of every
382 /// header file.
383 void post_include (const char* s);
385 /// Returns the guard that is placed in the client header file
386 const char* include_guard () const;
388 /// Set the guard that is placed in the client header file
389 void include_guard (const char* s);
391 /// Returns the name of the include file that is used instead of the own
392 /// generated client header file
393 const char* safe_include () const;
395 /// set the name of the include file that is used instead of the own
396 /// generated client header file
397 void safe_include (const char* s);
399 /// Returns the name of the include file that should on get
400 /// generated in the client header file
401 const char* unique_include () const;
403 /// Set the name of the include file that should on get
404 /// generated in the client header file
405 void unique_include (const char* s);
407 /// Returns the name of the include file that should be used as
408 /// stripped_filename
409 const char* stripped_filename () const;
411 /// Set the name of the include file that should be used as stripped_filename
412 void stripped_filename (const char* s);
414 /// Set text that opens a "versioned" namespace.
415 void versioning_begin (const char* s);
417 /// Get text that opens a "versioned" namespace.
418 const char * versioning_begin () const;
420 /// Set include file for "versioned" namespace.
421 void versioning_include (const char* s);
423 /// Get include file for "versioned" namespace.
424 const char * versioning_include () const;
426 /// Get text that opens a "versioned" namespace for core TAO/orbsvcs
427 /// related code.
428 const char * core_versioning_begin () const;
430 /// Set text that closes a "versioned" namespace.
431 void versioning_end (const char* s);
433 /// Get text that closes a "versioned" namespace.
434 const char * versioning_end () const;
436 /// Get text that closes a "versioned" namespace for core TAO/orbsvcs
437 /// related code.
438 const char * core_versioning_end () const;
440 /// Get text that opens a "versioned" namespace for CORBA::Any operators
441 const char *anyops_versioning_begin () const;
443 /// Get text that closes a "versioned" namespace for CORBA::Any operators
444 const char *anyops_versioning_end () const;
446 // = Set and get methods for different file name endings.
448 /// Set the client_hdr_ending.
449 void client_hdr_ending (const char* s);
451 /// Get the client_hdr_ending.
452 const char* client_hdr_ending () const;
454 /// Set the client_inline_ending.
455 void client_inline_ending (const char* s);
457 /// Get the client_inline_ending.
458 const char* client_inline_ending () const;
460 /// Set the client_stub_ending.
461 void client_stub_ending (const char* s);
463 /// Get the client_stub_ending.
464 const char* client_stub_ending () const;
466 /// Set the server_hdr_ending.
467 void server_hdr_ending (const char* s);
469 /// Get the server_hdr_ending.
470 const char* server_hdr_ending () const;
472 /// Set the implementation_hdr_ending.
473 void implementation_hdr_ending (const char* s);
475 /// Set the implementation class prefix.
476 void impl_class_prefix (const char* s);
478 /// Set the implementation class suffix.
479 void impl_class_suffix (const char* s);
481 /// Set the implementation_skel_ending.
482 void implementation_skel_ending (const char* s);
484 /// Get the implementation_hdr_ending.
485 const char* implementation_hdr_ending () const;
487 ///Get implementation class prefix
488 const char* impl_class_prefix () const;
490 ///Get implementation class suffix
491 const char* impl_class_suffix () const;
493 /// Get the implementation_skel_ending.
494 const char* implementation_skel_ending () const;
496 /// Set the server_template_hdr_ending.
497 void server_template_hdr_ending (const char* s);
499 /// Get the server_template_hdr_ending.
500 const char* server_template_hdr_ending () const;
502 /// Set the server_skeleton_ending.
503 void server_skeleton_ending (const char* s);
505 /// Get the server_skeleton_ending.
506 const char* server_skeleton_ending () const;
508 /// Set the server_template_skeleton_ending.
509 void server_template_skeleton_ending (const char* s);
511 /// Get the server_template_skeleton_ending.
512 const char* server_template_skeleton_ending () const;
514 /// Set the anyop_header_ending.
515 void anyop_header_ending (const char* s);
517 /// Get the anyop_header_ending.
518 const char* anyop_header_ending () const;
520 /// Set the anyop_source_ending.
521 void anyop_source_ending (const char* s);
523 /// Get the anyop_source_ending.
524 const char* anyop_source_ending () const;
526 /// Similar to above, but for CIAO servant and executor
527 /// impl and executor IDL files, if generated.
528 void ciao_svnt_header_template_ending (const char* s);
529 const char* ciao_svnt_header_template_ending () const;
531 void ciao_svnt_source_template_ending (const char* s);
532 const char* ciao_svnt_source_template_ending () const;
534 void ciao_svnt_header_ending (const char* s);
535 const char* ciao_svnt_header_ending () const;
537 void ciao_svnt_source_ending (const char* s);
538 const char* ciao_svnt_source_ending () const;
540 void ciao_exec_header_ending (const char* s);
541 const char* ciao_exec_header_ending () const;
543 void ciao_exec_source_ending (const char* s);
544 const char* ciao_exec_source_ending () const;
546 void ciao_exec_stub_header_ending (const char* s);
547 const char* ciao_exec_stub_header_ending () const;
549 void ciao_exec_idl_ending (const char* s);
550 const char* ciao_exec_idl_ending () const;
552 void ciao_conn_header_ending (const char* s);
553 const char* ciao_conn_header_ending () const;
555 void ciao_conn_source_ending (const char* s);
556 const char* ciao_conn_source_ending () const;
558 /// For generating TypeSupport header file includes.
559 void dds_typesupport_hdr_ending (const char* s);
560 const char* dds_typesupport_hdr_ending () const;
562 /// For optionally generating CIAO AMI connector IDL file.
563 void ciao_ami_conn_idl_ending (const char* s);
564 const char* ciao_ami_conn_idl_ending () const;
566 /// For optionally generating CIAO AMI reply handler
567 /// impl header file.
568 void ciao_ami_conn_impl_hdr_ending (const char* s);
569 const char* ciao_ami_conn_impl_hdr_ending () const;
571 /// For optionally generating CIAO AMI reply handler
572 /// impl source file.
573 void ciao_ami_conn_impl_src_ending (const char* s);
574 const char* ciao_ami_conn_impl_src_ending () const;
576 /// For optionally controlling the container type, default is Session
577 void ciao_container_type (const char* s);
578 const char* ciao_container_type () const;
580 /// Set the clonable_in_args.
581 void use_clonable_in_args (bool clonable);
583 /// Get the clonable_in_args setting.
584 bool use_clonable_in_args () const;
586 /// Get the gen_seq_template_export_ member.
587 bool gen_template_export () const;
589 /// Set the gen_seq_template_export_ member.
590 void gen_template_export (bool val);
592 /// Get the gen_ostream_operators_ member.
593 bool gen_ostream_operators () const;
595 /// Set the gen_ostream_operators_ member.
596 void gen_ostream_operators (bool val);
598 /// Get the gen_static_desc_operations_ member.
599 bool gen_static_desc_operations () const;
601 /// Set the gen_static_desc_operations_ member.
602 void gen_static_desc_operations (bool val);
606 * Set the directory where all the IDL-Compiler-Generated files are
607 * to be kept. Default is current directory from which the
608 * <tao_idl> is called.
610 void output_dir (const char* s);
613 * Get the directory where all the IDL-Compiler-Generated files are
614 * to be kept. Default is current directory from which the
615 * <tao_idl> is called.
617 const char* output_dir () const;
619 /// Set the path for all *C.* file includes.
620 /// Default is local directory or $TAO_ROOT/tao.
621 void stub_include_dir (const char* s);
623 /// Get the path for all *C.* file includes.
624 /// Default is local directory or $TAO_ROOT/tao.
625 const char* stub_include_dir () const;
627 /// Set the directory where all the *S.* files are
628 /// to be kept. Default is output_dir_.
629 void skel_output_dir (const char* s);
631 /// Get the directory where all the *S.* files are
632 /// to be kept. Default is output_dir_.
633 const char* skel_output_dir () const;
635 /// Set the directory where all the *A.* files are
636 /// to be kept. Default is output_dir_.
637 void anyop_output_dir (const char* s);
639 /// Get the directory where all the *A.* files are
640 /// to be kept. Default is output_dir_.
641 const char* anyop_output_dir () const;
643 /// Set the directory where all the *exec.* files are
644 /// to be kept. Default is output_dir_.
645 void exec_output_dir (const char* s);
647 /// Get the directory where all the *exec.* files are
648 /// to be kept. Default is output_dir_.
649 const char* exec_output_dir () const;
651 ///Get the flag for not overwriting already existing exec files.
652 bool overwrite_not_exec () const;
654 ///Set the flag for not overwriting already existing exec files.
655 void overwrite_not_exec (bool val);
657 /// Set any support.
658 void any_support (bool);
660 /// Check Any support.
661 bool any_support () const;
663 /// Set cdr support.
664 void cdr_support (bool);
666 /// Check cdr support.
667 bool cdr_support () const;
669 /// Set TypeCode support.
670 void tc_support (bool);
672 /// Check TypeCode support
673 bool tc_support () const;
675 /// Set optimized valuetype member accessor generation.
676 void obv_opt_accessor (bool);
678 /// Check optimized valuetype member accessor generation.
679 bool obv_opt_accessor () const;
681 /// Set generation of implementation files.
682 void gen_impl_files (bool);
684 /// Check if we want to generate implementation files.
685 bool gen_impl_files () const;
687 /// Set generation of source file and line number for implementation files.
688 void gen_impl_debug_info (bool);
690 /// Check generation of source file and line number implementation files.
691 bool gen_impl_debug_info () const;
693 /// Set generation of copy constructor.
694 void gen_copy_ctor (bool);
696 /// Check if we want to generate the copy constructor.
697 bool gen_copy_ctor () const;
699 /// Set the generation of the assignment operator.
700 void gen_assign_op (bool);
702 /// Check if we want to generate the assignment operator.
703 bool gen_assign_op () const;
705 /// Set whether we want to generate Thru_POA collocation stubs.
706 void gen_thru_poa_collocation (bool);
708 /// Check if we want to generate Thru_POA collocation stubs.
709 bool gen_thru_poa_collocation () const;
711 /// Set whether we want to generate Direct collocation stubs.
712 void gen_direct_collocation (bool);
714 /// Check if we want to generate Direct collocation stubs.
715 bool gen_direct_collocation () const;
717 /// Set whether we want to generate for CORBA/e
718 void gen_corba_e (bool);
720 /// Check if we want to generate for CORBA/e
721 bool gen_corba_e () const;
723 /// Set whether we want to generate for Minimum CORBA
724 void gen_minimum_corba (bool);
726 /// Check if we want to generate for Minimum CORBA
727 bool gen_minimum_corba () const;
729 /// Set whether we want to generate for noeventCCM
730 void gen_noeventccm (bool);
732 /// Check if we want to generate for noeventCCM
733 bool gen_noeventccm () const;
735 /// Set whether we want to generate for LwCCM
736 void gen_lwccm (bool);
738 /// Check if we want to generate for LwCCM
739 bool gen_lwccm () const;
741 /// Set optimized typecodes.
742 void opt_tc (bool);
744 /// Check if TypeCodes are optimized.
745 bool opt_tc () const;
747 /// To enable or disable AMI4CCM call back feature
748 void ami4ccm_call_back (bool value);
750 /// Return the flag.
751 bool ami4ccm_call_back () const;
753 /// To enable or disable AMI call back feature of the Messaging
754 /// specification in the generated code.
755 void ami_call_back (bool value);
757 /// Return the flag.
758 bool ami_call_back () const;
760 /// To enable or disable AMH in the generated code.
761 void gen_amh_classes (bool value);
763 /// Return the flag.
764 bool gen_amh_classes () const;
766 /// Set the generation of tie classes and files.
767 void gen_tie_classes (bool value);
769 /// Return the flag.
770 bool gen_tie_classes () const;
772 /// To enable or disable AMI call back feature of the Messaging
773 /// specification in the generated code.
774 void gen_smart_proxies (bool value);
776 /// Return the flag.
777 bool gen_smart_proxies () const;
779 /// Set the flag.
780 void gen_inline_constants (bool value);
782 /// Return the flag.
783 bool gen_inline_constants () const;
785 /// Set the flag.
786 void gen_orb_h_include (bool value);
788 /// Return the flag.
789 bool gen_orb_h_include () const;
791 /// Generate an empty anyop header (A.h)
792 bool gen_empty_anyop_header () const;
794 /// Generate an empty anyop header (A.h)
795 void gen_empty_anyop_header (bool value);
797 /// Set the lookup strategy.
798 void lookup_strategy (LOOKUP_STRATEGY s);
800 /// Return the enumerated value for the lookup strategy. Default is
801 /// perfect hashing.
802 LOOKUP_STRATEGY lookup_strategy () const;
804 /// Set the DDS implementation.
805 void dds_impl (char const * const val);
807 /// Return the enumerated value for the DDS implementation.
808 /// Default is NDDS.
809 DDS_IMPL dds_impl () const;
811 /// Cleanup function.
812 void destroy ();
814 /// Used in the generation of extern function declarations so we
815 /// can use non-defined interfaces as members and parameters.
816 ACE_Unbounded_Queue<be_interface_fwd *> non_defined_interfaces;
818 /// Accessor for the member, sets it on the first call.
819 AST_PredefinedType *void_type ();
821 /// Accessor for the member, sets it on the first call.
822 be_interface *ccmobject ();
824 /// Accessor for the member, sets it on the first call.
825 be_module *messaging ();
827 /// Accessor for the member, sets it on the first call.
828 be_valuetype *messaging_exceptionholder ();
830 /// Accessor for the member, sets it on the first call.
831 be_interface *messaging_replyhandler ();
833 /// Accessors for the member.
834 bool gen_anyop_files () const;
835 void gen_anyop_files (bool val);
837 /// Accessors for the member gen_skel_files_.
838 bool gen_skel_files () const;
839 void gen_skel_files (bool val);
841 /// Accessors for the member gen_svnt_cpp_files_.
842 bool gen_svnt_cpp_files () const;
843 void gen_svnt_cpp_files (bool val);
845 /// Accessors for the member gen_svnt_t_files_.
846 bool gen_svnt_t_files () const;
847 void gen_svnt_t_files (bool val);
849 /// Accessors for the member gen_client_inline_.
850 bool gen_client_inline () const;
851 void gen_client_inline (bool val);
853 /// Accessors for the member gen_client_stub_.
854 bool gen_client_stub () const;
855 void gen_client_stub (bool val);
857 /// Accessors for the member gen_client_header_.
858 bool gen_client_header () const;
859 void gen_client_header (bool val);
861 /// Accessors for the member gen_server_skeleton_.
862 bool gen_server_skeleton () const;
863 void gen_server_skeleton (bool val);
865 /// Accessors for the member gen_server_header_.
866 bool gen_server_header () const;
867 void gen_server_header (bool val);
869 /// Accessors for the member gen_local_iface_anyops_.
870 bool gen_local_iface_anyops () const;
871 void gen_local_iface_anyops (bool val);
873 /// Accessors for the member gen_custom_ending_.
874 bool gen_custom_ending () const;
875 void gen_custom_ending (bool val);
877 /// Accessors for the member gen_unique_guards_.
878 bool gen_unique_guards () const;
879 void gen_unique_guards (bool val);
881 /// Accessors for the corresponding members.
883 bool gen_ciao_svnt () const;
884 void gen_ciao_svnt (bool val);
886 bool gen_ciao_exec_idl () const;
887 void gen_ciao_exec_idl (bool val);
889 bool gen_ciao_exec_impl () const;
890 void gen_ciao_exec_impl (bool val);
892 bool gen_ciao_exec_reactor_impl () const;
893 void gen_ciao_exec_reactor_impl (bool val);
895 bool gen_ciao_conn_impl () const;
896 void gen_ciao_conn_impl (bool val);
898 bool gen_dds_typesupport_idl () const;
899 void gen_dds_typesupport_idl (bool val);
901 bool gen_ciao_valuefactory_reg () const;
902 void gen_ciao_valuefactory_reg (bool val);
904 bool gen_stub_export_hdr_file () const;
905 void gen_stub_export_hdr_file (bool val);
907 bool gen_skel_export_hdr_file () const;
908 void gen_skel_export_hdr_file (bool val);
910 bool gen_svnt_export_hdr_file () const;
911 void gen_svnt_export_hdr_file (bool val);
913 bool gen_exec_export_hdr_file () const;
914 void gen_exec_export_hdr_file (bool val);
916 bool gen_conn_export_hdr_file () const;
917 void gen_conn_export_hdr_file (bool val);
919 bool alt_mapping () const;
920 void alt_mapping (bool val);
922 bool in_facet_servant () const;
923 void in_facet_servant (bool val);
925 bool gen_arg_traits () const;
926 void gen_arg_traits (bool val);
928 bool gen_anytypecode_adapter () const;
929 void gen_anytypecode_adapter (bool val);
931 bool no_fixed_err () const;
932 void no_fixed_err (bool val);
934 unsigned long tab_size () const;
935 void tab_size (unsigned long val);
937 /// Command line passed to ACE_Process::spawn. Different
938 /// implementations in IDL and IFR backends.
939 ACE_CString spawn_options ();
942 * Parse an argument that the frontend did not recognize.
944 void parse_args (long &i, char **av);
946 private:
948 * To switch between changing or non-changing standard include
949 * files (e.g. tao/corba.h) so that #include statements can be
950 * generated with ""s or <>s respectively.
952 size_t changing_standard_include_files_;
954 // Macros and includes used to export classes from generated code.
955 char* skel_export_macro_;
956 char* skel_export_include_;
957 char* skel_export_file_;
958 char* stub_export_macro_;
959 char* stub_export_include_;
960 char* stub_export_file_;
962 // Macro and include used on ORB .pidl files generating to the
963 // AnyTypeCode library.
964 char* anyop_export_macro_;
965 char* anyop_export_include_;
967 char* exec_export_macro_;
968 char* exec_export_include_;
969 char* svnt_export_macro_;
970 char* svnt_export_include_;
971 char* conn_export_macro_;
972 char* conn_export_include_;
974 char* pch_include_;
975 char* pre_include_;
976 char* post_include_;
977 char* include_guard_;
978 char* safe_include_;
979 char* unique_include_;
980 char* stripped_filename_;
982 /// Text that opens a "versioned" namespace for core TAO and orbsvcs
983 /// related code.
984 ACE_CString core_versioning_begin_;
986 /// Text that closes a "versioned" namespace for core TAO and
987 /// orbsvcs related code.
988 ACE_CString core_versioning_end_;
990 /// Text that opens a "versioned" namespace for CORBA::Any operators
991 ACE_CString anyops_versioning_begin_;
993 /// Text that closes a "versioned" namespace for CORBA::Any operators
994 ACE_CString anyops_versioning_end_;
996 /// Text that opens a "versioned" namespace.
997 ACE_CString versioning_begin_;
999 /// Text that closes a "versioned" namespace.
1000 ACE_CString versioning_end_;
1002 /// Include for versioned namespace include
1003 ACE_CString versioning_include_;
1005 /// Client's header file name ending. Default is "C.h".
1006 char* client_hdr_ending_;
1008 /// Client's stub's file name ending. Default is "C.cpp".
1009 char* client_stub_ending_;
1011 /// Client's inline file name ending. Default is "C.i".
1012 char* client_inline_ending_;
1014 /// Server's hdr file name ending. Default is "S.h".
1015 char* server_hdr_ending_;
1017 /// Implementation's hdr file name ending. Default is "I.h".
1018 char* implementation_hdr_ending_;
1020 // Implementation's skeleton file name ending. Default is "I.cpp".
1021 char* implementation_skel_ending_;
1023 /// Implementaion class prefix
1024 char* impl_class_prefix_;
1026 /// Implementation class suffix
1027 char* impl_class_suffix_;
1029 /// Server's template hdr file name ending. Default is "S_T.h".
1030 char* server_template_hdr_ending_;
1032 /// Server's skeleton file name ending. Default is "S.cpp".
1033 char* server_skeleton_ending_;
1035 /// Server's template skeleton file name ending. Default is
1036 /// "S_T.cpp".
1037 char* server_template_skeleton_ending_;
1039 /// Anyop header file name ending. Default is "A.h".
1040 char* anyop_hdr_ending_;
1042 /// Anyop source file name ending. Default is "A.cpp".
1043 char* anyop_src_ending_;
1045 /// CIAO servant template header file name ending. Default is "_svnt_T.h".
1046 char* ciao_svnt_hdr_template_ending_;
1048 /// CIAO servant template source file name ending. Default is "_svnt_T.cpp".
1049 char* ciao_svnt_src_template_ending_;
1051 /// CIAO servant header file name ending. Default is "_svnt.h".
1052 char* ciao_svnt_hdr_ending_;
1054 /// CIAO servant source file name ending. Default is "_svnt.cpp".
1055 char* ciao_svnt_src_ending_;
1057 /// CIAO executor impl header file name ending. Default is "_exec.h".
1058 char* ciao_exec_hdr_ending_;
1060 /// CIAO executor impl source file name ending. Default is "_exec.cpp".
1061 char* ciao_exec_src_ending_;
1063 /// CIAO executor stub header file name ending. Default is "EC.h".
1064 char* ciao_exec_stub_hdr_ending_;
1066 /// CIAO executor IDL file name ending. Default is "E.idl".
1067 char* ciao_exec_idl_ending_;
1069 /// CIAO connector impl header file name ending. Default is "_conn.h".
1070 char* ciao_conn_hdr_ending_;
1072 /// CIAO connector impl source file name ending. Default is "_conn.cpp".
1073 char* ciao_conn_src_ending_;
1075 /// DDS TypeSupport header file name ending. Default is "Support.h".
1076 char* dds_typesupport_hdr_ending_;
1078 /// CIAO AMI connector IDL file name ending. Default is "A.idl".
1079 char* ciao_ami_conn_idl_ending_;
1081 /// CIAO AMI reply handler impl header file name ending.
1082 /// Default is "A_impl.h".
1083 char* ciao_ami_conn_impl_hdr_ending_;
1085 /// CIAO AMI reply handler impl source file name ending.
1086 /// Default is "A_impl.cpp".
1087 char* ciao_ami_conn_impl_src_ending_;
1089 /// CIAO container type
1090 /// Default is "Session".
1091 char* ciao_container_type_;
1094 * Directory where all the IDL-Compiler-Generated files are to be
1095 * kept. Default value is 0 for this string which means the current
1096 * directory from which the <tao_idl> is called.
1098 char* output_dir_;
1101 * Path for all *C.* includes. Default value is 0, in which case
1102 * the local directory or $TAO_ROOT/tao is used.
1104 char* stub_include_dir_;
1107 * Directory where all the *S.* files are to be
1108 * kept. Default value is 0 for this string which means the
1109 * value for output_dir_ is used.
1111 char* skel_output_dir_;
1114 * Directory where all the *A.* files are to be
1115 * kept. Default value is 0 for this string which means the
1116 * value for output_dir_ is used.
1118 char* anyop_output_dir_;
1121 * Directory where all the *exec.* files are to be
1122 * kept. Default value is 0 for this string which means the
1123 * value for output_dir_ is used.
1125 char* exec_output_dir_;
1128 /// do we support Any operators?
1129 bool any_support_;
1131 /// do we support cdr?
1132 bool cdr_support_;
1134 /// do we support typecodes?
1135 bool tc_support_;
1137 /// do we optimize valuetype accessors?
1138 bool obv_opt_accessor_;
1140 /// are we generating implementation files?
1141 bool gen_impl_files_;
1143 /// are we generating source file and line numbers for implementation files?
1144 bool gen_impl_debug_info_;
1146 /// are we generating the copy constructor?
1147 bool gen_copy_ctor_;
1149 /// are we generating the assignment operator?
1150 bool gen_assign_op_;
1152 /// are we generating Thru_POA collocated stubs?
1153 bool gen_thru_poa_collocation_;
1155 /// are we generating Direct collocated stubs?
1156 bool gen_direct_collocation_;
1158 /// are we generating for CORBA/e
1159 bool gen_corba_e_;
1161 /// are we generating for Minimum CORBA
1162 bool gen_minimum_corba_;
1164 /// are we generating for LwCCM
1165 bool gen_lwccm_;
1167 /// are we generating for noeventCCM
1168 bool gen_noeventccm_;
1170 /// do we generate optimized typecodes?
1171 bool opt_tc_;
1173 /// Flag to indicate whether the AMI4ccm Call back feature should be enabled
1174 /// for the generated files or not.
1175 bool ami4ccm_call_back_;
1178 * Flag to indicate whether the AMI Call back feature of the
1179 * Messaging specification should be enabled for the generated files
1180 * or not.
1182 bool ami_call_back_;
1184 /// Flag for generating AMH classes.
1185 bool gen_amh_classes_;
1187 /// Flag to indicate whether we generate the tie classes and
1188 /// files or not.
1189 bool gen_tie_classes_;
1191 /// Flag to indicate whether smart proxies classes will be generated
1192 /// or not.
1193 bool gen_smart_proxies_;
1195 /// Flag to indicate whether we are using an inline form of constant
1196 /// generation that pleases the C++ compiler better on some platforms.
1197 bool gen_inline_constants_;
1199 /// Flag to indicate whether ORB.h include should be generated, needed for
1200 /// regenerating the pidl files.
1201 bool gen_orb_h_include_;
1203 /// Flag to indicate whether an empty A.h should be generated
1204 bool gen_empty_anyop_header_;
1206 /// The enumerated value indicating the lookup strategy.
1207 LOOKUP_STRATEGY lookup_strategy_;
1209 /// The enumerated value indicating the DDS implementation.
1210 DDS_IMPL dds_impl_;
1212 /// Used for void operation return types.
1213 AST_PredefinedType *void_type_;
1215 /// Reference holder for component skeleton visitors.
1216 be_interface *ccmobject_;
1218 /// Storage for the messaging exceptions holder's virtual scope.
1219 be_module *messaging_;
1221 /// Storage for exception holders' base class node.
1222 be_valuetype *messaging_exceptionholder_;
1224 /// Storage for the reply handlers' base class node.
1225 be_interface *messaging_replyhandler_;
1227 /// Separate files for generated Any operators?
1228 bool gen_anyop_files_;
1230 /// True by default, but a command line option can turn this off so that
1231 /// we don't generate a S.cpp file
1232 bool gen_skel_files_;
1234 /// True by default, but a command line option can turn this of so that
1235 /// we don't generate a svnt.cpp file
1236 bool gen_svnt_cpp_files_;
1238 /// True by default, but a command line option can turn this of so that
1239 /// we don't generate a svnt_T.cpp file
1240 bool gen_svnt_t_files_;
1242 /// True by default, but a command line option can turn this off so
1243 /// that we don't generate a client inline file
1244 bool gen_client_inline_;
1246 /// True by default, but a command line option can turn this off so
1247 /// that we don't generate a client stub file
1248 bool gen_client_stub_;
1250 /// True by default, but a command line option can turn this off so
1251 /// that we don't generate a client header file
1252 bool gen_client_header_;
1254 /// True by default, but a command line option can turn this off so
1255 /// that we don't generate a server skeleton file
1256 bool gen_server_skeleton_;
1258 /// True by default, but a command line option can turn this off so
1259 /// that we don't generate a server header file
1260 bool gen_server_header_;
1262 /// True by default, can be turned off by a command line option
1263 /// for regenerating internal ORB files.
1264 bool gen_local_iface_anyops_;
1266 /// Use in_clonable_arg_val instead of in_arg_val?
1267 bool use_clonable_in_args_;
1269 /// Generate explicit export for Visual Studio bug workaround,
1270 /// needed only in TAO basic sequence *C.h files.
1271 bool gen_template_export_;
1273 /// Generate ostream operators for each type declaration, for
1274 /// debugging or logging.
1275 bool gen_ostream_operators_;
1277 /// Generate static description operations for each interface
1278 bool gen_static_desc_operations_;
1281 * True by default, but a command line option can turn this off so
1282 * custom ending will not be applied to files in $TAO_ROOT/,
1283 * $TAO_ROOT/tao, $TAO_ROOT/orbsvcs, $TAO_ROOT/CIAO, $TAO_ROOT/CIAO/ciao.
1285 bool gen_custom_ending_;
1288 * True by default, but a command line option can turn this off so
1289 * the generated code (header) files will not be proteced by unique guards.
1291 bool gen_unique_guards_;
1293 /// False by default, these flags trigger code generation
1294 bool gen_ciao_svnt_;
1295 bool gen_ciao_exec_idl_;
1296 bool gen_ciao_exec_impl_;
1297 bool gen_ciao_exec_reactor_impl_;
1299 ///Flag to indicate whether generated exec files should
1300 ///overwritten already existing exe files
1301 bool overwrite_not_exec_;
1303 /// False by default, this flag triggers code generation
1304 /// for CCM connector implementations.
1305 bool gen_ciao_conn_impl_;
1307 /// Used for DDS implementations other than OpenDDS.
1308 bool gen_dds_typesupport_idl_;
1310 /// Generate automatic valuetype factory registration in
1311 /// CIAO servants.
1312 bool gen_ciao_valuefactory_reg_;
1314 /// Flags toggling export header file generation.
1315 bool gen_stub_export_hdr_file_;
1316 bool gen_skel_export_hdr_file_;
1317 bool gen_svnt_export_hdr_file_;
1318 bool gen_exec_export_hdr_file_;
1319 bool gen_conn_export_hdr_file_;
1321 /// 2 spaces by default, can be set from the command line.
1322 unsigned int tab_size_;
1324 /// Are we generating STL types?
1325 bool alt_mapping_;
1327 /// Are we in the act of generating a facet servant?
1328 bool in_facet_servant_;
1330 /// Are we generating arg traits template instantiations?
1331 bool gen_arg_traits_;
1333 /// Generating arg traits in the ORB for the basic type
1334 /// sequences requires the AnyTypeCode_Adapter class.
1335 bool gen_anytypecode_adapter_;
1337 /// Don't generate an error for usage of the fixed data type
1338 bool no_fixed_err_;
1341 #endif /* _BE_GLOBAL_H */