| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520 |
- //====== Copyright � 1996-2008, Valve Corporation, All rights reserved. =======
- //
- // Purpose: Main interface for loading and accessing Steamworks API's from the
- // Steam client.
- // For most uses, this code is wrapped inside of SteamAPI_Init()
- //=============================================================================
- #ifndef ISTEAMCLIENT_H
- #define ISTEAMCLIENT_H
- #ifdef _WIN32
- #pragma once
- #endif
- #include "steamtypes.h"
- #include "steamclientpublic.h"
- // Define compile time assert macros to let us validate the structure sizes.
- #define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1];
- #ifndef REFERENCE
- #define REFERENCE(arg) ((void)arg)
- #endif
- #if defined(STEAM_API_EXPORTS) && !defined(API_GEN)
- #define STEAM_PRIVATE_API( ... ) __VA_ARGS__
- #elif defined(STEAM_API_EXPORTS) && defined(API_GEN)
- #define STEAM_PRIVATE_API( ... )
- #else
- #define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public:
- #endif
- #if defined(__linux__) || defined(__APPLE__)
- // The 32-bit version of gcc has the alignment requirement for uint64 and double set to
- // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned.
- // The 64-bit version of gcc has the alignment requirement for these types set to
- // 8 meaning that unless we use #pragma pack(4) our structures will get bigger.
- // The 64-bit structure packing has to match the 32-bit structure packing for each platform.
- #define VALVE_CALLBACK_PACK_SMALL
- #else
- #define VALVE_CALLBACK_PACK_LARGE
- #endif
- #if defined( VALVE_CALLBACK_PACK_SMALL )
- #pragma pack( push, 4 )
- #elif defined( VALVE_CALLBACK_PACK_LARGE )
- #pragma pack( push, 8 )
- #else
- #error ???
- #endif
- typedef struct ValvePackingSentinel_t
- {
- uint32 m_u32;
- uint64 m_u64;
- uint16 m_u16;
- double m_d;
- } ValvePackingSentinel_t;
- #pragma pack( pop )
- #if defined(VALVE_CALLBACK_PACK_SMALL)
- VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 24 )
- #elif defined(VALVE_CALLBACK_PACK_LARGE)
- VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 32 )
- #else
- #error ???
- #endif
- // handle to a communication pipe to the Steam client
- typedef int32 HSteamPipe;
- // handle to single instance of a steam user
- typedef int32 HSteamUser;
- // function prototype
- #if defined( POSIX )
- #define __cdecl
- #endif
- extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *);
- extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum );
- #if defined( __SNC__ )
- #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor
- #endif
- // interface predec
- class ISteamUser;
- class ISteamGameServer;
- class ISteamFriends;
- class ISteamUtils;
- class ISteamMatchmaking;
- class ISteamContentServer;
- class ISteamMatchmakingServers;
- class ISteamUserStats;
- class ISteamApps;
- class ISteamNetworking;
- class ISteamRemoteStorage;
- class ISteamScreenshots;
- class ISteamMusic;
- class ISteamMusicRemote;
- class ISteamGameServerStats;
- class ISteamPS3OverlayRender;
- class ISteamHTTP;
- class ISteamUnifiedMessages;
- class ISteamController;
- class ISteamUGC;
- class ISteamAppList;
- class ISteamHTMLSurface;
- class ISteamInventory;
- class ISteamVideo;
- //-----------------------------------------------------------------------------
- // Purpose: Interface to creating a new steam instance, or to
- // connect to an existing steam instance, whether it's in a
- // different process or is local.
- //
- // For most scenarios this is all handled automatically via SteamAPI_Init().
- // You'll only need these APIs if you have a more complex versioning scheme,
- // or if you want to implement a multiplexed gameserver where a single process
- // is handling multiple games at once with independent gameserver SteamIDs.
- //-----------------------------------------------------------------------------
- class ISteamClient
- {
- public:
- // Creates a communication pipe to the Steam client.
- // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
- virtual HSteamPipe CreateSteamPipe() = 0;
- // Releases a previously created communications pipe
- // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
- virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0;
- // connects to an existing global user, failing if none exists
- // used by the game to coordinate with the steamUI
- // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
- virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0;
- // used by game servers, create a steam user that won't be shared with anyone else
- // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
- virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0;
- // removes an allocated user
- // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
- virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0;
- // retrieves the ISteamUser interface associated with the handle
- virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // retrieves the ISteamGameServer interface associated with the handle
- virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // set the local IP and Port to bind to
- // this must be set before CreateLocalUser()
- virtual void SetLocalIPBinding( uint32 unIP, uint16 usPort ) = 0;
- // returns the ISteamFriends interface
- virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns the ISteamUtils interface
- virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns the ISteamMatchmaking interface
- virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns the ISteamMatchmakingServers interface
- virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns the a generic interface
- virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns the ISteamUserStats interface
- virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns the ISteamGameServerStats interface
- virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns apps interface
- virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // networking
- virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // remote storage
- virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // user screenshots
- virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead.
- STEAM_PRIVATE_API( virtual void RunFrame() = 0; )
- // returns the number of IPC calls made since the last time this function was called
- // Used for perf debugging so you can understand how many IPC calls your game makes per frame
- // Every IPC call is at minimum a thread context switch if not a process one so you want to rate
- // control how often you do them.
- virtual uint32 GetIPCCallCount() = 0;
- // API warning handling
- // 'int' is the severity; 0 for msg, 1 for warning
- // 'const char *' is the text of the message
- // callbacks will occur directly after the API function is called that generated the warning or message.
- virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0;
- // Trigger global shutdown for the DLL
- virtual bool BShutdownIfAllPipesClosed() = 0;
- // Expose HTTP interface
- virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // Exposes the ISteamUnifiedMessages interface
- virtual ISteamUnifiedMessages *GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // Exposes the ISteamController interface
- virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // Exposes the ISteamUGC interface
- virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // returns app list interface, only available on specially registered apps
- virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
-
- // Music Player
- virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // Music Player Remote
- virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0;
- // html page display
- virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0;
- // Helper functions for internal Steam usage
- STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; )
- STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; )
- STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; )
- // inventory
- virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- // Video
- virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
- };
- #define STEAMCLIENT_INTERFACE_VERSION "SteamClient017"
- //-----------------------------------------------------------------------------
- // Purpose: Base values for callback identifiers, each callback must
- // have a unique ID.
- //-----------------------------------------------------------------------------
- enum { k_iSteamUserCallbacks = 100 };
- enum { k_iSteamGameServerCallbacks = 200 };
- enum { k_iSteamFriendsCallbacks = 300 };
- enum { k_iSteamBillingCallbacks = 400 };
- enum { k_iSteamMatchmakingCallbacks = 500 };
- enum { k_iSteamContentServerCallbacks = 600 };
- enum { k_iSteamUtilsCallbacks = 700 };
- enum { k_iClientFriendsCallbacks = 800 };
- enum { k_iClientUserCallbacks = 900 };
- enum { k_iSteamAppsCallbacks = 1000 };
- enum { k_iSteamUserStatsCallbacks = 1100 };
- enum { k_iSteamNetworkingCallbacks = 1200 };
- enum { k_iClientRemoteStorageCallbacks = 1300 };
- enum { k_iClientDepotBuilderCallbacks = 1400 };
- enum { k_iSteamGameServerItemsCallbacks = 1500 };
- enum { k_iClientUtilsCallbacks = 1600 };
- enum { k_iSteamGameCoordinatorCallbacks = 1700 };
- enum { k_iSteamGameServerStatsCallbacks = 1800 };
- enum { k_iSteam2AsyncCallbacks = 1900 };
- enum { k_iSteamGameStatsCallbacks = 2000 };
- enum { k_iClientHTTPCallbacks = 2100 };
- enum { k_iClientScreenshotsCallbacks = 2200 };
- enum { k_iSteamScreenshotsCallbacks = 2300 };
- enum { k_iClientAudioCallbacks = 2400 };
- enum { k_iClientUnifiedMessagesCallbacks = 2500 };
- enum { k_iSteamStreamLauncherCallbacks = 2600 };
- enum { k_iClientControllerCallbacks = 2700 };
- enum { k_iSteamControllerCallbacks = 2800 };
- enum { k_iClientParentalSettingsCallbacks = 2900 };
- enum { k_iClientDeviceAuthCallbacks = 3000 };
- enum { k_iClientNetworkDeviceManagerCallbacks = 3100 };
- enum { k_iClientMusicCallbacks = 3200 };
- enum { k_iClientRemoteClientManagerCallbacks = 3300 };
- enum { k_iClientUGCCallbacks = 3400 };
- enum { k_iSteamStreamClientCallbacks = 3500 };
- enum { k_IClientProductBuilderCallbacks = 3600 };
- enum { k_iClientShortcutsCallbacks = 3700 };
- enum { k_iClientRemoteControlManagerCallbacks = 3800 };
- enum { k_iSteamAppListCallbacks = 3900 };
- enum { k_iSteamMusicCallbacks = 4000 };
- enum { k_iSteamMusicRemoteCallbacks = 4100 };
- enum { k_iClientVRCallbacks = 4200 };
- enum { k_iClientGameNotificationCallbacks = 4300 };
- enum { k_iSteamGameNotificationCallbacks = 4400 };
- enum { k_iSteamHTMLSurfaceCallbacks = 4500 };
- enum { k_iClientVideoCallbacks = 4600 };
- enum { k_iClientInventoryCallbacks = 4700 };
- enum { k_iClientBluetoothManagerCallbacks = 4800 };
- //-----------------------------------------------------------------------------
- // The CALLBACK macros are for client side callback logging enabled with
- // log_callback <first callnbackID> <last callbackID>
- // Do not change any of these.
- //-----------------------------------------------------------------------------
- #ifdef STEAM_CALLBACK_INSPECTION_ENABLED
- #define DEFINE_CALLBACK( callbackname, callbackid ) \
- struct callbackname { \
- typedef callbackname SteamCallback_t; \
- enum { k_iCallback = callbackid }; \
- static callbackname *GetNullPointer() { return 0; } \
- static const char *GetCallbackName() { return #callbackname; } \
- static uint32 GetCallbackID() { return callbackname::k_iCallback; }
- #define CALLBACK_MEMBER( varidx, vartype, varname ) \
- public: vartype varname ; \
- static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \
- varOffset = (unsigned int)(size_t)&GetNullPointer()->varname; \
- varSize = sizeof( vartype ); \
- varCount = 1; \
- *pszName = #varname; *pszType = #vartype; }
- #define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) \
- public: vartype varname [ varcount ]; \
- static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \
- varOffset = (unsigned int)(size_t)&GetNullPointer()->varname[0]; \
- varSize = sizeof( vartype ); \
- varCount = varcount; \
- *pszName = #varname; *pszType = #vartype; }
- #define END_CALLBACK_INTERNAL_BEGIN( numvars ) \
- static uint32 GetNumMemberVariables() { return numvars; } \
- static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \
- switch ( index ) { default : return false;
- #define END_CALLBACK_INTERNAL_SWITCH( varidx ) case varidx : GetMemberVar_##varidx( varOffset, varSize, varCount, pszName, pszType ); return true;
- #define END_CALLBACK_INTERNAL_END() }; } };
- #define END_DEFINE_CALLBACK_0() \
- static uint32 GetNumMemberVariables() { return 0; } \
- static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { REFERENCE( pszType ); REFERENCE( pszName ); REFERENCE( varCount ); REFERENCE( varSize ); REFERENCE( varOffset ); REFERENCE( index ); return false; } \
- };
-
- #else
- #define DEFINE_CALLBACK( callbackname, callbackid ) struct callbackname { typedef callbackname SteamCallback_t; enum { k_iCallback = callbackid };
- #define CALLBACK_MEMBER( varidx, vartype, varname ) public: vartype varname ;
- #define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) public: vartype varname [ varcount ];
- #define END_CALLBACK_INTERNAL_BEGIN( numvars )
- #define END_CALLBACK_INTERNAL_SWITCH( varidx )
- #define END_CALLBACK_INTERNAL_END() };
- #define END_DEFINE_CALLBACK_0() };
- #endif
- #define END_DEFINE_CALLBACK_1() \
- END_CALLBACK_INTERNAL_BEGIN( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_2() \
- END_CALLBACK_INTERNAL_BEGIN( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_3() \
- END_CALLBACK_INTERNAL_BEGIN( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_4() \
- END_CALLBACK_INTERNAL_BEGIN( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_5() \
- END_CALLBACK_INTERNAL_BEGIN( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_6() \
- END_CALLBACK_INTERNAL_BEGIN( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_7() \
- END_CALLBACK_INTERNAL_BEGIN( 7 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_8() \
- END_CALLBACK_INTERNAL_BEGIN( 8 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 7 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_9() \
- END_CALLBACK_INTERNAL_BEGIN( 9 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 7 ) \
- END_CALLBACK_INTERNAL_SWITCH( 8 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_10() \
- END_CALLBACK_INTERNAL_BEGIN( 10 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 7 ) \
- END_CALLBACK_INTERNAL_SWITCH( 8 ) \
- END_CALLBACK_INTERNAL_SWITCH( 9 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_11() \
- END_CALLBACK_INTERNAL_BEGIN( 11 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 7 ) \
- END_CALLBACK_INTERNAL_SWITCH( 8 ) \
- END_CALLBACK_INTERNAL_SWITCH( 9 ) \
- END_CALLBACK_INTERNAL_SWITCH( 10 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_12() \
- END_CALLBACK_INTERNAL_BEGIN( 12 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 7 ) \
- END_CALLBACK_INTERNAL_SWITCH( 8 ) \
- END_CALLBACK_INTERNAL_SWITCH( 9 ) \
- END_CALLBACK_INTERNAL_SWITCH( 10 ) \
- END_CALLBACK_INTERNAL_SWITCH( 11 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_13() \
- END_CALLBACK_INTERNAL_BEGIN( 13 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 7 ) \
- END_CALLBACK_INTERNAL_SWITCH( 8 ) \
- END_CALLBACK_INTERNAL_SWITCH( 9 ) \
- END_CALLBACK_INTERNAL_SWITCH( 10 ) \
- END_CALLBACK_INTERNAL_SWITCH( 11 ) \
- END_CALLBACK_INTERNAL_SWITCH( 12 ) \
- END_CALLBACK_INTERNAL_END()
- #define END_DEFINE_CALLBACK_14() \
- END_CALLBACK_INTERNAL_BEGIN( 14 ) \
- END_CALLBACK_INTERNAL_SWITCH( 0 ) \
- END_CALLBACK_INTERNAL_SWITCH( 1 ) \
- END_CALLBACK_INTERNAL_SWITCH( 2 ) \
- END_CALLBACK_INTERNAL_SWITCH( 3 ) \
- END_CALLBACK_INTERNAL_SWITCH( 4 ) \
- END_CALLBACK_INTERNAL_SWITCH( 5 ) \
- END_CALLBACK_INTERNAL_SWITCH( 6 ) \
- END_CALLBACK_INTERNAL_SWITCH( 7 ) \
- END_CALLBACK_INTERNAL_SWITCH( 8 ) \
- END_CALLBACK_INTERNAL_SWITCH( 9 ) \
- END_CALLBACK_INTERNAL_SWITCH( 10 ) \
- END_CALLBACK_INTERNAL_SWITCH( 11 ) \
- END_CALLBACK_INTERNAL_SWITCH( 12 ) \
- END_CALLBACK_INTERNAL_SWITCH( 13 ) \
- END_CALLBACK_INTERNAL_END()
- #endif // ISTEAMCLIENT_H
|