マクロ定義 | 型定義 | 関数
CriFs API

マクロ定義

#define criFs_SetUserAllocator(p_malloc_func, p_free_func, p_obj)
 ユーザアロケータの登録
#define criFs_SetDefaultConfig(p_config)
 デフォルトコンフィギュレーションのセット

型定義

typedef void *(CRIAPI * CriFsMallocFunc )(void *obj, CriUint32 size)
 メモリ確保関数
typedef void(CRIAPI * CriFsFreeFunc )(void *obj, void *mem)
 メモリ解放関数
typedef struct
CriFsBinderHnObjTag * 
CriFsBinderHn
 CriFsBinderハンドル

関数

void CRIAPI criFs_SetUserMallocFunction (CriFsMallocFunc func, void *obj)
 メモリ確保関数の登録
void CRIAPI criFs_SetUserFreeFunction (CriFsFreeFunc func, void *obj)
 メモリ解放関数の登録
CriError CRIAPI criFs_SetSelectIoCallback (CriFsSelectIoCbFunc func)
 I/O選択コールバックの登録

説明


マクロ定義

#define criFs_SetUserAllocator (   p_malloc_func,
  p_free_func,
  p_obj 
)
値:
{\
    criFs_SetUserMallocFunction(p_malloc_func, p_obj);\
    criFs_SetUserFreeFunction(p_free_func, p_obj);\
}

ユーザアロケータの登録

引数:
[in]p_malloc_funcメモリ確保関数
[in]p_free_funcメモリ解放関数
[in]p_objユーザ指定オブジェクト
説明:
CRI File Systemライブラリにメモリアロケータ(メモリの確保/解放関数)を登録します。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ解放処理を、 ユーザ独自のメモリ解放処理に置き換えたい場合に使用します。
#define criFs_SetDefaultConfig (   p_config)
値:
{\
    (p_config)->thread_model        = CRIFS_CONFIG_DEFAULT_THREAD_MODEL;\
    (p_config)->num_binders         = CRIFS_CONFIG_DEFAULT_NUM_BINDERS;\
    (p_config)->num_loaders         = CRIFS_CONFIG_DEFAULT_NUM_LOADERS;\
    (p_config)->num_group_loaders   = CRIFS_CONFIG_DEFAULT_NUM_GROUP_LOADERS;\
    (p_config)->num_stdio_handles   = CRIFS_CONFIG_DEFAULT_NUM_STDIO_HANDLES;\
    (p_config)->num_installers      = CRIFS_CONFIG_DEFAULT_NUM_INSTALLERS;\
    (p_config)->max_binds           = CRIFS_CONFIG_DEFAULT_MAX_BINDS;\
    (p_config)->max_files           = CRIFS_CONFIG_DEFAULT_MAX_FILES;\
    (p_config)->max_path            = CRIFS_CONFIG_DEFAULT_MAX_PATH;\
    (p_config)->version             = CRI_FS_VERSION;\
}

デフォルトコンフィギュレーションのセット

引数:
[in]configコンフィギュレーション
説明:
::criFs_InitializeLibrary 関数に設定するコンフィギュレーション( CriFsConfig )に、デフォルトの値をセットします。
補足:
コンフィギュレーションに設定する各パラメータを、アプリケーションで使用するハンドルの数に応じて調節することで、 ライブラリが必要とするメモリサイズを小さく抑えることが可能です。
しかし、アプリケーション中で使用するハンドルの数が明確でない開発初期段階や、メモリサイズがタイトではないケースでは、 本マクロを使用することによりで、初期化処理を簡略化することが可能です。
注意:
: 本マクロでは、ほとんどのケースで必要充分な数のハンドルが確保できるよう、コンフィギュレーションの各パラメータに大きめの値をセットします。
そのため、本マクロを使用した場合、ライブラリが必要とするワーク領域のサイズは大きくなりますので、ご注意ください。
(メモリサイズがタイトなケースでは、本マクロでコンフィギュレーションを初期化した後、各パラメータを個別に調節することをオススメいたします。)
参照:
CriFsConfig

