summaryrefslogtreecommitdiff
path: root/db/matcher.h
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2008-12-28 20:28:49 -0500
committerAaron <aaron@10gen.com>2008-12-28 20:28:49 -0500
commitb7cbd301124045fccab665f939a68d703e70629b (patch)
treee7796053c090b4ee242ef5d1d960e6d78f57ec2b /db/matcher.h
parentb53f593e1bc3d13fc831089541f23116fcc1803a (diff)
downloadmongo-b7cbd301124045fccab665f939a68d703e70629b.tar.gz
Replace tab indentation with spaces
Diffstat (limited to 'db/matcher.h')
-rw-r--r--db/matcher.h119
1 files changed, 63 insertions, 56 deletions
diff --git a/db/matcher.h b/db/matcher.h
index 79bcea7cd0c..18b7d440bb1 100644
--- a/db/matcher.h
+++ b/db/matcher.h
@@ -4,42 +4,47 @@
/**
* Copyright (C) 2008 10gen Inc.
-*
+*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
-*
+*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-#include <pcrecpp.h>
+#include <pcrecpp.h>
-class RegexMatcher {
+class RegexMatcher {
public:
- const char *fieldName;
- pcrecpp::RE *re;
+ const char *fieldName;
+ pcrecpp::RE *re;
bool inIndex;
- RegexMatcher() { re = 0; inIndex = false; }
- ~RegexMatcher() { delete re; }
+ RegexMatcher() {
+ re = 0;
+ inIndex = false;
+ }
+ ~RegexMatcher() {
+ delete re;
+ }
};
-class BasicMatcher {
+class BasicMatcher {
public:
BSONElement toMatch;
- int compareOp;
+ int compareOp;
bool inIndex;
};
// SQL where clause equivalent
-class Where;
+class Where;
/* Match BSON objects against a query pattern.
@@ -49,53 +54,55 @@ class Where;
{ a : 3 } is the pattern object.
GT/LT:
- { a : { $gt : 3 } }
+ { a : { $gt : 3 } }
Not equal:
- { a : { $ne : 3 } }
+ { a : { $ne : 3 } }
TODO: we should rewrite the matcher to be more an AST style.
*/
-class JSMatcher : boost::noncopyable {
- int matchesDotted(
- const char *fieldName,
- BSONElement& toMatch, BSONObj& obj,
- int compareOp, bool *deep, bool isArr = false);
-
- struct element_lt
- {
- bool operator()(const BSONElement& l, const BSONElement& r) const
- {
- int x = (int) l.type() - (int) r.type();
- if( x < 0 ) return true;
- if( x > 0 ) return false;
- return compareElementValues(l,r) < 0;
- }
- };
+class JSMatcher : boost::noncopyable {
+ int matchesDotted(
+ const char *fieldName,
+ BSONElement& toMatch, BSONObj& obj,
+ int compareOp, bool *deep, bool isArr = false);
+
+ struct element_lt
+ {
+ bool operator()(const BSONElement& l, const BSONElement& r) const
+ {
+ int x = (int) l.type() - (int) r.type();
+ if ( x < 0 ) return true;
+ if ( x > 0 ) return false;
+ return compareElementValues(l,r) < 0;
+ }
+ };
public:
- enum {
- Equality = 0,
- LT = 0x1,
- LTE = 0x3,
- GTE = 0x6,
- GT = 0x4,
- opIN = 0x8, // { x : { $in : [1,2,3] } }
+ enum {
+ Equality = 0,
+ LT = 0x1,
+ LTE = 0x3,
+ GTE = 0x6,
+ GT = 0x4,
+ opIN = 0x8, // { x : { $in : [1,2,3] } }
NE = 0x9
- };
+ };
- static int opDirection(int op) {
- return op <= LTE ? -1 : 1;
- }
+ static int opDirection(int op) {
+ return op <= LTE ? -1 : 1;
+ }
- JSMatcher(BSONObj& pattern, BSONObj indexKeyPattern);
+ JSMatcher(BSONObj& pattern, BSONObj indexKeyPattern);
- ~JSMatcher();
+ ~JSMatcher();
- /* deep - means we looked into arrays for a match
+ /* deep - means we looked into arrays for a match
*/
- bool matches(BSONObj& j, bool *deep = 0);
+ bool matches(BSONObj& j, bool *deep = 0);
- int getN() { return n; }
+ int getN() {
+ return n;
+ }
private:
void addBasic(BSONElement e, int c, BSONObj& indexKeyPattern) {
@@ -107,21 +114,21 @@ private:
n++;
}
- int valuesMatch(BSONElement& l, BSONElement& r, int op);
+ int valuesMatch(BSONElement& l, BSONElement& r, int op);
- set<BSONElement,element_lt> *in; // set if query uses $in
- Where *where; // set if query uses $where
- BSONObj& jsobj; // the query pattern. e.g., { name: "joe" }
+ set<BSONElement,element_lt> *in; // set if query uses $in
+ Where *where; // set if query uses $where
+ BSONObj& jsobj; // the query pattern. e.g., { name: "joe" }
vector<BasicMatcher> basics;
- int n; // # of basicmatcher items
+ int n; // # of basicmatcher items
- RegexMatcher regexs[4];
- int nRegex;
+ RegexMatcher regexs[4];
+ int nRegex;
- // so we delete the mem when we're done:
- BSONObjBuilder *builders[8];
- int nBuilders;
+ // so we delete the mem when we're done:
+ BSONObjBuilder *builders[8];
+ int nBuilders;
bool checkInIndex;
};