diff options
Diffstat (limited to 'src/debug/inc/stringcopyholder.h')
-rw-r--r-- | src/debug/inc/stringcopyholder.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/debug/inc/stringcopyholder.h b/src/debug/inc/stringcopyholder.h new file mode 100644 index 0000000000..13a89d87fc --- /dev/null +++ b/src/debug/inc/stringcopyholder.h @@ -0,0 +1,59 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + + + +#ifndef _StringCopyHolder_h_ +#define _StringCopyHolder_h_ + + +//----------------------------------------------------------------------------- +// Simple holder to keep a copy of a string. +// Implements IStringHolder so we can pass instances through IDacDbiInterface +// and have it fill in the contents. +//----------------------------------------------------------------------------- +class StringCopyHolder : public IDacDbiInterface::IStringHolder +{ +public: + StringCopyHolder(); + + // Free the memory allocated for the string contents + ~StringCopyHolder(); + + // Make a copy of the provided null-terminated unicode string + virtual HRESULT AssignCopy(const WCHAR * pCopy); + + // Reset the string to NULL and free memory + void Clear(); + + // Returns true if the string has been set to a non-NULL value + bool IsSet() + { + return (m_szData != NULL); + } + + // Returns true if an empty string is stored. IsSet must be true to call this. + bool IsEmpty() + { + _ASSERTE(m_szData != NULL); + return m_szData[0] == W('\0'); + } + + // Returns the pointer to the string contents + operator WCHAR* () const + { + return m_szData; + } + +private: + // Disallow copying (to prevent double-free) - no implementation + StringCopyHolder( const StringCopyHolder& rhs ); + StringCopyHolder& operator=( const StringCopyHolder& rhs ); + + WCHAR * m_szData; + +}; + + +#endif // StringCopyHolder |