summaryrefslogtreecommitdiff
path: root/TAO/tests/OBV/Supports/Supports_Test.idl
blob: 4085c5db6a154f7bf3e24bee701c0b675219e70f (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
// $Id$

///////////////////////////////////////////////////////////////////////////////
/**
 * \file Supports_Test.idl
 *
 * \author George Edwards <g.edwards@vanderbilt.edu>
 *
 * This file contain definitions of the valuetypes and interfaces of
 * Supports_Test, a test of TAO's OBV capabilities. Specifically, Supports_Test
 * checks proper operation of the following features:
 *
 * -Valuetypes that support concrete interfaces:
 *    Using the same valuetype implementation, Supports_Test creates both
 *    valuetypes and object references, passes them as parameters, and
 *    invokes both local and remote calls.
 * -ORB::register_value_factory () return values:
 *    Supports_Test checks the return values of register_value_factory () to
 *    ensure compliance with the spec.
 */
///////////////////////////////////////////////////////////////////////////////

module Supports_Test
{

	valuetype Node;

	typedef sequence<Node> Node_List;

  /**
   *
   * This valuetype is the basic building block of the vt_graph valuetype,
   * defined below. Some of these operations and state members are not
   * currently used in the test.
   */
	valuetype Node
	{

    void print ();

		public string name_;
		private long weight_;
		private short degree_;
		private Node_List neighbors_;

		void change_weight (in long new_weight);
		void add_edge (in Node neighbor);
		void remove_edge (in Node neighbor);

		factory create ();

	};

  /**
   * \interface graph
   *
   * This interface contains the operations we will invoke on vt_graph
   * valuetypes as well as graph object references. The implementations of
   * these operations will be defined in vt_graph. All graph object refs will
   * be vt_graphs under the hood.
   */
	interface graph
	{

		long size ();
		void add_node (in string name);
    void print ();
		
	};

	valuetype vt_graph supports graph
	{

		private Node_List nodes_;
		factory create ();

	};

  /**
   * \interface test
   *
   * This interface contains the operations that will perform the tests.
   */
	interface test
	{

		void pass_vt_graph_in (in vt_graph vt_graph_param);
		void pass_obj_graph_in (in graph graph_param);
    void pass_vt_graph_out (out vt_graph vt_graph_param);
		void pass_obj_graph_out (out graph graph_param);
		void pass_vt_graph_inout (inout vt_graph vt_graph_param);
		void pass_obj_graph_inout (inout graph graph_param);
    void start ();
    oneway void finish ();

	};

};