############################################################# -*- 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@