Esempio n. 1
0
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 );
}
Esempio n. 2
0
static void s_listenRet( HB_SOCKET sd, const char * szRootPath, HB_BOOL rpc )
{
   if( sd != HB_NO_SOCKET )
   {
      PHB_LISTENSD lsd, * lsd_ptr;
      int iLen;

      lsd = ( PHB_LISTENSD ) memset( hb_xgrab( sizeof( HB_LISTENSD ) ),
                                            0, sizeof( HB_LISTENSD ) );
      lsd->sd = sd;
      lsd->rpc = rpc;
      if( szRootPath )
         hb_strncpy( lsd->rootPath, szRootPath, sizeof( lsd->rootPath ) - 1 );
      else
         hb_fsBaseDirBuff( lsd->rootPath );
      iLen = ( int ) strlen( lsd->rootPath );
      if( iLen > 0 )
      {
         if( ! s_isDirSep( lsd->rootPath[ iLen - 1 ] ) )
         {
            if( iLen == sizeof( lsd->rootPath ) - 1 )
               --iLen;
            lsd->rootPath[ iLen ] = HB_OS_PATH_DELIM_CHR;
         }
      }
      lsd_ptr = ( PHB_LISTENSD * ) hb_gcAllocate( sizeof( PHB_LISTENSD ),
                                                  &s_gcListensdFuncs );
      *lsd_ptr = lsd;
      hb_retptrGC( lsd_ptr );
   }
   else
      hb_ret();
}
Esempio n. 3
0
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 );
}
Esempio n. 4
0
File: odbc.c Progetto: Andygon/core
static void hb_SQLHSTMT_stor( PHB_ITEM pHDbcItm, SQLHSTMT hStmt, int iParam )
{
   PHB_SQLHSTMT pHStmt = ( PHB_SQLHSTMT ) hb_gcAllocate( sizeof( HB_SQLHSTMT ), &s_gcSQLHSTMTFuncs );

   pHStmt->hStmt = hStmt;
   pHStmt->conn_counter = 0;
   /* initialize pointer scanned by mark function before allocating new
    * new GC block - such allocation may activate GC and uninitalized
    * pointer will be accessed from our mark function
    */
   pHStmt->pHDbcItm = NULL;

   if( pHDbcItm )
   {
      PHB_SQLHDBC pHDbc = hb_SQLHDBC_get( pHDbcItm );

      if( pHDbc )
      {
         pHStmt->conn_counter = pHDbc->conn_counter;
         pHStmt->pHDbcItm = hb_itemNew( pHDbcItm );
         hb_gcUnlock( pHStmt->pHDbcItm );
      }
   }

   hb_storptrGC( ( void * ) pHStmt, iParam );
}
Esempio n. 5
0
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 );
}
Esempio n. 6
0
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 );
}
Esempio n. 7
0
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 );
}
Esempio n. 8
0
static void hb_hrbReturn( PHRB_BODY pHrbBody )
{
   PHRB_BODY * pHrbPtr = ( PHRB_BODY * ) hb_gcAllocate( sizeof( PHRB_BODY ),
                                                        &s_gcHrbFuncs );

   *pHrbPtr = pHrbBody;
   hb_retptrGC( pHrbPtr );
}
Esempio n. 9
0
File: odbc.c Progetto: Andygon/core
static void hb_SQLHENV_stor( SQLHENV hEnv, int iParam )
{
   PHB_SQLHENV pHEnv = ( PHB_SQLHENV ) hb_gcAllocate( sizeof( HB_SQLHENV ), &s_gcSQLHENVFuncs );

   pHEnv->hEnv = hEnv;

   hb_storptrGC( ( void * ) pHEnv, iParam );
}
Esempio n. 10
0
static void hb_BIO_ret( BIO * bio, char * pszBuffer )
{
   HB_BIO ** ptr = ( HB_BIO ** ) hb_gcAllocate( sizeof( HB_BIO * ), &s_gcBIOFuncs );

   *ptr = PHB_BIO_create( bio, pszBuffer );

   hb_retptrGC( ( void * ) ptr );
}
Esempio n. 11
0
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 );
}
Esempio n. 12
0
void hb_X509_ret( X509 * x509, HB_BOOL fRelease )
{
   PHB_X509 ph = ( PHB_X509 ) hb_gcAllocate( sizeof( HB_X509 ), &s_gcX509_funcs );

   ph->pX509    = x509;
   ph->fRelease = fRelease;

   hb_retptrGC( ( void * ) ph );
}
Esempio n. 13
0
static HBMXML_NODE * mxml_node_new( mxml_node_t * node, int iNew )
{
   HBMXML_NODE * pHbnode = ( HBMXML_NODE * ) hb_gcAllocate( sizeof( HBMXML_NODE ),
                                                            &s_gc_mxml_nodeFuncs );

   pHbnode->node = node;
   if( iNew == 0 )
      mxmlRetain( node );

   return pHbnode;
}
Esempio n. 14
0
static void s_consrvRet( PHB_CONSRV conn )
{
   if( conn )
   {
      PHB_CONSRV * conn_ptr = ( PHB_CONSRV * ) hb_gcAllocate( sizeof( PHB_CONSRV ),
                                                              &s_gcConSrvFuncs );
      *conn_ptr = conn;
      hb_retptrGC( conn_ptr );
   }
   else
      hb_ret();
}
Esempio n. 15
0
static void hb_fileReturn( PHB_FILE pFile )
{
   if( pFile )
   {
      PHB_FILE * fileHolder = ( PHB_FILE * ) hb_gcAllocate( sizeof( PHB_FILE ),
                                                            &s_gcFileFuncs );
      * fileHolder = pFile;
      hb_retptrGC( fileHolder );
   }
   else
      hb_ret();
}
Esempio n. 16
0
static void hb_MYSQL_ret( MYSQL * p )
{
   if( p )
   {
      void ** ph = ( void ** ) hb_gcAllocate( sizeof( MYSQL * ), &s_gcMYSQLFuncs );

      *ph = p;

      hb_retptrGC( ph );
   }
   else
      hb_retptr( NULL );
}
Esempio n. 17
0
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 );
}
Esempio n. 18
0
void hb_PGconn_ret( PGconn * p )
{
   if( p )
   {
      void ** ph = ( void ** ) hb_gcAllocate( sizeof( PGconn * ), &s_gcPGconnFuncs );

      *ph = p;

      hb_retptrGC( ph );
   }
   else
      hb_retptr( NULL );
}
Esempio n. 19
0
static void hb_FILE_ret( FILE * p )
{
   if( p )
   {
      void ** ph = ( void ** ) hb_gcAllocate( sizeof( FILE * ), &s_gcFILEFuncs );

      *ph = p;

      hb_retptrGC( ph );
   }
   else
      hb_retptr( NULL );
}
Esempio n. 20
0
static void hb_PGcancel_ret( PGcancel * p )
{
   if( p )
   {
      void ** ph = ( void ** ) hb_gcAllocate( sizeof( PGcancel * ), &s_gcPGcancelFuncs );

      *ph = p;

      hb_retptrGC( ph );
   }
   else
      hb_retptr( NULL );
}
Esempio n. 21
0
void hb_PGresult_ret( PGresult * p )
{
   if( p )
   {
      void ** ph = ( void ** ) hb_gcAllocate( sizeof( PGresult * ), &s_gcPGresultFuncs );

      *ph = p;

      hb_retptrGC( ph );
   }
   else
      hb_retptr( NULL );
}
Esempio n. 22
0
static void hb_SQLHDBC_stor( PHB_ITEM pHEnvItm, SQLHDBC hDbc, int iParam )
{
   PHB_SQLHDBC pHDbc = ( PHB_SQLHDBC ) hb_gcAllocate( sizeof( HB_SQLHDBC ), &s_gcSQLHDBCFuncs );

   pHDbc->hDbc = hDbc;
   pHDbc->conn_counter = 1;
   /* initialize pointer scanned by mark function before allocating new
      new GC block - such allocation may activate GC and uninitalized
      pointer will be accessed from our mark function */
   pHDbc->pHEnvItm = NULL;
   if( pHEnvItm )
   {
      pHDbc->pHEnvItm = hb_itemNew( pHEnvItm );
      hb_gcUnlock( pHDbc->pHEnvItm );
   }

   hb_storptrGC( ( void * ) pHDbc, iParam );
}
Esempio n. 23
0
PHB_REGEX hb_regexCompile( const char * szRegEx, HB_SIZE nLen, int iFlags )
{
   PHB_REGEX pRegEx;

   HB_SYMBOL_UNUSED( nLen );

   pRegEx = ( PHB_REGEX ) hb_gcAllocate( sizeof( *pRegEx ), &s_gcRegexFuncs );
   memset( pRegEx, 0, sizeof( *pRegEx ) );
   pRegEx->fFree = HB_TRUE;
   pRegEx->iFlags = iFlags;

   if( ( s_reg_comp )( pRegEx, szRegEx ) != 0 )
   {
      hb_gcFree( pRegEx );
      pRegEx = NULL;
   }

   return pRegEx;
}
Esempio n. 24
0
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;
}