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