Merge pull request #2303 from jwillemsen/jwi-803
[ACE_TAO.git] / TAO / tests / DynValue_Test / Analyzer.h
blob3bca5744426859ea7e59ca8b981cbe37c42edea6
1 #ifndef INCLUDE_ANALYZER_H
2 #define INCLUDE_ANALYZER_H
4 #include "ValueTypes_impl.h"
5 #include "tao/DynamicAny/DynAnyFactory.h"
7 //============= class DynAnyAnalyzer ============
9 class DynAnyAnalyzer
11 private:
12 unsigned int level_;
13 CORBA::ORB_var orb_;
14 DynamicAny::DynAnyFactory_var dany_fact_;
16 public:
17 DynAnyAnalyzer (int argc, ACE_TCHAR *argv[]);
18 ~DynAnyAnalyzer () {orb_->destroy ();}
20 DynamicAny::DynAny_ptr DynAny_NoTrunc (const CORBA::Any &);
21 DynamicAny::DynAny_ptr DynAny (const CORBA::Any &);
22 DynamicAny::DynAny_ptr DynAny (const CORBA::TypeCode_ptr &);
24 void register_factory (CORBA::ValueFactoryBase_var factory);
26 void analyze (
27 DynamicAny::DynAny_ptr da,
28 CORBA::Boolean newline = false);
30 private:
31 /// List of base types.
32 typedef ACE_Array_Base<CORBA::TypeCode_var> BaseTypesList_t;
34 void tab (const char p[])
36 for (unsigned int i = 0u; i < level_ ; ++i)
37 ACE_DEBUG ((LM_DEBUG, ".."));
38 ACE_DEBUG ((LM_DEBUG, "%C", p));
41 void analyze_basic_seq (
42 CORBA::TypeCode_ptr tc,
43 DynamicAny::DynAny_ptr da);
45 static void get_base_types (
46 CORBA::TypeCode_ptr tc,
47 BaseTypesList_t &base_types,
48 CORBA::ULong *total_member_count = 0);
50 /// Return the unaliased valuetype typecode that corresponds to
51 /// index (0..total_members-1) from the given hiarchical list of
52 /// the derived type and it basetypes.
53 static CORBA::TypeCode_ptr get_correct_base_type (
54 const BaseTypesList_t &base_types,
55 CORBA::ULong &index);
58 #endif // INCLUDE_ANALYZER_H