0026912: CLang 3.6.2 compiler warning [-Winconsistent-missing-override]
[occt.git] / src / IGESData / IGESData_IGESReaderTool.hxx
1 // Created on: 1992-04-06
2 // Created by: Christian CAILLET
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _IGESData_IGESReaderTool_HeaderFile
18 #define _IGESData_IGESReaderTool_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <Interface_GeneralLib.hxx>
25 #include <Interface_ReaderLib.hxx>
26 #include <Standard_Integer.hxx>
27 #include <IGESData_IGESType.hxx>
28 #include <IGESData_ReadStage.hxx>
29 #include <Standard_Real.hxx>
30 #include <Interface_FileReaderTool.hxx>
31 #include <Standard_Boolean.hxx>
32 class Interface_ParamList;
33 class IGESData_FileRecognizer;
34 class Interface_Check;
35 class IGESData_IGESReaderData;
36 class IGESData_Protocol;
37 class Standard_Transient;
38 class Interface_InterfaceModel;
39 class IGESData_IGESEntity;
40 class IGESData_DirPart;
41 class IGESData_ParamReader;
42
43
44 //! specific FileReaderTool for IGES
45 //! Parameters are accessed through specific objects, ParamReaders
46 class IGESData_IGESReaderTool  : public Interface_FileReaderTool
47 {
48 public:
49
50   DEFINE_STANDARD_ALLOC
51
52   
53   //! creates IGESReaderTool to work with an IGESReaderData and an
54   //! IGES Protocol.
55   //! Actually, no Lib is used
56   Standard_EXPORT IGESData_IGESReaderTool(const Handle(IGESData_IGESReaderData)& reader, const Handle(IGESData_Protocol)& protocol);
57   
58   //! binds empty entities to records, works with the Protocol
59   //! (from IGESData) stored and later used
60   //! RQ : Actually, sets DNum into IGES Entities
61   //! Also loads the list of parameters for ParamReader
62   Standard_EXPORT void Prepare (const Handle(IGESData_FileRecognizer)& reco);
63   
64   //! recognizes records by asking Protocol (on data of DirType)
65   Standard_EXPORT Standard_Boolean Recognize (const Standard_Integer num, Handle(Interface_Check)& ach, Handle(Standard_Transient)& ent) Standard_OVERRIDE;
66   
67   //! fills model's header, that is, its GlobalSection
68   Standard_EXPORT void BeginRead (const Handle(Interface_InterfaceModel)& amodel) Standard_OVERRIDE;
69   
70   //! fills an entity, given record no; works by calling ReadDirPart
71   //! then ReadParams (with help of a ParamReader), then if required
72   //! ReadProps and ReadAssocs, from IGESEntity
73   //! Returns True if no fail has been recorded
74   Standard_EXPORT Standard_Boolean AnalyseRecord (const Standard_Integer num, const Handle(Standard_Transient)& anent, Handle(Interface_Check)& acheck) Standard_OVERRIDE;
75   
76   //! after reading entities, true line weights can be computed
77   Standard_EXPORT virtual void EndRead (const Handle(Interface_InterfaceModel)& amodel) Standard_OVERRIDE;
78   
79   //! Reads directory part componants from file; DP is the litteral
80   //! directory part, IR detains entities referenced by DP
81   Standard_EXPORT void ReadDir (const Handle(IGESData_IGESEntity)& ent, const Handle(IGESData_IGESReaderData)& IR, const IGESData_DirPart& DP, Handle(Interface_Check)& ach) const;
82   
83   //! Performs Reading of own Parameters for each IGESEntity
84   //! Works with the ReaderLib loaded with ReadWriteModules for IGES
85   //! In case of failure, tries UndefinedEntity from IGES
86   Standard_EXPORT void ReadOwnParams (const Handle(IGESData_IGESEntity)& ent, const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const;
87   
88   //! Reads Property List, if there is (if not, does nothing)
89   //! criterium is : current parameter of PR remains inside params
90   //! list, and Stage is "Own"
91   //! Current parameter must be a positive integer, which value
92   //! gives the length of the list; else, a Fail is produced (into
93   //! Check of PR) and reading process is stopped
94   Standard_EXPORT void ReadProps (const Handle(IGESData_IGESEntity)& ent, const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const;
95   
96   //! Reads Associativity List, if there is (if not, does nothing)
97   //! criterium is : current parameter of PR remains inside params
98   //! list, and Stage is "Own"
99   //! Same conditions as above; in addition, no parameter must be
100   //! let after the list once read
101   //! Note that "Associated" entities are not declared "Shared"
102   Standard_EXPORT void ReadAssocs (const Handle(IGESData_IGESEntity)& ent, const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const;
103
104
105
106
107 protected:
108
109
110
111
112
113 private:
114
115
116
117   Handle(Interface_ParamList) thelist;
118   Handle(IGESData_FileRecognizer) thereco;
119   Interface_GeneralLib theglib;
120   Interface_ReaderLib therlib;
121   Standard_Integer thecnum;
122   IGESData_IGESType thectyp;
123   IGESData_ReadStage thestep;
124   Handle(Interface_Check) thechk;
125   Standard_Integer thegradweight;
126   Standard_Real themaxweight;
127   Standard_Real thedefweight;
128
129
130 };
131
132
133
134
135
136
137
138 #endif // _IGESData_IGESReaderTool_HeaderFile