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 // User Code End Includes
41 
42 namespace odb {
43 
44 class dbIStream;
45 class dbOStream;
46 class dbDiff;
47 class _dbDatabase;
48 // User Code Begin Classes
49 class _dbTechLayer;
50 // User Code End Classes
51 
52 struct dbTechLayerSpacingEolRuleFlags
53 {
54   bool exact_width_valid_ : 1;
55   bool wrong_dir_spacing_valid_ : 1;
56   bool opposite_width_valid_ : 1;
57   bool within_valid_ : 1;
58   bool wrong_dir_within_valid_ : 1;
59   bool same_mask_valid_ : 1;
60   bool except_exact_width_valid_ : 1;
61   bool fill_concave_corner_valid_ : 1;
62   bool withcut_valid_ : 1;
63   bool cut_class_valid_ : 1;
64   bool with_cut_above_valid_ : 1;
65   bool enclosure_end_valid_ : 1;
66   bool enclosure_end_within_valid_ : 1;
67   bool end_prl_spacing_valid_ : 1;
68   bool prl_valid_ : 1;
69   bool end_to_end_valid_ : 1;
70   bool cut_spaces_valid_ : 1;
71   bool extension_valid_ : 1;
72   bool wrong_dir_extension_valid_ : 1;
73   bool other_end_width_valid_ : 1;
74   bool max_length_valid_ : 1;
75   bool min_length_valid_ : 1;
76   bool two_sides_valid_ : 1;
77   bool equal_rect_width_valid_ : 1;
78   bool parallel_edge_valid_ : 1;
79   bool subtract_eol_width_valid_ : 1;
80   bool par_prl_valid_ : 1;
81   bool par_min_length_valid_ : 1;
82   bool two_edges_valid_ : 1;
83   bool same_metal_valid_ : 1;
84   bool non_eol_corner_only_valid_ : 1;
85   bool parallel_same_mask_valid_ : 1;
86   bool enclose_cut_valid_ : 1;
87   bool below_valid_ : 1;
88   bool above_valid_ : 1;
89   bool cut_spacing_valid_ : 1;
90   bool all_cuts_valid_ : 1;
91   bool to_concave_corner_valid_ : 1;
92   bool min_adjacent_length_valid_ : 1;
93   bool two_min_adj_length_valid_ : 1;
94   bool to_notch_length_valid_ : 1;
95   uint spare_bits_ : 23;
96 };
97 // User Code Begin Structs
98 // User Code End Structs
99 
100 class _dbTechLayerSpacingEolRule : public _dbObject
101 {
102  public:
103   // User Code Begin Enums
104   // User Code End Enums
105 
106   dbTechLayerSpacingEolRuleFlags flags_;
107   int eol_space_;
108   int eol_width_;
109   int wrong_dir_space_;
110   int opposite_width_;
111   int eol_within_;
112   int wrong_dir_within_;
113   int exact_width_;
114   int other_width_;
115   int fill_triangle_;
116   int cut_class_;
117   int with_cut_space_;
118   int enclosure_end_width_;
119   int enclosure_end_within_;
120   int end_prl_space_;
121   int end_prl_;
122   int end_to_end_space_;
123   int one_cut_space_;
124   int two_cut_space_;
125   int extension_;
126   int wrong_dir_extension_;
127   int other_end_width_;
128   int max_length_;
129   int min_length_;
130   int par_space_;
131   int par_within_;
132   int par_prl_;
133   int par_min_length_;
134   int enclose_dist_;
135   int cut_to_metal_space_;
136   int min_adj_length_;
137   int min_adj_length1_;
138   int min_adj_length2_;
139   int notch_length_;
140 
141   // User Code Begin Fields
142   dbId<_dbTechLayer> _layer;
143   // User Code End Fields
144   _dbTechLayerSpacingEolRule(_dbDatabase*, const _dbTechLayerSpacingEolRule& r);
145   _dbTechLayerSpacingEolRule(_dbDatabase*);
146   ~_dbTechLayerSpacingEolRule();
147   bool operator==(const _dbTechLayerSpacingEolRule& rhs) const;
148   bool operator!=(const _dbTechLayerSpacingEolRule& rhs) const
149   {
150     return !operator==(rhs);
151   }
152   bool operator<(const _dbTechLayerSpacingEolRule& rhs) const;
153   void differences(dbDiff& diff,
154                    const char* field,
155                    const _dbTechLayerSpacingEolRule& rhs) const;
156   void out(dbDiff& diff, char side, const char* field) const;
157   // User Code Begin Methods
158   // User Code End Methods
159 };
160 dbIStream& operator>>(dbIStream& stream, _dbTechLayerSpacingEolRule& obj);
161 dbOStream& operator<<(dbOStream& stream, const _dbTechLayerSpacingEolRule& obj);
162 // User Code Begin General
163 // User Code End General
164 }  // namespace odb
165    // Generator Code End Header
166