#ifndef FEOPTS_H #define FEOPTS_H /**************************************** * Computer Algebra System SINGULAR * ****************************************/ /* * ABSTRACT: Declarations for working with Options */ #include "Singular/fegetopt.h" #include "Singular/feOptTab.h" extern const char SHORT_OPTS_STRING[]; /* specifies format of options */ extern struct fe_option feOptSpec[]; /* provides feOptIndex enum type for fast accesses to feOptSpec */ #if ! defined(GENERATE_DEPEND) # ifdef ESINGULAR # include "Singular/feOptES.inc" # elif defined(TSINGULAR) # include "Singular/feOptTS.inc" # else # include "Singular/feOpt.inc" # endif #else typedef enum {FE_OPT_UNDEF} feOptIndex; #endif void feOptHelp(const char* name); void feOptDumpVersionTuple(void); #ifdef __cplusplus static inline void* feOptValue(feOptIndex opt) { return feOptSpec[(int)opt].value; } inline int feOptValue(feOptIndex opt, char** val) { if (opt != FE_OPT_UNDEF && feOptSpec[(int)opt].type == feOptString) { *val = (char*) feOptSpec[(int)opt].value; return TRUE; } *val = NULL; return FALSE; } inline int feOptValue(feOptIndex opt, int* val) { if (opt != FE_OPT_UNDEF && feOptSpec[(int)opt].type != feOptString) { *val = (int) ((long)(feOptSpec[(int)opt].value)); return TRUE; } *val = 0; return FALSE; } // maps name to otions feOptIndex feGetOptIndex(const char* name); feOptIndex feGetOptIndex(int optc); // Setting option values: // Return: NULL -- everything ok // "error-string" on error // opt->type must be feOptInt or feOptBool const char* feSetOptValue(feOptIndex opt, int optarg); // for opt->type != feOptString, optarg is converted // to an int const char* feSetOptValue(feOptIndex opt, char* optarg); void fePrintOptValues(); #endif /* __cplusplus */ #endif /* FEOPTS_H */