1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-04 13:13:25 +03:00

0031970: Data Exchange, STEP reader - parser syntax error messages are inaccessible

- Upgraded files using new version of WinFlexBison
 - Removed global variables within StepFile_Read.cxx
 - Upgraded error message during bison analyzing ( added a expected expression information )
 - Used 'Interface_ParamType' as argument type for the StepFile_ReadData::Argument
 for a compatibility with the StepData/StepData_StepReaderData
 - Added handling parse errors and transferring it to the StepData_StepReaderData
 - Now parsing and referencing errors save in the check and non output by default
 - Step_file's and Step_Data's output info prints according by trace level of printer
 - Removed useless location.hxx
 - Removed TraceLevel for the StepFile_Reader ( now it useless,
  it is 0 by default and newer and nowhere change )
 - Translate error message into English within StepData_StepReaderData
 - Replace "Error" word in the output messages
This commit is contained in:
dpasukhi
2021-01-11 13:20:31 +03:00
committed by bugmaster
parent 1ac837b2c2
commit 0c38be8f8d
18 changed files with 499 additions and 624 deletions

View File

@@ -381,16 +381,15 @@ void StepData_StepReaderData::SetRecord(const Standard_Integer num,
errm.AssignCat(" / ");
errm.AssignCat(thenametypes.FindKey(thetypes.Value(num)));
errm.AssignCat(" ... ");
#ifdef OCCT_DEBUG
while (theidents(prev) <= 0) {
prev--; if (prev <= 0) break;
}
Message_Messenger::StreamBuffer sout = Message::SendInfo();
sout << " *** Error on Record " << num << " (on " << NbRecords()
<< " -> " << num * 100 / NbRecords() << " % in File) ***";
Message_Messenger::StreamBuffer sout = Message::SendTrace();
sout << " *** Incorrect record " << num << " (on " << NbRecords()
<< " -> " << num * 100 / NbRecords() << " % in File) ***";
if (prev > 0) sout << " Ident #" << theidents(prev);
sout << "\n" << errm << std::endl;
#endif
thecheck->AddWarning(errm.ToCString(), "Complex Type incorrect : ");
}
break;
@@ -1730,7 +1729,7 @@ Standard_Integer StepData_StepReaderData::FindEntityNumber(const Standard_Intege
void StepData_StepReaderData::SetEntityNumbers(const Standard_Boolean withmap)
{
Message_Messenger::StreamBuffer sout = Message::SendInfo();
Message_Messenger::StreamBuffer sout = Message::SendTrace();
// Passe initiale : Resolution directe par Map
// si tout passe (pas de collision), OK. Sinon, autres passes a prevoir
// On resoud du meme coup les sous-listes
@@ -1775,7 +1774,8 @@ void StepData_StepReaderData::SetEntityNumbers(const Standard_Boolean withmap)
if (letype == Interface_ParamSub) {
Standard_Integer numsub = FP.EntityNumber();
if (numsub > thelastn) {
sout << "Bad Sub.N0, Record " << num << " Param " << na << ":$" << numsub << std::endl;
Message::SendInfo()
<< "Bad Sub.N0, Record " << num << " Param " << na << ":$" << numsub << std::endl;
continue;
}
FP.SetEntityNumber(subn(numsub));
@@ -1798,9 +1798,9 @@ void StepData_StepReaderData::SetEntityNumbers(const Standard_Boolean withmap)
ident, na, id);
thecheck->AddFail(failmess, "Unresolved Reference");
// ... Et sortir message un peu plus complet
sout << "*** ERR StepReaderData *** Pour Entite #" << ident
<< "\n Type:" << RecordType(num)
<< " Param.n0 " << na << ": #" << id << " Non trouve" << std::endl;
sout << "*** ERR StepReaderData *** Entite #" << ident
<< "\n Type:" << RecordType(num)
<< " Param.n0 " << na << ": #" << id << " Not found" << std::endl;
} // FIN Mapping
} // FIN Traitement Reference
} // FIN Boucle Parametres
@@ -1867,7 +1867,7 @@ void StepData_StepReaderData::SetEntityNumbers(const Standard_Boolean withmap)
char ligne[80];
sprintf(ligne, "Ident defined SEVERAL TIMES : #%d", ident);
thecheck->AddFail(ligne, "Ident defined SEVERAL TIMES : #%d");
sout << "StepReaderData:SetEntityNumbers, " << ligne << std::endl;
sout << "StepReaderData : SetEntityNumbers, " << ligne << std::endl;
}
if (indm(indmap) > 0) indm(indmap) = -indm(indmap); // Pas pour Map
// Cas Normal pour la Map
@@ -2056,11 +2056,13 @@ void StepData_StepReaderData::SetEntityNumbers(const Standard_Boolean withmap)
"Unresolved Reference, Ent.n0 %d (Id.#%d) Param.n0 %d (Id.#%d)",
nument, ident, na, id);
thecheck->AddFail(failmess, "Unresolved Reference");
// ... Et sortir message un peu plus complet
sout << "*** ERR StepReaderData *** Pour Entite " << nument
<< ", a " << (nr * 100) / nbseq << "% de DATA : #" << ident
<< "\n Type:" << RecordType(num)
<< " Param.n0 " << na << ": #" << id << " Non trouve" << std::endl;
sout << "*** ERR StepReaderData *** Entite " << nument
<< ", a " << (nr * 100) / nbseq << "% de DATA : #" << ident
<< "\n Type:" << RecordType(num)
<< " Param.n0 " << na << ": #" << id << " Not found" << std::endl;
FP.SetEntityNumber(0); // -> Reference non resolue
}
}

View File

@@ -159,7 +159,7 @@ void StepData_StepReaderTool::PrepareHeader
void StepData_StepReaderTool::BeginRead
(const Handle(Interface_InterfaceModel)& amodel)
{
Message_Messenger::StreamBuffer sout = Message::SendInfo();
Message_Messenger::StreamBuffer sout = Message::SendTrace();
DeclareAndCast(StepData_StepModel,model,amodel);
DeclareAndCast(StepData_StepReaderData,stepdat,Data());
@@ -185,16 +185,20 @@ void StepData_StepReaderTool::BeginRead
Standard_Integer nbmess = ach->NbWarnings();
sout<<nbmess<<" Warnings on Reading Header Entity N0."<<i<<":";
if (!ent.IsNull()) sout << ent->DynamicType()->Name() << std::endl;
for (Standard_Integer nf = 1; nf <= nbmess; nf ++)
sout << ach->CWarning(nf) << "\n";
for (Standard_Integer nf = 1; nf <= nbmess; nf++)
{
sout << ach->CWarning(nf) << "\n";
}
}
if (ach->HasFailed()) {
Handle(Interface_Check) mch = model->GlobalCheck();
Standard_Integer nbmess = ach->NbFails();
sout << " Errors on Reading Header Entity N0."<<i<<":";
sout << " Fails on Reading Header Entity N0." << i << ":";
if (!ent.IsNull()) sout << ent->DynamicType()->Name() << std::endl;
for (Standard_Integer nf = 1; nf <= nbmess; nf ++)
sout << ach->CFail(nf) << "\n";
for (Standard_Integer nf = 1; nf <= nbmess; nf++)
{
sout << ach->CFail(nf) << "\n";
}
}
}
}