diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2012-11-08 22:58:28 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2012-11-08 22:58:28 +0000 |
| commit | 52be1ef0d126f09ba943c7afcf367e7d9347f2fd (patch) | |
| tree | fd4b0dd148751c3c6c1b95296c3b82cb86051b83 /src/rule.cpp | |
| parent | 795d0737fed40d88a7801b451b7750ba90802345 (diff) | |
| download | build-52be1ef0d126f09ba943c7afcf367e7d9347f2fd.tar.gz build-52be1ef0d126f09ba943c7afcf367e7d9347f2fd.tar.bz2 build-52be1ef0d126f09ba943c7afcf367e7d9347f2fd.tar.xz build-52be1ef0d126f09ba943c7afcf367e7d9347f2fd.zip | |
tabconv: it's all spaces now.
Diffstat (limited to 'src/rule.cpp')
| -rw-r--r-- | src/rule.cpp | 168 |
1 files changed, 84 insertions, 84 deletions
diff --git a/src/rule.cpp b/src/rule.cpp index 81e775e..15b2388 100644 --- a/src/rule.cpp +++ b/src/rule.cpp | |||
| @@ -12,8 +12,8 @@ | |||
| 12 | using namespace Bu; | 12 | using namespace Bu; |
| 13 | 13 | ||
| 14 | Rule::Rule( const Bu::String &sName ) : | 14 | Rule::Rule( const Bu::String &sName ) : |
| 15 | sName( sName ), | 15 | sName( sName ), |
| 16 | pInput( NULL ) | 16 | pInput( NULL ) |
| 17 | { | 17 | { |
| 18 | } | 18 | } |
| 19 | 19 | ||
| @@ -23,146 +23,146 @@ Rule::~Rule() | |||
| 23 | 23 | ||
| 24 | const Bu::String &Rule::getName() const | 24 | const Bu::String &Rule::getName() const |
| 25 | { | 25 | { |
| 26 | return sName; | 26 | return sName; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | void Rule::setInput( const AstBranch *pNewInput ) | 29 | void Rule::setInput( const AstBranch *pNewInput ) |
| 30 | { | 30 | { |
| 31 | pInput = pNewInput; | 31 | pInput = pNewInput; |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | const AstBranch *Rule::getInput() const | 34 | const AstBranch *Rule::getInput() const |
| 35 | { | 35 | { |
| 36 | return pInput; | 36 | return pInput; |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | bool Rule::hasOutputs() const | 39 | bool Rule::hasOutputs() const |
| 40 | { | 40 | { |
| 41 | return !lOutput.isEmpty(); | 41 | return !lOutput.isEmpty(); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | void Rule::addOutput( const AstBranch *pNewOutput ) | 44 | void Rule::addOutput( const AstBranch *pNewOutput ) |
| 45 | { | 45 | { |
| 46 | lOutput.append( pNewOutput ); | 46 | lOutput.append( pNewOutput ); |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | void Rule::addProfile( const AstBranch *pProfRoot ) | 49 | void Rule::addProfile( const AstBranch *pProfRoot ) |
| 50 | { | 50 | { |
| 51 | Profile *pProf = new Profile( pProfRoot ); | 51 | Profile *pProf = new Profile( pProfRoot ); |
| 52 | hProfiles.insert( pProf->getName(), pProf ); | 52 | hProfiles.insert( pProf->getName(), pProf ); |
| 53 | /* | 53 | /* |
| 54 | hProfiles.insert( | 54 | hProfiles.insert( |
| 55 | dynamic_cast<const AstLeaf *>( | 55 | dynamic_cast<const AstLeaf *>( |
| 56 | (*pProfile->getBranchBegin()).first() | 56 | (*pProfile->getBranchBegin()).first() |
| 57 | )->getStrValue(), | 57 | )->getStrValue(), |
| 58 | pProfile | 58 | pProfile |
| 59 | ); | 59 | ); |
| 60 | */ | 60 | */ |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | void Rule::prepTarget( class Target *pTarget ) | 63 | void Rule::prepTarget( class Target *pTarget ) |
| 64 | { | 64 | { |
| 65 | pTarget->setDisplay( getDisplay() ); | 65 | pTarget->setDisplay( getDisplay() ); |
| 66 | for( ProfileHash::iterator i = hProfiles.begin(); i; i++ ) | 66 | for( ProfileHash::iterator i = hProfiles.begin(); i; i++ ) |
| 67 | { | 67 | { |
| 68 | pTarget->addProfile( *i ); | 68 | pTarget->addProfile( *i ); |
| 69 | } | 69 | } |
| 70 | for( AstBranchList::iterator i = lRequires.begin(); i; i++ ) | 70 | for( AstBranchList::iterator i = lRequires.begin(); i; i++ ) |
| 71 | { | 71 | { |
| 72 | pTarget->addRequires( *i ); | 72 | pTarget->addRequires( *i ); |
| 73 | } | 73 | } |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | Target *Rule::createTarget( class Runner &r, const Bu::String &sInput, | 76 | Target *Rule::createTarget( class Runner &r, const Bu::String &sInput, |
| 77 | Target *pParent ) | 77 | Target *pParent ) |
| 78 | { | 78 | { |
| 79 | r.getContext().pushScope( pParent->getVars() ); | 79 | r.getContext().pushScope( pParent->getVars() ); |
| 80 | r.getContext().addVariable("INPUT", sInput ); | 80 | r.getContext().addVariable("INPUT", sInput ); |
| 81 | Target *pTrg = new Target( false ); | 81 | Target *pTrg = new Target( false ); |
| 82 | for( AstBranchList::iterator i = lOutput.begin(); i; i++ ) | 82 | for( AstBranchList::iterator i = lOutput.begin(); i; i++ ) |
| 83 | { | 83 | { |
| 84 | Variable vOut = r.execExpr( | 84 | Variable vOut = r.execExpr( |
| 85 | (*(*i)->getBranchBegin()).begin(), | 85 | (*(*i)->getBranchBegin()).begin(), |
| 86 | Variable( sInput ) | 86 | Variable( sInput ) |
| 87 | ); | 87 | ); |
| 88 | if( vOut.getType() == Variable::typeString ) | 88 | if( vOut.getType() == Variable::typeString ) |
| 89 | { | 89 | { |
| 90 | pTrg->addOutput( vOut.getString() ); | 90 | pTrg->addOutput( vOut.getString() ); |
| 91 | } | 91 | } |
| 92 | else if( vOut.getType() == Variable::typeList ) | 92 | else if( vOut.getType() == Variable::typeList ) |
| 93 | { | 93 | { |
| 94 | for( VarList::iterator j = vOut.begin(); j; j++ ) | 94 | for( VarList::iterator j = vOut.begin(); j; j++ ) |
| 95 | { | 95 | { |
| 96 | pTrg->addOutput( (*j).getString() ); | 96 | pTrg->addOutput( (*j).getString() ); |
| 97 | } | 97 | } |
| 98 | } | 98 | } |
| 99 | } | 99 | } |
| 100 | r.getContext().addVariable("OUTPUT", pTrg->getOutputList() ); | 100 | r.getContext().addVariable("OUTPUT", pTrg->getOutputList() ); |
| 101 | pTrg->addInput( sInput ); | 101 | pTrg->addInput( sInput ); |
| 102 | pTrg->setDisplay( getDisplay() ); | 102 | pTrg->setDisplay( getDisplay() ); |
| 103 | for( ProfileHash::iterator i = hProfiles.begin(); i; i++ ) | 103 | for( ProfileHash::iterator i = hProfiles.begin(); i; i++ ) |
| 104 | { | 104 | { |
| 105 | pTrg->addProfile( *i ); | 105 | pTrg->addProfile( *i ); |
| 106 | } | 106 | } |
| 107 | for( AstBranchList::iterator i = lRequires.begin(); i; i++ ) | 107 | for( AstBranchList::iterator i = lRequires.begin(); i; i++ ) |
| 108 | { | 108 | { |
| 109 | pTrg->addRequires( *i ); | 109 | pTrg->addRequires( *i ); |
| 110 | } | 110 | } |
| 111 | pTrg->setVars( r.getContext().getScope() ); | 111 | pTrg->setVars( r.getContext().getScope() ); |
| 112 | r.getContext().popScope(); | 112 | r.getContext().popScope(); |
| 113 | 113 | ||
| 114 | return pTrg; | 114 | return pTrg; |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | bool Rule::ruleMatches( Runner &r, const Bu::String &sInput ) | 117 | bool Rule::ruleMatches( Runner &r, const Bu::String &sInput ) |
| 118 | { | 118 | { |
| 119 | r.getContext().pushScope(); | 119 | r.getContext().pushScope(); |
| 120 | r.getContext().addVariable("INPUT", sInput ); | 120 | r.getContext().addVariable("INPUT", sInput ); |
| 121 | Variable vInput( sInput ); | 121 | Variable vInput( sInput ); |
| 122 | Variable vOut = r.execExpr( | 122 | Variable vOut = r.execExpr( |
| 123 | (*pInput->getBranchBegin()).begin(), | 123 | (*pInput->getBranchBegin()).begin(), |
| 124 | vInput | 124 | vInput |
| 125 | ); | 125 | ); |
| 126 | r.getContext().popScope(); | 126 | r.getContext().popScope(); |
| 127 | if( vOut.getType() == Variable::typeBool ) | 127 | if( vOut.getType() == Variable::typeBool ) |
| 128 | return vOut.getBool(); | 128 | return vOut.getBool(); |
| 129 | else if( vOut.getType() == Variable::typeList ) | 129 | else if( vOut.getType() == Variable::typeList ) |
| 130 | return vOut.begin(); | 130 | return vOut.begin(); |
| 131 | return false; | 131 | return false; |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | void Rule::addTag( const Bu::String &sTag ) | 134 | void Rule::addTag( const Bu::String &sTag ) |
| 135 | { | 135 | { |
| 136 | lsTags.append( sTag ); | 136 | lsTags.append( sTag ); |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | const StrList &Rule::getTagList() const | 139 | const StrList &Rule::getTagList() const |
| 140 | { | 140 | { |
| 141 | return lsTags; | 141 | return lsTags; |
| 142 | } | 142 | } |
| 143 | 143 | ||
| 144 | void Rule::setDisplay( const Bu::String &sStr ) | 144 | void Rule::setDisplay( const Bu::String &sStr ) |
| 145 | { | 145 | { |
| 146 | sDisplay = sStr; | 146 | sDisplay = sStr; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | const Bu::String &Rule::getDisplay() const | 149 | const Bu::String &Rule::getDisplay() const |
| 150 | { | 150 | { |
| 151 | return (sDisplay.isSet())?(sDisplay):(sName); | 151 | return (sDisplay.isSet())?(sDisplay):(sName); |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | void Rule::addRequires( const AstBranch *pBr ) | 154 | void Rule::addRequires( const AstBranch *pBr ) |
| 155 | { | 155 | { |
| 156 | lRequires.append( pBr ); | 156 | lRequires.append( pBr ); |
| 157 | } | 157 | } |
| 158 | 158 | ||
| 159 | Bu::Formatter &operator<<( Bu::Formatter &f, const Rule &/*t*/ ) | 159 | Bu::Formatter &operator<<( Bu::Formatter &f, const Rule &/*t*/ ) |
| 160 | { | 160 | { |
| 161 | return f << "rule"; | 161 | return f << "rule"; |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | template<> Bu::Formatter &Bu::operator<< <Rule>( Bu::Formatter &f, const Rule *t ) | 164 | template<> Bu::Formatter &Bu::operator<< <Rule>( Bu::Formatter &f, const Rule *t ) |
| 165 | { | 165 | { |
| 166 | return f << (*t); | 166 | return f << (*t); |
| 167 | } | 167 | } |
| 168 | 168 | ||
