PyObject *py_ped_constraint_exact(PyObject *s, PyObject *args) { PyObject *in_geometry = NULL; PedGeometry *out_geometry = NULL; PedConstraint *constraint = NULL; _ped_Constraint *ret = NULL; if (!PyArg_ParseTuple(args, "O!", &_ped_Geometry_Type_obj, &in_geometry)) { return NULL; } out_geometry = _ped_Geometry2PedGeometry(in_geometry); if (out_geometry == NULL) { return NULL; } constraint = ped_constraint_exact(out_geometry); if (constraint) { ret = PedConstraint2_ped_Constraint(constraint); } else { PyErr_SetString(CreateException, "Could not create exact constraint"); return NULL; } ped_constraint_destroy(constraint); return (PyObject *) ret; }
PyObject *py_ped_constraint_any(PyObject *s, PyObject *args) { PyObject *in_device = NULL; PedDevice *out_device = NULL; PedConstraint *constraint = NULL; _ped_Constraint *ret = NULL; if (!PyArg_ParseTuple(args, "O!", &_ped_Device_Type_obj, &in_device)) { return NULL; } out_device = _ped_Device2PedDevice(in_device); if (out_device == NULL) { return NULL; } constraint = ped_constraint_any(out_device); if (constraint) { ret = PedConstraint2_ped_Constraint(constraint); } else { PyErr_SetString(CreateException, "Could not create new constraint"); return NULL; } ped_constraint_destroy(constraint); return (PyObject *) ret; }
/* XXX: Remove this function at some point in the future. The deprecation * warning tells people what they should be doing. */ PyObject *py_ped_constraint_duplicate(PyObject *s, PyObject *args) { PedConstraint *constraint = NULL, *dup_constraint = NULL; _ped_Constraint *ret = NULL; constraint = _ped_Constraint2PedConstraint(s); if (constraint == NULL) { return NULL; } if (PyErr_WarnEx(PyExc_DeprecationWarning, "use copy.deepcopy() to duplicate a _ped.Constraint", 1) == -1) { return NULL; } dup_constraint = ped_constraint_duplicate(constraint); ped_constraint_destroy(constraint); if (dup_constraint) { ret = PedConstraint2_ped_Constraint(dup_constraint); } else { PyErr_SetString(CreateException, "Could not duplicate constraint"); return NULL; } ped_constraint_destroy(dup_constraint); return (PyObject *) ret; }
PyObject *py_ped_constraint_new_from_max(PyObject *s, PyObject *args) { PyObject *in_max = NULL; PedGeometry *out_max = NULL; PedConstraint *constraint = NULL; _ped_Constraint *ret = NULL; if (!PyArg_ParseTuple(args, "O!", &_ped_Geometry_Type_obj, &in_max)) { return NULL; } out_max = _ped_Geometry2PedGeometry(in_max); if (out_max == NULL) { return NULL; } constraint = ped_constraint_new_from_max(out_max); if (constraint) { ret = PedConstraint2_ped_Constraint(constraint); } else { PyErr_SetString(CreateException, "Could not create new constraint from max"); return NULL; } ped_constraint_destroy(constraint); return (PyObject *) ret; }
PyObject *py_ped_device_get_optimal_aligned_constraint(PyObject *s, PyObject *args) { PedDevice *device = NULL; PedConstraint *constraint = NULL; _ped_Constraint *ret = NULL; device = _ped_Device2PedDevice(s); if (device == NULL) { return NULL; } constraint = ped_device_get_optimal_aligned_constraint(device); if (!constraint) { PyErr_SetString(CreateException, "Could not create constraint"); return NULL; } ret = PedConstraint2_ped_Constraint(constraint); ped_constraint_destroy(constraint); return (PyObject *) ret; }
/* 1:1 function mappings for constraint.h in libparted */ PyObject *py_ped_constraint_new_from_min_max(PyObject *s, PyObject *args) { PyObject *in_min = NULL, *in_max = NULL; PedGeometry *out_min = NULL, *out_max = NULL; PedConstraint *constraint = NULL; _ped_Constraint *ret = NULL; if (!PyArg_ParseTuple(args, "O!O!", &_ped_Geometry_Type_obj, &in_min, &_ped_Geometry_Type_obj, &in_max)) { return NULL; } out_min = _ped_Geometry2PedGeometry(in_min); if (out_min == NULL) { return NULL; } out_max = _ped_Geometry2PedGeometry(in_max); if (out_max == NULL) { return NULL; } /* ped_constraint_new_from_min_max will ASSERT if this isn't enforced. */ if (!ped_geometry_test_inside(out_max, out_min)) { PyErr_SetString(CreateException, "min geometry must be contained within max geometry"); return NULL; } constraint = ped_constraint_new_from_min_max(out_min, out_max); if (constraint) { ret = PedConstraint2_ped_Constraint(constraint); } else { PyErr_SetString(CreateException, "Could not create new constraint from min/max"); return NULL; } ped_constraint_destroy(constraint); return (PyObject *) ret; }
PyObject *py_ped_constraint_intersect(PyObject *s, PyObject *args) { PyObject *in_constraintB = NULL; PedConstraint *constraintA = NULL, *constraintB = NULL; PedConstraint *constraint = NULL; _ped_Constraint *ret = NULL; if (!PyArg_ParseTuple(args, "O!", &_ped_Constraint_Type_obj, &in_constraintB)) { return NULL; } constraintA = _ped_Constraint2PedConstraint(s); if (constraintA == NULL) { return NULL; } constraintB = _ped_Constraint2PedConstraint(in_constraintB); if (constraintB == NULL) { ped_constraint_destroy(constraintA); return NULL; } constraint = ped_constraint_intersect(constraintA, constraintB); ped_constraint_destroy(constraintA); ped_constraint_destroy(constraintB); if (constraint) { ret = PedConstraint2_ped_Constraint(constraint); } else { PyErr_SetString(PyExc_ArithmeticError, "Could not find constraint intersection"); return NULL; } ped_constraint_destroy(constraint); return (PyObject *) ret; }