@@ -86,16 +86,25 @@ void {{ cppClassName }}::{{ cppFunctionName }}_{{ cbFunction.name }}_asyncAfter(
8686
8787 {{ cbFunction.return .type }} resultStatus;
8888
89- {% each cbFunction|returnsInfo true false as _return %}
89+ {% each cbFunction|returnsInfo false true as _return %}
9090 if (result.IsEmpty () || result->IsNativeError ()) {
9191 baton->result = {{ cbFunction.return .error }};
9292 }
9393 else if (!result->IsNull () && !result->IsUndefined ()) {
94+ {% if _return.isOutParam %}
9495 {{ _return.cppClassName }}* wrapper = ObjectWrap::Unwrap<{{ _return.cppClassName }}>(result->ToObject ());
9596 wrapper->selfFreeing = false ;
9697
9798 baton->{{ _return.name }} = wrapper->GetRefValue ();
9899 baton->result = {{ cbFunction.return .success }};
100+ {% else %}
101+ if (result->IsNumber ()) {
102+ baton->result = (int ) result->ToNumber ()->Value ();
103+ }
104+ else {
105+ baton->result = {{ cbFunction.return .noResults }};
106+ }
107+ {% endif %}
99108 }
100109 else {
101110 baton->result = {{ cbFunction.return .noResults }};
@@ -126,16 +135,25 @@ void {{ cppClassName }}::{{ cppFunctionName }}_{{ cbFunction.name }}_asyncPromis
126135 Handle<v8::Value> result = resultFn->Call (0 , argv);
127136 {{ cbFunction.return .type }} resultStatus;
128137
129- {% each cbFunction|returnsInfo true false as _return %}
138+ {% each cbFunction|returnsInfo false true as _return %}
130139 if (result.IsEmpty () || result->IsNativeError ()) {
131140 baton->result = {{ cbFunction.return .error }};
132141 }
133142 else if (!result->IsNull () && !result->IsUndefined ()) {
143+ {% if _return.isOutParam %}
134144 {{ _return.cppClassName }}* wrapper = ObjectWrap::Unwrap<{{ _return.cppClassName }}>(result->ToObject ());
135145 wrapper->selfFreeing = false ;
136146
137147 baton->{{ _return.name }} = wrapper->GetRefValue ();
138148 baton->result = {{ cbFunction.return .success }};
149+ {% else %}
150+ if (result->IsNumber ()) {
151+ baton->result = (int ) result->ToNumber ()->Value ();
152+ }
153+ else {
154+ baton->result = {{ cbFunction.return .noResults }};
155+ }
156+ {% endif %}
139157 }
140158 else {
141159 baton->result = {{ cbFunction.return .noResults }};
0 commit comments