Open CASCADE Technology  6.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions
StepData_StepWriter Class Reference

manages atomic file writing, under control of StepModel (for
general organisation of file) and each class of Transient
(for its own parameters) : prepares text to be written then
writes it
A stream cannot be used because Step limits line length at 72
In more, a specific object offers more appropriate functions
More...

#include <StepData_StepWriter.hxx>

Public Member Functions

 StepData_StepWriter (const Handle< StepData_StepModel > &amodel)
 Creates an empty StepWriter from a StepModel. The StepModel
provides the Number of Entities, as identifiers for File
More...
 
Standard_IntegerLabelMode ()
 
ModeLabel controls how to display entity ids : <br>
     0 (D) gives entity number in the model <br>
     1 gives the already recorded label (else, its number) <br>

Warning : conflicts are not controlled
More...

 
Standard_IntegerTypeMode ()
 TypeMode controls the type form to use :
0 (D) for normal long form
1 for short form (if a type name has no short form, normal
long form is then used)
More...
 
Interface_FloatWriterFloatWriter ()
 Returns the embedded FloatWriter, which controls sending Reals
Use this method to access FloatWriter in order to consult or
change its options (MainFormat, FormatForRange,ZeroSuppress),
because it is returned as the address of its field
More...
 
void SetScope (const Standard_Integer numscope, const Standard_Integer numin)
 
Declares the Entity Number <numscope> to correspond to a Scope <br>
     which contains the Entity Number <numin>. Several calls to the <br>
     same <numscope> add Entities in this Scope, in this order. <br>//!           Error if <numin> is already declared in the Scope <br>

Warning : the declaration of the Scopes is assumed to be consistent,
i.e. <numin> is not referenced from outside this Scope
(not checked here)
More...

 
Standard_Boolean IsInScope (const Standard_Integer num) const
 Returns True if an Entity identified by its Number is in a Scope
More...
 
void SendModel (const Handle< StepData_Protocol > &protocol, const Standard_Boolean headeronly=Standard_False)
 Sends the complete Model, included HEADER and DATA Sections
Works with a WriterLib defined through a Protocol
If <headeronly> is given True, only the HEADER Section is sent
(used to Dump the Header of a StepModel)
More...
 
void SendHeader ()
 Begins model header
More...
 
void SendData ()
 Begins data section; error if EndSec was not set
More...
 
void SendEntity (const Standard_Integer nument, const StepData_WriterLib &lib)
 Send an Entity of the Data Section. If it corresponds to a
Scope, also Sends the Scope informations and contained Items
More...
 
void EndSec ()
 sets end of section; to be done before passing to next one
More...
 
void EndFile ()
 sets end of file; error is EndSec was not set
More...
 
void NewLine (const Standard_Boolean evenempty)
 flushes current line; if empty, flushes it (defines a new
empty line) if evenempty is True; else, skips it
More...
 
void JoinLast (const Standard_Boolean newline)
 joins current line to last one, only if new length is 72 max
if newline is True, a new current line begins; else, current
line is set to the last line (once joined) itself an can be
completed
More...
 
void Indent (const Standard_Boolean onent)
 asks that further indentations will begin at position of
entity first opening bracket; else they begin at zero (def)
for each sublist level, two more blancks are added at beginning
(except for text continuation, which must begin at true zero)
More...
 
void SendIdent (const Standard_Integer ident)
 
begins an entity with an ident plus '=' (at beginning of line) <br>
     entity ident is its Number given by the containing Model <br>

Warning : <ident> must be, either Number or Label, according LabelMode
More...

 
void SendScope ()
 sets a begin of Scope (ends this line)
More...
 
void SendEndscope ()
 sets an end of Scope (on a separate line)
More...
 
void Comment (const Standard_Boolean mode)
 sets a comment mark : if mode is True, begins Comment zone,
if mode is False, ends Comment zone (if one is begun)
More...
 
void SendComment (const Handle< TCollection_HAsciiString > &text)
 sends a comment. Error if we are not inside a comment zone
More...
 
void SendComment (const Standard_CString text)
 same as above but accepts a CString (ex.: "..." directly)
More...
 
void StartEntity (const TCollection_AsciiString &atype)
 sets entity's StepType, opens brakets, starts param no to 0
