src/GuileHandler.h
branchv_0
changeset 7 61fc569b77e6
parent 6 4062b8436838
child 8 1e6206284c6c
--- a/src/GuileHandler.h	Sun Feb 03 01:44:07 2019 +0100
+++ b/src/GuileHandler.h	Sun Feb 03 12:35:17 2019 +0100
@@ -54,7 +54,7 @@
 	std::wstring_convert<codecvt_utf8<wchar_t>> convertor; // TODO: support also other encodings or use always UTF-8 between C++ and Guile
 
 	Configuration configuration;
-	shared_ptr<writer::RelationalWriter> relationalWriter;
+	writer::RelationalWriter* relationalWriter;
 
 	wregex relationNameRegEx;
 
@@ -146,8 +146,7 @@
 
 public:
 
-	GuileHandler(ostream& output, Configuration& configuration, const vector<string_t>& arguments) : configuration(configuration) {
-		relationalWriter.reset(writer::Factory::create(output));
+	GuileHandler(writer::RelationalWriter* relationalWriter, Configuration& configuration, const vector<string_t>& arguments) : relationalWriter(relationalWriter), configuration(configuration) {
 
 		// FIXME: remove and work directly with configuration in startRelation() and attribute()
 		// i.e. support multiple relationConfigurations
@@ -182,6 +181,7 @@
 
 			currentAttributeIndex++;
 
+			// TODO: > 0 ?:
 			if (currentAttributeIndex > 0 && currentAttributeIndex % currentReaderMetadata.size() == 0) {
 				includeCurrentRecord = scm_to_bool(evalGuileCode(guileCodeWhereCondition));
 				if (includeCurrentRecord) for (auto attribute : currentWriterMetadata) writeGuileValueToAttribute(attribute);