static HRESULT s_createHbOleObject( REFIID riid, void ** ppvObj, PHB_ITEM pAction, HB_BOOL fGuids ) { HRESULT hr; IHbOleServer * thisobj = ( IHbOleServer * ) hb_xalloc( sizeof( IHbOleServer ) ); if( ! thisobj ) { if( pAction ) hb_itemRelease( pAction ); hr = E_OUTOFMEMORY; } else { InterlockedIncrement( &s_lObjectCount ); thisobj->lpVtbl = &IHbOleServer_Vtbl; thisobj->count = 1; thisobj->pAction = pAction; thisobj->fGuids = fGuids; hr = IHbOleServer_Vtbl.QueryInterface( ( IDispatch * ) thisobj, riid, ppvObj ); IHbOleServer_Vtbl.Release( ( IDispatch * ) thisobj ); } return hr; }
/* alloc new token environment */ static TOKEN_ENVIRONMENT sTokEnvNew( void ) { TOKEN_ENVIRONMENT env = ( TOKEN_ENVIRONMENT ) hb_xalloc( sizeof( TOKEN_POSITION ) * ( 2 + TOKEN_ENVIRONMENT_STEP ) ); if( env == NULL ) return NULL; /* use the first element to store current length and use of token env */ env[ 0 ].sStartPos = 0; /* 0-based index to next free, unused element */ env[ 0 ].sEndPos = TOKEN_ENVIRONMENT_STEP; /* but there are 100 elements ready for use */ /* use second element to store actual index with TokenNext() */ env[ 1 ].sStartPos = 0; /* 0-based index value that is to be used NEXT */ return env; }
static void * hb_bz2Alloc( void * cargo, int nmemb, int size ) { HB_SYMBOL_UNUSED( cargo ); return hb_xalloc( ( HB_SIZE ) nmemb * size ); }
static HB_ERRCODE sqlbaseCreate( SQLBASEAREAP pArea, LPDBOPENINFO pOpenInfo ) { PHB_ITEM pItemEof, pItem; HB_USHORT uiCount; HB_BOOL bError; pArea->ulConnection = pOpenInfo->ulConnection ? pOpenInfo->ulConnection : s_ulConnectionCurrent; if( pArea->ulConnection > s_ulConnectionCount || ( pArea->ulConnection && ! s_pConnection[ pArea->ulConnection - 1 ] ) ) { hb_errRT_SQLBASE( EG_OPEN, ESQLDD_NOTCONNECTED, "Not connected", NULL ); return HB_FAILURE; } if( pArea->ulConnection ) { pArea->pConnection = s_pConnection[ pArea->ulConnection - 1 ]; pArea->pConnection->uiAreaCount++; pArea->pSDD = pArea->pConnection->pSDD; } else pArea->pSDD = &sddNull; pItemEof = hb_itemArrayNew( pArea->area.uiFieldCount ); bError = HB_FALSE; for( uiCount = 0; uiCount < pArea->area.uiFieldCount; uiCount++ ) { LPFIELD pField = pArea->area.lpFields + uiCount; switch( pField->uiType ) { case HB_FT_STRING: { char * pStr; pStr = ( char * ) hb_xgrab( pField->uiLen + 1 ); memset( pStr, ' ', pField->uiLen ); pStr[ pField->uiLen ] = '\0'; pItem = hb_itemPutCL( NULL, pStr, pField->uiLen ); hb_xfree( pStr ); break; } case HB_FT_MEMO: pItem = hb_itemPutC( NULL, NULL ); break; case HB_FT_INTEGER: if( pField->uiDec ) pItem = hb_itemPutND( NULL, 0.0 ); else pItem = hb_itemPutNI( NULL, 0 ); break; case HB_FT_LONG: if( pField->uiDec ) pItem = hb_itemPutND( NULL, 0.0 ); else pItem = hb_itemPutNL( NULL, 0 ); break; case HB_FT_FLOAT: pItem = hb_itemPutND( NULL, 0.0 ); break; case HB_FT_DOUBLE: pItem = hb_itemPutND( NULL, 0.0 ); break; case HB_FT_DATE: pItem = hb_itemPutDS( NULL, NULL ); break; case HB_FT_LOGICAL: pItem = hb_itemPutL( NULL, HB_FALSE ); break; default: pItem = hb_itemNew( NULL ); bError = HB_TRUE; break; } hb_arraySetForward( pItemEof, uiCount + 1, pItem ); hb_itemRelease( pItem ); if( bError ) break; } if( bError ) { hb_itemClear( pItemEof ); hb_itemRelease( pItemEof ); hb_errRT_SQLBASE( EG_CORRUPTION, ESQLDD_INVALIDFIELD, "Invalid field type", NULL ); SELF_CLOSE( ( AREAP ) pArea ); return HB_FAILURE; } pArea->ulRecCount = 0; pArea->pRow = ( void ** ) hb_xalloc( SQLDD_ROWSET_RESIZE * sizeof( void * ) ); pArea->pRowFlags = ( HB_BYTE * ) hb_xalloc( SQLDD_ROWSET_RESIZE * sizeof( HB_BYTE ) ); pArea->ulRecMax = SQLDD_ROWSET_RESIZE; *( pArea->pRow ) = pItemEof; pArea->pRowFlags[ 0 ] = SQLDD_FLAG_CACHED; pArea->fFetched = HB_TRUE; if( SUPER_CREATE( ( AREAP ) pArea, pOpenInfo ) != HB_SUCCESS ) { SELF_CLOSE( ( AREAP ) pArea ); return HB_FAILURE; } return SELF_GOTOP( ( AREAP ) pArea ); }
static voidpf s_zsock_zalloc( voidpf opaque, uInt items, uInt size ) { HB_SYMBOL_UNUSED( opaque ); return hb_xalloc( ( HB_SIZE ) items * size ); }
double hb_secondsCPU( int n ) { double d = 0.0; #if defined( HB_OS_WIN ) && ! defined( HB_OS_WIN_CE ) && ! defined( HB_OS_UNIX ) FILETIME Create, Exit, Kernel, User; #endif #if defined( HB_OS_OS2 ) static ULONG s_timer_interval = 0; QSGREC ** pBuf; #endif if( ( n < 1 || n > 3 ) && ( n < 11 || n > 13 ) ) n = 3; #if defined( HB_OS_UNIX ) && ! defined( HB_OS_VXWORKS ) { struct tms tm; times( &tm ); if( n > 10 ) { n -= 10; if( n & 1 ) d += tm.tms_cutime; if( n & 2 ) d += tm.tms_cstime; } if( n & 1 ) d += tm.tms_utime; if( n & 2 ) d += tm.tms_stime; /* In POSIX-1996 the CLK_TCK symbol is mentioned as obsolescent */ #if 0 d /= CLK_TCK; #endif d /= ( double ) sysconf( _SC_CLK_TCK ); } #else if( n > 10 ) n -= 10; #if defined( HB_OS_WIN ) && ! defined( HB_OS_WIN_CE ) if( hb_iswinnt() && GetProcessTimes( GetCurrentProcess(), &Create, &Exit, &Kernel, &User ) ) { if( n & 1 ) { d += ( double ) ( ( ( HB_MAXINT ) User.dwHighDateTime << 32 ) + ( HB_MAXINT ) User.dwLowDateTime ); } if( n & 2 ) { d += ( double ) ( ( ( HB_MAXINT ) Kernel.dwHighDateTime << 32 ) + ( HB_MAXINT ) Kernel.dwLowDateTime ); } d /= 10000000.0; } else #elif defined( HB_OS_OS2 ) if( s_timer_interval == 0 ) DosQuerySysInfo( QSV_TIMER_INTERVAL, QSV_TIMER_INTERVAL, ( PVOID ) &s_timer_interval, sizeof( ULONG ) ); pBuf = ( QSGREC ** ) hb_xalloc( BUFSIZE ); if( pBuf ) { #if defined( __GNUC__ ) APIRET rc = DosQuerySysState( QS_PROCESS, 0L, _getpid(), 0L, pBuf, BUFSIZE ); #else APIRET rc = DosQuerySysState( QS_PROCESS, 0L, getpid(), 0L, pBuf, BUFSIZE ); #endif if( rc == NO_ERROR ) { QSGREC * pGrec = *pBuf; QSPREC * pPrec = ( QSPREC * ) ( ( ULONG ) pGrec + sizeof( QSGREC ) ); QSTREC * pTrec = pPrec->pThrdRec; int i; for( i = 0; i < pPrec->cTCB; i++, pTrec++ ) { if( n & 1 ) d += pTrec->usertime; if( n & 2 ) d += pTrec->systime; } d = d * 10.0 / s_timer_interval; } hb_xfree( pBuf ); } else #endif { /* TODO: this code is only for DOS and other platforms which cannot calculate process time */ if( n & 1 ) d = hb_dateSeconds(); } #endif return d; }