SOL_API void sol_oic_resource_unref(struct sol_oic_resource *r) { SOL_NULL_CHECK(r); OIC_RESOURCE_CHECK_API(r); r->refcnt--; if (!r->refcnt) { struct sol_str_slice *slice; uint16_t idx; free((char *)r->href.data); free((char *)r->device_id.data); SOL_VECTOR_FOREACH_IDX (&r->types, slice, idx) free((char *)slice->data); sol_vector_clear(&r->types); SOL_VECTOR_FOREACH_IDX (&r->interfaces, slice, idx) free((char *)slice->data); sol_vector_clear(&r->interfaces); free(r); } }
SOL_API struct sol_oic_resource * sol_oic_resource_ref(struct sol_oic_resource *r) { SOL_NULL_CHECK(r, NULL); OIC_RESOURCE_CHECK_API(r, NULL); r->refcnt++; return r; }
SOL_API void sol_oic_resource_unref(struct sol_oic_resource *r) { SOL_NULL_CHECK(r); OIC_RESOURCE_CHECK_API(r); r->refcnt--; if (!r->refcnt) { free((char *)r->href.data); free((char *)r->device_id.data); sol_vector_clear(&r->types); free(r->types_data); sol_vector_clear(&r->interfaces); free(r->interfaces_data); free(r); } }