| // 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; |
| }; |