searchengine/cpix/cpix/src/analyzer.cpp
changeset 2 6c1a2771f4b7
parent 1 6f2c1c46032b
child 7 a5fbfefd615f
--- a/searchengine/cpix/cpix/src/analyzer.cpp	Mon May 03 13:33:22 2010 +0300
+++ b/searchengine/cpix/cpix/src/analyzer.cpp	Fri May 14 16:57:37 2010 +0300
@@ -457,13 +457,15 @@
                       auto_ptr<TokenStreamFactory> factory) 
             : factory_(factory) {
             using namespace Cpt::Parser;
-            if (invokation.params().size() != 2 || 
-                !dynamic_cast<IntegerLit*>(invokation.params()[0]) || 
-                !dynamic_cast<IntegerLit*>(invokation.params()[1])) {
-                THROW_CPIXEXC("Length filter takes exactly two integer parameters");
+            if (!(invokation.params().empty())) {
+                if (invokation.params().size() != 2 || 
+                        !dynamic_cast<IntegerLit*>(invokation.params()[0]) || 
+                        !dynamic_cast<IntegerLit*>(invokation.params()[1])) {
+                    THROW_CPIXEXC("Length filter takes exactly two integer parameters");
+                }
+                min_ = dynamic_cast<IntegerLit*>(invokation.params()[0])->value();
+                max_ = dynamic_cast<IntegerLit*>(invokation.params()[1])->value();
             }
-            min_ = dynamic_cast<IntegerLit*>(invokation.params()[0])->value();
-            max_ = dynamic_cast<IntegerLit*>(invokation.params()[1])->value();
         }
         virtual lucene::analysis::TokenStream* tokenStream(const TCHAR          * fieldName, 
                                                            lucene::util::Reader * reader) {
@@ -486,11 +488,13 @@
                       auto_ptr<TokenStreamFactory> factory) 
             : factory_(factory) {
             using namespace Cpt::Parser;
-            if (invokation.params().size() != 1 || 
-                !dynamic_cast<IntegerLit*>(invokation.params()[0])) {
-                THROW_CPIXEXC("Prefix generator takes exactly one integer parameter");
+            if (invokation.params().empty()) {
+                if (invokation.params().size() != 1 || 
+                    !dynamic_cast<IntegerLit*>(invokation.params()[0])) {
+                    THROW_CPIXEXC("Prefix generator takes exactly one integer parameter");
+                }            
+                maxPrefixLength_ = dynamic_cast<IntegerLit*>(invokation.params()[0])->value();
             }
-            maxPrefixLength_ = dynamic_cast<IntegerLit*>(invokation.params()[0])->value();
         }
         virtual lucene::analysis::TokenStream* tokenStream(const TCHAR          * fieldName, 
                                                            lucene::util::Reader * reader) {