121 lines
4.5 KiB
C
121 lines
4.5 KiB
C
############################################################# -*- c -*-
|
|
## generic include for XXX. Do not use directly.
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** START code generated by syntax-RowStatus-dependencies.m2i */
|
|
@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;
|
|
}
|
|
else if (ROWSTATUS_CREATEANDWAIT == ${m2c_data_item}$node) {
|
|
if ((rowreq_ctx->column_set_flags & $context.uc_REQUIRED_COLS)
|
|
!= $context.uc_REQUIRED_COLS) {
|
|
${m2c_data_item}$node = ROWSTATUS_NOTREADY;
|
|
} else {
|
|
${m2c_data_item}$node = ROWSTATUS_NOTINSERVICE;
|
|
}
|
|
}
|
|
} /* 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 syntax-RowStatus-dependencies.m2i */
|
|
@end@
|