github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/third_party/gofrontend/libgo/runtime/go-construct-map.c (about) 1 /* go-construct-map.c -- construct a map from an initializer. 2 3 Copyright 2009 The Go Authors. All rights reserved. 4 Use of this source code is governed by a BSD-style 5 license that can be found in the LICENSE file. */ 6 7 #include <stddef.h> 8 #include <stdint.h> 9 #include <stdlib.h> 10 11 #include "runtime.h" 12 #include "map.h" 13 14 struct __go_map * 15 __go_construct_map (const struct __go_map_descriptor *descriptor, 16 uintptr_t count, uintptr_t entry_size, 17 uintptr_t val_offset, uintptr_t val_size, 18 const void *ventries) 19 { 20 struct __go_map *ret; 21 const unsigned char *entries; 22 uintptr_t i; 23 24 ret = __go_new_map (descriptor, count); 25 26 entries = (const unsigned char *) ventries; 27 for (i = 0; i < count; ++i) 28 { 29 void *val = __go_map_index (ret, entries, 1); 30 __builtin_memcpy (val, entries + val_offset, val_size); 31 entries += entry_size; 32 } 33 34 return ret; 35 }