params are separated by comma
Remark : for a Multiple Type Entity (see Express ANDOR clause)
StartComplex must be called before sending componants, then
each "Componant" must be send separately (one call to
StartEntity for each one) : the Type which preceeds is then
automaticaly closed. Once all the componants have been sent,
EndComplex must be called, then and only then EndEntity
More...
 
void StartComplex ()
 sends the start of a complex entity, which is a simple open
bracket (without increasing braket level)
It must be called JUST AFTER SendEntity and BEFORE sending
componants, each one begins by StartEntity
More...
 
void EndComplex ()
 sends the end of a complex entity : a simple closed bracket
It must be called AFTER sending all the componants and BEFORE
the final call to EndEntity
More...
 
void SendField (const StepData_Field &fild, const Handle< StepData_PDescr > &descr)
 Sends the content of a field, controlled by its descriptor
If the descriptor is not defined, follows the description
detained by the field itself
More...
 
void SendSelect (const Handle< StepData_SelectMember > &sm, const Handle< StepData_PDescr > &descr)
 Sends a SelectMember, which cab be named or not
More...
 
void SendList (const StepData_FieldList &list, const Handle< StepData_ESDescr > &descr)
 Send the content of an entity as being a FieldList controlled
by its descriptor. This includes start and end brackets but
not the entity type
More...
 
void OpenSub ()
 open a sublist by a '('
More...
 
void OpenTypedSub (const Standard_CString subtype)
 open a sublist with its type then a '('
More...
 
void CloseSub ()
 closes a sublist by a ')'
More...
 
void AddParam ()
 prepares adding a parameter (that is, adds ',' except for
first one); normally for internal use; can be used to send
a totally empty parameter (with no litteral value)
More...
 
void Send (const Standard_Integer val)
 sends an integer parameter
More...
 
void Send (const Standard_Real val)
 sends a real parameter (wroks with FloatWriter)
More...
 
void Send (const TCollection_AsciiString &val)
 sends a text given as string (it will be set between '...')
More...
 
void Send (const Handle< Standard_Transient > &val)
 sends a reference to an entity (its identifier with '#')
REMARK 1 : a Null <val> is interpreted as "Undefined"
REMARK 2 : for an HAsciiString which is not recorded in the
Model, it is send as its String Content, between quotes
More...
 
void SendBoolean (const Standard_Boolean val)
 sends a Boolean as .T. for True or .F. for False
(it is an useful case of Enum, which is built-in)
More...
 
void SendLogical (const StepData_Logical val)
 sends a Logical as .T. or .F. or .U. according its Value
(it is a standard case of Enum for Step, and is built-in)
More...
 
void SendString (const TCollection_AsciiString &val)
 sends a string exactly as it is given
More...
 
void SendString (const Standard_CString val)
 sends a string exactly as it is given
More...
 
void SendEnum (const TCollection_AsciiString &val)
 sends an enum given by String (litteral expression)
adds '.' around it if not done
Remark : val can be computed by class EnumTool from StepData:
StepWriter.SendEnum (myenum.Text(enumval));
More...
 
void SendEnum (const Standard_CString val)
 sends an enum given by String (litteral expression)
adds '.' around it if not done
More...
 
void SendArrReal (const Handle< TColStd_HArray1OfReal > &anArr)
 sends an array of real
More...
 
void SendUndef ()
 sends an undefined (optionnal absent) parameter (by '$')
More...
 
void SendDerived ()
 sends a "Derived" parameter (by '*'). A Derived Parameter has
been inherited from a Super-Type then redefined as being
computed by a function. Hence its value in file is senseless.
More...
 
void EndEntity ()
 sends end of entity (closing bracket plus ';')
Error if count of opened-closed brackets is not null
More...
 
Interface_CheckIterator CheckList () const
 Returns the check-list, which has received possible checks :
for unknown entities, badly loaded ones, null or unknown
references
More...
 
Standard_Integer NbLines () const
 Returns count of Lines
More...
 
Handle_TCollection_HAsciiString Line (const Standard_Integer num) const
 Returns a Line given its rank in the File
More...
 
Standard_Boolean Print (Standard_OStream &S)
 writes result on an output defined as an OStream
then clears it
More...
 

Detailed Description

manages atomic file writing, under control of StepModel (for
general organisation of file) and each class of Transient
(for its own parameters) : prepares text to be written then
writes it
A stream cannot be used because Step limits line length at 72
In more, a specific object offers more appropriate functions

Constructor & Destructor Documentation

