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

C/C++ API Documentation | 2026.1

# MapApi::Join( MapApi *, MapApi * ) [static]

Joins two `MapApi`s together to produce a combined mapping.

Virtual? | No |
Class | `MapApi` |
Arguments | `MapApi *left` | the first mapping
| `MapApi *right` | the second mapping
Returns | `MapApi *` | a new MapApi representing the joined maps

## Notes

This overload of `Join()` links the right side of the first mapping to the left side of the second mapping, as if the two mappings were laid out left to right and glued together in the middle. The resulting `MapApi`'s left side corresponds to the first mapping’s left side, and its right side corresponds to the second mapping’s right side.

If the right side of the first mapping does not have anything in common with the left side of the second mapping, the resulting map is empty.

The other `Join()` overload allows more control over which side of each mapping is joined to the other, and the direction of the resulting mapping.

This function allocates a new `MapApi` object on the heap; the caller is responsible for deleting it.

## Example

The following example demonstrates a join between a branch view and a client view.

Copy

    MapApi branchmap;
    branchmap.Insert( StrRef( "//depot/main/..." ), StrRef( "//depot/rel1/...") );

    MapApi clientmap;
    clientmap.Insert( StrRef( "//depot/..." ), StrRef( "//client/depot/..." ) );

    MapApi *branch_to_client = MapApi::Join( &amp;branchmap, &amp;clientmap );

    StrBuf source( "//depot/main/file.c" );
    StrBuf target;

    branch_to_client-&gt;Translate( source, target );
    printf( "%s -&gt; %s\n", source.Text(), target.Text() );
    delete branch_to_client;

This produces the following output:

    //depot/main/file.c -> //client/depot/rel1/file.c

Your search for returned results