diff --git a/src/engine/gncOwner.c b/src/engine/gncOwner.c index 3dddf05237..f21bf0d7c1 100644 --- a/src/engine/gncOwner.c +++ b/src/engine/gncOwner.c @@ -61,6 +61,101 @@ void gncOwnerFree (GncOwner *owner) g_free (owner); } +void gncOwnerBeginEdit (GncOwner *owner) +{ + if (!owner) return; + switch (owner->type) + { + case GNC_OWNER_NONE : + case GNC_OWNER_UNDEFINED : + break; + case GNC_OWNER_CUSTOMER : + { + gncCustomerBeginEdit(owner->owner.customer); + break; + } + case GNC_OWNER_JOB : + { + gncJobBeginEdit(owner->owner.job); + break; + } + case GNC_OWNER_VENDOR : + { + gncVendorBeginEdit(owner->owner.vendor); + break; + } + case GNC_OWNER_EMPLOYEE : + { + gncEmployeeBeginEdit(owner->owner.employee); + break; + } + } +} + + +void gncOwnerCommitEdit (GncOwner *owner) +{ + if (!owner) return; + switch (owner->type) + { + case GNC_OWNER_NONE : + case GNC_OWNER_UNDEFINED : + break; + case GNC_OWNER_CUSTOMER : + { + gncCustomerCommitEdit(owner->owner.customer); + break; + } + case GNC_OWNER_JOB : + { + gncJobCommitEdit(owner->owner.job); + break; + } + case GNC_OWNER_VENDOR : + { + gncVendorCommitEdit(owner->owner.vendor); + break; + } + case GNC_OWNER_EMPLOYEE : + { + gncEmployeeCommitEdit(owner->owner.employee); + break; + } + } +} + + +void gncOwnerDestroy (GncOwner *owner) +{ + if (!owner) return; + switch (owner->type) + { + case GNC_OWNER_NONE : + case GNC_OWNER_UNDEFINED : + break; + case GNC_OWNER_CUSTOMER : + { + gncCustomerDestroy(owner->owner.customer); + break; + } + case GNC_OWNER_JOB : + { + gncJobDestroy(owner->owner.job); + break; + } + case GNC_OWNER_VENDOR : + { + gncVendorDestroy(owner->owner.vendor); + break; + } + case GNC_OWNER_EMPLOYEE : + { + gncEmployeeDestroy(owner->owner.employee); + break; + } + } +} + void gncOwnerInitUndefined (GncOwner *owner, gpointer obj) { if (!owner) return; diff --git a/src/engine/gncOwner.h b/src/engine/gncOwner.h index 3093c147b5..058653f4fb 100644 --- a/src/engine/gncOwner.h +++ b/src/engine/gncOwner.h @@ -179,6 +179,16 @@ KvpFrame* gncOwnerGetSlots(GncOwner* owner); GncOwner * gncOwnerNew (void); void gncOwnerFree (GncOwner *owner); + +/** + * These are convenience wrappers around gnc{Vender,Customer,Job,Employee}* + * functions. This allows you to begin edit, destroy commit edit an owner + * without knowing its type. + */ +void gncOwnerBeginEdit (GncOwner *owner); +void gncOwnerCommitEdit (GncOwner *owner); +void gncOwnerDestroy (GncOwner *owner); + #endif /* GNC_OWNER_H_ */ /** @} */ /** @} */