]> OCCT Git - occt-copy.git/commitdiff
0031481: Data Exchange - provide parser of STEP EXPRESS schema for generation of...
authorskl <skl@opencascade.com>
Mon, 30 Nov 2020 08:35:00 +0000 (11:35 +0300)
committerskl <skl@opencascade.com>
Mon, 7 Dec 2020 09:01:21 +0000 (12:01 +0300)
Changes for correspondence generated files to OCCT Code Rules.

src/Express/Express_Entity.cxx
src/Express/Express_Enum.cxx

index 30a8e3a99953c1e4a6cbdd511b0a14a15f5638a5..174f0f6db15b38c4542e6889e9354b03e77167ae 100644 (file)
@@ -222,7 +222,7 @@ Standard_Boolean Express_Entity::GenerateClass () const
   // write start of declaration (inheritance)
   os << "//! Representation of STEP entity " << Name()->ToCString() << std::endl;
   os << "class " << CPPname->ToCString() << " : public " << InheritName->ToCString();
-  os << std::endl << "{" << std::endl;
+  os << std::endl << "{" << std::endl << std::endl;
   os << "public :" << std::endl << std::endl;
   
   // write constructor
@@ -233,8 +233,8 @@ Standard_Boolean Express_Entity::GenerateClass () const
   // write Init methods
   if ( myInherit->Length() > 1 || myFields->Length() > 0 ) {
     os << "  //! Initialize all fields (own and inherited)" << std::endl;
-    os << " Standard_EXPORT void Init(";
-    MakeInit ( os, 27, Standard_True, 0 );
+    os << "  Standard_EXPORT void Init(";
+    MakeInit ( os, 28, Standard_True, 0 );
     os << ");" << std::endl;
     os << std::endl;
   }
@@ -274,13 +274,13 @@ Standard_Boolean Express_Entity::GenerateClass () const
     os << std::endl;
   }
 
-  os << "DEFINE_STANDARD_RTTIEXT(" << CPPname->ToCString() << ", " << InheritName->ToCString() << ")" << std::endl;
+  os << "  DEFINE_STANDARD_RTTIEXT(" << CPPname->ToCString() << ", " << InheritName->ToCString() << ")" << std::endl;
   os << std::endl;
 
   // write fields section
   if ( myInherit->Length() >1 || myFields->Length() >0 )
   {
-    os << "private:" << std::endl;
+    os << "private:" << std::endl << std::endl;
     for (Standard_Integer i = 2; i <= myInherit->Length(); i++)
     {
       Handle(Express_Entity) it = myInherit->Value(i);
@@ -319,7 +319,7 @@ Standard_Boolean Express_Entity::GenerateClass () const
   }
   
   // write end
-  os << "};" << std::endl;
+  os << "};" << std::endl << std::endl;
   os << "#endif // _" << CPPname->ToCString() << "_HeaderFile_" << std::endl;
   os.close();
   
@@ -338,75 +338,75 @@ Standard_Boolean Express_Entity::GenerateClass () const
   os << "IMPLEMENT_STANDARD_RTTIEXT(" << CPPname->ToCString() << ", " << InheritName->ToCString() << ")" << std::endl;
   
   // write constructor
-  Express::WriteMethodStamp ( os, CPPname );
+  Express::WriteMethodStamp(os, CPPname);
   os << CPPname->ToCString() << "::" << CPPname->ToCString() << " ()" << std::endl;
   os << "{" << std::endl;
-  for (Standard_Integer i=1; i <= myFields->Length(); i++ )
+  for (Standard_Integer i = 1; i <= myFields->Length(); i++)
   {
-    Handle(Express_Field) field = myFields->Value ( i );
-    if ( field->IsOptional() ) os << "  def" << field->Name()->ToCString() << " = Standard_False;" << std::endl;
+    Handle(Express_Field) field = myFields->Value(i);
+    if (field->IsOptional()) os << "  def" << field->Name()->ToCString() << " = Standard_False;" << std::endl;
   }
   os << "}" << std::endl;
 
   // write method Init()
-  if ( myInherit->Length() >1 || myFields->Length() >0 )
+  if (myInherit->Length() > 1 || myFields->Length() > 0)
   {
-    Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "Init" ) );
+    Express::WriteMethodStamp(os, new TCollection_HAsciiString("Init"));
     os << "void " << CPPname->ToCString() << "::Init (";
-    MakeInit ( os, 13 + CPPname->Length(), Standard_True, 1 );
+    MakeInit(os, 13 + CPPname->Length(), Standard_True, 1);
     os << ")\n{";