型定義

typedef void*(CRIAPI * CriFsMallocFunc)(void *obj, CriUint32 size)

メモリ確保関数

引数:
[in]objユーザ指定オブジェクト
[in]size要求メモリサイズ(バイト単位)
戻り値:
void* 確保したメモリのアドレス(失敗時はNULL)
説明:
メモリ確保関数登録用のインターフェースです。
CRI File Systemライブラリがライブラリ内で行なうメモリ確保処理を、 ユーザ独自のメモリ確保処理に置き換えたい場合に使用します。
備考:
コールバック関数が実行される際には、sizeに必要とされるメモリのサイズがセット されています。
コールバック関数内でsize分のメモリを確保し、確保したメモリのアドレスを 戻り値として返してください。
尚、引数の obj には、::criFs_SetUserMallocFunction 関数で登録したユーザ指定 オブジェクトが渡されます。
メモリ確保時にメモリマネージャ等を参照する必要がある場合には、 当該オブジェクトを criFs_SetUserMallocFunction 関数の引数にセットしておき、 本コールバック関数の引数を経由して参照してください。
注意:
メモリの確保に失敗した場合、エラーコールバックが返されたり、呼び出し元の関数が 失敗する可能性がありますのでご注意ください。
参照:
CriFsFreeFunc, criFs_SetUserMallocFunction
typedef void(CRIAPI * CriFsFreeFunc)(void *obj, void *mem)

メモリ解放関数

引数:
[in]objユーザ指定オブジェクト
[in]mem解放するメモリアドレス
戻り値:
なし
説明:
メモリ解放関数登録用のインターフェースです。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ解放処理を、 ユーザ独自のメモリ解放処理に置き換えたい場合に使用します。
備考:
コールバック関数が実行される際には、memに解放すべきメモリのアドレスがセット されています。
コールバック関数内でmemの領域のメモリを解放してください。 尚、引数の obj には、::criFs_SetUserFreeFunction 関数で登録したユーザ指定 オブジェクトが渡されます。
メモリ確保時にメモリマネージャ等を参照する必要がある場合には、 当該オブジェクトを criFs_SetUserFreeFunction 関数の引数にセットしておき、 本コールバック関数の引数を経由して参照してください。
参照:
criFsMallocFunc, criFs_SetUserFreeFunction
typedef struct CriFsBinderHnObjTag* CriFsBinderHn

CriFsBinderハンドル

説明:
ADX2 LE の場合、関数引数に渡すバインダハンドルはNULLを指定してください。

関数

void CRIAPI criFs_SetUserMallocFunction ( CriFsMallocFunc  func,
void *  obj 
)

メモリ確保関数の登録

引数:
[in]funcメモリ確保関数
[in]objユーザ指定オブジェクト
説明:
CRI File Systemライブラリにメモリ確保関数を登録します。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ確保処理を、 ユーザ独自のメモリ確保処理に置き換えたい場合に使用します。

本関数の使用手順は以下のとおりです。
(1) CriFsMallocFunc インターフェースに副ったメモリ確保関数を用意する。
(2) criFs_SetUserMallocFunction 関数を使用し、CRI File Systemライブラリに対して メモリ確保関数を登録する。

具体的なコードの例は以下のとおりです。
例:
 // 独自のメモリ確保関数を用意
 void *user_malloc(void *obj, CriUint32 size)
 {
    void *mem;

    // メモリの確保
    mem = malloc(size);

    return (mem);
 }

 main()
 {
        :
    // メモリ確保関数の登録
    criFs_SetUserMallocFunction(user_malloc, NULL);
        :
 }
備考:
引数の obj に指定した値は、 CriFsMallocFunc に引数として渡されます。
メモリ確保時にメモリマネージャ等を参照する必要がある場合には、 当該オブジェクトを本関数の引数にセットしておき、コールバック関数で引数を経由 して参照してください。
注意:
メモリ確保関数を登録する際には、合わせてメモリ解放関数( CriFsFreeFunc )を 登録する必要があります。
参照:
CriFsMallocFunc, criFs_SetUserFreeFunction
void CRIAPI criFs_SetUserFreeFunction ( CriFsFreeFunc  func,
void *  obj 
)

