home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 January / Chip_1997-01_cd.bin / ms95 / disk22 / dir04 / f011480.re_ / f011480.re
Text File  |  1996-04-02  |  5KB  |  146 lines

  1. /*----------------------------------------------------------------------+
  2. |                                    |
  3. |  Copyright (c) 1985-93;  Bentley Systems, Inc., All rights reserved.    |
  4. |                                    |
  5. | "MicroStation", "MDL", and "MicroCSL" are trademarks of Bentley    |
  6. |  Systems, Inc.                            |
  7. |                                    |
  8. |  Limited permission is hereby granted to reproduce and modify this    |
  9. |  copyrighted material provided that the resulting code is used only     |
  10. |  in conjunction with Bentley Systems products under the terms of the    |
  11. |  license agreement provided therein, and that this notice is retained    |
  12. |  in its entirety in any such reproduction or modification.        |
  13. |                                    |
  14. +----------------------------------------------------------------------*/
  15. /*----------------------------------------------------------------------+
  16. |                                    |
  17. |   scanner.h -- Typedefs and Defines for using the design file        |
  18. |         "scanner".  The scanner can quickly locate elements    |
  19. |         based on predefined criteria.                |
  20. |                                    |
  21. |   $Workfile:   scanner.h  $
  22. |   $Revision:   6.2  $
  23. |          $Date:   19 Jun 1995 10:23:36  $
  24. |                                    |
  25. +----------------------------------------------------------------------*/
  26. #ifndef __scannerH__
  27. #define __scannerH__
  28.  
  29. #if !defined (__basetypeH__)
  30. #   include <basetype.h>
  31. #endif
  32.  
  33. /* bits used in scantype */
  34. #define        ELEMDATA    0x0001    /* if true, store data */
  35. #define        NESTCELL    0x0002    /* if true, cell is treated as one element */
  36. #define        PICKCELL    0x0004    /* if true, compare cell name */
  37. #define        PROPCLAS    0x0008    /* if true, compare on properties and class */
  38. #define        GRPHGRP    0x0010    /* if true, compare on graphics group */
  39. #define        MULTI    0x0020    /* if true, there are multiple scan ranges */
  40. #define        SKEW    0x0040    /* if true, do a skew scan */
  41. #define        BOTH    0x0080    /* if true, get both pointers and data */
  42. #define        ONEELEM    0x0100    /* if true, get only one element */
  43. #define        ATTRENT    0x0400    /* if true, compare on attrb linkage entity */
  44. #define        ATTROCC    0x0800    /* if true, compare on attrb occurence # */
  45. #define        STOPSECT    0x1000    /* if true, check stop sector */
  46. #define        LEVELS    0x2000    /* if true, compare on levels */
  47. #define        ELEMTYPE    0x4000    /* if true, compare on element type */
  48.  
  49. /* bits used in extendedtype */
  50. #define        RETURN3D    0x0001    /* if true, return 3D elements from 2D file */
  51. #define        FILEPOS    0x0002    /* if true, return file pos, not block/byte */
  52. #define        MEMPTRS    0x0004    /* if true, return mem pointers or elements */
  53. #define        EXTATTR    0x0008    /* if true, do extended attribute scan */
  54. #define        ITERATEFUNC    0x0010    /* if true, use iterator function */
  55.  
  56. /* Properties Indicators */
  57. #define        ELELOCKED    0x0100    /* set if locked */
  58. #define        ELENEW    0x0200    /* set if new */
  59. #define        ELEMOD    0x0400    /* set if modified */
  60. #define        ELEATTR    0x0800    /* attribute data present */
  61. #define        ELERELTVE    0x1000    /* set if relative to database */
  62. #define        ELEPLANR    0x2000    /* set if planar */
  63. #define        ELESNAP    0x4000    /* set if element is snappable */
  64. #define        ELEHOLE    0x8000    /* set if element is a hole */
  65.  
  66. /* Scanner error messages */
  67. #define        END_OF_DGN    10
  68. #define        BUFF_FULL    11
  69. #define        READ_LIMIT    12
  70.  
  71. typedef struct scanrange
  72.     {
  73.     ULong   xlowlim;
  74.     ULong   ylowlim;
  75.     ULong   zlowlim;
  76.     ULong   xhighlim;
  77.     ULong   yhighlim;
  78.     ULong   zhighlim;
  79.     } Scanrange;
  80.  
  81. /* used by caching to associate file positions with element memory address */
  82. typedef struct
  83.     {
  84.     ULong     filePos;
  85.     UShort    *element;
  86.     } PtrPair;
  87.  
  88. /* used by caching to associate file positions with element memory address */
  89. typedef struct
  90.     {
  91.     ULong     filePos;
  92.     UShort    *elemInfo[1];
  93.     } PtrEntry;
  94.  
  95. typedef struct
  96.     {
  97.     short        numWords;   /* number of words of attr data to consider */
  98.     UShort        extAttData[32];
  99.     } ExtendedAttrBuf;
  100.  
  101. typedef struct extScanlist
  102.     {
  103.     short        sllen;    /* scan list length */
  104.     UShort        scantype;    /* scan type (see bit definitions above) */
  105.     UShort        tplval;    /* value for type/plane/level register */
  106.     UShort        tplmsk;    /* mask for type/plane/level */
  107.     ULong        xlowlim;    /* lower limit (main scan range) */
  108.     ULong        ylowlim;
  109.     ULong        zlowlim;
  110.     ULong        xhighlim;    /* upper limit */
  111.     ULong        yhighlim;
  112.     ULong        zhighlim;
  113.     union
  114.     {
  115.     UShort        propval;
  116.     UShort        cell0;
  117.     } pcl;
  118.     union
  119.     {
  120.     UShort        propmsk;
  121.     UShort        cell1;
  122.     } pch;
  123.     UShort        grgroup;
  124.     UShort        sector;    /* sector at start */
  125.     UShort        offset;    /* byte at start */
  126.     short        ellength;    /* len of elmnt that wont fit (not used) */
  127.     UShort        entity;
  128.     UShort        clasmsk;
  129.     UShort        levmask[8];
  130.     UShort        typmask[8];
  131.     long        occurnce;
  132.     UShort        stopsector;        /* stop on this sector */
  133.     UShort        extendedType;   /* extended scan type bits */
  134.     Dpoint3d        skewVector;        /* skew direction vector */
  135.     Scanrange        exrange[8];        /* extended range blocks */
  136.     ExtendedAttrBuf *extAttrBuf;    /* extended attribute scanning */
  137.     } ExtScanlist, Scanlist;
  138.  
  139. typedef struct scanContextTag
  140.     {
  141.     ExtScanlist        scanlist;
  142.     short        extrawords[108];
  143.     } ScanContext;
  144.  
  145. #endif    /* __scannerH__ */
  146.