-    MakeInit ( os, -2, Standard_True, 3 );
+    MakeInit(os, -2, Standard_True, 3);
     os << "\n}" << std::endl;
   }
   
   // write "methods" section
-  for (Standard_Integer i=2; i <= myInherit->Length(); i++ )
+  for (Standard_Integer i = 2; i <= myInherit->Length(); i++)
   {
     Handle(Express_Entity) it = myInherit->Value(i);
-    WriteGetMethod ( os, CPPname, it->Name(), it->CPPName(), Standard_True, Standard_False );
-    WriteSetMethod ( os, CPPname, it->Name(), it->CPPName(), Standard_True, Standard_False );
+    WriteGetMethod(os, CPPname, it->Name(), it->CPPName(), Standard_True, Standard_False);
+    WriteSetMethod(os, CPPname, it->Name(), it->CPPName(), Standard_True, Standard_False);
   }
-  for (Standard_Integer i=1; i <= myFields->Length(); i++ )
+  for (Standard_Integer i = 1; i <= myFields->Length(); i++)
   {
-    Handle(Express_Field) field = myFields->Value ( i );
+    Handle(Express_Field) field = myFields->Value(i);
     Handle(Express_Type) type = field->Type();
-    WriteGetMethod ( os, CPPname, field->Name(), type->CPPName(), type->IsHandle(), type->IsSimple() );
-    WriteSetMethod ( os, CPPname, field->Name(), type->CPPName(), type->IsHandle(), type->IsSimple() );
+    WriteGetMethod(os, CPPname, field->Name(), type->CPPName(), type->IsHandle(), type->IsSimple());
+    WriteSetMethod(os, CPPname, field->Name(), type->CPPName(), type->IsHandle(), type->IsSimple());
     if (!field->IsOptional())
     {
       continue;
     }
-    Handle(TCollection_HAsciiString) method = new TCollection_HAsciiString ( "Has" );
-    method->AssignCat ( field->Name() );
-    Express::WriteMethodStamp ( os, method );
+    Handle(TCollection_HAsciiString) method = new TCollection_HAsciiString("Has");
+    method->AssignCat(field->Name());
+    Express::WriteMethodStamp(os, method);
     os << "Standard_Boolean " << CPPname->ToCString() << "::" << method->ToCString() << " () const" << std::endl;
     os << "{" << std::endl << "  return def" << field->Name()->ToCString() << ";\n}" << std::endl;
   }
-  
+
   // close
   os.close();
-  if(AbstractFlag()) return Standard_True;  
+  if (AbstractFlag()) return Standard_True;
   //===============================
   // Step 3: generating HXX for Reader/Writer class
-  
+
   // Open HXX file 
-  Handle(TCollection_HAsciiString) RWCPPName = new TCollection_HAsciiString ( "RW" );
-  RWCPPName->AssignCat ( GetPackageName() );
-  RWCPPName->AssignCat ( "_RW" );
-  RWCPPName->AssignCat ( Name() );
+  Handle(TCollection_HAsciiString) RWCPPName = new TCollection_HAsciiString("RW");
+  RWCPPName->AssignCat(GetPackageName());
+  RWCPPName->AssignCat("_RW");
+  RWCPPName->AssignCat(Name());
 
   pack = "RW";
   pack += GetPackageName()->String();
-  OSD_Path rwpath ( pack );
-  OSD_Directory rwdir ( rwpath );
-  rwdir.Build ( prot );
+  OSD_Path rwpath(pack);
+  OSD_Directory rwdir(rwpath);
+  rwdir.Build(prot);
   pack += "/";
   pack += RWCPPName->String();
-  
-  os.open ( pack.Cat ( ".hxx" ).ToCString() );
+
+  os.open(pack.Cat(".hxx").ToCString());
 
   // write header
-  Express::WriteFileStamp ( os );
+  Express::WriteFileStamp(os);
 
   os << "#ifndef _" << RWCPPName->ToCString() << "_HeaderFile_" << std::endl;
   os << "#define _" << RWCPPName->ToCString() << "_HeaderFile_" << std::endl;
@@ -427,7 +427,7 @@ Standard_Boolean Express_Entity::GenerateClass () const
   // write start of declaration (inheritance)
   os << "//! Read & Write tool for " << Name()->ToCString() << std::endl;
   os << "class " << RWCPPName->ToCString() << std::endl;
-  os << "{" << std::endl;
+  os << "{" << std::endl << std::endl;
   os << "public:" << std::endl;
   os << std::endl << "  DEFINE_STANDARD_ALLOC" << std::endl << std::endl;
 
