summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL')
-rw-r--r--TAO/TAO_IDL/ast/ast_component.cpp52
-rw-r--r--TAO/TAO_IDL/ast/ast_decl.cpp9
-rw-r--r--TAO/TAO_IDL/ast/ast_expression.cpp56
-rw-r--r--TAO/TAO_IDL/ast/ast_home.cpp53
-rw-r--r--TAO/TAO_IDL/ast/ast_interface.cpp73
-rw-r--r--TAO/TAO_IDL/ast/ast_module.cpp17
-rw-r--r--TAO/TAO_IDL/ast/ast_root.cpp2
-rw-r--r--TAO/TAO_IDL/ast/ast_valuetype.cpp73
-rw-r--r--TAO/TAO_IDL/be/be_attribute.cpp12
-rw-r--r--TAO/TAO_IDL/be/be_codegen.cpp50
-rw-r--r--TAO/TAO_IDL/be/be_global.cpp38
-rw-r--r--TAO/TAO_IDL/be/be_interface.cpp40
-rw-r--r--TAO/TAO_IDL/be/be_produce.cpp25
-rw-r--r--TAO/TAO_IDL/be/be_tmplinst.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_valuetype.cpp24
-rw-r--r--TAO/TAO_IDL/be/be_visitor_amh_pre_proc.cpp84
-rw-r--r--TAO/TAO_IDL/be/be_visitor_arg_traits.cpp42
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_ccm_pre_proc.cpp182
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/component.cpp13
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp15
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp41
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/component_sh.cpp3
-rw-r--r--TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_sh.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_ss.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interceptors_ss.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface.cpp5
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp12
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_ih.cpp13
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_is.cpp31
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp428
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_sh.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_ss.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_module/module.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_root/root.cpp11
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_traits.cpp55
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp13
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union_branch/public_assign_cs.cpp30
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union_branch/public_ci.cpp20
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/field_ch.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp31
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp31
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp11
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ss.cpp20
-rw-r--r--TAO/TAO_IDL/be_include/be_global.h9
-rw-r--r--TAO/TAO_IDL/be_include/be_valuetype.h6
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_amh_pre_proc.h3
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_ccm_pre_proc.h9
-rw-r--r--TAO/TAO_IDL/driver/drv_preproc.cpp28
-rw-r--r--TAO/TAO_IDL/fe/fe_interface_header.cpp8
-rw-r--r--TAO/TAO_IDL/fe/fe_lookup.cpp9
-rw-r--r--TAO/TAO_IDL/fe/idl.ll2
-rw-r--r--TAO/TAO_IDL/fe/idl.yy8
-rw-r--r--TAO/TAO_IDL/fe/lex.yy.cpp818
-rw-r--r--TAO/TAO_IDL/fe/lex.yy.cpp.diff4053
-rw-r--r--TAO/TAO_IDL/fe/y.tab.cpp8
-rw-r--r--TAO/TAO_IDL/include/ast_component.h8
-rw-r--r--TAO/TAO_IDL/include/ast_expression.h3
-rw-r--r--TAO/TAO_IDL/include/ast_home.h8
-rw-r--r--TAO/TAO_IDL/include/ast_interface.h3
-rw-r--r--TAO/TAO_IDL/include/ast_module.h5
-rw-r--r--TAO/TAO_IDL/include/ast_valuetype.h4
-rw-r--r--TAO/TAO_IDL/include/idl_defines.h2
-rw-r--r--TAO/TAO_IDL/include/idl_global.h21
-rw-r--r--TAO/TAO_IDL/include/utl_err.h13
-rw-r--r--TAO/TAO_IDL/include/utl_scope.h12
-rw-r--r--TAO/TAO_IDL/util/utl_err.cpp36
-rw-r--r--TAO/TAO_IDL/util/utl_global.cpp103
-rw-r--r--TAO/TAO_IDL/util/utl_scope.cpp109
77 files changed, 1424 insertions, 5557 deletions
diff --git a/TAO/TAO_IDL/ast/ast_component.cpp b/TAO/TAO_IDL/ast/ast_component.cpp
index b83509eff93..3e57283f4fc 100644
--- a/TAO/TAO_IDL/ast/ast_component.cpp
+++ b/TAO/TAO_IDL/ast/ast_component.cpp
@@ -73,58 +73,6 @@ AST_Component::redefine (AST_Interface *from)
this->pd_consumes = c->pd_consumes;
}
-AST_Decl *
-AST_Component::look_in_inherited (UTL_ScopedName *e,
- idl_bool treat_as_ref)
-{
- AST_Decl *d = 0;
-
- if (this->pd_base_component != 0)
- {
- d = this->pd_base_component->lookup_by_name (e, treat_as_ref);
- }
-
- return d;
-}
-
-// Look through supported interface list.
-AST_Decl *
-AST_Component::look_in_supported (UTL_ScopedName *e,
- idl_bool treat_as_ref)
-{
- AST_Decl *d = 0;
- AST_Interface **is = 0;
- long nis = -1;
-
- // Can't look in an interface which was not yet defined.
- if (!this->is_defined ())
- {
- idl_global->err ()->fwd_decl_lookup (this,
- e);
- return 0;
- }
-
- // OK, loop through supported interfaces.
-
- // (Don't leave the inheritance hierarchy, no module or global ...)
- // Find all and report ambiguous results as error.
-
- for (nis = this->n_supports (), is = this->supports ();
- nis > 0;
- nis--, is++)
- {
- d = (*is)->lookup_by_name (e,
- treat_as_ref,
- 0 /* not in parent */);
- if (d != 0)
- {
- break;
- }
- }
-
- return d;
-}
-
AST_Component *
AST_Component::base_component (void) const
{
diff --git a/TAO/TAO_IDL/ast/ast_decl.cpp b/TAO/TAO_IDL/ast/ast_decl.cpp
index c0721b6a34b..dcc36e6cc99 100644
--- a/TAO/TAO_IDL/ast/ast_decl.cpp
+++ b/TAO/TAO_IDL/ast/ast_decl.cpp
@@ -871,6 +871,11 @@ AST_Decl::repoID (char *value)
}
this->repoID_ = value;
+
+ // Forces version to be set to the last id component.
+ delete [] this->version_;
+ this->version_ = 0;
+ (void) this->version ();
}
const char *
@@ -915,10 +920,6 @@ AST_Decl::version (void)
{
this->version_ = ACE::strnew (tail2 + 1);
}
- else
- {
- this->version_ = ACE::strnew ("1.0");
- }
}
return this->version_;
diff --git a/TAO/TAO_IDL/ast/ast_expression.cpp b/TAO/TAO_IDL/ast/ast_expression.cpp
index 4cd2bf8af20..bdd645d1024 100644
--- a/TAO/TAO_IDL/ast/ast_expression.cpp
+++ b/TAO/TAO_IDL/ast/ast_expression.cpp
@@ -1707,8 +1707,6 @@ eval_kind(AST_Expression::AST_ExprValue *ev, AST_Expression::EvalKind ek)
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
case AST_Expression::EK_octet:
return coerce_value (ev, AST_Expression::EV_octet);
- case AST_Expression::EK_bool:
- return coerce_value (ev, AST_Expression::EV_bool);
default:
return 0;
}
@@ -1716,19 +1714,11 @@ eval_kind(AST_Expression::AST_ExprValue *ev, AST_Expression::EvalKind ek)
// Private operations.
-// @@@ (JP) CORBA 2.6 and earlier say that in a constant expression,
-// each subexpression must fall within the range of the assigned type.
-// However, this may be hard for the compiler in some cases (must
-// evaluate all grouping possibilities). So there is an outstanding
-// issue, #1139, and the best guess is that it will ultimately be
-// decided that only the final value must fall within the range of
-// the assigned type. So there are no checks here, only in coerce().
-
// Apply binary operators to an AST_Expression after evaluating
// its sub-expressions.
// Operations supported: '+', '-', '*', '/'
AST_Expression::AST_ExprValue *
-AST_Expression::eval_bin_op (void)
+AST_Expression::eval_bin_op (AST_Expression::EvalKind /* ek */)
{
AST_ExprValue *retval = 0;
@@ -1736,14 +1726,29 @@ AST_Expression::eval_bin_op (void)
{
return 0;
}
-
+// @@@ (JP) See comment below.
+/*
+ this->pd_v1->set_ev (this->pd_v1->eval_internal (ek));
+
+ if (this->pd_v1->ev () == 0)
+ {
+ return 0;
+ }
+*/
this->pd_v1->set_ev (this->pd_v1->coerce (EV_double));
if (this->pd_v1->ev () == 0)
{
return 0;
}
+/*
+ this->pd_v2->set_ev (this->pd_v2->eval_internal (ek));
+ if (this->pd_v2->ev () == 0)
+ {
+ return 0;
+ }
+*/
this->pd_v2->set_ev (this->pd_v2->coerce (EV_double));
if (pd_v2->ev () == 0)
@@ -1793,6 +1798,15 @@ AST_Expression::eval_bin_op (void)
return 0;
}
+ // @@@ (JP) CORBA 2.6 and earlier say that in a constant expression,
+ // each subexpression must fall within the range of the assigned type.
+ // However, this may be hard for the compiler in some cases (must
+ // evaluate all grouping possibilities). So there is an outstanding
+ // issue, #1139, and the best guess is that it will ultimately be
+ // decided that only the final value must fall within the range of
+ // the assigned type. So I've commented out the checks above, and
+ // added this final evaluation below. (02-06-25).
+// return eval_kind (retval, ek);
return retval;
}
@@ -1828,12 +1842,6 @@ AST_Expression::eval_bit_op (AST_Expression::EvalKind ek)
this->pd_v2->set_ev (this->pd_v2->coerce (EV_ulong));
retval->et = EV_ulong;
}
- else if (ek == EK_bool)
- {
- this->pd_v1->set_ev (this->pd_v1->coerce (EV_bool));
- this->pd_v2->set_ev (this->pd_v2->coerce (EV_bool));
- retval->et = EV_bool;
- }
else
{
this->pd_v1->set_ev (this->pd_v1->coerce (EV_long));
@@ -2169,9 +2177,6 @@ AST_Expression::coerce (AST_Expression::ExprType t)
case EV_octet:
this->pd_ev = this->eval_internal (EK_octet);
break;
- case EV_bool:
- this->pd_ev = this->eval_internal (EK_bool);
- break;
default:
this->pd_ev = this->eval_internal (EK_const);
break;
@@ -2272,13 +2277,6 @@ AST_Expression::eval_internal (AST_Expression::EvalKind ek)
return eval_kind (this->pd_ev,
ek);
}
-
- if (ek == EK_bool || ek == EK_octet)
- {
- // Operators may be used only with integer or floating point types.
- idl_global->err ()->illegal_infix ();
- return 0;
- }
// OK, must evaluate operator.
switch (this->pd_ec)
@@ -2288,7 +2286,7 @@ AST_Expression::eval_internal (AST_Expression::EvalKind ek)
case EC_mul:
case EC_div:
case EC_mod:
- this->pd_ev = this->eval_bin_op ();
+ this->pd_ev = this->eval_bin_op (ek);
return eval_kind (this->pd_ev,
ek);
case EC_or:
diff --git a/TAO/TAO_IDL/ast/ast_home.cpp b/TAO/TAO_IDL/ast/ast_home.cpp
index bbc1c40615c..c098ccb4763 100644
--- a/TAO/TAO_IDL/ast/ast_home.cpp
+++ b/TAO/TAO_IDL/ast/ast_home.cpp
@@ -7,7 +7,6 @@
#include "ast_visitor.h"
#include "utl_identifier.h"
#include "utl_indenter.h"
-#include "utl_err.h"
#include "global_extern.h"
ACE_RCSID (ast,
@@ -58,58 +57,6 @@ AST_Home::~AST_Home (void)
{
}
-AST_Decl *
-AST_Home::look_in_inherited (UTL_ScopedName *e,
- idl_bool treat_as_ref)
-{
- AST_Decl *d = 0;
-
- if (this->pd_base_home != 0)
- {
- d = this->pd_base_home->lookup_by_name (e, treat_as_ref);
- }
-
- return d;
-}
-
-// Look through supported interface list.
-AST_Decl *
-AST_Home::look_in_supported (UTL_ScopedName *e,
- idl_bool treat_as_ref)
-{
- AST_Decl *d = 0;
- AST_Interface **is = 0;
- long nis = -1;
-
- // Can't look in an interface which was not yet defined.
- if (!this->is_defined ())
- {
- idl_global->err ()->fwd_decl_lookup (this,
- e);
- return 0;
- }
-
- // OK, loop through supported interfaces.
-
- // (Don't leave the inheritance hierarchy, no module or global ...)
- // Find all and report ambiguous results as error.
-
- for (nis = this->n_supports (), is = this->supports ();
- nis > 0;
- nis--, is++)
- {
- d = (*is)->lookup_by_name (e,
- treat_as_ref,
- 0 /* not in parent */);
- if (d != 0)
- {
- break;
- }
- }
-
- return d;
-}
-
AST_Home *
AST_Home::base_home (void) const
{
diff --git a/TAO/TAO_IDL/ast/ast_interface.cpp b/TAO/TAO_IDL/ast/ast_interface.cpp
index 8c41d3f43d5..3c43841b2f5 100644
--- a/TAO/TAO_IDL/ast/ast_interface.cpp
+++ b/TAO/TAO_IDL/ast/ast_interface.cpp
@@ -91,12 +91,9 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "utl_err.h"
#include "utl_identifier.h"
#include "utl_indenter.h"
-#include "utl_string.h"
#include "global_extern.h"
#include "nr_extern.h"
-#include "ace/streams.h"
-
ACE_RCSID (ast,
ast_interface,
"$Id$")
@@ -1481,76 +1478,6 @@ AST_Interface::redef_clash (void)
return 0;
}
-// Look through inherited interfaces.
-AST_Decl *
-AST_Interface::look_in_inherited (UTL_ScopedName *e,
- idl_bool treat_as_ref)
-{
- AST_Decl *d = 0;
- AST_Decl *d_before = 0;
- AST_Interface **is = 0;
- long nis = -1;
-
- // Can't look in an interface which was not yet defined.
- if (!this->is_defined ())
- {
- idl_global->err ()->fwd_decl_lookup (this,
- e);
- return 0;
- }
-
- // OK, loop through inherited interfaces.
-
- // (Don't leave the inheritance hierarchy, no module or global ...)
- // Find all and report ambiguous results as error.
-
- for (nis = this->n_inherits (), is = this->inherits ();
- nis > 0;
- nis--, is++)
- {
- d = (*is)->lookup_by_name (e,
- treat_as_ref,
- 0 /* not in parent */);
- if (d != 0)
- {
- if (d_before == 0)
- {
- // First result found.
- d_before = d;
- }
- else
- {
- // Conflict against further results?
- if (d != d_before)
- {
- ACE_ERROR ((LM_ERROR,
- "warning in %s line %d: ",
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
-
- e->dump (*ACE_DEFAULT_LOG_STREAM);
-
- ACE_ERROR ((LM_ERROR,
- " is ambiguous in scope.\n"
- "Found "));
-
- d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
-
- ACE_ERROR ((LM_ERROR,
- " and "));
-
- d_before->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
-
- ACE_ERROR ((LM_ERROR,
- ".\n"));
- }
- }
- }
- }
-
- return d_before;
-}
-
AST_Decl *
AST_Interface::lookup_for_add (AST_Decl *d,
idl_bool /* treat_as_ref */)
diff --git a/TAO/TAO_IDL/ast/ast_module.cpp b/TAO/TAO_IDL/ast/ast_module.cpp
index 707fb43f3fd..244521892aa 100644
--- a/TAO/TAO_IDL/ast/ast_module.cpp
+++ b/TAO/TAO_IDL/ast/ast_module.cpp
@@ -1000,7 +1000,7 @@ AST_Module::fe_add_constant (AST_Constant *t)
{
idl_global->err ()->redefinition_in_scope (t,
d);
- return 0;
+ return NULL;
}
}
@@ -1633,21 +1633,6 @@ AST_Module::be_add_interface (AST_Interface *i,
return 0;
}
-// Has this node been referenced here before?
-idl_bool
-AST_Module::referenced (AST_Decl *e,
- Identifier *id)
-{
- idl_bool refd = this->UTL_Scope::referenced (e, id);
-
- if (refd)
- {
- return I_TRUE;
- }
-
- return this->look_in_previous (e->local_name ()) != 0;
-}
-
void
AST_Module::add_to_previous (AST_Module *m)
{
diff --git a/TAO/TAO_IDL/ast/ast_root.cpp b/TAO/TAO_IDL/ast/ast_root.cpp
index 2325c2684cd..1cd6826c64d 100644
--- a/TAO/TAO_IDL/ast/ast_root.cpp
+++ b/TAO/TAO_IDL/ast/ast_root.cpp
@@ -230,7 +230,7 @@ AST_Root::destroy ()
if (d->node_type () == AST_Decl::NT_pre_defined)
{
- j = i + 1;
+ j = i;
break;
}
diff --git a/TAO/TAO_IDL/ast/ast_valuetype.cpp b/TAO/TAO_IDL/ast/ast_valuetype.cpp
index 8d5a06dc9e9..348d5dbbf4d 100644
--- a/TAO/TAO_IDL/ast/ast_valuetype.cpp
+++ b/TAO/TAO_IDL/ast/ast_valuetype.cpp
@@ -8,12 +8,9 @@
#include "utl_err.h"
#include "utl_identifier.h"
#include "utl_indenter.h"
-#include "utl_string.h"
#include "global_extern.h"
#include "nr_extern.h"
-#include "ace/streams.h"
-
ACE_RCSID (ast,
ast_valuetype,
"$Id$")
@@ -134,76 +131,6 @@ AST_ValueType::will_have_factory (void)
return I_FALSE;
}
-// Look through supported interface list.
-AST_Decl *
-AST_ValueType::look_in_supported (UTL_ScopedName *e,
- idl_bool treat_as_ref)
-{
- AST_Decl *d = 0;
- AST_Decl *d_before = 0;
- AST_Interface **is = 0;
- long nis = -1;
-
- // Can't look in an interface which was not yet defined.
- if (!this->is_defined ())
- {
- idl_global->err ()->fwd_decl_lookup (this,
- e);
- return 0;
- }
-
- // OK, loop through supported interfaces.
-
- // (Don't leave the inheritance hierarchy, no module or global ...)
- // Find all and report ambiguous results as error.
-
- for (nis = this->n_supports (), is = this->supports ();
- nis > 0;
- nis--, is++)
- {
- d = (*is)->lookup_by_name (e,
- treat_as_ref,
- 0 /* not in parent */);
- if (d != 0)
- {
- if (d_before == 0)
- {
- // First result found.
- d_before = d;
- }
- else
- {
- // Conflict against further results?
- if (d != d_before)
- {
- ACE_ERROR ((LM_ERROR,
- "warning in %s line %d: ",
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
-
- e->dump (*ACE_DEFAULT_LOG_STREAM);
-
- ACE_ERROR ((LM_ERROR,
- " is ambiguous in scope.\n"
- "Found "));
-
- d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
-
- ACE_ERROR ((LM_ERROR,
- " and "));
-
- d_before->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
-
- ACE_ERROR ((LM_ERROR,
- ".\n"));
- }
- }
- }
- }
-
- return d_before;
-}
-
void
AST_ValueType::destroy (void)
{
diff --git a/TAO/TAO_IDL/be/be_attribute.cpp b/TAO/TAO_IDL/be/be_attribute.cpp
index b00d7d35941..652a768516c 100644
--- a/TAO/TAO_IDL/be/be_attribute.cpp
+++ b/TAO/TAO_IDL/be/be_attribute.cpp
@@ -25,8 +25,8 @@
#include "global_extern.h"
-ACE_RCSID (be,
- be_attribute,
+ACE_RCSID (be,
+ be_attribute,
"$Id$")
be_attribute::be_attribute (void)
@@ -77,15 +77,9 @@ be_attribute::be_attribute (idl_bool ro,
be_operation_default_strategy (0));
this->set_strategy_ = bods;
- // TAO_IDL generated attribute methods currently have an exception
- // specification containing CORBA::SystemException. Make sure we
- // generate a "tao/SystemException.h" include directive.
- ACE_SET_BITS (idl_global->decls_seen_info_,
- idl_global->decls_seen_masks.operation_seen_);
-
if (!this->imported () && !this->is_local ())
{
- // For the return types of the two operations
+ // For the return types of the two operations
// generated from this attribute.
this->set_arg_seen_bit (be_type::narrow_from_decl (ft));
ACE_SET_BITS (idl_global->decls_seen_info_,
diff --git a/TAO/TAO_IDL/be/be_codegen.cpp b/TAO/TAO_IDL/be/be_codegen.cpp
index d1a72b65667..7cf18dcfe6e 100644
--- a/TAO/TAO_IDL/be/be_codegen.cpp
+++ b/TAO/TAO_IDL/be/be_codegen.cpp
@@ -462,7 +462,7 @@ TAO_CodeGen::start_server_header (const char *fname)
if (be_global->gen_amh_classes ())
{
this->gen_standard_include (this->server_header_,
- "tao/Messaging/AMH_Response_Handler.h");
+ "tao/PortableServer/AMH_Response_Handler.h");
}
*this->server_header_ << be_nl << be_nl
@@ -885,12 +885,6 @@ TAO_CodeGen::start_implementation_header (const char *fname)
<< "#pragma once\n"
<< "#endif /* ACE_LACKS_PRAGMA_ONCE */\n\n";
- if (ACE_BIT_ENABLED (idl_global->decls_seen_info_,
- idl_global->decls_seen_masks.local_iface_seen_))
- {
- *this->implementation_header_ << "#include \"tao/LocalObject.h\"\n\n";
- }
-
return 0;
}
@@ -1169,10 +1163,7 @@ TAO_CodeGen::end_server_skeletons (void)
int
TAO_CodeGen::end_anyop_source (void)
{
- if (!be_global->gen_tmplinst ())
- {
- *this->anyop_source_ << "\n";
- }
+ *this->anyop_source_ << "\n\n";
return 0;
}
@@ -1383,24 +1374,19 @@ TAO_CodeGen::gen_stub_hdr_includes (void)
this->gen_standard_include (this->client_header_,
"tao/ORB.h");
- this->gen_cond_file_include (
- idl_global->decls_seen_masks.operation_seen_,
- "tao/SystemException.h",
- this->client_header_
- );
-
- // Not needed at the moment, since UserException.h is pulled in by
- // ORB.h, which is included in the stub header file. May change if
- // ORB.h is rearranged to make a lighter include for applications.
- // System exception throw spec for every operation may change soon.
+ // Not needed at the moment, since Exception.h is pulled in by ORB.h,
+ // included at the top of the stub header file. May change if ORB.h
+ // is rearranged to make a lighter include for applications.
#if 0
+ // System exception throw spec for every operation may change soon.
// For IDL exception, we need full knowledge of CORBA::UserException.
this->gen_cond_file_include (
- idl_global->decls_seen_masks.exception_seen_,
- "tao/UserException.h",
+ idl_global->decls_seen_masks.operation_seen_
+ | idl_global->decls_seen_masks.exception_seen_,
+ "tao/Exception.h",
this->client_header_
);
-#endif /* 0 */
+#endif
this->gen_standard_include (this->client_header_,
"tao/Environment.h");
@@ -1570,22 +1556,6 @@ TAO_CodeGen::gen_stub_src_includes (void)
"tao/Typecode.h");
}
- // The UserException::_tao_{en,de}code() methods can throw a
- // CORBA::MARSHAL exception so make sure that system exception is
- // fully declared/defined by including "tao/SystemException.h".
- // However, only include "tao/SystemException.h" if a user exception
- // was encountered and if we're not already including it in the stub
- // header.
- if (ACE_BIT_ENABLED (idl_global->decls_seen_info_,
- idl_global->decls_seen_masks.exception_seen_)
- && ACE_BIT_DISABLED (idl_global->decls_seen_info_,
- idl_global->decls_seen_masks.operation_seen_))
- {
- this->gen_standard_include (this->client_stubs_,
- "tao/SystemException.h");
- }
-
-
// Includes whatever Any template classes that may be needed.
this->gen_any_file_includes ();
diff --git a/TAO/TAO_IDL/be/be_global.cpp b/TAO/TAO_IDL/be/be_global.cpp
index 7d30f48bfd2..c4644d48969 100644
--- a/TAO/TAO_IDL/be/be_global.cpp
+++ b/TAO/TAO_IDL/be/be_global.cpp
@@ -83,8 +83,7 @@ BE_GlobalData::BE_GlobalData (void)
lookup_strategy_ (TAO_PERFECT_HASH),
void_type_ (0),
ccmobject_ (0),
- gen_anyop_files_ (I_FALSE),
- do_ccm_preproc_ (I_TRUE)
+ gen_anyop_files_ (I_FALSE)
{
}
@@ -993,18 +992,6 @@ BE_GlobalData::gen_anyop_files (idl_bool val)
this->gen_anyop_files_ = val;
}
-idl_bool
-BE_GlobalData::do_ccm_preproc (void) const
-{
- return this->do_ccm_preproc_;
-}
-
-void
-BE_GlobalData::do_ccm_preproc (idl_bool val)
-{
- this->do_ccm_preproc_ = val;
-}
-
ACE_CString
BE_GlobalData::spawn_options (void)
{
@@ -1369,6 +1356,11 @@ BE_GlobalData::parse_args (long &i, char **av)
// generating Direct collocated stubs.
be_global->gen_direct_collocation (1);
}
+ else if (av[i][2] == 'v')
+ {
+ // enable OBV (Valuetype) support.
+ idl_global->obv_support (1);
+ }
else if (av[i][2] == 'I')
{
size_t options = ACE_OS::strlen(av[i]) - 3;
@@ -1451,34 +1443,34 @@ BE_GlobalData::parse_args (long &i, char **av)
if (av[i][2] == 'a')
{
// suppress Any support
- be_global->any_support (I_FALSE);
+ be_global->any_support (0);
}
else if (av[i][2] == 't')
{
// suppress typecode support
// Anys must be suppressed as well
- be_global->tc_support (I_FALSE);
- be_global->any_support (I_FALSE);
+ be_global->tc_support (0);
+ be_global->any_support (0);
}
else if (av[i][2] == 'p')
{
// suppress generating Thru_POA collocated stubs
- be_global->gen_thru_poa_collocation (I_FALSE);
+ be_global->gen_thru_poa_collocation (0);
}
else if (av[i][2] == 'd')
{
// suppress generating Direct collocated stubs
- be_global->gen_direct_collocation (I_FALSE);
+ be_global->gen_direct_collocation (0);
}
else if (av[i][2] == 'c')
{
// suppress generating tie classes and files
be_global->gen_tie_classes (0);
}
- else if (av[i][2] == 'm')
+ else if (av[i][2] == 'v')
{
- // disable IDL3 to IDL2 preprocessing.
- be_global->do_ccm_preproc (I_FALSE);
+ // disable OBV (Valuetype) support
+ idl_global->obv_support (0);
}
else
{
@@ -1844,7 +1836,7 @@ BE_GlobalData::usage (void) const
));
ACE_DEBUG ((
LM_DEBUG,
- ACE_TEXT (" -Sm\t\t\tdisable IDL3 equivalent IDL preprocessing")
+ ACE_TEXT (" -Sv\t\t\tdisable OBV (Valuetype) support")
ACE_TEXT (" (enabled by default)\n")
));
}
diff --git a/TAO/TAO_IDL/be/be_interface.cpp b/TAO/TAO_IDL/be/be_interface.cpp
index 58760041cfe..2856108bf60 100644
--- a/TAO/TAO_IDL/be/be_interface.cpp
+++ b/TAO/TAO_IDL/be/be_interface.cpp
@@ -520,7 +520,7 @@ be_interface::gen_stub_ctor (TAO_OutStream *os)
<< ")" << be_nl
<< ": ";
- if (this->has_mixed_parentage_)
+ if (this->has_mixed_parentage_ && ! this->is_abstract ())
{
*os << "ACE_NESTED_CLASS (CORBA, AbstractBase) ("
<< be_idt << be_idt << be_idt_nl
@@ -553,7 +553,19 @@ be_interface::gen_stub_ctor (TAO_OutStream *os)
*os << be_idt;
}
- if (!is_abstract_)
+ if (is_abstract_)
+ {
+ if (this->pd_n_inherits == 0)
+ {
+ *os << "ACE_NESTED_CLASS (CORBA, AbstractBase) ("
+ << be_idt << be_idt_nl
+ << "objref," << be_nl
+ << "_tao_collocated," << be_nl
+ << "servant" << be_uidt_nl
+ << ")" << be_uidt;
+ }
+ }
+ else
{
*os << "ACE_NESTED_CLASS (CORBA, Object) ("
<< be_idt << be_idt_nl
@@ -1356,31 +1368,19 @@ be_interface::gen_collocated_skel_body (be_interface *derived,
void
be_interface::analyze_parentage (void)
{
- if (this->has_mixed_parentage_ != -1)
- {
- return;
- }
-
this->has_mixed_parentage_ = 0;
for (long i = 0; i < this->pd_n_inherits; ++i)
{
- be_interface *parent =
- be_interface::narrow_from_decl (this->pd_inherits[i]);
-
- if (parent->is_abstract () || parent->has_mixed_parentage ())
+ if (this->pd_inherits[i]->is_abstract ())
{
this->has_mixed_parentage_ = 1;
break;
}
}
-
- AST_Decl::NodeType nt = this->node_type ();
- idl_bool can_be_mixed = nt == AST_Decl::NT_interface
- || nt == AST_Decl::NT_component
- || nt == AST_Decl::NT_home;
- if (this->has_mixed_parentage_ == 1 && can_be_mixed)
+ if (this->has_mixed_parentage_ == 1
+ && this->node_type () == AST_Decl::NT_interface)
{
be_global->mixed_parentage_interfaces.enqueue_tail (this);
}
@@ -1456,8 +1456,6 @@ be_interface::traverse_inheritance_graph (
// If we are doing a component, we check for a parent.
if (intf->node_type () == AST_Decl::NT_component)
{
- (void) this->insert_non_dup (be_global->ccmobject ());
-
AST_Component *base =
AST_Component::narrow_from_decl (intf)->base_component ();
@@ -1474,6 +1472,10 @@ be_interface::traverse_inheritance_graph (
abstract_paths_only);
}
}
+ else
+ {
+ (void) this->insert_non_dup (be_global->ccmobject ());
+ }
}
(void) this->insert_non_dup (intf, abstract_paths_only);
diff --git a/TAO/TAO_IDL/be/be_produce.cpp b/TAO/TAO_IDL/be/be_produce.cpp
index 9936f760de0..4f1527cfcd8 100644
--- a/TAO/TAO_IDL/be/be_produce.cpp
+++ b/TAO/TAO_IDL/be/be_produce.cpp
@@ -121,22 +121,19 @@ BE_produce (void)
BE_abort ();
}
- if (be_global->do_ccm_preproc ())
- {
- // Make a pass over the AST and introduce
- // CCM specific nodes.
- be_visitor_ccm_pre_proc ccm_preproc_visitor (&ctx);
+ // Make a pass over the AST and introduce
+ // CCM specific nodes.
+ be_visitor_ccm_pre_proc ccm_preproc_visitor (&ctx);
- if (root->accept (&ccm_preproc_visitor) == -1)
- {
- ACE_ERROR ((LM_ERROR,
- "(%N:%l) be_produce - "
- "CCM preprocessing for Root failed\n"));
- BE_abort ();
- }
+ if (root->accept (&ccm_preproc_visitor) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%N:%l) be_produce - "
+ "CCM preprocessing for Root failed\n"));
+ BE_abort ();
}
- if (be_global->ami_call_back ())
+ if (be_global->ami_call_back () == I_TRUE)
{
// Make a pass over the AST and introduce
// AMI specific interfaces, methods and valuetypes.
@@ -151,7 +148,7 @@ BE_produce (void)
}
}
- if (be_global->gen_amh_classes ())
+ if (be_global->gen_amh_classes () == I_TRUE)
{
// Make a pass over the AST and introduce
// AMH specific code
diff --git a/TAO/TAO_IDL/be/be_tmplinst.cpp b/TAO/TAO_IDL/be/be_tmplinst.cpp
index 2edee73bf39..e14b08e765a 100644
--- a/TAO/TAO_IDL/be/be_tmplinst.cpp
+++ b/TAO/TAO_IDL/be/be_tmplinst.cpp
@@ -52,7 +52,7 @@ template class ACE_Unbounded_Queue_Iterator <be_interface_fwd *>;
#pragma instantiate ACE_Unbounded_Queue <be_interface_fwd *>
#pragma instantiate ACE_Unbounded_Queue_Iterator <be_interface_fwd *>
-#elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
+#elif defined (__GNUC__) && (defined (_AIX) || defined (__hpux))
template class ACE_Singleton<TAO_CodeGen, ACE_SYNCH_RECURSIVE_MUTEX>;
template class ACE_Singleton<TAO_OutStream_Factory,ACE_SYNCH_RECURSIVE_MUTEX>;
template class ACE_Singleton<TAO_Visitor_Factory,ACE_SYNCH_RECURSIVE_MUTEX>;
diff --git a/TAO/TAO_IDL/be/be_valuetype.cpp b/TAO/TAO_IDL/be/be_valuetype.cpp
index 60445e0aebc..844bd5704ee 100644
--- a/TAO/TAO_IDL/be/be_valuetype.cpp
+++ b/TAO/TAO_IDL/be/be_valuetype.cpp
@@ -755,7 +755,7 @@ be_valuetype::traverse_supports_list_graphs (
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_valuetype::"
- "traverse_supports_list_graphs - "
+ "traverse_supports_graph_list - "
"error generating entries\n"),
-1);
}
@@ -809,7 +809,29 @@ be_valuetype::abstract_supports_helper (be_interface *,
*os << "," << be_nl
<< "public virtual "
<< base->name ();
+/*
+ if (base->is_nested ())
+ {
+ UTL_Scope *parent_scope = base->defined_in ();
+ AST_Decl *parent_decl = ScopeAsDecl (parent_scope);
+
+ *os << "ACE_NESTED_CLASS ("
+ << parent_decl->name () << ", "
+ << base->local_name () << ")";
+ }
+ else
+ {
+ *os << base->local_name ();
+ }
+*/
+ return 0;
+}
+int
+be_valuetype::gen_abstract_init_helper (be_interface *,
+ be_interface *,
+ TAO_OutStream *)
+{
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_amh_pre_proc.cpp b/TAO/TAO_IDL/be/be_visitor_amh_pre_proc.cpp
index f557bb052c8..09aa699302e 100644
--- a/TAO/TAO_IDL/be/be_visitor_amh_pre_proc.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_amh_pre_proc.cpp
@@ -569,6 +569,90 @@ be_visitor_amh_pre_proc::visit_operation (be_operation *node)
return 0;
}
+// @@@ (JP) I think this can be removed. It is doing nothing
+// that the generic visit_scope() is not doing.
+int
+be_visitor_amh_pre_proc::visit_scope (be_scope *node)
+{
+ // proceed if the number of members in our scope is greater than 0
+ if (node->nmembers () > 0)
+ {
+ int number_of_elements = 0;
+
+ {
+ // initialize an iterator to iterate thru our scope
+ for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls);
+ !si.is_done ();
+ si.next ())
+ {
+ ++number_of_elements;
+ }
+ }
+
+ AST_Decl **elements;
+ ACE_NEW_RETURN (elements,
+ AST_Decl *[number_of_elements],
+ -1);
+
+ {
+ int position = 0;
+ // initialize an iterator to iterate thru our scope
+ for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls);
+ !si.is_done ();
+ si.next ())
+ {
+ elements[position++] = si.item ();
+ }
+ }
+
+
+ int elem_number = 0;
+
+ // continue until each element is visited
+ while (elem_number < number_of_elements)
+ {
+ AST_Decl *d = elements[elem_number];
+
+ if (!d)
+ {
+ delete [] elements;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_scope::visit_scope - "
+ "bad node in this scope\n"),
+ -1);
+
+ }
+
+ be_decl *bd = be_decl::narrow_from_decl (d);
+
+ // set the scope node as "node" in which the code is being
+ // generated so that elements in the node's scope can use it
+ // for code generation
+ this->ctx_->scope (node->decl ());
+
+ // set the node to be visited
+ this->ctx_->node (bd);
+ ++elem_number;
+
+
+ // Send the visitor.
+ if (bd == 0 || bd->accept (this) == -1)
+ {
+ delete [] elements;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_scope::visit_scope - "
+ "codegen for scope failed\n"),
+ -1);
+
+ }
+ } // end of while loop
+
+ delete [] elements;
+ } // end of if
+
+ return 0;
+}
+
be_valuetype *
be_visitor_amh_pre_proc::create_exception_holder (be_interface *node)
{
diff --git a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp
index 0eea91ba50e..3548c50705a 100644
--- a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp
@@ -107,8 +107,6 @@ be_visitor_arg_traits::visit_interface (be_interface *node)
if (node->seen_in_operation ())
{
TAO_OutStream *os = this->ctx_->stream ();
- idl_bool stub = (this->ctx_->state () == TAO_CodeGen::TAO_ROOT_CS);
- BE_GlobalData *b = be_global;
// This should be generated even for imported nodes. The ifdef guard prevents
// multiple declarations.
@@ -116,9 +114,8 @@ be_visitor_arg_traits::visit_interface (be_interface *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_SPECIALIZATION" << be_nl
- << "class "
- << (stub ? b->stub_export_macro () : b->skel_export_macro ())
- << " " << this->S_ << "Arg_Traits<"
+ << "class " << be_global->stub_export_macro () << " "
+ << this->S_ << "Arg_Traits<"
<< node->name () << ">" << be_idt_nl
<< ": public" << be_idt << be_idt_nl
<< "Object_" << this->S_ << "Arg_Traits_T<" << be_idt << be_idt_nl
@@ -486,40 +483,7 @@ be_visitor_arg_traits::visit_array (be_array *node)
// This should be generated even for imported nodes. The ifdef guard prevents
// multiple declarations.
-// os->gen_ifdef_macro (node->flat_name (), "arg_traits");
-
- // Generate the array traits specialization definitions,
- // guarded by #ifdef on unaliased array element type and length.
-
- ACE_CString unique;
- be_type *bt = be_type::narrow_from_decl (node->base_type ());
- AST_Decl::NodeType nt = bt->node_type ();
-
- if (nt == AST_Decl::NT_typedef)
- {
- be_typedef *td = be_typedef::narrow_from_decl (bt);
- unique = td->primitive_base_type ()->flat_name ();
- }
- else
- {
- unique = bt->flat_name ();
- }
-
- char buf[NAMEBUFSIZE];
-
- for (unsigned long i = 0; i < node->n_dims (); ++i)
- {
- ACE_OS::memset (buf,
- '\0',
- NAMEBUFSIZE);
- ACE_OS::sprintf (buf,
- "_%ld",
- node->dims ()[i]->ev ()->u.ulval);
- unique += buf;
- }
-
- unique += "_traits";
- os->gen_ifdef_macro (unique.fast_rep ());
+ os->gen_ifdef_macro (node->flat_name (), "arg_traits");
*os << be_nl << be_nl
<< "ACE_TEMPLATE_SPECIALIZATION" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp
index fbb5e7613cd..2fa4e527ac7 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp
@@ -101,12 +101,11 @@ int be_visitor_args_paramlist::visit_argument (be_argument *node)
*os << " _tao_forany_" << node->local_name () << " (";
*os << this->type_name (bt, "_dup");
*os << " (";
-
+ // This is to placate some compilers which have
+ // trouble with IN args that are multidimensional arrays.
+ //if (node->n_dims () > 1) cant do this here since dont have a be_array node
if (this->direction () != AST_Argument::dir_IN)
- {
- *os << "(const ::" << bt->name () << "_slice *) ";
- }
-
+ *os << "(const ::" << bt->name () << "_slice *) ";
*os << "this->";
*os << node->local_name () << "_));" << be_nl;
*os << "(*parameter_list)[len].argument <<= _tao_forany_" ;
diff --git a/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp b/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp
index 9923d6f7ee9..f4097be8b7e 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp
@@ -276,7 +276,7 @@ int be_visitor_array_ch::visit_array (be_array *node)
}
else
{
- storage_class = "TAO_EXPORT_MACRO ";
+ storage_class = "";
}
if (td != 0)
diff --git a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp
index a0ef398247a..2ffa66396f2 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp
@@ -195,7 +195,7 @@ int be_visitor_array_ci::visit_array (be_array *node)
<< fname << "," << be_nl
<< fname << "_slice," << be_nl
<< fname << "_tag" << be_uidt_nl
- << ">::free ("<< be_idt_nl
+ << ">::tao_free ("<< be_idt_nl
<< fname << "_slice * _tao_slice" << be_uidt_nl
<< ")" << be_uidt_nl
<< "{" << be_idt_nl
@@ -210,7 +210,7 @@ int be_visitor_array_ci::visit_array (be_array *node)
<< fname << "," << be_nl
<< fname << "_slice," << be_nl
<< fname << "_tag" << be_uidt_nl
- << ">::dup (" << be_idt_nl
+ << ">::tao_dup (" << be_idt_nl
<< "const " << fname << "_slice * _tao_slice" << be_uidt_nl
<< ")" << be_uidt_nl
<< "{" << be_idt_nl
@@ -225,7 +225,7 @@ int be_visitor_array_ci::visit_array (be_array *node)
<< fname << "," << be_nl
<< fname << "_slice," << be_nl
<< fname << "_tag" << be_uidt_nl
- << ">::copy (" << be_idt_nl
+ << ">::tao_copy (" << be_idt_nl
<< fname << "_slice * _tao_to," << be_nl
<< "const " << fname << "_slice * _tao_from" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -241,7 +241,7 @@ int be_visitor_array_ci::visit_array (be_array *node)
<< fname << "," << be_nl
<< fname << "_slice," << be_nl
<< fname << "_tag" << be_uidt_nl
- << ">::alloc (void)" << be_uidt_nl
+ << ">::tao_alloc (void)" << be_uidt_nl
<< "{" << be_idt_nl
<< "return " << fname << "_alloc ();" << be_uidt_nl
<< "}";
diff --git a/TAO/TAO_IDL/be/be_visitor_ccm_pre_proc.cpp b/TAO/TAO_IDL/be/be_visitor_ccm_pre_proc.cpp
index 826b7082b6e..666e3e0b896 100644
--- a/TAO/TAO_IDL/be/be_visitor_ccm_pre_proc.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_ccm_pre_proc.cpp
@@ -58,8 +58,6 @@ be_exception *EXCEPS[N_EXCEPS];
be_visitor_ccm_pre_proc::be_visitor_ccm_pre_proc (be_visitor_context *ctx)
: be_visitor_scope (ctx),
module_id_ ("Components"),
- connection_ (0),
- connections_ (0),
cookie_ (0),
already_connected_ (0),
invalid_connection_ (0),
@@ -358,15 +356,6 @@ be_visitor_ccm_pre_proc::gen_uses (be_component *node)
}
else
{
- if (this->create_uses_multiple_stuff (node, pd) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ccm_pre_proc::"
- "gen_uses - "
- "create_uses_multiple_stuff failed\n"),
- -1);
- }
-
if (this->gen_connect_multiple (node, pd) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
@@ -1466,152 +1455,6 @@ be_visitor_ccm_pre_proc::lookup_one_exception (be_component *node,
}
int
-be_visitor_ccm_pre_proc::create_uses_multiple_stuff (
- be_component *node,
- AST_Component::port_description *pd
- )
-{
- if (this->create_uses_multiple_struct (node, pd) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ccm_pre_proc::"
- "create_uses_multiple_stuff - "
- "create_uses_multiple_struct failed\n"),
- -1);
- }
-
- if (this->create_uses_multiple_sequence (node, pd) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ccm_pre_proc::"
- "create_uses_multiple_stuff - "
- "create_uses_multiple_sequence failed\n"),
- -1);
- }
-
- return 0;
-}
-
-int
-be_visitor_ccm_pre_proc::create_uses_multiple_struct (
- be_component *node,
- AST_Component::port_description *pd
- )
-{
- UTL_ScopedName *full_name =
- this->create_scoped_name (0,
- pd->id->get_string (),
- "Connection",
- node);
- ACE_NEW_RETURN (this->connection_,
- be_structure (0,
- 0,
- 0),
- -1);
- this->connection_->set_defined_in (node);
- this->connection_->set_imported (node->imported ());
- this->connection_->set_name (full_name);
-
- Identifier o_id ("objref");
- UTL_ScopedName o_sn (&o_id,
- 0);
- AST_Field *m_objref = 0;
- ACE_NEW_RETURN (m_objref,
- be_field (pd->impl,
- &o_sn),
- -1);
- o_id.destroy ();
-
- if (this->connection_->be_add_field (m_objref) == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ccm_pre_proc::"
- "create_uses_multiple_struct - "
- "be_add_field failed\n"),
- -1);
- }
-
- Identifier v_id ("ck");
- UTL_ScopedName v_sn (&v_id,
- 0);
- AST_Field *m_ck = 0;
- ACE_NEW_RETURN (m_ck,
- be_field (this->cookie_,
- &v_sn),
- -1);
-
- if (this->connection_->be_add_field (m_ck) == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ccm_pre_proc::"
- "create_uses_multiple_struct - "
- "be_add_field failed\n"),
- -1);
- }
-
- if (node->be_add_structure (this->connection_) == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ccm_pre_proc::"
- "create_uses_multiple_struct - "
- "be_add_structure failed\n"),
- -1);
- }
-
- return 0;
-}
-
-int
-be_visitor_ccm_pre_proc::create_uses_multiple_sequence (
- be_component *node,
- AST_Component::port_description *pd
- )
-{
- ACE_UINT64 bound = 0;
- ACE_NEW_RETURN (
- this->connections_,
- be_sequence (
- idl_global->gen ()->create_expr (
- bound,
- AST_Expression::EV_ulong
- ),
- this->connection_,
- 0,
- 0,
- 0
- ),
- -1
- );
-
- UTL_ScopedName *sn =
- this->create_scoped_name (0,
- pd->id->get_string (),
- "Connections",
- node);
- AST_Typedef *td = 0;
- ACE_NEW_RETURN (td,
- be_typedef (this->connections_,
- 0,
- 0,
- 0),
- -1);
- td->set_defined_in (node);
- td->set_imported (node->imported ());
- td->set_name (sn);
-
- if (node->be_add_typedef (td) == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ccm_pre_proc::"
- "create_uses_multiple_sequence - "
- "be_add_typedef failed\n"),
- -1);
- }
-
- return 0;
-}
-
-int
be_visitor_ccm_pre_proc::create_event_consumer (be_eventtype *node)
{
AST_Interface *event_consumer = 0;
@@ -1624,11 +1467,6 @@ be_visitor_ccm_pre_proc::create_event_consumer (be_eventtype *node)
"Consumer",
ScopeAsDecl (node->defined_in ()));
- // We're at global scope here so we need to fool the scope stack
- // for a minute so the correct repo id can be calculated at
- // interface construction time.
- idl_global->scopes ().push (node->defined_in ());
-
if (node->n_inherits () == 0
|| node->inherits ()[0]->node_type () == AST_Decl::NT_valuetype)
{
@@ -1639,13 +1477,13 @@ be_visitor_ccm_pre_proc::create_event_consumer (be_eventtype *node)
&parent_local_name);
UTL_NameList parent_list (&parent_full_name,
0);
- FE_InterfaceHeader header (consumer_name,
+ FE_InterfaceHeader header (0,
&parent_list,
I_FALSE,
I_FALSE,
I_TRUE);
ACE_NEW_RETURN (event_consumer,
- be_interface (header.name (),
+ be_interface (0,
header.inherits (),
header.n_inherits (),
header.inherits_flat (),
@@ -1676,13 +1514,13 @@ be_visitor_ccm_pre_proc::create_event_consumer (be_eventtype *node)
parent_full_name->nconc (parent_local_name);
UTL_NameList parent_list (parent_full_name,
0);
- FE_InterfaceHeader header (consumer_name,
+ FE_InterfaceHeader header (0,
&parent_list,
I_FALSE,
I_FALSE,
I_TRUE);
ACE_NEW_RETURN (event_consumer,
- be_interface (header.name (),
+ be_interface (0,
header.inherits (),
header.n_inherits (),
header.inherits_flat (),
@@ -1693,21 +1531,9 @@ be_visitor_ccm_pre_proc::create_event_consumer (be_eventtype *node)
parent_full_name->destroy ();
}
- // Back to reality.
- idl_global->scopes ().pop ();
-
event_consumer->set_defined_in (s);
event_consumer->set_imported (node->imported ());
event_consumer->set_name (consumer_name);
-
- // Set repo id to 0, so it will be recomputed on the next access,
- // and set the prefix to the eventtype's prefix. All this is
- // necessary in case the eventtype's prefix was modified after
- // its declaration. We assume 'implied IDL' means that the
- // derived event consumer interface should have the same prefix.
- event_consumer->repoID (0);
- event_consumer->prefix (const_cast<char*> (node->prefix ()));
-
be_type::narrow_from_decl (event_consumer)->gen_fwd_helper_name ();
m->be_add_interface (event_consumer);
return this->gen_push_op (node,
diff --git a/TAO/TAO_IDL/be/be_visitor_component/component.cpp b/TAO/TAO_IDL/be/be_visitor_component/component.cpp
index 70b53838e1f..80bf5a90a14 100644
--- a/TAO/TAO_IDL/be/be_visitor_component/component.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_component/component.cpp
@@ -45,11 +45,16 @@ be_visitor_component::visit_attribute (be_attribute *node)
switch (this->ctx_->state ())
{
- case TAO_CodeGen::TAO_INTERFACE_CH:
+ case TAO_CodeGen::TAO_ROOT_CH:
+ break;
case TAO_CodeGen::TAO_ROOT_CS:
+ break;
case TAO_CodeGen::TAO_ROOT_SH:
+ break;
case TAO_CodeGen::TAO_ROOT_IH:
+ break;
case TAO_CodeGen::TAO_ROOT_SS:
+ break;
case TAO_CodeGen::TAO_ROOT_IS:
break;
default:
@@ -84,7 +89,7 @@ be_visitor_component::visit_operation (be_operation *node)
{
// These first two cases may have the context state changed
// by a strategy, so we use the visitor factory below.
- case TAO_CodeGen::TAO_INTERFACE_CH:
+ case TAO_CodeGen::TAO_ROOT_CH:
ctx.state (TAO_CodeGen::TAO_OPERATION_CH);
break;
case TAO_CodeGen::TAO_ROOT_CS:
@@ -218,7 +223,7 @@ be_visitor_component::visit_structure (be_structure *node)
switch (this->ctx_->state ())
{
- case TAO_CodeGen::TAO_INTERFACE_CH:
+ case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_structure_ch visitor (&ctx);
status = node->accept (&visitor);
@@ -287,7 +292,7 @@ be_visitor_component::visit_typedef (be_typedef *node)
switch (this->ctx_->state ())
{
- case TAO_CodeGen::TAO_INTERFACE_CH:
+ case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_typedef_ch visitor (&ctx);
status = node->accept (&visitor);
diff --git a/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp b/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp
index c2f85d715ff..b168399f32d 100644
--- a/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp
@@ -153,21 +153,6 @@ be_visitor_component_ch::visit_component (be_component *node)
*os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
- if (! node->is_abstract ())
- {
- node->analyze_parentage ();
- }
-
- // If we inherit from both CORBA::Object and CORBA::AbstractBase,
- // we have to override _add_ref() to avoid ambiguity. A comopnent
- // can have mixed parentage if it supports an abstract or mixed-
- // parentage interface.
- if (node->has_mixed_parentage ())
- {
- *os << be_nl << be_nl
- << "virtual void _add_ref (void);";
- }
-
*os << be_nl << be_nl
<< "virtual CORBA::Boolean _is_a (" << be_idt << be_idt_nl
<< "const char *type_id" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp b/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp
index cc46761452b..f35f7eab081 100644
--- a/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp
@@ -68,7 +68,7 @@ be_visitor_component_cs::visit_component (be_component *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl
<< node->name () << "_ptr" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::duplicate ("
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_duplicate ("
<< be_idt << be_idt_nl
<< node->name () << "_ptr p" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -79,7 +79,7 @@ be_visitor_component_cs::visit_component (be_component *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl
<< "void" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::release ("
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_release ("
<< be_idt << be_idt_nl
<< node->name () << "_ptr p" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -90,7 +90,7 @@ be_visitor_component_cs::visit_component (be_component *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl
<< node->name () << "_ptr" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::nil (void)"
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_nil (void)"
<< be_nl
<< "{" << be_idt_nl
<< "return " << node->name () << "::_nil ();" << be_uidt_nl
@@ -99,7 +99,7 @@ be_visitor_component_cs::visit_component (be_component *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl
<< "CORBA::Boolean" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::marshal ("
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_marshal ("
<< be_idt << be_idt_nl
<< node->name () << "_ptr p," << be_nl
<< "TAO_OutputCDR & cdr" << be_uidt_nl
@@ -109,29 +109,6 @@ be_visitor_component_cs::visit_component (be_component *node)
<< "}";
}
- if (node->has_mixed_parentage ())
- {
- *os << be_nl << be_nl
- << "void" << be_nl
- << "CORBA::release ("
- << node->name ()
- << "_ptr p)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::AbstractBase_ptr abs = p;" << be_nl
- << "CORBA::release (abs);" << be_uidt_nl
- << "}";
-
- *os << be_nl << be_nl
- << "CORBA::Boolean" << be_nl
- << "CORBA::is_nil ("
- << node->name ()
- << "_ptr p)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::Object_ptr obj = p;" << be_nl
- << "return CORBA::is_nil (obj);" << be_uidt_nl
- << "}";
- }
-
// Generate the proxy broker factory function pointer definition.
*os << be_nl << be_nl
<< "// Function pointer for collocation factory initialization."
@@ -195,16 +172,6 @@ be_visitor_component_cs::visit_component (be_component *node)
<< "}" << be_nl << be_nl;
}
- if (node->has_mixed_parentage ())
- {
- *os << "void" << be_nl
- << node->name () << "::_add_ref (void)" << be_nl
- << "{" << be_idt_nl
- << "this->ACE_NESTED_CLASS (CORBA, Object)::_add_ref ();"
- << be_uidt_nl
- << "}" << be_nl << be_nl;
- }
-
// The _narrow method.
*os << node->full_name () << "_ptr" << be_nl << node->full_name ()
<< "::_narrow (" << be_idt << be_idt_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_component/component_sh.cpp b/TAO/TAO_IDL/be/be_visitor_component/component_sh.cpp
index 146ae4a0524..107adfc34af 100644
--- a/TAO/TAO_IDL/be/be_visitor_component/component_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_component/component_sh.cpp
@@ -83,8 +83,7 @@ be_visitor_component_sh::visit_component (be_component *node)
class_name += node->local_name ();
}
- *os << be_nl << be_nl
- << "// TAO_IDL - Generated from" << be_nl
+ *os << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
// Generate the skeleton class name.
diff --git a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp
index 66bf273b6b2..e2b980bd77e 100644
--- a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp
@@ -282,7 +282,7 @@ be_visitor_field_cdr_op_cs::visit_interface (be_interface *node)
}
else
{
- *os << "TAO::Objref_Traits<" << node->name () << ">::marshal ("
+ *os << "TAO::Objref_Traits<" << node->name () << ">::tao_marshal ("
<< be_idt << be_idt_nl
<< "_tao_aggregate." << f->local_name () << ".in ()," << be_nl
<< "strm" << be_uidt_nl
@@ -362,7 +362,7 @@ be_visitor_field_cdr_op_cs::visit_interface_fwd (be_interface_fwd *node)
*os << parent->name () << "::";
}
- *os << "TAO::Objref_Traits<" << node->name () << ">::marshal ("
+ *os << "TAO::Objref_Traits<" << node->name () << ">::tao_marshal ("
<< be_idt << be_idt_nl
<< "_tao_aggregate." << f->local_name () << ".in ()," << be_nl
<< "strm" << be_uidt_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_sh.cpp
index b6863cc1822..85503801aad 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_sh.cpp
@@ -129,7 +129,7 @@ be_visitor_interface_direct_proxy_impl_sh::gen_abstract_ops_helper (
TAO_OutStream *os
)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -149,7 +149,7 @@ be_visitor_interface_direct_proxy_impl_sh::gen_abstract_ops_helper (
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_thru_poa_proxy_"
- "impl_sh::gen_abstract_ops_helper - "
+ "impl_sh::abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_ss.cpp
index be617ef34ce..1986eae1270 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/direct_proxy_impl_ss.cpp
@@ -63,7 +63,7 @@ be_visitor_interface_direct_proxy_impl_ss::gen_abstract_ops_helper (
TAO_OutStream *os
)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -83,7 +83,7 @@ be_visitor_interface_direct_proxy_impl_ss::gen_abstract_ops_helper (
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_direct_proxy"
- "_impl_ss::gen_abstract_ops_helper - "
+ "_impl_ss::abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interceptors_ss.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interceptors_ss.cpp
index a040a8a5e89..3ffceb381fc 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interceptors_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interceptors_ss.cpp
@@ -90,7 +90,7 @@ be_visitor_interface_interceptors_ss::gen_abstract_ops_helper (
TAO_OutStream *os
)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -110,7 +110,7 @@ be_visitor_interface_interceptors_ss::gen_abstract_ops_helper (
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_interceptors_ss::"
- "gen_abstract_ops_helper - "
+ "abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp
index b02cd9a48e1..c9ae586fb1d 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp
@@ -116,13 +116,10 @@ be_visitor_interface::visit_scope (be_scope *node)
return 0;
}
- // 'abstract_paths_only' arg is FALSE here because we want to traverse
- // through concrete parents to get to all the abstract ones. The helper
- // will do nothing unless the base interface passed to it is abstract.
int status =
intf->traverse_inheritance_graph (helper,
this->ctx_->stream (),
- I_FALSE);
+ I_TRUE);
if (status == -1)
{
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
index 675f9e648d5..a0e3ce9f913 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
@@ -213,7 +213,8 @@ be_visitor_interface_ch::visit_interface (be_interface *node)
}
// If we inherit from both CORBA::Object and CORBA::AbstractBase,
- // we have to override _add_ref() to avoid ambiguity.
+ // we have to override _add_ref() to avoid ambiguity, because it is
+ // called in _tao_Queryinterface().
if (node->has_mixed_parentage ())
{
*os << "virtual void _add_ref (void);" << be_nl << be_nl;
@@ -378,7 +379,7 @@ be_visitor_interface_ch::gen_abstract_ops_helper (be_interface *node,
be_interface *base,
TAO_OutStream *os)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -397,7 +398,7 @@ be_visitor_interface_ch::gen_abstract_ops_helper (be_interface *node,
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_interface::"
- "gen_abstract_ops_helper - "
+ "abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
index 071136f1ee2..dbed26ff19a 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
@@ -67,7 +67,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl
<< node->name () << "_ptr" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::duplicate ("
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_duplicate ("
<< be_idt << be_idt_nl
<< node->name () << "_ptr p" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -78,7 +78,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl
<< "void" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::release ("
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_release ("
<< be_idt << be_idt_nl
<< node->name () << "_ptr p" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -89,7 +89,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl
<< node->name () << "_ptr" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::nil (void)"
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_nil (void)"
<< be_nl
<< "{" << be_idt_nl
<< "return " << node->name () << "::_nil ();" << be_uidt_nl
@@ -98,7 +98,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl
<< "CORBA::Boolean" << be_nl
- << "TAO::Objref_Traits<" << node->name () << ">::marshal ("
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_marshal ("
<< be_idt << be_idt_nl
<< node->name () << "_ptr p," << be_nl
<< "TAO_OutputCDR & cdr" << be_uidt_nl
@@ -562,7 +562,7 @@ be_visitor_interface_cs::gen_abstract_ops_helper (be_interface *node,
be_interface *base,
TAO_OutStream *os)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -581,7 +581,7 @@ be_visitor_interface_cs::gen_abstract_ops_helper (be_interface *node,
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_cs::"
- "gen_abstract_ops_helper - "
+ "abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ih.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ih.cpp
index 7bb033fb1df..42246e077a4 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ih.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ih.cpp
@@ -77,16 +77,7 @@ be_visitor_interface_ih::visit_interface (be_interface *node)
*os << node->full_skel_name ();
}
- *os << ", public virtual ";
-
- if (node->is_local ())
- {
- *os << "TAO_Local_RefCounted_Object";
- }
- else
- {
- *os << "PortableServer::RefCountServantBase";
- }
+ *os << ", public virtual PortableServer::RefCountServantBase";
*os << be_nl
<< "{" << be_nl
@@ -95,7 +86,7 @@ be_visitor_interface_ih::visit_interface (be_interface *node)
<< be_global->impl_class_prefix () << namebuf
<< be_global->impl_class_suffix () << " (void);" << be_nl << be_nl;
- if (be_global->gen_copy_ctor () && !node->is_local ())
+ if (be_global->gen_copy_ctor ())
{
*os << "//Copy Constructor"<<be_nl
<< be_global->impl_class_prefix () << namebuf
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_is.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_is.cpp
index fa25566ca54..ed87e053a6f 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_is.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_is.cpp
@@ -76,7 +76,7 @@ be_visitor_interface_is::visit_interface (be_interface *node)
*os << "{" <<be_nl;
*os << "}" << be_nl << be_nl;
- if (be_global->gen_copy_ctor () && !node->is_local ())
+ if (be_global->gen_copy_ctor ())
{
*os << "//Implementation Skeleton Copy Constructor" << be_nl;
@@ -88,7 +88,7 @@ be_visitor_interface_is::visit_interface (be_interface *node)
<< be_global->impl_class_suffix () << "& rhs)" << be_idt_nl
<< ": TAO_Abstract_ServantBase (rhs)," << be_nl
<< " TAO_ServantBase (rhs)";
-
+
if (node->traverse_inheritance_graph (be_interface::copy_ctor_helper,
os)
== -1)
@@ -99,22 +99,19 @@ be_visitor_interface_is::visit_interface (be_interface *node)
-1);
}
- if (!node->is_local ())
+ *os << "," << be_nl;
+
+ if (node->is_nested ())
+ {
+ be_decl *scope;
+ scope = be_scope::narrow_from_scope (node->defined_in ())->decl ();
+
+ *os << " ACE_NESTED_CLASS (POA_" << scope->name () << ", "
+ << node->local_name () << ") (rhs)";
+ }
+ else
{
- *os << "," << be_nl;
-
- if (node->is_nested ())
- {
- be_decl *scope;
- scope = be_scope::narrow_from_scope (node->defined_in ())->decl ();
-
- *os << " ACE_NESTED_CLASS (POA_" << scope->name () << ", "
- << node->local_name () << ") (rhs)";
- }
- else
- {
- *os << " " << node->full_skel_name () << " (rhs)";
- }
+ *os << " " << node->full_skel_name () << " (rhs)";
}
*os << be_uidt_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp
index e8d950f4d1f..1e798193964 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp
@@ -39,221 +39,225 @@ int
be_visitor_interface_sh::visit_interface (be_interface *node)
{
if (node->srv_hdr_gen ()
- || node->imported ()
- || node->is_abstract ())
+ || node->imported ())
{
return 0;
}
- // If this node is a AMH-RH node, then generate code for it
- if (node->is_local ())
+ // For abstract interfaces, we just generated the collocation stuff
+ // (see below).
+ if (! node->is_abstract ())
{
- if (this->is_amh_rh_node (node))
- {
- // Create amh_rh_visitors.
- be_visitor_amh_rh_interface_sh amh_rh_intf (this->ctx_);
- amh_rh_intf.visit_interface (node);
- }
-
- return 0;
- }
-
- if (this->generate_amh_classes (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_interface_sh::"
- "visit_interface - "
- "codegen for AMH classes failed\n"),
- -1);
- }
-
- TAO_OutStream *os = this->ctx_->stream ();
- ACE_CString class_name;
-
- // We shall have a POA_ prefix only if we are at the topmost level.
- if (!node->is_nested ())
- {
- // We are outermost.
- class_name += "POA_";
- class_name += node->local_name ();
- }
- else
- {
- class_name += node->local_name ();
- }
-
- *os << be_nl << be_nl
- << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
-
- // Generate the skeleton class name.
- *os << "class " << class_name.c_str () << ";" << be_nl;
-
- // Generate the _ptr declaration.
- *os << "typedef " << class_name.c_str () << " *" << class_name.c_str ()
- << "_ptr;" << be_nl << be_nl;
-
- // Forward class declarations.
- if (be_global->gen_thru_poa_collocation ())
- {
- *os << "class " << node->thru_poa_proxy_impl_name () << ";" << be_nl;
- }
-
- if (be_global->gen_direct_collocation ())
- {
- *os << "class " << node->direct_proxy_impl_name () << ";" << be_nl;
- }
-
- if (be_global->gen_thru_poa_collocation ()
- || be_global->gen_direct_collocation ())
- {
- *os << "class " << node->strategized_proxy_broker_name ()
- << ";" << be_nl;
- }
-
- *os << be_nl;
-
- // Now generate the class definition.
- *os << "class " << be_global->skel_export_macro ()
- << " " << class_name.c_str () << be_idt_nl << ": " << be_idt;
-
- long n_parents = node->n_inherits ();
- AST_Interface *parent = 0;
- int has_concrete_parent = 0;
-
- for (int i = 0; i < n_parents; ++i)
- {
- parent = node->inherits ()[i];
-
- if (parent->is_abstract ())
- {
- continue;
- }
-
- if (has_concrete_parent == 1)
- {
- *os << "," << be_nl;
- }
-
- *os << "public virtual " << "POA_"
- << parent->name ();
-
- has_concrete_parent = 1;
- }
-
- if (has_concrete_parent == 0)
- {
- // We don't inherit from another user defined object, hence our
- // base class is the ServantBase class.
- *os << "public virtual PortableServer::ServantBase";
- }
-
- *os << be_uidt << be_uidt_nl
- << "{" << be_nl
- << "protected:" << be_idt_nl;
-
- // Default constructor.
- *os << class_name.c_str () << " (void);" << be_uidt_nl << be_nl
- << "public:" << be_idt_nl;
-
- // Some useful typedefs.
- *os << "// Useful for template programming." << be_nl
- << "typedef ::" << node->name () << " _stub_type;" << be_nl
- << "typedef ::" << node->name () << "_ptr _stub_ptr_type;" << be_nl
- << "typedef ::" << node->name () << "_var _stub_var_type;"
- << be_nl << be_nl;
-
- // Copy constructor and destructor.
- *os << class_name.c_str () << " (const "
- << class_name.c_str () << "& rhs);" << be_nl
- << "virtual ~" << class_name.c_str () << " (void);" << be_nl << be_nl;
-
- // _is_a
- *os << "virtual CORBA::Boolean _is_a (" << be_idt << be_idt_nl
- << "const char* logical_type_id" << be_nl
- << "ACE_ENV_ARG_DECL_WITH_DEFAULTS" << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- // _downcast
- *os << "virtual void* _downcast (" << be_idt << be_idt_nl
- << "const char* logical_type_id" << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- // Add a skeleton for our _is_a method.
- *os << "static void _is_a_skel (" << be_idt << be_idt_nl
- << "TAO_ServerRequest &req," << be_nl
- << "void *servant," << be_nl
- << "void *servant_upcall" << be_nl
- << "ACE_ENV_ARG_DECL" << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- // Add a skeleton for our _non_existent method.
- *os << "static void _non_existent_skel (" << be_idt << be_idt_nl
- << "TAO_ServerRequest &req," << be_nl
- << "void *servant," << be_nl
- << "void *servant_upcall" << be_nl
- << "ACE_ENV_ARG_DECL" << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- // Add a skeleton for our _interface method.
- *os << "static void _interface_skel (" << be_idt << be_idt_nl
- << "TAO_ServerRequest &req," << be_nl
- << "void *servant," << be_nl
- << "void *servant_upcall" << be_nl
- << "ACE_ENV_ARG_DECL" << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- // Add a skeleton for our _component method.
- *os << "static void _component_skel (" << be_idt << be_idt_nl
- << "TAO_ServerRequest &req," << be_nl
- << "void *obj," << be_nl
- << "void *servant_upcall" << be_nl
- << "ACE_ENV_ARG_DECL" << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- // Add the dispatch method.
- *os << "virtual void _dispatch (" << be_idt << be_idt_nl
- << "TAO_ServerRequest &req," << be_nl
- << "void *_servant_upcall" << be_nl
- << "ACE_ENV_ARG_DECL" << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- this->this_method (node);
-
- // The _interface_repository_id method.
- *os << be_nl
- << "virtual const char* _interface_repository_id "
- << "(void) const;";
-
- // Generate code for elements in the scope (e.g., operations).
- if (this->visit_scope (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_interface_sh::"
- "visit_interface - "
- "codegen for scope failed\n"),
- -1);
- }
-
- // Generate skeletons for operations of our base classes. These
- // skeletons just cast the pointer to the appropriate type
- // before invoking the call.
- int status =
- node->traverse_inheritance_graph (
- be_interface::gen_skel_helper,
- os
- );
-
- if (status == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_interface_sh::"
- "visit_interface - "
- "inheritance graph traversal failed\n"),
- -1);
- }
-
- *os << be_uidt_nl << "};";
+ // If this node is a AMH-RH node, then generate code for it
+ if (node->is_local ())
+ {
+ if (this->is_amh_rh_node (node))
+ {
+ // Create amh_rh_visitors.
+ be_visitor_amh_rh_interface_sh amh_rh_intf (this->ctx_);
+ amh_rh_intf.visit_interface (node);
+ }
+
+ return 0;
+ }
+
+ if (this->generate_amh_classes (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_sh::"
+ "visit_interface - "
+ "codegen for AMH classes failed\n"),
+ -1);
+ }
+
+ TAO_OutStream *os = this->ctx_->stream ();
+ ACE_CString class_name;
+
+ // We shall have a POA_ prefix only if we are at the topmost level.
+ if (!node->is_nested ())
+ {
+ // We are outermost.
+ class_name += "POA_";
+ class_name += node->local_name ();
+ }
+ else
+ {
+ class_name += node->local_name ();
+ }
+
+ *os << be_nl << be_nl
+ << "// TAO_IDL - Generated from" << be_nl
+ << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
+
+ // Generate the skeleton class name.
+ *os << "class " << class_name.c_str () << ";" << be_nl;
+
+ // Generate the _ptr declaration.
+ *os << "typedef " << class_name.c_str () << " *" << class_name.c_str ()
+ << "_ptr;" << be_nl << be_nl;
+
+ // Forward class declarations.
+ if (be_global->gen_thru_poa_collocation ())
+ {
+ *os << "class " << node->thru_poa_proxy_impl_name () << ";" << be_nl;
+ }
+
+ if (be_global->gen_direct_collocation ())
+ {
+ *os << "class " << node->direct_proxy_impl_name () << ";" << be_nl;
+ }
+
+ if (be_global->gen_thru_poa_collocation ()
+ || be_global->gen_direct_collocation ())
+ {
+ *os << "class " << node->strategized_proxy_broker_name ()
+ << ";" << be_nl;
+ }
+
+ *os << be_nl;
+
+ // Now generate the class definition.
+ *os << "class " << be_global->skel_export_macro ()
+ << " " << class_name.c_str () << be_idt_nl << ": " << be_idt;
+
+ long n_parents = node->n_inherits ();
+ AST_Interface *parent = 0;
+ int has_concrete_parent = 0;
+
+ for (int i = 0; i < n_parents; ++i)
+ {
+ parent = node->inherits ()[i];
+
+ if (parent->is_abstract ())
+ {
+ continue;
+ }
+
+ if (has_concrete_parent == 1)
+ {
+ *os << "," << be_nl;
+ }
+
+ *os << "public virtual " << "POA_"
+ << parent->name ();
+
+ has_concrete_parent = 1;
+ }
+
+ if (has_concrete_parent == 0)
+ {
+ // We don't inherit from another user defined object, hence our
+ // base class is the ServantBase class.
+ *os << "public virtual PortableServer::ServantBase";
+ }
+
+ *os << be_uidt << be_uidt_nl
+ << "{" << be_nl
+ << "protected:" << be_idt_nl;
+
+ // Default constructor.
+ *os << class_name.c_str () << " (void);" << be_uidt_nl << be_nl
+ << "public:" << be_idt_nl;
+
+ // Some useful typedefs.
+ *os << "// Useful for template programming." << be_nl
+ << "typedef ::" << node->name () << " _stub_type;" << be_nl
+ << "typedef ::" << node->name () << "_ptr _stub_ptr_type;" << be_nl
+ << "typedef ::" << node->name () << "_var _stub_var_type;"
+ << be_nl << be_nl;
+
+ // Copy constructor and destructor.
+ *os << class_name.c_str () << " (const "
+ << class_name.c_str () << "& rhs);" << be_nl
+ << "virtual ~" << class_name.c_str () << " (void);" << be_nl << be_nl;
+
+ // _is_a
+ *os << "virtual CORBA::Boolean _is_a (" << be_idt << be_idt_nl
+ << "const char* logical_type_id" << be_nl
+ << "ACE_ENV_ARG_DECL_WITH_DEFAULTS" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // _downcast
+ *os << "virtual void* _downcast (" << be_idt << be_idt_nl
+ << "const char* logical_type_id" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // Add a skeleton for our _is_a method.
+ *os << "static void _is_a_skel (" << be_idt << be_idt_nl
+ << "TAO_ServerRequest &req," << be_nl
+ << "void *servant," << be_nl
+ << "void *servant_upcall" << be_nl
+ << "ACE_ENV_ARG_DECL" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // Add a skeleton for our _non_existent method.
+ *os << "static void _non_existent_skel (" << be_idt << be_idt_nl
+ << "TAO_ServerRequest &req," << be_nl
+ << "void *servant," << be_nl
+ << "void *servant_upcall" << be_nl
+ << "ACE_ENV_ARG_DECL" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // Add a skeleton for our _interface method.
+ *os << "static void _interface_skel (" << be_idt << be_idt_nl
+ << "TAO_ServerRequest &req," << be_nl
+ << "void *servant," << be_nl
+ << "void *servant_upcall" << be_nl
+ << "ACE_ENV_ARG_DECL" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // Add a skeleton for our _component method.
+ *os << "static void _component_skel (" << be_idt << be_idt_nl
+ << "TAO_ServerRequest &req," << be_nl
+ << "void *obj," << be_nl
+ << "void *servant_upcall" << be_nl
+ << "ACE_ENV_ARG_DECL" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // Add the dispatch method.
+ *os << "virtual void _dispatch (" << be_idt << be_idt_nl
+ << "TAO_ServerRequest &req," << be_nl
+ << "void *_servant_upcall" << be_nl
+ << "ACE_ENV_ARG_DECL" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ this->this_method (node);
+
+ // The _interface_repository_id method.
+ *os << be_nl
+ << "virtual const char* _interface_repository_id "
+ << "(void) const;";
+
+ // Generate code for elements in the scope (e.g., operations).
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_sh::"
+ "visit_interface - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ // Generate skeletons for operations of our base classes. These
+ // skeletons just cast the pointer to the appropriate type
+ // before invoking the call.
+ int status =
+ node->traverse_inheritance_graph (
+ be_interface::gen_skel_helper,
+ os
+ );
+
+ if (status == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_sh::"
+ "visit_interface - "
+ "inheritance graph traversal failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl << "};";
+ } // if ! node->is_abstract ()
be_visitor_context ctx (*this->ctx_);
@@ -327,7 +331,7 @@ be_visitor_interface_sh::gen_abstract_ops_helper (
TAO_OutStream *os
)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -347,7 +351,7 @@ be_visitor_interface_sh::gen_abstract_ops_helper (
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_sh::"
- "gen_abstract_ops_helper - "
+ "abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
index 4945b3676f5..aca20597312 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
@@ -443,7 +443,7 @@ be_visitor_interface_ss::gen_abstract_ops_helper (be_interface *node,
be_interface *base,
TAO_OutStream *os)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -463,7 +463,7 @@ be_visitor_interface_ss::gen_abstract_ops_helper (be_interface *node,
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_ss::"
- "gen_abstract_ops_helper - "
+ "abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_sh.cpp
index 2224b0189af..18ac8f0907a 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_sh.cpp
@@ -133,7 +133,7 @@ be_visitor_interface_thru_poa_proxy_impl_sh::gen_abstract_ops_helper (
TAO_OutStream *os
)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -153,7 +153,7 @@ be_visitor_interface_thru_poa_proxy_impl_sh::gen_abstract_ops_helper (
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_thru_poa_proxy_"
- "impl_sh::gen_abstract_ops_helper - "
+ "impl_sh::abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_ss.cpp
index a37f93b2d50..255e4b12a32 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/thru_poa_proxy_impl_ss.cpp
@@ -70,7 +70,7 @@ be_visitor_interface_thru_poa_proxy_impl_ss::gen_abstract_ops_helper (
TAO_OutStream *os
)
{
- if (!base->is_abstract ())
+ if (node == base)
{
return 0;
}
@@ -90,7 +90,7 @@ be_visitor_interface_thru_poa_proxy_impl_ss::gen_abstract_ops_helper (
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_thru_poa_proxy"
- "_impl_ss::gen_abstract_ops_helper - "
+ "_impl_ss::abstract_base_ops_helper - "
"bad node in this scope\n"),
-1);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_module/module.cpp b/TAO/TAO_IDL/be/be_visitor_module/module.cpp
index 7505969be27..d7427e01555 100644
--- a/TAO/TAO_IDL/be/be_visitor_module/module.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_module/module.cpp
@@ -715,8 +715,6 @@ be_visitor_module::visit_component (be_component *node)
case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_component_ch visitor (&ctx);
- // So we can pick up the abstract ops helpers.
- ctx.state (TAO_CodeGen::TAO_INTERFACE_CH);
status = node->accept (&visitor);
break;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_root/root.cpp b/TAO/TAO_IDL/be/be_visitor_root/root.cpp
index ea8ac913eea..9ed75f883b7 100644
--- a/TAO/TAO_IDL/be/be_visitor_root/root.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_root/root.cpp
@@ -400,6 +400,10 @@ int be_visitor_root::visit_root (be_root *node)
case TAO_CodeGen::TAO_ROOT_CH:
(void) tao_cg->end_client_header ();
break;
+ case TAO_CodeGen::TAO_ROOT_CI:
+ case TAO_CodeGen::TAO_ROOT_CS:
+ *os << "\n\n";
+ break;
case TAO_CodeGen::TAO_ROOT_SH:
(void) tao_cg->end_server_header ();
break;
@@ -436,9 +440,6 @@ int be_visitor_root::visit_root (be_root *node)
break;
}
- // Make sure each file ends with a newline.
- *os << "\n";
-
return 0;
}
@@ -1104,8 +1105,6 @@ be_visitor_root::visit_component (be_component *node)
case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_component_ch visitor (&ctx);
- // This is the only context state involved in strategies.
- ctx.state (TAO_CodeGen::TAO_INTERFACE_CH);
status = node->accept (&visitor);
break;
}
@@ -1669,8 +1668,6 @@ be_visitor_root::gen_explicit_tmplinst (be_root *node,
if (be_global->gen_anyop_files ())
{
tao_cg->anyop_source ()->gen_endif_AHETI ();
-
- *tao_cg->anyop_source () << "\n";
}
}
else if (this->ctx_->state () == TAO_CodeGen::TAO_ROOT_SS)
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
index 3a27523ade3..3a35cfdb386 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
@@ -838,7 +838,7 @@ be_visitor_sequence_cdr_op_cs::visit_node (be_type *bt)
}
else
{
- *os << "TAO::Objref_Traits<" << bt->name () << ">::marshal ("
+ *os << "TAO::Objref_Traits<" << bt->name () << ">::tao_marshal ("
<< be_idt << be_idt_nl
<< "_tao_sequence[i].in (), strm" << be_uidt_nl
<< ");" << be_uidt << be_uidt;
diff --git a/TAO/TAO_IDL/be/be_visitor_traits.cpp b/TAO/TAO_IDL/be/be_visitor_traits.cpp
index 159e95ef9bd..30db4880b9c 100644
--- a/TAO/TAO_IDL/be/be_visitor_traits.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_traits.cpp
@@ -116,15 +116,15 @@ be_visitor_traits::visit_interface (be_interface *node)
<< "struct " << be_global->stub_export_macro () << " Objref_Traits<"
<< " ::" << node->name () << ">" << be_nl
<< "{" << be_idt_nl
- << "static ::" << node->name () << "_ptr duplicate ("
+ << "static ::" << node->name () << "_ptr tao_duplicate ("
<< be_idt << be_idt_nl
<< "::" << node->name () << "_ptr" << be_uidt_nl
<< ");" << be_uidt_nl
- << "static void release (" << be_idt << be_idt_nl
+ << "static void tao_release (" << be_idt << be_idt_nl
<< "::" << node->name () << "_ptr" << be_uidt_nl
<< ");" << be_uidt_nl
- << "static ::" << node->name () << "_ptr nil (void);" << be_nl
- << "static CORBA::Boolean marshal (" << be_idt << be_idt_nl
+ << "static ::" << node->name () << "_ptr tao_nil (void);" << be_nl
+ << "static CORBA::Boolean tao_marshal (" << be_idt << be_idt_nl
<< "::" << node->name () << "_ptr p," << be_nl
<< "TAO_OutputCDR & cdr" << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl
@@ -191,10 +191,10 @@ be_visitor_traits::visit_valuetype (be_valuetype *node)
<< "struct " << be_global->stub_export_macro () << " Value_Traits<"
<< node->name () << ">" << be_nl
<< "{" << be_idt_nl
- << "static void add_ref (" << node->name () << " *);" << be_nl
- << "static void remove_ref (" << node->name () << " *);"
+ << "static void tao_add_ref (" << node->name () << " *);" << be_nl
+ << "static void tao_remove_ref (" << node->name () << " *);"
<< be_nl
- << "static void release (" << node->name () << " *);"
+ << "static void tao_release (" << node->name () << " *);"
<< be_uidt_nl
<< "};";
@@ -388,6 +388,39 @@ be_visitor_traits::visit_array (be_array *node)
TAO_OutStream *os = this->ctx_->stream ();
+ // Generate the array traits specialization definitions,
+ // guarded by #ifdef on unaliased array element type and length.
+
+ ACE_CString unique;
+ be_type *bt = be_type::narrow_from_decl (node->base_type ());
+ AST_Decl::NodeType nt = bt->node_type ();
+
+ if (nt == AST_Decl::NT_typedef)
+ {
+ be_typedef *td = be_typedef::narrow_from_decl (bt);
+ unique = td->primitive_base_type ()->flat_name ();
+ }
+ else
+ {
+ unique = bt->flat_name ();
+ }
+
+ char buf[NAMEBUFSIZE];
+
+ for (unsigned long i = 0; i < node->n_dims (); ++i)
+ {
+ ACE_OS::memset (buf,
+ '\0',
+ NAMEBUFSIZE);
+ ACE_OS::sprintf (buf,
+ "_%ld",
+ node->dims ()[i]->ev ()->u.ulval);
+ unique += buf;
+ }
+
+ unique += "_traits";
+// os->gen_ifdef_macro (unique.fast_rep ());
+
*os << be_nl << be_nl
<< "ACE_TEMPLATE_SPECIALIZATION" << be_nl
<< "struct " << be_global->stub_export_macro () << " Array_Traits<"
@@ -397,20 +430,20 @@ be_visitor_traits::visit_array (be_array *node)
<< name << "_tag" << be_uidt_nl
<< ">" << be_uidt_nl
<< "{" << be_idt_nl
- << "static void free (" << be_idt << be_idt_nl
+ << "static void tao_free (" << be_idt << be_idt_nl
<< name << "_slice * _tao_slice" << be_uidt_nl
<< ");" << be_uidt_nl
- << "static " << name << "_slice * dup ("
+ << "static " << name << "_slice * tao_dup ("
<< be_idt << be_idt_nl
<< "const " << name << "_slice * _tao_slice"
<< be_uidt_nl
<< ");" << be_uidt_nl
- << "static void copy (" << be_idt << be_idt_nl
+ << "static void tao_copy (" << be_idt << be_idt_nl
<< name << "_slice * _tao_to," << be_nl
<< "const " << name << "_slice * _tao_from"
<< be_uidt_nl
<< ");" << be_uidt_nl
- << "static " << name << "_slice * alloc (void);"
+ << "static " << name << "_slice * tao_alloc (void);"
<< be_uidt_nl
<< "};";
diff --git a/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp
index f9574060652..664e9a660f5 100644
--- a/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp
@@ -145,7 +145,7 @@ be_visitor_union_branch_cdr_op_cs::visit_array (be_array *node)
{
case TAO_CodeGen::TAO_CDR_INPUT:
*os << fname << " _tao_union_tmp;" << be_nl
- << fname << "_forany _tao_union_helper ("
+ << fname << "_forany _tao_union_helper ("
<< be_idt << be_idt_nl
<< "_tao_union_tmp" << be_uidt_nl
<< ");" << be_uidt_nl
@@ -301,7 +301,7 @@ be_visitor_union_branch_cdr_op_cs::visit_interface (be_interface *node)
{
if (f->is_abstract ())
{
- *os << "(strm << _tao_union."
+ *os << "(strm << _tao_union."
<< f->local_name () << " ());";
}
else
@@ -315,7 +315,7 @@ be_visitor_union_branch_cdr_op_cs::visit_interface (be_interface *node)
else
{
*os << "result =" << be_idt_nl
- << "TAO::Objref_Traits<" << node->name () << ">::marshal ("
+ << "TAO::Objref_Traits<" << node->name () << ">::tao_marshal ("
<< be_idt << be_idt_nl
<< "_tao_union." << f->local_name () << " ()," << be_nl
<< "strm" << be_uidt_nl
@@ -698,7 +698,7 @@ be_visitor_union_branch_cdr_op_cs::visit_sequence (be_sequence *node)
-1);
}
}
-
+
// Now generate the CDR stream operators for the sequence as a
// union branch.
@@ -849,7 +849,7 @@ be_visitor_union_branch_cdr_op_cs::visit_structure (be_structure *node)
-1);
}
}
-
+
// How generate the CDR stream operators for the structure as
// a union branch.
@@ -945,7 +945,7 @@ be_visitor_union_branch_cdr_op_cs::visit_union (be_union *node)
-1);
}
}
-
+
// Now generate the CDR stream operators for the union as
// a union branch.
@@ -1040,3 +1040,4 @@ be_visitor_union_branch_cdr_op_cs::explicit_default (void)
return 0;
}
+
diff --git a/TAO/TAO_IDL/be/be_visitor_union_branch/public_assign_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union_branch/public_assign_cs.cpp
index 1b5a9f15141..0a94b45ac15 100644
--- a/TAO/TAO_IDL/be/be_visitor_union_branch/public_assign_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union_branch/public_assign_cs.cpp
@@ -47,7 +47,7 @@ be_visitor_union_branch_public_assign_cs::visit_union_branch (
)
{
TAO_OutStream *os = this->ctx_->stream ();
-
+
*os << be_nl;
// This visitor is used when we are generating the copy ctor and
@@ -257,15 +257,15 @@ be_visitor_union_branch_public_assign_cs::visit_interface (be_interface *node)
if (bt_is_defined)
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << bt->name () << "::_";
+ << bt->name () << "::";
}
else
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << "TAO::Objref_Traits<" << node->name () << ">::";
+ << "TAO::Objref_Traits<" << node->name () << ">::tao";
}
- *os << "duplicate (" << be_idt << be_idt_nl
+ *os << "_duplicate (" << be_idt << be_idt_nl
<< "u.u_." << ub->local_name () << "_->ptr ()" << be_uidt_nl
<< ")" << be_uidt << be_uidt_nl << ")" << be_uidt << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl;
@@ -279,17 +279,17 @@ be_visitor_union_branch_public_assign_cs::visit_interface (be_interface *node)
if (bt_is_defined)
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << bt->name () << "::_";
+ << bt->name () << "::";
}
else
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << "TAO::Objref_Traits<" << node->name () << ">::";
+ << "TAO::Objref_Traits<" << node->name () << ">::tao";
}
- *os << "duplicate (" << be_idt << be_idt_nl
+ *os << "_duplicate (" << be_idt << be_idt_nl
<< "u.u_." << ub->local_name ()
- << "_->ptr ()" << be_uidt_nl
+ << "_->ptr ()" << be_uidt_nl
<< ")" << be_uidt << be_uidt_nl << ")," << be_uidt_nl
<< "*this" << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl;
@@ -354,15 +354,15 @@ be_visitor_union_branch_public_assign_cs::visit_interface_fwd (
if (bt_is_defined)
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << bt->name () << "::_";
+ << bt->name () << "::";
}
else
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << "TAO::Objref_Traits<" << node->name () << ">::";
+ << "TAO::Objref_Traits<" << node->name () << ">::tao";
}
- *os << "duplicate (" << be_idt << be_idt_nl
+ *os << "_duplicate (" << be_idt << be_idt_nl
<< "u.u_." << ub->local_name () << "_->ptr ()" << be_uidt_nl
<< ")" << be_uidt << be_uidt_nl << ")" << be_uidt << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl;
@@ -376,17 +376,17 @@ be_visitor_union_branch_public_assign_cs::visit_interface_fwd (
if (bt_is_defined)
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << bt->name () << "::_";
+ << bt->name () << "::";
}
else
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << "TAO::Objref_Traits<" << node->name () << ">::";
+ << "TAO::Objref_Traits<" << node->name () << ">::tao";
}
- *os << "duplicate (" << be_idt << be_idt_nl
+ *os << "_duplicate (" << be_idt << be_idt_nl
<< "u.u_." << ub->local_name ()
- << "_->ptr ()" << be_uidt_nl
+ << "_->ptr ()" << be_uidt_nl
<< ")" << be_uidt << be_uidt_nl << ")," << be_uidt_nl
<< "*this" << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_union_branch/public_ci.cpp b/TAO/TAO_IDL/be/be_visitor_union_branch/public_ci.cpp
index 24909678547..5b45fd9505d 100644
--- a/TAO/TAO_IDL/be/be_visitor_union_branch/public_ci.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union_branch/public_ci.cpp
@@ -363,15 +363,15 @@ be_visitor_union_branch_public_ci::visit_interface (be_interface *node)
if (bt_is_defined)
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << bt->name () << "::_";
+ << bt->name () << "::";
}
else
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << "TAO::Objref_Traits<" << node->name () << ">::";
+ << "TAO::Objref_Traits<" << node->name () << ">::tao";
}
- *os << "duplicate (val)" << be_uidt_nl << ")" << be_uidt << be_uidt_nl
+ *os << "_duplicate (val)" << be_uidt_nl << ")" << be_uidt << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl
<< "}" << be_nl << be_nl;
@@ -460,15 +460,15 @@ be_visitor_union_branch_public_ci::visit_interface_fwd (be_interface_fwd *node)
if (bt_is_defined)
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << bt->name () << "::_";
+ << bt->name () << "::";
}
else
{
*os << "OBJECT_FIELD (" << be_idt << be_idt_nl
- << "TAO::Objref_Traits<" << node->name () << ">::";
+ << "TAO::Objref_Traits<" << node->name () << ">::tao";
}
- *os << "duplicate (val)" << be_uidt_nl << ")" << be_uidt << be_uidt_nl
+ *os << "_duplicate (val)" << be_uidt_nl << ")" << be_uidt << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl
<< "}" << be_nl << be_nl;
@@ -690,7 +690,7 @@ be_visitor_union_branch_public_ci::visit_predefined_type (
<< "ACE_INLINE" << be_nl
<< "void" << be_nl
<< bu->name () << "::" << ub->local_name () << " (";
-
+
AST_PredefinedType::PredefinedType pt = node->pt ();
@@ -712,7 +712,7 @@ be_visitor_union_branch_public_ci::visit_predefined_type (
<< bt->name ()
<< " &";
}
- else
+ else
{
*os << bt->name ();
}
@@ -762,7 +762,7 @@ be_visitor_union_branch_public_ci::visit_predefined_type (
break;
case AST_PredefinedType::PT_value:
*os << "CORBA::add_ref (val);" << be_nl
- << "this->u_." << ub->local_name ()
+ << "this->u_." << ub->local_name ()
<< "_ = val;" << be_uidt_nl;
break;
@@ -900,7 +900,7 @@ be_visitor_union_branch_public_ci::visit_sequence (be_sequence *node)
// (1) Set from a const.
*os << "// Accessor to set the member." << be_nl
- << "ACE_INLINE" << be_nl
+ << "ACE_INLINE" << be_nl
<< "void" << be_nl
<< bu->name () << "::" << ub->local_name ()
<< " (const " << bt->name () << " &val)" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/field_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/field_ch.cpp
index 461a6b53a4c..dd078a1390a 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/field_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/field_ch.cpp
@@ -432,11 +432,11 @@ be_visitor_valuetype_field_ch::visit_predefined_type (be_predefined_type *node)
// Get method (read-only).
*os << pre_op () << "const " << bt->name () << " &"
<< ub->local_name () << " (void) const"
- << post_op () << be_nl;
+ << post_op ();
// Get method (read/write).
*os << pre_op () << bt->name () << " &"
<< ub->local_name () << " (void)"
- << post_op ();
+ << post_op () << be_nl << be_nl;
break;
case AST_PredefinedType::PT_void:
break;
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp
index 6292d08fa71..6f04adbbb06 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp
@@ -160,13 +160,25 @@ be_visitor_valuetype_ch::visit_valuetype (be_valuetype *node)
*os << "public virtual CORBA::ValueBase";
}
-
- // Generate the supported interfaces.
- for (i = 0; i < node->n_supports (); ++i)
+
+ if (node->supports_abstract ())
{
- *os << "," << be_nl
- << "public virtual "
- << node->supports ()[i]->name ();
+ status =
+ node->traverse_supports_list_graphs (
+ be_valuetype::abstract_supports_helper,
+ os,
+ I_TRUE,
+ I_FALSE
+ );
+
+ if (status == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_valuetype_ch::"
+ "visit_valuetype - "
+ "traversal of supported interfaces failed\n"),
+ -1);
+ }
}
// Generate the body.
@@ -237,10 +249,9 @@ be_visitor_valuetype_ch::visit_valuetype (be_valuetype *node)
*os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
- // If we inherit from CORBA::Object and/or CORBA::AbstractBase
- // (in addition to CORBA::ValueBase) we have to add these
- // to avoid ambiguity.
- if (node->n_supports () > 0)
+ // If we inherit from both CORBA::ValueBase and CORBA::AbstractBase,
+ // we have to add this to avoid ambiguity.
+ if (node->supports_abstract ())
{
*os << be_uidt_nl << be_nl << "public:" << be_idt_nl;
*os << be_nl << "virtual void _add_ref (void) = 0;" << be_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp
index 2ee88358c20..3b86f08e4b1 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp
@@ -56,8 +56,35 @@ be_visitor_valuetype_ci::visit_valuetype (be_valuetype *node)
<< "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
*os << "ACE_INLINE" << be_nl;
- *os << node->name () << "::" << node->local_name () << " (void)" << be_nl
- << "{}" << be_nl << be_nl;
+ *os << node->name () << "::" << node->local_name () << " (void)" << be_nl;
+
+ if (node->supports_abstract ())
+ {
+ *os << "{" << be_idt;
+
+ int status =
+ node->traverse_supports_list_graphs (
+ be_valuetype::gen_abstract_init_helper,
+ os,
+ I_TRUE,
+ I_FALSE
+ );
+
+ if (status == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_valuetype_ci::"
+ "visit_valuetype - "
+ "traversal of supported interfaces failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl << "}" << be_nl << be_nl;
+ }
+ else
+ {
+ *os << "{}" << be_nl << be_nl;
+ }
*os << "ACE_INLINE" << be_nl;
*os << node->name () << "::~" << node->local_name () << " (void)" << be_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
index 869e85a1e6b..daa6e078b36 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
@@ -70,7 +70,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl
<< "void" << be_nl
- << "TAO::Value_Traits<" << node->name () << ">::add_ref ("
+ << "TAO::Value_Traits<" << node->name () << ">::tao_add_ref ("
<< be_idt << be_idt_nl
<< node->name () << " * p" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -81,7 +81,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl
<< "void" << be_nl
- << "TAO::Value_Traits<" << node->name () << ">::remove_ref ("
+ << "TAO::Value_Traits<" << node->name () << ">::tao_remove_ref ("
<< be_idt << be_idt_nl
<< node->name () << " * p" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -92,7 +92,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
*os << be_nl << be_nl
<< "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl
<< "void" << be_nl
- << "TAO::Value_Traits<" << node->name () << ">::release ("
+ << "TAO::Value_Traits<" << node->name () << ">::tao_release ("
<< be_idt << be_idt_nl
<< node->name () << " * p" << be_uidt_nl
<< ")" << be_uidt_nl
@@ -232,10 +232,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
<< "return retval;" << be_uidt_nl
<< "}";
- // If we inherit from CORBA::Object and/or CORBA::AbstractBase
- // (in addition to CORBA::ValueBase) we have to add these
- // to avoid ambiguity.
- if (node->n_supports () > 0)
+ if (node->supports_abstract ())
{
*os << be_nl << be_nl
<< "CORBA::ValueBase *" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp
index 0d89ded2a01..0d5d5836734 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp
@@ -180,10 +180,9 @@ be_visitor_valuetype_obv_ch::visit_valuetype (be_valuetype *node)
-1);
}
- // If we inherit from CORBA::Object and/or CORBA::AbstractBase
- // (in addition to CORBA::ValueBase) we have to add these
- // to avoid ambiguity.
- if (node->n_supports () > 0)
+ // If we inherit from both CORBA::ValueBase and CORBA::AbstractBase,
+ // we have to add this to avoid ambiguity.
+ if (node->supports_abstract ())
{
*os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__ ;
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp
index fc0202f10a6..e415120ef58 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp
@@ -107,10 +107,9 @@ be_visitor_valuetype_obv_cs::visit_valuetype (be_valuetype *node)
-1);
}
- // If we inherit from CORBA::Object and/or CORBA::AbstractBase
- // (in addition to CORBA::ValueBase) we have to add these
- // to avoid ambiguity.
- if (node->n_supports () > 0)
+ // If we inherit from both CORBA::ValueBase and CORBA::AbstractBase,
+ // we have to add this to avoid ambiguity.
+ if (node->supports_abstract ())
{
*os << be_nl << be_nl << "void" << be_nl
<< node->full_obv_skel_name ()
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ss.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ss.cpp
index e3f63a051a7..f7db8a0ca0f 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ss.cpp
@@ -98,7 +98,7 @@ be_visitor_valuetype_ss::visit_valuetype (be_valuetype *node)
*os << be_idt_nl
<< ": TAO_Abstract_ServantBase (rhs)," << be_nl
- << " TAO_ServantBase (rhs)," << be_idt_nl;
+ << " TAO_ServantBase (rhs)," << be_nl;
if (concrete->is_nested ())
{
@@ -113,8 +113,22 @@ be_visitor_valuetype_ss::visit_valuetype (be_valuetype *node)
*os << bd->full_skel_name () << " (rhs)," << be_nl;
}
- *os << "ValueBase (rhs)" << be_uidt << be_uidt_nl
- << "{}" << be_nl << be_nl;
+ *os << " ValueBase (rhs)," << be_nl;
+
+ if (node->is_nested ())
+ {
+ AST_Decl *scope = ScopeAsDecl (node->defined_in ());
+
+ *os << " ACE_NESTED_CLASS (" << scope->name () << ", "
+ << node->local_name () << ") ()";
+ }
+ else
+ {
+ be_interface *bd = be_interface::narrow_from_decl (node);
+ *os << bd->full_skel_name () << " ()";
+ }
+
+ *os << be_uidt_nl << "{}" << be_nl << be_nl;
*os << full_skel_name << "::~"
<< local_name_prefix << node_local_name
diff --git a/TAO/TAO_IDL/be_include/be_global.h b/TAO/TAO_IDL/be_include/be_global.h
index 532b0eea9e8..f104767418e 100644
--- a/TAO/TAO_IDL/be_include/be_global.h
+++ b/TAO/TAO_IDL/be_include/be_global.h
@@ -428,10 +428,6 @@ public:
void gen_anyop_files (idl_bool val);
// Accessors for the member.
- idl_bool do_ccm_preproc (void) const;
- void do_ccm_preproc (idl_bool val);
- // Accessors for the member do_ccm_preproc_.
-
ACE_CString spawn_options (void);
// Command line passed to ACE_Process::spawn. Different
// implementations in IDL and IFR backends.
@@ -586,10 +582,7 @@ private:
// Reference holder for component skeleton visitors.
idl_bool gen_anyop_files_;
- // Separate files for generated Any operators?
-
- idl_bool do_ccm_preproc_;
- // Do the IDL3 to IDL2 preprocessing?
+ // @@@ (TAO TEAM ONLY) Separate files for generated Any operators?
};
#endif /* _BE_GLOBAL_H */
diff --git a/TAO/TAO_IDL/be_include/be_valuetype.h b/TAO/TAO_IDL/be_include/be_valuetype.h
index b3c81fa052f..37c9c2df060 100644
--- a/TAO/TAO_IDL/be_include/be_valuetype.h
+++ b/TAO/TAO_IDL/be_include/be_valuetype.h
@@ -134,6 +134,12 @@ public:
// Helper method passed to the template method to generate code for
// adding abstract supported interfaces to the inheritance list.
+ static int gen_abstract_init_helper (be_interface *node,
+ be_interface *base,
+ TAO_OutStream *os);
+ // Helper method to initialize the val_ member of the generated
+ // C++ class for each abstract interface that we support.
+
static int gen_skel_helper (be_interface *node,
be_interface *base,
TAO_OutStream *os);
diff --git a/TAO/TAO_IDL/be_include/be_visitor_amh_pre_proc.h b/TAO/TAO_IDL/be_include/be_visitor_amh_pre_proc.h
index e362eb94d23..a17e821e674 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_amh_pre_proc.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_amh_pre_proc.h
@@ -49,6 +49,9 @@ public:
virtual int visit_operation (be_operation *node);
+ // @@@ (JP) I don't think this has to be overridden.
+ virtual int visit_scope (be_scope *node);
+
private:
/// Create the reponse handler interface
be_interface *create_response_handler (be_interface *node,
diff --git a/TAO/TAO_IDL/be_include/be_visitor_ccm_pre_proc.h b/TAO/TAO_IDL/be_include/be_visitor_ccm_pre_proc.h
index f62257fcf3b..a1e5f0c6af8 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_ccm_pre_proc.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_ccm_pre_proc.h
@@ -126,13 +126,6 @@ private:
const char *name,
be_exception *&result);
- int create_uses_multiple_stuff (be_component *node,
- AST_Component::port_description *pd);
- int create_uses_multiple_struct (be_component *node,
- AST_Component::port_description *pd);
- int create_uses_multiple_sequence (be_component *node,
- AST_Component::port_description *pd);
-
int create_event_consumer (be_eventtype *node);
AST_Interface *lookup_consumer (AST_Component::port_description *pd);
AST_Interface *create_explicit (be_home *node);
@@ -149,8 +142,6 @@ private:
private:
// These are created for operations implied by 'uses multiple' declarations.
Identifier module_id_;
- be_structure *connection_;
- be_sequence *connections_;
be_valuetype *cookie_;
// Exceptions thrown by implied CCM operations.
diff --git a/TAO/TAO_IDL/driver/drv_preproc.cpp b/TAO/TAO_IDL/driver/drv_preproc.cpp
index bf9c2d1bd76..9c231e8997c 100644
--- a/TAO/TAO_IDL/driver/drv_preproc.cpp
+++ b/TAO/TAO_IDL/driver/drv_preproc.cpp
@@ -423,32 +423,14 @@ DRV_check_for_include (const char* buf)
// Terminate this string.
file_name [i] = '\0';
-
- size_t len = ACE_OS::strlen (file_name);
- // Some backends pass this file through, others don't.
+ // Store in the idl_global, unless it's "orb.idl" -
+ // we don't want to generate header includes for that.
if (ACE_OS::strcmp (file_name, "orb.idl") == 0)
{
- if (idl_global->pass_orb_idl ())
- {
- idl_global->add_to_included_idl_files (file_name);
- }
- else
- {
- DRV_get_orb_idl_includes ();
- }
- }
- // We have special lookup for orb.idl (TAO_ROOT/tao) that
- // also kicks in for .pidl files. If one of the latter is
- // included as a local name only, we add the 'tao/' prefix
- // so the generated C++ include files will be correct.
- else if (ACE_OS::strcmp (file_name + len - 5, ".pidl") == 0
- && ACE_OS::strchr (file_name, '/') == 0
- && ACE_OS::strchr (file_name, '\\') == 0)
- {
- ACE_CString fixed_name ("tao/");
- fixed_name += file_name;
- idl_global->add_to_included_idl_files (fixed_name.rep ());
+ // However, we do want to generate includes for the
+ // .pidl files that it contains.
+ DRV_get_orb_idl_includes ();
}
else
{
diff --git a/TAO/TAO_IDL/fe/fe_interface_header.cpp b/TAO/TAO_IDL/fe/fe_interface_header.cpp
index f6d54db537a..7df853b91aa 100644
--- a/TAO/TAO_IDL/fe/fe_interface_header.cpp
+++ b/TAO/TAO_IDL/fe/fe_interface_header.cpp
@@ -950,6 +950,14 @@ FE_ComponentHeader::compile_supports (UTL_NameList *supports)
continue;
}
+ // Abstract interface? (illegal for components to support).
+ if (i->is_abstract ())
+ {
+ idl_global->err ()->concrete_interface_expected (this->name (),
+ i->name ());
+ continue;
+ }
+
// Local interface? (illegal for components to support).
if (i->is_local ())
{
diff --git a/TAO/TAO_IDL/fe/fe_lookup.cpp b/TAO/TAO_IDL/fe/fe_lookup.cpp
index 93ffbe3019e..e155f034043 100644
--- a/TAO/TAO_IDL/fe/fe_lookup.cpp
+++ b/TAO/TAO_IDL/fe/fe_lookup.cpp
@@ -181,13 +181,10 @@ TAO_IDL_CPP_Keyword_Table::lookup (const char *str, unsigned int len)
if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
{
- if (len == static_cast<unsigned int> (ACE_OS::strlen (wordlist[key].keyword_)))
- {
- const char *s = wordlist[key].keyword_;
+ const char *s = wordlist[key].keyword_;
- if (*str == *s && !ACE_OS::strncmp (str + 1, s + 1, len - 1))
- return &wordlist[key];
- }
+ if (*str == *s && !ACE_OS::strncmp (str + 1, s + 1, len - 1))
+ return &wordlist[key];
}
}
return 0;
diff --git a/TAO/TAO_IDL/fe/idl.ll b/TAO/TAO_IDL/fe/idl.ll
index a7cb460ae90..fd2d95715e3 100644
--- a/TAO/TAO_IDL/fe/idl.ll
+++ b/TAO/TAO_IDL/fe/idl.ll
@@ -279,7 +279,7 @@ oneway return IDL_ONEWAY;
IDL_STRING_LITERAL);
return IDL_STRING_LITERAL;
}
-(L\"([^\\\"]*|\\u([0-9a-fA-F]{1,4}))*\"[ \t]*)+ {
+L\"([^\\\"]*|\\u([0-9a-fA-F]{1,4}))*\" {
/* Skip the bookends */
char *tmp = ACE_OS::strdup (ace_yytext);
tmp[strlen (tmp) - 1] = '\0';
diff --git a/TAO/TAO_IDL/fe/idl.yy b/TAO/TAO_IDL/fe/idl.yy
index c4a400ffbfa..92e542619b2 100644
--- a/TAO/TAO_IDL/fe/idl.yy
+++ b/TAO/TAO_IDL/fe/idl.yy
@@ -4516,6 +4516,14 @@ uses_decl :
ud.impl = interface_type;
ud.is_multiple = $2;
c->uses ().enqueue_tail (ud);
+
+ if (ud.is_multiple == I_TRUE)
+ {
+ // These datatypes must be created in the
+ // front end so they can be looked up
+ // when compiling the generated executor IDL.
+ idl_global->create_uses_multiple_stuff (c, ud);
+ }
}
}
}
diff --git a/TAO/TAO_IDL/fe/lex.yy.cpp b/TAO/TAO_IDL/fe/lex.yy.cpp
index 38ac79e950e..be461db9bd3 100644
--- a/TAO/TAO_IDL/fe/lex.yy.cpp
+++ b/TAO/TAO_IDL/fe/lex.yy.cpp
@@ -284,7 +284,7 @@ static void tao_yy_fatal_error TAO_YY_PROTO(( tao_yyconst char msg[] ));
#define TAO_YY_NUM_RULES 104
#define TAO_YY_END_OF_BUFFER 105
-static tao_yyconst short int tao_yy_accept[551] =
+static tao_yyconst short int tao_yy_accept[549] =
{ 0,
101, 101, 105, 103, 101, 102, 102, 103, 103, 103,
103, 103, 76, 72, 103, 103, 103, 68, 68, 68,
@@ -310,42 +310,42 @@ static tao_yyconst short int tao_yy_accept[551] =
68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
0, 0, 0, 0, 0, 0, 0, 82, 80, 0,
- 0, 73, 0, 69, 70, 68, 78, 0, 0, 83,
- 0, 68, 59, 68, 68, 68, 20, 27, 68, 68,
- 68, 68, 68, 68, 68, 13, 68, 68, 68, 68,
- 68, 68, 68, 48, 68, 68, 68, 68, 24, 68,
+ 0, 73, 0, 69, 70, 68, 0, 83, 0, 68,
+ 59, 68, 68, 68, 20, 27, 68, 68, 68, 68,
+ 68, 68, 68, 13, 68, 68, 68, 68, 68, 68,
+ 68, 48, 68, 68, 68, 68, 24, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 57, 68, 31, 68, 68, 0, 0, 0,
- 0, 0, 0, 0, 96, 0, 0, 0, 0, 0,
-
- 0, 80, 0, 81, 0, 60, 0, 0, 68, 68,
- 68, 68, 68, 10, 68, 68, 68, 68, 68, 44,
- 68, 68, 68, 68, 18, 22, 68, 68, 61, 68,
- 33, 68, 68, 68, 68, 30, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 25, 68, 68, 68, 68,
- 68, 68, 68, 68, 17, 68, 68, 28, 68, 91,
+ 57, 68, 31, 68, 68, 0, 0, 0, 0, 0,
+ 0, 0, 96, 0, 0, 0, 0, 0, 0, 80,
+
+ 0, 81, 0, 60, 0, 0, 68, 68, 68, 68,
+ 68, 10, 68, 68, 68, 68, 68, 44, 68, 68,
+ 68, 68, 18, 22, 68, 68, 61, 68, 33, 68,
+ 68, 68, 68, 30, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 25, 68, 68, 68, 68, 68, 68,
+ 68, 68, 17, 68, 68, 28, 68, 91, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 84, 0, 2, 68, 68, 68, 68, 68,
- 68, 35, 68, 23, 68, 68, 68, 46, 68, 49,
- 68, 68, 3, 68, 32, 64, 68, 68, 68, 38,
+ 84, 0, 2, 68, 68, 68, 68, 68, 68, 35,
+ 68, 23, 68, 68, 68, 46, 68, 49, 68, 68,
+ 3, 68, 32, 64, 68, 68, 68, 38, 68, 4,
- 68, 4, 68, 68, 68, 14, 12, 68, 19, 68,
- 68, 55, 68, 68, 68, 68, 0, 89, 0, 0,
+ 68, 68, 68, 14, 12, 68, 19, 68, 68, 55,
+ 68, 68, 68, 68, 0, 89, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 68, 68, 29, 68, 68, 8, 21, 68,
- 68, 36, 68, 68, 58, 68, 68, 37, 68, 68,
- 68, 68, 68, 68, 68, 11, 68, 68, 68, 15,
- 0, 0, 87, 87, 0, 0, 93, 0, 0, 92,
- 0, 0, 0, 0, 0, 0, 0, 34, 68, 68,
- 43, 68, 68, 68, 68, 50, 68, 52, 68, 5,
- 16, 68, 39, 68, 68, 26, 68, 0, 97, 97,
-
- 0, 0, 0, 0, 90, 0, 0, 0, 0, 0,
- 0, 0, 6, 42, 45, 7, 47, 9, 68, 53,
- 54, 68, 68, 41, 0, 85, 85, 0, 0, 88,
- 88, 0, 0, 0, 0, 51, 68, 56, 0, 98,
- 98, 0, 0, 0, 40, 94, 0, 86, 86, 0
+ 68, 68, 29, 68, 68, 8, 21, 68, 68, 36,
+ 68, 68, 58, 68, 68, 37, 68, 68, 68, 68,
+ 68, 68, 68, 11, 68, 68, 68, 15, 0, 0,
+ 87, 87, 0, 0, 93, 0, 0, 92, 0, 0,
+ 0, 0, 0, 0, 0, 34, 68, 68, 43, 68,
+ 68, 68, 68, 50, 68, 52, 68, 5, 16, 68,
+ 39, 68, 68, 26, 68, 0, 97, 97, 0, 0,
+
+ 0, 0, 90, 0, 0, 0, 0, 0, 0, 0,
+ 6, 42, 45, 7, 47, 9, 68, 53, 54, 68,
+ 68, 41, 0, 85, 85, 0, 0, 88, 88, 0,
+ 0, 0, 0, 51, 68, 56, 0, 98, 98, 0,
+ 0, 0, 40, 94, 0, 86, 86, 0
} ;
static tao_yyconst int tao_yy_ec[256] =
@@ -390,141 +390,141 @@ static tao_yyconst int tao_yy_meta[60] =
6, 8, 6, 8, 6, 8, 6, 8, 6
} ;
-static tao_yyconst short int tao_yy_base[578] =
+static tao_yyconst short int tao_yy_base[576] =
{ 0,
- 0, 58, 1044, 1045, 59, 1045, 1045, 56, 1009, 54,
- 57, 65, 68, 73, 1025, 1023, 1020, 0, 1017, 69,
- 1002, 1008, 45, 987, 56, 37, 48, 67, 996, 985,
- 61, 984, 65, 997, 79, 63, 82, 83, 71, 71,
- 93, 92, 134, 144, 1010, 130, 97, 148, 0, 1022,
- 147, 152, 158, 184, 210, 1045, 148, 161, 197, 203,
- 229, 0, 239, 1045, 1045, 1045, 0, 1002, 137, 994,
- 983, 994, 972, 965, 969, 973, 968, 985, 109, 966,
- 978, 962, 973, 960, 975, 976, 975, 130, 962, 956,
- 962, 958, 132, 96, 959, 968, 959, 950, 949, 963,
-
- 947, 136, 964, 956, 963, 138, 948, 944, 945, 951,
- 938, 942, 140, 952, 944, 946, 946, 933, 199, 0,
- 174, 1045, 980, 243, 942, 946, 940, 930, 962, 226,
- 196, 204, 1045, 972, 971, 252, 970, 256, 0, 261,
- 272, 1045, 258, 1045, 286, 0, 277, 283, 0, 947,
- 235, 279, 921, 967, 257, 935, 949, 918, 0, 919,
- 924, 930, 916, 917, 110, 912, 930, 928, 909, 915,
- 913, 921, 905, 920, 918, 921, 903, 915, 904, 897,
- 912, 915, 908, 913, 892, 892, 902, 905, 886, 0,
- 247, 886, 895, 887, 901, 883, 885, 884, 152, 885,
-
- 880, 885, 893, 882, 887, 876, 873, 889, 891, 873,
- 918, 917, 876, 882, 872, 884, 328, 1045, 1045, 301,
- 910, 0, 303, 310, 1045, 893, 300, 910, 0, 1045,
- 0, 878, 0, 862, 870, 873, 0, 0, 862, 259,
- 871, 860, 853, 861, 853, 0, 851, 854, 854, 863,
- 863, 846, 864, 0, 846, 843, 844, 849, 0, 853,
- 847, 849, 835, 836, 854, 853, 852, 843, 842, 845,
- 834, 843, 846, 826, 831, 841, 828, 839, 838, 296,
- 826, 832, 0, 833, 0, 819, 827, 863, 317, 829,
- 819, 827, 824, 818, 1045, 290, 348, 820, 824, 818,
-
- 808, 1045, 851, 1045, 850, 0, 373, 849, 802, 820,
- 818, 818, 804, 0, 804, 792, 802, 802, 808, 0,
- 792, 791, 792, 791, 0, 0, 799, 787, 0, 800,
- 0, 800, 799, 787, 797, 0, 776, 782, 779, 794,
- 304, 778, 782, 781, 785, 0, 786, 772, 773, 782,
- 788, 783, 783, 768, 0, 771, 764, 0, 769, 1045,
- 378, 299, 762, 370, 768, 808, 807, 766, 772, 762,
- 774, 400, 1045, 800, 0, 770, 751, 757, 765, 764,
- 748, 0, 747, 0, 741, 756, 739, 0, 744, 0,
- 761, 685, 0, 680, 0, 0, 655, 671, 668, 0,
-
- 662, 0, 646, 652, 627, 0, 0, 615, 0, 599,
- 609, 0, 609, 596, 565, 582, 427, 1045, 442, 344,
- 353, 450, 465, 586, 613, 356, 579, 569, 577, 573,
- 473, 605, 558, 557, 0, 562, 556, 0, 0, 550,
- 546, 0, 554, 554, 0, 529, 519, 0, 505, 515,
- 493, 508, 489, 474, 484, 0, 459, 456, 442, 0,
- 469, 397, 1045, 399, 430, 472, 1045, 485, 365, 1045,
- 500, 371, 428, 515, 414, 385, 452, 0, 415, 395,
- 0, 382, 358, 352, 365, 0, 351, 0, 313, 0,
- 0, 301, 0, 309, 297, 0, 289, 497, 1045, 503,
-
- 305, 519, 522, 530, 1045, 534, 538, 448, 551, 555,
- 412, 239, 0, 0, 0, 0, 0, 0, 193, 0,
- 0, 187, 171, 0, 559, 1045, 569, 571, 573, 1045,
- 575, 578, 216, 197, 457, 0, 55, 0, 580, 1045,
- 585, 61, 594, 599, 0, 1045, 601, 1045, 604, 1045,
- 625, 633, 637, 643, 651, 659, 663, 670, 678, 683,
- 686, 693, 698, 701, 704, 708, 715, 720, 727, 732,
- 739, 747, 755, 763, 771, 779, 787
+ 0, 58, 1037, 1038, 59, 1038, 1038, 56, 1002, 54,
+ 57, 65, 68, 73, 1018, 1016, 1013, 0, 1010, 69,
+ 995, 1001, 45, 980, 56, 37, 48, 67, 989, 978,
+ 61, 977, 65, 990, 79, 63, 82, 83, 71, 71,
+ 93, 92, 134, 144, 1003, 130, 97, 148, 0, 1015,
+ 147, 152, 158, 184, 210, 1038, 148, 161, 197, 203,
+ 229, 0, 239, 1038, 1038, 1038, 0, 995, 137, 987,
+ 976, 987, 965, 958, 962, 966, 961, 978, 109, 959,
+ 971, 955, 966, 953, 968, 969, 968, 130, 955, 949,
+ 955, 951, 132, 96, 952, 961, 952, 943, 942, 956,
+
+ 940, 136, 957, 949, 956, 138, 941, 937, 938, 944,
+ 931, 935, 140, 945, 937, 939, 939, 926, 199, 0,
+ 174, 1038, 973, 243, 935, 939, 933, 923, 955, 226,
+ 196, 204, 1038, 965, 964, 252, 963, 256, 0, 261,
+ 272, 1038, 258, 1038, 286, 0, 277, 283, 0, 940,
+ 235, 1038, 914, 960, 257, 928, 942, 911, 0, 912,
+ 917, 923, 909, 910, 110, 905, 923, 921, 902, 908,
+ 906, 914, 898, 913, 911, 914, 896, 908, 897, 890,
+ 905, 908, 901, 906, 885, 885, 895, 898, 879, 0,
+ 247, 879, 888, 880, 894, 876, 878, 877, 152, 878,
+
+ 873, 878, 886, 875, 880, 869, 866, 882, 884, 866,
+ 911, 910, 869, 875, 865, 877, 328, 1038, 1038, 301,
+ 903, 0, 290, 310, 1038, 886, 0, 1038, 0, 872,
+ 0, 856, 864, 867, 0, 0, 856, 247, 865, 854,
+ 847, 855, 847, 0, 845, 848, 848, 857, 857, 840,
+ 858, 0, 840, 837, 838, 843, 0, 847, 841, 843,
+ 829, 830, 848, 847, 846, 837, 836, 839, 828, 837,
+ 840, 820, 825, 835, 822, 833, 832, 284, 820, 826,
+ 0, 827, 0, 813, 821, 857, 315, 823, 813, 821,
+ 818, 812, 1038, 268, 343, 814, 818, 812, 802, 1038,
+
+ 845, 1038, 844, 0, 373, 843, 796, 814, 812, 812,
+ 798, 0, 798, 786, 796, 796, 802, 0, 786, 785,
+ 786, 785, 0, 0, 793, 781, 0, 794, 0, 794,
+ 793, 781, 791, 0, 770, 776, 773, 788, 301, 772,
+ 776, 775, 779, 0, 780, 766, 767, 776, 782, 777,
+ 777, 762, 0, 765, 758, 0, 763, 1038, 378, 279,
+ 756, 361, 762, 802, 801, 760, 766, 756, 768, 400,
+ 1038, 794, 0, 764, 745, 751, 759, 701, 674, 0,
+ 662, 0, 653, 666, 647, 0, 641, 0, 656, 629,
+ 0, 625, 0, 0, 596, 612, 611, 0, 595, 0,
+
+ 580, 587, 569, 0, 0, 566, 0, 565, 578, 0,
+ 578, 577, 556, 573, 427, 1038, 442, 348, 360, 450,
+ 465, 578, 605, 381, 562, 551, 558, 551, 473, 579,
+ 523, 510, 0, 510, 502, 0, 0, 504, 501, 0,
+ 510, 506, 0, 493, 474, 0, 446, 455, 433, 452,
+ 443, 408, 425, 0, 414, 411, 378, 0, 469, 369,
+ 1038, 397, 400, 472, 1038, 421, 365, 1038, 500, 415,
+ 372, 515, 372, 305, 398, 0, 366, 337, 0, 322,
+ 312, 302, 314, 0, 306, 0, 288, 0, 0, 287,
+ 0, 292, 278, 0, 278, 430, 1038, 497, 307, 503,
+
+ 519, 523, 1038, 531, 538, 448, 546, 551, 558, 261,
+ 0, 0, 0, 0, 0, 0, 193, 0, 0, 187,
+ 171, 0, 565, 1038, 567, 575, 572, 1038, 577, 579,
+ 216, 197, 457, 0, 55, 0, 581, 1038, 591, 61,
+ 600, 602, 0, 1038, 604, 1038, 606, 1038, 627, 635,
+ 639, 645, 653, 661, 665, 672, 680, 685, 688, 695,
+ 700, 703, 706, 710, 717, 722, 729, 734, 741, 749,
+ 757, 765, 773, 781, 789
} ;
-static tao_yyconst short int tao_yy_def[578] =
+static tao_yyconst short int tao_yy_def[576] =
{ 0,
- 550, 1, 550, 550, 550, 550, 550, 551, 552, 550,
- 550, 550, 550, 550, 550, 550, 550, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 550, 550, 550, 550, 551, 550, 554, 550,
- 555, 550, 550, 550, 550, 550, 556, 55, 550, 550,
- 550, 557, 550, 550, 550, 550, 553, 553, 558, 559,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
-
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 550, 44,
- 44, 550, 121, 550, 550, 550, 550, 550, 550, 550,
- 551, 551, 550, 550, 550, 550, 560, 550, 561, 550,
- 550, 550, 556, 550, 556, 58, 550, 550, 557, 553,
- 558, 550, 550, 550, 550, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
-
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 562, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 563, 561, 550, 550, 550, 553, 550, 550, 564, 550,
- 565, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 562, 550, 550,
- 550, 550, 550, 217, 550, 217, 550, 550, 550, 550,
-
- 550, 550, 550, 550, 550, 553, 558, 566, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 550,
- 550, 550, 550, 550, 550, 567, 550, 550, 550, 550,
- 550, 307, 550, 568, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
-
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 550, 550, 550, 569,
- 550, 550, 550, 550, 567, 550, 550, 550, 550, 550,
- 307, 570, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 550, 569, 550, 569, 571, 550, 550, 572, 550, 550,
- 550, 550, 550, 550, 550, 558, 550, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 571, 550, 571,
-
- 572, 550, 573, 550, 550, 550, 574, 550, 550, 550,
- 550, 550, 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 573, 550, 573, 550, 574, 550,
- 574, 575, 576, 550, 550, 553, 553, 553, 575, 550,
- 575, 576, 550, 577, 553, 550, 577, 550, 577, 0,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550
+ 548, 1, 548, 548, 548, 548, 548, 549, 550, 548,
+ 548, 548, 548, 548, 548, 548, 548, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 548, 548, 548, 548, 549, 548, 552, 548,
+ 553, 548, 548, 548, 548, 548, 554, 55, 548, 548,
+ 548, 555, 548, 548, 548, 548, 551, 551, 556, 557,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 548, 44,
+ 44, 548, 121, 548, 548, 548, 548, 548, 548, 548,
+ 549, 549, 548, 548, 548, 548, 558, 548, 559, 548,
+ 548, 548, 554, 548, 554, 58, 548, 548, 555, 551,
+ 556, 548, 548, 548, 548, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 560, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 561, 559, 548, 548, 548, 551, 562, 548, 563, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 560, 548, 548, 548, 548,
+ 548, 217, 548, 217, 548, 548, 548, 548, 548, 548,
+
+ 548, 548, 548, 551, 556, 564, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 548, 548, 548,
+ 548, 548, 548, 565, 548, 548, 548, 548, 548, 305,
+ 548, 566, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 548, 548, 548, 567, 548, 548,
+ 548, 548, 565, 548, 548, 548, 548, 548, 305, 568,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 548, 567,
+ 548, 567, 569, 548, 548, 570, 548, 548, 548, 548,
+ 548, 548, 548, 556, 548, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 569, 548, 569, 570, 548,
+
+ 571, 548, 548, 548, 572, 548, 548, 548, 548, 548,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 571, 548, 571, 548, 572, 548, 572, 573,
+ 574, 548, 548, 551, 551, 551, 573, 548, 573, 574,
+ 548, 575, 551, 548, 575, 548, 575, 0, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548
} ;
-static tao_yyconst short int tao_yy_nxt[1105] =
+static tao_yyconst short int tao_yy_nxt[1098] =
{ 0,
4, 5, 6, 7, 5, 8, 4, 9, 4, 4,
10, 11, 12, 13, 14, 14, 15, 16, 4, 17,
@@ -532,10 +532,10 @@ static tao_yyconst short int tao_yy_nxt[1105] =
22, 18, 18, 4, 23, 24, 25, 26, 27, 28,
29, 30, 31, 18, 18, 32, 33, 34, 35, 36,
18, 37, 38, 39, 40, 41, 42, 18, 18, 43,
- 46, 48, 43, 46, 44, 52, 543, 53, 54, 54,
+ 46, 48, 43, 46, 44, 52, 541, 53, 54, 54,
55, 55, 55, 56, 69, 81, 70, 57, 45, 58,
73, 59, 59, 60, 58, 82, 63, 63, 63, 49,
- 77, 61, 74, 545, 83, 84, 61, 78, 75, 95,
+ 77, 61, 74, 543, 83, 84, 61, 78, 75, 95,
62, 87, 48, 85, 79, 86, 61, 92, 93, 88,
80, 61, 89, 96, 102, 99, 104, 103, 113, 97,
@@ -543,115 +543,113 @@ static tao_yyconst short int tao_yy_nxt[1105] =
49, 46, 182, 101, 46, 119, 108, 109, 119, 110,
120, 116, 152, 183, 118, 121, 122, 122, 123, 130,
144, 145, 130, 131, 135, 164, 165, 124, 124, 124,
- 136, 136, 240, 241, 122, 55, 55, 55, 145, 58,
+ 136, 136, 238, 239, 122, 55, 55, 55, 145, 58,
153, 138, 138, 60, 146, 146, 146, 174, 191, 137,
180, 61, 204, 125, 192, 181, 126, 175, 196, 127,
- 139, 197, 205, 128, 275, 58, 61, 140, 140, 140,
+ 139, 197, 205, 128, 273, 58, 61, 140, 140, 140,
- 119, 48, 533, 119, 137, 120, 276, 61, 58, 48,
- 59, 59, 60, 550, 58, 139, 60, 60, 60, 550,
- 61, 543, 61, 55, 55, 55, 61, 130, 538, 49,
- 130, 131, 537, 141, 142, 61, 142, 49, 147, 147,
+ 119, 48, 531, 119, 137, 120, 274, 61, 58, 48,
+ 59, 59, 60, 548, 58, 139, 60, 60, 60, 548,
+ 61, 541, 61, 55, 55, 55, 61, 130, 536, 49,
+ 130, 131, 535, 141, 142, 61, 142, 49, 147, 147,
152, 61, 148, 148, 148, 122, 122, 212, 141, 142,
- 58, 536, 63, 63, 63, 142, 124, 124, 124, 219,
- 144, 145, 61, 122, 230, 220, 220, 58, 153, 138,
- 138, 60, 58, 535, 140, 140, 140, 61, 145, 61,
- 227, 223, 223, 227, 61, 224, 224, 224, 144, 145,
- 148, 148, 148, 266, 61, 366, 148, 148, 148, 61,
-
- 420, 227, 267, 420, 227, 228, 145, 225, 302, 225,
- 502, 231, 314, 315, 303, 303, 224, 224, 224, 360,
- 360, 361, 225, 224, 224, 224, 228, 524, 225, 294,
- 295, 295, 296, 352, 142, 550, 142, 360, 353, 523,
- 400, 297, 297, 297, 522, 354, 463, 464, 295, 142,
- 295, 295, 367, 521, 465, 142, 401, 465, 470, 470,
- 471, 297, 297, 297, 464, 520, 503, 298, 295, 503,
- 299, 422, 507, 300, 422, 507, 470, 301, 152, 417,
- 418, 418, 417, 423, 423, 423, 372, 372, 372, 519,
- 152, 419, 419, 419, 372, 372, 372, 372, 418, 463,
-
- 464, 463, 464, 518, 517, 516, 153, 372, 372, 372,
- 372, 372, 372, 431, 431, 431, 534, 464, 153, 464,
- 515, 431, 431, 431, 431, 511, 511, 511, 417, 418,
- 418, 417, 499, 500, 431, 431, 431, 431, 431, 431,
- 461, 461, 461, 417, 418, 418, 417, 418, 514, 532,
- 500, 422, 532, 513, 422, 419, 419, 419, 544, 373,
- 512, 544, 418, 423, 423, 423, 466, 467, 467, 466,
- 468, 418, 418, 466, 467, 467, 466, 468, 423, 423,
- 423, 508, 461, 461, 461, 467, 476, 476, 476, 418,
- 502, 497, 467, 496, 476, 476, 476, 476, 495, 499,
-
- 500, 504, 505, 505, 504, 499, 500, 476, 476, 476,
- 476, 476, 476, 506, 506, 506, 509, 500, 494, 510,
- 505, 467, 467, 500, 526, 527, 493, 492, 511, 511,
- 511, 504, 505, 505, 504, 504, 505, 505, 504, 467,
- 530, 531, 527, 528, 528, 528, 491, 506, 506, 506,
- 505, 490, 509, 489, 505, 510, 509, 488, 531, 510,
- 533, 526, 527, 487, 511, 511, 511, 486, 511, 511,
- 511, 526, 527, 505, 505, 530, 531, 530, 531, 527,
- 540, 541, 540, 541, 528, 528, 528, 540, 541, 527,
- 485, 505, 484, 531, 483, 531, 546, 546, 541, 482,
-
- 541, 548, 549, 548, 549, 541, 548, 549, 481, 480,
- 479, 478, 373, 475, 546, 474, 473, 472, 426, 549,
- 469, 549, 460, 459, 549, 47, 47, 47, 47, 47,
- 47, 47, 47, 50, 458, 50, 50, 50, 50, 50,
- 50, 67, 67, 67, 67, 132, 132, 457, 456, 132,
- 132, 134, 455, 134, 134, 134, 134, 134, 134, 143,
- 143, 143, 143, 143, 143, 143, 143, 149, 454, 149,
- 151, 151, 151, 151, 151, 151, 151, 151, 154, 453,
- 154, 154, 154, 154, 154, 154, 221, 221, 452, 221,
- 222, 451, 222, 288, 288, 288, 288, 288, 288, 288,
-
- 288, 305, 305, 450, 305, 307, 449, 307, 308, 448,
- 308, 374, 374, 447, 374, 425, 425, 425, 425, 425,
- 425, 425, 425, 432, 432, 446, 432, 462, 462, 462,
- 462, 462, 462, 462, 462, 477, 477, 445, 477, 498,
- 498, 498, 498, 498, 498, 498, 498, 501, 501, 501,
- 501, 501, 501, 501, 501, 525, 525, 525, 525, 525,
- 525, 525, 525, 529, 529, 529, 529, 529, 529, 529,
- 529, 539, 539, 539, 539, 539, 539, 539, 539, 542,
- 542, 542, 542, 542, 542, 542, 542, 547, 547, 547,
- 547, 547, 547, 547, 547, 444, 443, 442, 441, 440,
-
- 439, 438, 437, 436, 435, 434, 433, 373, 430, 429,
- 428, 427, 366, 426, 424, 421, 416, 415, 414, 413,
- 412, 411, 410, 409, 408, 407, 406, 405, 404, 403,
- 402, 399, 398, 397, 396, 395, 394, 393, 392, 391,
- 390, 389, 388, 387, 386, 385, 384, 383, 382, 381,
- 380, 379, 378, 377, 376, 375, 373, 304, 302, 371,
- 370, 369, 368, 550, 365, 364, 363, 362, 289, 359,
- 358, 357, 356, 355, 351, 350, 349, 348, 347, 346,
- 345, 344, 343, 342, 341, 340, 339, 338, 337, 336,
- 335, 334, 333, 332, 331, 330, 329, 328, 327, 326,
-
- 325, 324, 323, 322, 321, 320, 319, 318, 317, 316,
- 313, 312, 311, 310, 309, 69, 306, 304, 293, 292,
- 291, 290, 211, 289, 287, 286, 285, 284, 283, 282,
- 281, 280, 279, 278, 277, 274, 273, 272, 271, 270,
- 269, 268, 265, 264, 263, 262, 261, 260, 259, 258,
- 257, 256, 255, 254, 253, 252, 251, 250, 249, 248,
- 247, 246, 245, 244, 243, 242, 239, 238, 237, 236,
- 235, 234, 233, 232, 230, 229, 226, 218, 218, 218,
- 217, 216, 215, 214, 213, 211, 210, 209, 208, 207,
- 206, 203, 202, 201, 200, 199, 198, 195, 194, 193,
-
- 190, 189, 188, 187, 186, 185, 184, 179, 178, 177,
- 176, 173, 172, 171, 170, 169, 168, 167, 166, 163,
- 162, 161, 160, 159, 158, 157, 156, 155, 150, 133,
- 129, 98, 94, 91, 90, 76, 72, 71, 68, 66,
- 65, 64, 51, 550, 3, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
-
- 550, 550, 550, 550
+ 58, 534, 63, 63, 63, 142, 124, 124, 124, 219,
+ 144, 145, 61, 122, 228, 220, 220, 58, 153, 138,
+ 138, 60, 58, 364, 140, 140, 140, 61, 145, 61,
+ 418, 223, 223, 418, 61, 224, 224, 224, 144, 145,
+ 148, 148, 148, 264, 61, 533, 148, 148, 148, 61,
+
+ 312, 313, 265, 224, 224, 224, 145, 225, 300, 225,
+ 152, 229, 500, 548, 301, 301, 522, 358, 358, 359,
+ 521, 350, 225, 224, 224, 224, 351, 520, 225, 292,
+ 293, 293, 294, 352, 142, 358, 142, 398, 153, 519,
+ 518, 295, 295, 295, 517, 293, 293, 365, 293, 142,
+ 461, 462, 516, 399, 515, 142, 295, 295, 295, 514,
+ 513, 463, 420, 293, 463, 420, 501, 296, 462, 501,
+ 297, 461, 462, 298, 421, 421, 421, 299, 152, 415,
+ 416, 416, 415, 468, 468, 469, 370, 370, 370, 462,
+ 512, 417, 417, 417, 370, 370, 370, 370, 416, 461,
+
+ 462, 468, 497, 498, 511, 371, 153, 370, 370, 370,
+ 370, 370, 370, 429, 429, 429, 505, 462, 510, 505,
+ 498, 429, 429, 429, 429, 506, 500, 495, 415, 416,
+ 416, 415, 497, 498, 429, 429, 429, 429, 429, 429,
+ 459, 459, 459, 415, 416, 416, 415, 416, 494, 530,
+ 498, 420, 530, 493, 420, 417, 417, 417, 542, 492,
+ 491, 542, 416, 421, 421, 421, 464, 465, 465, 464,
+ 466, 416, 416, 464, 465, 465, 464, 466, 421, 421,
+ 421, 490, 459, 459, 459, 465, 474, 474, 474, 416,
+ 489, 488, 465, 487, 474, 474, 474, 474, 486, 497,
+
+ 498, 502, 503, 503, 502, 465, 465, 474, 474, 474,
+ 474, 474, 474, 504, 504, 504, 507, 498, 485, 508,
+ 503, 524, 525, 465, 502, 503, 503, 502, 509, 509,
+ 509, 484, 502, 503, 503, 502, 526, 526, 526, 525,
+ 528, 529, 483, 503, 504, 504, 504, 507, 482, 481,
+ 508, 503, 507, 480, 479, 508, 531, 478, 529, 509,
+ 509, 509, 532, 477, 509, 509, 509, 524, 525, 524,
+ 525, 509, 509, 509, 528, 529, 476, 503, 503, 528,
+ 529, 538, 539, 538, 539, 525, 371, 525, 526, 526,
+ 526, 473, 529, 538, 539, 503, 472, 529, 471, 539,
+
+ 470, 539, 544, 544, 546, 547, 546, 547, 546, 547,
+ 424, 539, 467, 458, 457, 456, 455, 454, 453, 452,
+ 544, 451, 547, 450, 547, 449, 547, 47, 47, 47,
+ 47, 47, 47, 47, 47, 50, 448, 50, 50, 50,
+ 50, 50, 50, 67, 67, 67, 67, 132, 132, 447,
+ 446, 132, 132, 134, 445, 134, 134, 134, 134, 134,
+ 134, 143, 143, 143, 143, 143, 143, 143, 143, 149,
+ 444, 149, 151, 151, 151, 151, 151, 151, 151, 151,
+ 154, 443, 154, 154, 154, 154, 154, 154, 221, 221,
+ 442, 221, 222, 441, 222, 286, 286, 286, 286, 286,
+
+ 286, 286, 286, 303, 303, 440, 303, 305, 439, 305,
+ 306, 438, 306, 372, 372, 437, 372, 423, 423, 423,
+ 423, 423, 423, 423, 423, 430, 430, 436, 430, 460,
+ 460, 460, 460, 460, 460, 460, 460, 475, 475, 435,
+ 475, 496, 496, 496, 496, 496, 496, 496, 496, 499,
+ 499, 499, 499, 499, 499, 499, 499, 523, 523, 523,
+ 523, 523, 523, 523, 523, 527, 527, 527, 527, 527,
+ 527, 527, 527, 537, 537, 537, 537, 537, 537, 537,
+ 537, 540, 540, 540, 540, 540, 540, 540, 540, 545,
+ 545, 545, 545, 545, 545, 545, 545, 434, 433, 432,
+
+ 431, 371, 428, 427, 426, 425, 364, 424, 422, 419,
+ 414, 413, 412, 411, 410, 409, 408, 407, 406, 405,
+ 404, 403, 402, 401, 400, 397, 396, 395, 394, 393,
+ 392, 391, 390, 389, 388, 387, 386, 385, 384, 383,
+ 382, 381, 380, 379, 378, 377, 376, 375, 374, 373,
+ 371, 302, 300, 369, 368, 367, 366, 548, 363, 362,
+ 361, 360, 287, 357, 356, 355, 354, 353, 349, 348,
+ 347, 346, 345, 344, 343, 342, 341, 340, 339, 338,
+ 337, 336, 335, 334, 333, 332, 331, 330, 329, 328,
+ 327, 326, 325, 324, 323, 322, 321, 320, 319, 318,
+
+ 317, 316, 315, 314, 311, 310, 309, 308, 307, 304,
+ 302, 291, 290, 289, 288, 211, 287, 285, 284, 283,
+ 282, 281, 280, 279, 278, 277, 276, 275, 272, 271,
+ 270, 269, 268, 267, 266, 263, 262, 261, 260, 259,
+ 258, 257, 256, 255, 254, 253, 252, 251, 250, 249,
+ 248, 247, 246, 245, 244, 243, 242, 241, 240, 237,
+ 236, 235, 234, 233, 232, 231, 230, 228, 227, 226,
+ 218, 218, 218, 217, 216, 215, 214, 213, 211, 210,
+ 209, 208, 207, 206, 203, 202, 201, 200, 199, 198,
+ 195, 194, 193, 190, 189, 188, 187, 186, 185, 184,
+
+ 179, 178, 177, 176, 173, 172, 171, 170, 169, 168,
+ 167, 166, 163, 162, 161, 160, 159, 158, 157, 156,
+ 155, 150, 133, 129, 98, 94, 91, 90, 76, 72,
+ 71, 68, 66, 65, 64, 51, 548, 3, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548
} ;
-static tao_yyconst short int tao_yy_chk[1105] =
+static tao_yyconst short int tao_yy_chk[1098] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -659,10 +657,10 @@ static tao_yyconst short int tao_yy_chk[1105] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
- 5, 8, 2, 5, 2, 10, 542, 10, 10, 10,
+ 5, 8, 2, 5, 2, 10, 540, 10, 10, 10,
11, 11, 11, 12, 20, 26, 20, 12, 2, 13,
23, 13, 13, 13, 14, 26, 14, 14, 14, 8,
- 25, 13, 23, 537, 27, 27, 14, 25, 23, 33,
+ 25, 13, 23, 535, 27, 27, 14, 25, 23, 33,
13, 28, 47, 27, 25, 27, 13, 31, 31, 28,
25, 14, 28, 33, 36, 35, 37, 36, 40, 33,
@@ -675,106 +673,104 @@ static tao_yyconst short int tao_yy_chk[1105] =
93, 53, 113, 44, 102, 93, 44, 88, 106, 44,
53, 106, 113, 44, 199, 54, 53, 54, 54, 54,
- 119, 131, 534, 119, 51, 119, 199, 54, 59, 132,
+ 119, 131, 532, 119, 51, 119, 199, 54, 59, 132,
59, 59, 59, 121, 60, 53, 60, 60, 60, 121,
- 59, 533, 54, 55, 55, 55, 60, 130, 523, 131,
- 130, 130, 522, 55, 55, 59, 55, 132, 61, 61,
+ 59, 531, 54, 55, 55, 55, 60, 130, 521, 131,
+ 130, 130, 520, 55, 55, 59, 55, 132, 61, 61,
151, 60, 61, 61, 61, 124, 124, 124, 55, 55,
- 63, 519, 63, 63, 63, 55, 124, 124, 124, 136,
+ 63, 517, 63, 63, 63, 55, 124, 124, 124, 136,
143, 143, 63, 124, 155, 136, 136, 138, 151, 138,
- 138, 138, 140, 512, 140, 140, 140, 63, 143, 138,
- 152, 141, 141, 152, 140, 141, 141, 141, 145, 145,
- 147, 147, 147, 191, 138, 296, 148, 148, 148, 140,
-
- 362, 227, 191, 362, 227, 152, 145, 148, 220, 148,
- 501, 155, 240, 240, 220, 220, 223, 223, 223, 289,
- 289, 289, 148, 224, 224, 224, 227, 497, 148, 217,
- 217, 217, 217, 280, 224, 296, 224, 289, 280, 495,
- 341, 217, 217, 217, 494, 280, 420, 420, 217, 224,
- 297, 297, 297, 492, 421, 224, 341, 421, 426, 426,
- 426, 297, 297, 297, 420, 489, 469, 217, 297, 469,
- 217, 364, 472, 217, 364, 472, 426, 217, 307, 361,
- 361, 361, 361, 364, 364, 364, 307, 307, 307, 487,
- 476, 361, 361, 361, 307, 307, 307, 307, 361, 462,
-
- 462, 464, 464, 485, 484, 483, 307, 307, 307, 307,
- 307, 307, 307, 372, 372, 372, 511, 462, 476, 464,
- 482, 372, 372, 372, 372, 511, 511, 511, 417, 417,
- 417, 417, 465, 465, 372, 372, 372, 372, 372, 372,
- 417, 417, 417, 419, 419, 419, 419, 417, 480, 508,
- 465, 422, 508, 479, 422, 419, 419, 419, 535, 477,
- 475, 535, 419, 422, 422, 422, 423, 423, 423, 423,
- 423, 461, 461, 466, 466, 466, 466, 466, 423, 423,
- 423, 473, 461, 461, 461, 423, 431, 431, 431, 461,
- 468, 459, 466, 458, 431, 431, 431, 431, 457, 498,
-
- 498, 471, 471, 471, 471, 500, 500, 431, 431, 431,
- 431, 431, 431, 471, 471, 471, 474, 498, 455, 474,
- 471, 502, 502, 500, 503, 503, 454, 453, 474, 474,
- 474, 504, 504, 504, 504, 506, 506, 506, 506, 502,
- 507, 507, 503, 504, 504, 504, 452, 506, 506, 506,
- 504, 451, 509, 450, 506, 509, 510, 449, 507, 510,
- 510, 525, 525, 447, 509, 509, 509, 446, 510, 510,
- 510, 527, 527, 528, 528, 529, 529, 531, 531, 525,
- 532, 532, 539, 539, 528, 528, 528, 541, 541, 527,
- 444, 528, 443, 529, 441, 531, 543, 543, 532, 440,
-
- 539, 544, 544, 547, 547, 541, 549, 549, 437, 436,
- 434, 433, 432, 430, 543, 429, 428, 427, 425, 544,
- 424, 547, 416, 415, 549, 551, 551, 551, 551, 551,
- 551, 551, 551, 552, 414, 552, 552, 552, 552, 552,
- 552, 553, 553, 553, 553, 554, 554, 413, 411, 554,
- 554, 555, 410, 555, 555, 555, 555, 555, 555, 556,
- 556, 556, 556, 556, 556, 556, 556, 557, 408, 557,
- 558, 558, 558, 558, 558, 558, 558, 558, 559, 405,
- 559, 559, 559, 559, 559, 559, 560, 560, 404, 560,
- 561, 403, 561, 562, 562, 562, 562, 562, 562, 562,
-
- 562, 563, 563, 401, 563, 564, 399, 564, 565, 398,
- 565, 566, 566, 397, 566, 567, 567, 567, 567, 567,
- 567, 567, 567, 568, 568, 394, 568, 569, 569, 569,
- 569, 569, 569, 569, 569, 570, 570, 392, 570, 571,
- 571, 571, 571, 571, 571, 571, 571, 572, 572, 572,
- 572, 572, 572, 572, 572, 573, 573, 573, 573, 573,
- 573, 573, 573, 574, 574, 574, 574, 574, 574, 574,
- 574, 575, 575, 575, 575, 575, 575, 575, 575, 576,
- 576, 576, 576, 576, 576, 576, 576, 577, 577, 577,
- 577, 577, 577, 577, 577, 391, 389, 387, 386, 385,
-
- 383, 381, 380, 379, 378, 377, 376, 374, 371, 370,
- 369, 368, 367, 366, 365, 363, 359, 357, 356, 354,
- 353, 352, 351, 350, 349, 348, 347, 345, 344, 343,
- 342, 340, 339, 338, 337, 335, 334, 333, 332, 330,
- 328, 327, 324, 323, 322, 321, 319, 318, 317, 316,
- 315, 313, 312, 311, 310, 309, 308, 305, 303, 301,
- 300, 299, 298, 294, 293, 292, 291, 290, 288, 287,
- 286, 284, 282, 281, 279, 278, 277, 276, 275, 274,
- 273, 272, 271, 270, 269, 268, 267, 266, 265, 264,
- 263, 262, 261, 260, 258, 257, 256, 255, 253, 252,
-
- 251, 250, 249, 248, 247, 245, 244, 243, 242, 241,
- 239, 236, 235, 234, 232, 228, 226, 221, 216, 215,
- 214, 213, 212, 211, 210, 209, 208, 207, 206, 205,
- 204, 203, 202, 201, 200, 198, 197, 196, 195, 194,
- 193, 192, 189, 188, 187, 186, 185, 184, 183, 182,
- 181, 180, 179, 178, 177, 176, 175, 174, 173, 172,
- 171, 170, 169, 168, 167, 166, 164, 163, 162, 161,
- 160, 158, 157, 156, 154, 153, 150, 137, 135, 134,
- 129, 128, 127, 126, 125, 123, 118, 117, 116, 115,
- 114, 112, 111, 110, 109, 108, 107, 105, 104, 103,
-
- 101, 100, 99, 98, 97, 96, 95, 92, 91, 90,
- 89, 87, 86, 85, 84, 83, 82, 81, 80, 78,
- 77, 76, 75, 74, 73, 72, 71, 70, 68, 50,
- 45, 34, 32, 30, 29, 24, 22, 21, 19, 17,
- 16, 15, 9, 3, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
-
- 550, 550, 550, 550
+ 138, 138, 140, 294, 140, 140, 140, 63, 143, 138,
+ 360, 141, 141, 360, 140, 141, 141, 141, 145, 145,
+ 147, 147, 147, 191, 138, 510, 148, 148, 148, 140,
+
+ 238, 238, 191, 223, 223, 223, 145, 148, 220, 148,
+ 474, 155, 499, 294, 220, 220, 495, 287, 287, 287,
+ 493, 278, 148, 224, 224, 224, 278, 492, 148, 217,
+ 217, 217, 217, 278, 224, 287, 224, 339, 474, 490,
+ 487, 217, 217, 217, 485, 295, 295, 295, 217, 224,
+ 418, 418, 483, 339, 482, 224, 295, 295, 295, 481,
+ 480, 419, 362, 295, 419, 362, 467, 217, 418, 467,
+ 217, 460, 460, 217, 362, 362, 362, 217, 305, 359,
+ 359, 359, 359, 424, 424, 424, 305, 305, 305, 460,
+ 478, 359, 359, 359, 305, 305, 305, 305, 359, 462,
+
+ 462, 424, 463, 463, 477, 475, 305, 305, 305, 305,
+ 305, 305, 305, 370, 370, 370, 470, 462, 473, 470,
+ 463, 370, 370, 370, 370, 471, 466, 457, 415, 415,
+ 415, 415, 496, 496, 370, 370, 370, 370, 370, 370,
+ 415, 415, 415, 417, 417, 417, 417, 415, 456, 506,
+ 496, 420, 506, 455, 420, 417, 417, 417, 533, 453,
+ 452, 533, 417, 420, 420, 420, 421, 421, 421, 421,
+ 421, 459, 459, 464, 464, 464, 464, 464, 421, 421,
+ 421, 451, 459, 459, 459, 421, 429, 429, 429, 459,
+ 450, 449, 464, 448, 429, 429, 429, 429, 447, 498,
+
+ 498, 469, 469, 469, 469, 500, 500, 429, 429, 429,
+ 429, 429, 429, 469, 469, 469, 472, 498, 445, 472,
+ 469, 501, 501, 500, 502, 502, 502, 502, 472, 472,
+ 472, 444, 504, 504, 504, 504, 502, 502, 502, 501,
+ 505, 505, 442, 502, 504, 504, 504, 507, 441, 439,
+ 507, 504, 508, 438, 435, 508, 508, 434, 505, 507,
+ 507, 507, 509, 432, 508, 508, 508, 523, 523, 525,
+ 525, 509, 509, 509, 527, 527, 431, 526, 526, 529,
+ 529, 530, 530, 537, 537, 523, 430, 525, 526, 526,
+ 526, 428, 527, 539, 539, 526, 427, 529, 426, 530,
+
+ 425, 537, 541, 541, 542, 542, 545, 545, 547, 547,
+ 423, 539, 422, 414, 413, 412, 411, 409, 408, 406,
+ 541, 403, 542, 402, 545, 401, 547, 549, 549, 549,
+ 549, 549, 549, 549, 549, 550, 399, 550, 550, 550,
+ 550, 550, 550, 551, 551, 551, 551, 552, 552, 397,
+ 396, 552, 552, 553, 395, 553, 553, 553, 553, 553,
+ 553, 554, 554, 554, 554, 554, 554, 554, 554, 555,
+ 392, 555, 556, 556, 556, 556, 556, 556, 556, 556,
+ 557, 390, 557, 557, 557, 557, 557, 557, 558, 558,
+ 389, 558, 559, 387, 559, 560, 560, 560, 560, 560,
+
+ 560, 560, 560, 561, 561, 385, 561, 562, 384, 562,
+ 563, 383, 563, 564, 564, 381, 564, 565, 565, 565,
+ 565, 565, 565, 565, 565, 566, 566, 379, 566, 567,
+ 567, 567, 567, 567, 567, 567, 567, 568, 568, 378,
+ 568, 569, 569, 569, 569, 569, 569, 569, 569, 570,
+ 570, 570, 570, 570, 570, 570, 570, 571, 571, 571,
+ 571, 571, 571, 571, 571, 572, 572, 572, 572, 572,
+ 572, 572, 572, 573, 573, 573, 573, 573, 573, 573,
+ 573, 574, 574, 574, 574, 574, 574, 574, 574, 575,
+ 575, 575, 575, 575, 575, 575, 575, 377, 376, 375,
+
+ 374, 372, 369, 368, 367, 366, 365, 364, 363, 361,
+ 357, 355, 354, 352, 351, 350, 349, 348, 347, 346,
+ 345, 343, 342, 341, 340, 338, 337, 336, 335, 333,
+ 332, 331, 330, 328, 326, 325, 322, 321, 320, 319,
+ 317, 316, 315, 314, 313, 311, 310, 309, 308, 307,
+ 306, 303, 301, 299, 298, 297, 296, 292, 291, 290,
+ 289, 288, 286, 285, 284, 282, 280, 279, 277, 276,
+ 275, 274, 273, 272, 271, 270, 269, 268, 267, 266,
+ 265, 264, 263, 262, 261, 260, 259, 258, 256, 255,
+ 254, 253, 251, 250, 249, 248, 247, 246, 245, 243,
+
+ 242, 241, 240, 239, 237, 234, 233, 232, 230, 226,
+ 221, 216, 215, 214, 213, 212, 211, 210, 209, 208,
+ 207, 206, 205, 204, 203, 202, 201, 200, 198, 197,
+ 196, 195, 194, 193, 192, 189, 188, 187, 186, 185,
+ 184, 183, 182, 181, 180, 179, 178, 177, 176, 175,
+ 174, 173, 172, 171, 170, 169, 168, 167, 166, 164,
+ 163, 162, 161, 160, 158, 157, 156, 154, 153, 150,
+ 137, 135, 134, 129, 128, 127, 126, 125, 123, 118,
+ 117, 116, 115, 114, 112, 111, 110, 109, 108, 107,
+ 105, 104, 103, 101, 100, 99, 98, 97, 96, 95,
+
+ 92, 91, 90, 89, 87, 86, 85, 84, 83, 82,
+ 81, 80, 78, 77, 76, 75, 74, 73, 72, 71,
+ 70, 68, 50, 45, 34, 32, 30, 29, 24, 22,
+ 21, 19, 17, 16, 15, 9, 3, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548
} ;
@@ -1116,13 +1112,13 @@ tao_yy_match:
while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state )
{
tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state];
- if ( tao_yy_current_state >= 551 )
+ if ( tao_yy_current_state >= 549 )
tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c];
}
tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c];
++tao_yy_cp;
}
- while ( tao_yy_current_state != 550 );
+ while ( tao_yy_base[tao_yy_current_state] != 1038 );
tao_yy_find_action:
tao_yy_act = tao_yy_accept[tao_yy_current_state];
@@ -1972,7 +1968,7 @@ static tao_yy_state_type tao_yy_get_previous_state()
while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state )
{
tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state];
- if ( tao_yy_current_state >= 551 )
+ if ( tao_yy_current_state >= 549 )
tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c];
}
tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c];
@@ -2007,11 +2003,11 @@ tao_yy_state_type tao_yy_current_state;
while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state )
{
tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state];
- if ( tao_yy_current_state >= 551 )
+ if ( tao_yy_current_state >= 549 )
tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c];
}
tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c];
- tao_yy_is_jam = (tao_yy_current_state == 550);
+ tao_yy_is_jam = (tao_yy_current_state == 548);
return tao_yy_is_jam ? 0 : tao_yy_current_state;
}
@@ -3052,72 +3048,72 @@ idl_escape_reader(
{
if (str[0] != '\\')
{
- return str[0];
+ return str[0];
}
switch (str[1])
{
case 'n':
- return '\n';
+ return '\n';
case 't':
- return '\t';
+ return '\t';
case 'v':
- return '\v';
+ return '\v';
case 'b':
- return '\b';
+ return '\b';
case 'r':
- return '\r';
+ return '\r';
case 'f':
- return '\f';
+ return '\f';
case 'a':
- return '\a';
+ return '\a';
case '\\':
- return '\\';
+ return '\\';
case '\?':
- return '?';
+ return '?';
case '\'':
- return '\'';
+ return '\'';
case '"':
- return '"';
+ return '"';
case 'x':
- {
- int i;
+ {
+ int i;
- // hex value
- for (i = 2; str[i] != '\0' && isxdigit(str[i]); ++i)
+ // hex value
+ for (i = 2; str[i] != '\0' && isxdigit(str[i]); ++i)
{
- continue;
- }
-
- char save = str[i];
- str[i] = '\0';
- char out = (char)idl_atoui(&str[2], 16);
- str[i] = save;
- return out;
- }
- ACE_NOTREACHED (break;)
+ continue;
+ }
+
+ char save = str[i];
+ str[i] = '\0';
+ char out = (char)idl_atoui(&str[2], 16);
+ str[i] = save;
+ return out;
+ }
+ ACE_NOTREACHED (break;)
default:
- // check for octal value
- if (str[1] >= '0' && str[1] <= '7')
+ // check for octal value
+ if (str[1] >= '0' && str[1] <= '7')
{
- int i;
+ int i;
- for (i = 1; str[i] >= '0' && str[i] <= '7'; ++i)
+ for (i = 1; str[i] >= '0' && str[i] <= '7'; ++i)
{
- continue;
- }
-
- char save = str[i];
- str[i] = '\0';
- char out = (char)idl_atoui(&str[1], 8);
- str[i] = save;
- return out;
- }
+ continue;
+ }
+
+ char save = str[i];
+ str[i] = '\0';
+ char out = (char)idl_atoui(&str[1], 8);
+ str[i] = save;
+ return out;
+ }
else
{
- return str[1] - 'a';
- }
- ACE_NOTREACHED (break;)
+ return str[1] - 'a';
+ }
+ ACE_NOTREACHED (break;)
}
}
/*
diff --git a/TAO/TAO_IDL/fe/lex.yy.cpp.diff b/TAO/TAO_IDL/fe/lex.yy.cpp.diff
index 652a0a770c8..a15d85b93f6 100644
--- a/TAO/TAO_IDL/fe/lex.yy.cpp.diff
+++ b/TAO/TAO_IDL/fe/lex.yy.cpp.diff
@@ -1,3989 +1,140 @@
---- lex.yy.cpp.new 2004-08-27 21:34:13.000000000 -0500
-+++ lex.yy.cpp 2004-08-27 21:53:40.000000000 -0500
-@@ -1,369 +1,290 @@
--lex -L -t fe/idl.ll
--
--#line 3 "<stdout>"
--
--#define YY_INT_ALIGNED short int
--
- /* A lexical scanner generated by flex */
-
-+/* Scanner skeleton version:
-+ * $Id$
-+ */
-+
- #define FLEX_SCANNER
--#define YY_FLEX_MAJOR_VERSION 2
--#define YY_FLEX_MINOR_VERSION 5
--#define YY_FLEX_SUBMINOR_VERSION 31
--#if YY_FLEX_SUBMINOR_VERSION > 0
--#define FLEX_BETA
--#endif
-+#define TAO_YY_FLEX_MAJOR_VERSION 2
-+#define TAO_YY_FLEX_MINOR_VERSION 5
-
--/* First, we deal with platform-specific or compiler-specific issues. */
-
--/* begin standard C headers. */
--#include <stdio.h>
--#include <string.h>
--#include <errno.h>
--#include <stdlib.h>
-
--/* end standard C headers. */
-+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-+#ifdef c_plusplus
-+#ifndef __cplusplus
-+#define __cplusplus
-+#endif
-+#endif
-
--/* flex integer type definitions */
-
--#ifndef FLEXINT_H
--#define FLEXINT_H
-+#ifdef __cplusplus
-
--/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-+#include "ace/os_include/os_stdio.h"
-+#include "ace/os_include/os_ctype.h"
-
--#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
--#include <inttypes.h>
--typedef int8_t flex_int8_t;
--typedef uint8_t flex_uint8_t;
--typedef int16_t flex_int16_t;
--typedef uint16_t flex_uint16_t;
--typedef int32_t flex_int32_t;
--typedef uint32_t flex_uint32_t;
--#else
--typedef signed char flex_int8_t;
--typedef short int flex_int16_t;
--typedef int flex_int32_t;
--typedef unsigned char flex_uint8_t;
--typedef unsigned short int flex_uint16_t;
--typedef unsigned int flex_uint32_t;
--#endif /* ! C99 */
-+/* Use prototypes in function declarations. */
-+#define TAO_YY_USE_PROTOS
-
--/* Limits of integral types. */
--#ifndef INT8_MIN
--#define INT8_MIN (-128)
--#endif
--#ifndef INT16_MIN
--#define INT16_MIN (-32767-1)
--#endif
--#ifndef INT32_MIN
--#define INT32_MIN (-2147483647-1)
--#endif
--#ifndef INT8_MAX
--#define INT8_MAX (127)
--#endif
--#ifndef INT16_MAX
--#define INT16_MAX (32767)
--#endif
--#ifndef INT32_MAX
--#define INT32_MAX (2147483647)
--#endif
--#ifndef UINT8_MAX
--#define UINT8_MAX (255U)
--#endif
--#ifndef UINT16_MAX
--#define UINT16_MAX (65535U)
--#endif
--#ifndef UINT32_MAX
--#define UINT32_MAX (4294967295U)
--#endif
-+/* The "const" storage-class-modifier is valid. */
-+#define TAO_YY_USE_CONST
-
--#endif /* ! FLEXINT_H */
-+#else /* ! __cplusplus */
-
--#ifdef __cplusplus
-+#ifdef __STDC__
-
--/* The "const" storage-class-modifier is valid. */
--#define YY_USE_CONST
-+#define TAO_YY_USE_PROTOS
-+#define TAO_YY_USE_CONST
-
--#else /* ! __cplusplus */
-+#endif /* __STDC__ */
-+#endif /* ! __cplusplus */
+--- lex.yy.cpp Sat Jul 27 17:02:23 2002
++++ lex.yy.cpp.new Sat Jul 27 17:02:00 2002
+@@ -31,5 +28,5 @@
+ #else /* ! __cplusplus */
-#if __STDC__
-+#ifdef __TURBOC__
-+ #pragma warn -rch
-+ #pragma warn -use
-+#define TAO_YY_USE_CONST
-+#define TAO_YY_USE_PROTOS
-+#endif
-
--#define YY_USE_CONST
-+#ifdef TAO_YY_USE_CONST
-+#define tao_yyconst const
-+#else
-+#define tao_yyconst
-+#endif
-
--#endif /* __STDC__ */
--#endif /* ! __cplusplus */
-
--#ifdef YY_USE_CONST
--#define yyconst const
-+#ifdef TAO_YY_USE_PROTOS
-+#define TAO_YY_PROTO(proto) proto
- #else
--#define yyconst
-+#define TAO_YY_PROTO(proto) ()
- #endif
-
- /* Returned upon end-of-file. */
--#define YY_NULL 0
-+#define TAO_YY_NULL 0
-
- /* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index. If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
--#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-+#define TAO_YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
- /* Enter a start condition. This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
--#define BEGIN (yy_start) = 1 + 2 *
-+#define BEGIN tao_yy_start = 1 + 2 *
-
- /* Translate the current start state into a value that can be later handed
-- * to BEGIN to return to the state. The YYSTATE alias is for lex
-+ * to BEGIN to return to the state. The TAO_YYSTATE alias is for lex
- * compatibility.
- */
--#define YY_START (((yy_start) - 1) / 2)
--#define YYSTATE YY_START
-+#define TAO_YY_START ((tao_yy_start - 1) / 2)
-+#define TAO_YYSTATE TAO_YY_START
-
- /* Action number for EOF rule of a given start state. */
--#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-+#define TAO_YY_STATE_EOF(state) (TAO_YY_END_OF_BUFFER + state + 1)
-
- /* Special action meaning "start processing a new file". */
--#define YY_NEW_FILE yyrestart(yyin )
-+#define TAO_YY_NEW_FILE tao_yyrestart( tao_yyin )
-
--#define YY_END_OF_BUFFER_CHAR 0
-+#define TAO_YY_END_OF_BUFFER_CHAR 0
-
- /* Size of default input buffer. */
--#ifndef YY_BUF_SIZE
--#define YY_BUF_SIZE 16384
--#endif
--
--#ifndef YY_TYPEDEF_YY_BUFFER_STATE
--#define YY_TYPEDEF_YY_BUFFER_STATE
--typedef struct yy_buffer_state *YY_BUFFER_STATE;
--#endif
-+#define TAO_YY_BUF_SIZE 16384
-
--extern int yyleng;
-+typedef struct tao_yy_buffer_state *TAO_YY_BUFFER_STATE;
-
--extern FILE *yyin, *yyout;
-+extern int tao_yyleng;
-+extern FILE *tao_yyin, *tao_yyout;
-
- #define EOB_ACT_CONTINUE_SCAN 0
- #define EOB_ACT_END_OF_FILE 1
- #define EOB_ACT_LAST_MATCH 2
-
-- #define YY_LESS_LINENO(n)
--
--/* Return all but the first "n" matched characters back to the input stream. */
--#define yyless(n) \
-- do \
-- { \
-- /* Undo effects of setting up yytext. */ \
-- int yyless_macro_arg = (n); \
-- YY_LESS_LINENO(yyless_macro_arg);\
-- *yy_cp = (yy_hold_char); \
-- YY_RESTORE_YY_MORE_OFFSET \
-- (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-- } \
-- while ( 0 )
-+/* The funky do-while in the following #define is used to turn the definition
-+ * int a single C statement (which needs a semi-colon terminator). This
-+ * avoids problems with code like:
-+ *
-+ * if ( condition_holds )
-+ * tao_yyless( 5 );
-+ * else
-+ * do_something_else();
-+ *
-+ * Prior to using the do-while the compiler would get upset at the
-+ * "else" because it interpreted the "if" statement as being all
-+ * done when it reached the ';' after the tao_yyless() call.
-+ */
-+
-+/* Return all but the first 'n' matched characters back to the input stream. */
-+
-+#define tao_yyless(n) \
-+ do \
-+ { \
-+ /* Undo effects of setting up tao_yytext. */ \
-+ *tao_yy_cp = tao_yy_hold_char; \
-+ TAO_YY_RESTORE_TAO_YY_MORE_OFFSET \
-+ tao_yy_c_buf_p = tao_yy_cp = tao_yy_bp + n - TAO_YY_MORE_ADJ; \
-+ TAO_YY_DO_BEFORE_ACTION; /* set up tao_yytext again */ \
-+ } \
-+ while ( 0 )
-
--#define unput(c) yyunput( c, (yytext_ptr) )
-+#define unput(c) tao_yyunput( c, tao_yytext_ptr )
-
- /* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-+typedef unsigned int tao_yy_size_t;
-
--#ifndef YY_TYPEDEF_YY_SIZE_T
--#define YY_TYPEDEF_YY_SIZE_T
--typedef unsigned int yy_size_t;
--#endif
--
--#ifndef YY_STRUCT_YY_BUFFER_STATE
--#define YY_STRUCT_YY_BUFFER_STATE
--struct yy_buffer_state
-- {
-- FILE *yy_input_file;
--
-- char *yy_ch_buf; /* input buffer */
-- char *yy_buf_pos; /* current position in input buffer */
--
-- /* Size of input buffer in bytes, not including room for EOB
-- * characters.
-- */
-- yy_size_t yy_buf_size;
--
-- /* Number of characters read into yy_ch_buf, not including EOB
-- * characters.
-- */
-- int yy_n_chars;
--
-- /* Whether we "own" the buffer - i.e., we know we created it,
-- * and can realloc() it to grow it, and should free() it to
-- * delete it.
-- */
-- int yy_is_our_buffer;
--
-- /* Whether this is an "interactive" input source; if so, and
-- * if we're using stdio for input, then we want to use getc()
-- * instead of fread(), to make sure we stop fetching input after
-- * each newline.
-- */
-- int yy_is_interactive;
--
-- /* Whether we're considered to be at the beginning of a line.
-- * If so, '^' rules will be active on the next match, otherwise
-- * not.
-- */
-- int yy_at_bol;
--
-- int yy_bs_lineno; /**< The line count. */
-- int yy_bs_column; /**< The column count. */
--
-- /* Whether to try to fill the input buffer when we reach the
-- * end of it.
-- */
-- int yy_fill_buffer;
--
-- int yy_buffer_status;
--
--#define YY_BUFFER_NEW 0
--#define YY_BUFFER_NORMAL 1
-- /* When an EOF's been seen but there's still some text to process
-- * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-- * shouldn't try reading from the input source any more. We might
-- * still have a bunch of tokens to match, though, because of
-- * possible backing-up.
-- *
-- * When we actually see the EOF, we change the status to "new"
-- * (via yyrestart()), so that the user can continue scanning by
-- * just pointing yyin at a new input file.
-- */
--#define YY_BUFFER_EOF_PENDING 2
--
-- };
--#endif /* !YY_STRUCT_YY_BUFFER_STATE */
--
--/* Stack of input buffers. */
--static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
--static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
--static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
--/* We provide macros for accessing buffer states in case in the
-- * future we want to put the buffer states in a more general
-- * "scanner state".
-- *
-- * Returns the top of the stack, or NULL.
-- */
--#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-- ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-- : NULL)
-+struct tao_yy_buffer_state
-+ {
-+ FILE *tao_yy_input_file;
-
--/* Same as previous macro, but useful when we know that the buffer stack is not
-- * NULL or when we need an lvalue. For internal use only.
-- */
--#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-+ char *tao_yy_ch_buf; /* input buffer */
-+ char *tao_yy_buf_pos; /* current position in input buffer */
-
--/* yy_hold_char holds the character lost when yytext is formed. */
--static char yy_hold_char;
--static int yy_n_chars; /* number of characters read into yy_ch_buf */
--int yyleng;
-+ /* Size of input buffer in bytes, not including room for EOB
-+ * characters.
-+ */
-+ tao_yy_size_t tao_yy_buf_size;
-
--/* Points to current character in buffer. */
--static char *yy_c_buf_p = (char *) 0;
--static int yy_init = 1; /* whether we need to initialize */
--static int yy_start = 0; /* start state number */
-+ /* Number of characters read into tao_yy_ch_buf, not including EOB
-+ * characters.
-+ */
-+ int tao_yy_n_chars;
-+
-+ /* Whether we "own" the buffer - i.e., we know we created it,
-+ * and can realloc() it to grow it, and should free() it to
-+ * delete it.
-+ */
-+ int tao_yy_is_our_buffer;
-+
-+ /* Whether this is an "interactive" input source; if so, and
-+ * if we're using stdio for input, then we want to use getc()
-+ * instead of fread(), to make sure we stop fetching input after
-+ * each newline.
-+ */
-+ int tao_yy_is_interactive;
-+
-+ /* Whether we're considered to be at the beginning of a line.
-+ * If so, '^' rules will be active on the next match, otherwise
-+ * not.
-+ */
-+ int tao_yy_at_bol;
-+
-+ /* Whether to try to fill the input buffer when we reach the
-+ * end of it.
-+ */
-+ int tao_yy_fill_buffer;
-+
-+ int tao_yy_buffer_status;
-+#define TAO_YY_BUFFER_NEW 0
-+#define TAO_YY_BUFFER_NORMAL 1
-+ /* When an EOF's been seen but there's still some text to process
-+ * then we mark the buffer as TAO_YY_EOF_PENDING, to indicate that we
-+ * shouldn't try reading from the input source any more. We might
-+ * still have a bunch of tokens to match, though, because of
-+ * possible backing-up.
-+ *
-+ * When we actually see the EOF, we change the status to "new"
-+ * (via tao_yyrestart()), so that the user can continue scanning by
-+ * just pointing tao_yyin at a new input file.
-+ */
-+#define TAO_YY_BUFFER_EOF_PENDING 2
-+ };
-
--/* Flag which is used to allow yywrap()'s to do buffer switches
-- * instead of setting up a fresh yyin. A bit of a hack ...
-+static TAO_YY_BUFFER_STATE tao_yy_current_buffer = 0;
-+
-+/* We provide macros for accessing buffer states in case in the
-+ * future we want to put the buffer states in a more general
-+ * "scanner state".
- */
--static int yy_did_buffer_switch_on_eof;
-+#define TAO_YY_CURRENT_BUFFER tao_yy_current_buffer
-
--void yyrestart (FILE *input_file );
--void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
--YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
--void yy_delete_buffer (YY_BUFFER_STATE b );
--void yy_flush_buffer (YY_BUFFER_STATE b );
--void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
--void yypop_buffer_state (void );
-
--static void yyensure_buffer_stack (void );
--static void yy_load_buffer_state (void );
--static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
-+/* tao_yy_hold_char holds the character lost when tao_yytext is formed. */
-+static char tao_yy_hold_char;
-
--#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
-+static int tao_yy_n_chars; /* number of characters read into tao_yy_ch_buf */
-
--YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
--YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
--YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
-
--void *yyalloc (yy_size_t );
--void *yyrealloc (void *,yy_size_t );
--void yyfree (void * );
-+int tao_yyleng;
-
--#define yy_new_buffer yy_create_buffer
-+/* Points to current character in buffer. */
-+static char *tao_yy_c_buf_p = (char *) 0;
-+static int tao_yy_init = 1; /* whether we need to initialize */
-+static int tao_yy_start = 0; /* start state number */
-
--#define yy_set_interactive(is_interactive) \
-- { \
-- if ( ! YY_CURRENT_BUFFER ){ \
-- yyensure_buffer_stack (); \
-- YY_CURRENT_BUFFER_LVALUE = \
-- yy_create_buffer(yyin,YY_BUF_SIZE ); \
-- } \
-- YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-- }
-+/* Flag which is used to allow tao_yywrap()'s to do buffer switches
-+ * instead of setting up a fresh tao_yyin. A bit of a hack ...
-+ */
-+static int tao_yy_did_buffer_switch_on_eof;
-
--#define yy_set_bol(at_bol) \
-- { \
-- if ( ! YY_CURRENT_BUFFER ){\
-- yyensure_buffer_stack (); \
-- YY_CURRENT_BUFFER_LVALUE = \
-- yy_create_buffer(yyin,YY_BUF_SIZE ); \
-- } \
-- YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-- }
-+void tao_yyrestart TAO_YY_PROTO(( FILE *input_file ));
-
--#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-+void tao_yy_switch_to_buffer TAO_YY_PROTO(( TAO_YY_BUFFER_STATE new_buffer ));
-+void tao_yy_load_buffer_state TAO_YY_PROTO(( void ));
-+TAO_YY_BUFFER_STATE tao_yy_create_buffer TAO_YY_PROTO(( FILE *file, int size ));
-+void tao_yy_delete_buffer TAO_YY_PROTO(( TAO_YY_BUFFER_STATE b ));
-+void tao_yy_init_buffer TAO_YY_PROTO(( TAO_YY_BUFFER_STATE b, FILE *file ));
-+void tao_yy_flush_buffer TAO_YY_PROTO(( TAO_YY_BUFFER_STATE b ));
-+#define TAO_YY_FLUSH_BUFFER tao_yy_flush_buffer( tao_yy_current_buffer )
-
--/* Begin user sect3 */
-+TAO_YY_BUFFER_STATE tao_yy_scan_buffer TAO_YY_PROTO(( char *base, tao_yy_size_t size ));
-+TAO_YY_BUFFER_STATE tao_yy_scan_string TAO_YY_PROTO(( tao_yyconst char *tao_yy_str ));
-+TAO_YY_BUFFER_STATE tao_yy_scan_bytes TAO_YY_PROTO(( tao_yyconst char *bytes, int len ));
-
--typedef unsigned char YY_CHAR;
-+static void *tao_yy_flex_alloc TAO_YY_PROTO(( tao_yy_size_t ));
-+static void *tao_yy_flex_realloc TAO_YY_PROTO(( void *, tao_yy_size_t ));
-+static void tao_yy_flex_free TAO_YY_PROTO(( void * ));
-
--FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-+#define tao_yy_new_buffer tao_yy_create_buffer
-
--typedef int yy_state_type;
-+#define tao_yy_set_interactive(is_interactive) \
-+ { \
-+ if ( ! tao_yy_current_buffer ) \
-+ tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); \
-+ tao_yy_current_buffer->tao_yy_is_interactive = is_interactive; \
-+ }
-
--extern int yylineno;
-+#define tao_yy_set_bol(at_bol) \
-+ { \
-+ if ( ! tao_yy_current_buffer ) \
-+ tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); \
-+ tao_yy_current_buffer->tao_yy_at_bol = at_bol; \
-+ }
-+
-+#define TAO_YY_AT_BOL() (tao_yy_current_buffer->tao_yy_at_bol)
-
--int yylineno = 1;
-+typedef unsigned char TAO_YY_CHAR;
-+FILE *tao_yyin = (FILE *) 0, *tao_yyout = (FILE *) 0;
-+typedef int tao_yy_state_type;
-+extern char tao_yytext[];
-
--extern char yytext[];
-
--static yy_state_type yy_get_previous_state (void );
--static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
--static int yy_get_next_buffer (void );
--static void yy_fatal_error (yyconst char msg[] );
-+static tao_yy_state_type tao_yy_get_previous_state TAO_YY_PROTO(( void ));
-+static tao_yy_state_type tao_yy_try_NUL_trans TAO_YY_PROTO(( tao_yy_state_type current_state ));
-+static int tao_yy_get_next_buffer TAO_YY_PROTO(( void ));
-+static void tao_yy_fatal_error TAO_YY_PROTO(( tao_yyconst char msg[] ));
-
- /* Done after the current pattern has been matched and before the
-- * corresponding action - sets up yytext.
-+ * corresponding action - sets up tao_yytext.
- */
--#define YY_DO_BEFORE_ACTION \
-- (yytext_ptr) = yy_bp; \
-- yyleng = (size_t) (yy_cp - yy_bp); \
-- (yy_hold_char) = *yy_cp; \
-- *yy_cp = '\0'; \
-- if ( yyleng >= YYLMAX ) \
-- YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
-- yy_flex_strncpy( yytext, (yytext_ptr), yyleng + 1 ); \
-- (yy_c_buf_p) = yy_cp;
--
--#define YY_NUM_RULES 104
--#define YY_END_OF_BUFFER 105
--/* This struct is not used in this scanner,
-- but its presence is necessary. */
--struct yy_trans_info
-- {
-- flex_int32_t yy_verify;
-- flex_int32_t yy_nxt;
-- };
--static yyconst flex_int16_t yy_accept[551] =
-+#define TAO_YY_DO_BEFORE_ACTION \
-+ tao_yytext_ptr = tao_yy_bp; \
-+ tao_yyleng = (int) (tao_yy_cp - tao_yy_bp); \
-+ tao_yy_hold_char = *tao_yy_cp; \
-+ *tao_yy_cp = '\0'; \
-+ if ( tao_yyleng >= TAO_YYLMAX ) \
-+ TAO_YY_FATAL_ERROR( "token too large, exceeds TAO_YYLMAX" ); \
-+ tao_yy_flex_strncpy( tao_yytext, tao_yytext_ptr, tao_yyleng + 1 ); \
-+ tao_yy_c_buf_p = tao_yy_cp;
-+
-+#define TAO_YY_NUM_RULES 104
-+#define TAO_YY_END_OF_BUFFER 105
-+static tao_yyconst short int tao_yy_accept[551] =
- { 0,
- 101, 101, 105, 103, 101, 102, 102, 103, 103, 103,
- 103, 103, 76, 72, 103, 103, 103, 68, 68, 68,
-@@ -427,7 +348,7 @@
- 98, 0, 0, 0, 40, 94, 0, 86, 86, 0
- } ;
-
--static yyconst flex_int32_t yy_ec[256] =
-+static tao_yyconst int tao_yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
-@@ -459,7 +380,7 @@
- 1, 1, 1, 1, 1
- } ;
-
--static yyconst flex_int32_t yy_meta[60] =
-+static tao_yyconst int tao_yy_meta[60] =
- { 0,
- 1, 1, 2, 1, 1, 3, 1, 4, 1, 1,
- 1, 1, 1, 5, 5, 5, 1, 1, 1, 1,
-@@ -469,7 +390,7 @@
- 6, 8, 6, 8, 6, 8, 6, 8, 6
- } ;
-
--static yyconst flex_int16_t yy_base[578] =
-+static tao_yyconst short int tao_yy_base[578] =
- { 0,
- 0, 58, 1044, 1045, 59, 1045, 1045, 56, 1009, 54,
- 57, 65, 68, 73, 1025, 1023, 1020, 0, 1017, 69,
-@@ -536,7 +457,7 @@
- 739, 747, 755, 763, 771, 779, 787
- } ;
-
--static yyconst flex_int16_t yy_def[578] =
-+static tao_yyconst short int tao_yy_def[578] =
- { 0,
- 550, 1, 550, 550, 550, 550, 550, 551, 552, 550,
- 550, 550, 550, 550, 550, 550, 550, 553, 553, 553,
-@@ -603,7 +524,7 @@
- 550, 550, 550, 550, 550, 550, 550
- } ;
-
--static yyconst flex_int16_t yy_nxt[1105] =
-+static tao_yyconst short int tao_yy_nxt[1105] =
- { 0,
- 4, 5, 6, 7, 5, 8, 4, 9, 4, 4,
- 10, 11, 12, 13, 14, 14, 15, 16, 4, 17,
-@@ -727,9 +648,10 @@
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
-
- 550, 550, 550, 550
-+
- } ;
-
--static yyconst flex_int16_t yy_chk[1105] =
-+static tao_yyconst short int tao_yy_chk[1105] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-@@ -853,28 +775,27 @@
- 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
-
- 550, 550, 550, 550
-- } ;
-
--static yy_state_type yy_last_accepting_state;
--static char *yy_last_accepting_cpos;
-+ } ;
-
--extern int yy_flex_debug;
--int yy_flex_debug = 0;
-+static tao_yy_state_type tao_yy_last_accepting_state;
-+static char *tao_yy_last_accepting_cpos;
-
- /* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
- #define REJECT reject_used_but_not_detected
--#define yymore() yymore_used_but_not_detected
--#define YY_MORE_ADJ 0
--#define YY_RESTORE_YY_MORE_OFFSET
--#ifndef YYLMAX
--#define YYLMAX 8192
-+#define tao_yymore() tao_yymore_used_but_not_detected
-+#define TAO_YY_MORE_ADJ 0
-+#define TAO_YY_RESTORE_TAO_YY_MORE_OFFSET
-+#ifndef TAO_YYLMAX
-+#define TAO_YYLMAX 8192
- #endif
-
--char yytext[YYLMAX];
--char *yytext_ptr;
--/* $Id$
-+char tao_yytext[TAO_YYLMAX];
-+char *tao_yytext_ptr;
-+#define INITIAL 0
-+/* $Id$
-
- COPYRIGHT
-
-@@ -953,6 +874,7 @@
- #include "ast_expression.h"
- #include "ast_argument.h"
- #include "ast_operation.h"
-+#include "ast_root.h"
- #include "fe_interface_header.h"
- #include "global_extern.h"
- #include "fe_private.h"
-@@ -964,533 +886,541 @@
- static char idl_escape_reader (char *);
- static double idl_atof (char *);
- static long idl_atoi (char *, long);
--static ACE_UINT64 idl_atoui (char *, long);
--static void idl_parse_line_and_file (char *);
--static void idl_store_pragma (char *);
-+static ACE_UINT64 idl_atoui (char *, long);
-+static void idl_parse_line_and_file (char *);
-+static void idl_store_pragma (char *);
- static char * idl_get_pragma_string (char *);
- static idl_bool idl_valid_version (char *);
- static AST_Decl * idl_find_node (char *);
-
- #if 0 /* defined (HPUX) */
--// HPUX has yytext typed to unsigned char *. We make sure here that
--// we'll always use char * static char* __yytext = (char*) yytext;
--// NOTE: This will not work under flex(1) were yytext is not a fixed
-+// HPUX has tao_yytext typed to unsigned char *. We make sure here that
-+// we'll always use char * static char* __tao_yytext = (char*) tao_yytext;
-+// NOTE: This will not work under flex(1) were tao_yytext is not a fixed
- // buffer, but a dynamically allocated one. This function should do
- // the trick for us.
--inline char *__yytext()
-+inline char *__tao_yytext()
- {
-- return (char *) yytext;
-+ return (char *) tao_yytext;
- }
--#define ace_yytext __yytext()
-+#define ace_tao_yytext __tao_yytext()
- #else
--#define ace_yytext yytext
-+#define ace_tao_yytext tao_yytext
- #endif /* 0 */
-
- /* SO we don't choke on files that use \r\n */
--
--#define INITIAL 0
--
--#ifndef YY_NO_UNISTD_H
--/* Special case for "unistd.h", since it is non-ANSI. We include it way
-- * down here because we want the user's section 1 to have been scanned first.
-- * The user has a chance to override it with an option.
-- */
--#include <unistd.h>
--#endif
--
--#ifndef YY_EXTRA_TYPE
--#define YY_EXTRA_TYPE void *
--#endif
-+#define TAO_YY_NEVER_INTERACTIVE 1
-
- /* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
--#ifndef YY_SKIP_YYWRAP
-+#ifndef TAO_YY_SKIP_TAO_YYWRAP
- #ifdef __cplusplus
--extern "C" int yywrap (void );
-+extern "C" int tao_yywrap TAO_YY_PROTO(( void ));
- #else
--extern int yywrap (void );
-+extern int tao_yywrap TAO_YY_PROTO(( void ));
- #endif
- #endif
-
-- static void yyunput (int c,char *buf_ptr );
--
--#ifndef yytext_ptr
--static void yy_flex_strncpy (char *,yyconst char *,int );
-+#ifndef TAO_YY_NO_UNPUT
-+static void tao_yyunput TAO_YY_PROTO(( int c, char *buf_ptr ));
- #endif
++#ifdef __STDC__
--#ifdef YY_NEED_STRLEN
--static int yy_flex_strlen (yyconst char * );
-+#ifndef tao_yytext_ptr
-+static void tao_yy_flex_strncpy TAO_YY_PROTO(( char *, tao_yyconst char *, int ));
- #endif
-
--#ifndef YY_NO_INPUT
-+#ifdef TAO_YY_NEED_STRLEN
-+static int tao_yy_flex_strlen TAO_YY_PROTO(( tao_yyconst char * ));
-+#endif
-
-+#ifndef TAO_YY_NO_INPUT
- #ifdef __cplusplus
--static int yyinput (void );
-+static int tao_yyinput TAO_YY_PROTO(( void ));
- #else
--static int input (void );
-+static int input TAO_YY_PROTO(( void ));
-+#endif
+ #define TAO_YY_USE_PROTOS
+@@ -968,5 +965,5 @@
#endif
+-#if TAO_YY_STACK_USED
+#ifdef TAO_YY_STACK_USED
-+static int tao_yy_start_stack_ptr = 0;
-+static int tao_yy_start_stack_depth = 0;
-+static int *tao_yy_start_stack = 0;
-+#ifndef TAO_YY_NO_PUSH_STATE
-+static void tao_yy_push_state TAO_YY_PROTO(( int new_state ));
-+#endif
-+#ifndef TAO_YY_NO_POP_STATE
-+static void tao_yy_pop_state TAO_YY_PROTO(( void ));
-+#endif
-+#ifndef TAO_YY_NO_TOP_STATE
-+static int tao_yy_top_state TAO_YY_PROTO(( void ));
-+#endif
-+
-+#else
-+#define TAO_YY_NO_PUSH_STATE 1
-+#define TAO_YY_NO_POP_STATE 1
-+#define TAO_YY_NO_TOP_STATE 1
-+#endif
-+
-+#ifdef TAO_YY_MALLOC_DECL
-+TAO_YY_MALLOC_DECL
-+#else
+ static int tao_yy_start_stack_ptr = 0;
+ static int tao_yy_start_stack_depth = 0;
+@@ -991,5 +988,5 @@
+ TAO_YY_MALLOC_DECL
+ #else
+-#if __STDC__
+#ifdef __STDC__
-+#ifndef __cplusplus
-+#endif
-+#else
-+/* Just try to get by without declaring the routines. This will fail
-+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
-+ * or sizeof(void*) != sizeof(int).
-+ */
-+#endif
- #endif
-
- /* Amount of stuff to slurp up with each read. */
--#ifndef YY_READ_BUF_SIZE
--#define YY_READ_BUF_SIZE 8192
-+#ifndef TAO_YY_READ_BUF_SIZE
-+#define TAO_YY_READ_BUF_SIZE 8192
- #endif
-
- /* Copy whatever the last rule matched to the standard output. */
--#ifndef ECHO
-+
-+#ifndef TAO_YY_ECHO
- /* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
--#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-+#define TAO_YY_ECHO (void) fwrite( tao_yytext, tao_yyleng, 1, tao_yyout )
- #endif
-
--/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
-+/* Gets input and stuffs it into "buf". number of characters read, or TAO_YY_NULL,
- * is returned in "result".
- */
--#ifndef YY_INPUT
--#define YY_INPUT(buf,result,max_size) \
-- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-- { \
-- int c = '*'; \
-- size_t n; \
-- for ( n = 0; n < max_size && \
-- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-- buf[n] = (char) c; \
-- if ( c == '\n' ) \
-- buf[n++] = (char) c; \
-- if ( c == EOF && ferror( yyin ) ) \
-- YY_FATAL_ERROR( "input in flex scanner failed" ); \
-- result = n; \
-- } \
-- else \
-- { \
-- errno=0; \
-- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-- { \
-- if( errno != EINTR) \
-- { \
-- YY_FATAL_ERROR( "input in flex scanner failed" ); \
-- break; \
-- } \
-- errno=0; \
-- clearerr(yyin); \
-- } \
-- }\
--\
--
-+#ifndef TAO_YY_INPUT
-+#define TAO_YY_INPUT(buf,result,max_size) \
-+ if ( tao_yy_current_buffer->tao_yy_is_interactive ) \
-+ { \
-+ int c = '*', n; \
-+ for ( n = 0; n < max_size && \
-+ (c = getc( tao_yyin )) != EOF && c != '\n'; ++n ) \
-+ buf[n] = (char) c; \
-+ if ( c == '\n' ) \
-+ buf[n++] = (char) c; \
-+ if ( c == EOF && ferror( tao_yyin ) ) \
-+ TAO_YY_FATAL_ERROR( "input in flex scanner failed" ); \
-+ result = n; \
-+ } \
-+ else if ( ((result = static_cast<int> ( \
-+ fread( buf, 1, max_size, tao_yyin ))) == 0) \
-+ && ferror( tao_yyin ) ) \
-+ TAO_YY_FATAL_ERROR( "input in flex scanner failed" );
- #endif
-
--/* No semi-colon after return; correct usage is to write "yyterminate();" -
-+/* No semi-colon after return; correct usage is to write "tao_yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
--#ifndef yyterminate
--#define yyterminate() return YY_NULL
-+#ifndef tao_yyterminate
-+#define tao_yyterminate() return TAO_YY_NULL
- #endif
-
- /* Number of entries by which start-condition stack grows. */
--#ifndef YY_START_STACK_INCR
--#define YY_START_STACK_INCR 25
-+#ifndef TAO_YY_START_STACK_INCR
-+#define TAO_YY_START_STACK_INCR 25
- #endif
-
- /* Report a fatal error. */
--#ifndef YY_FATAL_ERROR
--#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-+#ifndef TAO_YY_FATAL_ERROR
-+#define TAO_YY_FATAL_ERROR(msg) tao_yy_fatal_error( msg )
- #endif
-
--/* end tables serialization structures and prototypes */
--
- /* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
--#ifndef YY_DECL
--#define YY_DECL_IS_OURS 1
--
--extern int yylex (void);
--
--#define YY_DECL int yylex (void)
--#endif /* !YY_DECL */
-+#ifndef TAO_YY_DECL
-+#define TAO_YY_DECL int tao_yylex TAO_YY_PROTO(( void ))
-+#endif
-
--/* Code executed at the beginning of each rule, after yytext and yyleng
-+/* Code executed at the beginning of each rule, after tao_yytext and tao_yyleng
- * have been set up.
- */
--#ifndef YY_USER_ACTION
--#define YY_USER_ACTION
-+#ifndef TAO_YY_USER_ACTION
-+#define TAO_YY_USER_ACTION
+ #ifndef __cplusplus
#endif
-
+@@ -1072,5 +1069,5 @@
/* Code executed at the end of each rule. */
--#ifndef YY_BREAK
--#define YY_BREAK break;
-+#ifndef TAO_YY_BREAK
+ #ifndef TAO_YY_BREAK
+-#define TAO_YY_BREAK break;
+#define TAO_YY_BREAK ACE_NOTREACHED (break;)
-+#endif
-+
-+#define TAO_YY_RULE_SETUP \
-+ if ( tao_yyleng > 0 ) \
-+ tao_yy_current_buffer->tao_yy_at_bol = \
-+ (tao_yytext[tao_yyleng - 1] == '\n'); \
-+ TAO_YY_USER_ACTION
-+
-+TAO_YY_DECL
-+ {
-+ register tao_yy_state_type tao_yy_current_state;
-+ register char *tao_yy_cp = 0, *tao_yy_bp = 0;
-+ register int tao_yy_act;
-+
-+
-+
-+
-+ if ( tao_yy_init )
-+ {
-+ tao_yy_init = 0;
-+
-+#ifdef TAO_YY_USER_INIT
-+ TAO_YY_USER_INIT;
#endif
--#define YY_RULE_SETUP \
-- if ( yyleng > 0 ) \
-- YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
-- (yytext[yyleng - 1] == '\n'); \
-- YY_USER_ACTION
--
--/** The main scanner function which does all the work.
-- */
--YY_DECL
--{
-- register yy_state_type yy_current_state;
-- register char *yy_cp, *yy_bp;
-- register int yy_act;
--
-- if ( (yy_init) )
-- {
-- (yy_init) = 0;
--
--#ifdef YY_USER_INIT
-- YY_USER_INIT;
--#endif
--
-- if ( ! (yy_start) )
-- (yy_start) = 1; /* first start state */
--
-- if ( ! yyin )
-- yyin = stdin;
--
-- if ( ! yyout )
-- yyout = stdout;
--
-- if ( ! YY_CURRENT_BUFFER ) {
-- yyensure_buffer_stack ();
-- YY_CURRENT_BUFFER_LVALUE =
-- yy_create_buffer(yyin,YY_BUF_SIZE );
-- }
--
-- yy_load_buffer_state( );
-- }
--
-- while ( 1 ) /* loops until end-of-file is reached */
-- {
-- yy_cp = (yy_c_buf_p);
--
-- /* Support of yytext. */
-- *yy_cp = (yy_hold_char);
--
-- /* yy_bp points to the position in yy_ch_buf of the start of
-- * the current run.
-- */
-- yy_bp = yy_cp;
--
-- yy_current_state = (yy_start);
-- yy_current_state += YY_AT_BOL();
--yy_match:
-- do
-- {
-- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-- if ( yy_accept[yy_current_state] )
-- {
-- (yy_last_accepting_state) = yy_current_state;
-- (yy_last_accepting_cpos) = yy_cp;
-- }
-- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-- {
-- yy_current_state = (int) yy_def[yy_current_state];
-- if ( yy_current_state >= 551 )
-- yy_c = yy_meta[(unsigned int) yy_c];
-- }
-- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-- ++yy_cp;
-- }
-- while ( yy_current_state != 550 );
-- yy_cp = (yy_last_accepting_cpos);
-- yy_current_state = (yy_last_accepting_state);
--
--yy_find_action:
-- yy_act = yy_accept[yy_current_state];
--
-- YY_DO_BEFORE_ACTION;
--
--do_action: /* This label is used only to access EOF actions. */
--
-- switch ( yy_act )
-- { /* beginning of action switch */
-- case 0: /* must back up */
-- /* undo the effects of YY_DO_BEFORE_ACTION */
-- *yy_cp = (yy_hold_char);
-- yy_cp = (yy_last_accepting_cpos);
-- yy_current_state = (yy_last_accepting_state);
-- goto yy_find_action;
-+ if ( ! tao_yy_start )
-+ tao_yy_start = 1; /* first start state */
-+
-+ if ( ! tao_yyin )
-+ tao_yyin = stdin;
-+
-+ if ( ! tao_yyout )
-+ tao_yyout = stdout;
-+
-+ if ( ! tao_yy_current_buffer )
-+ tao_yy_current_buffer =
-+ tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE );
-+
-+ tao_yy_load_buffer_state();
-+ }
-+
-+ while ( 1 ) /* loops until end-of-file is reached */
-+ {
-+ tao_yy_cp = tao_yy_c_buf_p;
-+
-+ /* Support of tao_yytext. */
-+ *tao_yy_cp = tao_yy_hold_char;
-+
-+ /* tao_yy_bp points to the position in tao_yy_ch_buf of the start of
-+ * the current run.
-+ */
-+ tao_yy_bp = tao_yy_cp;
-+
-+ tao_yy_current_state = tao_yy_start;
-+ tao_yy_current_state += TAO_YY_AT_BOL();
-+tao_yy_match:
-+ do
-+ {
-+ register TAO_YY_CHAR tao_yy_c = tao_yy_ec[TAO_YY_SC_TO_UI(*tao_yy_cp)];
-+ if ( tao_yy_accept[tao_yy_current_state] )
-+ {
-+ tao_yy_last_accepting_state = tao_yy_current_state;
-+ tao_yy_last_accepting_cpos = tao_yy_cp;
-+ }
-+ while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state )
-+ {
-+ tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state];
-+ if ( tao_yy_current_state >= 551 )
-+ tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c];
-+ }
-+ tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c];
-+ ++tao_yy_cp;
-+ }
-+ while ( tao_yy_current_state != 550 );
-+
-+tao_yy_find_action:
-+ tao_yy_act = tao_yy_accept[tao_yy_current_state];
-+ if ( tao_yy_act == 0 )
-+ { /* have to back up */
-+ tao_yy_cp = tao_yy_last_accepting_cpos;
-+ tao_yy_current_state = tao_yy_last_accepting_state;
-+ tao_yy_act = tao_yy_accept[tao_yy_current_state];
-+ }
-+
-+ TAO_YY_DO_BEFORE_ACTION;
-+
-+
-+do_action: /* This label is used only to access EOF actions. */
-+
-+
-+ switch ( tao_yy_act )
-+ { /* beginning of action switch */
-+ case 0: /* must back up */
-+ /* undo the effects of TAO_YY_DO_BEFORE_ACTION */
-+ *tao_yy_cp = tao_yy_hold_char;
-+ tao_yy_cp = tao_yy_last_accepting_cpos;
-+ tao_yy_current_state = tao_yy_last_accepting_state;
-+ goto tao_yy_find_action;
-
- case 1:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_ANY;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 2:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_OBJECT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 3:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_MODULE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 4:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_RAISES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 5:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_READONLY;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 6:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_ATTRIBUTE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 7:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_EXCEPTION;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 8:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_CONTEXT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 9:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_INTERFACE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 10:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_CONST;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 11:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_TYPEDEF;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 12:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_STRUCT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 13:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_ENUM;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 14:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_STRING;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 15:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_WSTRING;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 16:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_SEQUENCE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 17:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_UNION;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 18:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_FIXED;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 19:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_SWITCH;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 20:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_CASE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 21:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_DEFAULT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 22:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_FLOAT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 23:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_DOUBLE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 24:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_LONG;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 25:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_SHORT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 26:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_UNSIGNED;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 27:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_CHAR;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 28:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_WCHAR;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 29:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_BOOLEAN;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 30:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_OCTET;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 31:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_VOID;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 32:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_NATIVE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 33:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_LOCAL;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 34:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_ABSTRACT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 35:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_CUSTOM;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 36:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_FACTORY;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 37:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_PRIVATE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 38:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_PUBLIC;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 39:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_SUPPORTS;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 40:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_TRUNCATABLE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 41:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_VALUETYPE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 42:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_COMPONENT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 43:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_CONSUMES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 44:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_EMITS;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 45:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_EVENTTYPE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 46:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_FINDER;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 47:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_GETRAISES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 48:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_HOME;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 49:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_IMPORT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 50:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_MULTIPLE;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 51:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_PRIMARYKEY;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 52:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_PROVIDES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 53:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_PUBLISHES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 54:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_SETRAISES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 55:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_TYPEID;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 56:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_TYPEPREFIX;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 57:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_USES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 58:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_MANAGES;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 59:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_TRUETOK;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 60:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_FALSETOK;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 61:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_INOUT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 62:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_IN;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 63:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_OUT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 64:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_ONEWAY;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 65:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_LEFT_SHIFT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 66:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- return IDL_RIGHT_SHIFT;
-- YY_BREAK
-+ TAO_YY_BREAK
- case 67:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.strval = (char *) "::";
-- return IDL_SCOPE_DELIMITOR;
-- }
-- YY_BREAK
-+ tao_yylval.strval = (char *) "::";
-+ return IDL_SCOPE_DELIMITOR;
-+ }
-+ TAO_YY_BREAK
- case 68:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
- // Make sure that this identifier is not a C++ keyword. If it is,
- // prepend it with a _cxx_. Lookup in the perfect hash table for C++
-@@ -1499,15 +1429,16 @@
-
- TAO_IDL_CPP_Keyword_Table cpp_key_tbl;
- const TAO_IDL_CPP_Keyword_Entry *entry = 0;
-+
- if (!idl_global->preserve_cpp_keywords())
- {
- // This check will ensure that escaped C++ keywords will be
- // caught and prepended with '_cxx' as non-escaped keywords
- // are now prepended with '_cxx_'.
-- const char *tmp =
-+ const char *tmp =
- ace_tao_yytext[0] == '_' ? ace_tao_yytext + 1 : ace_tao_yytext;
+@@ -1084,5 +1081,5 @@
+ {
+ register tao_yy_state_type tao_yy_current_state;
+- register char *tao_yy_cp, *tao_yy_bp;
++ register char *tao_yy_cp = 0, *tao_yy_bp = 0;
+ register int tao_yy_act;
-- entry =
-+ entry =
- cpp_key_tbl.lookup (tmp,
- static_cast<unsigned int> (ACE_OS::strlen (tmp)));
- }
-@@ -1523,69 +1454,68 @@
-
- return IDENTIFIER;
- }
-- YY_BREAK
-+ TAO_YY_BREAK
- case 69:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.dval = idl_atof(ace_yytext);
-+ tao_yylval.dval = idl_atof(ace_tao_yytext);
- return IDL_FLOATING_PT_LITERAL;
- }
-- YY_BREAK
-+ TAO_YY_BREAK
- case 70:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.dval = idl_atof(ace_yytext);
-+ tao_yylval.dval = idl_atof(ace_tao_yytext);
- return IDL_FLOATING_PT_LITERAL;
- }
-- YY_BREAK
-+ TAO_YY_BREAK
- case 71:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.ival = idl_atoi(ace_yytext, 10);
-- return IDL_INTEGER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.ival = idl_atoi(ace_tao_yytext, 10);
-+ return IDL_INTEGER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 72:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.uival = idl_atoui(ace_yytext, 10);
-- return IDL_UINTEGER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.uival = idl_atoui(ace_tao_yytext, 10);
-+ return IDL_UINTEGER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 73:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.ival = idl_atoi(ace_yytext, 16);
-- return IDL_INTEGER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.ival = idl_atoi(ace_tao_yytext, 16);
-+ return IDL_INTEGER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 74:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.uival = idl_atoui(ace_yytext, 16);
-- return IDL_UINTEGER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.uival = idl_atoui(ace_tao_yytext, 16);
-+ return IDL_UINTEGER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 75:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.ival = idl_atoi(ace_yytext, 8);
-- return IDL_INTEGER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.ival = idl_atoi(ace_tao_yytext, 8);
-+ return IDL_INTEGER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 76:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.uival = idl_atoui(ace_yytext, 8);
-- return IDL_UINTEGER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.uival = idl_atoui(ace_tao_yytext, 8);
-+ return IDL_UINTEGER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 77:
--/* rule 77 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- /* Skip the quotes */
-- char *tmp = ace_yytext;
-+ /* Skip the quotes */
-+ char *tmp = ace_tao_yytext;
- for(int i = strlen(tmp) - 1; i >= 0; --i) {
- if (isspace(tmp[i])) {
- tmp[i] = '\0';
-@@ -1594,1146 +1524,1051 @@
- break;
- }
- }
-- tmp[strlen (tmp) - 1] = '\0';
-- ACE_NEW_RETURN (yylval.sval,
-+ tmp[strlen (tmp) - 1] = '\0';
-+ ACE_NEW_RETURN (tao_yylval.sval,
- UTL_String (tmp + 1),
- IDL_STRING_LITERAL);
-- return IDL_STRING_LITERAL;
-- }
-- YY_BREAK
-+ return IDL_STRING_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 78:
--/* rule 78 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- /* Skip the bookends */
-- char *tmp = ACE_OS::strdup (ace_yytext);
-- tmp[strlen (tmp) - 1] = '\0';
-- yylval.wsval = idl_wstring_escape_reader(tmp + 2);
-- return IDL_WSTRING_LITERAL;
-- }
-- YY_BREAK
-+ /* Skip the bookends */
-+ char *tmp = ACE_OS::strdup (ace_tao_yytext);
-+ tmp[strlen (tmp) - 1] = '\0';
-+ tao_yylval.wsval = idl_wstring_escape_reader(tmp + 2);
-+ return IDL_WSTRING_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 79:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.cval = ace_yytext [1];
-- return IDL_CHARACTER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.cval = ace_tao_yytext [1];
-+ return IDL_CHARACTER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 80:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- // octal character constant
-- yylval.cval = idl_escape_reader(ace_yytext + 1);
-- return IDL_CHARACTER_LITERAL;
-- }
-- YY_BREAK
-+ // octal character constant
-+ tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1);
-+ return IDL_CHARACTER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 81:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- // hexadecimal character constant
-- yylval.cval = idl_escape_reader(ace_yytext + 1);
-- return IDL_CHARACTER_LITERAL;
-- }
-- YY_BREAK
-+ // hexadecimal character constant
-+ tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1);
-+ return IDL_CHARACTER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 82:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- yylval.cval = idl_escape_reader(ace_yytext + 1);
-- return IDL_CHARACTER_LITERAL;
-- }
-- YY_BREAK
-+ tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1);
-+ return IDL_CHARACTER_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 83:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- // wide character constant
-- yylval.wcval = ace_yytext [2];
-- return IDL_WCHAR_LITERAL;
-- }
-- YY_BREAK
-+ // wide character constant
-+ tao_yylval.wcval = ace_tao_yytext [2];
-+ return IDL_WCHAR_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 84:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- // hexadecimal wide character constant
-- yylval.wcval = idl_wchar_escape_reader(ace_yytext + 2);
-- return IDL_WCHAR_LITERAL;
-- }
-- YY_BREAK
-+ // hexadecimal wide character constant
-+ tao_yylval.wcval = idl_wchar_escape_reader(ace_tao_yytext + 2);
-+ return IDL_WCHAR_LITERAL;
-+ }
-+ TAO_YY_BREAK
- case 85:
--/* rule 85 can match eol */
- case 86:
--/* rule 86 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {/* remember pragma */
-- idl_global->set_lineno(idl_global->lineno() + 1);
-- idl_store_pragma(ace_yytext);
-- }
-- YY_BREAK
-+ idl_global->set_lineno(idl_global->lineno() + 1);
-+ idl_store_pragma(ace_tao_yytext);
-+ }
+@@ -1598,5 +1595,5 @@
+ idl_store_pragma(ace_tao_yytext);
+ }
+- TAO_YY_BREAK
+ break;
case 87:
--/* rule 87 can match eol */
case 88:
--/* rule 88 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {/* ignore file */
-- idl_global->set_lineno(idl_global->lineno() + 1);
-- }
-- YY_BREAK
-+ idl_global->set_lineno(idl_global->lineno() + 1);
-+ }
-+ break;
+@@ -1605,5 +1602,5 @@
+ idl_global->set_lineno(idl_global->lineno() + 1);
+ }
+- TAO_YY_BREAK
++ break;
case 89:
--/* rule 89 can match eol */
case 90:
--/* rule 90 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- idl_parse_line_and_file(ace_yytext);
-- }
-- YY_BREAK
-+ idl_parse_line_and_file(ace_tao_yytext);
-+ }
-+ break;
+@@ -1612,5 +1609,5 @@
+ idl_parse_line_and_file(ace_tao_yytext);
+ }
+- TAO_YY_BREAK
++ break;
case 91:
--/* rule 91 can match eol */
case 92:
--/* rule 92 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- idl_parse_line_and_file(ace_yytext);
-- }
-- YY_BREAK
-+ idl_parse_line_and_file(ace_tao_yytext);
-+ }
-+ break;
+@@ -1619,5 +1616,5 @@
+ idl_parse_line_and_file(ace_tao_yytext);
+ }
+- TAO_YY_BREAK
++ break;
case 93:
--/* rule 93 can match eol */
case 94:
--/* rule 94 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- idl_parse_line_and_file(ace_yytext);
-- }
-- YY_BREAK
-+ idl_parse_line_and_file(ace_tao_yytext);
-+ }
-+ break;
+@@ -1626,5 +1623,5 @@
+ idl_parse_line_and_file(ace_tao_yytext);
+ }
+- TAO_YY_BREAK
++ break;
case 95:
--/* rule 95 can match eol */
case 96:
--/* rule 96 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- idl_parse_line_and_file(ace_yytext);
-- }
-- YY_BREAK
-+ idl_parse_line_and_file(ace_tao_yytext);
-+ }
-+ break;
+@@ -1633,5 +1630,5 @@
+ idl_parse_line_and_file(ace_tao_yytext);
+ }
+- TAO_YY_BREAK
++ break;
case 97:
--/* rule 97 can match eol */
case 98:
--/* rule 98 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- /* ignore cpp ident */
-- idl_global->set_lineno(idl_global->lineno() + 1);
-- }
-- YY_BREAK
-+ /* ignore cpp ident */
-+ idl_global->set_lineno(idl_global->lineno() + 1);
-+ }
-+ break;
+@@ -1641,5 +1638,5 @@
+ idl_global->set_lineno(idl_global->lineno() + 1);
+ }
+- TAO_YY_BREAK
++ break;
case 99:
--/* rule 99 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- /* ignore comments */
-- idl_global->set_lineno(idl_global->lineno() + 1);
-- }
-- YY_BREAK
-+ /* ignore comments */
-+ idl_global->set_lineno(idl_global->lineno() + 1);
-+ }
+ TAO_YY_RULE_SETUP
+@@ -1648,5 +1645,5 @@
+ idl_global->set_lineno(idl_global->lineno() + 1);
+ }
+- TAO_YY_BREAK
+ break;
case 100:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- for(;;) {
-- char c = yyinput();
-- if (c == '*') {
-- char next = yyinput();
-- if (next == '/')
-- break;
-- else
-- yyunput(c, NULL);
-- if (c == '\n')
-- idl_global->set_lineno(idl_global->lineno() + 1);
-- }
-- }
-- }
-- YY_BREAK
-+ for(;;) {
-+ char c = tao_yyinput();
-+ if (c == '*') {
-+ char next = tao_yyinput();
-+ if (next == '/')
-+ break;
-+ else
-+ tao_yyunput(c, NULL);
-+ if (c == '\n')
-+ idl_global->set_lineno(idl_global->lineno() + 1);
-+ }
-+ }
-+ }
-+ break;
+ TAO_YY_RULE_SETUP
+@@ -1665,9 +1662,9 @@
+ }
+ }
+- TAO_YY_BREAK
++ break;
case 101:
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
+ TAO_YY_RULE_SETUP
;
-- YY_BREAK
-+ break;
+- TAO_YY_BREAK
++ break;
case 102:
--/* rule 102 can match eol */
--YY_RULE_SETUP
-+TAO_YY_RULE_SETUP
- {
-- idl_global->set_lineno(idl_global->lineno() + 1);
-- }
-- YY_BREAK
-+ idl_global->set_lineno(idl_global->lineno() + 1);
-+ }
-+ break;
+ TAO_YY_RULE_SETUP
+@@ -1675,13 +1672,13 @@
+ idl_global->set_lineno(idl_global->lineno() + 1);
+ }
+- TAO_YY_BREAK
++ break;
case 103:
--YY_RULE_SETUP
--return ace_yytext [0];
-- YY_BREAK
-+TAO_YY_RULE_SETUP
-+return ace_tao_yytext [0];
-+ break;
+ TAO_YY_RULE_SETUP
+ return ace_tao_yytext [0];
+- TAO_YY_BREAK
++ break;
case 104:
--YY_RULE_SETUP
--ECHO;
-- YY_BREAK
--case YY_STATE_EOF(INITIAL):
-- yyterminate();
--
-- case YY_END_OF_BUFFER:
-- {
-- /* Amount of text matched not including the EOB char. */
-- int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
--
-- /* Undo the effects of YY_DO_BEFORE_ACTION. */
-- *yy_cp = (yy_hold_char);
-- YY_RESTORE_YY_MORE_OFFSET
--
-- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-- {
-- /* We're scanning a new file or input source. It's
-- * possible that this happened because the user
-- * just pointed yyin at a new source and called
-- * yylex(). If so, then we have to assure
-- * consistency between YY_CURRENT_BUFFER and our
-- * globals. Here is the right place to do so, because
-- * this is the first action (other than possibly a
-- * back-up) that will match for the new input source.
-- */
-- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-- YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
-- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-- }
--
-- /* Note that here we test for yy_c_buf_p "<=" to the position
-- * of the first EOB in the buffer, since yy_c_buf_p will
-- * already have been incremented past the NUL character
-- * (since all states make transitions on EOB to the
-- * end-of-buffer state). Contrast this with the test
-- * in input().
-- */
-- if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-- { /* This was really a NUL. */
-- yy_state_type yy_next_state;
--
-- (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
--
-- yy_current_state = yy_get_previous_state( );
--
-- /* Okay, we're now positioned to make the NUL
-- * transition. We couldn't have
-- * yy_get_previous_state() go ahead and do it
-- * for us because it doesn't know how to deal
-- * with the possibility of jamming (and we don't
-- * want to build jamming into it because then it
-- * will run more slowly).
-- */
--
-- yy_next_state = yy_try_NUL_trans( yy_current_state );
--
-- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
--
-- if ( yy_next_state )
-- {
-- /* Consume the NUL. */
-- yy_cp = ++(yy_c_buf_p);
-- yy_current_state = yy_next_state;
-- goto yy_match;
-- }
--
-- else
-- {
-- yy_cp = (yy_last_accepting_cpos);
-- yy_current_state = (yy_last_accepting_state);
-- goto yy_find_action;
-- }
-- }
--
-- else switch ( yy_get_next_buffer( ) )
-- {
-- case EOB_ACT_END_OF_FILE:
-- {
-- (yy_did_buffer_switch_on_eof) = 0;
--
-- if ( yywrap( ) )
-- {
-- /* Note: because we've taken care in
-- * yy_get_next_buffer() to have set up
-- * yytext, we can now set up
-- * yy_c_buf_p so that if some total
-- * hoser (like flex itself) wants to
-- * call the scanner after we return the
-- * YY_NULL, it'll still work - another
-- * YY_NULL will get returned.
-- */
-- (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
--
-- yy_act = YY_STATE_EOF(YY_START);
-- goto do_action;
-- }
--
-- else
-- {
-- if ( ! (yy_did_buffer_switch_on_eof) )
-- YY_NEW_FILE;
-- }
-- break;
-- }
--
-- case EOB_ACT_CONTINUE_SCAN:
-- (yy_c_buf_p) =
-- (yytext_ptr) + yy_amount_of_matched_text;
--
-- yy_current_state = yy_get_previous_state( );
--
-- yy_cp = (yy_c_buf_p);
-- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-- goto yy_match;
--
-- case EOB_ACT_LAST_MATCH:
-- (yy_c_buf_p) =
-- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
--
-- yy_current_state = yy_get_previous_state( );
--
-- yy_cp = (yy_c_buf_p);
-- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-- goto yy_find_action;
-- }
-- break;
-- }
--
-- default:
-- YY_FATAL_ERROR(
-- "fatal flex scanner internal error--no action found" );
-- } /* end of action switch */
-- } /* end of scanning one token */
--} /* end of yylex */
-+TAO_YY_RULE_SETUP
-+TAO_YY_ECHO;
-+ break;
-+case TAO_YY_STATE_EOF(INITIAL):
-+ tao_yyterminate();
-+
-+ case TAO_YY_END_OF_BUFFER:
-+ {
-+ /* Amount of text matched not including the EOB char. */
-+ int tao_yy_amount_of_matched_text = (int) (tao_yy_cp - tao_yytext_ptr) - 1;
-+
-+ /* Undo the effects of TAO_YY_DO_BEFORE_ACTION. */
-+ *tao_yy_cp = tao_yy_hold_char;
-+ TAO_YY_RESTORE_TAO_YY_MORE_OFFSET
-+
-+ if ( tao_yy_current_buffer->tao_yy_buffer_status == TAO_YY_BUFFER_NEW )
-+ {
-+ /* We're scanning a new file or input source. It's
-+ * possible that this happened because the user
-+ * just pointed tao_yyin at a new source and called
-+ * tao_yylex(). If so, then we have to assure
-+ * consistency between tao_yy_current_buffer and our
-+ * globals. Here is the right place to do so, because
-+ * this is the first action (other than possibly a
-+ * back-up) that will match for the new input source.
-+ */
-+ tao_yy_n_chars = tao_yy_current_buffer->tao_yy_n_chars;
-+ tao_yy_current_buffer->tao_yy_input_file = tao_yyin;
-+ tao_yy_current_buffer->tao_yy_buffer_status = TAO_YY_BUFFER_NORMAL;
-+ }
-+
-+ /* Note that here we test for tao_yy_c_buf_p "<=" to the position
-+ * of the first EOB in the buffer, since tao_yy_c_buf_p will
-+ * already have been incremented past the NUL character
-+ * (since all states make transitions on EOB to the
-+ * end-of-buffer state). Contrast this with the test
-+ * in input().
-+ */
-+ if ( tao_yy_c_buf_p <= &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] )
-+ { /* This was really a NUL. */
-+ tao_yy_state_type tao_yy_next_state;
-+
-+ tao_yy_c_buf_p = tao_yytext_ptr + tao_yy_amount_of_matched_text;
-+
-+ tao_yy_current_state = tao_yy_get_previous_state();
-+
-+ /* Okay, we're now positioned to make the NUL
-+ * transition. We couldn't have
-+ * tao_yy_get_previous_state() go ahead and do it
-+ * for us because it doesn't know how to deal
-+ * with the possibility of jamming (and we don't
-+ * want to build jamming into it because then it
-+ * will run more slowly).
-+ */
-+
-+ tao_yy_next_state = tao_yy_try_NUL_trans( tao_yy_current_state );
-+
-+ tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ;
-+
-+ if ( tao_yy_next_state )
-+ {
-+ /* Consume the NUL. */
-+ tao_yy_cp = ++tao_yy_c_buf_p;
-+ tao_yy_current_state = tao_yy_next_state;
-+ goto tao_yy_match;
-+ }
-+
-+ else
-+ {
-+ tao_yy_cp = tao_yy_c_buf_p;
-+ goto tao_yy_find_action;
-+ }
-+ }
-+
-+ else switch ( tao_yy_get_next_buffer() )
-+ {
-+ case EOB_ACT_END_OF_FILE:
-+ {
-+ tao_yy_did_buffer_switch_on_eof = 0;
-+
-+ if ( tao_yywrap() )
-+ {
-+ /* Note: because we've taken care in
-+ * tao_yy_get_next_buffer() to have set up
-+ * tao_yytext, we can now set up
-+ * tao_yy_c_buf_p so that if some total
-+ * hoser (like flex itself) wants to
-+ * call the scanner after we return the
-+ * TAO_YY_NULL, it'll still work - another
-+ * TAO_YY_NULL will get returned.
-+ */
-+ tao_yy_c_buf_p = tao_yytext_ptr + TAO_YY_MORE_ADJ;
-+
-+ tao_yy_act = TAO_YY_STATE_EOF(TAO_YY_START);
-+ goto do_action;
-+ }
-+
-+ else
-+ {
-+ if ( ! tao_yy_did_buffer_switch_on_eof )
-+ TAO_YY_NEW_FILE;
-+ }
-+ break;
-+ }
-+
-+ case EOB_ACT_CONTINUE_SCAN:
-+ tao_yy_c_buf_p =
-+ tao_yytext_ptr + tao_yy_amount_of_matched_text;
-+
-+ tao_yy_current_state = tao_yy_get_previous_state();
-+
-+ tao_yy_cp = tao_yy_c_buf_p;
-+ tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ;
-+ goto tao_yy_match;
-+
-+ case EOB_ACT_LAST_MATCH:
-+ tao_yy_c_buf_p =
-+ &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars];
-+
-+ tao_yy_current_state = tao_yy_get_previous_state();
-+
-+ tao_yy_cp = tao_yy_c_buf_p;
-+ tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ;
-+ goto tao_yy_find_action;
-+ }
-+ break;
-+ }
-+
-+ default:
-+ TAO_YY_FATAL_ERROR(
-+ "fatal flex scanner internal error--no action found" );
-+ } /* end of action switch */
-+ } /* end of scanning one token */
-+ } /* end of tao_yylex */
-+
-
--/* yy_get_next_buffer - try to read in a new buffer
-+/* tao_yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
-- * EOB_ACT_LAST_MATCH -
-- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
-- * EOB_ACT_END_OF_FILE - end of file
-- */
--static int yy_get_next_buffer (void)
--{
-- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-- register char *source = (yytext_ptr);
-- register int number_to_move, i;
-- int ret_val;
--
-- if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-- YY_FATAL_ERROR(
-- "fatal flex scanner internal error--end of buffer missed" );
--
-- if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-- { /* Don't try to fill the buffer, so this is an EOF. */
-- if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-- {
-- /* We matched a single character, the EOB, so
-- * treat this as a final EOF.
-- */
-- return EOB_ACT_END_OF_FILE;
-- }
--
-- else
-- {
-- /* We matched some text prior to the EOB, first
-- * process it.
-- */
-- return EOB_ACT_LAST_MATCH;
-- }
-- }
--
-- /* Try to read more data. */
--
-- /* First move last chars to start of buffer. */
-- number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
--
-- for ( i = 0; i < number_to_move; ++i )
-- *(dest++) = *(source++);
--
-- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-- /* don't do the read, it's not guaranteed to return an EOF,
-- * just force an EOF
-- */
-- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
--
-- else
-- {
-- size_t num_to_read =
-- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
--
-- while ( num_to_read <= 0 )
-- { /* Not enough room in the buffer - grow it. */
--
-- /* just a shorter name for the current buffer */
-- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
--
-- int yy_c_buf_p_offset =
-- (int) ((yy_c_buf_p) - b->yy_ch_buf);
--
-- if ( b->yy_is_our_buffer )
-- {
-- int new_size = b->yy_buf_size * 2;
--
-- if ( new_size <= 0 )
-- b->yy_buf_size += b->yy_buf_size / 8;
-- else
-- b->yy_buf_size *= 2;
--
-- b->yy_ch_buf = (char *)
-- /* Include room in for 2 EOB chars. */
-- yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
-- }
-- else
-- /* Can't grow it, we don't own it. */
-- b->yy_ch_buf = 0;
--
-- if ( ! b->yy_ch_buf )
-- YY_FATAL_ERROR(
-- "fatal error - scanner input buffer overflow" );
--
-- (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
--
-- num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-- number_to_move - 1;
--
-- }
--
-- if ( num_to_read > YY_READ_BUF_SIZE )
-- num_to_read = YY_READ_BUF_SIZE;
--
-- /* Read in more data. */
-- YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-- (yy_n_chars), num_to_read );
--
-- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-- }
--
-- if ( (yy_n_chars) == 0 )
-- {
-- if ( number_to_move == YY_MORE_ADJ )
-- {
-- ret_val = EOB_ACT_END_OF_FILE;
-- yyrestart(yyin );
-- }
--
-- else
-- {
-- ret_val = EOB_ACT_LAST_MATCH;
-- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-- YY_BUFFER_EOF_PENDING;
-- }
-- }
--
-- else
-- ret_val = EOB_ACT_CONTINUE_SCAN;
--
-- (yy_n_chars) += number_to_move;
-- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-+ * EOB_ACT_LAST_MATCH -
-+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
-+ * EOB_ACT_END_OF_FILE - end of file
-+ */
-+
-+static int tao_yy_get_next_buffer()
-+ {
-+ register char *dest = tao_yy_current_buffer->tao_yy_ch_buf;
-+ register char *source = tao_yytext_ptr;
-+ register int number_to_move, i;
-+ int ret_val;
-+
-+ if ( tao_yy_c_buf_p > &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars + 1] )
-+ TAO_YY_FATAL_ERROR(
-+ "fatal flex scanner internal error--end of buffer missed" );
-+
-+ if ( tao_yy_current_buffer->tao_yy_fill_buffer == 0 )
-+ { /* Don't try to fill the buffer, so this is an EOF. */
-+ if ( tao_yy_c_buf_p - tao_yytext_ptr - TAO_YY_MORE_ADJ == 1 )
-+ {
-+ /* We matched a single character, the EOB, so
-+ * treat this as a final EOF.
-+ */
-+ return EOB_ACT_END_OF_FILE;
-+ }
-+
-+ else
-+ {
-+ /* We matched some text prior to the EOB, first
-+ * process it.
-+ */
-+ return EOB_ACT_LAST_MATCH;
-+ }
-+ }
-
-- (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-+ /* Try to read more data. */
-
-- return ret_val;
--}
-+ /* First move last chars to start of buffer. */
-+ number_to_move = (int) (tao_yy_c_buf_p - tao_yytext_ptr) - 1;
-
--/* yy_get_previous_state - get the state just before the EOB char was reached */
-+ for ( i = 0; i < number_to_move; ++i )
-+ *(dest++) = *(source++);
-
-- static yy_state_type yy_get_previous_state (void)
--{
-- register yy_state_type yy_current_state;
-- register char *yy_cp;
--
-- yy_current_state = (yy_start);
-- yy_current_state += YY_AT_BOL();
--
-- for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-- {
-- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-- if ( yy_accept[yy_current_state] )
-- {
-- (yy_last_accepting_state) = yy_current_state;
-- (yy_last_accepting_cpos) = yy_cp;
-- }
-- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-- {
-- yy_current_state = (int) yy_def[yy_current_state];
-- if ( yy_current_state >= 551 )
-- yy_c = yy_meta[(unsigned int) yy_c];
-- }
-- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-- }
-+ if ( tao_yy_current_buffer->tao_yy_buffer_status == TAO_YY_BUFFER_EOF_PENDING )
-+ /* don't do the read, it's not guaranteed to return an EOF,
-+ * just force an EOF
-+ */
-+ tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars = 0;
-+
-+ else
-+ {
-+ int num_to_read =
-+ tao_yy_current_buffer->tao_yy_buf_size - number_to_move - 1;
-+
-+ while ( num_to_read <= 0 )
-+ { /* Not enough room in the buffer - grow it. */
-+#ifdef TAO_YY_USES_REJECT
-+ TAO_YY_FATAL_ERROR(
-+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-+#else
-+
-+ /* just a shorter name for the current buffer */
-+ TAO_YY_BUFFER_STATE b = tao_yy_current_buffer;
-+
-+ int tao_yy_c_buf_p_offset =
-+ (int) (tao_yy_c_buf_p - b->tao_yy_ch_buf);
-+
-+ if ( b->tao_yy_is_our_buffer )
-+ {
-+ int new_size = b->tao_yy_buf_size * 2;
-+
-+ if ( new_size <= 0 )
-+ b->tao_yy_buf_size += b->tao_yy_buf_size / 8;
-+ else
-+ b->tao_yy_buf_size *= 2;
-+
-+ b->tao_yy_ch_buf = (char *)
-+ /* Include room in for 2 EOB chars. */
-+ tao_yy_flex_realloc( (void *) b->tao_yy_ch_buf,
-+ b->tao_yy_buf_size + 2 );
-+ }
-+ else
-+ /* Can't grow it, we don't own it. */
-+ b->tao_yy_ch_buf = 0;
-+
-+ if ( ! b->tao_yy_ch_buf )
-+ TAO_YY_FATAL_ERROR(
-+ "fatal error - scanner input buffer overflow" );
-+
-+ tao_yy_c_buf_p = &b->tao_yy_ch_buf[tao_yy_c_buf_p_offset];
-+
-+ num_to_read = tao_yy_current_buffer->tao_yy_buf_size -
-+ number_to_move - 1;
-+#endif
-+ }
-+
-+ if ( num_to_read > TAO_YY_READ_BUF_SIZE )
-+ num_to_read = TAO_YY_READ_BUF_SIZE;
-+
-+ /* Read in more data. */
-+ TAO_YY_INPUT( (&tao_yy_current_buffer->tao_yy_ch_buf[number_to_move]),
-+ tao_yy_n_chars, num_to_read );
-+
-+ tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars;
-+ }
-+
-+ if ( tao_yy_n_chars == 0 )
-+ {
-+ if ( number_to_move == TAO_YY_MORE_ADJ )
-+ {
-+ ret_val = EOB_ACT_END_OF_FILE;
-+ tao_yyrestart( tao_yyin );
-+ }
-+
-+ else
-+ {
-+ ret_val = EOB_ACT_LAST_MATCH;
-+ tao_yy_current_buffer->tao_yy_buffer_status =
-+ TAO_YY_BUFFER_EOF_PENDING;
-+ }
-+ }
-+
-+ else
-+ ret_val = EOB_ACT_CONTINUE_SCAN;
-+
-+ tao_yy_n_chars += number_to_move;
-+ tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] = TAO_YY_END_OF_BUFFER_CHAR;
-+ tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars + 1] = TAO_YY_END_OF_BUFFER_CHAR;
-+
-+ tao_yytext_ptr = &tao_yy_current_buffer->tao_yy_ch_buf[0];
-+
-+ return ret_val;
-+ }
-
-- return yy_current_state;
--}
-
--/* yy_try_NUL_trans - try to make a transition on the NUL character
-+/* tao_yy_get_previous_state - get the state just before the EOB char was reached */
-+
-+static tao_yy_state_type tao_yy_get_previous_state()
-+ {
-+ register tao_yy_state_type tao_yy_current_state;
-+ register char *tao_yy_cp;
-+
-+ tao_yy_current_state = tao_yy_start;
-+ tao_yy_current_state += TAO_YY_AT_BOL();
-+
-+ for ( tao_yy_cp = tao_yytext_ptr + TAO_YY_MORE_ADJ; tao_yy_cp < tao_yy_c_buf_p; ++tao_yy_cp )
-+ {
-+ register TAO_YY_CHAR tao_yy_c = (*tao_yy_cp ? tao_yy_ec[TAO_YY_SC_TO_UI(*tao_yy_cp)] : 1);
-+ if ( tao_yy_accept[tao_yy_current_state] )
-+ {
-+ tao_yy_last_accepting_state = tao_yy_current_state;
-+ tao_yy_last_accepting_cpos = tao_yy_cp;
-+ }
-+ while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state )
-+ {
-+ tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state];
-+ if ( tao_yy_current_state >= 551 )
-+ tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c];
-+ }
-+ tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c];
-+ }
-+
-+ return tao_yy_current_state;
-+ }
-+
-+
-+/* tao_yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
-- * next_state = yy_try_NUL_trans( current_state );
-+ * next_state = tao_yy_try_NUL_trans( current_state );
- */
-- static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
--{
-- register int yy_is_jam;
-- register char *yy_cp = (yy_c_buf_p);
-
-- register YY_CHAR yy_c = 1;
-- if ( yy_accept[yy_current_state] )
-- {
-- (yy_last_accepting_state) = yy_current_state;
-- (yy_last_accepting_cpos) = yy_cp;
-- }
-- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-- {
-- yy_current_state = (int) yy_def[yy_current_state];
-- if ( yy_current_state >= 551 )
-- yy_c = yy_meta[(unsigned int) yy_c];
-- }
-- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-- yy_is_jam = (yy_current_state == 550);
-+#ifdef TAO_YY_USE_PROTOS
-+static tao_yy_state_type tao_yy_try_NUL_trans( tao_yy_state_type tao_yy_current_state )
-+#else
-+static tao_yy_state_type tao_yy_try_NUL_trans( tao_yy_current_state )
-+tao_yy_state_type tao_yy_current_state;
-+#endif
-+ {
-+ register int tao_yy_is_jam;
-+ register char *tao_yy_cp = tao_yy_c_buf_p;
-
-- return yy_is_jam ? 0 : yy_current_state;
--}
-+ register TAO_YY_CHAR tao_yy_c = 1;
-+ if ( tao_yy_accept[tao_yy_current_state] )
-+ {
-+ tao_yy_last_accepting_state = tao_yy_current_state;
-+ tao_yy_last_accepting_cpos = tao_yy_cp;
-+ }
-+ while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state )
-+ {
-+ tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state];
-+ if ( tao_yy_current_state >= 551 )
-+ tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c];
-+ }
-+ tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c];
-+ tao_yy_is_jam = (tao_yy_current_state == 550);
-+
-+ return tao_yy_is_jam ? 0 : tao_yy_current_state;
-+ }
-+
-+
-+#ifndef TAO_YY_NO_UNPUT
-+#ifdef TAO_YY_USE_PROTOS
-+static void tao_yyunput( int c, register char *tao_yy_bp )
-+#else
-+static void tao_yyunput( c, tao_yy_bp )
-+int c;
-+register char *tao_yy_bp;
-+#endif
-+ {
-+ register char *tao_yy_cp = tao_yy_c_buf_p;
-+
-+ /* undo effects of setting up tao_yytext */
-+ *tao_yy_cp = tao_yy_hold_char;
-+
-+ if ( tao_yy_cp < tao_yy_current_buffer->tao_yy_ch_buf + 2 )
-+ { /* need to shift things up to make room */
-+ /* +2 for EOB chars. */
-+ register int number_to_move = tao_yy_n_chars + 2;
-+ register char *dest = &tao_yy_current_buffer->tao_yy_ch_buf[
-+ tao_yy_current_buffer->tao_yy_buf_size + 2];
-+ register char *source =
-+ &tao_yy_current_buffer->tao_yy_ch_buf[number_to_move];
-+
-+ while ( source > tao_yy_current_buffer->tao_yy_ch_buf )
-+ *--dest = *--source;
-+
-+ tao_yy_cp += (int) (dest - source);
-+ tao_yy_bp += (int) (dest - source);
-+ tao_yy_current_buffer->tao_yy_n_chars =
-+ tao_yy_n_chars = tao_yy_current_buffer->tao_yy_buf_size;
-+
-+ if ( tao_yy_cp < tao_yy_current_buffer->tao_yy_ch_buf + 2 )
-+ TAO_YY_FATAL_ERROR( "flex scanner push-back overflow" );
-+ }
-+
-+ *--tao_yy_cp = (char) c;
-+
-+
-+ tao_yytext_ptr = tao_yy_bp;
-+ tao_yy_hold_char = *tao_yy_cp;
-+ tao_yy_c_buf_p = tao_yy_cp;
-+ }
-+#endif /* ifndef TAO_YY_NO_UNPUT */
-
-- static void yyunput (int c, register char * yy_bp )
--{
-- register char *yy_cp;
--
-- yy_cp = (yy_c_buf_p);
--
-- /* undo effects of setting up yytext */
-- *yy_cp = (yy_hold_char);
--
-- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-- { /* need to shift things up to make room */
-- /* +2 for EOB chars. */
-- register int number_to_move = (yy_n_chars) + 2;
-- register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-- YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-- register char *source =
-- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
--
-- while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-- *--dest = *--source;
--
-- yy_cp += (int) (dest - source);
-- yy_bp += (int) (dest - source);
-- YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
--
-- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-- YY_FATAL_ERROR( "flex scanner push-back overflow" );
-- }
--
-- *--yy_cp = (char) c;
--
-- (yytext_ptr) = yy_bp;
-- (yy_hold_char) = *yy_cp;
-- (yy_c_buf_p) = yy_cp;
--}
-
--#ifndef YY_NO_INPUT
- #ifdef __cplusplus
-- static int yyinput (void)
-+static int tao_yyinput()
- #else
-- static int input (void)
-+static int input()
- #endif
-+ {
-+ int c;
-
--{
-- int c;
--
-- *(yy_c_buf_p) = (yy_hold_char);
--
-- if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-- {
-- /* yy_c_buf_p now points to the character we want to return.
-- * If this occurs *before* the EOB characters, then it's a
-- * valid NUL; if not, then we've hit the end of the buffer.
-- */
-- if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-- /* This was really a NUL. */
-- *(yy_c_buf_p) = '\0';
--
-- else
-- { /* need more input */
-- int offset = (yy_c_buf_p) - (yytext_ptr);
-- ++(yy_c_buf_p);
--
-- switch ( yy_get_next_buffer( ) )
-- {
-- case EOB_ACT_LAST_MATCH:
-- /* This happens because yy_g_n_b()
-- * sees that we've accumulated a
-- * token and flags that we need to
-- * try matching the token before
-- * proceeding. But for input(),
-- * there's no matching to consider.
-- * So convert the EOB_ACT_LAST_MATCH
-- * to EOB_ACT_END_OF_FILE.
-- */
--
-- /* Reset buffer status. */
-- yyrestart(yyin );
--
-- /*FALLTHROUGH*/
--
-- case EOB_ACT_END_OF_FILE:
-- {
-- if ( yywrap( ) )
-- return EOF;
-+ *tao_yy_c_buf_p = tao_yy_hold_char;
-+
-+ if ( *tao_yy_c_buf_p == TAO_YY_END_OF_BUFFER_CHAR )
-+ {
-+ /* tao_yy_c_buf_p now points to the character we want to return.
-+ * If this occurs *before* the EOB characters, then it's a
-+ * valid NUL; if not, then we've hit the end of the buffer.
-+ */
-+ if ( tao_yy_c_buf_p < &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] )
-+ /* This was really a NUL. */
-+ *tao_yy_c_buf_p = '\0';
-+
-+ else
-+ { /* need more input */
-+ int offset = tao_yy_c_buf_p - tao_yytext_ptr;
-+ ++tao_yy_c_buf_p;
-+
-+ switch ( tao_yy_get_next_buffer() )
-+ {
-+ case EOB_ACT_LAST_MATCH:
-+ /* This happens because tao_yy_g_n_b()
-+ * sees that we've accumulated a
-+ * token and flags that we need to
-+ * try matching the token before
-+ * proceeding. But for input(),
-+ * there's no matching to consider.
-+ * So convert the EOB_ACT_LAST_MATCH
-+ * to EOB_ACT_END_OF_FILE.
-+ */
-+
-+ /* Reset buffer status. */
-+ tao_yyrestart( tao_yyin );
-+
-+ /* fall through */
-+
-+ case EOB_ACT_END_OF_FILE:
-+ {
-+ if ( tao_yywrap() )
-+ return EOF;
-
-- if ( ! (yy_did_buffer_switch_on_eof) )
-- YY_NEW_FILE;
-+ if ( ! tao_yy_did_buffer_switch_on_eof )
-+ TAO_YY_NEW_FILE;
- #ifdef __cplusplus
-- return yyinput();
-+ return tao_yyinput();
- #else
-- return input();
-+ return input();
- #endif
-- }
-+ }
-
-- case EOB_ACT_CONTINUE_SCAN:
-- (yy_c_buf_p) = (yytext_ptr) + offset;
-- break;
-- }
-- }
-- }
-+ case EOB_ACT_CONTINUE_SCAN:
-+ tao_yy_c_buf_p = tao_yytext_ptr + offset;
-+ break;
-+ }
-+ }
-+ }
-
-- c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
-- *(yy_c_buf_p) = '\0'; /* preserve yytext */
-- (yy_hold_char) = *++(yy_c_buf_p);
-+ c = *(unsigned char *) tao_yy_c_buf_p; /* cast for 8-bit char's */
-+ *tao_yy_c_buf_p = '\0'; /* preserve tao_yytext */
-+ tao_yy_hold_char = *++tao_yy_c_buf_p;
-
-- YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
-+ tao_yy_current_buffer->tao_yy_at_bol = (c == '\n');
-
-- return c;
--}
--#endif /* ifndef YY_NO_INPUT */
-+ return c;
-+ }
-
--/** Immediately switch to a different input stream.
-- * @param input_file A readable stream.
-- *
-- * @note This function does not reset the start condition to @c INITIAL .
-- */
-- void yyrestart (FILE * input_file )
--{
--
-- if ( ! YY_CURRENT_BUFFER ){
-- yyensure_buffer_stack ();
-- YY_CURRENT_BUFFER_LVALUE =
-- yy_create_buffer(yyin,YY_BUF_SIZE );
-- }
-
-- yy_init_buffer(YY_CURRENT_BUFFER,input_file );
-- yy_load_buffer_state( );
--}
-+#ifdef TAO_YY_USE_PROTOS
-+void tao_yyrestart( FILE *input_file )
-+#else
-+void tao_yyrestart( input_file )
-+FILE *input_file;
-+#endif
-+ {
-+ if ( ! tao_yy_current_buffer )
-+ tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE );
-
--/** Switch to a different input buffer.
-- * @param new_buffer The new input buffer.
-- *
-- */
-- void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
--{
--
-- /* TODO. We should be able to replace this entire function body
-- * with
-- * yypop_buffer_state();
-- * yypush_buffer_state(new_buffer);
-- */
-- yyensure_buffer_stack ();
-- if ( YY_CURRENT_BUFFER == new_buffer )
-- return;
--
-- if ( YY_CURRENT_BUFFER )
-- {
-- /* Flush out information for old buffer. */
-- *(yy_c_buf_p) = (yy_hold_char);
-- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-- }
--
-- YY_CURRENT_BUFFER_LVALUE = new_buffer;
-- yy_load_buffer_state( );
--
-- /* We don't actually know whether we did this switch during
-- * EOF (yywrap()) processing, but the only time this flag
-- * is looked at is after yywrap() is called, so it's safe
-- * to go ahead and always set it.
-- */
-- (yy_did_buffer_switch_on_eof) = 1;
--}
-+ tao_yy_init_buffer( tao_yy_current_buffer, input_file );
-+ tao_yy_load_buffer_state();
-+ }
-
--static void yy_load_buffer_state (void)
--{
-- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-- (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-- yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-- (yy_hold_char) = *(yy_c_buf_p);
--}
-
--/** Allocate and initialize an input buffer state.
-- * @param file A readable stream.
-- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
-- *
-- * @return the allocated buffer state.
-- */
-- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
--{
-- YY_BUFFER_STATE b;
--
-- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
-- if ( ! b )
-- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
--
-- b->yy_buf_size = size;
--
-- /* yy_ch_buf has to be 2 characters longer than the size given because
-- * we need to put in 2 end-of-buffer characters.
-- */
-- b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
-- if ( ! b->yy_ch_buf )
-- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-+#ifdef TAO_YY_USE_PROTOS
-+void tao_yy_switch_to_buffer( TAO_YY_BUFFER_STATE new_buffer )
-+#else
-+void tao_yy_switch_to_buffer( new_buffer )
-+TAO_YY_BUFFER_STATE new_buffer;
-+#endif
-+ {
-+ if ( tao_yy_current_buffer == new_buffer )
-+ return;
-
-- b->yy_is_our_buffer = 1;
-+ if ( tao_yy_current_buffer )
-+ {
-+ /* Flush out information for old buffer. */
-+ *tao_yy_c_buf_p = tao_yy_hold_char;
-+ tao_yy_current_buffer->tao_yy_buf_pos = tao_yy_c_buf_p;
-+ tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars;
-+ }
-
-- yy_init_buffer(b,file );
-+ tao_yy_current_buffer = new_buffer;
-+ tao_yy_load_buffer_state();
-
-- return b;
--}
-+ /* We don't actually know whether we did this switch during
-+ * EOF (tao_yywrap()) processing, but the only time this flag
-+ * is looked at is after tao_yywrap() is called, so it's safe
-+ * to go ahead and always set it.
-+ */
-+ tao_yy_did_buffer_switch_on_eof = 1;
-+ }
-
--/** Destroy the buffer.
-- * @param b a buffer created with yy_create_buffer()
-- *
-- */
-- void yy_delete_buffer (YY_BUFFER_STATE b )
--{
--
-- if ( ! b )
-- return;
-
-- if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-- YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-+#ifdef TAO_YY_USE_PROTOS
-+void tao_yy_load_buffer_state( void )
-+#else
-+void tao_yy_load_buffer_state()
-+#endif
-+ {
-+ tao_yy_n_chars = tao_yy_current_buffer->tao_yy_n_chars;
-+ tao_yytext_ptr = tao_yy_c_buf_p = tao_yy_current_buffer->tao_yy_buf_pos;
-+ tao_yyin = tao_yy_current_buffer->tao_yy_input_file;
-+ tao_yy_hold_char = *tao_yy_c_buf_p;
-+ }
-
-- if ( b->yy_is_our_buffer )
-- yyfree((void *) b->yy_ch_buf );
-
-- yyfree((void *) b );
--}
-+#ifdef TAO_YY_USE_PROTOS
-+TAO_YY_BUFFER_STATE tao_yy_create_buffer( FILE *file, int size )
-+#else
-+TAO_YY_BUFFER_STATE tao_yy_create_buffer( file, size )
-+FILE *file;
-+int size;
-+#endif
-+ {
-+ TAO_YY_BUFFER_STATE b;
-
--/* Initializes or reinitializes a buffer.
-- * This function is sometimes called more than once on the same buffer,
-- * such as during a yyrestart() or at EOF.
-- */
-- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
-+ b = (TAO_YY_BUFFER_STATE) tao_yy_flex_alloc( sizeof( struct tao_yy_buffer_state ) );
-+ if ( ! b )
-+ TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_create_buffer()" );
-
--{
-- int oerrno = errno;
--
-- yy_flush_buffer(b );
-+ b->tao_yy_buf_size = size;
-
-- b->yy_input_file = file;
-- b->yy_fill_buffer = 1;
-+ /* tao_yy_ch_buf has to be 2 characters longer than the size given because
-+ * we need to put in 2 end-of-buffer characters.
-+ */
-+ b->tao_yy_ch_buf = (char *) tao_yy_flex_alloc( b->tao_yy_buf_size + 2 );
-+ if ( ! b->tao_yy_ch_buf )
-+ TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_create_buffer()" );
-
-- /* If b is the current buffer, then yy_init_buffer was _probably_
-- * called from yyrestart() or through yy_get_next_buffer.
-- * In that case, we don't want to reset the lineno or column.
-- */
-- if (b != YY_CURRENT_BUFFER){
-- b->yy_bs_lineno = 1;
-- b->yy_bs_column = 0;
-- }
-+ b->tao_yy_is_our_buffer = 1;
-
-- b->yy_is_interactive = 0;
--
-- errno = oerrno;
--}
-+ tao_yy_init_buffer( b, file );
-
--/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
-- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
-- *
-- */
-- void yy_flush_buffer (YY_BUFFER_STATE b )
--{
-- if ( ! b )
-- return;
-+ return b;
-+ }
-
-- b->yy_n_chars = 0;
-
-- /* We always need two end-of-buffer characters. The first causes
-- * a transition to the end-of-buffer state. The second causes
-- * a jam in that state.
-- */
-- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-+#ifdef TAO_YY_USE_PROTOS
-+void tao_yy_delete_buffer( TAO_YY_BUFFER_STATE b )
-+#else
-+void tao_yy_delete_buffer( b )
-+TAO_YY_BUFFER_STATE b;
-+#endif
-+ {
-+ if ( ! b )
-+ return;
-
-- b->yy_buf_pos = &b->yy_ch_buf[0];
-+ if ( b == tao_yy_current_buffer )
-+ tao_yy_current_buffer = (TAO_YY_BUFFER_STATE) 0;
-
-- b->yy_at_bol = 1;
-- b->yy_buffer_status = YY_BUFFER_NEW;
-+ if ( b->tao_yy_is_our_buffer )
-+ tao_yy_flex_free( (void *) b->tao_yy_ch_buf );
-
-- if ( b == YY_CURRENT_BUFFER )
-- yy_load_buffer_state( );
--}
-+ tao_yy_flex_free( (void *) b );
-+ }
-
--/** Pushes the new state onto the stack. The new state becomes
-- * the current state. This function will allocate the stack
-- * if necessary.
-- * @param new_buffer The new state.
-- *
-- */
--void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
--{
-- if (new_buffer == NULL)
-- return;
--
-- yyensure_buffer_stack();
--
-- /* This block is copied from yy_switch_to_buffer. */
-- if ( YY_CURRENT_BUFFER )
-- {
-- /* Flush out information for old buffer. */
-- *(yy_c_buf_p) = (yy_hold_char);
-- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-- }
--
-- /* Only push if top exists. Otherwise, replace top. */
-- if (YY_CURRENT_BUFFER)
-- (yy_buffer_stack_top)++;
-- YY_CURRENT_BUFFER_LVALUE = new_buffer;
--
-- /* copied from yy_switch_to_buffer. */
-- yy_load_buffer_state( );
-- (yy_did_buffer_switch_on_eof) = 1;
--}
-
--/** Removes and deletes the top of the stack, if present.
-- * The next element becomes the new top.
-- *
-- */
--void yypop_buffer_state (void)
--{
-- if (!YY_CURRENT_BUFFER)
-- return;
--
-- yy_delete_buffer(YY_CURRENT_BUFFER );
-- YY_CURRENT_BUFFER_LVALUE = NULL;
-- if ((yy_buffer_stack_top) > 0)
-- --(yy_buffer_stack_top);
--
-- if (YY_CURRENT_BUFFER) {
-- yy_load_buffer_state( );
-- (yy_did_buffer_switch_on_eof) = 1;
-- }
--}
-+#ifndef TAO_YY_ALWAYS_INTERACTIVE
-+#ifndef TAO_YY_NEVER_INTERACTIVE
-+extern int isatty TAO_YY_PROTO(( int ));
-+#endif
-+#endif
-
--/* Allocates the stack if it does not exist.
-- * Guarantees space for at least one push.
-- */
--static void yyensure_buffer_stack (void)
--{
-- int num_to_alloc;
--
-- if (!(yy_buffer_stack)) {
--
-- /* First allocation is just for 2 elements, since we don't know if this
-- * scanner will even need a stack. We use 2 instead of 1 to avoid an
-- * immediate realloc on the next call.
-+#ifdef TAO_YY_USE_PROTOS
-+void tao_yy_init_buffer( TAO_YY_BUFFER_STATE b, FILE *file )
-+#else
-+void tao_yy_init_buffer( b, file )
-+TAO_YY_BUFFER_STATE b;
-+FILE *file;
-+#endif
-+
-+
-+ {
-+ tao_yy_flush_buffer( b );
-+
-+ b->tao_yy_input_file = file;
-+ b->tao_yy_fill_buffer = 1;
-+
+ TAO_YY_RULE_SETUP
+ TAO_YY_ECHO;
+- TAO_YY_BREAK
++ break;
+ case TAO_YY_STATE_EOF(INITIAL):
+ tao_yyterminate();
+@@ -2270,8 +2262,8 @@
+ b->tao_yy_fill_buffer = 1;
+
+-#if TAO_YY_ALWAYS_INTERACTIVE
+#ifdef TAO_YY_ALWAYS_INTERACTIVE
-+ b->tao_yy_is_interactive = 1;
-+#else
+ b->tao_yy_is_interactive = 1;
+ #else
+-#if TAO_YY_NEVER_INTERACTIVE
+#ifdef TAO_YY_NEVER_INTERACTIVE
-+ b->tao_yy_is_interactive = 0;
-+#else
-+ b->tao_yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-+#endif
-+#endif
-+ }
-+
-+
-+#ifdef TAO_YY_USE_PROTOS
-+void tao_yy_flush_buffer( TAO_YY_BUFFER_STATE b )
-+#else
-+void tao_yy_flush_buffer( b )
-+TAO_YY_BUFFER_STATE b;
-+#endif
-+
-+ {
-+ if ( ! b )
-+ return;
-+
-+ b->tao_yy_n_chars = 0;
-+
-+ /* We always need two end-of-buffer characters. The first causes
-+ * a transition to the end-of-buffer state. The second causes
-+ * a jam in that state.
- */
-- num_to_alloc = 1;
-- (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
-- (num_to_alloc * sizeof(struct yy_buffer_state*)
-- );
--
-- memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
--
-- (yy_buffer_stack_max) = num_to_alloc;
-- (yy_buffer_stack_top) = 0;
-- return;
-- }
--
-- if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
--
-- /* Increase the buffer to prepare for a possible push. */
-- int grow_size = 8 /* arbitrary grow size */;
--
-- num_to_alloc = (yy_buffer_stack_max) + grow_size;
-- (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
-- ((yy_buffer_stack),
-- num_to_alloc * sizeof(struct yy_buffer_state*)
-- );
--
-- /* zero only the new slots.*/
-- memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-- (yy_buffer_stack_max) = num_to_alloc;
-- }
--}
-+ b->tao_yy_ch_buf[0] = TAO_YY_END_OF_BUFFER_CHAR;
-+ b->tao_yy_ch_buf[1] = TAO_YY_END_OF_BUFFER_CHAR;
-
--/** Setup the input buffer state to scan directly from a user-specified character buffer.
-- * @param base the character buffer
-- * @param size the size in bytes of the character buffer
-- *
-- * @return the newly allocated buffer state object.
-- */
--YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
--{
-- YY_BUFFER_STATE b;
--
-- if ( size < 2 ||
-- base[size-2] != YY_END_OF_BUFFER_CHAR ||
-- base[size-1] != YY_END_OF_BUFFER_CHAR )
-- /* They forgot to leave room for the EOB's. */
-- return 0;
--
-- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
-- if ( ! b )
-- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
--
-- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
-- b->yy_buf_pos = b->yy_ch_buf = base;
-- b->yy_is_our_buffer = 0;
-- b->yy_input_file = 0;
-- b->yy_n_chars = b->yy_buf_size;
-- b->yy_is_interactive = 0;
-- b->yy_at_bol = 1;
-- b->yy_fill_buffer = 0;
-- b->yy_buffer_status = YY_BUFFER_NEW;
-+ b->tao_yy_buf_pos = &b->tao_yy_ch_buf[0];
-
-- yy_switch_to_buffer(b );
-+ b->tao_yy_at_bol = 1;
-+ b->tao_yy_buffer_status = TAO_YY_BUFFER_NEW;
-
-- return b;
--}
-+ if ( b == tao_yy_current_buffer )
-+ tao_yy_load_buffer_state();
-+ }
-
--/** Setup the input buffer state to scan a string. The next call to yylex() will
-- * scan from a @e copy of @a str.
-- * @param str a NUL-terminated string to scan
-- *
-- * @return the newly allocated buffer state object.
-- * @note If you want to scan bytes that may contain NUL values, then use
-- * yy_scan_bytes() instead.
-- */
--YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str )
--{
--
-- return yy_scan_bytes(yy_str,strlen(yy_str) );
--}
-
--/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
-- * scan from a @e copy of @a bytes.
-- * @param bytes the byte buffer to scan
-- * @param len the number of bytes in the buffer pointed to by @a bytes.
-- *
-- * @return the newly allocated buffer state object.
-- */
--YY_BUFFER_STATE yy_scan_bytes (yyconst char * bytes, int len )
--{
-- YY_BUFFER_STATE b;
-- char *buf;
-- yy_size_t n;
-- int i;
--
-- /* Get memory for full buffer, including space for trailing EOB's. */
-- n = len + 2;
-- buf = (char *) yyalloc(n );
-- if ( ! buf )
-- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
--
-- for ( i = 0; i < len; ++i )
-- buf[i] = bytes[i];
--
-- buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
--
-- b = yy_scan_buffer(buf,n );
-- if ( ! b )
-- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
--
-- /* It's okay to grow etc. this buffer, and we should throw it
-- * away when we're done.
-- */
-- b->yy_is_our_buffer = 1;
-+#ifndef TAO_YY_NO_SCAN_BUFFER
-+#ifdef TAO_YY_USE_PROTOS
-+TAO_YY_BUFFER_STATE tao_yy_scan_buffer( char *base, tao_yy_size_t size )
-+#else
-+TAO_YY_BUFFER_STATE tao_yy_scan_buffer( base, size )
-+char *base;
-+tao_yy_size_t size;
-+#endif
-+ {
-+ TAO_YY_BUFFER_STATE b;
-+
-+ if ( size < 2 ||
-+ base[size-2] != TAO_YY_END_OF_BUFFER_CHAR ||
-+ base[size-1] != TAO_YY_END_OF_BUFFER_CHAR )
-+ /* They forgot to leave room for the EOB's. */
-+ return 0;
-
-- return b;
--}
-+ b = (TAO_YY_BUFFER_STATE) tao_yy_flex_alloc( sizeof( struct tao_yy_buffer_state ) );
-+ if ( ! b )
-+ TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_scan_buffer()" );
-
--#ifndef YY_EXIT_FAILURE
--#define YY_EXIT_FAILURE 2
-+ b->tao_yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
-+ b->tao_yy_buf_pos = b->tao_yy_ch_buf = base;
-+ b->tao_yy_is_our_buffer = 0;
-+ b->tao_yy_input_file = 0;
-+ b->tao_yy_n_chars = b->tao_yy_buf_size;
-+ b->tao_yy_is_interactive = 0;
-+ b->tao_yy_at_bol = 1;
-+ b->tao_yy_fill_buffer = 0;
-+ b->tao_yy_buffer_status = TAO_YY_BUFFER_NEW;
-+
-+ tao_yy_switch_to_buffer( b );
-+
-+ return b;
-+ }
- #endif
-
--static void yy_fatal_error (yyconst char* msg )
--{
-- (void) fprintf( stderr, "%s\n", msg );
-- exit( YY_EXIT_FAILURE );
--}
-
--/* Redefine yyless() so it works in section 3 code. */
-+#ifndef TAO_YY_NO_SCAN_STRING
-+#ifdef TAO_YY_USE_PROTOS
-+TAO_YY_BUFFER_STATE tao_yy_scan_string( tao_yyconst char *tao_yy_str )
-+#else
-+TAO_YY_BUFFER_STATE tao_yy_scan_string( tao_yy_str )
-+tao_yyconst char *tao_yy_str;
-+#endif
-+ {
-+ int len;
-+ for ( len = 0; tao_yy_str[len]; ++len )
-+ ;
-
--#undef yyless
--#define yyless(n) \
-- do \
-- { \
-- /* Undo effects of setting up yytext. */ \
-- int yyless_macro_arg = (n); \
-- YY_LESS_LINENO(yyless_macro_arg);\
-- yytext[yyleng] = (yy_hold_char); \
-- (yy_c_buf_p) = yytext + yyless_macro_arg; \
-- (yy_hold_char) = *(yy_c_buf_p); \
-- *(yy_c_buf_p) = '\0'; \
-- yyleng = yyless_macro_arg; \
-- } \
-- while ( 0 )
--
--/* Accessor methods (get/set functions) to struct members. */
-+ return tao_yy_scan_bytes( tao_yy_str, len );
-+ }
-+#endif
-
--/** Get the current line number.
-- *
-- */
--int yyget_lineno (void)
--{
--
-- return yylineno;
--}
-
--/** Get the input stream.
-- *
-- */
--FILE *yyget_in (void)
--{
-- return yyin;
--}
-+#ifndef TAO_YY_NO_SCAN_BYTES
-+#ifdef TAO_YY_USE_PROTOS
-+TAO_YY_BUFFER_STATE tao_yy_scan_bytes( tao_yyconst char *bytes, int len )
-+#else
-+TAO_YY_BUFFER_STATE tao_yy_scan_bytes( bytes, len )
-+tao_yyconst char *bytes;
-+int len;
-+#endif
-+ {
-+ TAO_YY_BUFFER_STATE b;
-+ char *buf;
-+ tao_yy_size_t n;
-+ int i;
-
--/** Get the output stream.
-- *
-- */
--FILE *yyget_out (void)
--{
-- return yyout;
--}
-+ /* Get memory for full buffer, including space for trailing EOB's. */
-+ n = len + 2;
-+ buf = (char *) tao_yy_flex_alloc( n );
-+ if ( ! buf )
-+ TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_scan_bytes()" );
-+
-+ for ( i = 0; i < len; ++i )
-+ buf[i] = bytes[i];
-+
-+ buf[len] = buf[len+1] = TAO_YY_END_OF_BUFFER_CHAR;
-+
-+ b = tao_yy_scan_buffer( buf, n );
-+ if ( ! b )
-+ TAO_YY_FATAL_ERROR( "bad buffer in tao_yy_scan_bytes()" );
-
--/** Get the length of the current token.
-- *
-- */
--int yyget_leng (void)
--{
-- return yyleng;
--}
-+ /* It's okay to grow etc. this buffer, and we should throw it
-+ * away when we're done.
-+ */
-+ b->tao_yy_is_our_buffer = 1;
-
--/** Get the current token.
-- *
-- */
-+ return b;
-+ }
-+#endif
-
--char *yyget_text (void)
--{
-- return yytext;
--}
-
--/** Set the current line number.
-- * @param line_number
-- *
-- */
--void yyset_lineno (int line_number )
--{
--
-- yylineno = line_number;
--}
-+#ifndef TAO_YY_NO_PUSH_STATE
-+#ifdef TAO_YY_USE_PROTOS
-+static void tao_yy_push_state( int new_state )
-+#else
-+static void tao_yy_push_state( new_state )
-+int new_state;
-+#endif
-+ {
-+ if ( tao_yy_start_stack_ptr >= tao_yy_start_stack_depth )
-+ {
-+ tao_yy_size_t new_size;
-
--/** Set the input stream. This does not discard the current
-- * input buffer.
-- * @param in_str A readable stream.
-- *
-- * @see yy_switch_to_buffer
-- */
--void yyset_in (FILE * in_str )
--{
-- yyin = in_str ;
--}
-+ tao_yy_start_stack_depth += TAO_YY_START_STACK_INCR;
-+ new_size = tao_yy_start_stack_depth * sizeof( int );
-
--void yyset_out (FILE * out_str )
--{
-- yyout = out_str ;
--}
-+ if ( ! tao_yy_start_stack )
-+ tao_yy_start_stack = (int *) tao_yy_flex_alloc( new_size );
-
--int yyget_debug (void)
--{
-- return yy_flex_debug;
--}
-+ else
-+ tao_yy_start_stack = (int *) tao_yy_flex_realloc(
-+ (void *) tao_yy_start_stack, new_size );
-
--void yyset_debug (int bdebug )
--{
-- yy_flex_debug = bdebug ;
--}
-+ if ( ! tao_yy_start_stack )
-+ TAO_YY_FATAL_ERROR(
-+ "out of memory expanding start-condition stack" );
-+ }
-
--/* yylex_destroy is for both reentrant and non-reentrant scanners. */
--int yylex_destroy (void)
--{
--
-- /* Pop the buffer stack, destroying each element. */
-- while(YY_CURRENT_BUFFER){
-- yy_delete_buffer(YY_CURRENT_BUFFER );
-- YY_CURRENT_BUFFER_LVALUE = NULL;
-- yypop_buffer_state();
-- }
--
-- /* Destroy the stack itself. */
-- yyfree((yy_buffer_stack) );
-- (yy_buffer_stack) = NULL;
-+ tao_yy_start_stack[tao_yy_start_stack_ptr++] = TAO_YY_START;
-
-- return 0;
--}
-+ BEGIN(new_state);
-+ }
-+#endif
-
--/*
-- * Internal utility routines.
-- */
-
--#ifndef yytext_ptr
--static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
--{
-- register int i;
-- for ( i = 0; i < n; ++i )
-- s1[i] = s2[i];
--}
-+#ifndef TAO_YY_NO_POP_STATE
-+static void tao_yy_pop_state()
-+ {
-+ if ( --tao_yy_start_stack_ptr < 0 )
-+ TAO_YY_FATAL_ERROR( "start-condition stack underflow" );
-+
-+ BEGIN(tao_yy_start_stack[tao_yy_start_stack_ptr]);
-+ }
- #endif
-
--#ifdef YY_NEED_STRLEN
--static int yy_flex_strlen (yyconst char * s )
--{
-- register int n;
-- for ( n = 0; s[n]; ++n )
-- ;
-
-- return n;
--}
-+#ifndef TAO_YY_NO_TOP_STATE
-+static int tao_yy_top_state()
-+ {
-+ return tao_yy_start_stack[tao_yy_start_stack_ptr - 1];
-+ }
- #endif
-
--void *yyalloc (yy_size_t size )
--{
-- return (void *) malloc( size );
--}
-+#ifndef TAO_YY_EXIT_FAILURE
-+#define TAO_YY_EXIT_FAILURE 2
-+#endif
-
--void *yyrealloc (void * ptr, yy_size_t size )
--{
-- /* The cast to (char *) in the following accommodates both
-- * implementations that use char* generic pointers, and those
-- * that use void* generic pointers. It works with the latter
-- * because both ANSI C and C++ allow castless assignment from
-- * any pointer type to void*, and deal with argument conversions
-- * as though doing an assignment.
-- */
-- return (void *) realloc( (char *) ptr, size );
--}
-+#ifdef TAO_YY_USE_PROTOS
-+static void tao_yy_fatal_error( tao_yyconst char msg[] )
-+#else
-+static void tao_yy_fatal_error( msg )
-+char msg[];
-+#endif
-+ {
-+ (void) fprintf( stderr, "%s\n", msg );
-+ exit( TAO_YY_EXIT_FAILURE );
-+ }
-
--void yyfree (void * ptr )
--{
-- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
--}
-
--#define YYTABLES_NAME "yytables"
-
--#undef YY_NEW_FILE
--#undef YY_FLUSH_BUFFER
--#undef yy_set_bol
--#undef yy_new_buffer
--#undef yy_set_interactive
--#undef yytext_ptr
--#undef YY_DO_BEFORE_ACTION
--
--#ifdef YY_DECL_IS_OURS
--#undef YY_DECL_IS_OURS
--#undef YY_DECL
-+/* Redefine tao_yyless() so it works in section 3 code. */
-+
-+#undef tao_yyless
-+#define tao_yyless(n) \
-+ do \
-+ { \
-+ /* Undo effects of setting up tao_yytext. */ \
-+ tao_yytext[tao_yyleng] = tao_yy_hold_char; \
-+ tao_yy_c_buf_p = tao_yytext + n; \
-+ tao_yy_hold_char = *tao_yy_c_buf_p; \
-+ *tao_yy_c_buf_p = '\0'; \
-+ tao_yyleng = n; \
-+ } \
-+ while ( 0 )
-+
-+
-+/* Internal utility routines. */
-+
-+#ifndef tao_yytext_ptr
-+#ifdef TAO_YY_USE_PROTOS
-+static void tao_yy_flex_strncpy( char *s1, tao_yyconst char *s2, int n )
-+#else
-+static void tao_yy_flex_strncpy( s1, s2, n )
-+char *s1;
-+tao_yyconst char *s2;
-+int n;
-+#endif
-+ {
-+ register int i;
-+ for ( i = 0; i < n; ++i )
-+ s1[i] = s2[i];
-+ }
- #endif
+ b->tao_yy_is_interactive = 0;
+ #else
+@@ -2564,5 +2541,5 @@
+ }
-- /* subroutines */
-+#ifdef TAO_YY_NEED_STRLEN
-+#ifdef TAO_YY_USE_PROTOS
-+static int tao_yy_flex_strlen( tao_yyconst char *s )
-+#else
-+static int tao_yy_flex_strlen( s )
-+tao_yyconst char *s;
-+#endif
-+ {
-+ register int n;
-+ for ( n = 0; s[n]; ++n )
-+ ;
-+
-+ return n;
-+ }
-+#endif
-+
-+
-+#ifdef TAO_YY_USE_PROTOS
-+static void *tao_yy_flex_alloc( tao_yy_size_t size )
-+#else
-+static void *tao_yy_flex_alloc( size )
-+tao_yy_size_t size;
-+#endif
-+ {
-+ return (void *) malloc( size );
-+ }
-+
-+#ifdef TAO_YY_USE_PROTOS
-+static void *tao_yy_flex_realloc( void *ptr, tao_yy_size_t size )
-+#else
-+static void *tao_yy_flex_realloc( ptr, size )
-+void *ptr;
-+tao_yy_size_t size;
-+#endif
-+ {
-+ /* The cast to (char *) in the following accommodates both
-+ * implementations that use char* generic pointers, and those
-+ * that use void* generic pointers. It works with the latter
-+ * because both ANSI C and C++ allow castless assignment from
-+ * any pointer type to void*, and deal with argument conversions
-+ * as though doing an assignment.
-+ */
-+ return (void *) realloc( (char *) ptr, size );
-+ }
-+
-+#ifdef TAO_YY_USE_PROTOS
-+static void tao_yy_flex_free( void *ptr )
-+#else
-+static void tao_yy_flex_free( ptr )
-+void *ptr;
-+#endif
-+ {
-+ free( ptr );
-+ }
-+
+-#if TAO_YY_MAIN
+#ifdef TAO_YY_MAIN
-+int main()
-+ {
-+ tao_yylex();
-+ return 0;
-+ }
-+#endif
-+
-+ /* subroutines */
-
- // Parse a #line statement generated by the C preprocessor
- static void
-@@ -2813,10 +2648,10 @@
- {
- if (h[j] == '\\' && h[j + 1] == '\\')
- {
-- j++;
-+ j++;
- }
-
-- h[i] = h[j];
-+ h[i] = h[j];
- }
-
- h[i] = '\0';
-@@ -2845,7 +2680,7 @@
-
- // Strip off any command line -I prefix that may have been added
- // by the preprocessor.
-- if (!(idl_global->in_main_file ()) && idl_global->import ())
-+ if (!(idl_global->in_main_file ()) && idl_global->import ())
- {
- ACE_NEW (
- nm,
-@@ -2957,7 +2792,7 @@
- ext_id.set (idl_global->filename ()->get_string (),
- 0);
- char *int_id = ACE::strnew (new_prefix);
-- (void) idl_global->file_prefixes ().rebind (ext_id,
-+ (void) idl_global->file_prefixes ().rebind (ext_id,
- int_id);
- }
- }
-@@ -2992,7 +2827,7 @@
- len = ACE_OS::strlen (number);
- }
-
-- // This call adds a proper null terminator to tmp, so no need to
-+ // This call adds a proper null terminator to tmp, so no need to
- // do it here.
- AST_Decl *d = idl_find_node (tmp);
-
-@@ -3009,7 +2844,7 @@
-
- d->version (ACE::strnew (number));
- }
-- else if (ACE_OS::strncmp (buf + 8, "ident", 5) == 0)
-+ else if (ACE_OS::strncmp (buf + 8, "ident", 5) == 0)
- {
- idl_global->ident_string (buf + 8);
- }
-@@ -3039,7 +2874,7 @@
- new_id);
- return;
- }
--
-+
- d->repoID (new_id);
- d->typeid_set (I_TRUE);
- }
-@@ -3137,24 +2972,24 @@
- double e, k;
- long neg = 0, negexp = 0;
-
-- if (*s == '-')
-+ if (*s == '-')
- {
- neg = 1;
- s++;
- }
-
-- while (*s >= '0' && *s <= '9')
-+ while (*s >= '0' && *s <= '9')
- {
- d = (d * 10) + *s - '0';
- s++;
- }
-
-- if (*s == '.')
-+ if (*s == '.')
- {
- s++;
- e = 10;
-
-- while (*s >= '0' && *s <= '9')
-+ while (*s >= '0' && *s <= '9')
- {
- d += (*s - '0') / (e * 1.0);
- e *= 10;
-@@ -3162,15 +2997,15 @@
- }
- }
-
-- if (*s == 'e' || *s == 'E')
-+ if (*s == 'e' || *s == 'E')
- {
- s++;
-
-- if (*s == '-')
-+ if (*s == '-')
- {
- negexp = 1;
- s++;
-- }
-+ }
- else if (*s == '+')
- {
- s++;
-@@ -3178,13 +3013,13 @@
-
- e = 0;
-
-- while (*s >= '0' && *s <= '9')
-+ while (*s >= '0' && *s <= '9')
- {
- e = (e * 10) + *s - '0';
- s++;
- }
-
-- if (e > 0)
-+ if (e > 0)
- {
- for (k = 1; e > 0; k *= 10, e--);
-
-@@ -3199,7 +3034,7 @@
- }
- }
-
-- if (neg)
-+ if (neg)
- {
- d *= -1.0;
- }
-@@ -3215,74 +3050,74 @@
- char *str
- )
- {
-- if (str[0] != '\\')
-+ if (str[0] != '\\')
- {
-- return str[0];
-+ return str[0];
- }
-
-- switch (str[1])
-+ switch (str[1])
- {
- case 'n':
-- return '\n';
-+ return '\n';
- case 't':
-- return '\t';
-+ return '\t';
- case 'v':
-- return '\v';
-+ return '\v';
- case 'b':
-- return '\b';
-+ return '\b';
- case 'r':
-- return '\r';
-+ return '\r';
- case 'f':
-- return '\f';
-+ return '\f';
- case 'a':
-- return '\a';
-+ return '\a';
- case '\\':
-- return '\\';
-+ return '\\';
- case '\?':
-- return '?';
-+ return '?';
- case '\'':
-- return '\'';
-+ return '\'';
- case '"':
-- return '"';
-+ return '"';
- case 'x':
-- {
-- int i;
-+ {
-+ int i;
-
-- // hex value
-- for (i = 2; str[i] != '\0' && isxdigit (str[i]); ++i)
-+ // hex value
-+ for (i = 2; str[i] != '\0' && isxdigit(str[i]); ++i)
- {
-- continue;
-- }
-+ continue;
-+ }
-
-- char save = str[i];
-- str[i] = '\0';
-- char out = (char)idl_atoui(&str[2], 16);
-- str[i] = save;
-- return out;
-- }
-- ACE_NOTREACHED (break;)
-+ char save = str[i];
-+ str[i] = '\0';
-+ char out = (char)idl_atoui(&str[2], 16);
-+ str[i] = save;
-+ return out;
-+ }
-+ ACE_NOTREACHED (break;)
- default:
-- // check for octal value
-- if (str[1] >= '0' && str[1] <= '7')
-+ // check for octal value
-+ if (str[1] >= '0' && str[1] <= '7')
- {
-- int i;
-+ int i;
-
-- for (i = 1; str[i] >= '0' && str[i] <= '7'; ++i)
-+ for (i = 1; str[i] >= '0' && str[i] <= '7'; ++i)
- {
-- continue;
-- }
-+ continue;
-+ }
-
-- char save = str[i];
-- str[i] = '\0';
-- char out = (char)idl_atoui(&str[1], 8);
-- str[i] = save;
-- return out;
-- }
-- else
-- {
-- return str[1] - 'a';
-- }
-- ACE_NOTREACHED (break;)
-+ char save = str[i];
-+ str[i] = '\0';
-+ char out = (char)idl_atoui(&str[1], 8);
-+ str[i] = save;
-+ return out;
-+ }
-+ else
-+ {
-+ return str[1] - 'a';
-+ }
-+ ACE_NOTREACHED (break;)
- }
- }
- /*
-@@ -3302,6 +3137,7 @@
- {
- continue;
- }
-+
- char save = str[i];
- str[i] = '\0';
- ACE_CDR::WChar out = (ACE_CDR::WChar) idl_atoui (&str[2], 16);
-@@ -3425,4 +3261,3 @@
-
- return d;
- }
--
+ int main()
+ {
diff --git a/TAO/TAO_IDL/fe/y.tab.cpp b/TAO/TAO_IDL/fe/y.tab.cpp
index 493280ecb2b..11575f7573d 100644
--- a/TAO/TAO_IDL/fe/y.tab.cpp
+++ b/TAO/TAO_IDL/fe/y.tab.cpp
@@ -6769,6 +6769,14 @@ tao_yyreduce:
ud.impl = interface_type;
ud.is_multiple = tao_yyvsp[-2].bval;
c->uses ().enqueue_tail (ud);
+
+ if (ud.is_multiple == I_TRUE)
+ {
+ // These datatypes must be created in the
+ // front end so they can be looked up
+ // when compiling the generated executor IDL.
+ idl_global->create_uses_multiple_stuff (c, ud);
+ }
}
}
break;
diff --git a/TAO/TAO_IDL/include/ast_component.h b/TAO/TAO_IDL/include/ast_component.h
index 675d79f1815..87a09901031 100644
--- a/TAO/TAO_IDL/include/ast_component.h
+++ b/TAO/TAO_IDL/include/ast_component.h
@@ -24,14 +24,6 @@ public:
// This also calls the base class version.
virtual void redefine (AST_Interface *from);
- // Extend lookup to the base component.
- virtual AST_Decl *look_in_inherited (UTL_ScopedName *e,
- idl_bool treat_as_ref);
-
- // Extend lookup to the supported interfaces.
- virtual AST_Decl *look_in_supported (UTL_ScopedName *e,
- idl_bool treat_as_ref);
-
// Utility data structure for port declarations.
struct port_description
{
diff --git a/TAO/TAO_IDL/include/ast_expression.h b/TAO/TAO_IDL/include/ast_expression.h
index 2c0c017ee36..76b1dfaa804 100644
--- a/TAO/TAO_IDL/include/ast_expression.h
+++ b/TAO/TAO_IDL/include/ast_expression.h
@@ -110,7 +110,6 @@ public:
// @@ (JP) I added these to get the ~ operator to work with all the
// relevant aritmetic types, but eventually, we should get rid of
// this whole enum.
- , EK_bool
, EK_short
, EK_ushort
, EK_long
@@ -286,7 +285,7 @@ public:
protected:
// Evaluate different sets of operators.
- AST_ExprValue *eval_bin_op (void);
+ AST_ExprValue *eval_bin_op (EvalKind ek);
AST_ExprValue *eval_bit_op (EvalKind ek);
diff --git a/TAO/TAO_IDL/include/ast_home.h b/TAO/TAO_IDL/include/ast_home.h
index 1bf5818b68c..f68276c7adc 100644
--- a/TAO/TAO_IDL/include/ast_home.h
+++ b/TAO/TAO_IDL/include/ast_home.h
@@ -27,14 +27,6 @@ public:
virtual ~AST_Home (void);
- // Extend lookup to the base home.
- virtual AST_Decl *look_in_inherited (UTL_ScopedName *e,
- idl_bool treat_as_ref);
-
- // Extend lookup to the supported interfaces.
- virtual AST_Decl *look_in_supported (UTL_ScopedName *e,
- idl_bool treat_as_ref);
-
// Accessors.
AST_Home *base_home (void) const;
diff --git a/TAO/TAO_IDL/include/ast_interface.h b/TAO/TAO_IDL/include/ast_interface.h
index 8aeb582807e..5696d39a464 100644
--- a/TAO/TAO_IDL/include/ast_interface.h
+++ b/TAO/TAO_IDL/include/ast_interface.h
@@ -126,9 +126,6 @@ public:
// and check if there is such a clash among the parents
virtual idl_bool redef_clash (void);
- // Look through inherited interfaces.
- virtual AST_Decl *look_in_inherited (UTL_ScopedName *e,
- idl_bool treat_as_ref);
// Cleanup function.
virtual void destroy (void);
diff --git a/TAO/TAO_IDL/include/ast_module.h b/TAO/TAO_IDL/include/ast_module.h
index 88f33844aea..69d53f9df6e 100644
--- a/TAO/TAO_IDL/include/ast_module.h
+++ b/TAO/TAO_IDL/include/ast_module.h
@@ -108,11 +108,6 @@ public:
int be_add_interface (AST_Interface *i,
AST_Interface *ix = 0);
- // Has this node been referenced here already?
- // Override of method in UTL_Scope.
- virtual idl_bool referenced (AST_Decl *e,
- Identifier *id = 0);
-
// Add decls from previous opening of this module to the
// 'previous' set of this module, along with the argument's
// own 'previous' set.
diff --git a/TAO/TAO_IDL/include/ast_valuetype.h b/TAO/TAO_IDL/include/ast_valuetype.h
index 2aa0a8de653..4090d3d453d 100644
--- a/TAO/TAO_IDL/include/ast_valuetype.h
+++ b/TAO/TAO_IDL/include/ast_valuetype.h
@@ -43,10 +43,6 @@ public:
virtual idl_bool will_have_factory (void);
// Called from y.tab.cpp to set the factory decl seen bit.
- // Look up a scoped name in the supported interface list.
- virtual AST_Decl *look_in_supported (UTL_ScopedName *,
- idl_bool treat_as_ref);
-
// Cleanup function.
virtual void destroy (void);
diff --git a/TAO/TAO_IDL/include/idl_defines.h b/TAO/TAO_IDL/include/idl_defines.h
index ddc497d86a2..e6395d1f3e2 100644
--- a/TAO/TAO_IDL/include/idl_defines.h
+++ b/TAO/TAO_IDL/include/idl_defines.h
@@ -67,8 +67,6 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#ifndef _IDL_DEFINES_IDL_DEFINES_HH
#define _IDL_DEFINES_IDL_DEFINES_HH
-#include "ace/os_include/os_limits.h"
-
/*
* idl_defines.hh - Defines global compiler flags
*/
diff --git a/TAO/TAO_IDL/include/idl_global.h b/TAO/TAO_IDL/include/idl_global.h
index e0cb760293e..39ac2a0cb32 100644
--- a/TAO/TAO_IDL/include/idl_global.h
+++ b/TAO/TAO_IDL/include/idl_global.h
@@ -463,6 +463,12 @@ public:
virtual const char *ident_string (void) const;
// Get the value of the #ident string.
+ virtual void obv_support (idl_bool);
+ // set enable/disable OBV (Valuetype) support
+
+ virtual idl_bool obv_support (void);
+ // check if OBV (Valuetype) support is enabled
+
virtual void case_diff_error (idl_bool);
// report an error (1) for indentifiers in the same scope
// that differ only by case, or report a warning (0).
@@ -529,11 +535,12 @@ public:
ACE_Hash_Map_Manager<ACE_CString, char *, ACE_Null_Mutex> &
file_prefixes (void);
- // Accessor for the IDL file prefix container.
+ // Accessor for the IDL keyword container.
- idl_bool pass_orb_idl (void) const;
- void pass_orb_idl (idl_bool val);
- // Accessor for the pass_orb_idl_ member.
+ void create_uses_multiple_stuff (AST_Component *c,
+ AST_Component::port_description &pd);
+ // We must do this in the front end since the executor
+ // mapping IDL will have these data types.
int check_gperf (void);
// Currently called only from IDL backend, but could be useful elsewhere.
@@ -593,6 +600,9 @@ private:
// Holds a string that begins with #ident, to be passed from the IDL
// file to the generated files.
+ idl_bool obv_support_;
+ // Do we support OBV (Valuetype)?
+
idl_bool case_diff_error_;
// Do we report an error for indentifiers in the same scope that differ
// only by case? or just a warning?
@@ -620,9 +630,6 @@ private:
ACE_Hash_Map_Manager<ACE_CString, char *, ACE_Null_Mutex> file_prefixes_;
// Associates a prefix with a file.
-
- idl_bool pass_orb_idl_;
- // Treat orb.idl like any other included IDL file.
};
diff --git a/TAO/TAO_IDL/include/utl_err.h b/TAO/TAO_IDL/include/utl_err.h
index 5983c4ce49e..03741e30463 100644
--- a/TAO/TAO_IDL/include/utl_err.h
+++ b/TAO/TAO_IDL/include/utl_err.h
@@ -134,7 +134,6 @@ public:
EIDL_UNDERSCORE, // More than one leading underscore
EIDL_EMPTY_MODULE, // Empty modules not allowed in IDL.
EIDL_BACK_END, // Back end error
- EIDL_ILLEGAL_INFIX, // Illegal infix operator in expression
EIDL_OK // No error
};
@@ -227,10 +226,16 @@ public:
void abstract_inheritance_error (UTL_ScopedName *v,
UTL_ScopedName *i);
- // Report an attempt to support more then one concrete type.
+ // Report an attempt to support more then one abstract type.
void abstract_support_error (UTL_ScopedName *v,
UTL_ScopedName *i);
+ // Report a situation where a concrete interface was expected but we got
+ // something else instead. This most likely is a case in a supports
+ // or inheritance list.
+ void concrete_interface_expected (UTL_ScopedName *c,
+ UTL_ScopedName *i);
+
// Report a situation where a non-local interface was expected but we got
// something else instead. This most likely is a case in a supports
// or inheritance list.
@@ -320,10 +325,6 @@ public:
// Report back-end error
void back_end (long lineno,
UTL_String *s);
-
- // Report illegal infix operator error (they can be used
- // only with integer, floating point or fixed point expressions.
- void illegal_infix (void);
};
#endif // _UTL_ERR_UTL_ERR_HH
diff --git a/TAO/TAO_IDL/include/utl_scope.h b/TAO/TAO_IDL/include/utl_scope.h
index b9d990d2b36..f8d4c067b00 100644
--- a/TAO/TAO_IDL/include/utl_scope.h
+++ b/TAO/TAO_IDL/include/utl_scope.h
@@ -291,17 +291,13 @@ protected:
void add_to_local_types (AST_Decl *e);
// Has this node been referenced here already?
- virtual idl_bool referenced (AST_Decl *e,
- Identifier *id = 0);
+ idl_bool referenced (AST_Decl *e,
+ Identifier *id = 0);
- // Look up a scoped name in the inherited list.
+ // Look up a scoped name in the inherited interfaces of an
+ // interface.
virtual AST_Decl *look_in_inherited (UTL_ScopedName *,
idl_bool treat_as_ref);
-
- // Look up a scoped name in the supported interface list.
- virtual AST_Decl *look_in_supported (UTL_ScopedName *,
- idl_bool treat_as_ref);
-
// Lookup based on the local name.
AST_Decl *lookup_for_add (AST_Decl *d,
idl_bool treat_as_ref);
diff --git a/TAO/TAO_IDL/util/utl_err.cpp b/TAO/TAO_IDL/util/utl_err.cpp
index 51b2afc7e7c..98a9f56c6ff 100644
--- a/TAO/TAO_IDL/util/utl_err.cpp
+++ b/TAO/TAO_IDL/util/utl_err.cpp
@@ -199,8 +199,6 @@ error_string (UTL_Error::ErrorCode c)
return "module must contain at least one declaration: ";
case UTL_Error::EIDL_BACK_END:
return "back end: ";
- case UTL_Error::EIDL_ILLEGAL_INFIX:
- return "illegal infix operator in expression";
}
return 0;
@@ -945,7 +943,26 @@ UTL_Error::abstract_support_error (UTL_ScopedName *v,
idl_global->set_err_count (idl_global->err_count () + 1);
}
-// Report illegal component or home support of local interface.
+// Report illegal component or home support of abstract interface.
+void
+UTL_Error::concrete_interface_expected (UTL_ScopedName *c,
+ UTL_ScopedName *i)
+{
+ idl_error_header (EIDL_CANT_SUPPORT,
+ idl_global->lineno (),
+ idl_global->filename ());
+ ACE_ERROR ((LM_ERROR,
+ " component or home "));
+ c->dump (*ACE_DEFAULT_LOG_STREAM);
+ ACE_ERROR ((LM_ERROR,
+ " attempts to support an abstract interface: "));
+ i->dump (*ACE_DEFAULT_LOG_STREAM);
+ ACE_ERROR ((LM_ERROR,
+ "\n"));
+ idl_global->set_err_count (idl_global->err_count () + 1);
+}
+
+// Report illegal component or home support of abstract interface.
void
UTL_Error::unconstrained_interface_expected (UTL_ScopedName *c,
UTL_ScopedName *i)
@@ -1339,19 +1356,6 @@ UTL_Error::back_end (long lineno,
idl_error_header (EIDL_BACK_END,
lineno,
s);
- ACE_ERROR ((LM_ERROR,
- "\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
-}
-
-void
-UTL_Error::illegal_infix (void)
-{
- idl_error_header (EIDL_ILLEGAL_INFIX,
- idl_global->lineno (),
- idl_global->filename ());
- ACE_ERROR ((LM_ERROR,
- "\n"));
idl_global->set_err_count (idl_global->err_count () + 1);
}
diff --git a/TAO/TAO_IDL/util/utl_global.cpp b/TAO/TAO_IDL/util/utl_global.cpp
index 008eae5be2c..2059501580e 100644
--- a/TAO/TAO_IDL/util/utl_global.cpp
+++ b/TAO/TAO_IDL/util/utl_global.cpp
@@ -179,11 +179,11 @@ IDL_GlobalData::IDL_GlobalData (void)
gperf_path_ (0),
temp_dir_ (0),
ident_string_ (0),
+ obv_support_ (I_TRUE),
case_diff_error_ (I_TRUE),
nest_orb_ (I_FALSE),
idl_flags_ (""),
- preserve_cpp_keywords_ (I_TRUE),
- pass_orb_idl_ (I_FALSE)
+ preserve_cpp_keywords_ (I_TRUE)
{
// Path for the perfect hash generator(gperf) program.
// Default is $ACE_ROOT/bin/gperf unless ACE_GPERF is defined.
@@ -191,7 +191,6 @@ IDL_GlobalData::IDL_GlobalData (void)
// in the environment.
// Form the absolute pathname.
char* ace_root = ACE_OS::getenv ("ACE_ROOT");
-
if (ace_root == 0)
// This may not cause any problem if -g option is used to specify
// the correct path for the gperf program. Let us ignore this
@@ -981,6 +980,18 @@ IDL_GlobalData::ident_string (void) const
}
void
+IDL_GlobalData::obv_support (idl_bool val)
+{
+ this->obv_support_ = val;
+}
+
+idl_bool
+IDL_GlobalData::obv_support (void)
+{
+ return this->obv_support_;
+}
+
+void
IDL_GlobalData::case_diff_error (idl_bool val)
{
this->case_diff_error_ = val;
@@ -1308,16 +1319,86 @@ IDL_GlobalData::file_prefixes (void)
return this->file_prefixes_;
}
-idl_bool
-IDL_GlobalData::pass_orb_idl (void) const
-{
- return this->pass_orb_idl_;
-}
-
void
-IDL_GlobalData::pass_orb_idl (idl_bool val)
+IDL_GlobalData::create_uses_multiple_stuff (
+ AST_Component *c,
+ AST_Component::port_description &pd
+ )
{
- this->pass_orb_idl_ = val;
+ ACE_CString struct_name (pd.id->get_string ());
+ struct_name += "Connection";
+ Identifier struct_id (struct_name.c_str ());
+ UTL_ScopedName sn (&struct_id, 0);
+ AST_Structure *connection =
+ idl_global->gen ()->create_structure (&sn, 0, 0);
+ struct_id.destroy ();
+
+ Identifier object_id ("objref");
+ UTL_ScopedName object_name (&object_id,
+ 0);
+ AST_Field *object_field =
+ idl_global->gen ()->create_field (pd.impl,
+ &object_name,
+ AST_Field::vis_NA);
+ (void) DeclAsScope (connection)->fe_add_field (object_field);
+ object_id.destroy ();
+
+ Identifier local_id ("Cookie");
+ UTL_ScopedName local_name (&local_id,
+ 0);
+ Identifier module_id ("Components");
+ UTL_ScopedName scoped_name (&module_id,
+ &local_name);
+ AST_Decl *d = c->lookup_by_name (&scoped_name,
+ I_TRUE);
+ local_id.destroy ();
+ module_id.destroy ();
+
+ if (d == 0)
+ {
+ // This would happen if we haven't included Componennts.idl.
+ idl_global->err ()->lookup_error (&scoped_name);
+ return;
+ }
+
+ AST_ValueType *cookie = AST_ValueType::narrow_from_decl (d);
+
+ Identifier cookie_id ("ck");
+ UTL_ScopedName cookie_name (&cookie_id,
+ 0);
+ AST_Field *cookie_field =
+ idl_global->gen ()->create_field (cookie,
+ &cookie_name,
+ AST_Field::vis_NA);
+ (void) DeclAsScope (connection)->fe_add_field (cookie_field);
+ cookie_id.destroy ();
+
+ (void) c->fe_add_structure (connection);
+
+ ACE_UINT64 bound = 0;
+ AST_Expression *bound_expr =
+ idl_global->gen ()->create_expr (bound,
+ AST_Expression::EV_ulong);
+ AST_Sequence *sequence =
+ idl_global->gen ()->create_sequence (bound_expr,
+ connection,
+ 0,
+ 0,
+ 0);
+
+ ACE_CString seq_string (pd.id->get_string ());
+ seq_string += "Connections";
+ Identifier seq_id (seq_string.c_str ());
+ UTL_ScopedName seq_name (&seq_id,
+ 0);
+ AST_Typedef *connections =
+ idl_global->gen ()->create_typedef (sequence,
+ &seq_name,
+ 0,
+ 0);
+ seq_id.destroy ();
+
+ (void) c->fe_add_typedef (connections);
}
// Return 0 on success, -1 failure. The <errno> corresponding to the
diff --git a/TAO/TAO_IDL/util/utl_scope.cpp b/TAO/TAO_IDL/util/utl_scope.cpp
index 083cb626c64..b790d4070c7 100644
--- a/TAO/TAO_IDL/util/utl_scope.cpp
+++ b/TAO/TAO_IDL/util/utl_scope.cpp
@@ -1576,20 +1576,79 @@ UTL_Scope::lookup_primitive_type (AST_Expression::ExprType et)
return 0;
}
-// Look through inherited list. Overridden in AST_Interface.
+// Look through inherited interfaces.
AST_Decl *
-UTL_Scope::look_in_inherited (UTL_ScopedName *,
- idl_bool )
+UTL_Scope::look_in_inherited (UTL_ScopedName *e,
+ idl_bool treat_as_ref)
{
- return 0;
-}
+ AST_Decl *d = 0;
+ AST_Decl *d_before = 0;
+ AST_Interface *i = AST_Interface::narrow_from_scope (this);
+ AST_Interface **is = 0;
+ long nis = -1;
-// Look through supported interface list. Overridden where necessary.
-AST_Decl *
-UTL_Scope::look_in_supported (UTL_ScopedName *,
- idl_bool)
-{
- return 0;
+ // This scope is not an interface.
+ if (i == 0)
+ {
+ return 0;
+ }
+
+ // Can't look in an interface which was not yet defined.
+ if (!i->is_defined ())
+ {
+ idl_global->err ()->fwd_decl_lookup (i,
+ e);
+ return 0;
+ }
+
+ // OK, loop through inherited interfaces.
+
+ // (Don't leave the inheritance hierarchy, no module or global ...)
+ // Find all and report ambiguous results as error.
+
+ for (nis = i->n_inherits (), is = i->inherits (); nis > 0; nis--, is++)
+ {
+ d = (*is)->lookup_by_name (e,
+ treat_as_ref,
+ 0 /* not in parent */);
+ if (d != 0)
+ {
+ if (d_before == 0)
+ {
+ // First result found.
+ d_before = d;
+ }
+ else
+ {
+ // Conflict against further results?
+ if (d != d_before)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "warning in %s line %d: ",
+ idl_global->filename ()->get_string (),
+ idl_global->lineno ()));
+
+ e->dump (*ACE_DEFAULT_LOG_STREAM);
+
+ ACE_ERROR ((LM_ERROR,
+ " is ambiguous in scope.\n"
+ "Found "));
+
+ d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
+
+ ACE_ERROR ((LM_ERROR,
+ " and "));
+
+ d_before->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
+
+ ACE_ERROR ((LM_ERROR,
+ ".\n"));
+ }
+ }
+ }
+ }
+
+ return d_before;
}
// Look up a String * in local scope only.
@@ -1620,11 +1679,7 @@ UTL_Scope::lookup_by_name_local (Identifier *e,
idl_bool in_corba =
ACE_OS::strcmp (e->get_string (), "CORBA") == 0;
- // Iterate over this scope. We need IK_both here for the legacy
- // case where a recursive type is defined via an anonymous sequence.
- // Looking up the anonymous sequence parameter succeeds only if
- // references are included, since the decl for the (unfinished)
- // enclosing type has not yet been added to the scope decls.
+ // Iterate over this scope.
for (UTL_ScopeActiveIterator i (this, UTL_Scope::IK_both);
!i.is_done ();
i.next ())
@@ -1770,13 +1825,17 @@ UTL_Scope::lookup_by_name (UTL_ScopedName *e,
if (d == 0)
{
- // A no-op unless d can inherit.
- d = look_in_inherited (e, treat_as_ref);
-
- if (d == 0)
+
+ // Special case for scope which is an interface or value type.
+ // We have to look in the inherited interfaces as well.
+ // Look before parent scopes.
+ if (pd_scope_node_type == AST_Decl::NT_interface
+ || pd_scope_node_type == AST_Decl::NT_valuetype
+ || pd_scope_node_type == AST_Decl::NT_component
+ || pd_scope_node_type == AST_Decl::NT_eventtype)
{
- // A no-op unless d can support interfaces.
- d = look_in_supported (e, treat_as_ref);
+ d = look_in_inherited (e,
+ treat_as_ref);
}
if ((d == 0) && in_parent && idl_global->err_count () == 0)
@@ -1847,6 +1906,7 @@ UTL_Scope::lookup_by_name (UTL_ScopedName *e,
}
// For the possible call to look_in_inherited() below.
+ AST_Decl::NodeType nt = d->node_type ();
t = DeclAsScope (d);
// OK, start of name is defined. Now loop doing local lookups
@@ -1865,9 +1925,10 @@ UTL_Scope::lookup_by_name (UTL_ScopedName *e,
// up was inherited into that interface. The first call to
// look_in_inherited() is this function only checks base classes
// of the scope (interface) we started the lookup from.
- if (d == 0)
+ if (d == 0 && nt == AST_Decl::NT_interface)
{
- d = t->look_in_inherited (sn, treat_as_ref);
+ d = t->look_in_inherited (sn,
+ treat_as_ref);
}
// If treat_as_ref is true and d is not 0, add d to