メモリ解放関数の登録

引数:
[in]funcメモリ解放関数
[in]objユーザ指定オブジェクト
説明:
CRI File Systemライブラリにメモリ解放関数を登録します。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ解放処理を、 ユーザ独自のメモリ解放処理に置き換えたい場合に使用します。

本関数の使用手順は以下のとおりです。
(1) CriFsFreeFunc インターフェースに副ったメモリ解放関数を用意する。
(2) criFs_SetUserFreeFunction 関数を使用し、CRI File Systemライブラリに対して メモリ解放関数を登録する。

具体的なコードの例は以下のとおりです。
例:
 // 独自のメモリ解放関数を用意
 void user_free(void *obj, void *mem)
 {
    // メモリの解放
    free(mem);

    return;
 }

 main()
 {
        :
    // メモリ解放関数の登録
    criFs_SetUserFreeFunction(user_free, NULL);
        :
 }
備考:
引数の obj に指定した値は、 CriFsFreeFunc に引数として渡されます。
メモリ確保時にメモリマネージャ等を参照する必要がある場合には、 当該オブジェクトを本関数の引数にセットしておき、コールバック関数で引数を経由 して参照してください。
注意:
メモリ解放関数を登録する際には、合わせてメモリ確保関数( CriFsMallocFunc )を 登録する必要があります。
参照:
CriFsFreeFunc, criFs_SetUserMallocFunction
CriError CRIAPI criFs_SetSelectIoCallback ( CriFsSelectIoCbFunc  func)

I/O選択コールバックの登録

引数:
[in]funcI/O選択コールバック
戻り値:
CriError エラーコード
説明:
I/O選択コールバック関数( CriFsSelectIoCbFunc )を登録します。
CRI File Systemライブラリはファイルにアクセスする際、まず初めに、そのファイルが存在するデバイスのID( CriFsDeviceId )と、 デバイスにアクセスするためのI/Oインターフェース( CriFsIoInterface )を選択します。
デフォルト状態では、デバイスIDとI/Oインターフェースの選択はライブラリ内で暗黙的に行なわれますが、 本関数を使用することで、デバイスIDとI/Oインターフェースをユーザが自由に指定することが可能になります。
これにより、ユーザが独自に作成したI/Oインターフェースを使用してファイルにアクセスすることが可能になります。
 // 独自のI/Oインターフェースを定義
 // 備考)構造体のメンバ関数はユーザが独自に実装。
 static CriFsIoInterface g_userIoInterface = {
    userExists,
    userRemove,
    userRename,
    userOpen,
    userClose,
    userGetFileSize,
    userRead,
    userIsReadComplete,
    userGetReadSize,
    userWrite,
    userIsWriteComplete,
    userGetWriteSize,
    userFlush,
    userResize,
    userGetNativeFileHandle
 };

 // I/O選択コールバック関数
 CriError user_select_io_callback(
    const CriChar8 *path, CriFsDeviceId *device_id, CriFsIoInterfacePtr *ioif)
 {
    // パスを解析し、デバイスのIDを特定する
    if (strncmp(path, …) == 0) {
        (*device_id) = CRIFS_DEVICE_〜;
    } else {
        (*device_id) = CRIFS_DEFAULT_DEVICE;
    }

    // ファイルアクセスに使用するI/Oインターフェースを指定する
    (*ioif) = g_userIoInterface;

    return (CRIERR_OK);
 }

 int main(…)
 {
        :
    // I/O選択コールバックを登録
    criFs_SetSelectIoCallback(user_select_io_callback);
        :
 }
注意:
コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

funcにNULLを指定するとことで登録済み関数の登録解除が行えます。
参照:
CriFsSelectIoCbFunc, criFs_GetDefaultIoInterface

CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Cocos2d-x) SDKVer.2.10版