(root)/
libredwg-0.13/
test/
unit-testing/
assoc2dconstraintgroup.c
       1  #define DWG_TYPE DWG_TYPE_ASSOC2DCONSTRAINTGROUP
       2  #include "common.c"
       3  
       4  void
       5  api_process (dwg_object *obj)
       6  {
       7    int error, isnew;
       8    ASSOCACTION_fields;
       9  
      10    BITCODE_BL version;
      11    BITCODE_B b1;
      12    BITCODE_3BD workplane[3];
      13    BITCODE_H h1;
      14    BITCODE_BL num_actions;
      15    BITCODE_H *actions;
      16    BITCODE_BL num_nodes;
      17    Dwg_CONSTRAINTGROUPNODE *nodes;
      18  
      19    Dwg_Version_Type dwg_version = obj->parent->header.version;
      20    // #ifdef DEBUG_CLASSES
      21    dwg_obj_assoc2dconstraintgroup *_obj
      22        = dwg_object_to_ASSOC2DCONSTRAINTGROUP (obj);
      23    // ASSOCACTION
      24    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, class_version, BS);
      25    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, geometry_status, BL);
      26    CHK_ENTITY_MAX (_obj, ASSOC2DCONSTRAINTGROUP, geometry_status, BL, 10);
      27    CHK_ENTITY_H (_obj, ASSOC2DCONSTRAINTGROUP, owningnetwork);
      28    CHK_ENTITY_H (_obj, ASSOC2DCONSTRAINTGROUP, actionbody);
      29    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, action_index, BL);
      30    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, max_assoc_dep_index, BL);
      31    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_deps, BL);
      32    for (unsigned i = 0; i < num_deps; i++)
      33      {
      34        CHK_SUBCLASS_TYPE (_obj->deps[i], ASSOCACTION_Deps, is_owned, B);
      35        CHK_SUBCLASS_H (_obj->deps[i], ASSOCACTION_Deps, dep);
      36      }
      37    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_owned_params, BL);
      38    CHK_ENTITY_HV (_obj, ASSOC2DCONSTRAINTGROUP, owned_params, num_owned_params);
      39    CHK_ENTITY_TYPE (_obj, ASSOCACTION, num_values, BL);
      40    CHK_VALUEPARAM (num_values, values);
      41  
      42    // ASSOC2DCONSTRAINTGROUP
      43    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, version, BL);
      44    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, b1, B);
      45    // 3x10 workplane
      46    // CHK_ENTITY_3RD (_obj, ASSOC2DCONSTRAINTGROUP, workplane[3],
      47    // &workplane[3][0]);
      48    CHK_ENTITY_H (_obj, ASSOC2DCONSTRAINTGROUP, h1);
      49    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_actions, BL);
      50    CHK_ENTITY_HV (_obj, ASSOC2DCONSTRAINTGROUP, actions, num_actions);
      51    CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_nodes, BL);
      52    CHK_ENTITY_MAX (_obj, ASSOC2DCONSTRAINTGROUP, num_nodes, BL, 200);
      53    for (unsigned i = 0; i < num_nodes; i++)
      54      {
      55        CHK_SUBCLASS_TYPE (_obj->nodes[i], CONSTRAINTGROUPNODE, nodeid, BL);
      56        CHK_SUBCLASS_TYPE (_obj->nodes[i], CONSTRAINTGROUPNODE, status, RC);
      57        CHK_SUBCLASS_TYPE (_obj->nodes[i], CONSTRAINTGROUPNODE, num_connections,
      58                           BL);
      59        CHK_SUBCLASS_MAX (_obj->nodes[i], CONSTRAINTGROUPNODE, num_connections,
      60                          BL, _obj->num_actions);
      61        if (_obj->nodes[i].num_connections > _obj->num_actions)
      62          fail ("Invalid nodes[%u].num_connections", i);
      63        else if (!_obj->nodes[i].connections)
      64          fail ("Empty nodes[%u].connections", i);
      65        else
      66          for (unsigned j = 0;
      67               j < MIN (_obj->num_actions, _obj->nodes[i].num_connections); j++)
      68            {
      69              if (!_obj->nodes[i].connections[j])
      70                fail ("Invalid connections[%u]", j);
      71              else
      72                ok ("CONSTRAINTGROUPNODE[%d].connections[%d]: %d", i, j,
      73                    (int)_obj->nodes[i].connections[j]);
      74            }
      75      }
      76    // #endif
      77  }