Mercurial > repos > tabletprog
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 } |