else
{
os << " Standard_EXPORT void Set" << field->Name()->ToCString() << " (const "
- << field->Type()->CPPName()->ToCString() << " the" << field->Name()->ToCString() << ");" << std::endl;
+ << field->Type()->CPPName()->ToCString() << (field->Type()->IsSimple() ? "" : "&")
+ << " the" << field->Name()->ToCString() << ");" << std::endl;
}
if (field->IsOptional())
{
// close
os.close();
- if (AbstractFlag()) return Standard_True;
+
+ if (AbstractFlag())
+ {
+ // generation of RW class is not needed
+ return Standard_True;
+ }
+
//===============================
// Step 3: generating HXX for Reader/Writer class
os << " Standard_EXPORT " << RWCPPName->ToCString() << "();" << std::endl << std::endl;
// read step
- os << " Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data," << std::endl;
- os << " const Standard_Integer num," << std::endl;
- os << " Handle(Interface_Check)& ach," << std::endl;
- os << " const Handle(" << CPPName()->ToCString() << ")& ent) const;"
+ os << " Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& theData," << std::endl;
+ os << " const Standard_Integer theNum," << std::endl;
+ os << " Handle(Interface_Check)& theCheck," << std::endl;
+ os << " const Handle(" << CPPName()->ToCString() << ")& theEnt) const;"
<< std::endl << std::endl;
// write step
- os << " Standard_EXPORT void WriteStep(StepData_StepWriter& SW," << std::endl;
- os << " const Handle(" << CPPName()->ToCString() << ")& ent) const;"
+ os << " Standard_EXPORT void WriteStep(StepData_StepWriter& theSW," << std::endl;
+ os << " const Handle(" << CPPName()->ToCString() << ")& theEnt) const;"
<< std::endl << std::endl;
// share
- os << " Standard_EXPORT void Share(const Handle(" << CPPName()->ToCString() << ")& ent," << std::endl;
- os << " Interface_EntityIterator& iter) const;" << std::endl << std::endl;
+ os << " Standard_EXPORT void Share(const Handle(" << CPPName()->ToCString() << ")& theEnt," << std::endl;
+ os << " Interface_EntityIterator& theIter) const;" << std::endl << std::endl;
// write end
os << "};" << std::endl << std::endl;
Express::WriteMethodStamp(os, new TCollection_HAsciiString("ReadStep"));
if (RWCPPName->Length() < 40)
{
- os << "void " << RWCPPName->ToCString() << "::ReadStep (const Handle(StepData_StepReaderData)& data," << std::endl;
+ os << "void " << RWCPPName->ToCString() << "::ReadStep (const Handle(StepData_StepReaderData)& theData," << std::endl;
writeSpaces(os, 17 + RWCPPName->Length());
- os << "const Standard_Integer num," << std::endl;
+ os << "const Standard_Integer theNum," << std::endl;
writeSpaces(os, 17 + RWCPPName->Length());
- os << "Handle(Interface_Check)& ach," << std::endl;
+ os << "Handle(Interface_Check)& theCheck," << std::endl;
writeSpaces(os, 17 + RWCPPName->Length());
- os << "const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl;
+ os << "const Handle(" << CPPname->ToCString() << ")& theEnt) const" << std::endl;
}
else
{
os << "void " << RWCPPName->ToCString() << "::ReadStep(" << std::endl;
- os << " const Handle(StepData_StepReaderData)& data," << std::endl;
- os << " const Standard_Integer num," << std::endl;
- os << " Handle(Interface_Check)& ach," << std::endl;
- os << " const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl;
+ os << " const Handle(StepData_StepReaderData)& theData," << std::endl;
+ os << " const Standard_Integer theNum," << std::endl;
+ os << " Handle(Interface_Check)& theCheck," << std::endl;
+ os << " const Handle(" << CPPname->ToCString() << ")& theEnt) const" << std::endl;
}
os << "{" << std::endl;
Standard_Integer nbFld = NbFields ( Standard_True );
os << " // Check number of parameters" << std::endl;
- os << " if (!data->CheckNbParams(num, " << nbFld << ", ach, \"" <<
+ os << " if (!theData->CheckNbParams(theNum, " << nbFld << ", theCheck, \"" <<
Express::ToStepName(Name())->ToCString() << "\"))" << std::endl;
os << " {" << std::endl;
os << " return;" << std::endl;
writeRWReadCode(os, 1, Standard_True); // write code for reading inherited and own fields
os << std::endl;
os << " // Initialize entity" << std::endl;
- os << " ent->Init(";
- makeInit(os, 12, Standard_True, 4);
+ os << " theEnt->Init(";
+ makeInit(os, 15, Standard_True, 4);
os << ");\n}" << std::endl;
// write method WriteStep
Express::WriteMethodStamp(os, new TCollection_HAsciiString("WriteStep"));
if (RWCPPName->Length() < 40)
{
- os << "void " << RWCPPName->ToCString() << "::WriteStep (StepData_StepWriter& SW," << std::endl;
+ os << "void " << RWCPPName->ToCString() << "::WriteStep (StepData_StepWriter& theSW," << std::endl;
writeSpaces(os, 18 + RWCPPName->Length());
- os << "const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl;
+ os << "const Handle(" << CPPname->ToCString() << ")& theEnt) const" << std::endl;
}
else
{
os << "void " << RWCPPName->ToCString() << "::WriteStep(" << std::endl;
- os << " StepData_StepWriter& SW," << std::endl;
- os << " const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl;
+ os << " StepData_StepWriter& theSW," << std::endl;
+ os << " const Handle(" << CPPname->ToCString() << ")& theEnt) const" << std::endl;
}
os << "{" << std::endl;
// write method Share
Express::WriteMethodStamp(os, new TCollection_HAsciiString("Share"));
+ std::ostringstream oos;
+ Standard_Integer nbF = writeRWShareCode(oos, 1, Standard_True); // write code for filling graph of references
if (RWCPPName->Length() < 40)
{
- os << "void " << RWCPPName->ToCString() << "::Share (const Handle(" << CPPname->ToCString() << ")& ent," << std::endl;
+ os << "void " << RWCPPName->ToCString() << "::Share (const Handle(" << CPPname->ToCString() << ")&";
+ os << ((nbF > 1) ? "theEnt," : ",") << std::endl;
writeSpaces(os, 14 + RWCPPName->Length());
- os << "Interface_EntityIterator& iter) const" << std::endl;
+ if (nbF > 1)
+ {
+ os << "Interface_EntityIterator& theIter) const" << std::endl;
+ }
+ else
+ {
+ os << "Interface_EntityIterator&) const" << std::endl;
+ }
}
else
{
os << "void " << RWCPPName->ToCString() << "::Share(" << std::endl;
- os << " const Handle(" << CPPname->ToCString() << ")& ent," << std::endl;
- os << " Interface_EntityIterator& iter) const" << std::endl;
+ os << " const Handle(" << CPPname->ToCString() << ")&";
+ os<< ((nbF > 1) ? "theEnt," : ",") << std::endl;
+ if (nbF > 1)
+ {
+ os << "Interface_EntityIterator& theIter) const" << std::endl;
+ }
+ else
+ {
+ os << "Interface_EntityIterator&) const" << std::endl;
+ }
}
os << "{" << std::endl;
- writeRWShareCode ( os, 1, Standard_True ); // write code for filling graph of references
+ if (nbF > 1)
+ {
+ os << oos.str();
+ }
os << "}" << std::endl;
if(CheckFlag())
{
Standard_OStream& theOs,
DataMapOfStringInteger& theDict) const
{
- for (Standard_Integer i = 1; i <= myInherit->Length(); i++)
+ for (Standard_Integer i = 2; i <= myInherit->Length(); i++)
{
Handle(Express_Entity) it = myInherit->Value(i);
it->writeIncludes(theOs, theDict);
level += 2;
// name of variable identifying number of parameter in data
- TCollection_AsciiString param("num");
+ TCollection_AsciiString param("theNum");
if (lev > 0)
{
+ param = TCollection_AsciiString("num");
param += TCollection_AsciiString(lev);
}
if (optional)
{
theOs << shift << "Standard_Boolean has" << varname << " = Standard_True;" << std::endl;
- theOs << shift << "if (data->IsParamDefined(" << param << ", " << index << "))" << std::endl;
+ theOs << shift << "if (theData->IsParamDefined(" << param << ", " << index << "))" << std::endl;
theOs << shift << "{" << std::endl;
shift += " ";
level++;
Handle(Express_NamedType) named = Handle(Express_NamedType)::DownCast(type);
if (named->Item()->IsKind(STANDARD_TYPE(Express_Entity)))
{
- theOs << shift << "data->ReadEntity(" << param << ", " << index << ", \"" << STEPName << "\", ach," << std::endl;
+ theOs << shift << "theData->ReadEntity(" << param << ", " << index << ", \"" << STEPName << "\", theCheck," << std::endl;
theOs << shift << " STANDARD_TYPE(" << named->CPPName()->ToCString() << "), a" << varname << ");" << std::endl;
}
else if (named->Item()->IsKind(STANDARD_TYPE(Express_Select)))
{
- theOs << shift << "data->ReadEntity(" << param << ", " << index << ", \"" << STEPName <<
- "\", ach, a" << varname << ");" << std::endl;
+ theOs << shift << "theData->ReadEntity(" << param << ", " << index << ", \"" << STEPName <<
+ "\", theCheck, a" << varname << ");" << std::endl;
}
else if (named->Item()->IsKind(STANDARD_TYPE(Express_Enum)))
{
- theOs << shift << "if (data->ParamType(" << param << ", " <<
+ theOs << shift << "if (theData->ParamType(" << param << ", " <<
index << ") == Interface_ParamEnum)" << std::endl;
theOs << shift << "{" << std::endl;
- theOs << shift << " Standard_CString text = data->ParamCValue(" <<
+ theOs << shift << " Standard_CString text = theData->ParamCValue(" <<
param << ", " << index << ");" << std::endl;
Handle(Express_Enum) en = Handle(Express_Enum)::DownCast(named->Item());
Handle(TCollection_HAsciiString) prefix = Express::EnumPrefix(en->Name());
}
theOs << shift << " else" << std::endl;
theOs << shift << " {" << std::endl;
- theOs << shift << " ach->AddFail(\"Parameter #" << index << " (" << STEPName
+ theOs << shift << " theCheck->AddFail(\"Parameter #" << index << " (" << STEPName
<< ") has not allowed value\");" << std::endl;
theOs << shift << " }" << std::endl;
theOs << shift << "}" << std::endl;
theOs << shift << "else" << std::endl;
theOs << shift << "{" << std::endl;
- theOs << shift << " ach->AddFail(\"Parameter #" << index << " (" << STEPName
+ theOs << shift << " theCheck->AddFail(\"Parameter #" << index << " (" << STEPName
<< ") is not enumeration\");" << std::endl;
theOs << shift << "}" << std::endl;
//theOs << "!!! READING/WRITING ENUM NOT IMPLEMENTED !!!" << std::endl;
{
Handle(Express_ComplexType) complex = Handle(Express_ComplexType)::DownCast(type);
theOs << shift << "Standard_Integer sub" << index << " = 0;" << std::endl;
- theOs << shift << "if (data->ReadSubList(" << param << ", " << index << ", \"" <<
- STEPName << "\", ach, sub" << index << "))" << std::endl;
+ theOs << shift << "if (theData->ReadSubList(" << param << ", " << index << ", \"" <<
+ STEPName << "\", theCheck, sub" << index << "))" << std::endl;
theOs << shift << "{" << std::endl;
- theOs << shift << " Standard_Integer nb" << lev << " = data->NbParams(sub" << index << ");" << std::endl;
+ theOs << shift << " Standard_Integer nb" << lev << " = theData->NbParams(sub" << index << ");" << std::endl;
TCollection_AsciiString iter = lev;
iter.Prepend("i");
TCollection_AsciiString var = lev;
TCollection_AsciiString jter = lev;
jter.Prepend("j");
theOs << shift << " Standard_Integer nbj" << lev <<
- " = data->NbParams(data->ParamNumber(sub" << index << ",1));" << std::endl;
+ " = theData->NbParams(theData->ParamNumber(sub" << index << ",1));" << std::endl;
theOs << shift << " a" << varname << " = new " << type->CPPName()->ToCString() <<
"(1, nb" << lev << ", 1, nbj" << lev << ");" << std::endl;
theOs << shift << " for (Standard_Integer " << iter << " = 1; " << iter << " <= nb"
<< lev << "; " << iter << "++)" << std::endl;
theOs << shift << " {" << std::endl;
theOs << shift << " Standard_Integer subj" << index << " = 0;" << std::endl;
- theOs << shift << " if ( data->ReadSubList (sub" << index << ", " << iter << ", \"sub-part(" <<
- STEPName << ")\", ach, subj" << index << ") ) {" << std::endl;
+ theOs << shift << " if ( theData->ReadSubList (sub" << index << ", " << iter << ", \"sub-part(" <<
+ STEPName << ")\", theCheck, subj" << index << ") ) {" << std::endl;
theOs << shift << " Standard_Integer num" << level + 2 << " = subj" << index << ";" << std::endl;
theOs << shift << " for (Standard_Integer " << jter << " = 1; " << jter << " <= nbj" << lev <<
"; " << jter << "++)" << std::endl;
{
if (strlen(STEPName) + strlen(varname) < 70)
{
- theOs << shift << "data->ReadString(" << param << ", " << index << ", \"" << STEPName <<
- "\", ach, a" << varname << ");" << std::endl;
+ theOs << shift << "theData->ReadString(" << param << ", " << index << ", \"" << STEPName
+ << "\", theCheck, a" << varname << ");" << std::endl;
}
else
{
- theOs << shift << "data->ReadString(" << param << ", " << index << ", \"" << STEPName << "\", ach," << std::endl;
+ theOs << shift << "theData->ReadString(" << param << ", " << index << ", \"" << STEPName
+ << "\", theCheck," << std::endl;
theOs << shift << " a" << varname << ");" << std::endl;
}
}
else if (type->IsKind(STANDARD_TYPE(Express_Logical)))
{
- theOs << shift << "data->ReadLogical(" << param << ", " << index << ", \"" << STEPName <<
- "\", ach, a" << varname << ");" << std::endl;
+ theOs << shift << "theData->ReadLogical(" << param << ", " << index << ", \"" << STEPName <<
+ "\", theCheck, a" << varname << ");" << std::endl;
}
else if (type->IsKind(STANDARD_TYPE(Express_Boolean)))
{
- theOs << shift << "data->ReadBoolean(" << param << ", " << index << ", \"" << STEPName <<
- "\", ach, a" << varname << ");" << std::endl;
+ theOs << shift << "theData->ReadBoolean(" << param << ", " << index << ", \"" << STEPName <<
+ "\", theCheck, a" << varname << ");" << std::endl;
}
else if (type->IsKind(STANDARD_TYPE(Express_Number)) || type->IsKind(STANDARD_TYPE(Express_Integer)))
{
- theOs << shift << "data->ReadInteger(" << param << ", " << index << ", \"" << STEPName <<
- "\", ach, a" << varname << ");" << std::endl;
+ theOs << shift << "theData->ReadInteger(" << param << ", " << index << ", \"" << STEPName <<
+ "\", theCheck, a" << varname << ");" << std::endl;
}
else if (type->IsKind(STANDARD_TYPE(Express_Real)))
{
- theOs << shift << "data->ReadReal(" << param << ", " << index << ", \"" << STEPName <<
- "\", ach, a" << varname << ");" << std::endl;
+ theOs << shift << "theData->ReadReal(" << param << ", " << index << ", \"" << STEPName <<
+ "\", theCheck, a" << varname << ");" << std::endl;
}
if (optional)
type = complex->Type();
TCollection_AsciiString var(lev);
var.Prepend("Var");
- theOs << shift << "SW.OpenSub();" << std::endl;
+ theOs << shift << "theSW.OpenSub();" << std::endl;
theOs << shift << "for (Standard_Integer i" << index << " = 1; i" << index << " <= ";
if (type->IsKind(STANDARD_TYPE(Express_ComplexType)))
{ // array 2
type = complex2->Type();
theOs << varname << "->RowLength(); i" << index << "++)" << std::endl;
theOs << shift << "{" << std::endl;
- theOs << shift << " SW.NewLine(Standard_False);" << std::endl;
- theOs << shift << " SW.OpenSub();" << std::endl;
+ theOs << shift << " theSW.NewLine(Standard_False);" << std::endl;
+ theOs << shift << " theSW.OpenSub();" << std::endl;
theOs << shift << " for (Standard_Integer j" << index << " = 1; j" << index << " <= " <<
varname << "->ColLength(); j" << index << "++)" << std::endl;
theOs << shift << " {" << std::endl;
varname << "->Value(i" << index << ",j" << index << ");" << std::endl;
writeRWWriteField(theOs, var.ToCString(), type, index + 1, level + 1);
theOs << shift << " }" << std::endl;
- theOs << shift << " SW.CloseSub();" << std::endl;
+ theOs << shift << " theSW.CloseSub();" << std::endl;
}
else
{ // simple array
writeRWWriteField(theOs, var.ToCString(), type, index + 1, level);
}
theOs << shift << "}" << std::endl;
- theOs << shift << "SW.CloseSub();" << std::endl;
+ theOs << shift << "theSW.CloseSub();" << std::endl;
}
else if (type->IsKind(STANDARD_TYPE(Express_Boolean)))
{
- theOs << shift << "SW.SendBoolean(" << varname << ");" << std::endl;
+ theOs << shift << "theSW.SendBoolean(" << varname << ");" << std::endl;
}
else if (type->IsKind(STANDARD_TYPE(Express_Logical)))
{
- theOs << shift << "SW.SendLogical(" << varname << ");" << std::endl;
+ theOs << shift << "theSW.SendLogical(" << varname << ");" << std::endl;
}
else
{
Handle(TCollection_HAsciiString) ename = Express::ToStepName(names->Value(i));
ename->UpperCase();
theOs << shift << " case " << enpack.ToCString() << "_" << prefix->ToCString() <<
- names->Value(i)->ToCString() << ": SW.SendEnum(\"." <<
+ names->Value(i)->ToCString() << ": theSW.SendEnum(\"." <<
ename->ToCString() << ".\"); break;" << std::endl;
}
theOs << shift << "}" << std::endl;
}
else
{
- theOs << shift << "SW.Send(" << varname;
+ theOs << shift << "theSW.Send(" << varname;
if (!named.IsNull() && named->Item()->IsKind(STANDARD_TYPE(Express_Select)))
{
theOs << ".Value()";
{ // inherited base class implemented as field
varName.Prepend ( Name()->Cat ( "()->" )->String() );
}
- varName.Prepend ( "ent->" );
+ varName.Prepend ( "theEnt->" );
varName.AssignCat ( "()" );
theOs << std::endl;
if (field->IsOptional())
{
- theOs << " if (ent->";
+ theOs << " if (theEnt->";
if (!theOwn)
{
theOs << CPPName()->ToCString() << "::";
theOs << " }" << std::endl;
theOs << " else" << std::endl;
theOs << " {" << std::endl;
- theOs << " SW.SendUndef();" << std::endl;
+ theOs << " theSW.SendUndef();" << std::endl;
theOs << " }" << std::endl;
}
num++;
Handle(Express_NamedType) named = Handle(Express_NamedType)::DownCast(type);
if (named->Item()->IsKind(STANDARD_TYPE(Express_Entity)))
{
- theOs << shift << "iter.AddItem(" << varname << ");" << std::endl;
+ theOs << shift << "theIter.AddItem(" << varname << ");" << std::endl;
return Standard_True;
}
if (named->Item()->IsKind(STANDARD_TYPE(Express_Select)))
{
- theOs << shift << "iter.AddItem(" << varname << ".Value());" << std::endl;
+ theOs << shift << "theIter.AddItem(" << varname << ".Value());" << std::endl;
return Standard_True;
}
}
{ // inherited base class implemented as field
varName.Prepend(Name()->Cat("()->")->String());
}
- varName.Prepend("ent->");
+ varName.Prepend("theEnt->");
varName.AssignCat("()");
std::ostringstream oos;
theOs << std::endl;
if (field->IsOptional())
{
- theOs << " if (ent->";
+ theOs << " if (theEnt->";
if (!theOwn) theOs << CPPName()->ToCString() << "::";
else if (theOwn == -1) theOs << Name()->ToCString() << "()->";
theOs << "Has" << field->Name()->ToCString() << "())" << std::endl;
theOs << delim << space;
}
+ else if (theMode == 4)
+ {
+ theOs << ", ";
+ }
else
{
theOs << delim << "\n" << space;
{
theOs << "const Standard_Boolean theHas" << varName->ToCString() << ",\n" << space;
}
- else if (theMode == 2 || theMode == 4)
+ else if (theMode == 2)
{
theOs << "has" << varName->ToCString() << ",\n" << space;
}
+ else if (theMode == 4)
+ {
+ theOs << "has" << varName->ToCString() << ", ";
+ }
}
// write field