1 // TODO unstable
2 #define DWG_TYPE DWG_TYPE_ASSOCVARIABLE
3 #include "common.c"
4
5 void
6 api_process (dwg_object *obj)
7 {
8 int error, isnew;
9 BITCODE_BS av_class_version;
10 ASSOCACTION_fields;
11 BITCODE_T name;
12 BITCODE_T t58;
13 BITCODE_T evaluator;
14 BITCODE_T desc;
15 // BITCODE_BSd value_type;
16 Dwg_EvalVariant value;
17 BITCODE_B has_t78;
18 BITCODE_T t78;
19 BITCODE_B b290;
20
21 Dwg_Version_Type dwg_version = obj->parent->header.version;
22 // #ifdef DEBUG_CLASSES
23 dwg_obj_assocvariable *_obj = dwg_object_to_ASSOCVARIABLE (obj);
24
25 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, av_class_version, BS);
26
27 // ASSOCACTION
28 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, class_version, BS);
29 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, geometry_status, BL);
30 CHK_ENTITY_MAX (_obj, ASSOCVARIABLE, geometry_status, BL, 10);
31 CHK_ENTITY_H (_obj, ASSOCVARIABLE, owningnetwork);
32 CHK_ENTITY_H (_obj, ASSOCVARIABLE, actionbody);
33 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, action_index, BL);
34 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, max_assoc_dep_index, BL);
35 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, num_deps, BL);
36 for (unsigned i = 0; i < num_deps; i++)
37 {
38 CHK_SUBCLASS_TYPE (_obj->deps[i], ASSOCACTION_Deps, is_owned, B);
39 CHK_SUBCLASS_H (_obj->deps[i], ASSOCACTION_Deps, dep);
40 }
41 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, num_owned_params, BL);
42 CHK_ENTITY_HV (_obj, ASSOCVARIABLE, owned_params, num_owned_params);
43 CHK_ENTITY_TYPE (_obj, ASSOCNETWORK, num_values, BL);
44 CHK_VALUEPARAM (num_values, values);
45
46 // ASSOCVARIABLE
47 CHK_ENTITY_UTF8TEXT (_obj, ASSOCVARIABLE, name);
48 CHK_ENTITY_UTF8TEXT (_obj, ASSOCVARIABLE, t58);
49 CHK_ENTITY_UTF8TEXT (_obj, ASSOCVARIABLE, evaluator);
50 CHK_ENTITY_UTF8TEXT (_obj, ASSOCVARIABLE, desc);
51 CHK_SUBCLASS_TYPE (_obj->value, EvalVariant, code, BS);
52 switch (dwg_resbuf_value_type (_obj->value.code))
53 {
54 case DWG_VT_REAL:
55 CHK_SUBCLASS_TYPE (_obj->value, EvalVariant, u.bd, BD);
56 break;
57 case DWG_VT_INT32:
58 CHK_SUBCLASS_TYPE (_obj->value, EvalVariant, u.bl, BL);
59 break;
60 case DWG_VT_INT16:
61 CHK_SUBCLASS_TYPE (_obj->value, EvalVariant, u.bs, BS);
62 break;
63 case DWG_VT_STRING:
64 CHK_SUBCLASS_UTF8TEXT (_obj->value, EvalVariant, u.text);
65 break;
66 case DWG_VT_HANDLE:
67 CHK_SUBCLASS_H (_obj->value, EvalVariant, u.handle);
68 break;
69 case DWG_VT_BINARY:
70 case DWG_VT_OBJECTID:
71 case DWG_VT_POINT3D:
72 case DWG_VT_INVALID:
73 case DWG_VT_INT64:
74 case DWG_VT_INT8:
75 case DWG_VT_BOOL:
76 default:
77 fail ("Unknown ASSOCVARIABLE.value.code %u", _obj->value.code);
78 }
79 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, has_t78, B);
80 CHK_ENTITY_UTF8TEXT (_obj, ASSOCVARIABLE, t78);
81 CHK_ENTITY_TYPE (_obj, ASSOCVARIABLE, b290, B);
82 // #endif
83 }