| // 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. | |
| /* | |
| * Runtime type representation; master is type.go | |
| */ | |
| typedef struct CommonType CommonType; | |
| typedef struct UncommonType UncommonType; | |
| typedef struct InterfaceType InterfaceType; | |
| typedef struct Method Method; | |
| typedef struct IMethod IMethod; | |
| typedef struct MapType MapType; | |
| typedef struct ChanType ChanType; | |
| struct CommonType | |
| { | |
| uintptr size; | |
| uint32 hash; | |
| uint8 alg; | |
| uint8 align; | |
| uint8 fieldAlign; | |
| String *string; | |
| UncommonType *x; | |
| }; | |
| struct Method | |
| { | |
| uint32 hash; | |
| String *name; | |
| String *pkgPath; | |
| Type *typ; | |
| void (*ifn)(void); | |
| void (*tfn)(void); | |
| }; | |
| struct UncommonType | |
| { | |
| String *name; | |
| String *pkgPath; | |
| Slice mhdr; | |
| Method m[]; | |
| }; | |
| struct Type | |
| { | |
| void *type; // interface{} value | |
| void *ptr; | |
| CommonType; | |
| }; | |
| struct IMethod | |
| { | |
| uint32 hash; | |
| uint32 perm; | |
| String *name; | |
| String *pkgPath; | |
| Type *type; | |
| }; | |
| struct InterfaceType | |
| { | |
| Type; | |
| Slice mhdr; | |
| IMethod m[]; | |
| }; | |
| struct MapType | |
| { | |
| Type; | |
| Type *key; | |
| Type *elem; | |
| }; | |
| struct ChanType | |
| { | |
| Type; | |
| Type *elem; | |
| uintptr dir; | |
| }; |