示例#1
0
int SampWrite( void FAR_PTR *buff, unsigned len )
{
    unsigned    written;
    int         handle;
    int         rc;

    _fstrcpy( SampName, SharedMemory->SampName );
    if( SharedMemory->SampleHandle == 0 ) {
        handle = SysCreate( SampName );
        SharedMemory->SampleHandle = 1;
    } else {
        handle = SysOpen( SampName );
        if( handle >= 0 ) SysSeek( handle, SharedMemory->SampOffset );
    }
    if( handle == -1 ) {
        SharedMemory->FarWriteProblem = 1;
        return( -1 );
    }

    written = SysWrite( handle, buff, len );
    if( written == len ) {
        SharedMemory->SampOffset += len;
        rc = 0;
    } else {
        SysSeek( handle, SharedMemory->SampOffset );
        SysWrite( handle, "", 0 );
        SharedMemory->FarWriteProblem = 1;
        rc = -1;
    }
    SysClose( handle );
    return( rc );

} /* SampWrite */
示例#2
0
void Output( char FAR_PTR *str )
{
    char FAR_PTR *p = str;
    int len = 0;
    while( *p++ ) ++len;
    SysWrite( 2, str, len );
}
示例#3
0
void Output( const char FAR_PTR *str )
{
    const char  FAR_PTR *p = str;
    unsigned    len = 0;

    while( *p++ != '\0' )
        ++len;
    SysWrite( 2, str, len );
}
示例#4
0
文件: file.c 项目: d33tah/whitix
ssize_t write(int fd,const void* buf,size_t count)
{
	void* buffer=(void*)buf;
	ssize_t ret = SysWrite(fd, buffer, count);

	if (ret < 0)
	{
		errno=-ret;
		ret=-1;
	}

	return ret;
}
示例#5
0
int SampWrite( void FAR_PTR *buff, unsigned len )
{
    LONG written;

    if( SampIsDOS ) {
        DOSWrite( SampleHandle, SampOffset, buff, len, &written );
    } else {
        written = SysWrite( SampleHandle, buff, len );
    }
    if( written == len ) {
        SampOffset += len;
        return( 0 );
    } else {
        if( SampIsDOS ) {
            DOSWrite( SampleHandle, SampOffset, buff, 0, &written );
        } else {
            SysSeek( SampleHandle, SampOffset );
            SysWrite( SampleHandle, "", 0 );   /* truncate the file */
        }
        FarWriteProblem = 1;
        return( -1 );
    }
}
示例#6
0
void    Closef( b_file *io ) {
// Close a file.
    uint        cc_len;
    char        *cc;

    if( io->attrs & CARRIAGE_CONTROL ) {
        cc_len = FSetCC( io, ' ', &cc );
        if( SysWrite( io, cc, cc_len ) == -1 ) return;
    }
    if( FlushBuffer( io ) < 0 ) return;
    if( close( io->handle ) < 0 ) {
        FSetSysErr( io );
        return;
    }
    MEM_FREE( io );
    IOOk( NULL );
}
示例#7
0
EResult CompileShader(
	const char *	szFileName,
	const char *	szSource,
	const char *	szEntryPoint,
	const char *	szProfile,
	ID3D10Blob **	ppShaderByteCode )
{
	if ( ( NULL == szFileName ) || ( NULL == szSource ) || ( NULL == ppShaderByteCode ) )
		return R_INVALID_ARG;

	size_t nSize = strlen( szSource );

	if ( 0 == nSize )
		return R_INVALID_ARG;

	ID3D10Blob * pErrorMsg = NULL;

	HRESULT hRes = D3D10CompileShader(
		szSource,			// file data
		nSize,				// file data size
		NULL,				// file name (set to null if prev args not null)
		NULL,				// macro array (defines)
		NULL,				// ? include
		szEntryPoint,
		szProfile,
		0,					// shader compile flags
		ppShaderByteCode,	
		&pErrorMsg );

	if ( FAILED( hRes ) )
	{
		if ( NULL != pErrorMsg )
		{
			const char * szErr = Va(
				"\tShader compilation failed, file \"%s\"\n\t\t%s",
				szFileName, (const char *)pErrorMsg->GetBufferPointer() );

			SysWrite( szErr );
			DEBUG_MSG( szErr );
		}

		return R_GENERIC_ERROR;
	}

	return R_OK;
}
示例#8
0
void CShaderCfgLoader::FinalizeRes( TResource * pRes )
{
	pRes->eState = TResource::FAILED;

	//--------------------------------------------------------------------------
	// Tip: Check XMLWrapper
	//--------------------------------------------------------------------------
	IXMLWrapper * pWrapper = (IXMLWrapper *)g_pSystem->GetInterface( IT_UTIL );

	if ( !pWrapper )
		return;

	CXMLElement * pRoot = NULL;
	pWrapper->LoadXMLFromMem( (char *)pRes->pBuffer, pRes->nSize, &pRoot );
	DEL_ARRAY( pRes->pBuffer );
	//pRes->pResource = pRoot;

	//--------------------------------------------------------------------------
	// Tip: Check root element name
	//--------------------------------------------------------------------------
	CStr sName( pRoot->GetName() );

	if ( !sName.Compare( "Shaders" ) )
	{
		DEL( pRoot );
		return;
	}

	//--------------------------------------------------------------------------
	// Tip: Parsing shaders
	//--------------------------------------------------------------------------
	for ( size_t i = 0; i < pRoot->GetNumChilds(); ++i )
	{
		//----------------------------------------------------------------------
		// Tip: New shader
		//----------------------------------------------------------------------
		CXMLElement * pShaderBranch = pRoot->GetChild( i );
		CStr sPath( "Shaders/" );
		sPath.Add( pShaderBranch->GetName() );

//		const CStr		sShader( pShaderBranch->GetName() );
//		CBaseShader	*	pShader	= NEW CBaseShader( sShader.GetString() );
//		CXMLAttr *		pProgPath = pShaderBranch->GetAttr( "ProgramPath" );
//		CStr			sProgPath( pProgPath->GetValue() );

		SysWrite( Va( "\tshader %s", pShaderBranch->GetName() ) );

		IVertexDecl *	pDecl = NULL;
		TUniform	*	pUniforms = NULL;
		uint			nUnfmCount = 0;

		//----------------------------------------------------------------------
		// Tip: Parse shader data
		//----------------------------------------------------------------------
		for ( size_t j = 0; j < pShaderBranch->GetNumChilds(); ++j )
		{
			CXMLElement *	pStruct = pShaderBranch->GetChild( j );
			const CStr		sStruct( pStruct->GetName() );

			if ( sStruct.Compare( "VertexFormat" ) )
			{
				pDecl = ParseVertexFormat( pStruct );
			}
			else if ( sStruct.Compare( "Constants" ) )
			{
/*
				pShader->m_nUniformCount	= 1;
				pShader->m_pUniforms		= NEW CBaseShader::TUniform [ pShader->m_nUniformCount ];

				pShader->m_pUniforms[ 0 ].sName	= "vColorMod";
				pShader->m_pUniforms[ 0 ].eType	= TYPE_VEC4;
				pShader->m_pUniforms[ 0 ].nLoc	= pShader->GetUniformLoc( pShader->m_pUniforms[ 0 ].sName );
				pShader->m_pUniforms[ 0 ].nCount	= 1;

				m_ppShaders[ UI_SHADER ] = pShader;
*/
				nUnfmCount = ParseConstants( pStruct, &pUniforms );
				//pShader->ParseMaps( pStruct );
			}
		}

		g_pRenderer->CreateShader( sPath.GetString(), pDecl, pUniforms, nUnfmCount );
	}

	DEL( pRoot );

	pRes->eState = TResource::LOADED;
}
示例#9
0
void CModel::LoadObjects( const char * szFile )
{
    const int nFileVer = 1;

    IFile * pFile;

    if ( R_OK != g_pVfs->OpenFile( &pFile, szFile,  VFS_BINARY | VFS_READ ) )
    {
        SysWrite( Va( "Failed to open model file \"%s\"", szFile ) );
        return;
    }


    TModelFileHdr tFileHdr;

    //--------------------------------------------------------------------------
    // Tip: Читаем заголовок MODEL файла
    //--------------------------------------------------------------------------
    if ( !g_pVfs->CheckRead( pFile, &tFileHdr, sizeof( TModelFileHdr ) ) )
    {
        // invalid file
        goto error_label;
    }

    if (	/*( 0 != strcmp( "MDL ", (char *)&tFileHdr.nSign ) ) ||*/
        ( 0 == tFileHdr.nNumObjects ) ||
        ( nFileVer != tFileHdr.nVersion ) ||
        ( sizeof( TModelFileHdr ) != tFileHdr.nHeaderSize ) )
    {
        // invalid file or no objects
        goto error_label;
    }

    m_nNumObjects	= tFileHdr.nNumObjects;
    m_pObjects		= NEW CObject [ m_nNumObjects ];

    if ( NULL == m_pObjects )
        goto error_label;

    //--------------------------------------------------------------------------
    // Tip: Читаем mesh
    //--------------------------------------------------------------------------
    {
        TObjectHdr tMeshHdr;
        g_pVfs->Read( pFile, &tMeshHdr, sizeof( TObjectHdr ) );
    }

    m_pShape = g_pEngine->CreateMesh();
    m_pShape->LoadFromStream( pFile );

    m_pBoneMatrices	= NEW mat4[ m_nNumObjects ];

    //--------------------------------------------------------------------------
    // Tip: Читаем объекты
    //--------------------------------------------------------------------------
    for ( uint nObj = 0; nObj < m_nNumObjects; ++nObj )
    {
        TObjectHdr tObjHdr;
        CObject * pObject = m_pObjects + nObj;

        // Читаем заголовок объекта
        if ( sizeof ( TObjectHdr ) != g_pVfs->Read( pFile, &tObjHdr, sizeof( TObjectHdr ) ) )
        {
            goto error_label;
        }

        pObject->SetParentName( tObjHdr.szParent );
        pObject->SetName( tObjHdr.szName );
        pObject->SetScale( tObjHdr.vScale );
        pObject->SetPos( tObjHdr.vPos );
        pObject->SetRot( tObjHdr.qRot );

        ////////////////////////////////////////////////////////////////////////

        /*switch ( tObjHdr.eType )
        {
        	default:
        	{
        		g_pVfs->Seek( pFile, tObjHdr.nShapeBlockSize, VFS_SEEK_CUR );
        		continue;
        	}
        }*/
    }

    RebuildHierarchy();
    g_pVfs->CloseFile( &pFile );
    return;

    //--------------------------------------------------------------------------
    // Tip: Поведение кода в случае ошибки при разборе файла
    //--------------------------------------------------------------------------
error_label:

    m_nNumObjects = 0;
    g_pVfs->CloseFile( &pFile );
}