1
0
mirror of https://github.com/golang/go synced 2024-11-22 02:34:40 -07:00

delete export

TBR=r
OCL=23121
CL=23127
This commit is contained in:
Russ Cox 2009-01-20 14:40:40 -08:00
parent 0183baaf44
commit 839a68469b
234 changed files with 1198 additions and 1199 deletions

View File

@ -9,7 +9,7 @@ import (
"syscall"; "syscall";
) )
export type FD struct { type FD struct {
fildes int64; // file descriptor number fildes int64; // file descriptor number
name string; // file name at Open time name string; // file name at Open time
} }
@ -21,13 +21,13 @@ func newFD(fd int64, name string) *FD {
return &FD{fd, name} return &FD{fd, name}
} }
export var ( var (
Stdin = newFD(0, "/dev/stdin"); Stdin = newFD(0, "/dev/stdin");
Stdout = newFD(1, "/dev/stdout"); Stdout = newFD(1, "/dev/stdout");
Stderr = newFD(2, "/dev/stderr"); Stderr = newFD(2, "/dev/stderr");
) )
export func Open(name string, mode int64, perm int64) (fd *FD, err *os.Error) { func Open(name string, mode int64, perm int64) (fd *FD, err *os.Error) {
r, e := syscall.Open(name, mode, perm); r, e := syscall.Open(name, mode, perm);
return newFD(r, name), os.ErrnoToError(e) return newFD(r, name), os.ErrnoToError(e)
} }

View File

