summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-01-05 01:50:45 +0000
committerDamien George <damien.p.george@gmail.com>2014-01-05 01:50:45 +0000
commit45b43c21c4f8e30dcff00c2429eddba20ca002aa (patch)
treeb04e264d29ff25c20f02c0b9f48561ba109c8342 /py
parent8b2688f893951e93428a91ad8db30b19343febc9 (diff)
downloadmicropython-45b43c21c4f8e30dcff00c2429eddba20ca002aa.tar.gz
micropython-45b43c21c4f8e30dcff00c2429eddba20ca002aa.zip
Oops: add objint.c
Diffstat (limited to 'py')
-rw-r--r--py/objint.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/py/objint.c b/py/objint.c
new file mode 100644
index 0000000000..5bc747e8f0
--- /dev/null
+++ b/py/objint.c
@@ -0,0 +1,48 @@
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <assert.h>
+
+#include "nlr.h"
+#include "misc.h"
+#include "mpconfig.h"
+#include "mpqstr.h"
+#include "obj.h"
+
+typedef struct _mp_obj_int_t {
+ mp_obj_base_t base;
+} mp_obj_int_t;
+
+static mp_obj_t int_make_new(mp_obj_t type_in, int n_args, const mp_obj_t *args) {
+ switch (n_args) {
+ case 0:
+ return MP_OBJ_NEW_SMALL_INT(0);
+
+ case 1:
+ // TODO allow string as arg and parse it
+ return MP_OBJ_NEW_SMALL_INT(mp_obj_get_int(args[0]));
+
+ //case 2:
+ // TODO, parse with given base
+
+ default:
+ nlr_jump(mp_obj_new_exception_msg_1_arg(MP_QSTR_TypeError, "int takes at most 2 arguments, %d given", (void*)(machine_int_t)n_args));
+ }
+}
+
+const mp_obj_type_t int_type = {
+ { &mp_const_type },
+ "int",
+ NULL,
+ int_make_new, // make_new
+ NULL, // call_n
+ NULL, // unary_op
+ NULL, // binary_op
+ NULL, // getiter
+ NULL, // iternext
+ { { NULL, NULL }, }, // method list
+};
+
+mp_obj_t mp_obj_new_int(machine_int_t value) {
+ return MP_OBJ_NEW_SMALL_INT(value);
+}