ソースを参照

add map clear implementation (#288)

Aurel 6 年 前
コミット
31fb0ef4f0
2 ファイル変更7 行追加0 行削除
  1. 3 0
      src/std/maps.c
  2. 4 0
      src/std/maps.h

+ 3 - 0
src/std/maps.c

@@ -233,6 +233,7 @@ DEFINE_PRIM( _DYN, higet, _IMAP _I32 );
 DEFINE_PRIM( _BOOL, hiremove, _IMAP _I32 );
 DEFINE_PRIM( _ARR, hikeys, _IMAP );
 DEFINE_PRIM( _ARR, hivalues, _IMAP );
+DEFINE_PRIM( _VOID, hiclear, _IMAP );
 
 #define _BMAP _ABSTRACT(hl_bytes_map)
 DEFINE_PRIM( _BMAP, hballoc, _NO_ARG );
@@ -242,6 +243,7 @@ DEFINE_PRIM( _DYN, hbget, _BMAP _BYTES );
 DEFINE_PRIM( _BOOL, hbremove, _BMAP _BYTES );
 DEFINE_PRIM( _ARR, hbkeys, _BMAP );
 DEFINE_PRIM( _ARR, hbvalues, _BMAP );
+DEFINE_PRIM( _VOID, hbclear, _BMAP );
 
 #define _OMAP _ABSTRACT(hl_obj_map)
 DEFINE_PRIM( _OMAP, hoalloc, _NO_ARG );
@@ -251,3 +253,4 @@ DEFINE_PRIM( _DYN, hoget, _OMAP _DYN );
 DEFINE_PRIM( _BOOL, horemove, _OMAP _DYN );
 DEFINE_PRIM( _ARR, hokeys, _OMAP );
 DEFINE_PRIM( _ARR, hovalues, _OMAP );
+DEFINE_PRIM( _VOID, hoclear, _OMAP );

+ 4 - 0
src/std/maps.h

@@ -184,6 +184,10 @@ HL_PRIM varray* _MNAME(values)( t_map *m ) {
 	return a;
 }
 
+HL_PRIM void _MNAME(clear)( t_map *m ) {
+	memset(m,0,sizeof(t_map));
+}
+
 
 #undef hlt_key
 #undef hl_hbhash