Example #1
0
stack stack_copy(stack sh)
{
    register unsigned int ix;

    stack result;

    if (NULL == sh) {
        return NULL;
    }

    result = stack_new(sh->destroy, sh->clone);
    if (NULL != sh->clone) {
        for (ix = 0; ix < sh->sz; ix++) {
            stack_push(result, sh->clone(sh->arr[ix]));
        }
    } else {
        for (ix = 0; ix < sh->sz; ix++) {
            stack_push(result, sh->arr[ix]);
        }
    }

    return result;
}