Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-09 09:15:49

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