Added test of array of classes.
[dyninst.git] / igen / tests / server3.C
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "test3.SRVR.h"
4 #include <string.h>
5
6 main(int argc, char *argv[])
7 {
8     int fd;
9     int eid;
10     int ret;
11     test *tp = 0;
12
13     if (argc == 1) {
14         fd = 0;
15     } else {
16         printf("remote start not supported\n");
17         exit(-1);
18     }
19     tp = new test(0, NULL, NULL);
20
21     // now go into main loop
22     while(1) {
23         ret = tp->mainLoop();   
24         if (ret < 0) {
25             // assume the client has exited, and leave.
26             exit(-1);
27         }
28     }
29 }
30
31 int test::classArrayTest(sStruct_Array sArr)
32 {
33   int i, sum = 0;
34
35   for (i=0; i<sArr.count; ++i)
36     {
37       sum += sArr.data[i].computer;
38       assert (!strcmp(sArr.data[i].name, "happy"));
39     }
40   return sum;
41 }
42 void test::nullNull()
43 {
44     return;
45 }
46
47 int test::intNull()
48 {
49     return(0);
50 }
51
52 float test::floatFloat(float f)
53 {
54     return(f);
55 }
56
57 double test::doubleDouble(double d)
58 {
59     return(d);
60 }
61
62 void test::nullStruct(intStruct s)
63 {
64     return;
65 }
66
67 int test::VintString(String s)
68 {
69     return(strlen(s));
70 }
71
72 int test::intString(String s)
73 {
74     return(strlen(s));
75 }
76
77 String test::stringString(String s)
78 {
79     return(s);
80 }
81
82 int test::add(int a, int b)
83 {
84     return(a+b);
85 }
86
87 int test::sumVector(int_Array nums)
88 {
89    int i, total;
90
91    for (i=0, total=0; i < nums.count; i++) {
92        total += nums.data[i];
93    }
94    return(total);
95 }
96
97 int_Array test::retVector(int num, int start)
98 {
99     int i;
100     int_Array retVal;
101
102     retVal.count = num;
103     retVal.data = (int*) malloc(sizeof(int) * num);
104     for (i=0; i < num; i++) {
105         retVal.data[i] = start+i;
106     }
107     return(retVal);
108 }
109
110 void test::triggerSyncUpcall(int val)
111 {
112     syncUpcall(val);
113 }
114
115
116 void test::triggerAsyncUpcall(int val)
117 {
118     asyncUpcall(val);
119 }
120
121 sStruct test::msTest(sStruct input)
122 {
123     sStruct ret;
124     ret.computer = 1;
125     ret.name = strdup("happy");
126     return ret;
127 }
128
129 fStruct test::fTest(fStruct input)
130 {
131     return input;
132 }