text: //==========================  Open Steamworks  ================================
  //
  // This file is part of the Open Steamworks project. All individuals associated
  // with this project do not claim ownership of the contents
  // 
  // The code, comments, and all related files, projects, resources,
  // redistributables included with this project are Copyright Valve Corporation.
  // Additionally, Valve, the Valve logo, Half-Life, the Half-Life logo, the
  // Lambda logo, Steam, the Steam logo, Team Fortress, the Team Fortress logo,
  // Opposing Force, Day of Defeat, the Day of Defeat logo, Counter-Strike, the
  // Counter-Strike logo, Source, the Source logo, and Counter-Strike Condition
  // Zero are trademarks and or registered trademarks of Valve Corporation.
  // All other trademarks are property of their respective owners.
  //
  //=============================================================================
  
  #ifndef ISTEAMFRIENDS003_H
  #define ISTEAMFRIENDS003_H
  #ifdef _WIN32
  #pragma once
  #endif
  
  #include "SteamTypes.h"
  #include "FriendsCommon.h"
  
  
  
  //-----------------------------------------------------------------------------
  // Purpose: interface to friends
  //-----------------------------------------------------------------------------
  abstract_class ISteamFriends003
  {
  public:
  	// returns the local players name - guaranteed to not be NULL.
  	virtual const char *GetPersonaName() = 0;
  	// sets the player name, stores it on the server and publishes the changes to all friends who are online
  	virtual void SetPersonaName( const char *pchPersonaName ) = 0;
  	// gets the friend status of the current user
  	virtual EPersonaState GetPersonaState() = 0;
  
  	// friend iteration
  	virtual int GetFriendCount( EFriendFlags iFriendFlags ) = 0;
  	STEAMWORKS_STRUCT_RETURN_2(CSteamID, GetFriendByIndex, int, iFriend, EFriendFlags, iFriendFlags) /*virtual CSteamID GetFriendByIndex( int iFriend, EFriendFlags iFriendFlags ) = 0;*/
  
  	// gets the relationship to a user
  	virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0;
  	// returns true if the specified user is considered a friend (can see our online status)
  	virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0;
  	// returns the name of a friend - guaranteed to not be NULL.
  	virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0;
  	// gets the avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
  	virtual int GetFriendAvatar( CSteamID steamIDFriend ) = 0;
  	// returns true if the friend is actually in a game
  	virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, uint64 *pulGameID, uint32 *punGameIP, uint16 *pusGamePort, uint16 *pusQueryPort ) = 0;
  	// accesses old friends names - returns an empty string when their are no more items in the history
  	virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0;
  
  	// returns true if the specified user is considered a friend
  	virtual bool HasFriend( CSteamID steamIDFriend, EFriendFlags iFriendFlags ) = 0;
  
  	// clan functions
  	virtual int GetClanCount() = 0;
  	STEAMWORKS_STRUCT_RETURN_1(CSteamID, GetClanByIndex, int, iClan) /*virtual CSteamID GetClanByIndex( int iClan ) = 0;*/
  	virtual const char *GetClanName( CSteamID steamIDClan ) = 0;
  
  	// iterators for any source
  	virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0;
  	STEAMWORKS_STRUCT_RETURN_2(CSteamID, GetFriendFromSourceByIndex, CSteamID, steamIDSource, int, iFriend) /*virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0;*/
  	virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0;
  
  	// User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI)
  	virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0;
  
  	// activates the game overlay, with an optional dialog to open ("Friends", "Community", "Players", "Settings")
  	virtual void ActivateGameOverlay( const char *pchDialog ) = 0;
  };
  
  
  #endif // ISTEAMFRIENDS003_H
  