From e2c5191f0c1c249a3a007a7e0b4200d4e0984c3d Mon Sep 17 00:00:00 2001 From: keie Date: Fri, 11 Jan 1985 13:13:56 +0000 Subject: [PATCH] *** empty log message *** --- lang/cem/ctest/ctstruct/str.c | 170 ++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 lang/cem/ctest/ctstruct/str.c diff --git a/lang/cem/ctest/ctstruct/str.c b/lang/cem/ctest/ctstruct/str.c new file mode 100644 index 000000000..17884b64e --- /dev/null +++ b/lang/cem/ctest/ctstruct/str.c @@ -0,0 +1,170 @@ +/* + * (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands. + * + * This product is part of the Amsterdam Compiler Kit. + * + * Permission to use, sell, duplicate or disclose this software must be + * obtained in writing. Requests for such permissions may be sent to + * + * Dr. Andrew S. Tanenbaum + * Wiskundig Seminarium + * Vrije Universiteit + * Postbox 7161 + * 1007 MC Amsterdam + * The Netherlands + * + */ + +/* Author: E.G. Keizer */ + +/* test for structure parameters, assignment and return */ +# define ASIZE 26 + +struct w1 { int w1_i ; } ; +struct w2 { int w2_i ; double w2_d ; } ; +struct w3 { char w3_a[ASIZE] ; double w3_x ; } ; + +struct w1 es1 ; +struct w1 es2[3] ; + +main() { + asst() ; + part() ; + callt() ; + return 0 ; + +} + +asst() { + /* test structure assignment */ + struct w1 st1, st2, *st3 ; + struct w2 s2t1, s2t2, *s2t3 ; + struct w3 s3t1, s3t2, *s3t3 ; + + + register int i ; + + printf("w1\n") ; + st1.w1_i = 506 ; + st2 = st1 ; + printf("\tst2.w1_i %d\n",st2.w1_i) ; + st3 = &st1 ; + printf("\t(*st3).w1_i %d\n",(*st3).w1_i) ; + es1.w1_i = 711 ; + st1 = st2 = es1 ; + printf("\tst1.w1_i %d\n",st1.w1_i) ; + printf("\tst2.w1_i %d\n",st2.w1_i) ; + es2[2] = st1 ; + printf("\tes2[2].w1_i %d\n",es2[2].w1_i) ; + + st1.w1_i = -577 ; + es1.w1_i = 577 ; + for ( i=0 ; i<2 ; i++ ) { + st2 = ( i ? st1 : es1 ) ; + printf("\tst2.w1_i %d\n",st2.w1_i) ; + } + + st1 = ( i , es1 ) ; + printf("\tst1.w1_i %d\n",st1.w1_i) ; + + printf("w2\n") ; + s2t1.w2_i = 18000 ; + s2t1.w2_d = 3.1415 ; + s2t2 = s2t1 ; + printf("\ts2t2: .w2_i %d .w2_d %f\n",s2t2.w2_i,s2t2.w2_d) ; + s2t3 = &s2t2 ; + printf("\ts2t3->w2_d %f\n",s2t3->w2_d) ; + + printf("w3\n") ; + for ( i = 0 ; i