@@ -435,20 +435,23 @@ Standard_Boolean Express_Entity::GenerateClass () const
   os << "  Standard_EXPORT " << RWCPPName->ToCString() << "();" << std::endl << std::endl;
 
   // read step
-  os << "  Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data," <<
-    " const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(" <<
-    CPPName()->ToCString() << ")& ent) const;" << std::endl << std::endl;
+  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;"
+    << std::endl << std::endl;
 
   // write step
-  os << "  Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(" <<
-    CPPName()->ToCString() << ")& ent) const;" << std::endl << std::endl;
+  os << "  Standard_EXPORT void WriteStep(StepData_StepWriter& SW," << std::endl;
+  os << "                                 const Handle(" << CPPName()->ToCString() << ")& ent) const;"
+    << std::endl << std::endl;
 
   // share
-  os << "  Standard_EXPORT void Share(const Handle(" <<
-    CPPName()->ToCString() << ")& ent, Interface_EntityIterator& iter) const;" << std::endl << std::endl;
+  os << "  Standard_EXPORT void Share(const Handle(" << CPPName()->ToCString() << ")& ent," << std::endl;
+  os << "                             Interface_EntityIterator& iter) const;" << std::endl << std::endl;
 
   // write end
-  os << "};" << std::endl;
+  os << "};" << std::endl << std::endl;
   os << "#endif // _" << RWCPPName->ToCString() << "_HeaderFile_" << std::endl;
   os.close();
   
@@ -476,19 +479,33 @@ Standard_Boolean Express_Entity::GenerateClass () const
 
   // write method ReadStep
   Express::WriteMethodStamp(os, new TCollection_HAsciiString("ReadStep"));
-  os << "void " << RWCPPName->ToCString() << "::ReadStep (const Handle(StepData_StepReaderData)& data," << std::endl;
-  WriteSpaces ( os, 17 + RWCPPName->Length() );
-  os << "const Standard_Integer num," << std::endl;
-  WriteSpaces ( os, 17 + RWCPPName->Length() );
-  os << "Handle(Interface_Check)& ach," << std::endl;
-  WriteSpaces ( os, 17 + RWCPPName->Length() );
-  os << "const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl;
+  if (RWCPPName->Length() < 40)
+  {
+    os << "void " << RWCPPName->ToCString() << "::ReadStep (const Handle(StepData_StepReaderData)& data," << std::endl;
+    WriteSpaces(os, 17 + RWCPPName->Length());
+    os << "const Standard_Integer num," << std::endl;
+    WriteSpaces(os, 17 + RWCPPName->Length());
+    os << "Handle(Interface_Check)& ach," << std::endl;
+    WriteSpaces(os, 17 + RWCPPName->Length());
+    os << "const Handle(" << CPPname->ToCString() << ")& ent) 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 << "{" << std::endl;
   Standard_Integer nbFld = NbFields ( Standard_True );
   
   os << "  // Check number of parameters" << std::endl;
-  os << "  if ( ! data->CheckNbParams(num," << nbFld << ",ach,\"" <<
-    Express::ToStepName(Name())->ToCString() << "\") ) return;" << std::endl;
+  os << "  if (!data->CheckNbParams(num, " << nbFld << ", ach, \"" <<
+    Express::ToStepName(Name())->ToCString() << "\"))" << std::endl;
+  os << "  {" << std::endl;
+  os << "    return;" << std::endl;
+  os << "  }" << std::endl;
   WriteRWReadCode(os, 1, Standard_True); // write code for reading inherited and own fields
   os << std::endl;
   os << "  // Initialize entity" << std::endl;
@@ -498,9 +515,18 @@ Standard_Boolean Express_Entity::GenerateClass () const
 
   // write method WriteStep
   Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "WriteStep" ) );
-  os << "void " << RWCPPName->ToCString() << "::WriteStep (StepData_StepWriter& SW," << std::endl;
-  WriteSpaces ( os, 18 + RWCPPName->Length() );
-  os << "const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl;
+  if (RWCPPName->Length() < 40)
+  {
+    os << "void " << RWCPPName->ToCString() << "::WriteStep (StepData_StepWriter& SW," << std::endl;
+    WriteSpaces(os, 18 + RWCPPName->Length());
+    os << "const Handle(" << CPPname->ToCString() << ")& ent) 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 << "{" << std::endl;
   
   WriteRWWriteCode(os, 0, Standard_True); // write code for writing inherited and own fields
@@ -508,9 +534,18 @@ Standard_Boolean Express_Entity::GenerateClass () const
 
   // write method Share
   Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "Share" ) );
