/*++

Copyright (C) 1996-2001 Microsoft Corporation

Module Name:

    TLS.H

Abstract:

	Thread Local Storage

History:

--*/

#ifndef __WBEM_TLS__H_
#define __WBEM_TLS__H_

class CTLS
{
protected:
    DWORD m_dwIndex;
public:
    inline CTLS() {m_dwIndex = TlsAlloc();}
    inline ~CTLS() {TlsFree(m_dwIndex);}
    inline void* Get() 
        {return ((m_dwIndex==0xFFFFFFFF)?NULL:TlsGetValue(m_dwIndex));}
    inline void Set(void* p)
        {if(m_dwIndex != 0xFFFFFFFF) TlsSetValue(m_dwIndex, p);}
    inline BOOL IsValid() {return (m_dwIndex != 0xFFFFFFFF);}
};

#endif