LIB_EXPORT rc_t CC KQueueRelease ( const KQueue *cself ) { KQueue *self = ( KQueue* ) cself; if ( cself != NULL ) { if ( atomic32_dec_and_test ( & self -> refcount ) ) return KQueueWhack ( self ); } return 0; }
LIB_EXPORT rc_t CC KConditionRelease ( const KCondition *cself ) { KCondition *self = ( KCondition* ) cself; if ( cself != NULL ) { if ( atomic32_dec_and_test ( & self -> refcount ) ) return KConditionWhack ( self ); } return 0; }
LIB_EXPORT rc_t CC KColumnBlobRelease ( const KColumnBlob *cself ) { KColumnBlob *self = ( KColumnBlob* ) cself; if ( cself != NULL ) { if ( atomic32_dec_and_test ( & self -> refcount ) ) return KColumnBlobWhack ( self ); } return 0; }
/* Release * discard reference to file * ignores NULL references */ LIB_EXPORT rc_t CC KFileFormatRelease ( const KFileFormat *cself ) { FUNC_ENTRY(); if (cself != NULL) { KFileFormat *self = (KFileFormat*)cself; if (atomic32_dec_and_test (&self->refcount)) return KFileFormatDestroy (self); } return 0; }
static DWORD WINAPI int_ThreadProc( LPVOID lpParameter ) { KThread *self = ( KThread * )lpParameter; /* run the function */ self -> rc = ( * self -> run ) ( self, self -> data ); /* release thread's reference */ if ( atomic32_dec_and_test ( & self -> refcount ) ) free ( self ); return 0; }
LIB_EXPORT rc_t CC KRWLockRelease ( const KRWLock *cself ) { KRWLock *self = ( KRWLock* ) cself; if ( cself != NULL ) { if ( atomic32_dec_and_test ( & self -> refcount ) ) { atomic32_set ( & self -> refcount, 1 ); return KRWLockWhack ( self ); } } return 0; }
rc_t BAMReaderRelease ( const BAMReader *cself ) { BAMReader *self = (BAMReader *)cself; if (cself != NULL) { if (atomic32_dec_and_test(&self->refcount)) { BAMReaderWhack(self); free(self); } } return 0; }
LIB_EXPORT rc_t CC AlignAccessMgrRelease(const AlignAccessMgr *cself) { rc_t rc = 0; AlignAccessMgr *self = (AlignAccessMgr *)cself; if (cself != NULL) { if (atomic32_dec_and_test(&self->refcount)) { rc = AlignAccessMgrWhack(self); if (rc) atomic32_set(&self->refcount, 1); else free(self); } } return rc; }
static rc_t KFFClassRelease (const KFFClass * cself) { rc_t rc = 0; FUNC_ENTRY(); if (cself != NULL) { KFFClass *self = (KFFClass*)cself; if (atomic32_dec_and_test (&self->refcount)) return KFFClassDestroy (cself); } return rc; }
/* Release * discard reference to file * ignores NULL references */ LIB_EXPORT rc_t CC KArrayFileRelease ( const KArrayFile *cself ) { KArrayFile *self = ( KArrayFile* ) cself; if ( cself != NULL ) { if ( atomic32_dec_and_test ( & self -> refcount ) ) { rc_t rc = KArrayFileDestroy ( self ); if ( rc != 0 ) atomic32_set ( & self -> refcount, 1 ); return rc; } } return 0; }
rc_t ProcessOneRelease (const ProcessOne * cself) { ProcessOne * self = (ProcessOne *)cself; rc_t rc = 0; if (self != NULL) { PLOGMSG (klogDebug10, "ProcessOneRelease $(f)", PLOG_S(f), self->path); if (atomic32_dec_and_test (&self->refcount)) { KDirectoryRelease (self->dir); KDirectoryRelease (self->xml); KMD5SumFmtRelease (self->md5); CCFileFormatRelease (self->ff); KFileRelease (self->file); free (self); } } return rc; }
rc_t CCCopyRelease (const CCCopy * cself) { CCCopy * self = (CCCopy *)cself; rc_t rc = 0; LOGMSG (klogDebug9, "Enter: CCCopyRelease"); if (self != NULL) { if (atomic32_dec_and_test (&self->refcount)) { KDirectoryRelease (self->in); KDirectoryRelease (self->out); KDirectoryRelease (self->xml); KMD5SumFmtRelease (self->md5); CCFileFormatRelease (self->ff); free (self); } } return rc; }
rc_t CopierRelease (const Copier * cself) { rc_t rc = 0; Copier * self = (Copier*)cself; if (self != NULL) { if (atomic32_dec_and_test (&self->refcount)) { rc = KFileRelease (self->f); if (rc == 0) { rc = BufferQRelease (self->q); if (rc == 0) { free (self); } } } } return rc; }
rc_t BlobHeadersRelease ( const BlobHeaders *self ) { if (self && atomic32_dec_and_test(&(((BlobHeaders *)self)->refcount))) return BlobHeadersDestroy((BlobHeaders *)self); return 0; }
static rc_t VBlobHeaderDataRelease( const struct VBlobHeaderData *self ) { if (self && atomic32_dec_and_test(&(((struct VBlobHeaderData *)self)->refcount))) return VBlobHeaderDataDestroy((struct VBlobHeaderData *)self); return 0; }
/* DropRef * manipulates reference counter * returns true if last ref */ int KConditionDropRef ( const KCondition *cself ) { assert ( cself != NULL ); return atomic32_dec_and_test ( & ( ( KCondition* ) cself ) -> refcount ); }