diff options
Diffstat (limited to 'TAO/TAO_IDL/fe/fe_interface_header.cpp')
-rw-r--r-- | TAO/TAO_IDL/fe/fe_interface_header.cpp | 369 |
1 files changed, 181 insertions, 188 deletions
diff --git a/TAO/TAO_IDL/fe/fe_interface_header.cpp b/TAO/TAO_IDL/fe/fe_interface_header.cpp index 4920f4d41ba..8d44332cf3d 100644 --- a/TAO/TAO_IDL/fe/fe_interface_header.cpp +++ b/TAO/TAO_IDL/fe/fe_interface_header.cpp @@ -62,25 +62,32 @@ NOTE: SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are trademarks or registered trademarks of Sun Microsystems, Inc. -*/ + */ -// FE_InterfaceHeader instances are used to store information about an -// interface header as the interface is being parsed and before the -// AST_Interface node used to represent this interface is created. +/* + * fe_interface_header.cc - Implements the FE private class FE_InterfaceHeader + * + * FE_InterfaceHeader instances are used to store information about an + * interface header as the interface is being parsed and before the + * AST_Interface node used to represent this interface is created. + */ + +#include "idl.h" +#include "idl_extern.h" -#include "idl.h" -#include "idl_extern.h" -#include "fe_private.h" +#include "fe_private.h" ACE_RCSID(fe, fe_interface_header, "$Id$") -// Constructor(s) and destructor +/* + * Constructor(s) and destructor + */ FE_InterfaceHeader::FE_InterfaceHeader (UTL_ScopedName *n, UTL_NameList *nl, UTL_NameList *supports, idl_bool compile_now) - : pd_interface_name (n) + : pd_interface_name(n) { if (compile_now) { @@ -93,107 +100,115 @@ FE_InterfaceHeader::~FE_InterfaceHeader (void) { } +/* + * Private operations + */ + // Compute flattened, non-repeating list of inherited interfaces #undef INCREMENT -#define INCREMENT 512 +#define INCREMENT 512 -// Private storage used to store interfaces seen already in the -// computation of the unique inheritance list. -static AST_Interface **iseen = 0; -static long iallocated = 0; -static long iused = 0; +/* + * Private storage used to store interfaces seen already in the + * computation of the unique inheritance list + */ +static AST_Interface **iseen = NULL; +static long iallocated = 0; +static long iused = 0; // Same as above, but the list is flattened and // includes all ancestors, not just immediate ones. -static AST_Interface **iseen_flat = 0; -static long iallocated_flat = 0; -static long iused_flat = 0; +static AST_Interface **iseen_flat = NULL; +static long iallocated_flat = 0; +static long iused_flat = 0; -// Add an interface to an inheritance spec. +/* + * Add an interface to an inheritance spec + */ static void add_inheritance (AST_Interface *i) { - AST_Interface **oiseen; + long k; + AST_Interface **oiseen; - // Make sure there's space for one more. + /* + * Make sure there's space for one more + */ if (iallocated == iused) { if (iallocated == 0) { iallocated = INCREMENT; - - ACE_NEW (iseen, - AST_Interface *[iallocated]); + iseen = new AST_Interface *[iallocated]; } else { oiseen = iseen; iallocated += INCREMENT; + iseen = new AST_Interface *[iallocated]; - ACE_NEW (iseen, - AST_Interface *[iallocated]); - - for (long k = 0; k < iused; k++) - { - iseen[k] = oiseen[k]; - } + for (k = 0; k < iused; k++) + iseen[k] = oiseen[k]; delete oiseen; } } - - // OK, now insert it. - iseen[iused++] = i; + /* + * OK, now insert it + */ + iseen[iused] = i; + iused++; } // Add an interface to the flat list. static void add_inheritance_flat (AST_Interface *i) { - AST_Interface **oiseen_flat; + long k; + AST_Interface **oiseen_flat; - // Make sure there's space for one more + /* + * Make sure there's space for one more + */ if (iallocated_flat == iused_flat) { if (iallocated_flat == 0) { iallocated_flat = INCREMENT; - - ACE_NEW (iseen_flat, - AST_Interface *[iallocated_flat]); + iseen_flat = new AST_Interface *[iallocated_flat]; } else { oiseen_flat = iseen_flat; iallocated_flat += INCREMENT; + iseen_flat = new AST_Interface *[iallocated_flat]; - ACE_NEW (iseen_flat, - AST_Interface *[iallocated_flat]); - - for (long k = 0; k < iused_flat; k++) - { - iseen_flat[k] = oiseen_flat[k]; - } + for (k = 0; k < iused_flat; k++) + iseen_flat[k] = oiseen_flat[k]; delete oiseen_flat; } } - - // OK, now insert it - iseen_flat[iused_flat++] = i; + /* + * OK, now insert it + */ + iseen_flat[iused_flat] = i; + iused_flat++; } -// Have we already seen this interface? +/* + * Have we already seen this interface? + */ static long already_seen (AST_Interface *ip) { - for (long i = 0; i < iused; i++) + long i; + + for (i = 0; i < iused; i++) { if (iseen[i] == ip) - { - return I_TRUE; - } + return I_TRUE; } return I_FALSE; @@ -203,12 +218,12 @@ already_seen (AST_Interface *ip) static long already_seen_flat (AST_Interface *ip) { - for (long i = 0; i < iused_flat; i++) + long i; + + for (i = 0; i < iused_flat; i++) { if (iseen_flat[i] == ip) - { - return I_TRUE; - } + return I_TRUE; } return I_FALSE; @@ -226,30 +241,30 @@ FE_InterfaceHeader::is_abstract (void) return 0; } -// Add this interface to the list of inherited if not already there. +/* + * Add this interface to the list of inherited if not already there + */ void FE_InterfaceHeader::compile_one_inheritance (AST_Interface *i) { - // Check for badly formed interface. + /* + * Check for badly formed interface + */ if (i == NULL) - { - return; - } - - // If we've seen it already then don't expand again. + return; + /* + * If we've seen it already then don't expand again + */ if (already_seen (i)) - { - return; - } - - // OK, add i to the list of inherited interfaces. + return; + /* + * OK, add i to the list of inherited interfaces + */ add_inheritance (i); - // And add i to the flat list as well. + // And add i to the flat list as well if (!already_seen_flat (i)) - { - add_inheritance_flat (i); - } + add_inheritance_flat (i); // Add i's parents to the flat list. AST_Interface **parents = i->inherits (); @@ -260,107 +275,89 @@ FE_InterfaceHeader::compile_one_inheritance (AST_Interface *i) AST_Interface *tmp = parents[j]; if (already_seen_flat (tmp)) - { - continue; - } + continue; add_inheritance_flat (tmp); } } -// Compute the list of top-level interfaces this one inherits from. +/* + * Compute the list of top-level interfaces this one inherits from + */ void FE_InterfaceHeader::compile_inheritance (UTL_NameList *ifaces, UTL_NameList *supports) { - UTL_NamelistActiveIterator *l = 0; - AST_Decl *d = 0; - AST_Interface *i = 0; - long j, k; - UTL_NameList *nl = ifaces; - long ichecked = 0; - idl_bool inh_err = 0; - idl_bool in_supports = 0; + UTL_NamelistActiveIterator *l; + AST_Decl *d; + AST_Interface *i; + long j, k; + UTL_NameList *nl; + int loops; + long ichecked = 0; + idl_bool inh_err = 0; + idl_bool in_supports = 0; iused = 0; iused_flat = 0; - - //Compute expanded flattened non-repeating list of interfaces - // which this one inherits from. - - // Loop twice if nl and supports are nonempty. - for (int loops = 0; loops < 2; ++loops) + /* + * Compute expanded flattened non-repeating list of interfaces + * which this one inherits from + */ + nl = ifaces; + // loop twice if nl and supports are nonempty + for (loops = 0; loops < 2; ++loops) { if (nl != NULL) { - ACE_NEW (l, - UTL_NamelistActiveIterator (nl)); + l = new UTL_NamelistActiveIterator (nl); - while (!l->is_done ()) + while (!(l->is_done ())) { - // Check that scope stack is valid - if (idl_global->scopes ()->top () == 0) + /* + * Check that scope stack is valid + */ + if (idl_global->scopes ()->top () == NULL) { idl_global->err ()->lookup_error (l->item ()); return; } - - // Look it up - UTL_Scope *s = idl_global->scopes ()->top (); - - d = s->lookup_by_name (l->item (), - I_TRUE); - - if (d == 0) - { - AST_Decl *sad = ScopeAsDecl (s); - - if (sad->node_type () == AST_Decl::NT_module) - { - AST_Module *m = AST_Module::narrow_from_decl (sad); - - d = m->look_in_previous (l->item ()->last_component ()); - } - } - - // Not found? - if (d == 0) + /* + * Look it up + */ + d = idl_global->scopes ()->top ()->lookup_by_name (l->item (), + I_TRUE); + /* + * Not found? + */ + if (d == NULL) { idl_global->err ()->lookup_error (l->item ()); return; } - - // Not an appropriate interface? + /* + * Not an appropriate interface? + */ while (d->node_type () == AST_Decl::NT_typedef) - { - d = AST_Typedef::narrow_from_decl (d)->base_type (); - } + d = AST_Typedef::narrow_from_decl (d)->base_type (); if (d->node_type () == AST_Decl::NT_interface) - { - i = AST_Interface::narrow_from_decl (d); - } + i = AST_Interface::narrow_from_decl (d); else - { - i = 0; - } + i = NULL; - if (i != 0) + if (i != NULL) { if (in_supports) { - inh_err = !this->check_supports (i); + inh_err = ! this->check_supports (i); } else { if (ichecked == 0) - { - inh_err = !this->check_first (i); - } + inh_err = ! this->check_first (i); else - { - inh_err = !this->check_further (i); - } + inh_err = ! this->check_further (i); } } else @@ -372,10 +369,12 @@ FE_InterfaceHeader::compile_inheritance (UTL_NameList *ifaces, { idl_global->err ()->inheritance_error (pd_interface_name, d); - return; // @@ really ? inh_err=0; and test the remaining...? + return; //%! really ? inh_err=0; and test the remaining...? } - // Forward declared interface? + /* + * Forward declared interface? + */ if (!i->is_defined ()) { idl_global->err ()->inheritance_fwd_error (pd_interface_name, @@ -383,18 +382,20 @@ FE_InterfaceHeader::compile_inheritance (UTL_NameList *ifaces, return; } - // OK, see if we have to add this to the list of interfaces - // inherited from. - this->compile_one_inheritance (i); + /* + * OK, see if we have to add this to the list of interfaces + * inherited from + */ + compile_one_inheritance (i); - // Next element in header list. - ++ichecked; + /* + * Next element in header list + */ + ++ ichecked; l->next (); } - delete l; } - in_supports = 1; nl = supports; } @@ -404,39 +405,33 @@ FE_InterfaceHeader::compile_inheritance (UTL_NameList *ifaces, this->pd_inherits_flat = new AST_Interface *[iused_flat]; for (j = 0; j < iused_flat; j++) - { - this->pd_inherits_flat[j] = iseen_flat[j]; - } + this->pd_inherits_flat[j] = iseen_flat[j]; this->pd_n_inherits_flat = iused_flat; // Then the list of immediate ancestors - ACE_NEW (this->pd_inherits, - AST_Interface *[iused]); + pd_inherits = new AST_Interface *[iused]; for (k = 0; k < iused; k++) - { - this->pd_inherits[k] = iseen[k]; - } + this->pd_inherits[k] = iseen[k]; this->pd_n_inherits = iused; } // check_ methods called from compile_inheritance() -// overridden in derived classes. +// overridden in derived classes idl_bool FE_InterfaceHeader::check_first (AST_Interface *i) { - // Nothing special for the first. + // nothing special for the first return this->check_further (i); } idl_bool FE_InterfaceHeader::check_further (AST_Interface *i) { - if (i != 0 - && !i->is_valuetype () - && (this->is_local () || !i->is_local ())) + if (i && ! i->is_valuetype () && + (this->is_local () || !i->is_local ())) { return 1; } @@ -452,45 +447,53 @@ FE_InterfaceHeader::check_supports (AST_Interface *) return 0; } -// Data accessors + +/* + * Public operations + */ + +/* + * Redefinition of inherited virtual operations + */ + +/* + * Data accessors + */ UTL_ScopedName * FE_InterfaceHeader::interface_name (void) { - return this->pd_interface_name; + return pd_interface_name; } AST_Interface ** FE_InterfaceHeader::inherits (void) { - return this->pd_inherits; + return pd_inherits; } long FE_InterfaceHeader::n_inherits (void) { - return this->pd_n_inherits; + return pd_n_inherits; } AST_Interface ** FE_InterfaceHeader::inherits_flat (void) { - return this->pd_inherits_flat; + return pd_inherits_flat; } long FE_InterfaceHeader::n_inherits_flat (void) { - return this->pd_n_inherits_flat; + return pd_n_inherits_flat; } FE_Local_InterfaceHeader::FE_Local_InterfaceHeader (UTL_ScopedName *n, UTL_NameList *nl, UTL_NameList *supports) - : FE_InterfaceHeader (n, - nl, - supports, - 0) + : FE_InterfaceHeader (n, nl, supports, 0) { compile_inheritance (nl, supports); @@ -506,10 +509,7 @@ FE_Abstract_InterfaceHeader::FE_Abstract_InterfaceHeader (UTL_ScopedName *n, UTL_NameList *nl, UTL_NameList *supports) - : FE_InterfaceHeader (n, - nl, - supports, - 0) + : FE_InterfaceHeader (n, nl, supports, 0) { compile_inheritance (nl, supports); @@ -528,10 +528,7 @@ FE_Abstract_InterfaceHeader::is_abstract (void) FE_obv_header::FE_obv_header (UTL_ScopedName *n, UTL_NameList *nl, UTL_NameList *supports) - : FE_InterfaceHeader (n, - nl, - supports, - 0), + : FE_InterfaceHeader (n, nl, supports,0), truncatable_ (0), n_concrete_ (0) { @@ -543,12 +540,10 @@ FE_obv_header::FE_obv_header (UTL_ScopedName *n, idl_bool FE_obv_header::check_first (AST_Interface *i) { - if (i != 0 && i->is_valuetype ()) + if (i && i->is_valuetype ()) { - if (!i->is_abstract_valuetype ()) - { - ++this->n_concrete_; - } + if (! i->is_abstract_valuetype ()) + ++ n_concrete_; return 1; } @@ -561,9 +556,7 @@ FE_obv_header::check_first (AST_Interface *i) idl_bool FE_obv_header::check_further (AST_Interface *i) { - if (i != 0 - && i->is_valuetype () - && i->is_abstract_valuetype ()) + if (i && i->is_valuetype () && i->is_abstract_valuetype ()) { return 1; } @@ -576,7 +569,7 @@ FE_obv_header::check_further (AST_Interface *i) idl_bool FE_obv_header::check_supports (AST_Interface *i) { - if (i && !i->is_valuetype ()) + if (i && ! i->is_valuetype ()) { return 1; } @@ -588,9 +581,9 @@ FE_obv_header::check_supports (AST_Interface *i) long -FE_obv_header::n_concrete (void) +FE_obv_header::n_concrete () { - return this->n_concrete_; + return n_concrete_; } // #endif /* IDL_HAS_VALUETYPE */ |