aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/buildparser.cpp19
-rw-r--r--src/buildparser.h1
2 files changed, 13 insertions, 7 deletions
diff --git a/src/buildparser.cpp b/src/buildparser.cpp
index f5c3132..cf98090 100644
--- a/src/buildparser.cpp
+++ b/src/buildparser.cpp
@@ -1,6 +1,7 @@
1#include "buildparser.h" 1#include "buildparser.h"
2#include "ast.h" 2#include "ast.h"
3#include "build.yy.h" 3#include "build.yy.h"
4#include "conditionplugger.h"
4 5
5#include "bu/sio.h" 6#include "bu/sio.h"
6using Bu::sio; 7using Bu::sio;
@@ -9,6 +10,9 @@ BuildParser::BuildParser( Ast &rAst ) :
9 xAst( rAst ) 10 xAst( rAst )
10{ 11{
11 lIncludePaths.append("./"); 12 lIncludePaths.append("./");
13 StrList lConds = ConditionPlugger::getInstance().getPluginList();
14 for( StrList::iterator i = lConds.begin(); i; i++ )
15 hConds.insert( *i, true );
12} 16}
13 17
14BuildParser::~BuildParser() 18BuildParser::~BuildParser()
@@ -54,13 +58,14 @@ bool BuildParser::isKeyword( const Bu::String &sStr )
54 58
55bool BuildParser::isCond( const Bu::String &sStr ) 59bool BuildParser::isCond( const Bu::String &sStr )
56{ 60{
57 if( sStr == "filetime" ) 61 try
58 return true; 62 {
59 if( sStr == "always" ) 63 return hConds.get( sStr );
60 return true; 64 }
61 if( sStr == "never" ) 65 catch(...)
62 return true; 66 {
63 return false; 67 return false;
68 }
64} 69}
65 70
66void BuildParser::include( const Bu::String &sStr, void *scanner, YYLTYPE *loc ) 71void BuildParser::include( const Bu::String &sStr, void *scanner, YYLTYPE *loc )
diff --git a/src/buildparser.h b/src/buildparser.h
index 7e6e348..53e2a50 100644
--- a/src/buildparser.h
+++ b/src/buildparser.h
@@ -31,6 +31,7 @@ private:
31 Bu::Stack<Bu::String> sFilename; 31 Bu::Stack<Bu::String> sFilename;
32 Bu::Stack<YYLTYPE> sLocation; 32 Bu::Stack<YYLTYPE> sLocation;
33 StrList lIncludePaths; 33 StrList lIncludePaths;
34 Bu::Hash<Bu::String, bool> hConds;
34}; 35};
35 36
36typedef void * yyscan_t; 37typedef void * yyscan_t;