+++ /dev/null
-// ANNA - Anna is Not Nothingness Anymore //
-// //
-// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
-// //
-// See project site at http://redmine.teslayout.com/projects/anna-suite //
-// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
-
-
-#include <anna/core/tracing/TraceMethod.hpp>
-
-#include <anna/xml/Node.hpp>
-#include <anna/xml/Attribute.hpp>
-
-#include <anna/dbms/Statement.hpp>
-#include <anna/dbms/InputBind.hpp>
-#include <anna/dbms/OutputBind.hpp>
-#include <anna/dbms/Database.hpp>
-
-using namespace std;
-using namespace anna;
-using namespace anna::dbms;
-
-Statement::~Statement() {
- InputBind* ibind;
- OutputBind* obind;
-
- for(input_iterator ii = input_begin(), maxii = input_end(); ii != maxii; ii ++) {
- ibind = inputBind(ii);
- ibind->release(this);
- a_database.deallocate(ibind);
- }
-
- for(output_iterator ii = output_begin(), maxii = output_end(); ii != maxii; ii ++) {
- obind = outputBind(ii);
- obind->release(this);
- a_database.deallocate(obind);
- }
-}
-
-string Statement::asString() const
-throw() {
- string result("dbms::Statement { Nombre: ");
- result += a_name;
- result += functions::asText(" | Var.Entrada: ", input_size());
- result += functions::asText(" | Var.Salida: ", output_size());
- result += " | ";
- result += a_measureTiming.asString();
- result += " | Expresion: ";
- result += a_expression;
- return result += " }";
-}
-
-xml::Node* dbms::Statement::asXML(xml::Node* parent) const
-throw() {
- xml::Node* result = parent->createChild("dbms.Statement");
- result->createAttribute("Name", a_name);
- xml::Node* node = result->createChild("Timing");
- node->createAttribute("N", a_measureTiming.size());
- node->createAttribute("Accumulator", a_measureTiming.getAccumulator());
- node->createAttribute("Timing", a_measureTiming.asString());
- result->createChild("Expression")->createText(a_expression);
- return result;
-}
-
-void Statement::bindInput(const char* name, Data& data)
-throw() {
- a_inputBinds.push_back(a_database.allocateInputBind(name, data));
-}
-
-const OutputBind* Statement::bindOutput(const char* name, Data& i)
-throw() {
- OutputBind* result = a_database.allocateOutputBind(name, i);
- a_outputBinds.push_back(result);
- return result;
-}
-
-Data& Statement::input(input_iterator& ii)
-throw() {
- return (*ii)->getData();
-}
-
-Data& Statement::output(output_iterator& ii)
-throw() {
- return (*ii)->getData();
-}
-