Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

C/C++ API Documentation | 2025.1

# ClientApi::GetClient()

Get current client setting.

Virtual? | No |
Class | `ClientApi` |
Arguments | None |
Returns | `const StrPtr &` | a reference to the client setting

## Notes

The return value of `GetClient()` is a fixed reference to this `ClientApi` object’s setting.

Assigning the return value to a `StrPtr` results in a `StrPtr` containing a `Text()` value that changes if the `ClientApi` object’s client setting changes.

Assigning the return value to a `StrBuf` copies the text in its entirety for future access, rather than simply storing a reference to data that might change later.

Under some circumstances, `GetClient()` calls `GetHost()` and returns that value - specifically, if no suitable `P4CLIENT` value is available in the environment, or previously set with `SetClient()`. (This is why, under the `p4` client, client name defaults to the host name if not explicitly set.)

In some instances, `GetHost()` does not return valid results until after a call to `Init()` - see the `GetHost()` documentation for details.

## Example

This example demonstrates the use of `GetClient()` and the difference between `StrPtr’s` and `StrBuf’s`.

Copy

    ClientApi client;
    StrPtr p;
    StrBuf b;

    client.Init();
    client.SetClient( "one" );
    p = client.GetClient();
    b = client.GetClient();
    client.SetClient( "two" );

    printf( "Current client %s = %s\n", client.GetClient().Text(), p.Text() );
    printf( "Previous client setting was %s\n", b.Text() );

Executing the preceding code produces the following output:

    Current client two = two
    Previous client setting was one

Your search for returned results