source: nrEngine/src/DefaultScriptingFunctions.cpp @ 18

Revision 18, 3.3 KB checked in by art, 13 years ago (diff)
Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13namespace nrEngine{
14
15        //------------------------------------------------------------------------
16        // Helper class for default scripting functions
17        //------------------------------------------------------------------------
18        class DefaultScriptingFunctions
19        {
20                public:
21                        static void addMethods()
22                        {
23                                Engine::sScriptEngine()->add("set", set);
24                                Engine::sScriptEngine()->add("get", get);
25                                Engine::sScriptEngine()->add("list", list);
26                        }
27
28
29                        static void delMethods()
30                        {
31                                Engine::sScriptEngine()->del("set");
32                                Engine::sScriptEngine()->del("get");
33                                Engine::sScriptEngine()->del("list");
34                        }
35               
36                private:
37
38                        /**
39                         * Set new value to specified property in the property database
40                         **/
41                        ScriptFunctionDef(set);
42
43                        /**
44                         * Get value of specified property
45                         **/
46                        ScriptFunctionDef(get);
47
48                        /**
49                         * List all properties in specified group
50                         **/
51                        ScriptFunctionDef(list);
52                       
53        };
54
55        //----------------------------------------------------------------------------------
56        ScriptFunctionDec(set, DefaultScriptingFunctions)
57        {
58                // check parameter count
59                if (args.size() < 3){
60                        return ScriptResult(std::string("Not valid parameter count! Parameters (value, name, [group])"));
61                }
62
63                // get parameters
64                std::string value, name, group;
65                value = args[1];
66                name  = args[2];
67                if (args.size() > 3) group = args[3];
68
69                // set new value to the property
70                Engine::sPropertyManager()->set(Property(name, value), name, group);
71                return ScriptResult();
72        }
73       
74        //----------------------------------------------------------------------------------
75        ScriptFunctionDec(get, DefaultScriptingFunctions)
76        {
77                // check parameter count
78                if (args.size() < 1){
79                        return ScriptResult(std::string("Not valid parameter count! Parameters (name, [group])"));
80                }
81
82                // get parameters
83                std::string name, group;
84                name  = args[1];
85                if (args.size() > 2) group = args[2];
86
87                // set new value to the property
88                Property& p = Engine::sPropertyManager()->getProperty(name, group);
89                return ScriptResult(p.getValue());
90        }
91
92        //----------------------------------------------------------------------------------
93        ScriptFunctionDec(list, DefaultScriptingFunctions)
94        {
95                // get parameters
96                std::string group;
97                if (args.size() > 1) group = args[1];
98
99                // get list of all properties from the db
100                const PropertyList& l = Engine::sPropertyManager()->getPropertyList(group);
101
102                // iterate through the list
103                ScriptResult res;
104                for (PropertyList::const_iterator it = l.begin(); it != l.end(); it++){
105                        res , it->getValue();
106                }
107               
108                // set new value to the property
109                return res;
110        }
111
112};
113
Note: See TracBrowser for help on using the repository browser.