Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/new_class_id/src/lib/util/loading/load_param.cc @ 9775

Last change on this file since 9775 was 9775, checked in by bensch, 18 years ago

loadParam descriptions can be printed nicely, and also switched on and off globally

File size: 3.3 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
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, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Benjamin Grauer
13   co-programmer: ...
14*/
15
16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_LOADING
17
18#include "util/loading/load_param.h"
19#include "load_param_class_description.h"
20#include "compiler.h"
21#include "debug.h"
22/**
23 * @brief Constructs a new LoadParameter
24 * @param root the XML-element to load this Parameter from
25 * @param paramName the Parameter to load
26 * @param object the BaseObject, to load this parameter on to (will be cast to executor's Parameter)
27 * @param inLoadCycle If we are in a LoadCycle (loading differs.).
28 */
29LoadParamBase::LoadParamBase(const TiXmlElement* root, const std::string& paramName, bool inLoadCycle)
30    :  paramName(paramName), inLoadCycle(inLoadCycle)
31{
32  // determin the LoadString.
33  if (likely(!inLoadCycle))
34    this->loadElem = grabParameterElement(root, paramName);
35  else if (paramName == root->Value())
36    this->loadElem = (TiXmlElement*)root->FirstChild();
37  else
38    this->loadElem = NULL;
39}
40
41
42/**
43 * @param descriptionText The text to set as a description for this Parameter
44 * @returns a pointer to itself.
45 */
46void LoadParamBase::describe(const ClassID& classID, const std::string& descriptionText)
47{
48  PRINTF(5)("Describing Class '%s'(id:%d) Parameter '%s': description '%s'\n",
49  classID.name().c_str(), classID.id(), paramName.c_str(), descriptionText.c_str());
50
51  LoadParamClassDescription::describeClass(classID, paramName, descriptionText);
52}
53
54/**
55 * @brief sets the Values of the Description to a usefull text.
56 */
57void LoadParamBase::setDescriptionValues(const ClassID& classID, unsigned int paramCount, const MultiType* const defaultValues, bool retVal)
58{
59  if(LoadParamClassDescription::createsDescriptions())
60    LoadParamClassDescription::setValuesOf(classID, paramName, paramCount, defaultValues, retVal);
61}
62
63
64//////////////////////
65// HELPER FUNCTIONS //
66//////////////////////
67/**
68 * @param root: The XML-element to grab a parameter from
69 * @param parameterName: the parameter to grab
70 * @returns the Value of the parameter if found, NULL otherwise
71*/
72std::string LoadParamBase::grabParameter(const TiXmlElement* root, const std::string& parameterName)
73{
74  const TiXmlElement* const element = grabParameterElement(root, parameterName);
75  if (element != NULL)
76    return element->Value();
77  else
78  {
79    static std::string empty("");
80    return empty;
81  }
82}
83
84/**
85 * @param root: The XML-element to grab a parameter from
86 * @param parameterName: the parameter to grab
87 * @returns the Element of the parameter if found, NULL otherwise
88 */
89const TiXmlElement* LoadParamBase::grabParameterElement(const TiXmlElement* root, const std::string& parameterName)
90{
91  const TiXmlElement* element;
92  const TiXmlNode* node;
93
94  if (root == NULL)
95    return NULL;
96
97  element = root->FirstChildElement( parameterName);
98  if( element == NULL) return NULL;
99
100  node = element->FirstChild();
101  while( node != NULL)
102  {
103    if( node->ToText()) return (TiXmlElement*)node;
104    node = node->NextSibling();
105  }
106  return NULL;
107}
108
109
110
Note: See TracBrowser for help on using the repository browser.