Coverage Report

Created: 2026-11-12 06:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libredwg/src/dec_macros.h
Line
Count
Source
1
/*****************************************************************************/
2
/*  LibreDWG - free implementation of the DWG file format                    */
3
/*                                                                           */
4
/*  Copyright (C) 2009-2026 Free Software Foundation, Inc.                   */
5
/*                                                                           */
6
/*  This library is free software, licensed under the terms of the GNU       */
7
/*  General Public License as published by the Free Software Foundation,     */
8
/*  either version 3 of the License, or (at your option) any later version.  */
9
/*  You should have received a copy of the GNU General Public License        */
10
/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
11
/*****************************************************************************/
12
13
/*
14
 * dec_macros.h: decoding macros (for encode, print, free in the C files)
15
 * written by Felipe Castro
16
 * modified by Felipe Corrêa da Silva Sances
17
 * modified by Rodrigo Rodrigues da Silva
18
 * modified by Reini Urban
19
 * modified by Denis Pruchkovsky
20
 */
21
22
#ifndef DEC_MACROS_H
23
#define DEC_MACROS_H
24
25
/* DWG2_SPEC: decode2.c defines this to make dwg_decode_##token non-static */
26
#ifdef DWG2_SPEC
27
#  define DWG_DECODE_FUNC /* non-static */
28
#else
29
#  define DWG_DECODE_FUNC static
30
#endif
31
32
#include "config.h"
33
#if defined HAVE_CTYPE_H || defined _MSC_VER
34
#  include <ctype.h>
35
#endif
36
37
#ifdef IN_DXF_H
38
#  error in_dxf.h must be included after dec_macros.h because of FORMAT_BD
39
#endif
40
41
// needed by decode, decode_r2007 and decode_r11
42
#define ACTION decode
43
#define IS_DECODER
44
45
// redeclare versions to be from, not target
46
#include "importer.h"
47
48
#ifndef FREE_IF
49
#  define FREE_IF(ptr)                                                        \
50
0
    if (ptr)                                                                  \
51
0
      {                                                                       \
52
0
        free (ptr);                                                           \
53
0
        ptr = NULL;                                                           \
54
0
      }
55
#endif
56
57
// different to out_json
58
#define ARGS_HREF11(ref) ref->handleref.size, ref->r11_idx, ref->absolute_ref
59
#define FORMAT_HREF11 "[%u, %hd, " FORMAT_HV "]"
60
61
#undef LOG_POS
62
#define LOG_POS                                                               \
63
652k
  LOG_INSANE (" @%" PRIuSIZE ".%u",                                           \
64
652k
              obj ? dat->byte - obj->address : dat->byte, (unsigned)dat->bit);\
65
652k
  LOG_TRACE ("\n");
66
#define LOG_POS_(level)                                                       \
67
43.4k
  LOG_INSANE (" @%" PRIuSIZE ".%u",                                           \
68
43.4k
              obj ? dat->byte - obj->address : dat->byte, (unsigned)dat->bit);\
69
43.4k
  LOG (level, "\n")
70
71
#define LOG_RPOS                                                              \
72
26.4M
  LOG_INSANE (" @%" PRIuSIZE ".%u", dat->byte, (unsigned)dat->bit);           \
73
26.7M
  LOG_TRACE ("\n");
74
#define LOG_RPOS_(level)                                                      \
75
  LOG_INSANE (" @%" PRIuSIZE ".%u", dat->byte, (unsigned)dat->bit);           \
76
  LOG (level, "\n")
77
#define LOG_HPOS                                                              \
78
  LOG_INSANE (" @%" PRIuSIZE ".%u",                                           \
79
              obj && hdl_dat->byte > obj->address                             \
80
                  ? hdl_dat->byte - obj->address                              \
81
                  : hdl_dat->byte,                                            \
82
              (unsigned)hdl_dat->bit);                                        \
83
  LOG_TRACE ("\n");
84
#define LOG_HPOS_(level)                                                      \
85
  LOG_INSANE (" @%" PRIuSIZE ".%u",                                           \
86
              obj && hdl_dat->byte > obj->address                             \
87
                  ? hdl_dat->byte - obj->address                              \
88
                  : hdl_dat->byte,                                            \
89
              (unsigned)hdl_dat->bit);                                        \
90
  LOG (level, "\n");
91
92
#define VALUE(value, type, dxf)                                               \
93
0
  (void)bit_read_##type (dat);                                                \
