Upgrade mdds and liborcus to 2.0.0 and 0.17.0, respectively.
Change-Id: I9e856fc2d61f1789a6f1702514837860539a0f49
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124573
Tested-by: Jenkins
Tested-by: René Engelhard <rene@debian.org>
Reviewed-by: Kohei Yoshida <kohei@libreoffice.org>
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index c28b049..a2a7212 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -3329,7 +3329,7 @@ $(call gb_LinkTarget_set_include,$(1),\
)
$(call gb_LinkTarget_add_libs,$(1),\
-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.16 \
-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.17 \
)
$(if $(SYSTEM_BOOST), \
@@ -3348,7 +3348,7 @@ $(call gb_LinkTarget_set_include,$(1),\
)
$(call gb_LinkTarget_add_libs,$(1),\
-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.16 \
-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.17 \
)
endef
diff --git a/bin/oss-fuzz-setup.sh b/bin/oss-fuzz-setup.sh
index 22c9ef2..c72f63d4 100755
--- a/bin/oss-fuzz-setup.sh
+++ b/bin/oss-fuzz-setup.sh
@@ -38,7 +38,7 @@ curl --no-progress-meter -S \
-C - -O https://dev-www.libreoffice.org/src/libmspub-0.1.4.tar.xz \
-C - -O https://dev-www.libreoffice.org/src/libmwaw-0.3.20.tar.xz \
-C - -O https://dev-www.libreoffice.org/src/libodfgen-0.1.8.tar.xz \
-C - -O https://dev-www.libreoffice.org/src/liborcus-0.16.1.tar.bz2 \
-C - -O https://dev-www.libreoffice.org/src/liborcus-0.17.0.tar.bz2 \
-C - -O https://dev-www.libreoffice.org/src/libpagemaker-0.0.4.tar.xz \
-C - -O https://dev-www.libreoffice.org/src/libpng-1.6.37.tar.xz \
-C - -O https://dev-www.libreoffice.org/src/librevenge-0.0.4.tar.bz2 \
diff --git a/configure.ac b/configure.ac
index b8b3793..a2a831d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10299,7 +10299,7 @@ AC_SUBST(SYSTEM_BOOST)
dnl ===================================================================
dnl Check for system mdds
dnl ===================================================================
libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
dnl ===================================================================
dnl Check for system cuckoo
@@ -10643,7 +10643,7 @@ AC_SUBST(ENABLE_FUZZERS)
dnl ===================================================================
dnl Orcus
dnl ===================================================================
libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0])
if test "$with_system_orcus" != "yes"; then
if test "$SYSTEM_BOOST" = "TRUE"; then
# ===========================================================
diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx
index ac63317..ec17374 100644
--- a/cui/source/dialogs/AdditionsDialog.cxx
+++ b/cui/source/dialogs/AdditionsDialog.cxx
@@ -54,7 +54,6 @@
#include <orcus/json_document_tree.hpp>
#include <orcus/json_parser.hpp>
#include <orcus/config.hpp>
#include <orcus/pstring.hpp>
#define PAGE_SIZE 30
@@ -158,62 +157,37 @@ void parseResponse(const std::string& rResponse, std::vector<AdditionInfo>& aAdd
try
{
AdditionInfo aNewAddition = {
OStringToOUString(std::string_view(arrayElement.child("id").string_value().get()),
OStringToOUString(arrayElement.child("id").string_value(), RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("name").string_value(), RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("author").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(std::string_view(arrayElement.child("name").string_value().get()),
OStringToOUString(arrayElement.child("url").string_value(), RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("screenshotURL").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("extensionIntroduction").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("extensionDescription").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(arrayElement.child("author").string_value().get()),
arrayElement.child("releases").child(0).child("compatibility").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(std::string_view(arrayElement.child("url").string_value().get()),
OStringToOUString(
arrayElement.child("releases").child(0).child("releaseName").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
arrayElement.child("releases").child(0).child("license").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("commentNumber").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("commentURL").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("rating").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(arrayElement.child("downloadNumber").string_value(),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(arrayElement.child("screenshotURL").string_value().get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(
arrayElement.child("extensionIntroduction").string_value().get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(
arrayElement.child("extensionDescription").string_value().get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(std::string_view(arrayElement.child("releases")
.child(0)
.child("compatibility")
.string_value()
.get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(std::string_view(arrayElement.child("releases")
.child(0)
.child("releaseName")
.string_value()
.get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(std::string_view(arrayElement.child("releases")
.child(0)
.child("license")
.string_value()
.get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(arrayElement.child("commentNumber").string_value().get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(arrayElement.child("commentURL").string_value().get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(arrayElement.child("rating").string_value().get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(
std::string_view(arrayElement.child("downloadNumber").string_value().get()),
RTL_TEXTENCODING_UTF8),
OStringToOUString(std::string_view(arrayElement.child("releases")
.child(0)
.child("downloadURL")
.string_value()
.get()),
RTL_TEXTENCODING_UTF8)
arrayElement.child("releases").child(0).child("downloadURL").string_value(),
RTL_TEXTENCODING_UTF8)
};
aAdditions.push_back(aNewAddition);
diff --git a/download.lst b/download.lst
index 561d4e5..fc95d14 100644
--- a/download.lst
+++ b/download.lst
@@ -178,8 +178,8 @@ export LXML_SHA256SUM := 940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a
export LXML_TARBALL := lxml-4.1.1.tgz
export MARIADB_CONNECTOR_C_SHA256SUM := 431434d3926f4bcce2e5c97240609983f60d7ff50df5a72083934759bb863f7b
export MARIADB_CONNECTOR_C_TARBALL := mariadb-connector-c-3.1.8-src.tar.gz
export MDDS_SHA256SUM := a66a2a8293a3abc6cd9baff7c236156e2666935cbfb69a15d64d38141638fecf
export MDDS_TARBALL := mdds-1.7.0.tar.bz2
export MDDS_SHA256SUM := 5a0fb2dd88a6420e0a69ec4c7259bcd1fe8f4a80b232c150e11f3da4c68236d7
export MDDS_TARBALL := mdds-2.0.0.tar.bz2
export MDNSRESPONDER_SHA256SUM := e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0
export MDNSRESPONDER_TARBALL := mDNSResponder-878.200.35.tar.gz
export MSPUB_SHA256SUM := ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba
@@ -204,8 +204,8 @@ export OPENLDAP_SHA256SUM := cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb89
export OPENLDAP_TARBALL := openldap-2.4.45.tgz
export OPENSSL_SHA256SUM := 0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1
export OPENSSL_TARBALL := openssl-1.1.1l.tar.gz
export ORCUS_SHA256SUM := c700d1325f744104d9fca0d5a019434901e9d51a16eedfb05792f90a298587a4
export ORCUS_TARBALL := liborcus-0.16.1.tar.bz2
export ORCUS_SHA256SUM := 2ef9d2b5ee374c683cf631b78356b110510ab895788a68d778e225d8c4176d1b
export ORCUS_TARBALL := liborcus-0.17.0.tar.bz2
export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d
export PAGEMAKER_TARBALL := libpagemaker-0.0.4.tar.xz
export PDFIUM_SHA256SUM := eb98a77eaaab9e9e8de541cfd18b9438dd3c538bd5ef163820353179727f5dc9
diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk
index 7476918..13d61a8 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.16.0.dylib,src/liborcus/.libs/liborcus-0.16.0.dylib))
$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.0.dylib,src/parser/.libs/liborcus-parser-0.16.0.dylib))
$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.17.0.dylib,src/liborcus/.libs/liborcus-0.17.0.dylib))
$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.17.0.dylib,src/parser/.libs/liborcus-parser-0.17.0.dylib))
else ifeq ($(DISABLE_DYNLOADING),)
$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.so.0,src/liborcus/.libs/liborcus-0.16.so.0.0.0))
$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.so.0,src/parser/.libs/liborcus-parser-0.16.so.0.0.0))
$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.17.so.0,src/liborcus/.libs/liborcus-0.17.so.0.0.0))
$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.17.so.0,src/parser/.libs/liborcus-parser-0.17.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 c7dd76e..76a2a6a 100644
--- a/external/liborcus/ExternalProject_liborcus.mk
+++ b/external/liborcus/ExternalProject_liborcus.mk
@@ -123,8 +123,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 \
$(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.16.0.dylib \
$(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.16.0.dylib \
$(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.17.0.dylib \
$(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.17.0.dylib \
) \
)
$(call gb_Trace_EndRange,liborcus,EXTERNAL)
diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk
index 4e46591..f266577 100644
--- a/external/liborcus/Library_orcus-parser.mk
+++ b/external/liborcus/Library_orcus-parser.mk
@@ -62,6 +62,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\
UnpackedTarball/liborcus/src/parser/string_pool \
UnpackedTarball/liborcus/src/parser/tokens \
UnpackedTarball/liborcus/src/parser/types \
UnpackedTarball/liborcus/src/parser/utf8 \
UnpackedTarball/liborcus/src/parser/xml_namespace \
UnpackedTarball/liborcus/src/parser/xml_writer \
UnpackedTarball/liborcus/src/parser/yaml_parser_base \
diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk
index 710d126..3d2cec4 100644
--- a/external/liborcus/UnpackedTarball_liborcus.mk
+++ b/external/liborcus/UnpackedTarball_liborcus.mk
@@ -20,12 +20,11 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
external/liborcus/gcc9.patch.0 \
external/liborcus/libtool.patch.0 \
external/liborcus/fix-pch.patch.0 \
external/liborcus/include.patch.0 \
external/liborcus/liborcus_newline.patch.1 \
))
$(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
external/liborcus/allow-utf-8-in-xml-names.patch \
external/liborcus/remove-unused-parameters.patch.1 \
external/liborcus/unused-variables.patch.1 \
external/liborcus/boost-filesystem.patch.1 \
external/liborcus/std-get-busted.patch.1 \
))
ifeq ($(OS),WNT)
diff --git a/external/liborcus/allow-utf-8-in-xml-names.patch b/external/liborcus/allow-utf-8-in-xml-names.patch
deleted file mode 100644
index e343088..0000000
--- a/external/liborcus/allow-utf-8-in-xml-names.patch
+++ /dev/null
@@ -1,301 +0,0 @@
From fa9b6845ed583f5486372c6ffbc59e02a140d303 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@centrum.cz>
Date: Thu, 29 Apr 2021 19:12:20 +0200
Subject: [PATCH] allow utf-8 in xml names (#137)
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-NameStartChar
has a list of all allowed characters.
---
include/orcus/sax_parser_base.hpp | 3 +
src/orcus_test_xml.cpp | 1 +
src/parser/sax_parser_base.cpp | 201 ++++++++++++++++++++++++++++--
test/xml/non-ascii/check.txt | 4 +
test/xml/non-ascii/input.xml | 4 +
5 files changed, 201 insertions(+), 12 deletions(-)
create mode 100644 test/xml/non-ascii/check.txt
create mode 100644 test/xml/non-ascii/input.xml
diff --git a/include/orcus/sax_parser_base.hpp b/include/orcus/sax_parser_base.hpp
index 9939e133..8394c07b 100644
--- a/include/orcus/sax_parser_base.hpp
+++ b/include/orcus/sax_parser_base.hpp
@@ -218,6 +218,9 @@ protected:
void element_name(parser_element& elem, std::ptrdiff_t begin_pos);
void attribute_name(pstring& attr_ns, pstring& attr_name);
void characters_with_encoded_char(cell_buffer& buf);
+
+ int is_name_char();
+ int is_name_start_char();
};
}}
diff --git a/src/orcus_test_xml.cpp b/src/orcus_test_xml.cpp
index 8a864d68..35f3dea7 100644
--- a/src/orcus_test_xml.cpp
+++ b/src/orcus_test_xml.cpp
@@ -77,6 +77,7 @@ const char* sax_parser_test_dirs[] = {
SRCDIR"/test/xml/no-decl-1/",
SRCDIR"/test/xml/underscore-identifier/",
SRCDIR"/test/xml/self-closing-root/",
+ SRCDIR"/test/xml/non-ascii/",
};
const char* sax_parser_parse_only_test_dirs[] = {
diff --git a/src/parser/sax_parser_base.cpp b/src/parser/sax_parser_base.cpp
index 97aa34ec..db51ff94 100644
--- a/src/parser/sax_parser_base.cpp
+++ b/src/parser/sax_parser_base.cpp
@@ -328,20 +328,182 @@ bool parser_base::value(pstring& str, bool decode)
return transient_stream();
}
+// https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-NameStartChar
+// Return length of the character in bytes, otherwise 0.
+template< bool only_start_name >
+static
+int is_name_char_helper(const char* mp_char, const char* mp_end)
+{
+ const unsigned char first = mp_char[0];
+ // Note that ':' technically is an allowed name character, but it is handled separately
+ // e.g. in element_name(), so here pretend it isn't.
+ if (/*first == ':' ||*/ first == '_' || (first >= 'A' && first <= 'Z') || (first >= 'a' && first <= 'z'))
+ return 1;
+ if (!only_start_name && (first == '-' || first == '.' || (first >= '0' && first <= '9')))
+ return 1;
+
+ if (first < 0x7f) // other ascii characters are not allowed
+ return 0;
+ if (mp_end < mp_char + 1)
+ return 0;
+ const unsigned char second = mp_char[1];
+
+ // 0xb7 = 0xc2 0xb7 utf-8
+ if (!only_start_name && first == 0xc2 && second == 0xb7)
+ return 2;
+
+ // [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF]
+ // 0xc0 = 0xc3 0x80 utf-8
+ if (first < 0xc3)
+ return 0;
+ // xd7 = 0xc3 0x97 utf-8, 0xf7 = 0xc3 0xb7 utf-8
+ if (first == 0xc3)
+ return second >= 0x80 && second <= 0xff && second != 0x97 && second != 0xb7 ? 2 : 0;
+ // 0x2ff = 0xcb 0xbf utf-8, 0x300 = 0xcc 0x80 utf-8
+ if (first >= 0xc4 && first <= 0xcb)
+ return 2;
+
+ // [#x0300-#x036F]
+ // 0x0300 = 0xcc 0x80 utf-8, 0x36f = 0xcd 0xaf utf-8
+ if (!only_start_name && first == 0xcc)
+ return 2;
+ if (!only_start_name && first == 0xcd && second <= 0xaf)
+ return 2;
+
+ // [#x370-#x37D] | [#x37F-#x1FFF]
+ // 0x370 = 0xcd 0xb0 utf-8, 0x37e = 0xcd 0xbe
+ if (first < 0xcd)
+ return 0;
+ if (first == 0xcd)
+ return second >= 0xb0 && second != 0xbe ? 2 : 0;
+ // 0x07ff = 0xdf 0xbf utf-8 (the last 2-byte utf-8)
+ if (first <= 0xdf)
+ return 2;
+
+ if (first < 0xe0)
+ return 0;
+ if (mp_end < mp_char + 2)
+ return 0;
+ const unsigned char third = mp_char[2];
+
+ // 0x0800 = 0xe0 0xa0 0x80 utf-8, 0x1fff = 0xe1 0xbf 0xbf utf-8, 0x2000 = 0xe2 0x80 0x80
+ if (first == 0xe0 || first == 0xe1)
+ return 3;
+
+ // [#x200C-#x200D]
+ // 0x200c = 0xe2 0x80 0x8c utf-8, 0x200d = 0xe2 0x80 0x8d utf-8
+ if (first < 0xe2)
+ return 0;
+ if (first == 0xe2 && second == 0x80 && (third == 0x8c || third == 0x8d))
+ return 3;
+
+ // [#x203F-#x2040]
+ // 0x203f = 0xe2 0x80 0xbf utf-8, 0x2040 = 0xe2 0x81 0x80 utf-8
+ if (!only_start_name && first == 0xe2 && second == 0x80 && third == 0xbf)
+ return 3;
+ if (!only_start_name && first == 0xe2 && second == 0x81 && third == 0x80)
+ return 3;
+
+ // [#x2070-#x218F]
+ // 0x2070 = 0xe2 0x81 0xb0 utf-8, 0x218f = 0xe2 0x86 0x8f utf-8
+ if (first == 0xe2)
+ {
+ if (second < 0x81)
+ return 0;
+ if (second >= 0x81 && second < 0x86)
+ return 3;
+ if (second == 0x86 && third <= 0x8f)
+ return 3;
+ }
+
+ // [#x2C00-#x2FEF]
+ // 0x2c00 = 0xe2 0xb0 0x80 utf-8, 0x2fef = 0xe2 0xbf 0xaf utf-8
+ if (first == 0xe2)
+ {
+ if (second < 0xb0)
+ return 0;
+ if (second < 0xbf)
+ return 3;
+ if (second == 0xbf && third <= 0xaf)
+ return 3;
+ }
+
+ // [#x3001-#xD7FF]
+ // 0x3001 = 0xe3 0x80 0x81 utf-8, 0xd7ff = 0xed 0x9f 0xbf utf-8, 0xd800 = 0xed 0xa0 0x80 utf-8
+ if (first < 0xe3)
+ return 0;
+ if (first < 0xed)
+ return 3;
+ if (first == 0xed && second <= 0x9f)
+ return 3;
+
+ // [#xF900-#xFDCF]
+ // 0xf900 = 0xef 0xa4 0x80 utf-8, 0xfdcf = 0xef 0xb7 0x8f utf-8
+ if (first == 0xef)
+ {
+ if (second < 0xa4)
+ return 0;
+ if (second < 0xb7)
+ return 3;
+ if (second == 0xb7 && third <= 0x8f)
+ return 3;
+ }
+
+ // [#xFDF0-#xFFFD]
+ // 0xfdf0 = 0xef 0xb7 0xb0 utf-8, 0xfffd = 0xef 0xbf 0xbd utf-8
+ if (first == 0xef)
+ {
+ assert(second >= 0xb7);
+ if (second == 0xb7 && third < 0xb0)
+ return 0;
+ if (second < 0xbe)
+ return 3;
+ if (second == 0xbf && third <= 0xbd)
+ return 3;
+ }
+
+ if (first < 0xf0)
+ return 0;
+ if (mp_end < mp_char + 3)
+ return 0;
+ // const unsigned char fourth = mp_char[3];
+
+ // [#x10000-#xEFFFF]
+ // 0x10000 = 0xf0 0x90 0x80 0x80 utf-8, 0xeffff = 0xf3 0xaf 0xbf 0xbf utf-8,
+ // 0xf0000 = 0xf3 0xb0 0x80 0x80 utf-8
+ if (first >= 0xf0 && first < 0xf2)
+ return 4;
+ if (first == 0xf3 && second < 0xb0)
+ return 4;
+
+ return 0;
+}
+
+int parser_base::is_name_char()
+{
+ return is_name_char_helper<false>(mp_char, mp_end);
+}
+
+int parser_base::is_name_start_char()
+{
+ return is_name_char_helper<true>(mp_char, mp_end);
+}
+
void parser_base::name(pstring& str)
{
const char* p0 = mp_char;
- char c = cur_char();
- if (!is_alpha(c) && c != '_')
+ int skip = is_name_start_char();
+ if (skip == 0)
{
::std::ostringstream os;
- os << "name must begin with an alphabet, but got this instead '" << c << "'";
+ os << "name must begin with an alphabet, but got this instead '" << cur_char() << "'";
throw malformed_xml_error(os.str(), offset());
}
+ next(skip);
#if defined(__ORCUS_CPU_FEATURES) && defined(__SSE4_2__)
- const __m128i match = _mm_loadu_si128((const __m128i*)"azAZ09--__");
+ const __m128i match = _mm_loadu_si128((const __m128i*)"azAZ09--__..");
const int mode = _SIDD_LEAST_SIGNIFICANT | _SIDD_CMP_RANGES | _SIDD_UBYTE_OPS | _SIDD_NEGATIVE_POLARITY;
size_t n_total = available_size();
@@ -351,20 +513,35 @@ void parser_base::name(pstring& str)
__m128i char_block = _mm_loadu_si128((const __m128i*)mp_char);
int n = std::min<size_t>(16u, n_total);
- int r = _mm_cmpestri(match, 10, char_block, n, mode);
+ int r = _mm_cmpestri(match, 12, char_block, n, mode);
mp_char += r; // Move the current char position.
+ n_total -= r;
- if (r < 16)
- // No need to move to the next segment. Stop here.
- break;
+ if (r < 16 && n_total)
+ {
+ // There is a character that does not match the SSE-based ASCII-only check.
+ // It may either by an ascii character that is not allowed, in which case stop,
+ // or it may possibly be an allowed utf-8 character, in which case move over it
+ // using the slow function.
+ skip = is_name_char();
+ if(skip == 0)
+ break;
+ next(skip);
+ n_total -= skip;
+ }
- // Skip 16 chars to the next segment.
- n_total -= 16;
}
+ cur_char_checked(); // check end of xml stream
#else
- while (is_alpha(c) || is_numeric(c) || is_name_char(c))
- c = next_char_checked();
+ for(;;)
+ {
+ cur_char_checked(); // check end of xml stream
+ skip = is_name_char();
+ if(skip == 0)
+ break;
+ next(skip);
+ }
#endif
str = pstring(p0, mp_char-p0);
diff --git a/test/xml/non-ascii/check.txt b/test/xml/non-ascii/check.txt
new file mode 100644
index 00000000..77b7c003
--- /dev/null
+++ b/test/xml/non-ascii/check.txt
@@ -0,0 +1,4 @@
+/Myšička
+/Myšička@jméno="Žužla"
+/Myšička/Nožičky
+/Myšička/Nožičky"4"
diff --git a/test/xml/non-ascii/input.xml b/test/xml/non-ascii/input.xml
new file mode 100644
index 00000000..c516744b
--- /dev/null
+++ b/test/xml/non-ascii/input.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Myšička jméno="Žužla">
+ <Nožičky>4</Nožičky>
+</Myšička>
--
2.26.2
diff --git a/external/liborcus/boost-filesystem.patch.1 b/external/liborcus/boost-filesystem.patch.1
new file mode 100644
index 0000000..14128b4
--- /dev/null
+++ b/external/liborcus/boost-filesystem.patch.1
@@ -0,0 +1,41 @@
From e44737bad582fa2a05a23820e49d7930db710412 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@gmail.com>
Date: Tue, 2 Nov 2021 21:33:19 -0400
Subject: [PATCH] Try using boost::filesystem instead of std::filesystem.
std::filesystem still seems unreliable.
---
src/parser/stream.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/parser/stream.cpp b/src/parser/stream.cpp
index 09855300..00395f59 100644
--- a/src/parser/stream.cpp
+++ b/src/parser/stream.cpp
@@ -17,12 +17,12 @@
#include <locale>
#include <codecvt>
#include <iostream>
-#include <filesystem>
+#include <boost/filesystem.hpp>
#include <boost/interprocess/file_mapping.hpp>
#include <boost/interprocess/mapped_region.hpp>
-namespace fs = std::filesystem;
+namespace fs = boost::filesystem;
namespace bip = boost::interprocess;
namespace orcus {
@@ -162,7 +162,7 @@ struct file_content::impl
impl() : content_size(0), content(nullptr) {}
impl(std::string_view filepath) :
- content_size(fs::file_size(filepath)),
+ content_size(fs::file_size(std::string{filepath}.c_str())),
mapped_file(std::string{filepath}.c_str(), bip::read_only),
mapped_region(mapped_file, bip::read_only, 0, content_size),
content(nullptr)
--
2.25.1
diff --git a/external/liborcus/inc/pch/precompiled_orcus-parser.hxx b/external/liborcus/inc/pch/precompiled_orcus-parser.hxx
index 1427148..a8047d5 100644
--- a/external/liborcus/inc/pch/precompiled_orcus-parser.hxx
+++ b/external/liborcus/inc/pch/precompiled_orcus-parser.hxx
@@ -69,7 +69,6 @@
#include <orcus/json_parser_thread.hpp>
#include <orcus/parser_base.hpp>
#include <orcus/parser_global.hpp>
#include <orcus/pstring.hpp>
#include <orcus/sax_parser_base.hpp>
#include <orcus/sax_token_parser.hpp>
#include <orcus/sax_token_parser_thread.hpp>
diff --git a/external/liborcus/inc/pch/precompiled_orcus.hxx b/external/liborcus/inc/pch/precompiled_orcus.hxx
index 9edb13a..9543b44 100644
--- a/external/liborcus/inc/pch/precompiled_orcus.hxx
+++ b/external/liborcus/inc/pch/precompiled_orcus.hxx
@@ -81,7 +81,6 @@
#include <orcus/orcus_xml.hpp>
#include <orcus/parser_base.hpp>
#include <orcus/parser_global.hpp>
#include <orcus/pstring.hpp>
#include <orcus/sax_ns_parser.hpp>
#include <orcus/sax_parser.hpp>
#include <orcus/sax_parser_base.hpp>
diff --git a/external/liborcus/include.patch.0 b/external/liborcus/include.patch.0
deleted file mode 100644
index a3275b1..0000000
--- a/external/liborcus/include.patch.0
+++ /dev/null
@@ -1,30 +0,0 @@
--- src/liborcus/orcus_xlsx.cpp
+++ src/liborcus/orcus_xlsx.cpp
@@ -32,6 +32,7 @@
#include <cstdlib>
#include <iostream>
+#include <limits>
#include <string>
#include <cstring>
#include <sstream>
--- src/liborcus/xls_xml_context.cpp
+++ src/liborcus/xls_xml_context.cpp
@@ -16,6 +16,7 @@
#include <mdds/sorted_string_map.hpp>
#include <iostream>
+#include <limits>
using namespace std;
namespace ss = orcus::spreadsheet;
--- src/liborcus/xlsx_revision_context.cpp
+++ src/liborcus/xlsx_revision_context.cpp
@@ -16,6 +16,7 @@
#include "orcus/global.hpp"
#include <iostream>
+#include <limits>
using namespace std;
diff --git a/external/liborcus/remove-unused-parameters.patch.1 b/external/liborcus/remove-unused-parameters.patch.1
new file mode 100644
index 0000000..251ed80
--- /dev/null
+++ b/external/liborcus/remove-unused-parameters.patch.1
@@ -0,0 +1,1209 @@
From 5bb64db5ecfd1dc3be3304092f4bdebff54deae5 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@gmail.com>
Date: Tue, 2 Nov 2021 19:33:29 -0400
Subject: [PATCH] Remove unused parameter warnings.
---
doc_example/json_parser_1.cpp | 4 +-
...preadsheet_doc_2_sheets_no_string_pool.cpp | 22 ++++-----
.../spreadsheet_doc_2_sheets_with_formula.cpp | 47 +++++++++----------
...eadsheet_doc_2_sheets_with_string_pool.cpp | 40 +++++++---------
doc_example/xml_mapping_1.cpp | 2 +-
src/liborcus/css_document_tree.cpp | 3 ++
src/liborcus/dom_tree.cpp | 2 +-
src/liborcus/gnumeric_cell_context_test.cpp | 14 +++---
src/liborcus/json_document_tree.cpp | 6 +--
src/liborcus/json_structure_mapper.cpp | 2 +-
src/liborcus/json_structure_tree.cpp | 4 +-
src/liborcus/mock_spreadsheet.cpp | 14 +++---
src/liborcus/ods_dde_links_context.cpp | 10 ++--
src/liborcus/opc_context.cpp | 16 +++----
src/liborcus/orcus_json.cpp | 4 +-
src/liborcus/orcus_xml_map_def.cpp | 4 +-
src/liborcus/spreadsheet_interface.cpp | 4 +-
src/liborcus/xls_xml_context.cpp | 12 ++---
src/liborcus/xls_xml_detection_handler.cpp | 2 +-
src/liborcus/xlsx_drawing_context.cpp | 2 +-
src/liborcus/xlsx_sheet_context.cpp | 2 +-
src/liborcus/xlsx_sheet_context_test.cpp | 8 ++--
src/liborcus/xlsx_table_context.cpp | 2 +-
src/liborcus/xml_structure_tree.cpp | 6 +--
src/liborcus/xpath_parser_test.cpp | 2 +-
src/orcus_env_dump.cpp | 2 +-
src/orcus_test_json_mapped.cpp | 2 +-
src/orcus_test_xml.cpp | 2 +-
src/orcus_test_xml_mapped.cpp | 2 +-
src/parser/sax_token_parser_test.cpp | 2 +-
src/parser/sax_token_parser_thread.cpp | 2 +-
src/parser/utf8.cpp | 2 +-
src/parser/utf8_test.cpp | 2 +-
src/parser/xml_writer_test.cpp | 2 +-
src/python/cell.cpp | 2 +-
src/python/document.cpp | 4 +-
src/python/formula_tokens.cpp | 2 +-
src/python/global.cpp | 2 +-
src/python/json.cpp | 4 +-
src/python/named_expression.cpp | 2 +-
src/python/named_expressions.cpp | 4 +-
src/python/sheet.cpp | 6 +--
src/python/sheet_rows.cpp | 2 +-
src/spreadsheet/factory_sheet.cpp | 18 +++----
src/spreadsheet/sheet_impl.cpp | 2 +-
45 files changed, 143 insertions(+), 157 deletions(-)
diff --git a/doc_example/json_parser_1.cpp b/doc_example/json_parser_1.cpp
index 6fc6de12..832e5176 100644
--- a/doc_example/json_parser_1.cpp
+++ b/doc_example/json_parser_1.cpp
@@ -8,12 +8,12 @@ using namespace std;
class json_parser_handler : public orcus::json_handler
{
public:
- void object_key(const char* p, size_t len, bool transient)
+ void object_key(const char* p, size_t len, bool /*transient*/)
{
cout << "object key: " << std::string_view(p, len) << endl;
}
- void string(const char* p, size_t len, bool transient)
+ void string(const char* p, size_t len, bool /*transient*/)
{
cout << "string: " << std::string_view(p, len) << endl;
}
diff --git a/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp b/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp
index 63ffacc3..0aa86caf 100644
--- a/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp
+++ b/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp
@@ -64,22 +64,17 @@ public:
}
// We don't implement these methods for now.
- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {}
+ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {}
- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {}
+ virtual void set_bool(ss::row_t, ss::col_t, bool) override {}
- virtual void set_date_time(
- ss::row_t row, ss::col_t col,
- int year, int month, int day, int hour, int minute, double second) override {}
+ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {}
- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {}
+ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {}
- virtual void set_format(
- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end,
- std::size_t xf_index) override {}
+ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {}
- virtual void fill_down_cells(
- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {}
+ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {}
};
//!code-end: my_sheet
@@ -89,14 +84,13 @@ class my_import_factory : public ss::iface::import_factory
std::vector<std::unique_ptr<my_sheet>> m_sheets;
public:
- virtual ss::iface::import_sheet* append_sheet(
- ss::sheet_t sheet_index, std::string_view name) override
+ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override
{
m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size()));
return m_sheets.back().get();
}
- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override
+ virtual ss::iface::import_sheet* get_sheet(std::string_view) override
{
// TODO : implement this.
return nullptr;
diff --git a/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp b/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp
index 1c3f3d5b..11e1932e 100644
--- a/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp
+++ b/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp
@@ -87,15 +87,15 @@ public:
m_formula.grammar = grammar;
}
- virtual void set_shared_formula_index(std::size_t index) override {}
+ virtual void set_shared_formula_index(std::size_t) override {}
- virtual void set_result_string(std::string_view value) override {}
+ virtual void set_result_string(std::string_view) override {}
- virtual void set_result_value(double value) override {}
+ virtual void set_result_value(double) override {}
virtual void set_result_empty() override {}
- virtual void set_result_bool(bool value) override {}
+ virtual void set_result_bool(bool) override {}
virtual void commit() override
{
@@ -154,22 +154,17 @@ public:
}
// We don't implement these methods for now.
- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {}
+ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {}
- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {}
+ virtual void set_bool(ss::row_t, ss::col_t, bool) override {}
- virtual void set_date_time(
- ss::row_t row, ss::col_t col,
- int year, int month, int day, int hour, int minute, double second) override {}
+ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {}
- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {}
+ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {}
- virtual void set_format(
- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end,
- std::size_t xf_index) override {}
+ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {}
- virtual void fill_down_cells(
- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {}
+ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {}
virtual ss::iface::import_formula* get_formula() override
{
@@ -208,21 +203,21 @@ public:
}
// The following methods are for formatted text segments, which we ignore for now.
- virtual void set_segment_bold(bool b) override {}
+ virtual void set_segment_bold(bool) override {}
- virtual void set_segment_font(std::size_t font_index) override {}
+ virtual void set_segment_font(std::size_t) override {}
virtual void set_segment_font_color(
- ss::color_elem_t alpha,
- ss::color_elem_t red,
- ss::color_elem_t green,
- ss::color_elem_t blue) override {}
+ ss::color_elem_t,
+ ss::color_elem_t,
+ ss::color_elem_t,
+ ss::color_elem_t) override {}
- virtual void set_segment_font_name(std::string_view s) override {}
+ virtual void set_segment_font_name(std::string_view) override {}
- virtual void set_segment_font_size(double point) override {}
+ virtual void set_segment_font_size(double) override {}
- virtual void set_segment_italic(bool b) override {}
+ virtual void set_segment_italic(bool) override {}
virtual void append_segment(std::string_view s) override
{
@@ -256,14 +251,14 @@ public:
return &m_shared_strings;
}
- virtual ss::iface::import_sheet* append_sheet(ss::sheet_t sheet_index, std::string_view name) override
+ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override
{
// Pass the string pool to each sheet instance.
m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size(), m_string_pool));
return m_sheets.back().get();
}
- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override
+ virtual ss::iface::import_sheet* get_sheet(std::string_view) override
{
// TODO : implement this.
return nullptr;
diff --git a/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp b/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp
index ff69c835..0153dd08 100644
--- a/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp
+++ b/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp
@@ -70,22 +70,17 @@ public:
}
// We don't implement these methods for now.
- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {}
+ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {}
- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {}
+ virtual void set_bool(ss::row_t, ss::col_t, bool) override {}
- virtual void set_date_time(
- ss::row_t row, ss::col_t col,
- int year, int month, int day, int hour, int minute, double second) override {}
+ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {}
- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {}
+ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {}
- virtual void set_format(
- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end,
- std::size_t xf_index) override {}
+ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {}
- virtual void fill_down_cells(
- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {}
+ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {}
};
//!code-start: my_shared_strings
@@ -119,21 +114,21 @@ public:
}
// The following methods are for formatted text segments, which we ignore for now.
- virtual void set_segment_bold(bool b) override {}
+ virtual void set_segment_bold(bool) override {}
- virtual void set_segment_font(std::size_t font_index) override {}
+ virtual void set_segment_font(std::size_t) override {}
virtual void set_segment_font_color(
- ss::color_elem_t alpha,
- ss::color_elem_t red,
- ss::color_elem_t green,
- ss::color_elem_t blue) override {}
+ ss::color_elem_t,
+ ss::color_elem_t,
+ ss::color_elem_t,
+ ss::color_elem_t) override {}
- virtual void set_segment_font_name(std::string_view s) override {}
+ virtual void set_segment_font_name(std::string_view) override {}
- virtual void set_segment_font_size(double point) override {}
+ virtual void set_segment_font_size(double) override {}
- virtual void set_segment_italic(bool b) override {}
+ virtual void set_segment_italic(bool) override {}
virtual void append_segment(std::string_view s) override
{
@@ -169,15 +164,14 @@ public:
return &m_shared_strings;
}
- virtual ss::iface::import_sheet* append_sheet(
- ss::sheet_t sheet_index, std::string_view name) override
+ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override
{
// Pass the string pool to each sheet instance.
m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size(), m_string_pool));
return m_sheets.back().get();
}
- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override
+ virtual ss::iface::import_sheet* get_sheet(std::string_view) override
{
// TODO : implement this.
return nullptr;
diff --git a/doc_example/xml_mapping_1.cpp b/doc_example/xml_mapping_1.cpp
index f23d620c..33d6ff22 100644
--- a/doc_example/xml_mapping_1.cpp
+++ b/doc_example/xml_mapping_1.cpp
@@ -118,7 +118,7 @@ void run_xmlns_different_ns_same_alias()
cout << (alias_1 == alias_2 ? "same" : "different") << endl;
}
-int main(int argc, char** argv)
+int main()
{
run_xmlns_example();
run_xmlns_stacked();
diff --git a/src/liborcus/css_document_tree.cpp b/src/liborcus/css_document_tree.cpp
index 5f84c013..46bf7e91 100644
--- a/src/liborcus/css_document_tree.cpp
+++ b/src/liborcus/css_document_tree.cpp
@@ -54,6 +54,9 @@ public:
{
#if ORCUS_DEBUG_CSS_DOCTREE
cout << "@" << string(p, n).c_str();
+#else
+ (void)p;
+ (void)n;
#endif
}
diff --git a/src/liborcus/dom_tree.cpp b/src/liborcus/dom_tree.cpp
index 51db6ef8..64ecf8ef 100644
--- a/src/liborcus/dom_tree.cpp
+++ b/src/liborcus/dom_tree.cpp
@@ -527,7 +527,7 @@ void document_tree::impl::end_element(const sax_ns_parser_element& elem)
m_elem_stack.pop_back();
}
-void document_tree::impl::characters(const pstring& val, bool transient)
+void document_tree::impl::characters(const pstring& val, bool /*transient*/)
{
if (m_elem_stack.empty())
// No root element has been encountered. Ignore this.
diff --git a/src/liborcus/gnumeric_cell_context_test.cpp b/src/liborcus/gnumeric_cell_context_test.cpp
index fc543096..aeec16bd 100644
--- a/src/liborcus/gnumeric_cell_context_test.cpp
+++ b/src/liborcus/gnumeric_cell_context_test.cpp
@@ -41,19 +41,19 @@ public:
assert(formula == "=arrayFormula");
}
- virtual void set_result_bool(row_t row, col_t col, bool value) override
+ virtual void set_result_bool(row_t, col_t, bool) override
{
}
- virtual void set_result_empty(row_t row, col_t col) override
+ virtual void set_result_empty(row_t, col_t) override
{
}
- virtual void set_result_string(row_t row, col_t col, std::string_view) override
+ virtual void set_result_string(row_t, col_t, std::string_view) override
{
}
- virtual void set_result_value(row_t row, col_t col, double value) override
+ virtual void set_result_value(row_t, col_t, double) override
{
}
@@ -77,11 +77,11 @@ public:
assert(formula == "=formula");
}
- virtual void set_shared_formula_index(size_t index) override
+ virtual void set_shared_formula_index(size_t) override
{
}
- virtual void set_result_bool(bool value) override
+ virtual void set_result_bool(bool) override
{
}
@@ -93,7 +93,7 @@ public:
{
}
- virtual void set_result_value(double value) override
+ virtual void set_result_value(double) override
{
}
diff --git a/src/liborcus/json_document_tree.cpp b/src/liborcus/json_document_tree.cpp
index 4eedea47..c163a364 100644
--- a/src/liborcus/json_document_tree.cpp
+++ b/src/liborcus/json_document_tree.cpp
@@ -1217,7 +1217,7 @@ array::array(std::initializer_list<detail::init::node> vs)
array::~array() {}
object::object() {}
-object::object(object&& other) {}
+object::object(object&& /*other*/) {}
object::~object() {}
namespace {
@@ -1388,7 +1388,7 @@ struct node::impl
m_value_array(std::move(array.m_vs))
{}
- impl(json::object obj) :
+ impl(json::object /*obj*/) :
m_type(detail::node_t::object) {}
};
@@ -1634,7 +1634,7 @@ document_tree::document_tree(array vs) : mp_impl(std::make_unique<impl>())
}
}
-document_tree::document_tree(object obj) : mp_impl(std::make_unique<impl>())
+document_tree::document_tree(object /*obj*/) : mp_impl(std::make_unique<impl>())
{
mp_impl->m_root = mp_impl->m_res.obj_pool.construct(detail::node_t::object);
mp_impl->m_root->value.object = mp_impl->m_res.obj_pool_jvo.construct();
diff --git a/src/liborcus/json_structure_mapper.cpp b/src/liborcus/json_structure_mapper.cpp
index 111d1674..09a9e97e 100644
--- a/src/liborcus/json_structure_mapper.cpp
+++ b/src/liborcus/json_structure_mapper.cpp
@@ -40,7 +40,7 @@ void structure_mapper::push_range()
m_current_range.row_groups.clear();
}
-void structure_mapper::traverse(size_t pos)
+void structure_mapper::traverse(size_t /*pos*/)
{
json::structure_tree::node_properties node = m_walker.get_node();
diff --git a/src/liborcus/json_structure_tree.cpp b/src/liborcus/json_structure_tree.cpp
index 5c9d600c..3ae8ecc0 100644
--- a/src/liborcus/json_structure_tree.cpp
+++ b/src/liborcus/json_structure_tree.cpp
@@ -235,12 +235,12 @@ struct structure_tree::impl
push_value();
}
- void string(const char* p, size_t len, bool transient)
+ void string(const char* /*p*/, size_t /*len*/, bool /*transient*/)
{
push_value();
}
- void number(double val)
+ void number(double /*val*/)
{
push_value();
}
diff --git a/src/liborcus/mock_spreadsheet.cpp b/src/liborcus/mock_spreadsheet.cpp
index 3bde38ff..4042bdc9 100644
--- a/src/liborcus/mock_spreadsheet.cpp
+++ b/src/liborcus/mock_spreadsheet.cpp
@@ -211,22 +211,22 @@ import_formula::~import_formula()
{
}
-void import_formula::set_position(row_t row, col_t col)
+void import_formula::set_position(row_t, col_t)
{
assert(false);
}
-void import_formula::set_formula(formula_grammar_t grammar, std::string_view)
+void import_formula::set_formula(formula_grammar_t, std::string_view)
{
assert(false);
}
-void import_formula::set_shared_formula_index(size_t index)
+void import_formula::set_shared_formula_index(size_t)
{
assert(false);
}
-void import_formula::set_result_value(double value)
+void import_formula::set_result_value(double)
{
assert(false);
}
@@ -236,7 +236,7 @@ void import_formula::set_result_string(std::string_view)
assert(false);
}
-void import_formula::set_result_bool(bool value)
+void import_formula::set_result_bool(bool)
{
assert(false);
}
@@ -257,7 +257,7 @@ import_sheet::~import_sheet()
{
}
-void import_sheet::set_auto(row_t, col_t, std::string_view s)
+void import_sheet::set_auto(row_t, col_t, std::string_view)
{
assert(false);
}
@@ -292,7 +292,7 @@ void import_sheet::set_format(row_t, col_t, row_t, col_t, size_t)
assert(false);
}
-void import_sheet::fill_down_cells(row_t src_row, col_t src_col, row_t range_size)
+void import_sheet::fill_down_cells(row_t, col_t, row_t)
{
assert(false);
}
diff --git a/src/liborcus/ods_dde_links_context.cpp b/src/liborcus/ods_dde_links_context.cpp
index db7ab672..783b106f 100644
--- a/src/liborcus/ods_dde_links_context.cpp
+++ b/src/liborcus/ods_dde_links_context.cpp
@@ -14,21 +14,21 @@ ods_dde_links_context::ods_dde_links_context(session_context& session_cxt, const
ods_dde_links_context::~ods_dde_links_context() {}
-bool ods_dde_links_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const
+bool ods_dde_links_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const
{
return true;
}
-xml_context_base* ods_dde_links_context::create_child_context(xmlns_id_t ns, xml_token_t name)
+xml_context_base* ods_dde_links_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/)
{
return nullptr;
}
-void ods_dde_links_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child)
+void ods_dde_links_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/)
{
}
-void ods_dde_links_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t> &attrs)
+void ods_dde_links_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/)
{
xml_token_pair_t parent = push_stack(ns, name);
(void)parent;
@@ -41,7 +41,7 @@ bool ods_dde_links_context::end_element(xmlns_id_t ns, xml_token_t name)
return pop_stack(ns, name);
}
-void ods_dde_links_context::characters(const pstring &str, bool transient)
+void ods_dde_links_context::characters(const pstring& /*str*/, bool /*transient*/)
{
}
diff --git a/src/liborcus/opc_context.cpp b/src/liborcus/opc_context.cpp
index ef1a591f..d3cddabd 100644
--- a/src/liborcus/opc_context.cpp
+++ b/src/liborcus/opc_context.cpp
@@ -90,17 +90,17 @@ opc_content_types_context::~opc_content_types_context()
{
}
-bool opc_content_types_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const
+bool opc_content_types_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const
{
return true;
}
-xml_context_base* opc_content_types_context::create_child_context(xmlns_id_t ns, xml_token_t name)
+xml_context_base* opc_content_types_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/)
{
return nullptr;
}
-void opc_content_types_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child)
+void opc_content_types_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/)
{
}
@@ -153,7 +153,7 @@ bool opc_content_types_context::end_element(xmlns_id_t ns, xml_token_t name)
return pop_stack(ns, name);
}
-void opc_content_types_context::characters(const pstring &str, bool transient)
+void opc_content_types_context::characters(const pstring& /*str*/, bool /*transient*/)
{
}
@@ -256,17 +256,17 @@ opc_relations_context::~opc_relations_context()
{
}
-bool opc_relations_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const
+bool opc_relations_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const
{
return true;
}
-xml_context_base* opc_relations_context::create_child_context(xmlns_id_t ns, xml_token_t name)
+xml_context_base* opc_relations_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/)
{
return nullptr;
}
-void opc_relations_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child)
+void opc_relations_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/)
{
}
@@ -302,7 +302,7 @@ bool opc_relations_context::end_element(xmlns_id_t ns, xml_token_t name)
return pop_stack(ns, name);
}
-void opc_relations_context::characters(const pstring &str, bool transient)
+void opc_relations_context::characters(const pstring& /*str*/, bool /*transient*/)
{
}
diff --git a/src/liborcus/orcus_json.cpp b/src/liborcus/orcus_json.cpp
index 2b5967d5..69672190 100644
--- a/src/liborcus/orcus_json.cpp
+++ b/src/liborcus/orcus_json.cpp
@@ -137,7 +137,7 @@ public:
push_node(json_map_tree::input_node_type::object);
}
- void object_key(const char* p, size_t len, bool transient)
+ void object_key(const char* p, size_t len, bool /*transient*/)
{
m_walker.set_object_key(p, len);
}
@@ -168,7 +168,7 @@ public:
pop_node(json_map_tree::input_node_type::value);
}
- void string(const char* p, size_t len, bool transient)
+ void string(const char* p, size_t len, bool /*transient*/)
{
push_node(json_map_tree::input_node_type::value);
commit_value(json_value(p, len));
diff --git a/src/liborcus/orcus_xml_map_def.cpp b/src/liborcus/orcus_xml_map_def.cpp
index 4c70e060..889dbcb0 100644
--- a/src/liborcus/orcus_xml_map_def.cpp
+++ b/src/liborcus/orcus_xml_map_def.cpp
@@ -43,9 +43,9 @@ public:
xml_map_sax_handler(orcus_xml& app) : m_app(app) {}
void doctype(const sax::doctype_declaration&) {}
- void start_declaration(const pstring& name) {}
+ void start_declaration(const pstring& /*name*/) {}
- void end_declaration(const pstring& name)
+ void end_declaration(const pstring& /*name*/)
{
m_attrs.clear();
}
diff --git a/src/liborcus/spreadsheet_interface.cpp b/src/liborcus/spreadsheet_interface.cpp
index 87103233..985caf45 100644
--- a/src/liborcus/spreadsheet_interface.cpp
+++ b/src/liborcus/spreadsheet_interface.cpp
@@ -124,13 +124,13 @@ import_reference_resolver* import_factory::get_reference_resolver(formula_ref_co
}
import_pivot_cache_definition* import_factory::create_pivot_cache_definition(
- orcus::spreadsheet::pivot_cache_id_t cache_id)
+ orcus::spreadsheet::pivot_cache_id_t /*cache_id*/)
{
return nullptr;
}
import_pivot_cache_records* import_factory::create_pivot_cache_records(
- orcus::spreadsheet::pivot_cache_id_t cache_id)
+ orcus::spreadsheet::pivot_cache_id_t /*cache_id*/)
{
return nullptr;
}
diff --git a/src/liborcus/xls_xml_context.cpp b/src/liborcus/xls_xml_context.cpp
index f5b8fe26..b2d6d398 100644
--- a/src/liborcus/xls_xml_context.cpp
+++ b/src/liborcus/xls_xml_context.cpp
@@ -90,17 +90,17 @@ xls_xml_data_context::xls_xml_data_context(
xls_xml_data_context::~xls_xml_data_context() {}
-bool xls_xml_data_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const
+bool xls_xml_data_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const
{
return true;
}
-xml_context_base* xls_xml_data_context::create_child_context(xmlns_id_t ns, xml_token_t name)
+xml_context_base* xls_xml_data_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/)
{
return nullptr;
}
-void xls_xml_data_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child)
+void xls_xml_data_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/)
{
}
@@ -254,7 +254,7 @@ void xls_xml_data_context::reset()
}
void xls_xml_data_context::start_element_data(
- const xml_token_pair_t& parent, const xml_attrs_t& attrs)
+ const xml_token_pair_t& /*parent*/, const xml_attrs_t& attrs)
{
m_cell_type = ct_unknown;
m_cell_string.clear();
@@ -776,7 +776,7 @@ xml_context_base* xls_xml_context::create_child_context(xmlns_id_t ns, xml_token
return nullptr;
}
-void xls_xml_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child)
+void xls_xml_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/)
{
}
@@ -1217,7 +1217,7 @@ void xls_xml_context::characters(const pstring& str, bool /*transient*/)
}
}
-void xls_xml_context::start_element_borders(const xml_token_pair_t& parent, const xml_attrs_t& attrs)
+void xls_xml_context::start_element_borders(const xml_token_pair_t& parent, const xml_attrs_t& /*attrs*/)
{
xml_element_expected(parent, NS_xls_xml_ss, XML_Style);
m_current_style->borders.clear();
diff --git a/src/liborcus/xls_xml_detection_handler.cpp b/src/liborcus/xls_xml_detection_handler.cpp
index aaa1b148..2b18c8ee 100644
--- a/src/liborcus/xls_xml_detection_handler.cpp
+++ b/src/liborcus/xls_xml_detection_handler.cpp
@@ -36,7 +36,7 @@ public:
return nullptr;
}
- virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& attrs)
+ virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/)
{
xml_token_pair_t parent = push_stack(ns, name);
if (ns == NS_xls_xml_ss)
diff --git a/src/liborcus/xlsx_drawing_context.cpp b/src/liborcus/xlsx_drawing_context.cpp
index f7dc31ab..380d7852 100644
--- a/src/liborcus/xlsx_drawing_context.cpp
+++ b/src/liborcus/xlsx_drawing_context.cpp
@@ -41,7 +41,7 @@ void xlsx_drawing_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*na
{
}
-void xlsx_drawing_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& attrs)
+void xlsx_drawing_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/)
{
xml_token_pair_t parent = push_stack(ns, name);
diff --git a/src/liborcus/xlsx_sheet_context.cpp b/src/liborcus/xlsx_sheet_context.cpp
index 669f604f..50018c32 100644
--- a/src/liborcus/xlsx_sheet_context.cpp
+++ b/src/liborcus/xlsx_sheet_context.cpp
@@ -845,7 +845,7 @@ void xlsx_sheet_context::push_raw_cell_value()
}
void xlsx_sheet_context::push_raw_cell_result(
- range_formula_results& res, size_t row_offset, size_t col_offset, xlsx_session_data& session_data) const
+ range_formula_results& res, size_t row_offset, size_t col_offset, xlsx_session_data& /*session_data*/) const
{
if (m_cur_value.empty())
return;
diff --git a/src/liborcus/xlsx_sheet_context_test.cpp b/src/liborcus/xlsx_sheet_context_test.cpp
index 9cb0d2a5..11ec8b71 100644
--- a/src/liborcus/xlsx_sheet_context_test.cpp
+++ b/src/liborcus/xlsx_sheet_context_test.cpp
@@ -64,19 +64,19 @@ public:
assert(formula == "A1:A2");
}
- virtual void set_result_bool(row_t row, col_t col, bool value) override
+ virtual void set_result_bool(row_t, col_t, bool) override
{
}
- virtual void set_result_empty(row_t row, col_t col) override
+ virtual void set_result_empty(row_t, col_t) override
{
}
- virtual void set_result_string(row_t row, col_t col, std::string_view) override
+ virtual void set_result_string(row_t, col_t, std::string_view) override
{
}
- virtual void set_result_value(row_t row, col_t col, double value) override
+ virtual void set_result_value(row_t, col_t, double) override
{
}
diff --git a/src/liborcus/xlsx_table_context.cpp b/src/liborcus/xlsx_table_context.cpp
index e135f44d..d8c360df 100644
--- a/src/liborcus/xlsx_table_context.cpp
+++ b/src/liborcus/xlsx_table_context.cpp
@@ -317,7 +317,7 @@ bool xlsx_table_context::end_element(xmlns_id_t ns, xml_token_t name)
return pop_stack(ns, name);
}
-void xlsx_table_context::characters(const pstring& str, bool transient)
+void xlsx_table_context::characters(const pstring& /*str*/, bool /*transient*/)
{
}
diff --git a/src/liborcus/xml_structure_tree.cpp b/src/liborcus/xml_structure_tree.cpp
index 9eaf3c07..5185049e 100644
--- a/src/liborcus/xml_structure_tree.cpp
+++ b/src/liborcus/xml_structure_tree.cpp
@@ -125,11 +125,11 @@ public:
void doctype(const sax::doctype_declaration&) {}
- void start_declaration(const pstring& name)
+ void start_declaration(const pstring& /*name*/)
{
}
- void end_declaration(const pstring& name)
+ void end_declaration(const pstring& /*name*/)
{
m_attrs.clear();
}
@@ -185,7 +185,7 @@ public:
m_stack.push_back(ref);
}
- void end_element(const sax_ns_parser_element& elem)
+ void end_element(const sax_ns_parser_element& /*elem*/)
{
if (m_stack.empty())
throw general_error("Element stack is empty.");
diff --git a/src/liborcus/xpath_parser_test.cpp b/src/liborcus/xpath_parser_test.cpp
index 12242f62..f67c0dc6 100644
--- a/src/liborcus/xpath_parser_test.cpp
+++ b/src/liborcus/xpath_parser_test.cpp
@@ -64,7 +64,7 @@ void test_attributes()
assert(token.attribute);
}
-int main(int argc, char** argv)
+int main()
{
test_elements();
test_attributes();
diff --git a/src/orcus_env_dump.cpp b/src/orcus_env_dump.cpp
index ad60927a..99f53718 100644
--- a/src/orcus_env_dump.cpp
+++ b/src/orcus_env_dump.cpp
@@ -13,7 +13,7 @@
using std::cout;
using std::endl;
-int main(int argc, char** argv)
+int main()
{
cout << "CPU flags:" << endl;
cout << " SSE 4.2: " << orcus::detail::cpu::has_sse42() << endl;
diff --git a/src/orcus_test_json_mapped.cpp b/src/orcus_test_json_mapped.cpp
index ed10a842..c504e156 100644
--- a/src/orcus_test_json_mapped.cpp
+++ b/src/orcus_test_json_mapped.cpp
@@ -88,7 +88,7 @@ void test_invalid_map_definition()
}
}
-int main(int argc, char** argv)
+int main()
{
test_mapped_json_import();
test_invalid_map_definition();
diff --git a/src/orcus_test_xml.cpp b/src/orcus_test_xml.cpp
index 2a44a8ac..de5197cf 100644
--- a/src/orcus_test_xml.cpp
+++ b/src/orcus_test_xml.cpp
@@ -85,7 +85,7 @@ const char* sax_parser_parse_only_test_dirs[] = {
SRCDIR"/test/xml/parse-only/rss/"
};
-void parse_file(dom::document_tree& tree, const char* filepath, string& strm)
+void parse_file(dom::document_tree& tree, const char* filepath, std::string& /*strm*/)
{
cout << "testing " << filepath << endl;
file_content content(filepath);
diff --git a/src/orcus_test_xml_mapped.cpp b/src/orcus_test_xml_mapped.cpp
index b90ea020..8e18cfda 100644
--- a/src/orcus_test_xml_mapped.cpp
+++ b/src/orcus_test_xml_mapped.cpp
@@ -66,7 +66,7 @@ void test_mapped_xml_import()
{ SRCDIR"/test/xml-mapped/nested-repeats-4", false },
};
- auto dump_xml_structure = [](string& dump_content, string& strm, const char* filepath, xmlns_context& cxt)
+ auto dump_xml_structure = [](std::string& dump_content, std::string& /*strm*/, const char* filepath, xmlns_context& cxt)
{
file_content content(filepath);
dom::document_tree tree(cxt);
diff --git a/src/parser/sax_token_parser_test.cpp b/src/parser/sax_token_parser_test.cpp
index 2647444c..6ff8c932 100644
--- a/src/parser/sax_token_parser_test.cpp
+++ b/src/parser/sax_token_parser_test.cpp
@@ -146,7 +146,7 @@ void test_unicode_string()
{
}
- void characters(std::string_view val, bool transient)
+ void characters(std::string_view val, bool /*transient*/)
{
std::cout << "charachters:" << std::endl;
std::cout << val << std::endl;
diff --git a/src/parser/sax_token_parser_thread.cpp b/src/parser/sax_token_parser_thread.cpp
index b9166e3c..d21ae6d7 100644
--- a/src/parser/sax_token_parser_thread.cpp
+++ b/src/parser/sax_token_parser_thread.cpp
@@ -86,7 +86,7 @@ struct parser_thread::impl
m_token_buffer.abort();
}
- void declaration(const orcus::xml_declaration_t& decl)
+ void declaration(const orcus::xml_declaration_t& /*decl*/)
{
}
diff --git a/src/parser/utf8.cpp b/src/parser/utf8.cpp
index f3b264a7..e02d2244 100644
--- a/src/parser/utf8.cpp
+++ b/src/parser/utf8.cpp
@@ -231,7 +231,7 @@ bool parse_3b_second_char(uint8_t c1, uint8_t c2, uint8_t c3)
}
// [#x10000-#xEFFFF]: F0 90 80 80 -> F3 AF BF BF
-bool parse_4b_char(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4)
+bool parse_4b_char(uint8_t c1, uint8_t c2, uint8_t /*c3*/, uint8_t /*c4*/)
{
// F0 90 80 80 -> F3 AF BF BF
// - F0 90 xx xx -> F0 xx xx xx
diff --git a/src/parser/utf8_test.cpp b/src/parser/utf8_test.cpp
index 78b7656a..88dcd3e8 100644
--- a/src/parser/utf8_test.cpp
+++ b/src/parser/utf8_test.cpp
@@ -159,7 +159,7 @@ void test_xml_name_char()
assert(res);
}
-int main(int argc, char** argv)
+int main()
{
test_xml_name_start_char();
test_xml_name_char();
diff --git a/src/parser/xml_writer_test.cpp b/src/parser/xml_writer_test.cpp
index e5a22357..8687db32 100644
--- a/src/parser/xml_writer_test.cpp
+++ b/src/parser/xml_writer_test.cpp
@@ -28,7 +28,7 @@ void test_encoded_content()
{
std::ostringstream os_content;
- void characters(std::string_view val, bool transient)
+ void characters(std::string_view val, bool /*transient*/)
{
os_content << val;
}
diff --git a/src/python/cell.cpp b/src/python/cell.cpp
index 536b5c4d..16374b8f 100644
--- a/src/python/cell.cpp
+++ b/src/python/cell.cpp
@@ -115,7 +115,7 @@ int tp_init(pyobj_cell* self, PyObject* args, PyObject* kwargs)
return 0;
}
-PyObject* cell_get_formula_tokens(PyObject* self, PyObject* args, PyObject* kwargs)
+PyObject* cell_get_formula_tokens(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/)
{
pyobj_cell* obj = reinterpret_cast<pyobj_cell*>(self);
cell_data& data = *obj->data;
diff --git a/src/python/document.cpp b/src/python/document.cpp
index b06463bc..02a2dc49 100644
--- a/src/python/document.cpp
+++ b/src/python/document.cpp
@@ -69,12 +69,12 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/)
return reinterpret_cast<PyObject*>(self);
}
-int tp_init(pyobj_document* self, PyObject* /*args*/, PyObject* /*kwargs*/)
+int tp_init(pyobj_document* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/)
{
return 0;
}
-PyObject* doc_get_named_expressions(PyObject* self, PyObject* args, PyObject* kwargs)
+PyObject* doc_get_named_expressions(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/)
{
const ss::document& doc = *t(self)->data->m_doc;
const ixion::model_context& cxt = doc.get_model_context();
diff --git a/src/python/formula_tokens.cpp b/src/python/formula_tokens.cpp
index 569d1a7a..3eece2d4 100644
--- a/src/python/formula_tokens.cpp
+++ b/src/python/formula_tokens.cpp
@@ -56,7 +56,7 @@ void tp_dealloc(pyobj_formula_tokens* self)
Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self));
}
-int tp_init(pyobj_formula_tokens* self, PyObject* /*args*/, PyObject* /*kwargs*/)
+int tp_init(pyobj_formula_tokens* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/)
{
return 0;
}
diff --git a/src/python/global.cpp b/src/python/global.cpp
index 7a21f960..f8623e0d 100644
--- a/src/python/global.cpp
+++ b/src/python/global.cpp
@@ -16,7 +16,7 @@ void set_python_exception(PyObject* type, const std::exception& e)
{
std::ostringstream os;
os << "C++ exception caught: " << e.what();
- PyErr_SetString(PyExc_RuntimeError, os.str().data());
+ PyErr_SetString(type, os.str().data());
}
PyObject* get_python_enum_value(const char* enum_class_name, const char* value_name)
diff --git a/src/python/json.cpp b/src/python/json.cpp
index fdeea10c..f22cf666 100644
--- a/src/python/json.cpp
+++ b/src/python/json.cpp
@@ -177,7 +177,7 @@ public:
}
}
- void object_key(const char* p, size_t len, bool transient)
+ void object_key(const char* p, size_t len, bool /*transient*/)
{
parser_stack& cur = m_stack.back();
cur.key = PyUnicode_FromStringAndSize(p, len);
@@ -213,7 +213,7 @@ public:
push_value(Py_None);
}
- void string(const char* p, size_t len, bool transient)
+ void string(const char* p, size_t len, bool /*transient*/)
{
push_value(PyUnicode_FromStringAndSize(p, len));
}
diff --git a/src/python/named_expression.cpp b/src/python/named_expression.cpp
index 8edeeacf..1402daa0 100644
--- a/src/python/named_expression.cpp
+++ b/src/python/named_expression.cpp
@@ -81,7 +81,7 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/)
return reinterpret_cast<PyObject*>(self);
}
-PyObject* ne_get_formula_tokens(PyObject* self, PyObject* args, PyObject* kwargs)
+PyObject* ne_get_formula_tokens(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/)
{
named_exp_data& data = *t(self)->data;
if (!data.tokens)
diff --git a/src/python/named_expressions.cpp b/src/python/named_expressions.cpp
index 235389ac..6faffee5 100644
--- a/src/python/named_expressions.cpp
+++ b/src/python/named_expressions.cpp
@@ -44,7 +44,7 @@ inline pyobj_named_exps* t(PyObject* self)
return reinterpret_cast<pyobj_named_exps*>(self);
}
-PyObject* named_exps_names(PyObject* self, PyObject* args, PyObject* kwargs)
+PyObject* named_exps_names(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/)
{
named_exps_data& data = *t(self)->data;
PyObject* s = PySet_New(nullptr);
@@ -64,7 +64,7 @@ void tp_dealloc(pyobj_named_exps* self)
Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self));
}
-int tp_init(pyobj_named_exps* self, PyObject* /*args*/, PyObject* /*kwargs*/)
+int tp_init(pyobj_named_exps* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/)
{
return 0;
}
diff --git a/src/python/sheet.cpp b/src/python/sheet.cpp
index 0ccc39bd..38b96241 100644
--- a/src/python/sheet.cpp
+++ b/src/python/sheet.cpp
@@ -85,12 +85,12 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/)
return reinterpret_cast<PyObject*>(self);
}
-int tp_init(pyobj_sheet* self, PyObject* /*args*/, PyObject* /*kwargs*/)
+int tp_init(pyobj_sheet* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/)
{
return 0;
}
-PyObject* sheet_get_rows(PyObject* self, PyObject* args, PyObject* kwargs)
+PyObject* sheet_get_rows(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/)
{
PyTypeObject* sr_type = get_sheet_rows_type();
@@ -210,7 +210,7 @@ PyObject* sheet_write(PyObject* self, PyObject* args, PyObject* kwargs)
return Py_None;
}
-PyObject* sheet_get_named_expressions(PyObject* self, PyObject* args, PyObject* kwargs)
+PyObject* sheet_get_named_expressions(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/)
{
const ss::document& doc = *t(self)->data->m_doc;
ss::sheet_t si = t(self)->data->m_sheet->get_index();
diff --git a/src/python/sheet_rows.cpp b/src/python/sheet_rows.cpp
index 7fa869ea..be495894 100644
--- a/src/python/sheet_rows.cpp
+++ b/src/python/sheet_rows.cpp
@@ -49,7 +49,7 @@ PyObject* sheet_rows_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwa
return reinterpret_cast<PyObject*>(self);
}
-int sheet_rows_init(pyobj_sheet_rows* self, PyObject* /*args*/, PyObject* /*kwargs*/)
+int sheet_rows_init(pyobj_sheet_rows* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/)
{
return 0;
}
diff --git a/src/spreadsheet/factory_sheet.cpp b/src/spreadsheet/factory_sheet.cpp
index 3e04295c..61541174 100644
--- a/src/spreadsheet/factory_sheet.cpp
+++ b/src/spreadsheet/factory_sheet.cpp
@@ -74,19 +74,19 @@ void import_data_table::reset()
{
}
-void import_data_table::set_type(data_table_type_t type)
+void import_data_table::set_type(data_table_type_t /*type*/)
{
}
-void import_data_table::set_range(const range_t& range)
+void import_data_table::set_range(const range_t& /*range*/)
{
}
-void import_data_table::set_first_reference(std::string_view ref, bool deleted)
+void import_data_table::set_first_reference(std::string_view /*ref*/, bool /*deleted*/)
{
}
-void import_data_table::set_second_reference(std::string_view ref, bool deleted)
+void import_data_table::set_second_reference(std::string_view /*ref*/, bool /*deleted*/)
{
}
@@ -193,7 +193,7 @@ void import_array_formula::set_range(const range_t& range)
}
}
-void import_array_formula::set_formula(formula_grammar_t grammar, std::string_view formula)
+void import_array_formula::set_formula(formula_grammar_t /*grammar*/, std::string_view formula)
{
const ixion::formula_name_resolver* resolver =
m_doc.get_formula_name_resolver(spreadsheet::formula_ref_context_t::global);
@@ -223,12 +223,12 @@ void import_array_formula::set_result_value(row_t row, col_t col, double value)
m_result_mtx.set(row, col, value);
}
-void import_array_formula::set_result_string(row_t row, col_t col, std::string_view value)
+void import_array_formula::set_result_string(row_t /*row*/, col_t /*col*/, std::string_view /*value*/)
{
// TODO : handle this
}
-void import_array_formula::set_result_empty(row_t row, col_t col)
+void import_array_formula::set_result_empty(row_t /*row*/, col_t /*col*/)
{
// TODO : handle this
}
@@ -282,7 +282,7 @@ void import_formula::set_position(row_t row, col_t col)
m_col = col;
}
-void import_formula::set_formula(formula_grammar_t grammar, std::string_view formula)
+void import_formula::set_formula(formula_grammar_t /*grammar*/, std::string_view formula)
{
if (m_row < 0 || m_col < 0)
return;
@@ -331,7 +331,7 @@ void import_formula::set_result_string(std::string_view value)
}
void import_formula::set_result_empty() {}
-void import_formula::set_result_bool(bool value) {}
+void import_formula::set_result_bool(bool /*value*/) {}
void import_formula::commit()
{
diff --git a/src/spreadsheet/sheet_impl.cpp b/src/spreadsheet/sheet_impl.cpp
index 72e521c5..c2e7ecb6 100644
--- a/src/spreadsheet/sheet_impl.cpp
+++ b/src/spreadsheet/sheet_impl.cpp
@@ -12,7 +12,7 @@
namespace orcus { namespace spreadsheet {
-sheet_impl::sheet_impl(document& doc, sheet& sh, sheet_t sheet_index) :
+sheet_impl::sheet_impl(document& doc, sheet& /*sh*/, sheet_t sheet_index) :
m_doc(doc),
m_col_widths(0, m_doc.get_sheet_size().columns, get_default_column_width()),
m_row_heights(0, m_doc.get_sheet_size().rows, get_default_row_height()),
--
2.25.1
diff --git a/external/liborcus/std-get-busted.patch.1 b/external/liborcus/std-get-busted.patch.1
new file mode 100644
index 0000000..40b839f
--- /dev/null
+++ b/external/liborcus/std-get-busted.patch.1
@@ -0,0 +1,418 @@
From f917ed284c52ae12fb0d752c17141f355158470e Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@gmail.com>
Date: Tue, 2 Nov 2021 22:07:51 -0400
Subject: [PATCH] std::get<T>(...) may be flaky with some version of clang.
As workaround, use boost::variant and boost::get.
c.f. https://stackoverflow.com/questions/52521388/stdvariantget-does-not-compile-with-apple-llvm-10-0
---
include/orcus/config.hpp | 4 ++--
include/orcus/css_selector.hpp | 5 +++--
include/orcus/json_parser_thread.hpp | 4 ++--
include/orcus/sax_token_parser_thread.hpp | 5 +++--
include/orcus/spreadsheet/pivot.hpp | 7 ++++---
include/orcus/threaded_json_parser.hpp | 8 ++++----
include/orcus/threaded_sax_token_parser.hpp | 8 ++++----
src/liborcus/css_document_tree.cpp | 2 +-
src/liborcus/css_selector.cpp | 12 ++++++------
src/liborcus/orcus_csv.cpp | 4 ++--
src/orcus_csv_main.cpp | 2 +-
src/orcus_test_csv.cpp | 8 ++++----
src/orcus_test_xlsx.cpp | 4 ++--
src/parser/json_parser_thread.cpp | 8 ++++----
src/python/sheet_rows.cpp | 3 +++
15 files changed, 45 insertions(+), 39 deletions(-)
diff --git a/include/orcus/config.hpp b/include/orcus/config.hpp
index 17743e6a..fe9a7d81 100644
--- a/include/orcus/config.hpp
+++ b/include/orcus/config.hpp
@@ -12,7 +12,7 @@
#include "orcus/types.hpp"
#include <string>
-#include <variant>
+#include <boost/variant.hpp>
namespace orcus {
@@ -37,7 +37,7 @@ struct ORCUS_DLLPUBLIC config
};
// TODO: add config for other formats as needed.
- using data_type = std::variant<csv_config>;
+ using data_type = boost::variant<csv_config>;
/**
* Enable or disable runtime debug output to stdout or stderr.
diff --git a/include/orcus/css_selector.hpp b/include/orcus/css_selector.hpp
index 1e41d544..dafeddf5 100644
--- a/include/orcus/css_selector.hpp
+++ b/include/orcus/css_selector.hpp
@@ -12,11 +12,12 @@
#include "css_types.hpp"
#include <ostream>
-#include <variant>
#include <vector>
#include <unordered_set>
#include <unordered_map>
+#include <boost/variant.hpp>
+
namespace orcus {
struct ORCUS_DLLPUBLIC css_simple_selector_t
@@ -73,7 +74,7 @@ struct ORCUS_DLLPUBLIC css_selector_t
*/
struct ORCUS_DLLPUBLIC css_property_value_t
{
- using value_type = std::variant<std::string_view, css::rgba_color_t, css::hsla_color_t>;
+ using value_type = boost::variant<std::string_view, css::rgba_color_t, css::hsla_color_t>;
css::property_value_t type;
value_type value;
diff --git a/include/orcus/json_parser_thread.hpp b/include/orcus/json_parser_thread.hpp
index 8328ef11..565008da 100644
--- a/include/orcus/json_parser_thread.hpp
+++ b/include/orcus/json_parser_thread.hpp
@@ -14,7 +14,7 @@
#include <memory>
#include <vector>
#include <ostream>
-#include <variant>
+#include <boost/variant.hpp>
namespace orcus {
@@ -47,7 +47,7 @@ enum class parse_token_t
struct ORCUS_PSR_DLLPUBLIC parse_token
{
- using value_type = std::variant<std::string_view, parse_error_value_t, double>;
+ using value_type = boost::variant<std::string_view, parse_error_value_t, double>;
parse_token_t type;
value_type value;
diff --git a/include/orcus/sax_token_parser_thread.hpp b/include/orcus/sax_token_parser_thread.hpp
index b3645735..e0842013 100644
--- a/include/orcus/sax_token_parser_thread.hpp
+++ b/include/orcus/sax_token_parser_thread.hpp
@@ -12,10 +12,11 @@
#include "types.hpp"
#include <memory>
-#include <variant>
#include <vector>
#include <ostream>
+#include <boost/variant.hpp>
+
namespace orcus {
class tokens;
@@ -36,7 +37,7 @@ enum class parse_token_t
struct ORCUS_PSR_DLLPUBLIC parse_token
{
- using value_type = std::variant<std::string_view, parse_error_value_t, const xml_token_element_t*>;
+ using value_type = boost::variant<std::string_view, parse_error_value_t, const xml_token_element_t*>;
parse_token_t type;
value_type value;
diff --git a/include/orcus/spreadsheet/pivot.hpp b/include/orcus/spreadsheet/pivot.hpp
index dee25596..fa091160 100644
--- a/include/orcus/spreadsheet/pivot.hpp
+++ b/include/orcus/spreadsheet/pivot.hpp
@@ -15,9 +15,10 @@
#include <memory>
#include <vector>
#include <limits>
-#include <variant>
#include <optional>
+#include <boost/variant.hpp>
+
namespace ixion {
struct abs_range_t;
@@ -36,7 +37,7 @@ using pivot_cache_indices_t = std::vector<size_t>;
struct ORCUS_SPM_DLLPUBLIC pivot_cache_record_value_t
{
- using value_type = std::variant<bool, double, std::size_t, std::string_view, date_time_t>;
+ using value_type = boost::variant<bool, double, std::size_t, std::string_view, date_time_t>;
enum class record_type
{
@@ -66,7 +67,7 @@ using pivot_cache_record_t = std::vector<pivot_cache_record_value_t>;
struct ORCUS_SPM_DLLPUBLIC pivot_cache_item_t
{
- using value_type = std::variant<bool, double, std::string_view, date_time_t, error_value_t>;
+ using value_type = boost::variant<bool, double, std::string_view, date_time_t, error_value_t>;
enum class item_type
{
diff --git a/include/orcus/threaded_json_parser.hpp b/include/orcus/threaded_json_parser.hpp
index 51cdaced..3bf6e591 100644
--- a/include/orcus/threaded_json_parser.hpp
+++ b/include/orcus/threaded_json_parser.hpp
@@ -151,23 +151,23 @@ void threaded_json_parser<_Handler>::process_tokens(json::parse_tokens_t& tokens
m_handler.null();
break;
case json::parse_token_t::number:
- m_handler.number(std::get<double>(t.value));
+ m_handler.number(boost::get<double>(t.value));
break;
case json::parse_token_t::object_key:
{
- auto s = std::get<std::string_view>(t.value);
+ auto s = boost::get<std::string_view>(t.value);
m_handler.object_key(s.data(), s.size(), false);
break;
}
case json::parse_token_t::string:
{
- auto s = std::get<std::string_view>(t.value);
+ auto s = boost::get<std::string_view>(t.value);
m_handler.string(s.data(), s.size(), false);
break;
}
case json::parse_token_t::parse_error:
{
- auto v = std::get<parse_error_value_t>(t.value);
+ auto v = boost::get<parse_error_value_t>(t.value);
throw json::parse_error(std::string{v.str}, v.offset);
}
case json::parse_token_t::unknown:
diff --git a/include/orcus/threaded_sax_token_parser.hpp b/include/orcus/threaded_sax_token_parser.hpp
index 59ea967a..1b389be2 100644
--- a/include/orcus/threaded_sax_token_parser.hpp
+++ b/include/orcus/threaded_sax_token_parser.hpp
@@ -131,25 +131,25 @@ void threaded_sax_token_parser<_Handler>::process_tokens(const sax::parse_tokens
{
case sax::parse_token_t::start_element:
{
- const auto* elem = std::get<const xml_token_element_t*>(t.value);
+ const auto* elem = boost::get<const xml_token_element_t*>(t.value);
m_handler.start_element(*elem);
break;
}
case sax::parse_token_t::end_element:
{
- const auto* elem = std::get<const xml_token_element_t*>(t.value);
+ const auto* elem = boost::get<const xml_token_element_t*>(t.value);
m_handler.end_element(*elem);
break;
}
case sax::parse_token_t::characters:
{
- auto s = std::get<std::string_view>(t.value);
+ auto s = boost::get<std::string_view>(t.value);
m_handler.characters(s, false);
break;
}
case sax::parse_token_t::parse_error:
{
- auto v = std::get<parse_error_value_t>(t.value);
+ auto v = boost::get<parse_error_value_t>(t.value);
throw sax::malformed_xml_error(std::string{v.str}, v.offset);
}
default:
diff --git a/src/liborcus/css_document_tree.cpp b/src/liborcus/css_document_tree.cpp
index 46bf7e91..4b44edff 100644
--- a/src/liborcus/css_document_tree.cpp
+++ b/src/liborcus/css_document_tree.cpp
@@ -317,7 +317,7 @@ public:
{
// String value needs interning.
css_property_value_t interned = v;
- auto s = std::get<std::string_view>(v.value);
+ auto s = boost::get<std::string_view>(v.value);
interned.value = m_sp.intern(s).first;
m_dest.push_back(interned);
break;
diff --git a/src/liborcus/css_selector.cpp b/src/liborcus/css_selector.cpp
index b7b63f37..de522062 100644
--- a/src/liborcus/css_selector.cpp
+++ b/src/liborcus/css_selector.cpp
@@ -155,7 +155,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v)
{
case css::property_value_t::hsl:
{
- auto c = std::get<css::hsla_color_t>(v.value);
+ auto c = boost::get<css::hsla_color_t>(v.value);
os << "hsl("
<< (int)c.hue << sep
<< (int)c.saturation << sep
@@ -165,7 +165,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v)
}
case css::property_value_t::hsla:
{
- auto c = std::get<css::hsla_color_t>(v.value);
+ auto c = boost::get<css::hsla_color_t>(v.value);
os << "hsla("
<< (int)c.hue << sep
<< (int)c.saturation << sep
@@ -176,7 +176,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v)
}
case css::property_value_t::rgb:
{
- auto c = std::get<css::rgba_color_t>(v.value);
+ auto c = boost::get<css::rgba_color_t>(v.value);
os << "rgb("
<< (int)c.red << sep
<< (int)c.green << sep
@@ -186,7 +186,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v)
}
case css::property_value_t::rgba:
{
- auto c = std::get<css::rgba_color_t>(v.value);
+ auto c = boost::get<css::rgba_color_t>(v.value);
os << "rgba("
<< (int)c.red << sep
<< (int)c.green << sep
@@ -196,10 +196,10 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v)
break;
}
case css::property_value_t::string:
- os << std::get<std::string_view>(v.value);
+ os << boost::get<std::string_view>(v.value);
break;
case css::property_value_t::url:
- os << "url(" << std::get<std::string_view>(v.value) << ")";
+ os << "url(" << boost::get<std::string_view>(v.value) << ")";
break;
case css::property_value_t::none:
default:
diff --git a/src/liborcus/orcus_csv.cpp b/src/liborcus/orcus_csv.cpp
index 5c71bcf5..637308ab 100644
--- a/src/liborcus/orcus_csv.cpp
+++ b/src/liborcus/orcus_csv.cpp
@@ -63,7 +63,7 @@ public:
// 0.
if (m_row >= mp_sheet->get_sheet_size().rows)
{
- auto csv = std::get<config::csv_config>(m_app_config.data);
+ auto csv = boost::get<config::csv_config>(m_app_config.data);
if (!csv.split_to_multiple_sheets)
throw max_row_size_reached();
@@ -93,7 +93,7 @@ public:
void cell(const char* p, size_t n, bool transient)
{
- auto csv = std::get<config::csv_config>(m_app_config.data);
+ auto csv = boost::get<config::csv_config>(m_app_config.data);
if (m_sheet == 0 && size_t(m_row) < csv.header_row_size)
{
diff --git a/src/orcus_csv_main.cpp b/src/orcus_csv_main.cpp
index 4f6d7173..446f2684 100644
--- a/src/orcus_csv_main.cpp
+++ b/src/orcus_csv_main.cpp
@@ -45,7 +45,7 @@ public:
virtual void map_to_config(config& opt, const po::variables_map& vm) override
{
- auto csv = std::get<config::csv_config>(opt.data);
+ auto csv = boost::get<config::csv_config>(opt.data);
if (vm.count("row-header"))
csv.header_row_size = vm["row-header"].as<size_t>();
diff --git a/src/orcus_test_csv.cpp b/src/orcus_test_csv.cpp
index 310ace9d..0b9ba994 100644
--- a/src/orcus_test_csv.cpp
+++ b/src/orcus_test_csv.cpp
@@ -95,8 +95,8 @@ void test_csv_import_split_sheet()
std::cout << "checking " << path << "..." << std::endl;
config conf(format_t::csv);
- std::get<config::csv_config>(conf.data).header_row_size = 0;
- std::get<config::csv_config>(conf.data).split_to_multiple_sheets = true;
+ boost::get<config::csv_config>(conf.data).header_row_size = 0;
+ boost::get<config::csv_config>(conf.data).split_to_multiple_sheets = true;
// Set the row size to 11 to make sure the split occurs.
spreadsheet::range_size_t ss{11, 4};
@@ -126,7 +126,7 @@ void test_csv_import_split_sheet()
path = dir;
path.append("input.csv");
doc.clear();
- std::get<config::csv_config>(conf.data).header_row_size = 1;
+ boost::get<config::csv_config>(conf.data).header_row_size = 1;
{
spreadsheet::import_factory factory(doc);
orcus_csv app(&factory);
@@ -149,7 +149,7 @@ void test_csv_import_split_sheet()
// Re-import it again, but this time disable the splitting. The data should
// get trucated on the first sheet.
- std::get<config::csv_config>(conf.data).split_to_multiple_sheets = false;
+ boost::get<config::csv_config>(conf.data).split_to_multiple_sheets = false;
path = dir;
path.append("input.csv");
diff --git a/src/orcus_test_xlsx.cpp b/src/orcus_test_xlsx.cpp
index 807c61e4..632fb1e7 100644
--- a/src/orcus_test_xlsx.cpp
+++ b/src/orcus_test_xlsx.cpp
@@ -1154,8 +1154,8 @@ void test_xlsx_pivot_group_by_numbers()
for (const pivot_cache_item_t& item : fld->items)
{
assert(item.type == pivot_cache_item_t::item_type::numeric);
- assert(*fld->min_value <= std::get<double>(item.value));
- assert(std::get<double>(item.value) <= *fld->max_value);
+ assert(*fld->min_value <= boost::get<double>(item.value));
+ assert(boost::get<double>(item.value) <= *fld->max_value);
}
// This field is also gruop field with 7 numeric intervals of width 2.
diff --git a/src/parser/json_parser_thread.cpp b/src/parser/json_parser_thread.cpp
index 36bbe6e6..65fb6255 100644
--- a/src/parser/json_parser_thread.cpp
+++ b/src/parser/json_parser_thread.cpp
@@ -237,19 +237,19 @@ std::ostream& operator<< (std::ostream& os, const parse_tokens_t& tokens)
os << "- null" << endl;
break;
case parse_token_t::number:
- os << "- number (v=" << std::get<double>(t.value) << ")" << endl;
+ os << "- number (v=" << boost::get<double>(t.value) << ")" << endl;
break;
case parse_token_t::object_key:
- os << "- object_key (v=" << std::get<std::string_view>(t.value) << ")" << endl;
+ os << "- object_key (v=" << boost::get<std::string_view>(t.value) << ")" << endl;
break;
case parse_token_t::parse_error:
{
- auto v = std::get<parse_error_value_t>(t.value);
+ auto v = boost::get<parse_error_value_t>(t.value);
os << "- parse_error (v=" << v.str << ", offset=" << v.offset << ")" << endl;
break;
}
case parse_token_t::string:
- os << "- string (" << std::get<std::string_view>(t.value) << ")" << endl;
+ os << "- string (" << boost::get<std::string_view>(t.value) << ")" << endl;
break;
case parse_token_t::unknown:
os << "- unknown" << endl;
diff --git a/src/python/sheet_rows.cpp b/src/python/sheet_rows.cpp
index be495894..0d21ba71 100644
--- a/src/python/sheet_rows.cpp
+++ b/src/python/sheet_rows.cpp
@@ -135,7 +135,10 @@ PyObject* sheet_rows_iternext(PyObject* self)
break;
}
case ixion::celltype_t::unknown:
+ {
+ PyErr_SetString(PyExc_RuntimeError, "Unknown cell type.");
break;
+ }
}
if (!obj)
--
2.25.1
diff --git a/external/liborcus/unused-variables.patch.1 b/external/liborcus/unused-variables.patch.1
new file mode 100644
index 0000000..77b88fa
--- /dev/null
+++ b/external/liborcus/unused-variables.patch.1
@@ -0,0 +1,24 @@
From 5fccafa297ce2439ee850e13ccbeea3edb1750af Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@gmail.com>
Date: Tue, 2 Nov 2021 20:42:45 -0400
Subject: [PATCH] Unused variables.
---
include/orcus/sax_parser.hpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp
index 24b1e8ea..15e8d917 100644
--- a/include/orcus/sax_parser.hpp
+++ b/include/orcus/sax_parser.hpp
@@ -539,7 +539,6 @@ template<typename _Handler, typename _Config>
void sax_parser<_Handler,_Config>::attribute()
{
sax::parser_attribute attr;
- std::string_view attr_ns_name, attr_name, attr_value;
attribute_name(attr.ns, attr.name);
#if ORCUS_DEBUG_SAX_PARSER
--
2.25.1
diff --git a/external/mdds/UnpackedTarball_mdds.mk b/external/mdds/UnpackedTarball_mdds.mk
index 3c66433..cf5bd48a 100644
--- a/external/mdds/UnpackedTarball_mdds.mk
+++ b/external/mdds/UnpackedTarball_mdds.mk
@@ -13,11 +13,9 @@ $(eval $(call gb_UnpackedTarball_set_tarball,mdds,$(MDDS_TARBALL)))
$(eval $(call gb_UnpackedTarball_set_patchlevel,mdds,0))
# * external/mdds/Wunused-but-set-variable.patch upstream at
# <https://gitlab.com/mdds/mdds/-/merge_requests/29> "-Werror,-Wunused-but-set-variable (Clang 13
# trunk)":
$(eval $(call gb_UnpackedTarball_add_patches,mdds,\
external/mdds/Wunused-but-set-variable.patch \
external/mdds/remove-unused-parameters.patch.1 \
external/mdds/remove-more-unused-parameters.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/mdds/Wunused-but-set-variable.patch b/external/mdds/Wunused-but-set-variable.patch
deleted file mode 100644
index ba28cb1..0000000
--- a/external/mdds/Wunused-but-set-variable.patch
+++ /dev/null
@@ -1,46 +0,0 @@
--- include/mdds/multi_type_vector_def.inl
+++ include/mdds/multi_type_vector_def.inl
@@ -843,18 +843,12 @@
typename multi_type_vector<_CellBlockFunc, _EventFunc>::iterator
multi_type_vector<_CellBlockFunc, _EventFunc>::push_back_empty()
{
- size_type last_block_size = 0;
- if (!m_blocks.empty())
- last_block_size = m_blocks.back().m_size;
-
size_type block_index = m_blocks.size();
- size_type start_pos = m_cur_size;
if (!append_empty(1))
{
// Last empty block has been extended.
--block_index;
- start_pos -= last_block_size;
}
// Get the iterator of the last block.
@@ -3923,8 +3917,6 @@
size_type offset = start_row - start_row_in_block1;
size_type end_row_in_block2 = start_row_in_block2 + blk2->m_size - 1;
- size_type start_row_itr = start_row_in_block1;
-
// Initially set to erase blocks between block 1 and block 2 non-inclusive at either end.
typename blocks_type::iterator it_erase_begin = m_blocks.begin() + block_index1 + 1;
typename blocks_type::iterator it_erase_end = m_blocks.begin() + block_index2;
@@ -3948,7 +3940,6 @@
data_blk.mp_data = blk0->mp_data;
blk0->mp_data = nullptr;
- start_row_itr -= blk0->m_size;
data_blk.m_size += blk0->m_size;
data_blk.m_position = blk0->m_position;
@@ -3967,7 +3958,6 @@
element_block_func::resize_block(*blk1->mp_data, offset);
}
blk1->m_size = offset;
- start_row_itr += offset;
}
if (blk0_copied)
diff --git a/external/mdds/remove-more-unused-parameters.patch.1 b/external/mdds/remove-more-unused-parameters.patch.1
new file mode 100644
index 0000000..c0c2947
--- /dev/null
+++ b/external/mdds/remove-more-unused-parameters.patch.1
@@ -0,0 +1,42 @@
From cc24c84d35274aead5afe574c87ecd6368aa5e2a Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@gmail.com>
Date: Tue, 2 Nov 2021 18:24:30 -0400
Subject: [PATCH] More unused parameters.
I personally cannot reproduce the warnings. But The android x86 build
of LibreOffice generates the following build warnings:
In file included from /home/tdf/lode/jenkins/workspace/android_x86/svl/source/misc/gridprinter.cxx:16:
In file included from /home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/multi_type_matrix.hpp:37:
In file included from /home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector.hpp:31:
In file included from /home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/main.hpp:35:
/home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/./block_util.hpp:49:27: error: unused parameter 'block_store' [-Werror,-Wunused-parameter]
void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const
^
/home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/./block_util.hpp:49:48: error: unused parameter 'start_block_index' [-Werror,-Wunused-parameter]
void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const
^
/home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/./block_util.hpp:49:75: error: unused parameter 'delta' [-Werror,-Wunused-parameter]
void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const
^
3 errors generated.
---
include/mdds/multi_type_vector/soa/block_util.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/mdds/multi_type_vector/soa/block_util.hpp b/include/mdds/multi_type_vector/soa/block_util.hpp
index d10ee67..73ba27c 100644
--- a/include/mdds/multi_type_vector/soa/block_util.hpp
+++ b/include/mdds/multi_type_vector/soa/block_util.hpp
@@ -46,7 +46,7 @@ namespace detail {
template<typename Blks, lu_factor_t F>
struct adjust_block_positions
{
- void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const
+ void operator()(Blks& /*block_store*/, int64_t /*start_block_index*/, int64_t /*delta*/) const
{
static_assert(invalid_static_int<F>, "The loop-unrolling factor must be one of 0, 4, 8, 16, or 32.");
}
--
2.25.1
diff --git a/external/mdds/remove-unused-parameters.patch.1 b/external/mdds/remove-unused-parameters.patch.1
new file mode 100644
index 0000000..ebfc94f
--- /dev/null
+++ b/external/mdds/remove-unused-parameters.patch.1
@@ -0,0 +1,93 @@
From 695e4c73fb55b1002237b0a22f13162c5c91aa68 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@gmail.com>
Date: Mon, 1 Nov 2021 14:54:36 -0400
Subject: [PATCH] Remove unused parameter warnings in public headers.
---
include/mdds/multi_type_vector/util.hpp | 10 ++++++++--
include/mdds/trie_map_def.inl | 12 ++++++------
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/include/mdds/multi_type_vector/util.hpp b/include/mdds/multi_type_vector/util.hpp
index d21e302..a1cb1f9 100644
--- a/include/mdds/multi_type_vector/util.hpp
+++ b/include/mdds/multi_type_vector/util.hpp
@@ -51,7 +51,10 @@ struct empty_event_func
*
* @param block pointer to the acquired element block instance.
*/
- void element_block_acquired(const base_element_block* block) {}
+ void element_block_acquired(const base_element_block* block)
+ {
+ (void)block;
+ }
/**
* Callback function for element block release events. This gets called
@@ -61,7 +64,10 @@ struct empty_event_func
*
* @param block pointer to the element block instance being released.
*/
- void element_block_released(const base_element_block* block) {}
+ void element_block_released(const base_element_block* block)
+ {
+ (void)block;
+ }
};
/**
diff --git a/include/mdds/trie_map_def.inl b/include/mdds/trie_map_def.inl
index 49e6de0..be18aec 100644
--- a/include/mdds/trie_map_def.inl
+++ b/include/mdds/trie_map_def.inl
@@ -1004,7 +1004,7 @@ packed_trie_map<_KeyTrait,_ValueT>::packed_trie_map(const packed_trie_map& other
{
packed_trie_map& m_parent;
- void node(const uintptr_t* node_pos, key_unit_type c, size_t depth, size_t index_size)
+ void node(const uintptr_t* node_pos, key_unit_type /*c*/, size_t /*depth*/, size_t /*index_size*/)
{
uintptr_t value_ptr = *node_pos;
@@ -1315,13 +1315,13 @@ void packed_trie_map<_KeyTrait,_ValueT>::save_state(std::ostream& os) const
}
/** first element in the buffer. */
- void root_offset(size_t i, const uintptr_t& v) const
+ void root_offset(size_t /*i*/, const uintptr_t& v) const
{
write(v);
}
/** first element in each node section. */
- void node_value(size_t i, const uintptr_t& v) const
+ void node_value(size_t /*i*/, const uintptr_t& v) const
{
const value_type* p = reinterpret_cast<const value_type*>(v);
if (p)
@@ -1348,19 +1348,19 @@ void packed_trie_map<_KeyTrait,_ValueT>::save_state(std::ostream& os) const
* second element in each node section that stores the size of
* the child data sub-section.
*/
- void node_index_size(size_t i, const uintptr_t& v) const
+ void node_index_size(size_t /*i*/, const uintptr_t& v) const
{
write(v);
}
/** element that stores the key value for child node. */
- void node_child_key(size_t i, const uintptr_t& v) const
+ void node_child_key(size_t /*i*/, const uintptr_t& v) const
{
write(v);
}
/** element that stores the relative offset of the child node. */
- void node_child_offset(size_t i, const uintptr_t& v) const
+ void node_child_offset(size_t /*i*/, const uintptr_t& v) const
{
write(v);
}
--
2.25.1
diff --git a/sc/inc/mtvelements.hxx b/sc/inc/mtvelements.hxx
index a6c4d5f..636706e 100644
--- a/sc/inc/mtvelements.hxx
+++ b/sc/inc/mtvelements.hxx
@@ -24,10 +24,10 @@
#define MDDS_MULTI_TYPE_VECTOR_DEBUG 1
#endif
#include <mdds/multi_type_vector_macro.hpp>
#include <mdds/multi_type_vector.hpp>
#include <mdds/multi_type_vector_custom_func1.hpp>
#include <mdds/multi_type_vector_custom_func3.hpp>
#include <mdds/multi_type_vector/macro.hpp>
#include <mdds/multi_type_vector/soa/main.hpp>
#include <mdds/multi_type_vector/custom_func1.hpp>
#include <mdds/multi_type_vector/custom_func3.hpp>
#include <unordered_map>
#include <memory>
@@ -97,21 +97,27 @@ public:
void element_block_released(const mdds::mtv::base_element_block* block);
};
struct CellStoreTrait
{
using event_func = CellStoreEvent;
static constexpr mdds::mtv::lu_factor_t loop_unrolling = mdds::mtv::lu_factor_t::lu16;
};
/// Cell note container
typedef mdds::mtv::custom_block_func1<sc::cellnote_block> CNoteFunc;
typedef mdds::multi_type_vector<CNoteFunc> CellNoteStoreType;
typedef mdds::mtv::soa::multi_type_vector<CNoteFunc> CellNoteStoreType;
/// Broadcaster storage container
typedef mdds::mtv::custom_block_func1<sc::broadcaster_block> BCBlkFunc;
typedef mdds::multi_type_vector<BCBlkFunc> BroadcasterStoreType;
typedef mdds::mtv::soa::multi_type_vector<BCBlkFunc> BroadcasterStoreType;
/// Cell text attribute container.
typedef mdds::mtv::custom_block_func1<sc::celltextattr_block> CTAttrFunc;
typedef mdds::multi_type_vector<CTAttrFunc> CellTextAttrStoreType;
typedef mdds::mtv::soa::multi_type_vector<CTAttrFunc> CellTextAttrStoreType;
/// Cell container
typedef mdds::mtv::custom_block_func3<sc::string_block, sc::edittext_block, sc::formula_block> CellFunc;
typedef mdds::multi_type_vector<CellFunc, CellStoreEvent> CellStoreType;
typedef mdds::mtv::soa::multi_type_vector<CellFunc, CellStoreTrait> CellStoreType;
/**
* Store position data for column array storage.
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 0604567..935854c 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -75,8 +75,8 @@ class ScOrcusRefResolver : public orcus::spreadsheet::iface::import_reference_re
public:
ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS );
orcus::spreadsheet::src_address_t resolve_address(const char* p, size_t n) override;
orcus::spreadsheet::src_range_t resolve_range(const char* p, size_t n) override;
orcus::spreadsheet::src_address_t resolve_address(std::string_view address) override;
orcus::spreadsheet::src_range_t resolve_range(std::string_view range) override;
};
class ScOrcusNamedExpression : public orcus::spreadsheet::iface::import_named_expression
@@ -94,8 +94,8 @@ public:
void reset();
virtual void set_base_position(const orcus::spreadsheet::src_address_t& pos) override;
virtual void set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override;
virtual void set_named_range(const char* p_name, size_t n_name, const char* p_range, size_t n_range) override;
virtual void set_named_expression(std::string_view name, std::string_view expression) override;
virtual void set_named_range(std::string_view name, std::string_view range) override;
virtual void commit() override;
};
@@ -107,19 +107,19 @@ class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_str
public:
ScOrcusSharedStrings(ScOrcusFactory& rFactory);
virtual size_t append(const char* s, size_t n) override;
virtual size_t add(const char* s, size_t n) override;
virtual size_t append(std::string_view s) override;
virtual size_t add(std::string_view s) override;
virtual void set_segment_bold(bool b) override;
virtual void set_segment_italic(bool b) override;
virtual void set_segment_font(size_t font_index) override;
virtual void set_segment_font_name(const char* s, size_t n) override;
virtual void set_segment_font_name(std::string_view s) override;
virtual void set_segment_font_size(double point) override;
virtual void set_segment_font_color(orcus::spreadsheet::color_elem_t alpha,
orcus::spreadsheet::color_elem_t red,
orcus::spreadsheet::color_elem_t green,
orcus::spreadsheet::color_elem_t blue) override;
virtual void append_segment(const char* s, size_t n) override;
virtual void append_segment(std::string_view s) override;
virtual size_t commit_segments() override;
};
@@ -133,7 +133,7 @@ public:
virtual void set_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red,
orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override;
virtual void set_formula(const char* p, size_t n) override;
virtual void set_formula(std::string_view formula) override;
virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) override;
@@ -141,7 +141,7 @@ public:
virtual void commit_condition() override;
virtual void set_icon_name(const char* p, size_t n) override;
virtual void set_icon_name(std::string_view name) override;
virtual void set_databar_gradient(bool gradient) override;
@@ -169,7 +169,7 @@ public:
virtual void commit_entry() override;
virtual void set_range(const char* p, size_t n) override;
virtual void set_range(std::string_view range) override;
virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) override;
@@ -197,7 +197,7 @@ public:
virtual void set_column(orcus::spreadsheet::col_t col) override;
virtual void append_column_match_value(const char* p, size_t n) override;
virtual void append_column_match_value(std::string_view value) override;
virtual void commit_column() override;
@@ -243,7 +243,7 @@ class ScOrcusFormula : public orcus::spreadsheet::iface::import_formula
bool mbShared;
ResultType meResType;
size_t mnResult; // result string index.
OUString maResult; // result string.
double mfResult;
void reset();
@@ -253,10 +253,10 @@ public:
virtual ~ScOrcusFormula() override;
virtual void set_position(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override;
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n) override;
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, std::string_view formula) override;
virtual void set_shared_formula_index(size_t index) override;
virtual void set_result_value(double value) override;
virtual void set_result_string(size_t sindex) override;
virtual void set_result_string(std::string_view value) override;
virtual void set_result_empty() override;
virtual void set_result_bool(bool value) override;
virtual void commit() override;
@@ -282,9 +282,9 @@ public:
virtual ~ScOrcusArrayFormula() override;
virtual void set_range(const orcus::spreadsheet::range_t& range) override;
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n) override;
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, std::string_view formula) override;
virtual void set_result_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override;
virtual void set_result_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) override;
virtual void set_result_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, std::string_view value) override;
virtual void set_result_empty(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override;
virtual void set_result_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override;
virtual void commit() override;
@@ -326,8 +326,8 @@ public:
virtual orcus::spreadsheet::iface::import_array_formula* get_array_formula() override;
// Orcus import interface
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) override;
virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) override;
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, std::string_view value) override;
virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::string_id_t sindex) override;
virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override;
virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override;
virtual void set_date_time(
@@ -491,7 +491,7 @@ public:
virtual void set_font_count(size_t n) override;
virtual void set_font_bold(bool b) override;
virtual void set_font_italic(bool b) override;
virtual void set_font_name(const char* s, size_t n) override;
virtual void set_font_name(std::string_view name) override;
virtual void set_font_size(double point) override;
virtual void set_font_underline(orcus::spreadsheet::underline_t e) override;
virtual void set_font_underline_width(orcus::spreadsheet::underline_width_t e) override;
@@ -542,7 +542,7 @@ public:
// number format
virtual void set_number_format_count(size_t n) override;
virtual void set_number_format_identifier(size_t n) override;
virtual void set_number_format_code(const char* s, size_t n) override;
virtual void set_number_format_code(std::string_view s) override;
virtual size_t commit_number_format() override;
// cell style xf
@@ -574,10 +574,10 @@ public:
// cell style entry
virtual void set_cell_style_count(size_t n) override;
virtual void set_cell_style_name(const char* s, size_t n) override;
virtual void set_cell_style_name(std::string_view name) override;
virtual void set_cell_style_xf(size_t index) override;
virtual void set_cell_style_builtin(size_t index) override;
virtual void set_cell_style_parent_name(const char* s, size_t n) override;
virtual void set_cell_style_parent_name(std::string_view name) override;
virtual size_t commit_cell_style() override;
};
@@ -639,8 +639,8 @@ public:
ScOrcusFactory(ScDocument& rDoc, bool bSkipDefaultStyles=false);
virtual orcus::spreadsheet::iface::import_sheet* append_sheet(
orcus::spreadsheet::sheet_t sheet_index, const char *sheet_name, size_t sheet_name_length) override;
virtual orcus::spreadsheet::iface::import_sheet* get_sheet(const char *sheet_name, size_t sheet_name_length) override;
orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name) override;
virtual orcus::spreadsheet::iface::import_sheet* get_sheet(std::string_view sheet_name) override;
virtual orcus::spreadsheet::iface::import_sheet* get_sheet(orcus::spreadsheet::sheet_t sheet_index) override;
virtual orcus::spreadsheet::iface::import_global_settings* get_global_settings() override;
virtual orcus::spreadsheet::iface::import_shared_strings* get_shared_strings() override;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 0947b5d..63926a7 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -161,9 +161,9 @@ orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula
ScOrcusRefResolver::ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ) :
mrGlobalSettings(rGS) {}
os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n)
os::src_address_t ScOrcusRefResolver::resolve_address(std::string_view address)
{
OUString aStr(p, n, mrGlobalSettings.getTextEncoding());
OUString aStr(address.data(), address.size(), mrGlobalSettings.getTextEncoding());
ScAddress aAddr;
aAddr.Parse(aStr, mrGlobalSettings.getDoc().getDoc(),
@@ -173,7 +173,7 @@ os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n)
if (!aAddr.IsValid())
{
std::ostringstream os;
os << "'" << std::string(p, n) << "' is not a valid address expression.";
os << "'" << address << "' is not a valid address expression.";
throw orcus::invalid_arg_error(os.str());
}
@@ -185,9 +185,9 @@ os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n)
return ret;
}
os::src_range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n)
os::src_range_t ScOrcusRefResolver::resolve_range(std::string_view range)
{
OUString aStr(p, n, mrGlobalSettings.getTextEncoding());
OUString aStr(range.data(), range.size(), mrGlobalSettings.getTextEncoding());
ScRange aRange;
aRange.Parse(aStr, mrGlobalSettings.getDoc().getDoc(),
@@ -197,7 +197,7 @@ os::src_range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n)
if (!aRange.IsValid())
{
std::ostringstream os;
os << "'" << std::string(p, n) << "' is not a valid range expression.";
os << "'" << range << "' is not a valid range expression.";
throw orcus::invalid_arg_error(os.str());
}
@@ -232,13 +232,13 @@ void ScOrcusNamedExpression::set_base_position(const orcus::spreadsheet::src_add
maBasePos.SetRow(pos.row);
}
void ScOrcusNamedExpression::set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp)
void ScOrcusNamedExpression::set_named_expression(std::string_view name, std::string_view expression)
{
maName = OUString(p_name, n_name, mrGlobalSettings.getTextEncoding());
maExpr = OUString(p_exp, n_exp, mrGlobalSettings.getTextEncoding());
maName = OUString(name.data(), name.size(), mrGlobalSettings.getTextEncoding());
maExpr = OUString(expression.data(), expression.size(), mrGlobalSettings.getTextEncoding());
}
void ScOrcusNamedExpression::set_named_range(const char* /*p_name*/, size_t /*n_name*/, const char* /*p_range*/, size_t /*n_range*/)
void ScOrcusNamedExpression::set_named_range(std::string_view /*name*/, std::string_view /*range*/)
{
throw std::runtime_error("ScOrcusNamedExpression::set_named_range not implemented yet.");
}
@@ -309,9 +309,9 @@ ScOrcusFactory::ScOrcusFactory(ScDocument& rDoc, bool bSkipDefaultStyles) :
mnProgress(0) {}
orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::append_sheet(
orcus::spreadsheet::sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length)
orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name)
{
OUString aTabName(sheet_name, sheet_name_length, maGlobalSettings.getTextEncoding());
OUString aTabName(sheet_name.data(), sheet_name.size(), maGlobalSettings.getTextEncoding());
if (sheet_index == 0)
{
@@ -345,9 +345,9 @@ public:
}
orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(const char* sheet_name, size_t sheet_name_length)
orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(std::string_view sheet_name)
{
OUString aTabName(sheet_name, sheet_name_length, maGlobalSettings.getTextEncoding());
OUString aTabName(sheet_name.data(), sheet_name.size(), maGlobalSettings.getTextEncoding());
SCTAB nTab = maDoc.getSheetIndex(aTabName);
if (nTab < 0)
// Sheet by that name not found.
@@ -777,7 +777,7 @@ void ScOrcusConditionalFormat::set_condition_type(os::condition_type_t /*type*/)
SAL_INFO("sc.orcus.condformat", "set_condition_type");
}
void ScOrcusConditionalFormat::set_formula(const char* /*p*/, size_t /*n*/)
void ScOrcusConditionalFormat::set_formula(std::string_view /*formula*/)
{
SAL_INFO("sc.orcus.condformat", "set_formula");
}
@@ -793,7 +793,7 @@ void ScOrcusConditionalFormat::commit_condition()
SAL_INFO("sc.orcus.condformat", "commit_condition");
}
void ScOrcusConditionalFormat::set_icon_name(const char* /*p*/, size_t /*n*/)
void ScOrcusConditionalFormat::set_icon_name(std::string_view /*name*/)
{
assert(meEntryType == ScFormatEntry::Type::Iconset);
SAL_INFO("sc.orcus.condformat", "set_icon_name");
@@ -887,7 +887,7 @@ void ScOrcusConditionalFormat::commit_entry()
SAL_INFO("sc.orcus.condformat", "commit_entry");
}
void ScOrcusConditionalFormat::set_range(const char* /*p*/, size_t /*n*/)
void ScOrcusConditionalFormat::set_range(std::string_view /*range*/)
{
SAL_INFO("sc.orcus.condformat", "set_range");
}
@@ -930,7 +930,7 @@ void ScOrcusFormula::reset()
mnSharedFormulaIndex = 0;
mbShared = false;
meResType = ResultType::NotSet;
mnResult = 0;
maResult.clear();
mfResult = 0.0;
}
@@ -942,7 +942,6 @@ ScOrcusFormula::ScOrcusFormula( ScOrcusSheet& rSheet ) :
mnSharedFormulaIndex(0),
mbShared(false),
meResType(ResultType::NotSet),
mnResult(0),
mfResult(0.0) {}
ScOrcusFormula::~ScOrcusFormula() {}
@@ -953,9 +952,9 @@ void ScOrcusFormula::set_position(os::row_t row, os::col_t col)
mnRow = row;
}
void ScOrcusFormula::set_formula(os::formula_grammar_t grammar, const char* p, size_t n)
void ScOrcusFormula::set_formula(os::formula_grammar_t grammar, std::string_view formula)
{
maFormula = OUString(p, n, mrSheet.getFactory().getGlobalSettings().getTextEncoding());
maFormula = OUString(formula.data(), formula.size(), mrSheet.getFactory().getGlobalSettings().getTextEncoding());
meGrammar = getCalcGrammarFromOrcus(grammar);
}
@@ -971,10 +970,10 @@ void ScOrcusFormula::set_result_value(double value)
mfResult = value;
}
void ScOrcusFormula::set_result_string(size_t sindex)
void ScOrcusFormula::set_result_string(std::string_view value)
{
meResType = ResultType::String;
mnResult = sindex;
maResult = OUString(value.data(), value.size(), mrSheet.getFactory().getGlobalSettings().getTextEncoding());
}
void ScOrcusFormula::set_result_empty()
@@ -1028,9 +1027,7 @@ void ScOrcusFormula::commit()
{
case ResultType::String:
{
const OUString* pStr = rFactory.getString(mnResult);
if (pStr)
rFactory.pushFormulaResult(aPos, *pStr);
rFactory.pushFormulaResult(aPos, maResult);
break;
}
case ResultType::Value:
@@ -1073,10 +1070,10 @@ void ScOrcusArrayFormula::set_range(const os::range_t& range)
mnRowRange = range.last.row - range.first.column + 1;
}
void ScOrcusArrayFormula::set_formula(os::formula_grammar_t grammar, const char* p, size_t n)
void ScOrcusArrayFormula::set_formula(os::formula_grammar_t grammar, std::string_view formula)
{
meGrammar = getCalcGrammarFromOrcus(grammar);
maFormula = OUString(p, n, mrSheet.getFactory().getGlobalSettings().getTextEncoding());
maFormula = OUString(formula.data(), formula.size(), mrSheet.getFactory().getGlobalSettings().getTextEncoding());
}
void ScOrcusArrayFormula::set_result_value(os::row_t /*row*/, os::col_t /*col*/, double /*value*/)
@@ -1084,7 +1081,7 @@ void ScOrcusArrayFormula::set_result_value(os::row_t /*row*/, os::col_t /*col*/,
// TODO : implement result cache for matrix
}
void ScOrcusArrayFormula::set_result_string(os::row_t /*row*/, os::col_t /*col*/, size_t /*sindex*/)
void ScOrcusArrayFormula::set_result_string(os::row_t /*row*/, os::col_t /*col*/, std::string_view /*value*/)
{
// TODO : implement result cache for matrix
}
@@ -1158,16 +1155,16 @@ os::iface::import_array_formula* ScOrcusSheet::get_array_formula()
return &maArrayFormula;
}
void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n)
void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, std::string_view value)
{
OUString aVal(p, n, mrFactory.getGlobalSettings().getTextEncoding());
OUString aVal(value.data(), value.size(), mrFactory.getGlobalSettings().getTextEncoding());
mrFactory.pushCellStoreAutoToken(ScAddress(col, row, mnTab), aVal);
cellInserted();
}
void ScOrcusSheet::set_string(os::row_t row, os::col_t col, size_t sindex)
void ScOrcusSheet::set_string(os::row_t row, os::col_t col, os::string_id_t sindex)
{
mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), uint32_t(sindex));
mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), sindex);
cellInserted();
}
@@ -1257,15 +1254,15 @@ ScOrcusFactory& ScOrcusSheet::getFactory()
ScOrcusSharedStrings::ScOrcusSharedStrings(ScOrcusFactory& rFactory) :
mrFactory(rFactory) {}
size_t ScOrcusSharedStrings::append(const char* s, size_t n)
size_t ScOrcusSharedStrings::append(std::string_view s)
{
OUString aNewString(s, n, mrFactory.getGlobalSettings().getTextEncoding());
OUString aNewString(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding());
return mrFactory.appendString(aNewString);
}
size_t ScOrcusSharedStrings::add(const char* s, size_t n)
size_t ScOrcusSharedStrings::add(std::string_view s)
{
OUString aNewString(s, n, mrFactory.getGlobalSettings().getTextEncoding());
OUString aNewString(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding());
return mrFactory.addString(aNewString);
}
@@ -1281,7 +1278,7 @@ void ScOrcusSharedStrings::set_segment_italic(bool /*b*/)
{
}
void ScOrcusSharedStrings::set_segment_font_name(const char* /*s*/, size_t /*n*/)
void ScOrcusSharedStrings::set_segment_font_name(std::string_view /*s*/)
{
}
@@ -1296,9 +1293,9 @@ void ScOrcusSharedStrings::set_segment_font_color(orcus::spreadsheet::color_elem
{
}
void ScOrcusSharedStrings::append_segment(const char* s, size_t n)
void ScOrcusSharedStrings::append_segment(std::string_view s)
{
maCurSegment.append(s, n);
maCurSegment.append(s.data(), s.size());
}
size_t ScOrcusSharedStrings::commit_segments()
@@ -1610,9 +1607,9 @@ void ScOrcusStyles::set_font_italic(bool b)
maCurrentFont.mbHasFontAttr = true;
}
void ScOrcusStyles::set_font_name(const char* s, size_t n)
void ScOrcusStyles::set_font_name(std::string_view name)
{
OUString aName(s, n, mrFactory.getGlobalSettings().getTextEncoding());
OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
maCurrentFont.maName = aName;
maCurrentFont.mbHasFontAttr = true;
}
@@ -1985,9 +1982,9 @@ void ScOrcusStyles::set_number_format_identifier(size_t)
{
}
void ScOrcusStyles::set_number_format_code(const char* s, size_t n)
void ScOrcusStyles::set_number_format_code(std::string_view s)
{
OUString aCode(s, n, mrFactory.getGlobalSettings().getTextEncoding());
OUString aCode(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding());
maCurrentNumberFormat.maCode = aCode;
maCurrentNumberFormat.mbHasNumberFormatAttr = true;
}
@@ -2141,9 +2138,9 @@ void ScOrcusStyles::set_cell_style_count(size_t /*n*/)
// needed at all?
}
void ScOrcusStyles::set_cell_style_name(const char* s, size_t n)
void ScOrcusStyles::set_cell_style_name(std::string_view name)
{
OUString aName(s, n, mrFactory.getGlobalSettings().getTextEncoding());
OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
maCurrentCellStyle.maName = aName;
}
@@ -2158,9 +2155,9 @@ void ScOrcusStyles::set_cell_style_builtin(size_t index)
maCurrentCellStyle.mnBuiltInId = index;
}
void ScOrcusStyles::set_cell_style_parent_name(const char* s, size_t n)
void ScOrcusStyles::set_cell_style_parent_name(std::string_view name)
{
const OUString aParentName(s, n, mrFactory.getGlobalSettings().getTextEncoding());
const OUString aParentName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
maCurrentCellStyle.maParentName = aParentName;
}
@@ -2215,9 +2212,9 @@ void ScOrcusAutoFilter::set_column(orcus::spreadsheet::col_t col)
SAL_INFO("sc.orcus.autofilter", "set_column: " << col);
}
void ScOrcusAutoFilter::append_column_match_value(const char* p, size_t n)
void ScOrcusAutoFilter::append_column_match_value(std::string_view value)
{
OUString aString(p, n, mrGlobalSettings.getTextEncoding());
OUString aString(value.data(), value.size(), mrGlobalSettings.getTextEncoding());
SAL_INFO("sc.orcus.autofilter", "append_column_match_value: " << aString);
}
diff --git a/sc/source/filter/orcus/orcusfiltersimpl.cxx b/sc/source/filter/orcus/orcusfiltersimpl.cxx
index f063bd3..db2d570 100644
--- a/sc/source/filter/orcus/orcusfiltersimpl.cxx
+++ b/sc/source/filter/orcus/orcusfiltersimpl.cxx
@@ -70,7 +70,7 @@ bool loadFileContent(SfxMedium& rMedium, orcus::iface::import_filter& filter)
try
{
filter.read_stream(aBuffer.getStr(), aBuffer.getLength());
filter.read_stream(aBuffer);
}
catch (const std::exception& e)
{
@@ -148,14 +148,14 @@ bool ScOrcusFiltersImpl::importODS_Styles(ScDocument& rDoc, OUString& aPath) con
if (GetShortPathNameW(o3tl::toW(aPath.getStr()), buf, std::size(buf)) == 0)
throw;
aPath8 = OUStringToOString(o3tl::toU(buf), osl_getThreadTextEncoding());
content = std::make_unique<orcus::file_content>(aPath8.getStr());
content = std::make_unique<orcus::file_content>(aPath8);
}
#else
auto content = std::make_unique<orcus::file_content>(aPath8.getStr());
auto content = std::make_unique<orcus::file_content>(aPath8);
#endif
ScOrcusFactory aFactory(rDoc);
ScOrcusStyles aStyles(aFactory);
orcus::import_ods::read_styles(content->data(), content->size(), &aStyles);
orcus::import_ods::read_styles(content->str(), &aStyles);
}
catch (const std::exception& e)
{
diff --git a/sc/source/filter/orcus/xmlcontext.cxx b/sc/source/filter/orcus/xmlcontext.cxx
index 1f3ee58..9c73a75 100644
--- a/sc/source/filter/orcus/xmlcontext.cxx
+++ b/sc/source/filter/orcus/xmlcontext.cxx
@@ -63,7 +63,7 @@ OUString toString(const orcus::xml_structure_tree::entity_name& entity, const or
aBuf.appendAscii(aShortName.c_str());
aBuf.append(':');
}
aBuf.append(OUString(entity.name.get(), entity.name.size(), RTL_TEXTENCODING_UTF8));
aBuf.append(OUString(entity.name.data(), entity.name.size(), RTL_TEXTENCODING_UTF8));
return aBuf.makeStringAndClear();
}
@@ -175,7 +175,7 @@ void ScOrcusXMLContextImpl::loadXMLStructure(weld::TreeView& rTreeCtrl, ScOrcusX
orcus::xml_structure_tree aXmlTree(cxt);
try
{
aXmlTree.parse(&aStrm[0], aStrm.size());
aXmlTree.parse(aStrm);
TreeUpdateSwitch aSwitch(rTreeCtrl);
rTreeCtrl.clear();
@@ -265,14 +265,14 @@ void ScOrcusXMLContextImpl::importXML(const ScOrcusImportXMLParam& rParam)
std::for_each(rLink.maFieldPaths.begin(), rLink.maFieldPaths.end(),
[&filter](const OString& rFieldPath)
{
filter.append_field_link(rFieldPath.getStr(), orcus::pstring());
filter.append_field_link(rFieldPath, std::string_view());
}
);
std::for_each(rLink.maRowGroups.begin(), rLink.maRowGroups.end(),
[&filter] (const OString& rRowGroup)
{
filter.set_range_row_group(rRowGroup.getStr());
filter.set_range_row_group(rRowGroup);
}
);
@@ -280,7 +280,7 @@ void ScOrcusXMLContextImpl::importXML(const ScOrcusImportXMLParam& rParam)
}
orcus::file_content content(path);
filter.read_stream(content.data(), content.size());
filter.read_stream(content.str());
aFactory.finalize();
}
diff --git a/sfx2/source/control/emojiview.cxx b/sfx2/source/control/emojiview.cxx
index 7475263..f125552 100644
--- a/sfx2/source/control/emojiview.cxx
+++ b/sfx2/source/control/emojiview.cxx
@@ -21,7 +21,6 @@
#include <orcus/json_document_tree.hpp>
#include <orcus/config.hpp>
#include <orcus/pstring.hpp>
#include <string>
#include <string_view>
#include <fstream>
@@ -122,7 +121,7 @@ void EmojiView::Populate()
aEmojiInfo.load(msJSONData, config);
node root = aEmojiInfo.get_document_root();
std::vector<orcus::pstring> keys = root.keys();
std::vector<std::string_view> keys = root.keys();
for (auto const& key : keys)
{
@@ -131,7 +130,7 @@ void EmojiView::Populate()
if(value.type() == orcus::json::node_t::object)
{
// iterate each element to get the keys
std::vector<orcus::pstring> aEmojiParams = value.keys();
std::vector<std::string_view> aEmojiParams = value.keys();
OUString sTitle, sCategory, sName;
bool bDuplicate = false;
@@ -142,15 +141,15 @@ void EmojiView::Populate()
// get values of parameters in AppendItem() function
if(emojiParam == "unicode")
{
sTitle = OStringToOUString(std::string_view( prop.string_value().get(), prop.string_value().size() ), RTL_TEXTENCODING_UTF8);
sTitle = OStringToOUString(prop.string_value(), RTL_TEXTENCODING_UTF8);
}
else if(emojiParam == "category")
{
sCategory = OStringToOUString(std::string_view( prop.string_value().get(), prop.string_value().size() ), RTL_TEXTENCODING_UTF8);
sCategory = OStringToOUString(prop.string_value(), RTL_TEXTENCODING_UTF8);
}
else if(emojiParam == "name")
{
sName = OStringToOUString(std::string_view( prop.string_value().get(), prop.string_value().size() ), RTL_TEXTENCODING_UTF8);
sName = OStringToOUString(prop.string_value(), RTL_TEXTENCODING_UTF8);
}
else if(emojiParam == "duplicate")
{
diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in
index 295b31b..1460ae5 100644
--- a/solenv/flatpak-manifest.in
+++ b/solenv/flatpak-manifest.in
@@ -397,11 +397,11 @@
"dest-filename": "mariadb-connector-c-3.1.8-src.tar.gz"
},
{
"url": "https://dev-www.libreoffice.org/src/mdds-1.7.0.tar.bz2",
"sha256": "a66a2a8293a3abc6cd9baff7c236156e2666935cbfb69a15d64d38141638fecf",
"url": "https://dev-www.libreoffice.org/src/mdds-2.0.0.tar.bz2",
"sha256": "5a0fb2dd88a6420e0a69ec4c7259bcd1fe8f4a80b232c150e11f3da4c68236d7",
"type": "file",
"dest": "external/tarballs",
"dest-filename": "mdds-1.7.0.tar.bz2"
"dest-filename": "mdds-2.0.0.tar.bz2"
},
{
"url": "https://dev-www.libreoffice.org/src/neon-0.31.2.tar.gz",
@@ -425,11 +425,11 @@
"dest-filename": "openldap-2.4.45.tgz"
},
{
"url": "https://dev-www.libreoffice.org/src/liborcus-0.16.1.tar.bz2",
"sha256": "c700d1325f744104d9fca0d5a019434901e9d51a16eedfb05792f90a298587a4",
"url": "https://dev-www.libreoffice.org/src/liborcus-0.17.0.tar.bz2",
"sha256": "2ef9d2b5ee374c683cf631b78356b110510ab895788a68d778e225d8c4176d1b",
"type": "file",
"dest": "external/tarballs",
"dest-filename": "liborcus-0.16.1.tar.bz2"
"dest-filename": "liborcus-0.17.0.tar.bz2"
},
{
"url": "https://dev-www.libreoffice.org/src/poppler-21.01.0.tar.xz",