1 #ifndef FEOPTS_H
2 #define FEOPTS_H
3 /****************************************
4 *  Computer Algebra System SINGULAR     *
5 ****************************************/
6 /*
7 * ABSTRACT: Declarations for working with Options
8 */
9 
10 #include "Singular/fegetopt.h"
11 
12 #include "Singular/feOptTab.h"
13 
14 extern const char SHORT_OPTS_STRING[];
15 
16 /* specifies format of options */
17 EXTERN_VAR struct fe_option feOptSpec[];
18 
19 /* provides feOptIndex enum type for fast accesses to feOptSpec */
20 #if ! defined(GENERATE_DEPEND)
21 
22 # ifdef ESINGULAR
23 #  include "Singular/feOptES.inc"
24 # elif defined(TSINGULAR)
25 #  include "Singular/feOptTS.inc"
26 # else
27 #  include "Singular/feOpt.inc"
28 # endif
29 
30 #else
31 typedef enum {FE_OPT_UNDEF}  feOptIndex;
32 #endif
33 
34 
35 void feOptHelp(const char* name);
36 void feOptDumpVersionTuple(void);
37 
38 #ifdef __cplusplus
39 
feOptValue(feOptIndex opt)40 static inline void* feOptValue(feOptIndex opt)
41 {
42   return feOptSpec[(int)opt].value;
43 }
feOptValue(feOptIndex opt,char ** val)44 inline int feOptValue(feOptIndex opt, char** val)
45 {
46   if (opt != FE_OPT_UNDEF && feOptSpec[(int)opt].type == feOptString)
47   {
48     *val = (char*) feOptSpec[(int)opt].value;
49     return TRUE;
50   }
51   *val = NULL;
52   return FALSE;
53 }
feOptValue(feOptIndex opt,int * val)54 inline int feOptValue(feOptIndex opt, int* val)
55 {
56   if (opt != FE_OPT_UNDEF && feOptSpec[(int)opt].type != feOptString)
57   {
58     *val = (int) ((long)(feOptSpec[(int)opt].value));
59     return TRUE;
60   }
61   *val = 0;
62   return FALSE;
63 }
64 
65 // maps name to otions
66 feOptIndex feGetOptIndex(const char* name);
67 feOptIndex feGetOptIndex(int optc);
68 
69 // Setting option values:
70 // Return: NULL -- everything ok
71 //         "error-string" on error
72 
73 // opt->type must be feOptInt or feOptBool
74 const char* feSetOptValue(feOptIndex opt, int optarg);
75 // for opt->type != feOptString, optarg is converted
76 // to an int
77 const char* feSetOptValue(feOptIndex opt, char* optarg);
78 
79 void fePrintOptValues();
80 
81 #endif /* __cplusplus */
82 
83 #endif /*  FEOPTS_H */
84