summaryrefslogtreecommitdiff
path: root/TAO/tests/Any/Recursive/Test.idl
blob: d1d5e447c362d1a9be25c0885b4edfe850a19b00 (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
//
// $Id$
//

/// Put the interfaces in a module, to avoid global namespace pollution
module Test
{
  exception Recursive_Type_In_Any_Test_Failed {};
  exception Demarshaling_From_Any_Failed {};

  struct RecursiveStruct;
  typedef sequence<RecursiveStruct> RecursiveStructSeq;

  struct RecursiveStruct
  {
    RecursiveStructSeq recursive_structs;
    long i;
    RecursiveStructSeq recursive_structs_second;
  };

  // --------------------------

  union RecursiveUnion;
  typedef sequence<RecursiveUnion> RecursiveUnionSeq;

  union RecursiveUnion switch (short)
  {
  case 0:
    RecursiveUnionSeq recursive_unions;
  case 1:
    short a;
  case 2:
    RecursiveUnionSeq recursive_unions_second;
  default:
    long i;
  };

  union RecursiveUnionNoDefault;
  typedef sequence<RecursiveUnionNoDefault> RecursiveUnionSeqNoDefault;

  union RecursiveUnionNoDefault switch (short)
  {
  case 0:
    RecursiveUnionSeqNoDefault recursive_unions;
  case 1:
    short a;
  case 2:
    RecursiveUnionSeqNoDefault recursive_unions_second;
  };

  // --------------------------

  // --------------------------

  enum VSort {
    UNKNOWN_TYPE,
    RECURSIVE_TYPE,
    LONG_STYPE,
    BOOL_STYPE
  };

  union VSortRecursiveUnion;
  typedef sequence<VSortRecursiveUnion> VSortRecursiveUnionSeq;
  union VSortRecursiveUnion switch (VSort)
  {
  case RECURSIVE_TYPE:
    VSortRecursiveUnionSeq recursive_unions;
  case LONG_STYPE:
    long i;
  };

  // --------------------------

  union EnumUnion switch (VSort)
  {
  case BOOL_STYPE:
    boolean a;
  case LONG_STYPE:
    long i;
  };

  // --------------------------

  valuetype IndirectlyRecursiveValuetype;
  typedef sequence<IndirectlyRecursiveValuetype>
    IndirectlyRecursiveValuetypeSeq;

  valuetype IndirectlyRecursiveValuetype
  {
    public IndirectlyRecursiveValuetypeSeq recursive_valuetypes;
  };

  // --------------------------

  valuetype DirectlyRecursiveValuetype
  {
    public DirectlyRecursiveValuetype recursive_valuetype;
    public DirectlyRecursiveValuetype recursive_valuetype_second;
  };

  // --------------------------

  /// Simple test interface.
  interface Hello
  {
    /// Return the any provided as the "in" argument.
    any get_any (in any the_any);

    /// Shutdown the server ORB.
    oneway void shutdown ();
  };

};