FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Combyne templates are almost finished · javascript-forks/nodegit.nodegit@e57b390 · GitHub

Repository navigation

Commit e57b390

Browse files
John Haley
committed
Combyne templates are almost finished
1 parent 10c2132 commit e57b390

7 files changed

Lines changed: 30 additions & 13 deletions

File tree

‎generate/filters/is_pointer.js‎

Lines changed: 0 additions & 3 deletions
This file was deleted.

‎generate/index.js‎

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ var filters = {
3333
or: require("./filters/or"),
3434
and: require("./filters/and"),
3535
isV8Value: require("./filters/is_v8_value"),
36-
isPointer: require("./filters/is_pointer"),
3736
unPointer: require("./filters/un_pointer"),
3837
defaultValue: require("./filters/default_value")
3938
};
@@ -58,7 +57,8 @@ Object.keys(partials).forEach(function(partial) {
5857
var enabled = idefs.filter(function(idef) {
5958
// Additionally provide a friendly name to the actual filename.
6059
idef.name = path.basename(idef.filename, ".h");
61-
60+
idef.cTypeIsUndefined = typeof idef.cType == 'undefined';
61+
6262
// We need some custom data on each of the functions
6363
idef.functions.forEach(function(fn) {
6464
fn.cppClassName = idef.cppClassName;
@@ -102,6 +102,7 @@ var enabled = idefs.filter(function(idef) {
102102
arg.cArg = cArg;
103103
arg.v8ValueClassName = cppToV8(arg.cppClassName);
104104
arg.isCppClassStringOrArray = ~["String", "Array"].indexOf(arg.cppClassName);
105+
arg.isPointer = /\s*\*\s*/.test(arg.cType);
105106
arg.isDoublePointer = /\s*\*\*\s*/.test(arg.cType);
106107
arg.isV8Value = ~v8Values.indexOf(arg.cppClassName);
107108

@@ -113,7 +114,7 @@ var enabled = idefs.filter(function(idef) {
113114
fn.returns = [];
114115

115116
// generate returns data
116-
fn.args.forEach(function(arg) {
117+
fn.argsInfo.forEach(function(arg) {
117118
if (!arg.isReturn) return;
118119

119120
var _return = {};
@@ -134,6 +135,21 @@ var enabled = idefs.filter(function(idef) {
134135
if (!fn.returns.length
135136
&& !fn.return.isErrorCode
136137
&& fn.return.cType != "void") {
138+
var _return = {};
139+
140+
_return = fn.return;
141+
142+
_return.v8ValueClassName = cppToV8(_return.cppClassName);
143+
_return.isCppClassStringOrArray = ~["String", "Array"].indexOf(_return.cppClassName);
144+
_return.isPointer = /\s*\*\s*/.test(_return.cType);
145+
_return.isDoublePointer = /\s*\*\*\s*/.test(_return.cType);
146+
_return.isV8Value = ~v8Values.indexOf(_return.cppClassName);
147+
_return.parsedName = 'result';
148+
_return.jsOrCppClassName = _return.jsClassName || _return.cppClassName;
149+
_return.isCppClassIntType = ~["Uint32", "Int32"].indexOf(_return.cppClassName);
150+
_return.parsedClassName = (_return.cppClassName || '').toLowerCase() + "_t";
151+
_return.jsNameOrName = _return.jsName | _return.name;
152+
137153
fn.returns.push(fn.return);
138154
}
139155

@@ -155,6 +171,7 @@ var enabled = idefs.filter(function(idef) {
155171
fieldInfo.parsedName = field.name || "result";
156172
fieldInfo.isCppClassIntType = ~["Uin32", "Int32"].indexOf(field.cppClassName);
157173
fieldInfo.parsedClassName = (field.cppClassName || '').toLowerCase() + "_t";
174+
fieldInfo.isV8Value = ~v8Values.indexOf(field.cppClassName);
158175

159176
fn.fieldInfos.push(fieldInfo);
160177
});

‎generate/partials/convert_from_v8.cc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{%if not isPayload %}
22
{{ cType }} from_{{ name }};
33
{%if isOptional %}
4-
if (args{{[ jsArg }}]->Is{{ v8ValueClassName }}()) {
4+
if (args[{{ jsArg }}]->Is{{ v8ValueClassName }}()) {
55
{%endif%}
66
{%if cppClassName == 'String' %}
77
String::Utf8Value {{ name }}(args[{{ jsArg }}]->ToString());

‎generate/partials/convert_to_v8.cc‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ to = NanNew<String>({{{ parsedName }}});
1010
{%if freeFunctionName %}
1111
{{ freeFunctionName }}({{{ parsedName }}});
1212
{%endif%}
13-
{%elsif cppClassName|isV8Value %}
13+
{%elsif isV8Value %}
1414
{%if isCppClassIntType %}
1515
to = NanNew<{{ cppClassName }}>(({{ parsedClassName }}){{{ parsedName }}});
1616
{%else%}
@@ -19,7 +19,9 @@ to = NanNew<{{ cppClassName }}>({{{ parsedName }}});
1919
{%elsif cppClassName == 'External' %}
2020
to = NanNew<External>((void *){{{ parsedName }}});
2121
{%elsif cppClassName == 'Array' %}
22-
{%-- // FIXME this is not general purpose enough. --%}
22+
{%--
23+
// FIXME this is not general purpose enough.
24+
--%}
2325
Local<Array> tmpArray = NanNew<Array>({{{ parsedName }}}->{{ size }});
2426
for (unsigned int i = 0; i < {{{ parsedName }}}->{{ size }}; i++) {
2527
tmpArray->Set(NanNew<Number>(i), NanNew<String>({{{ parsedName }}}->{{ key }}[i]));
@@ -28,7 +30,7 @@ to = tmpArray;
2830
{%else%}
2931
{%if copy %}
3032
if ({{{ parsedName }}} != NULL) {
31-
{{{ parsedName }}} = ({{ cType|replace '**' '*' }} {%if cType|isPointer %}*{%endif%}){{ copy }}({{{ parsedName }}});
33+
{{{ parsedName }}} = ({{ cType|replace '**' '*' }} {%if isPointer %}*{%endif%}){{ copy }}({{{ parsedName }}});
3234
}
3335
{%endif%}
3436
if ({{{ parsedName }}} != NULL) {

‎generate/partials/fields.cc‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ NAN_METHOD({{ cppClassName }}::{{ field.cppFunctionName }}) {
55
NanScope();
66
Handle<Value> to;
77

8-
{{ field.cType }} {%if field.cppClassName|isV8Value %}*{%endif%}{{ field.name }} =
9-
{%if not field.cppClassName|isV8Value %}&{%endif%}ObjectWrap::Unwrap<{{ cppClassName }}>(args.This())->GetValue()->{{ field.name }};
8+
{{ field.cType }} {%if field.isV8Value %}*{%endif%}{{ field.name }} =
9+
{%if not field.isV8Value %}&{%endif%}ObjectWrap::Unwrap<{{ cppClassName }}>(args.This())->GetValue()->{{ field.name }};
1010

1111
{%partial convertToV8 field %}
1212
NanReturnValue(to);

‎generate/partials/sync_function.cc‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,5 +81,6 @@ from_{{ arg.name }}
8181
NanReturnValue(to);
8282
{%else%}
8383
NanReturnValue(toReturn);
84+
{%endif%}
8485
{%endif%}
8586
}

‎generate/templates/class.cc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,6 @@ void {{ cppClassName }}::Initialize(Handle<v8::Object> target) {
103103

104104
{%partial fields .%}
105105

106-
{%if cType%}
106+
{%if not cTypeIsUndefined %}
107107
Persistent<Function> {{ cppClassName }}::constructor_template;
108108
{%endif%}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL