Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:03:58

0001 // Created on: 1992-04-06
0002 // Created by: Christian CAILLET
0003 // Copyright (c) 1992-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _IGESData_ParamReader_HeaderFile
0018 #define _IGESData_ParamReader_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023 
0024 #include <Standard_Integer.hxx>
0025 #include <IGESData_ReadStage.hxx>
0026 #include <Interface_ParamType.hxx>
0027 #include <Standard_CString.hxx>
0028 #include <IGESData_Status.hxx>
0029 #include <IGESData_ParamCursor.hxx>
0030 #include <Standard_Type.hxx>
0031 #include <TColStd_HArray1OfInteger.hxx>
0032 #include <TColStd_HArray1OfReal.hxx>
0033 #include <Interface_HArray1OfHAsciiString.hxx>
0034 #include <IGESData_HArray1OfIGESEntity.hxx>
0035 
0036 class Interface_ParamList;
0037 class Interface_Check;
0038 class IGESData_IGESEntity;
0039 class IGESData_IGESReaderData;
0040 class Message_Msg;
0041 class gp_XY;
0042 class gp_XYZ;
0043 class TCollection_HAsciiString;
0044 class Interface_EntityList;
0045 
0046 
0047 //! access to a list of parameters, with management of read stage
0048 //! (owned parameters, properties, associativities) and current
0049 //! parameter number, read errors (which feed a Check), plus
0050 //! convenient facilities to read parameters, in particular :
0051 //! - first parameter is ignored (it repeats entity type), hence
0052 //! number 1 gives 2nd parameter, etc...
0053 //! - lists are not explicit, list-reading methods are provided
0054 //! which manage a current param. number
0055 //! - interpretation is made as possible (texts, reals, entities ...)
0056 //! (in particular, Reading a Real accepts an Integer)
0057 class IGESData_ParamReader 
0058 {
0059 public:
0060 
0061   DEFINE_STANDARD_ALLOC
0062 
0063   
0064   //! Prepares a ParamReader, stage "Own", current param = 1
0065   //! It considers a part of the list, from <base> (excluded) for
0066   //! <nbpar> parameters; <nbpar> = 0 commands to take list length.
0067   //! Default is (1 to skip type)
0068   Standard_EXPORT IGESData_ParamReader(const Handle(Interface_ParamList)& list, const Handle(Interface_Check)& ach, const Standard_Integer base = 1, const Standard_Integer nbpar = 0, const Standard_Integer num = 0);
0069   
0070   //! Returns the entity number in the file
0071   Standard_EXPORT Standard_Integer EntityNumber() const;
0072   
0073   //! resets state (stage, current param number, check with no fail)
0074   Standard_EXPORT void Clear();
0075   
0076   //! returns the current parameter number
0077   //! This notion is involved by the organisation of an IGES list of
0078   //! parameter : it can be ended by two lists (Associativities and
0079   //! Properties), which can be empty, or even absent. Hence, it is
0080   //! necessary to know, at the end of specific reading, how many
0081   //! parameters have been read : the optional lists follow
0082   Standard_EXPORT Standard_Integer CurrentNumber() const;
0083   
0084   //! sets current parameter number to a new value
0085   //! must be done at end of each step : set on first parameter
0086   //! following last read one; is done by some Read... methods
0087   //! (must be done directly if these method are not used)
0088   //! num greater than NbParams means that following lists are empty
0089   //! If current num is not managed, it remains at 1, which probably
0090   //! will cause error when successive steps of reading are made
0091   Standard_EXPORT void SetCurrentNumber (const Standard_Integer num);
0092   
0093   //! gives current stage (Own-Props-Assocs-End, begins at Own)
0094   Standard_EXPORT IGESData_ReadStage Stage() const;
0095   
0096   //! passes to next stage (must be linked with setting Current)
0097   Standard_EXPORT void NextStage();
0098   
0099   //! passes directly to the end of reading process
0100   Standard_EXPORT void EndAll();
0101   
0102   //! returns number of parameters (minus the first one)
0103   //! following method skip the first parameter (1 gives the 2nd)
0104   Standard_EXPORT Standard_Integer NbParams() const;
0105   
0106   //! returns type of parameter; note that "Ident" or "Sub" cannot
0107   //! be encountered, they correspond to "Integer", see also below
0108   Standard_EXPORT Interface_ParamType ParamType (const Standard_Integer num) const;
0109   
0110   //! returns literal value of a parameter, as it was in file
0111   Standard_EXPORT Standard_CString ParamValue (const Standard_Integer num) const;
0112   
0113   //! says if a parameter is defined (not void)
0114   //! See also DefinedElseSkip
0115   Standard_EXPORT Standard_Boolean IsParamDefined (const Standard_Integer num) const;
0116   
0117   //! says if a parameter can be regarded as an entity reference
0118   //! (see Prepare from IGESReaderData for more explanation)
0119   //! Note that such a parameter can seen as be a plain Integer too
0120   Standard_EXPORT Standard_Boolean IsParamEntity (const Standard_Integer num) const;
0121   
0122   //! returns entity number corresponding to a parameter if there is
0123   //! otherwise zero (according criterium IsParamEntity)
0124   Standard_EXPORT Standard_Integer ParamNumber (const Standard_Integer num) const;
0125   
0126   //! directly returns entity referenced by a parameter
0127   Standard_EXPORT Handle(IGESData_IGESEntity) ParamEntity (const Handle(IGESData_IGESReaderData)& IR, const Standard_Integer num);
0128   
0129   //! Creates a ParamCursor from the Current Number, to read one
0130   //! parameter, and to advance Current Number after reading
0131   Standard_EXPORT IGESData_ParamCursor Current() const;
0132   
0133   //! Creates a ParamCursor from the Current Number, to read a list
0134   //! of "nb" items, and to advance Current Number after reading
0135   //! By default, each item is made of one parameter
0136   //! If size is given, it precises the number of params per item
0137   Standard_EXPORT IGESData_ParamCursor CurrentList (const Standard_Integer nb, const Standard_Integer size = 1) const;
0138   
0139   //! Allows to simply process a parameter which can be defaulted.
0140   //! Waits on the Current Number a defined parameter or skips it :
0141   //! If the parameter <num> is defined, changes nothing and returns True
0142   //! Hence, the next reading with current cursor will concern <num>
0143   //! If it is void, advances Current Position by one, and returns False
0144   //! The next reading will concern <num+1> (except if <num> = NbParams)
0145   //!
0146   //! This allows to process Default values as follows (C++) :
0147   //! if (PR.DefinedElseSkip()) {
0148   //! .. PR.Read... (current parameter);
0149   //! } else {
0150   //! <current parameter> = default value
0151   //! .. nothing else to do with ParamReader
0152   //! }
0153   //! For Message
0154   Standard_EXPORT Standard_Boolean DefinedElseSkip();
0155   
0156   Standard_EXPORT Standard_Boolean ReadInteger (const IGESData_ParamCursor& PC, Standard_Integer& val);
0157   
0158   //! Reads an Integer value designated by PC
0159   //! The method Current designates the current parameter and
0160   //! advances the Current Number by one after reading
0161   //! Note that if a count (not 1) is given, it is ignored
0162   //! If it is not an Integer, fills Check with a Fail (using mess)
0163   //! and returns False
0164   Standard_EXPORT Standard_Boolean ReadInteger (const IGESData_ParamCursor& PC, const Standard_CString mess, Standard_Integer& val);
0165   
0166   Standard_EXPORT Standard_Boolean ReadBoolean (const IGESData_ParamCursor& PC, const Message_Msg& amsg, Standard_Boolean& val, const Standard_Boolean exact = Standard_True);
0167   
0168   //! Reads a Boolean value from parameter "num"
0169   //! A Boolean is given as an Integer value 0 (False) or 1 (True)
0170   //! Anyway, an Integer is demanded (else, Check is filled)
0171   //! If exact is given True, those precise values are demanded
0172   //! Else, Correction is done, as False for 0 or <0, True for >0
0173   //! (with a Warning error message, and return is True)
0174   //! In case of error (not an Integer, or not 0/1 and exact True),
0175   //! Check is filled with a Fail (using mess) and return is False
0176   Standard_EXPORT Standard_Boolean ReadBoolean (const IGESData_ParamCursor& PC, const Standard_CString mess, Standard_Boolean& val, const Standard_Boolean exact = Standard_True);
0177   
0178   Standard_EXPORT Standard_Boolean ReadReal (const IGESData_ParamCursor& PC, Standard_Real& val);
0179   
0180   //! Reads a Real value from parameter "num"
0181   //! An Integer is accepted (Check is filled with a Warning
0182   //! message) and causes return to be True (as normal case)
0183   //! In other cases, Check is filled with a Fail and return is False
0184   Standard_EXPORT Standard_Boolean ReadReal (const IGESData_ParamCursor& PC, const Standard_CString mess, Standard_Real& val);
0185   
0186   Standard_EXPORT Standard_Boolean ReadXY (const IGESData_ParamCursor& PC, Message_Msg& amsg, gp_XY& val);
0187   
0188   //! Reads a couple of Real values (X,Y) from parameter "num"
0189   //! Integers are accepted (Check is filled with a Warning
0190   //! message) and cause return to be True (as normal case)
0191   //! In other cases, Check is filled with a Fail and return is False
0192   Standard_EXPORT Standard_Boolean ReadXY (const IGESData_ParamCursor& PC, const Standard_CString mess, gp_XY& val);
0193   
0194   Standard_EXPORT Standard_Boolean ReadXYZ (const IGESData_ParamCursor& PC, Message_Msg& amsg, gp_XYZ& val);
0195   
0196   //! Reads a triplet of Real values (X,Y,Z) from parameter "num"
0197   //! Integers are accepted (Check is filled with a Warning
0198   //! message) and cause return to be True (as normal case)
0199   //! In other cases, Check is filled with a Fail and return is False
0200   //! For Message
0201   Standard_EXPORT Standard_Boolean ReadXYZ (const IGESData_ParamCursor& PC, const Standard_CString mess, gp_XYZ& val);
0202   
0203   Standard_EXPORT Standard_Boolean ReadText (const IGESData_ParamCursor& thePC, const Message_Msg& theMsg, Handle(TCollection_HAsciiString)& theVal);
0204   
0205   //! Reads a Text value from parameter "num", as a String from
0206   //! Collection, that is, Hollerith text without leading "nnnH"
0207   //! If it is not a String, fills Check with a Fail (using mess)
0208   //! and returns False
0209   Standard_EXPORT Standard_Boolean ReadText (const IGESData_ParamCursor& PC, const Standard_CString mess, Handle(TCollection_HAsciiString)& val);
0210   
0211   Standard_EXPORT Standard_Boolean ReadEntity (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, IGESData_Status& aStatus, Handle(IGESData_IGESEntity)& val, const Standard_Boolean canbenul = Standard_False);
0212   
0213   //! Reads an IGES entity from parameter "num"
0214   //! An Entity is known by its reference, which has the form of an
0215   //! odd Integer Value (a number in the Directory)
0216   //! If <canbenul> is given True, a Reference can also be Null :
0217   //! in this case, the result is a Null Handle with no Error
0218   //! If <canbenul> is False, a Null Reference causes an Error
0219   //! If the parameter cannot refer to an entity (or null), fills
0220   //! Check with a Fail (using mess) and returns False
0221   Standard_EXPORT Standard_Boolean ReadEntity (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, const Standard_CString mess, Handle(IGESData_IGESEntity)& val, const Standard_Boolean canbenul = Standard_False);
0222   
0223   Standard_EXPORT Standard_Boolean ReadEntity (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, IGESData_Status& aStatus, const Handle(Standard_Type)& type, Handle(IGESData_IGESEntity)& val, const Standard_Boolean canbenul = Standard_False);
0224   
0225   //! Safe variant for arbitrary type of argument
0226   template <class T> 
0227   Standard_Boolean ReadEntity (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, IGESData_Status& aStatus, const Handle(Standard_Type)& type, Handle(T)& val, const Standard_Boolean canbenul = Standard_False)
0228   {
0229     Handle(IGESData_IGESEntity) aVal = val;
0230     Standard_Boolean aRes = ReadEntity (IR, PC, aStatus, type, aVal, canbenul);
0231     val = Handle(T)::DownCast(aVal);
0232     return aRes && (canbenul || ! val.IsNull());
0233   }
0234 
0235   //! Works as ReadEntity without Type, but in addition checks the
0236   //! Type of the Entity, which must be "kind of" a given <type>
0237   //! Then, gives the same fail cases as ReadEntity without Type,
0238   //! plus the case "Incorrect Type"
0239   //! (in such a case, returns False and givel <val> = Null)
0240   Standard_EXPORT Standard_Boolean ReadEntity (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, const Standard_CString mess, const Handle(Standard_Type)& type, Handle(IGESData_IGESEntity)& val, const Standard_Boolean canbenul = Standard_False);
0241   
0242   //! Safe variant for arbitrary type of argument
0243   template <class T> 
0244   Standard_Boolean ReadEntity (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, const Standard_CString mess, const Handle(Standard_Type)& type, Handle(T)& val, const Standard_Boolean canbenul = Standard_False)
0245   {
0246     Handle(IGESData_IGESEntity) aVal = val;
0247     Standard_Boolean aRes = ReadEntity (IR, PC, mess, type, aVal, canbenul);
0248     val = Handle(T)::DownCast(aVal);
0249     return aRes && (canbenul || ! val.IsNull());
0250   }
0251 
0252   Standard_EXPORT Standard_Boolean ReadInts (const IGESData_ParamCursor& PC, const Message_Msg& amsg, Handle(TColStd_HArray1OfInteger)& val, const Standard_Integer index = 1);
0253   
0254   //! Reads a list of Integer values, defined by PC (with a count of
0255   //! parameters). PC can start from Current Number and command it
0256   //! to advance after reading (use method CurrentList to do this)
0257   //! The list is given as a HArray1, numered from "index"
0258   //! If all params are not Integer, Check is filled (using mess)
0259   //! and return value is False
0260   Standard_EXPORT Standard_Boolean ReadInts (const IGESData_ParamCursor& PC, const Standard_CString mess, Handle(TColStd_HArray1OfInteger)& val, const Standard_Integer index = 1);
0261   
0262   Standard_EXPORT Standard_Boolean ReadReals (const IGESData_ParamCursor& PC, Message_Msg& amsg, Handle(TColStd_HArray1OfReal)& val, const Standard_Integer index = 1);
0263   
0264   //! Reads a list of Real values defined by PC
0265   //! Same conditions as for ReadInts, for PC and index
0266   //! An Integer parameter is accepted, if at least one parameter is
0267   //! Integer, Check is filled with a "Warning" message
0268   //! If all params are neither Real nor Integer, Check is filled
0269   //! (using mess) and return value is False
0270   Standard_EXPORT Standard_Boolean ReadReals (const IGESData_ParamCursor& PC, const Standard_CString mess, Handle(TColStd_HArray1OfReal)& val, const Standard_Integer index = 1);
0271   
0272   Standard_EXPORT Standard_Boolean ReadTexts (const IGESData_ParamCursor& PC, const Message_Msg& amsg, Handle(Interface_HArray1OfHAsciiString)& val, const Standard_Integer index = 1);
0273   
0274   //! Reads a list of Hollerith Texts, defined by PC
0275   //! Texts are read as Hollerith texts without leading "nnnH"
0276   //! Same conditions as for ReadInts, for PC and index
0277   //! If all params are not Text, Check is filled (using mess)
0278   //! and return value is False
0279   Standard_EXPORT Standard_Boolean ReadTexts (const IGESData_ParamCursor& PC, const Standard_CString mess, Handle(Interface_HArray1OfHAsciiString)& val, const Standard_Integer index = 1);
0280   
0281   Standard_EXPORT Standard_Boolean ReadEnts (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, const Message_Msg& amsg, Handle(IGESData_HArray1OfIGESEntity)& val, const Standard_Integer index = 1);
0282   
0283   //! Reads a list of Entities defined by PC
0284   //! Same conditions as for ReadInts, for PC and index
0285   //! The list is given as a HArray1, numered from "index"
0286   //! If all params cannot be read as Entities, Check is filled
0287   //! (using mess) and return value is False
0288   //! Remark : Null references are accepted, they are ignored
0289   //! (negative pointers too : they provoke a Warning message)
0290   //! If the caller wants to check them, a loop on ReadEntity should
0291   //! be used
0292   Standard_EXPORT Standard_Boolean ReadEnts (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, const Standard_CString mess, Handle(IGESData_HArray1OfIGESEntity)& val, const Standard_Integer index = 1);
0293   
0294   Standard_EXPORT Standard_Boolean ReadEntList (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, Message_Msg& amsg, Interface_EntityList& val, const Standard_Boolean ord = Standard_True);
0295   
0296   //! Reads a list of Entities defined by PC
0297   //! Same conditions as for ReadEnts, for PC
0298   //! The list is given as an EntityList
0299   //! (index has no meaning; the EntityList starts from clear)
0300   //! If "ord" is given True (default), entities will be added to
0301   //! the list in their original order
0302   //! Remark : Negative or Null Pointers are ignored
0303   //! Else ("ord" False), order is not guaranteed (faster mode)
0304   //! If all params cannot be read as Entities, same as above
0305   //! Warning  Give "ord" to False ONLY if order is not significant
0306   Standard_EXPORT Standard_Boolean ReadEntList (const Handle(IGESData_IGESReaderData)& IR, const IGESData_ParamCursor& PC, const Standard_CString mess, Interface_EntityList& val, const Standard_Boolean ord = Standard_True);
0307   
0308   Standard_EXPORT Standard_Boolean ReadingReal (const Standard_Integer num, Standard_Real& val);
0309   
0310   //! Routine which reads a Real parameter, given its number
0311   //! Same conditions as ReadReal for mess, val, and return value
0312   Standard_EXPORT Standard_Boolean ReadingReal (const Standard_Integer num, const Standard_CString mess, Standard_Real& val);
0313   
0314   Standard_EXPORT Standard_Boolean ReadingEntityNumber (const Standard_Integer num, Standard_Integer& val);
0315   
0316   //! Routine which reads an Entity Number (which allows to read the
0317   //! Entity in the IGESReaderData by BoundEntity), given its number
0318   //! in the list of Parameters
0319   //! Same conditions as ReadEntity for mess, val, and return value
0320   //! In particular, returns True and val to zero means Null Entity,
0321   //! and val not zero means Entity read by BoundEntity
0322   Standard_EXPORT Standard_Boolean ReadingEntityNumber (const Standard_Integer num, const Standard_CString mess, Standard_Integer& val);
0323   
0324   Standard_EXPORT void SendFail (const Message_Msg& amsg);
0325   
0326   Standard_EXPORT void SendWarning (const Message_Msg& amsg);
0327   
0328   Standard_EXPORT void AddFail (const Standard_CString afail, const Standard_CString bfail = "");
0329   
0330   //! feeds the Check with a new fail (as a String or as a CString)
0331   Standard_EXPORT void AddFail (const Handle(TCollection_HAsciiString)& af, const Handle(TCollection_HAsciiString)& bf);
0332   
0333   Standard_EXPORT void AddWarning (const Standard_CString awarn, const Standard_CString bwarn = "");
0334   
0335   //! feeds the Check with a new Warning message
0336   Standard_EXPORT void AddWarning (const Handle(TCollection_HAsciiString)& aw, const Handle(TCollection_HAsciiString)& bw);
0337   
0338   Standard_EXPORT void Mend (const Standard_CString pref = "");
0339   
0340   //! says if fails have been recorded into the Check
0341   Standard_EXPORT Standard_Boolean HasFailed() const;
0342   
0343   //! returns the Check
0344   //! Note that any error signaled above is also recorded into it
0345   Standard_EXPORT const Handle(Interface_Check)& Check() const;
0346   
0347   //! returns the check in a way which allows to work on it directly
0348   //! (i.e. messages added to the Check are added to ParamReader too)
0349   Standard_EXPORT Handle(Interface_Check)& CCheck();
0350   
0351   //! Returns True if the Check is Empty
0352   //! Else, it has to be recorded with the Read Entity
0353   Standard_EXPORT Standard_Boolean IsCheckEmpty() const;
0354 
0355 
0356 
0357 
0358 protected:
0359 
0360 
0361 
0362 
0363 
0364 private:
0365 
0366   
0367   Standard_EXPORT Standard_Boolean PrepareRead (const IGESData_ParamCursor& PC, const Standard_Boolean several, const Standard_Integer size = 1);
0368   
0369   //! Prepares work for Read... methods which call it to begin
0370   //! The required count of parameters must not overpass NbParams.
0371   //! If several is given False, PC count must be one.
0372   //! If size is given, the TermSize from ParmCursor must be a
0373   //! multiple count of this size.
0374   //! If one of above condition is not satisfied, a Fail Message is
0375   //! recorded into Check, using the root "mess" and return is False
0376   Standard_EXPORT Standard_Boolean PrepareRead (const IGESData_ParamCursor& PC, const Standard_CString mess, const Standard_Boolean several, const Standard_Integer size = 1);
0377   
0378   //! Gets the first parameter number to be read, determined from
0379   //! ParamCursor data read by PrepareRead (Start + Offset)
0380   //! Then commands to skip 1 parameter (default) or nb if given
0381   Standard_EXPORT Standard_Integer FirstRead (const Standard_Integer nb = 1);
0382   
0383   //! Gets the next parameter number to be read. Skips to next Item
0384   //! if TermSize has been read.
0385   //! Then commands to skip 1 parameter (default) or nb if given
0386   Standard_EXPORT Standard_Integer NextRead (const Standard_Integer nb = 1);
0387   
0388   //! internal method which builds a Fail message from an
0389   //! identification "idm" and a diagnostic ("afail")
0390   //! Also feeds LastReadStatus
0391   //! <af> for final message, bf (can be different) for original
0392   Standard_EXPORT void AddFail (const Standard_CString idm, const Handle(TCollection_HAsciiString)& af, const Handle(TCollection_HAsciiString)& bf);
0393   
0394   //! Same as above but with CString
0395   //! <bf> empty means = <af>
0396   Standard_EXPORT void AddFail (const Standard_CString idm, const Standard_CString afail, const Standard_CString bfail);
0397   
0398   //! internal method which builds a Warning message from an
0399   //! identification "idm" and a diagnostic
0400   //! <aw> is final message, bw is original (can be different)
0401   //! Also feeds LastReadStatus
0402   Standard_EXPORT void AddWarning (const Standard_CString idm, const Handle(TCollection_HAsciiString)& aw, const Handle(TCollection_HAsciiString)& bw);
0403   
0404   //! Same as above but with CString
0405   //! <bw> empty means = <aw>
0406   Standard_EXPORT void AddWarning (const Standard_CString idm, const Standard_CString aw, const Standard_CString bw);
0407 
0408 
0409   Handle(Interface_ParamList) theparams;
0410   Handle(Interface_Check) thecheck;
0411   Standard_Integer thebase;
0412   Standard_Integer thenbpar;
0413   Standard_Integer thecurr;
0414   IGESData_ReadStage thestage;
0415   Standard_Boolean thelast;
0416   Standard_Integer theindex;
0417   Standard_Integer thenbitem;
0418   Standard_Integer theitemsz;
0419   Standard_Integer theoffset;
0420   Standard_Integer thetermsz;
0421   Standard_Integer themaxind;
0422   Standard_Integer thenbterm;
0423   Standard_Integer pbrealint;
0424   Standard_Integer pbrealform;
0425   Standard_Integer thenum;
0426 
0427 
0428 };
0429 
0430 
0431 
0432 
0433 
0434 
0435 
0436 #endif // _IGESData_ParamReader_HeaderFile