/* ....[@@@..[@@@..............[@.................. 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