Skip to content

Commit fe3979c

Browse files
committed
drop StreamWriterBuilderFactory, for now
1 parent 94665ea commit fe3979c

File tree

3 files changed

+21
-15
lines changed

3 files changed

+21
-15
lines changed

include/json/writer.h

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,20 @@ class StreamWriterBuilder;
3030
3131
using namespace Json;
3232
Value value;
33-
StreamWriterBuilderFactory f;
34-
StreamWriter::Builder builder(&f);
33+
StreamWriter::Builder builder;
3534
builder.setCommentStyle(StreamWriter::CommentStyle::None);
3635
std::shared_ptr<StreamWriter> writer(
3736
builder.newStreamWriter(&std::cout));
3837
writer->write(value);
3938
std::cout.flush();
4039
*/
41-
class JSON_API StreamWriterBuilderFactory {
42-
public:
43-
virtual ~StreamWriterBuilderFactory();
44-
virtual StreamWriterBuilder* newStreamWriterBuilder() const;
45-
};
46-
4740
class JSON_API StreamWriter {
4841
protected:
4942
std::ostream& sout_; // not owned; will not delete
5043
public:
5144
enum class CommentStyle {None, Some, All};
5245

46+
/// Keep a reference, but do not take ownership of `sout`.
5347
StreamWriter(std::ostream* sout);
5448
virtual ~StreamWriter();
5549
/// Write Value into document as configured in sub-class.
@@ -62,8 +56,10 @@ class JSON_API StreamWriter {
6256
/// \see http://stackoverflow.com/questions/14875052/pure-virtual-functions-and-binary-compatibility
6357
class Builder {
6458
StreamWriterBuilder* own_;
59+
Builder(Builder const&); // noncopyable
60+
void operator=(Builder const&); // noncopyable
6561
public:
66-
Builder(StreamWriterBuilderFactory const*);
62+
Builder();
6763
~Builder(); // delete underlying StreamWriterBuilder
6864

6965
void setCommentStyle(CommentStyle cs); /// default: All

src/jsontestrunner/main.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,7 @@ static std::string useStyledStreamWriter(
184184
static std::string useBuiltStyledStreamWriter(
185185
Json::Value const& root)
186186
{
187-
Json::StreamWriterBuilderFactory f;
188-
Json::StreamWriter::Builder builder(&f);
187+
Json::StreamWriter::Builder builder;
189188
builder.setCommentStyle(Json::StreamWriter::CommentStyle::All);
190189
return writeString(root, builder);
191190
}

src/lib_json/json_writer.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,13 @@ StreamWriter* StreamWriterBuilder::newStreamWriter(std::ostream* stream) const
967967
{
968968
return new BuiltStyledStreamWriter(stream, indentation_, cs_);
969969
}
970+
971+
// This might become public someday.
972+
class StreamWriterBuilderFactory {
973+
public:
974+
virtual ~StreamWriterBuilderFactory();
975+
virtual StreamWriterBuilder* newStreamWriterBuilder() const;
976+
};
970977
StreamWriterBuilderFactory::~StreamWriterBuilderFactory()
971978
{
972979
}
@@ -975,14 +982,19 @@ StreamWriterBuilder* StreamWriterBuilderFactory::newStreamWriterBuilder() const
975982
return new StreamWriterBuilder;
976983
}
977984

978-
StreamWriter::Builder::Builder(StreamWriterBuilderFactory const* f)
979-
: own_(f->newStreamWriterBuilder())
985+
StreamWriter::Builder::Builder()
986+
: own_(StreamWriterBuilderFactory().newStreamWriterBuilder())
980987
{
981988
}
982989
StreamWriter::Builder::~Builder()
983990
{
984991
delete own_;
985992
}
993+
StreamWriter::Builder::Builder(Builder const&)
994+
: own_(nullptr)
995+
{abort();}
996+
void StreamWriter::Builder::operator=(Builder const&)
997+
{abort();}
986998
void StreamWriter::Builder::setCommentStyle(CommentStyle v)
987999
{
9881000
own_->setCommentStyle(v);
@@ -1006,8 +1018,7 @@ std::string writeString(Value const& root, StreamWriter::Builder const& builder)
10061018
}
10071019

10081020
std::ostream& operator<<(std::ostream& sout, Value const& root) {
1009-
StreamWriterBuilderFactory f;
1010-
StreamWriter::Builder builder(&f);
1021+
StreamWriter::Builder builder;
10111022
builder.setCommentStyle(StreamWriter::CommentStyle::All);
10121023
std::shared_ptr<StreamWriter> writer(builder.newStreamWriter(&sout));
10131024
writer->write(root);

0 commit comments

Comments
 (0)