summaryrefslogtreecommitdiff
path: root/db/module.cpp
blob: d218fe6ec87edb364dccda9a5c63f879a2f3a8ba (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
// module.cpp

#include "stdafx.h"
#include "module.h"

namespace mongo {

    std::list<Module*> * Module::_all;

    Module::Module( const string& name )
        : _name( name ) , _options( (string)"Module " + name + " options" ){
        if ( ! _all )
            _all = new list<Module*>();
        _all->push_back( this );
    }

    Module::~Module(){}

    void Module::addOptions( program_options::options_description& options ){
        if ( ! _all ) {
            return;
        }
        for ( list<Module*>::iterator i=_all->begin(); i!=_all->end(); i++ ){
            Module* m = *i;
            options.add( m->_options );
        }
    }

    void Module::configAll( program_options::variables_map& params ){
        if ( ! _all ) {
            return;
        }
        for ( list<Module*>::iterator i=_all->begin(); i!=_all->end(); i++ ){
            Module* m = *i;
            m->config( params );
        }

    }


    void Module::initAll(){
        if ( ! _all ) {
            return;
        }
        for ( list<Module*>::iterator i=_all->begin(); i!=_all->end(); i++ ){
            Module* m = *i;
            m->init();
        }

    }

}