1.1 --- a/templates/types.h Sun Nov 07 01:18:51 2021 +0100
1.2 +++ b/templates/types.h Mon Nov 08 00:25:46 2021 +0100
1.3 @@ -135,12 +135,15 @@
1.4
1.5 /* Attribute interpretation. */
1.6
1.7 -#define __NUM_TAG_BITS 1
1.8 -#define __TAG_MUTABLE 0b1
1.9 -#define __TAG_MASK 0b1
1.10 +#define __NUM_TAG_BITS 2
1.11 +#define __TAG_COPYABLE 0b01UL
1.12 +#define __TAG_MUTABLE 0b10UL
1.13 +#define __TAG_MASK 0b11UL
1.14
1.15 -#define __MUTABLE(ATTR) (((ATTR).rawvalue & __TAG_MASK) == __TAG_MUTABLE)
1.16 -#define __TO_MUTABLE(ATTR) ((__attr) (((ATTR).rawvalue & (~__TAG_MASK)) | __TAG_MUTABLE))
1.17 +#define __COPYABLE(ATTR) ((ATTR).rawvalue & __TAG_COPYABLE)
1.18 +#define __MUTABLE(ATTR) ((ATTR).rawvalue & __TAG_MUTABLE)
1.19 +#define __TO_IMMUTABLE(ATTR) ((__attr) {.rawvalue=(ATTR).rawvalue & (~__TAG_MUTABLE)})
1.20 +#define __TO_MUTABLE(ATTR) ((__attr) {.rawvalue=(ATTR).rawvalue | __TAG_MASK})
1.21
1.22 /* Attribute value setting. */
1.23