{
public:
    CustomStreamClass( 
FbxManager* pSdkManager, 
const char* mode )
 
    {
        
        if (mode == 
NULL) 
return;
 
        FBXSDK_strcpy(mFileName, 30, "CustomStreamClass_temp.txt");
        FBXSDK_strcpy(mMode, 3, (mode) ? mode : "r");
        if ( mode[0] == 'r' )
        {
            const char* format = "FBX (*.fbx)";
            mWriterID = -1;
        }
        else
        {
            const char* format = "FBX ascii (*.fbx)";
            mReaderID = -1;
        }
    }
    ~CustomStreamClass()
    {
    }
    {
    }
    virtual bool Open( 
void*  )
 
    {
        
        
        
            FBXSDK_fopen(mFile, mFileName, mMode);
            fseek( mFile, 0L, SEEK_SET );
        return ( mFile != 
NULL );
 
    }
    {
        
        
        if ( mFile )
            fclose( mFile );
        return true;
    }
    {
        return true;
    }
    virtual int Write(
const void* pData, 
int pSize)
 
    {
            return 0;
        return (int)fwrite( pData, 1, pSize, mFile );
    }
    virtual int Read (
void* pData, 
int pSize)
 const 
    {
            return 0;
        return (int)fread( pData, 1, pSize, mFile );
    }
    {
        return mReaderID;
    }
    {
        return mWriterID;
    }
    {
        switch ( pSeekPos )
        {
                fseek( mFile, (long)pOffset, SEEK_SET );
                break;
                fseek( mFile, (long)pOffset, SEEK_CUR );
                break;
                fseek( mFile, (long)pOffset, SEEK_END );
                break;
        }
    }
    {
            return 0;
        return ftell( mFile );
    }
    {
        if ( mFile )
            fseek( mFile, pPosition, SEEK_SET );
    }
    {
            return 0;
        return ferror( mFile );
    }
    {
            clearerr( mFile );
    }
private:
    FILE*   mFile;
    int     mReaderID;
    int     mWriterID;
    char    mFileName[30];
    char    mMode[3];
};
int testExport()
{
    
    
    
    
    
    CustomStreamClass stream( lSdkManager, "wb" );
    
    
    if ( !lExporter->
Initialize( &stream, streamData, -1, ios ) )
 
        return -1;
    
    if ( !lExporter->
Export( lScene ) )
 
        return -1;
    
    return 0;
}
int testImport()
{
    
    
    
    
    
    CustomStreamClass stream( lSdkManager, "rb" );
    
    
    if ( !lImporter->
Initialize( &stream, streamData, -1, ios ) )
 
        return -1;
    
    if ( !lImporter->
Import( lScene ) )
 
        return -1;
    
    return 0;
}
int main(int , char** )
{
    int ret;
    ret = testExport();
    if ( ret ) return ret;
    
    ret = testImport();
    if ( ret ) return ret;
    return 0;
}