In encode methods, return a ptr_lib::shared_ptr<vector<unsigned char> >
diff --git a/ndn-cpp/encoding/BinaryXMLEncoder.hpp b/ndn-cpp/encoding/BinaryXMLEncoder.hpp
index 2ae5196..f31de46 100644
--- a/ndn-cpp/encoding/BinaryXMLEncoder.hpp
+++ b/ndn-cpp/encoding/BinaryXMLEncoder.hpp
@@ -7,6 +7,7 @@
#define NDN_BINARYXMLENCODER_HPP
#include <vector>
+#include "../common.hpp"
#include "../c/util/ndn_realloc.h"
#include "../c/encoding/BinaryXMLEncoder.h"
@@ -27,12 +28,11 @@
}
/**
- * Copy the encoded bytes to the end of the buffer.
- * @param buffer a vector to receive the copy
+ * Return the output as a shared_ptr.
*/
- void appendTo(std::vector<unsigned char> &buffer)
+ ptr_lib::shared_ptr<std::vector<unsigned char> > getOutput()
{
- buffer.insert(buffer.end(), output.array, output.array + offset);
+ return ptr_lib::shared_ptr<std::vector<unsigned char> >(new std::vector<unsigned char>(output.array, output.array + offset));
}
};
diff --git a/ndn-cpp/encoding/BinaryXMLWireFormat.cpp b/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
index 0c1f4d2..2faa4c3 100644
--- a/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
+++ b/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
@@ -18,7 +18,7 @@
BinaryXMLWireFormat BinaryXMLWireFormat::instance_;
-void BinaryXMLWireFormat::encodeInterest(const Interest &interest, vector<unsigned char> &output)
+ptr_lib::shared_ptr<vector<unsigned char> > BinaryXMLWireFormat::encodeInterest(const Interest &interest)
{
struct ndn_NameComponent nameComponents[100];
struct ndn_ExcludeEntry excludeEntries[100];
@@ -31,7 +31,7 @@
BinaryXMLEncoder encoder;
ndn_encodeBinaryXMLInterest(&interestStruct, &encoder);
- encoder.appendTo(output);
+ return encoder.getOutput();
}
void BinaryXMLWireFormat::decodeInterest(Interest &interest, const unsigned char *input, unsigned int inputLength)
@@ -51,7 +51,7 @@
interest.set(interestStruct);
}
-void BinaryXMLWireFormat::encodeContentObject(const ContentObject &contentObject, vector<unsigned char> &output)
+ptr_lib::shared_ptr<vector<unsigned char> > BinaryXMLWireFormat::encodeContentObject(const ContentObject &contentObject)
{
struct ndn_NameComponent nameComponents[100];
struct ndn_ContentObject contentObjectStruct;
@@ -62,7 +62,7 @@
BinaryXMLEncoder encoder;
ndn_encodeBinaryXMLContentObject(&contentObjectStruct, &encoder);
- encoder.appendTo(output);
+ return encoder.getOutput();
}
void BinaryXMLWireFormat::decodeContentObject(ContentObject &contentObject, const unsigned char *input, unsigned int inputLength)
diff --git a/ndn-cpp/encoding/BinaryXMLWireFormat.hpp b/ndn-cpp/encoding/BinaryXMLWireFormat.hpp
index d35660f..20ebacd 100644
--- a/ndn-cpp/encoding/BinaryXMLWireFormat.hpp
+++ b/ndn-cpp/encoding/BinaryXMLWireFormat.hpp
@@ -12,10 +12,10 @@
class BinaryXMLWireFormat : public WireFormat {
public:
- virtual void encodeInterest(const Interest &interest, std::vector<unsigned char> &output);
+ virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeInterest(const Interest &interest);
virtual void decodeInterest(Interest &interest, const unsigned char *input, unsigned int inputLength);
- virtual void encodeContentObject(const ContentObject &contentObject, std::vector<unsigned char> &output);
+ virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeContentObject(const ContentObject &contentObject);
virtual void decodeContentObject(ContentObject &contentObject, const unsigned char *input, unsigned int inputLength);
static BinaryXMLWireFormat &instance() { return instance_; }
diff --git a/ndn-cpp/encoding/WireFormat.cpp b/ndn-cpp/encoding/WireFormat.cpp
index 5d46241..238ce9c 100644
--- a/ndn-cpp/encoding/WireFormat.cpp
+++ b/ndn-cpp/encoding/WireFormat.cpp
@@ -9,7 +9,7 @@
using namespace std;
namespace ndn {
-void WireFormat::encodeInterest(const Interest &interest, vector<unsigned char> &output)
+ptr_lib::shared_ptr<vector<unsigned char> > WireFormat::encodeInterest(const Interest &interest)
{
throw logic_error("unimplemented");
}
@@ -18,7 +18,7 @@
throw logic_error("unimplemented");
}
-void WireFormat::encodeContentObject(const ContentObject &contentObject, vector<unsigned char> &output)
+ptr_lib::shared_ptr<vector<unsigned char> > WireFormat::encodeContentObject(const ContentObject &contentObject)
{
throw logic_error("unimplemented");
}
diff --git a/ndn-cpp/encoding/WireFormat.hpp b/ndn-cpp/encoding/WireFormat.hpp
index df532e9..1afe25f 100644
--- a/ndn-cpp/encoding/WireFormat.hpp
+++ b/ndn-cpp/encoding/WireFormat.hpp
@@ -6,6 +6,7 @@
#ifndef NDN_WIREFORMAT_HPP
#define NDN_WIREFORMAT_HPP
+#include "../common.hpp"
#include <vector>
namespace ndn {
@@ -15,10 +16,10 @@
class WireFormat {
public:
- virtual void encodeInterest(const Interest &interest, std::vector<unsigned char> &output);
+ virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeInterest(const Interest &interest);
virtual void decodeInterest(Interest &interest, const unsigned char *input, unsigned int inputLength);
- virtual void encodeContentObject(const ContentObject &contentObject, std::vector<unsigned char> &output);
+ virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeContentObject(const ContentObject &contentObject);
virtual void decodeContentObject(ContentObject &contentObject, const unsigned char *input, unsigned int inputLength);
};