(root)/
libredwg-0.13/
test/
unit-testing/
evaluation_graph.c
       1  // TODO unstable.
       2  // Needed for ACSH_CLASS primitives
       3  #define DWG_TYPE DWG_TYPE_EVALUATION_GRAPH
       4  #include "common.c"
       5  
       6  void
       7  api_process (dwg_object *obj)
       8  {
       9    int error;
      10    BITCODE_BLd first_nodeid, first_nodeid_copy;
      11    BITCODE_BL num_nodes, i;
      12    Dwg_EVAL_Node *nodes;
      13    BITCODE_B has_graph;
      14    BITCODE_BL num_edges;
      15    Dwg_EVAL_Edge *edges;
      16  
      17    Dwg_Version_Type dwg_version = obj->parent->header.version;
      18    dwg_obj_evaluation_graph *_obj = dwg_object_to_EVALUATION_GRAPH (obj);
      19  
      20    CHK_ENTITY_TYPE (_obj, EVALUATION_GRAPH, first_nodeid, BLd);
      21    CHK_ENTITY_TYPE (_obj, EVALUATION_GRAPH, first_nodeid_copy, BLd);
      22    CHK_ENTITY_TYPE (_obj, EVALUATION_GRAPH, num_nodes, BL);
      23    if (!dwg_dynapi_entity_value (_obj, "EVALUATION_GRAPH", "nodes", &nodes,
      24                                  NULL))
      25      fail ("EVAL_Node.nodes");
      26    else
      27      for (i = 0; i < _obj->num_nodes; i++)
      28        {
      29          BITCODE_BLd node[4];
      30          CHK_SUBCLASS_TYPE (_obj->nodes[i], EVAL_Node, id, BL);
      31          CHK_SUBCLASS_TYPE (_obj->nodes[i], EVAL_Node, edge_flags, BL);
      32          CHK_SUBCLASS_TYPE (_obj->nodes[i], EVAL_Node, nextid, BLd);
      33          CHK_SUBCLASS_H (_obj->nodes[i], EVAL_Node, evalexpr);
      34          // CHK_SUBCLASS_VECTOR_TYPE (_obj->nodes[i], EVAL_Node, node, 4, BLd);
      35          if (dwg_dynapi_subclass_value (&_obj->nodes[i], "EVAL_Node", "node",
      36                                         &node, NULL))
      37            {
      38              for (int j = 0; j < 4; j++)
      39                {
      40                  ok ("EVAL_Node.node[%d]: " FORMAT_BLd, j, node[j]);
      41                }
      42            }
      43          else
      44            fail ("EVAL_Node.node[4]");
      45          CHK_SUBCLASS_TYPE (_obj->nodes[i], EVAL_Node, active_cycles, B);
      46        }
      47    CHK_ENTITY_TYPE (_obj, EVALUATION_GRAPH, has_graph, B);
      48  
      49    CHK_ENTITY_TYPE (_obj, EVALUATION_GRAPH, num_edges, BL);
      50    if (!dwg_dynapi_entity_value (_obj, "EVALUATION_GRAPH", "edges", &edges,
      51                                  NULL))
      52      fail ("EVAL_Edge.edges");
      53    else
      54      for (i = 0; i < _obj->num_edges; i++)
      55        {
      56          BITCODE_BLd edge[5];
      57          CHK_SUBCLASS_TYPE (_obj->edges[i], EVAL_Edge, id, BL);
      58          CHK_SUBCLASS_TYPE (_obj->edges[i], EVAL_Edge, nextid, BLd);
      59          CHK_SUBCLASS_TYPE (_obj->edges[i], EVAL_Edge, e1, BLd);
      60          CHK_SUBCLASS_TYPE (_obj->edges[i], EVAL_Edge, e2, BLd);
      61          CHK_SUBCLASS_TYPE (_obj->edges[i], EVAL_Edge, e3, BLd);
      62          // CHK_SUBCLASS_VECTOR_TYPE (edges, EVAL_Edge, edge, 5, BLd);
      63          if (dwg_dynapi_subclass_value (&_obj->edges[i], "EVAL_Edge",
      64                                         "out_edge", &edge, NULL))
      65            {
      66              for (int j = 0; j < 5; j++)
      67                {
      68                  ok ("EVAL_Edge.out_edge[%d]: " FORMAT_BLd, j, edge[j]);
      69                }
      70            }
      71          else
      72            fail ("EVAL_Edge.out_edge[5]");
      73        }
      74  }