diff options
author | Dan Albert <danalbert@google.com> | 2016-02-04 18:51:25 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-02-04 18:51:25 +0000 |
commit | edbbe53c4ffa154a5f9ae3f89ba8105993d8800e (patch) | |
tree | 4cedb380a14027d9c4d1e531c2340c43cbd79175 /gcc-4.8.1/libgo/runtime/go-string-to-int-array.c | |
parent | a4ca82cac69c3147143d7b4b4d7cdeb5e02f20ef (diff) | |
parent | 3186be22b6598fbd467b126347d1c7f48ccb7f71 (diff) | |
download | toolchain_gcc-edbbe53c4ffa154a5f9ae3f89ba8105993d8800e.tar.gz toolchain_gcc-edbbe53c4ffa154a5f9ae3f89ba8105993d8800e.tar.bz2 toolchain_gcc-edbbe53c4ffa154a5f9ae3f89ba8105993d8800e.zip |
Merge "Check in a pristine copy of GCC 4.8.1."
Diffstat (limited to 'gcc-4.8.1/libgo/runtime/go-string-to-int-array.c')
-rw-r--r-- | gcc-4.8.1/libgo/runtime/go-string-to-int-array.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gcc-4.8.1/libgo/runtime/go-string-to-int-array.c b/gcc-4.8.1/libgo/runtime/go-string-to-int-array.c new file mode 100644 index 000000000..16970bdd0 --- /dev/null +++ b/gcc-4.8.1/libgo/runtime/go-string-to-int-array.c @@ -0,0 +1,51 @@ +/* go-string-to-int-array.c -- convert a string to an array of ints in Go. + + Copyright 2010 The Go Authors. All rights reserved. + Use of this source code is governed by a BSD-style + license that can be found in the LICENSE file. */ + +#include "runtime.h" +#include "go-alloc.h" +#include "go-string.h" +#include "array.h" +#include "arch.h" +#include "malloc.h" + +struct __go_open_array +__go_string_to_int_array (String str) +{ + size_t c; + const unsigned char *p; + const unsigned char *pend; + uint32_t *data; + uint32_t *pd; + struct __go_open_array ret; + + c = 0; + p = str.str; + pend = p + str.len; + while (p < pend) + { + int rune; + + ++c; + p += __go_get_rune (p, pend - p, &rune); + } + + data = (uint32_t *) runtime_mallocgc (c * sizeof (uint32_t), FlagNoPointers, + 1, 0); + p = str.str; + pd = data; + while (p < pend) + { + int rune; + + p += __go_get_rune (p, pend - p, &rune); + *pd++ = rune; + } + + ret.__values = (void *) data; + ret.__count = c; + ret.__capacity = c; + return ret; +} |