Example #1
0
/*
 * allocate and return atomAlias for new workarea or NULL if alias already exist
 */
void * hb_rddAllocWorkAreaAlias( const char * szAlias, int iArea )
{
   int iDummyArea;

   HB_TRACE( HB_TR_DEBUG, ( "hb_rddAllocWorkAreaAlias(%s, %d)", szAlias, iArea ) );

   /* Verify if the alias name is valid symbol */
   if( hb_rddVerifyAliasName( szAlias ) != HB_SUCCESS )
      hb_errRT_DBCMD_Ext( EG_BADALIAS, EDBCMD_BADALIAS, NULL, szAlias, EF_CANDEFAULT );
   /* Verify if the alias is already in use */
   else if( hb_rddGetAliasNumber( szAlias, &iDummyArea ) == HB_SUCCESS )
      hb_errRT_DBCMD_Ext( EG_DUPALIAS, EDBCMD_DUPALIAS, NULL, szAlias, EF_CANDEFAULT );
   else
   {
      PHB_DYNS pSymAlias = hb_dynsymGet( szAlias );

      if( hb_dynsymAreaHandle( pSymAlias ) == 0 )
      {
         hb_dynsymSetAreaHandle( pSymAlias, iArea );
         return pSymAlias;
      }
      hb_errRT_DBCMD_Ext( EG_DUPALIAS, EDBCMD_DUPALIAS, NULL, szAlias, EF_CANDEFAULT );
   }

   return NULL;
}
Example #2
0
HB_ERRCODE hb_rddGetTempAlias( char * szAliasTmp )
{
   int i, iArea;

   for( i = 1; i < 1000; i++ )
   {
      hb_snprintf( szAliasTmp, 11, "__HBTMP%03i", i );
      if( hb_rddGetAliasNumber( szAliasTmp, &iArea ) != HB_SUCCESS )
         return HB_SUCCESS;
   }
   szAliasTmp[ 0 ] = '\0';
   return HB_FAILURE;
}
Example #3
0
/*
 * Select a WorkArea by the name.
 */
HB_ERRCODE hb_rddSelectWorkAreaAlias( const char * szAlias )
{
   HB_ERRCODE errCode;
   int iArea;

   HB_TRACE( HB_TR_DEBUG, ( "hb_rddSelectWorkAreaAlias(%s)", szAlias ) );

   errCode = hb_rddGetAliasNumber( szAlias, &iArea );

   if( errCode == HB_FAILURE )
   {
      /*
       * generate an error with retry possibility
       * (user created error handler can open a missing database)
       */
      PHB_ITEM pError = hb_errRT_New( ES_ERROR, NULL, EG_NOALIAS, EDBCMD_NOALIAS, NULL, szAlias, 0, EF_CANRETRY );

      do
      {
         if( hb_errLaunch( pError ) != E_RETRY )
            break;
         errCode = hb_rddGetAliasNumber( szAlias, &iArea );
      }
      while( errCode == HB_FAILURE );

      hb_itemRelease( pError );
   }

   if( errCode == HB_SUCCESS )
   {
      if( iArea < 1 || iArea > HB_RDD_MAX_AREA_NUM )
         errCode = hb_rddSelectFirstAvailable();
      else
         errCode = hb_rddSelectWorkAreaNumber( iArea );
   }

   return errCode;
}
Example #4
0
static AREAP s_foxAreaPointer( int iParam )
{
   if( HB_ISNIL( iParam ) )
      return ( AREAP ) hb_rddGetCurrentWorkAreaPointer();
   else
   {
      const char * szAlias = hb_parc( iParam );
      int iArea;

      if( szAlias )
         hb_rddGetAliasNumber( szAlias, &iArea );
      else
         iArea = hb_parni( iParam );

      return ( AREAP ) hb_rddGetWorkAreaPointer( iArea );
   }
}