Go to the documentation of this file.00001
00071 #include "base1.h"
00072 #include "base2.h"
00073 #include "derived1.h"
00074 #include "derived2.h"
00075
00081 static void
00082 display_base1 (base1_handle base1_h)
00083 {
00084 size_t string_size;
00085 my_rc_e rc;
00086
00087 rc = base1_string_size(base1_h, &string_size);
00088 if (my_rc_e_is_notok(rc)) {
00089 return;
00090 }
00091
00092 {
00093 char base1_str[string_size];
00094 base1_string(base1_h, base1_str, sizeof(base1_str));
00095 printf("type(%s): %s\n", base1_type_string(base1_h), base1_str);
00096 }
00097 }
00098
00104 static void
00105 display_base2 (base2_handle base2_h)
00106 {
00107 size_t string_size;
00108 my_rc_e rc;
00109
00110 rc = base2_string_size(base2_h, &string_size);
00111 if (my_rc_e_is_notok(rc)) {
00112 return;
00113 }
00114
00115 {
00116 char base2_str[string_size];
00117 base2_string(base2_h, base2_str, sizeof(base2_str));
00118 printf("type(%s): %s\n", base2_type_string(base2_h), base2_str);
00119 }
00120 }
00121
00125 int
00126 main (int argc, char *argv[])
00127 {
00128 base1_handle base1_h, base1_2_h, base1_3_h;
00129 base2_handle base2_h;
00130 derived1_handle derived1_h, derived1_2_h;
00131 derived2_handle derived2_h;
00132 base1_public_data_st base1_data = {0};
00133 base1_public_data_st derived1_data = {0};
00134 my_rc_e rc;
00135
00136 printf("\n");
00137
00138 base1_h = base1_new1();
00139 if (NULL == base1_h) {
00140 return (1);
00141 }
00142
00143 derived1_h = derived1_new1();
00144 if (NULL == derived1_h) {
00145 return (1);
00146 }
00147 base1_2_h = derived1_cast_to_base1(derived1_h);
00148 base2_h = derived1_cast_to_base2(derived1_h);
00149
00150 derived2_h = derived2_new1();
00151 if (NULL == derived1_h) {
00152 return (1);
00153 }
00154 derived1_2_h = derived2_cast_to_derived1(derived2_h);
00155 base1_3_h = derived1_cast_to_base1(derived1_2_h);
00156
00157 printf("***\n");
00158 display_base1(base1_h);
00159 display_base1(base1_2_h);
00160 display_base1(base1_3_h);
00161 printf("***\n");
00162
00163 rc = base1_get_public_data(base1_h, &base1_data);
00164 if (my_rc_e_is_notok(rc)) {
00165 return (1);
00166 }
00167
00168 rc = base1_get_public_data(base1_2_h, &derived1_data);
00169 if (my_rc_e_is_notok(rc)) {
00170 return (1);
00171 }
00172
00173 base1_data.val1 = 53;
00174 derived1_data.val1 = 253;
00175
00176 rc = base1_set_public_data(base1_h, &base1_data);
00177 if (my_rc_e_is_notok(rc)) {
00178 return (1);
00179 }
00180
00181 rc = base1_set_public_data(base1_2_h, &derived1_data);
00182 if (my_rc_e_is_notok(rc)) {
00183 return (1);
00184 }
00185
00186 rc = base2_increase_val1(base2_h);
00187 if (my_rc_e_is_notok(rc)) {
00188 return (1);
00189 }
00190
00191 rc = base1_increase_val3(base1_h);
00192 if (my_rc_e_is_notok(rc)) {
00193 return (1);
00194 }
00195
00196 rc = base1_increase_val3(base1_2_h);
00197 if (my_rc_e_is_notok(rc)) {
00198 return (1);
00199 }
00200
00201 rc = derived1_increase_val4(derived1_h);
00202 if (my_rc_e_is_notok(rc)) {
00203 return (1);
00204 }
00205
00206 rc = derived1_increase_val4(derived1_2_h);
00207 if (my_rc_e_is_notok(rc)) {
00208 return (1);
00209 }
00210
00211 printf("\n***\n");
00212 display_base1(base1_h);
00213 display_base1(base1_2_h);
00214 display_base2(base2_h);
00215 display_base1(base1_3_h);
00216 printf("***\n");
00217
00218 base1_delete(base1_h);
00219 base1_delete(base1_2_h);
00220 base1_delete(base1_3_h);
00221
00222 printf("\n");
00223
00224 return (0);
00225 }