Commit 0467913d authored by claes's avatar claes

gcc 4.0 fix

parent 2999b2a5
/* /*
* Proview $Id: wb_wblnode.cpp,v 1.52 2005-12-13 15:15:53 claes Exp $ * Proview $Id: wb_wblnode.cpp,v 1.53 2005-12-14 07:22:38 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB. * Copyright (C) 2005 SSAB Oxelsund AB.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -25,14 +25,52 @@ ...@@ -25,14 +25,52 @@
#include "wb_orepwbl.h" #include "wb_orepwbl.h"
#include "wb_merep.h" #include "wb_merep.h"
#include "wb_cdrep.h" #include "wb_cdrep.h"
#include "wb_wblvocabTokenTypes.hpp"
#include "wb_dbs.h" #include "wb_dbs.h"
#include "wb_name.h" #include "wb_name.h"
#include "wb_treeimport.h" #include "wb_treeimport.h"
#include "wb_wblvocabTokenTypes.hpp"
typedef enum {
tokensEOF_ = 1,
tokensOBJECT = 4,
tokensENDOBJECT = 5,
tokensVOLUME = 6,
tokensENDVOLUME = 7,
tokensSOBJECT = 8,
tokensENDSOBJECT = 9,
tokensBODY = 10,
tokensENDBODY = 11,
tokensATTRIBUTE = 12,
tokensBUFFER = 13,
tokensENDBUFFER = 14,
tokensDOBJECT = 15,
tokensENDDOBJECT = 16,
tokensDBUFFER = 17,
tokensENDDBUFFER = 18,
tokensDATTRIBUTE = 19,
tokensNUM_FLOAT = 20,
tokensINT = 21,
tokensOID = 22,
tokensDOCBLOCK = 23,
tokensASC_TIME = 24,
tokensEQ = 25,
tokensOREQ = 26,
tokensWS = 27,
tokensCOMMENT = 28,
tokensINDEX = 29,
tokensVALUE = 30,
tokensCHAR_LITERAL = 31,
tokensSTRING_LITERAL = 32,
tokensDIGITS = 33,
tokensESC = 34,
tokensSWEC = 35,
tokensNULL_TREE_LOOKAHEAD = 3
} wblnode_eTokens;
struct wb_wblvocabTokenTypes tokens;
#define wblAlign(size) ((size + 3) & ~3) #define wblAlign(size) ((size + 3) & ~3)
struct wb_wblvocabTokenTypes tokens;
/* Datatypes */ /* Datatypes */
static wbl_sSym datatypes[] = static wbl_sSym datatypes[] =
...@@ -412,8 +450,8 @@ int wb_wblnode::convconst( int *val, char *str) ...@@ -412,8 +450,8 @@ int wb_wblnode::convconst( int *val, char *str)
ref_wblnode wb_wblnode::find( wb_name *oname, int level) ref_wblnode wb_wblnode::find( wb_name *oname, int level)
{ {
switch ( getType()) {
if (getType() == tokens.OBJECT) { case tokensOBJECT:
if ( oname->segmentIsEqual( name(), level)) { if ( oname->segmentIsEqual( name(), level)) {
if ( !oname->hasSegment(level+1)) if ( !oname->hasSegment(level+1))
return this; return this;
...@@ -426,15 +464,15 @@ ref_wblnode wb_wblnode::find( wb_name *oname, int level) ...@@ -426,15 +464,15 @@ ref_wblnode wb_wblnode::find( wb_name *oname, int level)
return o->fws->find( oname, level); return o->fws->find( oname, level);
else else
return 0; return 0;
} case tokensVOLUME:
if ((getType() == tokens.VOLUME) || (getType() == tokens.OBJECT)) {
if ( oname->volumeIsEqual( name()) && !oname->hasSegment(0)) if ( oname->volumeIsEqual( name()) && !oname->hasSegment(0))
return this; return this;
else if ( o->fch) else if ( o->fch)
return o->fch->find( oname, 0); return o->fch->find( oname, 0);
else else
return 0; return 0;
default:
;
} }
return 0; return 0;
} }
...@@ -1018,7 +1056,8 @@ void wb_wblnode::buildBody( ref_wblnode object) ...@@ -1018,7 +1056,8 @@ void wb_wblnode::buildBody( ref_wblnode object)
ref_wblnode first_child; ref_wblnode first_child;
ref_wblnode next_sibling; ref_wblnode next_sibling;
if (getType() == tokens.BODY) { switch ( getType()) {
case tokensBODY:
if ( cdh_NoCaseStrcmp( name(), "SysBody") == 0) if ( cdh_NoCaseStrcmp( name(), "SysBody") == 0)
bix = pwr_eBix_sys; bix = pwr_eBix_sys;
else if ( cdh_NoCaseStrcmp( name(), "RtBody") == 0) else if ( cdh_NoCaseStrcmp( name(), "RtBody") == 0)
...@@ -1033,7 +1072,7 @@ void wb_wblnode::buildBody( ref_wblnode object) ...@@ -1033,7 +1072,7 @@ void wb_wblnode::buildBody( ref_wblnode object)
first_child = getFirstChild(); first_child = getFirstChild();
// First child might be body time // First child might be body time
if ( first_child && first_child->getType() == tokens.ASC_TIME) { if ( first_child && first_child->getType() == tokensASC_TIME) {
string timestr = first_child->getText(); string timestr = first_child->getText();
pwr_tTime bodytime; pwr_tTime bodytime;
if ( stringToTime( timestr.c_str(), &bodytime)) { if ( stringToTime( timestr.c_str(), &bodytime)) {
...@@ -1055,7 +1094,8 @@ void wb_wblnode::buildBody( ref_wblnode object) ...@@ -1055,7 +1094,8 @@ void wb_wblnode::buildBody( ref_wblnode object)
next_sibling = getNextSibling(); next_sibling = getNextSibling();
if ( next_sibling) if ( next_sibling)
next_sibling->buildBody( object); next_sibling->buildBody( object);
} else { break;
default:
next_sibling = getNextSibling(); next_sibling = getNextSibling();
if ( next_sibling) if ( next_sibling)
next_sibling->buildBody( object); next_sibling->buildBody( object);
...@@ -1078,7 +1118,9 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix) ...@@ -1078,7 +1118,9 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix)
int int_val, current_int_val; int int_val, current_int_val;
bool string_continue = false; bool string_continue = false;
if (getType() == tokens.ATTRIBUTE) { switch ( getType()) {
case tokensATTRIBUTE:
{
first_child = getFirstChild(); first_child = getFirstChild();
if ( !first_child) { if ( !first_child) {
// Attr exception // Attr exception
...@@ -1086,13 +1128,17 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix) ...@@ -1086,13 +1128,17 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix)
goto error_continue; goto error_continue;
} }
oper = first_child->getType(); switch ( oper = first_child->getType()) {
if ((oper != tokens.OREQ) && (oper != tokens.EQ)) { case tokensOREQ:
case tokensEQ:
break;
default:
// Attr exception // Attr exception
m_vrep->error( "Attribute value required", getFileName(), line_number); m_vrep->error( "Attribute value required", getFileName(), line_number);
goto error_continue; goto error_continue;
} }
if ( !m_vrep->getAttrInfo( name(), (pwr_eBix) bix, object->o->m_cid, &size, &offset, if ( !m_vrep->getAttrInfo( name(), (pwr_eBix) bix, object->o->m_cid, &size, &offset,
&tid, &elements, &type, &flags)) { &tid, &elements, &type, &flags)) {
// This might be string special syntax // This might be string special syntax
...@@ -1142,7 +1188,7 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix) ...@@ -1142,7 +1188,7 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix)
// printf( "Attr %s %s %d %d %s\n", object->name, name, size, offset, value); // printf( "Attr %s %s %d %d %s\n", object->name, name, size, offset, value);
if ( size == sizeof(int_val) && convconst( &int_val, value)) { if ( size == sizeof(int_val) && convconst( &int_val, value)) {
if ( oper == tokens.EQ) { if ( oper == tokensEQ) {
if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys) if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys)
memcpy( (char *)((unsigned int) object->o->rbody + offset), memcpy( (char *)((unsigned int) object->o->rbody + offset),
&int_val, size); &int_val, size);
...@@ -1150,7 +1196,7 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix) ...@@ -1150,7 +1196,7 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix)
memcpy( (char *)((unsigned int) object->o->dbody + offset), memcpy( (char *)((unsigned int) object->o->dbody + offset),
&int_val, size); &int_val, size);
} }
else if ( oper == tokens.OREQ) { else if ( oper == tokensOREQ) {
if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys) { if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys) {
current_int_val = *(int *) ((unsigned int) object->o->rbody + offset); current_int_val = *(int *) ((unsigned int) object->o->rbody + offset);
int_val |= current_int_val; int_val |= current_int_val;
...@@ -1185,14 +1231,16 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix) ...@@ -1185,14 +1231,16 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix)
// Attr conversion exception // Attr conversion exception
m_vrep->error( "Unable to convert string to value", getFileName(), line_number); m_vrep->error( "Unable to convert string to value", getFileName(), line_number);
} }
error_continue:
error_continue: break;
;
} }
else if (getType() == tokens.BUFFER) case tokensBUFFER:
{ {
buildBuff( object, bix, 0, 0, 0); buildBuff( object, bix, 0, 0, 0);
break;
}
default:
;
} }
} }
...@@ -1243,7 +1291,7 @@ void wb_wblnode::buildBuff( ref_wblnode object, pwr_eBix bix, pwr_tCid buffer_ci ...@@ -1243,7 +1291,7 @@ void wb_wblnode::buildBuff( ref_wblnode object, pwr_eBix bix, pwr_tCid buffer_ci
delete adrep; delete adrep;
} }
first_child = getFirstChild(); first_child = getFirstChild();
if ( first_child && first_child->getType() == tokens.INDEX) { if ( first_child && first_child->getType() == tokensINDEX) {
int index; int index;
int nr = sscanf( first_child->name(), "%d", &index); int nr = sscanf( first_child->name(), "%d", &index);
if ( nr != 1) { if ( nr != 1) {
...@@ -1283,7 +1331,8 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe ...@@ -1283,7 +1331,8 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe
wb_adrep *adrep; wb_adrep *adrep;
wb_attrname aname; wb_attrname aname;
if (getType() == tokens.ATTRIBUTE) switch ( getType()) {
case tokensATTRIBUTE:
{ {
first_child = getFirstChild(); first_child = getFirstChild();
if ( !first_child) { if ( !first_child) {
...@@ -1292,8 +1341,11 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe ...@@ -1292,8 +1341,11 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe
goto error_continue; goto error_continue;
} }
oper = first_child->getType(); switch ( oper = first_child->getType()) {
if ((oper != tokens.OREQ) && (oper != tokens.EQ)) { case tokensOREQ:
case tokensEQ:
break;
default:
// Attr exception // Attr exception
m_vrep->error( "Attribute value required", getFileName(), line_number); m_vrep->error( "Attribute value required", getFileName(), line_number);
goto error_continue; goto error_continue;
...@@ -1412,7 +1464,7 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe ...@@ -1412,7 +1464,7 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe
// printf( "Attr %s %s %d %d %s\n", object->name, name, size, offset, value); // printf( "Attr %s %s %d %d %s\n", object->name, name, size, offset, value);
if ( size/elements == sizeof(int_val) && convconst( &int_val, value)) { if ( size/elements == sizeof(int_val) && convconst( &int_val, value)) {
if ( oper == tokens.EQ) { if ( oper == tokensEQ) {
if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys) if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys)
memcpy( (char *)((unsigned int) object->o->rbody + offset), memcpy( (char *)((unsigned int) object->o->rbody + offset),
&int_val, size/elements); &int_val, size/elements);
...@@ -1420,7 +1472,7 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe ...@@ -1420,7 +1472,7 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe
memcpy( (char *)((unsigned int) object->o->dbody + offset), memcpy( (char *)((unsigned int) object->o->dbody + offset),
&int_val, size/elements); &int_val, size/elements);
} }
else if ( oper == tokens.OREQ) { else if ( oper == tokensOREQ) {
if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys) { if ( bix == pwr_eBix_rt || bix == pwr_eBix_sys) {
current_int_val = *(int *) ((unsigned int) object->o->rbody + offset); current_int_val = *(int *) ((unsigned int) object->o->rbody + offset);
int_val |= current_int_val; int_val |= current_int_val;
...@@ -1448,13 +1500,16 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe ...@@ -1448,13 +1500,16 @@ void wb_wblnode::buildBuffAttr( ref_wblnode object, pwr_eBix bix, pwr_tCid buffe
m_vrep->error( "Unable to convert string to value", getFileName(), line_number); m_vrep->error( "Unable to convert string to value", getFileName(), line_number);
} }
error_continue: error_continue:
; break;
} }
else if (getType() == tokens.BUFFER) case tokensBUFFER:
{ {
buildBuff( object, bix, buffer_cid, buffer_offset, buffer_size); buildBuff( object, bix, buffer_cid, buffer_offset, buffer_size);
break;
}
default:
;
} }
next_sibling = getNextSibling(); next_sibling = getNextSibling();
if ( next_sibling) if ( next_sibling)
next_sibling->buildBuffAttr( object, bix, buffer_cid, buffer_offset, buffer_size); next_sibling->buildBuffAttr( object, bix, buffer_cid, buffer_offset, buffer_size);
...@@ -1465,7 +1520,9 @@ void wb_wblnode::link( wb_vrepwbl *vol, ref_wblnode father, ref_wblnode parent_a ...@@ -1465,7 +1520,9 @@ void wb_wblnode::link( wb_vrepwbl *vol, ref_wblnode father, ref_wblnode parent_a
ref_wblnode first_child; ref_wblnode first_child;
ref_wblnode next_sibling; ref_wblnode next_sibling;
if ((getType() == tokens.OBJECT) || (getType() == tokens.VOLUME)) { switch ( getType()) {
case tokensOBJECT:
case tokensVOLUME:
if ( !father) { if ( !father) {
// Volume root // Volume root
vol->root_object = this; vol->root_object = this;
...@@ -1497,12 +1554,12 @@ void wb_wblnode::link( wb_vrepwbl *vol, ref_wblnode father, ref_wblnode parent_a ...@@ -1497,12 +1554,12 @@ void wb_wblnode::link( wb_vrepwbl *vol, ref_wblnode father, ref_wblnode parent_a
prev = child; prev = child;
child = child->getNextSibling(); child = child->getNextSibling();
} }
if ( prev && prev->getType() == tokens.DOCBLOCK) if ( prev && prev->getType() == tokensDOCBLOCK)
o->docblock = prev; o->docblock = prev;
} }
// cout << "Linking " << name << endl; // cout << "Linking " << name << endl;
} break;
else if (getType() == tokens.SOBJECT) case tokensSOBJECT:
{ {
ref_wblnode snode = m_vrep->find( name()); ref_wblnode snode = m_vrep->find( name());
if ( !snode) { if ( !snode) {
...@@ -1517,7 +1574,9 @@ void wb_wblnode::link( wb_vrepwbl *vol, ref_wblnode father, ref_wblnode parent_a ...@@ -1517,7 +1574,9 @@ void wb_wblnode::link( wb_vrepwbl *vol, ref_wblnode father, ref_wblnode parent_a
next_sibling = getNextSibling(); next_sibling = getNextSibling();
if ( next_sibling) if ( next_sibling)
next_sibling->link( vol, father); next_sibling->link( vol, father);
} else { break;
}
default:
first_child = getFirstChild(); first_child = getFirstChild();
if ( first_child) if ( first_child)
first_child->link( vol, father); first_child->link( vol, father);
...@@ -1533,10 +1592,12 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1533,10 +1592,12 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
ref_wblnode first_child = getFirstChild(); ref_wblnode first_child = getFirstChild();
m_vrep = vol; m_vrep = vol;
if (getType() == tokens.DOCBLOCK) { switch ( getType()) {
case tokensDOCBLOCK: {
string txt = getText(); string txt = getText();
break;
} }
else if (getType() == tokens.OBJECT) case tokensOBJECT:
{ {
if ( !o) if ( !o)
...@@ -1561,27 +1622,27 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1561,27 +1622,27 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
// If $ClassDef, register class in classlist // If $ClassDef, register class in classlist
if ( !isTemplate()) { if ( !isTemplate()) {
if ( first_child->getType() == tokens.VALUE && if ( first_child->getType() == tokensVALUE &&
(strcmp( o->cname, "$ClassDef") == 0 || (strcmp( o->cname, "$ClassDef") == 0 ||
strcmp( o->cname, "pwr_eClass_ClassDef") == 0)) { strcmp( o->cname, "pwr_eClass_ClassDef") == 0)) {
node_type = wbl_eNodeType_ClassDef; node_type = wbl_eNodeType_ClassDef;
} }
else if ( first_child->getType() == tokens.VALUE && else if ( first_child->getType() == tokensVALUE &&
( strcmp( o->cname, "$Type") == 0 || ( strcmp( o->cname, "$Type") == 0 ||
strcmp( o->cname, "pwr_eClass_Type") == 0)) { strcmp( o->cname, "pwr_eClass_Type") == 0)) {
node_type = wbl_eNodeType_Type; node_type = wbl_eNodeType_Type;
} }
else if ( first_child->getType() == tokens.VALUE && else if ( first_child->getType() == tokensVALUE &&
( strcmp( o->cname, "$TypeDef") == 0 || ( strcmp( o->cname, "$TypeDef") == 0 ||
strcmp( o->cname, "pwr_eClass_TypeDef") == 0)) { strcmp( o->cname, "pwr_eClass_TypeDef") == 0)) {
node_type = wbl_eNodeType_TypeDef; node_type = wbl_eNodeType_TypeDef;
} }
else if ( first_child->getType() == tokens.VALUE && else if ( first_child->getType() == tokensVALUE &&
( strcmp( o->cname, "$ObjBodyDef") == 0 || ( strcmp( o->cname, "$ObjBodyDef") == 0 ||
strcmp( o->cname, "pwr_eClass_ObjBodyDef") == 0)) { strcmp( o->cname, "pwr_eClass_ObjBodyDef") == 0)) {
node_type = wbl_eNodeType_ObjBodyDef; node_type = wbl_eNodeType_ObjBodyDef;
} }
else if ( first_child->getType() == tokens.VALUE && else if ( first_child->getType() == tokensVALUE &&
( strcmp( o->cname, "$Attribute") == 0 || ( strcmp( o->cname, "$Attribute") == 0 ||
strcmp( o->cname, "$Input") == 0 || strcmp( o->cname, "$Input") == 0 ||
strcmp( o->cname, "$Output") == 0 || strcmp( o->cname, "$Output") == 0 ||
...@@ -1591,11 +1652,11 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1591,11 +1652,11 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
strcmp( o->cname, "pwr_eClass_Param") == 0)) { strcmp( o->cname, "pwr_eClass_Param") == 0)) {
node_type = wbl_eNodeType_Attribute; node_type = wbl_eNodeType_Attribute;
} }
else if ( first_child->getType() == tokens.VALUE && else if ( first_child->getType() == tokensVALUE &&
( strcmp( o->cname, "$Buffer") == 0)) { ( strcmp( o->cname, "$Buffer") == 0)) {
node_type = wbl_eNodeType_Buffer; node_type = wbl_eNodeType_Buffer;
} }
else if ( first_child->getType() == tokens.VALUE && else if ( first_child->getType() == tokensVALUE &&
( strcmp( o->cname, "$Param") == 0)) { ( strcmp( o->cname, "$Param") == 0)) {
m_vrep->error( "Obsolete attribute class, use $Attribute instead", m_vrep->error( "Obsolete attribute class, use $Attribute instead",
getFileName(), line_number); getFileName(), line_number);
...@@ -1607,29 +1668,32 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1607,29 +1668,32 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
if ( second_child) { if ( second_child) {
ref_wblnode third_child = second_child->getNextSibling(); ref_wblnode third_child = second_child->getNextSibling();
if ((second_child->getType() == tokens.VALUE) || switch ( second_child->getType()) {
(second_child->getType() == tokens.INT)) { case tokensVALUE:
case tokensINT: {
string oixstr = second_child->getText(); string oixstr = second_child->getText();
if ( !stringToOix( oixstr.c_str(), &o->m_oid.oix)) { if ( !stringToOix( oixstr.c_str(), &o->m_oid.oix)) {
o->m_oid.oix = m_vrep->nextOix(); o->m_oid.oix = m_vrep->nextOix();
} }
if ( third_child && third_child->getType() == tokens.ASC_TIME) { if ( third_child && third_child->getType() == tokensASC_TIME) {
string timestr = third_child->getText(); string timestr = third_child->getText();
if ( !stringToTime( timestr.c_str(), &o->m_ohtime)) if ( !stringToTime( timestr.c_str(), &o->m_ohtime))
m_vrep->error( "Time syntax", getFileName(), line_number); m_vrep->error( "Time syntax", getFileName(), line_number);
} }
break;
} }
else if (second_child->getType() == tokens.ASC_TIME) { case tokensASC_TIME: {
string timestr = second_child->getText(); string timestr = second_child->getText();
if ( !stringToTime( timestr.c_str(), &o->m_ohtime)) if ( !stringToTime( timestr.c_str(), &o->m_ohtime))
m_vrep->error( "Time syntax", getFileName(), line_number); m_vrep->error( "Time syntax", getFileName(), line_number);
break;
} }
else if ((second_child->getType() == tokens.ENDOBJECT) || case tokensENDOBJECT:
(second_child->getType() == tokens.OBJECT) || case tokensOBJECT:
(second_child->getType() == tokens.BODY)) { case tokensBODY:
o->m_oid.oix = m_vrep->nextOix(); o->m_oid.oix = m_vrep->nextOix();
} break;
else { default:
; // Syntax exception -- oix ; // Syntax exception -- oix
m_vrep->error( "Syntax", getFileName(), line_number); m_vrep->error( "Syntax", getFileName(), line_number);
} }
...@@ -1663,7 +1727,7 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1663,7 +1727,7 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
ref_wblnode last_child = child; ref_wblnode last_child = child;
string childname; string childname;
while ( child) { while ( child) {
if ( child->getType() == tokens.OBJECT) { if ( child->getType() == tokensOBJECT) {
childname = child->getText(); childname = child->getText();
if ( strcmp( childname.c_str(), "Template") == 0) { if ( strcmp( childname.c_str(), "Template") == 0) {
o->c.templ = child; o->c.templ = child;
...@@ -1683,7 +1747,7 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1683,7 +1747,7 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
wb_wblnode *templ = new wb_wblnode(); wb_wblnode *templ = new wb_wblnode();
// ref_wblnode reftempl(templ); // ref_wblnode reftempl(templ);
o->c.templ = templ; o->c.templ = templ;
o->c.templ->setType( tokens.OBJECT); o->c.templ->setType( tokensOBJECT);
string tname("Template"); string tname("Template");
o->c.templ->setText( tname); o->c.templ->setText( tname);
if ( last_child) if ( last_child)
...@@ -1711,8 +1775,9 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1711,8 +1775,9 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
if ( !(o->b.bix == pwr_eBix_rt || o->b.bix == pwr_eBix_sys || o->b.bix == pwr_eBix_dev)) if ( !(o->b.bix == pwr_eBix_rt || o->b.bix == pwr_eBix_sys || o->b.bix == pwr_eBix_dev))
m_vrep->error( "Bad body index", getFileName(), line_number); m_vrep->error( "Bad body index", getFileName(), line_number);
} }
break;
} }
else if (getType() == tokens.VOLUME) case tokensVOLUME:
{ {
pwr_tVid vid; pwr_tVid vid;
int sts; int sts;
...@@ -1732,15 +1797,18 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1732,15 +1797,18 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
// Get oid // Get oid
ref_wblnode second_child = first_child->getNextSibling(); ref_wblnode second_child = first_child->getNextSibling();
if ( second_child) { if ( second_child) {
if ( second_child->getType() == tokens.OID) { switch ( second_child->getType()) {
case tokensOID:
{
string vidstring = second_child->getText(); string vidstring = second_child->getText();
sts = cdh_StringToVolumeId( (char *)vidstring.c_str(), &vid); sts = cdh_StringToVolumeId( (char *)vidstring.c_str(), &vid);
if ( EVEN(sts)) { if ( EVEN(sts)) {
// Syntax exception -- vid // Syntax exception -- vid
m_vrep->error( "Volume id syntax", getFileName(), line_number); m_vrep->error( "Volume id syntax", getFileName(), line_number);
} }
break;
} }
else { default:
// Syntax exception -- vid // Syntax exception -- vid
m_vrep->error( "Volume syntax", getFileName(), line_number); m_vrep->error( "Volume syntax", getFileName(), line_number);
} }
...@@ -1762,8 +1830,18 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1762,8 +1830,18 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
// Build to get next oix // Build to get next oix
build( false); build( false);
} }
break;
} }
else if (getType() == tokens.CHAR_LITERAL) case tokensATTRIBUTE:
case tokensSOBJECT:
case tokensBODY:
case tokensVALUE:
case tokensINT:
case tokensNUM_FLOAT:
{
break;
}
case tokensCHAR_LITERAL:
{ {
// Remove quotes // Remove quotes
char str[10]; char str[10];
...@@ -1773,8 +1851,9 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1773,8 +1851,9 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
str[strlen(str)-1] = 0; str[strlen(str)-1] = 0;
string new_text(str); string new_text(str);
setText(new_text); setText(new_text);
break;
} }
else if (getType() == tokens.STRING_LITERAL) case tokensSTRING_LITERAL:
{ {
// Remove quotes and replace \" with " // Remove quotes and replace \" with "
char str[2048]; char str[2048];
...@@ -1796,6 +1875,10 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol) ...@@ -1796,6 +1875,10 @@ void wb_wblnode::registerNode( wb_vrepwbl *vol)
*t = 0; *t = 0;
string new_text(str); string new_text(str);
setText(new_text); setText(new_text);
break;
}
default:
;
} }
ref_wblnode child = first_child; ref_wblnode child = first_child;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment