changeset 325:4a79311dbd29

Added conversion methods between integer and float types
author Michael Pavone <pavone@retrodev.com>
date Tue, 24 Mar 2015 21:49:45 -0700
parents 615f23450f8f
children 50760ba52b11
files cbackend.js
diffstat 1 files changed, 32 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cbackend.js	Mon Mar 23 21:21:43 2015 -0700
+++ b/cbackend.js	Tue Mar 24 21:49:45 2015 -0700
@@ -861,6 +861,20 @@
 				});
 			}
 		}
+		if (size > 16) {
+			var retType = 'obj_float' + size;
+			var retName = 'retfloat' + size;
+			var vars = {};
+			vars[retName] = retType + ' *';
+			intObj.addMessage((size > bits ? 'f' : 'truncF') + size, {
+				vars: vars,
+				lines: [
+					retName + ' = make_object(&' + retType + '_meta, NULL, 0);',
+					retName + '->num = self->num;',
+					'return &(' + retName + '->header);'
+				]
+			})
+		}
 	}
 
 	return intObj;
@@ -900,6 +914,24 @@
 			'return &(trans->header);'
 		]
 	});
+	var sizes = [8, 16, 32, 64];
+	var prefixes = ['U', ''];
+	for (var i = 0; i < sizes.length; i++) {
+		for (var j = 0; j < prefixes.length; j++) {
+			var ret = 'ret' + i + j;
+			var vars = {};
+			var retType = 'obj_' + prefixes[j].toLowerCase() + 'int' + sizes[i];
+			vars[ret] = retType + ' *';
+			floatObj.addMessage('trunc' + prefixes[j] + 'Int' + sizes[i], {
+				vars: vars,
+				lines: [
+					ret + ' = make_object(&' + retType + '_meta, NULL, 0);',
+					ret + '->num = self->num;',
+					'return &(' + ret + '->header);'
+				]
+			});
+		}
+	}
 	return floatObj;
 }