blob: 9f14baf849ba9abb689c730ca1a6f7db5000710c [file] [log] [blame]
############################################################# -*- c -*-
## generic include for XXX. Do not use directly.
##
## $Id$
########################################################################
@if $m2c_mark_boundary == 1@
/** START code generated by $RCSfile$ $Revision$ */
@end@
########################################################################
## {
/*
* check RowStatus dependencies
*/
if (rowreq_ctx->column_set_flags & COLUMN_$node.uc_FLAG) {
/*
* check for valid RowStatus transition (old, new)
* (Note: move transition check to $node_check_value
* to catch errors earlier)
*/
rc = check_rowstatus_transition( ${m2c_undo_item}$node,
${m2c_data_item}$node );
if (MFD_SUCCESS != rc)
return rc;
@if $m2c_table_row_creation == 1@
/*
* row creation requirements
*/
if (rowreq_ctx->rowreq_flags & MFD_ROW_CREATED) {
if (ROWSTATUS_DESTROY == ${m2c_data_item}$node) {
rowreq_ctx->rowreq_flags |= MFD_ROW_DELETED;
}
else if (ROWSTATUS_CREATEANDGO == ${m2c_data_item}$node) {
if ((rowreq_ctx->column_set_flags & $context.uc_REQUIRED_COLS)
!= $context.uc_REQUIRED_COLS) {
DEBUGMSGTL(("${context}",
"required columns missing (0x%0x != 0x%0x)\n",
rowreq_ctx->column_set_flags, $context.uc_REQUIRED_COLS));
return MFD_CANNOT_CREATE_NOW;
}
${m2c_data_item}$node = ROWSTATUS_ACTIVE;
}
} /* row creation */
else {
@end@
/*
* row change requirements
*/
/*
* don't allow a destroy if any other value was changed, since
* that might call data access routines with bad info.
*
* you may or may not require the row be notInService before it
* can be destroyed.
*/
if (ROWSTATUS_DESTROY == ${m2c_data_item}$node) {
@if $m2c_table_refcounts == 1@
if (0 != rowreq_ctx->ref_count) {
DEBUGMSGTL(("$context",
"can't delete row, %d references\n",
rowreq_ctx->ref_count));
return MFD_NOT_VALID_NOW;
}
@end@
if (rowreq_ctx->column_set_flags & ~COLUMN_$node.uc_FLAG) {
DEBUGMSGTL(("$context",
"destroy must be only varbind for row\n"));
return MFD_NOT_VALID_NOW;
}
rowreq_ctx->rowreq_flags |= MFD_ROW_DELETED;
} /* row destroy */
@if $m2c_table_refcounts == 1@
else if(ROWSTATUS_NOTINSERVICE == ${m2c_data_item}$node) {
if (0 != rowreq_ctx->ref_count) {
DEBUGMSGTL(("$context",
"can't deactivate row, %d references\n",
rowreq_ctx->ref_count));
return MFD_NOT_VALID_NOW;
}
} /* notInService */
@end@
@if $m2c_table_row_creation == 1@
} /* row change */
@end@
}
else {
@if $m2c_table_row_creation == 1@
/*
* must have row status to create a row
*/
if (rowreq_ctx->rowreq_flags & MFD_ROW_CREATED) {
DEBUGMSGTL(("$context",
"must use RowStatus to create rows\n"));
return MFD_CANNOT_CREATE_NOW;
}
@else@
/*
* row creation not supported
*/
if (rowreq_ctx->rowreq_flags & MFD_ROW_CREATED) {
DEBUGMSGTL(("$context",
"row creation not supported\n"));
return MFD_CANNOT_CREATE_EVER;
}
@end@
} /* row status not set */
## }
########################################################################
@if $m2c_mark_boundary == 1@
/** END code generated by $RCSfile$ $Revision$ */
@end@