00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00082 #ifndef __NUSMV_CORE_OPT_OPTS_HANDLER_H__
00083 #define __NUSMV_CORE_OPT_OPTS_HANDLER_H__
00084
00085 #include "nusmv/core/utils/utils.h"
00086 #include "nusmv/core/node/node.h"
00087
00088
00089
00090
00091
00092
00093
00094
00095
00101 typedef enum {
00102 GENERIC_OPTION,
00103 USER_OPTION,
00104 INTEGER_OPTION,
00105 ENUM_OPTION,
00106 BOOL_OPTION
00107 } Option_Type;
00108
00114 typedef enum {
00115 ACTION_SET,
00116 ACTION_RESET,
00117 ACTION_GET
00118 } Trigger_Action;
00119
00126 typedef struct _OptsHandler_Rec OptsHandler_Rec;
00127 typedef struct _OptsHandler_Rec * OptsHandler_ptr;
00128
00135 typedef struct _Opts_EnumRec Opts_EnumRec;
00136
00142 typedef boolean (*Opts_CheckFnType)(OptsHandler_ptr, const char *, void*);
00143
00149 typedef void * (*Opts_ReturnFnType)(OptsHandler_ptr, const char *, void*);
00150 typedef boolean (*Opts_TriggerFnType)(OptsHandler_ptr, const char *,
00151 const char*, Trigger_Action, void*);
00152
00153
00154
00155
00156 struct _Opts_EnumRec {
00157 char * v;
00158 int e;
00159 };
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00176 #define OPTS_TRUE_VALUE "1"
00177
00183 #define OPTS_FALSE_VALUE "0"
00184
00190 #define OPTS_VALUE_ERROR (void *)-9999
00191
00197 #define OPTS_IS_PUBLIC true
00198
00204 #define OPTS_DEFAULT_VALUE_TRUE true
00205
00212 #define OPTS_HANDLER(self) \
00213 ((OptsHandler_ptr) self)
00214
00220 #define OPTS_HANDLER_CHECK_INSTANCE(self) \
00221 (nusmv_assert(OPTS_HANDLER(self) != OPTS_HANDLER(NULL)))
00222
00231 #define OPTS_FOREACH_OPTION(h, name, value) \
00232 for (Opts_Gen_init(h); Opts_Gen_next(h, name, value) || (Opts_Gen_deinit(h), 0); )
00233
00234
00237
00238
00239
00240
00251 OptsHandler_ptr OptsHandler_create(void);
00252
00262 void OptsHandler_destroy(OptsHandler_ptr h);
00263
00273 boolean OptsHandler_is_option_registered(OptsHandler_ptr self,
00274 const char * name);
00275
00285 boolean OptsHandler_is_option_not_registered(OptsHandler_ptr self,
00286 const char * name);
00287
00297 boolean
00298 OptsHandler_register_option(OptsHandler_ptr self,
00299 const char * name,
00300 const char * def,
00301 Opts_CheckFnType check,
00302 Opts_ReturnFnType get,
00303 boolean is_public,
00304 Option_Type type,
00305 void* arg);
00306
00316 boolean
00317 OptsHandler_register_generic_option(OptsHandler_ptr self,
00318 const char * name,
00319 const char * def,
00320 boolean is_public);
00321
00330 boolean
00331 OptsHandler_register_user_option(OptsHandler_ptr self,
00332 const char * name,
00333 const char * def);
00334
00345 boolean
00346 OptsHandler_register_bool_option( OptsHandler_ptr self,
00347 const char * name,
00348 boolean value,
00349 boolean is_public);
00350
00363 boolean
00364 OptsHandler_register_enum_option(OptsHandler_ptr self,
00365 const char * name,
00366 const char * def,
00367 Opts_EnumRec pv[], int npv,
00368 boolean is_public);
00369
00381 boolean
00382 OptsHandler_register_int_option(OptsHandler_ptr self,
00383 const char * name,
00384 int value,
00385 boolean is_public);
00386
00393 boolean
00394 OptsHandler_is_option_public(OptsHandler_ptr self,
00395 const char* name);
00396
00403 boolean
00404 OptsHandler_is_enum_option(OptsHandler_ptr self,
00405 const char* name);
00406
00413 boolean
00414 OptsHandler_is_generic_option(OptsHandler_ptr self,
00415 const char* name);
00416
00423 boolean
00424 OptsHandler_is_user_option(OptsHandler_ptr self,
00425 const char* name);
00426
00433 boolean
00434 OptsHandler_is_bool_option(OptsHandler_ptr self,
00435 const char* name);
00436
00443 boolean
00444 OptsHandler_is_int_option(OptsHandler_ptr self,
00445 const char* name);
00446
00456 boolean
00457 OptsHandler_unregister_option(OptsHandler_ptr self,
00458 const char * name);
00459
00476 boolean
00477 OptsHandler_set_option_value(OptsHandler_ptr self,
00478 const char * name,
00479 const char * value);
00480
00488 void
00489 OptsHandler_get_enum_option_values(OptsHandler_ptr self,
00490 const char * name,
00491 char *** values,
00492 int * num_values);
00493
00503 node_ptr OptsHandler_get_enum_option_values_as_node(OptsHandler_ptr self,
00504 NuSMVEnv_ptr env,
00505 const char* name,
00506 int* num_values);
00507
00520 boolean
00521 OptsHandler_set_enum_option_value(OptsHandler_ptr self,
00522 const char * name,
00523 const char * value);
00524
00535 int
00536 OptsHandler_get_enum_option_value(OptsHandler_ptr self,
00537 const char * name);
00538
00549 int
00550 OptsHandler_get_enum_option_default_value(OptsHandler_ptr self,
00551 const char * name);
00552
00565 boolean
00566 OptsHandler_set_bool_option_value(OptsHandler_ptr self,
00567 const char * name,
00568 boolean value);
00569
00583 boolean
00584 OptsHandler_set_int_option_value(OptsHandler_ptr self,
00585 const char * name,
00586 int value);
00587
00599 boolean
00600 OptsHandler_reset_option_value(OptsHandler_ptr self,
00601 const char * name);
00602
00613 void *
00614 OptsHandler_get_option_value(OptsHandler_ptr self,
00615 const char * name);
00616
00627 void *
00628 OptsHandler_get_option_default_value(OptsHandler_ptr self,
00629 const char * name);
00630
00640 char *
00641 OptsHandler_get_string_option_value(OptsHandler_ptr self,
00642 const char * name);
00643
00653 char* OptsHandler_get_string_option_default_value(OptsHandler_ptr self,
00654 const char* name);
00655
00663 char*
00664 OptsHandler_get_string_representation_option_default_value(OptsHandler_ptr self,
00665 const char * name);
00666
00674 char*
00675 OptsHandler_get_string_representation_option_value(OptsHandler_ptr self,
00676 const char * name);
00677
00688 boolean
00689 OptsHandler_get_bool_option_value(OptsHandler_ptr self,
00690 const char * name);
00691
00702 boolean
00703 OptsHandler_get_bool_option_default_value(OptsHandler_ptr self,
00704 const char * name);
00705
00716 int
00717 OptsHandler_get_int_option_default_value(OptsHandler_ptr self,
00718 const char * name);
00719
00730 int
00731 OptsHandler_get_int_option_value(OptsHandler_ptr self,
00732 const char * name);
00733
00740 boolean
00741 OptsHandler_add_option_trigger(OptsHandler_ptr self, const char* name,
00742 Opts_TriggerFnType trigger, void* arg);
00743
00750 boolean
00751 OptsHandler_remove_option_trigger(OptsHandler_ptr self, const char* name,
00752 Opts_TriggerFnType trigger);
00753
00766 void Opts_Gen_init(OptsHandler_ptr self);
00767
00781 int Opts_Gen_next(OptsHandler_ptr self, char ** name, char ** value);
00782
00795 void Opts_Gen_deinit(OptsHandler_ptr self);
00796
00806 void OptsHandler_print_all_options(OptsHandler_ptr self, FILE * fd,
00807 boolean print_private);
00808
00815 void OptsHandler_generate_test(OptsHandler_ptr self, FILE* of,
00816 boolean gen_unset);
00817
00827 void OptsHandler_copy(OptsHandler_ptr src_opts,
00828 OptsHandler_ptr dst_opts);
00829
00832 #endif