Compare commits

...

2 Commits

Author SHA1 Message Date
9588b602a9 system: add to_sstring()
Some checks failed
Doxygen Action / build (push) Has been cancelled
Signed-off-by: Simon Rozman <simon@rozman.si>
2025-07-08 11:17:40 +02:00
b99b2fc19e Common: Enforce explicit handle validation
Some invalid handle values are -1 or INVALID_HANDLE_VALUE, hence our
handle template has a specific invalid handle value parameter we should
always test against. Time and again, I find my code simply comparing
handle against zero.

Signed-off-by: Simon Rozman <simon@rozman.si>
2025-07-08 11:17:16 +02:00
2 changed files with 29 additions and 0 deletions

View File

@@ -2383,6 +2383,9 @@ namespace stdex
socket(_In_ const socket& other);
socket& operator =(_In_ const socket& other);
// Force use of valid() method when testing handle.
operator bool() const;
public:
socket(_Inout_ socket&& other) noexcept : m_h(other.m_h)
{

View File

@@ -75,6 +75,28 @@ namespace stdex
///
using sstring = std::basic_string<stdex::schar_t>;
#ifdef UNICODE
inline sstring to_sstring(int value) { return std::to_wstring(value); }
inline sstring to_sstring(long value) { return std::to_wstring(value); }
inline sstring to_sstring(long long value) { return std::to_wstring(value); }
inline sstring to_sstring(unsigned value) { return std::to_wstring(value); }
inline sstring to_sstring(unsigned long value) { return std::to_wstring(value); }
inline sstring to_sstring(unsigned long long value) { return std::to_wstring(value); }
inline sstring to_sstring(float value) { return std::to_wstring(value); }
inline sstring to_sstring(double value) { return std::to_wstring(value); }
inline sstring to_sstring(long double value) { return std::to_wstring(value); }
#else
inline sstring to_sstring(int value) { return std::to_string(value); }
inline sstring to_sstring(long value) { return std::to_string(value); }
inline sstring to_sstring(long long value) { return std::to_string(value); }
inline sstring to_sstring(unsigned value) { return std::to_string(value); }
inline sstring to_sstring(unsigned long value) { return std::to_string(value); }
inline sstring to_sstring(unsigned long long value) { return std::to_string(value); }
inline sstring to_sstring(float value) { return std::to_string(value); }
inline sstring to_sstring(double value) { return std::to_string(value); }
inline sstring to_sstring(long double value) { return std::to_string(value); }
#endif
///
/// String for system functions for backward compatibility
/// Use stdex::sstring
@@ -200,6 +222,10 @@ namespace stdex
///
operator T() const noexcept { return m_h; }
private:
// Force use of valid() method when testing handle.
operator bool() const;
protected:
T m_h;
};