1 ///////////////////////////////////////////////////////////////////////////////
2 // BSD 3-Clause License
3 //
4 // Copyright (c) 2020, The Regents of the University of California
5 // All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions are met:
9 //
10 // * Redistributions of source code must retain the above copyright notice, this
11 //   list of conditions and the following disclaimer.
12 //
13 // * Redistributions in binary form must reproduce the above copyright notice,
14 //   this list of conditions and the following disclaimer in the documentation
15 //   and/or other materials provided with the distribution.
16 //
17 // * Neither the name of the copyright holder nor the names of its
18 //   contributors may be used to endorse or promote products derived from
19 //   this software without specific prior written permission.
20 //
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 // POSSIBILITY OF SUCH DAMAGE.
32 
33 // Generator Code Begin Header
34 #pragma once
35 
36 #include "dbCore.h"
37 #include "odb.h"
38 
39 // User Code Begin Includes
40 #include "dbVector.h"
41 // User Code End Includes
42 
43 namespace odb {
44 
45 class dbIStream;
46 class dbOStream;
47 class dbDiff;
48 class _dbDatabase;
49 // User Code Begin Classes
50 // User Code End Classes
51 
52 struct dbTechLayerCornerSpacingRuleFlags
53 {
54   uint corner_type_ : 1;
55   bool same_mask_ : 1;
56   bool corner_only_ : 1;
57   bool except_eol_ : 1;
58   bool except_jog_length_ : 1;
59   bool edge_length_valid_ : 1;
60   bool include_shape_ : 1;
61   bool min_length_valid_ : 1;
62   bool except_notch_ : 1;
63   bool except_notch_length_valid_ : 1;
64   bool except_same_net_ : 1;
65   bool except_same_metal_ : 1;
66   uint spare_bits_ : 20;
67 };
68 // User Code Begin Structs
69 // User Code End Structs
70 
71 class _dbTechLayerCornerSpacingRule : public _dbObject
72 {
73  public:
74   // User Code Begin Enums
75   // User Code End Enums
76 
77   dbTechLayerCornerSpacingRuleFlags flags_;
78   int within_;
79   int eol_width_;
80   int jog_length_;
81   int edge_length_;
82   int min_length_;
83   int except_notch_length_;
84 
85   // User Code Begin Fields
86   dbVector<int> _width_tbl;
87   dbVector<std::pair<int, int>> _spacing_tbl;
88   // User Code End Fields
89   _dbTechLayerCornerSpacingRule(_dbDatabase*,
90                                 const _dbTechLayerCornerSpacingRule& r);
91   _dbTechLayerCornerSpacingRule(_dbDatabase*);
92   ~_dbTechLayerCornerSpacingRule();
93   bool operator==(const _dbTechLayerCornerSpacingRule& rhs) const;
94   bool operator!=(const _dbTechLayerCornerSpacingRule& rhs) const
95   {
96     return !operator==(rhs);
97   }
98   bool operator<(const _dbTechLayerCornerSpacingRule& rhs) const;
99   void differences(dbDiff& diff,
100                    const char* field,
101                    const _dbTechLayerCornerSpacingRule& rhs) const;
102   void out(dbDiff& diff, char side, const char* field) const;
103   // User Code Begin Methods
104   // User Code End Methods
105 };
106 dbIStream& operator>>(dbIStream& stream, _dbTechLayerCornerSpacingRule& obj);
107 dbOStream& operator<<(dbOStream& stream,
108                       const _dbTechLayerCornerSpacingRule& obj);
109 // User Code Begin General
110 // User Code End General
111 }  // namespace odb
112    // Generator Code End Header
113