#include <yajl/yajl_gen.h>
-#include "stringtools.hh"
-#include "serializer.hh"
+#include "Serializer.hh"
+#include "StringTools.hh"
-namespace dc {
+namespace Mf {
-class serializer::serializer_impl
+class Serializer::SerializerImpl
{
public:
- serializer_impl(const std::string& filePath, const std::string& indent = "")
+ SerializerImpl(const std::string& filePath, const std::string& indent = "")
{
std::ofstream* output = new std::ofstream(filePath.c_str());
init(*output, true, indent);
}
- serializer_impl(std::ostream& output, const std::string& indent = "")
+ SerializerImpl(std::ostream& output, const std::string& indent = "")
{
init(output, false, indent);
}
- ~serializer_impl()
+ ~SerializerImpl()
{
if (deleteWhenDone)
{
switch (err)
{
case yajl_gen_generation_complete:
- throw serializer::exception("the archive has already terminated");
+ throw Serializer::Exception("the archive has already terminated");
case yajl_gen_keys_must_be_strings:
- throw serializer::exception("map keys must be strings");
+ throw Serializer::Exception("map keys must be strings");
case yajl_max_depth_exceeded:
- throw serializer::exception("maximum archive depth exceeded");
+ throw Serializer::Exception("maximum archive depth exceeded");
case yajl_gen_in_error_state:
- throw serializer::exception("serializer already in error state");
+ throw Serializer::Exception("serializer already in error state");
case yajl_gen_status_ok:
; // There is no error here. Move along...
}
}
- yajl_gen gen;
+ yajl_gen gen;
- std::ostream* out;
- bool deleteWhenDone;
+ std::ostream* out;
+ bool deleteWhenDone;
private:
void init(std::ostream& output, bool deleteOut, const std::string& indent)
{
config.beautify = true;
config.indentString = 0;
- // FIXME: a yajl bug prevents using heap-allocated strings
+ // FIXME a yajl bug prevents using heap-allocated strings
//config.indentString = indent.c_str();
}
else
};
-serializer::serializer(const std::string& filePath, const std::string& indent) :
+Serializer::Serializer(const std::string& filePath, const std::string& indent) :
// pass through
- impl(new serializer::serializer_impl(filePath, indent)) {}
+ impl_(new Serializer::SerializerImpl(filePath, indent)) {}
-serializer::serializer(std::ostream& output, const std::string& indent) :
+Serializer::Serializer(std::ostream& output, const std::string& indent) :
// pass through
- impl(new serializer::serializer_impl(output, indent)) {}
+ impl_(new Serializer::SerializerImpl(output, indent)) {}
-serializer::~serializer()
+Serializer::~Serializer()
{
flush();
}
-void serializer::push(long value)
+void Serializer::push(long value)
{
- yajl_gen_status stat = yajl_gen_integer(impl->gen, value);
+ yajl_gen_status stat = yajl_gen_integer(impl_->gen, value);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::push(double value)
+void Serializer::push(double value)
{
- yajl_gen_status stat = yajl_gen_double(impl->gen, value);
+ yajl_gen_status stat = yajl_gen_double(impl_->gen, value);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::push(bool value)
+void Serializer::push(bool value)
{
- yajl_gen_status stat = yajl_gen_bool(impl->gen, value);
+ yajl_gen_status stat = yajl_gen_bool(impl_->gen, value);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::push(const std::string& value)
+void Serializer::push(const std::string& value)
{
- yajl_gen_status stat = yajl_gen_string(impl->gen,
+ yajl_gen_status stat = yajl_gen_string(impl_->gen,
(const unsigned char*)value.c_str(), value.length());
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::push(const std::wstring& value)
+void Serializer::push(const std::wstring& value)
{
push(wideToMulti(value));
}
-void serializer::pushNull()
+void Serializer::pushNull()
{
- yajl_gen_status stat = yajl_gen_null(impl->gen);
+ yajl_gen_status stat = yajl_gen_null(impl_->gen);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::pushMapHead()
+void Serializer::pushMapHead()
{
- yajl_gen_status stat = yajl_gen_map_open(impl->gen);
+ yajl_gen_status stat = yajl_gen_map_open(impl_->gen);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::pushMapTail()
+void Serializer::pushMapTail()
{
- yajl_gen_status stat = yajl_gen_map_close(impl->gen);
+ yajl_gen_status stat = yajl_gen_map_close(impl_->gen);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::pushArrayHead()
+void Serializer::pushArrayHead()
{
- yajl_gen_status stat = yajl_gen_array_open(impl->gen);
+ yajl_gen_status stat = yajl_gen_array_open(impl_->gen);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::pushArrayTail()
+void Serializer::pushArrayTail()
{
- yajl_gen_status stat = yajl_gen_array_close(impl->gen);
+ yajl_gen_status stat = yajl_gen_array_close(impl_->gen);
if (stat != yajl_gen_status_ok)
- serializer::serializer_impl::throwError(stat);
+ Serializer::SerializerImpl::throwError(stat);
}
-void serializer::flush()
+void Serializer::flush()
{
const unsigned char* buffer;
unsigned length;
- yajl_gen_get_buf(impl->gen, &buffer, &length);
- impl->out->write((const char*)buffer, length);
- yajl_gen_clear(impl->gen);
+ yajl_gen_get_buf(impl_->gen, &buffer, &length);
+ impl_->out->write((const char*)buffer, length);
+ yajl_gen_clear(impl_->gen);
}
-} // namespace dc
+} // namespace Mf
/** vim: set ts=4 sw=4 tw=80: *************************************************/