Ejemplo n.º 1
0
static term_t convert_val(val_converter_t *convert, value_t v) {
  value_table_t *vtbl;
  value_kind_t kind;
  int32_t c;
  term_t t;

  vtbl = convert->vtbl;
  kind = object_kind(vtbl, v);

  switch (kind) {
  case BOOLEAN_VALUE:
    // skip the cache for Boolean values
    t = convert_bool(vtbl, v);
    break;

  case RATIONAL_VALUE:
    t = convert_cached_term(convert, v);
    if (t < 0) {
      t = convert_rational(convert->terms, vtbl, v);
      convert_cache_map(convert, v, t);
    }
    break;

  case BITVECTOR_VALUE:
    t = convert_cached_term(convert, v);
    if (t < 0) {
      t = convert_bitvector(convert->terms, vtbl, v);
      convert_cache_map(convert, v, t);
    }
    break;

  case TUPLE_VALUE:
    t = convert_cached_term(convert, v);
    if (t < 0) {
      t = convert_tuple(convert, vtbl_tuple(vtbl, v));
      convert_cache_map(convert, v, t);
    }
    break;

  case UNINTERPRETED_VALUE:
    t = convert_cached_term(convert, v);
    if (t < 0) {
      t = convert_unint(convert->terms, vtbl, v);
      convert_cache_map(convert, v, t);
    }
    break;

  default:
    c = get_convert_code(kind);
    assert(c < 0);
    longjmp(convert->env, c);
    break;
  }

  return t;
}
Ejemplo n.º 2
0
static PyObject* bzpy_mark(PyObject *self, PyObject *args, PyObject *kwargs)
{
	CBZView *view = cbzsv->m_pView;
	LONGLONG off = LONGLONG_MIN;
	PyObject *mark = Py_None;
	static /*const*/ char *kws[] = {"offset", "mark", NULL/*redundant sentinel*/};
	if(!PyArg_ParseTupleAndKeywords(args, kwargs, "|LO", kws, &off, &mark)) return NULL;

	if(off == LONGLONG_MIN)
	{
		off = view->m_dwCaret;
	}

	CBZDoc *doc = view->GetDocument();
	convert_minus_index(off, doc->GetDocSize());

	if(mark == Py_None)
	{
		// get
		return convert_bool(doc->CheckMark(off));
	} else
	{
		// set
		BOOL target;
		if(PyObject_IsTrue(mark))
		{
			target = TRUE;
		} else
		{
			target = FALSE;
		}

		BOOL org = doc->CheckMark(off);
		if(org != target)
		{
			doc->SetMark(off); // toggle.

			auto_invalidate(self);
		}

		return convert_bool(org); // おまけ; valかPy_Noneもあり
	}
}
Ejemplo n.º 3
0
/*
 * Attempt to convert a primitive value v
 * - return an error code if v is not primitive
 */
term_t convert_simple_value(term_table_t *terms, value_table_t *vtbl, value_t v) {
  term_t t;

  switch (object_kind(vtbl, v)) {
  case UNKNOWN_VALUE:
    t = CONVERT_UNKNOWN_VALUE;
    break;

  case BOOLEAN_VALUE:
    t = convert_bool(vtbl, v);
    break;

  case RATIONAL_VALUE:
    t = convert_rational(terms, vtbl, v);
    break;

  case BITVECTOR_VALUE:
    t = convert_bitvector(terms, vtbl, v);
    break;

  case TUPLE_VALUE:
    t = CONVERT_NOT_PRIMITIVE;
    break;

  case UNINTERPRETED_VALUE:
    t = convert_unint(terms, vtbl, v);
    break;

  case FUNCTION_VALUE:
  case UPDATE_VALUE:
    t = CONVERT_FUNCTION;
    break;

  case MAP_VALUE:
    t = CONVERT_FAILED;
    break;

  default:
    t = CONVERT_INTERNAL_ERROR;
    assert(false);
    break;
  }

  return t;
}
Ejemplo n.º 4
0
static PyObject* bzpy_autoinvalidate(PyObject *self, PyObject *args)
{
	PyObject *newai = Py_None;
	if(!PyArg_ParseTuple(args, "|O", &newai)) return NULL;
	PyObject *ai;

	ai = convert_bool(get_auto_invalidate(self));

	if(newai == Py_None)
	{
		// get
	} else
	{
		// set
		set_auto_invalidate(self, PyObject_IsTrue(newai));
	}

	return ai;
}
Ejemplo n.º 5
0
static PyObject* bzpy_togglemark(PyObject *self, PyObject *args)
{
	CBZView *view = cbzsv->m_pView;
	LONGLONG off = LONGLONG_MIN;
	if(!PyArg_ParseTuple(args, "|L", &off)) return NULL;

	if(off == LONGLONG_MIN)
	{
		off = view->m_dwCaret;
	}

	CBZDoc *doc = view->GetDocument();
	convert_minus_index(off, doc->GetDocSize());

	// set
	BOOL org = doc->CheckMark(off);

	doc->SetMark(off); // toggle.

	auto_invalidate(self);

	return convert_bool(org); // おまけ; valかPy_Noneもあり
}
Ejemplo n.º 6
0
static PyObject* bzpy_filemapping(PyObject *self, PyObject *args)
{
	if(!PyArg_ParseTuple(args, "")) return NULL;

	return convert_bool(cbzsv->m_pView->GetDocument()->IsFileMapping());
}
Ejemplo n.º 7
0
IMPLEMENT_HCONVERT_QVARIANT(bool)
{
    return QVariant(convert_bool(val,hr));
}