| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
When rendering the qstr for a C header file, the double-quate character
must be escaped.
|
| |
|
| |
|
|
|
|
|
| |
The qstr data needs to be turned into a proper C string so non-ASCII
chars must be properly escaped according to C rules.
|
|
|
|
|
| |
Non-printable characters are escaped as 0xXX, where XX are the hex
digits of the character value.
|
| |
|
|
|
|
| |
The usual cause would be that a cross-compiler for a port is not in PATH.
|
|
|
|
|
|
| |
Fetch the current usb mode and return a string representation when
pyb.usb_mode() is called with no args. The possible string values are interned
as qstr's. None will be returned if an incorrect mode is set.
|
| |
|
|
|
|
|
|
|
| |
This patch makes configurable, via MICROPY_QSTR_BYTES_IN_HASH, the
number of bytes used for a qstr hash. It was originally fixed at 2
bytes, and now defaults to 2 bytes. Setting it to 1 byte will save
ROM and RAM at a small expense of hash collisions.
|
|
|
|
|
| |
These scripts should run under as wide a range of Python versions as
possible.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new config option sets how many fixed-number-of-bytes to use to
store the length of each qstr. Previously this was hard coded to 2,
but, as per issue #1056, this is considered overkill since no-one
needs identifiers longer than 255 bytes.
With this patch the number of bytes for the length is configurable, and
defaults to 1 byte. The configuration option filters through to the
makeqstrdata.py script.
Code size savings going from 2 to 1 byte:
- unix x64 down by 592 bytes
- stmhal down by 1148 bytes
- bare-arm down by 284 bytes
Also has RAM savings, and will be slightly more efficient in execution.
|
| |
|
| |
|
|
|
|
|
| |
Script is equivalent, but now also runs under ancient Python 2.6.
Goes part way to addressing issue #847.
|
| |
|
|
|
|
|
|
|
|
|
| |
The original parsing would error out on any C declarations that are not typedefs
or extern variables. This limits what can go in mpconfig.h and mpconfigport.h,
as they are included in qstr.h. For instance even a function declaration would be
rejected and including system headers is a complete no-go.
That seems too limiting for a global config header, so makeqstrdata now
ignores everything that does not match a qstr definition.
|
| |
|
| |
|
|
|
|
| |
I was too hasty. Still a one-liner though.
|
|
|
|
| |
A one-liner, added especially for @pfalcon :)
|
| |
|
| |
|
|
|
|
|
| |
These largely duplicate str() & bytes() constructors' functionality,
but can be used to achieve Python2 compatibility.
|
|
|
|
|
| |
This is alternative implementation of supporting conditionals in qstrdefs.h,
hard to say if it's much cleaner than munging #ifdef's in Python code...
|
|
|
|
|
|
| |
This reverts commit acb133d1b1a68847bd85c545312c3e221a6f7c0b.
Conditionals will be suported using C preprocessor.
|
|
|
|
| |
Syntax is usual C #if*/#endif, but each qstr must be wrapped individually.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This is compatible with what search path was before sys.path refactor,
with addition of module library path ("0:/lib").
|
|
|
|
|
|
| |
Ultimately all static strings should be qstr. This entry in the type
structure is only used for printing error messages (to tell the type of
the bad argument), and printing objects that don't supply a .print method.
|
|
|
|
|
| |
Want common qstrs to be first in the list so they have the lowest ids,
so that in the byte code they take up the least room.
|
|
|
|
|
| |
Also, add qstr's for string appearing in unix REPL loop, gross effect
being less allocations for each command run.
|
| |
|
|
Can now have null bytes in strings. Can define ROM qstrs per port using
qstrdefsport.h
|