diff options
Diffstat (limited to 'vhdlparser/VhdlParser.cc')
-rw-r--r-- | vhdlparser/VhdlParser.cc | 415 |
1 files changed, 207 insertions, 208 deletions
diff --git a/vhdlparser/VhdlParser.cc b/vhdlparser/VhdlParser.cc index b360217..49e9bd9 100644 --- a/vhdlparser/VhdlParser.cc +++ b/vhdlparser/VhdlParser.cc @@ -354,7 +354,7 @@ s+=s1; jj_consume_token(SEMI_T); } -addVhdlType(s2.data(),getLine(ALIAS_T),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s.data(),Public); +outlineParser()->addVhdlType(s2.data(),outlineParser()->getLine(ALIAS_T),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s.data(),Public); return s2+" "+s+";"; assert(false); @@ -461,10 +461,10 @@ void VhdlParser::architecture_body() {QCString s,s1;if (!hasError) { if (!hasError) { QCString t=s1+"::"+s; - genLabels.resize(0); - pushLabel(genLabels,s1); - lastCompound=current.get(); - addVhdlType(t,getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private); + m_sharedState->genLabels.resize(0); + outlineParser()->pushLabel(m_sharedState->genLabels,s1); + m_sharedState->lastCompound=m_sharedState->current; + outlineParser()->addVhdlType(t,outlineParser()->getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private); } if (!hasError) { @@ -474,7 +474,7 @@ QCString t=s1+"::"+s; } } catch ( ...) { -error_skipto(BEGIN_T); +outlineParser()->error_skipto(BEGIN_T); } } if (!hasError) { @@ -527,7 +527,7 @@ error_skipto(BEGIN_T); jj_consume_token(SEMI_T); } -lastEntity=0;lastCompound=0; genLabels.resize(0); +m_sharedState->lastEntity=0;m_sharedState->lastCompound=0; m_sharedState->genLabels.resize(0); } @@ -810,7 +810,7 @@ QCString VhdlParser::attribute_declaration() {QCString s,s1;if (!hasError) { jj_consume_token(SEMI_T); } -addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,s1.data(),Public); +outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,s1.data(),Public); return " attribute "+s+":"+s1+";"; assert(false); } @@ -929,7 +929,7 @@ QCString VhdlParser::attribute_specification() {QCString s,s1,s2;if (!hasError) } QCString t= s1+" is "+s2; - addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public); return " attribute "+s+" of "+s1+ " is "+s2+";"; assert(false); } @@ -1417,7 +1417,7 @@ void VhdlParser::block_statement() {QCString s;if (!hasError) { } if (!hasError) { -pushLabel(genLabels,s); +outlineParser()->pushLabel(m_sharedState->genLabels,s); } if (!hasError) { @@ -1502,7 +1502,7 @@ pushLabel(genLabels,s); jj_consume_token(SEMI_T); } -genLabels=popLabel(genLabels); +m_sharedState->genLabels=outlineParser()->popLabel(m_sharedState->genLabels); } @@ -1844,7 +1844,7 @@ void VhdlParser::component_declaration() {QCString s;if (!hasError) { } if (!hasError) { -currP=VhdlDocGen::COMPONENT; +m_sharedState->currP=VhdlDocGen::COMPONENT; } if (!hasError) { @@ -1878,8 +1878,8 @@ currP=VhdlDocGen::COMPONENT; } if (!hasError) { -addVhdlType(s.data(),getLine(COMPONENT_T),Entry::VARIABLE_SEC,VhdlDocGen::COMPONENT,0,0,Public); - currP=0; +outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(COMPONENT_T),Entry::VARIABLE_SEC,VhdlDocGen::COMPONENT,0,0,Public); + m_sharedState->currP=0; } if (!hasError) { @@ -1933,7 +1933,7 @@ QCString s3; s1=VhdlDocGen::getIndexWord(s1.data(),1); } - addCompInst(s.lower().data(),s1.lower().data(),s3.data(),getLine()); + outlineParser()->addCompInst(s.lower().data(),s1.lower().data(),s3.data(),outlineParser()->getLine()); } if (!hasError) { @@ -2350,8 +2350,8 @@ void VhdlParser::configuration_declaration() {QCString s,s1;if (!hasError) { } if (!hasError) { -confName=s+"::"+s1; - addVhdlType(s.data(),getLine(CONFIGURATION_T),Entry::VARIABLE_SEC,VhdlDocGen::CONFIG,"configuration",s1.data(),Public); +m_sharedState->confName=s+"::"+s1; + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(CONFIGURATION_T),Entry::VARIABLE_SEC,VhdlDocGen::CONFIG,"configuration",s1.data(),Public); } if (!hasError) { @@ -2403,7 +2403,7 @@ confName=s+"::"+s1; jj_consume_token(SEMI_T); } -genLabels.resize(0); confName=""; +m_sharedState->genLabels.resize(0); m_sharedState->confName=""; } @@ -2550,7 +2550,7 @@ QCString VhdlParser::constant_declaration() {QCString s,s1,s2;Token *t=0;if (!ha if(t) s2.prepend(":="); QCString it=s1+s2; - addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public); it.prepend("constant "); return it; assert(false); @@ -2966,8 +2966,8 @@ QCString VhdlParser::element_declaration() {QCString s,s1;if (!hasError) { jj_consume_token(SEMI_T); } -addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s1.data(),Public); - //addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public); +outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s1.data(),Public); + //outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public); return s+":"+s1; assert(false); } @@ -3337,9 +3337,9 @@ void VhdlParser::entity_declaration() {QCString s;if (!hasError) { } if (!hasError) { -lastEntity=current.get(); - lastCompound=0; - addVhdlType(s.data(),getLine(ENTITY_T),Entry::CLASS_SEC,VhdlDocGen::ENTITY,0,0,Public); +m_sharedState->lastEntity=m_sharedState->current; + m_sharedState->lastCompound=0; + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(ENTITY_T),Entry::CLASS_SEC,VhdlDocGen::ENTITY,0,0,Public); } if (!hasError) { @@ -3410,7 +3410,7 @@ lastEntity=current.get(); jj_consume_token(SEMI_T); } -lastEntity=0;lastCompound=0; genLabels.resize(0); +m_sharedState->lastEntity=0;m_sharedState->lastCompound=0; m_sharedState->genLabels.resize(0); } @@ -3629,7 +3629,7 @@ void VhdlParser::entity_header() {if (!hasError) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case GENERIC_T:{if (!hasError) { -currP=VhdlDocGen::GENERIC;parse_sec=GEN_SEC; +m_sharedState->currP=VhdlDocGen::GENERIC;m_sharedState->parse_sec=GEN_SEC; } if (!hasError) { @@ -3648,7 +3648,7 @@ currP=VhdlDocGen::GENERIC;parse_sec=GEN_SEC; switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case PORT_T:{if (!hasError) { -currP=VhdlDocGen::PORT; +m_sharedState->currP=VhdlDocGen::PORT; } if (!hasError) { @@ -3996,7 +3996,7 @@ QCString VhdlParser::exit_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;i jj_consume_token(SEMI_T); } -lab.resize(0); +m_sharedState->lab.resize(0); if(t) s+=":"; if(t1) s2.prepend(" when "); FlowChart::addFlowChart(FlowChart::EXIT_NO,"exit",s2.data(),s1.data()); @@ -4259,7 +4259,7 @@ QCString VhdlParser::file_declaration() {QCString s,s1,s2,s3;if (!hasError) { } QCString t1=s2+" "+s3; - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public); return " file "+s+":"+s2+" "+s3+";"; assert(false); } @@ -4419,7 +4419,7 @@ assert(false); } -QCString VhdlParser::full_type_declaration() {Entry *tmpEntry;QCString s,s1,s2;if (!hasError) { +QCString VhdlParser::full_type_declaration() {std::shared_ptr<Entry> tmpEntry;QCString s,s1,s2;if (!hasError) { jj_consume_token(TYPE_T); } @@ -4433,8 +4433,8 @@ QCString VhdlParser::full_type_declaration() {Entry *tmpEntry;QCString s,s1,s2;i } if (!hasError) { -tmpEntry=current.get(); - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public); +tmpEntry=m_sharedState->current; + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public); } if (!hasError) { @@ -4444,7 +4444,7 @@ tmpEntry=current.get(); } } catch ( ...) { -error_skipto(SEMI_T); +outlineParser()->error_skipto(SEMI_T); } } if (!hasError) { @@ -4453,24 +4453,24 @@ error_skipto(SEMI_T); } if (s2.contains("#")) { - VhdlDocGen::deleteAllChars(s2,'#'); - tmpEntry->spec=VhdlDocGen::RECORD; - tmpEntry->type=s2.data(); - //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public); - } - else if (s2.contains("%")) { - VhdlDocGen::deleteAllChars(s2,'%'); - tmpEntry->spec=VhdlDocGen::UNITS; - tmpEntry->type=s2.data(); - //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public); - } - else { - tmpEntry->spec=VhdlDocGen::TYPE; - tmpEntry->type=s2.data(); - //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public); - } - tmpEntry=0; - return "type "+s+" is "+s2+";"; + VhdlDocGen::deleteAllChars(s2,'#'); + tmpEntry->spec=VhdlDocGen::RECORD; + tmpEntry->type=s2.data(); + //outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public); + } + else if (s2.contains("%")) { + VhdlDocGen::deleteAllChars(s2,'%'); + tmpEntry->spec=VhdlDocGen::UNITS; + tmpEntry->type=s2.data(); + //outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public); + } + else { + tmpEntry->spec=VhdlDocGen::TYPE; + tmpEntry->type=s2.data(); + //outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public); + } + tmpEntry.reset(); + return "type "+s+" is "+s2+";"; assert(false); } @@ -4517,7 +4517,7 @@ void VhdlParser::generate_statement() {QCString s;if (!hasError) { } if (!hasError) { -pushLabel(genLabels,s); +outlineParser()->pushLabel(m_sharedState->genLabels,s); } if (!hasError) { @@ -4529,7 +4529,7 @@ pushLabel(genLabels,s); } } catch ( ...) { -error_skipto(GENERATE_T); +outlineParser()->error_skipto(GENERATE_T); } } if (!hasError) { @@ -4557,7 +4557,7 @@ error_skipto(GENERATE_T); jj_consume_token(SEMI_T); } -genLabels=popLabel(genLabels); +m_sharedState->genLabels=outlineParser()->popLabel(m_sharedState->genLabels); } @@ -4603,7 +4603,7 @@ void VhdlParser::generic_clause() {QCString s;if (!hasError) { } if (!hasError) { -parse_sec=GEN_SEC; +m_sharedState->parse_sec=GEN_SEC; } if (!hasError) { @@ -4618,7 +4618,7 @@ parse_sec=GEN_SEC; jj_consume_token(SEMI_T); } -parse_sec=0; +m_sharedState->parse_sec=0; } @@ -4925,7 +4925,7 @@ void VhdlParser::if_statement() {QCString s,s1;if (!hasError) { if (!hasError) { s.prepend("if "); - FlowChart::addFlowChart(FlowChart::IF_NO,0,s); + FlowChart::addFlowChart(FlowChart::IF_NO,0,s); } if (!hasError) { @@ -4957,7 +4957,7 @@ s.prepend("if "); if (!hasError) { s1.prepend("elsif "); - FlowChart::addFlowChart(FlowChart::ELSIF_NO,0,s1.data()); + FlowChart::addFlowChart(FlowChart::ELSIF_NO,0,s1.data()); } if (!hasError) { @@ -5020,7 +5020,7 @@ FlowChart::addFlowChart(FlowChart::ELSE_NO,0,0); } FlowChart::moveToPrevLevel(); - FlowChart::addFlowChart(FlowChart::ENDIF_NO,0,0); + FlowChart::addFlowChart(FlowChart::ENDIF_NO,0,0); } @@ -5406,10 +5406,9 @@ return s; } if (!hasError) { -if (parse_sec==GEN_SEC) - - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,s1.data(),0,Public); - return s; +if (m_sharedState->parse_sec==GEN_SEC) + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,m_sharedState->currP,s1.data(),0,Public); + return s; } break; @@ -5453,8 +5452,8 @@ QCString VhdlParser::interface_file_declaration() {QCString s,s1;if (!hasError) s1 = subtype_indication(); } -addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public); - return " file "+s+":"+s1; +outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public); + return " file "+s+":"+s1; assert(false); } @@ -5614,32 +5613,32 @@ QCString VhdlParser::interface_variable_declaration() {Token *tok=0;Token *tok1= } if(tok) - s5=tok->image.c_str(); + s5=tok->image.c_str(); - if(tok1) - s3=tok1->image.data(); + if(tok1) + s3=tok1->image.data(); - if(tok2) - s3+=":="; + if(tok2) + s3+=":="; - QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4; - if (currP!=VhdlDocGen::COMPONENT) - { - if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE) - { - addProto(s5.data(),s.data(),s1.data(),s2.data(),s3.data(),s4.data()); - } - else - { - QCString i=s2+s3+s4; - if (currP==VhdlDocGen::GENERIC && param_sec==0) - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public); - else if(parse_sec != GEN_SEC) - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public); - } - // fprintf(stderr,"\n\n <<port %s >>\n",$$.data()); - } // if component - return it; + QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4; + if (m_sharedState->currP!=VhdlDocGen::COMPONENT) + { + if (m_sharedState->currP==VhdlDocGen::FUNCTION || m_sharedState->currP==VhdlDocGen::PROCEDURE) + { + outlineParser()->addProto(s5.data(),s.data(),s1.data(),s2.data(),s3.data(),s4.data()); + } + else + { + QCString i=s2+s3+s4; + if (m_sharedState->currP==VhdlDocGen::GENERIC && m_sharedState->param_sec==0) + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,m_sharedState->currP,i.data(),s1.data(),Public); + else if(m_sharedState->parse_sec != GEN_SEC) + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,m_sharedState->currP,i.data(),s1.data(),Public); + } + // fprintf(stderr,"\n\n <<port %s >>\n",$$.data()); + } // if component + return it; assert(false); } @@ -5657,8 +5656,8 @@ QCString VhdlParser::iteration_scheme() {QCString s; if (!hasError) { s.prepend("while "); - FlowChart::addFlowChart(FlowChart::WHILE_NO,0,s.data(),lab.data()); - lab=""; + FlowChart::addFlowChart(FlowChart::WHILE_NO,0,s.data(),m_sharedState->lab.data()); + m_sharedState->lab=""; return s; } @@ -5674,9 +5673,9 @@ s.prepend("while "); } if (!hasError) { -QCString q=lab+" for "+s; - FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data()); - lab=""; +QCString q=m_sharedState->lab+" for "+s; + FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),m_sharedState->lab.data()); + m_sharedState->lab=""; return q; } @@ -5717,9 +5716,9 @@ QCString VhdlParser::library_clause() {QCString s;if (!hasError) { } -if ( parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) ) +if ( m_sharedState->parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) ) { - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public); } QCString s1="library "+s; return s1; @@ -6469,7 +6468,7 @@ QCString VhdlParser::next_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;i if(t) s+=":"; FlowChart::addFlowChart(FlowChart::NEXT_NO,"next ",s2.data(),s1.data()); - lab.resize(0); + m_sharedState->lab.resize(0); if(t1) s2.prepend("when "); return s+s1+s2+";"; assert(false); @@ -6694,9 +6693,9 @@ void VhdlParser::package_body() {QCString s;if (!hasError) { } if (!hasError) { -lastCompound=current.get(); +m_sharedState->lastCompound=m_sharedState->current; s.prepend("_"); - addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected); + outlineParser()->addVhdlType(s,outlineParser()->getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected); } if (!hasError) { @@ -6748,7 +6747,7 @@ lastCompound=current.get(); jj_consume_token(SEMI_T); } -lastCompound=0; genLabels.resize(0); +m_sharedState->lastCompound=0; m_sharedState->genLabels.resize(0); } @@ -6889,16 +6888,16 @@ void VhdlParser::package_declaration() {QCString s;if (!hasError) { } if (!hasError) { -lastCompound=current.get(); - std::shared_ptr<Entry> clone=std::make_shared<Entry>(*current); +m_sharedState->lastCompound=m_sharedState->current; + std::shared_ptr<Entry> clone=std::make_shared<Entry>(*m_sharedState->current); clone->section=Entry::NAMESPACE_SEC; clone->spec=VhdlDocGen::PACKAGE; clone->name=s; - clone->startLine=getLine(PACKAGE_T); - clone->bodyLine=getLine(PACKAGE_T); + clone->startLine=outlineParser()->getLine(PACKAGE_T); + clone->bodyLine=outlineParser()->getLine(PACKAGE_T); clone->protection=Package; - current_root->moveToSubEntryAndKeep(clone); - addVhdlType(s,getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package); + m_sharedState->current_root->moveToSubEntryAndKeep(clone); + outlineParser()->addVhdlType(s,outlineParser()->getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package); } if (!hasError) { @@ -6946,7 +6945,7 @@ lastCompound=current.get(); jj_consume_token(SEMI_T); } -lastEntity=0;lastCompound=0; genLabels.resize(0); +m_sharedState->lastEntity=0;m_sharedState->lastCompound=0; m_sharedState->genLabels.resize(0); } @@ -7230,7 +7229,7 @@ QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError) } if (!hasError) { -addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public); +outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public); } if (!hasError) { @@ -7305,7 +7304,7 @@ void VhdlParser::port_clause() {if (!hasError) { jj_consume_token(SEMI_T); } -currP=0; +m_sharedState->currP=0; } @@ -7791,9 +7790,9 @@ void VhdlParser::process_statement() {QCString s,s1,s2;Token *tok=0;if (!hasErro } if (!hasError) { -currP=VhdlDocGen::PROCESS; - current->startLine=getLine(); - current->bodyLine=getLine(); +m_sharedState->currP=VhdlDocGen::PROCESS; + m_sharedState->current->startLine=outlineParser()->getLine(); + m_sharedState->current->bodyLine=outlineParser()->getLine(); } if (!hasError) { @@ -7922,20 +7921,20 @@ if (s2.data()) } if(s.isEmpty()) - currName=VhdlDocGen::getProcessNumber(); - else - currName=s; + m_sharedState->currName=VhdlDocGen::getProcessNumber(); + else + m_sharedState->currName=s; - current->name=currName; - tempEntry=current.get(); - current->endBodyLine=getLine(); - currP=0; - if(tok) - s1=tok->image.data(); - createFunction(currName,VhdlDocGen::PROCESS,s1.data()); - createFlow(); - currName=""; - newEntry(); + m_sharedState->current->name=m_sharedState->currName; + m_sharedState->tempEntry=m_sharedState->current; + m_sharedState->current->endBodyLine=outlineParser()->getLine(); + m_sharedState->currP=0; + if(tok) + s1=tok->image.data(); + outlineParser()->createFunction(m_sharedState->currName,VhdlDocGen::PROCESS,s1.data()); + outlineParser()->createFlow(); + m_sharedState->currName=""; + outlineParser()->newEntry(); } @@ -8463,8 +8462,8 @@ QCString VhdlParser::secondary_unit_declaration() {QCString s,s1;if (!hasError) jj_consume_token(SEMI_T); } -//printf("\n %s %s [%d]",s.data(),s1.data(),getLine()); - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,s1.data(),Public); +//printf("\n %s %s [%d]",s.data(),s1.data(),outlineParser()->getLine()); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,s1.data(),Public); return s+"="+s1; assert(false); @@ -9088,7 +9087,7 @@ void VhdlParser::signal_declaration() {Token* tok=0;QCString s,s1,s2,s3,s4;if (! if(tok) s3.prepend(":="); s4=s1+s2+s3; - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public); } @@ -9437,9 +9436,9 @@ if (s.data()) jj_consume_token(SEMI_T); } -tempEntry->endBodyLine=getLine(END_T); - createFlow(); - currP=0; +m_sharedState->tempEntry->endBodyLine=outlineParser()->getLine(END_T); + outlineParser()->createFlow(); + m_sharedState->currP=0; } @@ -9464,7 +9463,7 @@ void VhdlParser::subprogram_declaration() { } if (!hasError) { -currP=0; +m_sharedState->currP=0; } break; @@ -9747,11 +9746,11 @@ void VhdlParser::subprogram_specification() {QCString s;Token *tok=0;Token *t; } if (!hasError) { -currP=VhdlDocGen::PROCEDURE; - createFunction(s.data(),currP,0); - tempEntry=current.get(); - current->startLine=getLine(PROCEDURE_T); - current->bodyLine=getLine(PROCEDURE_T); +m_sharedState->currP=VhdlDocGen::PROCEDURE; + outlineParser()->createFunction(s.data(),m_sharedState->currP,0); + m_sharedState->tempEntry=m_sharedState->current; + m_sharedState->current->startLine=outlineParser()->getLine(PROCEDURE_T); + m_sharedState->current->bodyLine=outlineParser()->getLine(PROCEDURE_T); } if (!hasError) { @@ -9762,7 +9761,7 @@ currP=VhdlDocGen::PROCEDURE; } if (!hasError) { -param_sec=PARAM_SEC; +m_sharedState->param_sec=PARAM_SEC; } if (!hasError) { @@ -9770,7 +9769,7 @@ param_sec=PARAM_SEC; } if (!hasError) { -param_sec=0; +m_sharedState->param_sec=0; } if (!hasError) { @@ -9812,7 +9811,7 @@ param_sec=0; } if (!hasError) { -newEntry(); +outlineParser()->newEntry(); } break; @@ -9864,21 +9863,21 @@ newEntry(); } if (!hasError) { -currP=VhdlDocGen::FUNCTION; - if(tok) - createFunction(tok->image.c_str(),currP,s.data()); - else - createFunction(0,currP,s.data()); - tempEntry=current.get(); - current->startLine=getLine(FUNCTION_T); - current->bodyLine=getLine(FUNCTION_T); +m_sharedState->currP=VhdlDocGen::FUNCTION; + if(tok) + outlineParser()->createFunction(tok->image.c_str(),m_sharedState->currP,s.data()); + else + outlineParser()->createFunction(0,m_sharedState->currP,s.data()); + m_sharedState->tempEntry=m_sharedState->current; + m_sharedState->current->startLine=outlineParser()->getLine(FUNCTION_T); + m_sharedState->current->bodyLine=outlineParser()->getLine(FUNCTION_T); } if (!hasError) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case LPAREN_T:{if (!hasError) { -param_sec=PARAM_SEC; +m_sharedState->param_sec=PARAM_SEC; } if (!hasError) { @@ -9894,7 +9893,7 @@ param_sec=PARAM_SEC; } if (!hasError) { -param_sec=0; +m_sharedState->param_sec=0; } break; @@ -9914,9 +9913,9 @@ param_sec=0; } if (!hasError) { -tempEntry=current.get(); - current->type=s; - newEntry(); +m_sharedState->tempEntry=m_sharedState->current; + m_sharedState->current->type=s; + outlineParser()->newEntry(); } break; @@ -9990,7 +9989,7 @@ QCString VhdlParser::subtype_declaration() {QCString s,s1;if (!hasError) { jj_consume_token(SEMI_T); } -addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SUBTYPE,0,s1.data(),Public); +outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SUBTYPE,0,s1.data(),Public); return " subtype "+s+" is "+s1+";"; assert(false); } @@ -10417,9 +10416,9 @@ QCStringList ql1=QCStringList::split(",",s); { QCStringList ql=QCStringList::split(".",ql1[j]); QCString it=ql[1]; - if ( parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) ) + if ( m_sharedState->parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) ) { - VhdlParser::addVhdlType(it.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public); + outlineParser()->addVhdlType(it.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public); } } s1="use "+s; @@ -10552,25 +10551,26 @@ QCString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;QCString s } int spec; - if(t1) - s2.prepend(":="); - QCString val=" variable "+s+":"+s1+s2+";"; - QCString it=s1; - if(tok != 0) - { - it.prepend(" shared "); - val.prepend(" shared"); - spec=VhdlDocGen::SHAREDVARIABLE; - } - else - spec=VhdlDocGen::SHAREDVARIABLE; + if(t1) + s2.prepend(":="); + QCString val=" variable "+s+":"+s1+s2+";"; + QCString it=s1; + if(tok != 0) + { + it.prepend(" shared "); + val.prepend(" shared"); + spec=VhdlDocGen::SHAREDVARIABLE; + } + else + spec=VhdlDocGen::SHAREDVARIABLE; - if(t1){ - it+=":="; - it+=s2; - } - addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public); - return val; + if(t1) + { + it+=":="; + it+=s2; + } + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public); + return val; assert(false); } @@ -10971,7 +10971,7 @@ QCString VhdlParser::protected_type_declaration() {if (!hasError) { } } catch ( ...) { -error_skipto(END_T); +outlineParser()->error_skipto(END_T); } } if (!hasError) { @@ -11102,7 +11102,7 @@ void VhdlParser::context_declaration() {QCString s,s1;if (!hasError) { } if (!hasError) { -parse_sec=CONTEXT_SEC; +m_sharedState->parse_sec=CONTEXT_SEC; } if (!hasError) { @@ -11165,8 +11165,8 @@ parse_sec=CONTEXT_SEC; jj_consume_token(SEMI_T); } -parse_sec=0; - addVhdlType(s.data(),getLine(LIBRARY_T),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,"context",s1.data(),Public); +m_sharedState->parse_sec=0; + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(LIBRARY_T),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,"context",s1.data(),Public); } @@ -11259,7 +11259,7 @@ void VhdlParser::package_instantiation_declaration() {QCString s,s1,s2;if (!hasE } QCString q=" is new "+s1+s2; - addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public); } @@ -11299,7 +11299,7 @@ QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasErro } } -current->name=s; +m_sharedState->current->name=s; return "package "+s+" is new "+s1; assert(false); } @@ -11350,7 +11350,7 @@ QCString VhdlParser::subprogram_instantiation_declaration() {QCString s,s1,s2;if } QCString q= " is new "+s1+s2; - addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public); + outlineParser()->addVhdlType(s.data(),outlineParser()->getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public); return q; assert(false); } @@ -11391,7 +11391,7 @@ void VhdlParser::gen_interface_list() {if (!hasError) { if (!hasError) { //int u=s_str.iLine; - parse_sec=GEN_SEC; + m_sharedState->parse_sec=GEN_SEC; } if (!hasError) { @@ -11400,7 +11400,7 @@ void VhdlParser::gen_interface_list() {if (!hasError) { if (!hasError) { // QCString vo=$3; - parse_sec=0; + m_sharedState->parse_sec=0; } if (!hasError) { @@ -12608,8 +12608,8 @@ QCString VhdlParser::iproc() {QCString s,s1;if (!hasError) { s1 = param(); } -current->name=s; - return "procedure "+s+s1; +m_sharedState->current->name=s; + return "procedure "+s+s1; assert(false); } @@ -12707,23 +12707,23 @@ QCString VhdlParser::ifunc() {QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token * } QCString q; - if(t) q=t->image.data(); - if(t2) s3="<>"; - if (!s3.isEmpty()) - { - s3.prepend(" is "); - } - current->name=s; - if (parse_sec==GEN_SEC) - { - QCString ss=q+" function "+s1+" return "+s2+s3; - int a=getLine(FUNCTION_T); - int b=getLine(PROCEDURE_T); - - if (a>b) b=a; - addVhdlType(current->name.data(),b,Entry::VARIABLE_SEC,VhdlDocGen::GENERIC,ss.data(),0,Public); - } - currP=0;return ""; + if(t) q=t->image.data(); + if(t2) s3="<>"; + if (!s3.isEmpty()) + { + s3.prepend(" is "); + } + m_sharedState->current->name=s; + if (m_sharedState->parse_sec==GEN_SEC) + { + QCString ss=q+" function "+s1+" return "+s2+s3; + int a=outlineParser()->getLine(FUNCTION_T); + int b=outlineParser()->getLine(PROCEDURE_T); + + if (a>b) b=a; + outlineParser()->addVhdlType(m_sharedState->current->name.data(),b,Entry::VARIABLE_SEC,VhdlDocGen::GENERIC,ss.data(),0,Public); + } + m_sharedState->currP=0;return ""; assert(false); } @@ -12745,7 +12745,7 @@ QCString VhdlParser::param() {QCString s,s1;Token *tok=0;if (!hasError) { } if (!hasError) { -param_sec=PARAM_SEC; +m_sharedState->param_sec=PARAM_SEC; } if (!hasError) { @@ -12772,12 +12772,11 @@ param_sec=PARAM_SEC; } if(tok) - { - s = tok->image.data(); - - } - param_sec=0; - return s+"("+s1+")"; + { + s = tok->image.data(); + } + m_sharedState->param_sec=0; + return s+"("+s1+")"; assert(false); } |