Commit 0ad4e190ffbb85ea2db5a05d43cd4f81d98cfe63
1 parent
7049588b
Make QPDFLogger() private and provide create method
Showing
5 changed files
with
39 additions
and
32 deletions
include/qpdf/QPDFLogger.hh
| ... | ... | @@ -31,7 +31,7 @@ class QPDFLogger |
| 31 | 31 | { |
| 32 | 32 | public: |
| 33 | 33 | QPDF_DLL |
| 34 | - QPDFLogger(); | |
| 34 | + static std::shared_ptr<QPDFLogger> create(); | |
| 35 | 35 | |
| 36 | 36 | // Return the default logger. In general, you should use the |
| 37 | 37 | // default logger. You can also create your own loggers and use |
| ... | ... | @@ -152,6 +152,7 @@ class QPDFLogger |
| 152 | 152 | void setOutputStreams(std::ostream* out_stream, std::ostream* err_stream); |
| 153 | 153 | |
| 154 | 154 | private: |
| 155 | + QPDFLogger(); | |
| 155 | 156 | std::shared_ptr<Pipeline> |
| 156 | 157 | throwIfNull(std::shared_ptr<Pipeline>, bool null_okay); |
| 157 | 158 | ... | ... |
libqpdf/QPDF.cc
| ... | ... | @@ -362,7 +362,7 @@ QPDF::setLogger(std::shared_ptr<QPDFLogger> l) |
| 362 | 362 | void |
| 363 | 363 | QPDF::setOutputStreams(std::ostream* out, std::ostream* err) |
| 364 | 364 | { |
| 365 | - setLogger(std::make_shared<QPDFLogger>()); | |
| 365 | + setLogger(QPDFLogger::create()); | |
| 366 | 366 | this->m->log->setOutputStreams(out, err); |
| 367 | 367 | } |
| 368 | 368 | ... | ... |
libqpdf/QPDFJob.cc
| ... | ... | @@ -460,7 +460,7 @@ QPDFJob::setLogger(std::shared_ptr<QPDFLogger> l) |
| 460 | 460 | void |
| 461 | 461 | QPDFJob::setOutputStreams(std::ostream* out, std::ostream* err) |
| 462 | 462 | { |
| 463 | - setLogger(std::make_shared<QPDFLogger>()); | |
| 463 | + setLogger(QPDFLogger::create()); | |
| 464 | 464 | this->m->log->setOutputStreams(out, err); |
| 465 | 465 | } |
| 466 | 466 | ... | ... |
libqpdf/QPDFLogger.cc
| ... | ... | @@ -65,9 +65,15 @@ QPDFLogger::QPDFLogger() : |
| 65 | 65 | } |
| 66 | 66 | |
| 67 | 67 | std::shared_ptr<QPDFLogger> |
| 68 | +QPDFLogger::create() | |
| 69 | +{ | |
| 70 | + return std::shared_ptr<QPDFLogger>(new QPDFLogger); | |
| 71 | +} | |
| 72 | + | |
| 73 | +std::shared_ptr<QPDFLogger> | |
| 68 | 74 | QPDFLogger::defaultLogger() |
| 69 | 75 | { |
| 70 | - static auto l = std::make_shared<QPDFLogger>(); | |
| 76 | + static auto l = create(); | |
| 71 | 77 | return l; |
| 72 | 78 | } |
| 73 | 79 | ... | ... |
libtests/logger.cc
| ... | ... | @@ -39,64 +39,64 @@ test2() |
| 39 | 39 | { |
| 40 | 40 | // First call saveToStandardOutput. Then use info, which then to |
| 41 | 41 | // go stderr. |
| 42 | - QPDFLogger l; | |
| 43 | - l.saveToStandardOutput(true); | |
| 44 | - l.info(std::string("info to stderr\n")); | |
| 45 | - *(l.getSave()) << "save to stdout\n"; | |
| 46 | - l.setInfo(nullptr); | |
| 47 | - l.info("info still to stderr\n"); | |
| 48 | - l.setSave(nullptr, false); | |
| 49 | - l.setInfo(nullptr); | |
| 50 | - l.info("info back to stdout\n"); | |
| 42 | + auto l = QPDFLogger::create(); | |
| 43 | + l->saveToStandardOutput(true); | |
| 44 | + l->info(std::string("info to stderr\n")); | |
| 45 | + *(l->getSave()) << "save to stdout\n"; | |
| 46 | + l->setInfo(nullptr); | |
| 47 | + l->info("info still to stderr\n"); | |
| 48 | + l->setSave(nullptr, false); | |
| 49 | + l->setInfo(nullptr); | |
| 50 | + l->info("info back to stdout\n"); | |
| 51 | 51 | } |
| 52 | 52 | |
| 53 | 53 | static void |
| 54 | 54 | test3() |
| 55 | 55 | { |
| 56 | 56 | // Error/warning |
| 57 | - QPDFLogger l; | |
| 57 | + auto l = QPDFLogger::create(); | |
| 58 | 58 | |
| 59 | 59 | // Warning follows error when error is set explicitly. |
| 60 | 60 | std::string errors; |
| 61 | 61 | auto pl_error = std::make_shared<Pl_String>("errors", nullptr, errors); |
| 62 | - l.setError(pl_error); | |
| 63 | - l.warn("warn follows error\n"); | |
| 62 | + l->setError(pl_error); | |
| 63 | + l->warn("warn follows error\n"); | |
| 64 | 64 | assert(errors == "warn follows error\n"); |
| 65 | - l.error("error too\n"); | |
| 65 | + l->error("error too\n"); | |
| 66 | 66 | assert(errors == "warn follows error\nerror too\n"); |
| 67 | 67 | |
| 68 | 68 | // Set warnings -- now they're separate |
| 69 | 69 | std::string warnings; |
| 70 | 70 | auto pl_warn = std::make_shared<Pl_String>("warnings", nullptr, warnings); |
| 71 | - l.setWarn(pl_warn); | |
| 72 | - l.warn(std::string("warning now separate\n")); | |
| 73 | - l.error(std::string("new error\n")); | |
| 71 | + l->setWarn(pl_warn); | |
| 72 | + l->warn(std::string("warning now separate\n")); | |
| 73 | + l->error(std::string("new error\n")); | |
| 74 | 74 | assert(warnings == "warning now separate\n"); |
| 75 | 75 | assert(errors == "warn follows error\nerror too\nnew error\n"); |
| 76 | 76 | std::string errors2; |
| 77 | 77 | pl_error = std::make_shared<Pl_String>("errors", nullptr, errors2); |
| 78 | - l.setError(pl_error); | |
| 79 | - l.warn("new warning\n"); | |
| 80 | - l.error("another new error\n"); | |
| 78 | + l->setError(pl_error); | |
| 79 | + l->warn("new warning\n"); | |
| 80 | + l->error("another new error\n"); | |
| 81 | 81 | assert(warnings == "warning now separate\nnew warning\n"); |
| 82 | 82 | assert(errors == "warn follows error\nerror too\nnew error\n"); |
| 83 | 83 | assert(errors2 == "another new error\n"); |
| 84 | 84 | |
| 85 | 85 | // Restore warnings to default -- follows error again |
| 86 | - l.setWarn(nullptr); | |
| 87 | - l.warn("warning 3\n"); | |
| 88 | - l.error("error 3\n"); | |
| 86 | + l->setWarn(nullptr); | |
| 87 | + l->warn("warning 3\n"); | |
| 88 | + l->error("error 3\n"); | |
| 89 | 89 | assert(warnings == "warning now separate\nnew warning\n"); |
| 90 | 90 | assert(errors == "warn follows error\nerror too\nnew error\n"); |
| 91 | 91 | assert(errors2 == "another new error\nwarning 3\nerror 3\n"); |
| 92 | 92 | |
| 93 | 93 | // Restore everything to default |
| 94 | - l.setInfo(nullptr); | |
| 95 | - l.setWarn(nullptr); | |
| 96 | - l.setError(nullptr); | |
| 97 | - l.info("after reset, info to stdout\n"); | |
| 98 | - l.warn("after reset, warn to stderr\n"); | |
| 99 | - l.error("after reset, error to stderr\n"); | |
| 94 | + l->setInfo(nullptr); | |
| 95 | + l->setWarn(nullptr); | |
| 96 | + l->setError(nullptr); | |
| 97 | + l->info("after reset, info to stdout\n"); | |
| 98 | + l->warn("after reset, warn to stderr\n"); | |
| 99 | + l->error("after reset, error to stderr\n"); | |
| 100 | 100 | } |
| 101 | 101 | |
| 102 | 102 | int | ... | ... |