PHB_ITEM hb_cairoPathItemPut( PHB_ITEM pItem, cairo_path_t * pPath ) { cairo_path_t ** ppPath = ( cairo_path_t ** ) hb_gcAlloc( sizeof( cairo_path_t * ), hb_cairo_path_destructor ); *ppPath = pPath; return hb_itemPutPtrGC( pItem, ppPath ); }
PHB_ITEM hb_cairoItemPut( PHB_ITEM pItem, cairo_t * pCairo ) { cairo_t ** ppCairo = ( cairo_t ** ) hb_gcAlloc( sizeof( cairo_t * ), hb_cairo_destructor ); *ppCairo = pCairo; return hb_itemPutPtrGC( pItem, ppCairo ); }
PHB_ITEM hb_cairoPatternItemPut( PHB_ITEM pItem, cairo_pattern_t * pPattern ) { cairo_pattern_t ** ppPattern = ( cairo_pattern_t ** ) hb_gcAllocate( sizeof( cairo_pattern_t * ), &s_gcPatternFuncs ); *ppPattern = pPattern; return hb_itemPutPtrGC( pItem, ppPattern ); }
PHB_ITEM hb_cairoSurfaceItemPut( PHB_ITEM pItem, cairo_surface_t * pSurface ) { cairo_surface_t ** ppSurface = ( cairo_surface_t ** ) hb_gcAlloc( sizeof( cairo_surface_t * ), hb_cairo_surface_destructor); *ppSurface = pSurface; return hb_itemPutPtrGC( pItem, ppSurface ); }
PHB_ITEM hb_socketItemPut( PHB_ITEM pItem, HB_SOCKET sd ) { HB_SOCKET * pSocket = ( HB_SOCKET * ) hb_gcAllocate( sizeof( HB_SOCKET ), &s_gcSocketFuncs ); *pSocket = sd; return hb_itemPutPtrGC( pItem, pSocket ); }
PHB_ITEM hb_fileItemPut( PHB_ITEM pItem, PHB_FILE pFile ) { PHB_FILE * fileHolder = ( PHB_FILE * ) hb_gcAllocate( sizeof( PHB_FILE ), &s_gcFileFuncs ); * fileHolder = pFile; return hb_itemPutPtrGC( pItem, fileHolder ); }
PHB_ITEM hb_sockexItemPut( PHB_ITEM pItem, PHB_SOCKEX pSock ) { PHB_SOCKEX * pSockPtr = ( PHB_SOCKEX * ) hb_gcAllocate( sizeof( PHB_SOCKEX ), &s_gcSocketFuncs ); *pSockPtr = pSock; return hb_itemPutPtrGC( pItem, pSockPtr ); }
PHB_ITEM hb_socketItemPut( PHB_ITEM pItem, HB_SOCKET sd ) { PHB_SOCKEX * pSockPtr = ( PHB_SOCKEX * ) hb_gcAllocate( sizeof( PHB_SOCKEX ), &s_gcSocketFuncs ); *pSockPtr = hb_sockexNew( sd, NULL, NULL ); return hb_itemPutPtrGC( pItem, pSockPtr ); }
PHB_ITEM hb_dbTransInfoPut( PHB_ITEM pItem, LPDBTRANSINFO lpdbTransInfo ) { LPDBTRANSINFO * pHolder; pHolder = ( LPDBTRANSINFO * ) hb_gcAllocate( sizeof( LPDBTRANSINFO ), &s_gcTransInfo ); *pHolder = lpdbTransInfo; return hb_itemPutPtrGC( pItem, pHolder ); }
static PHB_ITEM hb_i18n_newitem( PHB_I18N_TRANS pI18N ) { PHB_I18N_TRANS * pI18NHolder; PHB_ITEM pItem = hb_itemNew( NULL ); if( ! pI18N ) pI18N = hb_i18n_new(); pI18NHolder = ( PHB_I18N_TRANS * ) hb_gcAllocate( sizeof( PHB_I18N_TRANS ), &s_gcI18NFuncs ); *pI18NHolder = pI18N; return hb_itemPutPtrGC( pItem, pI18NHolder ); }
PHB_ITEM hb_libLoad( PHB_ITEM pLibName, PHB_ITEM pArgs ) { void * hDynLib = NULL; if( hb_itemGetCLen( pLibName ) > 0 ) { int argc = pArgs ? ( int ) hb_arrayLen( pArgs ) : 0, i; const char ** argv = NULL; if( argc > 0 ) { argv = ( const char ** ) hb_xgrab( sizeof( char * ) * argc ); for( i = 0; i < argc; ++i ) argv[ i ] = hb_arrayGetCPtr( pArgs, i + 1 ); } if( hb_vmLockModuleSymbols() ) { /* use stack address as first level marker */ hb_vmBeginSymbolGroup( ( void * ) hb_stackId(), HB_TRUE ); #if defined( HB_OS_WIN ) { void * hFileName; hDynLib = ( void * ) LoadLibraryEx( HB_ITEMGETSTR( pLibName, &hFileName, NULL ), NULL, LOAD_WITH_ALTERED_SEARCH_PATH ); hb_strfree( hFileName ); } #elif defined( HB_OS_OS2 ) { HB_UCHAR LoadError[ 256 ] = ""; /* Area for load failure information */ HMODULE hDynModule; if( DosLoadModule( ( PSZ ) LoadError, sizeof( LoadError ), ( PCSZ ) hb_itemGetCPtr( pLibName ), &hDynModule ) == NO_ERROR ) hDynLib = ( void * ) hDynModule; } #elif defined( HB_HAS_DLFCN ) hDynLib = ( void * ) dlopen( hb_itemGetCPtr( pLibName ), RTLD_LAZY | RTLD_GLOBAL ); if( ! hDynLib ) { HB_TRACE( HB_TR_DEBUG, ( "hb_libLoad(): dlopen(): %s", dlerror() ) ); } #elif defined( HB_CAUSEWAY_DLL ) hDynLib = LoadLibrary( hb_itemGetCPtr( pLibName ) ); #else { int iTODO; } #endif /* set real marker */ hb_vmInitSymbolGroup( hDynLib, argc, argv ); hb_vmUnlockModuleSymbols(); } if( argv ) hb_xfree( ( void * ) argv ); } if( hDynLib ) { void ** pLibPtr = ( void ** ) hb_gcAllocate( sizeof( void * ), &s_gcDynlibFuncs ); *pLibPtr = hDynLib; return hb_itemPutPtrGC( NULL, pLibPtr ); } return NULL; }
static void mxml_index_ret( mxml_index_t * index ) { hb_itemPutPtrGC( hb_stackReturnItem(), mxml_index_new( index ) ); }
static void mxml_node_ret( mxml_node_t * node, int iNew ) { if( node ) hb_itemPutPtrGC( hb_stackReturnItem(), mxml_node_new( node, iNew ) ); }
static void mxml_node_push( mxml_node_t * node, int iNew ) { hb_itemPutPtrGC( hb_stackAllocItem(), mxml_node_new( node, iNew ) ); }