source: trunk/testcase/572main.cpp@ 601

Last change on this file since 601 was 601, checked in by bird, 22 years ago

Headers.

  • Property cvs2svn:cvs-rev set to 1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 6.3 KB
RevLine 
[601]1/* $Id: 572main.cpp 601 2003-08-15 23:50:34Z bird $ */
2/** @file
3 *
4 * _Optlink declaration and definition testcases.
5 *
6 * InnoTek Systemberatung GmbH confidential
7 *
8 * Copyright (c) 2003 InnoTek Systemberatung GmbH
9 * Author: knut st. osmundsen <bird-srcspam@anduin.net>
10 *
11 * All Rights Reserved
12 *
13 */
14
15
[600]16#include <stdio.h>
17typedef struct some_struct_pointer * PTYPE;
18
19/*
20 * Function and method declarations.
21 * Checks mangling.
22 */
23
24/* No underscore, No mangling. */
25extern "C" void _Optlink ExternCVoid(int a, int b, int c, int d);
26extern "C" void * _Optlink ExternCPVoid(int a, int b, int c, int d);
27extern "C" int _Optlink ExternCInt(int a, int b, int c, int d);
28extern "C" PTYPE _Optlink ExternCPType(int a, int b, int c, int d);
29
30/* No underscore, No mangling. */
31void _Optlink Void(int a, int b, int c, int d);
32void * _Optlink PVoid(int a, int b, int c, int d);
33int _Optlink Int(int a, int b, int c, int d);
34PTYPE _Optlink PType(int a, int b, int c, int d);
35
36
37/* Members are mangled. */
38class foo
39{
40public:
41static void _Optlink StaticMemberVoid(int a, int b, int c, int d);
42static void * _Optlink StaticMemberPVoid(int a, int b, int c, int d);
43static int _Optlink StaticMemberInt(int a, int b, int c, int d);
44static PTYPE _Optlink StaticMemberPType(int a, int b, int c, int d);
45
46/* VAC365 allows this too, and actually mangles the
47 * calling convention into the name.
48 * _System: MemberVoid__3fooF__l2_v
49 * default: MemberVoid__3fooFv
50 * We don't need to support this, it's just a curiosity.
51 */
52void _Optlink MemberVoid(int a, int b, int c, int d);
53void * _Optlink MemberPVoid(int a, int b, int c, int d);
54int _Optlink MemberInt(int a, int b, int c, int d);
55PTYPE _Optlink MemberPType(int a, int b, int c, int d);
56};
57
58
59/*
60 * Typedefs.
61 * Checks that there is not warnings on these.
62 */
63typedef void _Optlink Typedef1Void(int a, int b, int c, int d);
64typedef void * _Optlink Typedef1PVoid(int a, int b, int c, int d);
65typedef int _Optlink Typedef1Int(int a, int b, int c, int d);
66typedef PTYPE _Optlink Typedef1PType(int a, int b, int c, int d);
67
68typedef void (_Optlink Typedef2Void)(int a, int b, int c, int d);
69typedef void * (_Optlink Typedef2PVoid)(int a, int b, int c, int d);
70typedef int (_Optlink Typedef2Int)(int a, int b, int c, int d);
71typedef PTYPE (_Optlink Typedef2PType)(int a, int b, int c, int d);
72
73typedef void (* _Optlink PTypedef1Void)(int a, int b, int c, int d);
74typedef void * (* _Optlink PTypedef1PVoid)(int a, int b, int c, int d);
75typedef int (* _Optlink PTypedef1Int)(int a, int b, int c, int d);
76typedef PTYPE (* _Optlink PTypedef1PType)(int a, int b, int c, int d);
77
78/* Alternate writing which should have the same effect I think... */
79typedef void (_Optlink * PTypedef2Void)(int a, int b, int c, int d);
80typedef void * (_Optlink * PTypedef2PVoid)(int a, int b, int c, int d);
81typedef int (_Optlink * PTypedef2Int)(int a, int b, int c, int d);
82typedef PTYPE (_Optlink * PTypedef2PType)(int a, int b, int c, int d);
83
84
85/*
86 * Structures.
87 * Should not cause warnings.
88 */
89typedef struct VFT
90{
91 void (* _Optlink PStructMemberVoid)(int a, int b, int c, int d);
92 void * (* _Optlink PStructMemberPVoid)(int a, int b, int c, int d);
93 int (* _Optlink PStructMemberInt)(int a, int b, int c, int d);
94 PTYPE (* _Optlink PStructMemberPType)(int a, int b, int c, int d);
95
96 /* Alternate writing which should have the same effect I think... */
97 void (_Optlink * PStructMember2Void)(int a, int b, int c, int d);
98 void * (_Optlink * PStructMember2PVoid)(int a, int b, int c, int d);
99 int (_Optlink * PStructMember2Int)(int a, int b, int c, int d);
100 PTYPE (_Optlink * PStructMember2PType)(int a, int b, int c, int d);
101
102} VFT, *PVFT;
103
104
105extern "C" int DoC(void);
106int main(void)
107{
108 static VFT vft = {Void, PVoid, Int, PType,
109 Void, PVoid, Int, PType};
110
111 static Typedef1Void * pfnTypedef1Void = Void;
112 static Typedef1PVoid * pfnTypedef1PVoid = PVoid;
113 static Typedef1Int * pfnTypedef1Int = Int;
114 static Typedef1PType * pfnTypedef1PType = PType;
115
116 static Typedef2Void * pfnTypedef2Void = Void;
117 static Typedef2PVoid * pfnTypedef2PVoid = PVoid;
118 static Typedef2Int * pfnTypedef2Int = Int;
119 static Typedef2PType * pfnTypedef2PType = PType;
120
121 static PTypedef1Void pfnPTypedef1Void = Void;
122 static PTypedef1PVoid pfnPTypedef1PVoid = PVoid;
123 static PTypedef1Int pfnPTypedef1Int = Int;
124 static PTypedef1PType pfnPTypedef1PType = PType;
125
126 static PTypedef2Void pfnPTypedef2Void = Void;
127 static PTypedef2PVoid pfnPTypedef2PVoid = PVoid;
128 static PTypedef2Int pfnPTypedef2Int = Int;
129 static PTypedef2PType pfnPTypedef2PType = PType;
130
131 /* extern functions */
132 ExternCVoid(1,2,3,4);
133 ExternCPVoid(1,2,3,4);
134 ExternCInt(1,2,3,4);
135 ExternCPType(1,2,3,4);
136
137 Void(1,2,3,4);
138 PVoid(1,2,3,4);
139 Int(1,2,3,4);
140 PType(1,2,3,4);
141
142 /* class */
143 foo::StaticMemberVoid(1,2,3,4);
144 foo::StaticMemberPVoid(1,2,3,4);
145 foo::StaticMemberInt(1,2,3,4);
146 foo::StaticMemberPType(1,2,3,4);
147
148 foo obj;
149 obj.MemberVoid(1,2,3,4);
150 obj.MemberPVoid(1,2,3,4);
151 obj.MemberInt(1,2,3,4);
152 obj.MemberPType(1,2,3,4);
153
154 /* typedefs */
155 pfnTypedef1Void(1,2,3,4);
156 pfnTypedef1PVoid(1,2,3,4);
157 pfnTypedef1Int(1,2,3,4);
158 pfnTypedef1PType(1,2,3,4);
159
160 pfnTypedef2Void(1,2,3,4);
161 pfnTypedef2PVoid(1,2,3,4);
162 pfnTypedef2Int(1,2,3,4);
163 pfnTypedef2PType(1,2,3,4);
164
165 pfnPTypedef1Void(1,2,3,4);
166 pfnPTypedef1PVoid(1,2,3,4);
167 pfnPTypedef1Int(1,2,3,4);
168 pfnPTypedef1PType(1,2,3,4);
169
170 pfnPTypedef2Void(1,2,3,4);
171 pfnPTypedef2PVoid(1,2,3,4);
172 pfnPTypedef2Int(1,2,3,4);
173 pfnPTypedef2PType(1,2,3,4);
174
175
176 /* structs */
177 vft.PStructMemberVoid(1,2,3,4);
178 vft.PStructMemberPVoid(1,2,3,4);
179 vft.PStructMemberInt(1,2,3,4);
180 vft.PStructMemberPType(1,2,3,4);
181
182 vft.PStructMember2Void(1,2,3,4);
183 vft.PStructMember2PVoid(1,2,3,4);
184 vft.PStructMember2Int(1,2,3,4);
185 vft.PStructMember2PType(1,2,3,4);
186
187 /* test C stuff */
188 DoC();
189
190 printf("Successfully executed _Optlink testcase (assumed).\n");
191 return 0;
192}
193
Note: See TracBrowser for help on using the repository browser.