summaryrefslogtreecommitdiff
path: root/le
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-06-22 16:18:02 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2016-06-22 16:41:11 +0200
commit0f2d7c9ed9dfa3716840fc112bd53e5ec6b6315b (patch)
treea90760b1780d187028475bcb4080794f88ddc858 /le
parent22231518b9c2c0b7f73c72a6ca834df659c63c7f (diff)
downloadopenwar-0f2d7c9ed9dfa3716840fc112bd53e5ec6b6315b.tar.gz
openwar-0f2d7c9ed9dfa3716840fc112bd53e5ec6b6315b.tar.bz2
openwar-0f2d7c9ed9dfa3716840fc112bd53e5ec6b6315b.zip
adds a tree format printer for "binparse" types.
Diffstat (limited to 'le')
-rw-r--r--le/le_file.cpp3
-rw-r--r--le/le_file_parser.cpp5
-rw-r--r--le/le_object_table.cpp7
-rw-r--r--le/le_object_table.hpp2
4 files changed, 14 insertions, 3 deletions
diff --git a/le/le_file.cpp b/le/le_file.cpp
index b01f13e..4a9f57e 100644
--- a/le/le_file.cpp
+++ b/le/le_file.cpp
@@ -37,6 +37,8 @@ File parse_file(std::istream& is) {
auto le_h = le::parse_header(is);
+ auto object_table = parse_object_table(is, le_offset + le_h.object_table_offset, le_h.nr_objects_in_module);
+
return {
mz_h,
unused,
@@ -45,6 +47,7 @@ File parse_file(std::istream& is) {
le_offset,
dos_exe,
le_h,
+ object_table,
};
}
diff --git a/le/le_file_parser.cpp b/le/le_file_parser.cpp
index 2d5eed9..fe34857 100644
--- a/le/le_file_parser.cpp
+++ b/le/le_file_parser.cpp
@@ -1,6 +1,8 @@
#include "le_file.hpp"
+#include "otreestream.hpp"
+
#include <boost/program_options.hpp>
#include <boost/filesystem.hpp>
@@ -50,7 +52,8 @@ int main(int argc, char* argv[]) {
std::ifstream file(file_path.string());
auto x = le::parse_file(file);
- std::cout << x << std::endl;
+ binparse::otreestream treestream (std::cout);
+ treestream << x << std::endl;
return 0;
}
diff --git a/le/le_object_table.cpp b/le/le_object_table.cpp
index 1155c35..3e87fb0 100644
--- a/le/le_object_table.cpp
+++ b/le/le_object_table.cpp
@@ -1,5 +1,9 @@
#include "le_object_table.hpp"
+#include "output.hpp"
+
+#include <iostream>
+
namespace le {
ObjectTable parse_object_table(std::istream& is, Offset32 offset, Value32 nr_objects)
@@ -12,12 +16,13 @@ ObjectTable parse_object_table(std::istream& is, Offset32 offset, Value32 nr_obj
for(Value32 i = Value32(0); i < nr_objects; i++) {
table.entries.emplace(i+1, parse_object_table_entry(is));
}
+
return table;
}
std::ostream& operator<<(std::ostream& os, const ObjectTable& table)
{
- return os;
+ return binparse::operator<<(os, table.entries);
}
} \ No newline at end of file
diff --git a/le/le_object_table.hpp b/le/le_object_table.hpp
index 8c57c60..c840734 100644
--- a/le/le_object_table.hpp
+++ b/le/le_object_table.hpp
@@ -13,5 +13,5 @@ struct ObjectTable {
ObjectTable parse_object_table(std::istream& is, Offset32 offset, Value32 nr_objects);
std::ostream& operator<<(std::ostream& os, ObjectTable const& table);
-
+
} \ No newline at end of file