#include "util/configuration.h"
#include "util/exception.h"
#include "util/language.h"
+#include "util/tls.h"
${include_all_option_headers}
-#line 40 "${template}"
+#line 41 "${template}"
#include "util/output.h"
#include "options/options_holder.h"
${option_handler_includes}
-#line 49 "${template}"
+#line 50 "${template}"
using namespace CVC4;
using namespace CVC4::options;
${all_custom_handlers}
-#line 186 "${template}"
+#line 187 "${template}"
#ifdef CVC4_DEBUG
# define USE_EARLY_TYPE_CHECKING_BY_DEFAULT true
{
}
-#line 216 "${template}"
+#line 217 "${template}"
static const std::string mostCommonOptionsDescription = "\
Most commonly-used CVC4 options:${common_documentation}";
-#line 221 "${template}"
+#line 222 "${template}"
static const std::string optionsDescription = mostCommonOptionsDescription + "\n\
\n\
Additional CVC4 options:${remaining_documentation}";
-#line 227 "${template}"
+#line 228 "${template}"
static const std::string languageDescription = "\
Languages currently supported as arguments to the -L / --lang option:\n\
{ NULL, no_argument, NULL, '\0' }
};/* cmdlineOptions */
-#line 291 "${template}"
+#line 292 "${template}"
static void preemptGetopt(int& argc, char**& argv, const char* opt) {
const size_t maxoptlen = 128;
/** Set a given Options* as "current" just for a particular scope. */
class OptionsGuard {
- Options** d_field;
+ CVC4_THREADLOCAL_TYPE(Options*)* d_field;
Options* d_old;
public:
- OptionsGuard(Options** field, Options* opts) :
+ OptionsGuard(CVC4_THREADLOCAL_TYPE(Options*)* field, Options* opts) :
d_field(field),
d_old(*field) {
*field = opts;
switch(c) {
${all_modules_option_handlers}
-#line 418 "${template}"
+#line 419 "${template}"
case ':':
// This can be a long or short option, and the way to get at the
public:
RationalEnumerator(TypeNode type) throw(AssertionException) :
- TypeEnumeratorBase(type),
+ TypeEnumeratorBase<RationalEnumerator>(type),
d_rat(0) {
Assert(type.getKind() == kind::TYPE_CONSTANT &&
type.getConst<TypeConstant>() == REAL_TYPE);
public:
IntegerEnumerator(TypeNode type) throw(AssertionException) :
- TypeEnumeratorBase(type),
+ TypeEnumeratorBase<IntegerEnumerator>(type),
d_int(0) {
Assert(type.getKind() == kind::TYPE_CONSTANT &&
type.getConst<TypeConstant>() == INTEGER_TYPE);
public:
ArrayEnumerator(TypeNode type) throw(AssertionException) :
- TypeEnumeratorBase(type),
+ TypeEnumeratorBase<ArrayEnumerator>(type),
d_index(TypeEnumerator(type.getArrayIndexType())),
d_constituent(TypeEnumerator(type.getArrayConstituentType())) {
}
public:
BooleanEnumerator(TypeNode type) :
- TypeEnumeratorBase(type),
+ TypeEnumeratorBase<BooleanEnumerator>(type),
d_value(FALSE) {
Assert(type.getKind() == kind::TYPE_CONSTANT &&
type.getConst<TypeConstant>() == BOOLEAN_TYPE);
public:
UninterpretedSortEnumerator(TypeNode type) throw(AssertionException) :
- TypeEnumeratorBase(type),
+ TypeEnumeratorBase<UninterpretedSortEnumerator>(type),
d_count(0) {
Assert(type.getKind() == kind::SORT_TYPE);
}
public:
BitVectorEnumerator(TypeNode type) throw(AssertionException) :
- TypeEnumeratorBase(type),
+ TypeEnumeratorBase<BitVectorEnumerator>(type),
d_size(type.getBitVectorSize()),
d_bits(0) {
}
public:
DatatypesEnumerator(TypeNode type) throw() :
- TypeEnumeratorBase(type),
+ TypeEnumeratorBase<DatatypesEnumerator>(type),
d_datatype(DatatypeType(type.toType()).getDatatype()),
d_ctor(0),
d_zeroCtor(0),
#if @CVC4_TLS_SUPPORTED@
# define CVC4_THREADLOCAL(__type...) @CVC4_TLS@ __type
# define CVC4_THREADLOCAL_PUBLIC(__type...) @CVC4_TLS@ CVC4_PUBLIC __type
+# define CVC4_THREADLOCAL_TYPE(__type...) __type
#else
# include <pthread.h>
# define CVC4_THREADLOCAL(__type...) ::CVC4::ThreadLocal< __type >
# define CVC4_THREADLOCAL_PUBLIC(__type...) CVC4_PUBLIC ::CVC4::ThreadLocal< __type >
+# define CVC4_THREADLOCAL_TYPE(__type...) ::CVC4::ThreadLocal< __type >
namespace CVC4 {