Initial Patch of Auction House bot rev. 135
[auctionmangos.git] / dep / ACE_wrappers / ace / OS_NS_errno.inl
blob3795eec54a7c7d716497ad7740712999eb4f9ee7
1 // -*- C++ -*-
2 //
3 // $Id: OS_NS_errno.inl 80826 2008-03-04 14:51:23Z wotte $
5 #include "ace/config-all.h"    /* Need ACE_TRACE */
7 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
9 ACE_INLINE int
10 ACE_OS::last_error (void)
12   // ACE_OS_TRACE ("ACE_OS::last_error");
14 #if defined (ACE_WIN32)
15   // ACE_OS::last_error() prefers errnor since started out as a way to
16   // avoid directly accessing errno in ACE code - particularly the ACE
17   // C++ socket wrapper facades.  On Windows, some things that would
18   // use errno on UNIX require ::GetLastError(), so this method tries
19   // to shield the rest of ACE from having to know about this.
20   int lerror = ::GetLastError ();
21   int lerrno = errno;
22   return lerrno == 0 ? lerror : lerrno;
23 #else
24   return errno;
25 #endif /* ACE_WIN32 */
28 ACE_INLINE void
29 ACE_OS::last_error (int error)
31   ACE_OS_TRACE ("ACE_OS::last_error");
32 #if defined (ACE_WIN32)
33   ::SetLastError (error);
34 #endif /* ACE_WIN32 */
35   errno = error;
38 ACE_INLINE int
39 ACE_OS::set_errno_to_last_error (void)
41 # if defined (ACE_WIN32)
42   return errno = ::GetLastError ();
43 #else
44   return errno;
45 # endif /* defined(ACE_WIN32) */
48 ACE_INLINE int
49 ACE_OS::set_errno_to_wsa_last_error (void)
51 # if defined (ACE_WIN32)
52   return errno = ::WSAGetLastError ();
53 #else
54   return errno;
55 # endif /* defined(ACE_WIN32) */
58 #if defined (ACE_HAS_WINCE_BROKEN_ERRNO)
60 ACE_INLINE ACE_CE_Errno *
61 ACE_CE_Errno::instance ()
63   // This should be inlined.
64   return ACE_CE_Errno::instance_;
67 ACE_INLINE
68 ACE_CE_Errno::operator int (void) const
70   return (int) TlsGetValue (ACE_CE_Errno::errno_key_);
73 ACE_INLINE int
74 ACE_CE_Errno::operator= (int x)
76   // error checking?
77   TlsSetValue (ACE_CE_Errno::errno_key_, (void *) x);
78   return x;
81 #endif /* ACE_HAS_WINCE_BROKEN_ERRNO */
83 ACE_END_VERSIONED_NAMESPACE_DECL