diff 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
line wrap: on
line diff
--- a/cbackend.js	Sun Jul 15 18:11:00 2012 -0700
+++ b/cbackend.js	Mon Jul 16 01:10:12 2012 -0700
@@ -448,6 +448,12 @@
 			'return &(str->header);'
 		]
 	});
+	int32.addMessage('hash', {
+		vars: {},
+		lines: [
+			'return &(self->header);'
+		]
+	});
 	return int32;
 }
 
@@ -592,6 +598,29 @@
 			'return &(intret->header);'
 		]
 	});
+	string.addMessage('int32', {
+		vars: {intret: 'obj_int32 *'},
+		lines: [
+			'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);',
+			'intret->num = atoi(self->data);',
+			'return &(intret->header);'
+		]
+	});
+	string.addMessage('hash', {
+		vars: {intret: 'obj_int32 *', i: 'uint32_t'},
+		lines: [
+			'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);',
+			'intret->num = 0;',
+			'if (self->bytes) {',
+			'	intret->num = self->data[0] << 7;',
+			'	for (i = 0; i < self->bytes; i++) {',
+			'		intret->num = (1000003 * intret->num) ^ self->data[i];',
+			'	}',
+			'	intret->num = intret->num ^ self->bytes;',
+			'}',
+			'return &(intret->header);'
+		]
+	});
 	return string;
 }