int TRI_CreateKeyGenerator (const TRI_json_t* const parameters, TRI_key_generator_t** dst) { TRI_key_generator_t* generator; const TRI_json_t* options; int res; *dst = NULL; options = NULL; if (parameters != NULL && parameters->_type == TRI_JSON_ARRAY) { options = parameters; } generator = CreateGenerator(options); if (generator == NULL) { return TRI_ERROR_ARANGO_INVALID_KEY_GENERATOR; } res = generator->init(generator, options); if (res != TRI_ERROR_NO_ERROR) { TRI_FreeKeyGenerator(generator); return res; } *dst = generator; return TRI_ERROR_NO_ERROR; }
void TRI_DestroyPrimaryCollection (TRI_primary_collection_t* primary) { size_t i, n; if (primary->_keyGenerator != NULL) { TRI_FreeKeyGenerator(primary->_keyGenerator); } TRI_DestroyReadWriteLock(&primary->_compactionLock); TRI_DestroyReadWriteLock(&primary->_lock); TRI_DestroyAssociativePointer(&primary->_primaryIndex); if (primary->_shaper != NULL) { TRI_FreeVocShaper(primary->_shaper); } n = primary->_datafileInfo._nrAlloc; for (i = 0; i < n; ++i) { TRI_doc_datafile_info_t* dfi = primary->_datafileInfo._table[i]; if (dfi != NULL) { FreeDatafileInfo(dfi); } } TRI_DestroyAssociativePointer(&primary->_datafileInfo); TRI_DestroyBarrierList(&primary->_barrierList); TRI_DestroyCollection(&primary->base); }
void TRI_DestroyPrimaryCollection (TRI_primary_collection_t* primary) { if (primary->_keyGenerator != NULL) { TRI_FreeKeyGenerator(primary->_keyGenerator); } TRI_DestroyReadWriteLock(&primary->_lock); TRI_DestroyAssociativePointer(&primary->_primaryIndex); if (primary->_shaper != NULL) { TRI_FreeVocShaper(primary->_shaper); } FreeDatafileInfo(&primary->_datafileInfo); TRI_DestroyBarrierList(&primary->_barrierList); TRI_DestroyCollection(&primary->base); }