StepData_StepWriter::StepData_StepWriter ( const Handle< StepData_StepModel > &  amodel)

Creates an empty StepWriter from a StepModel. The StepModel
provides the Number of Entities, as identifiers for File

Member Function Documentation

void StepData_StepWriter::AddParam ( )

prepares adding a parameter (that is, adds ',' except for
first one); normally for internal use; can be used to send
a totally empty parameter (with no litteral value)

Interface_CheckIterator StepData_StepWriter::CheckList ( ) const

Returns the check-list, which has received possible checks :
for unknown entities, badly loaded ones, null or unknown
references

void StepData_StepWriter::CloseSub ( )

closes a sublist by a ')'

void StepData_StepWriter::Comment ( const Standard_Boolean  mode)

sets a comment mark : if mode is True, begins Comment zone,
if mode is False, ends Comment zone (if one is begun)

void StepData_StepWriter::EndComplex ( )

sends the end of a complex entity : a simple closed bracket
It must be called AFTER sending all the componants and BEFORE
the final call to EndEntity

void StepData_StepWriter::EndEntity ( )

sends end of entity (closing bracket plus ';')
Error if count of opened-closed brackets is not null

void StepData_StepWriter::EndFile ( )

sets end of file; error is EndSec was not set

void StepData_StepWriter::EndSec ( )

sets end of section; to be done before passing to next one

Interface_FloatWriter& StepData_StepWriter::FloatWriter ( )

Returns the embedded FloatWriter, which controls sending Reals
Use this method to access FloatWriter in order to consult or
change its options (MainFormat, FormatForRange,ZeroSuppress),
because it is returned as the address of its field

void StepData_StepWriter::Indent ( const Standard_Boolean  onent)

asks that further indentations will begin at position of
entity first opening bracket; else they begin at zero (def)
for each sublist level, two more blancks are added at beginning
(except for text continuation, which must begin at true zero)

Standard_Boolean StepData_StepWriter::IsInScope ( const Standard_Integer  num) const

Returns True if an Entity identified by its Number is in a Scope

void StepData_StepWriter::JoinLast ( const Standard_Boolean  newline)

joins current line to last one, only if new length is 72 max
if newline is True, a new current line begins; else, current
line is set to the last line (once joined) itself an can be
completed

Standard_Integer& StepData_StepWriter::LabelMode ( )

ModeLabel controls how to display entity ids : <br>
     0 (D) gives entity number in the model <br>
     1 gives the already recorded label (else, its number) <br>

Warning : conflicts are not controlled

Handle_TCollection_HAsciiString StepData_StepWriter::Line ( const Standard_Integer  num) const

Returns a Line given its rank in the File

Standard_Integer StepData_StepWriter::NbLines ( ) const

Returns count of Lines

void StepData_StepWriter::NewLine ( const Standard_Boolean  evenempty)

flushes current line; if empty, flushes it (defines a new
empty line) if evenempty is True; else, skips it

void StepData_StepWriter::OpenSub ( )

open a sublist by a '('

void StepData_StepWriter::OpenTypedSub ( const Standard_CString  subtype)

open a sublist with its type then a '('

Standard_Boolean StepData_StepWriter::Print ( Standard_OStream S)

writes result on an output defined as an OStream
then clears it

void StepData_StepWriter::Send ( const Standard_Integer  val)

sends an integer parameter

void StepData_StepWriter::Send ( const Standard_Real  val)

sends a real parameter (wroks with FloatWriter)

void StepData_StepWriter::Send ( const TCollection_AsciiString val)

sends a text given as string (it will be set between '...')

void StepData_StepWriter::Send ( const Handle< Standard_Transient > &  val)

sends a reference to an entity (its identifier with '#')
REMARK 1 : a Null <val> is interpreted as "Undefined"
REMARK 2 : for an HAsciiString which is not recorded in the
Model, it is send as its String Content, between quotes

void StepData_StepWriter::SendArrReal ( const Handle< TColStd_HArray1OfReal > &  anArr)

sends an array of real

void StepData_StepWriter::SendBoolean ( const Standard_Boolean  val)

sends a Boolean as .T. for True or .F. for False
(it is an useful case of Enum, which is built-in)

void StepData_StepWriter::SendComment ( const Handle< TCollection_HAsciiString > &  text)

sends a comment. Error if we are not inside a comment zone

void StepData_StepWriter::SendComment ( const Standard_CString  text)

same as above but accepts a CString (ex.: "..." directly)

