blob: 887f6c3dd0b8a2a1aa2341e8315671189996298b (
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
138
139
140
141
142
|
//
// $Id$
//
// ============================================================================
//
// = LIBRARY
// TAO IDL
//
// = FILENAME
// operation_cs.h
//
// = DESCRIPTION
// Visitor for generating code for IDL operations in client stubs
//
// = AUTHOR
// Aniruddha Gokhale
//
// ============================================================================
#ifndef _BE_VISITOR_OPERATION_OPERATION_CS_H_
#define _BE_VISITOR_OPERATION_OPERATION_CS_H_
// ************************************************************
// Operation visitor for client stubs
// ************************************************************
class be_visitor_operation_cs : public be_visitor_operation
{
//
// = TITLE
// be_visitor_operation_cs
//
// = DESCRIPTION
// This is a concrete visitor to generate the client stubs for operation
//
//
public:
be_visitor_operation_cs (be_visitor_context *ctx);
// constructor
~be_visitor_operation_cs (void);
// destructor
virtual int visit_operation (be_operation *node);
// visit operation.
virtual int visit_argument (be_argument *node);
// visit argument to generate ParamData entries
// = template methods
virtual int gen_pre_stub_info (be_operation *, be_type *) = 0;
// generate any info before the actual code for the stub is generated
virtual int gen_marshal_and_invoke (be_operation *, be_type *) = 0;
// generate code that marshals the arguments and transmits them
// =helper
virtual int post_process (be_decl *);
// stuff to output after every member of the scope is handled
virtual int gen_raise_exception (be_type *,
const char * excep,
const char * status);
// helper that generates code for raising an exception
virtual int gen_check_exception (be_type *);
// helper that generates code for checking for an exception
virtual int gen_raise_interceptor_exception (be_type *,
const char * excep,
const char * status);
// helper that generates code for raising an exception within
// interceptor's try block
virtual int gen_check_interceptor_exception (be_type *);
// helper that generates code for checking for an exception within
// interceptor's try block
virtual const char *compute_operation_name (be_operation *node);
// compute the operation name. Notice that this operation
// _does_ include the double quote.
private:
char *operation_name_;
};
// specialized visitors
class be_interpretive_visitor_operation_cs : public be_visitor_operation_cs
{
//
// = TITLE
// be_interpretive_visitor_operation_cs
//
// = DESCRIPTION
// This is a concrete visitor to generate the client stubs for operation
// using interpretive marshaling.
//
//
public:
be_interpretive_visitor_operation_cs (be_visitor_context *);
// ctor
~be_interpretive_visitor_operation_cs (void);
// dtor
virtual int gen_pre_stub_info (be_operation *, be_type *);
// generate any info before the actual code for the stub is generated
virtual int gen_marshal_and_invoke (be_operation *, be_type *);
// generate code that marshals the arguments and transmits them
};
class be_compiled_visitor_operation_cs : public be_visitor_operation_cs
{
//
// = TITLE
// be_compiled_visitor_operation_cs
//
// = DESCRIPTION
// This is a concrete visitor to generate the client stubs for operation
// using compiled marshaling.
//
//
public:
be_compiled_visitor_operation_cs (be_visitor_context *);
// ctor
~be_compiled_visitor_operation_cs (void);
// dtor
virtual int gen_pre_stub_info (be_operation *, be_type *);
// generate any info before the actual code for the stub is generated
virtual int gen_marshal_and_invoke (be_operation *, be_type *);
// generate code that marshals the arguments and transmits them
};
#endif /* _BE_VISITOR_OPERATION_OPERATION_CS_H_ */
|