mirror of
https://github.com/golang/go
synced 2024-11-20 04:54:44 -07:00
108 lines
2.0 KiB
C
108 lines
2.0 KiB
C
|
// 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.
|
||
|
|
||
|
|
||
|
/*
|
||
|
* basic types
|
||
|
*/
|
||
|
typedef signed char int8;
|
||
|
typedef unsigned char uint8;
|
||
|
typedef signed short int16;
|
||
|
typedef unsigned short uint16;
|
||
|
typedef signed int int32;
|
||
|
typedef unsigned int uint32;
|
||
|
typedef signed long long int int64;
|
||
|
typedef unsigned long long int uint64;
|
||
|
typedef float float32;
|
||
|
typedef double float64;
|
||
|
|
||
|
/*
|
||
|
* get rid of C types
|
||
|
*/
|
||
|
#define unsigned XXunsigned
|
||
|
#define signed XXsigned
|
||
|
#define char XXchar
|
||
|
#define short XXshort
|
||
|
#define int XXint
|
||
|
#define long XXlong
|
||
|
#define float XXfloat
|
||
|
#define double XXdouble
|
||
|
|
||
|
/*
|
||
|
* defined types
|
||
|
*/
|
||
|
typedef uint8 bool;
|
||
|
typedef uint8 byte;
|
||
|
typedef struct
|
||
|
{
|
||
|
int32 len;
|
||
|
byte str[1];
|
||
|
} *string;
|
||
|
typedef struct
|
||
|
{
|
||
|
byte* name;
|
||
|
uint32 hash;
|
||
|
void (*fun)(void);
|
||
|
} Sigs;
|
||
|
typedef struct
|
||
|
{
|
||
|
byte* name;
|
||
|
uint32 hash;
|
||
|
uint32 offset;
|
||
|
} Sigi;
|
||
|
typedef struct Map Map;
|
||
|
struct Map
|
||
|
{
|
||
|
Sigi* si;
|
||
|
Sigs* ss;
|
||
|
Map* link;
|
||
|
int32 bad;
|
||
|
int32 unused;
|
||
|
void (*fun[])(void);
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* defined constants
|
||
|
*/
|
||
|
enum
|
||
|
{
|
||
|
true = 1,
|
||
|
false = 0,
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* defined macros
|
||
|
* you need super-goru privilege
|
||
|
* to add this list.
|
||
|
*/
|
||
|
#define nelem(x) (sizeof(x)/sizeof((x)[0]))
|
||
|
#define nil ((void*)0)
|
||
|
|
||
|
/*
|
||
|
* very low level
|
||
|
*/
|
||
|
void FLUSH(void*);
|
||
|
void prints(int8*);
|
||
|
void sys_exit(int32);
|
||
|
void sys_write(int32, void*, int32);
|
||
|
void sys_breakpoint(void);
|
||
|
uint8* sys_mmap(byte*, uint32, int32, int32, int32, uint32);
|
||
|
void sys_memclr(byte*, uint32);
|
||
|
|
||
|
/*
|
||
|
* runtime
|
||
|
*/
|
||
|
void sys_printbool(bool);
|
||
|
void sys_printfloat(float64);
|
||
|
void sys_printint(int64);
|
||
|
void sys_printstring(string);
|
||
|
void sys_catstring(string, string, string);
|
||
|
void sys_cmpstring(string, string, int32);
|
||
|
void sys_slicestring(string, int32, int32, string);
|
||
|
void sys_indexstring(string, int32, byte);
|
||
|
void sys_intstring(int64, string);
|
||
|
void sys_ifaces2i(Sigi*, Sigs*, Map*, void*);
|
||
|
void sys_ifacei2i(Sigi*, Map*, void*);
|
||
|
void sys_ifacei2s(Sigs*, Map*, void*);
|