ACE_Static_Function_Node Class Reference

Keeps track of the symbol name for a function that is not linked in from a DLL, but is statically linked with the application. More...

#include <Parse_Node.h>

Inheritance diagram for ACE_Static_Function_Node:

Inheritance graph
[legend]
Collaboration diagram for ACE_Static_Function_Node:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ACE_Static_Function_Node (const ACE_TCHAR *func_name)
virtual void * symbol (ACE_Service_Gestalt *config, int &yyerrno, ACE_Service_Object_Exterminator *=0)
virtual ~ACE_Static_Function_Node (void)
void dump (void) const
 Dump the state of an object.


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Private Member Functions

 ACE_Static_Function_Node (const ACE_Static_Function_Node &)
ACE_Static_Function_Nodeoperator= (const ACE_Static_Function_Node &)

Private Attributes

const ACE_TCHARfunction_name_
 Name of the function that we're parsing.


Detailed Description

Keeps track of the symbol name for a function that is not linked in from a DLL, but is statically linked with the application.

Note:
This class is only meant for INTERNAL use by ACE.

For internal use only.

Definition at line 455 of file Parse_Node.h.


Constructor & Destructor Documentation

ACE_Static_Function_Node::ACE_Static_Function_Node const ACE_TCHAR func_name  )  [explicit]
 

Definition at line 692 of file Parse_Node.cpp.

References ACE_TCHAR, and ACE_TRACE.

00693   : function_name_ (ACE::strnew (func_name))
00694 {
00695   ACE_TRACE ("ACE_Static_Function_Node::ACE_Static_Function_Node");
00696   this->must_delete_ = 1;
00697 }

ACE_Static_Function_Node::~ACE_Static_Function_Node void   )  [virtual]
 

Definition at line 753 of file Parse_Node.cpp.

References ACE_TRACE.

00754 {
00755   ACE_TRACE ("ACE_Static_Function_Node::~ACE_Static_Function_Node");
00756   delete[] const_cast<ACE_TCHAR *> (this->function_name_);
00757 }

ACE_Static_Function_Node::ACE_Static_Function_Node const ACE_Static_Function_Node  )  [private]
 


Member Function Documentation

void ACE_Static_Function_Node::dump void   )  const
 

Dump the state of an object.

Reimplemented from ACE_Location_Node.

Definition at line 685 of file Parse_Node.cpp.

References ACE_TRACE.

00686 {
00687 #if defined (ACE_HAS_DUMP)
00688   ACE_TRACE ("ACE_Static_Function_Node::dump");
00689 #endif /* ACE_HAS_DUMP */
00690 }

ACE_Static_Function_Node& ACE_Static_Function_Node::operator= const ACE_Static_Function_Node  )  [private]
 

void * ACE_Static_Function_Node::symbol ACE_Service_Gestalt config,
int &  yyerrno,
ACE_Service_Object_Exterminator = 0
[virtual]
 

Will update the yyerrno member and/or corresponding configuration repository

Implements ACE_Location_Node.

Definition at line 700 of file Parse_Node.cpp.

References ACE_ERROR_RETURN, ACE_LIB_TEXT, ACE_Service_Object_Exterminator, ACE_TRACE, ACE_Static_Svc_Descriptor::alloc_, ACE_Service_Gestalt::find_static_svc_descriptor(), and LM_ERROR.

00703 {
00704   ACE_TRACE ("ACE_Static_Function_Node::symbol");
00705 
00706   this->symbol_ = 0;
00707 
00708   // Locate the factory function <function_name> in the statically
00709   // linked svcs.
00710 
00711   ACE_Static_Svc_Descriptor *ssd = 0;
00712   if (config->find_static_svc_descriptor (this->function_name_, &ssd) == -1)
00713     {
00714       yyerrno++;
00715       ACE_ERROR_RETURN ((LM_ERROR,
00716        ACE_LIB_TEXT ("(%P|%t) No static service ")
00717        ACE_LIB_TEXT ("registered for function %s\n"),
00718        this->function_name_),
00719       0);
00720     }
00721 
00722   if (ssd->alloc_ == 0)
00723     {
00724       yyerrno++;
00725 
00726       if (this->symbol_ == 0)
00727         {
00728           ++yyerrno;
00729 
00730           ACE_ERROR_RETURN ((LM_ERROR,
00731                              ACE_LIB_TEXT ("(%P|%t) No static service factory ")
00732                              ACE_LIB_TEXT ("function registered for function %s\n"),
00733                              this->function_name_),
00734           0);
00735         }
00736     }
00737 
00738   // Invoke the factory function and record it's return value.
00739   this->symbol_ = (*ssd->alloc_) (gobbler);
00740 
00741   if (this->symbol_ == 0)
00742     {
00743       ++yyerrno;
00744       ACE_ERROR_RETURN ((LM_ERROR,
00745                          ACE_LIB_TEXT ("%p\n"),
00746                          this->function_name_),
00747                         0);
00748     }
00749 
00750   return this->symbol_;
00751 }


Member Data Documentation

ACE_Static_Function_Node::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Reimplemented from ACE_Location_Node.

Definition at line 468 of file Parse_Node.h.

const ACE_TCHAR* ACE_Static_Function_Node::function_name_ [private]
 

Name of the function that we're parsing.

Definition at line 472 of file Parse_Node.h.


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:30:09 2006 for ACE by doxygen 1.3.6