diff options
author | Morgan Deters <mdeters@gmail.com> | 2012-11-27 02:13:38 +0000 |
---|---|---|
committer | Morgan Deters <mdeters@gmail.com> | 2012-11-27 02:13:38 +0000 |
commit | b122cec27ca27d0b48e786191448e0053be78ed0 (patch) | |
tree | 615981d8623e830894f02fc528b173ac7461f934 /src/util/tuple.h | |
parent | 3da16da97df7cd2efd4b113db3bfef8b9c138ebe (diff) |
Tuples and records merge. Resolves bug 270.
Also some fixes to parametric datatypes I found, and fixes for a handful of bugs, including some observed with --check-models --incremental on together.
(this commit was certified error- and warning-free by the test-and-commit script.)
Diffstat (limited to 'src/util/tuple.h')
-rw-r--r-- | src/util/tuple.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/util/tuple.h b/src/util/tuple.h new file mode 100644 index 000000000..6c1e981a4 --- /dev/null +++ b/src/util/tuple.h @@ -0,0 +1,74 @@ +/********************* */ +/*! \file tuple.h + ** \verbatim + ** Original author: mdeters + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of the CVC4 prototype. + ** Copyright (c) 2009-2012 The Analysis of Computer Systems Group (ACSys) + ** Courant Institute of Mathematical Sciences + ** New York University + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief Tuple operators + ** + ** Tuple operators. + **/ + +#include "cvc4_public.h" + +#ifndef __CVC4__TUPLE_H +#define __CVC4__TUPLE_H + +#include <iostream> +#include <string> +#include <vector> +#include <utility> + +namespace CVC4 { + +class CVC4_PUBLIC TupleSelect { + unsigned d_index; +public: + TupleSelect(unsigned index) throw() : d_index(index) { } + unsigned getIndex() const throw() { return d_index; } + bool operator==(const TupleSelect& t) const throw() { return d_index == t.d_index; } + bool operator!=(const TupleSelect& t) const throw() { return d_index != t.d_index; } +};/* class TupleSelect */ + +class CVC4_PUBLIC TupleUpdate { + unsigned d_index; +public: + TupleUpdate(unsigned index) throw() : d_index(index) { } + unsigned getIndex() const throw() { return d_index; } + bool operator==(const TupleUpdate& t) const throw() { return d_index == t.d_index; } + bool operator!=(const TupleUpdate& t) const throw() { return d_index != t.d_index; } +};/* class TupleUpdate */ + +struct CVC4_PUBLIC TupleSelectHashFunction { + inline size_t operator()(const TupleSelect& t) const { + return t.getIndex(); + } +};/* struct TupleSelectHashFunction */ + +struct CVC4_PUBLIC TupleUpdateHashFunction { + inline size_t operator()(const TupleUpdate& t) const { + return t.getIndex(); + } +};/* struct TupleUpdateHashFunction */ + +std::ostream& operator<<(std::ostream& out, const TupleSelect& t) CVC4_PUBLIC; +std::ostream& operator<<(std::ostream& out, const TupleUpdate& t) CVC4_PUBLIC; + +inline std::ostream& operator<<(std::ostream& out, const TupleSelect& t) { + return out << "[" << t.getIndex() << "]"; +} + +inline std::ostream& operator<<(std::ostream& out, const TupleUpdate& t) { + return out << "[" << t.getIndex() << "]"; +} + +}/* CVC4 namespace */ + +#endif /* __CVC4__TUPLE_H */ |