gint qof_instance_compare_version (gconstpointer inst1, gconstpointer inst2) { g_return_val_if_fail(QOF_IS_INSTANCE(inst1), 1); g_return_val_if_fail(QOF_IS_INSTANCE(inst2), -1); return GET_PRIVATE(inst2)->version - GET_PRIVATE(inst1)->version; }
void qof_instance_copy_version_check (gpointer to, gconstpointer from) { g_return_if_fail(QOF_IS_INSTANCE(to)); g_return_if_fail(QOF_IS_INSTANCE(from)); GET_PRIVATE(to)->version_check = GET_PRIVATE(from)->version_check; }
void qof_instance_gemini (QofInstance *to, const QofInstance *from) { QofInstancePrivate *from_priv, *to_priv, *fb_priv, *tb_priv; time_t now; g_return_if_fail(QOF_IS_INSTANCE(to)); g_return_if_fail(QOF_IS_INSTANCE(from)); from_priv = GET_PRIVATE(from); to_priv = GET_PRIVATE(to); fb_priv = GET_PRIVATE(from_priv->book); tb_priv = GET_PRIVATE(to_priv->book); /* Books must differ for a gemini to be meaningful */ if (from_priv->book == to_priv->book) return; now = time(0); /* Make a note of where the copy came from */ gnc_kvp_bag_add (to->kvp_data, "gemini", now, "inst_guid", &from_priv->guid, "book_guid", &fb_priv->guid, NULL); gnc_kvp_bag_add (from->kvp_data, "gemini", now, "inst_guid", &to_priv->guid, "book_guid", &tb_priv->guid, NULL); to_priv->dirty = TRUE; }
void qof_instance_copy_book (gpointer ptr1, gconstpointer ptr2) { g_return_if_fail(QOF_IS_INSTANCE(ptr1)); g_return_if_fail(QOF_IS_INSTANCE(ptr2)); GET_PRIVATE(ptr1)->book = GET_PRIVATE(ptr2)->book; }
void qof_instance_copy_guid (gpointer to, gconstpointer from) { g_return_if_fail(QOF_IS_INSTANCE(to)); g_return_if_fail(QOF_IS_INSTANCE(from)); GET_PRIVATE(to)->guid = GET_PRIVATE(from)->guid; }
gboolean qof_instance_books_equal (gconstpointer ptr1, gconstpointer ptr2) { const QofInstancePrivate *priv1, *priv2; g_return_val_if_fail(QOF_IS_INSTANCE(ptr1), FALSE); g_return_val_if_fail(QOF_IS_INSTANCE(ptr2), FALSE); priv1 = GET_PRIVATE(ptr1); priv2 = GET_PRIVATE(ptr2); return (priv1->book == priv2->book); }
gint qof_instance_guid_compare(gconstpointer ptr1, gconstpointer ptr2) { const QofInstancePrivate *priv1, *priv2; g_return_val_if_fail(QOF_IS_INSTANCE(ptr1), -1); g_return_val_if_fail(QOF_IS_INSTANCE(ptr2), 1); priv1 = GET_PRIVATE(ptr1); priv2 = GET_PRIVATE(ptr2); return guid_compare(&priv1->guid, &priv2->guid); }
QofCollection * qof_instance_get_collection (gconstpointer ptr) { g_return_val_if_fail(QOF_IS_INSTANCE(ptr), NULL); return GET_PRIVATE(ptr)->collection; }
QofBook * qof_instance_get_book (gconstpointer inst) { if (!inst) return NULL; g_return_val_if_fail(QOF_IS_INSTANCE(inst), NULL); return GET_PRIVATE(inst)->book; }
void qof_instance_set_idata(gpointer inst, guint32 idata) { if (!inst) { return; } g_return_if_fail(QOF_IS_INSTANCE(inst)); GET_PRIVATE(inst)->idata = idata; }
static void qof_instance_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { QofInstance *inst; QofInstancePrivate *priv; g_return_if_fail(QOF_IS_INSTANCE(object)); inst = QOF_INSTANCE(object); priv = GET_PRIVATE(inst); switch (prop_id) { case PROP_GUID: g_value_set_boxed(value, &priv->guid); break; case PROP_COLLECTION: g_value_set_pointer(value, priv->collection); break; case PROP_BOOK: g_value_set_object(value, priv->book); break; case PROP_KVP_DATA: g_value_set_pointer(value, inst->kvp_data); break; case PROP_LAST_UPDATE: g_value_set_pointer(value, &priv->last_update); break; case PROP_EDITLEVEL: g_value_set_int(value, priv->editlevel); break; case PROP_DESTROYING: g_value_set_boolean(value, priv->do_free); break; case PROP_DIRTY: g_value_set_boolean(value, qof_instance_get_dirty(inst)); break; case PROP_INFANT: g_value_set_boolean(value, priv->infant); break; case PROP_VERSION: g_value_set_int(value, priv->version); break; case PROP_VERSION_CHECK: g_value_set_uint(value, priv->version_check); break; case PROP_IDATA: g_value_set_uint(value, priv->idata); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } }
guint32 qof_instance_get_idata (gconstpointer inst) { if (!inst) { return 0; } g_return_val_if_fail(QOF_IS_INSTANCE(inst), 0); return GET_PRIVATE(inst)->idata; }
/* g_object_set/get wrappers */ void qof_instance_get (const QofInstance *inst, const gchar *first_prop, ...) { va_list ap; g_return_if_fail (QOF_IS_INSTANCE (inst)); va_start (ap, first_prop); g_object_get_valist (G_OBJECT (inst), first_prop, ap); va_end (ap); }
const GncGUID * qof_instance_get_guid (gconstpointer inst) { QofInstancePrivate *priv; if (!inst) return NULL; g_return_val_if_fail(QOF_IS_INSTANCE(inst), guid_null()); priv = GET_PRIVATE(inst); return &(priv->guid); }
void qof_instance_increment_version (gpointer inst, guint32 new_check) { QofInstancePrivate *priv; g_return_if_fail(QOF_IS_INSTANCE(inst)); priv = GET_PRIVATE(inst); priv->version++; priv->version_check = new_check; }
static void qof_instance_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { QofInstance *inst; QofInstancePrivate *priv; Timespec *ts; g_return_if_fail(QOF_IS_INSTANCE(object)); inst = QOF_INSTANCE(object); priv = GET_PRIVATE(inst); switch (prop_id) { case PROP_GUID: qof_instance_set_guid(inst, g_value_get_boxed(value)); break; case PROP_COLLECTION: qof_instance_set_collection(inst, g_value_get_pointer(value)); break; case PROP_BOOK: qof_instance_set_book(inst, g_value_get_object(value)); break; case PROP_KVP_DATA: qof_instance_set_slots(inst, g_value_get_pointer(value)); break; case PROP_LAST_UPDATE: ts = g_value_get_pointer(value); qof_instance_set_last_update(inst, *ts); break; case PROP_DESTROYING: qof_instance_set_destroying(inst, g_value_get_boolean(value)); break; case PROP_DIRTY: qof_instance_set_dirty(inst); break; case PROP_VERSION: qof_instance_set_version(inst, g_value_get_int(value)); break; case PROP_VERSION_CHECK: qof_instance_set_version_check(inst, g_value_get_uint(value)); break; case PROP_IDATA: qof_instance_set_idata(inst, g_value_get_uint(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } }
void qof_instance_set (QofInstance *inst, const gchar *first_prop, ...) { va_list ap; QofInstancePrivate *priv = GET_PRIVATE(inst); g_return_if_fail (QOF_IS_INSTANCE (inst)); qof_instance_set_dirty (inst); va_start (ap, first_prop); g_object_set_valist (G_OBJECT (inst), first_prop, ap); va_end (ap); }
static gpointer mock_object_create( QofBook *book ) { QofInstance *inst = NULL; inst = g_object_new(QOF_TYPE_INSTANCE, NULL); g_assert( inst ); g_assert( QOF_IS_INSTANCE( inst ) ); g_assert( book ); g_assert( book == object_create_struct.book ); object_create_struct.is_called = TRUE; object_create_struct.inst = inst; return inst; }
void qof_instance_set_guid (gpointer ptr, const GncGUID *guid) { QofInstancePrivate *priv; QofInstance *inst; QofCollection *col; g_return_if_fail(QOF_IS_INSTANCE(ptr)); inst = QOF_INSTANCE(ptr); priv = GET_PRIVATE(inst); if (guid_equal (guid, &priv->guid)) return; col = priv->collection; qof_collection_remove_entity(inst); priv->guid = *guid; qof_collection_insert_entity(col, inst); }
void qof_instance_init_data (QofInstance *inst, QofIdType type, QofBook *book) { QofInstancePrivate *priv; QofCollection *col; QofIdType col_type; g_return_if_fail(QOF_IS_INSTANCE(inst)); priv = GET_PRIVATE(inst); g_return_if_fail(!priv->book); priv->book = book; col = qof_book_get_collection (book, type); g_return_if_fail(col != NULL); /* XXX We passed redundant info to this routine ... but I think that's * OK, it might eliminate programming errors. */ col_type = qof_collection_get_type(col); if (safe_strcmp(col_type, type)) { PERR ("attempt to insert \"%s\" into \"%s\"", type, col_type); return; } priv = GET_PRIVATE(inst); inst->e_type = CACHE_INSERT (type); do { guid_new(&priv->guid); if (NULL == qof_collection_lookup_entity (col, &priv->guid)) break; PWARN("duplicate id created, trying again"); } while (1); priv->collection = col; qof_collection_insert_entity (col, inst); }
static void test_qof_object_foreach_sorted( Fixture *fixture, gconstpointer pData ) { int i; gint32 list_length = g_test_rand_int_range( 0, 5 ); gint user_data; QofBook *book = NULL; QofCollection *col = NULL; foreach_for_sorted_struct.instances = NULL; /* setup */ book = qof_book_new(); g_assert( book ); g_assert_cmpint( g_list_length( get_object_modules() ), == , 0 ); qof_object_register( fixture->qofobject ); g_assert_cmpint( g_list_length( get_object_modules() ), == , 1 ); fixture->qofobject->foreach = mock_foreach_for_sorted; /* init instances */ col = qof_book_get_collection( book, fixture->qofobject->e_type ); for (i = 0; i < list_length; i++ ) { QofInstance * inst = g_object_new( QOF_TYPE_INSTANCE, NULL ); g_assert( QOF_IS_INSTANCE( inst ) ); foreach_for_sorted_struct.instances = g_list_append( foreach_for_sorted_struct.instances, inst ); qof_collection_insert_entity( col, inst ); } g_assert_cmpint( list_length, == , g_list_length( foreach_for_sorted_struct.instances ) ); foreach_for_sorted_struct.call_count = 0; foreach_for_sorted_struct.user_data = &user_data; qof_object_foreach_sorted( fixture->qofobject->e_type, book, mock_instance_foreach_cb_for_sorted, ( gpointer ) &user_data ); g_assert_cmpint( list_length, == , foreach_for_sorted_struct.call_count ); qof_book_destroy( book ); g_list_free( foreach_for_sorted_struct.instances ); }
gboolean qof_instance_get_dirty_flag (gconstpointer ptr) { g_return_val_if_fail(QOF_IS_INSTANCE(ptr), FALSE); return GET_PRIVATE(ptr)->dirty; }
void qof_instance_set_version_check (gpointer inst, guint32 value) { g_return_if_fail(QOF_IS_INSTANCE(inst)); GET_PRIVATE(inst)->version_check = value; }
guint32 qof_instance_get_version_check (gconstpointer inst) { g_return_val_if_fail(QOF_IS_INSTANCE(inst), 0); return GET_PRIVATE(inst)->version_check; }
void qof_instance_set_version (gpointer inst, gint32 vers) { g_return_if_fail(QOF_IS_INSTANCE(inst)); GET_PRIVATE(inst)->version = vers; }
gboolean qof_instance_check_edit(const QofInstance *inst) { g_return_val_if_fail(QOF_IS_INSTANCE(inst), FALSE); return (GET_PRIVATE(inst)->editlevel > 0); }
gboolean qof_instance_get_infant(const QofInstance *inst) { g_return_val_if_fail(QOF_IS_INSTANCE(inst), FALSE); return GET_PRIVATE(inst)->infant; }
gboolean qof_instance_get_destroying (gconstpointer ptr) { g_return_val_if_fail(QOF_IS_INSTANCE(ptr), FALSE); return GET_PRIVATE(ptr)->do_free; }
void qof_instance_set_destroying (gpointer ptr, gboolean value) { g_return_if_fail(QOF_IS_INSTANCE(ptr)); GET_PRIVATE(ptr)->do_free = value; }
void qof_instance_set_dirty_flag (gconstpointer inst, gboolean flag) { g_return_if_fail(QOF_IS_INSTANCE(inst)); GET_PRIVATE(inst)->dirty = flag; }