示例#1
0
文件: parse.c 项目: pexcn/Lily
static ListHead* local_var_declaration(int type)
{
	
	AutoInfo *a = NULL;
	int size = SIZE(type); 
	
    a = malloc(sizeof(AutoInfo));
    
	if(a == NULL){
        fprintf(stderr, "line %d: malloc auto error\n", save_line);
        exit(0);
	}
	
  	memset(a, 0, sizeof(AutoInfo));
    INIT_LIST_NODE(&a->auto_list);
	
	match(token);
	strncpy(a->name,save_word,NAME_SIZE);
	match(TOK_ID);
	
	a->type = type;

	/* var */
	if(token == TOK_SEMI){
        if(type == TOK_PINT || type == TOK_PCHAR)
			a->is_pointer = true;
		a->size = size;
		match(TOK_SEMI);
    }
	/* array */
	else if(token == TOK_LSQUARE){
        /* match [ */
        match(TOK_LSQUARE);
        match(TOK_NUM);
        match(TOK_RSQUARE);
        match(TOK_SEMI);
        a->size = size * save_num;
        a->is_array = true;
    }else{
		fprintf(stderr, "line %d: param does not a type\n", save_line);
	}
	
    return &a->auto_list;	
}
示例#2
0
static struct client_info *xio_create_client(struct xio_session *session,
					     struct xio_connection *conn)
{
	struct client_info *ci;

	ci = zalloc(sizeof(*ci));
	if (!ci)
		return NULL;

	ci->type = CLIENT_INFO_TYPE_XIO;

	ci->conn.session = session;
	ci->conn.conn = conn;
	INIT_LIST_NODE(&ci->conn.list);
	refcount_set(&ci->refcnt, 0);

	INIT_LIST_HEAD(&ci->done_reqs);

	return ci;
}
示例#3
0
文件: parse.c 项目: pexcn/Lily
static ListHead* param()
{
    ParamInfo *param = NULL;
	
    param = malloc(sizeof(ParamInfo));
	
	if(param == NULL)
	{
		fprintf(stderr,"param node malloc error");
		exit(0);
	}
	
	memset(param,0,sizeof(ParamInfo));
	INIT_LIST_NODE(&param->param_list);
	
    param->type = token;
    param->size = SIZE(token);
	
	if(token == TOK_INT || token == TOK_CHAR||
	   token == TOK_PINT || token == TOK_PCHAR||
	   token == TOK_VOID || token == TOK_PVOID)
	{
		match(token);
	}
	
	strncpy(param->name,save_word,NAME_SIZE); 	
	match(TOK_ID);	
	
	if(token==TOK_LSQUARE)
	{
		param->is_array = true;
		match(TOK_LSQUARE);
		match(TOK_RSQUARE);
	}	
	
    return &param->param_list;
}