0031035: Coding - uninitialized class fields reported by Visual Studio Code Analysis
[occt.git] / src / ShapePersistent / ShapePersistent_Geom2d_Curve.hxx
CommitLineData
ff205346 1// Copyright (c) 2015 OPEN CASCADE SAS
2//
3// This file is part of Open CASCADE Technology software library.
4//
5// This library is free software; you can redistribute it and/or modify it under
6// the terms of the GNU Lesser General Public License version 2.1 as published
7// by the Free Software Foundation, with special exception defined in the file
8// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9// distribution for complete text of the license and disclaimer of any warranty.
10//
11// Alternatively, this file may be used under the terms of Open CASCADE
12// commercial license or contractual agreement.
13
14
15#ifndef _ShapePersistent_Geom2d_Curve_HeaderFile
16#define _ShapePersistent_Geom2d_Curve_HeaderFile
17
ec964372 18#include <StdObjMgt_TransientPersistentMap.hxx>
19
ff205346 20#include <ShapePersistent_Geom2d.hxx>
21#include <ShapePersistent_HArray1.hxx>
22#include <StdLPersistent_HArray1.hxx>
23
24#include <Geom2d_Line.hxx>
25#include <Geom2d_Circle.hxx>
26#include <Geom2d_Ellipse.hxx>
27#include <Geom2d_Hyperbola.hxx>
28#include <Geom2d_Parabola.hxx>
ec964372 29#include <Geom2d_BezierCurve.hxx>
30#include <Geom2d_BSplineCurve.hxx>
31#include <Geom2d_TrimmedCurve.hxx>
32#include <Geom2d_OffsetCurve.hxx>
ff205346 33
34#include <gp_Circ2d.hxx>
35#include <gp_Elips2d.hxx>
36#include <gp_Hypr2d.hxx>
37#include <gp_Parab2d.hxx>
38
39
ec964372 40class ShapePersistent_Geom2d_Curve : public ShapePersistent_Geom2d
ff205346 41{
42 typedef Curve::PersistentBase pBase;
43
44 typedef pBase pBounded;
45
46 class pBezier : public pBounded
47 {
ec964372 48 friend class ShapePersistent_Geom2d_Curve;
49
ff205346 50 public:
d533dafb 51 pBezier()
52 : myRational(Standard_False)
53 {
54 }
ff205346 55 inline void Read (StdObjMgt_ReadData& theReadData)
56 { theReadData >> myRational >> myPoles >> myWeights; }
ec964372 57 inline void Write (StdObjMgt_WriteData& theWriteData) const
58 { theWriteData << myRational << myPoles << myWeights; }
59 inline void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const
60 {
61 theChildren.Append(myPoles);
62 theChildren.Append(myWeights);
63 }
64 inline Standard_CString PName() const
65 { return "PGeom2d_BezierCurve"; }
ff205346 66
67 virtual Handle(Geom2d_Curve) Import() const;
68
69 private:
45d8465e 70 Standard_Boolean myRational;
71 Handle(ShapePersistent_HArray1::Pnt2d) myPoles;
72 Handle(StdLPersistent_HArray1::Real) myWeights;
ff205346 73 };
74
75 class pBSpline : public pBounded
76 {
ec964372 77 friend class ShapePersistent_Geom2d_Curve;
78
ff205346 79 public:
d533dafb 80 pBSpline()
81 : myRational(Standard_False),
82 myPeriodic(Standard_False),
83 mySpineDegree(0)
84 {
85 }
ff205346 86 inline void Read (StdObjMgt_ReadData& theReadData)
87 {
88 theReadData >> myRational >> myPeriodic >> mySpineDegree;
89 theReadData >> myPoles >> myWeights >> myKnots >> myMultiplicities;
90 }
ec964372 91 inline void Write (StdObjMgt_WriteData& theWriteData) const
92 {
93 theWriteData << myRational << myPeriodic << mySpineDegree;
94 theWriteData << myPoles << myWeights << myKnots << myMultiplicities;
95 }
96 inline void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const
97 {
98 theChildren.Append(myPoles);
99 theChildren.Append(myWeights);
100 theChildren.Append(myKnots);
101 theChildren.Append(myMultiplicities);
102 }
103 inline Standard_CString PName() const
104 { return "PGeom2d_BSplineCurve"; }
ff205346 105
106 virtual Handle(Geom2d_Curve) Import() const;
107
108 private:
45d8465e 109 Standard_Boolean myRational;
110 Standard_Boolean myPeriodic;
111 Standard_Integer mySpineDegree;
112 Handle(ShapePersistent_HArray1::Pnt2d) myPoles;
113 Handle(StdLPersistent_HArray1::Real) myWeights;
114 Handle(StdLPersistent_HArray1::Real) myKnots;
115 Handle(StdLPersistent_HArray1::Integer) myMultiplicities;
ff205346 116 };
117
118 class pTrimmed : public pBounded
119 {
ec964372 120 friend class ShapePersistent_Geom2d_Curve;
121
ff205346 122 public:
d533dafb 123 pTrimmed()
124 : myFirstU(0.0),
125 myLastU(0.0)
126 {
127 }
ff205346 128 inline void Read (StdObjMgt_ReadData& theReadData)
129 { theReadData >> myBasisCurve >> myFirstU >> myLastU; }
ec964372 130 inline void Write (StdObjMgt_WriteData& theWriteData) const
131 { theWriteData << myBasisCurve << myFirstU << myLastU; }
132 inline void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const
133 { theChildren.Append(myBasisCurve); }
134 inline Standard_CString PName() const
135 { return "PGeom2d_TrimmedCurve"; }
ff205346 136
137 virtual Handle(Geom2d_Curve) Import() const;
138
139 private:
45d8465e 140 Handle(Curve) myBasisCurve;
141 Standard_Real myFirstU;
142 Standard_Real myLastU;
ff205346 143 };
144
145 class pOffset : public pBase
146 {
ec964372 147 friend class ShapePersistent_Geom2d_Curve;
148
ff205346 149 public:
d533dafb 150 pOffset()
151 : myOffsetValue(0.0)
152 {
153 }
ff205346 154 inline void Read (StdObjMgt_ReadData& theReadData)
155 { theReadData >> myBasisCurve >> myOffsetValue; }
ec964372 156 inline void Write (StdObjMgt_WriteData& theWriteData) const
157 { theWriteData << myBasisCurve << myOffsetValue; }
158 inline void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const
159 { theChildren.Append(myBasisCurve); }
160 inline Standard_CString PName() const
161 { return "PGeom2d_OffsetCurve"; }
ff205346 162
163 virtual Handle(Geom2d_Curve) Import() const;
164
165 private:
45d8465e 166 Handle(Curve) myBasisCurve;
167 Standard_Real myOffsetValue;
ff205346 168 };
169
170public:
171 typedef instance<Curve, Geom2d_Line, gp_Ax2d> Line;
172
173 typedef subBase_gp<Curve, gp_Ax22d> Conic;
174 typedef instance<Conic, Geom2d_Circle , gp_Circ2d > Circle;
175 typedef instance<Conic, Geom2d_Ellipse , gp_Elips2d> Ellipse;
176 typedef instance<Conic, Geom2d_Hyperbola, gp_Hypr2d > Hyperbola;
177 typedef instance<Conic, Geom2d_Parabola , gp_Parab2d> Parabola;
178
179 typedef subBase_empty<Curve> Bounded;
180 typedef Delayed<Bounded, pBezier> Bezier;
181 typedef Delayed<Bounded, pBSpline> BSpline;
182 typedef Delayed<Bounded, pTrimmed> Trimmed;
183
184 typedef Delayed<Curve, pOffset> Offset;
ec964372 185
186public:
187 //! Create a persistent object for a line
188 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_Line)& theCurve,
189 StdObjMgt_TransientPersistentMap& theMap);
190 //! Create a persistent object for a circle
191 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_Circle)& theCurve,
192 StdObjMgt_TransientPersistentMap& theMap);
193 //! Create a persistent object for a ellipse
194 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_Ellipse)& theCurve,
195 StdObjMgt_TransientPersistentMap& theMap);
196 //! Create a persistent object for a hyperbola
197 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_Hyperbola)& theCurve,
198 StdObjMgt_TransientPersistentMap& theMap);
199 //! Create a persistent object for a parabola
200 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_Parabola)& theCurve,
201 StdObjMgt_TransientPersistentMap& theMap);
202 //! Create a persistent object for a Bezier curve
203 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_BezierCurve)& theCurve,
204 StdObjMgt_TransientPersistentMap& theMap);
205 //! Create a persistent object for a BSpline curve
206 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_BSplineCurve)& theCurve,
207 StdObjMgt_TransientPersistentMap& theMap);
208 //! Create a persistent object for a trimmed curve
209 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_TrimmedCurve)& theCurve,
210 StdObjMgt_TransientPersistentMap& theMap);
211 //! Create a persistent object for an offset curve
212 Standard_EXPORT static Handle(Curve) Translate (const Handle(Geom2d_OffsetCurve)& theCurve,
213 StdObjMgt_TransientPersistentMap& theMap);
ff205346 214};
215
ec964372 216//=======================================================================
217// Line
218//=======================================================================
219template<>
220Standard_CString ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d::Curve,
221 Geom2d_Line,
222 gp_Ax2d>
223 ::PName() const;
224
225template<>
226void ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d::Curve,
227 Geom2d_Line,
228 gp_Ax2d>
229 ::Write(StdObjMgt_WriteData& theWriteData) const;
230
231//=======================================================================
232// Conic
233//=======================================================================
234template<>
235Standard_CString ShapePersistent_Geom2d_Curve::subBase_gp<ShapePersistent_Geom2d::Curve,
236 gp_Ax22d>
237 ::PName() const;
238
239//=======================================================================
240// Circle
241//=======================================================================
242template<>
243Standard_CString ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
244 Geom2d_Circle,
245 gp_Circ2d>
246 ::PName() const;
247
248template<>
249void ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
250 Geom2d_Circle,
251 gp_Circ2d>
252 ::Write(StdObjMgt_WriteData& theWriteData) const;
253
254//=======================================================================
255// Ellipse
256//=======================================================================
257template<>
258Standard_CString ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
259 Geom2d_Ellipse,
260 gp_Elips2d>
261 ::PName() const;
262
263template<>
264void ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
265 Geom2d_Ellipse,
266 gp_Elips2d>
267 ::Write(StdObjMgt_WriteData& theWriteData) const;
268
269//=======================================================================
270// Hyperbola
271//=======================================================================
272template<>
273Standard_CString ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
274 Geom2d_Hyperbola,
275 gp_Hypr2d>
276 ::PName() const;
277
278template<>
279void ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
280 Geom2d_Hyperbola,
281 gp_Hypr2d>
282 ::Write(StdObjMgt_WriteData& theWriteData) const;
283
284//=======================================================================
285// Parabola
286//=======================================================================
287template<>
288Standard_CString ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
289 Geom2d_Parabola,
290 gp_Parab2d>
291 ::PName() const;
292
293template<>
294void ShapePersistent_Geom2d_Curve::instance<ShapePersistent_Geom2d_Curve::Conic,
295 Geom2d_Parabola,
296 gp_Parab2d>
297 ::Write(StdObjMgt_WriteData& theWriteData) const;
298
ff205346 299#endif