]> git.donarmstrong.com Git - bamtools.git/blobdiff - src/utils/bamtools_filter_engine.h
Added length property to filter tool.
[bamtools.git] / src / utils / bamtools_filter_engine.h
index cc9312081ab03d98c8b2644c9e12060a1fe41f51..9fb2f591fa3ee21c328989b23874563e6c96801d 100644 (file)
@@ -1,9 +1,8 @@
 // ***************************************************************************
 // bamtools_filter_engine.h (c) 2010 Derek Barnett, Erik Garrison
 // Marth Lab, Department of Biology, Boston College
-// All rights reserved.
 // ---------------------------------------------------------------------------
-// Last modified: 29 September 2010
+// Last modified: 3 May 2013
 // ---------------------------------------------------------------------------
 // Provides a generic filter engine based on filter-sets of properties,
 // with possible "rules" (compound logical expressions) to create more complex
 #ifndef BAMTOOLS_FILTER_ENGINE_H
 #define BAMTOOLS_FILTER_ENGINE_H
 
+#include "utils/utils_global.h"
+#include "utils/bamtools_filter_properties.h"
+#include "utils/bamtools_filter_ruleparser.h"
+#include "utils/bamtools_utilities.h"
+
 #include <algorithm>
 #include <iostream>
 #include <map>
 #include <queue>
 #include <sstream>
 #include <stack>
-#include <sstream>
 #include <string>
 #include <utility>
 #include <vector>
-#include "bamtools_filter_properties.h"
-#include "bamtools_filter_ruleparser.h"
-#include "bamtools_utilities.h"
 
 namespace BamTools {
 
-struct FilterCompareType {    
+struct UTILS_EXPORT FilterCompareType {
     enum Type { AND = 0
               , NOT
               , OR
@@ -69,7 +69,7 @@ struct FilterCompareType {
 // FilterEngine
   
 template <typename FilterChecker>
-class FilterEngine {
+class UTILS_EXPORT FilterEngine {
   
     // ctor & dtor
     public:
@@ -294,7 +294,6 @@ bool FilterEngine<FilterChecker>::evaluateFilterRules(const T& query) {
     
     std::stack<bool> resultStack;
     FilterMap::const_iterator filterIter;
-    FilterMap::const_iterator filterEnd  = m_filters.end();
     std::queue<std::string> ruleQueueCopy = m_ruleQueue;
     while ( !ruleQueueCopy.empty() ) {
         const std::string& token = ruleQueueCopy.front();
@@ -325,7 +324,7 @@ bool FilterEngine<FilterChecker>::evaluateFilterRules(const T& query) {
         else {
             // look up PropertyFilter that matches this token 
             filterIter = m_filters.find(token);
-            BAMTOOLS_ASSERT_MESSAGE( (filterIter != filterEnd), "Filter mentioned in rule, not found in FilterEngine" );
+            BAMTOOLS_ASSERT_MESSAGE( (filterIter != m_filters.end() ), "Filter mentioned in rule, not found in FilterEngine" );
             const PropertyFilter& filter = (*filterIter).second;
             bool result = m_checker.check(filter, query);
             resultStack.push( result );
@@ -550,4 +549,4 @@ inline void FilterEngine<FilterChecker>::setRule(const std::string& ruleString)
 
 } // namespace BamTools
 
-#endif // BAMTOOLS_FILTER_ENGINE_H
\ No newline at end of file
+#endif // BAMTOOLS_FILTER_ENGINE_H