circuitpython/py
Paul Sokolovsky 0ef01d0a75 py: Implement core of OrderedDict type.
Given that there's already support for "fixed table" maps, which are
essentially ordered maps, the implementation of OrderedDict just extends
"fixed table" maps by adding an "is ordered" flag and add/remove
operations, and reuses 95% of objdict code, just making methods tolerant
to both dict and OrderedDict.

Some things are missing so far, like CPython-compatible repr and comparison.

OrderedDict is Disabled by default; enabled on unix and stmhal ports.
2015-03-20 17:26:10 +00:00
..
argcheck.c py, unix, stmhal: Allow to compile with -Wshadow. 2015-01-20 11:55:10 +00:00
asmarm.c py: Allocate memory for assembled code at start of PASS_EMIT. 2015-01-14 00:38:33 +00:00
asmarm.h py: Add guarded includes for asm-based headers. 2015-01-01 18:07:43 +00:00
asmthumb.c py: In inline assembler, fix branch out-of-range error reporting. 2015-03-02 17:51:32 +00:00
asmthumb.h py: For inline assembler, add bcc_n and bcc_w ops. 2015-03-02 14:29:52 +00:00
asmx64.c py/asm*.c: Typo fixes in comments. 2015-02-14 02:20:35 +08:00
asmx64.h py: Allow asmx64 to compile with -Wsign-compare. 2015-01-22 14:08:58 +00:00
asmx86.c py/asm*.c: Typo fixes in comments. 2015-02-14 02:20:35 +08:00
asmx86.h py: Add guarded includes for asm-based headers. 2015-01-01 18:07:43 +00:00
bc0.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
bc.c py, unix: Allow to compile with -Wsign-compare. 2015-01-16 17:47:07 +00:00
bc.h py: Make old_globals part of mp_code_state structure. 2015-02-15 19:24:15 +03:00
binary.c objarray: Support array('O'), array of objects, as extension to CPython. 2015-03-05 22:58:31 +02:00
binary.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
builtin.h py: Add setattr builtin. 2015-02-14 23:35:00 +00:00
builtinevex.c py: Check for valid file when creating lexer for execfile. 2015-02-15 00:02:27 +00:00
builtinimport.c builtinimport: Revamp&refactor handling of relative imports. 2015-02-16 12:11:34 +02:00
compile.c py, extmod: Remove include of unnecessary system headers. 2015-03-14 23:11:25 +00:00
compile.h py: Protect mp_parse and mp_compile with nlr push/pop block. 2015-02-07 18:33:58 +00:00
emit.h py: Give error for duplicate label in inline assembler. 2015-03-03 17:08:02 +00:00
emitbc.c py: Combine emit functions for jump true/false to reduce code size. 2015-02-28 15:04:06 +00:00
emitcommon.c py: Remove unnecessary id_flags argument from emitter's load_fast. 2015-01-16 12:24:49 +00:00
emitcpy.c py: Combine emit functions for jump true/false to reduce code size. 2015-02-28 15:04:06 +00:00
emitglue.c py: Don't use anonymous unions, name them instead. 2015-01-24 23:14:12 +00:00
emitglue.h py: Don't use anonymous unions, name them instead. 2015-01-24 23:14:12 +00:00
emitinlinethumb.c py: In inline assembler, reset labels on code-size pass. 2015-03-03 17:34:49 +00:00
emitnative.c py: Combine emit functions for jump true/false to reduce code size. 2015-02-28 15:04:06 +00:00
emitpass1.c py: Combine emit functions for jump true/false to reduce code size. 2015-02-28 15:04:06 +00:00
formatfloat.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
formatfloat.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
frozenmod.c py: Implement very simple frozen modules support. 2015-01-20 11:52:12 +02:00
frozenmod.h py: Implement very simple frozen modules support. 2015-01-20 11:52:12 +02:00
gc.c py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
gc.h py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
grammar.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
lexer.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
lexer.h py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
lexerstr.c py: Use m_{new,renew,del} consistently. 2015-02-27 09:34:51 +00:00
lexerunix.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
makeqstrdata.py py/makeqstrdata.py: Make it work again with both Python2 and Python3. 2015-01-11 22:40:38 +00:00
malloc.c py: Add MICROPY_MALLOC_USES_ALLOCATED_SIZE to allow simpler malloc API. 2015-03-03 21:23:13 +00:00
map.c py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
misc.h py: Add MICROPY_MALLOC_USES_ALLOCATED_SIZE to allow simpler malloc API. 2015-03-03 21:23:13 +00:00
mkenv.mk py, mk: Revert change where build variables set with ?=. 2014-06-07 13:14:45 +01:00
mkrules.mk py: Fix order-only dependencies in mkrules.mk and py.mk. 2014-11-06 18:48:38 +00:00
modarray.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
modbuiltins.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
modcmath.c py: Fix cmath.log10; fix printing of complex number with negative imag. 2015-02-02 12:52:14 +00:00
modcollections.c py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
modgc.c py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
modio.c py: Use TextIOWrapper only if PY_IO_FILEIO def'd; cast size_t for print. 2015-02-15 13:17:11 +00:00
modmath.c py: Make math special functions configurable and disabled by default. 2015-02-22 14:48:18 +00:00
modmicropython.c py: Use TextIOWrapper only if PY_IO_FILEIO def'd; cast size_t for print. 2015-02-15 13:17:11 +00:00
modstruct.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
modsys.c py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
mpconfig.h py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
mpstate.c py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
mpstate.h py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
mpz.c py: Make some mpz functions static and remove unused ones. 2015-03-12 22:48:45 +00:00
mpz.h py: Make some mpz functions static and remove unused ones. 2015-03-12 22:48:45 +00:00
nativeglue.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
nlr.h py: Guard against redef of nlr_push with DEBUG + MICROPY_NLR_SETJMP. 2015-03-03 14:34:40 +00:00
nlrsetjmp.c py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
nlrthumb.S py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
nlrx64.S py: Fix nlr mp_state_ctx symbol error for Mac. 2015-01-08 16:24:44 +00:00
nlrx86.S py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
nlrxtensa.S py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
obj.c py: Fix mp_obj_print() to work when Python streams are not used. 2015-02-17 00:32:18 +02:00
obj.h py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
objarray.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
objbool.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objboundmeth.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objcell.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objclosure.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objcomplex.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
objdict.c py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
objenumerate.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objexcept.c py: Use m_{new,renew,del} consistently. 2015-02-27 09:34:51 +00:00
objexcept.h py: Fix adding of traceback so that it appends to existing info. 2015-02-27 00:36:39 +00:00
objfilter.c py: Use mp_arg_check_num in some _make_new functions. 2015-01-20 14:11:27 +00:00
objfloat.c py, extmod: Remove include of unnecessary system headers. 2015-03-14 23:11:25 +00:00
objfun.c py: Make old_globals part of mp_code_state structure. 2015-02-15 19:24:15 +03:00
objfun.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objgenerator.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objgenerator.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objgetitemiter.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objint_longlong.c py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objint_mpz.c py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objint.c py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objint.h py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objlist.c objarray: Implement array slice assignment. 2015-02-27 22:17:15 +02:00
objlist.h py: Fix adding of traceback so that it appends to existing info. 2015-02-27 00:36:39 +00:00
objmap.c py: Use mp_arg_check_num in some _make_new functions. 2015-01-20 14:11:27 +00:00
objmodule.c py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
objmodule.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objnamedtuple.c py: Fix segfault in namedtuple when name is a non-interned string 2015-01-24 20:21:09 +00:00
objnone.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objobject.c py: Use mp_arg_check_num in some _make_new functions. 2015-01-20 14:11:27 +00:00
objproperty.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objrange.c py: Add support for start/stop/step attributes of builtin range object. 2015-03-11 20:02:06 +00:00
objreversed.c py: Implement __reversed__ slot. 2015-01-21 00:19:42 +00:00
objset.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objslice.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objstr.c py: Remove unnecessary and unused sgn argument from pfenv_print_mp_int. 2015-03-14 22:32:40 +00:00
objstr.h objstr: Remove code duplication and unbreak Windows build. 2015-01-23 02:15:56 +02:00
objstringio.c py: Prevent segfault for operations on closed StringIO. 2015-01-20 23:50:43 +00:00
objstrunicode.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
objtuple.c py: Use m_{new,renew,del} consistently. 2015-02-27 09:34:51 +00:00
objtuple.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objtype.c objtype: More comment clarification for attribute lookup. 2015-03-20 00:51:55 +02:00
objtype.h py: Add option to cache map lookup results in bytecode. 2015-01-07 21:07:23 +00:00
objzip.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
opmethods.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
parse.c py: Update parse.c&mpconfig.h to reflect rename of mp_lexer_show_token. 2015-02-23 21:36:05 +00:00
parse.h py: Expose compile.c:list_get as mp_parse_node_extract_list. 2015-02-13 02:29:46 +00:00
parsenum.c py: Fix printing of error message when parsing malformed integer. 2015-03-16 10:42:50 +00:00
parsenum.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
parsenumbase.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
parsenumbase.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
pfenv_printf.c py: In pfenv_vprintf, adjust type from mp_uint_t to unsigned int. 2015-03-14 23:09:57 +00:00
pfenv.c py: Remove unnecessary and unused sgn argument from pfenv_print_mp_int. 2015-03-14 22:32:40 +00:00
pfenv.h py: Remove unnecessary and unused sgn argument from pfenv_print_mp_int. 2015-03-14 22:32:40 +00:00
py-version.sh - Let the build environment decide about the toolchain to be used, in case 2014-06-07 09:16:42 +02:00
py.mk py: Protect mp_parse and mp_compile with nlr push/pop block. 2015-02-07 18:33:58 +00:00
qstr.c py: Add option to micropython.qstr_info() to dump actual qstrs. 2015-02-10 11:02:28 +00:00
qstr.h py: Add option to micropython.qstr_info() to dump actual qstrs. 2015-02-10 11:02:28 +00:00
qstrdefs.h py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
repl.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
repl.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
runtime0.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
runtime.c runtime: Typo fixes in comments. 2015-03-03 21:37:50 +02:00
runtime.h py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
scope.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
scope.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
sequence.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
showbc.c py: Implement DELETE_GLOBAL in showbc.c. 2015-03-20 17:12:09 +00:00
smallint.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
smallint.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
stackctrl.c stackctrl: Encode "recursion depth exceeded" message as qstr. 2015-02-15 22:41:14 +03:00
stackctrl.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
stream.c py: Change vstr so that it doesn't null terminate buffer by default. 2015-01-28 23:43:01 +00:00
stream.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
unicode.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
unicode.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
vm.c py: Small optimisation of logic flow in BC_WITH_CLEANUP bytecode. 2015-02-26 17:54:50 +00:00
vmentrytable.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
vstr.c py: Change vstr_null_terminate -> vstr_null_terminated_str, returns str. 2015-01-29 13:57:23 +00:00
warning.c py: Can compile with -Wmissing-declarations and -Wmissing-prototypes. 2015-01-12 22:30:49 +00:00