// midgard_query_constraint static PHP_METHOD(midgard_query_constraint, __construct) { char *operator = NULL; int operator_len = 0; zval *z_property = NULL; zval *z_holder = NULL; zval *z_storage = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "OsO|O", &z_property, php_midgard_query_property_class, &operator, &operator_len, &z_holder, php_midgard_query_holder_class, &z_storage, php_midgard_query_storage_class ) == FAILURE ) { return; } MidgardQueryProperty *property = MIDGARD_QUERY_PROPERTY(__php_gobject_ptr(z_property)); MidgardQueryHolder *holder = MIDGARD_QUERY_HOLDER(__php_gobject_ptr(z_holder)); MidgardQueryStorage *storage = NULL; if (z_storage) { storage = MIDGARD_QUERY_STORAGE(__php_gobject_ptr(z_storage)); } MidgardQueryConstraint *constraint = midgard_query_constraint_new(property, operator, holder, storage); if (!constraint) { zend_throw_exception_ex(ce_midgard_error_exception, 0 TSRMLS_CC, "Failed to create constraint"); return; } MGD_PHP_SET_GOBJECT(getThis(), constraint); }
static void __midgard_query_storage_finalize (GObject *object) { MidgardQueryStorage *self = MIDGARD_QUERY_STORAGE (object); g_free (self->priv->table_alias); self->priv->table_alias = NULL; g_free (self->priv); self->priv = NULL; __parent_class->finalize (object); }
/* Validable iface */ static void _midgard_query_storage_validable_iface_validate (MidgardValidable *iface, GError **error) { g_return_if_fail (iface != NULL); MidgardQueryStorage *self = MIDGARD_QUERY_STORAGE (iface); self->priv->is_valid = FALSE; if (!self->priv->classname) { g_set_error (error, MIDGARD_VALIDATION_ERROR, MIDGARD_VALIDATION_ERROR_VALUE_INVALID, "No class associated with storage"); return; } MidgardDBObjectClass *dbklass = g_type_class_peek (g_type_from_name (self->priv->classname)); if (!dbklass || (dbklass && !MIDGARD_IS_DBOBJECT_CLASS (dbklass))) { g_set_error (error, MIDGARD_VALIDATION_ERROR, MIDGARD_VALIDATION_ERROR_TYPE_INVALID, "Storage associated with class which is not DBObject derived."); return; } MIDGARD_QUERY_STORAGE (self)->priv->is_valid = TRUE; return; }
static PHP_METHOD(midgard_query_constraint, set_storage) { zval *z_storage = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &z_storage, php_midgard_query_storage_class) == FAILURE) { return; } MidgardQueryConstraint *constraint = MIDGARD_QUERY_CONSTRAINT(__php_gobject_ptr(getThis())); MidgardQueryStorage *storage = MIDGARD_QUERY_STORAGE(__php_gobject_ptr(z_storage)); zend_bool result = midgard_query_constraint_set_storage(constraint, storage); RETURN_BOOL(result); }
gboolean _midgard_query_storage_validable_iface_is_valid (MidgardValidable *self) { g_return_val_if_fail (self != NULL, FALSE); return MIDGARD_QUERY_STORAGE (self)->priv->is_valid; }