-  os << "void " << RWCPPName->ToCString() << "::Share (const Handle(" << CPPname->ToCString() << ")& ent," << std::endl;
-  WriteSpaces ( os, 14 + RWCPPName->Length() );
-  os << "Interface_EntityIterator& iter) const" << std::endl;
+  if (RWCPPName->Length() < 40)
+  {
+    os << "void " << RWCPPName->ToCString() << "::Share (const Handle(" << CPPname->ToCString() << ")& ent," << std::endl;
+    WriteSpaces(os, 14 + RWCPPName->Length());
+    os << "Interface_EntityIterator& iter) 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 << "{" << std::endl;
   WriteRWShareCode ( os, 1, Standard_True ); // write code for filling graph of references
   os << "}" << std::endl;
@@ -799,7 +834,8 @@ static void WriteRWReadField(
   if (optional)
   {
     os << shift << "Standard_Boolean has" << varname << " = Standard_True;" << std::endl;
-    os << shift << "if ( data->IsParamDefined (" << param << "," << index << ") ) {" << std::endl;
+    os << shift << "if (data->IsParamDefined(" << param << ", " << index << "))" << std::endl;
+    os << shift << "{" << std::endl;
     shift += "  ";
     level++;
   }
@@ -810,19 +846,19 @@ static void WriteRWReadField(
     Handle(Express_NamedType) named = Handle(Express_NamedType)::DownCast(type);
     if (named->Item()->IsKind(STANDARD_TYPE(Express_Entity)))
     {
-      os << shift << "data->ReadEntity (" << param << ", " << index << ", \"" << STEPName <<
-        "\", ach, STANDARD_TYPE(" << named->CPPName()->ToCString() << "), a" <<
-        varname << ");" << std::endl;
+      os << shift << "data->ReadEntity(" << param << ", " << index << ", \"" << STEPName << "\", ach," << std::endl;
+      os << shift << "  STANDARD_TYPE(" << named->CPPName()->ToCString() << "), a" << varname << ");" << std::endl;
     }
     else if (named->Item()->IsKind(STANDARD_TYPE(Express_Select)))
     {
-      os << shift << "data->ReadEntity (" << param << ", " << index << ", \"" << STEPName <<
+      os << shift << "data->ReadEntity(" << param << ", " << index << ", \"" << STEPName <<
         "\", ach, a" << varname << ");" << std::endl;
     }
     else if (named->Item()->IsKind(STANDARD_TYPE(Express_Enum)))
     {
-      os << shift << "if (data->ParamType (" << param << ", " <<
-        index << ") == Interface_ParamEnum) {" << std::endl;
+      os << shift << "if (data->ParamType(" << param << ", " <<
+        index << ") == Interface_ParamEnum)" << std::endl;
+      os << shift << "{" << std::endl;
       os << shift << "  Standard_CString text = data->ParamCValue(" <<
         param << ", " << index << ");" << std::endl;
       Handle(Express_Enum) en = Handle(Express_Enum)::DownCast(named->Item());
@@ -838,11 +874,17 @@ static void WriteRWReadField(
           varname << " = " << enpack.ToCString() << "_" << prefix->ToCString() <<
           names->Value(i)->ToCString() << ";" << std::endl;
       }
-      os << shift << "  else ach->AddFail(\"Parameter #" << index << " (" <<
-        STEPName << ") has not allowed value\");" << std::endl;
+      os << shift << "  else" << std::endl;
+      os << shift << "  {" << std::endl;
+      os << shift << "    ach->AddFail(\"Parameter #" << index << " (" << STEPName 
+        << ") has not allowed value\");" << std::endl;
+      os << shift << "  }" << std::endl;
+      os << shift << "}" << std::endl;
+      os << shift << "else" << std::endl;
+      os << shift << "{" << std::endl;
+      os << shift << "  ach->AddFail(\"Parameter #" << index << " (" << STEPName
+        << ") is not enumeration\");" << std::endl;
       os << shift << "}" << std::endl;
-      os << shift << "else ach->AddFail(\"Parameter #" << index << " (" <<
-        STEPName << ") is not enumeration\");" << std::endl;
       //os << "!!! READING/WRITING ENUM NOT IMPLEMENTED !!!" << std::endl;
       //std::cout << "Warning: Reading/Writing ENUMERATION not yet implemented (" << 
       //STEPName << ", " << varname << ", " << type->CPPName()->ToCString() << ")" << std::endl;
@@ -852,8 +894,9 @@ static void WriteRWReadField(
   {
     Handle(Express_ComplexType) complex = Handle(Express_ComplexType)::DownCast(type);
     os << shift << "Standard_Integer sub" << index << " = 0;" << std::endl;
-    os << shift << "if ( data->ReadSubList (" << param << ", " << index << ", \"" <<
-      STEPName << "\", ach, sub" << index << ") ) {" << std::endl;
+    os << shift << "if (data->ReadSubList(" << param << ", " << index << ", \"" <<
+      STEPName << "\", ach, sub" << index << "))" << std::endl;
+    os << shift << "{" << std::endl;
     os << shift << "  Standard_Integer nb" << lev << " = data->NbParams(sub" << index << ");" << std::endl;
     TCollection_AsciiString iter = lev;
     iter.Prepend("i");
@@ -867,15 +910,17 @@ static void WriteRWReadField(
       os << shift << "  Standard_Integer nbj" << lev <<
         " = data->NbParams(data->ParamNumber(sub" << index << ",1));" << std::endl;
       os << shift << "  a" << varname << " = new " << type->CPPName()->ToCString() <<
-        " (1, nb" << lev << ", 1, nbj" << lev << ");" << std::endl;
-      os << shift << "  for ( Standard_Integer " << iter << "=1; " << iter << " <= nb" << lev <<
-        "; " << iter << "++ ) {" << std::endl;
+        "(1, nb" << lev << ", 1, nbj" << lev << ");" << std::endl;
+      os << shift << "  for (Standard_Integer " << iter << " = 1; " << iter << " <= nb" 
+        << lev << "; " << iter << "++)" << std::endl;
+      os << shift << "  {" << std::endl;
       os << shift << "    Standard_Integer subj" << index << " = 0;" << std::endl;
       os << shift << "    if ( data->ReadSubList (sub" << index << ", " << iter << ", \"sub-part(" <<
         STEPName << ")\", ach, subj" << index << ") ) {" << std::endl;
       os << shift << "      Standard_Integer num" << level + 2 << " = subj" << index << ";" << std::endl;
-      os << shift << "      for ( Standard_Integer " << jter << "=1; " << jter << " <= nbj" << lev <<
-        "; " << jter << "++ ) {" << std::endl;
+      os << shift << "      for (Standard_Integer " << jter << " = 1; " << jter << " <= nbj" << lev <<
+        "; " << jter << "++)" << std::endl;
+      os << shift << "      {" << std::endl;
       Handle(TCollection_HAsciiString) subName = typeToSTEPName(complex2->Type());
       WriteRWReadField(os, jter.ToCString(), subName->ToCString(), var.ToCString(),
         complex2->Type(), level + 2, Standard_False);
@@ -887,10 +932,11 @@ static void WriteRWReadField(
     else
     { // simple array
       os << shift << "  a" << varname << " = new " << type->CPPName()->ToCString() <<
-        " (1, nb" << lev << ");" << std::endl;
+        "(1, nb" << lev << ");" << std::endl;
       os << shift << "  Standard_Integer num" << level << " = sub" << index << ";" << std::endl;
-      os << shift << "  for ( Standard_Integer " << iter << "=1; " << iter << " <= nb" << lev <<
-        "; " << iter << "++ ) {" << std::endl;
+      os << shift << "  for (Standard_Integer " << iter << " = 1; " << iter << " <= nb" << lev <<
+        "; " << iter << "++)" << std::endl;
+      os << shift << "  {" << std::endl;
       Handle(TCollection_HAsciiString) subName = typeToSTEPName(complex->Type());
       WriteRWReadField(os, iter.ToCString(), subName->ToCString(), var.ToCString(),
         complex->Type(), level, Standard_False);
@@ -901,27 +947,35 @@ static void WriteRWReadField(
   }
   else if (type->IsKind(STANDARD_TYPE(Express_String)))
   {
-    os << shift << "data->ReadString (" << param << ", " << index << ", \"" << STEPName <<
-      "\", ach, a" << varname << ");" << std::endl;
+    if (strlen(STEPName) + strlen(varname) < 70)
+    {
+      os << shift << "data->ReadString(" << param << ", " << index << ", \"" << STEPName <<
+        "\", ach, a" << varname << ");" << std::endl;
+    }
+    else
+    {
+      os << shift << "data->ReadString(" << param << ", " << index << ", \"" << STEPName << "\", ach," << std::endl;
+      os << shift << "  a" << varname << ");" << std::endl;
+    }
   }
   else if (type->IsKind(STANDARD_TYPE(Express_Logical)))
   {
-    os << shift << "data->ReadLogical (" << param << ", " << index << ", \"" << STEPName <<
+    os << shift << "data->ReadLogical(" << param << ", " << index << ", \"" << STEPName <<
       "\", ach, a" << varname << ");" << std::endl;
   }
   else if (type->IsKind(STANDARD_TYPE(Express_Boolean)))
   {
-    os << shift << "data->ReadBoolean (" << param << ", " << index << ", \"" << STEPName <<
+    os << shift << "data->ReadBoolean(" << param << ", " << index << ", \"" << STEPName <<
       "\", ach, a" << varname << ");" << std::endl;
   }
   else if (type->IsKind(STANDARD_TYPE(Express_Number)) || type->IsKind(STANDARD_TYPE(Express_Integer)))
   {
-    os << shift << "data->ReadInteger (" << param << ", " << index << ", \"" << STEPName <<
+    os << shift << "data->ReadInteger(" << param << ", " << index << ", \"" << STEPName <<
       "\", ach, a" << varname << ");" << std::endl;
   }
   else if (type->IsKind(STANDARD_TYPE(Express_Real)))
   {
-    os << shift << "data->ReadReal (" << param << ", " << index << ", \"" << STEPName <<
+    os << shift << "data->ReadReal(" << param << ", " << index << ", \"" << STEPName <<
       "\", ach, a" << varname << ");" << std::endl;
   }
 
@@ -929,7 +983,8 @@ static void WriteRWReadField(
   {
     shift.Remove(1, 2);
     os << shift << "}" << std::endl;
-    os << shift << "else {" << std::endl;
+    os << shift << "else" << std::endl;
+    os << shift << "{" << std::endl;
     os << shift << "  has" << varname << " = Standard_False;" << std::endl;
     os << shift << "  a" << varname;
     if (type->IsHandle())
@@ -1036,16 +1091,18 @@ static void WriteRWWriteField(
     TCollection_AsciiString var(lev);
     var.Prepend("Var");
     os << shift << "SW.OpenSub();" << std::endl;
-    os << shift << "for (Standard_Integer i" << index << "=1; i" << index << " <= ";
+    os << shift << "for (Standard_Integer i" << index << " = 1; i" << index << " <= ";
     if (type->IsKind(STANDARD_TYPE(Express_ComplexType)))
     { // array 2 
       Handle(Express_ComplexType) complex2 = Handle(Express_ComplexType)::DownCast(type);
       type = complex2->Type();
-      os << varname << "->RowLength(); i" << index << "++ ) {" << std::endl;
+      os << varname << "->RowLength(); i" << index << "++)" << std::endl;
+      os << shift << "{" << std::endl;
       os << shift << "  SW.NewLine(Standard_False);" << std::endl;
       os << shift << "  SW.OpenSub();" << std::endl;
-      os << shift << "  for (Standard_Integer j" << index << "=1; j" << index << " <= " <<
-        varname << "->ColLength(); j" << index << "++ ) {" << std::endl;
+      os << shift << "  for (Standard_Integer j" << index << " = 1; j" << index << " <= " <<
+        varname << "->ColLength(); j" << index << "++)" << std::endl;
+      os << shift << "  {" << std::endl;
       os << shift << "  " << (type->IsHandle() ? "  Handle(" : "  ") << type->CPPName()->ToCString() <<
         (type->IsHandle() ? ") " : " ") << var.ToCString() << " = " <<
         varname << "->Value(i" << index << ",j" << index << ");" << std::endl;
@@ -1055,7 +1112,8 @@ static void WriteRWWriteField(
     }
     else
     { // simple array
-      os << varname << "->Length(); i" << index << "++ ) {" << std::endl;
+      os << varname << "->Length(); i" << index << "++)" << std::endl;
+      os << shift << "{" << std::endl;
       os << shift << (type->IsHandle() ? "  Handle(" : "  ") << type->CPPName()->ToCString() <<
         (type->IsHandle() ? ") " : " ") << var.ToCString() << " = " <<
         varname << "->Value(i" << index << ");" << std::endl;
@@ -1066,11 +1124,11 @@ static void WriteRWWriteField(
   }
   else if (type->IsKind(STANDARD_TYPE(Express_Boolean)))
   {
-    os << shift << "SW.SendBoolean (" << varname << ");" << std::endl;
+    os << shift << "SW.SendBoolean(" << varname << ");" << std::endl;
   }
   else if (type->IsKind(STANDARD_TYPE(Express_Logical)))
   {
-    os << shift << "SW.SendLogical (" << varname << ");" << std::endl;
+    os << shift << "SW.SendLogical(" << varname << ");" << std::endl;
   }
   else
   {
@@ -1081,20 +1139,21 @@ static void WriteRWWriteField(
       Handle(TCollection_HAsciiString) prefix = Express::EnumPrefix(en->Name());
       Handle(TColStd_HSequenceOfHAsciiString) names = en->Names();
       TCollection_AsciiString enpack = en->GetPackageName()->String();
-      os << shift << "switch (" << varname << ") {" << std::endl;
+      os << shift << "switch (" << varname << ")" << std::endl;
+      os << shift << "{" << std::endl;
       for (Standard_Integer i = 1; i <= names->Length(); i++)
       {
         Handle(TCollection_HAsciiString) ename = Express::ToStepName(names->Value(i));
         ename->UpperCase();
         os << shift << "  case " << enpack.ToCString() << "_" << prefix->ToCString() <<
-          names->Value(i)->ToCString() << ": SW.SendEnum (\"." <<
+          names->Value(i)->ToCString() << ": SW.SendEnum(\"." <<
           ename->ToCString() << ".\"); break;" << std::endl;
       }
       os << shift << "}" << std::endl;
     }
     else
     {
-      os << shift << "SW.Send (" << varname;
+      os << shift << "SW.Send(" << varname;
       if (!named.IsNull() && named->Item()->IsKind(STANDARD_TYPE(Express_Select)))
       {
         os << ".Value()";
@@ -1129,7 +1188,7 @@ Standard_Integer Express_Entity::WriteRWWriteCode(
     os << "  // " << ( own == 1 ? "Own" : "Inherited" ) << " fields of " << Name()->ToCString() << std::endl;
   }
   
-  for (Standard_Integer i=1; i <= myFields->Length(); i++ )
+  for (Standard_Integer i = 1; i <= myFields->Length(); i++)
   {
     Handle(Express_Field) field = myFields->Value(i);
     TCollection_AsciiString varName ( field->Name()->String() );
@@ -1147,7 +1206,7 @@ Standard_Integer Express_Entity::WriteRWWriteCode(
     
     if (field->IsOptional())
     {
-      os << "  if ( ent->";
+      os << "  if (ent->";
       if (!own)
       {
         os << CPPName()->ToCString() << "::";
@@ -1156,12 +1215,17 @@ Standard_Integer Express_Entity::WriteRWWriteCode(
       {
         os << Name()->ToCString() << "()->";
       }
-      os << "Has" << field->Name()->ToCString() << "() ) {" << std::endl;
+      os << "Has" << field->Name()->ToCString() << "())" << std::endl;
+      os << "  {" << std::endl;
     }
     WriteRWWriteField(os, varName.ToCString(), field->Type(), num, (field->IsOptional() ? 1 : 0));
     if (field->IsOptional())
     {
-      os << "  }\n  else SW.SendUndef();" << std::endl;
+      os << "  }" << std::endl;
+      os << "  else" << std::endl;
+      os << "  {" << std::endl;
+      os << "    SW.SendUndef();" << std::endl;
+      os << "  }" << std::endl;
     }
     num++;
   }
@@ -1215,8 +1279,9 @@ static Standard_Boolean WriteRWShareField(
     {
       return Standard_False;
     }
-    os << shift << "for (Standard_Integer i" << index << "=1; i" << index << " <= " <<
-      varname << "->Length(); i" << index << "++ ) {" << std::endl;
+    os << shift << "for (Standard_Integer i" << index << " = 1; i" << index << " <= " <<
+      varname << "->Length(); i" << index << "++)" << std::endl;
+    os << shift << "{" << std::endl;
     os << shift << (type->IsHandle() ? "  Handle(" : "  ") << type->CPPName()->ToCString() <<
       (type->IsHandle() ? ") " : " ") << var.ToCString() << " = " <<
       varname << "->Value(i" << index << ");" << std::endl;
@@ -1230,12 +1295,12 @@ static Standard_Boolean WriteRWShareField(
     Handle(Express_NamedType) named = Handle(Express_NamedType)::DownCast(type);
     if (named->Item()->IsKind(STANDARD_TYPE(Express_Entity)))
     {
-      os << shift << "iter.AddItem (" << varname << ");" << std::endl;
+      os << shift << "iter.AddItem(" << varname << ");" << std::endl;
       return Standard_True;
     }
     if (named->Item()->IsKind(STANDARD_TYPE(Express_Select)))
     {
-      os << shift << "iter.AddItem (" << varname << ".Value());" << std::endl;
+      os << shift << "iter.AddItem(" << varname << ".Value());" << std::endl;
       return Standard_True;
     }
   }
@@ -1267,21 +1332,21 @@ Standard_Integer Express_Entity::WriteRWShareCode(
     os << "  // " << ( own == 1 ? "Own" : "Inherited" ) << " fields of " << Name()->ToCString() << std::endl;
   }
   
-  for (Standard_Integer i=1; i <= myFields->Length(); i++ )
+  for (Standard_Integer i = 1; i <= myFields->Length(); i++)
   {
     Handle(Express_Field) field = myFields->Value(i);
-    TCollection_AsciiString varName ( field->Name()->String() );
+    TCollection_AsciiString varName(field->Name()->String());
     if (!own)
     {
       varName.Prepend(CPPName()->Cat("::")->String());
     }
-    else if ( own ==-1 )
+    else if (own == -1)
     { // inherited base class implemented as field
-      varName.Prepend ( Name()->Cat ( "()->" )->String() );
+      varName.Prepend(Name()->Cat("()->")->String());
     }
-    varName.Prepend ( "ent->" );
-    varName.AssignCat ( "()" );
-    
+    varName.Prepend("ent->");
+    varName.AssignCat("()");
+
     std::ostringstream oos;
     if (!WriteRWShareField(oos, varName.ToCString(), field->Type(), num, (field->IsOptional() ? 1 : 0)))
     {
@@ -1291,10 +1356,11 @@ Standard_Integer Express_Entity::WriteRWShareCode(
     os << std::endl;
     if (field->IsOptional())
     {
-      os << "  if ( ent->";
-      if ( ! own ) os << CPPName()->ToCString() << "::";
-      else if ( own ==-1 ) os << Name()->ToCString() << "()->";
-      os << "Has" << field->Name()->ToCString() << "() ) {" << std::endl;
+      os << "  if (ent->";
+      if (!own) os << CPPName()->ToCString() << "::";
+      else if (own == -1) os << Name()->ToCString() << "()->";
+      os << "Has" << field->Name()->ToCString() << "())" << std::endl;
+      os << "  {" << std::endl;
     }
 
     os << oos.str();
@@ -1365,7 +1431,15 @@ Standard_Integer Express_Entity::MakeInit (Standard_OStream &os,
     Standard_Character delim = (mode == 0 ? ',' : (mode == 3 ? '\n' : ','));
     if (sh < 0)
     {
-      os << delim << "\n" << space;
+      if (i == 1 && myInherit->Length() == 0 && mode == 3)
+      {
+        os << delim << space;
+
+      }
+      else
+      {
+        os << delim << "\n" << space;
+      }
     }
     else
     {
@@ -1408,12 +1482,13 @@ Standard_Integer Express_Entity::MakeInit (Standard_OStream &os,
       if (field->IsOptional())
       {
         os << "def" << field->Name()->ToCString() << " = has" << varName->ToCString() << ";" << std::endl;
-        os << "  if (def" << field->Name()->ToCString() << ") {\n    ";
-      }
-      os << "my" << field->Name()->ToCString() << " = the" << varName->ToCString() << ";";
-      if (field->IsOptional())
-      {
-        os << "\n  }\n  else my" << field->Name()->ToCString();
+        os << "  if (def" << field->Name()->ToCString() << ")" << std::endl;
+        os << "  {" << std::endl;
+        os << "    my" << field->Name()->ToCString() << " = the" << varName->ToCString() << ";";
+        os << "\n  }" << std::endl;
+        os << "  else" << std::endl;
+        os << "  {" << std::endl;
+        os << "    my" << field->Name()->ToCString();
         if (field->Type()->IsHandle())
         {
           os << ".Nullify();";
@@ -1426,6 +1501,11 @@ Standard_Integer Express_Entity::MakeInit (Standard_OStream &os,
         {
           os << " = " << field->Type()->CPPName()->ToCString() << "();";
         }
+        os << "\n  }";
+      }
+      else
+      {
+        os << "my" << field->Name()->ToCString() << " = the" << varName->ToCString() << ";";
       }
     }
     if (sh > 0)
index 73d831c1f293924de96bb04c53da934431148bc5..456ba9f1b2879e396e541c1422d61c310c1ce433 100644 (file)
@@ -85,7 +85,7 @@ Standard_Boolean Express_Enum::GenerateClass () const
       << myNames->Value(i)->ToCString();
   }
 
-  os << std::endl << "};" << std::endl;
+  os << std::endl << "};" << std::endl << std::endl;
   os << "#endif // _" << CPPName()->ToCString() << "_HeaderFile" << std::endl;
   os.close();