Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ParameterSet Class Reference

#include <ParameterSet.hpp>

Collaboration diagram for ParameterSet:

Classes

struct  ParameterRecord
 

Public Member Functions

 ParameterSet ()
 
 ~ParameterSet ()
 
void add_int_parameter (const char *name, int initial_value, MsqError &err)
 
void set_int_parameter (const char *name, int value, MsqError &err)
 
void get_int_parameter (const char *name, int *value, MsqError &err)
 
void remove_parameter (const char *name, MsqError &err)
 
 ParameterSet ()
 
 ~ParameterSet ()
 
void add_int_parameter (const char *name, int initial_value, MsqError &err)
 
void set_int_parameter (const char *name, int value, MsqError &err)
 
void get_int_parameter (const char *name, int *value, MsqError &err)
 
void remove_parameter (const char *name, MsqError &err)
 

Private Member Functions

msq_stdc::size_t get_parameter_index (const char *name, MsqError &err)
 
void generic_add_parameter (const char *name, MsqError &err)
 
msq_stdc::size_t get_parameter_index (const char *name, MsqError &err)
 
void generic_add_parameter (const char *name, MsqError &err)
 

Private Attributes

ParameterRecordmParameterArray
 
msq_stdc::size_t mNumParameters
 

Detailed Description

Definition at line 43 of file includeLinks/ParameterSet.hpp.

Constructor & Destructor Documentation

Definition at line 62 of file ParameterSet.cpp.

63  : mParameterArray(NULL),
65 {
66 }

Member Function Documentation

void add_int_parameter ( const char *  name,
int  initial_value,
MsqError err 
)
void add_int_parameter ( const char *  name,
int  initial_value,
MsqError err 
)
void generic_add_parameter ( const char *  name,
MsqError err 
)
private
void generic_add_parameter ( const char *  name,
MsqError err 
)
private

Definition at line 120 of file ParameterSet.cpp.

References MsqError::clear(), ParameterSet::get_parameter_index(), MsqError::INVALID_ARG, ParameterSet::mNumParameters, ParameterSet::mParameterArray, MSQ_SETERR, and ParameterSet::ParameterRecord::name.

Referenced by ParameterSet::add_int_parameter().

121 {
122  // Make sure it doesn't already exist
123  if(get_parameter_index(name, err) == mNumParameters) {
124  err.clear();
125  } else {
127  return;
128  }
129 
130  // Make the array big enough
131  ParameterRecord* new_array = new ParameterRecord[mNumParameters + 1];
132  // Copy the old into the new
133  memcpy(new_array, mParameterArray, mNumParameters*sizeof(ParameterRecord));
134  // Toss the old
135  delete [] mParameterArray;
136  // Save the new
137  mNumParameters++;
138  mParameterArray = new_array;
139 
140  // Now add the new parameter, with no initial value
141  mParameterArray[mNumParameters - 1].name = new char[strlen(name) + 1];
142  strcpy(mParameterArray[mNumParameters - 1].name, name);
143 
144  return;
145 }
msq_stdc::size_t get_parameter_index(const char *name, MsqError &err)
invalid function argument passed
#define MSQ_SETERR(err)
Macro to set error - use err.clear() to clear.
void clear()
resets error object to non-active state (no error).

Here is the call graph for this function:

Here is the caller graph for this function:

void get_int_parameter ( const char *  name,
int *  value,
MsqError err 
)
void get_int_parameter ( const char *  name,
int *  value,
MsqError err 
)

Definition at line 176 of file ParameterSet.cpp.

References ParameterSet::get_parameter_index(), MsqError::INVALID_ARG, ParameterSet::mParameterArray, MSQ_ERRRTN, MSQ_INT, MSQ_SETERR, and ParameterSet::ParameterRecord::value.

