OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / libgo / runtime / go-string.h
1 /* go-string.h -- the string type for Go.
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 #ifndef LIBGO_GO_STRING_H
8 #define LIBGO_GO_STRING_H
9
10 #include <stddef.h>
11
12 /* A string is an instance of this structure.  */
13
14 struct __go_string
15 {
16   /* The bytes.  */
17   const unsigned char *__data;
18   /* The length.  */
19   int __length;
20 };
21
22 static inline _Bool
23 __go_strings_equal (struct __go_string s1, struct __go_string s2)
24 {
25   return (s1.__length == s2.__length
26           && __builtin_memcmp (s1.__data, s2.__data, s1.__length) == 0);
27 }
28
29 static inline _Bool
30 __go_ptr_strings_equal (const struct __go_string *ps1,
31                         const struct __go_string *ps2)
32 {
33   if (ps1 == NULL)
34     return ps2 == NULL;
35   if (ps2 == NULL)
36     return 0;
37   return __go_strings_equal (*ps1, *ps2);
38 }
39
40 extern int __go_get_rune (const unsigned char *, size_t, int *);
41
42 #endif /* !defined(LIBGO_GO_STRING_H) */