示例#1
0
struct objc_method_description
protocol_getMethodDescription(Protocol *p,
                              SEL aSel,
                              BOOL isRequiredMethod,
                              BOOL isInstanceMethod)
{
	struct objc_method_description d = {0,0};
	struct objc_method_description_list *list =
		get_method_list(p, isRequiredMethod, isInstanceMethod);
	if (NULL == list)
	{
		return d;
	}
	// TODO: We could make this much more efficient if
	for (int i=0 ; i<list->count ; i++)
	{
		SEL s = sel_registerTypedName_np(list->methods[i].name, 0);
		if (sel_isEqual(s, aSel))
		{
			d.name = s;
			d.types = list->methods[i].types;
			break;
		}
	}
	return d;
}
示例#2
0
文件: object.cpp 项目: AMG194/godot
Array Object::_get_method_list_bind() const {

	List<MethodInfo> ml;
	get_method_list(&ml);
	Array ret;

	for(List<MethodInfo>::Element *E=ml.front();E;E=E->next()) {

		Dictionary d;
		d["name"]=E->get().name;
		d["args"]=convert_property_list(&E->get().arguments);
		Array da;
		for(int i=0;i<E->get().default_arguments.size();i++)
			da.push_back(E->get().default_arguments[i]);
		d["default_args"]=da;
		d["flags"]=E->get().flags;
		d["id"]=E->get().id;
		Dictionary r;
		r["type"]=E->get().return_val.type;
		r["hint"]=E->get().return_val.hint;
		r["hint_string"]=E->get().return_val.hint_string;
		d["return_type"]=r;
		//va.push_back(d);
		ret.push_back(d);
	}

	return ret;

}
示例#3
0
文件: object.cpp 项目: Bonfi96/godot
Array Object::_get_method_list_bind() const {

	List<MethodInfo> ml;
	get_method_list(&ml);
	Array ret;

	for (List<MethodInfo>::Element *E = ml.front(); E; E = E->next()) {

		Dictionary d = E->get();
		//va.push_back(d);
		ret.push_back(d);
	}

	return ret;
}
示例#4
0
struct objc_method_description *protocol_copyMethodDescriptionList(Protocol *p,
	BOOL isRequiredMethod, BOOL isInstanceMethod, unsigned int *count)
{
	if ((NULL == p) || (NULL == count)){ return NULL; }
	struct objc_method_description_list *list =
		get_method_list(p, isRequiredMethod, isInstanceMethod);
	*count = 0;
	if (NULL == list || list->count == 0) { return NULL; }

	*count = list->count;
	struct objc_method_description *out =
		calloc(sizeof(struct objc_method_description), list->count);
	for (int i=0 ; i < (list->count) ; i++)
	{
		out[i].name = sel_registerTypedName_np(list->methods[i].name,
		                                       list->methods[i].types);
		out[i].types = list->methods[i].types;
	}
	return out;
}