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