summaryrefslogtreecommitdiff
path: root/src/mongo/db/ops/modifier_table.h
blob: 3f81a64014fd8c82f6a5948c8ca6daa9caec4afd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
 *    Copyright (C) 2013 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 "mongo/db/ops/modifier_interface.h"

namespace mongo {
namespace modifiertable {

    enum ModifierType {
        MOD_ADD_TO_SET,
        MOD_BIT,
        MOD_INC,
        MOD_MUL,
        MOD_POP,
        MOD_PULL,
        MOD_PULL_ALL,
        MOD_PUSH,
        MOD_PUSH_ALL,
        MOD_SET,
        MOD_SET_ON_INSERT,
        MOD_RENAME,
        MOD_UNSET,
        MOD_UNKNOWN
    };

    /**
     * Returns the modifier type for 'typeStr', if it was recognized as an existing update
     * mod, or MOD_UNKNOWN otherwise.
     */
    ModifierType getType(const StringData& typeStr);

    /**
     * Instantiate an update mod that corresponds to 'modType' or NULL if 'modType' is not
     * valid. The ownership of the new object is the caller's.
     */
    ModifierInterface* makeUpdateMod(ModifierType modType);

} // namespace modifiertable
} // namespace mongo