aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Requirements
diff options
context:
space:
mode:
authorIan Hinder <ian.hinder@aei.mpg.de>2013-04-03 21:39:33 +0200
committerIan Hinder <ian.hinder@aei.mpg.de>2013-04-03 21:39:33 +0200
commit27715e024145ff1a792eb1e190e1bceb04fccd57 (patch)
tree617e5079ae9e87ef9c1972109a420c9262bfd9d9 /Carpet/Requirements
parent091608eace4f7ba1cf6840752e4266d1fcbe47f4 (diff)
Requirements: Move clauses class and some utility functions to separate files
Diffstat (limited to 'Carpet/Requirements')
-rw-r--r--Carpet/Requirements/src/Requirements.cc66
-rw-r--r--Carpet/Requirements/src/clause.cc7
-rw-r--r--Carpet/Requirements/src/clause.hh10
-rw-r--r--Carpet/Requirements/src/clauses.cc38
-rw-r--r--Carpet/Requirements/src/clauses.hh32
-rw-r--r--Carpet/Requirements/src/make.code.defn2
-rw-r--r--Carpet/Requirements/src/util.cc3
-rw-r--r--Carpet/Requirements/src/util.hh35
8 files changed, 123 insertions, 70 deletions
diff --git a/Carpet/Requirements/src/Requirements.cc b/Carpet/Requirements/src/Requirements.cc
index a76a1b8a2..11b92cedd 100644
--- a/Carpet/Requirements/src/Requirements.cc
+++ b/Carpet/Requirements/src/Requirements.cc
@@ -20,6 +20,8 @@
#include <string>
#include <vector>
#include <clause.hh>
+#include <clauses.hh>
+#include <util.hh>
using namespace std;
@@ -33,69 +35,6 @@ namespace Requirements {
// 2. Things can be provided only once, not multiple times.
// Except when they are also required.
-
- // taken from defs.cc and defs.hh
- // Vector output
- template<class T>
- ostream& output (ostream& os, const vector<T>& v) {
- os << "[";
- // Do not number the elements, as this would lead to a format that
- // cannot be read back in.
- // int cnt=0;
- for (typename vector<T>::const_iterator ti=v.begin(); ti!=v.end(); ++ti) {
- if (ti!=v.begin()) os << ",";
- // os << cnt++ << ":";
- os << *ti;
- }
- os << "]";
- return os;
- }
-
- template<class T>
- inline ostream& operator<< (ostream& os, const vector<T>& v) {
- return Requirements::output(os,v);
- }
-
- struct clauses_t {
- vector<clause_t> reads, writes;
- clauses_t() {}
- void setup(cFunctionData const* function_data);
-
- // Input/Output helpers
- void input (istream& is);
- void output (ostream& os) const;
- };
-
- void clauses_t::setup(cFunctionData const* const function_data)
- {
- clause_t prototype;
- prototype.interpret_options(function_data);
- reads.reserve(function_data->n_ReadsClauses);
- for (int n=0; n<function_data->n_ReadsClauses; ++n) {
- clause_t clause(prototype);
- clause.parse_clause(function_data->ReadsClauses[n]);
- reads.push_back(clause);
- }
- writes.reserve(function_data->n_WritesClauses);
- for (int n=0; n<function_data->n_WritesClauses; ++n) {
- clause_t clause(prototype);
- clause.parse_clause(function_data->WritesClauses[n]);
- writes.push_back(clause);
- }
- }
-
- inline ostream& operator<< (ostream& os, const clauses_t& a) {
- a.output(os);
- return os;
- }
-
- void clauses_t::output(ostream& os) const
- {
- os << "reads = " << reads << ", writes = " << writes;
- }
-
-
-
class all_clauses_t {
// TODO: Represent I/O as well?
typedef std::map<cFunctionData const*, clauses_t const*> clauses_map_t;
@@ -1197,7 +1136,6 @@ namespace Requirements {
os << old_vars << std::endl;
}
- template ostream& output (ostream& os, const vector<clause_t>& v);
template ostream& output (ostream& os, const vector<all_state_t::timelevels_t>& v);
template ostream& output (ostream& os, const vector<all_state_t::maps_t>& v);
template ostream& output (ostream& os, const vector<all_state_t::reflevels_t>& v);
diff --git a/Carpet/Requirements/src/clause.cc b/Carpet/Requirements/src/clause.cc
index 2c160bbec..b25d102e0 100644
--- a/Carpet/Requirements/src/clause.cc
+++ b/Carpet/Requirements/src/clause.cc
@@ -12,6 +12,8 @@ using namespace std;
namespace Requirements {
+//template ostream& output (ostream& os, const vector<clause_t>& v);
+
void clause_t::interpret_options(cFunctionData const* const function_data)
{
if (function_data->meta or
@@ -131,11 +133,6 @@ namespace Requirements {
return false;
}
- inline ostream& operator<< (ostream& os, const clause_t& a) {
- a.output(os);
- return os;
- }
-
void clause_t::output(ostream& os) const
{
char* const groupname = CCTK_GroupNameFromVarI(vars.at(0));
diff --git a/Carpet/Requirements/src/clause.hh b/Carpet/Requirements/src/clause.hh
index 66e06df74..23e9b0470 100644
--- a/Carpet/Requirements/src/clause.hh
+++ b/Carpet/Requirements/src/clause.hh
@@ -1,3 +1,5 @@
+#ifndef CLAUSE_HH
+#define CLAUSE_HH
#include <cctk_Schedule.h>
#include <vector>
@@ -34,4 +36,12 @@ namespace Requirements {
void input (istream& is);
void output (ostream& os) const;
};
+
+ inline ostream& operator<< (ostream& os, const clause_t& a) {
+ a.output(os);
+ return os;
+ }
+
};
+
+#endif
diff --git a/Carpet/Requirements/src/clauses.cc b/Carpet/Requirements/src/clauses.cc
new file mode 100644
index 000000000..ad0a3aea9
--- /dev/null
+++ b/Carpet/Requirements/src/clauses.cc
@@ -0,0 +1,38 @@
+
+#include <iostream>
+#include <vector>
+
+#include <cctk.h>
+#include <cctki_Schedule.h>
+#include <clauses.hh>
+#include <clause.hh>
+#include <util.hh>
+
+using namespace std;
+
+namespace Requirements {
+
+ void clauses_t::setup(cFunctionData const* const function_data)
+ {
+ clause_t prototype;
+ prototype.interpret_options(function_data);
+ reads.reserve(function_data->n_ReadsClauses);
+ for (int n=0; n<function_data->n_ReadsClauses; ++n) {
+ clause_t clause(prototype);
+ clause.parse_clause(function_data->ReadsClauses[n]);
+ reads.push_back(clause);
+ }
+ writes.reserve(function_data->n_WritesClauses);
+ for (int n=0; n<function_data->n_WritesClauses; ++n) {
+ clause_t clause(prototype);
+ clause.parse_clause(function_data->WritesClauses[n]);
+ writes.push_back(clause);
+ }
+ }
+
+ void clauses_t::output(ostream& os) const
+ {
+ os << "reads = " << reads << ", writes = " << writes;
+ }
+
+}
diff --git a/Carpet/Requirements/src/clauses.hh b/Carpet/Requirements/src/clauses.hh
new file mode 100644
index 000000000..368f45772
--- /dev/null
+++ b/Carpet/Requirements/src/clauses.hh
@@ -0,0 +1,32 @@
+#ifndef CLAUSES_HH
+#define CLAUSES_HH
+
+#include <iostream>
+
+#include <cctk.h>
+#include <cctki_Schedule.h>
+
+#include <clause.hh>
+
+using namespace std;
+
+namespace Requirements {
+
+ struct clauses_t {
+ vector<clause_t> reads, writes;
+ clauses_t() {}
+ void setup(cFunctionData const* function_data);
+
+ // Input/Output helpers
+ void input (istream& is);
+ void output (ostream& os) const;
+ };
+
+ inline ostream& operator<< (ostream& os, const clauses_t& a) {
+ a.output(os);
+ return os;
+ }
+
+};
+
+#endif
diff --git a/Carpet/Requirements/src/make.code.defn b/Carpet/Requirements/src/make.code.defn
index 4852f42f9..1fd8750bc 100644
--- a/Carpet/Requirements/src/make.code.defn
+++ b/Carpet/Requirements/src/make.code.defn
@@ -1,7 +1,7 @@
# Main make.code.defn file for thorn Requirements -*-Makefile-*-
# Source files in this directory
-SRCS = Requirements.cc clause.cc
+SRCS = Requirements.cc clause.cc clauses.cc util.cc
# Subdirectories containing source files
SUBDIRS =
diff --git a/Carpet/Requirements/src/util.cc b/Carpet/Requirements/src/util.cc
new file mode 100644
index 000000000..20df87d89
--- /dev/null
+++ b/Carpet/Requirements/src/util.cc
@@ -0,0 +1,3 @@
+
+#include <util.hh>
+
diff --git a/Carpet/Requirements/src/util.hh b/Carpet/Requirements/src/util.hh
new file mode 100644
index 000000000..73b5faa1e
--- /dev/null
+++ b/Carpet/Requirements/src/util.hh
@@ -0,0 +1,35 @@
+#ifndef UTIL_HH
+#define UTIL_HH
+
+#include <iostream>
+#include <vector>
+
+namespace Requirements {
+
+using namespace std;
+
+ // taken from defs.cc and defs.hh
+ // Vector output
+ template<class T>
+ inline ostream& output (ostream& os, const vector<T>& v) {
+ os << "[";
+ // Do not number the elements, as this would lead to a format that
+ // cannot be read back in.
+ // int cnt=0;
+ for (typename vector<T>::const_iterator ti=v.begin(); ti!=v.end(); ++ti) {
+ if (ti!=v.begin()) os << ",";
+ // os << cnt++ << ":";
+ os << *ti;
+ }
+ os << "]";
+ return os;
+ }
+
+ template<class T>
+ inline ostream& operator<< (ostream& os, const vector<T>& v) {
+ return Requirements::output(os,v);
+ }
+
+};
+
+#endif