Allocates the cleanup model.
ade_id
tpm_cleanalloc();
Returns the model ID (real) or ADE_NULLID.
To clean the objects before they become the elements of a topology, you must construct a model of these objects and their relationships. You can use this model to discover and repair drawing errors that would prevent topology creation.
The following example allocates a cleanup model, initializes the cleanup model, counts errors by group type and subtype, and frees the cleanup model.
ade_id var_id = ADE_NULLID; // variable ID
ade_id cln_id = ADE_NULLID; // clean ID
ads_name ss; // selection set
long qty = 0; // quantity
int type = 0; // clean error group type
int subtype = 0; // clean error group subtype
int done = 0;
int result = 0;
var_id = tpm_varalloc();
cln_id = tpm_cleanalloc();
if( ! var_id || ! cln_id ) {
ads_printf("\nMemory allocation failed.");
tpm_varfree(var_id);
tpm_cleanfree(cln_id);
return;
}
// initialize a set of objects, in selection set ss,
// to clean
tpm_cleaninit(cln_id, var_id, ss);
result = tpm_cleanstart(cln_id);
if( result != RTNORM ) {
ads_printf("\nClean startup failed.");
tpm_varfree(var_id);
tpm_cleanfree(cln_id);
return;
}
// Count errors by group type and subtype
while ( ! done) {
result = tpm_cleangroupnext(cln_id);
if ( result == RTNORM ) {
result = tpm_cleancomplete(cln_id);
if ( result == RTNORM )
done = 1;
else {
type = tpm_cleangrouptype(cln_id);
subtype = tpm_cleangroupsubtype(cln_id);
tpm_cleangroupqty(cln_id, &qty;);
ads_printf("Group type, subtype: %d,%d
Number of errors: %d", type, subtype, qty);
} // else
} // if
} // while
tpm_cleanfree(cln_id);
tpm_varfree(var_id);


