Move edit level assert to persistent class set_property functions.

Checking at qof_instance_set was too broad.
Requires detecting persistent vs. run-time properties, which is accomplished by reordering the PROP enum and introducing a PROP_RUNTIME_0 separator value.

While at it, identify as comments the persistent properties which aren't yet properties.
This commit is contained in:
John Ralls 2013-11-10 13:28:29 -08:00
parent 96106fb8fa
commit 4d511218a5
19 changed files with 245 additions and 145 deletions

View File

@ -61,45 +61,48 @@ enum
enum
{
PROP_0,
PROP_NAME,
PROP_FULL_NAME,
PROP_CODE,
PROP_DESCRIPTION,
PROP_COLOR,
PROP_NOTES,
PROP_TYPE,
PROP_NAME, /* Table */
PROP_FULL_NAME, /* Constructed */
PROP_CODE, /* Table */
PROP_DESCRIPTION, /* Table */
PROP_COLOR, /* KVP */
PROP_NOTES, /* KVP */
PROP_TYPE, /* Table */
PROP_COMMODITY,
PROP_COMMODITY_SCU,
PROP_NON_STD_SCU,
PROP_SORT_DIRTY,
PROP_BALANCE_DIRTY,
PROP_START_BALANCE,
PROP_START_CLEARED_BALANCE,
PROP_START_RECONCILED_BALANCE,
PROP_END_BALANCE,
PROP_END_CLEARED_BALANCE,
PROP_END_RECONCILED_BALANCE,
// PROP_PARENT, /* Table, Not a property */
PROP_COMMODITY, /* Table */
PROP_COMMODITY_SCU, /* Table */
PROP_NON_STD_SCU, /* Table */
PROP_END_BALANCE, /* Constructed */
PROP_END_CLEARED_BALANCE, /* Constructed */
PROP_END_RECONCILED_BALANCE, /* Constructed */
PROP_POLICY,
PROP_MARK,
PROP_TAX_RELATED,
PROP_TAX_CODE,
PROP_TAX_SOURCE,
PROP_TAX_COPY_NUMBER,
PROP_TAX_RELATED, /* KVP */
PROP_TAX_CODE, /* KVP */
PROP_TAX_SOURCE, /* KVP */
PROP_TAX_COPY_NUMBER, /* KVP */
PROP_HIDDEN,
PROP_PLACEHOLDER,
PROP_FILTER,
PROP_SORT_ORDER,
PROP_HIDDEN, /* Table slot exists, but in KVP in memory & xml */
PROP_PLACEHOLDER, /* Table slot exists, but in KVP in memory & xml */
PROP_FILTER, /* KVP */
PROP_SORT_ORDER, /* KVP */
PROP_LOT_NEXT_ID,
PROP_ONLINE_ACCOUNT,
PROP_OFX_INCOME_ACCOUNT,
PROP_AB_ACCOUNT_ID,
PROP_AB_ACCOUNT_UID,
PROP_AB_BANK_CODE,
PROP_AB_TRANS_RETRIEVAL,
PROP_LOT_NEXT_ID, /* KVP */
PROP_ONLINE_ACCOUNT, /* KVP */
PROP_OFX_INCOME_ACCOUNT, /* KVP */
PROP_AB_ACCOUNT_ID, /* KVP */
PROP_AB_ACCOUNT_UID, /* KVP */
PROP_AB_BANK_CODE, /* KVP */
PROP_AB_TRANS_RETRIEVAL, /* KVP */
PROP_RUNTIME_0,
PROP_POLICY, /* Cached Value */
PROP_MARK, /* Runtime Value */
PROP_SORT_DIRTY, /* Runtime Value */
PROP_BALANCE_DIRTY, /* Runtime Value */
PROP_START_BALANCE, /* Runtime Value */
PROP_START_CLEARED_BALANCE, /* Runtime Value */
PROP_START_RECONCILED_BALANCE, /* Runtime Value */
};
#define GET_PRIVATE(o) \
@ -444,6 +447,8 @@ gnc_account_set_property (GObject *object,
g_return_if_fail(GNC_IS_ACCOUNT(object));
account = GNC_ACCOUNT(object);
if (prop_id < PROP_RUNTIME_0)
g_assert (qof_instance_get_editlevel(account));
switch (prop_id)
{

View File

@ -44,19 +44,19 @@
enum
{
PROP_0,
PROP_NAME,
PROP_ENABLED,
PROP_NUM_OCCURANCE,
PROP_REM_OCCURANCE,
PROP_AUTO_CREATE,
PROP_AUTO_CREATE_NOTIFY,
PROP_ADVANCE_CREATION_DAYS,
PROP_ADVANCE_REMINDER_DAYS,
PROP_START_DATE,
PROP_END_DATE,
PROP_LAST_OCCURANCE_DATE,
PROP_INSTANCE_COUNT,
PROP_TEMPLATE_ACCOUNT
PROP_NAME, /* Table */
PROP_ENABLED, /* Table */
PROP_START_DATE, /* Table */
PROP_END_DATE, /* Table */
PROP_LAST_OCCURANCE_DATE, /* Table */
PROP_NUM_OCCURANCE, /* Table */
PROP_REM_OCCURANCE, /* Table */
PROP_AUTO_CREATE, /* Table */
PROP_AUTO_CREATE_NOTIFY, /* Table */
PROP_ADVANCE_CREATION_DAYS, /* Table */
PROP_ADVANCE_REMINDER_DAYS, /* Table */
PROP_INSTANCE_COUNT, /* Table */
PROP_TEMPLATE_ACCOUNT /* Table */
};
/* GObject initialization */
@ -174,6 +174,8 @@ gnc_schedxaction_set_property (GObject *object,
g_return_if_fail(GNC_IS_SCHEDXACTION(object));
sx = GNC_SCHEDXACTION(object);
g_assert (qof_instance_get_editlevel(sx));
switch (prop_id)
{
case PROP_NAME:

View File

@ -73,21 +73,24 @@ static QofLogModule log_module = GNC_MOD_ENGINE;
enum
{
PROP_0,
PROP_ACTION,
PROP_MEMO,
PROP_VALUE,
PROP_AMOUNT,
PROP_RECONCILE_DATE,
PROP_TX,
PROP_ACCOUNT,
PROP_SX_ACCOUNT,
PROP_SX_CREDIT_FORMULA,
PROP_SX_CREDIT_NUMERIC,
PROP_SX_DEBIT_FORMULA,
PROP_SX_DEBIT_NUMERIC,
PROP_SX_SHARES,
PROP_LOT,
PROP_ONLINE_ACCOUNT,
PROP_TX, /* Table */
PROP_ACCOUNT, /* Table */
PROP_MEMO, /* Table */
PROP_ACTION, /* Table */
// PROP_RECONCILE_STATE, /* Table */
PROP_RECONCILE_DATE, /* Table */
PROP_VALUE, /* Table, in 2 fields */
PROP_SX_ACCOUNT, /* KVP */
PROP_SX_CREDIT_FORMULA, /* KVP */
PROP_SX_CREDIT_NUMERIC, /* KVP */
PROP_SX_DEBIT_FORMULA, /* KVP */
PROP_SX_DEBIT_NUMERIC, /* KVP */
PROP_SX_SHARES, /* KVP */
PROP_LOT, /* KVP */
PROP_ONLINE_ACCOUNT, /* KVP */
PROP_RUNTIME_0,
PROP_AMOUNT, /* Runtime */
};
/* GObject Initialization */
@ -221,6 +224,9 @@ gnc_split_set_property(GObject *object,
g_return_if_fail(GNC_IS_SPLIT(object));
split = GNC_SPLIT(object);
if (prop_id < PROP_RUNTIME_0 && split->parent != NULL)
g_assert (qof_instance_get_editlevel(split->parent));
switch (prop_id)
{
case PROP_ACTION:

View File

@ -193,14 +193,14 @@ static QofLogModule log_module = GNC_MOD_ENGINE;
enum
{
PROP_0,
PROP_NUM,
PROP_DESCRIPTION,
PROP_CURRENCY,
PROP_POST_DATE,
PROP_ENTER_DATE,
PROP_INVOICE,
PROP_SX_TXN,
PROP_ONLINE_ACCOUNT,
PROP_CURRENCY, /* Table */
PROP_NUM, /* Table */
PROP_POST_DATE, /* Table */
PROP_ENTER_DATE, /* Table */
PROP_DESCRIPTION, /* Table */
PROP_INVOICE, /* KVP */
PROP_SX_TXN, /* KVP */
PROP_ONLINE_ACCOUNT,/* KVP */
};
void
@ -361,6 +361,8 @@ gnc_transaction_set_property(GObject* object,
g_return_if_fail(GNC_IS_TRANSACTION(object));
tx = GNC_TRANSACTION(object);
g_assert (qof_instance_get_editlevel(tx));
switch (prop_id)
{
case PROP_NUM:

View File

@ -42,10 +42,11 @@ static QofLogModule log_module = GNC_MOD_ENGINE;
enum
{
PROP_0,
PROP_NAME,
PROP_DESCRIPTION,
PROP_NUM_PERIODS,
PROP_RECURRENCE,
PROP_NAME, /* Table */
PROP_DESCRIPTION, /* Table */
PROP_NUM_PERIODS, /* Table */
PROP_RUNTIME_0,
PROP_RECURRENCE, /* Cached pointer; Recurrence table holds budget guid */
};
struct budget_s
@ -157,6 +158,9 @@ gnc_budget_set_property( GObject* object,
g_return_if_fail(GNC_IS_BUDGET(object));
budget = GNC_BUDGET(object);
if (prop_id < PROP_RUNTIME_0)
g_assert (qof_instance_get_editlevel(budget));
switch ( prop_id )
{
case PROP_NAME:

View File

@ -48,16 +48,16 @@ static QofLogModule log_module = GNC_MOD_COMMODITY;
enum
{
PROP_0,
PROP_NAMESPACE,
PROP_FULL_NAME,
PROP_MNEMONIC,
PROP_PRINTNAME,
PROP_CUSIP,
PROP_FRACTION,
PROP_UNIQUE_NAME,
PROP_QUOTE_FLAG,
PROP_QUOTE_SOURCE,
PROP_QUOTE_TZ,
PROP_NAMESPACE, /* Table */
PROP_FULL_NAME, /* Table */
PROP_MNEMONIC, /* Table */
PROP_PRINTNAME, /* Constructed */
PROP_CUSIP, /* Table */
PROP_FRACTION, /* Table */
PROP_UNIQUE_NAME, /* Constructed */
PROP_QUOTE_FLAG, /* Table */
PROP_QUOTE_SOURCE, /* Table */
PROP_QUOTE_TZ, /* Table */
};
struct gnc_commodity_s
@ -695,6 +695,7 @@ gnc_commodity_set_property (GObject *object,
g_return_if_fail(GNC_IS_COMMODITY(object));
commodity = GNC_COMMODITY(object);
g_assert (qof_instance_get_editlevel(commodity));
switch (prop_id)
{

View File

@ -64,12 +64,15 @@ struct gnc_lot_s
enum
{
PROP_0,
PROP_IS_CLOSED,
PROP_MARKER,
// PROP_ACCOUNT, /* Table */
PROP_IS_CLOSED, /* Table */
PROP_INVOICE,
PROP_OWNER_TYPE,
PROP_OWNER_GUID,
PROP_INVOICE, /* KVP */
PROP_OWNER_TYPE, /* KVP */
PROP_OWNER_GUID, /* KVP */
PROP_RUNTIME_0,
PROP_MARKER, /* Runtime */
};
typedef struct LotPrivate
@ -170,7 +173,10 @@ gnc_lot_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec*
}
static void
gnc_lot_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
gnc_lot_set_property (GObject* object,
guint prop_id,
const GValue* value,
GParamSpec* pspec)
{
GNCLot* lot;
LotPrivate* priv;
@ -180,6 +186,9 @@ gnc_lot_set_property(GObject* object, guint prop_id, const GValue* value, GParam
g_return_if_fail(GNC_IS_LOT(object));
lot = GNC_LOT(object);
if (prop_id < PROP_RUNTIME_0)
g_assert (qof_instance_get_editlevel(lot));
priv = GET_PRIVATE(lot);
switch (prop_id)
{

View File

@ -41,12 +41,12 @@ static GNCPrice *lookup_nearest_in_time(GNCPriceDB *db, const gnc_commodity *c,
enum
{
PROP_0,
PROP_COMMODITY,
PROP_CURRENCY,
PROP_DATE,
PROP_SOURCE,
PROP_TYPE,
PROP_VALUE
PROP_COMMODITY, /* Table */
PROP_CURRENCY, /* Table */
PROP_DATE, /* Table */
PROP_SOURCE, /* Table */
PROP_TYPE, /* Table */
PROP_VALUE, /* Table, 2 fields (numeric) */
};
/* GObject Initialization */
@ -123,6 +123,8 @@ gnc_price_set_property(GObject* object, guint prop_id, const GValue* value, GPar
g_return_if_fail(GNC_IS_PRICE(object));
price = GNC_PRICE(object);
g_assert (qof_instance_get_editlevel(price));
switch (prop_id)
{
case PROP_SOURCE:

View File

@ -193,6 +193,8 @@ gnc_billterm_set_property (GObject *object,
g_return_if_fail(GNC_IS_BILLTERM(object));
bt = GNC_BILLTERM(object);
g_assert (qof_instance_get_editlevel(bt));
switch (prop_id)
{
case PROP_NAME:

View File

@ -169,6 +169,8 @@ gnc_customer_set_property (GObject *object,
g_return_if_fail(GNC_IS_CUSTOMER(object));
cust = GNC_CUSTOMER(object);
g_assert (qof_instance_get_editlevel(cust));
switch (prop_id)
{
case PROP_NAME:

View File

@ -80,19 +80,19 @@ void mark_employee (GncEmployee *employee)
enum
{
PROP_0,
PROP_USERNAME,
PROP_ID,
PROP_ACTIVE,
PROP_LANGUAGE,
PROP_CURRENCY,
PROP_ACL,
PROP_ADDRESS,
PROP_WORKDAY,
PROP_RATE,
PROP_CCARD,
PROP_PDF_DIRNAME,
PROP_LAST_POSTED,
PROP_PAYMENT_LAST_ACCT,
PROP_USERNAME, /* Table */
PROP_ID, /* Table */
PROP_LANGUAGE, /* Table */
PROP_ACL, /* Table */
PROP_ACTIVE, /* Table */
PROP_CURRENCY, /* Table */
PROP_CCARD, /* Table */
PROP_WORKDAY, /* Table (numeric) */
PROP_RATE, /* Table (numeric) */
PROP_ADDRESS, /* Table, 8 fields */
PROP_PDF_DIRNAME, /* KVP */
PROP_LAST_POSTED, /* KVP */
PROP_PAYMENT_LAST_ACCT, /* KVP */
};
/* GObject Initialization */
@ -195,6 +195,8 @@ gnc_employee_set_property (GObject *object,
g_return_if_fail(GNC_IS_EMPLOYEE(object));
emp = GNC_EMPLOYEE(object);
g_assert (qof_instance_get_editlevel(emp));
switch (prop_id)
{
case PROP_USERNAME:

View File

@ -211,7 +211,32 @@ void mark_entry (GncEntry *entry)
enum
{
PROP_0,
PROP_DESCRIPTION
// PROP_DATE, /* Table */
// PROP_DATE_ENTERED, /* Table */
PROP_DESCRIPTION, /* Table */
// PROP_ACTION, /* Table */
// PROP_NOTES, /* Table */
// PROP_QUANTITY, /* Table (numeric) */
// PROP_I_ACCT, /* Table */
// PROP_I_PRICE, /* Table (numeric) */
// PROP_I_DISCOUNT, /* Table (numeric) */
// PROP_INVOICE, /* Table */
// PROP_I_DISC_TYPE, /* Table */
// PROP_I_DISC_HOW, /* Table */
// PROP_I_TAXABLE, /* Table */
// PROP_I_TAX_INCL, /* Table */
// PROP_I_TAXTABLE, /* Table */
// PROP_B_ACCT, /* Table */
// PROP_B_PRICE, /* Table (numeric) */
// PROP_BILL, /* Table */
// PROP_B_TAXTABLE_1, /* Table */
// PROP_B_TAX_INCL, /* Table */
// PROP_B_TAXTABLE, /* Table */
// PROP_B_PAYTYPE, /* Table */
// PROP_BILLABLE, /* Table */
// PROP_BILLTO_TYPE, /* Table */
// PROP_BILLTO, /* Table */
// PROP_ORDER, /* Table */
};
/* GObject Initialization */
@ -267,6 +292,8 @@ gnc_entry_set_property (GObject *object,
g_return_if_fail(GNC_IS_ENTRY(object));
entry = GNC_ENTRY(object);
g_assert (qof_instance_get_editlevel(entry));
switch (prop_id)
{
case PROP_DESCRIPTION:

View File

@ -112,7 +112,22 @@ QofBook * gncInvoiceGetBook(GncInvoice *x)
enum
{
PROP_0,
PROP_NOTES
// PROP_ID, /* Table */
// PROP_DATE_OPENED, /* Table */
// PROP_DATE_POSTED, /* Table */
PROP_NOTES, /* Table */
// PROP_ACTIVE, /* Table */
// PROP_CURRENCY, /* Table */
// PROP_OWNER_TYPE, /* Table */
// PROP_OWNER, /* Table */
// PROP_TERMS, /* Table */
// PROP_BILLING_ID, /* Table */
// PROP_POST_TXN, /* Table */
// PROP_POST_LOT, /* Table */
// PROP_POST_ACCOUNT, /* Table */
// PROP_BILLTO_TYPE, /* Table */
// PROP_BILLTO, /* Table */
// PROP_CHARGE_AMOUNT, /* Table, (numeric) */
};
/* GObject Initialization */
@ -168,6 +183,8 @@ gnc_invoice_set_property (GObject *object,
g_return_if_fail(GNC_IS_INVOICE(object));
inv = GNC_INVOICE(object);
g_assert (qof_instance_get_editlevel(inv));
switch (prop_id)
{
case PROP_NOTES:

View File

@ -71,8 +71,13 @@ void mark_job (GncJob *job)
enum
{
PROP_0,
PROP_NAME,
PROP_PDF_DIRNAME,
// PROP_ID, /* Table */
PROP_NAME, /* Table */
// PROP_REFERENCE, /* Table */
// PROP_ACTIVE, /* Table */
// PROP_OWNER_TYPE, /* Table */
// PROP_OWNER, /* Table */
PROP_PDF_DIRNAME, /* KVP */
};
/* GObject Initialization */
@ -134,6 +139,8 @@ gnc_job_set_property (GObject *object,
g_return_if_fail(GNC_IS_JOB(object));
job = GNC_JOB(object);
g_assert (qof_instance_get_editlevel(job));
switch (prop_id)
{
case PROP_NAME:

View File

@ -85,12 +85,14 @@ void mark_order (GncOrder *order)
enum
{
PROP_0,
PROP_ID,
PROP_NOTES,
PROP_ACTIVE,
PROP_DATE_OPENED,
PROP_DATE_CLOSED,
PROP_REFERENCE
PROP_ID, /* Table */
PROP_NOTES, /* Table */
PROP_REFERENCE, /* Table */
PROP_ACTIVE, /* Table */
PROP_DATE_OPENED, /* Table */
PROP_DATE_CLOSED, /* Table */
// PROP_OWNER_TYPE, /* Table */
// PROP_OWNER, /* Table */
};
/* GObject Initialization */
@ -161,6 +163,8 @@ gnc_order_set_property (GObject *object,
g_return_if_fail(GNC_IS_ORDER(object));
order = GNC_ORDER(object);
g_assert (qof_instance_get_editlevel(order));
switch (prop_id)
{
case PROP_ID:

View File

@ -208,9 +208,10 @@ gncTaxTableRemoveChild (GncTaxTable *table, const GncTaxTable *child)
enum
{
PROP_0,
PROP_NAME,
PROP_INVISIBLE,
PROP_REFCOUNT
PROP_NAME, /* Table */
PROP_INVISIBLE, /* Table */
PROP_REFCOUNT, /* Table */
// PROP_PARENT, /* Table */
};
/* GObject Initialization */
@ -272,6 +273,8 @@ gnc_taxtable_set_property (GObject *object,
g_return_if_fail(GNC_IS_TAXTABLE(object));
tt = GNC_TAXTABLE(object);
g_assert (qof_instance_get_editlevel(tt));
switch (prop_id)
{
case PROP_NAME:

View File

@ -89,20 +89,20 @@ void mark_vendor (GncVendor *vendor)
enum
{
PROP_0,
PROP_NAME,
PROP_ID,
PROP_NOTES,
PROP_CURRENCY,
PROP_ACTIVE,
PROP_TAXTABLE_OVERRIDE,
PROP_BILLTERMS,
PROP_TAXTABLE,
PROP_ADDRESS,
PROP_TAX_INCLUDED,
PROP_TAX_INCLUDED_STR,
PROP_PDF_DIRNAME,
PROP_LAST_POSTED,
PROP_PAYMENT_LAST_ACCT,
PROP_NAME, /* Table */
PROP_ID, /* Table */
PROP_NOTES, /* Table */
PROP_CURRENCY, /* Table */
PROP_ACTIVE, /* Table */
PROP_TAXTABLE_OVERRIDE, /* Table */
PROP_BILLTERMS, /* Table */
PROP_TAXTABLE, /* Table */
PROP_ADDRESS, /* Table, 8 fields */
PROP_TAX_INCLUDED, /* Table */
PROP_TAX_INCLUDED_STR, /* Alternate setter for PROP_TAX_INCLUDED */
PROP_PDF_DIRNAME, /* KVP */
PROP_LAST_POSTED, /* KVP */
PROP_PAYMENT_LAST_ACCT, /* KVP */
};
/* GObject Initialization */
@ -208,6 +208,8 @@ gnc_vendor_set_property (GObject *object,
g_return_if_fail(GNC_IS_VENDOR(object));
vendor = GNC_VENDOR(object);
g_assert (qof_instance_get_editlevel(vendor));
switch (prop_id)
{
case PROP_NAME:

View File

@ -55,13 +55,15 @@ static QofLogModule log_module = QOF_MOD_ENGINE;
enum
{
PROP_0,
PROP_OPT_TRADING_ACCOUNTS,
PROP_OPT_AUTO_READONLY_DAYS,
PROP_OPT_NUM_FIELD_SOURCE,
PROP_OPT_DEFAULT_BUDGET,
PROP_OPT_FY_END,
PROP_AB_TEMPLATES,
N_PROPERTIES
// PROP_ROOT_ACCOUNT, /* Table */
// PROP_ROOT_TEMPLATE, /* Table */
PROP_OPT_TRADING_ACCOUNTS, /* KVP */
PROP_OPT_AUTO_READONLY_DAYS,/* KVP */
PROP_OPT_NUM_FIELD_SOURCE, /* KVP */
PROP_OPT_DEFAULT_BUDGET, /* KVP */
PROP_OPT_FY_END, /* KVP */
PROP_AB_TEMPLATES, /* KVP */
N_PROPERTIES /* Just a counter */
};
QOF_GOBJECT_GET_TYPE(QofBook, qof_book, QOF_TYPE_INSTANCE, {});
@ -164,6 +166,8 @@ qof_book_set_property (GObject *object,
g_return_if_fail (QOF_IS_BOOK (object));
book = QOF_BOOK (object);
g_assert (qof_instance_get_editlevel(book));
switch (prop_id)
{
case PROP_OPT_TRADING_ACCOUNTS:

View File

@ -943,7 +943,6 @@ qof_instance_set (QofInstance *inst, const gchar *first_prop, ...)
QofInstancePrivate *priv = GET_PRIVATE(inst);
g_return_if_fail (QOF_IS_INSTANCE (inst));
g_assert (priv->editlevel > 0);
qof_instance_set_dirty (inst);
va_start (ap, first_prop);
g_object_set_valist (G_OBJECT (inst), first_prop, ap);