summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be_include/be_valuetype.h
blob: 4988600777e9c5b92130b87b82bcd90b9dd28dda (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
/* -*- c++ -*- */
// $Id$

// ============================================================================
//
// = LIBRARY
//    TAO IDL
//
// = FILENAME
//    be_valuetype.h
//
// = DESCRIPTION
//    Extension of class AST_Interface and be_interface that provides
//    additional means for C++ mapping of an valuetype.
//
// ============================================================================

#ifndef TAO_BE_VALUETYPE_H
#define TAO_BE_VALUETYPE_H

#ifdef IDL_HAS_VALUETYPE

#include "be_interface.h"

class TAO_OutStream;

class be_valuetype : public virtual be_interface
{
  // = TITLE
  //    Backend-class for valuetypes
  //
  // = DESCRIPTION
  //    Extends be_interface and overrides member functions for valuetype
  //    mapping.
  //
public:
  be_valuetype (void);
  // Default constructor.

  be_valuetype (UTL_ScopedName *n, AST_Interface **ih, long nih,
                UTL_StrList *p, idl_bool set_abstract = 0);
  // Constructor that sets its scoped name <n>, a list of inherited valuetypes
  // and supported interfaces <ih>, the number of inherited interfaces <nih>,
  // and any pragmas <p>.

  ~be_valuetype (void);
  // Destructor.

  virtual void redefine (AST_Interface *from, UTL_StrList *p);

  idl_bool opt_accessor ();
  // Should generate optimized form?

  virtual int gen_var_defn (char *local_name = 0);
  // Generate the _var class definition.

  // Virtual void gen_def_ctors (TAO_OutStream* os);
  // Call the default constructors of all the base classes.



  // Virtual void gen_copy_ctors (TAO_OutStream* os);
  // Call the copy constructors of all the base classes.

  virtual int gen_var_impl (char *local_name = 0,
                            char *full_name = 0);
  // Generate the implementation for the _var class.

  virtual int gen_out_defn (char *local_name = 0);
  // Generate the _out class definition.

  virtual int gen_out_impl (char *local_name = 0,
                            char *full_name = 0);
  // Generate the _out implementation.

  const char *full_obv_skel_name (void);
  // Retrieve the fully scoped skel class name.

  // TODO.
#if 0
  virtual int gen_typecode (void);
  // Generate the typecode.

  virtual int gen_encapsulation (void);
  // Encapsulation for parameters.

  virtual long tc_size (void);
  // Return typecode size.

  virtual long tc_encap_len (void);
  // Return length of encapsulation.
#endif

  // virtual int traverse_inheritance_graph (tao_code_emitter gen,
  //                                         TAO_OutStream *os);
  // template method using breadth first traversal of inheritance graph

  // const char *relative_skel_name (const char *other_class_name);
  // Relative skeleton name.

  const char *field_pd_prefix (void);
  const char *field_pd_postfix (void);

  // For building the name for private data fields.
  be_valuetype *statefull_inherit (void);


  // Visiting.
  virtual int accept (be_visitor *visitor);

  virtual idl_bool is_valuetype ();
  virtual idl_bool is_abstract_valuetype ();
  virtual void set_abstract_valuetype ();

 // Narrowing.
  DEF_NARROW_METHODS1 (be_valuetype, be_interface);
  DEF_NARROW_FROM_DECL (be_valuetype);
  DEF_NARROW_FROM_SCOPE (be_valuetype);

  void compute_fullobvskelname (void);
  // Compute the fully scoped skel class name.


private:
  char * full_obv_skel_name_;
  idl_bool abstract_;
};

#endif  /* IDL_HAS_VALUETYPE */

#endif  // if !defined