Go to the documentation of this file.
42 struct ParamsVectors {
66 static bool SetParam(
const char* name,
const char* value,
77 for (i = 0; i < global_vec.
size(); ++i) {
78 if (strcmp(global_vec[i]->name_str(), name) == 0)
return global_vec[i];
80 for (i = 0; i < member_vec.
size(); ++i) {
81 if (strcmp(member_vec[i]->name_str(), name) == 0)
return member_vec[i];
88 for (
int i = 0; i < vec->
size(); ++i) {
89 if ((*vec)[i] == param_ptr) {
98 const ParamsVectors* member_params,
102 static void PrintParams(FILE* fp,
const ParamsVectors* member_params);
127 Param(
const char* name,
const char* comment,
bool init)
129 debug_ = (strstr(name,
"debug") !=
nullptr) || (strstr(name,
"display"));
140 IntParam(int32_t value,
const char* name,
const char* comment,
bool init,
142 :
Param(name, comment, init) {
145 params_vec_ = &(vec->int_params);
146 vec->int_params.push_back(
this);
148 ~IntParam() { ParamUtils::RemoveParam<IntParam>(
this, params_vec_); }
149 operator int32_t()
const {
return value_; }
153 void ResetFrom(
const ParamsVectors* vec) {
154 for (
int i = 0; i < vec->int_params.size(); ++i) {
155 if (strcmp(vec->int_params[i]->name_str(),
name_) == 0) {
158 value_ = *vec->int_params[i];
173 BoolParam(
bool value,
const char* name,
const char* comment,
bool init,
175 :
Param(name, comment, init) {
178 params_vec_ = &(vec->bool_params);
179 vec->bool_params.push_back(
this);
181 ~BoolParam() { ParamUtils::RemoveParam<BoolParam>(
this, params_vec_); }
182 operator bool()
const {
return value_; }
183 void operator=(
bool value) { value_ = value; }
184 void set_value(
bool value) { value_ = value; }
186 void ResetFrom(
const ParamsVectors* vec) {
187 for (
int i = 0; i < vec->bool_params.size(); ++i) {
188 if (strcmp(vec->bool_params[i]->name_str(),
name_) == 0) {
191 value_ = *vec->bool_params[i];
206 StringParam(
const char* value,
const char* name,
const char* comment,
208 :
Param(name, comment, init) {
211 params_vec_ = &(vec->string_params);
212 vec->string_params.push_back(
this);
214 ~StringParam() { ParamUtils::RemoveParam<StringParam>(
this, params_vec_); }
215 operator STRING&() {
return value_; }
217 const char*
c_str()
const {
return value_.
string(); }
224 for (
int i = 0; i < vec->string_params.size(); ++i) {
225 if (strcmp(vec->string_params[i]->name_str(),
name_) == 0) {
228 value_ = *vec->string_params[i];
243 DoubleParam(
double value,
const char* name,
const char* comment,
bool init,
245 :
Param(name, comment, init) {
248 params_vec_ = &(vec->double_params);
249 vec->double_params.push_back(
this);
251 ~DoubleParam() { ParamUtils::RemoveParam<DoubleParam>(
this, params_vec_); }
252 operator double()
const {
return value_; }
253 void operator=(
double value) { value_ = value; }
254 void set_value(
double value) { value_ = value; }
256 void ResetFrom(
const ParamsVectors* vec) {
257 for (
int i = 0; i < vec->double_params.size(); ++i) {
258 if (strcmp(vec->double_params[i]->name_str(),
name_) == 0) {
261 value_ = *vec->double_params[i];
295 #define INT_VAR_H(name, val, comment) tesseract::IntParam name
297 #define BOOL_VAR_H(name, val, comment) tesseract::BoolParam name
299 #define STRING_VAR_H(name, val, comment) tesseract::StringParam name
301 #define double_VAR_H(name, val, comment) tesseract::DoubleParam name
303 #define INT_VAR(name, val, comment) \
304 tesseract::IntParam name(val, #name, comment, false, GlobalParams())
306 #define BOOL_VAR(name, val, comment) \
307 tesseract::BoolParam name(val, #name, comment, false, GlobalParams())
309 #define STRING_VAR(name, val, comment) \
310 tesseract::StringParam name(val, #name, comment, false, GlobalParams())
312 #define double_VAR(name, val, comment) \
313 tesseract::DoubleParam name(val, #name, comment, false, GlobalParams())
315 #define INT_MEMBER(name, val, comment, vec) \
316 name(val, #name, comment, false, vec)
318 #define BOOL_MEMBER(name, val, comment, vec) \
319 name(val, #name, comment, false, vec)
321 #define STRING_MEMBER(name, val, comment, vec) \
322 name(val, #name, comment, false, vec)
324 #define double_MEMBER(name, val, comment, vec) \
325 name(val, #name, comment, false, vec)
327 #define INT_INIT_MEMBER(name, val, comment, vec) \
328 name(val, #name, comment, true, vec)
330 #define BOOL_INIT_MEMBER(name, val, comment, vec) \
331 name(val, #name, comment, true, vec)
333 #define STRING_INIT_MEMBER(name, val, comment, vec) \
334 name(val, #name, comment, true, vec)
336 #define double_INIT_MEMBER(name, val, comment, vec) \
337 name(val, #name, comment, true, vec)
static bool GetParamAsString(const char *name, const ParamsVectors *member_params, STRING *value)
const char * string() const
void operator=(const STRING &value)
@ SET_PARAM_CONSTRAINT_NON_INIT_ONLY
const char * string() const
GenericVector< IntParam * > int_params
static bool ReadParamsFromFp(SetParamConstraint constraint, TFile *fp, ParamsVectors *member_params)
static void ResetToDefaults(ParamsVectors *member_params)
void set_value(double value)
@ SET_PARAM_CONSTRAINT_NON_DEBUG_ONLY
static void RemoveParam(T *param_ptr, GenericVector< T * > *vec)
void set_value(const STRING &value)
void ResetFrom(const ParamsVectors *vec)
const char * name_str() const
@ SET_PARAM_CONSTRAINT_DEBUG_ONLY
void operator=(bool value)
Param(const char *name, const char *comment, bool init)
GenericVector< BoolParam * > bool_params
const char * info_str() const
void operator=(double value)
void ResetFrom(const ParamsVectors *vec)
void ResetFrom(const ParamsVectors *vec)
StringParam(const char *value, const char *name, const char *comment, bool init, ParamsVectors *vec)
void operator=(int32_t value)
const char * c_str() const
static bool ReadParamsFile(const char *file, SetParamConstraint constraint, ParamsVectors *member_params)
static void PrintParams(FILE *fp, const ParamsVectors *member_params)
tesseract::ParamsVectors * GlobalParams()
IntParam(int32_t value, const char *name, const char *comment, bool init, ParamsVectors *vec)
void ResetFrom(const ParamsVectors *vec)
GenericVector< StringParam * > string_params
static T * FindParam(const char *name, const GenericVector< T * > &global_vec, const GenericVector< T * > &member_vec)
void set_value(int32_t value)
@ SET_PARAM_CONSTRAINT_NONE
DoubleParam(double value, const char *name, const char *comment, bool init, ParamsVectors *vec)
bool operator==(const STRING &other)
GenericVector< DoubleParam * > double_params
static bool SetParam(const char *name, const char *value, SetParamConstraint constraint, ParamsVectors *member_params)
bool constraint_ok(SetParamConstraint constraint) const
void set_value(bool value)
BoolParam(bool value, const char *name, const char *comment, bool init, ParamsVectors *vec)