diff -r 3798b6bc9aea -r bc6fe00dd831 DemoCommand.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DemoCommand.h Sat Jul 28 14:16:44 2018 +0200 @@ -0,0 +1,65 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include + +#include "Command.h" + +namespace relpipe { +namespace in { +namespace cli { + +class DemoCommand : public Command { +public: + + void process(std::istream& input, std::ostream& output, const relpipe::writer::string_t& command, const std::vector& arguments) override { + using namespace relpipe::writer; + std::shared_ptr writer(Factory::create(output)); + + + // Various data types passed as strings + writer->startRelation(L"table_from_strings",{ + {L"s", TypeId::STRING}, + {L"i", TypeId::INTEGER}, + {L"b", TypeId::BOOLEAN} + }, true); + + writer->writeAttribute(L"a"); + writer->writeAttribute(L"1"); + writer->writeAttribute(L"true"); + + writer->writeAttribute(L"b"); + writer->writeAttribute(L"2"); + writer->writeAttribute(L"false"); + + + // Various data types passed as raw pointers + typeids + writer->startRelation(L"from_raw_pointers",{ + {L"s", TypeId::STRING}, + {L"i", TypeId::INTEGER}, + {L"b", TypeId::BOOLEAN} + }, true); + + string_t sValue; + integer_t iValue; + boolean_t bValue; + + for (int i = 0; i < 8; i++) { + sValue.append(L"*"); + iValue = i + 1; + bValue = iValue % 2 == 0; + writer->writeAttribute(&sValue, typeid (sValue)); + writer->writeAttribute(&iValue, typeid (iValue)); + writer->writeAttribute(&bValue, typeid (bValue)); + } + } +}; + +} +} +}