Sha256: 77884a5d476d413332405440bc256af8f0160a7a451e980943824aba9baa6f1d

Contents?: true

Size: 1.62 KB

Versions: 3

Compression:

Stored size: 1.62 KB

Contents

#include <Gosu/Directories.hpp>
#include <Gosu/Platform.hpp>
#if defined(GOSU_IS_IPHONE)

#import <Foundation/Foundation.h>
#include <filesystem>

std::string Gosu::resource_path(const std::string& relative_filename)
{
    static const std::string resource_prefix = [] {
        @autoreleasepool {
            NSString* resources = [NSBundle mainBundle].resourcePath;
            return std::string(resources.UTF8String ?: ".");
        }
    }();

    return relative_filename.empty() ? resource_prefix : resource_prefix + "/" + relative_filename;
}

std::string Gosu::user_settings_path(const std::string& organization,
                                     const std::string& application,
                                     const std::string& relative_filename)
{
    static const std::string user_settings_prefix = [] {
        @autoreleasepool {
            NSString* library
                = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)
                      .firstObject;
            NSString* preferences = [library stringByAppendingPathComponent:@"Application Support"];
            return std::string(preferences.UTF8String ?: ".");
        }
    }();

    std::string directory = user_settings_prefix;
    if (!organization.empty()) {
        directory += '/';
        directory += organization;
    }
    if (!application.empty()) {
        directory += '/';
        directory += application;
    }
    if (!std::filesystem::is_directory(directory)) {
        std::filesystem::create_directories(directory);
    }

    return relative_filename.empty() ? directory : directory + '/' + relative_filename;
}

#endif

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gosu-2.0.0.pre8 src/DirectoriesUIKit.cpp
gosu-2.0.0.pre7 src/DirectoriesUIKit.cpp
gosu-2.0.0.pre6 src/DirectoriesUIKit.cpp