mud++0.35/etc/
mud++0.35/etc/guilds/
mud++0.35/help/propert/
mud++0.35/mudC/
mud++0.35/player/
mud++0.35/src/interface/
mud++0.35/src/os/cygwin32/
mud++0.35/src/os/win32/
mud++0.35/src/os/win32/bcppbuilder/
mud++0.35/src/osaddon/
mud++0.35/src/util/
/*
....[@@@..[@@@..............[@.................. MUD++ is a written from
....[@..[@..[@..[@..[@..[@@@@@....[@......[@.... scratch multi-user swords and
....[@..[@..[@..[@..[@..[@..[@..[@@@@@..[@@@@@.. sorcery game written in C++.
....[@......[@..[@..[@..[@..[@....[@......[@.... This server is an ongoing
....[@......[@..[@@@@@..[@@@@@.................. development project.  All 
................................................ contributions are welcome. 
....Copyright(C).1995.Melvin.Smith.............. Enjoy. 
------------------------------------------------------------------------------
Melvin Smith (aka Fusion)         msmith@hom.net
MUD++ development mailing list    mudpp@van.ml.org
------------------------------------------------------------------------------
vmnarray.h
*/

#ifndef _VMARRAY_H
#define _VMARRAY_H


class VMarray : public VMObject
{

	public:
		int size;
		vmtype type;

		VMarray( vmtype t ) :
			size(10),type(t)
		{
			evalues = (extra_values *) new char[
				sizeof(extra_values) + sizeof(vmstack)*(size-1)];
		}

		VMarray( vmtype t, int s ) :
			size(s), type(t)
		{
			evalues = (extra_values *) new char[
				sizeof(extra_values) + sizeof(vmstack)*(size-1)];
			evalues->length = size;
		}

		// caller must take care of reference/dereference
		void add( vmptr val )
		{
			if ( evalues->length >= size )
			{
				extra_values * new_table = (extra_values *) new char[
				sizeof(extra_values) + sizeof(vmstack) *((size << 1) -1)];
				memcpy(new_table, evalues, (evalues->length -1) * sizeof(vmstack) 
					+ sizeof(extra_values) );
				delete evalues;
				evalues = new_table;
				size <<= 1;
			}
			evalues->val[evalues->length].type = type;
			evalues->val[evalues->length].val = val;
			evalues->length++;
		}

		int count() { return evalues->length; }
		vmstack * table() { return evalues->val; }

};

#endif