Commit 11cd3d82 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

write query results to output file :)

parent f21c2b4e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -980,7 +980,7 @@ TEST_CASE(QueryTest, TestQueryService, [] () {
  QueryService query_service;
  auto input = fnordmetric::util::StringInputStream::fromString(query);
  auto output = fnordmetric::util::FileOutputStream::openFile(
      "build/tests/tmp/QueryTest_TestQueryService_out.svg");
      "build/tests/tmp/QueryTest_TestQueryService_out.svg.html");

  query_service.executeQuery(
      input.get(),
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ void QueryService::executeQuery(
  switch (output_format) {

    case FORMAT_SVG: {
      ui::SVGTarget target;
      ui::SVGTarget target(output_stream);
      renderCharts(&query, &target);
      break;
    }
+2 −1
Original line number Diff line number Diff line
@@ -370,7 +370,8 @@ void Canvas::renderLeftAxis(


std::string Canvas::renderSVG() const {
  SVGTarget target;
  auto output = util::OutputStream::getStdout();
  SVGTarget target(output.get());
  render(&target);
  return "fnord";
}
+14 −4
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
#include <string>
#include <fnordmetric/ui/rendertarget.h>
#include <fnordmetric/ui/styles/style_default.h>
#include <fnordmetric/util/outputstream.h>

namespace fnordmetric {
namespace ui {
@@ -18,12 +19,21 @@ namespace ui {
class SVGTarget : public RenderTarget {
public:

  SVGTarget() : indent_(0) {}
  /**
   * Create a new SVG target.
   *
   * @param output_stream the output stream to write to. does not transfer
   *                      ownership!
   */
  SVGTarget(
      util::OutputStream* output_stream) :
      output_(output_stream),
      indent_(0) {}

#define append(...) { printf(__VA_ARGS__); }
#define append(...) { output_->printf(__VA_ARGS__); }

#define appendLine(...) { \
    for(int __i = 0; __i < indent_ * 2; ++__i) printf(" "); \
    for(int __i = 0; __i < indent_ * 2; ++__i) append(" "); \
    append(__VA_ARGS__); }

  void beginChart(
@@ -176,7 +186,7 @@ public:
  }

protected:

  util::OutputStream* output_;
  int indent_;
};

+14 −2
Original line number Diff line number Diff line
@@ -46,8 +46,6 @@ std::unique_ptr<FileOutputStream> FileOutputStream::openFile(
  return std::unique_ptr<FileOutputStream>(new FileOutputStream(fd, true));
}



FileOutputStream::FileOutputStream(
    int fd,
    bool close_on_destroy /* = false */) :
@@ -64,5 +62,19 @@ size_t FileOutputStream::write(char* data, size_t size) {
  return 0;
}

size_t FileOutputStream::printf(const char* format, ...) {
  va_list args;
  va_start(args, format);
  int pos = vdprintf(fd_, format, args);
  va_end(args);

  if (pos < 0) {
    RAISE_ERRNO(RuntimeException, "vdprintf() failed");
  }

  return pos;
}


}
}
Loading