Hmm ok so as an example how should this function look:
```c++
bpy::object archive_frame(const Frame* frame, const char* directory)
    {
        char* output = 0;

        if (frame->archive(directory, &output))
        {
            const bpy::str path(output);
            foundation::free_string(output);
            return path;
        }

        // Return None.
        return bpy::object();
    }
```
Something like this:
```c++
bpy::object archive_frame(const char* directory)
    {
        char* output = 0;
        FrameArchiver frameArchiver;
        if (frameArchiver->archive(directory, &output))
        {
            const bpy::str path(output);
            foundation::free_string(output);
            return path;
        }

        // Return None.
        return bpy::object();
    }
```

Or something like this:
```c++
bpy::object archive_frame(const FrameArchiver* frameArchiver, const char* directory)
    {
        char* output = 0;

        if (frameArchiver->archive(directory, &output))
        {
            const bpy::str path(output);
            foundation::free_string(output);
            return path;
        }

        // Return None.
        return bpy::object();
    }
```

Is there a better way to call that function? Excuse me but some language details are a bit fuzzy on my memory.