void StepData_StepWriter::SendData ( )

Begins data section; error if EndSec was not set

void StepData_StepWriter::SendDerived ( )

sends a "Derived" parameter (by '*'). A Derived Parameter has
been inherited from a Super-Type then redefined as being
computed by a function. Hence its value in file is senseless.

void StepData_StepWriter::SendEndscope ( )

sets an end of Scope (on a separate line)

void StepData_StepWriter::SendEntity ( const Standard_Integer  nument,
const StepData_WriterLib lib 
)

Send an Entity of the Data Section. If it corresponds to a
Scope, also Sends the Scope informations and contained Items

void StepData_StepWriter::SendEnum ( const TCollection_AsciiString val)

sends an enum given by String (litteral expression)
adds '.' around it if not done
Remark : val can be computed by class EnumTool from StepData:
StepWriter.SendEnum (myenum.Text(enumval));

void StepData_StepWriter::SendEnum ( const Standard_CString  val)

sends an enum given by String (litteral expression)
adds '.' around it if not done

void StepData_StepWriter::SendField ( const StepData_Field fild,
const Handle< StepData_PDescr > &  descr 
)

Sends the content of a field, controlled by its descriptor
If the descriptor is not defined, follows the description
detained by the field itself

void StepData_StepWriter::SendHeader ( )

Begins model header

void StepData_StepWriter::SendIdent ( const Standard_Integer  ident)

begins an entity with an ident plus '=' (at beginning of line) <br>
     entity ident is its Number given by the containing Model <br>

Warning : <ident> must be, either Number or Label, according LabelMode

void StepData_StepWriter::SendList ( const StepData_FieldList list,
const Handle< StepData_ESDescr > &  descr 
)

Send the content of an entity as being a FieldList controlled
by its descriptor. This includes start and end brackets but
not the entity type

void StepData_StepWriter::SendLogical ( const StepData_Logical  val)

sends a Logical as .T. or .F. or .U. according its Value
(it is a standard case of Enum for Step, and is built-in)

void StepData_StepWriter::SendModel ( const Handle< StepData_Protocol > &  protocol,
const Standard_Boolean  headeronly = Standard_False 
)

Sends the complete Model, included HEADER and DATA Sections
Works with a WriterLib defined through a Protocol
If <headeronly> is given True, only the HEADER Section is sent
(used to Dump the Header of a StepModel)

void StepData_StepWriter::SendScope ( )

sets a begin of Scope (ends this line)

void StepData_StepWriter::SendSelect ( const Handle< StepData_SelectMember > &  sm,
const Handle< StepData_PDescr > &  descr 
)

Sends a SelectMember, which cab be named or not

void StepData_StepWriter::SendString ( const TCollection_AsciiString val)

sends a string exactly as it is given

void StepData_StepWriter::SendString ( const Standard_CString  val)

sends a string exactly as it is given

void StepData_StepWriter::SendUndef ( )

sends an undefined (optionnal absent) parameter (by '$')

void StepData_StepWriter::SetScope ( const Standard_Integer  numscope,
const Standard_Integer  numin 
)

Declares the Entity Number <numscope> to correspond to a Scope <br>
     which contains the Entity Number <numin>. Several calls to the <br>
     same <numscope> add Entities in this Scope, in this order. <br>//!           Error if <numin> is already declared in the Scope <br>

Warning : the declaration of the Scopes is assumed to be consistent,
i.e. <numin> is not referenced from outside this Scope
(not checked here)

void StepData_StepWriter::StartComplex ( )

sends the start of a complex entity, which is a simple open
bracket (without increasing braket level)
It must be called JUST AFTER SendEntity and BEFORE sending
componants, each one begins by StartEntity

void StepData_StepWriter::StartEntity ( const TCollection_AsciiString atype)

sets entity's StepType, opens brakets, starts param no to 0
params are separated by comma
Remark : for a Multiple Type Entity (see Express ANDOR clause)
StartComplex must be called before sending componants, then
each "Componant" must be send separately (one call to
StartEntity for each one) : the Type which preceeds is then
automaticaly closed. Once all the componants have been sent,
EndComplex must be called, then and only then EndEntity

Standard_Integer& StepData_StepWriter::TypeMode ( )

TypeMode controls the type form to use :
0 (D) for normal long form
1 for short form (if a type name has no short form, normal
long form is then used)


The documentation for this class was generated from the following file: