#include "prc_inc_array" int array_2d_create(object store, string name); int array_2d_delete(object store, string name); int array_2d_set_string(object store, string name, int i, int j, string entry); int array_2d_set_int(object store, string name, int i, int j, int entry); int array_2d_set_float(object store, string name, int i, int j, float entry); int array_2d_set_object(object store, string name, int i, int j, object entry); // returns "" or 0 on error string array_2d_get_string(object store, string name, int i, int j); int array_2d_get_int(object store, string name, int i, int j); float array_2d_get_float(object store, string name, int i, int j); object array_2d_get_object(object store, string name, int i, int j); // changes memory usage of array (deletes x[ > size_new]) int array_2d_shrink(object store, string name, int size_new, int axis); // gets current maximum size of array int array_2d_get_size(object store, string name, int axis); int array_2d_exists(object store, string name); int array_2d_create(object store, string name) { // error checking if (GetLocalInt(store,name)) return SDL_ERROR_ALREADY_EXISTS; else { // Initialize the size (always one greater than the actual size) SetLocalInt(store,name+"_A",1); SetLocalInt(store,name+"_B",1); return SDL_SUCCESS; } } int array_2d_delete(object store, string name) { // error checking int sizeA=GetLocalInt(store,name+"_A"); if (sizeA==0) return SDL_ERROR_DOES_NOT_EXIST; int sizeB=GetLocalInt(store,name+"_B"); if (sizeB==0) return SDL_ERROR_DOES_NOT_EXIST; int i; int j; for (i=0; isizeA) SetLocalInt(store,name+"_A",i+2); if (j+2>sizeB) SetLocalInt(store,name+"_B",j+2); return SDL_SUCCESS; } int array_2d_set_int(object store, string name, int i, int j, int entry) { return array_2d_set_string(store,name,i,j,IntToString(entry)); } int array_2d_set_float(object store, string name, int i, int j, float entry) { return array_2d_set_string(store,name,i,j,FloatToString(entry)); } int array_2d_set_object(object store, string name, int i, int j, object entry) { // object is a little more complicated. // we want to create an object as a local variable too if (!GetIsObjectValid(entry)) return SDL_ERROR_NOT_VALID_OBJECT; int results=array_2d_set_string(store,name,i,j,"OBJECT"); if (results==SDL_SUCCESS) SetLocalObject(store,name+"_"+IntToString(i)+"_"+IntToString(j)+"_OBJECT",entry); return results; } string array_2d_get_string(object store, string name, int i, int j) { int sizeA=GetLocalInt(store,name+"_A"); if (sizeA==0 || i>sizeA) return ""; int sizeB=GetLocalInt(store,name+"_B"); if (sizeB==0 || j>sizeB) return ""; return GetLocalString(store,name+"_"+IntToString(i)+"_"+IntToString(j)); } int array_2d_get_int(object store, string name, int i, int j) { return StringToInt(array_2d_get_string(store,name,i,j)); } float array_2d_get_float(object store, string name, int i, int j) { return StringToFloat(array_2d_get_string(store,name,i,j)); } object array_2d_get_object(object store, string name, int i, int j) { return GetLocalObject(store,name+"_"+IntToString(i)+"_"+IntToString(j)+"_OBJECT"); } int array_2d_shrink(object store, string name, int size_new, int axis) { // error checking int sizeA=GetLocalInt(store,name+"_A"); if (sizeA==0) return SDL_ERROR_DOES_NOT_EXIST; int sizeB=GetLocalInt(store,name+"_B"); if (sizeB==0) return SDL_ERROR_DOES_NOT_EXIST; if (axis == 1 && (sizeA==size_new || sizeA