summaryrefslogtreecommitdiff
path: root/external/liborcus
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2016-03-05 20:09:34 -0500
committerKohei Yoshida <libreoffice@kohei.us>2016-03-08 04:43:24 +0000
commitb325b4c286b56a63316063a3ac4648bf7b7efcbe (patch)
tree3084a96548350c38c0d910670c9c512c5ea6e30f /external/liborcus
parenta420a4346ec21ea561f1321767d6a5eed98df02b (diff)
Update liborcus to 0.11.0.
Markus did half of this, and I simply carried the torch. Change-Id: Icd3ee1e4b5bd562faee06dfd9dce52a4bed49a71 Reviewed-on: https://gerrit.libreoffice.org/22943 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
Diffstat (limited to 'external/liborcus')
-rw-r--r--external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch1175
-rwxr-xr-xexternal/liborcus/0001-Get-it-to-build-on-Windows.patch212
-rw-r--r--external/liborcus/ExternalPackage_liborcus.mk8
-rw-r--r--external/liborcus/ExternalProject_liborcus.mk22
-rw-r--r--external/liborcus/Library_orcus-parser.mk3
-rw-r--r--external/liborcus/Library_orcus.mk18
-rw-r--r--external/liborcus/UnpackedTarball_liborcus.mk11
-rw-r--r--external/liborcus/fix-crash-ooo55043-1.patch.017
-rw-r--r--external/liborcus/unusedheader.patch.011
-rwxr-xr-xexternal/liborcus/windows-constants-hack.patch15
10 files changed, 1446 insertions, 46 deletions
diff --git a/external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch b/external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch
new file mode 100644
index 000000000000..d03c98d94f08
--- /dev/null
+++ b/external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch
@@ -0,0 +1,1175 @@
+From a1df2d984d527931c6cbbe6547856283bdbf6a9b Mon Sep 17 00:00:00 2001
+From: Kohei Yoshida <kohei.yoshida@gmail.com>
+Date: Sun, 6 Mar 2016 21:21:31 -0500
+Subject: [PATCH] Fix for OSX build inside LibreOffice.
+
+---
+ include/orcus/sax_ns_parser.hpp | 2 +-
+ slickedit/orcus.vpj | 178 ++++---------------------------
+ src/liborcus/dom_tree.cpp | 12 +--
+ src/liborcus/json_document_tree.cpp | 29 +++--
+ src/liborcus/json_document_tree_test.cpp | 2 +-
+ src/liborcus/ods_content_xml_context.cpp | 2 +-
+ src/liborcus/opc_reader.cpp | 2 +-
+ src/liborcus/orcus_gnumeric.cpp | 2 +-
+ src/liborcus/orcus_import_ods.cpp | 2 +-
+ src/liborcus/orcus_import_xlsx.cpp | 2 +-
+ src/liborcus/orcus_xls_xml.cpp | 2 +-
+ src/liborcus/orcus_xlsx.cpp | 20 ++--
+ src/liborcus/orcus_xml.cpp | 4 +-
+ src/liborcus/xlsx_sheet_context.cpp | 8 +-
+ src/liborcus/xml_map_tree.cpp | 6 +-
+ src/liborcus/xml_structure_tree.cpp | 4 +-
+ src/liborcus/yaml_document_tree.cpp | 34 +++---
+ src/mso/encryption_info.cpp | 3 +-
+ src/orcus_filter_global.cpp | 2 +-
+ src/orcus_json_main.cpp | 2 +-
+ src/orcus_yaml_main.cpp | 2 +-
+ src/parser/json_parser_base.cpp | 2 +-
+ src/parser/sax_parser_base.cpp | 2 +-
+ src/parser/string_pool.cpp | 4 +-
+ src/parser/yaml_parser_base.cpp | 2 +-
+ src/spreadsheet/document.cpp | 2 +-
+ 26 files changed, 95 insertions(+), 237 deletions(-)
+
+diff --git a/include/orcus/sax_ns_parser.hpp b/include/orcus/sax_ns_parser.hpp
+index 680f39d..49a2b48 100644
+--- a/include/orcus/sax_ns_parser.hpp
++++ b/include/orcus/sax_ns_parser.hpp
+@@ -142,7 +142,7 @@ private:
+
+ void start_element(const sax::parser_element& elem)
+ {
+- m_scopes.push_back(make_unique<__sax::elem_scope>());
++ m_scopes.push_back(orcus::make_unique<__sax::elem_scope>());
+ __sax::elem_scope& scope = *m_scopes.back();
+ scope.ns = m_ns_cxt.get(elem.ns);
+ scope.name = elem.name;
+diff --git a/slickedit/orcus.vpj b/slickedit/orcus.vpj
+index 23c6d42..bbc89ec 100644
+--- a/slickedit/orcus.vpj
++++ b/slickedit/orcus.vpj
+@@ -145,6 +145,10 @@
+ Filters=""></Folder>
+ </CustomFolders>
+ <Files AutoFolders="DirectoryView">
++ <Folder Name="../example">
++ <F N="../example/json.cpp"/>
++ <F N="../example/json_parser.cpp"/>
++ </Folder>
+ <Folder Name="../include">
+ <Folder Name="orcus">
+ <Folder Name="mso">
+@@ -186,6 +190,7 @@
+ <F N="../include/orcus/measurement.hpp"/>
+ <F N="../include/orcus/orcus_csv.hpp"/>
+ <F N="../include/orcus/orcus_gnumeric.hpp"/>
++ <F N="../include/orcus/orcus_import_ods.hpp"/>
+ <F N="../include/orcus/orcus_import_xlsx.hpp"/>
+ <F N="../include/orcus/orcus_ods.hpp"/>
+ <F N="../include/orcus/orcus_xls_xml.hpp"/>
+@@ -193,43 +198,34 @@
+ <F N="../include/orcus/orcus_xml.hpp"/>
+ <F N="../include/orcus/parser_base.hpp"/>
+ <F N="../include/orcus/parser_global.hpp"/>
+- <F N="../include/orcus/parser_global.hpp"/>
+- <F N="../include/orcus/pstring.hpp"/>
+ <F N="../include/orcus/pstring.hpp"/>
+ <F N="../include/orcus/sax_ns_parser.hpp"/>
+- <F N="../include/orcus/sax_ns_parser.hpp"/>
+- <F N="../include/orcus/sax_parser.hpp"/>
+ <F N="../include/orcus/sax_parser.hpp"/>
+ <F N="../include/orcus/sax_parser_base.hpp"/>
+- <F N="../include/orcus/sax_parser_base.hpp"/>
+- <F N="../include/orcus/sax_token_parser.hpp"/>
+ <F N="../include/orcus/sax_token_parser.hpp"/>
+ <F N="../include/orcus/stream.hpp"/>
+- <F N="../include/orcus/stream.hpp"/>
+ <F N="../include/orcus/string_pool.hpp"/>
+- <F N="../include/orcus/string_pool.hpp"/>
+- <F N="../include/orcus/tokens.hpp"/>
+ <F N="../include/orcus/tokens.hpp"/>
+ <F N="../include/orcus/types.hpp"/>
+- <F N="../include/orcus/types.hpp"/>
+- <F N="../include/orcus/xml_namespace.hpp"/>
+ <F N="../include/orcus/xml_namespace.hpp"/>
+ <F N="../include/orcus/xml_structure_tree.hpp"/>
+- <F N="../include/orcus/xml_structure_tree.hpp"/>
+ <F N="../include/orcus/yaml_document_tree.hpp"/>
+ <F N="../include/orcus/yaml_parser.hpp"/>
+ <F N="../include/orcus/yaml_parser_base.hpp"/>
+ <F N="../include/orcus/zip_archive.hpp"/>
+- <F N="../include/orcus/zip_archive.hpp"/>
+- <F N="../include/orcus/zip_archive_stream.hpp"/>
+ <F N="../include/orcus/zip_archive_stream.hpp"/>
+ </Folder>
+ </Folder>
++ <Folder Name="../misc">
++ <F N="../misc/sorted_string_map_perf.cpp"/>
++ </Folder>
+ <Folder Name="../parser_handlers">
+ <F N="../parser_handlers/css.hpp"/>
+ <F N="../parser_handlers/css_test.cpp"/>
+ <F N="../parser_handlers/csv.hpp"/>
+ <F N="../parser_handlers/csv_test.cpp"/>
++ <F N="../parser_handlers/json.hpp"/>
++ <F N="../parser_handlers/json_test.cpp"/>
+ <F N="../parser_handlers/sax.hpp"/>
+ <F N="../parser_handlers/sax_ns.hpp"/>
+ <F N="../parser_handlers/sax_ns_test.cpp"/>
+@@ -240,308 +236,172 @@
+ <Folder Name="../src">
+ <Folder Name="liborcus">
+ <F N="../src/liborcus/common_test.cpp"/>
+- <F N="../src/liborcus/common_test.cpp"/>
+- <F N="../src/liborcus/config.cpp"/>
+ <F N="../src/liborcus/config.cpp"/>
++ <F N="../src/liborcus/constants.inl"/>
+ <F N="../src/liborcus/css_document_tree.cpp"/>
+- <F N="../src/liborcus/css_document_tree.cpp"/>
+- <F N="../src/liborcus/css_document_tree_test.cpp"/>
+ <F N="../src/liborcus/css_document_tree_test.cpp"/>
+ <F N="../src/liborcus/css_selector.cpp"/>
+- <F N="../src/liborcus/css_selector.cpp"/>
+- <F N="../src/liborcus/detection_result.cpp"/>
+ <F N="../src/liborcus/detection_result.cpp"/>
+ <F N="../src/liborcus/detection_result.hpp"/>
+- <F N="../src/liborcus/detection_result.hpp"/>
+ <F N="../src/liborcus/dom_tree.cpp"/>
+- <F N="../src/liborcus/dom_tree.cpp"/>
+- <F N="../src/liborcus/format_detection.cpp"/>
+ <F N="../src/liborcus/format_detection.cpp"/>
+ <F N="../src/liborcus/format_detection_test.cpp"/>
+- <F N="../src/liborcus/format_detection_test.cpp"/>
+- <F N="../src/liborcus/global.cpp"/>
+ <F N="../src/liborcus/global.cpp"/>
+ <F N="../src/liborcus/gnumeric_cell_context.cpp"/>
+- <F N="../src/liborcus/gnumeric_cell_context.cpp"/>
+ <F N="../src/liborcus/gnumeric_cell_context.hpp"/>
+- <F N="../src/liborcus/gnumeric_cell_context.hpp"/>
+- <F N="../src/liborcus/gnumeric_cell_context_test.cpp"/>
+ <F N="../src/liborcus/gnumeric_cell_context_test.cpp"/>
+ <F N="../src/liborcus/gnumeric_context.cpp"/>
+- <F N="../src/liborcus/gnumeric_context.cpp"/>
+- <F N="../src/liborcus/gnumeric_context.hpp"/>
+ <F N="../src/liborcus/gnumeric_context.hpp"/>
+ <F N="../src/liborcus/gnumeric_detection_handler.cpp"/>
+- <F N="../src/liborcus/gnumeric_detection_handler.cpp"/>
+ <F N="../src/liborcus/gnumeric_detection_handler.hpp"/>
+- <F N="../src/liborcus/gnumeric_detection_handler.hpp"/>
+- <F N="../src/liborcus/gnumeric_handler.cpp"/>
+ <F N="../src/liborcus/gnumeric_handler.cpp"/>
+ <F N="../src/liborcus/gnumeric_handler.hpp"/>
+- <F N="../src/liborcus/gnumeric_handler.hpp"/>
+- <F N="../src/liborcus/gnumeric_helper.cpp"/>
+ <F N="../src/liborcus/gnumeric_helper.cpp"/>
+ <F N="../src/liborcus/gnumeric_helper.hpp"/>
+- <F N="../src/liborcus/gnumeric_helper.hpp"/>
+ <F N="../src/liborcus/gnumeric_helper_test.cpp"/>
+ <F N="../src/liborcus/gnumeric_namespace_types.cpp"/>
+- <F N="../src/liborcus/gnumeric_namespace_types.cpp"/>
+- <F N="../src/liborcus/gnumeric_namespace_types.hpp"/>
+ <F N="../src/liborcus/gnumeric_namespace_types.hpp"/>
+ <F N="../src/liborcus/gnumeric_sheet_context.cpp"/>
+- <F N="../src/liborcus/gnumeric_sheet_context.cpp"/>
+- <F N="../src/liborcus/gnumeric_sheet_context.hpp"/>
+ <F N="../src/liborcus/gnumeric_sheet_context.hpp"/>
+ <F N="../src/liborcus/gnumeric_sheet_context_test.cpp"/>
+- <F N="../src/liborcus/gnumeric_sheet_context_test.cpp"/>
+ <F N="../src/liborcus/gnumeric_token_constants.hpp"/>
+- <F N="../src/liborcus/gnumeric_token_constants.hpp"/>
+- <F N="../src/liborcus/gnumeric_token_constants.inl"/>
+ <F N="../src/liborcus/gnumeric_token_constants.inl"/>
+ <F N="../src/liborcus/gnumeric_tokens.cpp"/>
+- <F N="../src/liborcus/gnumeric_tokens.cpp"/>
+- <F N="../src/liborcus/gnumeric_tokens.hpp"/>
+ <F N="../src/liborcus/gnumeric_tokens.hpp"/>
+ <F N="../src/liborcus/gnumeric_tokens.inl"/>
+- <F N="../src/liborcus/gnumeric_tokens.inl"/>
+ <F N="../src/liborcus/info.cpp"/>
+ <F N="../src/liborcus/interface.cpp"/>
+- <F N="../src/liborcus/interface.cpp"/>
+ <F N="../src/liborcus/json_document_tree.cpp"/>
+ <F N="../src/liborcus/json_document_tree_test.cpp"/>
+ <F N="../src/liborcus/json_util.cpp"/>
+ <F N="../src/liborcus/json_util.hpp"/>
+ <F N="../src/liborcus/measurement.cpp"/>
+- <F N="../src/liborcus/measurement.cpp"/>
+ <F N="../src/liborcus/mock_spreadsheet.cpp"/>
+- <F N="../src/liborcus/mock_spreadsheet.cpp"/>
+- <F N="../src/liborcus/mock_spreadsheet.hpp"/>
+ <F N="../src/liborcus/mock_spreadsheet.hpp"/>
+- <F N="../src/liborcus/odf_namespace_types.cpp"/>
++ <F N="../src/liborcus/odf_helper.cpp"/>
++ <F N="../src/liborcus/odf_helper.hpp"/>
++ <F N="../src/liborcus/odf_helper_test.cpp"/>
+ <F N="../src/liborcus/odf_namespace_types.cpp"/>
+ <F N="../src/liborcus/odf_namespace_types.hpp"/>
+- <F N="../src/liborcus/odf_namespace_types.hpp"/>
+- <F N="../src/liborcus/odf_namespace_types_cpp.inl"/>
+ <F N="../src/liborcus/odf_namespace_types_cpp.inl"/>
+ <F N="../src/liborcus/odf_namespace_types_hpp.inl"/>
+- <F N="../src/liborcus/odf_namespace_types_hpp.inl"/>
+- <F N="../src/liborcus/odf_para_context.cpp"/>
+ <F N="../src/liborcus/odf_para_context.cpp"/>
+ <F N="../src/liborcus/odf_para_context.hpp"/>
+- <F N="../src/liborcus/odf_para_context.hpp"/>
+ <F N="../src/liborcus/odf_styles.cpp"/>
+- <F N="../src/liborcus/odf_styles.cpp"/>
+- <F N="../src/liborcus/odf_styles.hpp"/>
+ <F N="../src/liborcus/odf_styles.hpp"/>
+ <F N="../src/liborcus/odf_styles_context.cpp"/>
+- <F N="../src/liborcus/odf_styles_context.cpp"/>
+- <F N="../src/liborcus/odf_styles_context.hpp"/>
+ <F N="../src/liborcus/odf_styles_context.hpp"/>
+- <F N="../src/liborcus/odf_token_constants.hpp"/>
++ <F N="../src/liborcus/odf_styles_context_test.cpp"/>
+ <F N="../src/liborcus/odf_token_constants.hpp"/>
+ <F N="../src/liborcus/odf_token_constants.inl"/>
+- <F N="../src/liborcus/odf_token_constants.inl"/>
+- <F N="../src/liborcus/odf_tokens.cpp"/>
+ <F N="../src/liborcus/odf_tokens.cpp"/>
+ <F N="../src/liborcus/odf_tokens.hpp"/>
+- <F N="../src/liborcus/odf_tokens.hpp"/>
+- <F N="../src/liborcus/odf_tokens.inl"/>
+ <F N="../src/liborcus/odf_tokens.inl"/>
+ <F N="../src/liborcus/ods_content_xml_context.cpp"/>
+- <F N="../src/liborcus/ods_content_xml_context.cpp"/>
+ <F N="../src/liborcus/ods_content_xml_context.hpp"/>
+- <F N="../src/liborcus/ods_content_xml_context.hpp"/>
+- <F N="../src/liborcus/ods_content_xml_handler.cpp"/>
+ <F N="../src/liborcus/ods_content_xml_handler.cpp"/>
+ <F N="../src/liborcus/ods_content_xml_handler.hpp"/>
+- <F N="../src/liborcus/ods_content_xml_handler.hpp"/>
+- <F N="../src/liborcus/ods_session_data.cpp"/>
+ <F N="../src/liborcus/ods_session_data.cpp"/>
+ <F N="../src/liborcus/ods_session_data.hpp"/>
+- <F N="../src/liborcus/ods_session_data.hpp"/>
+ <F N="../src/liborcus/ooxml_content_types.cpp"/>
+- <F N="../src/liborcus/ooxml_content_types.cpp"/>
+- <F N="../src/liborcus/ooxml_content_types.hpp"/>
+ <F N="../src/liborcus/ooxml_content_types.hpp"/>
+ <F N="../src/liborcus/ooxml_global.cpp"/>
+- <F N="../src/liborcus/ooxml_global.cpp"/>
+- <F N="../src/liborcus/ooxml_global.hpp"/>
+ <F N="../src/liborcus/ooxml_global.hpp"/>
+ <F N="../src/liborcus/ooxml_namespace_types.cpp"/>
+- <F N="../src/liborcus/ooxml_namespace_types.cpp"/>
+ <F N="../src/liborcus/ooxml_namespace_types.hpp"/>
+- <F N="../src/liborcus/ooxml_namespace_types.hpp"/>
+- <F N="../src/liborcus/ooxml_schemas.cpp"/>
+ <F N="../src/liborcus/ooxml_schemas.cpp"/>
+ <F N="../src/liborcus/ooxml_schemas.hpp"/>
+- <F N="../src/liborcus/ooxml_schemas.hpp"/>
+- <F N="../src/liborcus/ooxml_token_constants.hpp"/>
+ <F N="../src/liborcus/ooxml_token_constants.hpp"/>
+ <F N="../src/liborcus/ooxml_token_constants.inl"/>
+- <F N="../src/liborcus/ooxml_token_constants.inl"/>
+ <F N="../src/liborcus/ooxml_tokens.cpp"/>
+- <F N="../src/liborcus/ooxml_tokens.cpp"/>
+- <F N="../src/liborcus/ooxml_tokens.hpp"/>
+ <F N="../src/liborcus/ooxml_tokens.hpp"/>
+ <F N="../src/liborcus/ooxml_tokens.inl"/>
+- <F N="../src/liborcus/ooxml_tokens.inl"/>
+- <F N="../src/liborcus/ooxml_types.cpp"/>
+ <F N="../src/liborcus/ooxml_types.cpp"/>
+ <F N="../src/liborcus/ooxml_types.hpp"/>
+- <F N="../src/liborcus/ooxml_types.hpp"/>
+ <F N="../src/liborcus/opc_context.cpp"/>
+- <F N="../src/liborcus/opc_context.cpp"/>
+- <F N="../src/liborcus/opc_context.hpp"/>
+ <F N="../src/liborcus/opc_context.hpp"/>
+ <F N="../src/liborcus/opc_reader.cpp"/>
+- <F N="../src/liborcus/opc_reader.cpp"/>
+- <F N="../src/liborcus/opc_reader.hpp"/>
+ <F N="../src/liborcus/opc_reader.hpp"/>
+ <F N="../src/liborcus/opc_token_constants.hpp"/>
+- <F N="../src/liborcus/opc_token_constants.hpp"/>
+ <F N="../src/liborcus/opc_token_constants.inl"/>
+- <F N="../src/liborcus/opc_token_constants.inl"/>
+- <F N="../src/liborcus/opc_tokens.inl"/>
+ <F N="../src/liborcus/opc_tokens.inl"/>
+ <F N="../src/liborcus/orcus_csv.cpp"/>
+- <F N="../src/liborcus/orcus_csv.cpp"/>
+- <F N="../src/liborcus/orcus_gnumeric.cpp"/>
+ <F N="../src/liborcus/orcus_gnumeric.cpp"/>
+- <F N="../src/liborcus/orcus_import_xlsx.cpp"/>
++ <F N="../src/liborcus/orcus_import_ods.cpp"/>
+ <F N="../src/liborcus/orcus_import_xlsx.cpp"/>
+ <F N="../src/liborcus/orcus_ods.cpp"/>
+- <F N="../src/liborcus/orcus_ods.cpp"/>
+- <F N="../src/liborcus/orcus_xls_xml.cpp"/>
+ <F N="../src/liborcus/orcus_xls_xml.cpp"/>
+ <F N="../src/liborcus/orcus_xlsx.cpp"/>
+- <F N="../src/liborcus/orcus_xlsx.cpp"/>
+- <F N="../src/liborcus/orcus_xml.cpp"/>
+ <F N="../src/liborcus/orcus_xml.cpp"/>
+ <F N="../src/liborcus/session_context.cpp"/>
+- <F N="../src/liborcus/session_context.cpp"/>
+ <F N="../src/liborcus/session_context.hpp"/>
+- <F N="../src/liborcus/session_context.hpp"/>
+- <F N="../src/liborcus/spreadsheet_interface.cpp"/>
+ <F N="../src/liborcus/spreadsheet_interface.cpp"/>
+ <F N="../src/liborcus/spreadsheet_types.cpp"/>
+- <F N="../src/liborcus/spreadsheet_types.cpp"/>
+- <F N="../src/liborcus/xls_xml_context.cpp"/>
++ <F N="../src/liborcus/string_helper.cpp"/>
++ <F N="../src/liborcus/string_helper.hpp"/>
+ <F N="../src/liborcus/xls_xml_context.cpp"/>
+ <F N="../src/liborcus/xls_xml_context.hpp"/>
+- <F N="../src/liborcus/xls_xml_context.hpp"/>
+ <F N="../src/liborcus/xls_xml_detection_handler.cpp"/>
+- <F N="../src/liborcus/xls_xml_detection_handler.cpp"/>
+- <F N="../src/liborcus/xls_xml_detection_handler.hpp"/>
+ <F N="../src/liborcus/xls_xml_detection_handler.hpp"/>
+ <F N="../src/liborcus/xls_xml_handler.cpp"/>
+- <F N="../src/liborcus/xls_xml_handler.cpp"/>
+- <F N="../src/liborcus/xls_xml_handler.hpp"/>
+ <F N="../src/liborcus/xls_xml_handler.hpp"/>
+ <F N="../src/liborcus/xls_xml_namespace_types.cpp"/>
+- <F N="../src/liborcus/xls_xml_namespace_types.cpp"/>
+ <F N="../src/liborcus/xls_xml_namespace_types.hpp"/>
+- <F N="../src/liborcus/xls_xml_namespace_types.hpp"/>
+- <F N="../src/liborcus/xls_xml_token_constants.hpp"/>
+ <F N="../src/liborcus/xls_xml_token_constants.hpp"/>
+ <F N="../src/liborcus/xls_xml_token_constants.inl"/>
+- <F N="../src/liborcus/xls_xml_token_constants.inl"/>
+- <F N="../src/liborcus/xls_xml_tokens.cpp"/>
+ <F N="../src/liborcus/xls_xml_tokens.cpp"/>
+ <F N="../src/liborcus/xls_xml_tokens.hpp"/>
+- <F N="../src/liborcus/xls_xml_tokens.hpp"/>
+ <F N="../src/liborcus/xls_xml_tokens.inl"/>
+- <F N="../src/liborcus/xls_xml_tokens.inl"/>
+- <F N="../src/liborcus/xlsx_autofilter_context.cpp"/>
+ <F N="../src/liborcus/xlsx_autofilter_context.cpp"/>
+ <F N="../src/liborcus/xlsx_autofilter_context.hpp"/>
+- <F N="../src/liborcus/xlsx_autofilter_context.hpp"/>
+ <F N="../src/liborcus/xlsx_conditional_format_context.cpp"/>
+ <F N="../src/liborcus/xlsx_conditional_format_context.hpp"/>
+ <F N="../src/liborcus/xlsx_context.cpp"/>
+- <F N="../src/liborcus/xlsx_context.cpp"/>
+- <F N="../src/liborcus/xlsx_context.hpp"/>
+ <F N="../src/liborcus/xlsx_context.hpp"/>
+ <F N="../src/liborcus/xlsx_handler.cpp"/>
+- <F N="../src/liborcus/xlsx_handler.cpp"/>
+- <F N="../src/liborcus/xlsx_handler.hpp"/>
+ <F N="../src/liborcus/xlsx_handler.hpp"/>
+ <F N="../src/liborcus/xlsx_helper.cpp"/>
+ <F N="../src/liborcus/xlsx_helper.hpp"/>
+ <F N="../src/liborcus/xlsx_pivot_context.cpp"/>
+- <F N="../src/liborcus/xlsx_pivot_context.cpp"/>
+- <F N="../src/liborcus/xlsx_pivot_context.hpp"/>
+ <F N="../src/liborcus/xlsx_pivot_context.hpp"/>
+ <F N="../src/liborcus/xlsx_revision_context.cpp"/>
+- <F N="../src/liborcus/xlsx_revision_context.cpp"/>
+ <F N="../src/liborcus/xlsx_revision_context.hpp"/>
+- <F N="../src/liborcus/xlsx_revision_context.hpp"/>
+- <F N="../src/liborcus/xlsx_session_data.cpp"/>
+ <F N="../src/liborcus/xlsx_session_data.cpp"/>
+ <F N="../src/liborcus/xlsx_session_data.hpp"/>
+- <F N="../src/liborcus/xlsx_session_data.hpp"/>
+- <F N="../src/liborcus/xlsx_sheet_context.cpp"/>
+ <F N="../src/liborcus/xlsx_sheet_context.cpp"/>
+ <F N="../src/liborcus/xlsx_sheet_context.hpp"/>
+- <F N="../src/liborcus/xlsx_sheet_context.hpp"/>
+ <F N="../src/liborcus/xlsx_sheet_context_test.cpp"/>
+- <F N="../src/liborcus/xlsx_sheet_context_test.cpp"/>
+- <F N="../src/liborcus/xlsx_table_context.cpp"/>
+ <F N="../src/liborcus/xlsx_table_context.cpp"/>
+ <F N="../src/liborcus/xlsx_table_context.hpp"/>
+- <F N="../src/liborcus/xlsx_table_context.hpp"/>
+- <F N="../src/liborcus/xlsx_types.cpp"/>
+ <F N="../src/liborcus/xlsx_types.cpp"/>
+ <F N="../src/liborcus/xlsx_types.hpp"/>
+- <F N="../src/liborcus/xlsx_types.hpp"/>
+ <F N="../src/liborcus/xlsx_workbook_context.cpp"/>
+- <F N="../src/liborcus/xlsx_workbook_context.cpp"/>
+- <F N="../src/liborcus/xlsx_workbook_context.hpp"/>
+ <F N="../src/liborcus/xlsx_workbook_context.hpp"/>
+ <F N="../src/liborcus/xml_context_base.cpp"/>
+- <F N="../src/liborcus/xml_context_base.cpp"/>
+- <F N="../src/liborcus/xml_context_base.hpp"/>
+ <F N="../src/liborcus/xml_context_base.hpp"/>
+ <F N="../src/liborcus/xml_context_global.cpp"/>
+- <F N="../src/liborcus/xml_context_global.cpp"/>
+ <F N="../src/liborcus/xml_context_global.hpp"/>
+- <F N="../src/liborcus/xml_context_global.hpp"/>
+- <F N="../src/liborcus/xml_map_tree.cpp"/>
+ <F N="../src/liborcus/xml_map_tree.cpp"/>
+ <F N="../src/liborcus/xml_map_tree.hpp"/>
+- <F N="../src/liborcus/xml_map_tree.hpp"/>
+- <F N="../src/liborcus/xml_map_tree_test.cpp"/>
+ <F N="../src/liborcus/xml_map_tree_test.cpp"/>
+ <F N="../src/liborcus/xml_simple_stream_handler.cpp"/>
+- <F N="../src/liborcus/xml_simple_stream_handler.cpp"/>
+ <F N="../src/liborcus/xml_simple_stream_handler.hpp"/>
+- <F N="../src/liborcus/xml_simple_stream_handler.hpp"/>
+- <F N="../src/liborcus/xml_stream_handler.cpp"/>
+ <F N="../src/liborcus/xml_stream_handler.cpp"/>
+ <F N="../src/liborcus/xml_stream_handler.hpp"/>
+- <F N="../src/liborcus/xml_stream_handler.hpp"/>
+- <F N="../src/liborcus/xml_stream_parser.cpp"/>
+ <F N="../src/liborcus/xml_stream_parser.cpp"/>
+ <F N="../src/liborcus/xml_stream_parser.hpp"/>
+- <F N="../src/liborcus/xml_stream_parser.hpp"/>
+ <F N="../src/liborcus/xml_structure_tree.cpp"/>
+- <F N="../src/liborcus/xml_structure_tree.cpp"/>
+- <F N="../src/liborcus/xml_structure_tree_test.cpp"/>
+ <F N="../src/liborcus/xml_structure_tree_test.cpp"/>
+ <F N="../src/liborcus/yaml_document_tree.cpp"/>
+ <F N="../src/liborcus/yaml_document_tree_test.cpp"/>
+ </Folder>
+ <Folder Name="mso">
+ <F N="../src/mso/encryption_info.cpp"/>
+- <F N="../src/mso/encryption_info.cpp"/>
+ </Folder>
+ <Folder Name="parser">
+ <F N="../src/parser/base64.cpp"/>
+- <F N="../src/parser/base64.cpp"/>
+- <F N="../src/parser/base64_test.cpp"/>
+ <F N="../src/parser/base64_test.cpp"/>
+ <F N="../src/parser/cell_buffer.cpp"/>
+- <F N="../src/parser/cell_buffer.cpp"/>
+- <F N="../src/parser/css_parser_base.cpp"/>
+ <F N="../src/parser/css_parser_base.cpp"/>
+ <F N="../src/parser/css_types.cpp"/>
+ <F N="../src/parser/csv_parser_base.cpp"/>
+@@ -565,6 +425,7 @@
+ <F N="../src/parser/yaml_parser_base.cpp"/>
+ <F N="../src/parser/zip_archive.cpp"/>
+ <F N="../src/parser/zip_archive_stream.cpp"/>
++ <F N="../src/parser/zip_archive_test.cpp"/>
+ </Folder>
+ <Folder Name="python">
+ <F N="../src/python/json.cpp"/>
+@@ -597,7 +458,6 @@
+ <F N="../src/orcus_json_main.cpp"/>
+ <F N="../src/orcus_mso_encryption.cpp"/>
+ <F N="../src/orcus_ods_main.cpp"/>
+- <F N="../src/orcus_test_common.cpp"/>
+ <F N="../src/orcus_test_csv.cpp"/>
+ <F N="../src/orcus_test_ods.cpp"/>
+ <F N="../src/orcus_test_xls_xml.cpp"/>
+diff --git a/src/liborcus/dom_tree.cpp b/src/liborcus/dom_tree.cpp
+index 255a7d7..1b4588b 100644
+--- a/src/liborcus/dom_tree.cpp
++++ b/src/liborcus/dom_tree.cpp
+@@ -177,7 +177,7 @@ void dom_tree::content::print(ostream& os, const xmlns_context& /*cxt*/) const
+ dom_tree::content::~content() {}
+
+ dom_tree::dom_tree(xmlns_context& cxt) :
+- mp_impl(make_unique<dom_tree_impl>(cxt)) {}
++ mp_impl(orcus::make_unique<dom_tree_impl>(cxt)) {}
+
+ dom_tree::~dom_tree() {}
+
+@@ -242,7 +242,7 @@ void dom_tree::start_element(xmlns_id_t ns, const pstring& name)
+
+ // Append new element as a child element of the current element.
+ p = mp_impl->m_elem_stack.back();
+- p->child_nodes.push_back(make_unique<element>(ns, name_safe));
++ p->child_nodes.push_back(orcus::make_unique<element>(ns, name_safe));
+ p = static_cast<element*>(p->child_nodes.back().get());
+ p->attrs.swap(mp_impl->m_cur_attrs);
+ mp_impl->m_elem_stack.push_back(p);
+@@ -269,7 +269,7 @@ void dom_tree::set_characters(const pstring& val)
+
+ element* p = mp_impl->m_elem_stack.back();
+ val2 = mp_impl->m_pool.intern(val2).first; // Make sure the string is persistent.
+- p->child_nodes.push_back(make_unique<content>(val2));
++ p->child_nodes.push_back(orcus::make_unique<content>(val2));
+ }
+
+ void dom_tree::set_attribute(xmlns_id_t ns, const pstring& name, const pstring& val)
+@@ -283,7 +283,7 @@ void dom_tree::set_attribute(xmlns_id_t ns, const pstring& name, const pstring&
+
+ void dom_tree::set_doctype(const sax::doctype_declaration& dtd)
+ {
+- mp_impl->m_doctype = make_unique<sax::doctype_declaration>(dtd); // make a copy.
++ mp_impl->m_doctype = orcus::make_unique<sax::doctype_declaration>(dtd); // make a copy.
+
+ sax::doctype_declaration& this_dtd = *mp_impl->m_doctype;
+ string_pool& pool = mp_impl->m_pool;
+@@ -360,7 +360,7 @@ void dom_tree::dump_compact(ostream& os) const
+
+ scopes_type scopes;
+
+- scopes.push_back(make_unique<scope>(string(), mp_impl->m_root));
++ scopes.push_back(orcus::make_unique<scope>(string(), mp_impl->m_root));
+ while (!scopes.empty())
+ {
+ bool new_scope = false;
+@@ -418,7 +418,7 @@ void dom_tree::dump_compact(ostream& os) const
+ ++cur_scope.current_pos;
+ ostringstream elem_name;
+ elem->print(elem_name, mp_impl->m_ns_cxt);
+- scopes.push_back(make_unique<scope>(elem_name.str()));
++ scopes.push_back(orcus::make_unique<scope>(elem_name.str()));
+ scope& child_scope = *scopes.back();
+ child_scope.nodes.swap(nodes);
+ child_scope.current_pos = child_scope.nodes.begin();
+diff --git a/src/liborcus/json_document_tree.cpp b/src/liborcus/json_document_tree.cpp
+index adafcbf..81289e1 100644
+--- a/src/liborcus/json_document_tree.cpp
++++ b/src/liborcus/json_document_tree.cpp
+@@ -55,7 +55,6 @@ using node_t = json::detail::node_t;
+
+ const char* tab = " ";
+ constexpr char quote = '"';
+-constexpr char backslash = '\\';
+
+ const xmlns_id_t NS_orcus_json_xml = "http://schemas.kohei.us/orcus/2015/json";
+
+@@ -455,13 +454,13 @@ public:
+ {
+ if (m_root)
+ {
+- json_value* jv = push_value(make_unique<json_value_array>());
++ json_value* jv = push_value(orcus::make_unique<json_value_array>());
+ assert(jv && jv->type == node_t::array);
+ m_stack.push_back(parser_stack(jv));
+ }
+ else
+ {
+- m_root = make_unique<json_value_array>();
++ m_root = orcus::make_unique<json_value_array>();
+ m_stack.push_back(parser_stack(m_root.get()));
+ }
+ }
+@@ -476,13 +475,13 @@ public:
+ {
+ if (m_root)
+ {
+- json_value* jv = push_value(make_unique<json_value_object>());
++ json_value* jv = push_value(orcus::make_unique<json_value_object>());
+ assert(jv && jv->type == node_t::object);
+ m_stack.push_back(parser_stack(jv));
+ }
+ else
+ {
+- m_root = make_unique<json_value_object>();
++ m_root = orcus::make_unique<json_value_object>();
+ m_stack.push_back(parser_stack(m_root.get()));
+ }
+ }
+@@ -504,17 +503,17 @@ public:
+
+ void boolean_true()
+ {
+- push_value(make_unique<json_value>(node_t::boolean_true));
++ push_value(orcus::make_unique<json_value>(node_t::boolean_true));
+ }
+
+ void boolean_false()
+ {
+- push_value(make_unique<json_value>(node_t::boolean_false));
++ push_value(orcus::make_unique<json_value>(node_t::boolean_false));
+ }
+
+ void null()
+ {
+- push_value(make_unique<json_value>(node_t::null));
++ push_value(orcus::make_unique<json_value>(node_t::null));
+ }
+
+ void string(const char* p, size_t len, bool transient)
+@@ -524,12 +523,12 @@ public:
+ // The tree manages the life cycle of this string value.
+ s = m_pool.intern(s).first;
+
+- push_value(make_unique<json_value_string>(s));
++ push_value(orcus::make_unique<json_value_string>(s));
+ }
+
+ void number(double val)
+ {
+- push_value(make_unique<json_value_number>(val));
++ push_value(orcus::make_unique<json_value_number>(val));
+ }
+
+ void swap(std::unique_ptr<json_value>& other_root)
+@@ -554,8 +553,8 @@ struct node::impl
+ impl(const json_value* jv) : m_node(jv) {}
+ };
+
+-node::node(const json_value* jv) : mp_impl(make_unique<impl>(jv)) {}
+-node::node(const node& other) : mp_impl(make_unique<impl>(other.mp_impl->m_node)) {}
++node::node(const json_value* jv) : mp_impl(orcus::make_unique<impl>(jv)) {}
++node::node(const node& other) : mp_impl(orcus::make_unique<impl>(other.mp_impl->m_node)) {}
+ node::node(node&& rhs) : mp_impl(std::move(rhs.mp_impl)) {}
+ node::~node() {}
+
+@@ -720,12 +719,12 @@ struct json_document_tree::impl
+ std::unique_ptr<string_pool> m_own_pool;
+ string_pool& m_pool;
+
+- impl() : m_own_pool(make_unique<string_pool>()), m_pool(*m_own_pool) {}
++ impl() : m_own_pool(orcus::make_unique<string_pool>()), m_pool(*m_own_pool) {}
+ impl(string_pool& pool) : m_pool(pool) {}
+ };
+
+-json_document_tree::json_document_tree() : mp_impl(make_unique<impl>()) {}
+-json_document_tree::json_document_tree(string_pool& pool) : mp_impl(make_unique<impl>(pool)) {}
++json_document_tree::json_document_tree() : mp_impl(orcus::make_unique<impl>()) {}
++json_document_tree::json_document_tree(string_pool& pool) : mp_impl(orcus::make_unique<impl>(pool)) {}
+ json_document_tree::~json_document_tree() {}
+
+ void json_document_tree::load(const std::string& strm, const json_config& config)
+diff --git a/src/liborcus/json_document_tree_test.cpp b/src/liborcus/json_document_tree_test.cpp
+index da16150..4b4fcbd 100644
+--- a/src/liborcus/json_document_tree_test.cpp
++++ b/src/liborcus/json_document_tree_test.cpp
+@@ -193,7 +193,7 @@ std::unique_ptr<json_document_tree> get_doc_tree(const char* filepath)
+ cout << "--- original" << endl;
+ cout << strm << endl;
+
+- auto doc = make_unique<json_document_tree>();
++ auto doc = orcus::make_unique<json_document_tree>();
+ doc->load(strm, test_config);
+
+ return doc;
+diff --git a/src/liborcus/ods_content_xml_context.cpp b/src/liborcus/ods_content_xml_context.cpp
+index f496353..c4e706d 100644
+--- a/src/liborcus/ods_content_xml_context.cpp
++++ b/src/liborcus/ods_content_xml_context.cpp
+@@ -588,7 +588,7 @@ void ods_content_xml_context::push_cell_value()
+ ods_session_data& ods_data =
+ static_cast<ods_session_data&>(*get_session_context().mp_data);
+ ods_data.m_formulas.push_back(
+- make_unique<ods_session_data::formula>(
++ orcus::make_unique<ods_session_data::formula>(
+ m_tables.size()-1, m_row, m_col, m_cell_attr.formula_grammar, m_cell_attr.formula));
+
+ ods_session_data::formula& formula_data = *ods_data.m_formulas.back();
+diff --git a/src/liborcus/opc_reader.cpp b/src/liborcus/opc_reader.cpp
+index 814b2cf..666530e 100644
+--- a/src/liborcus/opc_reader.cpp
++++ b/src/liborcus/opc_reader.cpp
+@@ -244,7 +244,7 @@ void opc_reader::read_content_types()
+ m_config, m_ns_repo, opc_tokens,
+ reinterpret_cast<const char*>(&buffer[0]), buffer.size());
+
+- auto handler = make_unique<xml_simple_stream_handler>(
++ auto handler = orcus::make_unique<xml_simple_stream_handler>(
+ new opc_content_types_context(m_session_cxt, opc_tokens));
+
+ parser.set_handler(handler.get());
+diff --git a/src/liborcus/orcus_gnumeric.cpp b/src/liborcus/orcus_gnumeric.cpp
+index 1873c0e..c29bef9 100644
+--- a/src/liborcus/orcus_gnumeric.cpp
++++ b/src/liborcus/orcus_gnumeric.cpp
+@@ -82,7 +82,7 @@ void orcus_gnumeric::read_content_xml(const char* p, size_t size)
+ {
+ xml_stream_parser parser(get_config(), mp_impl->m_ns_repo, gnumeric_tokens, p, size);
+
+- auto handler = make_unique<gnumeric_content_xml_handler>(
++ auto handler = orcus::make_unique<gnumeric_content_xml_handler>(
+ mp_impl->m_cxt, gnumeric_tokens, mp_impl->mp_factory);
+
+ parser.set_handler(handler.get());
+diff --git a/src/liborcus/orcus_import_ods.cpp b/src/liborcus/orcus_import_ods.cpp
+index af1135e..2d76dbb 100644
+--- a/src/liborcus/orcus_import_ods.cpp
++++ b/src/liborcus/orcus_import_ods.cpp
+@@ -32,7 +32,7 @@ void import_ods::read_styles(const char* p, size_t n, spreadsheet::iface::import
+
+ session_context cxt;
+ odf_styles_map_type styles_map;
+- auto context = make_unique<styles_context>(cxt, odf_tokens, styles_map, styles);
++ auto context = orcus::make_unique<styles_context>(cxt, odf_tokens, styles_map, styles);
+
+ xml_simple_stream_handler stream_handler(context.release());
+
+diff --git a/src/liborcus/orcus_import_xlsx.cpp b/src/liborcus/orcus_import_xlsx.cpp
+index 2f9f172..0d4a933 100644
+--- a/src/liborcus/orcus_import_xlsx.cpp
++++ b/src/liborcus/orcus_import_xlsx.cpp
+@@ -33,7 +33,7 @@ void import_xlsx::read_table(const char* p, size_t n, spreadsheet::iface::import
+ return;
+
+ session_context cxt;
+- auto handler = make_unique<xlsx_table_xml_handler>(cxt, ooxml_tokens, *table);
++ auto handler = orcus::make_unique<xlsx_table_xml_handler>(cxt, ooxml_tokens, *table);
+
+ xmlns_repository ns_repo;
+ ns_repo.add_predefined_values(NS_ooxml_all);
+diff --git a/src/liborcus/orcus_xls_xml.cpp b/src/liborcus/orcus_xls_xml.cpp
+index 2849219..22ffeab 100644
+--- a/src/liborcus/orcus_xls_xml.cpp
++++ b/src/liborcus/orcus_xls_xml.cpp
+@@ -92,7 +92,7 @@ void orcus_xls_xml::read_stream(const char* content, size_t len)
+ xml_stream_parser parser(
+ get_config(), mp_impl->m_ns_repo, xls_xml_tokens, content, len);
+
+- auto handler = make_unique<xls_xml_handler>(
++ auto handler = orcus::make_unique<xls_xml_handler>(
+ mp_impl->m_cxt, xls_xml_tokens, mp_impl->mp_factory);
+
+ parser.set_handler(handler.get());
+diff --git a/src/liborcus/orcus_xlsx.cpp b/src/liborcus/orcus_xlsx.cpp
+index 8c578e6..7c1e46c 100644
+--- a/src/liborcus/orcus_xlsx.cpp
++++ b/src/liborcus/orcus_xlsx.cpp
+@@ -286,7 +286,7 @@ void orcus_xlsx::read_workbook(const string& dir_path, const string& file_name)
+ if (buffer.empty())
+ return;
+
+- auto handler = make_unique<xml_simple_stream_handler>(
++ auto handler = orcus::make_unique<xml_simple_stream_handler>(
+ new xlsx_workbook_context(mp_impl->m_cxt, ooxml_tokens));
+
+ xml_stream_parser parser(
+@@ -341,7 +341,7 @@ void orcus_xlsx::read_sheet(const string& dir_path, const string& file_name, xls
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+ reinterpret_cast<const char*>(&buffer[0]), buffer.size());
+
+- auto handler = make_unique<xlsx_sheet_xml_handler>(
++ auto handler = orcus::make_unique<xlsx_sheet_xml_handler>(
+ mp_impl->m_cxt, ooxml_tokens, data->id-1, sheet);
+
+ parser.set_handler(handler.get());
+@@ -373,7 +373,7 @@ void orcus_xlsx::read_shared_strings(const string& dir_path, const string& file_
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+ reinterpret_cast<const char*>(&buffer[0]), buffer.size());
+
+- auto handler = make_unique<xml_simple_stream_handler>(
++ auto handler = orcus::make_unique<xml_simple_stream_handler>(
+ new xlsx_shared_strings_context(
+ mp_impl->m_cxt, ooxml_tokens, mp_impl->mp_factory->get_shared_strings()));
+
+@@ -406,7 +406,7 @@ void orcus_xlsx::read_styles(const string& dir_path, const string& file_name)
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+ reinterpret_cast<const char*>(&buffer[0]), buffer.size());
+
+- auto handler = make_unique<xml_simple_stream_handler>(
++ auto handler = orcus::make_unique<xml_simple_stream_handler>(
+ new xlsx_styles_context(
+ mp_impl->m_cxt, ooxml_tokens, mp_impl->mp_factory->get_styles()));
+
+@@ -441,7 +441,7 @@ void orcus_xlsx::read_table(const std::string& dir_path, const std::string& file
+ if (buffer.empty())
+ return;
+
+- auto handler = make_unique<xlsx_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens, *table);
++ auto handler = orcus::make_unique<xlsx_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens, *table);
+
+ xml_stream_parser parser(
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+@@ -471,7 +471,7 @@ void orcus_xlsx::read_pivot_cache_def(const std::string& dir_path, const std::st
+ if (buffer.empty())
+ return;
+
+- auto handler = make_unique<xlsx_pivot_cache_def_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
++ auto handler = orcus::make_unique<xlsx_pivot_cache_def_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
+
+ xml_stream_parser parser(
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+@@ -502,7 +502,7 @@ void orcus_xlsx::read_pivot_cache_rec(const std::string& dir_path, const std::st
+ if (buffer.empty())
+ return;
+
+- auto handler = make_unique<xlsx_pivot_cache_rec_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
++ auto handler = orcus::make_unique<xlsx_pivot_cache_rec_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
+
+ xml_stream_parser parser(
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+@@ -532,7 +532,7 @@ void orcus_xlsx::read_pivot_table(const std::string& dir_path, const std::string
+ if (buffer.empty())
+ return;
+
+- auto handler = make_unique<xlsx_pivot_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
++ auto handler = orcus::make_unique<xlsx_pivot_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
+
+ xml_stream_parser parser(
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+@@ -567,7 +567,7 @@ void orcus_xlsx::read_rev_headers(const std::string& dir_path, const std::string
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+ reinterpret_cast<const char*>(&buffer[0]), buffer.size());
+
+- auto handler = make_unique<xml_simple_stream_handler>(
++ auto handler = orcus::make_unique<xml_simple_stream_handler>(
+ new xlsx_revheaders_context(mp_impl->m_cxt, ooxml_tokens));
+
+ parser.set_handler(handler.get());
+@@ -600,7 +600,7 @@ void orcus_xlsx::read_rev_log(const std::string& dir_path, const std::string& fi
+ get_config(), mp_impl->m_ns_repo, ooxml_tokens,
+ reinterpret_cast<const char*>(&buffer[0]), buffer.size());
+
+- auto handler = make_unique<xml_simple_stream_handler>(
++ auto handler = orcus::make_unique<xml_simple_stream_handler>(
+ new xlsx_revlog_context(mp_impl->m_cxt, ooxml_tokens));
+
+ parser.set_handler(handler.get());
+diff --git a/src/liborcus/orcus_xml.cpp b/src/liborcus/orcus_xml.cpp
+index 2cb7fa3..f97c4f9 100644
+--- a/src/liborcus/orcus_xml.cpp
++++ b/src/liborcus/orcus_xml.cpp
+@@ -343,7 +343,7 @@ void write_range_reference_group(
+ scopes_type scopes;
+ for (spreadsheet::row_t current_row = 0; current_row < ref.row_size; ++current_row)
+ {
+- scopes.push_back(make_unique<scope>(root)); // root element
++ scopes.push_back(orcus::make_unique<scope>(root)); // root element
+
+ while (!scopes.empty())
+ {
+@@ -378,7 +378,7 @@ void write_range_reference_group(
+ // This is a non-leaf element. Push a new scope with this
+ // element and re-start the loop.
+ ++cur_scope.current_child_pos;
+- scopes.push_back(make_unique<scope>(child_elem));
++ scopes.push_back(orcus::make_unique<scope>(child_elem));
+ new_scope = true;
+ break;
+ }
+diff --git a/src/liborcus/xlsx_sheet_context.cpp b/src/liborcus/xlsx_sheet_context.cpp
+index f350049..720319a 100644
+--- a/src/liborcus/xlsx_sheet_context.cpp
++++ b/src/liborcus/xlsx_sheet_context.cpp
+@@ -547,7 +547,7 @@ void xlsx_sheet_context::end_element_cell()
+ {
+ // shared formula expression
+ session_data.m_shared_formulas.push_back(
+- make_unique<xlsx_session_data::shared_formula>(
++ orcus::make_unique<xlsx_session_data::shared_formula>(
+ m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.shared_id,
+ m_cur_formula.str.str(), m_cur_formula.ref.str()));
+ }
+@@ -555,14 +555,14 @@ void xlsx_sheet_context::end_element_cell()
+ {
+ // array formula expression
+ session_data.m_formulas.push_back(
+- make_unique<xlsx_session_data::formula>(
++ orcus::make_unique<xlsx_session_data::formula>(
+ m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.str.str(), m_cur_formula.ref.str()));
+ }
+ else
+ {
+ // normal (non-shared) formula expression
+ session_data.m_formulas.push_back(
+- make_unique<xlsx_session_data::formula>(
++ orcus::make_unique<xlsx_session_data::formula>(
+ m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.str.str()));
+ }
+ }
+@@ -570,7 +570,7 @@ void xlsx_sheet_context::end_element_cell()
+ {
+ // shared formula without formula expression
+ session_data.m_shared_formulas.push_back(
+- make_unique<xlsx_session_data::shared_formula>(
++ orcus::make_unique<xlsx_session_data::shared_formula>(
+ m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.shared_id));
+ }
+ else if (m_cur_formula.type == spreadsheet::formula_t::data_table)
+diff --git a/src/liborcus/xml_map_tree.cpp b/src/liborcus/xml_map_tree.cpp
+index 132ccb9..69fbc75 100644
+--- a/src/liborcus/xml_map_tree.cpp
++++ b/src/liborcus/xml_map_tree.cpp
+@@ -666,7 +666,7 @@ xml_map_tree::linkable* xml_map_tree::get_element_stack(
+ {
+ // Insert a new element of this name.
+ children.push_back(
+- make_unique<element>(
++ orcus::make_unique<element>(
+ token.ns, m_names.intern(token.name.get(), token.name.size()).first,
+ element_unlinked, reference_unknown));
+ cur_element = children.back().get();
+@@ -695,7 +695,7 @@ xml_map_tree::linkable* xml_map_tree::get_element_stack(
+ throw xpath_error("This attribute is already linked. You can't link the same attribute twice.");
+
+ attrs.push_back(
+- make_unique<attribute>(
++ orcus::make_unique<attribute>(
+ token.ns, m_names.intern(token.name.get(), token.name.size()).first, ref_type));
+
+ ret = attrs.back().get();
+@@ -710,7 +710,7 @@ xml_map_tree::linkable* xml_map_tree::get_element_stack(
+ {
+ // No element of that name exists.
+ children.push_back(
+- make_unique<element>(
++ orcus::make_unique<element>(
+ token.ns, m_names.intern(token.name.get(), token.name.size()).first,
+ element_linked, ref_type));
+
+diff --git a/src/liborcus/xml_structure_tree.cpp b/src/liborcus/xml_structure_tree.cpp
+index f2d62bd..3a08c64 100644
+--- a/src/liborcus/xml_structure_tree.cpp
++++ b/src/liborcus/xml_structure_tree.cpp
+@@ -451,7 +451,7 @@ void xml_structure_tree::dump_compact(ostream& os) const
+ cxt.dump(os);
+
+ element_ref ref(mp_impl->mp_root->name, &mp_impl->mp_root->prop);
+- scopes.push_back(make_unique<scope>(entity_name(), false, ref));
++ scopes.push_back(orcus::make_unique<scope>(entity_name(), false, ref));
+ while (!scopes.empty())
+ {
+ bool new_scope = false;
+@@ -505,7 +505,7 @@ void xml_structure_tree::dump_compact(ostream& os) const
+
+ // Push a new scope, and restart the loop with the new scope.
+ ++cur_scope.current_pos;
+- scopes.push_back(make_unique<scope>(this_elem.name, this_elem.prop->repeat));
++ scopes.push_back(orcus::make_unique<scope>(this_elem.name, this_elem.prop->repeat));
+ scope& child_scope = *scopes.back();
+ child_scope.elements.swap(elems);
+ child_scope.current_pos = child_scope.elements.begin();
+diff --git a/src/liborcus/yaml_document_tree.cpp b/src/liborcus/yaml_document_tree.cpp
+index b7cc4bc..5aad4f2 100644
+--- a/src/liborcus/yaml_document_tree.cpp
++++ b/src/liborcus/yaml_document_tree.cpp
+@@ -254,13 +254,13 @@ public:
+
+ if (m_root)
+ {
+- yaml_value* yv = push_value(make_unique<yaml_value_sequence>());
++ yaml_value* yv = push_value(orcus::make_unique<yaml_value_sequence>());
+ assert(yv && yv->type == node_t::sequence);
+ m_stack.push_back(parser_stack(yv));
+ }
+ else
+ {
+- m_root = make_unique<yaml_value_sequence>();
++ m_root = orcus::make_unique<yaml_value_sequence>();
+ m_stack.push_back(parser_stack(m_root.get()));
+ }
+ }
+@@ -276,13 +276,13 @@ public:
+ assert(m_in_document);
+ if (m_root)
+ {
+- yaml_value* yv = push_value(make_unique<yaml_value_map>());
++ yaml_value* yv = push_value(orcus::make_unique<yaml_value_map>());
+ assert(yv && yv->type == node_t::map);
+ m_stack.push_back(parser_stack(yv));
+ }
+ else
+ {
+- m_root = make_unique<yaml_value_map>();
++ m_root = orcus::make_unique<yaml_value_map>();
+ m_stack.push_back(parser_stack(m_root.get()));
+ }
+ }
+@@ -319,11 +319,11 @@ public:
+
+ if (m_root)
+ {
+- yaml_value* yv = push_value(make_unique<yaml_value_string>(p, n));
++ yaml_value* yv = push_value(orcus::make_unique<yaml_value_string>(p, n));
+ assert(yv && yv->type == node_t::string);
+ }
+ else
+- m_root = make_unique<yaml_value_string>(p, n);
++ m_root = orcus::make_unique<yaml_value_string>(p, n);
+ }
+
+ void number(double val)
+@@ -331,11 +331,11 @@ public:
+ assert(m_in_document);
+ if (m_root)
+ {
+- yaml_value* yv = push_value(make_unique<yaml_value_number>(val));
++ yaml_value* yv = push_value(orcus::make_unique<yaml_value_number>(val));
+ assert(yv && yv->type == node_t::number);
+ }
+ else
+- m_root = make_unique<yaml_value_number>(val);
++ m_root = orcus::make_unique<yaml_value_number>(val);
+ }
+
+ void boolean_true()
+@@ -343,11 +343,11 @@ public:
+ assert(m_in_document);
+ if (m_root)
+ {
+- yaml_value* yv = push_value(make_unique<yaml_value>(node_t::boolean_true));
++ yaml_value* yv = push_value(orcus::make_unique<yaml_value>(node_t::boolean_true));
+ assert(yv && yv->type == node_t::boolean_true);
+ }
+ else
+- m_root = make_unique<yaml_value>(node_t::boolean_true);
++ m_root = orcus::make_unique<yaml_value>(node_t::boolean_true);
+ }
+
+ void boolean_false()
+@@ -355,11 +355,11 @@ public:
+ assert(m_in_document);
+ if (m_root)
+ {
+- yaml_value* yv = push_value(make_unique<yaml_value>(node_t::boolean_false));
++ yaml_value* yv = push_value(orcus::make_unique<yaml_value>(node_t::boolean_false));
+ assert(yv && yv->type == node_t::boolean_false);
+ }
+ else
+- m_root = make_unique<yaml_value>(node_t::boolean_false);
++ m_root = orcus::make_unique<yaml_value>(node_t::boolean_false);
+ }
+
+ void null()
+@@ -367,11 +367,11 @@ public:
+ assert(m_in_document);
+ if (m_root)
+ {
+- yaml_value* yv = push_value(make_unique<yaml_value>(node_t::null));
++ yaml_value* yv = push_value(orcus::make_unique<yaml_value>(node_t::null));
+ assert(yv && yv->type == node_t::null);
+ }
+ else
+- m_root = make_unique<yaml_value>(node_t::null);
++ m_root = orcus::make_unique<yaml_value>(node_t::null);
+ }
+
+ void swap(std::vector<document_root_type>& docs)
+@@ -396,8 +396,8 @@ struct node::impl
+ impl(const yaml_value* yv) : m_node(yv) {}
+ };
+
+-node::node(const yaml_value* yv) : mp_impl(make_unique<impl>(yv)) {}
+-node::node(const node& other) : mp_impl(make_unique<impl>(other.mp_impl->m_node)) {}
++node::node(const yaml_value* yv) : mp_impl(orcus::make_unique<impl>(yv)) {}
++node::node(const node& other) : mp_impl(orcus::make_unique<impl>(other.mp_impl->m_node)) {}
+ node::node(node&& rhs) : mp_impl(std::move(rhs.mp_impl)) {}
+ node::~node() {}
+
+@@ -548,7 +548,7 @@ double node::numeric_value() const
+
+ }}
+
+-yaml_document_tree::yaml_document_tree() : mp_impl(make_unique<impl>()) {}
++yaml_document_tree::yaml_document_tree() : mp_impl(orcus::make_unique<impl>()) {}
+ yaml_document_tree::~yaml_document_tree() {}
+
+ void yaml_document_tree::load(const std::string& strm)
+diff --git a/src/mso/encryption_info.cpp b/src/mso/encryption_info.cpp
+index 1d428fc..e9bc3ad 100644
+--- a/src/mso/encryption_info.cpp
++++ b/src/mso/encryption_info.cpp
+@@ -143,11 +143,10 @@ public:
+
+ class sax_handler
+ {
+- xmlns_context& m_ns_cxt;
+ vector<sax_ns_parser_attribute> m_attrs;
+
+ public:
+- sax_handler(xmlns_context& ns_cxt) : m_ns_cxt(ns_cxt) {}
++ sax_handler(xmlns_context& /*ns_cxt*/) {}
+ void doctype(const sax::doctype_declaration&) {}
+ void start_declaration(const pstring&) {}
+ void end_declaration(const pstring&) {}
+diff --git a/src/orcus_filter_global.cpp b/src/orcus_filter_global.cpp
+index 09c2ab6..df50496 100644
+--- a/src/orcus_filter_global.cpp
++++ b/src/orcus_filter_global.cpp
+@@ -239,7 +239,7 @@ std::unique_ptr<json_config> parse_json_args(int argc, char** argv)
+ return nullptr;
+ }
+
+- std::unique_ptr<json_config> config = make_unique<json_config>();
++ std::unique_ptr<json_config> config = orcus::make_unique<json_config>();
+
+ if (vm.count("input"))
+ config->input_path = vm["input"].as<string>();
+diff --git a/src/orcus_json_main.cpp b/src/orcus_json_main.cpp
+index edca63a..6a739b2 100644
+--- a/src/orcus_json_main.cpp
++++ b/src/orcus_json_main.cpp
+@@ -25,7 +25,7 @@ using namespace orcus;
+
+ std::unique_ptr<json_document_tree> load_doc(const std::string& strm, const json_config& config)
+ {
+- std::unique_ptr<json_document_tree> doc(make_unique<json_document_tree>());
++ std::unique_ptr<json_document_tree> doc(orcus::make_unique<json_document_tree>());
+ try
+ {
+ doc->load(strm, config);
+diff --git a/src/orcus_yaml_main.cpp b/src/orcus_yaml_main.cpp
+index 3d15742..c028f64 100644
+--- a/src/orcus_yaml_main.cpp
++++ b/src/orcus_yaml_main.cpp
+@@ -76,7 +76,7 @@ std::unique_ptr<yaml_config> parse_yaml_args(int argc, char** argv)
+ return nullptr;
+ }
+
+- std::unique_ptr<yaml_config> config = make_unique<yaml_config>();
++ std::unique_ptr<yaml_config> config = orcus::make_unique<yaml_config>();
+
+ if (vm.count("input"))
+ config->input_path = vm["input"].as<string>();
+diff --git a/src/parser/json_parser_base.cpp b/src/parser/json_parser_base.cpp
+index 50e3f36..eff27b7 100644
+--- a/src/parser/json_parser_base.cpp
++++ b/src/parser/json_parser_base.cpp
+@@ -35,7 +35,7 @@ struct parser_base::impl
+ };
+
+ parser_base::parser_base(const char* p, size_t n) :
+- ::orcus::parser_base(p, n), mp_impl(make_unique<impl>()) {}
++ ::orcus::parser_base(p, n), mp_impl(orcus::make_unique<impl>()) {}
+
+ parser_base::~parser_base() {}
+
+diff --git a/src/parser/sax_parser_base.cpp b/src/parser/sax_parser_base.cpp
+index 51d56a4..3cd4f25 100644
+--- a/src/parser/sax_parser_base.cpp
++++ b/src/parser/sax_parser_base.cpp
+@@ -57,7 +57,7 @@ struct parser_base::impl
+
+ parser_base::parser_base(const char* content, size_t size) :
+ ::orcus::parser_base(content, size),
+- mp_impl(make_unique<impl>()),
++ mp_impl(orcus::make_unique<impl>()),
+ m_nest_level(0),
+ m_buffer_pos(0),
+ m_root_elem_open(true)
+diff --git a/src/parser/string_pool.cpp b/src/parser/string_pool.cpp
+index 83c0501..baba88a 100644
+--- a/src/parser/string_pool.cpp
++++ b/src/parser/string_pool.cpp
+@@ -61,7 +61,7 @@ struct string_pool::impl
+ string_store_type m_store;
+ };
+
+-string_pool::string_pool() : mp_impl(make_unique<impl>()) {}
++string_pool::string_pool() : mp_impl(orcus::make_unique<impl>()) {}
+
+ string_pool::~string_pool()
+ {
+@@ -82,7 +82,7 @@ pair<pstring, bool> string_pool::intern(const char* str, size_t n)
+ if (itr == mp_impl->m_set.end())
+ {
+ // This string has not been interned. Intern it.
+- mp_impl->m_store.push_back(make_unique<string>(str, n));
++ mp_impl->m_store.push_back(orcus::make_unique<string>(str, n));
+ pair<string_set_type::iterator,bool> r = mp_impl->m_set.insert(pstring(mp_impl->m_store.back()->data(), n));
+ if (!r.second)
+ throw general_error("failed to intern a new string instance.");
+diff --git a/src/parser/yaml_parser_base.cpp b/src/parser/yaml_parser_base.cpp
+index 656dfdc..3c93266 100644
+--- a/src/parser/yaml_parser_base.cpp
++++ b/src/parser/yaml_parser_base.cpp
+@@ -59,7 +59,7 @@ const size_t parser_base::parse_indent_end_of_stream = std::numeric_limits<size_
+ const size_t parser_base::scope_empty = std::numeric_limits<size_t>::max() - 2;
+
+ parser_base::parser_base(const char* p, size_t n) :
+- ::orcus::parser_base(p, n), mp_impl(make_unique<impl>()) {}
++ ::orcus::parser_base(p, n), mp_impl(orcus::make_unique<impl>()) {}
+
+ parser_base::~parser_base() {}
+
+diff --git a/src/spreadsheet/document.cpp b/src/spreadsheet/document.cpp
+index a80646c..17cc113 100644
+--- a/src/spreadsheet/document.cpp
++++ b/src/spreadsheet/document.cpp
+@@ -448,7 +448,7 @@ sheet* document::append_sheet(const pstring& sheet_name, row_t row_size, col_t c
+ sheet_t sheet_index = static_cast<sheet_t>(mp_impl->m_sheets.size());
+
+ mp_impl->m_sheets.push_back(
+- make_unique<sheet_item>(
++ orcus::make_unique<sheet_item>(
+ *this, sheet_name_safe, sheet_index, row_size, col_size));
+
+ mp_impl->m_context.append_sheet(
+--
+2.4.5
+
diff --git a/external/liborcus/0001-Get-it-to-build-on-Windows.patch b/external/liborcus/0001-Get-it-to-build-on-Windows.patch
new file mode 100755
index 000000000000..dca91b38d7ee
--- /dev/null
+++ b/external/liborcus/0001-Get-it-to-build-on-Windows.patch
@@ -0,0 +1,212 @@
+From c5d7282214727bcc28b6ec7e2b8016b40872cd3b Mon Sep 17 00:00:00 2001
+From: Kohei Yoshida <kohei.yoshida@gmail.com>
+Date: Mon, 7 Mar 2016 18:35:23 -0500
+Subject: [PATCH] Get it to build on Windows.
+
+---
+ include/orcus/json_parser.hpp | 32 +++++++++++++-------------------
+ include/orcus/parser_global.hpp | 4 ++--
+ src/liborcus/json_document_tree.cpp | 2 +-
+ src/liborcus/json_util.cpp | 4 ++--
+ src/liborcus/yaml_document_tree.cpp | 4 +++-
+ src/parser/parser_global.cpp | 3 +++
+ src/parser/pstring.cpp | 1 +
+ src/parser/stream.cpp | 4 ++--
+ src/parser/yaml_parser_base.cpp | 17 ++++++-----------
+ 9 files changed, 33 insertions(+), 38 deletions(-)
+
+diff --git a/include/orcus/json_parser.hpp b/include/orcus/json_parser.hpp
+index 5d733fb..183b831 100644
+--- a/include/orcus/json_parser.hpp
++++ b/include/orcus/json_parser.hpp
+@@ -204,16 +204,13 @@ void json_parser<_Handler>::object()
+ if (!res.str)
+ {
+ // Parsing was unsuccessful.
+- switch (res.length)
+- {
+- case parse_quoted_string_state::error_no_closing_quote:
+- throw json::parse_error("object: stream ended prematurely before reaching the closing quote of a key.", offset());
+- case parse_quoted_string_state::error_illegal_escape_char:
+- json::parse_error::throw_with(
+- "object: illegal escape character '", cur_char(), "' in key value.", offset());
+- default:
+- throw json::parse_error("object: unknown error while parsing a key value.", offset());
+- }
++ if (res.length == parse_quoted_string_state::error_no_closing_quote)
++ throw json::parse_error("object: stream ended prematurely before reaching the closing quote of a key.", offset());
++ else if (res.length == parse_quoted_string_state::error_illegal_escape_char)
++ json::parse_error::throw_with(
++ "object: illegal escape character '", cur_char(), "' in key value.", offset());
++ else
++ throw json::parse_error("object: unknown error while parsing a key value.", offset());
+ }
+
+ m_handler.object_key(res.str, res.length, res.transient);
+@@ -297,15 +294,12 @@ void json_parser<_Handler>::string()
+ }
+
+ // Parsing was unsuccessful.
+- switch (res.length)
+- {
+- case parse_quoted_string_state::error_no_closing_quote:
+- throw json::parse_error("string: stream ended prematurely before reaching the closing quote.", offset());
+- case parse_quoted_string_state::error_illegal_escape_char:
+- json::parse_error::throw_with("string: illegal escape character '", cur_char(), "'.", offset());
+- default:
+- throw json::parse_error("string: unknown error.", offset());
+- }
++ if (res.length == parse_quoted_string_state::error_no_closing_quote)
++ throw json::parse_error("string: stream ended prematurely before reaching the closing quote.", offset());
++ else if (res.length == parse_quoted_string_state::error_illegal_escape_char)
++ json::parse_error::throw_with("string: illegal escape character '", cur_char(), "'.", offset());
++ else
++ throw json::parse_error("string: unknown error.", offset());
+ }
+
+ }
+diff --git a/include/orcus/parser_global.hpp b/include/orcus/parser_global.hpp
+index 6fab254..b76aec4 100644
+--- a/include/orcus/parser_global.hpp
++++ b/include/orcus/parser_global.hpp
+@@ -31,8 +31,8 @@ enum class string_escape_char_t
+ */
+ struct parse_quoted_string_state
+ {
+- static constexpr size_t error_no_closing_quote = 1;
+- static constexpr size_t error_illegal_escape_char = 2;
++ ORCUS_PSR_DLLPUBLIC static const size_t error_no_closing_quote;
++ ORCUS_PSR_DLLPUBLIC static const size_t error_illegal_escape_char;
+
+ const char* str;
+ size_t length;
+diff --git a/src/liborcus/json_document_tree.cpp b/src/liborcus/json_document_tree.cpp
+index 81289e1..2fb8a41 100644
+--- a/src/liborcus/json_document_tree.cpp
++++ b/src/liborcus/json_document_tree.cpp
+@@ -54,7 +54,7 @@ using json_value = json::detail::json_value;
+ using node_t = json::detail::node_t;
+
+ const char* tab = " ";
+-constexpr char quote = '"';
++const char quote = '"';
+
+ const xmlns_id_t NS_orcus_json_xml = "http://schemas.kohei.us/orcus/2015/json";
+
+diff --git a/src/liborcus/json_util.cpp b/src/liborcus/json_util.cpp
+index 37bd2b0..8f593cd 100644
+--- a/src/liborcus/json_util.cpp
++++ b/src/liborcus/json_util.cpp
+@@ -11,8 +11,8 @@ namespace orcus { namespace json {
+
+ namespace {
+
+-constexpr char quote = '"';
+-constexpr char backslash = '\\';
++const char quote = '"';
++const char backslash = '\\';
+
+ }
+
+diff --git a/src/liborcus/yaml_document_tree.cpp b/src/liborcus/yaml_document_tree.cpp
+index 5aad4f2..27bb7e8 100644
+--- a/src/liborcus/yaml_document_tree.cpp
++++ b/src/liborcus/yaml_document_tree.cpp
+@@ -155,6 +155,8 @@ struct parser_stack
+ yaml_value* node;
+
+ parser_stack(yaml_value* _node) : node(_node) {}
++ parser_stack(const parser_stack&) = delete;
++ parser_stack(parser_stack&& r) : key(std::move(r.key)), node(r.node) {}
+ };
+
+ typedef std::unique_ptr<yaml_value> document_root_type;
+@@ -577,7 +579,7 @@ const char* kw_false = "false";
+ const char* kw_tilde = "~";
+ const char* kw_null = "null";
+
+-constexpr char quote = '"';
++const char quote = '"';
+
+ void dump_indent(std::ostringstream& os, size_t scope)
+ {
+diff --git a/src/parser/parser_global.cpp b/src/parser/parser_global.cpp
+index 6e6b656..4023689 100644
+--- a/src/parser/parser_global.cpp
++++ b/src/parser/parser_global.cpp
+@@ -12,6 +12,9 @@
+
+ namespace orcus {
+
++const size_t parse_quoted_string_state::error_no_closing_quote = 1;
++const size_t parse_quoted_string_state::error_illegal_escape_char = 2;
++
+ bool is_blank(char c)
+ {
+ return is_in(c, " \t\n\r");
+diff --git a/src/parser/pstring.cpp b/src/parser/pstring.cpp
+index 303e88e..50ab2ca 100644
+--- a/src/parser/pstring.cpp
++++ b/src/parser/pstring.cpp
+@@ -12,6 +12,7 @@
+ #include <cassert>
+ #include <iostream>
+ #include <vector>
++#include <algorithm>
+
+ using namespace std;
+
+diff --git a/src/parser/stream.cpp b/src/parser/stream.cpp
+index 00a24a0..eb73dcc 100644
+--- a/src/parser/stream.cpp
++++ b/src/parser/stream.cpp
+@@ -85,7 +85,7 @@ std::string create_parse_error_output(const std::string& strm, std::ptrdiff_t of
+ if (offset < 0)
+ return std::string();
+
+- constexpr size_t max_line_length = 60;
++ const size_t max_line_length = 60;
+
+ auto line_info = find_line_with_offset(strm, offset);
+ pstring line = std::get<0>(line_info);
+@@ -113,7 +113,7 @@ std::string create_parse_error_output(const std::string& strm, std::ptrdiff_t of
+ // The error line is too long. Only show a segment of the line where the
+ // error occurred.
+
+- constexpr size_t fixed_offset = 20;
++ const size_t fixed_offset = 20;
+
+ size_t line_start = offset_on_line - fixed_offset;
+ size_t line_end = line_start + max_line_length;
+diff --git a/src/parser/yaml_parser_base.cpp b/src/parser/yaml_parser_base.cpp
+index 3c93266..c6e7939 100644
+--- a/src/parser/yaml_parser_base.cpp
++++ b/src/parser/yaml_parser_base.cpp
+@@ -289,18 +289,13 @@ void throw_quoted_string_parse_error(const char* func_name, const parse_quoted_s
+ {
+ std::ostringstream os;
+ os << func_name << ": failed to parse ";
+- switch (ret.length)
+- {
+- case parse_quoted_string_state::error_illegal_escape_char:
+- os << "due to the presence of illegal escape character.";
+- break;
+- case parse_quoted_string_state::error_no_closing_quote:
+- os << "because the closing quote was not found.";
+- break;
+- default:
+- os << "due to unknown reason.";
++ if (ret.length == parse_quoted_string_state::error_illegal_escape_char)
++ os << "due to the presence of illegal escape character.";
++ else if (ret.length == parse_quoted_string_state::error_no_closing_quote)
++ os << "because the closing quote was not found.";
++ else
++ os << "due to unknown reason.";
+
+- }
+ throw parse_error(os.str());
+ }
+
+--
+1.8.1.msysgit.1
+
diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk
index 4411592c6f16..56debe9f4d8f 100644
--- a/external/liborcus/ExternalPackage_liborcus.mk
+++ b/external/liborcus/ExternalPackage_liborcus.mk
@@ -12,11 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,liborcus,liborcus))
$(eval $(call gb_ExternalPackage_use_external_project,liborcus,liborcus))
ifeq ($(OS),MACOSX)
-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.10.0.dylib,src/liborcus/.libs/liborcus-0.10.0.dylib))
-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.10.0.dylib,src/parser/.libs/liborcus-parser-0.10.0.dylib))
+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.11.0.dylib,src/liborcus/.libs/liborcus-0.11.0.dylib))
+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.11.0.dylib,src/parser/.libs/liborcus-parser-0.11.0.dylib))
else ifeq ($(DISABLE_DYNLOADING),)
-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.10.so.0,src/liborcus/.libs/liborcus-0.10.so.0.0.0))
-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.10.so.0,src/parser/.libs/liborcus-parser-0.10.so.0.0.0))
+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.11.so.0,src/liborcus/.libs/liborcus-0.11.so.0.0.0))
+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.11.so.0,src/parser/.libs/liborcus-parser-0.11.so.0.0.0))
endif
# vim: set noet sw=4 ts=4:
diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk
index 7eb8fdb44c2d..580ef847a5b6 100644
--- a/external/liborcus/ExternalProject_liborcus.mk
+++ b/external/liborcus/ExternalProject_liborcus.mk
@@ -13,6 +13,7 @@ $(eval $(call gb_ExternalProject_use_autoconf,liborcus,build))
$(eval $(call gb_ExternalProject_use_externals,liborcus, \
boost_headers \
+ boost_filesystem \
boost_iostreams \
boost_system \
mdds_headers \
@@ -38,9 +39,9 @@ ifneq ($(SYSTEM_ZLIB),)
liborcus_LIBS+=-lz
endif
ifneq ($(SYSTEM_BOOST),)
-liborcus_LIBS+=$(BOOST_SYSTEM_LIB) $(BOOST_IOSTREAMS_LIB)
+liborcus_LIBS+=$(BOOST_SYSTEM_LIB) $(BOOST_IOSTREAMS_LIB) $(BOOST_FILESYSTEM_LIB)
else
-liborcus_LIBS+=-L$(gb_StaticLibrary_WORKDIR) -lboost_system -lboost_iostreams
+liborcus_LIBS+=-L$(gb_StaticLibrary_WORKDIR) -lboost_system -lboost_iostreams -lboost_filesystem
endif
ifeq ($(OS),ANDROID)
liborcus_LIBS+=-lgnustl_shared -lm
@@ -96,12 +97,13 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) :
, \
--enable-shared --disable-static \
) \
- $(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
- --disable-spreadsheet-model \
- --without-tools \
- --disable-werror \
- $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
- $(if $(SYSTEM_BOOST),,\
+ $(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
+ --disable-spreadsheet-model \
+ --without-tools \
+ --disable-python \
+ --disable-werror \
+ $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+ $(if $(SYSTEM_BOOST),,\
--with-boost=$(WORKDIR)/UnpackedTarball/boost \
boost_cv_lib_iostreams=yes \
boost_cv_lib_system=yes \
@@ -111,8 +113,8 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) :
$(MAKE) \
$(if $(filter MACOSX,$(OS)),\
&& $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \
- $(gb_Package_SOURCEDIR_liborcus)/src/liborcus/.libs/liborcus-0.10.0.dylib \
- $(gb_Package_SOURCEDIR_liborcus)/src/parser/.libs/liborcus-parser-0.10.0.dylib \
+ $(gb_Package_SOURCEDIR_liborcus)/src/liborcus/.libs/liborcus-0.11.0.dylib \
+ $(gb_Package_SOURCEDIR_liborcus)/src/parser/.libs/liborcus-parser-0.11.0.dylib \
) \
)
diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk
index c3b4eecde52d..28af14ee2e18 100644
--- a/external/liborcus/Library_orcus-parser.mk
+++ b/external/liborcus/Library_orcus-parser.mk
@@ -39,6 +39,8 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\
UnpackedTarball/liborcus/src/parser/css_types \
UnpackedTarball/liborcus/src/parser/csv_parser_base \
UnpackedTarball/liborcus/src/parser/exception \
+ UnpackedTarball/liborcus/src/parser/json_parser_base \
+ UnpackedTarball/liborcus/src/parser/parser_base \
UnpackedTarball/liborcus/src/parser/parser_global \
UnpackedTarball/liborcus/src/parser/pstring \
UnpackedTarball/liborcus/src/parser/sax_parser_base \
@@ -48,6 +50,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\
UnpackedTarball/liborcus/src/parser/tokens \
UnpackedTarball/liborcus/src/parser/types \
UnpackedTarball/liborcus/src/parser/xml_namespace \
+ UnpackedTarball/liborcus/src/parser/yaml_parser_base \
UnpackedTarball/liborcus/src/parser/zip_archive \
UnpackedTarball/liborcus/src/parser/zip_archive_stream \
))
diff --git a/external/liborcus/Library_orcus.mk b/external/liborcus/Library_orcus.mk
index ae98d5e09698..96169f17e137 100644
--- a/external/liborcus/Library_orcus.mk
+++ b/external/liborcus/Library_orcus.mk
@@ -13,6 +13,7 @@ $(eval $(call gb_Library_use_unpacked,orcus,liborcus))
$(eval $(call gb_Library_use_externals,orcus,\
boost_headers \
+ boost_filesystem \
boost_iostreams \
boost_system \
mdds_headers \
@@ -53,12 +54,16 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
UnpackedTarball/liborcus/src/liborcus/gnumeric_namespace_types \
UnpackedTarball/liborcus/src/liborcus/gnumeric_sheet_context \
UnpackedTarball/liborcus/src/liborcus/gnumeric_tokens \
+ UnpackedTarball/liborcus/src/liborcus/info \
UnpackedTarball/liborcus/src/liborcus/interface \
+ UnpackedTarball/liborcus/src/liborcus/json_document_tree \
+ UnpackedTarball/liborcus/src/liborcus/json_util \
UnpackedTarball/liborcus/src/liborcus/measurement \
+ UnpackedTarball/liborcus/src/liborcus/odf_helper \
UnpackedTarball/liborcus/src/liborcus/odf_namespace_types \
UnpackedTarball/liborcus/src/liborcus/odf_para_context \
- UnpackedTarball/liborcus/src/liborcus/odf_styles \
UnpackedTarball/liborcus/src/liborcus/odf_styles_context \
+ UnpackedTarball/liborcus/src/liborcus/odf_styles \
UnpackedTarball/liborcus/src/liborcus/odf_tokens \
UnpackedTarball/liborcus/src/liborcus/ods_content_xml_context \
UnpackedTarball/liborcus/src/liborcus/ods_content_xml_handler \
@@ -73,18 +78,26 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
UnpackedTarball/liborcus/src/liborcus/opc_reader \
UnpackedTarball/liborcus/src/liborcus/orcus_csv \
UnpackedTarball/liborcus/src/liborcus/orcus_gnumeric \
+ UnpackedTarball/liborcus/src/liborcus/orcus_import_ods \
+ UnpackedTarball/liborcus/src/liborcus/orcus_import_xlsx \
UnpackedTarball/liborcus/src/liborcus/orcus_ods \
UnpackedTarball/liborcus/src/liborcus/orcus_xlsx \
+ UnpackedTarball/liborcus/src/liborcus/orcus_xls_xml \
UnpackedTarball/liborcus/src/liborcus/orcus_xml \
UnpackedTarball/liborcus/src/liborcus/session_context \
UnpackedTarball/liborcus/src/liborcus/spreadsheet_interface \
UnpackedTarball/liborcus/src/liborcus/spreadsheet_types \
- UnpackedTarball/liborcus/src/liborcus/xls_xml_namespace_types \
+ UnpackedTarball/liborcus/src/liborcus/string_helper \
UnpackedTarball/liborcus/src/liborcus/xlsx_autofilter_context \
UnpackedTarball/liborcus/src/liborcus/xlsx_conditional_format_context \
UnpackedTarball/liborcus/src/liborcus/xlsx_context \
UnpackedTarball/liborcus/src/liborcus/xlsx_handler \
UnpackedTarball/liborcus/src/liborcus/xlsx_helper \
+ UnpackedTarball/liborcus/src/liborcus/xls_xml_context \
+ UnpackedTarball/liborcus/src/liborcus/xls_xml_detection_handler \
+ UnpackedTarball/liborcus/src/liborcus/xls_xml_handler \
+ UnpackedTarball/liborcus/src/liborcus/xls_xml_namespace_types \
+ UnpackedTarball/liborcus/src/liborcus/xls_xml_tokens \
UnpackedTarball/liborcus/src/liborcus/xlsx_pivot_context \
UnpackedTarball/liborcus/src/liborcus/xlsx_revision_context \
UnpackedTarball/liborcus/src/liborcus/xlsx_session_data \
@@ -99,6 +112,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
UnpackedTarball/liborcus/src/liborcus/xml_stream_handler \
UnpackedTarball/liborcus/src/liborcus/xml_stream_parser \
UnpackedTarball/liborcus/src/liborcus/xml_structure_tree \
+ UnpackedTarball/liborcus/src/liborcus/yaml_document_tree \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk
index 825fa4960e59..0e337eff45b5 100644
--- a/external/liborcus/UnpackedTarball_liborcus.mk
+++ b/external/liborcus/UnpackedTarball_liborcus.mk
@@ -16,8 +16,15 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,liborcus,1))
$(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
external/liborcus/0001-workaround-a-linking-problem-on-windows.patch \
external/liborcus/rpath.patch.0 \
- external/liborcus/fix-crash-ooo55043-1.patch.0 \
- external/liborcus/unusedheader.patch.0 \
+ external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch \
+ external/liborcus/0001-Get-it-to-build-on-Windows.patch \
))
+ifeq ($(OS),WNT)
+$(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
+ external/liborcus/windows-constants-hack.patch \
+))
+endif
+
+
# vim: set noet sw=4 ts=4:
diff --git a/external/liborcus/fix-crash-ooo55043-1.patch.0 b/external/liborcus/fix-crash-ooo55043-1.patch.0
deleted file mode 100644
index 58a97c04424d..000000000000
--- a/external/liborcus/fix-crash-ooo55043-1.patch.0
+++ /dev/null
@@ -1,17 +0,0 @@
---- src/parser/zip_archive_stream.cpp
-+++ src/parser/zip_archive_stream.cpp
-@@ -91,8 +91,13 @@
-
- void zip_archive_stream_blob::read(unsigned char* buffer, size_t length) const
- {
-+ if (!length)
-+ return;
- // First, make sure we have enough blob to satisfy the requested stream length.
-- size_t length_available = m_size - tell();
-+ const size_t pos = tell();
-+ if (pos > m_size)
-+ throw zip_error("Stream is seeked past end. No data available");
-+ const size_t length_available = m_size - pos;
- if (length_available < length)
- throw zip_error("There is not enough stream left to fill requested length.");
-
diff --git a/external/liborcus/unusedheader.patch.0 b/external/liborcus/unusedheader.patch.0
deleted file mode 100644
index 4f7a77bf3f54..000000000000
--- a/external/liborcus/unusedheader.patch.0
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./src/parser/pstring.cpp.orig 2015-12-02 14:38:44.658744408 +0000
-+++ ./src/parser/pstring.cpp 2015-12-02 14:38:50.449658497 +0000
-@@ -13,8 +13,6 @@
- #include <iostream>
- #include <vector>
-
--#include <boost/thread/mutex.hpp>
--
- using namespace std;
-
- namespace orcus {
diff --git a/external/liborcus/windows-constants-hack.patch b/external/liborcus/windows-constants-hack.patch
new file mode 100755
index 000000000000..876bc1688a31
--- /dev/null
+++ b/external/liborcus/windows-constants-hack.patch
@@ -0,0 +1,15 @@
+diff --git a/src/liborcus/info.cpp b/src/liborcus/info.cpp
+index ae571f5..539ce18 100644
+--- a/src/liborcus/info.cpp
++++ b/src/liborcus/info.cpp
+@@ -7,7 +7,9 @@
+
+ #include "orcus/info.hpp"
+
+-#include "constants.inl"
++#define ORCUS_MAJOR_VERSION 0
++#define ORCUS_MINOR_VERSION 11
++#define ORCUS_MICRO_VERSION 0
+
+ namespace orcus {
+