forked from Imagelibrary/littlefs
Tweaked LFSR_TAG_STICKYNOTE encoding 0x205 -> 0x203
Now that LFS_TYPE_STICKYNOTE is a real type users can interact with, it
makes sense to group it with REG/DIR. This also has the side-effect of
making these contiguous.
---
LFSR_TAG_BOOKMARKs, however, are still hidden from the user. This
unfortunately means there will be a bit of a jump if we ever add
LFS_TYPE_SYMLINK in the future, but I'm starting to wonder if that's the
best way to approach symlinks in littlefs...
If instead LFS_TYPE_SYMLINKS were implied via custom attribute, you
could avoid the headache that comes with adding a new tag encoding, and
allow perfect compatibility with non-symlink drivers. Win win.
This seems like a better approach for _all_ of the theoretical future
types (compressed files, device files, etc), and avoids the risk of
oversaturating the type space.
---
This had a surprising impact on code for just a minor encoding tweak. I
guess the contiguousness pushed the compiler to use tables/ranges for
more things? Or maybe 3 vs 5 is just an easier constant to encode?
code stack ctx
before: 35952 2440 640
after: 35928 (-0.1%) 2440 (+0.0%) 640 (+0.0%)
This commit is contained in:
@@ -44,8 +44,8 @@ TAG_GRMDELTA = 0x0100 # 0x0100 v--- ---1 ---- ----
|
||||
TAG_NAME = 0x0200 ## 0x02tt v--- --1- -ttt tttt
|
||||
TAG_REG = 0x0201 # 0x0201 v--- --1- ---- ---1
|
||||
TAG_DIR = 0x0202 # 0x0202 v--- --1- ---- --1-
|
||||
TAG_STICKYNOTE = 0x0203 # 0x0203 v--- --1- ---- --11
|
||||
TAG_BOOKMARK = 0x0204 # 0x0204 v--- --1- ---- -1--
|
||||
TAG_STICKYNOTE = 0x0205 # 0x0205 v--- --1- ---- -1-1
|
||||
TAG_STRUCT = 0x0300 ## 0x03tt v--- --11 -ttt tttt
|
||||
TAG_DATA = 0x0300 # 0x0300 v--- --11 ---- ----
|
||||
TAG_BLOCK = 0x0304 # 0x0304 v--- --11 ---- -1rr
|
||||
@@ -317,8 +317,8 @@ def tagrepr(tag, weight=None, size=None, *,
|
||||
'name' if (tag & 0xfff) == TAG_NAME
|
||||
else 'reg' if (tag & 0xfff) == TAG_REG
|
||||
else 'dir' if (tag & 0xfff) == TAG_DIR
|
||||
else 'bookmark' if (tag & 0xfff) == TAG_BOOKMARK
|
||||
else 'stickynote' if (tag & 0xfff) == TAG_STICKYNOTE
|
||||
else 'bookmark' if (tag & 0xfff) == TAG_BOOKMARK
|
||||
else 'name 0x%02x' % (tag & 0xff),
|
||||
' w%d' % weight if weight else '',
|
||||
' %s' % size if size is not None else '')
|
||||
|
||||
Reference in New Issue
Block a user