Javascript bindings generates wrong code

Hi,

I am on version cocos2dx version 3.0-alpha0 . I tried javascript bindings for version 2.1.5 for the same classes and it was working beautifully. But now in autogeneratebindings i am getting too many errors for this version. I have the latest code for binding-generator from github.

The first method created in binding is

`template<class T>
 static bool dummy_constructor(JSContext *cx, uint32_t argc, jsval *vp) {
 JS::RootedValue initializing(cx);
    bool isNewValid = true;
if (isNewValid)
{
	TypeTest<T> t;
	js_type_class_t *typeClass = nullptr;
	std::string typeName = t.s_name();
	auto typeMapIter = _js_global_type_map.find(typeName);
	CCASSERT(typeMapIter != _js_global_type_map.end(), "Can't find the class type!");
	typeClass = typeMapIter->second;
	CCASSERT(typeClass, "The value is null.");

	JSObject *_tmp = JS_NewObject(cx, typeClass->jsclass, typeClass->proto, typeClass->parentProto);
	T* cobj = new T();
	js_proxy_t *pp = jsb_new_proxy(cobj, _tmp);
	JS_AddObjectRoot(cx, &pp->obj);
	JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(_tmp));
	return true;
}

return false;
}

`

Errors here are

autogentestbindings.cpp:79:22: Use of undeclared identifier ‘_js_global_type_map’; did you mean ‘_js_global_type_ht’?

autogentestbindings.cpp:79:41: Member reference type ‘js_type_class_t *’ (aka 'js_type_class * ’ ) is a pointer; maybe you meant to use ‘->’?

autogentestbindings.cpp:79:42: No member named ‘find’ in ‘js_type_class’

autogentestbindings.cpp:80:47: No member named ‘end’ in ‘js_type_class’

i have a class Option generated code is here

 `void js_register_autogentestbindings_Option(JSContext *cx, JSObject *global) {
 jsb_Option_class = (JSClass *)calloc(1, sizeof(JSClass));
 jsb_Option_class->name = "Option";
 jsb_Option_class->addProperty = JS_PropertyStub;
 jsb_Option_class->delProperty = JS_DeletePropertyStub;
 jsb_Option_class->getProperty = JS_PropertyStub;
 jsb_Option_class->setProperty = JS_StrictPropertyStub;
 jsb_Option_class->enumerate = JS_EnumerateStub;
 jsb_Option_class->resolve = JS_ResolveStub;
 jsb_Option_class->convert = JS_ConvertStub;
 jsb_Option_class->finalize = js_Option_finalize;
 jsb_Option_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2);

static JSPropertySpec properties[] = {
	{"__nativeObj", 0, JSPROP_ENUMERATE | JSPROP_PERMANENT, JSOP_WRAPPER(js_is_native_obj), JSOP_NULLWRAPPER},
	{0, 0, 0, JSOP_NULLWRAPPER, JSOP_NULLWRAPPER}
};

static JSFunctionSpec funcs[] = {
	JS_FN("setUserId", js_autogentestbindings_Option_setUserId, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("convertDictToOption", js_autogentestbindings_Option_convertDictToOption, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("setValue", js_autogentestbindings_Option_setValue, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("getCreatedAt", js_autogentestbindings_Option_getCreatedAt, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("getValue", js_autogentestbindings_Option_getValue, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("getIdOption", js_autogentestbindings_Option_getIdOption, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("getKey", js_autogentestbindings_Option_getKey, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("setUpdatedAt", js_autogentestbindings_Option_setUpdatedAt, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("setKey", js_autogentestbindings_Option_setKey, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("getUpdatedAt", js_autogentestbindings_Option_getUpdatedAt, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("getUserId", js_autogentestbindings_Option_getUserId, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("setCreatedAt", js_autogentestbindings_Option_setCreatedAt, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
	JS_FN("setIdOption", js_autogentestbindings_Option_setIdOption, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
    JS_FS_END
};

JSFunctionSpec *st_funcs = NULL;

jsb_Option_prototype = JS_InitClass(
	cx, global,
	NULL, // parent proto
	jsb_Option_class,
	js_autogentestbindings_Option_constructor, 0, // constructor
	properties,
	funcs,
	NULL, // no static properties
	st_funcs);
// make the class enumerable in the registered namespace
 //	bool found;
 //FIXME: Removed in Firefox v27	
 //	JS_SetPropertyAttributes(cx, global, "Option", JSPROP_ENUMERATE | JSPROP_READONLY, &found);

// add the proto and JSClass to the type->js info hash table

  TypeTest < Option > t;
  js_type_class_t *p;
  std::string typeName = t.s_name();
  if (_js_global_type_map.find(typeName) == _js_global_type_map.end())
  {
	p = (js_type_class_t *)malloc(sizeof(js_type_class_t));
	p->jsclass = jsb_Option_class;
	p->proto = jsb_Option_prototype;
	p->parentProto = NULL;
	_js_global_type_map.insert(std::make_pair(typeName, p));
  }
  }`

autogentestbindings.cpp:412:72: Cannot initialize a member subobject of type ‘JSPropertyOp’ (aka 'JSBool ( * )(JSContext * , JSHandleObject, JSHandleId, JSMutableHandleValue ) ’ ) with an lvalue of type ‘bool (JSContext *, JS::HandleObject, JS::HandleId, JS::MutableHandleValue)’: different return type (‘JSBool’ (aka ‘int’ ) vs ‘bool’ )

Any help regarding this?