//============================================
//XNvgpCu REMY
//Real^E\\̔z
//============================================
//wb_܂ޔz\̔z񃉃CNɈ

let _REMY_STRUCTARRAY_REAL = -1;


//Real^E\\̔z̍쐬Bۂɂ͂̔zԂB
//param_num o̐
function REMY_Struct_CreateArrayReal(let member_num)
{
	let dat = [];
	dat = dat ~ [_REMY_STRUCTARRAY_REAL];
	dat = dat ~ [0];						//IDJEg
	dat = dat ~ [member_num];
	return dat;
}

//\̔zɒlZbgB
//struct \̔z
//values eoɑl
function REMY_Struct_AddArrayElement(let struct_dat, let values)
{
	if(struct_dat[0] != _REMY_STRUCTARRAY_REAL)
	{
		RaiseError("\̔zf[^ł͂܂","REMY_\̔zG[");
	}
	let id_count = struct_dat[1];	//vf
	let member_num = struct_dat[2];	//
	if(length(values) != member_num)
	{
		RaiseError("\̂̃oƒǉf[^Ⴂ܂","REMY_\̔zG[");
	}

	ascent(i in 0..member_num)
	{
		struct_dat = struct_dat ~ [values[i]];
	}
	struct_dat[1] = id_count + 1;
	return struct_dat;
}


//\̔z̖]݂̈ʒuɒlZbgB
//struct \̔z
//id z̗vfԍ
//member \̃o
//value oɑl
function REMY_Struct_SetArrayElementValue(let struct_dat, let id, let member, let value)
{
	if(struct_dat[0] != _REMY_STRUCTARRAY_REAL)
	{
		RaiseError("\̔zf[^ł͂܂","REMY_\̔zG[");
	}
	let id_count = struct_dat[1];	//vf
	let member_num = struct_dat[2];	//
	if(id >= id_count)
	{
		RaiseError("\̔z̗vf𒴂Ă܂","REMY_\̔zG[");
	}
	if(member >= member_num)
	{
		RaiseError("\̂̃o𒴂Ă܂","REMY_\̔zG[");
	}
	
	//lZbg
	local{
		let n = 3 + member_num * id;
		struct_dat[n] = value;
	}
	return struct_dat;
}





//\̔z̖]݂̈ʒu̒l擾B
//struct \̔z
//id z̗vfԍ
//member \̃o
function REMY_Struct_GetArrayElementValue(let struct_dat, let id, let member)
{
	if(struct_dat[0] != _REMY_STRUCTARRAY_REAL)
	{
		RaiseError("\̔zf[^ł͂܂","REMY_\̔zG[");
	}
	let id_count = struct_dat[1];	//vf
	let member_num = struct_dat[2];	//
	if(id >= id_count)
	{
		RaiseError("\̔z̗vf𒴂Ă܂","REMY_\̔zG[");
	}
	if(member >= member_num)
	{
		RaiseError("\̂̃o𒴂Ă܂","REMY_\̔zG[");
	}
	
	//l擾
	let n = 3 + member_num * id;
	return struct_dat[n];
}

//vf̎擾
function REMY_Struct_Count(let struct_dat)
{
	return struct_dat[1];
}


