diff options
Diffstat (limited to 'courgette/courgette_tool.cc')
-rw-r--r-- | courgette/courgette_tool.cc | 79 |
1 files changed, 36 insertions, 43 deletions
diff --git a/courgette/courgette_tool.cc b/courgette/courgette_tool.cc index 3e85657..c7e7196 100644 --- a/courgette/courgette_tool.cc +++ b/courgette/courgette_tool.cc @@ -13,14 +13,10 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/logging.h" -#include "base/memory/scoped_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "courgette/assembly_program.h" #include "courgette/courgette.h" -#include "courgette/encoded_program.h" -#include "courgette/program_detector.h" #include "courgette/streams.h" #include "courgette/third_party/bsdiff.h" @@ -80,27 +76,30 @@ void Disassemble(const base::FilePath& input_file, const base::FilePath& output_file) { std::string buffer = ReadOrFail(input_file, "input"); - scoped_ptr<courgette::AssemblyProgram> program; + courgette::AssemblyProgram* program = NULL; const courgette::Status parse_status = courgette::ParseDetectedExecutable(buffer.c_str(), buffer.length(), &program); + if (parse_status != courgette::C_OK) Problem("Can't parse input (code = %d).", parse_status); - scoped_ptr<courgette::EncodedProgram> encoded; - const courgette::Status encode_status = Encode(*program, &encoded); + courgette::EncodedProgram* encoded = NULL; + const courgette::Status encode_status = Encode(program, &encoded); + + courgette::DeleteAssemblyProgram(program); + if (encode_status != courgette::C_OK) Problem("Can't encode program."); - program.reset(); - courgette::SinkStreamSet sinks; + const courgette::Status write_status = - courgette::WriteEncodedProgram(encoded.get(), &sinks); + courgette::WriteEncodedProgram(encoded, &sinks); if (write_status != courgette::C_OK) Problem("Can't serialize encoded program."); - encoded.reset(); + courgette::DeleteEncodedProgram(encoded); courgette::SinkStream sink; if (!sinks.CopyTo(&sink)) @@ -160,7 +159,7 @@ void DisassembleAndAdjust(const base::FilePath& program_file, std::string program_buffer = ReadOrFail(program_file, "program"); std::string model_buffer = ReadOrFail(model_file, "reference"); - scoped_ptr<courgette::AssemblyProgram> program; + courgette::AssemblyProgram* program = NULL; const courgette::Status parse_program_status = courgette::ParseDetectedExecutable(program_buffer.c_str(), program_buffer.length(), @@ -168,7 +167,7 @@ void DisassembleAndAdjust(const base::FilePath& program_file, if (parse_program_status != courgette::C_OK) Problem("Can't parse program input (code = %d).", parse_program_status); - scoped_ptr<courgette::AssemblyProgram> model; + courgette::AssemblyProgram* model = NULL; const courgette::Status parse_model_status = courgette::ParseDetectedExecutable(model_buffer.c_str(), model_buffer.length(), @@ -176,26 +175,26 @@ void DisassembleAndAdjust(const base::FilePath& program_file, if (parse_model_status != courgette::C_OK) Problem("Can't parse model input (code = %d).", parse_model_status); - const courgette::Status adjust_status = Adjust(*model, program.get()); + const courgette::Status adjust_status = Adjust(*model, program); if (adjust_status != courgette::C_OK) Problem("Can't adjust program."); - model.reset(); + courgette::EncodedProgram* encoded = NULL; + const courgette::Status encode_status = Encode(program, &encoded); + + courgette::DeleteAssemblyProgram(program); - scoped_ptr<courgette::EncodedProgram> encoded; - const courgette::Status encode_status = Encode(*program, &encoded); if (encode_status != courgette::C_OK) Problem("Can't encode program."); - program.reset(); - courgette::SinkStreamSet sinks; + const courgette::Status write_status = - courgette::WriteEncodedProgram(encoded.get(), &sinks); + courgette::WriteEncodedProgram(encoded, &sinks); if (write_status != courgette::C_OK) Problem("Can't serialize encoded program."); - encoded.reset(); + courgette::DeleteEncodedProgram(encoded); courgette::SinkStream sink; if (!sinks.CopyTo(&sink)) @@ -216,7 +215,7 @@ void DisassembleAdjustDiff(const base::FilePath& model_file, std::string model_buffer = ReadOrFail(model_file, "'old'"); std::string program_buffer = ReadOrFail(program_file, "'new'"); - scoped_ptr<courgette::AssemblyProgram> model; + courgette::AssemblyProgram* model = NULL; const courgette::Status parse_model_status = courgette::ParseDetectedExecutable(model_buffer.c_str(), model_buffer.length(), @@ -224,7 +223,7 @@ void DisassembleAdjustDiff(const base::FilePath& model_file, if (parse_model_status != courgette::C_OK) Problem("Can't parse model input (code = %d).", parse_model_status); - scoped_ptr<courgette::AssemblyProgram> program; + courgette::AssemblyProgram* program = NULL; const courgette::Status parse_program_status = courgette::ParseDetectedExecutable(program_buffer.c_str(), program_buffer.length(), @@ -233,41 +232,37 @@ void DisassembleAdjustDiff(const base::FilePath& model_file, Problem("Can't parse program input (code = %d).", parse_program_status); if (adjust) { - const courgette::Status adjust_status = Adjust(*model, program.get()); + const courgette::Status adjust_status = Adjust(*model, program); if (adjust_status != courgette::C_OK) Problem("Can't adjust program."); } - scoped_ptr<courgette::EncodedProgram> encoded_program; + courgette::EncodedProgram* encoded_program = NULL; const courgette::Status encode_program_status = - Encode(*program, &encoded_program); + Encode(program, &encoded_program); + courgette::DeleteAssemblyProgram(program); if (encode_program_status != courgette::C_OK) Problem("Can't encode program."); - program.reset(); - - scoped_ptr<courgette::EncodedProgram> encoded_model; - const courgette::Status encode_model_status = Encode(*model, &encoded_model); + courgette::EncodedProgram* encoded_model = NULL; + const courgette::Status encode_model_status = Encode(model, &encoded_model); + courgette::DeleteAssemblyProgram(model); if (encode_model_status != courgette::C_OK) Problem("Can't encode model."); - model.reset(); - courgette::SinkStreamSet program_sinks; const courgette::Status write_program_status = - courgette::WriteEncodedProgram(encoded_program.get(), &program_sinks); + courgette::WriteEncodedProgram(encoded_program, &program_sinks); if (write_program_status != courgette::C_OK) Problem("Can't serialize encoded program."); - - encoded_program.reset(); + courgette::DeleteEncodedProgram(encoded_program); courgette::SinkStreamSet model_sinks; const courgette::Status write_model_status = - courgette::WriteEncodedProgram(encoded_model.get(), &model_sinks); + courgette::WriteEncodedProgram(encoded_model, &model_sinks); if (write_model_status != courgette::C_OK) Problem("Can't serialize encoded model."); - - encoded_model.reset(); + courgette::DeleteEncodedProgram(encoded_model); courgette::SinkStream empty_sink; for (int i = 0; ; ++i) { @@ -300,16 +295,14 @@ void Assemble(const base::FilePath& input_file, if (!sources.Init(buffer.c_str(), buffer.length())) Problem("Bad input file."); - scoped_ptr<courgette::EncodedProgram> encoded; - const courgette::Status read_status = - courgette::ReadEncodedProgram(&sources, &encoded); + courgette::EncodedProgram* encoded = NULL; + const courgette::Status read_status = ReadEncodedProgram(&sources, &encoded); if (read_status != courgette::C_OK) Problem("Bad encoded program."); courgette::SinkStream sink; - const courgette::Status assemble_status = - courgette::Assemble(encoded.get(), &sink); + const courgette::Status assemble_status = courgette::Assemble(encoded, &sink); if (assemble_status != courgette::C_OK) Problem("Can't assemble."); |