comparison cbackend.js @ 79:7f635666c73d

Add hash and int32 messages to string. Add hash message to int32. Update compile script
author Mike Pavone <pavone@retrodev.com>
date Mon, 16 Jul 2012 01:10:12 -0700
parents abc6f3d644a4
children 9811040704ac
comparison
equal deleted inserted replaced
78:abc6f3d644a4 79:7f635666c73d
446 'sprintf(str->data, "%d", self->num);', 446 'sprintf(str->data, "%d", self->num);',
447 'str->length = str->bytes = strlen(str->data);', 447 'str->length = str->bytes = strlen(str->data);',
448 'return &(str->header);' 448 'return &(str->header);'
449 ] 449 ]
450 }); 450 });
451 int32.addMessage('hash', {
452 vars: {},
453 lines: [
454 'return &(self->header);'
455 ]
456 });
451 return int32; 457 return int32;
452 } 458 }
453 459
454 function makeArray() 460 function makeArray()
455 { 461 {
587 vars: {index: 'obj_int32 *', intret: 'obj_int32 *'}, 593 vars: {index: 'obj_int32 *', intret: 'obj_int32 *'},
588 lines: [ 594 lines: [
589 'index = va_arg(args, obj_int32 *);', 595 'index = va_arg(args, obj_int32 *);',
590 'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);', 596 'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);',
591 'intret->num = index->num < self->bytes ? self->data[index->num] : 0;', 597 'intret->num = index->num < self->bytes ? self->data[index->num] : 0;',
598 'return &(intret->header);'
599 ]
600 });
601 string.addMessage('int32', {
602 vars: {intret: 'obj_int32 *'},
603 lines: [
604 'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);',
605 'intret->num = atoi(self->data);',
606 'return &(intret->header);'
607 ]
608 });
609 string.addMessage('hash', {
610 vars: {intret: 'obj_int32 *', i: 'uint32_t'},
611 lines: [
612 'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);',
613 'intret->num = 0;',
614 'if (self->bytes) {',
615 ' intret->num = self->data[0] << 7;',
616 ' for (i = 0; i < self->bytes; i++) {',
617 ' intret->num = (1000003 * intret->num) ^ self->data[i];',
618 ' }',
619 ' intret->num = intret->num ^ self->bytes;',
620 '}',
592 'return &(intret->header);' 621 'return &(intret->header);'
593 ] 622 ]
594 }); 623 });
595 return string; 624 return string;
596 } 625 }