@ -4,13 +4,13 @@
package sort package sort
export type SortInterface interface { type SortInterface interface {
Len() int; Len() int;
Less(i, j int) bool; Less(i, j int) bool;
Swap(i, j int); Swap(i, j int);
} }
export func Sort(data SortInterface) { func Sort(data SortInterface) {
for i := 1; i < data.Len(); i++ { for i := 1; i < data.Len(); i++ {
for j := i; j > 0 && data.Less(j, j-1); j-- { for j := i; j > 0 && data.Less(j, j-1); j-- {
data.Swap(j, j-1); data.Swap(j, j-1);
@ -18,7 +18,7 @@ export func Sort(data SortInterface) {
} }
} }
export func IsSorted(data SortInterface) bool { func IsSorted(data SortInterface) bool {
n := data.Len(); n := data.Len();
for i := n - 1; i > 0; i-- { for i := n - 1; i > 0; i-- {
if data.Less(i, i - 1) { if data.Less(i, i - 1) {
@ -30,21 +30,21 @@ export func IsSorted(data SortInterface) bool {
// Convenience types for common cases // Convenience types for common cases
export type IntArray []int type IntArray []int
func (p IntArray) Len() int { return len(p); } func (p IntArray) Len() int { return len(p); }
func (p IntArray) Less(i, j int) bool { return p[i] < p[j]; } func (p IntArray) Less(i, j int) bool { return p[i] < p[j]; }
func (p IntArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; } func (p IntArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; }
export type FloatArray []float type FloatArray []float
func (p FloatArray) Len() int { return len(p); } func (p FloatArray) Len() int { return len(p); }
func (p FloatArray) Less(i, j int) bool { return p[i] < p[j]; } func (p FloatArray) Less(i, j int) bool { return p[i] < p[j]; }
func (p FloatArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; } func (p FloatArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; }
export type StringArray []string type StringArray []string
func (p StringArray) Len() int { return len(p); } func (p StringArray) Len() int { return len(p); }
func (p StringArray) Less(i, j int) bool { return p[i] < p[j]; } func (p StringArray) Less(i, j int) bool { return p[i] < p[j]; }
@ -53,11 +53,11 @@ func (p StringArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; }
// Convenience wrappers for common cases // Convenience wrappers for common cases
export func SortInts(a []int) { Sort(IntArray(a)); } func SortInts(a []int) { Sort(IntArray(a)); }
export func SortFloats(a []float) { Sort(FloatArray(a)); } func SortFloats(a []float) { Sort(FloatArray(a)); }
export func SortStrings(a []string) { Sort(StringArray(a)); } func SortStrings(a []string) { Sort(StringArray(a)); }
export func IntsAreSorted(a []int) bool { return IsSorted(IntArray(a)); } func IntsAreSorted(a []int) bool { return IsSorted(IntArray(a)); }
export func FloatsAreSorted(a []float) bool { return IsSorted(FloatArray(a)); } func FloatsAreSorted(a []float) bool { return IsSorted(FloatArray(a)); }
export func StringsAreSorted(a []string) bool { return IsSorted(StringArray(a)); } func StringsAreSorted(a []string) bool { return IsSorted(StringArray(a)); }

View File

@ -69,35 +69,35 @@ func arrays2d(old *any, nel int) (ary []any);
// used by go programs // used by go programs
export func Breakpoint(); func Breakpoint();
export func Reflect(i interface { }) (uint64, string, bool); func Reflect(i interface { }) (uint64, string, bool);
export func Unreflect(uint64, string, bool) (ret interface { }); func Unreflect(uint64, string, bool) (ret interface { });
export var Args []string; var Args []string;
export var Envs []string; var Envs []string;
export func Frexp(float64) (float64, int); // break fp into exp,fract func Frexp(float64) (float64, int); // break fp into exp,fract
export func Ldexp(float64, int) float64; // make fp from exp,fract func Ldexp(float64, int) float64; // make fp from exp,fract
export func Modf(float64) (float64, float64); // break fp into double.double func Modf(float64) (float64, float64); // break fp into double.double
export func IsInf(float64, int) bool; // test for infinity func IsInf(float64, int) bool; // test for infinity
export func IsNaN(float64) bool; // test for not-a-number func IsNaN(float64) bool; // test for not-a-number
export func Inf(int) float64; // return signed Inf func Inf(int) float64; // return signed Inf
export func NaN() float64; // return a NaN func NaN() float64; // return a NaN
export func Float32bits(float32) uint32; // raw bits func Float32bits(float32) uint32; // raw bits
export func Float64bits(float64) uint64; // raw bits func Float64bits(float64) uint64; // raw bits
export func Float32frombits(uint32) float32; // raw bits func Float32frombits(uint32) float32; // raw bits
export func Float64frombits(uint64) float64; // raw bits func Float64frombits(uint64) float64; // raw bits
export func Gosched(); func Gosched();
export func Goexit(); func Goexit();
export func BytesToRune(*byte, int, int) (int, int); // convert bytes to runes func BytesToRune(*byte, int, int) (int, int); // convert bytes to runes
export func StringToRune(string, int) (int, int); // convert bytes to runes func StringToRune(string, int) (int, int); // convert bytes to runes
export func Exit(int); func Exit(int);
export func Caller(n int) (pc uint64, file string, line int, ok bool); func Caller(n int) (pc uint64, file string, line int, ok bool);
export func SemAcquire(sema *int32); func SemAcquire(sema *int32);
export func SemRelease(sema *int32); func SemRelease(sema *int32);

View File

@ -52,7 +52,7 @@ import "fmt"
// results are packed again. For faster unpacking/packing, the base size // results are packed again. For faster unpacking/packing, the base size
// in bits must be even. // in bits must be even.
export type ( type (
Digit uint64; Digit uint64;
Digit2 uint32; // half-digits for division Digit2 uint32; // half-digits for division
) )
@ -91,7 +91,7 @@ func isSmall(x Digit) bool {
} }
export func Dump(x []Digit) { func Dump(x []Digit) {
print("[", len(x), "]"); print("[", len(x), "]");
for i := len(x) - 1; i >= 0; i-- { for i := len(x) - 1; i >= 0; i-- {
print(" ", x[i]); print(" ", x[i]);
@ -111,7 +111,7 @@ export func Dump(x []Digit) {
// n, m len(x), len(y) // n, m len(x), len(y)
export type Natural []Digit; type Natural []Digit;
var ( var (
natZero Natural = Natural{}; natZero Natural = Natural{};
@ -123,7 +123,7 @@ var (
// Creation // Creation
export func Nat(x uint) Natural { func Nat(x uint) Natural {
switch x { switch x {
case 0: return natZero; case 0: return natZero;
case 1: return natOne; case 1: return natOne;
@ -696,7 +696,7 @@ func muladd1(x Natural, d, c Digit) Natural {
// Determines base (octal, decimal, hexadecimal) if base == 0. // Determines base (octal, decimal, hexadecimal) if base == 0.
// Returns the number and base. // Returns the number and base.
export func NatFromString(s string, base uint, slen *int) (Natural, uint) { func NatFromString(s string, base uint, slen *int) (Natural, uint) {
// determine base if necessary // determine base if necessary
i, n := 0, len(s); i, n := 0, len(s);
if base == 0 { if base == 0 {
@ -766,7 +766,7 @@ func (xp Natural) Pow(n uint) Natural {
} }
export func MulRange(a, b uint) Natural { func MulRange(a, b uint) Natural {
switch { switch {
case a > b: return Nat(1); case a > b: return Nat(1);
case a == b: return Nat(a); case a == b: return Nat(a);
@ -778,14 +778,14 @@ export func MulRange(a, b uint) Natural {
} }
export func Fact(n uint) Natural { func Fact(n uint) Natural {
// Using MulRange() instead of the basic for-loop // Using MulRange() instead of the basic for-loop
// lead to faster factorial computation. // lead to faster factorial computation.
return MulRange(2, n); return MulRange(2, n);
} }
export func Binomial(n, k uint) Natural { func Binomial(n, k uint) Natural {
return MulRange(n-k+1, n).Div(MulRange(1, k)); return MulRange(n-k+1, n).Div(MulRange(1, k));
} }
@ -806,7 +806,7 @@ func (xp Natural) Gcd(y Natural) Natural {
// Integers are normalized if the mantissa is normalized and the sign is // Integers are normalized if the mantissa is normalized and the sign is
// false for mant == 0. Use MakeInt to create normalized Integers. // false for mant == 0. Use MakeInt to create normalized Integers.
export type Integer struct { type Integer struct {
sign bool; sign bool;
mant Natural; mant Natural;
} }
@ -814,7 +814,7 @@ export type Integer struct {
// Creation // Creation
export func MakeInt(sign bool, mant Natural) *Integer { func MakeInt(sign bool, mant Natural) *Integer {
if mant.IsZero() { if mant.IsZero() {
sign = false; // normalize sign = false; // normalize
} }
@ -822,7 +822,7 @@ export func MakeInt(sign bool, mant Natural) *Integer {
} }
export func Int(x int) *Integer { func Int(x int) *Integer {
sign := false; sign := false;
var ux uint; var ux uint;
if x < 0 { if x < 0 {
@ -1103,7 +1103,7 @@ func (x *Integer) Format(h fmt.Formatter, c int) {
// Determines base (octal, decimal, hexadecimal) if base == 0. // Determines base (octal, decimal, hexadecimal) if base == 0.
// Returns the number and base. // Returns the number and base.
export func IntFromString(s string, base uint, slen *int) (*Integer, uint) { func IntFromString(s string, base uint, slen *int) (*Integer, uint) {
// get sign, if any // get sign, if any
sign := false; sign := false;
if len(s) > 0 && (s[0] == '-' || s[0] == '+') { if len(s) > 0 && (s[0] == '-' || s[0] == '+') {
@ -1126,7 +1126,7 @@ export func IntFromString(s string, base uint, slen *int) (*Integer, uint) {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Rational numbers // Rational numbers
export type Rational struct { type Rational struct {
a *Integer; // numerator a *Integer; // numerator
b Natural; // denominator b Natural; // denominator
} }
@ -1134,7 +1134,7 @@ export type Rational struct {
// Creation // Creation
export func MakeRat(a *Integer, b Natural) *Rational { func MakeRat(a *Integer, b Natural) *Rational {
f := a.mant.Gcd(b); // f > 0 f := a.mant.Gcd(b); // f > 0
if f.Cmp(Nat(1)) != 0 { if f.Cmp(Nat(1)) != 0 {
a = MakeInt(a.sign, a.mant.Div(f)); a = MakeInt(a.sign, a.mant.Div(f));
@ -1144,7 +1144,7 @@ export func MakeRat(a *Integer, b Natural) *Rational {
} }
export func Rat(a0 int, b0 int) *Rational { func Rat(a0 int, b0 int) *Rational {
a, b := Int(a0), Int(b0); a, b := Int(a0), Int(b0);
if b.sign { if b.sign {
a = a.Neg(); a = a.Neg();
@ -1233,7 +1233,7 @@ func (x *Rational) Format(h fmt.Formatter, c int) {
// Determines base (octal, decimal, hexadecimal) if base == 0. // Determines base (octal, decimal, hexadecimal) if base == 0.
// Returns the number and base of the nominator. // Returns the number and base of the nominator.
export func RatFromString(s string, base uint, slen *int) (*Rational, uint) { func RatFromString(s string, base uint, slen *int) (*Rational, uint) {
// read nominator // read nominator
var alen, blen int; var alen, blen int;
a, abase := IntFromString(s, base, &alen); a, abase := IntFromString(s, base, &alen);

View File

@ -90,7 +90,7 @@ func rat_eq(n uint, x, y *bignum.Rational) {
} }
} }
export func TestNatConv(t *testing.T) { func TestNatConv(t *testing.T) {
tester = t; tester = t;
test_msg = "NatConvA"; test_msg = "NatConvA";
nat_eq(0, a, bignum.Nat(991)); nat_eq(0, a, bignum.Nat(991));
@ -122,7 +122,7 @@ export func TestNatConv(t *testing.T) {
} }
export func TestIntConv(t *testing.T) { func TestIntConv(t *testing.T) {
tester = t; tester = t;
test_msg = "IntConv"; test_msg = "IntConv";
var slen int; var slen int;
@ -140,7 +140,7 @@ export func TestIntConv(t *testing.T) {
} }
export func TestRatConv(t *testing.T) { func TestRatConv(t *testing.T) {
tester = t; tester = t;
test_msg = "RatConv"; test_msg = "RatConv";
var slen int; var slen int;
@ -176,7 +176,7 @@ func sum(n uint, scale bignum.Natural) bignum.Natural {
} }
export func TestNatAdd(t *testing.T) { func TestNatAdd(t *testing.T) {
tester = t; tester = t;
test_msg = "NatAddA"; test_msg = "NatAddA";
nat_eq(0, add(nat_zero, nat_zero), nat_zero); nat_eq(0, add(nat_zero, nat_zero), nat_zero);
@ -206,7 +206,7 @@ func mul(x, y bignum.Natural) bignum.Natural {
} }
export func TestNatSub(t *testing.T) { func TestNatSub(t *testing.T) {
tester = t; tester = t;
test_msg = "NatSubA"; test_msg = "NatSubA";
nat_eq(0, nat_zero.Sub(nat_zero), nat_zero); nat_eq(0, nat_zero.Sub(nat_zero), nat_zero);
@ -223,7 +223,7 @@ export func TestNatSub(t *testing.T) {
} }
export func TestNatMul(t *testing.T) { func TestNatMul(t *testing.T) {
tester = t; tester = t;
test_msg = "NatMulA"; test_msg = "NatMulA";
nat_eq(0, mul(c, nat_zero), nat_zero); nat_eq(0, mul(c, nat_zero), nat_zero);
@ -242,7 +242,7 @@ export func TestNatMul(t *testing.T) {
} }
export func TestNatDiv(t *testing.T) { func TestNatDiv(t *testing.T) {
tester = t; tester = t;
test_msg = "NatDivA"; test_msg = "NatDivA";
nat_eq(0, c.Div(nat_one), c); nat_eq(0, c.Div(nat_one), c);
@ -260,7 +260,7 @@ export func TestNatDiv(t *testing.T) {
} }
export func TestIntQuoRem(t *testing.T) { func TestIntQuoRem(t *testing.T) {
tester = t; tester = t;
test_msg = "IntQuoRem"; test_msg = "IntQuoRem";
type T struct { x, y, q, r int }; type T struct { x, y, q, r int };
@ -287,7 +287,7 @@ export func TestIntQuoRem(t *testing.T) {
} }
export func TestIntDivMod(t *testing.T) { func TestIntDivMod(t *testing.T) {
tester = t; tester = t;
test_msg = "IntDivMod"; test_msg = "IntDivMod";
type T struct { x, y, q, r int }; type T struct { x, y, q, r int };
@ -314,7 +314,7 @@ export func TestIntDivMod(t *testing.T) {
} }
export func TestNatMod(t *testing.T) { func TestNatMod(t *testing.T) {
tester = t; tester = t;
test_msg = "NatModA"; test_msg = "NatModA";
for i := uint(0); ; i++ { for i := uint(0); ; i++ {
@ -330,7 +330,7 @@ export func TestNatMod(t *testing.T) {
} }
export func TestNatShift(t *testing.T) { func TestNatShift(t *testing.T) {
tester = t; tester = t;
test_msg = "NatShift1L"; test_msg = "NatShift1L";
test(0, b.Shl(0).Cmp(b) == 0); test(0, b.Shl(0).Cmp(b) == 0);
@ -365,7 +365,7 @@ export func TestNatShift(t *testing.T) {
} }
export func TestIntShift(t *testing.T) { func TestIntShift(t *testing.T) {
tester = t; tester = t;
test_msg = "IntShift1L"; test_msg = "IntShift1L";
test(0, ip.Shl(0).Cmp(ip) == 0); test(0, ip.Shl(0).Cmp(ip) == 0);
@ -404,7 +404,7 @@ export func TestIntShift(t *testing.T) {
} }
export func TestNatCmp(t *testing.T) { func TestNatCmp(t *testing.T) {
tester = t; tester = t;
test_msg = "NatCmp"; test_msg = "NatCmp";
test(0, a.Cmp(a) == 0); test(0, a.Cmp(a) == 0);
@ -417,7 +417,7 @@ export func TestNatCmp(t *testing.T) {
} }
export func TestNatLog2(t *testing.T) { func TestNatLog2(t *testing.T) {
tester = t; tester = t;
test_msg = "NatLog2A"; test_msg = "NatLog2A";
test(0, nat_one.Log2() == 0); test(0, nat_one.Log2() == 0);
@ -432,7 +432,7 @@ export func TestNatLog2(t *testing.T) {
} }
export func TestNatGcd(t *testing.T) { func TestNatGcd(t *testing.T) {
tester = t; tester = t;
test_msg = "NatGcdA"; test_msg = "NatGcdA";
f := bignum.Nat(99991); f := bignum.Nat(99991);
@ -440,7 +440,7 @@ export func TestNatGcd(t *testing.T) {
} }
export func TestNatPow(t *testing.T) { func TestNatPow(t *testing.T) {
tester = t; tester = t;
test_msg = "NatPowA"; test_msg = "NatPowA";
nat_eq(0, nat_two.Pow(0), nat_one); nat_eq(0, nat_two.Pow(0), nat_one);
@ -452,7 +452,7 @@ export func TestNatPow(t *testing.T) {
} }
export func TestNatPop(t *testing.T) { func TestNatPop(t *testing.T) {
tester = t; tester = t;
test_msg = "NatPopA"; test_msg = "NatPopA";
test(0, nat_zero.Pop() == 0); test(0, nat_zero.Pop() == 0);

View File

@ -21,7 +21,7 @@ const (
defaultBufSize = 4096 defaultBufSize = 4096
) )
export var ( var (
EndOfFile = os.NewError("end of file"); EndOfFile = os.NewError("end of file");
PhaseError = os.NewError("phase error"); PhaseError = os.NewError("phase error");
BufferFull = os.NewError("buffer full"); BufferFull = os.NewError("buffer full");
@ -39,14 +39,14 @@ func copySlice(dst []byte, src []byte) {
// Buffered input. // Buffered input.
export type BufRead struct { type BufRead struct {
buf []byte; buf []byte;
rd io.Read; rd io.Read;
r, w int; r, w int;
err *os.Error; err *os.Error;
} }
export func NewBufReadSize(rd io.Read, size int) (b *BufRead, err *os.Error) { func NewBufReadSize(rd io.Read, size int) (b *BufRead, err *os.Error) {
if size <= 0 { if size <= 0 {
return nil, BadBufSize return nil, BadBufSize
} }
@ -56,7 +56,7 @@ export func NewBufReadSize(rd io.Read, size int) (b *BufRead, err *os.Error) {
return b, nil return b, nil
} }
export func NewBufRead(rd io.Read) (b *BufRead, err *os.Error) { func NewBufRead(rd io.Read) (b *BufRead, err *os.Error) {
return NewBufReadSize(rd, defaultBufSize); return NewBufReadSize(rd, defaultBufSize);
} }
@ -326,14 +326,14 @@ func (b *BufRead) ReadLineString(delim byte, savedelim bool) (line string, err *
// buffered output // buffered output
export type BufWrite struct { type BufWrite struct {
err *os.Error; err *os.Error;
buf []byte; buf []byte;
n int; n int;
wr io.Write; wr io.Write;
} }
export func NewBufWriteSize(wr io.Write, size int) (b *BufWrite, err *os.Error) { func NewBufWriteSize(wr io.Write, size int) (b *BufWrite, err *os.Error) {
if size <= 0 { if size <= 0 {
return nil, BadBufSize return nil, BadBufSize
} }
@ -343,7 +343,7 @@ export func NewBufWriteSize(wr io.Write, size int) (b *BufWrite, err *os.Error)
return b, nil return b, nil
} }
export func NewBufWrite(wr io.Write) (b *BufWrite, err *os.Error) { func NewBufWrite(wr io.Write) (b *BufWrite, err *os.Error) {
return NewBufWriteSize(wr, defaultBufSize); return NewBufWriteSize(wr, defaultBufSize);
} }

View File

@ -173,7 +173,7 @@ var bufsizes = []int {
23, 32, 46, 64, 93, 128, 1024, 4096 23, 32, 46, 64, 93, 128, 1024, 4096
} }
export func TestBufReadSimple(t *testing.T) { func TestBufReadSimple(t *testing.T) {
b, e := NewBufRead(newByteReader(io.StringBytes("hello world"))); b, e := NewBufRead(newByteReader(io.StringBytes("hello world")));
if s := readBytes(b); s != "hello world" { if s := readBytes(b); s != "hello world" {
t.Errorf("simple hello world test failed: got %q", s); t.Errorf("simple hello world test failed: got %q", s);
@ -185,7 +185,7 @@ export func TestBufReadSimple(t *testing.T) {
} }
} }
export func TestBufRead(t *testing.T) { func TestBufRead(t *testing.T) {
var texts [31]string; var texts [31]string;
str := ""; str := "";
all := ""; all := "";
@ -278,7 +278,7 @@ type writeMaker struct {
name string; name string;
fn *()writeBuffer; fn *()writeBuffer;
} }
export func TestBufWrite(t *testing.T) { func TestBufWrite(t *testing.T) {
var data [8192]byte; var data [8192]byte;
var writers = []writeMaker { var writers = []writeMaker {

View File

@ -4,11 +4,11 @@
package array package array
export type Element interface { type Element interface {
} }
export type Array struct { type Array struct {
// TODO do not export field // TODO do not export field
a []Element a []Element
} }
@ -35,7 +35,7 @@ func (p *Array) Init(initial_len int) *Array {
} }
export func New(len int) *Array { func New(len int) *Array {
return new(Array).Init(len) return new(Array).Init(len)
} }
@ -112,7 +112,7 @@ func (p *Array) Pop() Element {
// Partial SortInterface support // Partial SortInterface support
export type LessInterface interface { type LessInterface interface {
Less(y Element) bool Less(y Element) bool
} }

View File

@ -9,7 +9,7 @@ import "testing"
import "sort" import "sort"
export func TestInit(t *testing.T) { func TestInit(t *testing.T) {
var a array.Array; var a array.Array;
if a.Init(0).Len() != 0 { t.Error("A") } if a.Init(0).Len() != 0 { t.Error("A") }
if a.Init(1).Len() != 1 { t.Error("B") } if a.Init(1).Len() != 1 { t.Error("B") }
@ -17,19 +17,19 @@ export func TestInit(t *testing.T) {
} }
export func TestNew(t *testing.T) { func TestNew(t *testing.T) {
if array.New(0).Len() != 0 { t.Error("A") } if array.New(0).Len() != 0 { t.Error("A") }
if array.New(1).Len() != 1 { t.Error("B") } if array.New(1).Len() != 1 { t.Error("B") }
if array.New(10).Len() != 10 { t.Error("C") } if array.New(10).Len() != 10 { t.Error("C") }
} }
export func Val(i int) int { func Val(i int) int {
return i*991 - 1234 return i*991 - 1234
} }
export func TestAccess(t *testing.T) { func TestAccess(t *testing.T) {
const n = 100; const n = 100;
var a array.Array; var a array.Array;
a.Init(n); a.Init(n);
@ -42,7 +42,7 @@ export func TestAccess(t *testing.T) {
} }
export func TestInsertRemoveClear(t *testing.T) { func TestInsertRemoveClear(t *testing.T) {
const n = 100; const n = 100;
a := array.New(0); a := array.New(0);
@ -81,7 +81,7 @@ export func TestInsertRemoveClear(t *testing.T) {
/* currently doesn't compile due to linker bug /* currently doesn't compile due to linker bug
export func TestSorting(t *testing.T) { func TestSorting(t *testing.T) {
const n = 100; const n = 100;
a := array.NewIntArray(n); a := array.NewIntArray(n);
for i := n-1; i >= 0; i-- { for i := n-1; i >= 0; i-- {

View File

@ -6,7 +6,7 @@ package array
import "array" import "array"
export type IntArray struct { type IntArray struct {
// TODO do not export field // TODO do not export field
array.Array; array.Array;
} }
@ -18,7 +18,7 @@ func (p *IntArray) Init(len int) *IntArray {
} }
export func NewIntArray(len int) *IntArray { func NewIntArray(len int) *IntArray {
return new(IntArray).Init(len) return new(IntArray).Init(len)
} }

View File

@ -218,7 +218,7 @@ type _Value interface {
} }
// -- Flag structure (internal) // -- Flag structure (internal)
export type Flag struct { type Flag struct {
name string; name string;
usage string; usage string;
value _Value; value _Value;
@ -232,13 +232,13 @@ type allFlags struct {
var flags *allFlags = &allFlags{make(map[string] *Flag), make(map[string] *Flag), 1} var flags *allFlags = &allFlags{make(map[string] *Flag), make(map[string] *Flag), 1}
export func PrintDefaults() { func PrintDefaults() {
for k, f := range flags.formal { for k, f := range flags.formal {
print(" -", f.name, "=", f.value.str(), ": ", f.usage, "\n"); print(" -", f.name, "=", f.value.str(), ": ", f.usage, "\n");
} }
} }
export func Usage() { func Usage() {
if len(sys.Args) > 0 { if len(sys.Args) > 0 {
print("Usage of ", sys.Args[0], ": \n"); print("Usage of ", sys.Args[0], ": \n");
} else { } else {
@ -248,11 +248,11 @@ export func Usage() {
sys.Exit(1); sys.Exit(1);
} }
export func NFlag() int { func NFlag() int {
return len(flags.actual) return len(flags.actual)
} }
export func Arg(i int) string { func Arg(i int) string {
i += flags.first_arg; i += flags.first_arg;
if i < 0 || i >= len(sys.Args) { if i < 0 || i >= len(sys.Args) {
return ""; return "";
@ -260,7 +260,7 @@ export func Arg(i int) string {
return sys.Args[i] return sys.Args[i]
} }
export func NArg() int { func NArg() int {
return len(sys.Args) - flags.first_arg return len(sys.Args) - flags.first_arg
} }
@ -277,63 +277,63 @@ func add(name string, value _Value, usage string) {
flags.formal[name] = f; flags.formal[name] = f;
} }
export func Bool(name string, value bool, usage string) *bool { func Bool(name string, value bool, usage string) *bool {
p := new(bool); p := new(bool);
add(name, newBoolValue(value, p), usage); add(name, newBoolValue(value, p), usage);
return p; return p;
} }
export func BoolVar(p *bool, name string, value bool, usage string) { func BoolVar(p *bool, name string, value bool, usage string) {
add(name, newBoolValue(value, p), usage); add(name, newBoolValue(value, p), usage);
} }
export func Int(name string, value int, usage string) *int { func Int(name string, value int, usage string) *int {
p := new(int); p := new(int);
add(name, newIntValue(value, p), usage); add(name, newIntValue(value, p), usage);
return p; return p;
} }
export func IntVar(p *int, name string, value int, usage string) { func IntVar(p *int, name string, value int, usage string) {
add(name, newIntValue(value, p), usage); add(name, newIntValue(value, p), usage);
} }
export func Int64(name string, value int64, usage string) *int64 { func Int64(name string, value int64, usage string) *int64 {
p := new(int64); p := new(int64);
add(name, newInt64Value(value, p), usage); add(name, newInt64Value(value, p), usage);
return p; return p;
} }
export func Int64Var(p *int64, name string, value int64, usage string) { func Int64Var(p *int64, name string, value int64, usage string) {
add(name, newInt64Value(value, p), usage); add(name, newInt64Value(value, p), usage);
} }
export func Uint(name string, value uint, usage string) *uint { func Uint(name string, value uint, usage string) *uint {
p := new(uint); p := new(uint);
add(name, newUintValue(value, p), usage); add(name, newUintValue(value, p), usage);
return p; return p;
} }
export func UintVar(p *uint, name string, value uint, usage string) { func UintVar(p *uint, name string, value uint, usage string) {
add(name, newUintValue(value, p), usage); add(name, newUintValue(value, p), usage);
} }
export func Uint64(name string, value uint64, usage string) *uint64 { func Uint64(name string, value uint64, usage string) *uint64 {
p := new(uint64); p := new(uint64);
add(name, newUint64Value(value, p), usage); add(name, newUint64Value(value, p), usage);
return p; return p;
} }
export func Uint64Var(p *uint64, name string, value uint64, usage string) { func Uint64Var(p *uint64, name string, value uint64, usage string) {
add(name, newUint64Value(value, p), usage); add(name, newUint64Value(value, p), usage);
} }
export func String(name, value string, usage string) *string { func String(name, value string, usage string) *string {
p := new(string); p := new(string);
add(name, newStringValue(value, p), usage); add(name, newStringValue(value, p), usage);
return p; return p;
} }
export func StringVar(p *string, name, value string, usage string) { func StringVar(p *string, name, value string, usage string) {
add(name, newStringValue(value, p), usage); add(name, newStringValue(value, p), usage);
} }
@ -432,7 +432,7 @@ func (f *allFlags) ParseOne(index int) (ok bool, next int)
return true, index + 1 return true, index + 1
} }
export func Parse() { func Parse() {
for i := 1; i < len(sys.Args); { for i := 1; i < len(sys.Args); {
ok, next := flags.ParseOne(i); ok, next := flags.ParseOne(i);
if next > 0 { if next > 0 {

View File

@ -11,7 +11,7 @@ import (
"testing"; "testing";
) )
export func TestFmtInterface(t *testing.T) { func TestFmtInterface(t *testing.T) {
var i1 interface{}; var i1 interface{};
i1 = "abc"; i1 = "abc";
s := fmt.Sprintf("%s", i1); s := fmt.Sprintf("%s", i1);
@ -150,7 +150,7 @@ var fmttests = []fmtTest{
fmtTest{ "%20g", sys.NaN(), " NaN" }, fmtTest{ "%20g", sys.NaN(), " NaN" },
} }
export func TestSprintf(t *testing.T) { func TestSprintf(t *testing.T) {
for i := 0; i < len(fmttests); i++ { for i := 0; i < len(fmttests); i++ {
tt := fmttests[i]; tt := fmttests[i];
s := fmt.Sprintf(tt.fmt, tt.val); s := fmt.Sprintf(tt.fmt, tt.val);
@ -204,7 +204,7 @@ var flagtests = []flagTest {
flagTest{ "%-1.2abc", "[%-1.2a]bc" }, flagTest{ "%-1.2abc", "[%-1.2a]bc" },
} }
export func TestFlagParser(t *testing.T) { func TestFlagParser(t *testing.T) {
var flagprinter flagPrinter; var flagprinter flagPrinter;
for i := 0; i < len(flagtests); i++ { for i := 0; i < len(flagtests); i++ {
tt := flagtests[i]; tt := flagtests[i];
@ -215,7 +215,7 @@ export func TestFlagParser(t *testing.T) {
} }
} }
export func TestStructPrinter(t *testing.T) { func TestStructPrinter(t *testing.T) {
var s struct { var s struct {
a string; a string;
b string; b string;
@ -241,7 +241,7 @@ export func TestStructPrinter(t *testing.T) {
} }
} }
export func TestArrayPrinter(t *testing.T) { func TestArrayPrinter(t *testing.T) {
a := []int{1, 2, 3, 4, 5}; a := []int{1, 2, 3, 4, 5};
want := "[1 2 3 4 5]"; want := "[1 2 3 4 5]";
out := fmt.Sprintf("%v", a); out := fmt.Sprintf("%v", a);

View File

@ -33,7 +33,7 @@ func init() {
} }
} }
export type Fmt struct { type Fmt struct {
buf string; buf string;
wid int; wid int;
wid_present bool; wid_present bool;
@ -68,7 +68,7 @@ func (f *Fmt) init() {
f.clearflags(); f.clearflags();
} }
export func New() *Fmt { func New() *Fmt {
f := new(Fmt); f := new(Fmt);
f.init(); f.init();
return f; return f;

View File

@ -20,7 +20,7 @@ import (
// Representation of printer state passed to custom formatters. // Representation of printer state passed to custom formatters.
// Provides access to the io.Write interface plus information about // Provides access to the io.Write interface plus information about
// the active formatting verb. // the active formatting verb.
export type Formatter interface { type Formatter interface {
Write(b []byte) (ret int, err *os.Error); Write(b []byte) (ret int, err *os.Error);
Width() (wid int, ok bool); Width() (wid int, ok bool);
Precision() (prec int, ok bool); Precision() (prec int, ok bool);
@ -29,11 +29,11 @@ export type Formatter interface {
Flag(int) bool; Flag(int) bool;
} }
export type Format interface { type Format interface {
Format(f Formatter, c int); Format(f Formatter, c int);
} }
export type String interface { type String interface {
String() string String() string
} }
@ -129,7 +129,7 @@ func (p *pp) doprint(v reflect.StructValue, addspace, addnewline bool);
// These routines end in 'f' and take a format string. // These routines end in 'f' and take a format string.
export func Fprintf(w io.Write, format string, a ...) (n int, error *os.Error) { func Fprintf(w io.Write, format string, a ...) (n int, error *os.Error) {
v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue); v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue);
p := newPrinter(); p := newPrinter();
p.doprintf(format, v); p.doprintf(format, v);
@ -137,12 +137,12 @@ export func Fprintf(w io.Write, format string, a ...) (n int, error *os.Error) {
return n, error; return n, error;
} }
export func Printf(format string, v ...) (n int, errno *os.Error) { func Printf(format string, v ...) (n int, errno *os.Error) {
n, errno = Fprintf(os.Stdout, format, v); n, errno = Fprintf(os.Stdout, format, v);
return n, errno; return n, errno;
} }
export func Sprintf(format string, a ...) string { func Sprintf(format string, a ...) string {
v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue); v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue);
p := newPrinter(); p := newPrinter();
p.doprintf(format, v); p.doprintf(format, v);
@ -153,7 +153,7 @@ export func Sprintf(format string, a ...) string {
// These routines do not take a format string and add spaces only // These routines do not take a format string and add spaces only
// when the operand on neither side is a string. // when the operand on neither side is a string.
export func Fprint(w io.Write, a ...) (n int, error *os.Error) { func Fprint(w io.Write, a ...) (n int, error *os.Error) {
v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue); v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue);
p := newPrinter(); p := newPrinter();
p.doprint(v, false, false); p.doprint(v, false, false);
@ -161,12 +161,12 @@ export func Fprint(w io.Write, a ...) (n int, error *os.Error) {
return n, error; return n, error;
} }
export func Print(v ...) (n int, errno *os.Error) { func Print(v ...) (n int, errno *os.Error) {
n, errno = Fprint(os.Stdout, v); n, errno = Fprint(os.Stdout, v);
return n, errno; return n, errno;
} }
export func Sprint(a ...) string { func Sprint(a ...) string {
v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue); v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue);
p := newPrinter(); p := newPrinter();
p.doprint(v, false, false); p.doprint(v, false, false);
@ -178,7 +178,7 @@ export func Sprint(a ...) string {
// always add spaces between operands, and add a newline // always add spaces between operands, and add a newline
// after the last operand. // after the last operand.
export func Fprintln(w io.Write, a ...) (n int, error *os.Error) { func Fprintln(w io.Write, a ...) (n int, error *os.Error) {
v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue); v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue);
p := newPrinter(); p := newPrinter();
p.doprint(v, true, true); p.doprint(v, true, true);
@ -186,12 +186,12 @@ export func Fprintln(w io.Write, a ...) (n int, error *os.Error) {
return n, error; return n, error;
} }
export func Println(v ...) (n int, errno *os.Error) { func Println(v ...) (n int, errno *os.Error) {
n, errno = Fprintln(os.Stdout, v); n, errno = Fprintln(os.Stdout, v);
return n, errno; return n, errno;
} }
export func Sprintln(a ...) string { func Sprintln(a ...) string {
v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue); v := reflect.NewValue(a).(reflect.PtrValue).Sub().(reflect.StructValue);
p := newPrinter(); p := newPrinter();
p.doprint(v, true, true); p.doprint(v, true, true);

View File

@ -14,7 +14,7 @@ package adler32
import "os" import "os"
export type Digest struct { type Digest struct {
a, b uint32; a, b uint32;
n int; n int;
} }
@ -24,7 +24,7 @@ const (
_MaxIter = 5552; // max mod-free iterations before would overflow uint32 _MaxIter = 5552; // max mod-free iterations before would overflow uint32
) )
export func NewDigest() *Digest { func NewDigest() *Digest {
return &Digest{1, 0, 0}; return &Digest{1, 0, 0};
} }

View File

@ -49,7 +49,7 @@ var golden = []_Adler32Test {
_Adler32Test{ 0x2e5d1316, "How can you write a big system without C++? -Paul Glick" }, _Adler32Test{ 0x2e5d1316, "How can you write a big system without C++? -Paul Glick" },
} }
export func TestGolden(t *testing.T) { func TestGolden(t *testing.T) {
for i := 0; i < len(golden); i++ { for i := 0; i < len(golden); i++ {
g := golden[i]; g := golden[i];
c := NewDigest(); c := NewDigest();

View File

@ -9,7 +9,7 @@ package crc32
import "os" import "os"
export const ( const (
// Far and away the most common CRC-32 polynomial. // Far and away the most common CRC-32 polynomial.
// Used by ethernet (IEEE 802.3), v.42, fddi, gzip, zip, png, mpeg-2, ... // Used by ethernet (IEEE 802.3), v.42, fddi, gzip, zip, png, mpeg-2, ...
IEEE = 0xedb88320; IEEE = 0xedb88320;
@ -26,9 +26,9 @@ export const (
) )
// TODO(rsc): Change to [256]uint32 once 6g can handle it. // TODO(rsc): Change to [256]uint32 once 6g can handle it.
export type Table []uint32 type Table []uint32
export func MakeTable(poly uint32) Table { func MakeTable(poly uint32) Table {
t := make(Table, 256); t := make(Table, 256);
for i := 0; i < 256; i++ { for i := 0; i < 256; i++ {
crc := uint32(i); crc := uint32(i);
@ -44,18 +44,18 @@ export func MakeTable(poly uint32) Table {
return t; return t;
} }
export var IEEETable = MakeTable(IEEE); var IEEETable = MakeTable(IEEE);
export type Digest struct { type Digest struct {
crc uint32; crc uint32;
tab Table; tab Table;
} }
export func NewDigest(tab Table) *Digest { func NewDigest(tab Table) *Digest {
return &Digest{0, tab}; return &Digest{0, tab};
} }
export func NewIEEEDigest() *Digest { func NewIEEEDigest() *Digest {
return NewDigest(IEEETable); return NewDigest(IEEETable);
} }

View File

@ -49,7 +49,7 @@ var golden = []_Crc32Test {
_Crc32Test{ 0x8e0bb443, "How can you write a big system without C++? -Paul Glick" }, _Crc32Test{ 0x8e0bb443, "How can you write a big system without C++? -Paul Glick" },
} }
export func TestGolden(t *testing.T) { func TestGolden(t *testing.T) {
for i := 0; i < len(golden); i++ { for i := 0; i < len(golden); i++ {
g := golden[i]; g := golden[i];
c := NewIEEEDigest(); c := NewIEEEDigest();

View File

@ -17,14 +17,14 @@ const (
_Init3 = 0x10325476; _Init3 = 0x10325476;
) )
export type Digest struct { type Digest struct {
s [4]uint32; s [4]uint32;
x [_Chunk]byte; x [_Chunk]byte;
nx int; nx int;
len uint64; len uint64;
} }
export func NewDigest() *Digest { func NewDigest() *Digest {
d := new(Digest); d := new(Digest);
d.s[0] = _Init0; d.s[0] = _Init0;
d.s[1] = _Init1; d.s[1] = _Init1;

View File

@ -50,7 +50,7 @@ var golden = []md5Test {
md5Test{ "132f7619d33b523b1d9e5bd8e0928355", "How can you write a big system without C++? -Paul Glick" }, md5Test{ "132f7619d33b523b1d9e5bd8e0928355", "How can you write a big system without C++? -Paul Glick" },
} }
export func TestGolden(t *testing.T) { func TestGolden(t *testing.T) {
for i := 0; i < len(golden); i++ { for i := 0; i < len(golden); i++ {
g := golden[i]; g := golden[i];
c := NewDigest(); c := NewDigest();

View File

@ -18,14 +18,14 @@ const (
_Init4 = 0xC3D2E1F0; _Init4 = 0xC3D2E1F0;
) )
export type Digest struct { type Digest struct {
h [5]uint32; h [5]uint32;
x [_Chunk]byte; x [_Chunk]byte;
nx int; nx int;
len uint64; len uint64;
} }
export func NewDigest() *Digest { func NewDigest() *Digest {
d := new(Digest); d := new(Digest);
d.h[0] = _Init0; d.h[0] = _Init0;
d.h[1] = _Init1; d.h[1] = _Init1;

View File

@ -52,7 +52,7 @@ var golden = []sha1Test {
sha1Test{ "6627d6904d71420b0bf3886ab629623538689f45", "How can you write a big system without C++? -Paul Glick" }, sha1Test{ "6627d6904d71420b0bf3886ab629623538689f45", "How can you write a big system without C++? -Paul Glick" },
} }
export func TestGolden(t *testing.T) { func TestGolden(t *testing.T) {
for i := 0; i < len(golden); i++ { for i := 0; i < len(golden); i++ {
g := golden[i]; g := golden[i];
c := NewDigest(); c := NewDigest();

View File

@ -12,7 +12,7 @@ import (
) )
// Active HTTP connection (server side). // Active HTTP connection (server side).
export type Conn struct { type Conn struct {
rwc io.ReadWriteClose; rwc io.ReadWriteClose;
br *bufio.BufRead; br *bufio.BufRead;
bw *bufio.BufWrite; bw *bufio.BufWrite;
@ -21,7 +21,7 @@ export type Conn struct {
} }
// Create new connection from rwc. // Create new connection from rwc.
export func NewConn(rwc io.ReadWriteClose) (c *Conn, err *os.Error) { func NewConn(rwc io.ReadWriteClose) (c *Conn, err *os.Error) {
c = new(Conn); c = new(Conn);
c.rwc = rwc; c.rwc = rwc;
if c.br, err = bufio.NewBufRead(rwc); err != nil { if c.br, err = bufio.NewBufRead(rwc); err != nil {

View File

@ -19,7 +19,7 @@ const (
_MaxHeaderLines = 1024; _MaxHeaderLines = 1024;
) )
export var ( var (
LineTooLong = os.NewError("http header line too long"); LineTooLong = os.NewError("http header line too long");
ValueTooLong = os.NewError("http header value too long"); ValueTooLong = os.NewError("http header value too long");
HeaderTooLong = os.NewError("http header too long"); HeaderTooLong = os.NewError("http header too long");
@ -29,7 +29,7 @@ export var (
) )
// HTTP Request // HTTP Request
export type Request struct { type Request struct {
method string; // GET, PUT,etc. method string; // GET, PUT,etc.
rawurl string; rawurl string;
url *URL; // URI after GET, PUT etc. url *URL; // URI after GET, PUT etc.
@ -180,7 +180,7 @@ func parseHTTPVersion(vers string) (int, int, bool) {
} }
// Read and parse a request from b. // Read and parse a request from b.
export func ReadRequest(b *bufio.BufRead) (req *Request, err *os.Error) { func ReadRequest(b *bufio.BufRead) (req *Request, err *os.Error) {
req = new(Request); req = new(Request);
// First line: GET /index.html HTTP/1.0 // First line: GET /index.html HTTP/1.0

View File

@ -36,7 +36,7 @@ func serveConnection(fd net.Conn, raddr string, f *(*Conn, *Request)) {
} }
// Web server: already listening on l, call f for each request. // Web server: already listening on l, call f for each request.
export func Serve(l net.Listener, f *(*Conn, *Request)) *os.Error { func Serve(l net.Listener, f *(*Conn, *Request)) *os.Error {
// TODO: Make this unnecessary // TODO: Make this unnecessary
s, e := os.Getenv("GOMAXPROCS"); s, e := os.Getenv("GOMAXPROCS");
if n, ok := strconv.Atoi(s); n < 3 { if n, ok := strconv.Atoi(s); n < 3 {
@ -54,7 +54,7 @@ export func Serve(l net.Listener, f *(*Conn, *Request)) *os.Error {
} }
// Web server: listen on address, call f for each request. // Web server: listen on address, call f for each request.
export func ListenAndServe(addr string, f *(*Conn, *Request)) *os.Error { func ListenAndServe(addr string, f *(*Conn, *Request)) *os.Error {
l, e := net.Listen("tcp", addr); l, e := net.Listen("tcp", addr);
if e != nil { if e != nil {
return e return e

View File

@ -12,7 +12,7 @@ import (
"strings" "strings"
) )
export var ( var (
BadURL = os.NewError("bad url syntax") BadURL = os.NewError("bad url syntax")
) )
@ -41,7 +41,7 @@ func unhex(c byte) byte {
} }
// Unescape %xx into hex. // Unescape %xx into hex.
export func URLUnescape(s string) (string, *os.Error) { func URLUnescape(s string) (string, *os.Error) {
// Count %, check that they're well-formed. // Count %, check that they're well-formed.
n := 0; n := 0;
for i := 0; i < len(s); { for i := 0; i < len(s); {
@ -76,7 +76,7 @@ export func URLUnescape(s string) (string, *os.Error) {
return string(t), nil; return string(t), nil;
} }
export type URL struct { type URL struct {
raw string; raw string;
scheme string; scheme string;
rawpath string; rawpath string;
@ -127,7 +127,7 @@ func split(s string, c byte, cutc bool) (string, string) {
} }
// Parse rawurl into a URL structure. // Parse rawurl into a URL structure.
export func ParseURL(rawurl string) (url *URL, err *os.Error) { func ParseURL(rawurl string) (url *URL, err *os.Error) {
if rawurl == "" { if rawurl == "" {
return nil, BadURL return nil, BadURL
} }
@ -172,7 +172,7 @@ export func ParseURL(rawurl string) (url *URL, err *os.Error) {
} }
// A URL reference is a URL with #frag potentially added. Parse it. // A URL reference is a URL with #frag potentially added. Parse it.
export func ParseURLReference(rawurlref string) (url *URL, err *os.Error) { func ParseURLReference(rawurlref string) (url *URL, err *os.Error) {
// Cut off #frag. // Cut off #frag.
rawurl, frag := split(rawurlref, '#', true); rawurl, frag := split(rawurlref, '#', true);
if url, err = ParseURL(rawurl); err != nil { if url, err = ParseURL(rawurl); err != nil {

View File

@ -24,7 +24,7 @@ func bytecopy(dst []byte, doff int, src []byte, soff int, count int) {
} }
} }
export type ByteBuffer struct { type ByteBuffer struct {
buf []byte; buf []byte;
off int; // Read from here off int; // Read from here
len int; // Write to here len int; // Write to here
@ -87,8 +87,7 @@ func (b *ByteBuffer) AllData() []byte {
return b.buf[0:b.len] return b.buf[0:b.len]
} }
func NewByteBufferFromArray(buf []byte) *ByteBuffer {
export func NewByteBufferFromArray(buf []byte) *ByteBuffer {
b := new(ByteBuffer); b := new(ByteBuffer);
b.buf = buf; b.buf = buf;
b.off = 0; b.off = 0;

View File

@ -9,28 +9,28 @@ import (
"syscall"; "syscall";
) )
export var ErrEOF = os.NewError("EOF") var ErrEOF = os.NewError("EOF")
export type Read interface { type Read interface {
Read(p []byte) (n int, err *os.Error); Read(p []byte) (n int, err *os.Error);
} }
export type Write interface { type Write interface {
Write(p []byte) (n int, err *os.Error); Write(p []byte) (n int, err *os.Error);
} }
export type ReadWrite interface { type ReadWrite interface {
Read(p []byte) (n int, err *os.Error); Read(p []byte) (n int, err *os.Error);
Write(p []byte) (n int, err *os.Error); Write(p []byte) (n int, err *os.Error);
} }
export type ReadWriteClose interface { type ReadWriteClose interface {
Read(p []byte) (n int, err *os.Error); Read(p []byte) (n int, err *os.Error);
Write(p []byte) (n int, err *os.Error); Write(p []byte) (n int, err *os.Error);
Close() *os.Error; Close() *os.Error;
} }
export func WriteString(w Write, s string) (n int, err *os.Error) { func WriteString(w Write, s string) (n int, err *os.Error) {
b := make([]byte, len(s)+1); b := make([]byte, len(s)+1);
if !syscall.StringToBytes(b, s) { if !syscall.StringToBytes(b, s) {
return -1, os.EINVAL return -1, os.EINVAL
@ -41,7 +41,7 @@ export func WriteString(w Write, s string) (n int, err *os.Error) {
} }
// Read until buffer is full, EOF, or error // Read until buffer is full, EOF, or error
export func Readn(fd Read, buf []byte) (n int, err *os.Error) { func Readn(fd Read, buf []byte) (n int, err *os.Error) {
n = 0; n = 0;
for n < len(buf) { for n < len(buf) {
nn, e := fd.Read(buf[n:len(buf)]); nn, e := fd.Read(buf[n:len(buf)]);
@ -69,7 +69,7 @@ func (fd *_FullRead) Read(p []byte) (n int, err *os.Error) {
return n, err return n, err
} }
export func Make_FullReader(fd Read) Read { func Make_FullReader(fd Read) Read {
if fr, ok := fd.(*_FullRead); ok { if fr, ok := fd.(*_FullRead); ok {
// already a _FullRead // already a _FullRead
return fd return fd
@ -79,7 +79,7 @@ export func Make_FullReader(fd Read) Read {
// Copies n bytes (or until EOF is reached) from src to dst. // Copies n bytes (or until EOF is reached) from src to dst.
// Returns the number of bytes copied and the error, if any. // Returns the number of bytes copied and the error, if any.
export func Copyn(src Read, dst Write, n int64) (written int64, err *os.Error) { func Copyn(src Read, dst Write, n int64) (written int64, err *os.Error) {
buf := make([]byte, 32*1024); buf := make([]byte, 32*1024);
for written < n { for written < n {
l := len(buf); l := len(buf);
@ -115,7 +115,7 @@ export func Copyn(src Read, dst Write, n int64) (written int64, err *os.Error) {
// Copies from src to dst until EOF is reached. // Copies from src to dst until EOF is reached.
// Returns the number of bytes copied and the error, if any. // Returns the number of bytes copied and the error, if any.
export func Copy(src Read, dst Write) (written int64, err *os.Error) { func Copy(src Read, dst Write) (written int64, err *os.Error) {
buf := make([]byte, 32*1024); buf := make([]byte, 32*1024);
for { for {
nr, er := src.Read(buf); nr, er := src.Read(buf);
@ -147,7 +147,7 @@ export func Copy(src Read, dst Write) (written int64, err *os.Error) {
// Convert a string to an array of bytes for easy marshaling. // Convert a string to an array of bytes for easy marshaling.
// Could fill with syscall.StringToBytes but it adds an unnecessary \000 // Could fill with syscall.StringToBytes but it adds an unnecessary \000
// so the length would be wrong. // so the length would be wrong.
export func StringBytes(s string) []byte { func StringBytes(s string) []byte {
b := make([]byte, len(s)); b := make([]byte, len(s));
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {
b[i] = s[i]; b[i] = s[i];

View File

@ -15,7 +15,7 @@ import (
"strings"; "strings";
) )
export const ( const (
StringKind = iota; StringKind = iota;
NumberKind; NumberKind;
MapKind; // JSON term is "Object", but in Go, it's a map MapKind; // JSON term is "Object", but in Go, it's a map
@ -24,7 +24,7 @@ export const (
NullKind; NullKind;
) )
export type Json interface { type Json interface {
Kind() int; Kind() int;
String() string; String() string;
Number() float64; Number() float64;
@ -34,7 +34,7 @@ export type Json interface {
Len() int; Len() int;
} }
export func JsonToString(j Json) string { func JsonToString(j Json) string {
if j == nil { if j == nil {
return "null" return "null"
} }
@ -45,7 +45,7 @@ export func JsonToString(j Json) string {
} }
type _Null struct { } type _Null struct { }
export var Null Json = &_Null{} var Null Json = &_Null{}
func (*_Null) Kind() int { return NullKind } func (*_Null) Kind() int { return NullKind }
func (*_Null) String() string { return "null" } func (*_Null) String() string { return "null" }
func (*_Null) Number() float64 { return 0 } func (*_Null) Number() float64 { return 0 }
@ -128,7 +128,7 @@ func (j *_Map) String() string {
return s; return s;
} }
export func Walk(j Json, path string) Json { func Walk(j Json, path string) Json {
for len(path) > 0 { for len(path) > 0 {
var elem string; var elem string;
if i := strings.Index(path, "/"); i >= 0 { if i := strings.Index(path, "/"); i >= 0 {
@ -154,7 +154,7 @@ export func Walk(j Json, path string) Json {
return j return j
} }
export func Equal(a, b Json) bool { func Equal(a, b Json) bool {
switch { switch {
case a == nil && b == nil: case a == nil && b == nil:
return true; return true;
@ -290,7 +290,7 @@ func (b *_JsonBuilder) Key(k string) Builder {
return bb return bb
} }
export func StringToJson(s string) (json Json, ok bool, errtok string) { func StringToJson(s string) (json Json, ok bool, errtok string) {
var errindx int; var errindx int;
var j Json; var j Json;
b := new(_JsonBuilder); b := new(_JsonBuilder);

View File

@ -24,7 +24,7 @@ var jsontests = []string {
`{"a":1}`, `{"a":1}`,
} }
export func TestJson(t *testing.T) { func TestJson(t *testing.T) {
for i := 0; i < len(jsontests); i++ { for i := 0; i < len(jsontests); i++ {
val, ok, errtok := StringToJson(jsontests[i]); val, ok, errtok := StringToJson(jsontests[i]);
if !ok { if !ok {
@ -39,7 +39,7 @@ export func TestJson(t *testing.T) {
} }
} }
export func TestJsonMap(t *testing.T) { func TestJsonMap(t *testing.T) {
values := make(map[string]Json); values := make(map[string]Json);
mapstr := "{"; mapstr := "{";
for i := 0; i < len(jsontests); i++ { for i := 0; i < len(jsontests); i++ {

View File

@ -44,7 +44,7 @@ func _UnHex(p string, r, l int) (v int, ok bool) {
return v, true; return v, true;
} }
export func Unquote(s string) (t string, ok bool) { func Unquote(s string) (t string, ok bool) {
if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' { if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' {
return return
} }
@ -117,7 +117,7 @@ export func Unquote(s string) (t string, ok bool) {
return string(b[0:w]), true return string(b[0:w]), true
} }
export func Quote(s string) string { func Quote(s string) string {
chr := make([]byte, utf8.UTFMax); chr := make([]byte, utf8.UTFMax);
chr0 := chr[0:1]; chr0 := chr[0:1];
b := new(io.ByteBuffer); b := new(io.ByteBuffer);
@ -272,7 +272,7 @@ func (t *_Lexer) Next() {
type _Value interface {} type _Value interface {}
export type Builder interface { type Builder interface {
// Set value // Set value
Int64(i int64); Int64(i int64);
Uint64(i uint64); Uint64(i uint64);
@ -386,7 +386,7 @@ Switch:
return ok; return ok;
} }
export func Parse(s string, build Builder) (ok bool, errindx int, errtok string) { func Parse(s string, build Builder) (ok bool, errindx int, errtok string) {
lex := new(_Lexer); lex := new(_Lexer);
lex.s = s; lex.s = s;
lex.Next(); lex.Next();

View File

@ -202,7 +202,7 @@ func (b *_StructBuilder) Key(k string) Builder {
return nobuilder return nobuilder
} }
export func Unmarshal(s string, val interface{}) (ok bool, errtok string) { func Unmarshal(s string, val interface{}) (ok bool, errtok string) {
var errindx int; var errindx int;
var val1 interface{}; var val1 interface{};
b := &_StructBuilder{ reflect.NewValue(val) }; b := &_StructBuilder{ reflect.NewValue(val) };

View File

@ -46,7 +46,7 @@ func _Check(t *testing.T, ok bool, name string, v interface{}) {
} }
} }
export func TestUnmarshal(t *testing.T) { func TestUnmarshal(t *testing.T) {
var m _MyStruct; var m _MyStruct;
m.f = true; m.f = true;
ok, errtok := Unmarshal(_Encoded, &m); ok, errtok := Unmarshal(_Encoded, &m);

View File

@ -8,12 +8,12 @@
package malloc package malloc
export type Stats struct { type Stats struct {
Alloc uint64; Alloc uint64;
Sys uint64; Sys uint64;
}; };
export func Alloc(uint64) *byte; func Alloc(uint64) *byte;
export func Free(*byte); func Free(*byte);
export func GetStats() *Stats; func GetStats() *Stats;
export func Lookup(*byte) (*byte, uintptr); func Lookup(*byte) (*byte, uintptr);

View File

@ -175,7 +175,7 @@ func veryclose(a,b float64) bool {
return tolerance(a, b, 4e-16); return tolerance(a, b, 4e-16);
} }
export func TestAsin(t *testing.T) { func TestAsin(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Asin(vf[i]/10); !veryclose(asin[i], f) { if f := math.Asin(vf[i]/10); !veryclose(asin[i], f) {
t.Errorf("math.Asin(%g) = %g, want %g\n", vf[i]/10, f, asin[i]); t.Errorf("math.Asin(%g) = %g, want %g\n", vf[i]/10, f, asin[i]);
@ -183,7 +183,7 @@ export func TestAsin(t *testing.T) {
} }
} }
export func TestAtan(t *testing.T) { func TestAtan(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Atan(vf[i]); !veryclose(atan[i], f) { if f := math.Atan(vf[i]); !veryclose(atan[i], f) {
t.Errorf("math.Atan(%g) = %g, want %g\n", vf[i], f, atan[i]); t.Errorf("math.Atan(%g) = %g, want %g\n", vf[i], f, atan[i]);
@ -191,7 +191,7 @@ export func TestAtan(t *testing.T) {
} }
} }
export func TestExp(t *testing.T) { func TestExp(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Exp(vf[i]); !veryclose(exp[i], f) { if f := math.Exp(vf[i]); !veryclose(exp[i], f) {
t.Errorf("math.Exp(%g) = %g, want %g\n", vf[i], f, exp[i]); t.Errorf("math.Exp(%g) = %g, want %g\n", vf[i], f, exp[i]);
@ -199,7 +199,7 @@ export func TestExp(t *testing.T) {
} }
} }
export func TestFloor(t *testing.T) { func TestFloor(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Floor(vf[i]); floor[i] != f { if f := math.Floor(vf[i]); floor[i] != f {
t.Errorf("math.Floor(%g) = %g, want %g\n", vf[i], f, floor[i]); t.Errorf("math.Floor(%g) = %g, want %g\n", vf[i], f, floor[i]);
@ -207,7 +207,7 @@ export func TestFloor(t *testing.T) {
} }
} }
export func TestLog(t *testing.T) { func TestLog(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
a := math.Fabs(vf[i]); a := math.Fabs(vf[i]);
if f := math.Log(a); log[i] != f { if f := math.Log(a); log[i] != f {
@ -219,7 +219,7 @@ export func TestLog(t *testing.T) {
} }
} }
export func TestPow(t *testing.T) { func TestPow(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Pow(10, vf[i]); !close(pow[i], f) { if f := math.Pow(10, vf[i]); !close(pow[i], f) {
t.Errorf("math.Pow(10, %.17g) = %.17g, want %.17g\n", vf[i], f, pow[i]); t.Errorf("math.Pow(10, %.17g) = %.17g, want %.17g\n", vf[i], f, pow[i]);
@ -227,7 +227,7 @@ export func TestPow(t *testing.T) {
} }
} }
export func TestSin(t *testing.T) { func TestSin(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Sin(vf[i]); !close(sin[i], f) { if f := math.Sin(vf[i]); !close(sin[i], f) {
t.Errorf("math.Sin(%g) = %g, want %g\n", vf[i], f, sin[i]); t.Errorf("math.Sin(%g) = %g, want %g\n", vf[i], f, sin[i]);
@ -235,7 +235,7 @@ export func TestSin(t *testing.T) {
} }
} }
export func TestSinh(t *testing.T) { func TestSinh(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Sinh(vf[i]); !veryclose(sinh[i], f) { if f := math.Sinh(vf[i]); !veryclose(sinh[i], f) {
t.Errorf("math.Sinh(%g) = %g, want %g\n", vf[i], f, sinh[i]); t.Errorf("math.Sinh(%g) = %g, want %g\n", vf[i], f, sinh[i]);
@ -243,7 +243,7 @@ export func TestSinh(t *testing.T) {
} }
} }
export func TestSqrt(t *testing.T) { func TestSqrt(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
a := math.Fabs(vf[i]); a := math.Fabs(vf[i]);
if f := math.Sqrt(a); !veryclose(sqrt[i], f) { if f := math.Sqrt(a); !veryclose(sqrt[i], f) {
@ -252,7 +252,7 @@ export func TestSqrt(t *testing.T) {
} }
} }
export func TestTan(t *testing.T) { func TestTan(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Tan(vf[i]); !close(tan[i], f) { if f := math.Tan(vf[i]); !close(tan[i], f) {
t.Errorf("math.Tan(%g) = %g, want %g\n", vf[i], f, tan[i]); t.Errorf("math.Tan(%g) = %g, want %g\n", vf[i], f, tan[i]);
@ -260,7 +260,7 @@ export func TestTan(t *testing.T) {
} }
} }
export func TestTanh(t *testing.T) { func TestTanh(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
if f := math.Tanh(vf[i]); !veryclose(tanh[i], f) { if f := math.Tanh(vf[i]); !veryclose(tanh[i], f) {
t.Errorf("math.Tanh(%g) = %g, want %g\n", vf[i], f, tanh[i]); t.Errorf("math.Tanh(%g) = %g, want %g\n", vf[i], f, tanh[i]);
@ -268,7 +268,7 @@ export func TestTanh(t *testing.T) {
} }
} }
export func TestHypot(t *testing.T) { func TestHypot(t *testing.T) {
for i := 0; i < len(vf); i++ { for i := 0; i < len(vf); i++ {
a := math.Fabs(tanh[i]*math.Sqrt(2)); a := math.Fabs(tanh[i]*math.Sqrt(2));
if f := math.Hypot(tanh[i], tanh[i]); !veryclose(a, f) { if f := math.Hypot(tanh[i], tanh[i]); !veryclose(a, f) {

View File

@ -13,7 +13,7 @@ import "math"
* Arctan is called after appropriate range reduction. * Arctan is called after appropriate range reduction.
*/ */
export func Asin(arg float64) float64 { func Asin(arg float64) float64 {
var temp, x float64; var temp, x float64;
var sign bool; var sign bool;
@ -40,7 +40,7 @@ export func Asin(arg float64) float64 {
return temp; return temp;
} }
export func Acos(arg float64) float64 { func Acos(arg float64) float64 {
if arg > 1 || arg < -1 { if arg > 1 || arg < -1 {
return sys.NaN(); return sys.NaN();
} }

View File

@ -57,7 +57,7 @@ func satan(arg float64) float64 {
* atan makes its argument positive and * atan makes its argument positive and
* calls the inner routine satan. * calls the inner routine satan.
*/ */
export func Atan(arg float64) float64 { func Atan(arg float64) float64 {
if arg > 0 { if arg > 0 {
return satan(arg); return satan(arg);
} }

View File

@ -10,7 +10,7 @@ import "math"
* atan2 discovers what quadrant the angle * atan2 discovers what quadrant the angle
* is in and calls atan. * is in and calls atan.
*/ */
export func Atan2(arg1, arg2 float64) float64 { func Atan2(arg1, arg2 float64) float64 {
if arg1+arg2 == arg1 { if arg1+arg2 == arg1 {
if arg1 >= 0 { if arg1 >= 0 {
return Pi/2; return Pi/2;

View File

@ -4,7 +4,7 @@
package math package math
export const ( const (
// Mathematical constants. // Mathematical constants.
// Reference: http://www.research.att.com/~njas/sequences/Axxxxxx // Reference: http://www.research.att.com/~njas/sequences/Axxxxxx

View File

@ -82,7 +82,7 @@ import "math"
// compiler will convert from decimal to binary accurately enough // compiler will convert from decimal to binary accurately enough
// to produce the hexadecimal values shown. // to produce the hexadecimal values shown.
export func Exp(x float64) float64 { func Exp(x float64) float64 {
const ( const (
Ln2Hi = 6.93147180369123816490e-01; Ln2Hi = 6.93147180369123816490e-01;
Ln2Lo = 1.90821492927058770002e-10; Ln2Lo = 1.90821492927058770002e-10;

View File

@ -4,7 +4,7 @@
package math package math
export func Fabs(arg float64) float64 { func Fabs(arg float64) float64 {
if arg < 0 { if arg < 0 {
return -arg; return -arg;
} }

View File

@ -9,7 +9,7 @@ package math
* (resp least >=) * (resp least >=)
*/ */
export func Floor(arg float64) float64 { func Floor(arg float64) float64 {
if arg < 0 { if arg < 0 {
d, fract := sys.Modf(-arg); d, fract := sys.Modf(-arg);
if fract != 0.0 { if fract != 0.0 {
@ -21,6 +21,6 @@ export func Floor(arg float64) float64 {
return d; return d;
} }
export func Ceil(arg float64) float64 { func Ceil(arg float64) float64 {
return -Floor(-arg); return -Floor(-arg);
} }

View File

@ -8,7 +8,7 @@ package math
* floating-point mod func without infinity or NaN checking * floating-point mod func without infinity or NaN checking
*/ */
export func Fmod(x, y float64) float64 { func Fmod(x, y float64) float64 {
if y == 0 { if y == 0 {
return x; return x;
} }

View File

@ -12,7 +12,7 @@ package math
* Vol. 27, Number 6, pp. 577-581, Nov. 1983 * Vol. 27, Number 6, pp. 577-581, Nov. 1983
*/ */
export func Hypot(p, q float64) float64 { func Hypot(p, q float64) float64 {
if p < 0 { if p < 0 {
p = -p; p = -p;
} }

View File

@ -70,7 +70,7 @@ import "math"
// compiler will convert from decimal to binary accurately enough // compiler will convert from decimal to binary accurately enough
// to produce the hexadecimal values shown. // to produce the hexadecimal values shown.
export func Log(x float64) float64 { func Log(x float64) float64 {
const ( const (
Ln2Hi = 6.93147180369123816490e-01; /* 3fe62e42 fee00000 */ Ln2Hi = 6.93147180369123816490e-01; /* 3fe62e42 fee00000 */
Ln2Lo = 1.90821492927058770002e-10; /* 3dea39ef 35793c76 */ Ln2Lo = 1.90821492927058770002e-10; /* 3dea39ef 35793c76 */
@ -113,7 +113,7 @@ export func Log(x float64) float64 {
return k*Ln2Hi - ((hfsq-(s*(hfsq+R)+k*Ln2Lo)) - f); return k*Ln2Hi - ((hfsq-(s*(hfsq+R)+k*Ln2Lo)) - f);
} }
export func Log10(arg float64) float64 { func Log10(arg float64) float64 {
if arg <= 0 { if arg <= 0 {
return sys.NaN(); return sys.NaN();
} }

View File

@ -7,7 +7,7 @@ package math
import "math" import "math"
// x^y: exponentiation // x^y: exponentiation
export func Pow(x, y float64) float64 { func Pow(x, y float64) float64 {
// TODO: x or y NaN, ±Inf, maybe ±0. // TODO: x or y NaN, ±Inf, maybe ±0.
switch { switch {
case y == 0: case y == 0:

View File

@ -15,7 +15,7 @@ package math
var pow10tab [70]float64; var pow10tab [70]float64;
export func Pow10(e int) float64 { func Pow10(e int) float64 {
if e < 0 { if e < 0 {
return 1/Pow10(-e); return 1/Pow10(-e);
} }

View File

@ -52,13 +52,13 @@ func sinus(arg float64, quad int) float64 {
return temp1/temp2; return temp1/temp2;
} }
export func Cos(arg float64) float64 { func Cos(arg float64) float64 {
if arg < 0 { if arg < 0 {
arg = -arg; arg = -arg;
} }
return sinus(arg, 1); return sinus(arg, 1);
} }
export func Sin(arg float64) float64 { func Sin(arg float64) float64 {
return sinus(arg, 0); return sinus(arg, 0);
} }

View File

@ -19,7 +19,7 @@ import "math"
* all arguments. * all arguments.
*/ */
export func Sinh(arg float64) float64 { func Sinh(arg float64) float64 {
// The coefficients are #2029 from Hart & Cheney. (20.36D) // The coefficients are #2029 from Hart & Cheney. (20.36D)
const const
( (
@ -58,7 +58,7 @@ export func Sinh(arg float64) float64 {
return temp; return temp;
} }
export func Cosh(arg float64) float64 { func Cosh(arg float64) float64 {
if arg < 0 { if arg < 0 {
arg = - arg; arg = - arg;
} }

View File

@ -11,7 +11,7 @@ package math
* calls frexp * calls frexp
*/ */
export func Sqrt(arg float64) float64 { func Sqrt(arg float64) float64 {
if sys.IsInf(arg, 1) { if sys.IsInf(arg, 1) {
return arg; return arg;
} }

View File

@ -10,7 +10,7 @@ import "math"
* floating point tangent * floating point tangent
*/ */
export func Tan(arg float64) float64 { func Tan(arg float64) float64 {
// Coefficients are #4285 from Hart & Cheney. (19.74D) // Coefficients are #4285 from Hart & Cheney. (19.74D)
const const
( (

View File

@ -14,7 +14,7 @@ import "math"
* would cause overflow improperly. * would cause overflow improperly.
*/ */
export func Tanh(arg float64) float64 { func Tanh(arg float64) float64 {
if arg < 0 { if arg < 0 {
arg = -arg; arg = -arg;
if arg > 21 { if arg > 21 {

View File

@ -64,7 +64,7 @@ var googleaddrs = []string {
"[2001:4860:0:2001::68]:80" // ipv6.google.com; removed if ipv6 flag not set "[2001:4860:0:2001::68]:80" // ipv6.google.com; removed if ipv6 flag not set
} }
export func TestDialGoogle(t *testing.T) { func TestDialGoogle(t *testing.T) {
// If no ipv6 tunnel, don't try the last address. // If no ipv6 tunnel, don't try the last address.
if !*ipv6 { if !*ipv6 {
googleaddrs[len(googleaddrs)-1] = "" googleaddrs[len(googleaddrs)-1] = ""

View File

@ -25,7 +25,7 @@ import (
"strings"; "strings";
) )
export var ( var (
DNS_InternalError = os.NewError("internal dns error"); DNS_InternalError = os.NewError("internal dns error");
DNS_MissingConfig = os.NewError("no dns configuration"); DNS_MissingConfig = os.NewError("no dns configuration");
DNS_No_Answer = os.NewError("dns got no answer"); DNS_No_Answer = os.NewError("dns got no answer");
@ -171,7 +171,7 @@ func _LoadConfig() {
cfg = DNS_ReadConfig(); cfg = DNS_ReadConfig();
} }
export func LookupHost(name string) (name1 string, addrs []string, err *os.Error) { func LookupHost(name string) (name1 string, addrs []string, err *os.Error) {
// TODO(rsc): Pick out obvious non-DNS names to avoid // TODO(rsc): Pick out obvious non-DNS names to avoid
// sending stupid requests to the server? // sending stupid requests to the server?

View File

@ -13,7 +13,7 @@ import (
"strconv"; "strconv";
) )
export type DNS_Config struct { type DNS_Config struct {
servers []string; // servers to use servers []string; // servers to use
search []string; // suffixes to append to local name search []string; // suffixes to append to local name
ndots int; // number of dots in name to trigger absolute lookup ndots int; // number of dots in name to trigger absolute lookup
@ -26,7 +26,7 @@ export type DNS_Config struct {
// TODO(rsc): Supposed to call uname() and chop the beginning // TODO(rsc): Supposed to call uname() and chop the beginning
// of the host name to get the default search domain. // of the host name to get the default search domain.
// We assume it's in resolv.conf anyway. // We assume it's in resolv.conf anyway.
export func DNS_ReadConfig() *DNS_Config { func DNS_ReadConfig() *DNS_Config {
file := _Open("/etc/resolv.conf"); file := _Open("/etc/resolv.conf");
if file == nil { if file == nil {
return nil return nil

View File

@ -32,7 +32,7 @@ import (
// _Packet formats // _Packet formats
// Wire constants. // Wire constants.
export const ( const (
// valid DNS_RR_Header.rrtype and DNS_Question.qtype // valid DNS_RR_Header.rrtype and DNS_Question.qtype
DNS_TypeA = 1; DNS_TypeA = 1;
DNS_TypeNS = 2; DNS_TypeNS = 2;
@ -90,7 +90,7 @@ const (
) )
// DNS queries. // DNS queries.
export type DNS_Question struct { type DNS_Question struct {
name string "domain-name"; // "domain-name" specifies encoding; see packers below name string "domain-name"; // "domain-name" specifies encoding; see packers below
qtype uint16; qtype uint16;
qclass uint16; qclass uint16;
@ -99,7 +99,7 @@ export type DNS_Question struct {
// DNS responses (resource records). // DNS responses (resource records).
// There are many types of messages, // There are many types of messages,
// but they all share the same header. // but they all share the same header.
export type DNS_RR_Header struct { type DNS_RR_Header struct {
name string "domain-name"; name string "domain-name";
rrtype uint16; rrtype uint16;
class uint16; class uint16;
@ -111,62 +111,62 @@ func (h *DNS_RR_Header) Header() *DNS_RR_Header {
return h return h
} }
export type DNS_RR interface { type DNS_RR interface {
Header() *DNS_RR_Header Header() *DNS_RR_Header
} }
// Specific DNS RR formats for each query type. // Specific DNS RR formats for each query type.
export type DNS_RR_CNAME struct { type DNS_RR_CNAME struct {
DNS_RR_Header; DNS_RR_Header;
cname string "domain-name"; cname string "domain-name";
} }
export type DNS_RR_HINFO struct { type DNS_RR_HINFO struct {
DNS_RR_Header; DNS_RR_Header;
cpu string; cpu string;
os string; os string;
} }
export type DNS_RR_MB struct { type DNS_RR_MB struct {
DNS_RR_Header; DNS_RR_Header;
mb string "domain-name"; mb string "domain-name";
} }
export type DNS_RR_MG struct { type DNS_RR_MG struct {
DNS_RR_Header; DNS_RR_Header;
mg string "domain-name"; mg string "domain-name";
} }
export type DNS_RR_MINFO struct { type DNS_RR_MINFO struct {
DNS_RR_Header; DNS_RR_Header;
rmail string "domain-name"; rmail string "domain-name";
email string "domain-name"; email string "domain-name";
} }
export type DNS_RR_MR struct { type DNS_RR_MR struct {
DNS_RR_Header; DNS_RR_Header;
mr string "domain-name"; mr string "domain-name";
} }
export type DNS_RR_MX struct { type DNS_RR_MX struct {
DNS_RR_Header; DNS_RR_Header;
pref uint16; pref uint16;
mx string "domain-name"; mx string "domain-name";
} }
export type DNS_RR_NS struct { type DNS_RR_NS struct {
DNS_RR_Header; DNS_RR_Header;
ns string "domain-name"; ns string "domain-name";
} }
export type DNS_RR_PTR struct { type DNS_RR_PTR struct {
DNS_RR_Header; DNS_RR_Header;
ptr string "domain-name"; ptr string "domain-name";
} }
export type DNS_RR_SOA struct { type DNS_RR_SOA struct {
DNS_RR_Header; DNS_RR_Header;
ns string "domain-name"; ns string "domain-name";
mbox string "domain-name"; mbox string "domain-name";
@ -177,12 +177,12 @@ export type DNS_RR_SOA struct {
minttl uint32; minttl uint32;
} }
export type DNS_RR_TXT struct { type DNS_RR_TXT struct {
DNS_RR_Header; DNS_RR_Header;
txt string; // not domain name txt string; // not domain name
} }
export type DNS_RR_A struct { type DNS_RR_A struct {
DNS_RR_Header; DNS_RR_Header;
a uint32 "ipv4"; a uint32 "ipv4";
} }
@ -537,7 +537,7 @@ type _DNS_Msg_Top struct {
rcode int; rcode int;
} }
export type DNS_Msg struct { type DNS_Msg struct {
_DNS_Msg_Top; _DNS_Msg_Top;
question []DNS_Question; question []DNS_Question;
answer []DNS_RR; answer []DNS_RR;

View File

@ -15,7 +15,7 @@ import (
// Network file descriptor. Only intended to be used internally, // Network file descriptor. Only intended to be used internally,
// but have to export to make it available in other files implementing package net. // but have to export to make it available in other files implementing package net.
export type FD struct { type FD struct {
// immutable until Close // immutable until Close
fd int64; fd int64;
osfd *os.FD; osfd *os.FD;
@ -207,7 +207,7 @@ func _StartServer() {
pollserver = p pollserver = p
} }
export func NewFD(fd int64) (f *FD, err *os.Error) { func NewFD(fd int64) (f *FD, err *os.Error) {
if pollserver == nil { if pollserver == nil {
once.Do(&_StartServer); once.Do(&_StartServer);
} }

View File

@ -12,13 +12,13 @@ import (
"syscall"; "syscall";
) )
export type Pollster struct { type Pollster struct {
kq int64; kq int64;
eventbuf [10]syscall.Kevent_t; eventbuf [10]syscall.Kevent_t;
events []syscall.Kevent_t; events []syscall.Kevent_t;
} }
export func NewPollster() (p *Pollster, err *os.Error) { func NewPollster() (p *Pollster, err *os.Error) {
p = new(Pollster); p = new(Pollster);
var e int64; var e int64;
if p.kq, e = syscall.Kqueue(); e != 0 { if p.kq, e = syscall.Kqueue(); e != 0 {

View File

@ -17,14 +17,14 @@ const (
writeFlags = syscall.EPOLLOUT writeFlags = syscall.EPOLLOUT
) )
export type Pollster struct { type Pollster struct {
epfd int64; epfd int64;
// Events we're already waiting for // Events we're already waiting for
events map[int64] uint32; events map[int64] uint32;
} }
export func NewPollster() (p *Pollster, err *os.Error) { func NewPollster() (p *Pollster, err *os.Error) {
p = new(Pollster); p = new(Pollster);
var e int64; var e int64;

View File

@ -16,7 +16,7 @@ import (
"net" "net"
) )
export const ( const (
IPv4len = 4; IPv4len = 4;
IPv6len = 16 IPv6len = 16
) )
@ -37,7 +37,7 @@ func _MakeIPv4(a, b, c, d byte) []byte {
} }
// Well-known IP addresses // Well-known IP addresses
export var IPv4bcast, IPv4allsys, IPv4allrouter, IPv4prefix, IPallbits, IPnoaddr []byte var IPv4bcast, IPv4allsys, IPv4allrouter, IPv4prefix, IPallbits, IPnoaddr []byte
func init() { func init() {
IPv4bcast = _MakeIPv4(0xff, 0xff, 0xff, 0xff); IPv4bcast = _MakeIPv4(0xff, 0xff, 0xff, 0xff);
@ -63,7 +63,7 @@ func _IsZeros(p []byte) bool {
// Is p an IPv4 address (perhaps in IPv6 form)? // Is p an IPv4 address (perhaps in IPv6 form)?
// If so, return the 4-byte V4 array. // If so, return the 4-byte V4 array.
export func ToIPv4(p []byte) []byte { func ToIPv4(p []byte) []byte {
if len(p) == IPv4len { if len(p) == IPv4len {
return p return p
} }
@ -77,7 +77,7 @@ export func ToIPv4(p []byte) []byte {
} }
// Convert p to IPv6 form. // Convert p to IPv6 form.
export func ToIPv6(p []byte) []byte { func ToIPv6(p []byte) []byte {
if len(p) == IPv4len { if len(p) == IPv4len {
return _MakeIPv4(p[0], p[1], p[2], p[3]) return _MakeIPv4(p[0], p[1], p[2], p[3])
} }
@ -88,13 +88,13 @@ export func ToIPv6(p []byte) []byte {
} }
// Default route masks for IPv4. // Default route masks for IPv4.
export var ( var (
ClassAMask = _MakeIPv4(0xff, 0, 0, 0); ClassAMask = _MakeIPv4(0xff, 0, 0, 0);
ClassBMask = _MakeIPv4(0xff, 0xff, 0, 0); ClassBMask = _MakeIPv4(0xff, 0xff, 0, 0);
ClassCMask = _MakeIPv4(0xff, 0xff, 0xff, 0); ClassCMask = _MakeIPv4(0xff, 0xff, 0xff, 0);
) )
export func DefaultMask(p []byte) []byte { func DefaultMask(p []byte) []byte {
if p = ToIPv4(p); p == nil { if p = ToIPv4(p); p == nil {
return nil return nil
} }
@ -110,7 +110,7 @@ export func DefaultMask(p []byte) []byte {
} }
// Apply mask to ip, returning new address. // Apply mask to ip, returning new address.
export func Mask(ip []byte, mask []byte) []byte { func Mask(ip []byte, mask []byte) []byte {
n := len(ip); n := len(ip);
if n != len(mask) { if n != len(mask) {
return nil return nil
@ -159,7 +159,7 @@ func itox(i uint) string {
} }
// Convert IP address to string. // Convert IP address to string.
export func IPToString(p []byte) string { func IPToString(p []byte) string {
// If IPv4, use dotted notation. // If IPv4, use dotted notation.
if p4 := ToIPv4(p); len(p4) == 4 { if p4 := ToIPv4(p); len(p4) == 4 {
return itod(uint(p4[0]))+"." return itod(uint(p4[0]))+"."
@ -228,7 +228,7 @@ func _SimpleMaskLength(mask []byte) int {
return n return n
} }
export func MaskToString(mask []byte) string { func MaskToString(mask []byte) string {
switch len(mask) { switch len(mask) {
case 4: case 4:
n := _SimpleMaskLength(mask); n := _SimpleMaskLength(mask);
@ -377,7 +377,7 @@ L: for j < IPv6len {
return p return p
} }
export func ParseIP(s string) []byte { func ParseIP(s string) []byte {
p := _ParseIPv4(s); p := _ParseIPv4(s);
if p != nil { if p != nil {
return p return p

View File

@ -43,7 +43,7 @@ var parseiptests = []parseIPTest {
parseIPTest{"::ffff:4a7d:1363", _IPv4(74, 125, 19, 99)}, parseIPTest{"::ffff:4a7d:1363", _IPv4(74, 125, 19, 99)},
} }
export func TestParseIP(t *testing.T) { func TestParseIP(t *testing.T) {
for i := 0; i < len(parseiptests); i++ { for i := 0; i < len(parseiptests); i++ {
tt := parseiptests[i]; tt := parseiptests[i];
if out := ParseIP(tt.in); !isEqual(out, tt.out) { if out := ParseIP(tt.in); !isEqual(out, tt.out) {

View File

@ -11,7 +11,7 @@ import (
"syscall"; "syscall";
) )
export var ( var (
BadAddress = os.NewError("malformed address"); BadAddress = os.NewError("malformed address");
MissingAddress = os.NewError("missing address"); MissingAddress = os.NewError("missing address");
UnknownNetwork = os.NewError("unknown network"); UnknownNetwork = os.NewError("unknown network");
@ -21,7 +21,7 @@ export var (
Unknown_SocketFamily = os.NewError("unknown socket family"); Unknown_SocketFamily = os.NewError("unknown socket family");
) )
export func LookupHost(name string) (name1 string, addrs []string, err *os.Error) func LookupHost(name string) (name1 string, addrs []string, err *os.Error)
// Split "host:port" into "host" and "port". // Split "host:port" into "host" and "port".
// Host cannot contain colons unless it is bracketed. // Host cannot contain colons unless it is bracketed.
@ -358,7 +358,7 @@ func _InternetSocket(net, laddr, raddr string, proto int64, mode string) (fd *FD
// TCP connections. // TCP connections.
export type ConnTCP struct { type ConnTCP struct {
_ConnBase _ConnBase
} }
@ -377,7 +377,7 @@ func _NewConnTCP(fd *FD, raddr string) *ConnTCP {
return c return c
} }
export func DialTCP(net, laddr, raddr string) (c *ConnTCP, err *os.Error) { func DialTCP(net, laddr, raddr string) (c *ConnTCP, err *os.Error) {
if raddr == "" { if raddr == "" {
return nil, MissingAddress return nil, MissingAddress
} }
@ -393,7 +393,7 @@ export func DialTCP(net, laddr, raddr string) (c *ConnTCP, err *os.Error) {
// TODO(rsc): UDP headers mode // TODO(rsc): UDP headers mode
export type ConnUDP struct { type ConnUDP struct {
_ConnBase _ConnBase
} }
@ -404,7 +404,7 @@ func _NewConnUDP(fd *FD, raddr string) *ConnUDP {
return c return c
} }
export func DialUDP(net, laddr, raddr string) (c *ConnUDP, err *os.Error) { func DialUDP(net, laddr, raddr string) (c *ConnUDP, err *os.Error) {
if raddr == "" { if raddr == "" {
return nil, MissingAddress return nil, MissingAddress
} }
@ -422,7 +422,7 @@ export func DialUDP(net, laddr, raddr string) (c *ConnUDP, err *os.Error) {
// TODO: raw ethernet connections // TODO: raw ethernet connections
export type Conn interface { type Conn interface {
Read(b []byte) (n int, err *os.Error); Read(b []byte) (n int, err *os.Error);
Write(b []byte) (n int, err *os.Error); Write(b []byte) (n int, err *os.Error);
ReadFrom(b []byte) (n int, addr string, err *os.Error); ReadFrom(b []byte) (n int, addr string, err *os.Error);
@ -450,7 +450,7 @@ export type Conn interface {
// Eventually, we plan to allow names in addition to IP addresses, // Eventually, we plan to allow names in addition to IP addresses,
// but that requires writing a DNS library. // but that requires writing a DNS library.
export func Dial(net, laddr, raddr string) (c Conn, err *os.Error) { func Dial(net, laddr, raddr string) (c Conn, err *os.Error) {
switch net { switch net {
case "tcp", "tcp4", "tcp6": case "tcp", "tcp4", "tcp6":
c, err := DialTCP(net, laddr, raddr); c, err := DialTCP(net, laddr, raddr);
@ -477,17 +477,17 @@ export func Dial(net, laddr, raddr string) (c Conn, err *os.Error) {
} }
export type Listener interface { type Listener interface {
Accept() (c Conn, raddr string, err *os.Error); Accept() (c Conn, raddr string, err *os.Error);
Close() *os.Error; Close() *os.Error;
} }
export type ListenerTCP struct { type ListenerTCP struct {
fd *FD; fd *FD;
laddr string laddr string
} }
export func ListenTCP(net, laddr string) (l *ListenerTCP, err *os.Error) { func ListenTCP(net, laddr string) (l *ListenerTCP, err *os.Error) {
fd, e := _InternetSocket(net, laddr, "", syscall.SOCK_STREAM, "listen"); fd, e := _InternetSocket(net, laddr, "", syscall.SOCK_STREAM, "listen");
if e != nil { if e != nil {
return nil, e return nil, e
@ -534,7 +534,7 @@ func (l *ListenerTCP) Close() *os.Error {
return l.fd.Close() return l.fd.Close()
} }
export func Listen(net, laddr string) (l Listener, err *os.Error) { func Listen(net, laddr string) (l Listener, err *os.Error) {
switch net { switch net {
case "tcp", "tcp4", "tcp6": case "tcp", "tcp4", "tcp6":
l, err := ListenTCP(net, laddr); l, err := ListenTCP(net, laddr);

View File

@ -11,7 +11,7 @@ import (
"unsafe"; "unsafe";
) )
export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) { func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
p = ToIPv4(p); p = ToIPv4(p);
if p == nil || port < 0 || port > 0xFFFF { if p == nil || port < 0 || port > 0xFFFF {
return nil, os.EINVAL return nil, os.EINVAL
@ -24,10 +24,10 @@ export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
for i := 0; i < IPv4len; i++ { for i := 0; i < IPv4len; i++ {
sa.Addr[i] = p[i] sa.Addr[i] = p[i]
} }
return unsafe.pointer(sa).(*syscall.Sockaddr), nil return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
} }
export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) { func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
p = ToIPv6(p); p = ToIPv6(p);
if p == nil || port < 0 || port > 0xFFFF { if p == nil || port < 0 || port > 0xFFFF {
return nil, os.EINVAL return nil, os.EINVAL
@ -40,21 +40,21 @@ export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
for i := 0; i < IPv6len; i++ { for i := 0; i < IPv6len; i++ {
sa.Addr[i] = p[i] sa.Addr[i] = p[i]
} }
return unsafe.pointer(sa).(*syscall.Sockaddr), nil return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
} }
export func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Error) { func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Error) {
switch sa1.Family { switch sa1.Family {
case syscall.AF_INET: case syscall.AF_INET:
sa := unsafe.pointer(sa1).(*syscall.SockaddrInet4); sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet4);
a := ToIPv6(sa.Addr); a := ToIPv6(sa.Addr);
if a == nil { if a == nil {
return nil, 0, os.EINVAL return nil, 0, os.EINVAL
} }
return a, int(sa.Port[0])<<8 + int(sa.Port[1]), nil; return a, int(sa.Port[0])<<8 + int(sa.Port[1]), nil;
case syscall.AF_INET6: case syscall.AF_INET6:
sa := unsafe.pointer(sa1).(*syscall.SockaddrInet6); sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet6);
a := ToIPv6(sa.Addr); a := ToIPv6(sa.Addr);
if a == nil { if a == nil {
return nil, 0, os.EINVAL return nil, 0, os.EINVAL
@ -66,7 +66,7 @@ export func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Err
return nil, 0, nil // not reached return nil, 0, nil // not reached
} }
export func ListenBacklog() int64 { func ListenBacklog() int64 {
return syscall.SOMAXCONN return syscall.SOMAXCONN
} }

View File

@ -11,7 +11,7 @@ import (
"unsafe"; "unsafe";
) )
export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) { func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
p = ToIPv4(p); p = ToIPv4(p);
if p == nil || port < 0 || port > 0xFFFF { if p == nil || port < 0 || port > 0xFFFF {
return nil, os.EINVAL return nil, os.EINVAL
@ -23,12 +23,12 @@ export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
for i := 0; i < IPv4len; i++ { for i := 0; i < IPv4len; i++ {
sa.Addr[i] = p[i] sa.Addr[i] = p[i]
} }
return unsafe.pointer(sa).(*syscall.Sockaddr), nil return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
} }
var _IPv6zero [16]byte; var _IPv6zero [16]byte;
export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) { func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
p = ToIPv6(p); p = ToIPv6(p);
if p == nil || port < 0 || port > 0xFFFF { if p == nil || port < 0 || port > 0xFFFF {
return nil, os.EINVAL return nil, os.EINVAL
@ -48,20 +48,20 @@ export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
for i := 0; i < IPv6len; i++ { for i := 0; i < IPv6len; i++ {
sa.Addr[i] = p[i] sa.Addr[i] = p[i]
} }
return unsafe.pointer(sa).(*syscall.Sockaddr), nil return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
} }
export func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Error) { func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Error) {
switch sa1.Family { switch sa1.Family {
case syscall.AF_INET: case syscall.AF_INET:
sa := unsafe.pointer(sa1).(*syscall.SockaddrInet4); sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet4);
a := ToIPv6(sa.Addr); a := ToIPv6(sa.Addr);
if a == nil { if a == nil {
return nil, 0, os.EINVAL return nil, 0, os.EINVAL
} }
return a, int(sa.Port[0])<<8 + int(sa.Port[1]), nil; return a, int(sa.Port[0])<<8 + int(sa.Port[1]), nil;
case syscall.AF_INET6: case syscall.AF_INET6:
sa := unsafe.pointer(sa1).(*syscall.SockaddrInet6); sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet6);
a := ToIPv6(sa.Addr); a := ToIPv6(sa.Addr);
if a == nil { if a == nil {
return nil, 0, os.EINVAL return nil, 0, os.EINVAL
@ -73,7 +73,7 @@ export func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Err
return nil, 0, nil // not reached return nil, 0, nil // not reached
} }
export func ListenBacklog() int64 { func ListenBacklog() int64 {
// TODO: Read the limit from /proc/sys/net/core/somaxconn, // TODO: Read the limit from /proc/sys/net/core/somaxconn,
// to take advantage of kernels that have raised the limit. // to take advantage of kernels that have raised the limit.
return syscall.SOMAXCONN return syscall.SOMAXCONN

View File

@ -11,7 +11,7 @@ import (
"testing"; "testing";
) )
export func TestReadLine(t *testing.T) { func TestReadLine(t *testing.T) {
filename := "/etc/services"; // a nice big file filename := "/etc/services"; // a nice big file
fd, err := os.Open(filename, os.O_RDONLY, 0); fd, err := os.Open(filename, os.O_RDONLY, 0);

View File

@ -48,7 +48,7 @@ func _ReadServices() {
file.Close(); file.Close();
} }
export func LookupPort(netw, name string) (port int, ok bool) { func LookupPort(netw, name string) (port int, ok bool) {
once.Do(&_ReadServices); once.Do(&_ReadServices);
switch netw { switch netw {

View File

@ -48,7 +48,7 @@ var porttests = []portTest {
portTest{ "tcp", "--badport--", 0, false }, portTest{ "tcp", "--badport--", 0, false },
} }
export func TestLookupPort(t *testing.T) { func TestLookupPort(t *testing.T) {
for i := 0; i < len(porttests); i++ { for i := 0; i < len(porttests); i++ {
tt := porttests[i]; tt := porttests[i];
if port, ok := LookupPort(tt.netw, tt.name); port != tt.port || ok != tt.ok { if port, ok := LookupPort(tt.netw, tt.name); port != tt.port || ok != tt.ok {

View File

@ -75,7 +75,7 @@ func doTest(t *testing.T, network, listenaddr, dialaddr string) {
<-done; // make sure server stopped <-done; // make sure server stopped
} }
export func TestTcpServer(t *testing.T) { func TestTcpServer(t *testing.T) {
doTest(t, "tcp", "0.0.0.0:9997", "127.0.0.1:9997"); doTest(t, "tcp", "0.0.0.0:9997", "127.0.0.1:9997");
doTest(t, "tcp", "[::]:9997", "[::ffff:127.0.0.1]:9997"); doTest(t, "tcp", "[::]:9997", "[::ffff:127.0.0.1]:9997");
doTest(t, "tcp", "[::]:9997", "127.0.0.1:9997"); doTest(t, "tcp", "[::]:9997", "127.0.0.1:9997");

View File

@ -42,7 +42,7 @@ func server() {
} }
} }
export func Do(f *()) { func Do(f *()) {
// Look for job in map (avoids channel communication). // Look for job in map (avoids channel communication).
// If not there, ask map server to make one. // If not there, ask map server to make one.
// TODO: Uncomment use of jobmap[f] once // TODO: Uncomment use of jobmap[f] once

View File

@ -14,7 +14,7 @@ func call() {
ncall++ ncall++
} }
export func TestOnce(t *testing.T) { func TestOnce(t *testing.T) {
ncall = 0; ncall = 0;
once.Do(&call); once.Do(&call);
if ncall != 1 { if ncall != 1 {

View File

@ -9,11 +9,11 @@ package os
import os "os" import os "os"
export var ( var (
ENOENV = NewError("no such environment variable"); ENOENV = NewError("no such environment variable");
) )
export func Getenv(s string) (v string, err *Error) { func Getenv(s string) (v string, err *Error) {
n := len(s); n := len(s);
if n == 0 { if n == 0 {
return "", EINVAL return "", EINVAL

View File

@ -8,7 +8,7 @@ import syscall "syscall"
// Errors are singleton structures. Use the String() method to get their contents -- // Errors are singleton structures. Use the String() method to get their contents --
// it handles the nil (no error) case. // it handles the nil (no error) case.
export type Error struct { type Error struct {
s string s string
} }
@ -25,7 +25,7 @@ var errorStringTab = make(map[string] *Error);
// errors simultaneously but the consequences are unimportant. // errors simultaneously but the consequences are unimportant.
// Allocate an Error object, but if it's been seen before, share that one. // Allocate an Error object, but if it's been seen before, share that one.
export func NewError(s string) *Error { func NewError(s string) *Error {
if s == "" { if s == "" {
return nil return nil
} }
@ -39,7 +39,7 @@ export func NewError(s string) *Error {
} }
// Allocate an Error objecct, but if it's been seen before, share that one. // Allocate an Error objecct, but if it's been seen before, share that one.
export func ErrnoToError(errno int64) *Error { func ErrnoToError(errno int64) *Error {
if errno == 0 { if errno == 0 {
return nil return nil
} }
@ -53,7 +53,7 @@ export func ErrnoToError(errno int64) *Error {
return err; return err;
} }
export var ( var (
ENONE = ErrnoToError(syscall.ENONE); ENONE = ErrnoToError(syscall.ENONE);
EPERM = ErrnoToError(syscall.EPERM); EPERM = ErrnoToError(syscall.EPERM);
ENOENT = ErrnoToError(syscall.ENOENT); ENOENT = ErrnoToError(syscall.ENOENT);

View File

@ -8,24 +8,24 @@ import syscall "syscall"
import os "os" import os "os"
// FDs are wrappers for file descriptors // FDs are wrappers for file descriptors
export type FD struct { type FD struct {
fd int64 fd int64
} }
export func NewFD(fd int64) *FD { func NewFD(fd int64) *FD {
if fd < 0 { if fd < 0 {
return nil return nil
} }
return &FD{fd} return &FD{fd}
} }
export var ( var (
Stdin = NewFD(0); Stdin = NewFD(0);
Stdout = NewFD(1); Stdout = NewFD(1);
Stderr = NewFD(2); Stderr = NewFD(2);
) )
export const ( const (
O_RDONLY = syscall.O_RDONLY; O_RDONLY = syscall.O_RDONLY;
O_WRONLY = syscall.O_WRONLY; O_WRONLY = syscall.O_WRONLY;
O_RDWR = syscall.O_RDWR; O_RDWR = syscall.O_RDWR;
@ -39,7 +39,7 @@ export const (
O_TRUNC = syscall.O_TRUNC; O_TRUNC = syscall.O_TRUNC;
) )
export func Open(name string, mode int, flags int) (fd *FD, err *Error) { func Open(name string, mode int, flags int) (fd *FD, err *Error) {
r, e := syscall.Open(name, int64(mode), int64(flags)); r, e := syscall.Open(name, int64(mode), int64(flags));
return NewFD(r), ErrnoToError(e) return NewFD(r), ErrnoToError(e)
} }
@ -96,7 +96,7 @@ func (fd *FD) WriteString(s string) (ret int, err *Error) {
return int(r), ErrnoToError(e) return int(r), ErrnoToError(e)
} }
export func Pipe() (fd1 *FD, fd2 *FD, err *Error) { func Pipe() (fd1 *FD, fd2 *FD, err *Error) {
var p [2]int64; var p [2]int64;
r, e := syscall.Pipe(&p); r, e := syscall.Pipe(&p);
if e != 0 { if e != 0 {
@ -105,7 +105,7 @@ export func Pipe() (fd1 *FD, fd2 *FD, err *Error) {
return NewFD(p[0]), NewFD(p[1]), nil return NewFD(p[0]), NewFD(p[1]), nil
} }
export func Mkdir(name string, perm int) *Error { func Mkdir(name string, perm int) *Error {
r, e := syscall.Mkdir(name, int64(perm)); r, e := syscall.Mkdir(name, int64(perm));
return ErrnoToError(e) return ErrnoToError(e)
} }

View File

@ -9,7 +9,7 @@ import (
"syscall" "syscall"
) )
export func Time() (sec int64, nsec int64, err *Error) { func Time() (sec int64, nsec int64, err *Error) {
var errno int64; var errno int64;
sec, nsec, errno = syscall.Gettimeofday(); sec, nsec, errno = syscall.Gettimeofday();
if errno != 0 { if errno != 0 {

View File

@ -44,7 +44,7 @@ func seedrand(x int32) int32 {
return x; return x;
} }
export func Seed(seed int32) { func Seed(seed int32) {
rng_tap = 0; rng_tap = 0;
rng_feed = _LEN-_TAP; rng_feed = _LEN-_TAP;
@ -72,7 +72,7 @@ export func Seed(seed int32) {
} }
} }
export func Int63() int64 { func Int63() int64 {
rng_tap--; rng_tap--;
if rng_tap < 0 { if rng_tap < 0 {
rng_tap += _LEN; rng_tap += _LEN;
@ -88,20 +88,20 @@ export func Int63() int64 {
return x; return x;
} }
export func Uint32() uint32 { func Uint32() uint32 {
return uint32(Int63() >> 31); return uint32(Int63() >> 31);
} }
export func Int31() int32 { func Int31() int32 {
return int32(Int63() >> 32); return int32(Int63() >> 32);
} }
export func Int() int { func Int() int {
u := uint(Int63()); u := uint(Int63());
return int(u << 1 >> 1); // clear sign bit if int == int32 return int(u << 1 >> 1); // clear sign bit if int == int32
} }
export func Int63n(n int64) int64 { func Int63n(n int64) int64 {
if n <= 0 { if n <= 0 {
return 0 return 0
} }
@ -113,15 +113,15 @@ export func Int63n(n int64) int64 {
return v % n return v % n
} }
export func Int31n(n int32) int32 { func Int31n(n int32) int32 {
return int32(Int63n(int64(n))) return int32(Int63n(int64(n)))
} }
export func Intn(n int) int { func Intn(n int) int {
return int(Int63n(int64(n))) return int(Int63n(int64(n)))
} }
export func Float64() float64 { func Float64() float64 {
x := float64(Int63()) / float64(_MASK); x := float64(Int63()) / float64(_MASK);
for x >= 1 { for x >= 1 {
x = float64(Int63()) / float64(_MASK); x = float64(Int63()) / float64(_MASK);
@ -129,16 +129,16 @@ export func Float64() float64 {
return x; return x;
} }
export func Float32() float32 { func Float32() float32 {
return float32(Float64()) return float32(Float64())
} }
export func Float() float func Float() float
{ {
return float(Float64()) return float(Float64())
} }
export func Perm(n int) []int { func Perm(n int) []int {
m := make([]int, n); m := make([]int, n);
for i:=0; i<n; i++ { for i:=0; i<n; i++ {
m[i] = i; m[i] = i;

View File

@ -87,9 +87,9 @@ func valuedump(s, t string) {
assert(reflect.ValueToString(v), t); assert(reflect.ValueToString(v), t);
} }
export type T struct { a int; b float64; c string; d *int } type T struct { a int; b float64; c string; d *int }
export func TestAll(tt *testing.T) { // TODO(r): wrap up better func TestAll(tt *testing.T) { // TODO(r): wrap up better
var s string; var s string;
var t reflect.Type; var t reflect.Type;
@ -285,7 +285,7 @@ export func TestAll(tt *testing.T) { // TODO(r): wrap up better
} }
} }
export func TestInterfaceGet(t *testing.T) { func TestInterfaceGet(t *testing.T) {
var inter struct { e interface{ } }; var inter struct { e interface{ } };
inter.e = 123.456; inter.e = 123.456;
v1 := reflect.NewValue(&inter); v1 := reflect.NewValue(&inter);
@ -296,7 +296,7 @@ export func TestInterfaceGet(t *testing.T) {
assert(v3.Type().String(), "float"); assert(v3.Type().String(), "float");
} }
export func TestCopyArray(t *testing.T) { func TestCopyArray(t *testing.T) {
a := []int{ 1, 2, 3, 4, 10, 9, 8, 7 }; a := []int{ 1, 2, 3, 4, 10, 9, 8, 7 };
b := []int{ 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 }; b := []int{ 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 };
c := []int{ 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 }; c := []int{ 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 };
@ -331,7 +331,7 @@ export func TestCopyArray(t *testing.T) {
} }
} }
export func TestBigUnnamedStruct(t *testing.T) { func TestBigUnnamedStruct(t *testing.T) {
b := struct{a,b,c,d int64}{1, 2, 3, 4}; b := struct{a,b,c,d int64}{1, 2, 3, 4};
v := NewValue(b); v := NewValue(b);
b1 := v.Interface().(struct{a,b,c,d int64}); b1 := v.Interface().(struct{a,b,c,d int64});
@ -343,7 +343,7 @@ export func TestBigUnnamedStruct(t *testing.T) {
type big struct { type big struct {
a, b, c, d, e int64 a, b, c, d, e int64
} }
export func TestBigStruct(t *testing.T) { func TestBigStruct(t *testing.T) {
b := big{1, 2, 3, 4, 5}; b := big{1, 2, 3, 4, 5};
v := NewValue(b); v := NewValue(b);
b1 := v.Interface().(big); b1 := v.Interface().(big);

View File

@ -12,8 +12,8 @@ import (
"strconv"; "strconv";
) )
export func TypeToString(typ Type, expand bool) string func TypeToString(typ Type, expand bool) string
export func ValueToString(val Value) string func ValueToString(val Value) string
func doubleQuote(s string) string { func doubleQuote(s string) string {
out := "\""; out := "\"";
@ -62,7 +62,7 @@ func typeFieldsToString(t hasFields, sep string) string {
return str; return str;
} }
export func TypeToString(typ Type, expand bool) string { func TypeToString(typ Type, expand bool) string {
var str string; var str string;
if name := typ.Name(); !expand && name != "" { if name := typ.Name(); !expand && name != "" {
return name return name
@ -126,7 +126,7 @@ func integer(v int64) string {
return strconv.Itoa64(v); return strconv.Itoa64(v);
} }
export func ValueToString(val Value) string { func ValueToString(val Value) string {
var str string; var str string;
typ := val.Type(); typ := val.Type();
switch(val.Kind()) { switch(val.Kind()) {

View File

@ -12,13 +12,13 @@ import (
"sync"; "sync";
) )
export type Type interface type Type interface
export func ExpandType(name string) Type func ExpandType(name string) Type
func typestrings() string // implemented in C; declared here func typestrings() string // implemented in C; declared here
export const ( const (
MissingKind = iota; MissingKind = iota;
ArrayKind; ArrayKind;
BoolKind; BoolKind;
@ -54,7 +54,7 @@ var interfacesize int
var missingString = "$missing$" // syntactic name for undefined type names var missingString = "$missing$" // syntactic name for undefined type names
var dotDotDotString = "..." var dotDotDotString = "..."
export type Type interface { type Type interface {
Kind() int; Kind() int;
Name() string; Name() string;
String() string; String() string;
@ -102,7 +102,7 @@ func newBasicType(name string, kind int, size int) Type {
} }
// Prebuilt basic types // Prebuilt basic types
export var ( var (
Missing = newBasicType(missingString, MissingKind, 1); Missing = newBasicType(missingString, MissingKind, 1);
DotDotDot = newBasicType(dotDotDotString, DotDotDotKind, 16); // TODO(r): size of interface? DotDotDot = newBasicType(dotDotDotString, DotDotDotKind, 16); // TODO(r): size of interface?
Bool = newBasicType("bool", BoolKind, 1); // TODO: need to know how big a bool is Bool = newBasicType("bool", BoolKind, 1); // TODO: need to know how big a bool is
@ -145,7 +145,7 @@ func (t *stubType) Get() Type {
// -- Pointer // -- Pointer
export type PtrType interface { type PtrType interface {
Sub() Type Sub() Type
} }
@ -164,7 +164,7 @@ func (t *ptrTypeStruct) Sub() Type {
// -- Array // -- Array
export type ArrayType interface { type ArrayType interface {
Open() bool; Open() bool;
Len() int; Len() int;
Elem() Type; Elem() Type;
@ -203,7 +203,7 @@ func (t *arrayTypeStruct) Elem() Type {
// -- Map // -- Map
export type MapType interface { type MapType interface {
Key() Type; Key() Type;
Elem() Type; Elem() Type;
} }
@ -228,12 +228,12 @@ func (t *mapTypeStruct) Elem() Type {
// -- Chan // -- Chan
export type ChanType interface { type ChanType interface {
Dir() int; Dir() int;
Elem() Type; Elem() Type;
} }
export const ( // channel direction const ( // channel direction
SendDir = 1 << iota; SendDir = 1 << iota;
RecvDir; RecvDir;
BothDir = SendDir | RecvDir; BothDir = SendDir | RecvDir;
@ -259,7 +259,7 @@ func (t *chanTypeStruct) Elem() Type {
// -- Struct // -- Struct
export type StructType interface { type StructType interface {
Field(int) (name string, typ Type, tag string, offset int); Field(int) (name string, typ Type, tag string, offset int);
Len() int; Len() int;
} }
@ -319,7 +319,7 @@ func (t *structTypeStruct) Len() int {
// -- Interface // -- Interface
export type InterfaceType interface { type InterfaceType interface {
Field(int) (name string, typ Type, tag string, offset int); Field(int) (name string, typ Type, tag string, offset int);
Len() int; Len() int;
} }
@ -345,7 +345,7 @@ var nilInterface = newInterfaceTypeStruct("nil", "", make([]structField, 0));
// -- Func // -- Func
export type FuncType interface { type FuncType interface {
In() StructType; In() StructType;
Out() StructType; Out() StructType;
} }
@ -842,7 +842,7 @@ func (p *typeParser) Type(name string) *stubType {
return s; return s;
} }
export func ParseTypeString(name, typestring string) Type { func ParseTypeString(name, typestring string) Type {
if typestring == "" { if typestring == "" {
// If the typestring is empty, it represents (the type of) a nil interface value // If the typestring is empty, it represents (the type of) a nil interface value
return nilInterface return nilInterface
@ -902,7 +902,7 @@ func typeNameToTypeString(name string) string {
} }
// Type is known by name. Find (and create if necessary) its real type. // Type is known by name. Find (and create if necessary) its real type.
export func ExpandType(name string) Type { func ExpandType(name string) Type {
lock(); lock();
t, ok := types[name]; t, ok := types[name];
if ok { if ok {

View File

@ -12,13 +12,13 @@ import (
"unsafe"; "unsafe";
) )
export type Addr unsafe.pointer type Addr unsafe.Pointer
func equalType(a, b Type) bool { func equalType(a, b Type) bool {
return a.String() == b.String() return a.String() == b.String()
} }
export type Value interface { type Value interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
Addr() Addr; Addr() Addr;
@ -65,7 +65,7 @@ type creatorFn *(typ Type, addr Addr) Value
// -- Missing // -- Missing
export type MissingValue interface { type MissingValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
Addr() Addr; Addr() Addr;
@ -81,7 +81,7 @@ func missingCreator(typ Type, addr Addr) Value {
// -- Int // -- Int
export type IntValue interface { type IntValue interface {
Kind() int; Kind() int;
Get() int; Get() int;
Set(int); Set(int);
@ -106,7 +106,7 @@ func (v *intValueStruct) Set(i int) {
// -- Int8 // -- Int8
export type Int8Value interface { type Int8Value interface {
Kind() int; Kind() int;
Get() int8; Get() int8;
Set(int8); Set(int8);
@ -131,7 +131,7 @@ func (v *int8ValueStruct) Set(i int8) {
// -- Int16 // -- Int16
export type Int16Value interface { type Int16Value interface {
Kind() int; Kind() int;
Get() int16; Get() int16;
Set(int16); Set(int16);
@ -156,7 +156,7 @@ func (v *int16ValueStruct) Set(i int16) {
// -- Int32 // -- Int32
export type Int32Value interface { type Int32Value interface {
Kind() int; Kind() int;
Get() int32; Get() int32;
Set(int32); Set(int32);
@ -181,7 +181,7 @@ func (v *int32ValueStruct) Set(i int32) {
// -- Int64 // -- Int64
export type Int64Value interface { type Int64Value interface {
Kind() int; Kind() int;
Get() int64; Get() int64;
Set(int64); Set(int64);
@ -206,7 +206,7 @@ func (v *int64ValueStruct) Set(i int64) {
// -- Uint // -- Uint
export type UintValue interface { type UintValue interface {
Kind() int; Kind() int;
Get() uint; Get() uint;
Set(uint); Set(uint);
@ -231,7 +231,7 @@ func (v *uintValueStruct) Set(i uint) {
// -- Uint8 // -- Uint8
export type Uint8Value interface { type Uint8Value interface {
Kind() int; Kind() int;
Get() uint8; Get() uint8;
Set(uint8); Set(uint8);
@ -256,7 +256,7 @@ func (v *uint8ValueStruct) Set(i uint8) {
// -- Uint16 // -- Uint16
export type Uint16Value interface { type Uint16Value interface {
Kind() int; Kind() int;
Get() uint16; Get() uint16;
Set(uint16); Set(uint16);
@ -281,7 +281,7 @@ func (v *uint16ValueStruct) Set(i uint16) {
// -- Uint32 // -- Uint32
export type Uint32Value interface { type Uint32Value interface {
Kind() int; Kind() int;
Get() uint32; Get() uint32;
Set(uint32); Set(uint32);
@ -306,7 +306,7 @@ func (v *uint32ValueStruct) Set(i uint32) {
// -- Uint64 // -- Uint64
export type Uint64Value interface { type Uint64Value interface {
Kind() int; Kind() int;
Get() uint64; Get() uint64;
Set(uint64); Set(uint64);
@ -331,7 +331,7 @@ func (v *uint64ValueStruct) Set(i uint64) {
// -- Uintptr // -- Uintptr
export type UintptrValue interface { type UintptrValue interface {
Kind() int; Kind() int;
Get() uintptr; Get() uintptr;
Set(uintptr); Set(uintptr);
@ -356,7 +356,7 @@ func (v *uintptrValueStruct) Set(i uintptr) {
// -- Float // -- Float
export type FloatValue interface { type FloatValue interface {
Kind() int; Kind() int;
Get() float; Get() float;
Set(float); Set(float);
@ -381,7 +381,7 @@ func (v *floatValueStruct) Set(f float) {
// -- Float32 // -- Float32
export type Float32Value interface { type Float32Value interface {
Kind() int; Kind() int;
Get() float32; Get() float32;
Set(float32); Set(float32);
@ -406,7 +406,7 @@ func (v *float32ValueStruct) Set(f float32) {
// -- Float64 // -- Float64
export type Float64Value interface { type Float64Value interface {
Kind() int; Kind() int;
Get() float64; Get() float64;
Set(float64); Set(float64);
@ -431,7 +431,7 @@ func (v *float64ValueStruct) Set(f float64) {
// -- Float80 // -- Float80
export type Float80Value interface { type Float80Value interface {
Kind() int; Kind() int;
Get() float80; Get() float80;
Set(float80); Set(float80);
@ -459,7 +459,7 @@ func (v *Float80ValueStruct) Set(f float80) {
// -- String // -- String
export type StringValue interface { type StringValue interface {
Kind() int; Kind() int;
Get() string; Get() string;
Set(string); Set(string);
@ -484,7 +484,7 @@ func (v *stringValueStruct) Set(s string) {
// -- Bool // -- Bool
export type BoolValue interface { type BoolValue interface {
Kind() int; Kind() int;
Get() bool; Get() bool;
Set(bool); Set(bool);
@ -509,7 +509,7 @@ func (v *boolValueStruct) Set(b bool) {
// -- Pointer // -- Pointer
export type PtrValue interface { type PtrValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
Sub() Value; Sub() Value;
@ -545,7 +545,7 @@ func ptrCreator(typ Type, addr Addr) Value {
// -- Array // -- Array
export type ArrayValue interface { type ArrayValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
Open() bool; Open() bool;
@ -652,7 +652,7 @@ func arrayCreator(typ Type, addr Addr) Value {
// -- Map TODO: finish and test // -- Map TODO: finish and test
export type MapValue interface { type MapValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
Len() int; Len() int;
@ -678,7 +678,7 @@ func (v *mapValueStruct) Elem(key Value) Value {
// -- Chan // -- Chan
export type ChanValue interface { type ChanValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
} }
@ -693,7 +693,7 @@ func chanCreator(typ Type, addr Addr) Value {
// -- Struct // -- Struct
export type StructValue interface { type StructValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
Len() int; Len() int;
@ -728,7 +728,7 @@ func structCreator(typ Type, addr Addr) Value {
// -- Interface // -- Interface
export type InterfaceValue interface { type InterfaceValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
Get() interface {}; Get() interface {};
@ -748,7 +748,7 @@ func interfaceCreator(typ Type, addr Addr) Value {
// -- Func // -- Func
export type FuncValue interface { type FuncValue interface {
Kind() int; Kind() int;
Type() Type; Type() Type;
} }
@ -799,7 +799,7 @@ func newValueAddr(typ Type, addr Addr) Value {
return c(typ, addr); return c(typ, addr);
} }
export func NewInitValue(typ Type) Value { func NewInitValue(typ Type) Value {
// Some values cannot be made this way. // Some values cannot be made this way.
switch typ.Kind() { switch typ.Kind() {
case FuncKind: // must be pointers, at least for now (TODO?) case FuncKind: // must be pointers, at least for now (TODO?)
@ -825,7 +825,7 @@ export func NewInitValue(typ Type) Value {
uint32 cap; // allocated number of elements uint32 cap; // allocated number of elements
}; };
*/ */
export func NewOpenArrayValue(typ ArrayType, len, cap int) ArrayValue { func NewOpenArrayValue(typ ArrayType, len, cap int) ArrayValue {
if !typ.Open() { if !typ.Open() {
return nil return nil
} }
@ -843,7 +843,7 @@ export func NewOpenArrayValue(typ ArrayType, len, cap int) ArrayValue {
return newValueAddr(typ, Addr(array)); return newValueAddr(typ, Addr(array));
} }
export func CopyArray(dst ArrayValue, src ArrayValue, n int) { func CopyArray(dst ArrayValue, src ArrayValue, n int) {
if n == 0 { if n == 0 {
return return
} }
@ -875,7 +875,7 @@ export func CopyArray(dst ArrayValue, src ArrayValue, n int) {
} }
export func NewValue(e interface {}) Value { func NewValue(e interface {}) Value {
value, typestring, indir := sys.Reflect(e); value, typestring, indir := sys.Reflect(e);
typ, ok := typecache[typestring]; typ, ok := typecache[typestring];
if !ok { if !ok {

View File

@ -155,19 +155,19 @@ func executeTest(t *testing.T, expr string, str string, match []int) {
} }
} }
export func TestGoodCompile(t *testing.T) { func TestGoodCompile(t *testing.T) {
for i := 0; i < len(good_re); i++ { for i := 0; i < len(good_re); i++ {
compileTest(t, good_re[i], nil); compileTest(t, good_re[i], nil);
} }
} }
export func TestBadCompile(t *testing.T) { func TestBadCompile(t *testing.T) {
for i := 0; i < len(bad_re); i++ { for i := 0; i < len(bad_re); i++ {
compileTest(t, bad_re[i].re, bad_re[i].err) compileTest(t, bad_re[i].re, bad_re[i].err)
} }
} }
export func TestExecute(t *testing.T) { func TestExecute(t *testing.T) {
for i := 0; i < len(matches); i++ { for i := 0; i < len(matches); i++ {
test := &matches[i]; test := &matches[i];
executeTest(t, test.re, test.text, test.match) executeTest(t, test.re, test.text, test.match)
@ -185,7 +185,7 @@ func matchTest(t *testing.T, expr string, str string, match []int) {
} }
} }
export func TestMatch(t *testing.T) { func TestMatch(t *testing.T) {
for i := 0; i < len(matches); i++ { for i := 0; i < len(matches); i++ {
test := &matches[i]; test := &matches[i];
matchTest(t, test.re, test.text, test.match) matchTest(t, test.re, test.text, test.match)
@ -210,7 +210,7 @@ func matchStringsTest(t *testing.T, expr string, str string, match []int) {
} }
} }
export func TestMatchStrings(t *testing.T) { func TestMatchStrings(t *testing.T) {
for i := 0; i < len(matches); i++ { for i := 0; i < len(matches); i++ {
test := &matches[i]; test := &matches[i];
matchTest(t, test.re, test.text, test.match) matchTest(t, test.re, test.text, test.match)
@ -227,7 +227,7 @@ func matchFunctionTest(t *testing.T, expr string, str string, match []int) {
} }
} }
export func TestMatchFunction(t *testing.T) { func TestMatchFunction(t *testing.T) {
for i := 0; i < len(matches); i++ { for i := 0; i < len(matches); i++ {
test := &matches[i]; test := &matches[i];
matchFunctionTest(t, test.re, test.text, test.match) matchFunctionTest(t, test.re, test.text, test.match)

View File

@ -15,16 +15,16 @@ import (
var debug = false; var debug = false;
export var ErrInternal = os.NewError("internal error"); var ErrInternal = os.NewError("internal error");
export var ErrUnmatchedLpar = os.NewError("unmatched '('"); var ErrUnmatchedLpar = os.NewError("unmatched '('");
export var ErrUnmatchedRpar = os.NewError("unmatched ')'"); var ErrUnmatchedRpar = os.NewError("unmatched ')'");
export var ErrUnmatchedLbkt = os.NewError("unmatched '['"); var ErrUnmatchedLbkt = os.NewError("unmatched '['");
export var ErrUnmatchedRbkt = os.NewError("unmatched ']'"); var ErrUnmatchedRbkt = os.NewError("unmatched ']'");
export var ErrBadRange = os.NewError("bad range in character class"); var ErrBadRange = os.NewError("bad range in character class");
export var ErrExtraneousBackslash = os.NewError("extraneous backslash"); var ErrExtraneousBackslash = os.NewError("extraneous backslash");
export var ErrBadClosure = os.NewError("repeated closure (**, ++, etc.)"); var ErrBadClosure = os.NewError("repeated closure (**, ++, etc.)");
export var ErrBareClosure = os.NewError("closure applies to nothing"); var ErrBareClosure = os.NewError("closure applies to nothing");
export var ErrBadBackslash = os.NewError("illegal backslash escape"); var ErrBadBackslash = os.NewError("illegal backslash escape");
// An instruction executed by the NFA // An instruction executed by the NFA
type instr interface { type instr interface {
@ -582,14 +582,14 @@ func compiler(str string, ch chan *_RE) {
} }
// Public interface has only execute functionality // Public interface has only execute functionality
export type Regexp interface { type Regexp interface {
Execute(s string) []int; Execute(s string) []int;
Match(s string) bool; Match(s string) bool;
MatchStrings(s string) []string; MatchStrings(s string) []string;
} }
// Compile in separate goroutine; wait for result // Compile in separate goroutine; wait for result
export func Compile(str string) (regexp Regexp, error *os.Error) { func Compile(str string) (regexp Regexp, error *os.Error) {
ch := make(chan *_RE); ch := make(chan *_RE);
go compiler(str, ch); go compiler(str, ch);
re := <-ch; re := <-ch;
@ -739,7 +739,7 @@ func (re *_RE) MatchStrings(s string) []string {
// Exported function for simple boolean check. Anything more fancy // Exported function for simple boolean check. Anything more fancy
// needs a call to Compile. // needs a call to Compile.
export func Match(pattern string, s string) (matched bool, error *os.Error) { func Match(pattern string, s string) (matched bool, error *os.Error) {
re, err := Compile(pattern); re, err := Compile(pattern);
if err != nil { if err != nil {
return false, err return false, err

View File

@ -4,7 +4,7 @@
package sort package sort
export type SortInterface interface { type SortInterface interface {
Len() int; Len() int;
Less(i, j int) bool; Less(i, j int) bool;
Swap(i, j int); Swap(i, j int);
@ -116,12 +116,12 @@ func quickSort(data SortInterface, a, b int) {
} }
} }
export func Sort(data SortInterface) { func Sort(data SortInterface) {
quickSort(data, 0, data.Len()); quickSort(data, 0, data.Len());
} }
export func IsSorted(data SortInterface) bool { func IsSorted(data SortInterface) bool {
n := data.Len(); n := data.Len();
for i := n - 1; i > 0; i-- { for i := n - 1; i > 0; i-- {
if data.Less(i, i - 1) { if data.Less(i, i - 1) {
@ -134,21 +134,21 @@ export func IsSorted(data SortInterface) bool {
// Convenience types for common cases // Convenience types for common cases
export type IntArray []int type IntArray []int
func (p IntArray) Len() int { return len(p); } func (p IntArray) Len() int { return len(p); }
func (p IntArray) Less(i, j int) bool { return p[i] < p[j]; } func (p IntArray) Less(i, j int) bool { return p[i] < p[j]; }
func (p IntArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; } func (p IntArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; }
export type FloatArray []float type FloatArray []float
func (p FloatArray) Len() int { return len(p); } func (p FloatArray) Len() int { return len(p); }
func (p FloatArray) Less(i, j int) bool { return p[i] < p[j]; } func (p FloatArray) Less(i, j int) bool { return p[i] < p[j]; }
func (p FloatArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; } func (p FloatArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; }
export type StringArray []string type StringArray []string
func (p StringArray) Len() int { return len(p); } func (p StringArray) Len() int { return len(p); }
func (p StringArray) Less(i, j int) bool { return p[i] < p[j]; } func (p StringArray) Less(i, j int) bool { return p[i] < p[j]; }
@ -157,11 +157,11 @@ func (p StringArray) Swap(i, j int) { p[i], p[j] = p[j], p[i]; }
// Convenience wrappers for common cases // Convenience wrappers for common cases
export func SortInts(a []int) { Sort(IntArray(a)); } func SortInts(a []int) { Sort(IntArray(a)); }
export func SortFloats(a []float) { Sort(FloatArray(a)); } func SortFloats(a []float) { Sort(FloatArray(a)); }
export func SortStrings(a []string) { Sort(StringArray(a)); } func SortStrings(a []string) { Sort(StringArray(a)); }
export func IntsAreSorted(a []int) bool { return IsSorted(IntArray(a)); } func IntsAreSorted(a []int) bool { return IsSorted(IntArray(a)); }
export func FloatsAreSorted(a []float) bool { return IsSorted(FloatArray(a)); } func FloatsAreSorted(a []float) bool { return IsSorted(FloatArray(a)); }
export func StringsAreSorted(a []string) bool { return IsSorted(StringArray(a)); } func StringsAreSorted(a []string) bool { return IsSorted(StringArray(a)); }

View File

@ -16,7 +16,7 @@ var ints = [...]int{74, 59, 238, -784, 9845, 959, 905, 0, 0, 42, 7586, -5467984,
var floats = [...]float{74.3, 59.0, 238.2, -784.0, 2.3, 9845.768, -959.7485, 905, 7.8, 7.8} var floats = [...]float{74.3, 59.0, 238.2, -784.0, 2.3, 9845.768, -959.7485, 905, 7.8, 7.8}
var strings = [...]string{"", "Hello", "foo", "bar", "foo", "f00", "%*&^*&^&", "***"} var strings = [...]string{"", "Hello", "foo", "bar", "foo", "f00", "%*&^*&^&", "***"}
export func TestSortIntArray(t *testing.T) { func TestSortIntArray(t *testing.T) {
data := ints; data := ints;
a := IntArray(data); a := IntArray(data);
sort.Sort(a); sort.Sort(a);
@ -26,7 +26,7 @@ export func TestSortIntArray(t *testing.T) {
} }
} }
export func TestSortFloatArray(t *testing.T) { func TestSortFloatArray(t *testing.T) {
data := floats; data := floats;
a := FloatArray(data); a := FloatArray(data);
sort.Sort(a); sort.Sort(a);
@ -36,7 +36,7 @@ export func TestSortFloatArray(t *testing.T) {
} }
} }
export func TestSortStringArray(t *testing.T) { func TestSortStringArray(t *testing.T) {
data := strings; data := strings;
a := StringArray(data); a := StringArray(data);
sort.Sort(a); sort.Sort(a);
@ -46,7 +46,7 @@ export func TestSortStringArray(t *testing.T) {
} }
} }
export func TestSortInts(t *testing.T) { func TestSortInts(t *testing.T) {
data := ints; data := ints;
sort.SortInts(data); sort.SortInts(data);
if !sort.IntsAreSorted(data) { if !sort.IntsAreSorted(data) {
@ -55,7 +55,7 @@ export func TestSortInts(t *testing.T) {
} }
} }
export func TestSortFloats(t *testing.T) { func TestSortFloats(t *testing.T) {
data := floats; data := floats;
sort.SortFloats(data); sort.SortFloats(data);
if !sort.FloatsAreSorted(data) { if !sort.FloatsAreSorted(data) {
@ -64,7 +64,7 @@ export func TestSortFloats(t *testing.T) {
} }
} }
export func TestSortStrings(t *testing.T) { func TestSortStrings(t *testing.T) {
data := strings; data := strings;
sort.SortStrings(data); sort.SortStrings(data);
if !sort.StringsAreSorted(data) { if !sort.StringsAreSorted(data) {
@ -73,7 +73,7 @@ export func TestSortStrings(t *testing.T) {
} }
} }
export func TestSortLarge_Random(t *testing.T) { func TestSortLarge_Random(t *testing.T) {
data := make([]int, 1000000); data := make([]int, 1000000);
for i := 0; i < len(data); i++ { for i := 0; i < len(data); i++ {
data[i] = rand.Intn(100); data[i] = rand.Intn(100);
@ -133,7 +133,7 @@ func lg(n int) int {
return i; return i;
} }
export func TestBentleyMcIlroy(t *testing.T) { func TestBentleyMcIlroy(t *testing.T) {
sizes := []int{100, 1023, 1024, 1025}; sizes := []int{100, 1023, 1024, 1025};
dists := []string{"sawtooth", "rand", "stagger", "plateau", "shuffle"}; dists := []string{"sawtooth", "rand", "stagger", "plateau", "shuffle"};
modes := []string{"copy", "reverse", "reverse1", "reverse2", "sort", "dither"}; modes := []string{"copy", "reverse", "reverse1", "reverse2", "sort", "dither"};

View File

@ -318,7 +318,7 @@ func decimalAtof32(neg bool, d *decimal, trunc bool) (f float32, ok bool) {
// If s is syntactically well-formed but is more than 1/2 ULP // If s is syntactically well-formed but is more than 1/2 ULP
// away from the largest floating point number of the given size, // away from the largest floating point number of the given size,
// returns f = ±Inf, err = os.ERANGE. // returns f = ±Inf, err = os.ERANGE.
export func Atof64(s string) (f float64, err *os.Error) { func Atof64(s string) (f float64, err *os.Error) {
neg, d, trunc, ok := stringToDecimal(s); neg, d, trunc, ok := stringToDecimal(s);
if !ok { if !ok {
return 0, os.EINVAL; return 0, os.EINVAL;
@ -336,7 +336,7 @@ export func Atof64(s string) (f float64, err *os.Error) {
return f, err return f, err
} }
export func Atof32(s string) (f float32, err *os.Error) { func Atof32(s string) (f float32, err *os.Error) {
neg, d, trunc, ok := stringToDecimal(s); neg, d, trunc, ok := stringToDecimal(s);
if !ok { if !ok {
return 0, os.EINVAL; return 0, os.EINVAL;
@ -354,7 +354,7 @@ export func Atof32(s string) (f float32, err *os.Error) {
return f, err return f, err
} }
export func Atof(s string) (f float, err *os.Error) { func Atof(s string) (f float, err *os.Error) {
if FloatSize == 32 { if FloatSize == 32 {
f1, err1 := Atof32(s); f1, err1 := Atof32(s);
return float(f1), err1; return float(f1), err1;

View File

@ -124,10 +124,10 @@ func testAtof(t *testing.T, opt bool) {
strconv.optimize = oldopt; strconv.optimize = oldopt;
} }
export func TestAtof(t *testing.T) { func TestAtof(t *testing.T) {
testAtof(t, true); testAtof(t, true);
} }
export func TestAtofSlow(t *testing.T) { func TestAtofSlow(t *testing.T) {
testAtof(t, false); testAtof(t, false);
} }

View File

@ -15,7 +15,7 @@ func computeIntsize() uint {
var intsize = computeIntsize(); var intsize = computeIntsize();
// Convert decimal string to unsigned integer. // Convert decimal string to unsigned integer.
export func Atoui64(s string) (i uint64, err *os.Error) { func Atoui64(s string) (i uint64, err *os.Error) {
// empty string bad // empty string bad
if len(s) == 0 { if len(s) == 0 {
return 0, os.EINVAL return 0, os.EINVAL
@ -52,7 +52,7 @@ export func Atoui64(s string) (i uint64, err *os.Error) {
} }
// Convert decimal string to integer. // Convert decimal string to integer.
export func Atoi64(s string) (i int64, err *os.Error) { func Atoi64(s string) (i int64, err *os.Error) {
// empty string bad // empty string bad
if len(s) == 0 { if len(s) == 0 {
return 0, os.EINVAL return 0, os.EINVAL
@ -85,7 +85,7 @@ export func Atoi64(s string) (i int64, err *os.Error) {
return n, nil return n, nil
} }
export func Atoui(s string) (i uint, err *os.Error) { func Atoui(s string) (i uint, err *os.Error) {
i1, e1 := Atoui64(s); i1, e1 := Atoui64(s);
if e1 != nil && e1 != os.ERANGE { if e1 != nil && e1 != os.ERANGE {
return 0, e1 return 0, e1
@ -99,7 +99,7 @@ export func Atoui(s string) (i uint, err *os.Error) {
return i, nil return i, nil
} }
export func Atoi(s string) (i int, err *os.Error) { func Atoi(s string) (i int, err *os.Error) {
i1, e1 := Atoi64(s); i1, e1 := Atoi64(s);
if e1 != nil && e1 != os.ERANGE { if e1 != nil && e1 != os.ERANGE {
return 0, e1 return 0, e1

View File

@ -103,7 +103,7 @@ var atoi32tests = []atoi32Test {
atoi32Test{ "-2147483649", -1<<31, os.ERANGE }, atoi32Test{ "-2147483649", -1<<31, os.ERANGE },
} }
export func TestAtoui64(t *testing.T) { func TestAtoui64(t *testing.T) {
for i := 0; i < len(atoui64tests); i++ { for i := 0; i < len(atoui64tests); i++ {
test := &atoui64tests[i]; test := &atoui64tests[i];
out, err := strconv.Atoui64(test.in); out, err := strconv.Atoui64(test.in);
@ -114,7 +114,7 @@ export func TestAtoui64(t *testing.T) {
} }
} }
export func TestAtoi64(t *testing.T) { func TestAtoi64(t *testing.T) {
for i := 0; i < len(atoi64test); i++ { for i := 0; i < len(atoi64test); i++ {
test := &atoi64test[i]; test := &atoi64test[i];
out, err := strconv.Atoi64(test.in); out, err := strconv.Atoi64(test.in);
@ -125,7 +125,7 @@ export func TestAtoi64(t *testing.T) {
} }
} }
export func TestAtoui(t *testing.T) { func TestAtoui(t *testing.T) {
switch intsize { switch intsize {
case 32: case 32:
for i := 0; i < len(atoui32tests); i++ { for i := 0; i < len(atoui32tests); i++ {
@ -148,7 +148,7 @@ export func TestAtoui(t *testing.T) {
} }
} }
export func TestAtoi(t *testing.T) { func TestAtoi(t *testing.T) {
switch intsize { switch intsize {
case 32: case 32:
for i := 0; i < len(atoi32tests); i++ { for i := 0; i < len(atoi32tests); i++ {

View File

@ -29,7 +29,7 @@ var shifttests = []shiftTest {
shiftTest{ 1953125, 9, "1000000000" }, shiftTest{ 1953125, 9, "1000000000" },
} }
export func TestDecimalShift(t *testing.T) { func TestDecimalShift(t *testing.T) {
ok := true; ok := true;
for i := 0; i < len(shifttests); i++ { for i := 0; i < len(shifttests); i++ {
test := &shifttests[i]; test := &shifttests[i];
@ -66,7 +66,7 @@ var roundtests = []roundTest {
roundTest{ 12999999, 4, "12990000", "13000000", "13000000", 13000000 }, roundTest{ 12999999, 4, "12990000", "13000000", "13000000", 13000000 },
} }
export func TestDecimalRound(t *testing.T) { func TestDecimalRound(t *testing.T) {
for i := 0; i < len(roundtests); i++ { for i := 0; i < len(roundtests); i++ {
test := &roundtests[i]; test := &roundtests[i];
s := strconv.newDecimal(test.i).RoundDown(test.nd).String(); s := strconv.newDecimal(test.i).RoundDown(test.nd).String();
@ -106,7 +106,7 @@ var roundinttests = []roundIntTest {
roundIntTest{ 1000, 0, 1000 }, roundIntTest{ 1000, 0, 1000 },
} }
export func TestDecimalRoundedInteger(t *testing.T) { func TestDecimalRoundedInteger(t *testing.T) {
for i := 0; i < len(roundinttests); i++ { for i := 0; i < len(roundinttests); i++ {
test := roundinttests[i]; test := roundinttests[i];
// TODO: should be able to use int := here. // TODO: should be able to use int := here.

View File

@ -92,7 +92,7 @@ func myatof32(s string) (f float32, ok bool) {
return f1, true; return f1, true;
} }
export func TestFp(t *testing.T) { func TestFp(t *testing.T) {
fd, err := os.Open("testfp.txt", os.O_RDONLY, 0); fd, err := os.Open("testfp.txt", os.O_RDONLY, 0);
if err != nil { if err != nil {
panicln("testfp: open testfp.txt:", err.String()); panicln("testfp: open testfp.txt:", err.String());

View File

@ -38,17 +38,17 @@ func floatsize() int {
} }
return 64; return 64;
} }
export var FloatSize = floatsize() var FloatSize = floatsize()
export func Ftoa32(f float32, fmt byte, prec int) string { func Ftoa32(f float32, fmt byte, prec int) string {
return genericFtoa(uint64(sys.Float32bits(f)), fmt, prec, &float32info); return genericFtoa(uint64(sys.Float32bits(f)), fmt, prec, &float32info);
} }
export func Ftoa64(f float64, fmt byte, prec int) string { func Ftoa64(f float64, fmt byte, prec int) string {
return genericFtoa(sys.Float64bits(f), fmt, prec, &float64info); return genericFtoa(sys.Float64bits(f), fmt, prec, &float64info);
} }
export func Ftoa(f float, fmt byte, prec int) string { func Ftoa(f float, fmt byte, prec int) string {
if FloatSize == 32 { if FloatSize == 32 {
return Ftoa32(float32(f), fmt, prec); return Ftoa32(float32(f), fmt, prec);
} }

View File

@ -98,7 +98,7 @@ var ftoatests = []ftoaTest {
ftoaTest{ -1, 'b', -1, "-4503599627370496p-52" }, ftoaTest{ -1, 'b', -1, "-4503599627370496p-52" },
} }
export func TestFtoa(t *testing.T) { func TestFtoa(t *testing.T) {
if strconv.FloatSize != 32 { if strconv.FloatSize != 32 {
panic("floatsize: ", strconv.FloatSize); panic("floatsize: ", strconv.FloatSize);
} }

View File

@ -4,7 +4,7 @@
package strconv package strconv
export func Itoa64(i int64) string { func Itoa64(i int64) string {
if i == 0 { if i == 0 {
return "0" return "0"
} }
@ -31,7 +31,7 @@ export func Itoa64(i int64) string {
return string(b[bp:len(b)]) return string(b[bp:len(b)])
} }
export func Itoa(i int) string { func Itoa(i int) string {
return Itoa64(int64(i)); return Itoa64(int64(i));
} }

View File

@ -40,7 +40,7 @@ var itoa64tests = []itoa64Test {
itoa64Test{ -1<<63, "-9223372036854775808" }, itoa64Test{ -1<<63, "-9223372036854775808" },
} }
export func TestItoa(t *testing.T) { func TestItoa(t *testing.T) {
for i := 0; i < len(itoa64tests); i++ { for i := 0; i < len(itoa64tests); i++ {
test := itoa64tests[i]; test := itoa64tests[i];
s := strconv.Itoa64(test.in); s := strconv.Itoa64(test.in);

View File

@ -10,7 +10,7 @@ import (
const lowerhex = "0123456789abcdef" const lowerhex = "0123456789abcdef"
export func Quote(s string) string { func Quote(s string) string {
t := `"`; t := `"`;
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {
switch { switch {
@ -67,7 +67,7 @@ export func Quote(s string) string {
return t; return t;
} }
export func CanBackquote(s string) bool { func CanBackquote(s string) bool {
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {
if s[i] < ' ' || s[i] == '`' { if s[i] < ' ' || s[i] == '`' {
return false; return false;

View File

@ -23,7 +23,7 @@ var quotetests = []quoteTest {
quoteTest{ "\x04", `"\x04"` }, quoteTest{ "\x04", `"\x04"` },
} }
export func TestQuote(t *testing.T) { func TestQuote(t *testing.T) {
for i := 0; i < len(quotetests); i++ { for i := 0; i < len(quotetests); i++ {
tt := quotetests[i]; tt := quotetests[i];
if out := Quote(tt.in); out != tt.out { if out := Quote(tt.in); out != tt.out {
@ -78,7 +78,7 @@ var canbackquotetests = []canBackquoteTest {
canBackquoteTest{ ``, true }, canBackquoteTest{ ``, true },
} }
export func TestCanBackquote(t *testing.T) { func TestCanBackquote(t *testing.T) {
for i := 0; i < len(canbackquotetests); i++ { for i := 0; i < len(canbackquotetests); i++ {
tt := canbackquotetests[i]; tt := canbackquotetests[i];
if out := CanBackquote(tt.in); out != tt.out { if out := CanBackquote(tt.in); out != tt.out {

View File

@ -7,7 +7,7 @@ package strings
import "utf8" import "utf8"
// Split string into array of UTF-8 sequences (still strings) // Split string into array of UTF-8 sequences (still strings)
export func Explode(s string) []string { func Explode(s string) []string {
a := make([]string, utf8.RuneCountInString(s, 0, len(s))); a := make([]string, utf8.RuneCountInString(s, 0, len(s)));
j := 0; j := 0;
var size, rune int; var size, rune int;
@ -20,7 +20,7 @@ export func Explode(s string) []string {
} }
// Count non-overlapping instances of sep in s. // Count non-overlapping instances of sep in s.
export func Count(s, sep string) int { func Count(s, sep string) int {
if sep == "" { if sep == "" {
return utf8.RuneCountInString(s, 0, len(s))+1 return utf8.RuneCountInString(s, 0, len(s))+1
} }
@ -36,7 +36,7 @@ export func Count(s, sep string) int {
} }
// Return index of first instance of sep in s. // Return index of first instance of sep in s.
export func Index(s, sep string) int { func Index(s, sep string) int {
if sep == "" { if sep == "" {
return 0 return 0
} }
@ -50,7 +50,7 @@ export func Index(s, sep string) int {
} }
// Split string into list of strings at separators // Split string into list of strings at separators
export func Split(s, sep string) []string { func Split(s, sep string) []string {
if sep == "" { if sep == "" {
return Explode(s) return Explode(s)
} }
@ -72,7 +72,7 @@ export func Split(s, sep string) []string {
} }
// Join list of strings with separators between them. // Join list of strings with separators between them.
export func Join(a []string, sep string) string { func Join(a []string, sep string) string {
if len(a) == 0 { if len(a) == 0 {
return "" return ""
} }

View File

@ -26,7 +26,7 @@ var faces = "☺☻☹";
var commas = "1,2,3,4"; var commas = "1,2,3,4";
var dots = "1....2....3....4"; var dots = "1....2....3....4";
export type ExplodeTest struct { type ExplodeTest struct {
s string; s string;
a []string; a []string;
} }
@ -34,7 +34,7 @@ var explodetests = []ExplodeTest {
ExplodeTest{ abcd, []string{"a", "b", "c", "d"} }, ExplodeTest{ abcd, []string{"a", "b", "c", "d"} },
ExplodeTest{ faces, []string{"☺", "☻", "☹" } }, ExplodeTest{ faces, []string{"☺", "☻", "☹" } },
} }
export func TestExplode(t *testing.T) { func TestExplode(t *testing.T) {
for i := 0; i < len(explodetests); i++ { for i := 0; i < len(explodetests); i++ {
tt := explodetests[i]; tt := explodetests[i];
a := Explode(tt.s); a := Explode(tt.s);
@ -49,7 +49,7 @@ export func TestExplode(t *testing.T) {
} }
} }
export type SplitTest struct { type SplitTest struct {
s string; s string;
sep string; sep string;
a []string; a []string;
@ -64,7 +64,7 @@ var splittests = []SplitTest {
SplitTest{ faces, "~", []string{faces} }, SplitTest{ faces, "~", []string{faces} },
SplitTest{ faces, "", []string{"☺", "☻", "☹"} }, SplitTest{ faces, "", []string{"☺", "☻", "☹"} },
} }
export func TestSplit(t *testing.T) { func TestSplit(t *testing.T) {
for i := 0; i < len(splittests); i++ { for i := 0; i < len(splittests); i++ {
tt := splittests[i]; tt := splittests[i];
a := Split(tt.s, tt.sep); a := Split(tt.s, tt.sep);

View File

@ -8,7 +8,7 @@ func cas(val *int32, old, new int32) bool
func semacquire(*int32) func semacquire(*int32)
func semrelease(*int32) func semrelease(*int32)
export type Mutex struct { type Mutex struct {
key int32; key int32;
sema int32; sema int32;
} }

View File

@ -11,7 +11,7 @@ import (
"testing" "testing"
) )
export func HammerSemaphore(s *int32, cdone chan bool) { func HammerSemaphore(s *int32, cdone chan bool) {
for i := 0; i < 1000; i++ { for i := 0; i < 1000; i++ {
semacquire(s); semacquire(s);
semrelease(s); semrelease(s);
@ -19,7 +19,7 @@ export func HammerSemaphore(s *int32, cdone chan bool) {
cdone <- true; cdone <- true;
} }
export func TestSemaphore(t *testing.T) { func TestSemaphore(t *testing.T) {
s := new(int32); s := new(int32);
*s = 1; *s = 1;
c := make(chan bool); c := make(chan bool);
@ -32,7 +32,7 @@ export func TestSemaphore(t *testing.T) {
} }
export func HammerMutex(m *Mutex, cdone chan bool) { func HammerMutex(m *Mutex, cdone chan bool) {
for i := 0; i < 1000; i++ { for i := 0; i < 1000; i++ {
m.Lock(); m.Lock();
m.Unlock(); m.Unlock();
@ -40,7 +40,7 @@ export func HammerMutex(m *Mutex, cdone chan bool) {
cdone <- true; cdone <- true;
} }
export func TestMutex(t *testing.T) { func TestMutex(t *testing.T) {
m := new(Mutex); m := new(Mutex);
c := make(chan bool); c := make(chan bool);
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {

View File

@ -4,7 +4,7 @@
package syscall package syscall
export const ( const (
ENONE=0; ENONE=0;
EPERM=1; EPERM=1;
ENOENT=2; ENOENT=2;
@ -234,7 +234,7 @@ func str(val int64) string { // do it here rather than with fmt to avoid depend
return string(buf)[i:len(buf)]; return string(buf)[i:len(buf)];
} }
export func Errstr(errno int64) string { func Errstr(errno int64) string {
if errno < 0 || errno >= len(error) { if errno < 0 || errno >= len(error) {
return "Error " + str(errno) return "Error " + str(errno)
} }

Some files were not shown because too many files have changed in this diff Show More