Commit 839a6846 authored by Russ Cox's avatar Russ Cox

delete export

TBR=r
OCL=23121
CL=23127
parent 0183baaf
...@@ -9,7 +9,7 @@ import ( ...@@ -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 { ...@@ -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)
} }
......
...@@ -4,13 +4,13 @@ ...@@ -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) { ...@@ -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 { ...@@ -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]; } ...@@ -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)); }
...@@ -69,35 +69,35 @@ func arrays2d(old *any, nel int) (ary []any); ...@@ -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);
...@@ -52,7 +52,7 @@ import "fmt" ...@@ -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 { ...@@ -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) { ...@@ -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 ( ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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) { ...@@ -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) { ...@@ -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 { ...@@ -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 { ...@@ -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) { ...@@ -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);
......
...@@ -90,7 +90,7 @@ func rat_eq(n uint, x, y *bignum.Rational) { ...@@ -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) { ...@@ -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) { ...@@ -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 { ...@@ -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 { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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);
......
...@@ -21,7 +21,7 @@ const ( ...@@ -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) { ...@@ -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) { ...@@ -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 * ...@@ -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) ...@@ -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);
} }
......
...@@ -173,7 +173,7 @@ var bufsizes = []int { ...@@ -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) { ...@@ -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 { ...@@ -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 {
......
...@@ -4,11 +4,11 @@ ...@@ -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 { ...@@ -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 { ...@@ -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
} }
......
...@@ -9,7 +9,7 @@ import "testing" ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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-- {
......
...@@ -6,7 +6,7 @@ package array ...@@ -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 { ...@@ -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)
} }
......
...@@ -218,7 +218,7 @@ type _Value interface { ...@@ -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 { ...@@ -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() { ...@@ -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 { ...@@ -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) { ...@@ -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) ...@@ -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 {
......
...@@ -11,7 +11,7 @@ import ( ...@@ -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{ ...@@ -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 { ...@@ -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) { ...@@ -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) { ...@@ -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);
......
...@@ -33,7 +33,7 @@ func init() { ...@@ -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() { ...@@ -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;
......
...@@ -20,7 +20,7 @@ import ( ...@@ -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 { ...@@ -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); ...@@ -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) { ...@@ -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 { ...@@ -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) { ...@@ -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 { ...@@ -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) { ...@@ -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);
......
...@@ -14,7 +14,7 @@ package adler32 ...@@ -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 ( ...@@ -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};
} }
......
...@@ -49,7 +49,7 @@ var golden = []_Adler32Test { ...@@ -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();
......
...@@ -9,7 +9,7 @@ package crc32 ...@@ -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 ( ...@@ -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 { ...@@ -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);
} }
......
...@@ -49,7 +49,7 @@ var golden = []_Crc32Test { ...@@ -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();
......
...@@ -17,14 +17,14 @@ const ( ...@@ -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;
......
...@@ -50,7 +50,7 @@ var golden = []md5Test { ...@@ -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();
......
...@@ -18,14 +18,14 @@ const ( ...@@ -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;
......
...@@ -52,7 +52,7 @@ var golden = []sha1Test { ...@@ -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();
......
...@@ -12,7 +12,7 @@ import ( ...@@ -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 { ...@@ -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 {
......
...@@ -19,7 +19,7 @@ const ( ...@@ -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 ( ...@@ -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) { ...@@ -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
......
...@@ -36,7 +36,7 @@ func serveConnection(fd net.Conn, raddr string, f *(*Conn, *Request)) { ...@@ -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 { ...@@ -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
......
...@@ -12,7 +12,7 @@ import ( ...@@ -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 { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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 {
......
...@@ -24,7 +24,7 @@ func bytecopy(dst []byte, doff int, src []byte, soff int, count int) { ...@@ -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 { ...@@ -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;
......
...@@ -9,28 +9,28 @@ import ( ...@@ -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) { ...@@ -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) { ...@@ -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 { ...@@ -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) { ...@@ -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) { ...@@ -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];
......
...@@ -15,7 +15,7 @@ import ( ...@@ -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 ( ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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);
......
...@@ -24,7 +24,7 @@ var jsontests = []string { ...@@ -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) { ...@@ -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++ {
......
...@@ -44,7 +44,7 @@ func _UnHex(p string, r, l int) (v int, ok bool) { ...@@ -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) { ...@@ -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() { ...@@ -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: ...@@ -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();
......
...@@ -202,7 +202,7 @@ func (b *_StructBuilder) Key(k string) Builder { ...@@ -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) };
......
...@@ -46,7 +46,7 @@ func _Check(t *testing.T, ok bool, name string, v interface{}) { ...@@ -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);
......
...@@ -8,12 +8,12 @@ ...@@ -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);
...@@ -175,7 +175,7 @@ func veryclose(a,b float64) bool { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) {
......
...@@ -13,7 +13,7 @@ import "math" ...@@ -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 { ...@@ -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();
} }
......
...@@ -57,7 +57,7 @@ func satan(arg float64) float64 { ...@@ -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);
} }
......
...@@ -10,7 +10,7 @@ import "math" ...@@ -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;
......
...@@ -4,7 +4,7 @@ ...@@ -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
......
...@@ -82,7 +82,7 @@ import "math" ...@@ -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;
......
...@@ -4,7 +4,7 @@ ...@@ -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;
} }
......
...@@ -9,7 +9,7 @@ package math ...@@ -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 { ...@@ -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);
} }
...@@ -8,7 +8,7 @@ package math ...@@ -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;
} }
......
...@@ -12,7 +12,7 @@ package math ...@@ -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;
} }
......
...@@ -70,7 +70,7 @@ import "math" ...@@ -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 { ...@@ -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();
} }
......
...@@ -7,7 +7,7 @@ package math ...@@ -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:
......
...@@ -15,7 +15,7 @@ package math ...@@ -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);
} }
......
...@@ -52,13 +52,13 @@ func sinus(arg float64, quad int) float64 { ...@@ -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);
} }
...@@ -19,7 +19,7 @@ import "math" ...@@ -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 { ...@@ -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;
} }
......
...@@ -11,7 +11,7 @@ package math ...@@ -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;
} }
......
...@@ -10,7 +10,7 @@ import "math" ...@@ -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
( (
......
...@@ -14,7 +14,7 @@ import "math" ...@@ -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 {
......
...@@ -64,7 +64,7 @@ var googleaddrs = []string { ...@@ -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] = ""
......
...@@ -25,7 +25,7 @@ import ( ...@@ -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() { ...@@ -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?
......
...@@ -13,7 +13,7 @@ import ( ...@@ -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 { ...@@ -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
......
...@@ -32,7 +32,7 @@ import ( ...@@ -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 ( ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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;
......
...@@ -15,7 +15,7 @@ import ( ...@@ -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() { ...@@ -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);
} }
......
...@@ -12,13 +12,13 @@ import ( ...@@ -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 {
......
...@@ -17,14 +17,14 @@ const ( ...@@ -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;
......
...@@ -16,7 +16,7 @@ import ( ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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
......
...@@ -43,7 +43,7 @@ var parseiptests = []parseIPTest { ...@@ -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) {
......
...@@ -11,7 +11,7 @@ import ( ...@@ -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 ( ...@@ -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 ...@@ -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 { ...@@ -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) { ...@@ -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 { ...@@ -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) { ...@@ -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 { ...@@ -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) { ...@@ -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 { ...@@ -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);
......
...@@ -11,7 +11,7 @@ import ( ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
} }
...@@ -11,7 +11,7 @@ import ( ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
......
...@@ -11,7 +11,7 @@ import ( ...@@ -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);
......
...@@ -48,7 +48,7 @@ func _ReadServices() { ...@@ -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 {
......
...@@ -48,7 +48,7 @@ var porttests = []portTest { ...@@ -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 {
......
...@@ -75,7 +75,7 @@ func doTest(t *testing.T, network, listenaddr, dialaddr string) { ...@@ -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");
......
...@@ -42,7 +42,7 @@ func server() { ...@@ -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
......
...@@ -14,7 +14,7 @@ func call() { ...@@ -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 {
......
...@@ -9,11 +9,11 @@ package os ...@@ -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
......
...@@ -8,7 +8,7 @@ import syscall "syscall" ...@@ -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); ...@@ -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 { ...@@ -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 { ...@@ -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);
......
...@@ -8,24 +8,24 @@ import syscall "syscall" ...@@ -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 ( ...@@ -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) { ...@@ -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) { ...@@ -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)
} }
...@@ -9,7 +9,7 @@ import ( ...@@ -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 {
......
...@@ -44,7 +44,7 @@ func seedrand(x int32) int32 { ...@@ -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) { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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;
......
...@@ -87,9 +87,9 @@ func valuedump(s, t string) { ...@@ -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 ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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);
......
...@@ -12,8 +12,8 @@ import ( ...@@ -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 { ...@@ -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 { ...@@ -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()) {
......
...@@ -12,13 +12,13 @@ import ( ...@@ -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 ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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)); ...@@ -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 { ...@@ -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 { ...@@ -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 {
......
...@@ -12,13 +12,13 @@ import ( ...@@ -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 ...@@ -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 { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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) { ...@@ -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 {
......
...@@ -155,19 +155,19 @@ func executeTest(t *testing.T, expr string, str string, match []int) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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)
......
...@@ -15,16 +15,16 @@ import ( ...@@ -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) { ...@@ -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 { ...@@ -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
......
...@@ -4,7 +4,7 @@ ...@@ -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) { ...@@ -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 { ...@@ -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]; } ...@@ -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)); }
...@@ -16,7 +16,7 @@ var ints = [...]int{74, 59, 238, -784, 9845, 959, 905, 0, 0, 42, 7586, -5467984, ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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 { ...@@ -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"};
......
...@@ -318,7 +318,7 @@ func decimalAtof32(neg bool, d *decimal, trunc bool) (f float32, ok bool) { ...@@ -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) { ...@@ -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) { ...@@ -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;
......
...@@ -124,10 +124,10 @@ func testAtof(t *testing.T, opt bool) { ...@@ -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);
} }
...@@ -15,7 +15,7 @@ func computeIntsize() uint { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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
......
...@@ -103,7 +103,7 @@ var atoi32tests = []atoi32Test { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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++ {
......
...@@ -29,7 +29,7 @@ var shifttests = []shiftTest { ...@@ -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 { ...@@ -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 { ...@@ -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.
......
...@@ -92,7 +92,7 @@ func myatof32(s string) (f float32, ok bool) { ...@@ -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());
......
...@@ -38,17 +38,17 @@ func floatsize() int { ...@@ -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);
} }
......
...@@ -98,7 +98,7 @@ var ftoatests = []ftoaTest { ...@@ -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);
} }
......
...@@ -4,7 +4,7 @@ ...@@ -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 { ...@@ -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));
} }
...@@ -40,7 +40,7 @@ var itoa64tests = []itoa64Test { ...@@ -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);
......
...@@ -10,7 +10,7 @@ import ( ...@@ -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 { ...@@ -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;
......
...@@ -23,7 +23,7 @@ var quotetests = []quoteTest { ...@@ -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 { ...@@ -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 {
......
...@@ -7,7 +7,7 @@ package strings ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 ""
} }
......
...@@ -26,7 +26,7 @@ var faces = "☺☻☹"; ...@@ -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 { ...@@ -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) { ...@@ -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 { ...@@ -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);
......
...@@ -8,7 +8,7 @@ func cas(val *int32, old, new int32) bool ...@@ -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;
} }
......
...@@ -11,7 +11,7 @@ import ( ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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++ {
......
...@@ -4,7 +4,7 @@ ...@@ -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 ...@@ -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)
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment