ooxml_crypt 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +58 -0
- data/Rakefile +12 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/ext/ooxml_crypt/extconf.rb +18 -0
- data/ext/ooxml_crypt/ooxml_crypt.c +27 -0
- data/ext/ooxml_crypt/ooxml_crypt.h +7 -0
- data/lib/ooxml_crypt/version.rb +5 -0
- data/lib/ooxml_crypt.rb +75 -0
- data/vendor/cybozulib/.github/workflows/main.yml +12 -0
- data/vendor/cybozulib/.gitignore +5 -0
- data/vendor/cybozulib/CMakeLists.txt +6 -0
- data/vendor/cybozulib/COPYRIGHT +27 -0
- data/vendor/cybozulib/Makefile +26 -0
- data/vendor/cybozulib/bin/libeay32.dll +0 -0
- data/vendor/cybozulib/bin/libmecab.dll +0 -0
- data/vendor/cybozulib/bin/ssleay32.dll +0 -0
- data/vendor/cybozulib/common.mk +116 -0
- data/vendor/cybozulib/common.props +25 -0
- data/vendor/cybozulib/cybozulib.sln +286 -0
- data/vendor/cybozulib/debug.props +14 -0
- data/vendor/cybozulib/include/cybozu/array.hpp +197 -0
- data/vendor/cybozulib/include/cybozu/atoi.hpp +238 -0
- data/vendor/cybozulib/include/cybozu/atomic.hpp +146 -0
- data/vendor/cybozulib/include/cybozu/base64.hpp +210 -0
- data/vendor/cybozulib/include/cybozu/benchmark.hpp +212 -0
- data/vendor/cybozulib/include/cybozu/bfd.hpp +105 -0
- data/vendor/cybozulib/include/cybozu/bit_operation.hpp +139 -0
- data/vendor/cybozulib/include/cybozu/bitvector.hpp +358 -0
- data/vendor/cybozulib/include/cybozu/condition_variable.hpp +113 -0
- data/vendor/cybozulib/include/cybozu/condition_variable_cs.hpp +74 -0
- data/vendor/cybozulib/include/cybozu/config.hpp +392 -0
- data/vendor/cybozulib/include/cybozu/critical_section.hpp +60 -0
- data/vendor/cybozulib/include/cybozu/crypto.hpp +321 -0
- data/vendor/cybozulib/include/cybozu/csucvector.hpp +624 -0
- data/vendor/cybozulib/include/cybozu/csv.hpp +294 -0
- data/vendor/cybozulib/include/cybozu/data_type.hpp +27 -0
- data/vendor/cybozulib/include/cybozu/endian.hpp +224 -0
- data/vendor/cybozulib/include/cybozu/env.hpp +63 -0
- data/vendor/cybozulib/include/cybozu/event.hpp +122 -0
- data/vendor/cybozulib/include/cybozu/exception.hpp +253 -0
- data/vendor/cybozulib/include/cybozu/file.hpp +626 -0
- data/vendor/cybozulib/include/cybozu/fmindex.hpp +291 -0
- data/vendor/cybozulib/include/cybozu/format.hpp +93 -0
- data/vendor/cybozulib/include/cybozu/frequency.hpp +264 -0
- data/vendor/cybozulib/include/cybozu/hash.hpp +67 -0
- data/vendor/cybozulib/include/cybozu/inttype.hpp +174 -0
- data/vendor/cybozulib/include/cybozu/itoa.hpp +336 -0
- data/vendor/cybozulib/include/cybozu/json.hpp +120 -0
- data/vendor/cybozulib/include/cybozu/line_stream.hpp +149 -0
- data/vendor/cybozulib/include/cybozu/link_libeay32.hpp +21 -0
- data/vendor/cybozulib/include/cybozu/link_mpir.hpp +18 -0
- data/vendor/cybozulib/include/cybozu/link_ssleay32.hpp +19 -0
- data/vendor/cybozulib/include/cybozu/log.hpp +237 -0
- data/vendor/cybozulib/include/cybozu/minixml.hpp +452 -0
- data/vendor/cybozulib/include/cybozu/mmap.hpp +143 -0
- data/vendor/cybozulib/include/cybozu/mutex.hpp +144 -0
- data/vendor/cybozulib/include/cybozu/nlp/mecab.hpp +96 -0
- data/vendor/cybozulib/include/cybozu/nlp/plsi.hpp +315 -0
- data/vendor/cybozulib/include/cybozu/nlp/random.hpp +74 -0
- data/vendor/cybozulib/include/cybozu/nlp/sparse.hpp +529 -0
- data/vendor/cybozulib/include/cybozu/nlp/svd.hpp +486 -0
- data/vendor/cybozulib/include/cybozu/nlp/tfidf.hpp +226 -0
- data/vendor/cybozulib/include/cybozu/nlp/top_score.hpp +75 -0
- data/vendor/cybozulib/include/cybozu/option.hpp +743 -0
- data/vendor/cybozulib/include/cybozu/parallel.hpp +88 -0
- data/vendor/cybozulib/include/cybozu/pcg.hpp +72 -0
- data/vendor/cybozulib/include/cybozu/process.hpp +324 -0
- data/vendor/cybozulib/include/cybozu/quit_signal_handler.hpp +66 -0
- data/vendor/cybozulib/include/cybozu/random_generator.hpp +144 -0
- data/vendor/cybozulib/include/cybozu/regex.hpp +463 -0
- data/vendor/cybozulib/include/cybozu/select8.hpp +279 -0
- data/vendor/cybozulib/include/cybozu/serializer.hpp +363 -0
- data/vendor/cybozulib/include/cybozu/sha1.hpp +209 -0
- data/vendor/cybozulib/include/cybozu/sha2.hpp +506 -0
- data/vendor/cybozulib/include/cybozu/siphash.hpp +105 -0
- data/vendor/cybozulib/include/cybozu/socket.hpp +785 -0
- data/vendor/cybozulib/include/cybozu/ssl.hpp +203 -0
- data/vendor/cybozulib/include/cybozu/stacktrace.hpp +291 -0
- data/vendor/cybozulib/include/cybozu/stream.hpp +269 -0
- data/vendor/cybozulib/include/cybozu/string.hpp +1746 -0
- data/vendor/cybozulib/include/cybozu/string_operation.hpp +365 -0
- data/vendor/cybozulib/include/cybozu/sucvector.hpp +378 -0
- data/vendor/cybozulib/include/cybozu/test.hpp +373 -0
- data/vendor/cybozulib/include/cybozu/thread.hpp +229 -0
- data/vendor/cybozulib/include/cybozu/time.hpp +281 -0
- data/vendor/cybozulib/include/cybozu/tls.hpp +115 -0
- data/vendor/cybozulib/include/cybozu/unordered_map.hpp +13 -0
- data/vendor/cybozulib/include/cybozu/unordered_set.hpp +13 -0
- data/vendor/cybozulib/include/cybozu/v128.hpp +376 -0
- data/vendor/cybozulib/include/cybozu/wavelet_matrix.hpp +345 -0
- data/vendor/cybozulib/include/cybozu/xorshift.hpp +189 -0
- data/vendor/cybozulib/include/cybozu/zlib.hpp +325 -0
- data/vendor/cybozulib/include/sais.hxx +364 -0
- data/vendor/cybozulib/misc/make_select8tbl.cpp +26 -0
- data/vendor/cybozulib/mk.bat +37 -0
- data/vendor/cybozulib/readme.md +29 -0
- data/vendor/cybozulib/release.props +12 -0
- data/vendor/cybozulib/sample/Makefile +30 -0
- data/vendor/cybozulib/sample/csucvector_smpl.cpp +42 -0
- data/vendor/cybozulib/sample/data/svd/org/test1.S +4 -0
- data/vendor/cybozulib/sample/data/svd/org/test1.U +4 -0
- data/vendor/cybozulib/sample/data/svd/org/test1.V +6 -0
- data/vendor/cybozulib/sample/data/svd/test1 +4 -0
- data/vendor/cybozulib/sample/data/svd/test2 +4 -0
- data/vendor/cybozulib/sample/desymbol.cpp +127 -0
- data/vendor/cybozulib/sample/exception_smpl.cpp +46 -0
- data/vendor/cybozulib/sample/fmindex_smpl.cpp +231 -0
- data/vendor/cybozulib/sample/log_smpl.cpp +19 -0
- data/vendor/cybozulib/sample/mecab_smpl.cpp +37 -0
- data/vendor/cybozulib/sample/option2_smpl.cpp +68 -0
- data/vendor/cybozulib/sample/option_smpl.cpp +42 -0
- data/vendor/cybozulib/sample/plsi_smpl.cpp +207 -0
- data/vendor/cybozulib/sample/proj/exception_smpl.vcproj +184 -0
- data/vendor/cybozulib/sample/proj/mecab_smpl.vcproj +184 -0
- data/vendor/cybozulib/sample/proj/ssl_smpl/ssl_smpl.vcxproj +85 -0
- data/vendor/cybozulib/sample/proj/ssl_smpl.vcproj +347 -0
- data/vendor/cybozulib/sample/proj/stacktrace_smpl/stacktrace_smpl.vcxproj +85 -0
- data/vendor/cybozulib/sample/proj/svd_smpl.vcproj +184 -0
- data/vendor/cybozulib/sample/quit_signal_handler.cpp +30 -0
- data/vendor/cybozulib/sample/serializer_smpl.cpp +196 -0
- data/vendor/cybozulib/sample/socket_smpl.cpp +82 -0
- data/vendor/cybozulib/sample/ssl_smpl.cpp +39 -0
- data/vendor/cybozulib/sample/stacktrace_smpl.cpp +52 -0
- data/vendor/cybozulib/sample/svd_bench_smpl.cpp +143 -0
- data/vendor/cybozulib/sample/svd_smpl.cpp +94 -0
- data/vendor/cybozulib/sample/wm_bench_smpl.cpp +182 -0
- data/vendor/cybozulib/sample/zlib_smpl.cpp +41 -0
- data/vendor/cybozulib/src/Makefile +8 -0
- data/vendor/cybozulib/src/base/Makefile +19 -0
- data/vendor/cybozulib/test/Makefile +12 -0
- data/vendor/cybozulib/test/base/Makefile +37 -0
- data/vendor/cybozulib/test/base/array_test.cpp +173 -0
- data/vendor/cybozulib/test/base/atoi_test.cpp +774 -0
- data/vendor/cybozulib/test/base/atomic_test.cpp +49 -0
- data/vendor/cybozulib/test/base/base64_test.cpp +113 -0
- data/vendor/cybozulib/test/base/bit_operation_test.cpp +134 -0
- data/vendor/cybozulib/test/base/bitvector_test.cpp +204 -0
- data/vendor/cybozulib/test/base/condition_variable_cs_test.cpp +92 -0
- data/vendor/cybozulib/test/base/condition_variable_test.cpp +88 -0
- data/vendor/cybozulib/test/base/config_test.cpp +236 -0
- data/vendor/cybozulib/test/base/crypto_test.cpp +122 -0
- data/vendor/cybozulib/test/base/csucvector_test.cpp +63 -0
- data/vendor/cybozulib/test/base/csv_test.cpp +182 -0
- data/vendor/cybozulib/test/base/data/a.xml +26 -0
- data/vendor/cybozulib/test/base/endian_test.cpp +56 -0
- data/vendor/cybozulib/test/base/env_test.cpp +22 -0
- data/vendor/cybozulib/test/base/event_test.cpp +41 -0
- data/vendor/cybozulib/test/base/file_test.cpp +233 -0
- data/vendor/cybozulib/test/base/fmindex_test.cpp +118 -0
- data/vendor/cybozulib/test/base/format_test.cpp +12 -0
- data/vendor/cybozulib/test/base/frequency_test.cpp +104 -0
- data/vendor/cybozulib/test/base/itoa_test.cpp +522 -0
- data/vendor/cybozulib/test/base/line_stream_test.cpp +208 -0
- data/vendor/cybozulib/test/base/mecab_test.cpp +41 -0
- data/vendor/cybozulib/test/base/minixml_test.cpp +103 -0
- data/vendor/cybozulib/test/base/mmap_test.cpp +15 -0
- data/vendor/cybozulib/test/base/option_test.cpp +487 -0
- data/vendor/cybozulib/test/base/parallel_test.cpp +48 -0
- data/vendor/cybozulib/test/base/proj/array_test/array_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/atoi_test/atoi_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/atomic_test/atomic_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/base64_test/base64_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/condition_variable_cs_test/condition_variable_cs_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/condition_variable_test/condition_variable_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/config_test/config_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/csv_test/csv_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/endian_test/endian_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/env_test/env_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/event_test/event_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/file_test/file_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/itoa_test/itoa_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/mecab_test/mecab_test.vcxproj +88 -0
- data/vendor/cybozulib/test/base/proj/minixml_test/minixml_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/mmap_test/mmap_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/serializer_test/serializer_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/sha1_test/sha1_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/stream_test/stream_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/string_operation_test/string_operation_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/string_test/string_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/thread_test/thread_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/time_test/time_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/tls_test/tls_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/zlib_test/zlib_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/random_generator_test.cpp +28 -0
- data/vendor/cybozulib/test/base/regex_test.cpp +74 -0
- data/vendor/cybozulib/test/base/serializer_test.cpp +483 -0
- data/vendor/cybozulib/test/base/sha1_test.cpp +61 -0
- data/vendor/cybozulib/test/base/sha2_test.cpp +191 -0
- data/vendor/cybozulib/test/base/siphash_test.cpp +33 -0
- data/vendor/cybozulib/test/base/socket_test.cpp +76 -0
- data/vendor/cybozulib/test/base/stream_test.cpp +101 -0
- data/vendor/cybozulib/test/base/string_operation_test.cpp +340 -0
- data/vendor/cybozulib/test/base/string_test.cpp +1705 -0
- data/vendor/cybozulib/test/base/sucvector_test.cpp +312 -0
- data/vendor/cybozulib/test/base/thread_test.cpp +62 -0
- data/vendor/cybozulib/test/base/time_test.cpp +164 -0
- data/vendor/cybozulib/test/base/tls_test.cpp +50 -0
- data/vendor/cybozulib/test/base/wavelet_matrix_test.cpp +145 -0
- data/vendor/cybozulib/test/base/zlib_test.cpp +371 -0
- data/vendor/cybozulib/test/nlp/Makefile +27 -0
- data/vendor/cybozulib/test/nlp/proj/random_test.vcproj +184 -0
- data/vendor/cybozulib/test/nlp/proj/sparse_test.vcproj +184 -0
- data/vendor/cybozulib/test/nlp/proj/svd_test.vcproj +184 -0
- data/vendor/cybozulib/test/nlp/random_test.cpp +62 -0
- data/vendor/cybozulib/test/nlp/sparse_test.cpp +347 -0
- data/vendor/cybozulib/test/nlp/svd_test.cpp +234 -0
- data/vendor/cybozulib/test/nlp/top_score_test.cpp +40 -0
- data/vendor/cybozulib/tool/create_vcproj.py +186 -0
- data/vendor/cybozulib/tool/vcproj_tmpl.py +185 -0
- data/vendor/msoffice/COPYRIGHT +27 -0
- data/vendor/msoffice/Makefile +29 -0
- data/vendor/msoffice/bin/64/msoc.dll +0 -0
- data/vendor/msoffice/bin/64/msocsample.exe +0 -0
- data/vendor/msoffice/bin/64/msoffice-crypt.exe +0 -0
- data/vendor/msoffice/bin/msoc.dll +0 -0
- data/vendor/msoffice/bin/msocsample.exe +0 -0
- data/vendor/msoffice/bin/msoffice-crypt.exe +0 -0
- data/vendor/msoffice/common.mk +71 -0
- data/vendor/msoffice/common.props +26 -0
- data/vendor/msoffice/debug.props +14 -0
- data/vendor/msoffice/include/attack.hpp +211 -0
- data/vendor/msoffice/include/cfb.hpp +777 -0
- data/vendor/msoffice/include/crypto_util.hpp +450 -0
- data/vendor/msoffice/include/custom_sha1.hpp +342 -0
- data/vendor/msoffice/include/decode.hpp +240 -0
- data/vendor/msoffice/include/encode.hpp +221 -0
- data/vendor/msoffice/include/make_dataspace.hpp +316 -0
- data/vendor/msoffice/include/msoc.h +129 -0
- data/vendor/msoffice/include/resource.hpp +7 -0
- data/vendor/msoffice/include/standard_encryption.hpp +145 -0
- data/vendor/msoffice/include/uint32vec.hpp +179 -0
- data/vendor/msoffice/include/util.hpp +212 -0
- data/vendor/msoffice/lib/.emptydir +0 -0
- data/vendor/msoffice/misc/decrypt-xls.vbs +46 -0
- data/vendor/msoffice/mk.bat +1 -0
- data/vendor/msoffice/mkdll.bat +3 -0
- data/vendor/msoffice/msoc.def +13 -0
- data/vendor/msoffice/msocsample.py +178 -0
- data/vendor/msoffice/msoffice12.sln +31 -0
- data/vendor/msoffice/readme.md +110 -0
- data/vendor/msoffice/release.props +28 -0
- data/vendor/msoffice/src/Makefile +19 -0
- data/vendor/msoffice/src/attack.cpp +124 -0
- data/vendor/msoffice/src/cfb_test.cpp +77 -0
- data/vendor/msoffice/src/minisample.c +54 -0
- data/vendor/msoffice/src/msocdll.cpp +276 -0
- data/vendor/msoffice/src/msocsample.c +136 -0
- data/vendor/msoffice/src/msoffice-crypt.cpp +219 -0
- data/vendor/msoffice/src/proj/attack/attack.vcxproj +88 -0
- data/vendor/msoffice/src/proj/main/msoffice-crypt.vcxproj +88 -0
- data/vendor/msoffice/src/sha1.cpp +234 -0
- data/vendor/msoffice/test/Makefile +20 -0
- data/vendor/msoffice/test/cfb_test.cpp +74 -0
- data/vendor/msoffice/test/hash_test.cpp +59 -0
- data/vendor/msoffice/test/proj/cfb/cfb_test.vcxproj +90 -0
- data/vendor/msoffice/test/proj/hash/hash_test.vcxproj +90 -0
- data/vendor/msoffice/test/sampl.bat +8 -0
- data/vendor/msoffice/test_all.py +46 -0
- data/vendor/update +4 -0
- metadata +351 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
/**
|
|
3
|
+
@file
|
|
4
|
+
@brief regex for cybozu::String
|
|
5
|
+
@note VC reqires /MT or /MTd options
|
|
6
|
+
|
|
7
|
+
@author MITSUNARI Shigeo
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include <cybozu/string.hpp>
|
|
11
|
+
|
|
12
|
+
#ifdef __GNUC__
|
|
13
|
+
#define CYBOZU_RE_USE_BOOST_REGEX
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
#ifdef CYBOZU_RE_USE_BOOST_REGEX
|
|
17
|
+
#define CYBOZU_RE_STD boost
|
|
18
|
+
#ifndef BOOST_REGEX_USE_CPP_LOCALE
|
|
19
|
+
#define BOOST_REGEX_USE_CPP_LOCALE
|
|
20
|
+
#endif
|
|
21
|
+
#include <boost/regex.hpp>
|
|
22
|
+
#else
|
|
23
|
+
#if (CYBOZU_CPP_VERSION == CYBOZU_CPP_VERSION_TR1)
|
|
24
|
+
#define CYBOZU_RE_STD std::tr1
|
|
25
|
+
#else
|
|
26
|
+
#define CYBOZU_RE_STD std
|
|
27
|
+
#endif
|
|
28
|
+
#ifdef _MSC_VER
|
|
29
|
+
#ifdef _DLL_CPPLIB
|
|
30
|
+
#error "use /MT or /MTd option. /MD and /MDd are not supported"
|
|
31
|
+
#endif
|
|
32
|
+
#define CYBOZU_STRING_USE_WIN
|
|
33
|
+
#pragma warning(push)
|
|
34
|
+
#pragma warning(disable : 4018) // signed/unsigned mismatch
|
|
35
|
+
#endif
|
|
36
|
+
#include <regex>
|
|
37
|
+
#ifdef _MSC_VER
|
|
38
|
+
#pragma warning(pop)
|
|
39
|
+
#endif
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
#ifdef _MSC_VER
|
|
43
|
+
#define CYBOZU_RE_CHAR wchar_t
|
|
44
|
+
#define CYBOZU_RE(x) L##x
|
|
45
|
+
#else
|
|
46
|
+
#define CYBOZU_RE_CHAR char
|
|
47
|
+
#define CYBOZU_RE(x) x
|
|
48
|
+
#endif
|
|
49
|
+
|
|
50
|
+
namespace regex_local {
|
|
51
|
+
|
|
52
|
+
/* true if c in [min, max] */
|
|
53
|
+
inline bool in(unsigned int c, char min, char max)
|
|
54
|
+
{
|
|
55
|
+
// return min <= c && c <= max;
|
|
56
|
+
return static_cast<unsigned int>(c - min) <= static_cast<unsigned int>(max - min);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
} // regex_local
|
|
60
|
+
|
|
61
|
+
#ifdef CYBOZU_STRING_USE_WIN
|
|
62
|
+
|
|
63
|
+
namespace std {
|
|
64
|
+
|
|
65
|
+
template<>
|
|
66
|
+
class ctype<cybozu::Char> : public ctype_base {
|
|
67
|
+
// const std::ctype_base::mask *maskTbl_;
|
|
68
|
+
const std::ctype_base::mask *getMaskTbl() const
|
|
69
|
+
{
|
|
70
|
+
static const std::ctype_base::mask maskTbl[] = {
|
|
71
|
+
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x20, 0x20,
|
|
72
|
+
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
|
73
|
+
0x48, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
|
74
|
+
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
|
75
|
+
0x10, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
|
76
|
+
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x10, 0x10, 0x10, 0x10,
|
|
77
|
+
0x10, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
|
78
|
+
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x10, 0x10, 0x10, 0x20,
|
|
79
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
80
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
81
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
82
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
83
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
84
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
85
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
86
|
+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
87
|
+
};
|
|
88
|
+
return maskTbl;
|
|
89
|
+
}
|
|
90
|
+
public:
|
|
91
|
+
static locale::id id;
|
|
92
|
+
ctype(size_t refs = 0) : ctype_base(refs)
|
|
93
|
+
{
|
|
94
|
+
#if 0
|
|
95
|
+
static struct Custom : public std::ctype<char> {
|
|
96
|
+
const mask * table() const
|
|
97
|
+
{
|
|
98
|
+
const mask *m = std::ctype<char>::table();
|
|
99
|
+
return m;
|
|
100
|
+
}
|
|
101
|
+
} custom;
|
|
102
|
+
maskTbl_ = custom.table();
|
|
103
|
+
#endif
|
|
104
|
+
}
|
|
105
|
+
bool is(std::ctype_base::mask m, cybozu::Char c) const
|
|
106
|
+
{
|
|
107
|
+
/*
|
|
108
|
+
s(48):p(1d7):c(20):u(1):l(2):a(103):d(4):p(10):x(80)
|
|
109
|
+
printf("u(%x):l(%x):d(%x):p(%x):c(%x):x(%x):s(%x):p(%x):a(%x)\n"
|
|
110
|
+
, std::ctype_base::upper // 0x001
|
|
111
|
+
, std::ctype_base::lower // 0x002
|
|
112
|
+
, std::ctype_base::digit // 0x004
|
|
113
|
+
, std::ctype_base::punct // 0x010
|
|
114
|
+
, std::ctype_base::cntrl // 0x020
|
|
115
|
+
, std::ctype_base::xdigit // 0x080
|
|
116
|
+
, std::ctype_base::space // 0x048
|
|
117
|
+
, std::ctype_base::print // 0x1d7
|
|
118
|
+
, std::ctype_base::alpha // 0x103
|
|
119
|
+
);exit(1);
|
|
120
|
+
*/
|
|
121
|
+
if (c & ~0xFFU) return false;
|
|
122
|
+
// return (maskTbl_[(unsigned char)c] & m) != 0;
|
|
123
|
+
return (getMaskTbl()[(unsigned char)c] & m) != 0;
|
|
124
|
+
// static const std::ctype<char>& cache = use_facet<ctype<char> >(std::locale());
|
|
125
|
+
// return cache.is(m, static_cast<char>(c));
|
|
126
|
+
}
|
|
127
|
+
const cybozu::Char* is(const cybozu::Char* begin, const cybozu::Char* end, mask* dest) const
|
|
128
|
+
{
|
|
129
|
+
while (begin != end) {
|
|
130
|
+
*dest++ = getMaskTbl()[(unsigned char)narrow(*begin)];
|
|
131
|
+
// *dest++ = maskTbl_[(unsigned char)narrow(*begin)];
|
|
132
|
+
begin++;
|
|
133
|
+
}
|
|
134
|
+
return begin;
|
|
135
|
+
}
|
|
136
|
+
const cybozu::Char* scan_is(std::ctype_base::mask m, const cybozu::Char* begin, const cybozu::Char* end) const
|
|
137
|
+
{
|
|
138
|
+
while (begin != end && !is(m, *begin)) begin++;
|
|
139
|
+
return begin;
|
|
140
|
+
}
|
|
141
|
+
const cybozu::Char* scan_not(std::ctype_base::mask m, const cybozu::Char* begin, const cybozu::Char* end) const
|
|
142
|
+
{
|
|
143
|
+
while (begin != end && is(m, *begin)) begin++;
|
|
144
|
+
return begin;
|
|
145
|
+
}
|
|
146
|
+
cybozu::Char tolower(cybozu::Char c) const
|
|
147
|
+
{
|
|
148
|
+
if ('A' <= c && c <= 'Z') return c - 'A' + 'a';
|
|
149
|
+
return c;
|
|
150
|
+
}
|
|
151
|
+
const cybozu::Char* tolower(cybozu::Char* begin, const cybozu::Char* end) const
|
|
152
|
+
{
|
|
153
|
+
while (begin != end) {
|
|
154
|
+
*begin = tolower(*begin);
|
|
155
|
+
begin++;
|
|
156
|
+
}
|
|
157
|
+
return end;
|
|
158
|
+
}
|
|
159
|
+
cybozu::Char toupper(cybozu::Char c) const
|
|
160
|
+
{
|
|
161
|
+
if ('a' <= c && c <= 'z') return c - 'a' + 'A';
|
|
162
|
+
return c;
|
|
163
|
+
}
|
|
164
|
+
const cybozu::Char* toupper(cybozu::Char* begin, const cybozu::Char* end) const
|
|
165
|
+
{
|
|
166
|
+
while (begin != end) {
|
|
167
|
+
*begin = toupper(*begin);
|
|
168
|
+
begin++;
|
|
169
|
+
}
|
|
170
|
+
return end;
|
|
171
|
+
}
|
|
172
|
+
cybozu::Char widen(char c) const
|
|
173
|
+
{
|
|
174
|
+
return c;
|
|
175
|
+
}
|
|
176
|
+
const char* widen(const char* begin, const char* end, cybozu::Char* to) const
|
|
177
|
+
{
|
|
178
|
+
while (begin != end) {
|
|
179
|
+
*to++ = std::ctype<cybozu::Char>::widen(*begin++);
|
|
180
|
+
}
|
|
181
|
+
return end;
|
|
182
|
+
}
|
|
183
|
+
char narrow(cybozu::Char c, char dflt = '\0') const
|
|
184
|
+
{
|
|
185
|
+
if ((0 <= c && c < 256) || (c == -1)) return static_cast<char>(c);
|
|
186
|
+
return dflt;
|
|
187
|
+
}
|
|
188
|
+
const cybozu::Char* narrow(const cybozu::Char* begin, const cybozu::Char* end, char dflt, char* to) const
|
|
189
|
+
{
|
|
190
|
+
while (begin != end) {
|
|
191
|
+
*to++ = narrow(*begin++, dflt);
|
|
192
|
+
}
|
|
193
|
+
return end;
|
|
194
|
+
}
|
|
195
|
+
virtual bool do_is(mask m, cybozu::Char c) const
|
|
196
|
+
{
|
|
197
|
+
return is(m, c);
|
|
198
|
+
}
|
|
199
|
+
virtual const cybozu::Char *do_is(const cybozu::Char *begin, const cybozu::Char *end, mask *dest) const
|
|
200
|
+
{
|
|
201
|
+
return is(begin, end, dest);
|
|
202
|
+
}
|
|
203
|
+
virtual const cybozu::Char *do_scan_is(mask m, const cybozu::Char *begin, const cybozu::Char *end) const
|
|
204
|
+
{
|
|
205
|
+
return scan_is(m, begin, end);
|
|
206
|
+
}
|
|
207
|
+
virtual const cybozu::Char *do_scan_not(mask m, const cybozu::Char *begin, const cybozu::Char *end) const
|
|
208
|
+
{
|
|
209
|
+
return scan_not(m, begin, end);
|
|
210
|
+
}
|
|
211
|
+
virtual cybozu::Char do_tolower(cybozu::Char c) const
|
|
212
|
+
{
|
|
213
|
+
return tolower(c);
|
|
214
|
+
}
|
|
215
|
+
virtual const cybozu::Char *do_tolower(cybozu::Char *begin, const cybozu::Char *end) const
|
|
216
|
+
{
|
|
217
|
+
return tolower(begin, end);
|
|
218
|
+
}
|
|
219
|
+
virtual cybozu::Char do_toupper(cybozu::Char c) const
|
|
220
|
+
{
|
|
221
|
+
return toupper(c);
|
|
222
|
+
}
|
|
223
|
+
virtual const cybozu::Char *do_toupper(cybozu::Char *begin, const cybozu::Char *end) const
|
|
224
|
+
{
|
|
225
|
+
return toupper(begin, end);
|
|
226
|
+
}
|
|
227
|
+
virtual cybozu::Char do_widen(char c) const
|
|
228
|
+
{
|
|
229
|
+
return widen(c);
|
|
230
|
+
}
|
|
231
|
+
virtual const char *do_widen(const char *begin, const char *end, cybozu::Char *dest) const
|
|
232
|
+
{
|
|
233
|
+
return widen(begin, end, dest);
|
|
234
|
+
}
|
|
235
|
+
virtual char do_narrow(cybozu::Char c, char dflt) const
|
|
236
|
+
{
|
|
237
|
+
return narrow(c, dflt);
|
|
238
|
+
}
|
|
239
|
+
virtual const cybozu::Char *do_narrow(const cybozu::Char *begin, const cybozu::Char *end, char dflt, char *dest) const
|
|
240
|
+
{
|
|
241
|
+
return narrow(begin, end, dflt, dest);
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
locale::id __declspec(selectany) ctype<cybozu::Char>::id;
|
|
246
|
+
|
|
247
|
+
#if defined(_DLL_CPPLIB)
|
|
248
|
+
//__PURE_APPDOMAIN_GLOBAL std::locale::id ctype<cybozu::Char>::id;
|
|
249
|
+
#endif /* defined(_DLL_CPPLIB) etc. */
|
|
250
|
+
|
|
251
|
+
} // std
|
|
252
|
+
|
|
253
|
+
template<>
|
|
254
|
+
class CYBOZU_RE_STD::regex_traits<cybozu::Char> : public CYBOZU_RE_STD::_Regex_traits<cybozu::Char> {
|
|
255
|
+
public:
|
|
256
|
+
int value(cybozu::Char ch, int base) const
|
|
257
|
+
{
|
|
258
|
+
if (base != 8 && '0' <= ch && ch <= '9' || base == 8 && '0' <= ch && ch <= '7') return ch - '0';
|
|
259
|
+
if (base != 16) return -1;
|
|
260
|
+
if ('a' <= ch && ch <= 'f') return ch - 'a' + 10;
|
|
261
|
+
if ('A' <= ch && ch <= 'F') return ch - 'A' + 10;
|
|
262
|
+
return -1;
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
#define CYBOZU_RE_CHAR_CLASS_NAME(n, c) { n, sizeof(n)/sizeof(n[0]) - 1, c }
|
|
267
|
+
|
|
268
|
+
namespace cybozu { namespace regex_local {
|
|
269
|
+
|
|
270
|
+
static const cybozu::Char _alpha[] = { 'a', 'l', 'p', 'h', 'a', 0 };
|
|
271
|
+
static const cybozu::Char _blank[] = { 'b', 'l', 'a', 'n', 'k', 0 };
|
|
272
|
+
static const cybozu::Char _cntrl[] = {'c', 'n', 't', 'r', 'l', 0 };
|
|
273
|
+
static const cybozu::Char _d[] = {'d', 0 };
|
|
274
|
+
static const cybozu::Char _digit[] = {'d', 'i', 'g', 'i', 't', 0 };
|
|
275
|
+
static const cybozu::Char _graph[] = {'g', 'r', 'a', 'p', 'h', 0 };
|
|
276
|
+
static const cybozu::Char _lower[] = {'l', 'o', 'w', 'e', 'r', 0 };
|
|
277
|
+
static const cybozu::Char _print[] = {'p', 'r', 'i', 'n', 't', 0 };
|
|
278
|
+
static const cybozu::Char _punct[] = {'p', 'u', 'n', 'c', 't', 0 };
|
|
279
|
+
static const cybozu::Char _space[] = {'s', 'p', 'a', 'c', 'e', 0 };
|
|
280
|
+
static const cybozu::Char _s[] = {'s', 0 };
|
|
281
|
+
static const cybozu::Char _upper[] = {'u', 'p', 'p', 'e', 'r', 0 };
|
|
282
|
+
static const cybozu::Char _w[] = {'w', 0 };
|
|
283
|
+
static const cybozu::Char _xdigit[]= {'x', 'd', 'i', 'g', 'i', 't', 0 };
|
|
284
|
+
|
|
285
|
+
} }
|
|
286
|
+
|
|
287
|
+
template<>
|
|
288
|
+
const CYBOZU_RE_STD::_Cl_names<cybozu::Char> CYBOZU_RE_STD::_Regex_traits<cybozu::Char>::_Names[] = {
|
|
289
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_alpha, _Regex_traits<cybozu::Char>::_Ch_alnum),
|
|
290
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_blank, _Regex_traits<cybozu::Char>::_Ch_blank),
|
|
291
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_cntrl, _Regex_traits<cybozu::Char>::_Ch_cntrl),
|
|
292
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_d, _Regex_traits<cybozu::Char>::_Ch_digit),
|
|
293
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_digit, _Regex_traits<cybozu::Char>::_Ch_digit),
|
|
294
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_graph, _Regex_traits<cybozu::Char>::_Ch_graph),
|
|
295
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_lower, _Regex_traits<cybozu::Char>::_Ch_lower),
|
|
296
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_print, _Regex_traits<cybozu::Char>::_Ch_print),
|
|
297
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_punct, _Regex_traits<cybozu::Char>::_Ch_punct),
|
|
298
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_space, _Regex_traits<cybozu::Char>::_Ch_space),
|
|
299
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_s, _Regex_traits<cybozu::Char>::_Ch_space),
|
|
300
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_upper, _Regex_traits<cybozu::Char>::_Ch_upper),
|
|
301
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_w, (_STD ctype_base::mask)(-1)),
|
|
302
|
+
CYBOZU_RE_CHAR_CLASS_NAME(cybozu::regex_local::_xdigit, _Regex_traits<cybozu::Char>::_Ch_xdigit),
|
|
303
|
+
{0, 0, 0},
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
#undef CYBOZU_RE_CHAR_CLASS_NAME
|
|
307
|
+
|
|
308
|
+
#endif // CYBOZU_STRING_USE_WIN
|
|
309
|
+
|
|
310
|
+
namespace cybozu {
|
|
311
|
+
|
|
312
|
+
namespace regex_constants = CYBOZU_RE_STD::regex_constants;
|
|
313
|
+
|
|
314
|
+
class regex : public CYBOZU_RE_STD::basic_regex<Char> {
|
|
315
|
+
typedef CYBOZU_RE_STD::basic_regex<Char> Base;
|
|
316
|
+
public:
|
|
317
|
+
typedef size_t size_type;
|
|
318
|
+
explicit regex(){}
|
|
319
|
+
explicit regex(const Char* p, flag_type f = regex_constants::ECMAScript)
|
|
320
|
+
: Base(p, f) {}
|
|
321
|
+
explicit regex(const Char16* p, flag_type f = regex_constants::ECMAScript)
|
|
322
|
+
: Base(String(p).c_str(), f) {}
|
|
323
|
+
explicit regex(const String& p, flag_type f = regex_constants::ECMAScript)
|
|
324
|
+
: Base(p.c_str(), f) {}
|
|
325
|
+
regex(const Char* p1, const Char* p2, flag_type f = regex_constants::ECMAScript)
|
|
326
|
+
: Base(p1, p2, f) {}
|
|
327
|
+
regex(const Char* p, size_type len, flag_type f)
|
|
328
|
+
: Base(p, len, f) {}
|
|
329
|
+
regex(const regex& that)
|
|
330
|
+
: Base(that) {}
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
class sub_match : public CYBOZU_RE_STD::sub_match<cybozu::String::const_iterator> {
|
|
334
|
+
typedef CYBOZU_RE_STD::sub_match<cybozu::String::const_iterator> Base;
|
|
335
|
+
public:
|
|
336
|
+
cybozu::String str() const {
|
|
337
|
+
cybozu::String str(Base::str());
|
|
338
|
+
return str;
|
|
339
|
+
}
|
|
340
|
+
operator cybozu::String() const { return str(); }
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
class smatch : public CYBOZU_RE_STD::match_results<cybozu::String::const_iterator> {
|
|
344
|
+
typedef CYBOZU_RE_STD::match_results<cybozu::String::const_iterator> Base;
|
|
345
|
+
public:
|
|
346
|
+
String str(int sub = 0) const { return Base::str(sub); }
|
|
347
|
+
const sub_match& prefix() const { return *(const sub_match*)&(Base::prefix()); }
|
|
348
|
+
const sub_match& suffix() const { return *(const sub_match*)&(Base::suffix()); }
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
class sregex_iterator : public CYBOZU_RE_STD::regex_iterator<String::const_iterator> {
|
|
352
|
+
typedef CYBOZU_RE_STD::regex_iterator<String::const_iterator> Base;
|
|
353
|
+
public:
|
|
354
|
+
sregex_iterator(){}
|
|
355
|
+
sregex_iterator(const String::const_iterator a, const String::const_iterator b, const regex& re, regex_constants::match_flag_type m = regex_constants::match_default)
|
|
356
|
+
: Base(a, b, re, m) {}
|
|
357
|
+
sregex_iterator(const sregex_iterator& rhs)
|
|
358
|
+
: Base(rhs) {}
|
|
359
|
+
#ifndef CYBOZU_STRING_USE_WIN /* return temporary address when using vc tr1? */
|
|
360
|
+
const smatch& operator*()const { return *static_cast<const smatch*>(&Base(*this).operator*()); }
|
|
361
|
+
const smatch* operator->()const { return static_cast<const smatch*>(Base(*this).operator->()); }
|
|
362
|
+
#endif
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
class sregex_token_iterator : public CYBOZU_RE_STD::regex_token_iterator<cybozu::String::const_iterator> {
|
|
366
|
+
typedef CYBOZU_RE_STD::regex_token_iterator<cybozu::String::const_iterator> Base;
|
|
367
|
+
typedef cybozu::String::const_iterator Iterator;
|
|
368
|
+
public:
|
|
369
|
+
sregex_token_iterator() {}
|
|
370
|
+
sregex_token_iterator(Iterator begin, Iterator end, const regex& re, int sub = 0, regex_constants::match_flag_type m = regex_constants::match_default)
|
|
371
|
+
: Base(begin, end, re, sub, m) {}
|
|
372
|
+
sregex_token_iterator(Iterator begin, Iterator end, const regex& re, const std::vector<int>& sub, regex_constants::match_flag_type m = regex_constants::match_default)
|
|
373
|
+
: Base(begin, end, re, sub, m) {}
|
|
374
|
+
template<size_t N>
|
|
375
|
+
sregex_token_iterator(Iterator begin, Iterator end, const regex& re, const int (&sub)[N], regex_constants::match_flag_type m = regex_constants::match_default)
|
|
376
|
+
: Base(begin, end, re, sub, m) {}
|
|
377
|
+
sregex_token_iterator(const regex_token_iterator& rhs)
|
|
378
|
+
: Base(rhs) {}
|
|
379
|
+
const sub_match& operator*() const { return *(const sub_match*)&(Base::operator*()); }
|
|
380
|
+
sregex_token_iterator& operator++() { return *(sregex_token_iterator*)&(Base::operator++()); }
|
|
381
|
+
sregex_token_iterator operator++(int) {
|
|
382
|
+
sregex_token_iterator prev = *this;
|
|
383
|
+
++(*this);
|
|
384
|
+
return prev;
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
inline bool regex_search(const String::const_iterator begin, const String::const_iterator end, smatch& m, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
389
|
+
{
|
|
390
|
+
return CYBOZU_RE_STD::regex_search(begin, end, m, e, flags);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
inline bool regex_search(const String& s, smatch& m, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
394
|
+
{
|
|
395
|
+
return regex_search(s.begin(), s.end(), m, e, flags);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
inline bool regex_search(const String& s, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
399
|
+
{
|
|
400
|
+
smatch m;
|
|
401
|
+
return regex_search(s, m, e, flags);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
inline bool regex_search(const String::const_iterator begin, const String::const_iterator end, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
405
|
+
{
|
|
406
|
+
smatch m;
|
|
407
|
+
return regex_search(begin, end, m, e, flags);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
inline String regex_replace(const String::const_iterator begin, const String::const_iterator end, const regex& e, const String& fmt, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
411
|
+
{
|
|
412
|
+
String result;
|
|
413
|
+
CYBOZU_RE_STD::regex_replace(std::back_inserter(result.get()), begin, end, e, fmt.get(), flags);
|
|
414
|
+
return result;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
inline String regex_replace(const String& s, const regex& e, const String& fmt, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
418
|
+
{
|
|
419
|
+
return regex_replace(s.begin(), s.end(), e, fmt, flags);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
inline bool regex_match(const String::const_iterator begin, const String::const_iterator end, smatch& m, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
423
|
+
{
|
|
424
|
+
return CYBOZU_RE_STD::regex_match(begin, end, m, e, flags);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
inline bool regex_match(const String& s, smatch& m, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
428
|
+
{
|
|
429
|
+
return regex_match(s.begin(), s.end(), m, e, flags);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
inline bool regex_match(const String::const_iterator begin, const String::const_iterator end, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
433
|
+
{
|
|
434
|
+
smatch m;
|
|
435
|
+
return regex_match(begin, end, m, e, flags);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
inline bool regex_match(const String& s, const regex& e, regex_constants::match_flag_type flags = regex_constants::match_default)
|
|
439
|
+
{
|
|
440
|
+
smatch m;
|
|
441
|
+
return regex_match(s, m, e, flags);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
//using CYBOZU_RE_STD::regex_token_iterator;
|
|
445
|
+
//typedef regex_token_iterator<cybozu::String::const_iterator> sregex_token_iterator;
|
|
446
|
+
|
|
447
|
+
#ifdef _MSC_VER
|
|
448
|
+
namespace regex_local {
|
|
449
|
+
|
|
450
|
+
std::locale __declspec(selectany) g_loc = std::locale(std::locale(""), new std::ctype<cybozu::Char>);
|
|
451
|
+
|
|
452
|
+
inline bool init()
|
|
453
|
+
{
|
|
454
|
+
std::locale::global(g_loc);
|
|
455
|
+
return true;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
static const bool initialized = init();
|
|
459
|
+
|
|
460
|
+
} // regex_local
|
|
461
|
+
#endif
|
|
462
|
+
|
|
463
|
+
} // cybozu
|