ftp.nice.ch/pub/next/graphics/3d/geomview.1.4.1.s.tar.gz#/Geomview/src/bin/geomutil/ucd/stack.c

This is stack.c in view mode; [Download] [Up]

#include "polylistP.h"
	static int BlockSize, array_size;
	static Poly *mystack, *stackptr;
   	static int count = 0, debug = 0;

int
initstack()
{
    	array_size = 1;
    	BlockSize = 1024;
	count = 0;
    	if ((mystack = OOGLNewN (Poly, BlockSize )) == (Poly *) NULL) return(0);
	stackptr = mystack;
	return(1);
}
	
int
push(pp)
Poly *pp;
{
    register int i;
    if (stackptr >= &mystack[BlockSize*array_size])	{ 
	if (debug) 
	    fprintf(stderr,"allocating again: size is now %d\n",array_size*BlockSize);
	array_size = array_size*2;
        if ((mystack = OOGLRenewN(Poly,mystack, array_size*BlockSize)) == (Poly *) NULL) return (0);
	stackptr = &mystack[count];
	}
    *stackptr = *pp;
    if ((stackptr->v = OOGLNewN(Vertex *, pp->n_vertices)) == (Vertex **) NULL)
	return(0);
    for (i=0; i<pp->n_vertices; ++i)  stackptr->v[i] = pp->v[i];
    stackptr++;
    count++;
    return(1);
}
    
int
getsize()
{
    return(count);
}

Poly *
getstack()
{
    return(mystack);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.