summaryrefslogtreecommitdiff
path: root/TAO/examples/Simulator/DOVEMIB/AnyAnalyser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/Simulator/DOVEMIB/AnyAnalyser.cpp')
-rw-r--r--TAO/examples/Simulator/DOVEMIB/AnyAnalyser.cpp216
1 files changed, 0 insertions, 216 deletions
diff --git a/TAO/examples/Simulator/DOVEMIB/AnyAnalyser.cpp b/TAO/examples/Simulator/DOVEMIB/AnyAnalyser.cpp
deleted file mode 100644
index d8413060366..00000000000
--- a/TAO/examples/Simulator/DOVEMIB/AnyAnalyser.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-// $Id$
-// ============================================================================
-//
-// = LIBRARY
-//
-// = FILENAME
-// AnyAnalyser.cpp
-//
-// = AUTHOR
-// Michael Kircher
-//
-// = DESCRIPTION
-// Accepts an CORBA::Any, traverses it, copies it into a tree structure
-// and prints out the tree.
-//
-// ============================================================================
-
-#include "AnyAnalyser.h"
-
-ACE_RCSID(DOVEMIB, AnyAnalyser, "$Id$")
-
-AnyAnalyser::AnyAnalyser (const char *file_name)
- : printVisitor_ptr_(new PrintVisitor (file_name)) {
-}
-
-AnyAnalyser::~AnyAnalyser () {
- delete this->printVisitor_ptr_;
-}
-
-void
-AnyAnalyser::close () {
- this->printVisitor_ptr_->close();
-}
-
-void
-AnyAnalyser::printTimeStamp (ACE_hrtime_t creation,
- ACE_hrtime_t ec_recv,
- ACE_hrtime_t ec_send)
-{
- this->printVisitor_ptr_->printTimeStamp (creation,
- ec_recv,
- ec_send);
-}
-
-
-void
-AnyAnalyser::printAny (CORBA::TypeCode_ptr any_type, const void *any_value) {
-
- // Analyse the any and store the results in a tree structure
- RecurseInfo recurseInfo_ = {PARENT_IS_NO_STRUCT,// identifies parent
- 0, // parent typecode
- 0, // member count
- 0}; // recursion level
-
- // have a variable with can be incremented by all
- // recursive analyse calls
- const unsigned char *value_ptr_ = (const unsigned char *)any_value;
-
- // analyse the any
- Node *node_ptr_ = analyse (any_type, // typecode information
- value_ptr_, // pointer to the memory
- recurseInfo_); // recurse information
-
- // print the results
- node_ptr_->Accept ((NodeVisitor *)printVisitor_ptr_);
-}
-
-Node *
-AnyAnalyser::analyse (CORBA::TypeCode_ptr tc_ptr,
- const unsigned char *&value_ptr,
- RecurseInfo ri)
-{
- CORBA::Long alignment, align_offset;
- CORBA::TypeCode_ptr param;
- const unsigned char *start_addr = value_ptr;
-
- ACE_TRY_NEW_ENV
- {
- Node *node_ptr_ = 0;
-
- if (tc_ptr != 0) {
-
- switch (tc_ptr->kind(ACE_TRY_ENV)) {
-
- case CORBA::tk_struct:
- {
- // to hold a pointer to the start of the struct
- start_addr = value_ptr;
-
- // create a new Node
- StructNode *structNode_ptr_ = new StructNode (tc_ptr->name (ACE_TRY_ENV),
- ri.recursion_level);
-
- for (unsigned int i = 0; i < tc_ptr->member_count (ACE_TRY_ENV); i++) {
-
- // get the TypeCode pointer to the ith parameter
- // and analyse it recursively
- RecurseInfo recurseInfo_ = {PARENT_IS_STRUCT, // identifies parent
- tc_ptr, // parent typecode
- i, // member count
- ri.recursion_level+1};
-
-
- // get the type code of the child i
- param = tc_ptr->member_type (i, ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- // get the size
- /* size = */ param->size (ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- // get the alignment
- alignment = param->alignment (ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- // calculate
- align_offset =
- (ptr_arith_t) ptr_align_binary (value_ptr, alignment)
- - (ptr_arith_t) value_ptr
- + (ptr_arith_t) ptr_align_binary (start_addr, alignment)
- - (ptr_arith_t) start_addr;
- ACE_TRY_CHECK;
-
- // if both the start_addr and data are not aligned as per
- // the alignment, we do not add the offset
- value_ptr = (unsigned char *) ((ptr_arith_t) value_ptr +
- ((align_offset == alignment) ?
- 0 : align_offset));
-
- structNode_ptr_->addChild (analyse (param,
- value_ptr,
- recurseInfo_));
- }
- node_ptr_ = (Node *)structNode_ptr_;
- }
- break;
-
- case CORBA::tk_double:
- if (ri.kind == PARENT_IS_STRUCT) {
- node_ptr_ = (Node *) new DoubleNode ((CORBA::Double *)value_ptr,
- ri.parent_tc_ptr->member_name(ri.member_number,
- ACE_TRY_ENV),
- ri.recursion_level);
- }
- else {
- node_ptr_ = (Node *) new DoubleNode ((CORBA::Double *)value_ptr,
- tc_ptr->name(ACE_TRY_ENV),
- ri.recursion_level);
- }
- value_ptr += 8;
- break;
-
- case CORBA::tk_long:
- if (ri.kind == PARENT_IS_STRUCT) {
- node_ptr_ = (Node *) new LongNode ((CORBA::Long *)value_ptr,
- ri.parent_tc_ptr->member_name(ri.member_number,
- ACE_TRY_ENV),
- ri.recursion_level);
- }
- else {
- node_ptr_ = (Node *) new LongNode ((CORBA::Long *)value_ptr,
- tc_ptr->name(ACE_TRY_ENV),
- ri.recursion_level);
- }
- value_ptr += 4;
- break;
-
- case CORBA::tk_ulong:
- if (ri.kind == PARENT_IS_STRUCT) {
- node_ptr_ = (Node *) new ULongNode ((CORBA::ULong *)value_ptr,
- ri.parent_tc_ptr->member_name(ri.member_number,
- ACE_TRY_ENV),
- ri.recursion_level);
- }
- else {
- node_ptr_ = (Node *) new ULongNode ((CORBA::ULong *)value_ptr,
- tc_ptr->name(ACE_TRY_ENV),
- ri.recursion_level);
- }
- value_ptr += 4;
- break;
-
- case CORBA::tk_string:
- if (ri.kind == PARENT_IS_STRUCT) {
- node_ptr_ = (Node *) new StringNode (*(CORBA::String_var *)value_ptr,
- ri.parent_tc_ptr->member_name(ri.member_number,
- ACE_TRY_ENV),
- ri.recursion_level);
- }
- else {
- node_ptr_ = (Node *) new StringNode (*(CORBA::String_var *)value_ptr,
- tc_ptr->name(ACE_TRY_ENV),
- ri.recursion_level);
- }
- value_ptr += 4;
- break;
-
- default: ACE_ERROR ((LM_ERROR, "AnyAnalyser::analyse: No known kind of type detected!\n"));
- exit (1);
- break;
- }
- ACE_TRY_CHECK;
- return node_ptr_;
- }
- else {
- ACE_DEBUG ((LM_ERROR, "AnyAnalyser::analyse: TypeCode pointer to member was Null!\n"));
- }
- }
- ACE_CATCHANY {
- ACE_ERROR ((LM_ERROR, "(%t)AnyAnalyser::analyse: Error in analysing the any.\n"));
- }
- ACE_ENDTRY;
- return 0;
-}
-
-