Apply suggestion from Andrew for srcdir functionality.
[openais.git] / lcr / test.c
blob88eca03dfc731252d23e3e8684e5610f31b354b5
1 /*
2 * Copyright (C) 2006 Steven Dake (sdake@mvista.com)
4 * This software licensed under BSD license, the text of which follows:
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
9 * - Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 * - Neither the name of the MontaVista Software, Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from this
16 * software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28 * THE POSSIBILITY OF SUCH DAMAGE.
30 #include <assert.h>
31 #include <unistd.h>
32 #include "lcr_ifact.h"
34 struct iface {
35 void (*func1) (void);
36 void (*func2) (void);
37 void (*func3) (void);
40 int main (void) {
41 unsigned int a_ifact_handle_ver0;
42 unsigned int b_ifact_handle_ver0;
43 struct iface *a_iface_ver0;
44 struct iface *a_iface_ver1;
45 void *a_iface_ver0_p;
46 void *a_iface_ver1_p;
48 unsigned int a_ifact_handle_ver1;
49 unsigned int b_ifact_handle_ver1;
50 struct iface *b_iface_ver0;
51 struct iface *b_iface_ver1;
52 void *b_iface_ver0_p;
53 void *b_iface_ver1_p;
55 unsigned int res;
58 * Reference version 0 and 1 of A and B interfaces
60 res = lcr_ifact_reference (
61 &a_ifact_handle_ver0,
62 "A_iface1",
63 0, /* version 0 */
64 &a_iface_ver0_p,
65 (void *)0xaaaa0000);
66 assert (res == 0);
68 a_iface_ver0 = (struct iface *)a_iface_ver0_p;
70 res = lcr_ifact_reference (
71 &b_ifact_handle_ver0,
72 "B_iface1",
73 0, /* version 0 */
74 &b_iface_ver0_p,
75 (void *)0xbbbb0000);
76 assert (res == 0);
78 b_iface_ver0 = (struct iface *)b_iface_ver0_p;
80 res = lcr_ifact_reference (
81 &a_ifact_handle_ver1,
82 "A_iface1",
83 1, /* version 1 */
84 &a_iface_ver1_p,
85 (void *)0xaaaa1111);
86 assert (res == 0);
88 a_iface_ver1 = (struct iface *)a_iface_ver1_p;
90 res = lcr_ifact_reference (
91 &b_ifact_handle_ver1,
92 "B_iface1",
93 1, /* version 1 */
94 &b_iface_ver1_p,
95 (void *)0xbbbb1111);
96 assert (res == 0);
98 b_iface_ver1 = (struct iface *)b_iface_ver1_p;
100 a_iface_ver0->func1();
101 a_iface_ver0->func2();
102 a_iface_ver0->func3();
104 lcr_ifact_release (a_ifact_handle_ver0);
106 a_iface_ver1->func1();
107 a_iface_ver1->func2();
108 a_iface_ver1->func3();
110 lcr_ifact_release (a_ifact_handle_ver1);
112 b_iface_ver0->func1();
113 b_iface_ver0->func2();
114 b_iface_ver0->func3();
116 lcr_ifact_release (b_ifact_handle_ver0);
118 b_iface_ver1->func1();
119 b_iface_ver1->func2();
120 b_iface_ver1->func3();
122 lcr_ifact_release (b_ifact_handle_ver1);
124 return (0);