The final C code itself is obviously completely different for each extension.
In the example composition package we loop through each contig listed in our
-contigs command line argument running a separate function that returns
a Tcl list containing the total number of characters processed and the number
of A, C, G, T and unknown nucleotides. Each list in turn is then added as an
item to another list which is used for the final result.
    /* Do the actual work */
    Tcl_DStringInit(&dstr);
    for (i = 0; i < num_contigs; i++) {
        result = doit(args.io, contigs[i].contig, contigs[i].start,
                      contigs[i].end);
        if (NULL == result) {
            xfree(contigs);
            return TCL_ERROR;
        }
        Tcl_DStringAppendElement(&dstr, result);
    }
    Tcl_DStringResult(interp, &dstr);
    xfree(contigs);
    return TCL_OK;
}
The above is the end of the tcl_composition function. doit is
our main algorithm written in C (which has no knowledge of Tcl). We use the
Tcl dynamic strings routines to build up the final return value. The complete
C code for this package can be found in the appendices.
If a command has persistent data about a contig (such as a plot containing the composition) the registration scheme should be used to keep this data up to date whenever database edits are made. See section Contig Registration Scheme.