| // Copyright 2009 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. |
| |
| |
| extern char gotypestrings[]; // 4-byte count followed by byte[count] |
| |
| void FLUSH(void*); |
| |
| typedef struct String String; |
| struct String |
| { |
| char* str; |
| char len[4]; |
| char cap[4]; |
| }; |
| |
| void |
| reflectยทtypestrings(String str) |
| { |
| char *s; |
| int i; |
| |
| s = gotypestrings; |
| |
| // repeat the count twice |
| // once for len, once for cap |
| for(i=0; i<4; i++) { |
| str.len[i] = s[i]; |
| str.cap[i] = s[i]; |
| } |
| |
| // and the pointer |
| str.str = s+4; |
| |
| FLUSH(&str); |
| } |