Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/frontend.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,12 @@ static int build_langtype(char *buf, size_t cap, const char *kind, uint8_t store
}

/* 由 base 种类名(+ndim)推 storetype——便利编码函数用;WriteNewPlace 直接收 storetype。 */
/* map langtype:`{memitemkeylangtype}·{memitemvaluelangtype}`(见 spec [[map容器]])。值容器物理
* 布局恒 index(成员名索引落兄弟槽 `{key}·`)——`·` 之前的方括号是键类型,绝非维度。 */
static int is_map_langtype(const char *kind) {
return kind && strstr(kind, KVSPACE_MEMBER_SEP) != NULL;
}

static int is_index_kind(const char *kind) {
return strcmp(kind, KVSPACE_KIND_INDEX) == 0
|| strcmp(kind, KVSPACE_KIND_EXT_INDEX) == 0
Expand All @@ -322,7 +328,7 @@ static int is_index_kind(const char *kind) {
static uint8_t storetype_of(const char *kind, int ndim) {
if (!kind || !kind[0]) return KVSPACE_STORETYPE_NONE;
if (strcmp(kind, KVSPACE_KIND_EXT_INDEX) == 0) return KVSPACE_STORETYPE_EXTINDEX;
if (is_index_kind(kind)) return KVSPACE_STORETYPE_INDEX;
if (is_index_kind(kind) || is_map_langtype(kind)) return KVSPACE_STORETYPE_INDEX;
if (ndim > 0) return KVSPACE_STORETYPE_ARRAYND;
return KVSPACE_STORETYPE_ATOM;
}
Expand Down
Loading