1 /*------------------------------------------------------------\ 2 | | 3 | This file is part of the Alliance CAD System Copyright | 4 | (C) Laboratoire LIP6 - D�partement ASIM Universite P&M Curie| 5 | | 6 | Home page : http://www-asim.lip6.fr/alliance/ | 7 | E-mail : mailto:alliance-users@asim.lip6.fr | 8 | | 9 | This progam is free software; you can redistribute it | 10 | and/or modify it under the terms of the GNU General Public | 11 | License as published by the Free Software Foundation; | 12 | either version 2 of the License, or (at your option) any | 13 | later version. | 14 | | 15 | Alliance VLSI CAD System is distributed in the hope that | 16 | it will be useful, but WITHOUT ANY WARRANTY; | 17 | without even the implied warranty of MERCHANTABILITY or | 18 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | 19 | Public License for more details. | 20 | | 21 | You should have received a copy of the GNU General Public | 22 | License along with the GNU C Library; see the file COPYING. | 23 | If not, write to the Free Software Foundation, Inc., | 24 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 25 | | 26 \------------------------------------------------------------*/ 27 28 /*------------------------------------------------------------\ 29 | | 30 | Tool : GRAAL | 31 | | 32 | File : GRM101.h | 33 | | 34 | Author : Jacomme Ludovic | 35 | | 36 | Date : 28.03.95 | 37 | | 38 \------------------------------------------------------------*/ 39 40 /*------------------------------------------------------------\ 41 | | 42 | Constants | 43 | | 44 \------------------------------------------------------------*/ 45 46 # ifndef GRAAL_GRM 47 # define GRAAL_GRM 48 49 # define GRAAL_SIZE (sizeof( graalrec )) 50 51 # define GRAAL_MAX_REC 8 52 # define GRAAL_ONE_WINDOW (long)0x00010000 53 # define GRAAL_DELETED (long)0x00020000 54 # define GRAAL_ACCEPTED (long)0x00040000 55 # define GRAAL_TREATED (long)0x00080000 56 # define GRAAL_FLATTEN (long)0x00100000 57 # define GRAAL_PEEK (long)0x00200000 58 # define GRAAL_DRUC (long)0x00400000 59 # define GRAAL_INVISIBLE (long)0x00800000 60 # define GRAAL_CUT (long)0x01000000 61 # define GRAAL_SELECTED (long)0x02000000 62 # define GRAAL_DRAW_TEXT (long)0x04000000 63 # define GRAAL_SEARCH (long)0x08000000 64 65 /*------------------------------------------------------------\ 66 | | 67 | Macros | 68 | | 69 \------------------------------------------------------------*/ 70 71 # define GRAAL_PREVIOUS( R ) \ 72 \ 73 (((graalrec *)((char *)(R)+sizeof(rdsrec_list)))->PREVIOUS) 74 75 # define GRAAL_MBK( R ) \ 76 \ 77 (((graalrec *)((char *)(R)+sizeof(rdsrec_list)))->MBK ) 78 79 # define GRAAL_WINDOW( R ) \ 80 \ 81 (((graalrec *)((char *)(R)+sizeof(rdsrec_list)))->WINDOW ) 82 83 # define GRAAL_EQUI( R ) \ 84 \ 85 (((graalrec *)((char *)(R)+sizeof(rdsrec_list)))->EQUI ) 86 87 /*------------------------------------------------------------\ 88 | | 89 | Macros | 90 | | 91 \------------------------------------------------------------*/ 92 /*------------------------------------------------------------\ 93 | | 94 | Windows | 95 | | 96 \------------------------------------------------------------*/ 97 98 # define IsGraalOneWindow( Rectangle ) \ 99 \ 100 ( ( Rectangle )->FLAGS & GRAAL_ONE_WINDOW ) 101 102 # define SetGraalOneWindow( Rectangle ) \ 103 \ 104 ( ( Rectangle )->FLAGS |= GRAAL_ONE_WINDOW ) 105 106 # define ClearGraalOneWindow( Rectangle ) \ 107 \ 108 ( ( Rectangle )->FLAGS &= ~GRAAL_ONE_WINDOW ) 109 110 /*------------------------------------------------------------\ 111 | | 112 | Search | 113 | | 114 \------------------------------------------------------------*/ 115 116 # define IsGraalSearch( Rectangle ) \ 117 \ 118 ( ( Rectangle )->FLAGS & GRAAL_SEARCH ) 119 120 # define SetGraalSearch( Rectangle ) \ 121 \ 122 ( ( Rectangle )->FLAGS |= GRAAL_SEARCH ) 123 124 # define ClearGraalSearch( Rectangle ) \ 125 \ 126 ( ( Rectangle )->FLAGS &= ~GRAAL_SEARCH ) 127 128 /*------------------------------------------------------------\ 129 | | 130 | Deleted | 131 | | 132 \------------------------------------------------------------*/ 133 134 # define IsGraalDeleted( Rectangle ) \ 135 \ 136 ( ( Rectangle )->FLAGS & GRAAL_DELETED ) 137 138 # define SetGraalDeleted( Rectangle ) \ 139 \ 140 ( ( Rectangle )->FLAGS |= GRAAL_DELETED ) 141 142 # define ClearGraalDeleted( Rectangle ) \ 143 \ 144 ( ( Rectangle )->FLAGS &= ~GRAAL_DELETED ) 145 146 /*------------------------------------------------------------\ 147 | | 148 | Accepted | 149 | | 150 \------------------------------------------------------------*/ 151 152 # define IsGraalAccepted( Rectangle ) \ 153 \ 154 ( ( Rectangle )->FLAGS & GRAAL_ACCEPTED ) 155 156 # define SetGraalAccepted( Rectangle ) \ 157 \ 158 ( ( Rectangle )->FLAGS |= GRAAL_ACCEPTED ) 159 160 # define ClearGraalAccepted( Rectangle ) \ 161 \ 162 ( ( Rectangle )->FLAGS &= ~GRAAL_ACCEPTED) 163 164 /*------------------------------------------------------------\ 165 | | 166 | Selected | 167 | | 168 \------------------------------------------------------------*/ 169 170 # define IsGraalSelected( Rectangle ) \ 171 \ 172 ( ( Rectangle )->FLAGS & GRAAL_SELECTED ) 173 174 # define SetGraalSelected( Rectangle ) \ 175 \ 176 ( ( Rectangle )->FLAGS |= GRAAL_SELECTED ) 177 178 # define ClearGraalSelected( Rectangle ) \ 179 \ 180 ( ( Rectangle )->FLAGS &= ~GRAAL_SELECTED) 181 182 /*------------------------------------------------------------\ 183 | | 184 | Treated | 185 | | 186 \------------------------------------------------------------*/ 187 188 # define IsGraalTreated( Rectangle ) \ 189 \ 190 ( ( Rectangle )->FLAGS & GRAAL_TREATED ) 191 192 # define SetGraalTreated( Rectangle ) \ 193 \ 194 ( ( Rectangle )->FLAGS |= GRAAL_TREATED ) 195 196 # define ClearGraalTreated( Rectangle ) \ 197 \ 198 ( ( Rectangle )->FLAGS &= ~GRAAL_TREATED ) 199 200 /*------------------------------------------------------------\ 201 | | 202 | DrawText | 203 | | 204 \------------------------------------------------------------*/ 205 206 # define IsGraalDrawText( Rectangle ) \ 207 \ 208 ( ( Rectangle )->FLAGS & GRAAL_DRAW_TEXT ) 209 210 # define SetGraalDrawText( Rectangle ) \ 211 \ 212 ( ( Rectangle )->FLAGS |= GRAAL_DRAW_TEXT ) 213 214 # define ClearGraalDrawText( Rectangle ) \ 215 \ 216 ( ( Rectangle )->FLAGS &= ~GRAAL_DRAW_TEXT ) 217 218 /*------------------------------------------------------------\ 219 | | 220 | Flatten | 221 | | 222 \------------------------------------------------------------*/ 223 224 # define IsGraalFlatten( Rectangle ) \ 225 \ 226 ( ( Rectangle )->FLAGS & GRAAL_FLATTEN ) 227 228 # define SetGraalFlatten( Rectangle ) \ 229 \ 230 ( ( Rectangle )->FLAGS |= GRAAL_FLATTEN ) 231 232 # define ClearGraalFlatten( Rectangle ) \ 233 \ 234 ( ( Rectangle )->FLAGS &= ~GRAAL_FLATTEN ) 235 236 /*------------------------------------------------------------\ 237 | | 238 | Peek | 239 | | 240 \------------------------------------------------------------*/ 241 242 # define IsGraalPeek( Rectangle ) \ 243 \ 244 ( ( Rectangle )->FLAGS & GRAAL_PEEK ) 245 246 # define SetGraalPeek( Rectangle ) \ 247 \ 248 ( ( Rectangle )->FLAGS |= GRAAL_PEEK ) 249 250 # define ClearGraalPeek( Rectangle ) \ 251 \ 252 ( ( Rectangle )->FLAGS &= ~GRAAL_PEEK ) 253 254 /*------------------------------------------------------------\ 255 | | 256 | Druc | 257 | | 258 \------------------------------------------------------------*/ 259 260 # define IsGraalDruc( Rectangle ) \ 261 \ 262 ( ( Rectangle )->FLAGS & GRAAL_DRUC ) 263 264 # define SetGraalDruc( Rectangle ) \ 265 \ 266 ( ( Rectangle )->FLAGS |= GRAAL_DRUC ) 267 268 # define ClearGraalDruc( Rectangle ) \ 269 \ 270 ( ( Rectangle )->FLAGS &= ~GRAAL_DRUC ) 271 272 /*------------------------------------------------------------\ 273 | | 274 | Invisible | 275 | | 276 \------------------------------------------------------------*/ 277 278 # define IsGraalInvisible( Rectangle ) \ 279 \ 280 ( ( Rectangle )->FLAGS & GRAAL_INVISIBLE ) 281 282 # define SetGraalInvisible( Rectangle ) \ 283 \ 284 ( ( Rectangle )->FLAGS |= GRAAL_INVISIBLE ) 285 286 # define ClearGraalInvisible( Rectangle ) \ 287 \ 288 ( ( Rectangle )->FLAGS &= ~GRAAL_INVISIBLE ) 289 290 /*------------------------------------------------------------\ 291 | | 292 | Cut | 293 | | 294 \------------------------------------------------------------*/ 295 296 # define IsGraalCut( Rectangle ) \ 297 \ 298 ( ( Rectangle )->FLAGS & GRAAL_CUT ) 299 300 # define SetGraalCut( Rectangle ) \ 301 \ 302 ( ( Rectangle )->FLAGS |= GRAAL_CUT ) 303 304 # define ClearGraalCut( Rectangle ) \ 305 \ 306 ( ( Rectangle )->FLAGS &= ~GRAAL_CUT ) 307 308 /*------------------------------------------------------------\ 309 | | 310 | Types | 311 | | 312 \------------------------------------------------------------*/ 313 /*------------------------------------------------------------\ 314 | | 315 | Graal Windows | 316 | | 317 \------------------------------------------------------------*/ 318 319 typedef struct graalwinrec 320 321 { 322 struct graalwinrec *NEXT; 323 rdsrec_list *RECTAB[ GRAAL_MAX_REC ]; 324 325 } graalwinrec; 326 327 typedef struct graalwin 328 329 { 330 struct graalwinrec **LAYERTAB; 331 332 } graalwin; 333 334 typedef struct graalrecwin 335 336 { 337 struct graalrecwin *NEXT; 338 graalwin *WINDOW; 339 340 } graalrecwin; 341 342 /*------------------------------------------------------------\ 343 | | 344 | Graal Undo | 345 | | 346 \------------------------------------------------------------*/ 347 348 typedef struct graalundorec 349 350 { 351 struct graalundorec *NEXT; 352 rdsrec_list *RECTANGLE; 353 354 } graalundorec; 355 356 typedef struct graalundo 357 358 { 359 struct graalundo *NEXT; 360 graalundorec *UNDO; 361 362 } graalundo; 363 364 /*------------------------------------------------------------\ 365 | | 366 | Graal Connector | 367 | | 368 \------------------------------------------------------------*/ 369 370 typedef struct graalconrec 371 372 { 373 struct graalconrec *NEXT; 374 rdsrec_list *RECTANGLE; 375 376 } graalconrec; 377 378 /*------------------------------------------------------------\ 379 | | 380 | Graal Select | 381 | | 382 \------------------------------------------------------------*/ 383 384 typedef struct graalselect 385 386 { 387 struct graalselect *NEXT; 388 rdsrec_list *RECTANGLE; 389 390 } graalselect ; 391 392 /*------------------------------------------------------------\ 393 | | 394 | Graal Search | 395 | | 396 \------------------------------------------------------------*/ 397 398 typedef struct graalsearch 399 400 { 401 struct graalsearch *NEXT; 402 rdsrec_list *RECTANGLE; 403 404 } graalsearch; 405 406 /*------------------------------------------------------------\ 407 | | 408 | Graal Peek | 409 | | 410 \------------------------------------------------------------*/ 411 412 typedef struct graalpeek 413 414 { 415 struct graalpeek *NEXT; 416 rdsrec_list *RECTANGLE; 417 418 } graalpeek; 419 420 /*------------------------------------------------------------\ 421 | | 422 | X Rectangle | 423 | | 424 \------------------------------------------------------------*/ 425 426 typedef struct graalrec 427 428 { 429 rdsrec_list **PREVIOUS; 430 void *MBK; 431 graalrecwin *WINDOW; 432 rdsrec_list *EQUI; 433 434 } graalrec; 435 436 /*------------------------------------------------------------\ 437 | | 438 | Variables | 439 | | 440 \------------------------------------------------------------*/ 441 442 extern long GraalBoundXmin; 443 extern long GraalBoundYmin; 444 extern long GraalBoundXmax; 445 extern long GraalBoundYmax; 446 extern char GraalRecomputeBound; 447 448 extern long GraalWindowXmin; 449 extern long GraalWindowYmin; 450 extern long GraalWindowXmax; 451 extern long GraalWindowYmax; 452 extern long GraalWindowDx; 453 extern long GraalWindowDy; 454 extern long GraalWindowSide; 455 extern long GraalWindowSize; 456 extern graalwin *GraalWindowTable; 457 458 extern rdsfig_list *GraalFigureRds; 459 extern rdsfig_list *GraalFigureDruc; 460 extern rdsrec_list *GraalRectangleDruc; 461 extern rdsrec_list *GraalCurrentDruc; 462 extern phfig_list *GraalFigureMbk; 463 464 extern graalundo *GraalHeadRedo; 465 extern graalundo *GraalHeadUndo; 466 extern rdsrec_list *GraalHeadEqui; 467 extern graalselect *GraalHeadSelect; 468 extern graalsearch *GraalHeadSearch; 469 extern graalpeek *GraalHeadPeek; 470 extern graalconrec *GraalHeadConRec; 471 472 /*------------------------------------------------------------\ 473 | | 474 | Functions | 475 | | 476 \------------------------------------------------------------*/ 477 /*------------------------------------------------------------\ 478 | | 479 | Translator MBK => RDS | 480 | | 481 \------------------------------------------------------------*/ 482 483 extern rdsfig_list *Graaldrucrdsfig(); 484 extern char Graalsavephfig(); 485 extern phfig_list *Graalgetphfig(); 486 extern phfig_list *Graalrflattenphfig(); 487 extern phfig_list *Graalflattenphfig(); 488 extern rdsfig_list *Graalgetrdsfig(); 489 extern rdsfig_list *Graalrflattenrdsfig(); 490 extern rdsfig_list *GraalAddFigure(); 491 extern rdsins_list *GraalAddInstance(); 492 extern rdsins_list *GraalFlatInstance(); 493 extern rdsins_list *GraalUnflatInstance(); 494 extern char GraalRealFlatInstance(); 495 extern rdsrec_list *GraalAddSegment(); 496 extern rdsrec_list *GraalAddConnector(); 497 extern rdsrec_list *GraalAddReference(); 498 extern rdsrec_list *GraalAddVia(); 499 extern rdsrec_list *GraalAddAbox(); 500 extern void GraalDelFigure(); 501 extern void GraalDelInstance(); 502 extern void GraalDelRectangle(); 503 extern char GraalSaveFigure(); 504 505 /*------------------------------------------------------------\ 506 | | 507 | Undo Acces Functions | 508 | | 509 \------------------------------------------------------------*/ 510 511 extern void GraalAddUndo(); 512 extern void GraalDelUndo(); 513 extern void GraalAddUndoRec(); 514 extern void GraalInitializeUndo(); 515 516 /*------------------------------------------------------------\ 517 | | 518 | Flag Set & Clear Functions | 519 | | 520 \------------------------------------------------------------*/ 521 522 extern void GraalDeleteRectangle(); 523 extern void GraalUndeleteRectangle(); 524 extern void GraalSelectRectangle(); 525 extern void GraalUnselectRectangle(); 526 extern void GraalAcceptRectangle(); 527 extern void GraalRejectRectangle(); 528 529 /*------------------------------------------------------------\ 530 | | 531 | Select Acces Functions | 532 | | 533 \------------------------------------------------------------*/ 534 535 extern void GraalAddSelect(); 536 extern void GraalDelSelect(); 537 extern void GraalPurgeSelect(); 538 539 /*------------------------------------------------------------\ 540 | | 541 | Search Acces Functions | 542 | | 543 \------------------------------------------------------------*/ 544 545 extern void GraalAddSearch(); 546 extern void GraalDelSearch(); 547 548 /*------------------------------------------------------------\ 549 | | 550 | Peek Acces Functions | 551 | | 552 \------------------------------------------------------------*/ 553 554 extern void GraalPeekInstance(); 555 extern void GraalAddPeek(); 556 extern void GraalDelPeek(); 557 558 /*------------------------------------------------------------\ 559 | | 560 | Equi Extract Functions | 561 | | 562 \------------------------------------------------------------*/ 563 564 extern void GraalExtractEqui(); 565 extern void GraalDelEqui(); 566 567 /*------------------------------------------------------------\ 568 | | 569 | Druc Acces Functions | 570 | | 571 \------------------------------------------------------------*/ 572 573 extern rdsrec_list *GraalAddDruc(); 574 extern void GraalDelDruc(); 575 extern void GraalDelDrucFigure(); 576 577 /*------------------------------------------------------------\ 578 | | 579 | Bound Compute | 580 | | 581 \------------------------------------------------------------*/ 582 583 extern char GraalComputeBound(); 584 585 /*------------------------------------------------------------\ 586 | | 587 | Window Acces Functions | 588 | | 589 \------------------------------------------------------------*/ 590 591 extern void GraalInitializeWindowTable(); 592 593 /*------------------------------------------------------------\ 594 | | 595 | Error Message Functions | 596 | | 597 \------------------------------------------------------------*/ 598 599 extern char *GraalGetErrorMessage(); 600 extern void GraalExitErrorMessage(); 601 602 /*------------------------------------------------------------\ 603 | | 604 | Informations Functions | 605 | | 606 \------------------------------------------------------------*/ 607 608 extern char *GraalGetInformations(); 609 610 # endif 611