94
0
  LOG_TRACE (FORMAT_##type " [" #type " %d]\n", (BITCODE_##type)value, dxf);
95
0
#define VALUE_RC(value, dxf) VALUE (value, RC, dxf)
96
0
#define VALUE_BS(value, dxf) VALUE (value, BS, dxf)
97
0
#define VALUE_BL(value, dxf) VALUE (value, BL, dxf)
98
0
#define VALUE_RS(value, dxf) VALUE (value, RS, dxf)
99
0
#define VALUE_RL(value, dxf) VALUE (value, RL, dxf)
100
0
#define VALUE_RLx(value, dxf) VALUE (value, RL, dxf)
101
0
#define VALUE_RD(value, dxf) VALUE (value, RD, dxf)
102
#define VALUE_BD(value, dxf) VALUE (value, BD, dxf)
103
104
#define FIELDG(nam, type, dxf)                                                \
105
36.7M
  {                                                                           \
106
36.7M
    _obj->nam = bit_read_##type (dat);                                        \
107
36.7M
    FIELD_G_TRACE (nam, type, dxf);                                           \
108
36.7M
  }
109
110
#define FIELD(nam, type)                                                      \
111
  {                                                                           \
112
    _obj->nam = bit_read_##type (dat);                                        \
113
    FIELD_TRACE (nam, type);                                                  \
114
  }
115
#define SUB_FIELD(o, nam, type, dxf)                                          \
116
1.51M
  {                                                                           \
117
1.51M
    _obj->o.nam = bit_read_##type (dat);                                      \
118
1.51M
    FIELD_G_TRACE (o.nam, type, dxf);                                         \
119
1.51M
  }
120
121
#define FIELD_CAST(nam, type, cast, dxf)                                      \
122
12.6M
  {                                                                           \
123
12.6M
    _obj->nam = (BITCODE_##cast)bit_read_##type (dat);                        \
124
12.6M
    FIELD_G_TRACE (nam, cast, dxf);                                           \
125
12.6M
  }
126
#define SUB_FIELD_CAST(o, nam, type, cast, dxf)                               \
127
2.27M
  {                                                                           \
128
2.27M
    _obj->o.nam = (BITCODE_##cast)bit_read_##type (dat);                      \
129
2.27M
    FIELD_G_TRACE (o.nam, cast, dxf);                                         \
130
2.27M
  }
131
132
#define LOG_TRACE_TV_NAME(nam, value, dxfgroup)                               \
133
20.3M
  {                                                                           \
134
20.3M
    char *_name = format_field_name (#nam, rcount1, rcount2, 0);              \
135
20.3M
    LOG_TRACE_TV_N (_name ? _name : #nam, value, dxfgroup);                   \
136
20.3M
    if (_name)                                                                \
137
20.3M
      free (_name);                                                           \
138
20.3M
  }
139
140
#define LOG_TRACE_TV_NAME_I(nam, idx, value, dxfgroup)                        \
141
4.40k
  {                                                                           \
142
4.40k
    char *_name = format_field_name (#nam, rcount1, rcount2, idx);            \
143
4.40k
    LOG_TRACE_TV_N (_name ? _name : #nam, value, dxfgroup);                   \
144
4.40k
    if (_name)                                                                \
145
4.40k
      free (_name);                                                           \
146
4.40k
  }
147
148
#define LOG_TRACE_TU_NAME(nam, value, dxfgroup)                               \
149
0
  {                                                                           \
150
0
    char *_name = format_field_name (#nam, rcount1, rcount2, 0);              \
151
0
    GCC46_DIAG_IGNORE (-Wformat-nonliteral)                                   \
152
0
    LOG_TRACE_TU (_name ? _name : #nam, value, dxfgroup);                     \
153
0
    GCC46_DIAG_RESTORE                                                        \
154
0
    if (_name)                                                                \
155
0
      free (_name);                                                           \
156
0
  }
157
158
#define LOG_TRACE_TU_NAME_I(nam, idx, value, type, dxfgroup)                  \
159
0
  {                                                                           \
160
0
    char *_name = format_field_name (#nam, rcount1, rcount2, vcount);         \
161
0
    GCC46_DIAG_IGNORE (-Wformat-nonliteral)                                   \
162
0
    LOG_TRACE_TU_I (_name ? _name : #nam, idx, value, type, dxfgroup);        \
163
0
    GCC46_DIAG_RESTORE                                                        \
164
0
    if (_name)                                                                \
165
0
      free (_name);                                                           \
166
0
  }
167
168
#define FIELD_G_TRACE(nam, type, dxfgroup)                                    \
169
97.9M
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
170
97.9M
    {                                                                         \
171
0
      char *s1 = strrplc (#nam, "[rcount1]", "[%d]");                         \
172
0
      if (s1)                                                                 \
173
0
        {                                                                     \
174
0
          char *s2 = strrplc (s1, "[rcount2]", "[%d]");                       \
175
0
          if (s2)                                                             \
176
0
            {                                                                 \
177
0
              s2 = (char *)realloc (s2, strlen (s2)                           \
178
0
                                    + sizeof (": " FORMAT_##type " [" #type " %d]")); \
179
0
              if (s2)                                                         \
180
0
                {                                                             \
181
0
                  strcat (s2, ": " FORMAT_##type " [" #type " %d]");          \
182
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
183
0
                  LOG_TRACE (s2, rcount1, rcount2,                            \
184
0
                             (BITCODE_##type)_obj->nam, dxfgroup);            \
185
0
                  GCC46_DIAG_RESTORE                                          \
186
0
                }                                                             \
187
0
              free (s2);                                                      \
188
0
              free (s1);                                                      \
189
0
            }                                                                 \
190
0
          else                                                                \
191
0
            {                                                                 \
192
0
              s1 = (char *)realloc (s1, strlen (s1)                           \
193
0
                                    + sizeof (": " FORMAT_##type " [" #type " %d]")); \
194
0
              if (s1)                                                         \
195
0
                {                                                             \
196
0
                  strcat (s1, ": " FORMAT_##type " [" #type " %d]");          \
197
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
198
0
                  LOG_TRACE (s1, rcount1, (BITCODE_##type)_obj->nam, dxfgroup); \
199
0
                  GCC46_DIAG_RESTORE                                          \
200
0
                }                                                             \
201
0
              free (s1);                                                      \
202
0
            }                                                                 \
203
0
        }                                                                     \
204
0
      else                                                                    \
205
0
        LOG_TRACE (#nam ": " FORMAT_##type " [" #type " %d]",                 \
206
0
                   (BITCODE_##type)_obj->nam, dxfgroup);                      \
207
0
      LOG_RPOS                                                                \
208
0
    }
209
210
#define FIELD_G_TRACE_ANGLE(nam, type, dxfgroup)                              \
211
2.69M
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
212
2.69M
    {                                                                         \
213
0
      char *s1 = strrplc (#nam, "[rcount1]", "[%d]");                         \
214
0
      if (s1)                                                                 \
215
0
        {                                                                     \
216
0
          char *s2 = strrplc (s1, "[rcount2]", "[%d]");                       \
217
0
          if (s2)                                                             \
218
0
            {                                                                 \
219
0
              s2 = (char *)realloc (s2, strlen (s2)                           \
220
0
                                    + sizeof (": " FORMAT_##type " [" #type " %d] %gº")); \
221
0
              if (s2)                                                         \
222
0
                {                                                             \
223
0
                  strcat (s2, ": " FORMAT_##type " [" #type " %d] %gº");      \
224
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
225
0
                  LOG_TRACE (s2, rcount1, rcount2, _obj->nam, dxfgroup,       \
226
0
                             rad2deg (_obj->nam));                            \
227
0
                  GCC46_DIAG_RESTORE                                          \
228
0
                }                                                             \
229
0
              free (s2);                                                      \
230
0
              free (s1);                                                      \
231
0
            }                                                                 \
232
0
          else                                                                \
233
0
            {                                                                 \
234
0
              s1 = (char *)realloc (s1, strlen (s1)                           \
235
0
                                    + sizeof (": " FORMAT_##type " [" #type " %d] %gº")); \
236
0
              if (s1)                                                         \
237
0
                {                                                             \
238
0
                  strcat (s1, ": " FORMAT_##type " [" #type " %d] %gº");      \
239
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
240
0
                  LOG_TRACE (s1, rcount1, _obj->nam, dxfgroup,                \
241
0
                             rad2deg (_obj->nam));                            \
242
0
                  GCC46_DIAG_RESTORE                                          \
243
0
                }                                                             \
244
0
              free (s1);                                                      \
245
0
            }                                                                 \
246
0
        }                                                                     \
247
0
      else                                                                    \
248
0
        LOG_TRACE (#nam ": " FORMAT_##type " [" #type " %d] %gº",             \
249
0
                   (BITCODE_##type)_obj->nam, dxfgroup, rad2deg (_obj->nam)); \
250
0
      LOG_RPOS                                                                \
251
0
    }
252
253
#define FIELD_TRACE(nam, type)                                                \
254
5.10k
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
255
5.10k
    {                                                                         \
256
0
      char *s1 = strrplc (#nam, "[rcount1]", "[%d]");                         \
257
0
      if (s1)                                                                 \
258
0
        {                                                                     \
259
0
          char *s2 = strrplc (s1, "[rcount2]", "[%d]");                       \
260
0
          if (s2)                                                             \
261
0
            {                                                                 \
262
0
              s2 = (char *)realloc (s2, strlen (s2)                           \
263
0
                                    + sizeof (": " FORMAT_##type " " #type "\n")); \
264
0
              if (s2)                                                         \
265
0
                {                                                             \
266
0
                  strcat (s2, ": " FORMAT_##type " " #type "\n");             \
267
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
268
0
                  LOG_TRACE (s2, rcount1, rcount2, _obj->nam);                \
269
0
                  GCC46_DIAG_RESTORE                                          \
270
0
                }                                                             \
271
0
              free (s2);                                                      \
272
0
              free (s1);                                                      \
273
0
            }                                                                 \
274
0
          else                                                                \
275
0
            {                                                                 \
276
0
              s1 = (char *)realloc (s1, strlen (s1)                           \
277
0
                                    + sizeof (": " FORMAT_##type " " #type "\n")); \
278
0
              if (s1)                                                         \
279
0
                {                                                             \
280
0
                  strcat (s1, ": " FORMAT_##type " " #type "\n");             \
281
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
282
0
                  LOG_TRACE (s1, rcount1, _obj->nam);                         \
283
0
                  GCC46_DIAG_RESTORE                                          \
284
0
                }                                                             \
285
0
              free (s1);                                                      \
286
0
            }                                                                 \
287
0
        }                                                                     \
288
0
      else                                                                    \
289
0
        {                                                                     \
290
0
          LOG_TRACE (#nam ": " FORMAT_##type " [" #type "]\n", _obj->nam);    \
291
0
        }                                                                     \
292
0
    }
293
#define LOG_TF(level, var, len)                                               \
294
256k
  {                                                                           \
295
256k
    LOG_TF_HEX (level, var, len)                                              \
296
256k
    if (var && (DWG_LOGLEVEL >= DWG_LOGLEVEL_INSANE))                         \
297
256k
      {                                                                       \
298
0
        for (unsigned _i = 0; _i < (unsigned)(len); _i++)                     \
299
0
          {                                                                   \
300
0
            unsigned char c = ((unsigned char *)var)[_i];                     \
301
0
            LOG_INSANE ("%-2c", isprint (c) ? c : ' ');                       \
302
0
          }                                                                   \
303
0
        LOG_INSANE ("\n");                                                    \
304
0
      }                                                                       \
305
256k
  }
306
#define LOG_TF_HEX(level, var, len)                                           \
307
256k
  {                                                                           \
308
256k
    if (var && (DWG_LOGLEVEL >= DWG_LOGLEVEL_##level || len <= 256))          \
309
256k
      {                                                                       \
310
18.2M
        for (unsigned _i = 0; _i < (unsigned)(len); _i++)                     \
311
18.0M
          {                                                                   \
312
18.0M
            LOG (level, "%02X", (unsigned char)((char *)var)[_i]);            \
313
18.0M
          }                                                                   \
314
182k
        LOG (level, "\n");                                                    \
315
182k
      }                                                                       \
316
256k
  }
317
108k
#define LOG_TRACE_TF(var, len) LOG_TF (TRACE, var, len);
318
147k
#define LOG_INSANE_TF(var, len) LOG_TF (INSANE, var, len);
319
320
#define FIELD_VEC_TRACE_N(nam, type, vcount, value, dxf)                      \
321
4.32M
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
322
4.32M
    {                                                                         \
323
0
      char *s1 = strrplc (#nam, "[rcount1]", "[%d]");                         \
324
0
      if (s1)                                                                 \
325
0
        {                                                                     \
326
0
          char *s2 = strrplc (s1, "[rcount2]", "[%d]");                       \
327
0
          if (s2)                                                             \
328
0
            {                                                                 \
329
0
              s2 = (char *)realloc (s2, strlen (s2)                           \
330
0
                                    + sizeof ("[%ld]: " FORMAT_##type " [" #type " %d]")); \
331
0
              if (s2)                                                         \
332
0
                {                                                             \
333
0
                  strcat (s2, "[%ld]: " FORMAT_##type " [" #type " %d]");     \
334
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
335
0
                  LOG_TRACE (s2, rcount1, rcount2, vcount, value, dxf);       \
336
0
                  GCC46_DIAG_RESTORE                                          \
337
0
                }                                                             \
338
0
              free (s2);                                                      \
339
0
              free (s1);                                                      \
340
0
            }                                                                 \
341
0
          else                                                                \
342
0
            {                                                                 \
343
0
              s1 = (char *)realloc (s1, strlen (s1)                           \
344
0
                                    + sizeof ("[%ld]: " FORMAT_##type " [" #type " %d]")); \
345
0
              if (s1)                                                         \
346
0
                {                                                             \
347
0
                  strcat (s1, "[%ld]: " FORMAT_##type " [" #type " %d]");     \
348
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
349
0
                  LOG_TRACE (s1, rcount1, vcount, value, dxf);                \
350
0
                  GCC46_DIAG_RESTORE                                          \
351
0
                }                                                             \
352
0
              free (s1);                                                      \
353
0
            }                                                                 \
354
0
        }                                                                     \
355
0
      else                                                                    \
356
0
        {                                                                     \
357
0
          LOG_TRACE (#nam "[%ld]: " FORMAT_##type " [" #type " %d]", vcount,  \
358
0
                     value, dxf);                                             \
359
0
        }                                                                     \
360
0
      LOG_POS;                                                                \
361
0
    }
362
#define FIELD_2PT_TRACE(nam, type, dxf)                                       \
363
21.9M
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
364
21.9M
    {                                                                         \
365
0
      char *s1 = strrplc (#nam, "[rcount1]", "[%d]");                         \
366
0
      if (s1)                                                                 \
367
0
        {                                                                     \
368
0
          char *s2 = strrplc (s1, "[rcount2]", "[%d]");                       \
369
0
          if (s2)                                                             \
370
0
            {                                                                 \
371
0
              s2 = (char *)realloc (s2, strlen (s2)                           \
372
0
                                    + sizeof (": (" FORMAT_BD ", " FORMAT_BD  \
373
0
                                               ") [" #type " %d]"));          \
374
0
              if (s2)                                                         \
375
0
                {                                                             \
376
0
                  strcat (s2, ": (" FORMAT_BD ", " FORMAT_BD                  \
377
0
                                    ") [" #type " %d]");                      \
378
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
379
0
                  LOG_TRACE (s2, rcount1, rcount2, _obj->nam.x,               \
380
0
                             _obj->nam.y, dxf);                               \
381
0
                  GCC46_DIAG_RESTORE                                          \
382
0
                }                                                             \
383
0
              free (s2);                                                      \
384
0
              free (s1);                                                      \
385
0
            }                                                                 \
386
0
          else                                                                \
387
0
            {                                                                 \
388
0
              s1 = (char *)realloc (s1, strlen (s1)                           \
389
0
                                    + sizeof (": (" FORMAT_BD ", " FORMAT_BD  \
390
0
                                               ") [" #type " %d]"));          \
391
0
              if (s1)                                                         \
392
0
                {                                                             \
393
0
                  strcat (s1, ": (" FORMAT_BD ", " FORMAT_BD                  \
394
0
                                    ") [" #type " %d]");                      \
395
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
396
0
                  LOG_TRACE (s1, rcount1, _obj->nam.x, _obj->nam.y, dxf);     \
397
0
                  GCC46_DIAG_RESTORE                                          \
398
0
                }                                                             \
399
0
              free (s1);                                                      \
400
0
            }                                                                 \
401
0
        }                                                                     \
402
0
      else                                                                    \
403
0
        LOG_TRACE (#nam ": (" FORMAT_BD ", " FORMAT_BD ") [" #type " %d]",    \
404
0
                   _obj->nam.x, _obj->nam.y, dxf);                            \
405
0
      LOG_POS;                                                                \
406
0
    }
407
#define FIELD_3PT_TRACE(nam, type, dxf)                                       \
408
50.8M
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
409
50.8M
    {                                                                         \
410
0
      char *s1 = strrplc (#nam, "[rcount1]", "[%d]");                         \
411
0
      if (s1)                                                                 \
412
0
        {                                                                     \
413
0
          char *s2 = strrplc (s1, "[rcount2]", "[%d]");                       \
414
0
          if (s2)                                                             \
415
0
            {                                                                 \
416
0
              s2 = (char *)realloc (s2, strlen (s2)                           \
417
0
                                    + sizeof (": (" FORMAT_BD ", " FORMAT_BD  \
418
0
                                               ", " FORMAT_BD ") [" #type " %d]")); \
419
0
              if (s2)                                                         \
420
0
                {                                                             \
421
0
                  strcat (s2, ": (" FORMAT_BD ", " FORMAT_BD                  \
422
0
                                     ", " FORMAT_BD ") [" #type " %d]");      \
423
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
424
0
                  LOG_TRACE (s2, rcount1, rcount2, _obj->nam.x,               \
425
0
                             _obj->nam.y, _obj->nam.z, dxf);                  \
426
0
                  GCC46_DIAG_RESTORE                                          \
427
0
                }                                                             \
428
0
              free (s2);                                                      \
429
0
              free (s1);                                                      \
430
0
            }                                                                 \
431
0
          else                                                                \
432
0
            {                                                                 \
433
0
              s1 = (char *)realloc (s1, strlen (s1)                           \
434
0
                                    + sizeof (": (" FORMAT_BD ", " FORMAT_BD  \
435
0
                                               ", " FORMAT_BD ") [" #type " %d]")); \
436
0
              if (s1)                                                         \
437
0
                {                                                             \
438
0
                  strcat (s1, ": (" FORMAT_BD ", " FORMAT_BD                  \
439
0
                                     ", " FORMAT_BD ") [" #type " %d]");      \
440
0
                  GCC46_DIAG_IGNORE (-Wformat-nonliteral)                     \
441
0
                  LOG_TRACE (s1, rcount1, _obj->nam.x, _obj->nam.y,          \
442
0
                             _obj->nam.z, dxf);                               \
443
0
                  GCC46_DIAG_RESTORE                                          \
444
0
                }                                                             \
445
0
              free (s1);                                                      \
446
0
            }                                                                 \
447
0
        }                                                                     \
448
0
      else                                                                    \
449
0
        {                                                                     \
450
0
          LOG_TRACE (#nam ": (" FORMAT_BD ", " FORMAT_BD ", " FORMAT_BD       \
451
0
                          ") [" #type " %d]",                                 \
452
0
                     _obj->nam.x, _obj->nam.y, _obj->nam.z, dxf);             \
453
0
        }                                                                     \
454
0
      LOG_POS;                                                                \
455
0
    }
456
457
#define ANYCODE -1
458
#define VALUE_HANDLE(ref, nam, code, dxf)                                     \
459
18.2M
  {                                                                           \
460
18.2M
    PRE (R_13b1)                                                              \
461
18.2M
    {                                                                         \
462
1.52M
      size_t _pos = bit_position (dat);                                       \
463
1.52M
      if (ref && !ref->handleref.is_global)                                   \
464
1.52M
        free (ref);                                                           \
465
1.52M
      ref = dwg_decode_preR13_handleref (dat, code /*as size */, dwg);        \
466
1.52M
      LOG_TRACE (#nam ": %hd [H(%s) %d]", (short)ref->r11_idx,                \
467
1.52M
                 code == 1 ? "RC" : "RSd", dxf);                              \
468
1.52M
      LOG_INSANE (" @%" PRIuSIZE ".%u", _pos / 8, (unsigned)(_pos % 8));      \
469
1.52M
      LOG_TRACE ("\n");                                                       \
470
1.52M
    }                                                                         \
471
18.2M
    LATER_VERSIONS                                                            \
472
18.2M
    {                                                                         \
473
16.7M
      size_t _pos = bit_position (hdl_dat);                                   \
474
16.7M
      if (code >= 0)                                                          \
475
16.7M
        ref = dwg_decode_handleref_with_code (hdl_dat, obj, dwg, code);       \
476
16.7M
      else                                                                    \
477
16.7M
        ref = dwg_decode_handleref (hdl_dat, obj, dwg);                       \
478
16.7M
      if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                 \
479
16.7M
        {                                                                     \
480
0
          if (ref)                                                            \
481
0
            {                                                                 \
482
0
              char *_name = format_field_name (#nam, rcount1, rcount2, 0);    \
483
0
              LOG_TRACE ("%s: " FORMAT_REF " [H %d]",                         \
484
0
                         _name ? _name : #nam, ARGS_REF (ref), dxf);          \
485
0
              if (_name)                                                      \
486
0
                free (_name);                                                 \
487
0
              if (dwg_ref_object_silent (dwg, ref)                            \
488
0
                  && DWG_LOGLEVEL > DWG_LOGLEVEL_TRACE)                       \
489
0
                {                                                             \
490
0
                  int alloced;                                                \
491
0
                  const char *u8 = dwg_ref_tblname (dwg, ref, &alloced);      \
492
0
                  if (u8 && *u8)                                              \
493
0
                    HANDLER (OUTPUT, " => %s %s", dwg_ref_objname (dwg, ref), \
494
0
                             u8);                                             \
495
0
                  if (u8 && alloced)                                          \
496
0
                    free ((void *)u8);                                        \
497
0
                }                                                             \
498
0
            }                                                                 \
499
0
          else                                                                \
500
0
            {                                                                 \
501
0
              HANDLER (OUTPUT, #nam ": NULL %d [H %d]", code, dxf);           \
502
0
            }                                                                 \
503
0
          LOG_INSANE (" @%" PRIuSIZE ".%u", _pos / 8, (unsigned)(_pos % 8));  \
504
0
          HANDLER (OUTPUT, "\n");                                             \
505
0
        }                                                                     \
506
16.7M
    }                                                                         \
507
18.2M
  }
508
16.3M
#define FIELD_HANDLE(nam, code, dxf) VALUE_HANDLE (_obj->nam, nam, code, dxf)
509
#define SUB_FIELD_HANDLE(o, nam, code, dxf)                                   \
510
1.64M
  VALUE_HANDLE (_obj->o.nam, o.nam, code, dxf)
511
#define VALUE_H(hdl, dxf)                                                     \
512
264k
  {                                                                           \
513
264k
    size_t pos;                                                               \
514
264k
    PRE (R_13b1)                                                              \
515
264k
    {                                                                         \
516
264k
      pos = bit_position (dat);                                               \
517
264k
      error |= bit_read_H (dat, &hdl);                                        \
518
264k
    }                                                                         \
519
264k
    else                                                                      \
520
264k
    {                                                                         \
521
0
      pos = bit_position (hdl_dat);                                           \
522
0
      error |= bit_read_H (hdl_dat, &hdl);                                    \
523
0
    }                                                                         \
524
264k
    LOG_TRACE ("handle: " FORMAT_H " [H %d]", ARGS_H (hdl), dxf);             \
525
264k
    LOG_INSANE (" @%" PRIuSIZE ".%u", pos / 8, (unsigned)(pos % 8));          \
526
264k
    LOG_TRACE ("\n");                                                         \
527
264k
  }
528
529
#define VALUE_HANDLE_N(ref, nam, vcount, code, dxf)                           \
530
59.4M
  {                                                                           \
531
59.4M
    PRE (R_13b1)                                                              \
532
59.4M
    {                                                                         \
533
0
      size_t pos = bit_position (dat);                                        \
534
0
      ref = dwg_decode_preR13_handleref (dat, code, dwg);                     \
535
0
      LOG_TRACE (#nam "[%d]: " FORMAT_RS " [RS %d]", (int)vcount,             \
536
0
                 ref->r11_idx, dxf);                                          \
537
0
      LOG_INSANE (" @%" PRIuSIZE ".%u", pos / 8, (unsigned)(pos % 8));        \
538
0
      LOG_TRACE ("\n");                                                       \
539
0
    }                                                                         \
540
59.4M
    LATER_VERSIONS                                                            \
541
59.4M
    {                                                                         \
542
59.4M
      size_t pos = bit_position (hdl_dat);                                    \
543
59.4M
      if (code >= 0)                                                          \
544
59.4M
        ref = dwg_decode_handleref_with_code (hdl_dat, obj, dwg, code);       \
545
59.4M
      else                                                                    \
546
59.4M
        ref = dwg_decode_handleref (hdl_dat, obj, dwg);                       \
547
59.4M
      if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                 \
548
59.4M
        {                                                                     \
549
0
          if (ref)                                                            \
550
0
            {                                                                 \
551
0
              char *_name = format_field_name (#nam, rcount1, rcount2,        \
552
0
                                               vcount);                       \
553
0
              LOG_TRACE ("%s: " FORMAT_REF " [H* %d]",                        \
554
0
                         _name ? _name : #nam, ARGS_REF (ref), dxf);          \
555
0
              if (_name)                                                      \
556
0
                free (_name);                                                 \
557
0
              if (dwg_ref_object_silent (dwg, ref)                            \
558
0
                  && DWG_LOGLEVEL > DWG_LOGLEVEL_TRACE)                       \
559
0
                {                                                             \
560
0
                  int alloced;                                                \
561
0
                  const char *u8 = dwg_ref_tblname (dwg, ref, &alloced);      \
562
0
                  HANDLER (OUTPUT, " => %s %s", dwg_ref_objname (dwg, ref),   \
563
0
                           u8);                                               \
564
0
                  if (alloced)                                                \
565
0
                    free ((void *)u8);                                        \
566
0
                }                                                             \
567
0
            }                                                                 \
568
0
          else                                                                \
569
0
            {                                                                 \
570
0
              LOG_TRACE (#nam "[%d]: NULL %d [H* %d]", (int)vcount, code,     \
571
0
                         dxf);                                                \
572
0
            }                                                                 \
573
0
          LOG_INSANE (" @%" PRIuSIZE ".%u", pos / 8, (unsigned)(pos % 8));    \
574
0
          LOG_TRACE ("\n");                                                   \
575
0
        }                                                                     \
576
59.4M
    }                                                                         \
577
59.4M
  }
578
#define FIELD_HANDLE_N(nam, vcount, code, dxf)                                \
579
52.0M
  VALUE_HANDLE_N (_obj->nam, nam, vcount, code, dxf)
580
581
#define FIELD_DATAHANDLE(nam, code, dxf)                                      \
582
23.2k
  {                                                                           \
583
23.2k
    _obj->nam = dwg_decode_handleref (dat, obj, dwg);                         \
584
23.2k
    if (_obj->nam)                                                            \
585
23.2k
      {                                                                       \
586
13.0k
        LOG_TRACE (#nam ": " FORMAT_H " [H %d]",                              \
587
13.0k
                   ARGS_H (_obj->nam->handleref), dxf);                       \
588
13.0k
        LOG_RPOS                                                              \
589
13.0k
      }                                                                       \
590
23.2k
  }
591
592
4.00M
#define FIELD_B(nam, dxf) FIELDG (nam, B, dxf)
593
314k
#define FIELD_BB(nam, dxf) FIELDG (nam, BB, dxf)
594
#define FIELD_3B(nam, dxf) FIELDG (nam, 3B, dxf)
595
21.6M
#define FIELD_BS(nam, dxf) FIELDG (nam, BS, dxf)
596
496k
#define FIELD_BL(nam, dxf) FIELDG (nam, BL, dxf)
597
0
#define FIELD_BLL(nam, dxf) FIELDG (nam, BLL, dxf)
598
#define FIELD_BD(nam, dxf)                                                    \
599
43.1M
  {                                                                           \
600
43.1M
    _obj->nam = bit_read_BD (dat);                                            \
601
43.1M
    if (bit_isnan (_obj->nam))                                                \
602
43.1M
      {                                                                       \
603
15.1k
        FIELD_G_TRACE (nam, BD, dxf);                                         \
604
15.1k
        LOG_ERROR ("Invalid BD " #nam);                                       \
605
15.1k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
606
15.1k
      }                                                                       \
607
43.1M
    if (dxf >= 50 && dxf < 54)                                                \
608
43.0M
      {                                                                       \
609
2.69M
        FIELD_G_TRACE_ANGLE (nam, BD, dxf);                                   \
610
2.69M
      }                                                                       \
611
43.0M
    else                                                                      \
612
43.0M
      {                                                                       \
613
40.4M
        FIELD_G_TRACE (nam, BD, dxf);                                         \
614
40.4M
      }                                                                       \
615
43.0M
  }
616
33.6k
#define FIELD_BLx(nam, dxf) FIELD_CAST (nam, BL, BLx, dxf)
617
0
#define SUB_FIELD_BLx(o, nam, dxf) SUB_FIELD_CAST (o, nam, BL, BLx, dxf)
618
1.51M
#define SUB_FIELD_RC(o, nam, dxf) SUB_FIELD (o, nam, RC, dxf)
619
#define FIELD_RCx(nam, dxf) FIELD_CAST (nam, RC, RCx, dxf)
620
336k
#define FIELD_RCd(nam, dxf) FIELD_CAST (nam, RC, RCd, dxf)
621
48.2k
#define FIELD_RLx(nam, dxf) FIELD_CAST (nam, RL, RLx, dxf)
622
13
#define FIELD_RLLx(nam, dxf) FIELD_CAST (nam, RLL, RLLx, dxf)
623
6.26M
#define FIELD_BSx(nam, dxf) FIELD_CAST (nam, BS, BSx, dxf)
624
14.9k
#define FIELD_RSd(nam, dxf) FIELD_CAST (nam, RS, RSd, dxf)
625
190k
#define FIELD_BSd(nam, dxf) FIELD_CAST (nam, BS, BSd, dxf)
626
2.27M
#define SUB_FIELD_BSd(o, nam, dxf) SUB_FIELD_CAST (o, nam, BS, BSd, dxf)
627
3.01M
#define FIELD_BLd(nam, dxf) FIELD_CAST (nam, BL, BLd, dxf)
628
19
#define FIELD_RLd(nam, dxf) FIELD_CAST (nam, RL, RLd, dxf)
629
1.89M
#define FIELD_RC(nam, dxf) FIELDG (nam, RC, dxf)
630
#define FIELD_RCu(nam, dxf)                                                   \
631
69.3k
  {                                                                           \
632
69.3k
    _obj->nam = bit_read_RC (dat);                                            \
633
69.3k
    LOG_TRACE (#nam ": %u [RC %d]", (unsigned)((unsigned char)_obj->nam),     \
634
69.3k
               dxf);                                                          \
635
69.3k
    LOG_RPOS                                                                  \
636
69.3k
  }
637
0
#define SUB_FIELD_RCd(o, nam, dxf) SUB_FIELD_CAST (o, nam, RC, RCd, dxf)
638
310k
#define FIELD_RS(nam, dxf) FIELDG (nam, RS, dxf)
639
645k
#define FIELD_RSx(nam, dxf) FIELD_CAST (nam, RS, RSx, dxf)
640
#define FIELD_HV(nam, dxf) FIELD_CAST (nam, RLL, RLLx, dxf)
641
#define FIELD_RD(nam, dxf)                                                    \
642
4.77M
  {                                                                           \
643
4.77M
    _obj->nam = bit_read_RD (dat);                                            \
644
4.77M
    if (bit_isnan (_obj->nam))                                                \
645
4.77M
      {                                                                       \
646
79.9k
        LOG_ERROR ("Invalid RD " #nam);                                       \
647
79.9k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
648
79.9k
      }                                                                       \
649
4.77M
    if (dxf >= 50 && dxf < 54)                                                \
650
4.69M
      {                                                                       \
651
384k
        LOG_TRACE (#nam ": " FORMAT_RD " [RD %d]  %gº", _obj->nam, dxf,       \
652
384k
                   rad2deg (_obj->nam));                                      \
653
384k
        LOG_RPOS                                                              \
654
384k
      }                                                                       \
655
4.69M
    else                                                                      \
656
4.69M
      {                                                                       \
657
4.31M
        FIELD_G_TRACE (nam, RD, dxf);                                         \
658
4.31M
      }                                                                       \
659
4.69M
  }
660
58.6k
#define FIELD_RL(nam, dxf) FIELDG (nam, RL, dxf)
661
207
#define FIELD_RLL(nam, dxf) FIELDG (nam, RLL, dxf)
662
#define FIELD_RLLd(nam, dxf) FIELDG (nam, RLLd, dxf)
663
#define FIELD_MC(nam, dxf) FIELDG (nam, MC, dxf)
664
#define FIELD_MS(nam, dxf) FIELDG (nam, MS, dxf)
665
/* preR13 we have no obj->address and obj->size yet, skip VECTOR_CHKCOUNT */
666
// clang-format off
667
#define FIELD_TF(nam, len, dxf)                                               \
668
70.1k
  {                                                                           \
669
70.1k
    SINCE (R_13b1) { _obj->nam = NULL; VECTOR_CHKCOUNT (nam, TF, len, dat) }  \
670
70.1k
    _obj->nam = bit_read_TF (dat, (size_t)len);                               \
671
66.5k
    LOG_TRACE (#nam ": \"%s\" [TF %" PRIuSIZE " " #dxf "]", _obj->nam, (size_t)len); \
672
66.5k
    if (!_obj->nam)                                                           \
673
66.5k
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
674
66.5k
    LOG_INSANE (" @%" PRIuSIZE ".%u", dat->byte, (unsigned)dat->bit);         \
675
65.0k
    LOG_TRACE ("\n");                                                         \
676
65.0k
    LOG_TRACE_TF (FIELD_VALUE (nam), (int)len);                               \
677
65.0k
  }
678
#define FIELD_TFv(nam, len, dxf)                                              \
679
116k
  {                                                                           \
680
116k
    /* if (_obj->nam) free (_obj->nam); // preR13 add_Document defaults */    \
681
116k
    SINCE (R_13b1) { _obj->nam = NULL; VECTOR_CHKCOUNT (nam, TF, len, dat) }  \
682
116k
    _obj->nam = (BITCODE_TV)bit_read_TF (dat, (size_t)len);                   \
683
116k
    LOG_TRACE (#nam ": \"%s\" [TFv %" PRIuSIZE " " #dxf "]", _obj->nam,       \
684
116k
               (size_t)len);                                                  \
685
116k
    if (!_obj->nam)                                                           \
686
116k
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
687
116k
    LOG_RPOS                                                                  \
688
70.0k
    /* LOG_TRACE_TF (FIELD_VALUE (nam), (int)len); */                         \
689
70.0k
  }
690
#define FIELD_TFF(nam, len, dxf)                                              \
691
1.65k
  {                                                                           \
692
1.65k
    SINCE (R_13b1) { _VECTOR_CHKCOUNT_STATIC (nam, len, 8, dat) }             \
693
1.65k
    bit_read_fixed (dat, _obj->nam, (size_t)len);                             \
694
1.65k
    LOG_TRACE (#nam ": \"%.*s\" [TFF %" PRIuSIZE " " #dxf "]", (int)len,      \
695
1.65k
               _obj->nam, (size_t)len);                                       \
696
1.65k
    LOG_RPOS                                                                  \
697
1.65k
    LOG_TRACE_TF (FIELD_VALUE (nam), (size_t)len);                            \
698
1.65k
  }
699
#define FIELD_TFFx(nam, len, dxf)                                             \
700
1
  {                                                                           \
701
1
    SINCE (R_13b1) { _VECTOR_CHKCOUNT_STATIC (nam, len, 8, dat) }             \
702
1
    bit_read_fixed (dat, (BITCODE_RC*)_obj->nam, (int)len);                   \
703
1
    LOG_TRACE (#nam ": [TFFx %d " #dxf "]", (int)len);                        \
704
1
    LOG_RPOS                                                                  \
705
1
    LOG_TRACE_TF ((BITCODE_RC*)_obj->nam, (int)len);                          \
706
1
  }
707
#define FIELD_T16(nam, dxf)                                                   \
708
133
    if (dat->from_version < R_2007)                                           \
709
133
      {                                                                       \
710
133
        _obj->nam = (BITCODE_T16)bit_read_T16 (dat);                          \
711
133
        LOG_TRACE (#nam ": %s [T16 " #dxf "]", _obj->nam);                    \
712
133
        LOG_RPOS                                                              \
713
133
      }                                                                       \
714
133
    else                                                                      \
715
133
      {                                                                       \
716
0
        _obj->nam = (BITCODE_T16)bit_read_TU16 (dat);                         \
717
0
        LOG_TRACE_TU (#nam, FIELD_VALUE (nam), dxf);                          \
718
0
      }
719
#define FIELD_T32(nam, dxf)                                                   \
720
0
  {                                                                           \
721
0
    if (dat->from_version < R_2007)                                           \
722
0
      {                                                                       \
723
0
        FIELDG (nam, T32, dxf);                                               \
724
0
      }                                                                       \
725
0
    else                                                                      \
726
0
      {                                                                       \
727
0
        _obj->nam = bit_read_TU32 (dat);                                      \
728
0
        LOG_TRACE_TU (#nam, FIELD_VALUE (nam), dxf);                          \
729
0
      }                                                                       \
730
0
  }
731
#define FIELD_TU16(nam, dxf)                                                  \
732
  {                                                                           \
733
    _obj->nam = bit_read_TU16 (dat);                                          \
734
    LOG_TRACE_TU (#nam, FIELD_VALUE (nam), dxf);                              \
735
  }
736
#define FIELD_TU32(nam, dxf)                                                  \
737
  {                                                                           \
738
    _obj->nam = bit_read_TU32 (dat);                                          \
739
    if (dat->from_version < R_2007)                                           \
740
      {                                                                       \
741
        LOG_TRACE (#nam ": \"%s\" [TU32 %d]", _obj->nam, dxf)                 \
742
        LOG_RPOS                                                              \
743
      }                                                                       \
744
    else                                                                      \
745
      {                                                                       \
746
        LOG_TRACE_TU (#nam, FIELD_VALUE (nam), dxf)                           \
747
      }                                                                       \
748
  }
749
#define FIELD_TV(nam, dxf)                                                    \
750
631k
  {                                                                           \
751
631k
    _obj->nam = bit_read_TV (dat);                                            \
752
631k
    LOG_TRACE_TV_NAME (nam, _obj->nam, dxf);                                  \
753
631k
  }
754
#define FIELD_TU(nam, dxf)                                                    \
755
0
  {                                                                           \
756
0
    _obj->nam = (BITCODE_TU)bit_read_TU (str_dat);                            \
757
0
    LOG_TRACE_TU_NAME (nam, (BITCODE_TU)FIELD_VALUE (nam), dxf);              \
758
0
  }
759
// clang-format on
760
#define FIELD_T(nam, dxf)                                                     \
761
19.6M
  {                                                                           \
762
19.6M
    if (dat->from_version < R_2007)                                           \
763
19.6M
      {                                                                       \
764
19.6M
        _obj->nam = bit_read_TV (dat);                                        \
765
19.6M
        LOG_TRACE_TV_NAME (nam, _obj->nam, dxf);                              \
766
19.6M
      }                                                                       \
767
19.6M
    else                                                                      \
768
19.6M
      {                                                                       \
769
0
        if (!obj || obj->has_strings) /* header_vars */                       \
770
0
          {                                                                   \
771
0
            _obj->nam = (BITCODE_T)bit_read_TU (str_dat);                     \
772
0
            LOG_TRACE_TU_NAME (nam, (BITCODE_TU)FIELD_VALUE (nam), dxf);      \
773
0
          }                                                                   \
774
0
        else                                                                  \
775
0
          {                                                                   \
776
0
            LOG_TRACE_TU_NAME (nam, L"", dxf);                                \
777
0
            LOG_INSANE (" !has_strings\n");                                   \
778
0
          }                                                                   \
779
0
      }                                                                       \
780
19.6M
  }
781
100k
#define FIELD_BT(nam, dxf) FIELDG (nam, BT, dxf)
782
#define FIELD_4BITS(nam, dxf)                                                 \
783
184k
  {                                                                           \
784
184k
    int _b = _obj->nam = bit_read_4BITS (dat);                                \
785
184k
    LOG_TRACE (#nam ": b%d%d%d%d [4BITS %d]", _b & 8, _b & 4, _b & 2, _b & 1, \
786
184k
               dxf);                                                          \
787
184k
    LOG_RPOS                                                                  \
788
184k
  }
789
790
#define FIELD_BE(nam, dxf)                                                    \
791
97.3k
  {                                                                           \
792
97.3k
    bit_read_BE (dat, &_obj->nam.x, &_obj->nam.y, &_obj->nam.z);              \
793
97.3k
    if (dat->version >= R_2000 && FIELD_VALUE (nam.x) == 0.0                  \
794
97.3k
        && FIELD_VALUE (nam.y) == 0.0 && FIELD_VALUE (nam.z) == 1.0)          \
795
97.3k
      LOG_TRACE (#nam ": default 0,0,1 [B %d]", dxf);                         \
796
97.3k
    else                                                                      \
797
97.3k
      LOG_TRACE (#nam ": (%f, %f, %f) [BE %d]", _obj->nam.x, _obj->nam.y,     \
798
97.3k
                 _obj->nam.z, dxf);                                           \
799
97.3k
    LOG_POS;                                                                  \
800
97.3k
  }
801
#define TRACE_DD                                                              \
802
1.65M
  {                                                                           \
803
1.65M
    BITCODE_BB result = 0;                                                    \
804
1.65M
    BITCODE_RC byte;                                                          \
805
1.65M
    if ((dat->byte * 8) + 8 + dat->bit > dat->size * 8)                       \
806
1.65M
      {                                                                       \
807
158k
        loglevel = dat->opts & DWG_OPTS_LOGLEVEL;                             \
808
158k
        LOG_ERROR ("%s FIELD_DD buffer overflow at pos %" PRIuSIZE            \
809
158k
                   ".%u, size %" PRIuSIZE ","                                 \
810
158k
                   " advance by 8",                                           \
811
158k
                   __FUNCTION__, dat->byte, dat->bit, dat->size);             \
812
158k
      }                                                                       \
813
1.65M
    else                                                                      \
814
1.65M
      {                                                                       \
815
1.49M
        byte = dat->chain[dat->byte];                                         \
816
1.49M
        if (dat->bit < 7)                                                     \
817
1.49M
          result = (byte & (0xc0 >> dat->bit)) >> (6 - dat->bit);             \
818
1.49M
        else                                                                  \
819
1.49M
          {                                                                   \
820
2.18k
            result = (byte & 0x01) << 1;                                      \
821
2.18k
            if (dat->byte < dat->size - 1)                                    \
822
2.18k
              {                                                               \
823
2.18k
                byte = dat->chain[dat->byte + 1];                             \
824
2.18k
                result |= (byte & 0x80) >> 7;                                 \
825
2.18k
              }                                                               \
826
2.18k
          }                                                                   \
827
1.49M
      }                                                                       \
828
1.65M
    LOG_HANDLE ("DD code %u\n", result);                                      \
829
1.65M
  }
830
#define FIELD_DD(nam, _default, dxf)                                          \
831
1.65M
  {                                                                           \
832
1.65M
    TRACE_DD                                                                  \
833
1.65M
    FIELD_VALUE (nam) = bit_read_DD (dat, _default);                          \
834
1.65M
    if (bit_isnan (_obj->nam))                                                \
835
1.65M
      {                                                                       \
836
5.27k
        LOG_ERROR ("Invalid DD " #nam);                                       \
837
5.27k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
838
5.27k
      }                                                                       \
839
1.65M
  }
840
#define FIELD_2DD(nam, def, dxf)                                              \
841
32.6k
  {                                                                           \
842
32.6k
    FIELD_DD (nam.x, FIELD_VALUE (def.x), dxf);                               \
843
31.6k
    FIELD_DD (nam.y, FIELD_VALUE (def.y), dxf + 10);                          \
844
31.3k
    FIELD_2PT_TRACE (nam, 2DD, dxf);                                          \
845
31.3k
  }
846
#define FIELD_3DD(nam, def, dxf)                                              \
847
20.5k
  {                                                                           \
848
20.5k
    FIELD_DD (nam.x, FIELD_VALUE (def.x), dxf);                               \
849
20.3k
    FIELD_DD (nam.y, FIELD_VALUE (def.y), dxf + 10);                          \
850
20.2k
    FIELD_DD (nam.z, FIELD_VALUE (def.z), dxf + 20);                          \
851
20.1k
    FIELD_3PT_TRACE (nam, 3DD, dxf);                                          \
852
20.1k
  }
853
#define FIELD_3RD(nam, dxf)                                                   \
854
514k
  {                                                                           \
855
514k
    _obj->nam.x = bit_read_RD (dat);                                          \
856
514k
    _obj->nam.y = bit_read_RD (dat);                                          \
857
514k
    _obj->nam.z = bit_read_RD (dat);                                          \
858
514k
    if (bit_isnan (_obj->nam.x) || bit_isnan (_obj->nam.y)                    \
859
514k
        || bit_isnan (_obj->nam.z))                                           \
860
514k
      {                                                                       \
861
77.9k
        LOG_ERROR ("Invalid 3RD " #nam);                                      \
862
77.9k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
863
77.9k
      }                                                                       \
864
514k
    FIELD_3PT_TRACE (nam, 3RD, dxf);                                          \
865
436k
  }
866
#define FIELD_3BD(nam, dxf)                                                   \
867
50.1M
  {                                                                           \
868
50.1M
    _obj->nam.x = bit_read_BD (dat);                                          \
869
50.1M
    _obj->nam.y = bit_read_BD (dat);                                          \
870
50.1M
    _obj->nam.z = bit_read_BD (dat);                                          \
871
50.1M
    if (bit_isnan (_obj->nam.x) || bit_isnan (_obj->nam.y)                    \
872
50.1M
        || bit_isnan (_obj->nam.z))                                           \
873
50.1M
      {                                                                       \
874
32.7k
        LOG_ERROR ("Invalid 3BD " #nam);                                      \
875
32.7k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
876
32.7k
      }                                                                       \
877
50.1M
    FIELD_3PT_TRACE (nam, 3BD, dxf);                                          \
878
50.1M
  }
879
#define FIELD_2RD(nam, dxf)                                                   \
880
9.39M
  {                                                                           \
881
9.39M
    _obj->nam.x = bit_read_RD (dat);                                          \
882
9.39M
    _obj->nam.y = bit_read_RD (dat);                                          \
883
9.39M
    if (bit_isnan (_obj->nam.x) || bit_isnan (_obj->nam.y))                   \
884
9.39M
      {                                                                       \
885
180k
        LOG_ERROR ("Invalid 2RD " #nam);                                      \
886
180k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
887
180k
      }                                                                       \
888
9.39M
    FIELD_2PT_TRACE (nam, 2RD, dxf);                                          \
889
9.21M
  }
890
// FIXME: does this even exist? normal 2DPOINT is 2RD
891
//   HATCH.deflines.pt0,offset LAYOUT.plot_origin,plot_window_{ll,ur},
892
//   LAYOUT.paper_image_origin GEODATA.northdir, GEODATA.refpt0,1 .zero1, zero2
893
//   BACKGROUND.offset,scale
894
#define FIELD_2BD(nam, dxf)                                                   \
895
  {                                                                           \
896
    _obj->nam.x = bit_read_BD (dat);                                          \
897
    _obj->nam.y = bit_read_BD (dat);                                          \
898
    if (bit_isnan (_obj->nam.x) || bit_isnan (_obj->nam.y))                   \
899
      {                                                                       \
900
        LOG_ERROR ("Invalid 2BD " #nam);                                      \
901
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
902
      }                                                                       \
903
    FIELD_2PT_TRACE (nam, 2BD, dxf);                                          \
904
  }
905
#define FIELD_2BD_1(nam, dxf)                                                 \
906
12.6M
  {                                                                           \
907
12.6M
    _obj->nam.x = bit_read_BD (dat);                                          \
908
12.6M
    _obj->nam.y = bit_read_BD (dat);                                          \
909
12.6M
    if (bit_isnan (_obj->nam.x) || bit_isnan (_obj->nam.y))                   \
910
12.6M
      {                                                                       \
911
2.85k
        LOG_ERROR ("Invalid 2BD_1 " #nam);                                    \
912
2.85k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
913
2.85k
      }                                                                       \
914
12.6M
    FIELD_2PT_TRACE (nam, 2BD_1, dxf);                                        \
915
12.6M
  }
916
// FIELDG(nam.x, BD, dxf); FIELDG(nam.y, BD, dxf+1);
917
#define FIELD_3BD_1(nam, dxf)                                                 \
918
179k
  {                                                                           \
919
179k
    _obj->nam.x = bit_read_BD (dat);                                          \
920
179k
    _obj->nam.y = bit_read_BD (dat);                                          \
921
179k
    _obj->nam.z = bit_read_BD (dat);                                          \
922
179k
    if (bit_isnan (_obj->nam.x) || bit_isnan (_obj->nam.y)                    \
923
179k
        || bit_isnan (_obj->nam.z))                                           \
924
179k
      {                                                                       \
925
1.22k
        LOG_ERROR ("Invalid 3BD_1 " #nam);                                    \
926
1.22k
        return DWG_ERR_VALUEOUTOFBOUNDS;                                      \
927
1.22k
      }                                                                       \
928
179k
    FIELD_3PT_TRACE (nam, 3BD_1, dxf);                                        \
929
178k
  }
930
//    FIELDG(nam.x, BD, dxf); FIELDG(nam.y, BD, dxf+1);
931
//    FIELDG(nam.z, BD, dxf+2); }
932
#define FIELD_2DPOINT(nam, dxf) FIELD_2RD (nam, dxf)
933
44.6M
#define FIELD_3DPOINT(nam, dxf) FIELD_3BD (nam, dxf)
934
#define FIELD_3DVECTOR(nam, dxf) FIELD_3BD_1 (nam, dxf)
935
#define FIELD_TIMEBLL(nam, dxf)                                               \
936
93.0k
  {                                                                           \
937
93.0k
    _obj->nam = bit_read_TIMEBLL (dat);                                       \
938
93.0k
    if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                   \
939
93.0k
      {                                                                       \
940
0
        struct tm tm;                                                         \
941
0
        char _buf[60] = "";                                                   \
942
0
        cvt_TIMEBLL (&tm, _obj->nam);                                         \
943
0
        if (strEQc (#nam, "TDINDWG") || strEQc (#nam, "TDUSRTIMER"))          \
944
0
          strftime (_buf, 60, STRFTIME_DURATION, &tm);                        \
945
0
        else if (_obj->nam.days)                                              \
946
0
          strftime (_buf, 60, STRFTIME_DATE, &tm);                            \
947
0
        else                                                                  \
948
0
          strftime (_buf, 60, STRFTIME_TIME, &tm);                            \
949
0
        LOG_TRACE (#nam ": [" FORMAT_BL ", " FORMAT_BL "] %s [TIMEBLL %d]",   \
950
0
                   _obj->nam.days, _obj->nam.ms, _buf, dxf);                  \
951
0
        LOG_RPOS                                                              \
952
0
      }                                                                       \
953
93.0k
  }
954
#define FIELD_TIMERLL(nam, dxf)                                               \
955
2.91k
  {                                                                           \
956
2.91k
    _obj->nam = bit_read_TIMERLL (dat);                                       \
957
2.91k
    if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                   \
958
2.91k
      {                                                                       \
959
0
        struct tm tm;                                                         \
960
0
        char _buf[60] = "";                                                   \
961
0
        if (_obj->nam.days >= 1000)                                           \
962
0
          strftime (_buf, 60, STRFTIME_DATE, cvt_TIMEBLL (&tm, _obj->nam));   \
963
0
        else                                                                  \
964
0
          strftime (_buf, 60, STRFTIME_TIME, cvt_TIMEBLL (&tm, _obj->nam));   \
965
0
        LOG_TRACE (#nam ": [" FORMAT_RL ", " FORMAT_RL "] %s [TIMERLL %d]",   \
966
0
                   _obj->nam.days, _obj->nam.ms, _buf, dxf);                  \
967
0
        LOG_RPOS                                                              \
968
0
      }                                                                       \
969
2.91k
  }
970
#define FIELD_CMC(color, dxf)                                                 \
971
237k
  {                                                                           \
972
237k
    error |= bit_read_CMC (dat, str_dat, &_obj->color);                       \
973
237k
    LOG_TRACE (#color ".index: %d [CMC.%s %d]", _obj->color.index,            \
974
237k
               dat->from_version < R_13b1 ? "RS" : "BS", dxf);                \
975
237k
    LOG_RPOS                                                                  \
976
237k
    if (dat->from_version >= R_2004)                                          \
977
237k
      {                                                                       \
978
0
        LOG_TRACE (#color ".rgb: 0x%06x [CMC.BL %d]\n",                       \
979
0
                   (unsigned)_obj->color.rgb, dxf + 420 - 62);                \
980
0
        LOG_TRACE (#color ".method: 0x%x %s\n", _obj->color.method,           \
981
0
                   dwg_color_method_name (_obj->color.method));               \
982
0
        LOG_TRACE (#color ".flag: 0x%x [CMC.RC]\n",                           \
983
0
                   (unsigned)_obj->color.flag);                               \
984
0
        if (_obj->color.flag & 1)                                             \
985
0
          {                                                                   \
986
0
            LOG_TRACE (#color ".name: %s [CMC.%s]\n", _obj->color.name,       \
987
0
                       dat->from_version >= R_2007 ? "T" : "TV");             \
988
0
          }                                                                   \
989
0
        if (_obj->color.flag & 2)                                             \
990
0
          {                                                                   \
991
0
            LOG_TRACE (#color ".book_name: %s [CMC.%s]\n",                    \
992
0
                       _obj->color.book_name,                                 \
993
0
                       dat->from_version >= R_2007 ? "T" : "TV");             \
994
0
          }                                                                   \
995
0
      }                                                                       \
996
237k
  }
997
#define SUB_FIELD_CMC(o, color, dxf)                                          \
998
2.27M
  {                                                                           \
999
2.27M
    error |= bit_read_CMC (dat, str_dat, &_obj->o.color);                     \
1000
2.27M
    LOG_TRACE (#o "." #color ".index: %d [CMC.BS %d]", _obj->o.color.index,   \
1001
2.27M
               dxf);                                                          \
1002
2.27M
    LOG_RPOS                                                                  \
1003
2.27M
    if (dat->from_version >= R_2004)                                          \
1004
2.27M
      {                                                                       \
1005
0
        LOG_TRACE (#o "." #color ".rgb: 0x%06x [CMC.BL %d]\n",                \
1006
0
                   (unsigned)_obj->o.color.rgb, dxf + 420 - 62);              \
1007
0
        LOG_TRACE (#color ".method: 0x%x %s\n", _obj->o.color.method,         \
1008
0
                   dwg_color_method_name (_obj->o.color.method));             \
1009
0
        LOG_TRACE (#o "." #color ".flag: 0x%x [CMC.RC]\n",                    \
1010
0
                   (unsigned)_obj->o.color.flag);                             \
1011
0
        if (_obj->o.color.flag & 1)                                           \
1012
0
          {                                                                   \
1013
0
            LOG_TRACE (#o "." #color ".name: %s [CMC.%s]\n",                  \
1014
0
                       _obj->o.color.name,                                    \
1015
0
                       dat->from_version >= R_2007 ? "T" : "TV");             \
1016
0
          }                                                                   \
1017
0
        if (_obj->o.color.flag & 2)                                           \
1018
0
          {                                                                   \
1019
0
            LOG_TRACE (#o "." #color ".book_name: %s [CMC.%s]\n",             \
1020
0
                       _obj->o.color.book_name,                               \
1021
0
                       dat->from_version >= R_2007 ? "T" : "TV");             \
1022
0
          }                                                                   \
1023
0
      }                                                                       \
1024
2.27M
  }
1025
// force truecolor
1026
#define FIELD_CMTC(name, dxf)                                                 \
1027
0
  {                                                                           \
1028
0
    Dwg_Version_Type _ver = dat->from_version;                                \
1029
0
    if (dat->from_version < R_2004)                                           \
1030
0
      dat->from_version = R_2004;                                             \
1031
0
    FIELD_CMC (name, dxf);                                                    \
1032
0
    dat->from_version = _ver;                                                 \
1033
0
  }
1034
#define SUB_FIELD_CMTC(o, name, dxf)                                          \
1035
0
  {                                                                           \
1036
0
    Dwg_Version_Type _ver = dat->from_version;                                \
1037
0
    if (dat->from_version < R_2004)                                           \
1038
0
      dat->from_version = R_2004;                                             \
1039
0
    SUB_FIELD_CMC (o, name, dxf);                                             \
1040
0
    dat->from_version = _ver;                                                 \
1041
0
  }
1042
#define FIELD_ENC(color, dxf)                                                 \
1043
  {                                                                           \
1044
    bit_read_ENC (dat, hdl_dat, str_dat, &_obj->color);                       \
1045
    LOG_TRACE (#color ".index: %d [ENC.BS %d]", _obj->color.index, dxf);      \
1046
    LOG_POS                                                                   \
1047
    if (dat->from_version >= R_2004)                                          \
1048
      {                                                                       \
1049
        if (_obj->color.flag)                                                 \
1050
          LOG_TRACE (#color ".flag: 0x%x\n", (unsigned)_obj->color.flag);     \
1051
        if (_obj->color.flag & 0x20)                                          \
1052
          LOG_TRACE (#color ".alpha: %d [ENC.BL %d]\n",                       \
1053
                     (int)_obj->color.alpha, dxf + 440 - 62);                 \
1054
        if (_obj->color.flag & 0x80)                                          \
1055
          LOG_TRACE (#color ".rgb: 0x%06x [ENC.BL %d]\n",                     \
1056
                     (unsigned)_obj->color.rgb, dxf + 420 - 62);              \
1057
        if (_obj->color.flag & 0x40 && _obj->color.handle)                    \
1058
          LOG_TRACE (#color ".handle: %X [ENC.H %d]\n",                       \
1059
                     _obj->color.handle->handleref.value, dxf + 430 - 62);    \
1060
      }                                                                       \
1061
  }
1062
#define SUB_FIELD_ENC(o, color, dxf)                                          \
1063
  {                                                                           \
1064
    bit_read_ENC (dat, hdl_dat, str_dat, &_obj->o.color);                     \
1065
    LOG_TRACE (#o "." #color ".index: %d [ENC.BS %d]", _obj->o.color.index,   \
1066
               dxf);                                                          \
1067
    LOG_POS                                                                   \
1068
    if (dat->from_version >= R_2004)                                          \
1069
      {                                                                       \
1070
        if (_obj->o.color.flag)                                               \
1071
          LOG_TRACE (#o "." #color ".flag: 0x%x\n",                           \
1072
                     (unsigned)_obj->o.color.flag);                           \
1073
        if (_obj->o.color.flag & 0x20)                                        \
1074
          LOG_TRACE (#o "." #color ".alpha: %d [ENC.BL %d]\n",                \
1075
                     (unsigned)_obj->o.color.alpha, dxf + 440 - 62);          \
1076
        if (_obj->o.color.flag & 0x80)                                        \
1077
          LOG_TRACE (#o "." #color ".rgb: 0x%06x [ENC.BL %d]\n",              \
1078
                     (unsigned)_obj->o.color.rgb, dxf + 420 - 62);            \
1079
        if (_obj->o.color.flag & 0x40 && _obj->o.color.handle)                \
1080
          LOG_TRACE (#o "." #color ".handle: " FORMAT_HV " [ENC.H %d]\n",     \
1081
                     _obj->o.color.handle->handleref.value, dxf + 430 - 62);  \
1082
      }                                                                       \
1083
  }
1084
1085
#undef DEBUG_POS
1086
#undef DEBUG_HERE
1087
#undef DEBUG_POS_OBJ
1088
#undef DEBUG_HERE_OBJ
1089
#define DEBUG_POS_OBJ                                                         \
1090
1.68k
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
1091
1.68k
    {                                                                         \
1092
0
      LOG_TRACE ("DEBUG_POS @%" PRIuSIZE ".%u (%" PRIuSIZE ") %" PRIuSIZE     \
1093
0
                 "\n",                                                        \
1094
0
                 dat->byte, (unsigned)dat->bit, bit_position (dat),           \
1095
0
                 obj ? bit_position (dat) - obj->address * 8 : 0);            \
1096
0
    }
1097
#define DEBUG_POS                                                             \
1098
14.6M
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
1099
14.6M
    {                                                                         \
1100
0
      LOG_TRACE ("DEBUG_POS @%" PRIuSIZE ".%u (%" PRIuSIZE ")\n", dat->byte,  \
1101
0
                 (unsigned)dat->bit, bit_position (dat));                     \
1102
0
    }
1103
#define _DEBUG_HERE(objsize)                                                  \
1104
14.6M
  if (dat->size < dat->byte)                                                  \
1105
14.6M
    return DWG_ERR_VALUEOUTOFBOUNDS;                                          \
1106
14.6M
  if (DWG_LOGLEVEL >= DWG_LOGLEVEL_TRACE)                                     \
1107
14.6M
    {                                                                         \
1108
0
      Bit_Chain here = *dat;                                                  \
1109
0
      int oldloglevel = loglevel;                                             \
1110
0
      BITCODE_TF tmp;                                                         \
1111
0
      BITCODE_BB bb = 0;                                                      \
1112
0
      BITCODE_RS rs;                                                          \
1113
0
      BITCODE_RL rl;                                                          \
1114
0
      double bd;                                                              \
1115
0
      Dwg_Handle hdl;                                                         \
1116
0
      rs = 24;                                                                \
1117
0
      if ((objsize) > 0 && dat->byte + rs > (objsize))                        \
1118
0
        rs = ((objsize) - dat->byte) & 0xFFFF;                                \
1119
0
      if (dat->byte + rs > dat->size)                                         \
1120
0
        rs = (dat->size - dat->byte - 1) & 0xFFFF;                            \
1121
0
      tmp = bit_read_TF (dat, (size_t)rs);                                    \
1122
0
      if (tmp)                                                                \
1123
0
        {                                                                     \
1124
0
          if (DWG_LOGLEVEL >= DWG_LOGLEVEL_INSANE)                            \
1125
0
            {                                                                 \
1126
0
              bit_fprint_bits (OUTPUT, tmp, rs * 8);                          \
1127
0
              HANDLER (OUTPUT, "\n");                                         \
1128
0
            }                                                                 \
1129
0
          LOG_TRACE_TF (tmp, rs);                                             \
1130
0
          free (tmp);                                                         \
1131
0
        }                                                                     \
1132
0
      SINCE (R_13b1)                                                          \
1133
0
      {                                                                       \
1134
0
        *dat = here;                                                          \
1135
0
        LOG_TRACE ("  B  :" FORMAT_B "\t", bit_read_B (dat));                 \
1136
0
        *dat = here;                                                          \
1137
0
        bb = bit_read_BB (dat) & 0x3;                                         \
1138
0
        LOG_TRACE ("  BB :" FORMAT_BB "\n", bb);                              \
1139
0
      }                                                                       \
1140
0
      *dat = here;                                                            \
1141
0
      rs = bit_read_RS (dat);                                                 \
1142
0
      LOG_TRACE ("  RS :" FORMAT_RS " / 0x%04x (16)\n", rs, rs);              \
1143
0
      SINCE (R_13b1)                                                          \
1144
0
      {                                                                       \
1145
0
        *dat = here;                                                          \
1146
0
        rs = bit_read_BS (dat);                                               \
1147
0
        LOG_TRACE ("  BS :" FORMAT_BS " / 0x%04x (%" PRIuSIZE ")\t", rs, rs,  \
1148
0
                   bit_position (dat) - bit_position (&here));                \
1149
0
      }                                                                       \
1150
0
      SINCE (R_2007a)                                                         \
1151
0
      {                                                                       \
1152
0
        *dat = here;                                                          \
1153
0
        rs = bit_read_MS (dat);                                               \
1154
0
        LOG_TRACE ("  MS :" FORMAT_RS " / 0x%04x (%" PRIuSIZE ")\n", rs, rs,  \
1155
0
                   bit_position (dat) - bit_position (&here));                \
1156
0
      }                                                                       \
1157
0
      else LOG_TRACE ("\n");                                                  \
1158
0
      *dat = here;                                                            \
1159
0
      rl = bit_read_RL (dat);                                                 \
1160
0
      LOG_TRACE ("  RL :" FORMAT_RL " / 0x%08x (32)\n", rl, rl);              \
1161
0
      *dat = here;                                                            \
1162
0
      LOG_TRACE ("  RD :" FORMAT_RD " (64)\n", bit_read_RD (dat));            \
1163
0
      *dat = here;                                                            \
1164
0
      SINCE (R_13b1)                                                          \
1165
0
      {                                                                       \
1166
0
        if (bb != 3)                                                          \
1167
0
          {                                                                   \
1168
0
            rl = bit_read_BL (dat);                                           \
1169
0
            LOG_TRACE ("  BL :" FORMAT_BL " / 0x%08x (%" PRIuSIZE ")\n", rl,  \
1170
0
                       rl, bit_position (dat) - bit_position (&here));        \
1171
0
            *dat = here;                                                      \
1172
0
            bd = bit_read_BD (dat);                                           \
1173
0
            LOG_TRACE ("  BD :" FORMAT_BD " (%" PRIuSIZE ")\n", bd,           \
1174
0
                       bit_position (dat) - bit_position (&here));            \
1175
0
            *dat = here;                                                      \
1176
0
          }                                                                   \
1177
0
      }                                                                       \
1178
0
      if ((dat->chain[dat->byte] & 0xf) <= 4)                                 \
1179
0
        {                                                                     \
1180
0
          loglevel = 0;                                                       \
1181
0
          if (!bit_read_H (dat, &hdl))                                        \
1182
0
            {                                                                 \
1183
0
              LOG_TRACE ("  H : " FORMAT_H " (%" PRIuSIZE ")\n",              \
1184
0
                         ARGS_H (hdl),                                        \
1185
0
                         bit_position (dat) - bit_position (&here));          \
1186
0
            }                                                                 \
1187
0
          loglevel = oldloglevel;                                             \
1188
0
        }                                                                     \
1189
0
      *dat = here;                                                            \
1190
0
    }
1191
#define DEBUG_HERE_OBJ                                                        \
1192
1.68k
  DEBUG_POS_OBJ                                                               \
1193
1.68k
  _DEBUG_HERE (obj->size)
1194
#define DEBUG_HERE                                                            \
1195
14.6M
  DEBUG_POS                                                                   \
1196
14.6M
  _DEBUG_HERE (0UL)
1197
1198
// check for overflow into next object (invalid num_elems)
1199
6.30M
#define AVAIL_BITS(dat) (int64_t) ((dat->size * 8) - bit_position (dat))
1200
904k
#define TYPE_MAXELEMSIZE(type) dwg_bits_size[BITS_##type]
1201
#define VECTOR_CHKCOUNT(nam, type, size, dat)                                 \
1202
86.4k
  if ((int64_t)(size) > AVAIL_BITS (dat)                                      \
1203
86.4k
      || (int64_t)(size) * TYPE_MAXELEMSIZE (type) > AVAIL_BITS (dat))        \
1204
86.4k
    {                                                                         \
1205
5.10k
      LOG_ERROR ("Invalid " #nam " size %" PRId64 ". Need min. %" PRId64      \
1206
5.10k
                 " bits for " #type ", have %" PRId64 " for %s.",             \
1207
5.10k
                 (int64_t)(size), (int64_t)(size) * TYPE_MAXELEMSIZE (type),  \
1208
5.10k
                 AVAIL_BITS (dat), SAFEDXFNAME);                              \
1209
5.10k
      if (_obj->nam)                                                          \
1210
5.10k
        free (_obj->nam), _obj->nam = NULL;                                   \
1211
5.10k
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1212
5.10k
    }
1213
#define SUB_VECTOR_CHKCOUNT(o, nam, type, size, dat)                          \
1214
5.21k
  if ((int64_t)(size) > AVAIL_BITS (dat)                                      \
1215
5.21k
      || (int64_t)(size) * TYPE_MAXELEMSIZE (type) > AVAIL_BITS (dat))        \
1216
5.21k
    {                                                                         \
1217
459
      LOG_ERROR (                                                             \
1218
459
          "Invalid " #nam " size %" PRId64 ". Need min. %" PRId64             \
1219
459
          " bits for " #type ", have %" PRId64 " at @%" PRIuSIZE ".%u "       \
1220
459
          " for %s.",                                                         \
1221
459
          (int64_t)(size), (int64_t)(size) * TYPE_MAXELEMSIZE (type),         \
1222
459
          AVAIL_BITS (dat), dat->byte, (unsigned)dat->bit, SAFEDXFNAME);      \
1223
459
      if (_obj->o.nam)                                                        \
1224
459
        free (_obj->o.nam), _obj->o.nam = NULL;                               \
1225
459
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1226
459
    }
1227
#define VECTOR_CHKCOUNT_LV(nam, type, size, dat)                              \
1228
1.71M
  if ((int64_t)(size) > AVAIL_BITS (dat)                                      \
1229
1.71M
      || (int64_t)(size) * TYPE_MAXELEMSIZE (type) > AVAIL_BITS (dat))        \
1230
1.71M
    {                                                                         \
1231
958k
      LOG_ERROR (                                                             \
1232
958k
          "Invalid " #nam " size %" PRId64 ". Need min. %" PRId64             \
1233
958k
          " bits for " #type ", have %" PRId64 " at @%" PRIuSIZE ".%u "       \
1234
958k
          "for %s.",                                                          \
1235
958k
          (int64_t)(size), (int64_t)(size) * TYPE_MAXELEMSIZE (type),         \
1236
958k
          AVAIL_BITS (dat), dat->byte, (unsigned)dat->bit, SAFEDXFNAME);      \
1237
958k
      if (_obj->nam)                                                          \
1238
958k
        free (_obj->nam), _obj->nam = NULL;                                   \
1239
958k
      size = 0; /* return DWG_ERR_VALUEOUTOFBOUNDS; */                                  \
1240
958k
    }
1241
// for static TFF types with a size field
1242
#define _VECTOR_CHKCOUNT(nam, size, maxelemsize, dat)                         \
1243
31.3k
  if ((int64_t)(size) > AVAIL_BITS (dat)                                      \
1244
31.3k
      || (int64_t)(size) * (maxelemsize) > AVAIL_BITS (dat))                  \
1245
31.3k
    {                                                                         \
1246
7.70k
      LOG_ERROR ("Invalid " #nam " size %" PRId64 ". Need min. %" PRId64      \
1247
7.70k
                 " bits, have %" PRId64 " for %s. "                           \
1248
7.70k
                 "Set " #size " to 0",                                        \
1249
7.70k
                 (int64_t)(size), (int64_t)(size) * (maxelemsize),            \
1250
7.70k
                 AVAIL_BITS (dat), SAFEDXFNAME);                              \
1251
7.70k
      size = 0;                                                               \
1252
7.70k
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1253
7.70k
    }
1254
// for static TFF types with fixed size
1255
#define _VECTOR_CHKCOUNT_STATIC(nam, siz, maxelemsize, dat)                   \
1256
203
  if (8 * (int64_t)(siz) > AVAIL_BITS (dat)                                   \
1257
203
      || (int64_t)(siz) * (maxelemsize) > AVAIL_BITS (dat)                    \
1258
203
      || dat->byte + (siz) > dat->size)                                       \
1259
203
    {                                                                         \
1260
4
      LOG_ERROR ("Invalid " #nam " size %" PRId64 ". Need min. %" PRId64      \
1261
4
                 " bits, have %" PRId64 " for %s.",                           \
1262
4
                 (int64_t)(siz), (int64_t)(siz) * (maxelemsize),              \
1263
4
                 AVAIL_BITS (dat), SAFEDXFNAME);                              \
1264
4
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1265
4
    }
1266
#define HANDLE_VECTOR_CHKCOUNT(nam, size)                                     \
1267
29.4k
  _VECTOR_CHKCOUNT (nam, size, TYPE_MAXELEMSIZE (HANDLE), hdl_dat)
1268
1269
// FIELD_VECTOR_N(name, type, size):
1270
// reads data of the type indicated by 'type' 'size' times and stores
1271
// it all in the vector called 'name'.
1272
#define FIELD_VECTOR_N(name, type, size, dxf)                                 \
1273
102k
  if (size > 0)                                                               \
1274
102k
    {                                                                         \
1275
15.7k
      VECTOR_CHKCOUNT (name, type, size, dat);                                \
1276
14.1k
      _obj->name = (BITCODE_##type *)calloc (size, sizeof (BITCODE_##type));  \
1277
14.1k
      if (!_obj->name)                                                        \
1278
14.1k
        return DWG_ERR_OUTOFMEM;                                              \
1279
4.34M
      for (vcount = 0; vcount < (BITCODE_BL)size; vcount++)                   \
1280
4.32M
        {                                                                     \
1281
4.32M
          _obj->name[vcount] = bit_read_##type (dat);                         \
1282
4.32M
          FIELD_VEC_TRACE_N (name, type, (long)vcount, _obj->name[vcount],    \
1283
4.32M
                             dxf);                                            \
1284
4.32M
        }                                                                     \
1285
14.1k
    }
1286
#define SUB_FIELD_VECTOR_N(o, nam, type, csize, dxf)                          \
1287
0
  if (csize > 0)                                                              \
1288
0
    {                                                                         \
1289
0
      SUB_VECTOR_CHKCOUNT (o, nam, type, csize, dat)                          \
1290
0
      _obj->o.nam                                                             \
1291
0
          = (BITCODE_##type *)calloc (csize, sizeof (BITCODE_##type));        \
1292
0
      if (!_obj->o.nam)                                                       \
1293
0
        return DWG_ERR_OUTOFMEM;                                              \
1294
0
      for (vcount = 0; vcount < (BITCODE_BL)csize; vcount++)                  \
1295
0
        {                                                                     \
1296
0
          _obj->o.nam[vcount] = bit_read_##type (dat);                        \
1297
0
          LOG_TRACE (#nam "[%ld]: " FORMAT_##type " [" #type " %d]",          \
1298
0
                     (long)vcount, _obj->o.nam[vcount], dxf);                 \
1299
0
          LOG_POS                                                             \
1300
0
        }                                                                     \
1301
0
    }
1302
#define SUB_FIELD_VECTOR(o, name, type, sizefield, dxf)                       \
1303
87.5k
  if (_obj->o.sizefield > 0)                                                  \
1304
87.5k
    {                                                                         \
1305
5.21k
      SUB_VECTOR_CHKCOUNT (o, name, type, _obj->o.sizefield, dat);            \
1306
4.75k
      _obj->o.name = (BITCODE_##type *)calloc (_obj->o.sizefield,             \
1307
4.75k
                                               sizeof (BITCODE_##type));      \
1308
4.75k
      if (!_obj->o.name)                                                      \
1309
4.75k
        return DWG_ERR_OUTOFMEM;                                              \
1310
4.75k
      LOG_TRACE (#name ": { ");                                               \
1311
5.28M
      for (vcount = 0; vcount < (BITCODE_BL)_obj->o.sizefield; vcount++)      \
1312
5.28M
        {                                                                     \
1313
5.28M
          _obj->o.name[vcount] = bit_read_##type (dat);                       \
1314
5.28M
          LOG_TRACE (FORMAT_##type " ", _obj->o.name[vcount]);                \
1315
5.28M
        }                                                                     \
1316
4.75k
      if (dxf)                                                                \
1317
4.75k
        LOG_TRACE ("} [*" #type " %d]", dxf);                                 \
1318
4.75k
      else                                                                    \
1319
4.75k
        LOG_TRACE ("} [*" #type "]");                                         \
1320
4.75k
      LOG_POS                                                                 \
1321
4.75k
    }
1322
// inlined, with const size and without malloc
1323
#define FIELD_VECTOR_INL(name, type, size, dxf)                               \
1324
2.75k
  if (size > 0)                                                               \
1325
2.75k
    {                                                                         \
1326
2.75k
      SINCE (R_13b1)                                                          \
1327
2.75k
      {                                                                       \
1328
46
        _VECTOR_CHKCOUNT_STATIC (name, size, TYPE_MAXELEMSIZE (type), dat);   \
1329
42
      }                                                                       \
1330
2.75k
      LOG_TRACE (#name ": { ");                                               \
1331
84.1k
      for (vcount = 0; vcount < (BITCODE_BL)size; vcount++)                   \
1332
81.4k
      {                                                                       \
1333
81.4k
        _obj->name[vcount] = bit_read_##type (dat);                           \
1334
81.4k
        LOG_TRACE (FORMAT_##type " ", _obj->name[vcount]);                    \
1335
81.4k
      }                                                                       \
1336
2.75k
      if (dxf)                                                                \
1337
2.75k
        LOG_TRACE ("} [*" #type " %d]", dxf);                                 \
1338
2.75k
      else                                                                    \
1339
2.75k
        LOG_TRACE ("} [*" #type "]");                                         \
1340
2.75k
      LOG_POS                                                                 \
1341
2.75k
    }
1342
// inlined, with const size and without malloc
1343
#define SUB_FIELD_VECTOR_INL(o, nam, type, csize, dxf)                        \
1344
0
  if (csize > 0)                                                              \
1345
0
    {                                                                         \
1346
0
      _VECTOR_CHKCOUNT_STATIC (nam, csize, TYPE_MAXELEMSIZE (type), dat);     \
1347
0
      for (vcount = 0; vcount < (BITCODE_BL)csize; vcount++)                  \
1348
0
        {                                                                     \
1349
0
          _obj->o.nam[vcount] = bit_read_##type (dat);                        \
1350
0
          LOG_TRACE (#nam "[%ld]: " FORMAT_##type " [" #type " %d]",          \
1351
0
                     (long)vcount, _obj->o.nam[vcount], dxf);                 \
1352
0
          LOG_POS                                                             \
1353
0
        }                                                                     \
1354
0
    }
1355
#define FIELD_VECTOR_T(name, type, size, dxf)                                 \
1356
2.30k
  if (_obj->size > 0)                                                         \
1357
2.30k
    {                                                                         \
1358
1.85k
      _VECTOR_CHKCOUNT (name, _obj->size,                                     \
1359
1.85k
                        dat->from_version >= R_2007 ? 18 : 2, dat);           \
1360
1.22k
      _obj->name = (char **)calloc (_obj->size, sizeof (char *));             \
1361
1.22k
      if (!_obj->name)                                                        \
1362
1.22k
        return DWG_ERR_OUTOFMEM;                                              \
1363
4.85k
      for (vcount = 0; vcount < (BITCODE_BL)_obj->size; vcount++)             \
1364
4.40k
        {                                                                     \
1365
4.40k
          PRE (R_2007a)                                                       \
1366
4.40k
          {                                                                   \
1367
4.40k
            _obj->name[vcount] = bit_read_TV (dat);                           \
1368
4.40k
            LOG_TRACE_TV_NAME_I (name[vcount], vcount, _obj->name[vcount],    \
1369
4.40k
                                 dxf);                                        \
1370
4.40k
            LOG_POS                                                           \
1371
4.40k
            if (!_obj->name[vcount])                                          \
1372
4.40k
              return DWG_ERR_VALUEOUTOFBOUNDS;                                \
1373
4.40k
          }                                                                   \
1374
4.40k
          LATER_VERSIONS                                                      \
1375
4.40k
          {                                                                   \
1376
0
            _obj->name[vcount] = (char *)bit_read_##type (dat);               \
1377
0
            LOG_TRACE_TU_NAME_I (name, vcount, _obj->name[vcount], type, dxf);\
1378
0
            if (!_obj->name[vcount])                                          \
1379
0
              return DWG_ERR_VALUEOUTOFBOUNDS;                                \
1380
0
          }                                                                   \
1381
4.40k
        }                                                                     \
1382
1.22k
    }
1383
#define FIELD_VECTOR_N1(name, type, size, dxf)                                \
1384
0
  if (size > 0)                                                               \
1385
0
    {                                                                         \
1386
0
      int _dxf = dxf;                                                         \
1387
0
      VECTOR_CHKCOUNT (name, type, size, dat)                                 \
1388
0
      _obj->name = (BITCODE_##type *)calloc (size, sizeof (BITCODE_##type));  \
1389
0
      if (!_obj->name)                                                        \
1390
0
        return DWG_ERR_OUTOFMEM;                                              \
1391
0
      for (vcount = 0; vcount < (BITCODE_BL)size; vcount++)                   \
1392
0
        {                                                                     \
1393
0
          _obj->name[vcount] = bit_read_##type (dat);                         \
1394
0
          LOG_TRACE (#name "[%d]: " FORMAT_##type " [" #type " %d]",          \
1395
0
                     (int)vcount, _obj->name[vcount], _dxf++);                \
1396
0
          LOG_POS;                                                            \
1397
0
        }                                                                     \
1398
0
    }
1399
1400
#define FIELD_VECTOR(name, type, size, dxf)                                   \
1401
102k
  FIELD_VECTOR_N (name, type, _obj->size, dxf)
1402
1403
#define SUB_FIELD_VECTOR_TYPESIZE(o, name, size, typesize, dxf)               \
1404
0
  if (_obj->o.size > 0)                                                       \
1405
0
    {                                                                         \
1406
0
      _obj->o.name = (BITCODE_RC *)calloc (_obj->o.size, typesize);           \
1407
0
      if (!_obj->o.name)                                                      \
1408
0
        return DWG_ERR_OUTOFMEM;                                              \
1409
0
      for (vcount = 0; vcount < (BITCODE_BL)_obj->o.size; vcount++)           \
1410
0
        {                                                                     \
1411
0
          switch (typesize)                                                   \
1412
0
            {                                                                 \
1413
0
            case 0:                                                           \
1414
0
              break;                                                          \
1415
0
            case 1:                                                           \
1416
0
              _obj->o.name[vcount] = bit_read_RC (dat);                       \
1417
0
              break;                                                          \
1418
0
            case 2:                                                           \
1419
0
              _obj->o.name[vcount] = bit_read_RS (dat);                       \
1420
0
              break;                                                          \
1421
0
            case 4:                                                           \
1422
0
              _obj->o.name[vcount] = bit_read_RL (dat);                       \
1423
0
              break;                                                          \
1424
0
            case 8:                                                           \
1425
0
              _obj->o.name[vcount] = bit_read_RLL (dat);                      \
1426
0
              break;                                                          \
1427
0
            default:                                                          \
1428
0
              LOG_ERROR ("Unknown FIELD_VECTOR_TYPE " #name " typesize %d",   \
1429
0
                         typesize);                                           \
1430
0
              break;                                                          \
1431
0
            }                                                                 \
1432
0
          LOG_TRACE (#name "[%u]: %d", vcount, (int)_obj->o.name[vcount]);    \
1433
0
          LOG_POS                                                             \
1434
0
        }                                                                     \
1435
0
    }
1436
1437
#define FIELD_2RD_VECTOR(name, size, dxf)                                     \
1438
8.71k
  VECTOR_CHKCOUNT_LV (name, 2RD, _obj->size, dat)                             \
1439
8.71k
  if (_obj->size > 0)                                                         \
1440
5.13k
    {                                                                         \
1441
5.13k
      _obj->name = (BITCODE_2RD *)calloc (_obj->size, sizeof (BITCODE_2RD));  \
1442
5.13k
      if (!_obj->name)                                                        \
1443
5.13k
        return DWG_ERR_OUTOFMEM;                                              \
1444
169k
      for (vcount = 0; vcount < (BITCODE_BL)_obj->size; vcount++)             \
1445
168k
        {                                                                     \
1446
168k
          FIELD_2RD (name[vcount], dxf);                                      \
1447
164k
        }                                                                     \
1448
5.13k
    }                                                                         \
1449
0
  else                                                                        \
1450
3.57k
    return DWG_ERR_VALUEOUTOFBOUNDS;
1451
1452
#define SUB_FIELD_2RD_VECTOR(o, name, size, dxf)                              \
1453
0
  VECTOR_CHKCOUNT_LV (o.name, 2RD, _obj->o.size, dat)                         \
1454
0
  if (_obj->o.size > 0)                                                       \
1455
0
    {                                                                         \
1456
0
      _obj->o.name                                                            \
1457
0
          = (BITCODE_2RD *)calloc (_obj->o.size, sizeof (BITCODE_2RD));       \
1458
0
      if (!_obj->o.name)                                                      \
1459
0
        return DWG_ERR_OUTOFMEM;                                              \
1460
0
      for (vcount = 0; vcount < (BITCODE_BL)_obj->o.size; vcount++)           \
1461
0
        {                                                                     \
1462
0
          SUB_FIELD_2RD (o, name[vcount], dxf);                               \
1463
0
        }                                                                     \
1464
0
    }                                                                         \
1465
0
  else                                                                        \
1466
0
    return DWG_ERR_VALUEOUTOFBOUNDS;
1467
1468
#define FIELD_2DD_VECTOR(name, size, dxf)                                     \
1469
10.0k
  VECTOR_CHKCOUNT_LV (name, 2DD, _obj->size, dat)                             \
1470
10.0k
  if (_obj->size > 0)                                                         \
1471
10.0k
    {                                                                         \
1472
6.37k
      _obj->name = (BITCODE_2RD *)calloc (_obj->size, sizeof (BITCODE_2RD));  \
1473
6.37k
      if (!_obj->name)                                                        \
1474
6.37k
        return DWG_ERR_OUTOFMEM;                                              \
1475
12.1k
      FIELD_2RD (name[0], dxf);                                               \
1476
746k
      for (vcount = 1; vcount < (BITCODE_BL)_obj->size; vcount++)             \
1477
742k
        {                                                                     \
1478
742k
          BITCODE_BB b2, b1 = bit_read_BB_noadv (dat);                        \
1479
742k
          FIELD_DD (name[vcount].x, FIELD_VALUE (name[vcount - 1].x), dxf);   \
1480
741k
          b2 = bit_read_BB_noadv (dat);                                       \
1481
741k
          FIELD_DD (name[vcount].y, FIELD_VALUE (name[vcount - 1].y),         \
1482
741k
                    dxf + 10);                                                \
1483
740k
          if (b1 == 3 && b2 == 3)                                             \
1484
740k
            LOG_TRACE (#name "[%ld]: (" FORMAT_BD ", " FORMAT_BD              \
1485
740k
                             ") [2DD %d]",                                    \
1486
740k
                       (long)vcount, _obj->name[vcount].x,                    \
1487
740k
                       _obj->name[vcount].y, dxf);                            \
1488
740k
          else                                                                \
1489
740k
            LOG_TRACE (#name "[%ld]: (" FORMAT_BD ", " FORMAT_BD              \
1490
740k
                             ") [2DD/%d%d %d]",                               \
1491
740k
                       (long)vcount, _obj->name[vcount].x,                    \
1492
740k
                       _obj->name[vcount].y, b1, b2, dxf);                    \
1493
740k
          LOG_POS                                                             \
1494
740k
        }                                                                     \
1495
12.1k
    }                                                                         \
1496
10.0k
  else                                                                        \
1497
10.0k
    return DWG_ERR_VALUEOUTOFBOUNDS;
1498
1499
#define FIELD_3DPOINT_VECTOR(name, size, dxf)                                 \
1500
1.53M
  VECTOR_CHKCOUNT_LV (name, 3BD, _obj->size, dat)                             \
1501
1.53M
  if (_obj->size > 0)                                                         \
1502
1.53M
    {                                                                         \
1503
114k
      _obj->name                                                              \
1504
114k
          = (BITCODE_3DPOINT *)calloc (_obj->size, sizeof (BITCODE_3DPOINT)); \
1505
114k
      if (!_obj->name)                                                        \
1506
114k
        return DWG_ERR_OUTOFMEM;                                              \
1507
25.9M
      for (vcount = 0; vcount < (BITCODE_BL)_obj->size; vcount++)             \
1508
25.8M
        {                                                                     \
1509
25.8M
          FIELD_3DPOINT (name[vcount], dxf);                                  \
1510
25.8M
        }                                                                     \
1511
114k
    }
1512
#define SUB_FIELD_3BD_VECTOR(o, name, size, dxf)                              \
1513
0
  VECTOR_CHKCOUNT_LV (o.name, 3BD, _obj->o.size, dat)                         \
1514
0
  if (_obj->o.size > 0)                                                       \
1515
0
    {                                                                         \
1516
0
      _obj->o.name                                                            \
1517
0
          = (BITCODE_3BD *)calloc (_obj->o.size, sizeof (BITCODE_3BD));       \
1518
0
      if (!_obj->o.name)                                                      \
1519
0
        return DWG_ERR_OUTOFMEM;                                              \
1520
0
      for (vcount = 0; vcount < (BITCODE_BL)_obj->o.size; vcount++)           \
1521
0
        {                                                                     \
1522
0
          SUB_FIELD_3BD (o, name[vcount], dxf);                               \
1523
0
        }                                                                     \
1524
0
    }                                                                         \
1525
0
  else                                                                        \
1526
0
    return DWG_ERR_VALUEOUTOFBOUNDS;
1527
1528
// shortest handle: 8 bit
1529
#define HANDLE_VECTOR_N(nam, size, code, dxf)                                 \
1530
159k
  if (size > 0)                                                               \
1531
159k
    {                                                                         \
1532
72.7k
      FIELD_VALUE (nam) = (BITCODE_H *)calloc (size, sizeof (BITCODE_H));     \
1533
72.7k
      if (!_obj->nam)                                                         \
1534
72.7k
        return DWG_ERR_OUTOFMEM;                                              \
1535
52.1M
      for (vcount = 0; vcount < (BITCODE_BL)size; vcount++)                   \
1536
52.0M
        {                                                                     \
1537
52.0M
          FIELD_HANDLE_N (nam[vcount], vcount, code, dxf);                    \
1538
52.0M
        }                                                                     \
1539
72.7k
    }
1540
1541
#define HANDLE_VECTOR(nam, sizefield, code, dxf)                              \
1542
158k
  VECTOR_CHKCOUNT_LV (nam, HANDLE, FIELD_VALUE (sizefield), hdl_dat)          \
1543
158k
  HANDLE_VECTOR_N (nam, FIELD_VALUE (sizefield), code, dxf)
1544
1545
#define SUB_HANDLE_VECTOR(o, nam, sizefield, code, dxf)                       \
1546
9.66k
  if (_obj->o.sizefield > 0)                                                  \
1547
9.66k
    {                                                                         \
1548
1.16k
      BITCODE_BL _size = _obj->o.sizefield;                                   \
1549
1.16k
      HANDLE_VECTOR_CHKCOUNT (nam, _size)                                     \
1550
1.16k
      _obj->o.nam = (BITCODE_H *)calloc (_size, sizeof (BITCODE_H));          \
1551
761
      if (!_obj->o.nam)                                                       \
1552
761
        return DWG_ERR_OUTOFMEM;                                              \
1553
111k
      for (vcount = 0; vcount < _size; vcount++)                              \
1554
111k
        {                                                                     \
1555
111k
          SUB_FIELD_HANDLE (o, nam[vcount], code, dxf);                       \
1556
111k
        }                                                                     \
1557
761
    }
1558
1559
// count 1 bytes, until non-1 bytes or a terminating zero
1560
#define FIELD_NUM_INSERTS(num_inserts, type, dxf)                             \
1561
52.2k
  FIELD_VALUE (num_inserts) = 0;                                              \
1562
52.2k
  vcount = 0;                                                                 \
1563
1.51M
  while ((vcount = (BITCODE_RC)bit_read_RC (dat)))                            \
1564
1.46M
    {                                                                         \
1565
1.46M
      FIELD_VALUE (num_inserts)++;                                            \
1566
1.46M
      LOG_INSANE ("num_inserts [RC " FORMAT_RL "]: %d\n",                     \
1567
1.46M
                  FIELD_VALUE (num_inserts), (unsigned char)vcount);          \
1568
1.46M
      if (vcount == 0)                                                        \
1569
1.46M
        break;                                                                \
1570
1.46M
    }                                                                         \
1571
52.2k
  LOG_TRACE ("num_inserts: %d [RC* 0]\n", FIELD_VALUE (num_inserts));
1572
1573
#define FIELD_XDATA(name, xdata_size)                                         \
1574
5.10k
  _obj->name = dwg_decode_xdata (dat, _obj, _obj->xdata_size)
1575
1576
#define REACTORS(code)                                                        \
1577
115k
  if (obj->tio.object->num_reactors > 0)                                      \
1578
115k
    {                                                                         \
1579
10.2k
      HANDLE_VECTOR_CHKCOUNT (reactors, obj->tio.object->num_reactors)        \
1580
10.2k
      obj->tio.object->reactors = (BITCODE_H *)calloc (                       \
1581
8.68k
          obj->tio.object->num_reactors, sizeof (BITCODE_H));                 \
1582
8.68k
      if (!obj->tio.object->reactors)                                         \
1583
8.68k
        return DWG_ERR_OUTOFMEM;                                              \
1584
4.58M
      for (vcount = 0; vcount < obj->tio.object->num_reactors; vcount++)      \
1585
4.57M
        {                                                                     \
1586
4.57M
          VALUE_HANDLE_N (obj->tio.object->reactors[vcount], reactors,        \
1587
4.57M
                          vcount, code, 330);                                 \
1588
4.57M
        }                                                                     \
1589
8.68k
    }
1590
1591
#define ENT_REACTORS(code)                                                    \
1592
44.7k
  if (_ent->num_reactors > 0)                                                 \
1593
44.7k
    {                                                                         \
1594
18.1k
      HANDLE_VECTOR_CHKCOUNT (reactors, _ent->num_reactors)                   \
1595
18.1k
      _ent->reactors                                                          \
1596
12.9k
          = (BITCODE_H *)calloc (_ent->num_reactors, sizeof (BITCODE_H));     \
1597
12.9k
      if (!_ent->reactors)                                                    \
1598
12.9k
        return DWG_ERR_OUTOFMEM;                                              \
1599
2.85M
      for (vcount = 0; vcount < _ent->num_reactors; vcount++)                 \
1600
2.84M
        {                                                                     \
1601
2.84M
          VALUE_HANDLE_N (_ent->reactors[vcount], reactors, vcount, code,     \
1602
2.84M
                          330);                                               \
1603
2.84M
        }                                                                     \
1604
12.9k
    }
1605
1606
#define XDICOBJHANDLE(code)                                                   \
1607
114k
  SINCE (R_2004a)                                                             \
1608
114k
  {                                                                           \
1609
0
    if (!obj->tio.object->is_xdic_missing)                                    \
1610
0
      {                                                                       \
1611
0
        VALUE_HANDLE (obj->tio.object->xdicobjhandle, xdicobjhandle, code,    \
1612
0
                      360);                                                   \
1613
0
        if (!obj->tio.object->xdicobjhandle)                                  \
1614
0
          obj->tio.object->is_xdic_missing = 1;                               \
1615
0
      }                                                                       \
1616
0
  }                                                                           \
1617
114k
  else                                                                        \
1618
114k
  {                                                                           \
1619
114k
    SINCE (R_13b1)                                                            \
1620
114k
    {                                                                         \
1621
114k
      VALUE_HANDLE (obj->tio.object->xdicobjhandle, xdicobjhandle, code,      \
1622
114k
                    360);                                                     \
1623
114k
    }                                                                         \
1624
114k
  }
1625
1626
#define ENT_XDICOBJHANDLE(code)                                               \
1627
39.6k
  SINCE (R_2004a)                                                             \
1628
39.6k
  {                                                                           \
1629
0
    if (!_ent->is_xdic_missing)                                               \
1630
0
      {                                                                       \
1631
0
        VALUE_HANDLE (_ent->xdicobjhandle, xdicobjhandle, code, 360);         \
1632
0
      }                                                                       \
1633
0
  }                                                                           \
1634
39.6k
  else                                                                        \
1635
39.6k
  {                                                                           \
1636
39.6k
    SINCE (R_13b1)                                                            \
1637
39.6k
    {                                                                         \
1638
39.6k
      VALUE_HANDLE (_ent->xdicobjhandle, xdicobjhandle, code, 360);           \
1639
39.6k
    }                                                                         \
1640
39.6k
  }
1641
1642
#define UNKNOWN_UNTIL(pos)                                                    \
1643
14.6k
  if (dat->byte < (size_t)(pos))                                              \
1644
14.6k
    {                                                                         \
1645
11.1k
      long len = (long)((pos) - dat->byte);                                   \
1646
11.1k
      BITCODE_TF unknown = bit_read_TF (dat, (size_t)len);                    \
1647
11.1k
      LOG_TRACE ("unknown (%ld): ", len);                                     \
1648
11.1k
      LOG_TRACE_TF (unknown, len);                                            \
1649
11.1k
      free (unknown);                                                         \
1650
11.1k
    }                                                                         \
1651
14.6k
  dat->byte = (size_t)(pos)
1652
1653
#define SECTION_STRING_STREAM                                                 \
1654
0
  {                                                                           \
1655
0
    Bit_Chain sav_dat = *dat;                                                 \
1656
0
    dat = str_dat;
1657
1658
// TODO: unused
1659
#define START_STRING_STREAM                                                   \
1660
  obj->has_strings = bit_read_B (dat);                                        \
1661
  if (obj->has_strings)                                                       \
1662
    {                                                                         \
1663
      Bit_Chain sav_dat = *dat;                                               \
1664
      obj_string_stream (dat, obj, dat);
1665
1666
#define END_STRING_STREAM                                                     \
1667
0
  *dat = sav_dat;                                                             \
1668
0
  }
1669
/* just checking. skip the has_strings bit. hdl_dat is already set */
1670
#define START_HANDLE_STREAM                                                   \
1671
4.06M
  {                                                                           \
1672
4.06M
    size_t _pos = bit_position (dat);                                         \
1673
4.06M
    if (dat->from_version >= R_2007)                                          \
1674
4.06M
      _pos++; /* has_strings bit */                                           \
1675
4.06M
    if (obj->hdlpos != _pos)                                                  \
1676
4.06M
      {                                                                       \
1677
1.47M
        LOG_HANDLE (                                                          \
1678
1.47M
            " handle stream: %+ld @%" PRIuSIZE ".%u %s (@%" PRIuSIZE ".%u "   \
1679
1.47M
            " @%" PRIuSIZE ".%u)\n",                                          \
1680
1.47M
            (long)(obj->hdlpos - _pos), dat->byte, (unsigned)dat->bit,        \
1681
1.47M
            (long)(obj->hdlpos - _pos) >= 8 ? "MISSING"                       \
1682
1.47M
            : (long)(obj->hdlpos < _pos)    ? "OVERSHOOT"                     \
1683
1.47M
                                            : "",                                \
1684
1.47M
            obj->hdlpos / 8, (unsigned)obj->hdlpos % 8, hdl_dat->byte,        \
1685
1.47M
            (unsigned)hdl_dat->bit);                                          \
1686
1.47M
        bit_set_position (dat, obj->hdlpos);                                  \
1687
1.47M
      }                                                                       \
1688
4.06M
  }
1689
1690
#define REPEAT_CHKCOUNT(name, times, type)                                    \
1691
0
  if (AVAIL_BITS (dat) < 0)                                                   \
1692
0
    {                                                                         \
1693
0
      LOG_ERROR ("Invalid " #name " in %s. No bytes left.\n", SAFEDXFNAME);   \
1694
0
      if (_obj->name)                                                         \
1695
0
        {                                                                     \
1696
0
          free (_obj->name);                                                  \
1697
0
          _obj->name = NULL;                                                  \
1698
0
        }                                                                     \
1699
0
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1700
0
    }                                                                         \
1701
0
  LOG_INSANE ("REPEAT_CHKCOUNT %s." #name " x %lu: %lu > %" PRId64 "?\n",     \
1702
0
              SAFEDXFNAME, (unsigned long)times,                              \
1703
0
              (unsigned long)((times) * sizeof (type)), AVAIL_BITS (dat));    \
1704
0
  if ((int64_t)((times) * (sizeof (type) > 32 ? 32 : sizeof (type)))          \
1705
0
      > AVAIL_BITS (dat))                                                     \
1706
0
    {                                                                         \
1707
0
      LOG_ERROR ("Invalid %s." #name " x %lu\n", SAFEDXFNAME,                 \
1708
0
                 (unsigned long)times);                                       \
1709
0
      if (_obj->name)                                                         \
1710
0
        {                                                                     \
1711
0
          free (_obj->name);                                                  \
1712
0
          _obj->name = NULL;                                                  \
1713
0
        }                                                                     \
1714
0
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1715
0
    }
1716
#define REPEAT_CHKCOUNT_LVAL(name, times, type)                               \
1717
551k
  if (AVAIL_BITS (dat) < 0)                                                   \
1718
551k
    {                                                                         \
1719
6.37k
      LOG_ERROR ("Invalid %s." #name ". No bytes left.\n", SAFEDXFNAME);      \
1720
6.37k
      times = 0;                                                              \
1721
6.37k
      if (_obj->name)                                                         \
1722
6.37k
        {                                                                     \
1723
0
          free (_obj->name);                                                  \
1724
0
          _obj->name = NULL;                                                  \
1725
0
        }                                                                     \
1726
6.37k
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1727
6.37k
    }                                                                         \
1728
551k
  LOG_INSANE ("REPEAT_CHKCOUNT_LVAL %s." #name " x %lu: %lu > %" PRId64       \
1729
544k
              "?\n",                                                          \
1730
544k
              SAFEDXFNAME, (unsigned long)times,                              \
1731
544k
              (unsigned long)((times) * sizeof (type)), AVAIL_BITS (dat));    \
1732
544k
  if ((int64_t)((times) * (sizeof (type) > 32 ? 32 : sizeof (type)))          \
1733
544k
      > AVAIL_BITS (dat)                                                      \
1734
544k
      || (sizeof (times) > 4 && times > 0xc0000000 / sizeof (type)))          \
1735
544k
    {                                                                         \
1736
11.0k
      LOG_ERROR ("Invalid %s." #name " x %ld\n", SAFEDXFNAME, (long)times);   \
1737
11.0k
      times = 0;                                                              \
1738
11.0k
      if (_obj->name)                                                         \
1739
11.0k
        {                                                                     \
1740
0
          free (_obj->name);                                                  \
1741
0
          _obj->name = NULL;                                                  \
1742
0
        }                                                                     \
1743
11.0k
      return DWG_ERR_VALUEOUTOFBOUNDS;                                        \
1744
11.0k
    }
1745
1746
/* REPEAT names:
1747
  _ adds idx
1748
  C does no checks
1749
  N does constant times (else _obj->times)
1750
  F does not calloc/free
1751
*/
1752
1753
// unchecked with constant times
1754
#define REPEAT_CN(times, name, type)                                          \
1755
0
  if (times > 0)                                                              \
1756
0
    {                                                                         \
1757
0
      _obj->name = (type *)calloc (times, sizeof (type));                     \
1758
0
      if (!_obj->name)                                                        \
1759
0
        return DWG_ERR_OUTOFMEM;                                              \
1760
0
    }                                                                         \
1761
0
  for (rcount1 = 0; rcount1 < (BITCODE_BL)times; rcount1++)
1762
// checked with constant times
1763
#define REPEAT_N(times, name, type)                                           \
1764
0
  REPEAT_CHKCOUNT (name, times, type)                                         \
1765
0
  if (times > 0)                                                              \
1766
0
    {                                                                         \
1767
0
      _obj->name = (type *)calloc (times, sizeof (type));                     \
1768
0
      if (!_obj->name)                                                        \
1769
0
        return DWG_ERR_OUTOFMEM;                                              \
1770
0
    }                                                                         \
1771
0
  for (rcount1 = 0; rcount1 < (BITCODE_BL)times; rcount1++)
1772
1773
// checked with var. times
1774
#define _REPEAT(times, nam, type, idx)                                        \
1775
551k
  REPEAT_CHKCOUNT_LVAL (nam, _obj->times, type)                               \
1776
544k
  if (_obj->times > 0)                                                        \
1777
533k
    {                                                                         \
1778
80.8k
      _obj->nam = (type *)calloc (_obj->times, sizeof (type));                \
1779
80.8k
      if (!_obj->nam)                                                         \
1780
80.8k
        return DWG_ERR_OUTOFMEM;                                              \
1781
80.8k
    }                                                                         \
1782
4.77M
  for (rcount##idx = 0; rcount##idx < (BITCODE_BL)_obj->times; rcount##idx++)
1783
// unchecked with var. times
1784
#define _REPEAT_C(times, name, type, idx)                                     \
1785
22.2k
  if (_obj->times > 0)                                                        \
1786
22.2k
    _obj->name = (type *)calloc (_obj->times, sizeof (type));                 \
1787
2.29M
  for (rcount##idx = 0; rcount##idx < (BITCODE_BL)_obj->times; rcount##idx++)
1788
// unchecked with constant times
1789
#define _REPEAT_CN(times, name, type, idx)                                    \
1790
0
  if (times > 0)                                                              \
1791
0
    {                                                                         \
1792
0
      _obj->name = (type *)calloc (times, sizeof (type));                     \
1793
0
      if (!_obj->name)                                                        \
1794
0
        return DWG_ERR_OUTOFMEM;                                              \
1795
0
    }                                                                         \
1796
0
  if (_obj->name)                                                             \
1797
0
    for (rcount##idx = 0; rcount##idx < (BITCODE_BL)times; rcount##idx++)
1798
1799
// not allocating versions unchecked: _REPEAT_CNF
1800
// not allocating versions checked: _REPEAT_NF
1801
1802
113k
#define REPEAT(times, name, type) _REPEAT (times, name, type, 1)
1803
440k
#define REPEAT2(times, name, type) _REPEAT (times, name, type, 2)
1804
504
#define REPEAT3(times, name, type) _REPEAT (times, name, type, 3)
1805
0
#define REPEAT4(times, name, type) _REPEAT (times, name, type, 4)
1806
1807
22.2k
#define REPEAT_C(times, name, type) _REPEAT_C (times, name, type, 1)
1808
0
#define REPEAT2_C(times, name, type) _REPEAT_C (times, name, type, 2)
1809
#define REPEAT3_C(times, name, type) _REPEAT_C (times, name, type, 3)
1810
#define REPEAT4_C(times, name, type) _REPEAT_C (times, name, type, 4)
1811
1812
#define COMMON_ENTITY_HANDLE_DATA                                             \
1813
915k
  SINCE (R_13b1)                                                              \
1814
599k
  {                                                                           \
1815
599k
    START_HANDLE_STREAM;                                                      \
1816
599k
  }
1817
1818
/** Add the empty entity or object with its three structs to the DWG.
1819
    All fields are zero'd. TODO: some are initialized with default values, as
1820
    defined in dwg.spec.
1821
    Returns 0 or DWG_ERR_OUTOFMEM.
1822
*/
1823
1824
#define DWG_ENTITY(token)                                                     \
1825
  EXPORT int dwg_setup_##token (Dwg_Object *obj)                              \
1826
1.52M
  {                                                                           \
1827
1.52M
    Dwg_Object_Entity *_ent;                                                  \
1828
1.52M
    Dwg_Entity_##token *_obj;                                                 \
1829
1.52M
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
1.52M
        && obj->parent->header.version < R_13b1)                              \
1831
1.52M
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
1.52M
    else                                                                      \
1833
1.52M
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
1.52M
    obj->parent->num_entities++;                                              \
1835
1.52M
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
1.52M
    if (!(int)obj->fixedtype)                                                 \
1837
1.52M
      {                                                                       \
1838
1.52M
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
1.52M
      }                                                                       \
1840
1.52M
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
1.52M
      {                                                                       \
1842
36.3k
        obj->type = DWG_TYPE_##token;                                         \
1843
36.3k
      }                                                                       \
1844
1.52M
    if (!obj->dxfname)                                                        \
1845
1.52M
      {                                                                       \
1846
1.52M
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
1.52M
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
1.52M
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
1.43M
          {                                                                   \
1850
1.38k
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
1.38k
            obj->name = (char *)#token;                                       \
1852
1.38k
          }                                                                   \
1853
1.43M
        else                                                                  \
1854
1.43M
          obj->name = obj->dxfname = (char *)#token;                          \
1855
1.52M
      }                                                                       \
1856
1.52M
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
1.52M
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
1.52M
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
1.52M
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
1.52M
      {                                                                       \
1871
1.34k
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
1.34k
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
1.34k
          obj->name = strdup (obj->name);                                     \
1874
1.34k
      }                                                                       \
1875
1.52M
    _ent = obj->tio.entity                                                    \
1876
1.52M
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
1.52M
    if (!_ent)                                                                \
1878
1.52M
      return DWG_ERR_OUTOFMEM;                                                \
1879
1.52M
    _ent->tio.token                                                           \
1880
1.52M
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
1.52M
    if (!_ent->tio.token)                                                     \
1882
1.52M
      return DWG_ERR_OUTOFMEM;                                                \
1883
1.52M
    _ent->dwg = obj->parent;                                                  \
1884
1.52M
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
1.52M
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
1.52M
    return 0;                                                                 \
1887
1.52M
  }                                                                           \
dwg_setup_TEXT
Line
Count
Source
1826
68.7k
  {                                                                           \
1827
68.7k
    Dwg_Object_Entity *_ent;                                                  \
1828
68.7k
    Dwg_Entity_##token *_obj;                                                 \
1829
68.7k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
68.7k
        && obj->parent->header.version < R_13b1)                              \
1831
68.7k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
68.7k
    else                                                                      \
1833
68.7k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
68.7k
    obj->parent->num_entities++;                                              \
1835
68.7k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
68.7k
    if (!(int)obj->fixedtype)                                                 \
1837
68.7k
      {                                                                       \
1838
68.7k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
68.7k
      }                                                                       \
1840
68.7k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
68.7k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
68.7k
    if (!obj->dxfname)                                                        \
1845
68.7k
      {                                                                       \
1846
68.7k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
68.7k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
68.7k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
68.7k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
68.7k
        else                                                                  \
1854
68.7k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
68.7k
      }                                                                       \
1856
68.7k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
68.7k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
68.7k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
68.7k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
68.7k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
68.7k
    _ent = obj->tio.entity                                                    \
1876
68.7k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
68.7k
    if (!_ent)                                                                \
1878
68.7k
      return DWG_ERR_OUTOFMEM;                                                \
1879
68.7k
    _ent->tio.token                                                           \
1880
68.7k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
68.7k
    if (!_ent->tio.token)                                                     \
1882
68.7k
      return DWG_ERR_OUTOFMEM;                                                \
1883
68.7k
    _ent->dwg = obj->parent;                                                  \
1884
68.7k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
68.7k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
68.7k
    return 0;                                                                 \
1887
68.7k
  }                                                                           \
dwg_setup_ATTRIB
Line
Count
Source
1826
40.1k
  {                                                                           \
1827
40.1k
    Dwg_Object_Entity *_ent;                                                  \
1828
40.1k
    Dwg_Entity_##token *_obj;                                                 \
1829
40.1k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
40.1k
        && obj->parent->header.version < R_13b1)                              \
1831
40.1k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
40.1k
    else                                                                      \
1833
40.1k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
40.1k
    obj->parent->num_entities++;                                              \
1835
40.1k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
40.1k
    if (!(int)obj->fixedtype)                                                 \
1837
40.1k
      {                                                                       \
1838
40.1k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
40.1k
      }                                                                       \
1840
40.1k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
40.1k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
40.1k
    if (!obj->dxfname)                                                        \
1845
40.1k
      {                                                                       \
1846
40.1k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
40.1k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
40.1k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
40.1k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
40.1k
        else                                                                  \
1854
40.1k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
40.1k
      }                                                                       \
1856
40.1k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
40.1k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
40.1k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
40.1k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
40.1k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
40.1k
    _ent = obj->tio.entity                                                    \
1876
40.1k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
40.1k
    if (!_ent)                                                                \
1878
40.1k
      return DWG_ERR_OUTOFMEM;                                                \
1879
40.1k
    _ent->tio.token                                                           \
1880
40.1k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
40.1k
    if (!_ent->tio.token)                                                     \
1882
40.1k
      return DWG_ERR_OUTOFMEM;                                                \
1883
40.1k
    _ent->dwg = obj->parent;                                                  \
1884
40.1k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
40.1k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
40.1k
    return 0;                                                                 \
1887
40.1k
  }                                                                           \
dwg_setup_ATTDEF
Line
Count
Source
1826
68.1k
  {                                                                           \
1827
68.1k
    Dwg_Object_Entity *_ent;                                                  \
1828
68.1k
    Dwg_Entity_##token *_obj;                                                 \
1829
68.1k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
68.1k
        && obj->parent->header.version < R_13b1)                              \
1831
68.1k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
68.1k
    else                                                                      \
1833
68.1k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
68.1k
    obj->parent->num_entities++;                                              \
1835
68.1k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
68.1k
    if (!(int)obj->fixedtype)                                                 \
1837
68.1k
      {                                                                       \
1838
68.1k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
68.1k
      }                                                                       \
1840
68.1k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
68.1k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
68.1k
    if (!obj->dxfname)                                                        \
1845
68.1k
      {                                                                       \
1846
68.1k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
68.1k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
68.1k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
68.1k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
68.1k
        else                                                                  \
1854
68.1k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
68.1k
      }                                                                       \
1856
68.1k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
68.1k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
68.1k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
68.1k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
68.1k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
68.1k
    _ent = obj->tio.entity                                                    \
1876
68.1k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
68.1k
    if (!_ent)                                                                \
1878
68.1k
      return DWG_ERR_OUTOFMEM;                                                \
1879
68.1k
    _ent->tio.token                                                           \
1880
68.1k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
68.1k
    if (!_ent->tio.token)                                                     \
1882
68.1k
      return DWG_ERR_OUTOFMEM;                                                \
1883
68.1k
    _ent->dwg = obj->parent;                                                  \
1884
68.1k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
68.1k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
68.1k
    return 0;                                                                 \
1887
68.1k
  }                                                                           \
dwg_setup_BLOCK
Line
Count
Source
1826
33.0k
  {                                                                           \
1827
33.0k
    Dwg_Object_Entity *_ent;                                                  \
1828
33.0k
    Dwg_Entity_##token *_obj;                                                 \
1829
33.0k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
33.0k
        && obj->parent->header.version < R_13b1)                              \
1831
33.0k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
33.0k
    else                                                                      \
1833
33.0k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
33.0k
    obj->parent->num_entities++;                                              \
1835
33.0k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
33.0k
    if (!(int)obj->fixedtype)                                                 \
1837
33.0k
      {                                                                       \
1838
33.0k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
33.0k
      }                                                                       \
1840
33.0k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
33.0k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
33.0k
    if (!obj->dxfname)                                                        \
1845
33.0k
      {                                                                       \
1846
33.0k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
33.0k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
33.0k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
33.0k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
33.0k
        else                                                                  \
1854
33.0k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
33.0k
      }                                                                       \
1856
33.0k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
33.0k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
33.0k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
33.0k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
33.0k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
33.0k
    _ent = obj->tio.entity                                                    \
1876
33.0k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
33.0k
    if (!_ent)                                                                \
1878
33.0k
      return DWG_ERR_OUTOFMEM;                                                \
1879
33.0k
    _ent->tio.token                                                           \
1880
33.0k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
33.0k
    if (!_ent->tio.token)                                                     \
1882
33.0k
      return DWG_ERR_OUTOFMEM;                                                \
1883
33.0k
    _ent->dwg = obj->parent;                                                  \
1884
33.0k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
33.0k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
33.0k
    return 0;                                                                 \
1887
33.0k
  }                                                                           \
dwg_setup_ENDBLK
Line
Count
Source
1826
67.2k
  {                                                                           \
1827
67.2k
    Dwg_Object_Entity *_ent;                                                  \
1828
67.2k
    Dwg_Entity_##token *_obj;                                                 \
1829
67.2k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
67.2k
        && obj->parent->header.version < R_13b1)                              \
1831
67.2k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
67.2k
    else                                                                      \
1833
67.2k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
67.2k
    obj->parent->num_entities++;                                              \
1835
67.2k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
67.2k
    if (!(int)obj->fixedtype)                                                 \
1837
67.2k
      {                                                                       \
1838
67.2k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
67.2k
      }                                                                       \
1840
67.2k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
67.2k
      {                                                                       \
1842
36.3k
        obj->type = DWG_TYPE_##token;                                         \
1843
36.3k
      }                                                                       \
1844
67.2k
    if (!obj->dxfname)                                                        \
1845
67.2k
      {                                                                       \
1846
67.2k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
67.2k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
67.2k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
67.2k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
67.2k
        else                                                                  \
1854
67.2k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
67.2k
      }                                                                       \
1856
67.2k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
67.2k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
67.2k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
67.2k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
67.2k
      {                                                                       \
1871
1.34k
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
1.34k
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
1.34k
          obj->name = strdup (obj->name);                                     \
1874
1.34k
      }                                                                       \
1875
67.2k
    _ent = obj->tio.entity                                                    \
1876
67.2k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
67.2k
    if (!_ent)                                                                \
1878
67.2k
      return DWG_ERR_OUTOFMEM;                                                \
1879
67.2k
    _ent->tio.token                                                           \
1880
67.2k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
67.2k
    if (!_ent->tio.token)                                                     \
1882
67.2k
      return DWG_ERR_OUTOFMEM;                                                \
1883
67.2k
    _ent->dwg = obj->parent;                                                  \
1884
67.2k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
67.2k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
67.2k
    return 0;                                                                 \
1887
67.2k
  }                                                                           \
dwg_setup_SEQEND
Line
Count
Source
1826
8.87k
  {                                                                           \
1827
8.87k
    Dwg_Object_Entity *_ent;                                                  \
1828
8.87k
    Dwg_Entity_##token *_obj;                                                 \
1829
8.87k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
8.87k
        && obj->parent->header.version < R_13b1)                              \
1831
8.87k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
8.87k
    else                                                                      \
1833
8.87k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
8.87k
    obj->parent->num_entities++;                                              \
1835
8.87k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
8.87k
    if (!(int)obj->fixedtype)                                                 \
1837
8.87k
      {                                                                       \
1838
8.87k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
8.87k
      }                                                                       \
1840
8.87k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
8.87k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
8.87k
    if (!obj->dxfname)                                                        \
1845
8.87k
      {                                                                       \
1846
8.87k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
8.87k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
8.87k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
8.87k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
8.87k
        else                                                                  \
1854
8.87k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
8.87k
      }                                                                       \
1856
8.87k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
8.87k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
8.87k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
8.87k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
8.87k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
8.87k
    _ent = obj->tio.entity                                                    \
1876
8.87k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
8.87k
    if (!_ent)                                                                \
1878
8.87k
      return DWG_ERR_OUTOFMEM;                                                \
1879
8.87k
    _ent->tio.token                                                           \
1880
8.87k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
8.87k
    if (!_ent->tio.token)                                                     \
1882
8.87k
      return DWG_ERR_OUTOFMEM;                                                \
1883
8.87k
    _ent->dwg = obj->parent;                                                  \
1884
8.87k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
8.87k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
8.87k
    return 0;                                                                 \
1887
8.87k
  }                                                                           \
dwg_setup_INSERT
Line
Count
Source
1826
28.6k
  {                                                                           \
1827
28.6k
    Dwg_Object_Entity *_ent;                                                  \
1828
28.6k
    Dwg_Entity_##token *_obj;                                                 \
1829
28.6k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
28.6k
        && obj->parent->header.version < R_13b1)                              \
1831
28.6k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
28.6k
    else                                                                      \
1833
28.6k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
28.6k
    obj->parent->num_entities++;                                              \
1835
28.6k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
28.6k
    if (!(int)obj->fixedtype)                                                 \
1837
28.6k
      {                                                                       \
1838
28.6k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
28.6k
      }                                                                       \
1840
28.6k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
28.6k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
28.6k
    if (!obj->dxfname)                                                        \
1845
28.6k
      {                                                                       \
1846
28.6k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
28.6k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
28.6k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
28.6k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
28.6k
        else                                                                  \
1854
28.6k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
28.6k
      }                                                                       \
1856
28.6k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
28.6k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
28.6k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
28.6k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
28.6k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
28.6k
    _ent = obj->tio.entity                                                    \
1876
28.6k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
28.6k
    if (!_ent)                                                                \
1878
28.6k
      return DWG_ERR_OUTOFMEM;                                                \
1879
28.6k
    _ent->tio.token                                                           \
1880
28.6k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
28.6k
    if (!_ent->tio.token)                                                     \
1882
28.6k
      return DWG_ERR_OUTOFMEM;                                                \
1883
28.6k
    _ent->dwg = obj->parent;                                                  \
1884
28.6k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
28.6k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
28.6k
    return 0;                                                                 \
1887
28.6k
  }                                                                           \
Unexecuted instantiation: dwg_setup_ACIDBLOCKREFERENCE
dwg_setup_MINSERT
Line
Count
Source
1826
18.1k
  {                                                                           \
1827
18.1k
    Dwg_Object_Entity *_ent;                                                  \
1828
18.1k
    Dwg_Entity_##token *_obj;                                                 \
1829
18.1k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
18.1k
        && obj->parent->header.version < R_13b1)                              \
1831
18.1k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
18.1k
    else                                                                      \
1833
18.1k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
18.1k
    obj->parent->num_entities++;                                              \
1835
18.1k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
18.1k
    if (!(int)obj->fixedtype)                                                 \
1837
18.1k
      {                                                                       \
1838
18.1k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
18.1k
      }                                                                       \
1840
18.1k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
18.1k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
18.1k
    if (!obj->dxfname)                                                        \
1845
18.1k
      {                                                                       \
1846
18.1k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
18.1k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
18.1k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
18.1k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
18.1k
        else                                                                  \
1854
18.1k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
18.1k
      }                                                                       \
1856
18.1k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
18.1k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
18.1k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
18.1k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
18.1k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
18.1k
    _ent = obj->tio.entity                                                    \
1876
18.1k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
18.1k
    if (!_ent)                                                                \
1878
18.1k
      return DWG_ERR_OUTOFMEM;                                                \
1879
18.1k
    _ent->tio.token                                                           \
1880
18.1k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
18.1k
    if (!_ent->tio.token)                                                     \
1882
18.1k
      return DWG_ERR_OUTOFMEM;                                                \
1883
18.1k
    _ent->dwg = obj->parent;                                                  \
1884
18.1k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
18.1k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
18.1k
    return 0;                                                                 \
1887
18.1k
  }                                                                           \
dwg_setup__3DLINE
Line
Count
Source
1826
33.4k
  {                                                                           \
1827
33.4k
    Dwg_Object_Entity *_ent;                                                  \
1828
33.4k
    Dwg_Entity_##token *_obj;                                                 \
1829
33.4k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
33.4k
        && obj->parent->header.version < R_13b1)                              \
1831
33.4k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
33.4k
    else                                                                      \
1833
33.4k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
33.4k
    obj->parent->num_entities++;                                              \
1835
33.4k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
33.4k
    if (!(int)obj->fixedtype)                                                 \
1837
33.4k
      {                                                                       \
1838
33.4k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
33.4k
      }                                                                       \
1840
33.4k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
33.4k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
33.4k
    if (!obj->dxfname)                                                        \
1845
33.4k
      {                                                                       \
1846
33.4k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
33.4k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
33.4k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
0
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
0
        else                                                                  \
1854
0
          obj->name = obj->dxfname = (char *)#token;                          \
1855
33.4k
      }                                                                       \
1856
33.4k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
33.4k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
33.4k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
33.4k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
33.4k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
33.4k
    _ent = obj->tio.entity                                                    \
1876
33.4k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
33.4k
    if (!_ent)                                                                \
1878
33.4k
      return DWG_ERR_OUTOFMEM;                                                \
1879
33.4k
    _ent->tio.token                                                           \
1880
33.4k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
33.4k
    if (!_ent->tio.token)                                                     \
1882
33.4k
      return DWG_ERR_OUTOFMEM;                                                \
1883
33.4k
    _ent->dwg = obj->parent;                                                  \
1884
33.4k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
33.4k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
33.4k
    return 0;                                                                 \
1887
33.4k
  }                                                                           \
dwg_setup_VERTEX_2D
Line
Count
Source
1826
31.6k
  {                                                                           \
1827
31.6k
    Dwg_Object_Entity *_ent;                                                  \
1828
31.6k
    Dwg_Entity_##token *_obj;                                                 \
1829
31.6k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
31.6k
        && obj->parent->header.version < R_13b1)                              \
1831
31.6k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
31.6k
    else                                                                      \
1833
31.6k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
31.6k
    obj->parent->num_entities++;                                              \
1835
31.6k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
31.6k
    if (!(int)obj->fixedtype)                                                 \
1837
31.6k
      {                                                                       \
1838
31.6k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
31.6k
      }                                                                       \
1840
31.6k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
31.6k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
31.6k
    if (!obj->dxfname)                                                        \
1845
31.6k
      {                                                                       \
1846
31.6k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
31.6k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
31.6k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
31.6k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
31.6k
        else                                                                  \
1854
31.6k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
31.6k
      }                                                                       \
1856
31.6k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
31.6k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
31.6k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
31.6k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
31.6k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
31.6k
    _ent = obj->tio.entity                                                    \
1876
31.6k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
31.6k
    if (!_ent)                                                                \
1878
31.6k
      return DWG_ERR_OUTOFMEM;                                                \
1879
31.6k
    _ent->tio.token                                                           \
1880
31.6k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
31.6k
    if (!_ent->tio.token)                                                     \
1882
31.6k
      return DWG_ERR_OUTOFMEM;                                                \
1883
31.6k
    _ent->dwg = obj->parent;                                                  \
1884
31.6k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
31.6k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
31.6k
    return 0;                                                                 \
1887
31.6k
  }                                                                           \
dwg_setup_VERTEX_3D
Line
Count
Source
1826
6.07k
  {                                                                           \
1827
6.07k
    Dwg_Object_Entity *_ent;                                                  \
1828
6.07k
    Dwg_Entity_##token *_obj;                                                 \
1829
6.07k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
6.07k
        && obj->parent->header.version < R_13b1)                              \
1831
6.07k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
6.07k
    else                                                                      \
1833
6.07k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
6.07k
    obj->parent->num_entities++;                                              \
1835
6.07k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
6.07k
    if (!(int)obj->fixedtype)                                                 \
1837
6.07k
      {                                                                       \
1838
6.07k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
6.07k
      }                                                                       \
1840
6.07k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
6.07k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
6.07k
    if (!obj->dxfname)                                                        \
1845
6.07k
      {                                                                       \
1846
6.07k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
6.07k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
6.07k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
6.07k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
6.07k
        else                                                                  \
1854
6.07k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
6.07k
      }                                                                       \
1856
6.07k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
6.07k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
6.07k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
6.07k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
6.07k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
6.07k
    _ent = obj->tio.entity                                                    \
1876
6.07k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
6.07k
    if (!_ent)                                                                \
1878
6.07k
      return DWG_ERR_OUTOFMEM;                                                \
1879
6.07k
    _ent->tio.token                                                           \
1880
6.07k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
6.07k
    if (!_ent->tio.token)                                                     \
1882
6.07k
      return DWG_ERR_OUTOFMEM;                                                \
1883
6.07k
    _ent->dwg = obj->parent;                                                  \
1884
6.07k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
6.07k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
6.07k
    return 0;                                                                 \
1887
6.07k
  }                                                                           \
dwg_setup_VERTEX_MESH
Line
Count
Source
1826
38.3k
  {                                                                           \
1827
38.3k
    Dwg_Object_Entity *_ent;                                                  \
1828
38.3k
    Dwg_Entity_##token *_obj;                                                 \
1829
38.3k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
38.3k
        && obj->parent->header.version < R_13b1)                              \
1831
38.3k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
38.3k
    else                                                                      \
1833
38.3k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
38.3k
    obj->parent->num_entities++;                                              \
1835
38.3k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
38.3k
    if (!(int)obj->fixedtype)                                                 \
1837
38.3k
      {                                                                       \
1838
38.3k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
38.3k
      }                                                                       \
1840
38.3k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
38.3k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
38.3k
    if (!obj->dxfname)                                                        \
1845
38.3k
      {                                                                       \
1846
38.3k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
38.3k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
38.3k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
38.3k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
38.3k
        else                                                                  \
1854
38.3k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
38.3k
      }                                                                       \
1856
38.3k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
38.3k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
38.3k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
38.3k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
38.3k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
38.3k
    _ent = obj->tio.entity                                                    \
1876
38.3k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
38.3k
    if (!_ent)                                                                \
1878
38.3k
      return DWG_ERR_OUTOFMEM;                                                \
1879
38.3k
    _ent->tio.token                                                           \
1880
38.3k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
38.3k
    if (!_ent->tio.token)                                                     \
1882
38.3k
      return DWG_ERR_OUTOFMEM;                                                \
1883
38.3k
    _ent->dwg = obj->parent;                                                  \
1884
38.3k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
38.3k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
38.3k
    return 0;                                                                 \
1887
38.3k
  }                                                                           \
dwg_setup_VERTEX_PFACE
Line
Count
Source
1826
29.4k
  {                                                                           \
1827
29.4k
    Dwg_Object_Entity *_ent;                                                  \
1828
29.4k
    Dwg_Entity_##token *_obj;                                                 \
1829
29.4k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
29.4k
        && obj->parent->header.version < R_13b1)                              \
1831
29.4k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
29.4k
    else                                                                      \
1833
29.4k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
29.4k
    obj->parent->num_entities++;                                              \
1835
29.4k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
29.4k
    if (!(int)obj->fixedtype)                                                 \
1837
29.4k
      {                                                                       \
1838
29.4k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
29.4k
      }                                                                       \
1840
29.4k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
29.4k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
29.4k
    if (!obj->dxfname)                                                        \
1845
29.4k
      {                                                                       \
1846
29.4k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
29.4k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
29.4k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
29.4k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
29.4k
        else                                                                  \
1854
29.4k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
29.4k
      }                                                                       \
1856
29.4k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
29.4k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
29.4k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
29.4k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
29.4k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
29.4k
    _ent = obj->tio.entity                                                    \
1876
29.4k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
29.4k
    if (!_ent)                                                                \
1878
29.4k
      return DWG_ERR_OUTOFMEM;                                                \
1879
29.4k
    _ent->tio.token                                                           \
1880
29.4k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
29.4k
    if (!_ent->tio.token)                                                     \
1882
29.4k
      return DWG_ERR_OUTOFMEM;                                                \
1883
29.4k
    _ent->dwg = obj->parent;                                                  \
1884
29.4k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
29.4k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
29.4k
    return 0;                                                                 \
1887
29.4k
  }                                                                           \
dwg_setup_VERTEX_PFACE_FACE
Line
Count
Source
1826
4.81k
  {                                                                           \
1827
4.81k
    Dwg_Object_Entity *_ent;                                                  \
1828
4.81k
    Dwg_Entity_##token *_obj;                                                 \
1829
4.81k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
4.81k
        && obj->parent->header.version < R_13b1)                              \
1831
4.81k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
4.81k
    else                                                                      \
1833
4.81k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
4.81k
    obj->parent->num_entities++;                                              \
1835
4.81k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
4.81k
    if (!(int)obj->fixedtype)                                                 \
1837
4.81k
      {                                                                       \
1838
4.81k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
4.81k
      }                                                                       \
1840
4.81k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
4.81k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
4.81k
    if (!obj->dxfname)                                                        \
1845
4.81k
      {                                                                       \
1846
4.81k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
4.81k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
4.81k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
4.81k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
4.81k
        else                                                                  \
1854
4.81k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
4.81k
      }                                                                       \
1856
4.81k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
4.81k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
4.81k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
4.81k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
4.81k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
4.81k
    _ent = obj->tio.entity                                                    \
1876
4.81k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
4.81k
    if (!_ent)                                                                \
1878
4.81k
      return DWG_ERR_OUTOFMEM;                                                \
1879
4.81k
    _ent->tio.token                                                           \
1880
4.81k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
4.81k
    if (!_ent->tio.token)                                                     \
1882
4.81k
      return DWG_ERR_OUTOFMEM;                                                \
1883
4.81k
    _ent->dwg = obj->parent;                                                  \
1884
4.81k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
4.81k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
4.81k
    return 0;                                                                 \
1887
4.81k
  }                                                                           \
dwg_setup_POLYLINE_2D
Line
Count
Source
1826
30.6k
  {                                                                           \
1827
30.6k
    Dwg_Object_Entity *_ent;                                                  \
1828
30.6k
    Dwg_Entity_##token *_obj;                                                 \
1829
30.6k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
30.6k
        && obj->parent->header.version < R_13b1)                              \
1831
30.6k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
30.6k
    else                                                                      \
1833
30.6k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
30.6k
    obj->parent->num_entities++;                                              \
1835
30.6k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
30.6k
    if (!(int)obj->fixedtype)                                                 \
1837
30.6k
      {                                                                       \
1838
30.6k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
30.6k
      }                                                                       \
1840
30.6k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
30.6k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
30.6k
    if (!obj->dxfname)                                                        \
1845
30.6k
      {                                                                       \
1846
30.6k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
30.6k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
30.6k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
30.6k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
30.6k
        else                                                                  \
1854
30.6k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
30.6k
      }                                                                       \
1856
30.6k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
30.6k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
30.6k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
30.6k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
30.6k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
30.6k
    _ent = obj->tio.entity                                                    \
1876
30.6k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
30.6k
    if (!_ent)                                                                \
1878
30.6k
      return DWG_ERR_OUTOFMEM;                                                \
1879
30.6k
    _ent->tio.token                                                           \
1880
30.6k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
30.6k
    if (!_ent->tio.token)                                                     \
1882
30.6k
      return DWG_ERR_OUTOFMEM;                                                \
1883
30.6k
    _ent->dwg = obj->parent;                                                  \
1884
30.6k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
30.6k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
30.6k
    return 0;                                                                 \
1887
30.6k
  }                                                                           \
dwg_setup_POLYLINE_3D
Line
Count
Source
1826
38.0k
  {                                                                           \
1827
38.0k
    Dwg_Object_Entity *_ent;                                                  \
1828
38.0k
    Dwg_Entity_##token *_obj;                                                 \
1829
38.0k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
38.0k
        && obj->parent->header.version < R_13b1)                              \
1831
38.0k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
38.0k
    else                                                                      \
1833
38.0k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
38.0k
    obj->parent->num_entities++;                                              \
1835
38.0k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
38.0k
    if (!(int)obj->fixedtype)                                                 \
1837
38.0k
      {                                                                       \
1838
38.0k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
38.0k
      }                                                                       \
1840
38.0k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
38.0k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
38.0k
    if (!obj->dxfname)                                                        \
1845
38.0k
      {                                                                       \
1846
38.0k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
38.0k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
38.0k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
38.0k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
38.0k
        else                                                                  \
1854
38.0k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
38.0k
      }                                                                       \
1856
38.0k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
38.0k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
38.0k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
38.0k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
38.0k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
38.0k
    _ent = obj->tio.entity                                                    \
1876
38.0k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
38.0k
    if (!_ent)                                                                \
1878
38.0k
      return DWG_ERR_OUTOFMEM;                                                \
1879
38.0k
    _ent->tio.token                                                           \
1880
38.0k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
38.0k
    if (!_ent->tio.token)                                                     \
1882
38.0k
      return DWG_ERR_OUTOFMEM;                                                \
1883
38.0k
    _ent->dwg = obj->parent;                                                  \
1884
38.0k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
38.0k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
38.0k
    return 0;                                                                 \
1887
38.0k
  }                                                                           \
dwg_setup_ARC
Line
Count
Source
1826
50.7k
  {                                                                           \
1827
50.7k
    Dwg_Object_Entity *_ent;                                                  \
1828
50.7k
    Dwg_Entity_##token *_obj;                                                 \
1829
50.7k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
50.7k
        && obj->parent->header.version < R_13b1)                              \
1831
50.7k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
50.7k
    else                                                                      \
1833
50.7k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
50.7k
    obj->parent->num_entities++;                                              \
1835
50.7k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
50.7k
    if (!(int)obj->fixedtype)                                                 \
1837
50.7k
      {                                                                       \
1838
50.7k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
50.7k
      }                                                                       \
1840
50.7k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
50.7k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
50.7k
    if (!obj->dxfname)                                                        \
1845
50.7k
      {                                                                       \
1846
50.7k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
50.7k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
50.7k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
50.7k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
50.7k
        else                                                                  \
1854
50.7k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
50.7k
      }                                                                       \
1856
50.7k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
50.7k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
50.7k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
50.7k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
50.7k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
50.7k
    _ent = obj->tio.entity                                                    \
1876
50.7k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
50.7k
    if (!_ent)                                                                \
1878
50.7k
      return DWG_ERR_OUTOFMEM;                                                \
1879
50.7k
    _ent->tio.token                                                           \
1880
50.7k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
50.7k
    if (!_ent->tio.token)                                                     \
1882
50.7k
      return DWG_ERR_OUTOFMEM;                                                \
1883
50.7k
    _ent->dwg = obj->parent;                                                  \
1884
50.7k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
50.7k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
50.7k
    return 0;                                                                 \
1887
50.7k
  }                                                                           \
dwg_setup_CIRCLE
Line
Count
Source
1826
27.6k
  {                                                                           \
1827
27.6k
    Dwg_Object_Entity *_ent;                                                  \
1828
27.6k
    Dwg_Entity_##token *_obj;                                                 \
1829
27.6k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
27.6k
        && obj->parent->header.version < R_13b1)                              \
1831
27.6k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
27.6k
    else                                                                      \
1833
27.6k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
27.6k
    obj->parent->num_entities++;                                              \
1835
27.6k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
27.6k
    if (!(int)obj->fixedtype)                                                 \
1837
27.6k
      {                                                                       \
1838
27.6k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
27.6k
      }                                                                       \
1840
27.6k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
27.6k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
27.6k
    if (!obj->dxfname)                                                        \
1845
27.6k
      {                                                                       \
1846
27.6k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
27.6k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
27.6k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
27.6k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
27.6k
        else                                                                  \
1854
27.6k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
27.6k
      }                                                                       \
1856
27.6k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
27.6k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
27.6k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
27.6k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
27.6k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
27.6k
    _ent = obj->tio.entity                                                    \
1876
27.6k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
27.6k
    if (!_ent)                                                                \
1878
27.6k
      return DWG_ERR_OUTOFMEM;                                                \
1879
27.6k
    _ent->tio.token                                                           \
1880
27.6k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
27.6k
    if (!_ent->tio.token)                                                     \
1882
27.6k
      return DWG_ERR_OUTOFMEM;                                                \
1883
27.6k
    _ent->dwg = obj->parent;                                                  \
1884
27.6k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
27.6k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
27.6k
    return 0;                                                                 \
1887
27.6k
  }                                                                           \
dwg_setup_LINE
Line
Count
Source
1826
62.9k
  {                                                                           \
1827
62.9k
    Dwg_Object_Entity *_ent;                                                  \
1828
62.9k
    Dwg_Entity_##token *_obj;                                                 \
1829
62.9k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
62.9k
        && obj->parent->header.version < R_13b1)                              \
1831
62.9k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
62.9k
    else                                                                      \
1833
62.9k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
62.9k
    obj->parent->num_entities++;                                              \
1835
62.9k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
62.9k
    if (!(int)obj->fixedtype)                                                 \
1837
62.9k
      {                                                                       \
1838
62.9k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
62.9k
      }                                                                       \
1840
62.9k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
62.9k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
62.9k
    if (!obj->dxfname)                                                        \
1845
62.9k
      {                                                                       \
1846
62.9k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
62.9k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
62.9k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
62.9k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
62.9k
        else                                                                  \
1854
62.9k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
62.9k
      }                                                                       \
1856
62.9k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
62.9k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
62.9k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
62.9k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
62.9k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
62.9k
    _ent = obj->tio.entity                                                    \
1876
62.9k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
62.9k
    if (!_ent)                                                                \
1878
62.9k
      return DWG_ERR_OUTOFMEM;                                                \
1879
62.9k
    _ent->tio.token                                                           \
1880
62.9k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
62.9k
    if (!_ent->tio.token)                                                     \
1882
62.9k
      return DWG_ERR_OUTOFMEM;                                                \
1883
62.9k
    _ent->dwg = obj->parent;                                                  \
1884
62.9k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
62.9k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
62.9k
    return 0;                                                                 \
1887
62.9k
  }                                                                           \
dwg_setup_DIMENSION_ORDINATE
Line
Count
Source
1826
38.9k
  {                                                                           \
1827
38.9k
    Dwg_Object_Entity *_ent;                                                  \
1828
38.9k
    Dwg_Entity_##token *_obj;                                                 \
1829
38.9k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
38.9k
        && obj->parent->header.version < R_13b1)                              \
1831
38.9k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
38.9k
    else                                                                      \
1833
38.9k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
38.9k
    obj->parent->num_entities++;                                              \
1835
38.9k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
38.9k
    if (!(int)obj->fixedtype)                                                 \
1837
38.9k
      {                                                                       \
1838
38.9k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
38.9k
      }                                                                       \
1840
38.9k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
38.9k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
38.9k
    if (!obj->dxfname)                                                        \
1845
38.9k
      {                                                                       \
1846
38.9k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
38.9k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
38.9k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
38.9k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
38.9k
        else                                                                  \
1854
38.9k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
38.9k
      }                                                                       \
1856
38.9k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
38.9k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
38.9k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
38.9k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
38.9k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
38.9k
    _ent = obj->tio.entity                                                    \
1876
38.9k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
38.9k
    if (!_ent)                                                                \
1878
38.9k
      return DWG_ERR_OUTOFMEM;                                                \
1879
38.9k
    _ent->tio.token                                                           \
1880
38.9k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
38.9k
    if (!_ent->tio.token)                                                     \
1882
38.9k
      return DWG_ERR_OUTOFMEM;                                                \
1883
38.9k
    _ent->dwg = obj->parent;                                                  \
1884
38.9k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
38.9k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
38.9k
    return 0;                                                                 \
1887
38.9k
  }                                                                           \
dwg_setup_DIMENSION_LINEAR
Line
Count
Source
1826
70.4k
  {                                                                           \
1827
70.4k
    Dwg_Object_Entity *_ent;                                                  \
1828
70.4k
    Dwg_Entity_##token *_obj;                                                 \
1829
70.4k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
70.4k
        && obj->parent->header.version < R_13b1)                              \
1831
70.4k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
70.4k
    else                                                                      \
1833
70.4k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
70.4k
    obj->parent->num_entities++;                                              \
1835
70.4k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
70.4k
    if (!(int)obj->fixedtype)                                                 \
1837
70.4k
      {                                                                       \
1838
70.4k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
70.4k
      }                                                                       \
1840
70.4k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
70.4k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
70.4k
    if (!obj->dxfname)                                                        \
1845
70.4k
      {                                                                       \
1846
70.4k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
70.4k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
70.4k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
70.4k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
70.4k
        else                                                                  \
1854
70.4k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
70.4k
      }                                                                       \
1856
70.4k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
70.4k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
70.4k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
70.4k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
70.4k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
70.4k
    _ent = obj->tio.entity                                                    \
1876
70.4k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
70.4k
    if (!_ent)                                                                \
1878
70.4k
      return DWG_ERR_OUTOFMEM;                                                \
1879
70.4k
    _ent->tio.token                                                           \
1880
70.4k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
70.4k
    if (!_ent->tio.token)                                                     \
1882
70.4k
      return DWG_ERR_OUTOFMEM;                                                \
1883
70.4k
    _ent->dwg = obj->parent;                                                  \
1884
70.4k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
70.4k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
70.4k
    return 0;                                                                 \
1887
70.4k
  }                                                                           \
dwg_setup_DIMENSION_ALIGNED
Line
Count
Source
1826
13.9k
  {                                                                           \
1827
13.9k
    Dwg_Object_Entity *_ent;                                                  \
1828
13.9k
    Dwg_Entity_##token *_obj;                                                 \
1829
13.9k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
13.9k
        && obj->parent->header.version < R_13b1)                              \
1831
13.9k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
13.9k
    else                                                                      \
1833
13.9k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
13.9k
    obj->parent->num_entities++;                                              \
1835
13.9k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
13.9k
    if (!(int)obj->fixedtype)                                                 \
1837
13.9k
      {                                                                       \
1838
13.9k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
13.9k
      }                                                                       \
1840
13.9k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
13.9k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
13.9k
    if (!obj->dxfname)                                                        \
1845
13.9k
      {                                                                       \
1846
13.9k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
13.9k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
13.9k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
13.9k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
13.9k
        else                                                                  \
1854
13.9k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
13.9k
      }                                                                       \
1856
13.9k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
13.9k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
13.9k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
13.9k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
13.9k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
13.9k
    _ent = obj->tio.entity                                                    \
1876
13.9k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
13.9k
    if (!_ent)                                                                \
1878
13.9k
      return DWG_ERR_OUTOFMEM;                                                \
1879
13.9k
    _ent->tio.token                                                           \
1880
13.9k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
13.9k
    if (!_ent->tio.token)                                                     \
1882
13.9k
      return DWG_ERR_OUTOFMEM;                                                \
1883
13.9k
    _ent->dwg = obj->parent;                                                  \
1884
13.9k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
13.9k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
13.9k
    return 0;                                                                 \
1887
13.9k
  }                                                                           \
dwg_setup_DIMENSION_ANG3PT
Line
Count
Source
1826
15.6k
  {                                                                           \
1827
15.6k
    Dwg_Object_Entity *_ent;                                                  \
1828
15.6k
    Dwg_Entity_##token *_obj;                                                 \
1829
15.6k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
15.6k
        && obj->parent->header.version < R_13b1)                              \
1831
15.6k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
15.6k
    else                                                                      \
1833
15.6k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
15.6k
    obj->parent->num_entities++;                                              \
1835
15.6k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
15.6k
    if (!(int)obj->fixedtype)                                                 \
1837
15.6k
      {                                                                       \
1838
15.6k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
15.6k
      }                                                                       \
1840
15.6k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
15.6k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
15.6k
    if (!obj->dxfname)                                                        \
1845
15.6k
      {                                                                       \
1846
15.6k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
15.6k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
15.6k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
15.6k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
15.6k
        else                                                                  \
1854
15.6k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
15.6k
      }                                                                       \
1856
15.6k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
15.6k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
15.6k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
15.6k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
15.6k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
15.6k
    _ent = obj->tio.entity                                                    \
1876
15.6k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
15.6k
    if (!_ent)                                                                \
1878
15.6k
      return DWG_ERR_OUTOFMEM;                                                \
1879
15.6k
    _ent->tio.token                                                           \
1880
15.6k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
15.6k
    if (!_ent->tio.token)                                                     \
1882
15.6k
      return DWG_ERR_OUTOFMEM;                                                \
1883
15.6k
    _ent->dwg = obj->parent;                                                  \
1884
15.6k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
15.6k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
15.6k
    return 0;                                                                 \
1887
15.6k
  }                                                                           \
dwg_setup_DIMENSION_ANG2LN
Line
Count
Source
1826
210k
  {                                                                           \
1827
210k
    Dwg_Object_Entity *_ent;                                                  \
1828
210k
    Dwg_Entity_##token *_obj;                                                 \
1829
210k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
210k
        && obj->parent->header.version < R_13b1)                              \
1831
210k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
210k
    else                                                                      \
1833
210k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
210k
    obj->parent->num_entities++;                                              \
1835
210k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
210k
    if (!(int)obj->fixedtype)                                                 \
1837
210k
      {                                                                       \
1838
210k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
210k
      }                                                                       \
1840
210k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
210k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
210k
    if (!obj->dxfname)                                                        \
1845
210k
      {                                                                       \
1846
210k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
210k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
210k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
210k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
210k
        else                                                                  \
1854
210k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
210k
      }                                                                       \
1856
210k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
210k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
210k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
210k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
210k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
210k
    _ent = obj->tio.entity                                                    \
1876
210k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
210k
    if (!_ent)                                                                \
1878
210k
      return DWG_ERR_OUTOFMEM;                                                \
1879
210k
    _ent->tio.token                                                           \
1880
210k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
210k
    if (!_ent->tio.token)                                                     \
1882
210k
      return DWG_ERR_OUTOFMEM;                                                \
1883
210k
    _ent->dwg = obj->parent;                                                  \
1884
210k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
210k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
210k
    return 0;                                                                 \
1887
210k
  }                                                                           \
dwg_setup_DIMENSION_RADIUS
Line
Count
Source
1826
16.7k
  {                                                                           \
1827
16.7k
    Dwg_Object_Entity *_ent;                                                  \
1828
16.7k
    Dwg_Entity_##token *_obj;                                                 \
1829
16.7k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
16.7k
        && obj->parent->header.version < R_13b1)                              \
1831
16.7k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
16.7k
    else                                                                      \
1833
16.7k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
16.7k
    obj->parent->num_entities++;                                              \
1835
16.7k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
16.7k
    if (!(int)obj->fixedtype)                                                 \
1837
16.7k
      {                                                                       \
1838
16.7k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
16.7k
      }                                                                       \
1840
16.7k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
16.7k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
16.7k
    if (!obj->dxfname)                                                        \
1845
16.7k
      {                                                                       \
1846
16.7k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
16.7k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
16.7k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
16.7k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
16.7k
        else                                                                  \
1854
16.7k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
16.7k
      }                                                                       \
1856
16.7k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
16.7k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
16.7k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
16.7k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
16.7k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
16.7k
    _ent = obj->tio.entity                                                    \
1876
16.7k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
16.7k
    if (!_ent)                                                                \
1878
16.7k
      return DWG_ERR_OUTOFMEM;                                                \
1879
16.7k
    _ent->tio.token                                                           \
1880
16.7k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
16.7k
    if (!_ent->tio.token)                                                     \
1882
16.7k
      return DWG_ERR_OUTOFMEM;                                                \
1883
16.7k
    _ent->dwg = obj->parent;                                                  \
1884
16.7k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
16.7k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
16.7k
    return 0;                                                                 \
1887
16.7k
  }                                                                           \
dwg_setup_DIMENSION_DIAMETER
Line
Count
Source
1826
5.98k
  {                                                                           \
1827
5.98k
    Dwg_Object_Entity *_ent;                                                  \
1828
5.98k
    Dwg_Entity_##token *_obj;                                                 \
1829
5.98k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
5.98k
        && obj->parent->header.version < R_13b1)                              \
1831
5.98k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
5.98k
    else                                                                      \
1833
5.98k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
5.98k
    obj->parent->num_entities++;                                              \
1835
5.98k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
5.98k
    if (!(int)obj->fixedtype)                                                 \
1837
5.98k
      {                                                                       \
1838
5.98k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
5.98k
      }                                                                       \
1840
5.98k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
5.98k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
5.98k
    if (!obj->dxfname)                                                        \
1845
5.98k
      {                                                                       \
1846
5.98k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
5.98k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
5.98k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
5.98k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
5.98k
        else                                                                  \
1854
5.98k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
5.98k
      }                                                                       \
1856
5.98k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
5.98k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
5.98k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
5.98k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
5.98k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
5.98k
    _ent = obj->tio.entity                                                    \
1876
5.98k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
5.98k
    if (!_ent)                                                                \
1878
5.98k
      return DWG_ERR_OUTOFMEM;                                                \
1879
5.98k
    _ent->tio.token                                                           \
1880
5.98k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
5.98k
    if (!_ent->tio.token)                                                     \
1882
5.98k
      return DWG_ERR_OUTOFMEM;                                                \
1883
5.98k
    _ent->dwg = obj->parent;                                                  \
1884
5.98k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
5.98k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
5.98k
    return 0;                                                                 \
1887
5.98k
  }                                                                           \
Unexecuted instantiation: dwg_setup_LARGE_RADIAL_DIMENSION
dwg_setup_POINT
Line
Count
Source
1826
36.0k
  {                                                                           \
1827
36.0k
    Dwg_Object_Entity *_ent;                                                  \
1828
36.0k
    Dwg_Entity_##token *_obj;                                                 \
1829
36.0k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
36.0k
        && obj->parent->header.version < R_13b1)                              \
1831
36.0k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
36.0k
    else                                                                      \
1833
36.0k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
36.0k
    obj->parent->num_entities++;                                              \
1835
36.0k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
36.0k
    if (!(int)obj->fixedtype)                                                 \
1837
36.0k
      {                                                                       \
1838
36.0k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
36.0k
      }                                                                       \
1840
36.0k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
36.0k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
36.0k
    if (!obj->dxfname)                                                        \
1845
36.0k
      {                                                                       \
1846
36.0k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
36.0k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
36.0k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
36.0k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
36.0k
        else                                                                  \
1854
36.0k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
36.0k
      }                                                                       \
1856
36.0k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
36.0k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
36.0k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
36.0k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
36.0k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
36.0k
    _ent = obj->tio.entity                                                    \
1876
36.0k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
36.0k
    if (!_ent)                                                                \
1878
36.0k
      return DWG_ERR_OUTOFMEM;                                                \
1879
36.0k
    _ent->tio.token                                                           \
1880
36.0k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
36.0k
    if (!_ent->tio.token)                                                     \
1882
36.0k
      return DWG_ERR_OUTOFMEM;                                                \
1883
36.0k
    _ent->dwg = obj->parent;                                                  \
1884
36.0k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
36.0k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
36.0k
    return 0;                                                                 \
1887
36.0k
  }                                                                           \
dwg_setup__3DFACE
Line
Count
Source
1826
49.5k
  {                                                                           \
1827
49.5k
    Dwg_Object_Entity *_ent;                                                  \
1828
49.5k
    Dwg_Entity_##token *_obj;                                                 \
1829
49.5k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
49.5k
        && obj->parent->header.version < R_13b1)                              \
1831
49.5k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
49.5k
    else                                                                      \
1833
49.5k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
49.5k
    obj->parent->num_entities++;                                              \
1835
49.5k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
49.5k
    if (!(int)obj->fixedtype)                                                 \
1837
49.5k
      {                                                                       \
1838
49.5k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
49.5k
      }                                                                       \
1840
49.5k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
49.5k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
49.5k
    if (!obj->dxfname)                                                        \
1845
49.5k
      {                                                                       \
1846
49.5k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
49.5k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
49.5k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
0
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
0
        else                                                                  \
1854
0
          obj->name = obj->dxfname = (char *)#token;                          \
1855
49.5k
      }                                                                       \
1856
49.5k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
49.5k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
49.5k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
49.5k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
49.5k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
49.5k
    _ent = obj->tio.entity                                                    \
1876
49.5k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
49.5k
    if (!_ent)                                                                \
1878
49.5k
      return DWG_ERR_OUTOFMEM;                                                \
1879
49.5k
    _ent->tio.token                                                           \
1880
49.5k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
49.5k
    if (!_ent->tio.token)                                                     \
1882
49.5k
      return DWG_ERR_OUTOFMEM;                                                \
1883
49.5k
    _ent->dwg = obj->parent;                                                  \
1884
49.5k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
49.5k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
49.5k
    return 0;                                                                 \
1887
49.5k
  }                                                                           \
dwg_setup_POLYLINE_PFACE
Line
Count
Source
1826
14.8k
  {                                                                           \
1827
14.8k
    Dwg_Object_Entity *_ent;                                                  \
1828
14.8k
    Dwg_Entity_##token *_obj;                                                 \
1829
14.8k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
14.8k
        && obj->parent->header.version < R_13b1)                              \
1831
14.8k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
14.8k
    else                                                                      \
1833
14.8k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
14.8k
    obj->parent->num_entities++;                                              \
1835
14.8k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
14.8k
    if (!(int)obj->fixedtype)                                                 \
1837
14.8k
      {                                                                       \
1838
14.8k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
14.8k
      }                                                                       \
1840
14.8k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
14.8k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
14.8k
    if (!obj->dxfname)                                                        \
1845
14.8k
      {                                                                       \
1846
14.8k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
14.8k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
14.8k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
14.8k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
14.8k
        else                                                                  \
1854
14.8k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
14.8k
      }                                                                       \
1856
14.8k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
14.8k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
14.8k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
14.8k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
14.8k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
14.8k
    _ent = obj->tio.entity                                                    \
1876
14.8k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
14.8k
    if (!_ent)                                                                \
1878
14.8k
      return DWG_ERR_OUTOFMEM;                                                \
1879
14.8k
    _ent->tio.token                                                           \
1880
14.8k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
14.8k
    if (!_ent->tio.token)                                                     \
1882
14.8k
      return DWG_ERR_OUTOFMEM;                                                \
1883
14.8k
    _ent->dwg = obj->parent;                                                  \
1884
14.8k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
14.8k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
14.8k
    return 0;                                                                 \
1887
14.8k
  }                                                                           \
dwg_setup_POLYLINE_MESH
Line
Count
Source
1826
24.8k
  {                                                                           \
1827
24.8k
    Dwg_Object_Entity *_ent;                                                  \
1828
24.8k
    Dwg_Entity_##token *_obj;                                                 \
1829
24.8k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
24.8k
        && obj->parent->header.version < R_13b1)                              \
1831
24.8k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
24.8k
    else                                                                      \
1833
24.8k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
24.8k
    obj->parent->num_entities++;                                              \
1835
24.8k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
24.8k
    if (!(int)obj->fixedtype)                                                 \
1837
24.8k
      {                                                                       \
1838
24.8k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
24.8k
      }                                                                       \
1840
24.8k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
24.8k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
24.8k
    if (!obj->dxfname)                                                        \
1845
24.8k
      {                                                                       \
1846
24.8k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
24.8k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
24.8k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
24.8k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
24.8k
        else                                                                  \
1854
24.8k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
24.8k
      }                                                                       \
1856
24.8k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
24.8k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
24.8k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
24.8k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
24.8k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
24.8k
    _ent = obj->tio.entity                                                    \
1876
24.8k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
24.8k
    if (!_ent)                                                                \
1878
24.8k
      return DWG_ERR_OUTOFMEM;                                                \
1879
24.8k
    _ent->tio.token                                                           \
1880
24.8k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
24.8k
    if (!_ent->tio.token)                                                     \
1882
24.8k
      return DWG_ERR_OUTOFMEM;                                                \
1883
24.8k
    _ent->dwg = obj->parent;                                                  \
1884
24.8k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
24.8k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
24.8k
    return 0;                                                                 \
1887
24.8k
  }                                                                           \
dwg_setup_SOLID
Line
Count
Source
1826
25.1k
  {                                                                           \
1827
25.1k
    Dwg_Object_Entity *_ent;                                                  \
1828
25.1k
    Dwg_Entity_##token *_obj;                                                 \
1829
25.1k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
25.1k
        && obj->parent->header.version < R_13b1)                              \
1831
25.1k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
25.1k
    else                                                                      \
1833
25.1k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
25.1k
    obj->parent->num_entities++;                                              \
1835
25.1k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
25.1k
    if (!(int)obj->fixedtype)                                                 \
1837
25.1k
      {                                                                       \
1838
25.1k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
25.1k
      }                                                                       \
1840
25.1k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
25.1k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
25.1k
    if (!obj->dxfname)                                                        \
1845
25.1k
      {                                                                       \
1846
25.1k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
25.1k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
25.1k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
25.1k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
25.1k
        else                                                                  \
1854
25.1k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
25.1k
      }                                                                       \
1856
25.1k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
25.1k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
25.1k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
25.1k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
25.1k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
25.1k
    _ent = obj->tio.entity                                                    \
1876
25.1k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
25.1k
    if (!_ent)                                                                \
1878
25.1k
      return DWG_ERR_OUTOFMEM;                                                \
1879
25.1k
    _ent->tio.token                                                           \
1880
25.1k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
25.1k
    if (!_ent->tio.token)                                                     \
1882
25.1k
      return DWG_ERR_OUTOFMEM;                                                \
1883
25.1k
    _ent->dwg = obj->parent;                                                  \
1884
25.1k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
25.1k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
25.1k
    return 0;                                                                 \
1887
25.1k
  }                                                                           \
dwg_setup_TRACE
Line
Count
Source
1826
38.1k
  {                                                                           \
1827
38.1k
    Dwg_Object_Entity *_ent;                                                  \
1828
38.1k
    Dwg_Entity_##token *_obj;                                                 \
1829
38.1k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
38.1k
        && obj->parent->header.version < R_13b1)                              \
1831
38.1k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
38.1k
    else                                                                      \
1833
38.1k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
38.1k
    obj->parent->num_entities++;                                              \
1835
38.1k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
38.1k
    if (!(int)obj->fixedtype)                                                 \
1837
38.1k
      {                                                                       \
1838
38.1k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
38.1k
      }                                                                       \
1840
38.1k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
38.1k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
38.1k
    if (!obj->dxfname)                                                        \
1845
38.1k
      {                                                                       \
1846
38.1k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
38.1k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
38.1k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
38.1k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
38.1k
        else                                                                  \
1854
38.1k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
38.1k
      }                                                                       \
1856
38.1k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
38.1k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
38.1k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
38.1k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
38.1k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
38.1k
    _ent = obj->tio.entity                                                    \
1876
38.1k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
38.1k
    if (!_ent)                                                                \
1878
38.1k
      return DWG_ERR_OUTOFMEM;                                                \
1879
38.1k
    _ent->tio.token                                                           \
1880
38.1k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
38.1k
    if (!_ent->tio.token)                                                     \
1882
38.1k
      return DWG_ERR_OUTOFMEM;                                                \
1883
38.1k
    _ent->dwg = obj->parent;                                                  \
1884
38.1k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
38.1k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
38.1k
    return 0;                                                                 \
1887
38.1k
  }                                                                           \
dwg_setup_SHAPE
Line
Count
Source
1826
20.4k
  {                                                                           \
1827
20.4k
    Dwg_Object_Entity *_ent;                                                  \
1828
20.4k
    Dwg_Entity_##token *_obj;                                                 \
1829
20.4k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
20.4k
        && obj->parent->header.version < R_13b1)                              \
1831
20.4k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
20.4k
    else                                                                      \
1833
20.4k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
20.4k
    obj->parent->num_entities++;                                              \
1835
20.4k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
20.4k
    if (!(int)obj->fixedtype)                                                 \
1837
20.4k
      {                                                                       \
1838
20.4k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
20.4k
      }                                                                       \
1840
20.4k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
20.4k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
20.4k
    if (!obj->dxfname)                                                        \
1845
20.4k
      {                                                                       \
1846
20.4k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
20.4k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
20.4k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
20.4k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
20.4k
        else                                                                  \
1854
20.4k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
20.4k
      }                                                                       \
1856
20.4k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
20.4k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
20.4k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
20.4k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
20.4k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
20.4k
    _ent = obj->tio.entity                                                    \
1876
20.4k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
20.4k
    if (!_ent)                                                                \
1878
20.4k
      return DWG_ERR_OUTOFMEM;                                                \
1879
20.4k
    _ent->tio.token                                                           \
1880
20.4k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
20.4k
    if (!_ent->tio.token)                                                     \
1882
20.4k
      return DWG_ERR_OUTOFMEM;                                                \
1883
20.4k
    _ent->dwg = obj->parent;                                                  \
1884
20.4k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
20.4k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
20.4k
    return 0;                                                                 \
1887
20.4k
  }                                                                           \
dwg_setup_VIEWPORT
Line
Count
Source
1826
16.2k
  {                                                                           \
1827
16.2k
    Dwg_Object_Entity *_ent;                                                  \
1828
16.2k
    Dwg_Entity_##token *_obj;                                                 \
1829
16.2k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
16.2k
        && obj->parent->header.version < R_13b1)                              \
1831
16.2k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
16.2k
    else                                                                      \
1833
16.2k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
16.2k
    obj->parent->num_entities++;                                              \
1835
16.2k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
16.2k
    if (!(int)obj->fixedtype)                                                 \
1837
16.2k
      {                                                                       \
1838
16.2k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
16.2k
      }                                                                       \
1840
16.2k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
16.2k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
16.2k
    if (!obj->dxfname)                                                        \
1845
16.2k
      {                                                                       \
1846
16.2k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
16.2k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
16.2k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
16.2k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
16.2k
        else                                                                  \
1854
16.2k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
16.2k
      }                                                                       \
1856
16.2k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
16.2k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
16.2k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
16.2k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
16.2k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
16.2k
    _ent = obj->tio.entity                                                    \
1876
16.2k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
16.2k
    if (!_ent)                                                                \
1878
16.2k
      return DWG_ERR_OUTOFMEM;                                                \
1879
16.2k
    _ent->tio.token                                                           \
1880
16.2k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
16.2k
    if (!_ent->tio.token)                                                     \
1882
16.2k
      return DWG_ERR_OUTOFMEM;                                                \
1883
16.2k
    _ent->dwg = obj->parent;                                                  \
1884
16.2k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
16.2k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
16.2k
    return 0;                                                                 \
1887
16.2k
  }                                                                           \
dwg_setup_ELLIPSE
Line
Count
Source
1826
3.52k
  {                                                                           \
1827
3.52k
    Dwg_Object_Entity *_ent;                                                  \
1828
3.52k
    Dwg_Entity_##token *_obj;                                                 \
1829
3.52k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
3.52k
        && obj->parent->header.version < R_13b1)                              \
1831
3.52k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
3.52k
    else                                                                      \
1833
3.52k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
3.52k
    obj->parent->num_entities++;                                              \
1835
3.52k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
3.52k
    if (!(int)obj->fixedtype)                                                 \
1837
3.52k
      {                                                                       \
1838
3.52k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
3.52k
      }                                                                       \
1840
3.52k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
3.52k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
3.52k
    if (!obj->dxfname)                                                        \
1845
3.52k
      {                                                                       \
1846
3.52k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
3.52k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
3.52k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
3.52k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
3.52k
        else                                                                  \
1854
3.52k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
3.52k
      }                                                                       \
1856
3.52k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
3.52k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
3.52k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
3.52k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
3.52k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
3.52k
    _ent = obj->tio.entity                                                    \
1876
3.52k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
3.52k
    if (!_ent)                                                                \
1878
3.52k
      return DWG_ERR_OUTOFMEM;                                                \
1879
3.52k
    _ent->tio.token                                                           \
1880
3.52k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
3.52k
    if (!_ent->tio.token)                                                     \
1882
3.52k
      return DWG_ERR_OUTOFMEM;                                                \
1883
3.52k
    _ent->dwg = obj->parent;                                                  \
1884
3.52k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
3.52k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
3.52k
    return 0;                                                                 \
1887
3.52k
  }                                                                           \
dwg_setup_SPLINE
Line
Count
Source
1826
21.6k
  {                                                                           \
1827
21.6k
    Dwg_Object_Entity *_ent;                                                  \
1828
21.6k
    Dwg_Entity_##token *_obj;                                                 \
1829
21.6k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
21.6k
        && obj->parent->header.version < R_13b1)                              \
1831
21.6k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
21.6k
    else                                                                      \
1833
21.6k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
21.6k
    obj->parent->num_entities++;                                              \
1835
21.6k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
21.6k
    if (!(int)obj->fixedtype)                                                 \
1837
21.6k
      {                                                                       \
1838
21.6k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
21.6k
      }                                                                       \
1840
21.6k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
21.6k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
21.6k
    if (!obj->dxfname)                                                        \
1845
21.6k
      {                                                                       \
1846
21.6k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
21.6k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
21.6k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
21.6k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
21.6k
        else                                                                  \
1854
21.6k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
21.6k
      }                                                                       \
1856
21.6k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
21.6k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
21.6k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
21.6k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
21.6k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
21.6k
    _ent = obj->tio.entity                                                    \
1876
21.6k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
21.6k
    if (!_ent)                                                                \
1878
21.6k
      return DWG_ERR_OUTOFMEM;                                                \
1879
21.6k
    _ent->tio.token                                                           \
1880
21.6k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
21.6k
    if (!_ent->tio.token)                                                     \
1882
21.6k
      return DWG_ERR_OUTOFMEM;                                                \
1883
21.6k
    _ent->dwg = obj->parent;                                                  \
1884
21.6k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
21.6k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
21.6k
    return 0;                                                                 \
1887
21.6k
  }                                                                           \
dwg_setup_REGION
Line
Count
Source
1826
42.5k
  {                                                                           \
1827
42.5k
    Dwg_Object_Entity *_ent;                                                  \
1828
42.5k
    Dwg_Entity_##token *_obj;                                                 \
1829
42.5k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
42.5k
        && obj->parent->header.version < R_13b1)                              \
1831
42.5k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
42.5k
    else                                                                      \
1833
42.5k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
42.5k
    obj->parent->num_entities++;                                              \
1835
42.5k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
42.5k
    if (!(int)obj->fixedtype)                                                 \
1837
42.5k
      {                                                                       \
1838
42.5k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
42.5k
      }                                                                       \
1840
42.5k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
42.5k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
42.5k
    if (!obj->dxfname)                                                        \
1845
42.5k
      {                                                                       \
1846
42.5k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
42.5k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
42.5k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
42.5k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
42.5k
        else                                                                  \
1854
42.5k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
42.5k
      }                                                                       \
1856
42.5k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
42.5k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
42.5k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
42.5k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
42.5k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
42.5k
    _ent = obj->tio.entity                                                    \
1876
42.5k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
42.5k
    if (!_ent)                                                                \
1878
42.5k
      return DWG_ERR_OUTOFMEM;                                                \
1879
42.5k
    _ent->tio.token                                                           \
1880
42.5k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
42.5k
    if (!_ent->tio.token)                                                     \
1882
42.5k
      return DWG_ERR_OUTOFMEM;                                                \
1883
42.5k
    _ent->dwg = obj->parent;                                                  \
1884
42.5k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
42.5k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
42.5k
    return 0;                                                                 \
1887
42.5k
  }                                                                           \
dwg_setup__3DSOLID
Line
Count
Source
1826
9.64k
  {                                                                           \
1827
9.64k
    Dwg_Object_Entity *_ent;                                                  \
1828
9.64k
    Dwg_Entity_##token *_obj;                                                 \
1829
9.64k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
9.64k
        && obj->parent->header.version < R_13b1)                              \
1831
9.64k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
9.64k
    else                                                                      \
1833
9.64k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
9.64k
    obj->parent->num_entities++;                                              \
1835
9.64k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
9.64k
    if (!(int)obj->fixedtype)                                                 \
1837
9.64k
      {                                                                       \
1838
9.64k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
9.64k
      }                                                                       \
1840
9.64k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
9.64k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
9.64k
    if (!obj->dxfname)                                                        \
1845
9.64k
      {                                                                       \
1846
9.64k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
9.64k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
9.64k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
0
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
0
        else                                                                  \
1854
0
          obj->name = obj->dxfname = (char *)#token;                          \
1855
9.64k
      }                                                                       \
1856
9.64k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
9.64k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
9.64k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
9.64k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
9.64k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
9.64k
    _ent = obj->tio.entity                                                    \
1876
9.64k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
9.64k
    if (!_ent)                                                                \
1878
9.64k
      return DWG_ERR_OUTOFMEM;                                                \
1879
9.64k
    _ent->tio.token                                                           \
1880
9.64k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
9.64k
    if (!_ent->tio.token)                                                     \
1882
9.64k
      return DWG_ERR_OUTOFMEM;                                                \
1883
9.64k
    _ent->dwg = obj->parent;                                                  \
1884
9.64k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
9.64k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
9.64k
    return 0;                                                                 \
1887
9.64k
  }                                                                           \
dwg_setup_BODY
Line
Count
Source
1826
10.3k
  {                                                                           \
1827
10.3k
    Dwg_Object_Entity *_ent;                                                  \
1828
10.3k
    Dwg_Entity_##token *_obj;                                                 \
1829
10.3k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
10.3k
        && obj->parent->header.version < R_13b1)                              \
1831
10.3k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
10.3k
    else                                                                      \
1833
10.3k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
10.3k
    obj->parent->num_entities++;                                              \
1835
10.3k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
10.3k
    if (!(int)obj->fixedtype)                                                 \
1837
10.3k
      {                                                                       \
1838
10.3k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
10.3k
      }                                                                       \
1840
10.3k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
10.3k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
10.3k
    if (!obj->dxfname)                                                        \
1845
10.3k
      {                                                                       \
1846
10.3k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
10.3k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
10.3k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
10.3k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
10.3k
        else                                                                  \
1854
10.3k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
10.3k
      }                                                                       \
1856
10.3k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
10.3k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
10.3k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
10.3k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
10.3k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
10.3k
    _ent = obj->tio.entity                                                    \
1876
10.3k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
10.3k
    if (!_ent)                                                                \
1878
10.3k
      return DWG_ERR_OUTOFMEM;                                                \
1879
10.3k
    _ent->tio.token                                                           \
1880
10.3k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
10.3k
    if (!_ent->tio.token)                                                     \
1882
10.3k
      return DWG_ERR_OUTOFMEM;                                                \
1883
10.3k
    _ent->dwg = obj->parent;                                                  \
1884
10.3k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
10.3k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
10.3k
    return 0;                                                                 \
1887
10.3k
  }                                                                           \
dwg_setup_RAY
Line
Count
Source
1826
9.79k
  {                                                                           \
1827
9.79k
    Dwg_Object_Entity *_ent;                                                  \
1828
9.79k
    Dwg_Entity_##token *_obj;                                                 \
1829
9.79k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
9.79k
        && obj->parent->header.version < R_13b1)                              \
1831
9.79k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
9.79k
    else                                                                      \
1833
9.79k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
9.79k
    obj->parent->num_entities++;                                              \
1835
9.79k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
9.79k
    if (!(int)obj->fixedtype)                                                 \
1837
9.79k
      {                                                                       \
1838
9.79k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
9.79k
      }                                                                       \
1840
9.79k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
9.79k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
9.79k
    if (!obj->dxfname)                                                        \
1845
9.79k
      {                                                                       \
1846
9.79k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
9.79k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
9.79k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
9.79k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
9.79k
        else                                                                  \
1854
9.79k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
9.79k
      }                                                                       \
1856
9.79k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
9.79k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
9.79k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
9.79k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
9.79k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
9.79k
    _ent = obj->tio.entity                                                    \
1876
9.79k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
9.79k
    if (!_ent)                                                                \
1878
9.79k
      return DWG_ERR_OUTOFMEM;                                                \
1879
9.79k
    _ent->tio.token                                                           \
1880
9.79k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
9.79k
    if (!_ent->tio.token)                                                     \
1882
9.79k
      return DWG_ERR_OUTOFMEM;                                                \
1883
9.79k
    _ent->dwg = obj->parent;                                                  \
1884
9.79k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
9.79k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
9.79k
    return 0;                                                                 \
1887
9.79k
  }                                                                           \
dwg_setup_XLINE
Line
Count
Source
1826
4.36k
  {                                                                           \
1827
4.36k
    Dwg_Object_Entity *_ent;                                                  \
1828
4.36k
    Dwg_Entity_##token *_obj;                                                 \
1829
4.36k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
4.36k
        && obj->parent->header.version < R_13b1)                              \
1831
4.36k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
4.36k
    else                                                                      \
1833
4.36k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
4.36k
    obj->parent->num_entities++;                                              \
1835
4.36k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
4.36k
    if (!(int)obj->fixedtype)                                                 \
1837
4.36k
      {                                                                       \
1838
4.36k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
4.36k
      }                                                                       \
1840
4.36k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
4.36k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
4.36k
    if (!obj->dxfname)                                                        \
1845
4.36k
      {                                                                       \
1846
4.36k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
4.36k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
4.36k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
4.36k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
4.36k
        else                                                                  \
1854
4.36k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
4.36k
      }                                                                       \
1856
4.36k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
4.36k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
4.36k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
4.36k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
4.36k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
4.36k
    _ent = obj->tio.entity                                                    \
1876
4.36k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
4.36k
    if (!_ent)                                                                \
1878
4.36k
      return DWG_ERR_OUTOFMEM;                                                \
1879
4.36k
    _ent->tio.token                                                           \
1880
4.36k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
4.36k
    if (!_ent->tio.token)                                                     \
1882
4.36k
      return DWG_ERR_OUTOFMEM;                                                \
1883
4.36k
    _ent->dwg = obj->parent;                                                  \
1884
4.36k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
4.36k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
4.36k
    return 0;                                                                 \
1887
4.36k
  }                                                                           \
dwg_setup_OLEFRAME
Line
Count
Source
1826
682
  {                                                                           \
1827
682
    Dwg_Object_Entity *_ent;                                                  \
1828
682
    Dwg_Entity_##token *_obj;                                                 \
1829
682
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
682
        && obj->parent->header.version < R_13b1)                              \
1831
682
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
682
    else                                                                      \
1833
682
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
682
    obj->parent->num_entities++;                                              \
1835
682
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
682
    if (!(int)obj->fixedtype)                                                 \
1837
682
      {                                                                       \
1838
682
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
682
      }                                                                       \
1840
682
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
682
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
682
    if (!obj->dxfname)                                                        \
1845
682
      {                                                                       \
1846
682
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
682
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
682
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
682
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
682
        else                                                                  \
1854
682
          obj->name = obj->dxfname = (char *)#token;                          \
1855
682
      }                                                                       \
1856
682
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
682
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
682
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
682
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
682
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
682
    _ent = obj->tio.entity                                                    \
1876
682
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
682
    if (!_ent)                                                                \
1878
682
      return DWG_ERR_OUTOFMEM;                                                \
1879
682
    _ent->tio.token                                                           \
1880
682
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
682
    if (!_ent->tio.token)                                                     \
1882
682
      return DWG_ERR_OUTOFMEM;                                                \
1883
682
    _ent->dwg = obj->parent;                                                  \
1884
682
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
682
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
682
    return 0;                                                                 \
1887
682
  }                                                                           \
dwg_setup_MTEXT
Line
Count
Source
1826
7.59k
  {                                                                           \
1827
7.59k
    Dwg_Object_Entity *_ent;                                                  \
1828
7.59k
    Dwg_Entity_##token *_obj;                                                 \
1829
7.59k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
7.59k
        && obj->parent->header.version < R_13b1)                              \
1831
7.59k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
7.59k
    else                                                                      \
1833
7.59k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
7.59k
    obj->parent->num_entities++;                                              \
1835
7.59k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
7.59k
    if (!(int)obj->fixedtype)                                                 \
1837
7.59k
      {                                                                       \
1838
7.59k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
7.59k
      }                                                                       \
1840
7.59k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
7.59k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
7.59k
    if (!obj->dxfname)                                                        \
1845
7.59k
      {                                                                       \
1846
7.59k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
7.59k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
7.59k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
7.59k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
7.59k
        else                                                                  \
1854
7.59k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
7.59k
      }                                                                       \
1856
7.59k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
7.59k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
7.59k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
7.59k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
7.59k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
7.59k
    _ent = obj->tio.entity                                                    \
1876
7.59k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
7.59k
    if (!_ent)                                                                \
1878
7.59k
      return DWG_ERR_OUTOFMEM;                                                \
1879
7.59k
    _ent->tio.token                                                           \
1880
7.59k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
7.59k
    if (!_ent->tio.token)                                                     \
1882
7.59k
      return DWG_ERR_OUTOFMEM;                                                \
1883
7.59k
    _ent->dwg = obj->parent;                                                  \
1884
7.59k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
7.59k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
7.59k
    return 0;                                                                 \
1887
7.59k
  }                                                                           \
dwg_setup_LEADER
Line
Count
Source
1826
14.2k
  {                                                                           \
1827
14.2k
    Dwg_Object_Entity *_ent;                                                  \
1828
14.2k
    Dwg_Entity_##token *_obj;                                                 \
1829
14.2k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
14.2k
        && obj->parent->header.version < R_13b1)                              \
1831
14.2k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
14.2k
    else                                                                      \
1833
14.2k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
14.2k
    obj->parent->num_entities++;                                              \
1835
14.2k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
14.2k
    if (!(int)obj->fixedtype)                                                 \
1837
14.2k
      {                                                                       \
1838
14.2k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
14.2k
      }                                                                       \
1840
14.2k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
14.2k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
14.2k
    if (!obj->dxfname)                                                        \
1845
14.2k
      {                                                                       \
1846
14.2k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
14.2k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
14.2k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
14.2k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
14.2k
        else                                                                  \
1854
14.2k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
14.2k
      }                                                                       \
1856
14.2k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
14.2k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
14.2k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
14.2k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
14.2k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
14.2k
    _ent = obj->tio.entity                                                    \
1876
14.2k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
14.2k
    if (!_ent)                                                                \
1878
14.2k
      return DWG_ERR_OUTOFMEM;                                                \
1879
14.2k
    _ent->tio.token                                                           \
1880
14.2k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
14.2k
    if (!_ent->tio.token)                                                     \
1882
14.2k
      return DWG_ERR_OUTOFMEM;                                                \
1883
14.2k
    _ent->dwg = obj->parent;                                                  \
1884
14.2k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
14.2k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
14.2k
    return 0;                                                                 \
1887
14.2k
  }                                                                           \
dwg_setup_TOLERANCE
Line
Count
Source
1826
1.37k
  {                                                                           \
1827
1.37k
    Dwg_Object_Entity *_ent;                                                  \
1828
1.37k
    Dwg_Entity_##token *_obj;                                                 \
1829
1.37k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
1.37k
        && obj->parent->header.version < R_13b1)                              \
1831
1.37k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
1.37k
    else                                                                      \
1833
1.37k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
1.37k
    obj->parent->num_entities++;                                              \
1835
1.37k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
1.37k
    if (!(int)obj->fixedtype)                                                 \
1837
1.37k
      {                                                                       \
1838
1.37k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
1.37k
      }                                                                       \
1840
1.37k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
1.37k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
1.37k
    if (!obj->dxfname)                                                        \
1845
1.37k
      {                                                                       \
1846
1.37k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
1.37k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
1.37k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
1.37k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
1.37k
        else                                                                  \
1854
1.37k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
1.37k
      }                                                                       \
1856
1.37k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
1.37k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
1.37k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
1.37k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
1.37k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
1.37k
    _ent = obj->tio.entity                                                    \
1876
1.37k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
1.37k
    if (!_ent)                                                                \
1878
1.37k
      return DWG_ERR_OUTOFMEM;                                                \
1879
1.37k
    _ent->tio.token                                                           \
1880
1.37k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
1.37k
    if (!_ent->tio.token)                                                     \
1882
1.37k
      return DWG_ERR_OUTOFMEM;                                                \
1883
1.37k
    _ent->dwg = obj->parent;                                                  \
1884
1.37k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
1.37k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
1.37k
    return 0;                                                                 \
1887
1.37k
  }                                                                           \
dwg_setup_MLINE
Line
Count
Source
1826
5.23k
  {                                                                           \
1827
5.23k
    Dwg_Object_Entity *_ent;                                                  \
1828
5.23k
    Dwg_Entity_##token *_obj;                                                 \
1829
5.23k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
5.23k
        && obj->parent->header.version < R_13b1)                              \
1831
5.23k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
5.23k
    else                                                                      \
1833
5.23k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
5.23k
    obj->parent->num_entities++;                                              \
1835
5.23k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
5.23k
    if (!(int)obj->fixedtype)                                                 \
1837
5.23k
      {                                                                       \
1838
5.23k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
5.23k
      }                                                                       \
1840
5.23k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
5.23k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
5.23k
    if (!obj->dxfname)                                                        \
1845
5.23k
      {                                                                       \
1846
5.23k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
5.23k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
5.23k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
5.23k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
5.23k
        else                                                                  \
1854
5.23k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
5.23k
      }                                                                       \
1856
5.23k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
5.23k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
5.23k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
5.23k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
5.23k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
5.23k
    _ent = obj->tio.entity                                                    \
1876
5.23k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
5.23k
    if (!_ent)                                                                \
1878
5.23k
      return DWG_ERR_OUTOFMEM;                                                \
1879
5.23k
    _ent->tio.token                                                           \
1880
5.23k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
5.23k
    if (!_ent->tio.token)                                                     \
1882
5.23k
      return DWG_ERR_OUTOFMEM;                                                \
1883
5.23k
    _ent->dwg = obj->parent;                                                  \
1884
5.23k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
5.23k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
5.23k
    return 0;                                                                 \
1887
5.23k
  }                                                                           \
dwg_setup_HATCH
Line
Count
Source
1826
10.4k
  {                                                                           \
1827
10.4k
    Dwg_Object_Entity *_ent;                                                  \
1828
10.4k
    Dwg_Entity_##token *_obj;                                                 \
1829
10.4k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
10.4k
        && obj->parent->header.version < R_13b1)                              \
1831
10.4k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
10.4k
    else                                                                      \
1833
10.4k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
10.4k
    obj->parent->num_entities++;                                              \
1835
10.4k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
10.4k
    if (!(int)obj->fixedtype)                                                 \
1837
10.4k
      {                                                                       \
1838
10.4k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
10.4k
      }                                                                       \
1840
10.4k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
10.4k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
10.4k
    if (!obj->dxfname)                                                        \
1845
10.4k
      {                                                                       \
1846
10.4k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
10.4k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
10.4k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
10.4k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
10.4k
        else                                                                  \
1854
10.4k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
10.4k
      }                                                                       \
1856
10.4k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
10.4k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
10.4k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
10.4k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
10.4k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
10.4k
    _ent = obj->tio.entity                                                    \
1876
10.4k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
10.4k
    if (!_ent)                                                                \
1878
10.4k
      return DWG_ERR_OUTOFMEM;                                                \
1879
10.4k
    _ent->tio.token                                                           \
1880
10.4k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
10.4k
    if (!_ent->tio.token)                                                     \
1882
10.4k
      return DWG_ERR_OUTOFMEM;                                                \
1883
10.4k
    _ent->dwg = obj->parent;                                                  \
1884
10.4k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
10.4k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
10.4k
    return 0;                                                                 \
1887
10.4k
  }                                                                           \
Unexecuted instantiation: dwg_setup_IMAGE
dwg_setup_LWPOLYLINE
Line
Count
Source
1826
28.5k
  {                                                                           \
1827
28.5k
    Dwg_Object_Entity *_ent;                                                  \
1828
28.5k
    Dwg_Entity_##token *_obj;                                                 \
1829
28.5k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
28.5k
        && obj->parent->header.version < R_13b1)                              \
1831
28.5k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
28.5k
    else                                                                      \
1833
28.5k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
28.5k
    obj->parent->num_entities++;                                              \
1835
28.5k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
28.5k
    if (!(int)obj->fixedtype)                                                 \
1837
28.5k
      {                                                                       \
1838
28.5k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
28.5k
      }                                                                       \
1840
28.5k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
28.5k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
28.5k
    if (!obj->dxfname)                                                        \
1845
28.5k
      {                                                                       \
1846
28.5k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
28.5k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
28.5k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
28.5k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
28.5k
        else                                                                  \
1854
28.5k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
28.5k
      }                                                                       \
1856
28.5k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
28.5k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
28.5k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
28.5k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
28.5k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
28.5k
    _ent = obj->tio.entity                                                    \
1876
28.5k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
28.5k
    if (!_ent)                                                                \
1878
28.5k
      return DWG_ERR_OUTOFMEM;                                                \
1879
28.5k
    _ent->tio.token                                                           \
1880
28.5k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
28.5k
    if (!_ent->tio.token)                                                     \
1882
28.5k
      return DWG_ERR_OUTOFMEM;                                                \
1883
28.5k
    _ent->dwg = obj->parent;                                                  \
1884
28.5k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
28.5k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
28.5k
    return 0;                                                                 \
1887
28.5k
  }                                                                           \
dwg_setup_OLE2FRAME
Line
Count
Source
1826
1.95k
  {                                                                           \
1827
1.95k
    Dwg_Object_Entity *_ent;                                                  \
1828
1.95k
    Dwg_Entity_##token *_obj;                                                 \
1829
1.95k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
1.95k
        && obj->parent->header.version < R_13b1)                              \
1831
1.95k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
1.95k
    else                                                                      \
1833
1.95k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
1.95k
    obj->parent->num_entities++;                                              \
1835
1.95k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
1.95k
    if (!(int)obj->fixedtype)                                                 \
1837
1.95k
      {                                                                       \
1838
1.95k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
1.95k
      }                                                                       \
1840
1.95k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
1.95k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
1.95k
    if (!obj->dxfname)                                                        \
1845
1.95k
      {                                                                       \
1846
1.95k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
1.95k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
1.95k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
1.95k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
1.95k
        else                                                                  \
1854
1.95k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
1.95k
      }                                                                       \
1856
1.95k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
1.95k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
1.95k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
1.95k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
1.95k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
1.95k
    _ent = obj->tio.entity                                                    \
1876
1.95k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
1.95k
    if (!_ent)                                                                \
1878
1.95k
      return DWG_ERR_OUTOFMEM;                                                \
1879
1.95k
    _ent->tio.token                                                           \
1880
1.95k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
1.95k
    if (!_ent->tio.token)                                                     \
1882
1.95k
      return DWG_ERR_OUTOFMEM;                                                \
1883
1.95k
    _ent->dwg = obj->parent;                                                  \
1884
1.95k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
1.95k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
1.95k
    return 0;                                                                 \
1887
1.95k
  }                                                                           \
dwg_setup_PROXY_ENTITY
Line
Count
Source
1826
1.38k
  {                                                                           \
1827
1.38k
    Dwg_Object_Entity *_ent;                                                  \
1828
1.38k
    Dwg_Entity_##token *_obj;                                                 \
1829
1.38k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
1.38k
        && obj->parent->header.version < R_13b1)                              \
1831
1.38k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
1.38k
    else                                                                      \
1833
1.38k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
1.38k
    obj->parent->num_entities++;                                              \
1835
1.38k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
1.38k
    if (!(int)obj->fixedtype)                                                 \
1837
1.38k
      {                                                                       \
1838
1.38k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
1.38k
      }                                                                       \
1840
1.38k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
1.38k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
1.38k
    if (!obj->dxfname)                                                        \
1845
1.38k
      {                                                                       \
1846
1.38k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
1.38k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
1.38k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
1.38k
          {                                                                   \
1850
1.38k
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
1.38k
            obj->name = (char *)#token;                                       \
1852
1.38k
          }                                                                   \
1853
1.38k
        else                                                                  \
1854
1.38k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
1.38k
      }                                                                       \
1856
1.38k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
1.38k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
1.38k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
1.38k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
1.38k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
1.38k
    _ent = obj->tio.entity                                                    \
1876
1.38k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
1.38k
    if (!_ent)                                                                \
1878
1.38k
      return DWG_ERR_OUTOFMEM;                                                \
1879
1.38k
    _ent->tio.token                                                           \
1880
1.38k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
1.38k
    if (!_ent->tio.token)                                                     \
1882
1.38k
      return DWG_ERR_OUTOFMEM;                                                \
1883
1.38k
    _ent->dwg = obj->parent;                                                  \
1884
1.38k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
1.38k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
1.38k
    return 0;                                                                 \
1887
1.38k
  }                                                                           \
Unexecuted instantiation: dwg_setup_TABLE
Unexecuted instantiation: dwg_setup_MULTILEADER
Unexecuted instantiation: dwg_setup_WIPEOUT
Unexecuted instantiation: dwg_setup_PDFUNDERLAY
Unexecuted instantiation: dwg_setup_DGNUNDERLAY
Unexecuted instantiation: dwg_setup_DWFUNDERLAY
Unexecuted instantiation: dwg_setup_CAMERA
Unexecuted instantiation: dwg_setup_SECTIONOBJECT
Unexecuted instantiation: dwg_setup_UNKNOWN_ENT
Unexecuted instantiation: dwg_setup_LIGHT
Unexecuted instantiation: dwg_setup_HELIX
Unexecuted instantiation: dwg_setup_MESH
Unexecuted instantiation: dwg_setup_ARC_DIMENSION
Unexecuted instantiation: dwg_setup_PLANESURFACE
Unexecuted instantiation: dwg_setup_LAYOUTPRINTCONFIG
Unexecuted instantiation: dwg_setup_POINTCLOUD
Unexecuted instantiation: dwg_setup_POINTCLOUDEX
dwg_setup_REPEAT
Line
Count
Source
1826
55.3k
  {                                                                           \
1827
55.3k
    Dwg_Object_Entity *_ent;                                                  \
1828
55.3k
    Dwg_Entity_##token *_obj;                                                 \
1829
55.3k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
55.3k
        && obj->parent->header.version < R_13b1)                              \
1831
55.3k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
55.3k
    else                                                                      \
1833
55.3k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
55.3k
    obj->parent->num_entities++;                                              \
1835
55.3k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
55.3k
    if (!(int)obj->fixedtype)                                                 \
1837
55.3k
      {                                                                       \
1838
55.3k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
55.3k
      }                                                                       \
1840
55.3k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
55.3k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
55.3k
    if (!obj->dxfname)                                                        \
1845
55.3k
      {                                                                       \
1846
55.3k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
55.3k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
55.3k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
55.3k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
55.3k
        else                                                                  \
1854
55.3k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
55.3k
      }                                                                       \
1856
55.3k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
55.3k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
55.3k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
55.3k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
55.3k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
55.3k
    _ent = obj->tio.entity                                                    \
1876
55.3k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
55.3k
    if (!_ent)                                                                \
1878
55.3k
      return DWG_ERR_OUTOFMEM;                                                \
1879
55.3k
    _ent->tio.token                                                           \
1880
55.3k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
55.3k
    if (!_ent->tio.token)                                                     \
1882
55.3k
      return DWG_ERR_OUTOFMEM;                                                \
1883
55.3k
    _ent->dwg = obj->parent;                                                  \
1884
55.3k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
55.3k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
55.3k
    return 0;                                                                 \
1887
55.3k
  }                                                                           \
dwg_setup_ENDREP
Line
Count
Source
1826
4.57k
  {                                                                           \
1827
4.57k
    Dwg_Object_Entity *_ent;                                                  \
1828
4.57k
    Dwg_Entity_##token *_obj;                                                 \
1829
4.57k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
4.57k
        && obj->parent->header.version < R_13b1)                              \
1831
4.57k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
4.57k
    else                                                                      \
1833
4.57k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
4.57k
    obj->parent->num_entities++;                                              \
1835
4.57k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
4.57k
    if (!(int)obj->fixedtype)                                                 \
1837
4.57k
      {                                                                       \
1838
4.57k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
4.57k
      }                                                                       \
1840
4.57k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
4.57k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
4.57k
    if (!obj->dxfname)                                                        \
1845
4.57k
      {                                                                       \
1846
4.57k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
4.57k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
4.57k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
4.57k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
4.57k
        else                                                                  \
1854
4.57k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
4.57k
      }                                                                       \
1856
4.57k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
4.57k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
4.57k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
4.57k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
4.57k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
4.57k
    _ent = obj->tio.entity                                                    \
1876
4.57k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
4.57k
    if (!_ent)                                                                \
1878
4.57k
      return DWG_ERR_OUTOFMEM;                                                \
1879
4.57k
    _ent->tio.token                                                           \
1880
4.57k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
4.57k
    if (!_ent->tio.token)                                                     \
1882
4.57k
      return DWG_ERR_OUTOFMEM;                                                \
1883
4.57k
    _ent->dwg = obj->parent;                                                  \
1884
4.57k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
4.57k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
4.57k
    return 0;                                                                 \
1887
4.57k
  }                                                                           \
dwg_setup_LOAD
Line
Count
Source
1826
4.71k
  {                                                                           \
1827
4.71k
    Dwg_Object_Entity *_ent;                                                  \
1828
4.71k
    Dwg_Entity_##token *_obj;                                                 \
1829
4.71k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
4.71k
        && obj->parent->header.version < R_13b1)                              \
1831
4.71k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
4.71k
    else                                                                      \
1833
4.71k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
4.71k
    obj->parent->num_entities++;                                              \
1835
4.71k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
4.71k
    if (!(int)obj->fixedtype)                                                 \
1837
4.71k
      {                                                                       \
1838
4.71k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
4.71k
      }                                                                       \
1840
4.71k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
4.71k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
4.71k
    if (!obj->dxfname)                                                        \
1845
4.71k
      {                                                                       \
1846
4.71k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
4.71k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
4.71k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
4.71k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
4.71k
        else                                                                  \
1854
4.71k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
4.71k
      }                                                                       \
1856
4.71k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
4.71k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
4.71k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
4.71k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
4.71k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
4.71k
    _ent = obj->tio.entity                                                    \
1876
4.71k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
4.71k
    if (!_ent)                                                                \
1878
4.71k
      return DWG_ERR_OUTOFMEM;                                                \
1879
4.71k
    _ent->tio.token                                                           \
1880
4.71k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
4.71k
    if (!_ent->tio.token)                                                     \
1882
4.71k
      return DWG_ERR_OUTOFMEM;                                                \
1883
4.71k
    _ent->dwg = obj->parent;                                                  \
1884
4.71k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
4.71k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
4.71k
    return 0;                                                                 \
1887
4.71k
  }                                                                           \
dwg_setup_JUMP
Line
Count
Source
1826
2.42k
  {                                                                           \
1827
2.42k
    Dwg_Object_Entity *_ent;                                                  \
1828
2.42k
    Dwg_Entity_##token *_obj;                                                 \
1829
2.42k
    if (strEQc (#token, "DIMENSION_ANG2LN")                                   \
1830
2.42k
        && obj->parent->header.version < R_13b1)                              \
1831
2.42k
      LOG_INFO ("Add entity DIMENSION [%d] ", obj->index);                    \
1832
2.42k
    else                                                                      \
1833
2.42k
      LOG_INFO ("Add entity " #token " [%d] ", obj->index);                   \
1834
2.42k
    obj->parent->num_entities++;                                              \
1835
2.42k
    obj->supertype = DWG_SUPERTYPE_ENTITY;                                    \
1836
2.42k
    if (!(int)obj->fixedtype)                                                 \
1837
2.42k
      {                                                                       \
1838
2.42k
        obj->fixedtype = DWG_TYPE_##token;                                    \
1839
2.42k
      }                                                                       \
1840
2.42k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1841
2.42k
      {                                                                       \
1842
0
        obj->type = DWG_TYPE_##token;                                         \
1843
0
      }                                                                       \
1844
2.42k
    if (!obj->dxfname)                                                        \
1845
2.42k
      {                                                                       \
1846
2.42k
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1847
2.42k
          obj->name = obj->dxfname = (char *)&#token[1];                      \
1848
2.42k
        else if (strEQc (#token, "PROXY_ENTITY"))                             \
1849
2.42k
          {                                                                   \
1850
0
            obj->dxfname = (char *)"ACAD_PROXY_ENTITY";                       \
1851
0
            obj->name = (char *)#token;                                       \
1852
0
          }                                                                   \
1853
2.42k
        else                                                                  \
1854
2.42k
          obj->name = obj->dxfname = (char *)#token;                          \
1855
2.42k
      }                                                                       \
1856
2.42k
    else if (!obj->name)                                                      \
1857
0
      {                                                                       \
1858
0
        if (strlen (#token) > 3 && !memcmp (#token, "_3D", 3))                \
1859
0
          obj->name = (char *)&#token[1];                                     \
1860
0
        else                                                                  \
1861
0
          obj->name = (char *)#token;                                         \
1862
0
      }                                                                       \
1863
2.42k
    if (strEQc (#token, "UNKNOWN_ENT"))                                       \
1864
2.42k
      {                                                                       \
1865
0
        obj->name = (char *)#token;                                           \
1866
0
        obj->dxfname = (char *)#token;                                        \
1867
0
        obj->fixedtype = DWG_TYPE_UNKNOWN_ENT;                                \
1868
0
      }                                                                       \
1869
2.42k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
1870
2.42k
      {                                                                       \
1871
0
        obj->dxfname = strdup (obj->dxfname);                                 \
1872
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
1873
0
          obj->name = strdup (obj->name);                                     \
1874
0
      }                                                                       \
1875
2.42k
    _ent = obj->tio.entity                                                    \
1876
2.42k
        = (Dwg_Object_Entity *)calloc (1, sizeof (Dwg_Object_Entity));        \
1877
2.42k
    if (!_ent)                                                                \
1878
2.42k
      return DWG_ERR_OUTOFMEM;                                                \
1879
2.42k
    _ent->tio.token                                                           \
1880
2.42k
        = (Dwg_Entity_##token *)calloc (1, sizeof (Dwg_Entity_##token));      \
1881
2.42k
    if (!_ent->tio.token)                                                     \
1882
2.42k
      return DWG_ERR_OUTOFMEM;                                                \
1883
2.42k
    _ent->dwg = obj->parent;                                                  \
1884
2.42k
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1885
2.42k
    _ent->tio.token->parent = obj->tio.entity;                                \
1886
2.42k
    return 0;                                                                 \
1887
2.42k
  }                                                                           \
1888
                                                                              \
1889
  static int dwg_decode_##token##_private (                                   \
1890
      Bit_Chain *dat, Bit_Chain *hdl_dat, Bit_Chain *str_dat,                 \
1891
      Dwg_Object *restrict obj); \
1892
                                                                              \
1893
      /** Call dwg_setup_##token and write the fields from the bitstream dat  \
1894
       * to the entity or object. */                                             \
1895
  DWG_DECODE_FUNC int dwg_decode_##token (Bit_Chain *restrict dat,            \
1896
                                          Dwg_Object *restrict obj)           \
1897
1.29M
  {                                                                           \
1898
1.29M
    int error = dwg_setup_##token (obj);                                      \
1899
1.29M
    Bit_Chain hdl_dat = *dat;                                                 \
1900
1.29M
    if (error)                                                                \
1901
1.29M
      return error;                                                           \
1902
1.29M
    SINCE (R_2007a)                                                           \
1903
1.29M
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
1.29M
    else                                                                      \
1909
1.29M
    {                                                                         \
1910
1.29M
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
1.29M
    }                                                                         \
1912
1.29M
    return error;                                                             \
1913
1.29M
  }                                                                           \
decode.c:dwg_decode_TEXT
Line
Count
Source
1897
68.7k
  {                                                                           \
1898
68.7k
    int error = dwg_setup_##token (obj);                                      \
1899
68.7k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
68.7k
    if (error)                                                                \
1901
68.7k
      return error;                                                           \
1902
68.7k
    SINCE (R_2007a)                                                           \
1903
68.7k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
68.7k
    else                                                                      \
1909
68.7k
    {                                                                         \
1910
68.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
68.7k
    }                                                                         \
1912
68.7k
    return error;                                                             \
1913
68.7k
  }                                                                           \
decode.c:dwg_decode_ATTRIB
Line
Count
Source
1897
40.1k
  {                                                                           \
1898
40.1k
    int error = dwg_setup_##token (obj);                                      \
1899
40.1k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
40.1k
    if (error)                                                                \
1901
40.1k
      return error;                                                           \
1902
40.1k
    SINCE (R_2007a)                                                           \
1903
40.1k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
40.1k
    else                                                                      \
1909
40.1k
    {                                                                         \
1910
40.1k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
40.1k
    }                                                                         \
1912
40.1k
    return error;                                                             \
1913
40.1k
  }                                                                           \
decode.c:dwg_decode_ATTDEF
Line
Count
Source
1897
68.1k
  {                                                                           \
1898
68.1k
    int error = dwg_setup_##token (obj);                                      \
1899
68.1k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
68.1k
    if (error)                                                                \
1901
68.1k
      return error;                                                           \
1902
68.1k
    SINCE (R_2007a)                                                           \
1903
68.1k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
68.1k
    else                                                                      \
1909
68.1k
    {                                                                         \
1910
68.1k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
68.1k
    }                                                                         \
1912
68.1k
    return error;                                                             \
1913
68.1k
  }                                                                           \
decode.c:dwg_decode_BLOCK
Line
Count
Source
1897
33.0k
  {                                                                           \
1898
33.0k
    int error = dwg_setup_##token (obj);                                      \
1899
33.0k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
33.0k
    if (error)                                                                \
1901
33.0k
      return error;                                                           \
1902
33.0k
    SINCE (R_2007a)                                                           \
1903
33.0k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
33.0k
    else                                                                      \
1909
33.0k
    {                                                                         \
1910
33.0k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
33.0k
    }                                                                         \
1912
33.0k
    return error;                                                             \
1913
33.0k
  }                                                                           \
decode.c:dwg_decode_ENDBLK
Line
Count
Source
1897
30.9k
  {                                                                           \
1898
30.9k
    int error = dwg_setup_##token (obj);                                      \
1899
30.9k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
30.9k
    if (error)                                                                \
1901
30.9k
      return error;                                                           \
1902
30.9k
    SINCE (R_2007a)                                                           \
1903
30.9k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
30.9k
    else                                                                      \
1909
30.9k
    {                                                                         \
1910
30.9k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
30.9k
    }                                                                         \
1912
30.9k
    return error;                                                             \
1913
30.9k
  }                                                                           \
decode.c:dwg_decode_SEQEND
Line
Count
Source
1897
8.87k
  {                                                                           \
1898
8.87k
    int error = dwg_setup_##token (obj);                                      \
1899
8.87k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
8.87k
    if (error)                                                                \
1901
8.87k
      return error;                                                           \
1902
8.87k
    SINCE (R_2007a)                                                           \
1903
8.87k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
8.87k
    else                                                                      \
1909
8.87k
    {                                                                         \
1910
8.87k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
8.87k
    }                                                                         \
1912
8.87k
    return error;                                                             \
1913
8.87k
  }                                                                           \
decode.c:dwg_decode_INSERT
Line
Count
Source
1897
28.6k
  {                                                                           \
1898
28.6k
    int error = dwg_setup_##token (obj);                                      \
1899
28.6k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
28.6k
    if (error)                                                                \
1901
28.6k
      return error;                                                           \
1902
28.6k
    SINCE (R_2007a)                                                           \
1903
28.6k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
28.6k
    else                                                                      \
1909
28.6k
    {                                                                         \
1910
28.6k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
28.6k
    }                                                                         \
1912
28.6k
    return error;                                                             \
1913
28.6k
  }                                                                           \
decode.c:dwg_decode_MINSERT
Line
Count
Source
1897
18.1k
  {                                                                           \
1898
18.1k
    int error = dwg_setup_##token (obj);                                      \
1899
18.1k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
18.1k
    if (error)                                                                \
1901
18.1k
      return error;                                                           \
1902
18.1k
    SINCE (R_2007a)                                                           \
1903
18.1k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
18.1k
    else                                                                      \
1909
18.1k
    {                                                                         \
1910
18.1k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
18.1k
    }                                                                         \
1912
18.1k
    return error;                                                             \
1913
18.1k
  }                                                                           \
decode.c:dwg_decode_VERTEX_2D
Line
Count
Source
1897
31.6k
  {                                                                           \
1898
31.6k
    int error = dwg_setup_##token (obj);                                      \
1899
31.6k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
31.6k
    if (error)                                                                \
1901
31.6k
      return error;                                                           \
1902
31.6k
    SINCE (R_2007a)                                                           \
1903
31.6k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
31.6k
    else                                                                      \
1909
31.6k
    {                                                                         \
1910
31.6k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
31.6k
    }                                                                         \
1912
31.6k
    return error;                                                             \
1913
31.6k
  }                                                                           \
decode.c:dwg_decode_VERTEX_3D
Line
Count
Source
1897
6.07k
  {                                                                           \
1898
6.07k
    int error = dwg_setup_##token (obj);                                      \
1899
6.07k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
6.07k
    if (error)                                                                \
1901
6.07k
      return error;                                                           \
1902
6.07k
    SINCE (R_2007a)                                                           \
1903
6.07k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
6.07k
    else                                                                      \
1909
6.07k
    {                                                                         \
1910
6.07k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
6.07k
    }                                                                         \
1912
6.07k
    return error;                                                             \
1913
6.07k
  }                                                                           \
decode.c:dwg_decode_VERTEX_MESH
Line
Count
Source
1897
38.3k
  {                                                                           \
1898
38.3k
    int error = dwg_setup_##token (obj);                                      \
1899
38.3k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
38.3k
    if (error)                                                                \
1901
38.3k
      return error;                                                           \
1902
38.3k
    SINCE (R_2007a)                                                           \
1903
38.3k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
38.3k
    else                                                                      \
1909
38.3k
    {                                                                         \
1910
38.3k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
38.3k
    }                                                                         \
1912
38.3k
    return error;                                                             \
1913
38.3k
  }                                                                           \
decode.c:dwg_decode_VERTEX_PFACE
Line
Count
Source
1897
29.4k
  {                                                                           \
1898
29.4k
    int error = dwg_setup_##token (obj);                                      \
1899
29.4k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
29.4k
    if (error)                                                                \
1901
29.4k
      return error;                                                           \
1902
29.4k
    SINCE (R_2007a)                                                           \
1903
29.4k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
29.4k
    else                                                                      \
1909
29.4k
    {                                                                         \
1910
29.4k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
29.4k
    }                                                                         \
1912
29.4k
    return error;                                                             \
1913
29.4k
  }                                                                           \
decode.c:dwg_decode_VERTEX_PFACE_FACE
Line
Count
Source
1897
4.81k
  {                                                                           \
1898
4.81k
    int error = dwg_setup_##token (obj);                                      \
1899
4.81k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
4.81k
    if (error)                                                                \
1901
4.81k
      return error;                                                           \
1902
4.81k
    SINCE (R_2007a)                                                           \
1903
4.81k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
4.81k
    else                                                                      \
1909
4.81k
    {                                                                         \
1910
4.81k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
4.81k
    }                                                                         \
1912
4.81k
    return error;                                                             \
1913
4.81k
  }                                                                           \
decode.c:dwg_decode_POLYLINE_2D
Line
Count
Source
1897
30.6k
  {                                                                           \
1898
30.6k
    int error = dwg_setup_##token (obj);                                      \
1899
30.6k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
30.6k
    if (error)                                                                \
1901
30.6k
      return error;                                                           \
1902
30.6k
    SINCE (R_2007a)                                                           \
1903
30.6k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
30.6k
    else                                                                      \
1909
30.6k
    {                                                                         \
1910
30.6k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
30.6k
    }                                                                         \
1912
30.6k
    return error;                                                             \
1913
30.6k
  }                                                                           \
decode.c:dwg_decode_POLYLINE_3D
Line
Count
Source
1897
38.0k
  {                                                                           \
1898
38.0k
    int error = dwg_setup_##token (obj);                                      \
1899
38.0k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
38.0k
    if (error)                                                                \
1901
38.0k
      return error;                                                           \
1902
38.0k
    SINCE (R_2007a)                                                           \
1903
38.0k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
38.0k
    else                                                                      \
1909
38.0k
    {                                                                         \
1910
38.0k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
38.0k
    }                                                                         \
1912
38.0k
    return error;                                                             \
1913
38.0k
  }                                                                           \
decode.c:dwg_decode_ARC
Line
Count
Source
1897
50.7k
  {                                                                           \
1898
50.7k
    int error = dwg_setup_##token (obj);                                      \
1899
50.7k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
50.7k
    if (error)                                                                \
1901
50.7k
      return error;                                                           \
1902
50.7k
    SINCE (R_2007a)                                                           \
1903
50.7k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
50.7k
    else                                                                      \
1909
50.7k
    {                                                                         \
1910
50.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
50.7k
    }                                                                         \
1912
50.7k
    return error;                                                             \
1913
50.7k
  }                                                                           \
decode.c:dwg_decode_CIRCLE
Line
Count
Source
1897
27.6k
  {                                                                           \
1898
27.6k
    int error = dwg_setup_##token (obj);                                      \
1899
27.6k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
27.6k
    if (error)                                                                \
1901
27.6k
      return error;                                                           \
1902
27.6k
    SINCE (R_2007a)                                                           \
1903
27.6k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
27.6k
    else                                                                      \
1909
27.6k
    {                                                                         \
1910
27.6k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
27.6k
    }                                                                         \
1912
27.6k
    return error;                                                             \
1913
27.6k
  }                                                                           \
decode.c:dwg_decode_LINE
Line
Count
Source
1897
62.9k
  {                                                                           \
1898
62.9k
    int error = dwg_setup_##token (obj);                                      \
1899
62.9k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
62.9k
    if (error)                                                                \
1901
62.9k
      return error;                                                           \
1902
62.9k
    SINCE (R_2007a)                                                           \
1903
62.9k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
62.9k
    else                                                                      \
1909
62.9k
    {                                                                         \
1910
62.9k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
62.9k
    }                                                                         \
1912
62.9k
    return error;                                                             \
1913
62.9k
  }                                                                           \
decode.c:dwg_decode_DIMENSION_ORDINATE
Line
Count
Source
1897
38.9k
  {                                                                           \
1898
38.9k
    int error = dwg_setup_##token (obj);                                      \
1899
38.9k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
38.9k
    if (error)                                                                \
1901
38.9k
      return error;                                                           \
1902
38.9k
    SINCE (R_2007a)                                                           \
1903
38.9k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
38.9k
    else                                                                      \
1909
38.9k
    {                                                                         \
1910
38.9k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
38.9k
    }                                                                         \
1912
38.9k
    return error;                                                             \
1913
38.9k
  }                                                                           \
decode.c:dwg_decode_DIMENSION_LINEAR
Line
Count
Source
1897
70.4k
  {                                                                           \
1898
70.4k
    int error = dwg_setup_##token (obj);                                      \
1899
70.4k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
70.4k
    if (error)                                                                \
1901
70.4k
      return error;                                                           \
1902
70.4k
    SINCE (R_2007a)                                                           \
1903
70.4k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
70.4k
    else                                                                      \
1909
70.4k
    {                                                                         \
1910
70.4k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
70.4k
    }                                                                         \
1912
70.4k
    return error;                                                             \
1913
70.4k
  }                                                                           \
decode.c:dwg_decode_DIMENSION_ALIGNED
Line
Count
Source
1897
13.9k
  {                                                                           \
1898
13.9k
    int error = dwg_setup_##token (obj);                                      \
1899
13.9k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
13.9k
    if (error)                                                                \
1901
13.9k
      return error;                                                           \
1902
13.9k
    SINCE (R_2007a)                                                           \
1903
13.9k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
13.9k
    else                                                                      \
1909
13.9k
    {                                                                         \
1910
13.9k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
13.9k
    }                                                                         \
1912
13.9k
    return error;                                                             \
1913
13.9k
  }                                                                           \
decode.c:dwg_decode_DIMENSION_ANG3PT
Line
Count
Source
1897
15.6k
  {                                                                           \
1898
15.6k
    int error = dwg_setup_##token (obj);                                      \
1899
15.6k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
15.6k
    if (error)                                                                \
1901
15.6k
      return error;                                                           \
1902
15.6k
    SINCE (R_2007a)                                                           \
1903
15.6k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
15.6k
    else                                                                      \
1909
15.6k
    {                                                                         \
1910
15.6k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
15.6k
    }                                                                         \
1912
15.6k
    return error;                                                             \
1913
15.6k
  }                                                                           \
decode.c:dwg_decode_DIMENSION_ANG2LN
Line
Count
Source
1897
18.7k
  {                                                                           \
1898
18.7k
    int error = dwg_setup_##token (obj);                                      \
1899
18.7k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
18.7k
    if (error)                                                                \
1901
18.7k
      return error;                                                           \
1902
18.7k
    SINCE (R_2007a)                                                           \
1903
18.7k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
18.7k
    else                                                                      \
1909
18.7k
    {                                                                         \
1910
18.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
18.7k
    }                                                                         \
1912
18.7k
    return error;                                                             \
1913
18.7k
  }                                                                           \
decode.c:dwg_decode_DIMENSION_RADIUS
Line
Count
Source
1897
16.7k
  {                                                                           \
1898
16.7k
    int error = dwg_setup_##token (obj);                                      \
1899
16.7k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
16.7k
    if (error)                                                                \
1901
16.7k
      return error;                                                           \
1902
16.7k
    SINCE (R_2007a)                                                           \
1903
16.7k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
16.7k
    else                                                                      \
1909
16.7k
    {                                                                         \
1910
16.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
16.7k
    }                                                                         \
1912
16.7k
    return error;                                                             \
1913
16.7k
  }                                                                           \
decode.c:dwg_decode_DIMENSION_DIAMETER
Line
Count
Source
1897
5.98k
  {                                                                           \
1898
5.98k
    int error = dwg_setup_##token (obj);                                      \
1899
5.98k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
5.98k
    if (error)                                                                \
1901
5.98k
      return error;                                                           \
1902
5.98k
    SINCE (R_2007a)                                                           \
1903
5.98k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
5.98k
    else                                                                      \
1909
5.98k
    {                                                                         \
1910
5.98k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
5.98k
    }                                                                         \
1912
5.98k
    return error;                                                             \
1913
5.98k
  }                                                                           \
decode.c:dwg_decode_POINT
Line
Count
Source
1897
36.0k
  {                                                                           \
1898
36.0k
    int error = dwg_setup_##token (obj);                                      \
1899
36.0k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
36.0k
    if (error)                                                                \
1901
36.0k
      return error;                                                           \
1902
36.0k
    SINCE (R_2007a)                                                           \
1903
36.0k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
36.0k
    else                                                                      \
1909
36.0k
    {                                                                         \
1910
36.0k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
36.0k
    }                                                                         \
1912
36.0k
    return error;                                                             \
1913
36.0k
  }                                                                           \
decode.c:dwg_decode__3DFACE
Line
Count
Source
1897
49.5k
  {                                                                           \
1898
49.5k
    int error = dwg_setup_##token (obj);                                      \
1899
49.5k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
49.5k
    if (error)                                                                \
1901
49.5k
      return error;                                                           \
1902
49.5k
    SINCE (R_2007a)                                                           \
1903
49.5k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
49.5k
    else                                                                      \
1909
49.5k
    {                                                                         \
1910
49.5k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
49.5k
    }                                                                         \
1912
49.5k
    return error;                                                             \
1913
49.5k
  }                                                                           \
decode.c:dwg_decode_POLYLINE_PFACE
Line
Count
Source
1897
14.8k
  {                                                                           \
1898
14.8k
    int error = dwg_setup_##token (obj);                                      \
1899
14.8k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
14.8k
    if (error)                                                                \
1901
14.8k
      return error;                                                           \
1902
14.8k
    SINCE (R_2007a)                                                           \
1903
14.8k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
14.8k
    else                                                                      \
1909
14.8k
    {                                                                         \
1910
14.8k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
14.8k
    }                                                                         \
1912
14.8k
    return error;                                                             \
1913
14.8k
  }                                                                           \
decode.c:dwg_decode_POLYLINE_MESH
Line
Count
Source
1897
24.8k
  {                                                                           \
1898
24.8k
    int error = dwg_setup_##token (obj);                                      \
1899
24.8k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
24.8k
    if (error)                                                                \
1901
24.8k
      return error;                                                           \
1902
24.8k
    SINCE (R_2007a)                                                           \
1903
24.8k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
24.8k
    else                                                                      \
1909
24.8k
    {                                                                         \
1910
24.8k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
24.8k
    }                                                                         \
1912
24.8k
    return error;                                                             \
1913
24.8k
  }                                                                           \
decode.c:dwg_decode_SOLID
Line
Count
Source
1897
25.1k
  {                                                                           \
1898
25.1k
    int error = dwg_setup_##token (obj);                                      \
1899
25.1k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
25.1k
    if (error)                                                                \
1901
25.1k
      return error;                                                           \
1902
25.1k
    SINCE (R_2007a)                                                           \
1903
25.1k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
25.1k
    else                                                                      \
1909
25.1k
    {                                                                         \
1910
25.1k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
25.1k
    }                                                                         \
1912
25.1k
    return error;                                                             \
1913
25.1k
  }                                                                           \
decode.c:dwg_decode_TRACE
Line
Count
Source
1897
38.1k
  {                                                                           \
1898
38.1k
    int error = dwg_setup_##token (obj);                                      \
1899
38.1k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
38.1k
    if (error)                                                                \
1901
38.1k
      return error;                                                           \
1902
38.1k
    SINCE (R_2007a)                                                           \
1903
38.1k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
38.1k
    else                                                                      \
1909
38.1k
    {                                                                         \
1910
38.1k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
38.1k
    }                                                                         \
1912
38.1k
    return error;                                                             \
1913
38.1k
  }                                                                           \
decode.c:dwg_decode_SHAPE
Line
Count
Source
1897
20.4k
  {                                                                           \
1898
20.4k
    int error = dwg_setup_##token (obj);                                      \
1899
20.4k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
20.4k
    if (error)                                                                \
1901
20.4k
      return error;                                                           \
1902
20.4k
    SINCE (R_2007a)                                                           \
1903
20.4k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
20.4k
    else                                                                      \
1909
20.4k
    {                                                                         \
1910
20.4k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
20.4k
    }                                                                         \
1912
20.4k
    return error;                                                             \
1913
20.4k
  }                                                                           \
decode.c:dwg_decode_VIEWPORT
Line
Count
Source
1897
16.2k
  {                                                                           \
1898
16.2k
    int error = dwg_setup_##token (obj);                                      \
1899
16.2k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
16.2k
    if (error)                                                                \
1901
16.2k
      return error;                                                           \
1902
16.2k
    SINCE (R_2007a)                                                           \
1903
16.2k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
16.2k
    else                                                                      \
1909
16.2k
    {                                                                         \
1910
16.2k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
16.2k
    }                                                                         \
1912
16.2k
    return error;                                                             \
1913
16.2k
  }                                                                           \
decode.c:dwg_decode_ELLIPSE
Line
Count
Source
1897
3.52k
  {                                                                           \
1898
3.52k
    int error = dwg_setup_##token (obj);                                      \
1899
3.52k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
3.52k
    if (error)                                                                \
1901
3.52k
      return error;                                                           \
1902
3.52k
    SINCE (R_2007a)                                                           \
1903
3.52k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
3.52k
    else                                                                      \
1909
3.52k
    {                                                                         \
1910
3.52k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
3.52k
    }                                                                         \
1912
3.52k
    return error;                                                             \
1913
3.52k
  }                                                                           \
decode.c:dwg_decode_SPLINE
Line
Count
Source
1897
21.6k
  {                                                                           \
1898
21.6k
    int error = dwg_setup_##token (obj);                                      \
1899
21.6k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
21.6k
    if (error)                                                                \
1901
21.6k
      return error;                                                           \
1902
21.6k
    SINCE (R_2007a)                                                           \
1903
21.6k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
21.6k
    else                                                                      \
1909
21.6k
    {                                                                         \
1910
21.6k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
21.6k
    }                                                                         \
1912
21.6k
    return error;                                                             \
1913
21.6k
  }                                                                           \
decode.c:dwg_decode_REGION
Line
Count
Source
1897
42.5k
  {                                                                           \
1898
42.5k
    int error = dwg_setup_##token (obj);                                      \
1899
42.5k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
42.5k
    if (error)                                                                \
1901
42.5k
      return error;                                                           \
1902
42.5k
    SINCE (R_2007a)                                                           \
1903
42.5k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
42.5k
    else                                                                      \
1909
42.5k
    {                                                                         \
1910
42.5k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
42.5k
    }                                                                         \
1912
42.5k
    return error;                                                             \
1913
42.5k
  }                                                                           \
decode.c:dwg_decode__3DSOLID
Line
Count
Source
1897
9.64k
  {                                                                           \
1898
9.64k
    int error = dwg_setup_##token (obj);                                      \
1899
9.64k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
9.64k
    if (error)                                                                \
1901
9.64k
      return error;                                                           \
1902
9.64k
    SINCE (R_2007a)                                                           \
1903
9.64k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
9.64k
    else                                                                      \
1909
9.64k
    {                                                                         \
1910
9.64k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
9.64k
    }                                                                         \
1912
9.64k
    return error;                                                             \
1913
9.64k
  }                                                                           \
decode.c:dwg_decode_BODY
Line
Count
Source
1897
10.3k
  {                                                                           \
1898
10.3k
    int error = dwg_setup_##token (obj);                                      \
1899
10.3k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
10.3k
    if (error)                                                                \
1901
10.3k
      return error;                                                           \
1902
10.3k
    SINCE (R_2007a)                                                           \
1903
10.3k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
10.3k
    else                                                                      \
1909
10.3k
    {                                                                         \
1910
10.3k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
10.3k
    }                                                                         \
1912
10.3k
    return error;                                                             \
1913
10.3k
  }                                                                           \
decode.c:dwg_decode_RAY
Line
Count
Source
1897
9.79k
  {                                                                           \
1898
9.79k
    int error = dwg_setup_##token (obj);                                      \
1899
9.79k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
9.79k
    if (error)                                                                \
1901
9.79k
      return error;                                                           \
1902
9.79k
    SINCE (R_2007a)                                                           \
1903
9.79k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
9.79k
    else                                                                      \
1909
9.79k
    {                                                                         \
1910
9.79k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
9.79k
    }                                                                         \
1912
9.79k
    return error;                                                             \
1913
9.79k
  }                                                                           \
decode.c:dwg_decode_XLINE
Line
Count
Source
1897
4.36k
  {                                                                           \
1898
4.36k
    int error = dwg_setup_##token (obj);                                      \
1899
4.36k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
4.36k
    if (error)                                                                \
1901
4.36k
      return error;                                                           \
1902
4.36k
    SINCE (R_2007a)                                                           \
1903
4.36k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
4.36k
    else                                                                      \
1909
4.36k
    {                                                                         \
1910
4.36k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
4.36k
    }                                                                         \
1912
4.36k
    return error;                                                             \
1913
4.36k
  }                                                                           \
decode.c:dwg_decode_MTEXT
Line
Count
Source
1897
7.59k
  {                                                                           \
1898
7.59k
    int error = dwg_setup_##token (obj);                                      \
1899
7.59k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
7.59k
    if (error)                                                                \
1901
7.59k
      return error;                                                           \
1902
7.59k
    SINCE (R_2007a)                                                           \
1903
7.59k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
7.59k
    else                                                                      \
1909
7.59k
    {                                                                         \
1910
7.59k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
7.59k
    }                                                                         \
1912
7.59k
    return error;                                                             \
1913
7.59k
  }                                                                           \
decode.c:dwg_decode_LEADER
Line
Count
Source
1897
14.2k
  {                                                                           \
1898
14.2k
    int error = dwg_setup_##token (obj);                                      \
1899
14.2k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
14.2k
    if (error)                                                                \
1901
14.2k
      return error;                                                           \
1902
14.2k
    SINCE (R_2007a)                                                           \
1903
14.2k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
14.2k
    else                                                                      \
1909
14.2k
    {                                                                         \
1910
14.2k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
14.2k
    }                                                                         \
1912
14.2k
    return error;                                                             \
1913
14.2k
  }                                                                           \
decode.c:dwg_decode_TOLERANCE
Line
Count
Source
1897
1.37k
  {                                                                           \
1898
1.37k
    int error = dwg_setup_##token (obj);                                      \
1899
1.37k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
1.37k
    if (error)                                                                \
1901
1.37k
      return error;                                                           \
1902
1.37k
    SINCE (R_2007a)                                                           \
1903
1.37k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
1.37k
    else                                                                      \
1909
1.37k
    {                                                                         \
1910
1.37k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
1.37k
    }                                                                         \
1912
1.37k
    return error;                                                             \
1913
1.37k
  }                                                                           \
decode.c:dwg_decode_MLINE
Line
Count
Source
1897
5.23k
  {                                                                           \
1898
5.23k
    int error = dwg_setup_##token (obj);                                      \
1899
5.23k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
5.23k
    if (error)                                                                \
1901
5.23k
      return error;                                                           \
1902
5.23k
    SINCE (R_2007a)                                                           \
1903
5.23k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
5.23k
    else                                                                      \
1909
5.23k
    {                                                                         \
1910
5.23k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
5.23k
    }                                                                         \
1912
5.23k
    return error;                                                             \
1913
5.23k
  }                                                                           \
decode.c:dwg_decode_OLE2FRAME
Line
Count
Source
1897
1.95k
  {                                                                           \
1898
1.95k
    int error = dwg_setup_##token (obj);                                      \
1899
1.95k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
1.95k
    if (error)                                                                \
1901
1.95k
      return error;                                                           \
1902
1.95k
    SINCE (R_2007a)                                                           \
1903
1.95k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
1.95k
    else                                                                      \
1909
1.95k
    {                                                                         \
1910
1.95k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
1.95k
    }                                                                         \
1912
1.95k
    return error;                                                             \
1913
1.95k
  }                                                                           \
decode.c:dwg_decode_LWPOLYLINE
Line
Count
Source
1897
28.5k
  {                                                                           \
1898
28.5k
    int error = dwg_setup_##token (obj);                                      \
1899
28.5k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
28.5k
    if (error)                                                                \
1901
28.5k
      return error;                                                           \
1902
28.5k
    SINCE (R_2007a)                                                           \
1903
28.5k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
28.5k
    else                                                                      \
1909
28.5k
    {                                                                         \
1910
28.5k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
28.5k
    }                                                                         \
1912
28.5k
    return error;                                                             \
1913
28.5k
  }                                                                           \
decode.c:dwg_decode_HATCH
Line
Count
Source
1897
10.4k
  {                                                                           \
1898
10.4k
    int error = dwg_setup_##token (obj);                                      \
1899
10.4k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
10.4k
    if (error)                                                                \
1901
10.4k
      return error;                                                           \
1902
10.4k
    SINCE (R_2007a)                                                           \
1903
10.4k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
10.4k
    else                                                                      \
1909
10.4k
    {                                                                         \
1910
10.4k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
10.4k
    }                                                                         \
1912
10.4k
    return error;                                                             \
1913
10.4k
  }                                                                           \
decode.c:dwg_decode_OLEFRAME
Line
Count
Source
1897
682
  {                                                                           \
1898
682
    int error = dwg_setup_##token (obj);                                      \
1899
682
    Bit_Chain hdl_dat = *dat;                                                 \
1900
682
    if (error)                                                                \
1901
682
      return error;                                                           \
1902
682
    SINCE (R_2007a)                                                           \
1903
682
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
682
    else                                                                      \
1909
682
    {                                                                         \
1910
682
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
682
    }                                                                         \
1912
682
    return error;                                                             \
1913
682
  }                                                                           \
decode.c:dwg_decode_PROXY_ENTITY
Line
Count
Source
1897
1.38k
  {                                                                           \
1898
1.38k
    int error = dwg_setup_##token (obj);                                      \
1899
1.38k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
1.38k
    if (error)                                                                \
1901
1.38k
      return error;                                                           \
1902
1.38k
    SINCE (R_2007a)                                                           \
1903
1.38k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
1.38k
    else                                                                      \
1909
1.38k
    {                                                                         \
1910
1.38k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
1.38k
    }                                                                         \
1912
1.38k
    return error;                                                             \
1913
1.38k
  }                                                                           \
Unexecuted instantiation: decode.c:dwg_decode_IMAGE
Unexecuted instantiation: decode.c:dwg_decode_ACIDBLOCKREFERENCE
Unexecuted instantiation: decode.c:dwg_decode_LARGE_RADIAL_DIMENSION
decode.c:dwg_decode__3DLINE
Line
Count
Source
1897
33.4k
  {                                                                           \
1898
33.4k
    int error = dwg_setup_##token (obj);                                      \
1899
33.4k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
33.4k
    if (error)                                                                \
1901
33.4k
      return error;                                                           \
1902
33.4k
    SINCE (R_2007a)                                                           \
1903
33.4k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
33.4k
    else                                                                      \
1909
33.4k
    {                                                                         \
1910
33.4k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
33.4k
    }                                                                         \
1912
33.4k
    return error;                                                             \
1913
33.4k
  }                                                                           \
Unexecuted instantiation: dwg_decode_TABLE
Unexecuted instantiation: dwg_decode_MULTILEADER
Unexecuted instantiation: dwg_decode_WIPEOUT
Unexecuted instantiation: dwg_decode_PDFUNDERLAY
Unexecuted instantiation: dwg_decode_DGNUNDERLAY
Unexecuted instantiation: dwg_decode_DWFUNDERLAY
Unexecuted instantiation: dwg_decode_CAMERA
Unexecuted instantiation: dwg_decode_SECTIONOBJECT
Unexecuted instantiation: dwg_decode_UNKNOWN_ENT
Unexecuted instantiation: dwg_decode_LIGHT
Unexecuted instantiation: dwg_decode_HELIX
Unexecuted instantiation: dwg_decode_MESH
Unexecuted instantiation: dwg_decode_ARC_DIMENSION
Unexecuted instantiation: dwg_decode_PLANESURFACE
Unexecuted instantiation: dwg_decode_LAYOUTPRINTCONFIG
Unexecuted instantiation: dwg_decode_POINTCLOUD
Unexecuted instantiation: dwg_decode_POINTCLOUDEX
dwg_decode_REPEAT
Line
Count
Source
1897
55.3k
  {                                                                           \
1898
55.3k
    int error = dwg_setup_##token (obj);                                      \
1899
55.3k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
55.3k
    if (error)                                                                \
1901
55.3k
      return error;                                                           \
1902
55.3k
    SINCE (R_2007a)                                                           \
1903
55.3k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
55.3k
    else                                                                      \
1909
55.3k
    {                                                                         \
1910
55.3k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
55.3k
    }                                                                         \
1912
55.3k
    return error;                                                             \
1913
55.3k
  }                                                                           \
dwg_decode_ENDREP
Line
Count
Source
1897
4.57k
  {                                                                           \
1898
4.57k
    int error = dwg_setup_##token (obj);                                      \
1899
4.57k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
4.57k
    if (error)                                                                \
1901
4.57k
      return error;                                                           \
1902
4.57k
    SINCE (R_2007a)                                                           \
1903
4.57k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
4.57k
    else                                                                      \
1909
4.57k
    {                                                                         \
1910
4.57k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
4.57k
    }                                                                         \
1912
4.57k
    return error;                                                             \
1913
4.57k
  }                                                                           \
dwg_decode_LOAD
Line
Count
Source
1897
4.71k
  {                                                                           \
1898
4.71k
    int error = dwg_setup_##token (obj);                                      \
1899
4.71k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
4.71k
    if (error)                                                                \
1901
4.71k
      return error;                                                           \
1902
4.71k
    SINCE (R_2007a)                                                           \
1903
4.71k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
4.71k
    else                                                                      \
1909
4.71k
    {                                                                         \
1910
4.71k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
4.71k
    }                                                                         \
1912
4.71k
    return error;                                                             \
1913
4.71k
  }                                                                           \
dwg_decode_JUMP
Line
Count
Source
1897
2.42k
  {                                                                           \
1898
2.42k
    int error = dwg_setup_##token (obj);                                      \
1899
2.42k
    Bit_Chain hdl_dat = *dat;                                                 \
1900
2.42k
    if (error)                                                                \
1901
2.42k
      return error;                                                           \
1902
2.42k
    SINCE (R_2007a)                                                           \
1903
2.42k
    {                                                                         \
1904
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
1905
0
      error                                                                   \
1906
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
1907
0
    }                                                                         \
1908
2.42k
    else                                                                      \
1909
2.42k
    {                                                                         \
1910
2.42k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
1911
2.42k
    }                                                                         \
1912
2.42k
    return error;                                                             \
1913
2.42k
  }                                                                           \
1914
                                                                              \
1915
  GCC30_DIAG_IGNORE (-Wformat-nonliteral)                                     \
1916
  static int dwg_decode_##token##_private (                                   \
1917
      Bit_Chain *dat, Bit_Chain *hdl_dat, Bit_Chain *str_dat,                 \
1918
      Dwg_Object *restrict obj)                                               \
1919
1.29M
  {                                                                           \
1920
1.29M
    BITCODE_BL vcount, rcount3, rcount4;                                      \
1921
1.29M
    int error = 0;                                                            \
1922
1.29M
    Dwg_Entity_##token *ent, *_obj;                                           \
1923
1.29M
    Dwg_Object_Entity *_ent;                                                  \
1924
1.29M
    Dwg_Data *dwg = obj->parent;                                              \
1925
1.29M
    LOG_INFO ("Decode entity " #token "\n");                                  \
1926
1.29M
    _ent = obj->tio.entity;                                                   \
1927
1.29M
    ent = obj->tio.entity->tio.token;                                         \
1928
1.29M
    _obj = ent;                                                               \
1929
1.29M
    _ent->dwg = dwg;                                                          \
1930
1.29M
    _ent->objid = obj->index; /* obj ptr itself might move */                 \
1931
1.29M
    _obj->parent = obj->tio.entity;                                           \
1932
1.29M
    SINCE (R_13b1)                                                            \
1933
1.29M
    {                                                                         \
1934
722k
      error = dwg_decode_entity (dat, hdl_dat, str_dat, _ent);                \
1935
722k
    }                                                                         \
1936
1.29M
    else                                                                      \
1937
1.29M
    {                                                                         \
1938
574k
      error = decode_entity_preR13 (dat, obj, _ent);                          \
1939
574k
    }                                                                         \
1940
1.29M
    if (error >= DWG_ERR_CRITICAL || dat->byte > dat->size)                   \
1941
1.29M
      return error;
1942
1943
// Does size include the CRC?
1944
#define DWG_ENTITY_END                                                        \
1945
4.64M
  SINCE (R_13b1)                                                              \
1946
4.16M
  {                                                                           \
1947
4.16M
    size_t pos = obj_stream_position (dat, hdl_dat, str_dat);                 \
1948
4.16M
    int64_t padding = (obj->size * 8) - pos;                                  \
1949
4.16M
    bit_set_position (dat, pos);                                              \
1950
4.16M
    if (padding)                                                              \
1951
4.16M
      LOG_HANDLE (" padding: %+ld %s\n", (long)padding,                       \
1952
4.16M
                  padding >= 8    ? "MISSING"                                 \
1953
4.16M
                  : (padding < 0) ? "OVERSHOOT"                               \
1954
4.16M
                                  : "");                                      \
1955
4.16M
  }                                                                           \
1956
615k
  return error & ~DWG_ERR_UNHANDLEDCLASS;                                     \
1957
4.72M
  }
1958
1959
#define DWG_OBJECT(token)                                                     \
1960
  EXPORT int dwg_setup_##token (Dwg_Object *obj)                              \
1961
3.32M
  {                                                                           \
1962
3.32M
    Dwg_Object_##token *_obj;                                                 \
1963
3.32M
    LOG_INFO ("Add object " #token " [%d] ", obj->index);                     \
1964
3.32M
    obj->supertype = DWG_SUPERTYPE_OBJECT;                                    \
1965
3.32M
    obj->tio.object                                                           \
1966
3.32M
        = (Dwg_Object_Object *)calloc (1, sizeof (Dwg_Object_Object));        \
1967
3.32M
    if (!obj->tio.object)                                                     \
1968
3.32M
      return DWG_ERR_OUTOFMEM;                                                \
1969
3.32M
    _obj = obj->tio.object->tio.token                                         \
1970
3.32M
        = (Dwg_Object_##token *)calloc (1, sizeof (Dwg_Object_##token));      \
1971
3.32M
    if (!_obj)                                                                \
1972
3.32M
      {                                                                       \
1973
0
        free (obj->tio.object);                                               \
1974
0
        obj->tio.object = NULL;                                               \
1975
0
        obj->fixedtype = DWG_TYPE_FREED;                                      \
1976
0
        return DWG_ERR_OUTOFMEM;                                              \
1977
0
      }                                                                       \
1978
3.32M
    if (!(int)obj->fixedtype)                                                 \
1979
3.32M
      {                                                                       \
1980
3.32M
        obj->fixedtype = DWG_TYPE_##token;                                    \
1981
3.32M
        obj->name = (char *)#token;                                           \
1982
3.32M
      }                                                                       \
1983
3.32M
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
1984
3.32M
      {                                                                       \
1985
3.12M
        obj->type = DWG_TYPE_##token;                                         \
1986
3.12M
      }                                                                       \
1987
3.32M
    if (!obj->dxfname)                                                        \
1988
3.32M
      {                                                                       \
1989
3.32M
        if (strEQc (#token, "PLACEHOLDER"))                                   \
1990
3.32M
          obj->dxfname = (char *)"ACDBPLACEHOLDER";                           \
1991
3.32M
        else if (strEQc (#token, "PROXY_OBJECT"))                             \
1992
3.31M
          obj->dxfname = (char *)"ACAD_PROXY_OBJECT";                         \
1993
3.31M
        else                                                                  \
1994
3.31M
          obj->dxfname = (char *)#token;                                      \
1995
3.32M
      }                                                                       \
1996
3.32M
    if (strEQc (#token, "UNKNOWN_OBJ"))                                       \
1997
3.32M
      {                                                                       \
1998
2.05k
        obj->name = (char *)#token;                                           \
1999
2.05k
        obj->dxfname = (char *)#token;                                        \
2000
2.05k
        obj->fixedtype = DWG_TYPE_UNKNOWN_OBJ;                                \
2001
2.05k
      }                                                                       \
2002
3.32M
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
2003
3.32M
      {                                                                       \
2004
0
        obj->dxfname = strdup (obj->dxfname);                                 \
2005
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
2006
0
          obj->name = strdup (obj->name);                                     \
2007
0
      }                                                                       \
2008
3.32M
    _obj->parent = obj->tio.object;                                           \
2009
3.32M
    obj->tio.object->dwg = obj->parent;                                       \
2010
3.32M
    obj->tio.object->objid = obj->index; /* obj ptr itself might move */      \
2011
3.32M
    return 0;                                                                 \
2012
3.32M
  }                                                                           \
2013
  static int dwg_decode_##token##_private (                                  \
2014
      Bit_Chain *obj_dat, Bit_Chain *hdl_dat, Bit_Chain *str_dat,             \
2015
      Dwg_Object *restrict obj);                                              \
2016
                                                                              \
2017
  DWG_DECODE_FUNC int dwg_decode_##token (Bit_Chain *restrict dat,            \
2018
                                          Dwg_Object *restrict obj)           \
2019
3.32M
  {                                                                           \
2020
3.32M
    int error = dwg_setup_##token (obj);                                      \
2021
3.32M
    Bit_Chain hdl_dat = *dat;                                                 \
2022
3.32M
    if (error)                                                                \
2023
3.32M
      return error;                                                           \
2024
3.32M
    SINCE (R_2007a)                                                           \
2025
3.32M
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
3.32M
    else                                                                      \
2031
3.32M
    {                                                                         \
2032
3.32M
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
3.32M
    }                                                                         \
2034
3.32M
    return error;                                                             \
2035
3.32M
  }                                                                           \
decode.c:dwg_decode_DICTIONARY
Line
Count
Source
2019
2.30k
  {                                                                           \
2020
2.30k
    int error = dwg_setup_##token (obj);                                      \
2021
2.30k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
2.30k
    if (error)                                                                \
2023
2.30k
      return error;                                                           \
2024
2.30k
    SINCE (R_2007a)                                                           \
2025
2.30k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
2.30k
    else                                                                      \
2031
2.30k
    {                                                                         \
2032
2.30k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
2.30k
    }                                                                         \
2034
2.30k
    return error;                                                             \
2035
2.30k
  }                                                                           \
decode.c:dwg_decode_BLOCK_CONTROL
Line
Count
Source
2019
18.2k
  {                                                                           \
2020
18.2k
    int error = dwg_setup_##token (obj);                                      \
2021
18.2k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
18.2k
    if (error)                                                                \
2023
18.2k
      return error;                                                           \
2024
18.2k
    SINCE (R_2007a)                                                           \
2025
18.2k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
18.2k
    else                                                                      \
2031
18.2k
    {                                                                         \
2032
18.2k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
18.2k
    }                                                                         \
2034
18.2k
    return error;                                                             \
2035
18.2k
  }                                                                           \
decode.c:dwg_decode_LAYER_CONTROL
Line
Count
Source
2019
3.66k
  {                                                                           \
2020
3.66k
    int error = dwg_setup_##token (obj);                                      \
2021
3.66k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
3.66k
    if (error)                                                                \
2023
3.66k
      return error;                                                           \
2024
3.66k
    SINCE (R_2007a)                                                           \
2025
3.66k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
3.66k
    else                                                                      \
2031
3.66k
    {                                                                         \
2032
3.66k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
3.66k
    }                                                                         \
2034
3.66k
    return error;                                                             \
2035
3.66k
  }                                                                           \
decode.c:dwg_decode_STYLE_CONTROL
Line
Count
Source
2019
16.9k
  {                                                                           \
2020
16.9k
    int error = dwg_setup_##token (obj);                                      \
2021
16.9k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
16.9k
    if (error)                                                                \
2023
16.9k
      return error;                                                           \
2024
16.9k
    SINCE (R_2007a)                                                           \
2025
16.9k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
16.9k
    else                                                                      \
2031
16.9k
    {                                                                         \
2032
16.9k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
16.9k
    }                                                                         \
2034
16.9k
    return error;                                                             \
2035
16.9k
  }                                                                           \
decode.c:dwg_decode_LTYPE_CONTROL
Line
Count
Source
2019
7.36k
  {                                                                           \
2020
7.36k
    int error = dwg_setup_##token (obj);                                      \
2021
7.36k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
7.36k
    if (error)                                                                \
2023
7.36k
      return error;                                                           \
2024
7.36k
    SINCE (R_2007a)                                                           \
2025
7.36k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
7.36k
    else                                                                      \
2031
7.36k
    {                                                                         \
2032
7.36k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
7.36k
    }                                                                         \
2034
7.36k
    return error;                                                             \
2035
7.36k
  }                                                                           \
decode.c:dwg_decode_VIEW_CONTROL
Line
Count
Source
2019
5.66k
  {                                                                           \
2020
5.66k
    int error = dwg_setup_##token (obj);                                      \
2021
5.66k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
5.66k
    if (error)                                                                \
2023
5.66k
      return error;                                                           \
2024
5.66k
    SINCE (R_2007a)                                                           \
2025
5.66k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
5.66k
    else                                                                      \
2031
5.66k
    {                                                                         \
2032
5.66k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
5.66k
    }                                                                         \
2034
5.66k
    return error;                                                             \
2035
5.66k
  }                                                                           \
decode.c:dwg_decode_UCS_CONTROL
Line
Count
Source
2019
2.96k
  {                                                                           \
2020
2.96k
    int error = dwg_setup_##token (obj);                                      \
2021
2.96k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
2.96k
    if (error)                                                                \
2023
2.96k
      return error;                                                           \
2024
2.96k
    SINCE (R_2007a)                                                           \
2025
2.96k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
2.96k
    else                                                                      \
2031
2.96k
    {                                                                         \
2032
2.96k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
2.96k
    }                                                                         \
2034
2.96k
    return error;                                                             \
2035
2.96k
  }                                                                           \
decode.c:dwg_decode_VPORT_CONTROL
Line
Count
Source
2019
30.7k
  {                                                                           \
2020
30.7k
    int error = dwg_setup_##token (obj);                                      \
2021
30.7k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
30.7k
    if (error)                                                                \
2023
30.7k
      return error;                                                           \
2024
30.7k
    SINCE (R_2007a)                                                           \
2025
30.7k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
30.7k
    else                                                                      \
2031
30.7k
    {                                                                         \
2032
30.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
30.7k
    }                                                                         \
2034
30.7k
    return error;                                                             \
2035
30.7k
  }                                                                           \
decode.c:dwg_decode_APPID_CONTROL
Line
Count
Source
2019
4.14k
  {                                                                           \
2020
4.14k
    int error = dwg_setup_##token (obj);                                      \
2021
4.14k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
4.14k
    if (error)                                                                \
2023
4.14k
      return error;                                                           \
2024
4.14k
    SINCE (R_2007a)                                                           \
2025
4.14k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
4.14k
    else                                                                      \
2031
4.14k
    {                                                                         \
2032
4.14k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
4.14k
    }                                                                         \
2034
4.14k
    return error;                                                             \
2035
4.14k
  }                                                                           \
decode.c:dwg_decode_DIMSTYLE_CONTROL
Line
Count
Source
2019
13.5k
  {                                                                           \
2020
13.5k
    int error = dwg_setup_##token (obj);                                      \
2021
13.5k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
13.5k
    if (error)                                                                \
2023
13.5k
      return error;                                                           \
2024
13.5k
    SINCE (R_2007a)                                                           \
2025
13.5k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
13.5k
    else                                                                      \
2031
13.5k
    {                                                                         \
2032
13.5k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
13.5k
    }                                                                         \
2034
13.5k
    return error;                                                             \
2035
13.5k
  }                                                                           \
decode.c:dwg_decode_VX_CONTROL
Line
Count
Source
2019
1.75k
  {                                                                           \
2020
1.75k
    int error = dwg_setup_##token (obj);                                      \
2021
1.75k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
1.75k
    if (error)                                                                \
2023
1.75k
      return error;                                                           \
2024
1.75k
    SINCE (R_2007a)                                                           \
2025
1.75k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
1.75k
    else                                                                      \
2031
1.75k
    {                                                                         \
2032
1.75k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
1.75k
    }                                                                         \
2034
1.75k
    return error;                                                             \
2035
1.75k
  }                                                                           \
decode.c:dwg_decode_GROUP
Line
Count
Source
2019
15.3k
  {                                                                           \
2020
15.3k
    int error = dwg_setup_##token (obj);                                      \
2021
15.3k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
15.3k
    if (error)                                                                \
2023
15.3k
      return error;                                                           \
2024
15.3k
    SINCE (R_2007a)                                                           \
2025
15.3k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
15.3k
    else                                                                      \
2031
15.3k
    {                                                                         \
2032
15.3k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
15.3k
    }                                                                         \
2034
15.3k
    return error;                                                             \
2035
15.3k
  }                                                                           \
decode.c:dwg_decode_MLINESTYLE
Line
Count
Source
2019
22.3k
  {                                                                           \
2020
22.3k
    int error = dwg_setup_##token (obj);                                      \
2021
22.3k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
22.3k
    if (error)                                                                \
2023
22.3k
      return error;                                                           \
2024
22.3k
    SINCE (R_2007a)                                                           \
2025
22.3k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
22.3k
    else                                                                      \
2031
22.3k
    {                                                                         \
2032
22.3k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
22.3k
    }                                                                         \
2034
22.3k
    return error;                                                             \
2035
22.3k
  }                                                                           \
decode.c:dwg_decode_LAYOUT
Line
Count
Source
2019
3.12M
  {                                                                           \
2020
3.12M
    int error = dwg_setup_##token (obj);                                      \
2021
3.12M
    Bit_Chain hdl_dat = *dat;                                                 \
2022
3.12M
    if (error)                                                                \
2023
3.12M
      return error;                                                           \
2024
3.12M
    SINCE (R_2007a)                                                           \
2025
3.12M
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
3.12M
    else                                                                      \
2031
3.12M
    {                                                                         \
2032
3.12M
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
3.12M
    }                                                                         \
2034
3.12M
    return error;                                                             \
2035
3.12M
  }                                                                           \
decode.c:dwg_decode_PROXY_OBJECT
Line
Count
Source
2019
441
  {                                                                           \
2020
441
    int error = dwg_setup_##token (obj);                                      \
2021
441
    Bit_Chain hdl_dat = *dat;                                                 \
2022
441
    if (error)                                                                \
2023
441
      return error;                                                           \
2024
441
    SINCE (R_2007a)                                                           \
2025
441
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
441
    else                                                                      \
2031
441
    {                                                                         \
2032
441
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
441
    }                                                                         \
2034
441
    return error;                                                             \
2035
441
  }                                                                           \
Unexecuted instantiation: decode.c:dwg_decode_DICTIONARYVAR
Unexecuted instantiation: decode.c:dwg_decode_DICTIONARYWDFLT
Unexecuted instantiation: decode.c:dwg_decode_FIELD
Unexecuted instantiation: decode.c:dwg_decode_FIELDLIST
Unexecuted instantiation: decode.c:dwg_decode_IDBUFFER
Unexecuted instantiation: decode.c:dwg_decode_INDEX
Unexecuted instantiation: decode.c:dwg_decode_IMAGEDEF
Unexecuted instantiation: decode.c:dwg_decode_IMAGEDEF_REACTOR
Unexecuted instantiation: decode.c:dwg_decode_LAYER_INDEX
Unexecuted instantiation: decode.c:dwg_decode_PLOTSETTINGS
Unexecuted instantiation: dwg_decode_GEODATA
Unexecuted instantiation: dwg_decode_RASTERVARIABLES
Unexecuted instantiation: dwg_decode_SORTENTSTABLE
Unexecuted instantiation: dwg_decode_SPATIAL_FILTER
Unexecuted instantiation: dwg_decode_SPATIAL_INDEX
Unexecuted instantiation: dwg_decode_TABLECONTENT
Unexecuted instantiation: dwg_decode_TABLESTYLE
Unexecuted instantiation: dwg_decode_CELLSTYLEMAP
Unexecuted instantiation: dwg_decode_TABLEGEOMETRY
dwg_decode_XRECORD
Line
Count
Source
2019
5.11k
  {                                                                           \
2020
5.11k
    int error = dwg_setup_##token (obj);                                      \
2021
5.11k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
5.11k
    if (error)                                                                \
2023
5.11k
      return error;                                                           \
2024
5.11k
    SINCE (R_2007a)                                                           \
2025
5.11k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
5.11k
    else                                                                      \
2031
5.11k
    {                                                                         \
2032
5.11k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
5.11k
    }                                                                         \
2034
5.11k
    return error;                                                             \
2035
5.11k
  }                                                                           \
dwg_decode_PLACEHOLDER
Line
Count
Source
2019
10.1k
  {                                                                           \
2020
10.1k
    int error = dwg_setup_##token (obj);                                      \
2021
10.1k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
10.1k
    if (error)                                                                \
2023
10.1k
      return error;                                                           \
2024
10.1k
    SINCE (R_2007a)                                                           \
2025
10.1k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
10.1k
    else                                                                      \
2031
10.1k
    {                                                                         \
2032
10.1k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
10.1k
    }                                                                         \
2034
10.1k
    return error;                                                             \
2035
10.1k
  }                                                                           \
Unexecuted instantiation: dwg_decode_SCALE
dwg_decode_VBA_PROJECT
Line
Count
Source
2019
18.0k
  {                                                                           \
2020
18.0k
    int error = dwg_setup_##token (obj);                                      \
2021
18.0k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
18.0k
    if (error)                                                                \
2023
18.0k
      return error;                                                           \
2024
18.0k
    SINCE (R_2007a)                                                           \
2025
18.0k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
18.0k
    else                                                                      \
2031
18.0k
    {                                                                         \
2032
18.0k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
18.0k
    }                                                                         \
2034
18.0k
    return error;                                                             \
2035
18.0k
  }                                                                           \
Unexecuted instantiation: dwg_decode_MLEADERSTYLE
Unexecuted instantiation: dwg_decode_WIPEOUTVARIABLES
Unexecuted instantiation: dwg_decode_PDFDEFINITION
Unexecuted instantiation: dwg_decode_DGNDEFINITION
Unexecuted instantiation: dwg_decode_DWFDEFINITION
Unexecuted instantiation: dwg_decode_SECTION_MANAGER
Unexecuted instantiation: dwg_decode_SECTION_SETTINGS
dwg_decode_UNKNOWN_OBJ
Line
Count
Source
2019
2.05k
  {                                                                           \
2020
2.05k
    int error = dwg_setup_##token (obj);                                      \
2021
2.05k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
2.05k
    if (error)                                                                \
2023
2.05k
      return error;                                                           \
2024
2.05k
    SINCE (R_2007a)                                                           \
2025
2.05k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
2.05k
    else                                                                      \
2031
2.05k
    {                                                                         \
2032
2.05k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
2.05k
    }                                                                         \
2034
2.05k
    return error;                                                             \
2035
2.05k
  }                                                                           \
dwg_decode_DUMMY
Line
Count
Source
2019
989
  {                                                                           \
2020
989
    int error = dwg_setup_##token (obj);                                      \
2021
989
    Bit_Chain hdl_dat = *dat;                                                 \
2022
989
    if (error)                                                                \
2023
989
      return error;                                                           \
2024
989
    SINCE (R_2007a)                                                           \
2025
989
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
989
    else                                                                      \
2031
989
    {                                                                         \
2032
989
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
989
    }                                                                         \
2034
989
    return error;                                                             \
2035
989
  }                                                                           \
dwg_decode_LONG_TRANSACTION
Line
Count
Source
2019
10.4k
  {                                                                           \
2020
10.4k
    int error = dwg_setup_##token (obj);                                      \
2021
10.4k
    Bit_Chain hdl_dat = *dat;                                                 \
2022
10.4k
    if (error)                                                                \
2023
10.4k
      return error;                                                           \
2024
10.4k
    SINCE (R_2007a)                                                           \
2025
10.4k
    {                                                                         \
2026
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2027
0
      error                                                                   \
2028
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj);\
2029
0
    }                                                                         \
2030
10.4k
    else                                                                      \
2031
10.4k
    {                                                                         \
2032
10.4k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2033
10.4k
    }                                                                         \
2034
10.4k
    return error;                                                             \
2035
10.4k
  }                                                                           \
Unexecuted instantiation: dwg_decode_OBJECT_PTR
Unexecuted instantiation: dwg_decode_ASSOCDEPENDENCY
Unexecuted instantiation: dwg_decode_ASSOCPLANESURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCEXTENDSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCEXTRUDEDSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCLOFTEDSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCNETWORKSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCOFFSETSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCREVOLVEDSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCTRIMSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCBLENDSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCPATCHSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_ASSOCFILLETSURFACEACTIONBODY
Unexecuted instantiation: dwg_decode_VISUALSTYLE
Unexecuted instantiation: dwg_decode_DYNAMICBLOCKPURGEPREVENTER
Unexecuted instantiation: dwg_decode_BLOCKREPRESENTATION
Unexecuted instantiation: dwg_decode_DBCOLOR
Unexecuted instantiation: dwg_decode_LIGHTLIST
Unexecuted instantiation: dwg_decode_SUN
Unexecuted instantiation: dwg_decode_RENDERSETTINGS
Unexecuted instantiation: dwg_decode_MENTALRAYRENDERSETTINGS
Unexecuted instantiation: dwg_decode_RAPIDRTRENDERSETTINGS
Unexecuted instantiation: dwg_decode_MATERIAL
Unexecuted instantiation: dwg_decode_LAYER_FILTER
Unexecuted instantiation: dwg_decode_ACSH_BOX_CLASS
Unexecuted instantiation: dwg_decode_ACSH_WEDGE_CLASS
Unexecuted instantiation: dwg_decode_ACSH_SPHERE_CLASS
Unexecuted instantiation: dwg_decode_ACSH_CYLINDER_CLASS
Unexecuted instantiation: dwg_decode_ACSH_CONE_CLASS
Unexecuted instantiation: dwg_decode_ACSH_PYRAMID_CLASS
Unexecuted instantiation: dwg_decode_ACSH_FILLET_CLASS
Unexecuted instantiation: dwg_decode_ACSH_CHAMFER_CLASS
Unexecuted instantiation: dwg_decode_ACSH_TORUS_CLASS
Unexecuted instantiation: dwg_decode_ACSH_BREP_CLASS
Unexecuted instantiation: dwg_decode_ACSH_BOOLEAN_CLASS
Unexecuted instantiation: dwg_decode_ACSH_HISTORY_CLASS
Unexecuted instantiation: dwg_decode_ASSOCACTION
Unexecuted instantiation: dwg_decode_ASSOCVALUEDEPENDENCY
Unexecuted instantiation: dwg_decode_ASSOCGEOMDEPENDENCY
Unexecuted instantiation: dwg_decode_ASSOCNETWORK
Unexecuted instantiation: dwg_decode_BLOCKVISIBILITYGRIP
Unexecuted instantiation: dwg_decode_BLOCKGRIPLOCATIONCOMPONENT
Unexecuted instantiation: dwg_decode_BLOCKALIGNMENTGRIP
Unexecuted instantiation: dwg_decode_BLOCKALIGNMENTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKLINEARPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKBASEPOINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKFLIPPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKFLIPGRIP
Unexecuted instantiation: dwg_decode_BLOCKLINEARGRIP
Unexecuted instantiation: dwg_decode_BLOCKLOOKUPGRIP
Unexecuted instantiation: dwg_decode_BLOCKXYPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKMOVEACTION
Unexecuted instantiation: dwg_decode_BLOCKFLIPACTION
Unexecuted instantiation: dwg_decode_BLOCKROTATIONPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKROTATEACTION
Unexecuted instantiation: dwg_decode_BLOCKROTATIONGRIP
Unexecuted instantiation: dwg_decode_BLOCKSCALEACTION
Unexecuted instantiation: dwg_decode_BLOCKVISIBILITYPARAMETER
Unexecuted instantiation: dwg_decode_EVALUATION_GRAPH
Unexecuted instantiation: dwg_decode_DIMASSOC
Unexecuted instantiation: dwg_decode_DATALINK
Unexecuted instantiation: dwg_decode_ALDIMOBJECTCONTEXTDATA
Unexecuted instantiation: dwg_decode_MTEXTOBJECTCONTEXTDATA
Unexecuted instantiation: dwg_decode_TEXTOBJECTCONTEXTDATA
Unexecuted instantiation: dwg_decode_BLKREFOBJECTCONTEXTDATA
Unexecuted instantiation: dwg_decode_LEADEROBJECTCONTEXTDATA
Unexecuted instantiation: dwg_decode_FCFOBJECTCONTEXTDATA
Unexecuted instantiation: dwg_decode_DETAILVIEWSTYLE
Unexecuted instantiation: dwg_decode_SECTIONVIEWSTYLE
Unexecuted instantiation: dwg_decode_GRADIENT_BACKGROUND
Unexecuted instantiation: dwg_decode_GROUND_PLANE_BACKGROUND
Unexecuted instantiation: dwg_decode_IBL_BACKGROUND
Unexecuted instantiation: dwg_decode_IMAGE_BACKGROUND
Unexecuted instantiation: dwg_decode_SKYLIGHT_BACKGROUND
Unexecuted instantiation: dwg_decode_SOLID_BACKGROUND
Unexecuted instantiation: dwg_decode_RENDERENTRY
Unexecuted instantiation: dwg_decode_RENDERENVIRONMENT
Unexecuted instantiation: dwg_decode_RENDERGLOBAL
Unexecuted instantiation: dwg_decode_POINTCLOUDDEF
Unexecuted instantiation: dwg_decode_POINTCLOUDDEFEX
Unexecuted instantiation: dwg_decode_POINTCLOUDDEF_REACTOR
Unexecuted instantiation: dwg_decode_POINTCLOUDDEF_REACTOR_EX
Unexecuted instantiation: dwg_decode_POINTCLOUDCOLORMAP
Unexecuted instantiation: dwg_decode_ASSOC2DCONSTRAINTGROUP
Unexecuted instantiation: dwg_decode_ASSOCVARIABLE
Unexecuted instantiation: dwg_decode_ASSOCACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCCOMPOUNDACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCOSNAPPOINTREFACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCPOINTREFACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCOBJECTACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCPATHACTIONPARAM
Unexecuted instantiation: dwg_decode_BLOCKPOLARPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKPOLARGRIP
Unexecuted instantiation: dwg_decode_ASSOCDIMDEPENDENCYBODY
Unexecuted instantiation: dwg_decode_BLOCKARRAYACTION
Unexecuted instantiation: dwg_decode_BLOCKANGULARCONSTRAINTPARAMETER
Unexecuted instantiation: dwg_decode_ASSOCFACEACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCVERTEXACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCASMBODYACTIONPARAM
Unexecuted instantiation: dwg_decode_ASSOCARRAYMODIFYPARAMETERS
Unexecuted instantiation: dwg_decode_ASSOCARRAYPATHPARAMETERS
Unexecuted instantiation: dwg_decode_ASSOCARRAYPOLARPARAMETERS
Unexecuted instantiation: dwg_decode_ASSOCARRAYRECTANGULARPARAMETERS
Unexecuted instantiation: dwg_decode_BLOCKPARAMDEPENDENCYBODY
Unexecuted instantiation: dwg_decode_BLOCKDIAMETRICCONSTRAINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKRADIALCONSTRAINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKALIGNEDCONSTRAINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKLINEARCONSTRAINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKHORIZONTALCONSTRAINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKVERTICALCONSTRAINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKLOOKUPACTION
Unexecuted instantiation: dwg_decode_BLOCKLOOKUPPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKPOINTPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKSTRETCHACTION
Unexecuted instantiation: dwg_decode_BLOCKPOLARSTRETCHACTION
Unexecuted instantiation: dwg_decode_ASSOCARRAYACTIONBODY
Unexecuted instantiation: dwg_decode_BLOCKUSERPARAMETER
Unexecuted instantiation: dwg_decode_BLOCKXYGRIP
Unexecuted instantiation: dwg_decode_PARTIAL_VIEWING_INDEX
2036
                                                                              \
2037
  GCC30_DIAG_IGNORE (-Wformat-nonliteral)                                     \
2038
  static int dwg_decode_##token##_private (                                   \
2039
      Bit_Chain *dat, Bit_Chain *hdl_dat, Bit_Chain *str_dat,                 \
2040
      Dwg_Object *restrict obj)                                               \
2041
3.32M
  {                                                                           \
2042
3.32M
    BITCODE_BL vcount, rcount3, rcount4;                                      \
2043
3.32M
    int error = 0;                                                            \
2044
3.32M
    Dwg_Object_##token *_obj = NULL;                                          \
2045
3.32M
    Dwg_Data *dwg = obj->parent;                                              \
2046
3.32M
    LOG_INFO ("Decode object " #token "\n");                                  \
2047
3.32M
    if (strNE (#token, "TABLECONTENT") || obj->fixedtype != DWG_TYPE_TABLE)   \
2048
3.32M
      {                                                                       \
2049
3.32M
        _obj = obj->tio.object->tio.token;                                    \
2050
3.32M
        error = dwg_decode_object (dat, hdl_dat, str_dat, obj->tio.object);   \
2051
3.32M
        if (error >= DWG_ERR_CRITICAL || dat->byte > dat->size)               \
2052
3.32M
          return error;                                                       \
2053
3.32M
      }
2054
2055
3.61M
#define DWG_OBJECT_END DWG_ENTITY_END
2056
2057
// only for exported BLOCK_HEADER, LAYER, STYLE, LTYPE, VIEW, UCS, VPORT,
2058
// APPID, DIMSTYLE, VX_TABLE_RECORD table records, needed for the r11 add API.
2059
#define DWG_TABLE(token)                                                      \
2060
  EXPORT int dwg_setup_##token (Dwg_Object *obj)                              \
2061
435k
  {                                                                           \
2062
435k
    Dwg_Object_##token *_obj;                                                 \
2063
435k
    LOG_INFO ("Add table record " #token " [%d] ", obj->index);               \
2064
435k
    obj->supertype = DWG_SUPERTYPE_OBJECT;                                    \
2065
435k
    obj->tio.object                                                           \
2066
435k
        = (Dwg_Object_Object *)calloc (1, sizeof (Dwg_Object_Object));        \
2067
435k
    if (!obj->tio.object)                                                     \
2068
435k
      return DWG_ERR_OUTOFMEM;                                                \
2069
435k
    _obj = obj->tio.object->tio.token                                         \
2070
435k
        = (Dwg_Object_##token *)calloc (1, sizeof (Dwg_Object_##token));      \
2071
435k
    if (!_obj)                                                                \
2072
435k
      {                                                                       \
2073
0
        free (obj->tio.object);                                               \
2074
0
        obj->tio.object = NULL;                                               \
2075
0
        obj->fixedtype = DWG_TYPE_FREED;                                      \
2076
0
        return DWG_ERR_OUTOFMEM;                                              \
2077
0
      }                                                                       \
2078
435k
    if (!(int)obj->fixedtype)                                                 \
2079
435k
      {                                                                       \
2080
435k
        obj->fixedtype = DWG_TYPE_##token;                                    \
2081
435k
        obj->name = (char *)#token;                                           \
2082
435k
      }                                                                       \
2083
435k
    if (!(int)obj->type && obj->fixedtype <= DWG_TYPE_LAYOUT)                 \
2084
435k
      {                                                                       \
2085
91.4k
        obj->type = DWG_TYPE_##token;                                         \
2086
91.4k
      }                                                                       \
2087
435k
    obj->dxfname = (char *)#token;                                            \
2088
435k
    if (obj->parent->opts & DWG_OPTS_IN)                                      \
2089
435k
      {                                                                       \
2090
0
        obj->dxfname = strdup (obj->dxfname);                                 \
2091
0
        if (obj->parent->opts & DWG_OPTS_INJSON)                              \
2092
0
          obj->name = strdup (obj->name);                                     \
2093
0
      }                                                                       \
2094
435k
    _obj->parent = obj->tio.object;                                           \
2095
435k
    obj->tio.object->dwg = obj->parent;                                       \
2096
435k
    obj->tio.object->objid = obj->index; /* obj ptr itself might move */      \
2097
435k
    return 0;                                                                 \
2098
435k
  }                                                                           \
2099
  static int dwg_decode_##token##_private (                                   \
2100
      Bit_Chain *obj_dat, Bit_Chain *hdl_dat, Bit_Chain *str_dat,             \
2101
      Dwg_Object *restrict obj);                                              \
2102
                                                                              \
2103
  int dwg_decode_##token (Bit_Chain *restrict dat, Dwg_Object *restrict obj)  \
2104
435k
  {                                                                           \
2105
435k
    int error = dwg_setup_##token (obj);                                      \
2106
435k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
435k
    if (error)                                                                \
2108
435k
      return error;                                                           \
2109
435k
    SINCE (R_2007a)                                                           \
2110
435k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
435k
    else                                                                      \
2116
435k
    {                                                                         \
2117
435k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
435k
    }                                                                         \
2119
435k
    return error;                                                             \
2120
435k
  }                                                                           \
dwg_decode_BLOCK_HEADER
Line
Count
Source
2104
115k
  {                                                                           \
2105
115k
    int error = dwg_setup_##token (obj);                                      \
2106
115k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
115k
    if (error)                                                                \
2108
115k
      return error;                                                           \
2109
115k
    SINCE (R_2007a)                                                           \
2110
115k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
115k
    else                                                                      \
2116
115k
    {                                                                         \
2117
115k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
115k
    }                                                                         \
2119
115k
    return error;                                                             \
2120
115k
  }                                                                           \
dwg_decode_LAYER
Line
Count
Source
2104
5.67k
  {                                                                           \
2105
5.67k
    int error = dwg_setup_##token (obj);                                      \
2106
5.67k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
5.67k
    if (error)                                                                \
2108
5.67k
      return error;                                                           \
2109
5.67k
    SINCE (R_2007a)                                                           \
2110
5.67k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
5.67k
    else                                                                      \
2116
5.67k
    {                                                                         \
2117
5.67k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
5.67k
    }                                                                         \
2119
5.67k
    return error;                                                             \
2120
5.67k
  }                                                                           \
dwg_decode_STYLE
Line
Count
Source
2104
22.7k
  {                                                                           \
2105
22.7k
    int error = dwg_setup_##token (obj);                                      \
2106
22.7k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
22.7k
    if (error)                                                                \
2108
22.7k
      return error;                                                           \
2109
22.7k
    SINCE (R_2007a)                                                           \
2110
22.7k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
22.7k
    else                                                                      \
2116
22.7k
    {                                                                         \
2117
22.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
22.7k
    }                                                                         \
2119
22.7k
    return error;                                                             \
2120
22.7k
  }                                                                           \
dwg_decode_LTYPE
Line
Count
Source
2104
36.7k
  {                                                                           \
2105
36.7k
    int error = dwg_setup_##token (obj);                                      \
2106
36.7k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
36.7k
    if (error)                                                                \
2108
36.7k
      return error;                                                           \
2109
36.7k
    SINCE (R_2007a)                                                           \
2110
36.7k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
36.7k
    else                                                                      \
2116
36.7k
    {                                                                         \
2117
36.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
36.7k
    }                                                                         \
2119
36.7k
    return error;                                                             \
2120
36.7k
  }                                                                           \
dwg_decode_VIEW
Line
Count
Source
2104
29.8k
  {                                                                           \
2105
29.8k
    int error = dwg_setup_##token (obj);                                      \
2106
29.8k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
29.8k
    if (error)                                                                \
2108
29.8k
      return error;                                                           \
2109
29.8k
    SINCE (R_2007a)                                                           \
2110
29.8k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
29.8k
    else                                                                      \
2116
29.8k
    {                                                                         \
2117
29.8k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
29.8k
    }                                                                         \
2119
29.8k
    return error;                                                             \
2120
29.8k
  }                                                                           \
dwg_decode_UCS
Line
Count
Source
2104
9.67k
  {                                                                           \
2105
9.67k
    int error = dwg_setup_##token (obj);                                      \
2106
9.67k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
9.67k
    if (error)                                                                \
2108
9.67k
      return error;                                                           \
2109
9.67k
    SINCE (R_2007a)                                                           \
2110
9.67k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
9.67k
    else                                                                      \
2116
9.67k
    {                                                                         \
2117
9.67k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
9.67k
    }                                                                         \
2119
9.67k
    return error;                                                             \
2120
9.67k
  }                                                                           \
dwg_decode_VPORT
Line
Count
Source
2104
182k
  {                                                                           \
2105
182k
    int error = dwg_setup_##token (obj);                                      \
2106
182k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
182k
    if (error)                                                                \
2108
182k
      return error;                                                           \
2109
182k
    SINCE (R_2007a)                                                           \
2110
182k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
182k
    else                                                                      \
2116
182k
    {                                                                         \
2117
182k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
182k
    }                                                                         \
2119
182k
    return error;                                                             \
2120
182k
  }                                                                           \
dwg_decode_APPID
Line
Count
Source
2104
2.04k
  {                                                                           \
2105
2.04k
    int error = dwg_setup_##token (obj);                                      \
2106
2.04k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
2.04k
    if (error)                                                                \
2108
2.04k
      return error;                                                           \
2109
2.04k
    SINCE (R_2007a)                                                           \
2110
2.04k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
2.04k
    else                                                                      \
2116
2.04k
    {                                                                         \
2117
2.04k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
2.04k
    }                                                                         \
2119
2.04k
    return error;                                                             \
2120
2.04k
  }                                                                           \
dwg_decode_DIMSTYLE
Line
Count
Source
2104
27.7k
  {                                                                           \
2105
27.7k
    int error = dwg_setup_##token (obj);                                      \
2106
27.7k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
27.7k
    if (error)                                                                \
2108
27.7k
      return error;                                                           \
2109
27.7k
    SINCE (R_2007a)                                                           \
2110
27.7k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
27.7k
    else                                                                      \
2116
27.7k
    {                                                                         \
2117
27.7k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
27.7k
    }                                                                         \
2119
27.7k
    return error;                                                             \
2120
27.7k
  }                                                                           \
dwg_decode_VX_TABLE_RECORD
Line
Count
Source
2104
2.70k
  {                                                                           \
2105
2.70k
    int error = dwg_setup_##token (obj);                                      \
2106
2.70k
    Bit_Chain hdl_dat = *dat;                                                 \
2107
2.70k
    if (error)                                                                \
2108
2.70k
      return error;                                                           \
2109
2.70k
    SINCE (R_2007a)                                                           \
2110
2.70k
    {                                                                         \
2111
0
      Bit_Chain obj_dat = *dat, str_dat = *dat;                               \
2112
0
      error                                                                   \
2113
0
          = dwg_decode_##token##_private (&obj_dat, &hdl_dat, &str_dat, obj); \
2114
0
    }                                                                         \
2115
2.70k
    else                                                                      \
2116
2.70k
    {                                                                         \
2117
2.70k
      error = dwg_decode_##token##_private (dat, &hdl_dat, dat, obj);         \
2118
2.70k
    }                                                                         \
2119
2.70k
    return error;                                                             \
2120
2.70k
  }                                                                           \
2121
                                                                              \
2122
  GCC30_DIAG_IGNORE (-Wformat-nonliteral)                                     \
2123
  static int dwg_decode_##token##_private (                                   \
2124
      Bit_Chain *dat, Bit_Chain *hdl_dat, Bit_Chain *str_dat,                 \
2125
      Dwg_Object *restrict obj)                                               \
2126
435k
  {                                                                           \
2127
435k
    BITCODE_BL vcount, rcount3, rcount4;                                      \
2128
435k
    int error = 0;                                                            \
2129
435k
    Dwg_Object_##token *_obj = NULL;                                          \
2130
435k
    Dwg_Data *dwg = obj->parent;                                              \
2131
435k
    LOG_INFO ("Decode table record " #token "\n");                            \
2132
435k
    _obj = obj->tio.object->tio.token;                                        \
2133
435k
    error = dwg_decode_object (dat, hdl_dat, str_dat, obj->tio.object);       \
2134
435k
    if (error >= DWG_ERR_CRITICAL || dat->byte > dat->size)                   \
2135
435k
      return error;
2136
2137
#endif