ftp.nice.ch/pub/next/graphics/3d/geomview.1.4.1.s.tar.gz#/Geomview/src/lib/gprim/discgrp/outstack.c

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

/* This file is for managing the output stack of group elements */

#include "discgrpP.h"

	static int BlockSize, array_size;
	static DiscGrpEl *mystack = NULL, *stackptr = NULL;
   	static int count = 0, debug = 0;

int
init_out_stack()
{
    	array_size = 1;
    	BlockSize = 1024;
	count = 0;
    	if ((mystack = OOGLNewN (DiscGrpEl, BlockSize )) == (DiscGrpEl *) NULL) return(0);
	stackptr = mystack;
	return(1);
}
	
int
enumpush(pp)
DiscGrpEl *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(DiscGrpEl,mystack, array_size*BlockSize)) == (DiscGrpEl *) NULL) return (0);
	stackptr = &mystack[count];
	}
    *stackptr = *pp;
    TmCopy(pp->tform, stackptr->tform); 
    stackptr++;
    count++;
    return(1);
}
    
int
enumgetsize()
{
    return(count);
}

DiscGrpEl *
enumgetstack()
{
    DiscGrpEl *thisptr;
    thisptr = OOGLNewN (DiscGrpEl, count );
    if (thisptr == NULL) return ( (DiscGrpEl *) NULL);
    bcopy(mystack, thisptr, sizeof(DiscGrpEl) * count);
    OOGLFree(mystack);
    return(thisptr);
}

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