annotate src/Support/Parameters.h @ 611:0fbaf443ec82

Carfac C++ revision 3, indluding more style improvements. The output structs are now classes again, and have separate storage methods for each output structure along with flags in the Run and RunSegment methods to allow for only storing NAPs if desired.
author alexbrandmeyer
date Fri, 17 May 2013 19:52:45 +0000
parents c5f5e9569863
children
rev   line source
tomwalters@8 1 // Copyright 2006-2010, Willem van Engen, Thomas Walters
tomwalters@0 2 //
tomwalters@0 3 // AIM-C: A C++ implementation of the Auditory Image Model
tomwalters@0 4 // http://www.acousticscale.org/AIMC
tomwalters@0 5 //
tomwalters@45 6 // Licensed under the Apache License, Version 2.0 (the "License");
tomwalters@45 7 // you may not use this file except in compliance with the License.
tomwalters@45 8 // You may obtain a copy of the License at
tomwalters@0 9 //
tomwalters@45 10 // http://www.apache.org/licenses/LICENSE-2.0
tomwalters@0 11 //
tomwalters@45 12 // Unless required by applicable law or agreed to in writing, software
tomwalters@45 13 // distributed under the License is distributed on an "AS IS" BASIS,
tomwalters@45 14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
tomwalters@45 15 // See the License for the specific language governing permissions and
tomwalters@45 16 // limitations under the License.
tomwalters@0 17
tomwalters@8 18 /*!
tomwalters@8 19 * \file
tomwalters@8 20 * \brief Main parameters store
tomwalters@8 21 *
tomwalters@8 22 * \author Willem van Engen <cnbh@willem.engen.nl>
tomwalters@8 23 * \author Thomas Walters <tom@acousticscale.org>
tomwalters@8 24 * \date created 2006/09/21
tomwalters@23 25 * \version \$Id$
tomwalters@8 26 */
tomwalters@0 27
tomwalters@11 28 #ifndef AIMC_SUPPORT_PARAMETERS_H_
tomwalters@11 29 #define AIMC_SUPPORT_PARAMETERS_H_
tomwalters@0 30
tomwalters@1 31 #include <string>
tomwalters@1 32
tomwalters@0 33 #include "Support/SimpleIni.h"
tomwalters@0 34
tomwalters@0 35 namespace aimc {
tomwalters@0 36 /*!
tomwalters@0 37 * \class Parameters "Support/Parameters.h"
tomwalters@0 38 * \brief Main parameter store for parameters
tomwalters@0 39 */
tomwalters@0 40 class Parameters {
tomwalters@8 41 public:
tomwalters@0 42 Parameters();
tomwalters@0 43 ~Parameters();
tomwalters@0 44
tomwalters@0 45 /*!
tomwalters@0 46 * \brief Load parameter file
tomwalters@0 47 * \param sParamFilename Filename of parameter file to read
tomwalters@0 48 * \return true on succes, false on error
tomwalters@0 49 *
tomwalters@0 50 */
tomwalters@0 51 bool Load(const char *sParamFilename);
tomwalters@0 52
tomwalters@0 53 /*! \brief Save Parameter File
tomwalters@0 54 * \param sParamFilename Filename of parameter file to save
tomwalters@0 55 * \return true on success, false on error
tomwalters@0 56 */
tomwalters@0 57 bool Save(const char *sParamFilename);
tomwalters@0 58
tomwalters@0 59 /*!
tomwalters@0 60 * \brief Load parameter file and merge parameters with current, overwriting
tomwalters@0 61 * duplicates.
tomwalters@0 62 * \param sParamFilename Filename of parameter file to read
tomwalters@0 63 * \return true on succes, false on error
tomwalters@0 64 */
tomwalters@0 65 bool Merge(const char *sParamFilename);
tomwalters@0 66
tomwalters@0 67 /*! \brief Get a parameter, setting it with a default value if it is not
tomwalters@0 68 * already set
tomwalters@0 69 * \param sName Name of parameter
tomwalters@0 70 * \param val Value of the parameter
tomwalters@0 71 */
tomwalters@0 72 const char * DefaultString(const char* sName, const char *val);
tomwalters@0 73
tomwalters@0 74 /*! \overload
tomwalters@0 75 */
tomwalters@0 76 int DefaultInt(const char* sName, int val);
tomwalters@0 77
tomwalters@0 78 /*! \overload
tomwalters@0 79 */
tomwalters@0 80 unsigned int DefaultUInt(const char* sName, unsigned int val);
tomwalters@0 81
tomwalters@0 82 /*! \overload
tomwalters@0 83 */
tomwalters@0 84 float DefaultFloat(const char* sName, float val);
tomwalters@0 85
tomwalters@0 86 /*! \overload
tomwalters@0 87 */
tomwalters@0 88 bool DefaultBool(const char* sName, bool val);
tomwalters@0 89
tomwalters@0 90
tomwalters@0 91 /*! \brief Set a parameter
tomwalters@0 92 * \param sName Name of parameter
tomwalters@0 93 * \param val Value of parameter
tomwalters@0 94 */
tomwalters@0 95 void SetString(const char *sName, const char *val);
tomwalters@0 96
tomwalters@0 97 /*! \overload
tomwalters@0 98 */
tomwalters@0 99 void SetInt(const char *sName, int val);
tomwalters@0 100
tomwalters@0 101 /*! \overload
tomwalters@0 102 */
tomwalters@0 103 void SetUInt(const char *sName, unsigned int val);
tomwalters@0 104
tomwalters@0 105 /*! \overload
tomwalters@0 106 */
tomwalters@0 107 void SetFloat(const char *sName, float val);
tomwalters@0 108
tomwalters@0 109 /*! \overload
tomwalters@0 110 */
tomwalters@0 111 void SetBool(const char *sName, bool val);
tomwalters@0 112
tomwalters@0 113 /*! \brief Get the value of a parameter
tomwalters@0 114 * \param sName Name of parameter
tomwalters@0 115 * \return Value of parameter
tomwalters@0 116 *
tomwalters@0 117 * The specified parameter _must_ exist. So put every parameter you may
tomwalters@0 118 * possibly require into the default parameter file. This method returns
tomwalters@0 119 * the empty string when a value doesn't exist, but that is only to keep
tomwalters@0 120 * the application from crashing: don't count on it.
tomwalters@0 121 * You can use IsSet() however to check for a parameter's existence.
tomwalters@0 122 */
tomwalters@0 123 const char *GetString(const char *sName);
tomwalters@0 124
tomwalters@0 125 /*! \overload
tomwalters@0 126 */
tomwalters@0 127 int GetInt(const char *sName);
tomwalters@0 128
tomwalters@0 129 /*! \overload
tomwalters@0 130 */
tomwalters@0 131 unsigned int GetUInt(const char *sName);
tomwalters@0 132
tomwalters@0 133 /*! \overload
tomwalters@0 134 */
tomwalters@0 135 float GetFloat(const char *sName);
tomwalters@0 136
tomwalters@0 137 /*! \overload
tomwalters@0 138 */
tomwalters@0 139 bool GetBool(const char *sName);
tomwalters@0 140
tomwalters@0 141 /*! \brief Returns if the parameters exists or not
tomwalters@0 142 * \param sName Name of parameter
tomwalters@0 143 * \return true if exists, false if not
tomwalters@0 144 */
tomwalters@0 145 bool IsSet(const char *sName);
tomwalters@0 146
tomwalters@0 147 /*! \brief Sets a parameter assignment from a string
tomwalters@0 148 * \param sCmd String to parse
tomwalters@0 149 * \return true if parsing succeeded, false if an error occured.
tomwalters@0 150 *
tomwalters@0 151 * This function parses a string like "foo.bar=50" and sets the parameter
tomwalters@0 152 * accordingly. Use this function to parse parameter assignments as given
tomwalters@0 153 * by the user, for example on the command-line or in a parameter file.
tomwalters@0 154 */
tomwalters@0 155 bool Parse(const char *sCmd);
tomwalters@0 156
tomwalters@0 157 /*! \brief Delete a parameter. GetSection may not return correctly after
tomwalters@0 158 * this call, so it may not be possible to repopulate the parameter grid
tomwalters@0 159 * after deleting a parameter
tomwalters@0 160 * \param sName Parameter name
tomwalters@0 161 * \return true on success
tomwalters@0 162 */
tomwalters@0 163 bool Delete(const char *sName);
tomwalters@0 164
tomwalters@1 165 /*! \brief Append parameters to a string
tomwalters@1 166 * \param sName pointer to a string
tomwalters@1 167 * \return true on success
tomwalters@1 168 */
tomwalters@8 169 std::string WriteString();
tomwalters@1 170
tomwalters@8 171 /*! \brief Maximum length of a parameter name in characters
tomwalters@8 172 */
tomwalters@0 173 static const unsigned int MaxParamNameLength = 128;
tomwalters@0 174
tomwalters@8 175 protected:
tomwalters@0 176 /*!
tomwalters@0 177 * \brief Load parameter file
tomwalters@0 178 * \param sParamFilename Filename of parameter file to read
tomwalters@0 179 * \return true on succes, false on error
tomwalters@0 180 */
tomwalters@0 181 bool LoadFile(const char *sParamFilename);
tomwalters@0 182 /*!
tomwalters@0 183 * \brief Load parameter file and merge parameters with current,
tomwalters@0 184 * overwriting duplicates.
tomwalters@0 185 * \param sParamFilename Filename of parameter file to read
tomwalters@0 186 * \return true on succes, false on error
tomwalters@0 187 */
tomwalters@0 188 bool MergeFile(const char *sParamFilename);
tomwalters@0 189
tomwalters@0 190 /*! \brief Default ini-section to use
tomwalters@0 191 *
tomwalters@0 192 * Since SimpleIni is an ini-parser but we don't want the sections,
tomwalters@0 193 * we use the empty section. This gives use the behaviour desired.
tomwalters@0 194 */
tomwalters@0 195 static const char *m_SDefaultIniSection;
tomwalters@0 196
tomwalters@8 197 /*! \brief Parameter file object
tomwalters@8 198 */
tomwalters@0 199 CSimpleIniCase *m_pIni;
tomwalters@8 200 /*! \brief \c preset.include nesting counter to avoid loops
tomwalters@8 201 */
tomwalters@0 202 unsigned int m_iNestCount;
tomwalters@8 203 /*! \brief maximum value m_iNestCount may reach
tomwalters@8 204 */
tomwalters@0 205 static const unsigned int m_iNestCountMaximum = 16;
tomwalters@0 206 };
tomwalters@0 207 }
tomwalters@0 208
tomwalters@11 209 #endif // AIMC_SUPPORT_PARAMETERS_H_
tomwalters@0 210