Mercurial > repos > tabletprog
comparison cbackend.js @ 282:361a449a7235
Add some extra parens in addr_of translation and fix cleaning of names in llMessage parameters
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 21 Jul 2014 20:24:50 -0700 |
parents | 0dc7322590da |
children | bb1539decd62 |
comparison
equal
deleted
inserted
replaced
281:f6dfb85e80e5 | 282:361a449a7235 |
---|---|
389 case 'if:else': | 389 case 'if:else': |
390 return '((' + args[0].toCLLExpr(vars) + ') ? (' + args[1].toCLLExpr(vars) + ') : (' + args[2].toCLLExpr(vars) + '))'; | 390 return '((' + args[0].toCLLExpr(vars) + ') ? (' + args[1].toCLLExpr(vars) + ') : (' + args[2].toCLLExpr(vars) + '))'; |
391 case 'while:do': | 391 case 'while:do': |
392 throw new Error('while:do not allowed in expression context in llMessage block'); | 392 throw new Error('while:do not allowed in expression context in llMessage block'); |
393 case 'addr_of': | 393 case 'addr_of': |
394 return '&(' + args[0].toCLLExpr(vars) + ')'; | 394 return '(&(' + args[0].toCLLExpr(vars) + '))'; |
395 case 'sizeof': | 395 case 'sizeof': |
396 return 'sizeof(' + args[0].toCTypeName() + ')'; | 396 return 'sizeof(' + args[0].toCTypeName() + ')'; |
397 case 'get': | 397 case 'get': |
398 return args[0].toCLLExpr(vars) + '[' + args[1].toCLLExpr(vars) + ']'; | 398 return args[0].toCLLExpr(vars) + '[' + args[1].toCLLExpr(vars) + ']'; |
399 case 'set': | 399 case 'set': |
805 | 805 |
806 return intObj; | 806 return intObj; |
807 } | 807 } |
808 | 808 |
809 function makeCPointer() | 809 function makeCPointer() |
810 { | 810 { |
811 var cptr = new cObject('cpointer'); | 811 var cptr = new cObject('cpointer'); |
812 cptr.addProperty('val', null, 'void *'); | 812 cptr.addProperty('val', null, 'void *'); |
813 //cpointer: | 813 //cpointer: |
814 //1234567890 | 814 //1234567890 |
815 cptr.addMessage('string', { | 815 cptr.addMessage('string', { |
816 vars: {ret: 'string *'}, | 816 vars: {ret: 'string *'}, |
817 lines: [ | 817 lines: [ |
818 'ret = make_object(&string_meta, NULL, 0);', | 818 'ret = make_object(&string_meta, NULL, 0);', |
1218 for (var i in this.args) { | 1218 for (var i in this.args) { |
1219 var name = this.args[i].name; | 1219 var name = this.args[i].name; |
1220 if (name[0] == ':') { | 1220 if (name[0] == ':') { |
1221 name = name.substr(1); | 1221 name = name.substr(1); |
1222 } | 1222 } |
1223 if (name[0] >= "0" && name[0] <= "9") { | |
1224 name = '_tp_' + name; | |
1225 } | |
1223 if(name != 'self') { | 1226 if(name != 'self') { |
1224 lines.push(name + ' = va_arg(args, ' + vars[name] + ');'); | 1227 lines.push(name + ' = va_arg(args, ' + vars[name] + ');'); |
1225 } | 1228 } |
1226 } | 1229 } |
1227 for (var i in this.expressions) { | 1230 for (var i in this.expressions) { |