summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/field_path.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/field_path.h')
-rw-r--r--src/mongo/db/pipeline/field_path.h163
1 files changed, 80 insertions, 83 deletions
diff --git a/src/mongo/db/pipeline/field_path.h b/src/mongo/db/pipeline/field_path.h
index f400ca421ce..84dca905fdb 100644
--- a/src/mongo/db/pipeline/field_path.h
+++ b/src/mongo/db/pipeline/field_path.h
@@ -33,77 +33,76 @@
namespace mongo {
- class FieldPath {
- public:
-
- /**
- * Constructor.
- *
- * @param fieldPath the dotted field path std::string or non empty pre-split vector.
- * The constructed object will have getPathLength() > 0.
- * Uassert if any component field names do not pass validation.
- */
- FieldPath(const std::string& fieldPath);
- FieldPath(const std::vector<std::string>& fieldPath);
-
- /**
- Get the number of path elements in the field path.
-
- @returns the number of path elements
- */
- size_t getPathLength() const;
-
- /**
- Get a particular path element from the path.
-
- @param i the zero based index of the path element.
- @returns the path element
- */
- const std::string& getFieldName(size_t i) const;
-
- /**
- Get the full path.
-
- @param fieldPrefix whether or not to include the field prefix
- @returns the complete field path
- */
- std::string getPath(bool fieldPrefix) const;
-
- /**
- Write the full path.
-
- @param outStream where to write the path to
- @param fieldPrefix whether or not to include the field prefix
- */
- void writePath(std::ostream &outStream, bool fieldPrefix) const;
-
- /**
- Get the prefix string.
-
- @returns the prefix string
- */
- static const char *getPrefix();
-
- static const char prefix[];
-
- /**
- * A FieldPath like this but missing the first element (useful for recursion).
- * Precondition getPathLength() > 1.
- */
- FieldPath tail() const;
-
- private:
- /** Uassert if a field name does not pass validation. */
- static void uassertValidFieldName(const std::string& fieldName);
-
- /**
- * Push a new field name to the back of the vector of names comprising the field path.
- * Uassert if 'fieldName' does not pass validation.
- */
- void pushFieldName(const std::string& fieldName);
-
- std::vector<std::string> vFieldName;
- };
+class FieldPath {
+public:
+ /**
+ * Constructor.
+ *
+ * @param fieldPath the dotted field path std::string or non empty pre-split vector.
+ * The constructed object will have getPathLength() > 0.
+ * Uassert if any component field names do not pass validation.
+ */
+ FieldPath(const std::string& fieldPath);
+ FieldPath(const std::vector<std::string>& fieldPath);
+
+ /**
+ Get the number of path elements in the field path.
+
+ @returns the number of path elements
+ */
+ size_t getPathLength() const;
+
+ /**
+ Get a particular path element from the path.
+
+ @param i the zero based index of the path element.
+ @returns the path element
+ */
+ const std::string& getFieldName(size_t i) const;
+
+ /**
+ Get the full path.
+
+ @param fieldPrefix whether or not to include the field prefix
+ @returns the complete field path
+ */
+ std::string getPath(bool fieldPrefix) const;
+
+ /**
+ Write the full path.
+
+ @param outStream where to write the path to
+ @param fieldPrefix whether or not to include the field prefix
+ */
+ void writePath(std::ostream& outStream, bool fieldPrefix) const;
+
+ /**
+ Get the prefix string.
+
+ @returns the prefix string
+ */
+ static const char* getPrefix();
+
+ static const char prefix[];
+
+ /**
+ * A FieldPath like this but missing the first element (useful for recursion).
+ * Precondition getPathLength() > 1.
+ */
+ FieldPath tail() const;
+
+private:
+ /** Uassert if a field name does not pass validation. */
+ static void uassertValidFieldName(const std::string& fieldName);
+
+ /**
+ * Push a new field name to the back of the vector of names comprising the field path.
+ * Uassert if 'fieldName' does not pass validation.
+ */
+ void pushFieldName(const std::string& fieldName);
+
+ std::vector<std::string> vFieldName;
+};
}
@@ -111,18 +110,16 @@ namespace mongo {
namespace mongo {
- inline size_t FieldPath::getPathLength() const {
- return vFieldName.size();
- }
-
- inline const std::string& FieldPath::getFieldName(size_t i) const {
- dassert(i < getPathLength());
- return vFieldName[i];
- }
-
- inline const char *FieldPath::getPrefix() {
- return prefix;
- }
+inline size_t FieldPath::getPathLength() const {
+ return vFieldName.size();
+}
+inline const std::string& FieldPath::getFieldName(size_t i) const {
+ dassert(i < getPathLength());
+ return vFieldName[i];
}
+inline const char* FieldPath::getPrefix() {
+ return prefix;
+}
+}