summaryrefslogtreecommitdiff
path: root/TAO/tests/Demux_Test/CodeGen/tao.cpp
blob: b01df4002fe9af89bcf5bf63d0bfa695185e769f (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
#include "tao.h"

int main (int argc, char *argv[])
{
  // define the two arrays that will hold generated object keys and method
  // names of the hypothetical "tao_demux" interface
  ACE_Unbounded_Queue<ACE_CString> *objectArr, *methodArr;

  // provide default values to the limit on the number of object keys and
  // method names
  long objectLimit = 5, 
    methodLimit = 4;

  // for parsing the arguments
  ACE_Get_Opt get_opt (argc, argv, "hm:o:");

  for (int c; (c = get_opt ()) != EOF;)
    {
      switch (c)
	{
	case 'm': // number of methods
	  methodLimit = ACE_OS::atoi (get_opt.optarg);
	  break;
	case 'o': // number of object keys
	  objectLimit = ACE_OS::atoi (get_opt.optarg);
	  break;
	case 'h': // usage
	default:
	  Usage ();
	  return 1;
	}
    }

  cout << "Generating code for " << objectLimit << " objects and " <<
    methodLimit << " methods" << endl;
  objectArr = new ACE_Unbounded_Queue<ACE_CString> [objectLimit];
  methodArr = new ACE_Unbounded_Queue<ACE_CString> [methodLimit];

  // generate the object keys
  if (GenObjectTable (*objectArr, objectLimit) == -1)
    {
    }

  // generate method names
  if (GenMethodTable (*methodArr, methodLimit) == -1)
    {
    }

  // generate client side stub headers
  if (GenClientHeader (*methodArr, methodLimit) == -1)
    {
    }

  // generate client stubs
  if (GenClientStubs (*methodArr, methodLimit) == -1)
    {
    }

  // generate include code for client-side main program
  if (GenClientCode (*methodArr, methodLimit) == -1)
    {
    }

  // generate server skeleton header
  if (GenServerHeader (*methodArr, methodLimit) == -1)
    {
    }

  // generate server skeletons
  if (GenServerSkels (*methodArr, methodLimit) == -1)
    {
    }

  // generate th eimpl header
  if (GenServantHeader (*methodArr, methodLimit) == -1)
    {
    }

  // generate impl 
  if (GenServantImpl (*methodArr, methodLimit) == -1)
    {
    }

  // generate code that creates instances of objects
  if (GenObjectCreateCode (*objectArr, objectLimit) == -1)
    {
    }

  GenGPERFCode ();
}

void Usage (void)
{
  cerr << "Usage: tao [-m <#methods>] [-o <#objects>] [-h]" << endl;
  return;
}