(root)/
libredwg-0.13/
test/
unit-testing/
assocvariable.c
       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  }