178 {
179  // Make sure it exists
180  size_t index = get_parameter_index(name, err);
181  MSQ_ERRRTN(err);
182 
183  // Make sure it's the right type
184  if (mParameterArray[index].type != MSQ_INT) {
186  return;
187  }
188 
189  // Get the value
190  *value = *reinterpret_cast<int*>(&(mParameterArray[index].value));
191 
192  return;
193 }
msq_stdc::size_t get_parameter_index(const char *name, MsqError &err)
invalid function argument passed
#define MSQ_SETERR(err)
Macro to set error - use err.clear() to clear.
#define MSQ_ERRRTN(err)
If passed error is true, return from a void function.

Here is the call graph for this function:

msq_stdc::size_t get_parameter_index ( const char *  name,
MsqError err 
)
private

Definition at line 84 of file ParameterSet.cpp.

References i, MsqError::INVALID_ARG, ParameterSet::mNumParameters, ParameterSet::mParameterArray, and MSQ_SETERR.

Referenced by ParameterSet::generic_add_parameter(), ParameterSet::get_int_parameter(), ParameterSet::remove_parameter(), and ParameterSet::set_int_parameter().

85 {
86  // Search for a parameter with the same name
87  for (size_t i = 0; (i < mNumParameters; ++i)
88  if (!msq_stdc::strcmp(mParameterArray[i].name, name))
89  return i;
90 
92  return mNumParameters;
93 }
invalid function argument passed
#define MSQ_SETERR(err)
Macro to set error - use err.clear() to clear.
blockLoc i
Definition: read.cpp:79

Here is the caller graph for this function:

msq_stdc::size_t get_parameter_index ( const char *  name,
MsqError err 
)
private
void remove_parameter ( const char *  name,
MsqError err 
)

Definition at line 95 of file ParameterSet.cpp.

References ParameterSet::get_parameter_index(), ParameterSet::mNumParameters, ParameterSet::mParameterArray, MSQ_ERRRTN, MSQ_STRING, ParameterSet::ParameterRecord::name, ParameterSet::ParameterRecord::ParameterValue::strVal, and ParameterSet::ParameterRecord::value.

96 {
97  // Make sure it exists
98  size_t index = get_parameter_index(name); MSQ_ERRRTN(err);
99 
100  // Free the string holding the name
101  delete [] mParameterArray[index].name;
102 
103  // If it's a string, free the string value
104  if (mParameterArray[index].type == MSQ_STRING &&
105  mParameterArray[index].value.strVal != NULL)
106  {
107  delete [] mParameterArray[index].value.strVal;
108  }
109 
110  // If it isn't at the end, move the last parameter
111  // into the spot this one was using
112  if (index != mNumParameters - 1)
113  {
115  }
116 
117  mNumParameters--;
118 }
msq_stdc::size_t get_parameter_index(const char *name, MsqError &err)
#define MSQ_ERRRTN(err)
If passed error is true, return from a void function.

Here is the call graph for this function:

void remove_parameter ( const char *  name,
MsqError err 
)
void set_int_parameter ( const char *  name,
int  value,
MsqError err 
)

Definition at line 159 of file ParameterSet.cpp.

References ParameterSet::get_parameter_index(), ParameterSet::ParameterRecord::ParameterValue::intVal, MsqError::INVALID_ARG, ParameterSet::mParameterArray, MSQ_ERRRTN, MSQ_INT, MSQ_SETERR, and ParameterSet::ParameterRecord::value.

161 {
162  // Make sure it exists
163  size_t index = get_parameter_index(name, err);
164  MSQ_ERRRTN(err);
165 
166  // Make sure it's the right type
167  if (mParameterArray[index].type != MSQ_INT) {
169  return;
170  }
171 
172  // Set the value
173  mParameterArray[index].value.intVal = value;
174 }
msq_stdc::size_t get_parameter_index(const char *name, MsqError &err)
invalid function argument passed
#define MSQ_SETERR(err)
Macro to set error - use err.clear() to clear.
#define MSQ_ERRRTN(err)
If passed error is true, return from a void function.

Here is the call graph for this function:

void set_int_parameter ( const char *  name,
int  value,
MsqError err 
)

Member Data Documentation


The documentation for this class was generated from the following files: