From 40186d1ff64001dfc13c6017262aedf89c8edcc6 Mon Sep 17 00:00:00 2001 From: mtardy Date: Tue, 8 Sep 2020 09:07:25 +0200 Subject: [PATCH] Fix Map factory --- object.c | 8 ++++++++ parse.leg | 27 ++------------------------- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/object.c b/object.c index 6e47932..388a12a 100644 --- a/object.c +++ b/object.c @@ -357,6 +357,14 @@ oop makeMap() return newMap; } +oop makeMapCapacity(size_t capa) +{ + oop map= makeMap(); + set(map, Map, elements, realloc(get(map, Map, elements), sizeof(struct Pair) * capa)); + set(map, Map, capacity, capa); + return map; +} + size_t map_size(oop map) { assert(is(Map, map)); diff --git a/parse.leg b/parse.leg index c5b6579..795dcbb 100644 --- a/parse.leg +++ b/parse.leg @@ -2046,37 +2046,14 @@ oop prim_Integer(oop scope, oop params) oop prim_Map(oop scope, oop params) { - if (!map_hasIntegerKey(params, 0)) return null; + if (!map_hasIntegerKey(params, 0)) return makeMap(); oop arg= get(params, Map, elements)[0].value; switch (getType(arg)) { case Undefined: { return makeMap(); } case Integer: { - oop map= makeMap(); - map_set(map, makeInteger(0), arg); - return map; - } - case Function: { - oop map= makeMap(); - map_set(map, get(arg, Function, name), arg); - return map; - } - case String: { - oop map= makeMap(); - size_t len= string_size(arg); - for(size_t i=0; i