예제 #1
0
void QueryResult::put_Explanation( String* inExplainStr )
{
	// if we have string here we need destroy it
	ForgetObject( mpExplainStr );

	mpExplainStr = inExplainStr;
}
예제 #2
0
Thread_Simple::~Thread_Simple( void )
{
	#if FBL_WIN 
		if( mHandle )
			CloseHandle( mHandle );
	#endif //FBL_WIN 
	
	ForgetObject( mpThreadArgs );
}
예제 #3
0
void QueryResult::put_AsString( String*	inpValue ) 
{
	// if we have string here we need destroy it
	ForgetObject( mpStringValue );

	mResultType   = kQueryResult_String;
	mResultTypeEx = (EQueryResultEx)(mResultTypeEx | kQueryResultEx_String);
	mpStringValue = inpValue;
}
예제 #4
0
void Location_Disk_FSSpec::put_FSSpec( const FSSpec* inSpec )
{
	FBL_CHECK( inSpec != NULL );
	
	mFSSpec 	= *inSpec;	// copy structures here.
	mSpecExists = true;

	ForgetObject( mpFullPath );
}	
예제 #5
0
void Location_Disk_FSSpec::put_Path( const String& inFullPath )  
{
	ForgetObject( mpFullPath ); 
	
	if( !inFullPath.isEmpty() ) 
		mpFullPath = new String( inFullPath );
		
	mSpecExists = false;
}		
예제 #6
0
void ValentinaThreadShutDown( void )
{
	#if FBL_INTERNAL_THREADSAFE || FBL_EXTERNAL_THREADSAFE

		vuint64* threadInitCounter = (vuint64*)tlsInitCounter.get();
		if( threadInitCounter )
		{
			if( (*threadInitCounter) > 1 )
			{
				// ValentinaThreadShutDown is called, but we just register this fact
				// instead of real job.
				(*threadInitCounter)--;
			}
			else
			{
				// (*threadInitCounter) == 1
				//

				#if FBL_TEST_CODE
				{
					StLockGuard<True_Thread_Mutex> lock(gThreadIDArrayMutex);
					
					FBL_CHECK( gThreadIDArray );
					if( gThreadIDArray )
					{
						#if FBL_WIN
							gThreadIDArray->RemoveItem( (fbl::vuint64)GetCurrentThreadId() );
						#else
							gThreadIDArray->RemoveItem( (fbl::vuint64)( pthread_self() ) );
						#endif //FBL_WIN		
					}
				}
				#endif // FBL_TEST_CODE

				// vKernel stuff.
				if( pValentinaThreadShutDownEx )
					pValentinaThreadShutDownEx();
				
				// "Free" TLS objects (safe even if this thread did not "create" tlsSysLocalizable ).
				tlsSysLocalizable.SafeRelease();
				
				// "Free" tlsInitCounter object
				ForgetObject( threadInitCounter );
			}
			
			tlsInitCounter.set( threadInitCounter );
		}
		else
		{
			// Silently ignore - ValentinaThreadShutDown is called before any ValentinaThreadInit.
		}
		
	#endif // FBL_INTERNAL_THREADSAFE || FBL_EXTERNAL_THREADSAFE
}
예제 #7
0
Location_Disk_FSSpec& Location_Disk_FSSpec::operator=( const Location_Disk_FSSpec& inOther )
{
	mSpecExists = inOther.mSpecExists;	
	mFSSpec = inOther.mFSSpec;

	// also we check that may be inOther have path?
	ForgetObject( mpFullPath );

	if( inOther.mpFullPath )
		mpFullPath = new String( *inOther.mpFullPath );
		
	return *this;	
}
예제 #8
0
QueryResult::~QueryResult( void )
{
	ForgetObject( mpStringValue );
	ForgetObject( mpExplainStr );
}
예제 #9
0
Value_datetime_imp::~Value_datetime_imp( void )
{
	if( mDTFormatOwner )
		ForgetObject(mDTFormat);
}
예제 #10
0
Location_Disk_FSSpec::~Location_Disk_FSSpec( void ) 
{	
	ForgetObject( mpFullPath ); 
}