summaryrefslogtreecommitdiffstats
path: root/courgette/courgette_tool.cc
diff options
context:
space:
mode:
Diffstat (limited to 'courgette/courgette_tool.cc')
-rw-r--r--courgette/courgette_tool.cc79
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.");