예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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