/* OpenMetadataUpdate * opens metadata file * * "meta" [ OUT ] - return parameter for metadata */ LIB_EXPORT rc_t CC VTableOpenMetadataUpdate ( VTable *self, struct KMetadata **meta ) { rc_t rc; if ( meta == NULL ) rc = RC ( rcVDB, rcTable, rcOpening, rcParam, rcNull ); else { if ( self == NULL ) rc = RC ( rcVDB, rcTable, rcOpening, rcSelf, rcNull ); else { * meta = self -> meta; return KMetadataAddRef ( self -> meta ); } * meta = NULL; } return rc; }
/* OpenMetadataUpdate * opens metadata for update * * "meta" [ OUT ] - return parameter for metadata */ LIB_EXPORT rc_t CC VDatabaseOpenMetadataUpdate ( VDatabase *self, KMetadata **meta ) { rc_t rc; if ( meta == NULL ) rc = RC ( rcVDB, rcDatabase, rcAccessing, rcParam, rcNull ); else { * meta = NULL; if ( self == NULL ) rc = RC ( rcVDB, rcDatabase, rcAccessing, rcSelf, rcNull ); else { /* we operate under the notion of single-threaded operation, so hand out read or update capable object */ rc = KMetadataAddRef ( self -> meta ); if ( rc == 0 ) * meta = self -> meta; } } return rc; }
/* AddRef * Release * all objects are reference counted * NULL references are ignored */ inline rc_t AddRef () const throw() { return KMetadataAddRef ( this ); }