def lookup_by_property(self, prefix, key, value): ''' Return all objects that have the key/value property specified; raise LookupError if no such object is found. ''' vp = CPLDirect.new_std_vector_cpl_id_tp() ret = CPLDirect.cpl_lookup_object_by_property( prefix, key, value, CPLDirect.cpl_cb_collect_property_lookup_vector, vp) if ret == E_NOT_FOUND: CPLDirect.delete_std_vector_cpl_id_tp(vp) raise LookupError('Not found') if not CPLDirect.cpl_is_ok(ret): CPLDirect.delete_std_vector_cpl_id_tp(vp) raise CPLException( 'Unable to lookup by property ' + CPLDirect.cpl_error_string(ret), ret) v = CPLDirect.cpl_dereference_p_std_vector_cpl_id_t(vp) l = [] for e in v: l.append(cpl_object(e)) CPLDirect.delete_std_vector_cpl_id_tp(vp) return l
def __lookup_by_property_helper(self, vp, ret): if ret == E_NOT_FOUND: CPLDirect.delete_std_vector_cpl_id_tp(vp) raise LookupError('Not found') if not CPLDirect.cpl_is_ok(ret): CPLDirect.delete_std_vector_cpl_id_tp(vp) raise CPLException('Unable to lookup by property ' + CPLDirect.cpl_error_string(ret), ret) v = CPLDirect.cpl_dereference_p_std_vector_cpl_id_t(vp) l = [] for e in v: l.append(cpl_object(e)) CPLDirect.delete_std_vector_cpl_id_tp(vp) return l
def lookup_by_property(self, prefix, key, value): ''' Return all objects that have the key/value property specified; raise LookupError if no such object is found. ''' vp = CPLDirect.new_std_vector_cpl_id_tp() ret = CPLDirect.cpl_lookup_object_by_property(prefix, key, value, CPLDirect.cpl_cb_collect_property_lookup_vector, vp) if ret == E_NOT_FOUND: CPLDirect.delete_std_vector_cpl_id_tp(vp) raise LookupError('Not found') if not CPLDirect.cpl_is_ok(ret): CPLDirect.delete_std_vector_cpl_id_tp(vp) raise CPLException('Unable to lookup by property ' + CPLDirect.cpl_error_string(ret), ret) v = CPLDirect.cpl_dereference_p_std_vector_cpl_id_t(vp) l = [] for e in v: l.append(cpl_object(e)) CPLDirect.delete_std_vector_cpl_id_tp(vp) return l