diff --git a/include/stdex/html.hpp b/include/stdex/html.hpp
index c66048514..6c5c1ae1c 100644
--- a/include/stdex/html.hpp
+++ b/include/stdex/html.hpp
@@ -40,7 +40,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void escape(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i]; ++i) {
@@ -67,7 +67,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void escape(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const wchar_t* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const wchar_t* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i]; ++i) {
@@ -84,6 +84,34 @@ namespace stdex
}
}
+ ///
+ /// Appends HTML escaped string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc = std::allocator<_Elem>>
+ inline void escape(
+ _Inout_ std::basic_string<_Elem, _Traits, _Alloc>& dst,
+ _In_ const _Elem (&src)[_Size])
+ {
+ escape(dst, src, _Size);
+ }
+
+ ///
+ /// Appends HTML escaped string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc_dst = std::allocator<_Elem>, class _Traits_src = std::char_traits<_Elem>, class _Alloc_src = std::allocator<_Elem>>
+ inline void escape(
+ _Inout_ std::basic_string<_Elem, _Traits_dst, _Alloc_dst>& dst,
+ _In_ const std::basic_string<_Elem, _Traits_src, _Alloc_src>& src)
+ {
+ escape(dst, src.data(), src.size());
+ }
+
///
/// Appends HTML escaped character
///
@@ -130,7 +158,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void escape_min(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i]; ++i) {
@@ -154,7 +182,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void escape_min(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const wchar_t* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const wchar_t* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i]; ++i) {
@@ -168,6 +196,34 @@ namespace stdex
}
}
+ ///
+ /// Appends HTML escaped string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc = std::allocator<_Elem>>
+ inline void escape_min(
+ _Inout_ std::basic_string<_Elem, _Traits, _Alloc>& dst,
+ _In_ const _Elem (&src)[_Size])
+ {
+ escape_min(dst, src, _Size);
+ }
+
+ ///
+ /// Appends HTML escaped string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc_dst = std::allocator<_Elem>, class _Traits_src = std::char_traits<_Elem>, class _Alloc_src = std::allocator<_Elem>>
+ inline void escape_min(
+ _Inout_ std::basic_string<_Elem, _Traits_dst, _Alloc_dst>& dst,
+ _In_ const std::basic_string<_Elem, _Traits_src, _Alloc_src>& src)
+ {
+ escape_min(dst, src.data(), src.size());
+ }
+
///
/// Appends unescaped URL string
///
@@ -178,7 +234,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void url_unescape(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i];) {
@@ -210,6 +266,34 @@ namespace stdex
}
}
+ ///
+ /// Appends unescaped URL string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc = std::allocator>
+ inline void url_unescape(
+ _Inout_ std::basic_string& dst,
+ _In_ const char (&src)[_Size])
+ {
+ url_unescape(dst, src, _Size);
+ }
+
+ ///
+ /// Appends unescaped URL string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc_dst = std::allocator, class _Traits_src = std::char_traits, class _Alloc_src = std::allocator>
+ inline void url_unescape(
+ _Inout_ std::basic_string& dst,
+ _In_ const std::basic_string& src)
+ {
+ url_unescape(dst, src.data(), src.size());
+ }
+
///
/// Appends escaped URL string
///
@@ -220,7 +304,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void url_escape(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i]; ++i) {
@@ -261,6 +345,34 @@ namespace stdex
}
}
+ ///
+ /// Appends escaped URL string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc = std::allocator>
+ inline void url_escape(
+ _Inout_ std::basic_string& dst,
+ _In_ const char (&src)[_Size])
+ {
+ url_escape(dst, src, _Size);
+ }
+
+ ///
+ /// Appends escaped URL string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc_dst = std::allocator, class _Traits_src = std::char_traits, class _Alloc_src = std::allocator>
+ inline void url_escape(
+ _Inout_ std::basic_string& dst,
+ _In_ const std::basic_string& src)
+ {
+ url_escape(dst, src.data(), src.size());
+ }
+
///
/// Appends unescaped CSS string
///
@@ -271,7 +383,7 @@ namespace stdex
template, class _Alloc = std::allocator<_Elem>>
inline void css_unescape(
_Inout_ std::basic_string<_Elem, _Traits, _Alloc>& dst,
- _In_reads_or_z_opt_(num_chars) const _Elem* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const _Elem* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i];) {
@@ -331,6 +443,34 @@ namespace stdex
}
}
+ ///
+ /// Appends unescaped CSS string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc = std::allocator<_Elem>>
+ inline void css_unescape(
+ _Inout_ std::basic_string<_Elem, _Traits, _Alloc>& dst,
+ _In_ const _Elem (&src)[_Size])
+ {
+ css_unescape(dst, src, _Size);
+ }
+
+ ///
+ /// Appends unescaped CSS string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc_dst = std::allocator<_Elem>, class _Traits_src = std::char_traits<_Elem>, class _Alloc_src = std::allocator<_Elem>>
+ inline void css_unescape(
+ _Inout_ std::basic_string<_Elem, _Traits_dst, _Alloc_dst>& dst,
+ _In_ const std::basic_string<_Elem, _Traits_src, _Alloc_src>& src)
+ {
+ css_unescape(dst, src.data(), src.size());
+ }
+
///
/// Appends escaped CSS string
///
@@ -341,7 +481,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void css_escape(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const char* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i]; ++i) {
@@ -367,7 +507,7 @@ namespace stdex
template, class _Alloc = std::allocator>
inline void css_escape(
_Inout_ std::basic_string& dst,
- _In_reads_or_z_opt_(num_chars) const wchar_t* src, _In_ size_t num_chars = SIZE_MAX)
+ _In_reads_or_z_opt_(num_chars) const wchar_t* src, _In_ size_t num_chars)
{
_Assume_(src || !num_chars);
for (size_t i = 0; i < num_chars && src[i]; ++i) {
@@ -383,6 +523,34 @@ namespace stdex
}
}
+ ///
+ /// Appends escaped CSS string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc = std::allocator<_Elem>>
+ inline void css_escape(
+ _Inout_ std::basic_string<_Elem, _Traits, _Alloc>& dst,
+ _In_ const _Elem (&src)[_Size])
+ {
+ css_escape(dst, src, _Size);
+ }
+
+ ///
+ /// Appends escaped CSS string
+ ///
+ /// \param[in,out] dst String to append to
+ /// \param[in] src Source string
+ ///
+ template, class _Alloc_dst = std::allocator<_Elem>, class _Traits_src = std::char_traits<_Elem>, class _Alloc_src = std::allocator<_Elem>>
+ inline void css_escape(
+ _Inout_ std::basic_string<_Elem, _Traits_dst, _Alloc_dst>& dst,
+ _In_ const std::basic_string<_Elem, _Traits_src, _Alloc_src>& src)
+ {
+ css_escape(dst, src.data(), src.size());
+ }
+
///
/// HTML element type
///
@@ -1469,7 +1637,7 @@ namespace stdex
///
/// Parses HTML source code by chunks
///
- void append(_In_reads_or_z_opt_(num_chars) const _Elem* source, _In_ size_t num_chars = SIZE_MAX)
+ void append(_In_reads_or_z_opt_(num_chars) const _Elem* source, _In_ size_t num_chars)
{
_Assume_(source || !num_chars);
m_source.append(source, stdex::strnlen(source, num_chars));
@@ -1692,7 +1860,7 @@ namespace stdex
///
/// Parses HTML document source code
///
- inline void assign(_In_reads_or_z_opt_(num_chars) const _Elem* source, _In_ size_t num_chars = SIZE_MAX)
+ inline void assign(_In_reads_or_z_opt_(num_chars) const _Elem* source, _In_ size_t num_chars)
{
clear();
append(source, num_chars);