Damien George
9c4cbe2ac0
py: Make tuple and list use mp_int_t/mp_uint_t.
...
Part of code cleanup, to resolve issue #50 .
2014-08-30 14:04:14 +01:00
Damien George
3c658a4e75
py: Fix bug where GC collected native/viper/asm function data.
...
Because (for Thumb) a function pointer has the LSB set, pointers to
dynamic functions in RAM (eg native, viper or asm functions) were not
being traced by the GC. This patch is a comprehensive fix for this.
Addresses issue #820 .
2014-08-24 16:28:17 +01:00
Damien George
4c03b3a899
py: Implement builtin reversed() function.
...
reversed function now implemented, and works for tuple, list, str, bytes
and user objects with __len__ and __getitem__.
Renamed mp_builtin_len to mp_obj_len to make it publically available (eg
for reversed).
2014-08-12 18:33:40 +01:00
Paul Sokolovsky
7133d91773
py: mp_buffer_info_t::buf may be valid, but NULL for empty objects.
...
This happens for example for zero-size arrays. As .get_buffer() method now
has explicit return value, it's enough to distinguish success vs failure
of getting buffer.
2014-08-10 16:22:48 +03:00
Damien George
bb4c6f35c6
py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself.
...
Addresses issue #724 .
2014-07-31 10:49:14 +01:00
Damien George
ffe911d228
py: Make long ints hashable.
...
Addresses issue #765 .
2014-07-24 14:21:37 +01:00
Damien George
40f3c02682
Rename machine_(u)int_t to mp_(u)int_t.
...
See discussion in issue #50 .
2014-07-03 13:25:24 +01:00
Paul Sokolovsky
caa7334141
stackctrl: Add "mp_" prefix.
2014-07-01 02:14:08 +03:00
Damien George
b3a50f0f3e
Merge branch 'master' into unicode
...
Conflicts:
py/mpconfig.h
2014-06-28 10:27:15 +01:00
Paul Sokolovsky
8993fb6cf0
py: Add protection against printing too nested or recursive data structures.
...
With a test which cannot be automatically validated so far.
2014-06-28 02:25:04 +03:00
Paul Sokolovsky
e7f2b4c875
objstrunicode: Revamp len() handling for unicode, and optimize bool().
2014-06-27 00:04:18 +03:00
Paul Sokolovsky
3b6f7b95eb
py: Separate MICROPY_PY_BUILTINS_COMPLEX from MICROPY_PY_BUILTINS_FLOAT.
...
One thing is wanting to do 1 / 2 and get something else but 0, and quite
another - doing rocket science ;-).
2014-06-20 18:00:23 +03:00
Damien George
fb510b3bf9
Rename bultins config variables to MICROPY_PY_BUILTINS_*.
...
This renames:
MICROPY_PY_FROZENSET -> MICROPY_PY_BUILTINS_FROZENSET
MICROPY_PY_PROPERTY -> MICROPY_PY_BUILTINS_PROPERTY
MICROPY_PY_SLICE -> MICROPY_PY_BUILTINS_SLICE
MICROPY_ENABLE_FLOAT -> MICROPY_PY_BUILTINS_FLOAT
See issue #35 for discussion.
2014-06-01 13:32:54 +01:00
Damien George
6ac5dced24
py: Rename MP_OBJ_NOT_SUPPORTED to MP_OBJ_NULL.
...
See issue #608 for justification.
2014-05-21 19:42:43 +01:00
Paul Sokolovsky
ab7bf28489
py: More const usage.
2014-05-17 11:20:10 +03:00
Paul Sokolovsky
7e7940c39d
py: Fix __len__ special method result handling.
...
Having both MP_OBJ_NOT_SUPPORTED and MP_OBJ_NULL is arguably confusing.
2014-05-11 20:51:31 +03:00
Paul Sokolovsky
7aca1cae34
py: Start making good use of mp_const_obj_t.
2014-05-11 02:26:42 +03:00
Paul Sokolovsky
0bc15941c2
py: Make mp_obj_print() handle null object w/o segfault if debug build.
...
Happens regularly when used for debugging.
2014-05-10 21:26:07 +03:00
Damien George
04b9147e15
Add license header to (almost) all files.
...
Blanket wide to all .c and .h files. Some files originating from ST are
difficult to deal with (license wise) so it was left out of those.
Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
2014-05-03 23:27:38 +01:00
Paul Sokolovsky
f54bcbf099
py, unix: Make "mpconfig.h" be first included, as other headers depend on it.
...
Specifically, nlr.h does.
2014-05-02 17:48:40 +03:00
Damien George
b11b85adaa
py: Allow to pass buffer protocol flags to get_buffer helper funcs.
2014-04-18 22:59:24 +01:00
Damien George
57a4b4f178
py: Add typecode to buffer protocol.
...
When querying an object that supports the buffer protocol, that object
must now return a typecode (as per binary.[ch]). This does not have to
be honoured by the caller, but can be useful for determining element
size.
2014-04-18 22:29:21 +01:00
Damien George
ea8d06c39d
py: Add MP_OBJ_STOP_ITERATION and make good use of it.
...
Also make consistent use of MP_OBJ_NOT_SUPPORTED and MP_OBJ_NULL.
This helps a lot in debugging and understanding of function API.
2014-04-17 23:19:36 +01:00
Damien George
729f7b42d6
py: Merge BINARY_OP_SUBSCR and store_subscr (w/ delete) into subscr.
...
mp_obj_t->subscr now does load/store/delete.
2014-04-17 22:10:53 +01:00
Damien George
ee01411036
py: Add len(bytes).
2014-04-15 23:10:00 +01:00
Damien George
0e4ba25834
py: Fix SyntaxError exception: don't have a block name, so pass NULL.
2014-04-13 15:01:28 +01:00
Damien George
8a1cab952f
py: Fix mp_get_buffer, and use it in more places.
...
Must use mp_obj_get_type to get the type of an object. Can't assume
mp_obj_t is castable to mp_obj_base_t.
2014-04-13 12:08:52 +01:00
Paul Sokolovsky
f130ca1f60
py: Make bytes type hashable.
2014-04-13 06:45:12 +03:00
Damien George
a5c82a8187
py: Convert some macros to inline functions (in obj.h).
...
Also convert mp_obj_is_integer to an inline function.
Overall this decreased code size (at least on 32-bit x86 machine).
2014-04-11 11:16:53 +00:00
Damien George
e22d76e73b
py: Fix up object equality test.
...
It regressed a bit after implementing float/complex equality. Now it
should be improved, and support more equality tests.
2014-04-11 10:52:06 +00:00
Damien George
a9ddd6d9df
py: Simplify and improve mp_get_index.
...
It has (again) a fast path for ints, and a simplified "slow" path for
everything else.
Also simplify the way str indexing is done (now matches tuple and list).
2014-04-11 10:40:38 +00:00
Damien George
b8a053aeb1
py: Implement float and complex == and !=.
...
Addresses issue #462 .
2014-04-11 10:10:37 +01:00
Damien George
686afc5c0a
py: Check that sequence has 2 elements for dict iterable constructor.
2014-04-11 09:13:30 +01:00
Damien George
b5fbd0ba87
py: Add mp_obj_is_integer; make mp_get_index check for long int.
...
mp_obj_is_integer should be used to check if an object is of integral
type. It returns true for bool, small int and long int.
2014-04-09 19:55:33 +01:00
Paul Sokolovsky
3aa8ee7c9e
py: Add mp_get_buffer(), mp_get_buffer_raise() convenience functions to API.
2014-04-09 01:07:37 +03:00
Damien George
ea13f407a3
py: Change nlr_jump to nlr_raise, to aid in debugging.
...
This does not affect code size or performance when debugging turned off.
To address issue #420 .
2014-04-05 18:32:08 +01:00
Paul Sokolovsky
e99841be69
mp_obj_get_int(): Add warning against adding implicit float->int conversion.
2014-04-05 17:46:47 +03:00
Paul Sokolovsky
91cbe6033a
py: Allow types to be hashable.
...
Quite natural to have d[int] = handle_int .
2014-04-05 12:51:58 +03:00
Damien George
36f0ee1a54
py: Remove mp_obj_less (use mp_binary_op(MP_BINARY_OP_LESS..) instead).
2014-04-04 15:07:17 +01:00
Damien George
8270e3853d
py: More robust int conversion and overflow checking.
2014-04-03 11:00:54 +00:00
Damien George
e09320adb5
py: Remove implicit conversion from int to float.
2014-04-01 10:56:07 +01:00
Dave Hylands
baf6f14deb
Enhance str.format support
...
This adds support for almost everything (the comma isn't currently
supported).
The "unspecified" type with floats also doesn't behave exactly like
python.
Tested under unix with float and double
Spot tested on stmhal
2014-04-01 01:17:33 -07:00
Paul Sokolovsky
a96d3d0840
objexcept: No more magic messages in exceptions, only exception arguments.
...
One of the reason for separate "message" (besides still unfulfilled desire to
optimize memory usage) was apparent special handling of exception with
messages by CPython. Well, the message is still just an exception argument,
it just printed specially. Implement that with PRINT_EXC printing format.
2014-03-31 02:23:56 +03:00
Damien George
e0f2979aed
py: Add equality test for None object.
2014-03-30 23:16:42 +01:00
Damien George
df6567e634
Merge map.h into obj.h.
...
Pretty much everyone needs to include map.h, since it's such an integral
part of the Micro Python object implementation. Thus, the definitions
are now in obj.h instead. map.h is removed.
2014-03-30 13:54:02 +01:00
Damien George
d17926db71
Rename rt_* to mp_*.
...
Mostly just a global search and replace. Except rt_is_true which
becomes mp_obj_is_true.
Still would like to tidy up some of the names, but this will do for now.
2014-03-30 13:35:08 +01:00
Paul Sokolovsky
0ae518fb9e
mp_obj_print_exception(): Assert that traceback has sane number of entries.
2014-03-30 04:16:24 +03:00
Damien George
0aa5d51cf1
py: Support mpz -op- float, mpz -op- complex, and complex -op- mpz.
2014-03-29 17:28:20 +00:00
Damien George
3e1a5c10c5
py: Rename old const type objects to mp_type_* for consistency.
2014-03-29 13:43:38 +00:00
Damien George
07ddab529c
py: Change mp_const_* objects to macros.
...
Addresses issue #388 .
2014-03-29 13:15:08 +00:00