MCPcopy Create free account
hub / github.com/CelestiaProject/Celestia / parseCommand

Method parseCommand

src/celengine/cmdparser.cpp:148–783  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

146
147
148Command* CommandParser::parseCommand()
149{
150 if (tokenizer->nextToken() != Tokenizer::TokenName)
151 {
152 error("Invalid command name");
153 return NULL;
154 }
155
156 string commandName = tokenizer->getStringValue();
157
158 Value* paramListValue = parser->readValue();
159 if (paramListValue == NULL || paramListValue->getType() != Value::HashType)
160 {
161 error("Bad parameter list");
162 return NULL;
163 }
164
165 Hash* paramList = paramListValue->getHash();
166 Command* cmd = NULL;
167
168 if (commandName == "wait")
169 {
170 double duration = 1.0;
171 paramList->getNumber("duration", duration);
172 cmd = new CommandWait(duration);
173 }
174 else if (commandName == "set")
175 {
176 double value = 0.0;
177 string name;
178 paramList->getString("name", name);
179 if (!paramList->getNumber("value", value))
180 {
181 // Some values may be specified via strings
182 string valstr;
183 if (paramList->getString("value", valstr))
184 {
185 if (compareIgnoringCase(valstr, "fuzzypoints") == 0)
186 value = (double) Renderer::FuzzyPointStars;
187 else if (compareIgnoringCase(valstr, "points") == 0)
188 value = (double) Renderer::PointStars;
189 else if (compareIgnoringCase(valstr, "scaleddiscs") == 0)
190 value = (double) Renderer::ScaledDiscStars;
191 }
192 }
193
194 cmd = new CommandSet(name, value);
195 }
196 else if (commandName == "select")
197 {
198 string object;
199 paramList->getString("object", object);
200 cmd = new CommandSelect(object);
201 }
202 else if (commandName == "setframe")
203 {
204 string refName;
205 paramList->getString("ref", refName);

Callers

nothing calls this directly

Calls 15

compareIgnoringCaseFunction · 0.85
parseCoordinateSystemFunction · 0.85
degToRadFunction · 0.85
BigFixClass · 0.85
DateClass · 0.85
UniversalCoordClass · 0.85
parseRenderFlagsFunction · 0.85
parseLabelFlagsFunction · 0.85
parseOrbitFlagsFunction · 0.85
parseConstellationsFunction · 0.85
parseConstellationColorFunction · 0.85

Tested by

no test coverage detected