template <bool ref_count>
class NodeTemplate;
+// For some reason these are instantiated with different visibility in different modules??
+// Fix by making their instantiations explicit, here.
+template <> CVC4ostream& CVC4ostream::operator<<(NodeTemplate<false> const& t) CVC4_PUBLIC;
+template <> CVC4ostream& CVC4ostream::operator<<(NodeTemplate<true> const& t) CVC4_PUBLIC;
+
/**
* Exception thrown during the type-checking phase, it can be
* thrown by node.getType().
operator std::ostream&() { return isConnected() ? *d_os : null_os; }
template <class T>
- CVC4ostream& operator<<(T const& t) {
- if(d_os != NULL) {
- if(d_firstColumn) {
- d_firstColumn = false;
- long indent = d_os->iword(s_indentIosIndex);
- for(long i = 0; i < indent; ++ i) {
- d_os = &(*d_os << s_tab);
- }
- }
- d_os = &(*d_os << t);
- }
- return *this;
- }
+ CVC4ostream& operator<<(T const& t) CVC4_PUBLIC;
// support manipulators, endl, etc..
CVC4ostream& operator<<(std::ostream& (*pf)(std::ostream&)) {
return stream;
}
+template <class T>
+CVC4ostream& CVC4ostream::operator<<(T const& t) {
+ if(d_os != NULL) {
+ if(d_firstColumn) {
+ d_firstColumn = false;
+ long indent = d_os->iword(s_indentIosIndex);
+ for(long i = 0; i < indent; ++i) {
+ d_os = &(*d_os << s_tab);
+ }
+ }
+ d_os = &(*d_os << t);
+ }
+ return *this;
+}
+
/** The debug output class */
class CVC4_PUBLIC DebugC {
std::set<std::string> d_tags;