forked from li3939108/DEF-Parser
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefrReader.h
668 lines (592 loc) · 32.3 KB
/
defrReader.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
/* ************************************************************************** */
/* ************************************************************************** */
/* ATTENTION: THIS IS AN AUTO-GENERATED FILE. DO NOT CHANGE IT! */
/* ************************************************************************** */
/* ************************************************************************** */
/* Copyright 2013-2014, Cadence Design Systems */
/* */
/* This file is part of the Cadence LEF/DEF Open Source */
/* Distribution, Product Version 5.8. */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
/* You may obtain a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
/* implied. See the License for the specific language governing */
/* permissions and limitations under the License. */
/* */
/* For updates, support, or to become part of the LEF/DEF Community, */
/* check www.openeda.org for details. */
/* */
/* $Author: dell $ */
/* $Revision: #7 $ */
/* $Date: 2015/01/27 $ */
/* $State: $ */
/* ************************************************************************** */
/* ************************************************************************** */
#ifndef CDEFRREADER_H
#define CDEFRREADER_H
#include <stdio.h>
#include "defiTypedefs.h"
#define DEF_MSGS 4013
#define CBMAX 150
/* An enum describing all of the types of reader callbacks. */
typedef enum {
defrUnspecifiedCbkType = 0,
defrDesignStartCbkType = 1,
defrTechNameCbkType = 2,
defrPropCbkType = 3,
defrPropDefEndCbkType = 4,
defrPropDefStartCbkType = 5,
defrFloorPlanNameCbkType = 6,
defrArrayNameCbkType = 7,
defrUnitsCbkType = 8,
defrDividerCbkType = 9,
defrBusBitCbkType = 10,
defrSiteCbkType = 11,
defrComponentStartCbkType = 12,
defrComponentCbkType = 13,
defrComponentEndCbkType = 14,
defrNetStartCbkType = 15,
defrNetCbkType = 16,
defrNetNameCbkType = 17,
defrNetNonDefaultRuleCbkType = 18,
defrNetSubnetNameCbkType = 19,
defrNetEndCbkType = 20,
defrPathCbkType = 21,
defrVersionCbkType = 22,
defrVersionStrCbkType = 23,
defrComponentExtCbkType = 24,
defrPinExtCbkType = 25,
defrViaExtCbkType = 26,
defrNetConnectionExtCbkType = 27,
defrNetExtCbkType = 28,
defrGroupExtCbkType = 29,
defrScanChainExtCbkType = 30,
defrIoTimingsExtCbkType = 31,
defrPartitionsExtCbkType = 32,
defrHistoryCbkType = 33,
defrDieAreaCbkType = 34,
defrCanplaceCbkType = 35,
defrCannotOccupyCbkType = 36,
defrPinCapCbkType = 37,
defrDefaultCapCbkType = 38,
defrStartPinsCbkType = 39,
defrPinCbkType = 40,
defrPinEndCbkType = 41,
defrRowCbkType = 42,
defrTrackCbkType = 43,
defrGcellGridCbkType = 44,
defrViaStartCbkType = 45,
defrViaCbkType = 46,
defrViaEndCbkType = 47,
defrRegionStartCbkType = 48,
defrRegionCbkType = 49,
defrRegionEndCbkType = 50,
defrSNetStartCbkType = 51,
defrSNetCbkType = 52,
defrSNetPartialPathCbkType = 53,
defrSNetWireCbkType = 54,
defrSNetEndCbkType = 55,
defrGroupsStartCbkType = 56,
defrGroupNameCbkType = 57,
defrGroupMemberCbkType = 58,
defrGroupCbkType = 59,
defrGroupsEndCbkType = 60,
defrAssertionsStartCbkType = 61,
defrAssertionCbkType = 62,
defrAssertionsEndCbkType = 63,
defrConstraintsStartCbkType = 64,
defrConstraintCbkType = 65,
defrConstraintsEndCbkType = 66,
defrScanchainsStartCbkType = 67,
defrScanchainCbkType = 68,
defrScanchainsEndCbkType = 69,
defrIOTimingsStartCbkType = 70,
defrIOTimingCbkType = 71,
defrIOTimingsEndCbkType = 72,
defrFPCStartCbkType = 73,
defrFPCCbkType = 74,
defrFPCEndCbkType = 75,
defrTimingDisablesStartCbkType = 76,
defrTimingDisableCbkType = 77,
defrTimingDisablesEndCbkType = 78,
defrPartitionsStartCbkType = 79,
defrPartitionCbkType = 80,
defrPartitionsEndCbkType = 81,
defrPinPropStartCbkType = 82,
defrPinPropCbkType = 83,
defrPinPropEndCbkType = 84,
defrBlockageStartCbkType = 85,
defrBlockageCbkType = 86,
defrBlockageEndCbkType = 87,
defrSlotStartCbkType = 88,
defrSlotCbkType = 89,
defrSlotEndCbkType = 90,
defrFillStartCbkType = 91,
defrFillCbkType = 92,
defrFillEndCbkType = 93,
defrCaseSensitiveCbkType = 94,
defrNonDefaultStartCbkType = 95,
defrNonDefaultCbkType = 96,
defrNonDefaultEndCbkType = 97,
defrStylesStartCbkType = 98,
defrStylesCbkType = 99,
defrStylesEndCbkType = 100,
defrExtensionCbkType = 101,
/* NEW CALLBACK - If you are creating a new callback, you must add */
/* a unique item to this enum for each callback routine. When the */
/* callback is called in def.y you have to supply this enum item */
/* as an argument in the call. */
defrComponentMaskShiftLayerCbkType = 102,
defrDesignEndCbkType = 103
} defrCallbackType_e;
/* Declarations of function signatures for each type of callback. */
/* These declarations are type-safe when compiling with ANSI C */
/* or C++; you will only be able to register a function pointer */
/* with the correct signature for a given type of callback. */
/* */
/* Each callback function is expected to return 0 if successful. */
/* A non-zero return code will cause the reader to abort. */
/* */
/* The defrDesignStart and defrDesignEnd callback is only called once. */
/* Other callbacks may be called multiple times, each time with a different */
/* set of data. */
/* */
/* For each callback, the Def API will make the callback to the */
/* function supplied by the client, which should either make a copy */
/* of the Def object, or store the data in the client's own data structures. */
/* The Def API will delete or reuse each object after making the callback, */
/* so the client should not keep a pointer to it. */
/* */
/* All callbacks pass the user data pointer provided in defrRead() */
/* or defrSetUserData() back to the client; this can be used by the */
/* client to obtain access to the rest of the client's data structures. */
/* */
/* The user data pointer is obtained using defrGetUserData() immediately */
/* prior to making each callback, so the client is free to change the */
/* user data on the fly if necessary. */
/* */
/* Callbacks with the same signature are passed a callback type */
/* parameter, which allows an application to write a single callback */
/* function, register that function for multiple callbacks, then */
/* switch based on the callback type to handle the appropriate type of */
/* data. */
/* A declaration of the signature of all callbacks that return nothing. */
typedef int (*defrVoidCbkFnType) (defrCallbackType_e, void* v, defiUserData);
/* A declaration of the signature of all callbacks that return a string. */
typedef int (*defrStringCbkFnType) (defrCallbackType_e, const char *string, defiUserData);
/* A declaration of the signature of all callbacks that return a integer. */
typedef int (*defrIntegerCbkFnType) (defrCallbackType_e, int number, defiUserData);
/* A declaration of the signature of all callbacks that return a double. */
typedef int (*defrDoubleCbkFnType) (defrCallbackType_e, double number, defiUserData);
/* A declaration of the signature of all callbacks that return a defiProp. */
typedef int (*defrPropCbkFnType) (defrCallbackType_e, defiProp *prop, defiUserData);
/* A declaration of the signature of all callbacks that return a defiSite. */
typedef int (*defrSiteCbkFnType) (defrCallbackType_e, defiSite *site, defiUserData);
/* A declaration of the signature of all callbacks that return a defComponent */
typedef int (*defrComponentCbkFnType) (defrCallbackType_e, defiComponent *comp, defiUserData);
/* A declaration of the signature of all callbacks that return a defComponent */
typedef int (*defrComponentMaskShiftLayerCbkFnType) (defrCallbackType_e, defiComponentMaskShiftLayer *comp, defiUserData);
/* A declaration of the signature of all callbacks that return a defNet. */
typedef int (*defrNetCbkFnType) (defrCallbackType_e, defiNet *net, defiUserData);
/* A declaration of the signature of all callbacks that return a defPath. */
typedef int (*defrPathCbkFnType) (defrCallbackType_e, defiPath *path, defiUserData);
/* A declaration of the signature of all callbacks that return a defiBox. */
typedef int (*defrBoxCbkFnType) (defrCallbackType_e, defiBox *box, defiUserData);
/* A declaration of the signature of all callbacks that return a defiPinCap. */
typedef int (*defrPinCapCbkFnType) (defrCallbackType_e, defiPinCap *pincap, defiUserData);
/* A declaration of the signature of all callbacks that return a defiPin. */
typedef int (*defrPinCbkFnType) (defrCallbackType_e, defiPin *pin, defiUserData);
/* A declaration of the signature of all callbacks that return a defiRow. */
typedef int (*defrRowCbkFnType) (defrCallbackType_e, defiRow *row, defiUserData);
/* A declaration of the signature of all callbacks that return a defiTrack. */
typedef int (*defrTrackCbkFnType) (defrCallbackType_e, defiTrack *track, defiUserData);
/* A declaration of the signature of all callbacks that return a defiGcellGri */
typedef int (*defrGcellGridCbkFnType) (defrCallbackType_e, defiGcellGrid *grid, defiUserData);
/* A declaration of the signature of all callbacks that return a defiVia. */
typedef int (*defrViaCbkFnType) (defrCallbackType_e, defiVia *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiRegion. */
typedef int (*defrRegionCbkFnType) (defrCallbackType_e, defiRegion *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiGroup. */
typedef int (*defrGroupCbkFnType) (defrCallbackType_e, defiGroup *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiAssertio */
typedef int (*defrAssertionCbkFnType) (defrCallbackType_e, defiAssertion *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiScanChai */
typedef int (*defrScanchainCbkFnType) (defrCallbackType_e, defiScanchain *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiIOTiming */
typedef int (*defrIOTimingCbkFnType) (defrCallbackType_e, defiIOTiming *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiFPC. */
typedef int (*defrFPCCbkFnType) (defrCallbackType_e, defiFPC *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiTimingDi */
typedef int (*defrTimingDisableCbkFnType) (defrCallbackType_e, defiTimingDisable *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiPartitio */
typedef int (*defrPartitionCbkFnType) (defrCallbackType_e, defiPartition *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiPinProp. */
typedef int (*defrPinPropCbkFnType) (defrCallbackType_e, defiPinProp *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiBlockage */
typedef int (*defrBlockageCbkFnType) (defrCallbackType_e, defiBlockage *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiSlot. */
typedef int (*defrSlotCbkFnType) (defrCallbackType_e, defiSlot *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiFill. */
typedef int (*defrFillCbkFnType) (defrCallbackType_e, defiFill *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiNonDefau */
typedef int (*defrNonDefaultCbkFnType) (defrCallbackType_e, defiNonDefault *, defiUserData);
/* A declaration of the signature of all callbacks that return a defiStyles. */
typedef int (*defrStylesCbkFnType) (defrCallbackType_e, defiStyles *, defiUserData);
/* NEW CALLBACK - Each callback must return user data, enum, and */
/* OUR-DATA item. We must define a callback function type for */
/* each type of OUR-DATA. Some routines return a string, some */
/* return an integer, and some return a pointer to a class. */
/* If you create a new class, then you must create a new function */
/* type here to return that class to the user. */
/* The reader initialization. Must be called before defrRead(). */
EXTERN int defrInit ();
EXTERN int defrInitSession (int startSession);
/* obsoleted now. */
EXTERN int defrReset ();
/*Sets all parser memory into init state. */
EXTERN int defrClear ();
/* Change the comment character in the DEF file. The default */
/* is '#' */
EXTERN void defrSetCommentChar (char c);
/* Functions to call to set specific actions in the parser. */
EXTERN void defrSetAddPathToNet ();
EXTERN void defrSetAllowComponentNets ();
EXTERN int defrGetAllowComponentNets ();
EXTERN void defrSetCaseSensitivity (int caseSense);
/* Functions to keep track of callbacks that the user did not */
/* supply. Normally all parts of the DEF file that the user */
/* does not supply a callback for will be ignored. These */
/* routines tell the parser count the DEF constructs that are */
/* present in the input file, but did not trigger a callback. */
/* This should help you find any "important" DEF constructs that */
/* you are ignoring. */
EXTERN void defrSetRegisterUnusedCallbacks ();
EXTERN void defrPrintUnusedCallbacks (FILE* log);
/* Obsoleted now. */
EXTERN int defrReleaseNResetMemory ();
/* The main reader function. */
/* The file should already be opened. This requirement allows */
/* the reader to be used with stdin or a pipe. The file name */
/* is only used for error messages. */
EXTERN int defrRead (FILE * file, const char * fileName, defiUserData userData, int case_sensitive);
/* Set/get the client-provided user data. defi doesn't look at */
/* this data at all, it simply passes the opaque defiUserData pointer */
/* back to the application with each callback. The client can */
/* change the data at any time, and it will take effect on the */
/* next callback. The defi reader and writer maintain separate */
/* user data pointers. */
EXTERN void defrSetUserData (defiUserData p0);
EXTERN defiUserData defrGetUserData ();
/* Functions to call to register a callback function or get the function */
/*pointer after it has been registered. */
/* */
/* Register one function for all callbacks with the same signature */
EXTERN void defrSetArrayNameCbk (defrStringCbkFnType p0);
EXTERN void defrSetAssertionCbk (defrAssertionCbkFnType p0);
EXTERN void defrSetAssertionsStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetAssertionsEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetBlockageCbk (defrBlockageCbkFnType p0);
EXTERN void defrSetBlockageStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetBlockageEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetBusBitCbk (defrStringCbkFnType p0);
EXTERN void defrSetCannotOccupyCbk (defrSiteCbkFnType p0);
EXTERN void defrSetCanplaceCbk (defrSiteCbkFnType p0);
EXTERN void defrSetCaseSensitiveCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetComponentCbk (defrComponentCbkFnType p0);
EXTERN void defrSetComponentExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetComponentStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetComponentEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetConstraintCbk (defrAssertionCbkFnType p0);
EXTERN void defrSetConstraintsStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetConstraintsEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetDefaultCapCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetDesignCbk (defrStringCbkFnType p0);
EXTERN void defrSetDesignEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetDieAreaCbk (defrBoxCbkFnType p0);
EXTERN void defrSetDividerCbk (defrStringCbkFnType p0);
EXTERN void defrSetExtensionCbk (defrStringCbkFnType p0);
EXTERN void defrSetFillCbk (defrFillCbkFnType p0);
EXTERN void defrSetFillStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetFillEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetFPCCbk (defrFPCCbkFnType p0);
EXTERN void defrSetFPCStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetFPCEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetFloorPlanNameCbk (defrStringCbkFnType p0);
EXTERN void defrSetGcellGridCbk (defrGcellGridCbkFnType p0);
EXTERN void defrSetGroupNameCbk (defrStringCbkFnType p0);
EXTERN void defrSetGroupMemberCbk (defrStringCbkFnType p0);
EXTERN void defrSetComponentMaskShiftLayerCbk (defrComponentMaskShiftLayerCbkFnType p0);
EXTERN void defrSetGroupCbk (defrGroupCbkFnType p0);
EXTERN void defrSetGroupExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetGroupsStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetGroupsEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetHistoryCbk (defrStringCbkFnType p0);
EXTERN void defrSetIOTimingCbk (defrIOTimingCbkFnType p0);
EXTERN void defrSetIOTimingsStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetIOTimingsEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetIoTimingsExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetNetCbk (defrNetCbkFnType p0);
EXTERN void defrSetNetNameCbk (defrStringCbkFnType p0);
EXTERN void defrSetNetNonDefaultRuleCbk (defrStringCbkFnType p0);
EXTERN void defrSetNetConnectionExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetNetExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetNetPartialPathCbk (defrNetCbkFnType p0);
EXTERN void defrSetNetSubnetNameCbk (defrStringCbkFnType p0);
EXTERN void defrSetNetStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetNetEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetNonDefaultCbk (defrNonDefaultCbkFnType p0);
EXTERN void defrSetNonDefaultStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetNonDefaultEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetPartitionCbk (defrPartitionCbkFnType p0);
EXTERN void defrSetPartitionsExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetPartitionsStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetPartitionsEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetPathCbk (defrPathCbkFnType p0);
EXTERN void defrSetPinCapCbk (defrPinCapCbkFnType p0);
EXTERN void defrSetPinCbk (defrPinCbkFnType p0);
EXTERN void defrSetPinExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetPinPropCbk (defrPinPropCbkFnType p0);
EXTERN void defrSetPinPropStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetPinPropEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetPropCbk (defrPropCbkFnType p0);
EXTERN void defrSetPropDefEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetPropDefStartCbk (defrVoidCbkFnType p0);
EXTERN void defrSetRegionCbk (defrRegionCbkFnType p0);
EXTERN void defrSetRegionStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetRegionEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetRowCbk (defrRowCbkFnType p0);
EXTERN void defrSetSNetCbk (defrNetCbkFnType p0);
EXTERN void defrSetSNetStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetSNetEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetSNetPartialPathCbk (defrNetCbkFnType p0);
EXTERN void defrSetSNetWireCbk (defrNetCbkFnType p0);
EXTERN void defrSetScanChainExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetScanchainCbk (defrScanchainCbkFnType p0);
EXTERN void defrSetScanchainsStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetScanchainsEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetSiteCbk (defrSiteCbkFnType p0);
EXTERN void defrSetSlotCbk (defrSlotCbkFnType p0);
EXTERN void defrSetSlotStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetSlotEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetStartPinsCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetStylesCbk (defrStylesCbkFnType p0);
EXTERN void defrSetStylesStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetStylesEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetPinEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetTechnologyCbk (defrStringCbkFnType p0);
EXTERN void defrSetTimingDisableCbk (defrTimingDisableCbkFnType p0);
EXTERN void defrSetTimingDisablesStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetTimingDisablesEndCbk (defrVoidCbkFnType p0);
EXTERN void defrSetTrackCbk (defrTrackCbkFnType p0);
EXTERN void defrSetUnitsCbk (defrDoubleCbkFnType p0);
EXTERN void defrSetVersionCbk (defrDoubleCbkFnType p0);
EXTERN void defrSetVersionStrCbk (defrStringCbkFnType p0);
EXTERN void defrSetViaCbk (defrViaCbkFnType p0);
EXTERN void defrSetViaExtCbk (defrStringCbkFnType p0);
EXTERN void defrSetViaStartCbk (defrIntegerCbkFnType p0);
EXTERN void defrSetViaEndCbk (defrVoidCbkFnType p0);
/* NEW CALLBACK - For each new callback you create, you must */
/* create a routine that allows the user to set it. Add the */
/* setting routines here. */
/*Set all of the callbacks that have not yet been set to the following */
/*function. This is especially useful if you want to check to see */
/*if you forgot anything. */
EXTERN void defrUnsetCallbacks ();
/* Functions to call to unregister a callback function. */
EXTERN void defrUnsetArrayNameCbk ();
EXTERN void defrUnsetAssertionCbk ();
EXTERN void defrUnsetAssertionsStartCbk ();
EXTERN void defrUnsetAssertionsEndCbk ();
EXTERN void defrUnsetBlockageCbk ();
EXTERN void defrUnsetBlockageStartCbk ();
EXTERN void defrUnsetBlockageEndCbk ();
EXTERN void defrUnsetBusBitCbk ();
EXTERN void defrUnsetCannotOccupyCbk ();
EXTERN void defrUnsetCanplaceCbk ();
EXTERN void defrUnsetCaseSensitiveCbk ();
EXTERN void defrUnsetComponentCbk ();
EXTERN void defrUnsetComponentExtCbk ();
EXTERN void defrUnsetComponentStartCbk ();
EXTERN void defrUnsetComponentEndCbk ();
EXTERN void defrUnsetConstraintCbk ();
EXTERN void defrUnsetConstraintsStartCbk ();
EXTERN void defrUnsetConstraintsEndCbk ();
EXTERN void defrUnsetDefaultCapCbk ();
EXTERN void defrUnsetDesignCbk ();
EXTERN void defrUnsetDesignEndCbk ();
EXTERN void defrUnsetDieAreaCbk ();
EXTERN void defrUnsetDividerCbk ();
EXTERN void defrUnsetExtensionCbk ();
EXTERN void defrUnsetFillCbk ();
EXTERN void defrUnsetFillStartCbk ();
EXTERN void defrUnsetFillEndCbk ();
EXTERN void defrUnsetFPCCbk ();
EXTERN void defrUnsetFPCStartCbk ();
EXTERN void defrUnsetFPCEndCbk ();
EXTERN void defrUnsetFloorPlanNameCbk ();
EXTERN void defrUnsetGcellGridCbk ();
EXTERN void defrUnsetGroupCbk ();
EXTERN void defrUnsetGroupExtCbk ();
EXTERN void defrUnsetGroupMemberCbk ();
EXTERN void defrUnsetComponentMaskShiftLayerCbk ();
EXTERN void defrUnsetGroupNameCbk ();
EXTERN void defrUnsetGroupsStartCbk ();
EXTERN void defrUnsetGroupsEndCbk ();
EXTERN void defrUnsetHistoryCbk ();
EXTERN void defrUnsetIOTimingCbk ();
EXTERN void defrUnsetIOTimingsStartCbk ();
EXTERN void defrUnsetIOTimingsEndCbk ();
EXTERN void defrUnsetIOTimingsExtCbk ();
EXTERN void defrUnsetNetCbk ();
EXTERN void defrUnsetNetNameCbk ();
EXTERN void defrUnsetNetNonDefaultRuleCbk ();
EXTERN void defrUnsetNetConnectionExtCbk ();
EXTERN void defrUnsetNetExtCbk ();
EXTERN void defrUnsetNetPartialPathCbk ();
EXTERN void defrUnsetNetSubnetNameCbk ();
EXTERN void defrUnsetNetStartCbk ();
EXTERN void defrUnsetNetEndCbk ();
EXTERN void defrUnsetNonDefaultCbk ();
EXTERN void defrUnsetNonDefaultStartCbk ();
EXTERN void defrUnsetNonDefaultEndCbk ();
EXTERN void defrUnsetPartitionCbk ();
EXTERN void defrUnsetPartitionsExtCbk ();
EXTERN void defrUnsetPartitionsStartCbk ();
EXTERN void defrUnsetPartitionsEndCbk ();
EXTERN void defrUnsetPathCbk ();
EXTERN void defrUnsetPinCapCbk ();
EXTERN void defrUnsetPinCbk ();
EXTERN void defrUnsetPinEndCbk ();
EXTERN void defrUnsetPinExtCbk ();
EXTERN void defrUnsetPinPropCbk ();
EXTERN void defrUnsetPinPropStartCbk ();
EXTERN void defrUnsetPinPropEndCbk ();
EXTERN void defrUnsetPropCbk ();
EXTERN void defrUnsetPropDefEndCbk ();
EXTERN void defrUnsetPropDefStartCbk ();
EXTERN void defrUnsetRegionCbk ();
EXTERN void defrUnsetRegionStartCbk ();
EXTERN void defrUnsetRegionEndCbk ();
EXTERN void defrUnsetRowCbk ();
EXTERN void defrUnsetScanChainExtCbk ();
EXTERN void defrUnsetScanchainCbk ();
EXTERN void defrUnsetScanchainsStartCbk ();
EXTERN void defrUnsetScanchainsEndCbk ();
EXTERN void defrUnsetSiteCbk ();
EXTERN void defrUnsetSlotCbk ();
EXTERN void defrUnsetSlotStartCbk ();
EXTERN void defrUnsetSlotEndCbk ();
EXTERN void defrUnsetSNetWireCbk ();
EXTERN void defrUnsetSNetCbk ();
EXTERN void defrUnsetSNetStartCbk ();
EXTERN void defrUnsetSNetEndCbk ();
EXTERN void defrUnsetSNetPartialPathCbk ();
EXTERN void defrUnsetStartPinsCbk ();
EXTERN void defrUnsetStylesCbk ();
EXTERN void defrUnsetStylesStartCbk ();
EXTERN void defrUnsetStylesEndCbk ();
EXTERN void defrUnsetTechnologyCbk ();
EXTERN void defrUnsetTimingDisableCbk ();
EXTERN void defrUnsetTimingDisablesStartCbk ();
EXTERN void defrUnsetTimingDisablesEndCbk ();
EXTERN void defrUnsetTrackCbk ();
EXTERN void defrUnsetUnitsCbk ();
EXTERN void defrUnsetVersionCbk ();
EXTERN void defrUnsetVersionStrCbk ();
EXTERN void defrUnsetViaCbk ();
EXTERN void defrUnsetViaExtCbk ();
EXTERN void defrUnsetViaStartCbk ();
EXTERN void defrUnsetViaEndCbk ();
/* Routine to set all unused callbacks. This is useful for checking */
/*to see if you missed something. */
EXTERN void defrSetUnusedCallbacks (defrVoidCbkFnType func);
/* Return the current line number in the input file. */
EXTERN int defrLineNumber ();
EXTERN long long defrLongLineNumber ();
/* Routine to set the message logging routine for errors */
typedef void (*DEFI_LOG_FUNCTION) (const char*);
EXTERN void defrSetLogFunction (DEFI_LOG_FUNCTION p0);
/* Routine to set the message logging routine for warnings */
#ifndef DEFI_WARNING_LOG_FUNCTION
typedef void (*DEFI_WARNING_LOG_FUNCTION) (const char*);
#endif
EXTERN void defrSetWarningLogFunction (DEFI_WARNING_LOG_FUNCTION p0);
/* Routine to set the user defined malloc routine */
typedef void* (*DEFI_MALLOC_FUNCTION) (size_t);
EXTERN void defrSetMallocFunction (DEFI_MALLOC_FUNCTION p0);
/* Routine to set the user defined realloc routine */
typedef void* (*DEFI_REALLOC_FUNCTION) (void*, size_t);
EXTERN void defrSetReallocFunction (DEFI_REALLOC_FUNCTION p0);
/* Routine to set the user defined free routine */
typedef void (*DEFI_FREE_FUNCTION) (void *);
EXTERN void defrSetFreeFunction (DEFI_FREE_FUNCTION p0);
/* Routine to set the line number of the file that is parsing routine (takes */
typedef void (*DEFI_LINE_NUMBER_FUNCTION) (int);
EXTERN void defrSetLineNumberFunction (DEFI_LINE_NUMBER_FUNCTION p0);
/* Routine to set the line number of the file that is parsing routine (takes */
typedef void (*DEFI_LONG_LINE_NUMBER_FUNCTION) (long long);
EXTERN void defrSetLongLineNumberFunction (DEFI_LONG_LINE_NUMBER_FUNCTION p0);
/* Set the number of lines before calling the line function callback routine */
/* Default is 10000 */
EXTERN void defrSetDeltaNumberLines (int p0);
/* Routine to set the read function */
typedef size_t (*DEFI_READ_FUNCTION) (FILE*, char*, size_t);
EXTERN void defrSetReadFunction (DEFI_READ_FUNCTION p0);
EXTERN void defrUnsetReadFunction ();
/* Routine to set the defrWarning.log to open as append instead for write */
/* New in 5.7 */
EXTERN void defrSetOpenLogFileAppend ();
EXTERN void defrUnsetOpenLogFileAppend ();
/* Routine to set the magic comment found routine */
typedef void (*DEFI_MAGIC_COMMENT_FOUND_FUNCTION) ();
EXTERN void defrSetMagicCommentFoundFunction (DEFI_MAGIC_COMMENT_FOUND_FUNCTION p0);
/* Routine to set the magic comment string */
EXTERN void defrSetMagicCommentString (char * p0);
/* Routine to disable string property value process, default it will process */
/* the value string */
EXTERN void defrDisablePropStrProcess ();
/* Testing purposes only */
EXTERN void defrSetNLines (long long n);
/* Routine to set the max number of warnings for a perticular section */
EXTERN void defrSetAssertionWarnings (int warn);
EXTERN void defrSetBlockageWarnings (int warn);
EXTERN void defrSetCaseSensitiveWarnings (int warn);
EXTERN void defrSetComponentWarnings (int warn);
EXTERN void defrSetConstraintWarnings (int warn);
EXTERN void defrSetDefaultCapWarnings (int warn);
EXTERN void defrSetGcellGridWarnings (int warn);
EXTERN void defrSetIOTimingWarnings (int warn);
EXTERN void defrSetNetWarnings (int warn);
EXTERN void defrSetNonDefaultWarnings (int warn);
EXTERN void defrSetPinExtWarnings (int warn);
EXTERN void defrSetPinWarnings (int warn);
EXTERN void defrSetRegionWarnings (int warn);
EXTERN void defrSetRowWarnings (int warn);
EXTERN void defrSetScanchainWarnings (int warn);
EXTERN void defrSetSNetWarnings (int warn);
EXTERN void defrSetStylesWarnings (int warn);
EXTERN void defrSetTrackWarnings (int warn);
EXTERN void defrSetUnitsWarnings (int warn);
EXTERN void defrSetVersionWarnings (int warn);
EXTERN void defrSetViaWarnings (int warn);
/* Handling output messages */
EXTERN void defrDisableParserMsgs (int nMsg, int* msgs);
EXTERN void defrEnableParserMsgs (int nMsg, int* msgs);
EXTERN void defrEnableAllMsgs ();
EXTERN void defrSetTotalMsgLimit (int totNumMsgs);
EXTERN void defrSetLimitPerMsg (int msgId, int numMsg);
/* Return codes for the user callbacks. */
/*The user should return one of these values. */
#define PARSE_OK 0
#define STOP_PARSE 1
#define PARSE_ERROR 2
/* Add this alias to the list for the parser */
EXTERN void defrAddAlias (const char* key, const char* value, int marked);
#endif