mtardy 4 лет назад
Родитель
Сommit
40186d1ff6
2 измененных файлов: 10 добавлений и 25 удалений
  1. +8
    -0
      object.c
  2. +2
    -25
      parse.leg

+ 8
- 0
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));

+ 2
- 25
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<len; ++i) {
map_set(map, makeInteger(i), makeInteger(get(arg, String, value)[i]));
}
return map;
}
case Symbol: {
oop map= makeMap();
size_t len= strlen(get(arg, Symbol, name));
for(size_t i=0; i<len; ++i) {
map_set(map, makeInteger(i), makeInteger(get(arg, Symbol, name)[i]));
}
return map;
return makeMapCapacity(getInteger(arg));
}
case Map: {
return clone(arg);

Загрузка…
Отмена
Сохранить