/// Initialize the Repository to a clean slate.
int
ACE_Service_Repository::open (size_t size)
{
  ACE_TRACE ("ACE_Service_Repository::open");

  // Create a new array and swap it with the local array
  array_type local_array (size);
  this->service_array_.swap (local_array);

  return 0;
}
Пример #2
0
void local_define(int start)//局部变量定义,变量,数组,结构体
{
	char op[expr_size],fuc1[expr_size],fuc2[expr_size];
	int i=0;
	num_p=0;
	num_v=0;

	char v1[expr_size],v2[expr_size];
	int t1,t2,reg1,reg2;
	for(i=start;i<num_inst;i++)
	{
		sscanf(inst[i],"%s %s %s",op,fuc1,fuc2);
		if(strcmp(op,"ret")==0)
			break;
		if(judge_two_op(op))//双操作数,其中也可能包含变量,需要检测是否有局部变量
		{
			t1=get_op(fuc1,v1,reg1);
			t2=get_op(fuc2,v2,reg2);
			if(t1==3)
			{
				if(reg1>0)
				{
					param_place[num_p]=reg1;
					strcpy(param_name[num_p++],v1);
				}
				else
					strcpy(var_name[num_v++],v1);
			}
			if(t2==3)
			{
				if(reg2>0)
				{
					param_place[num_p]=reg1;
					strcpy(param_name[num_p++],v2);
				}
				else
					strcpy(var_name[num_v++],v2);
			}
		}
		else if(strcmp(op,"neg")==0||strcmp(op,"var")==0||strcmp(op,"param")==0||strcmp(op,"write")==0)//单操作数,其中可能包含变量,需要检测
		{
			t1=get_op(fuc1,v1,reg1);
			if(t1==3)
			{
				if(reg1>0)
				{
					param_place[num_p]=reg1;
					strcpy(param_name[num_p++],v1);
				}
				else
					strcpy(var_name[num_v++],v1);
			}
			if(strcmp(op,"var")==0)
				sprintf(inst[i]," nop ");
		}
		else if(strcmp(op,"struct")==0&&strcmp(fuc2,"FP")==0)//结构体定义
		{
			strcpy(var_name[num_v++],fuc1);
		}
	}

	int list[1000],num=0;
	define_var(param_name,num_p,list,num);//定义函数调用参数
	sort_list(list,num);
	for(i=0;i<num-1;i++)
		fprintf(fw,"long %s,",param_name[list[i]]);
	if(num-1>=0)
		fprintf(fw,"long %s",param_name[list[num-1]]);
	fprintf(fw,") \n{ \n");

	num_big++;

	num=0;
	define_var(var_name,num_v,list,num);//局部变量定义
	for(i=0;i<num;i++)
	{
		add_tab();
		fprintf(fw,"long %s; \n",var_name[list[i]]);
	}

	local_array2(start);
	local_array(start);//局部数组定义

}