summaryrefslogtreecommitdiff
path: root/TAO/performance-tests/Demux/CodeGen/codegen.h
blob: 63a543ec63ed0f687b428a20c9b6b6b857c6b2aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#if !defined (TAO_DEMUX_TEST_CODEGEN_H)
#define TAO_DEMUX_TEST_CODEGEN_H

// $Id$
// ============================================================================
//
// = LIBRARY
//    TAO/performance-tests/Demux/CodeGen
//
// = FILENAME
//    codegen.h
//
//    Defines the code generator class for the Demux_Test
//
// = AUTHOR
//
//    Aniruddha Gokhale
//
// ============================================================================


#include "ace/Get_Opt.h"
#include "ace/SString.h"
#include "ace/Containers_T.h"
#include "ace/Singleton.h"
#include "ace/OS.h"

class Demux_Test_CodeGenerator
{
public:
  Demux_Test_CodeGenerator (void);
  // ctor

  ~Demux_Test_CodeGenerator (void);
  // dtor

  int init (int argc, char *argv []);
  // initialize

  int run (void);
  // run the various algorithms

  enum CG_STATE
  {
    CG_NONE,
    CG_POA,
    CG_OBJ,
    CG_OP
  };

private:
  int parse_args (int argc, char *argv []);
  // parse arguments

  int gen_poa_names (void);
  // generate names of POAs

  int gen_object_names (void);
  // generate object names

  int gen_operation_names (void);
  // generate operation names

  int gen_idl_interface (void);
  // generate the IDL interface definition

  int gen_object_create_code (void);
  // generate code that activates the objs and o/ps their IOR

  int gen_servant_hdr_code (void);
  // generate the servant impl header file

  int gen_servant_impl_code (void);
  // generate servant implementation

  int gen_client_incl_code (void);
  // generate the client side include code

  int print_names (void);
  // print generated names

  void usage (void);
  // print the usage

  int gen_names (ACE_Unbounded_Queue<ACE_CString> &, int limit);
  // common fn used by others to generate names in a table of size = limit

  int insert_unique_string (ACE_Unbounded_Queue<ACE_CString> &);
  // insert a unique string at location locn distinct from all strings inserted
  // from locations 0 to locn-1

  long gen_rand (int, int);

  int is_present (ACE_Unbounded_Queue<ACE_CString> &, ACE_CString &);
  // is the given string present in the queue?

  int create_string (int len, ACE_CString &s);
  // create a valid identifier of length len

  char gen_valid_char (int);
  // generate a valid character. The argument indicates what position it will
  // be inserted.

  int print_array (ACE_Unbounded_Queue<ACE_CString> &);
  // print the array

  int num_POAs_;
  // number of POAs

  int num_objs_;
  // number of objects

  int num_ops_;
  // number of operations

  ACE_Unbounded_Queue <ACE_CString> poa_array_;
  // array of POA names

  ACE_Unbounded_Queue <ACE_CString> obj_array_;
  // array of object names

  ACE_Unbounded_Queue <ACE_CString> op_array_;
  // array of operation names

  CG_STATE state_;
  // code generation state

  int oneway_;
  // whether operations must be oneway or not

  int debug_;
  // whether to print debugging info

};


#endif /* TAO_DEMUX_TEST_CODEGEN_H */