use &T{1,2,3} constructor for simple new cases

R=r
OCL=17691
CL=17719
This commit is contained in:
Russ Cox 2008-10-23 12:41:06 -07:00
parent 071c91bf48
commit de13727f0f
6 changed files with 129 additions and 222 deletions

View file

@ -53,6 +53,10 @@ type Int8ValueStruct struct {
addr Addr
}
func Int8Creator(typ Type, addr Addr) Value {
return &Int8ValueStruct{addr}
}
func (v *Int8ValueStruct) Kind() int {
return Int8Kind
}
@ -69,12 +73,6 @@ func (v *Int8ValueStruct) Put(i int8) {
*AddrToPtrInt8(v.addr) = i
}
func Int8Creator(typ Type, addr Addr) Value {
v := new(Int8ValueStruct);
v.addr = addr;
return v;
}
// -- Int16
export type Int16Value interface {
@ -88,6 +86,10 @@ type Int16ValueStruct struct {
addr Addr
}
func Int16Creator(typ Type, addr Addr) Value {
return &Int16ValueStruct{addr}
}
func (v *Int16ValueStruct) Kind() int {
return Int16Kind
}
@ -104,12 +106,6 @@ func (v *Int16ValueStruct) Put(i int16) {
*AddrToPtrInt16(v.addr) = i
}
func Int16Creator(typ Type, addr Addr) Value {
v := new(Int16ValueStruct);
v.addr = addr;
return v;
}
// -- Int32
export type Int32Value interface {
@ -123,6 +119,10 @@ type Int32ValueStruct struct {
addr Addr
}
func Int32Creator(typ Type, addr Addr) Value {
return &Int32ValueStruct{addr}
}
func (v *Int32ValueStruct) Type() Type {
return Int32
}
@ -139,12 +139,6 @@ func (v *Int32ValueStruct) Put(i int32) {
*AddrToPtrInt32(v.addr) = i
}
func Int32Creator(typ Type, addr Addr) Value {
v := new(Int32ValueStruct);
v.addr = addr;
return v;
}
// -- Int64
export type Int64Value interface {
@ -154,6 +148,10 @@ export type Int64Value interface {
Type() Type;
}
func Int64Creator(typ Type, addr Addr) Value {
return &Int64ValueStruct{addr}
}
type Int64ValueStruct struct {
addr Addr
}
@ -174,12 +172,6 @@ func (v *Int64ValueStruct) Put(i int64) {
*AddrToPtrInt64(v.addr) = i
}
func Int64Creator(typ Type, addr Addr) Value {
v := new(Int64ValueStruct);
v.addr = addr;
return v;
}
// -- Uint8
export type Uint8Value interface {
@ -193,6 +185,10 @@ type Uint8ValueStruct struct {
addr Addr
}
func Uint8Creator(typ Type, addr Addr) Value {
return &Uint8ValueStruct{addr}
}
func (v *Uint8ValueStruct) Kind() int {
return Uint8Kind
}
@ -209,12 +205,6 @@ func (v *Uint8ValueStruct) Put(i uint8) {
*AddrToPtrUint8(v.addr) = i
}
func Uint8Creator(typ Type, addr Addr) Value {
v := new(Uint8ValueStruct);
v.addr = addr;
return v;
}
// -- Uint16
export type Uint16Value interface {
@ -228,6 +218,10 @@ type Uint16ValueStruct struct {
addr Addr
}
func Uint16Creator(typ Type, addr Addr) Value {
return &Uint16ValueStruct{addr}
}
func (v *Uint16ValueStruct) Kind() int {
return Uint16Kind
}
@ -244,12 +238,6 @@ func (v *Uint16ValueStruct) Put(i uint16) {
*AddrToPtrUint16(v.addr) = i
}
func Uint16Creator(typ Type, addr Addr) Value {
v := new(Uint16ValueStruct);
v.addr = addr;
return v;
}
// -- Uint32
export type Uint32Value interface {
@ -263,6 +251,10 @@ type Uint32ValueStruct struct {
addr Addr
}
func Uint32Creator(typ Type, addr Addr) Value {
return &Uint32ValueStruct{addr}
}
func (v *Uint32ValueStruct) Kind() int {
return Uint32Kind
}
@ -279,12 +271,6 @@ func (v *Uint32ValueStruct) Put(i uint32) {
*AddrToPtrUint32(v.addr) = i
}
func Uint32Creator(typ Type, addr Addr) Value {
v := new(Uint32ValueStruct);
v.addr = addr;
return v;
}
// -- Uint64
export type Uint64Value interface {
@ -298,6 +284,10 @@ type Uint64ValueStruct struct {
addr Addr
}
func Uint64Creator(typ Type, addr Addr) Value {
return &Uint64ValueStruct{addr}
}
func (v *Uint64ValueStruct) Kind() int {
return Uint64Kind
}
@ -314,12 +304,6 @@ func (v *Uint64ValueStruct) Put(i uint64) {
*AddrToPtrUint64(v.addr) = i
}
func Uint64Creator(typ Type, addr Addr) Value {
v := new(Uint64ValueStruct);
v.addr = addr;
return v;
}
// -- Float32
export type Float32Value interface {
@ -333,6 +317,10 @@ type Float32ValueStruct struct {
addr Addr
}
func Float32Creator(typ Type, addr Addr) Value {
return &Float32ValueStruct{addr}
}
func (v *Float32ValueStruct) Kind() int {
return Float32Kind
}
@ -349,12 +337,6 @@ func (v *Float32ValueStruct) Put(f float32) {
*AddrToPtrFloat32(v.addr) = f
}
func Float32Creator(typ Type, addr Addr) Value {
v := new(Float32ValueStruct);
v.addr = addr;
return v;
}
// -- Float64
export type Float64Value interface {
@ -368,6 +350,10 @@ type Float64ValueStruct struct {
addr Addr
}
func Float64Creator(typ Type, addr Addr) Value {
return &Float64ValueStruct{addr}
}
func (v *Float64ValueStruct) Kind() int {
return Float64Kind
}
@ -384,12 +370,6 @@ func (v *Float64ValueStruct) Put(f float64) {
*AddrToPtrFloat64(v.addr) = f
}
func Float64Creator(typ Type, addr Addr) Value {
v := new(Float64ValueStruct);
v.addr = addr;
return v;
}
// -- Float80
export type Float80Value interface {
@ -403,6 +383,10 @@ type Float80ValueStruct struct {
addr Addr
}
func Float80Creator(typ Type, addr Addr) Value {
return &Float80ValueStruct{addr}
}
func (v *Float80ValueStruct) Kind() int {
return Float80Kind
}
@ -423,12 +407,6 @@ func (v *Float80ValueStruct) Put(f float80) {
}
*/
func Float80Creator(typ Type, addr Addr) Value {
v := new(Float80ValueStruct);
v.addr = addr;
return v;
}
// -- String
export type StringValue interface {
@ -442,6 +420,10 @@ type StringValueStruct struct {
addr Addr
}
func StringCreator(typ Type, addr Addr) Value {
return &StringValueStruct{addr}
}
func (v *StringValueStruct) Kind() int {
return StringKind
}
@ -458,12 +440,6 @@ func (v *StringValueStruct) Put(s string) {
*AddrToPtrString(v.addr) = s
}
func StringCreator(typ Type, addr Addr) Value {
v := new(StringValueStruct);
v.addr = addr;
return v;
}
// -- Pointer
export type PtrValue interface {
@ -603,7 +579,10 @@ export type MapValue interface {
type MapValueStruct struct {
addr Addr;
typ Type;
len int;
}
func MapCreator(typ Type, addr Addr) Value {
return &MapValueStruct{addr, typ}
}
func (v *MapValueStruct) Kind() int {
@ -615,7 +594,7 @@ func (v *MapValueStruct) Type() Type {
}
func (v *MapValueStruct) Len() int {
return v.len // TODO: probably want this to be dynamic
return 0 // TODO: probably want this to be dynamic
}
func (v *MapValueStruct) Elem(key Value) Value {
@ -623,14 +602,6 @@ func (v *MapValueStruct) Elem(key Value) Value {
return nil
}
func MapCreator(typ Type, addr Addr) Value {
arraytype := typ.(MapType);
v := new(MapValueStruct);
v.addr = addr;
v.typ = typ;
return v;
}
// -- Chan
export type ChanValue interface {
@ -641,7 +612,10 @@ export type ChanValue interface {
type ChanValueStruct struct {
addr Addr;
typ Type;
len int;
}
func ChanCreator(typ Type, addr Addr) Value {
return &ChanValueStruct{addr, typ}
}
func (v *ChanValueStruct) Kind() int {
@ -652,13 +626,6 @@ func (v *ChanValueStruct) Type() Type {
return v.typ
}
func ChanCreator(typ Type, addr Addr) Value {
v := new(ChanValueStruct);
v.addr = addr;
v.typ = typ;
return v;
}
// -- Struct
export type StructValue interface {
@ -711,26 +678,23 @@ export type InterfaceValue interface {
Type() Type;
}
type InterfaceValueInterface struct {
type InterfaceValueStruct struct {
addr Addr;
typ Type;
}
func (v *InterfaceValueInterface) Kind() int {
func InterfaceCreator(typ Type, addr Addr) Value {
return &InterfaceValueStruct{addr, typ}
}
func (v *InterfaceValueStruct) Kind() int {
return InterfaceKind
}
func (v *InterfaceValueInterface) Type() Type {
func (v *InterfaceValueStruct) Type() Type {
return v.typ
}
func InterfaceCreator(typ Type, addr Addr) Value {
v := new(InterfaceValueInterface);
v.addr = addr;
v.typ = typ;
return v;
}
// -- Func
export type FuncValue interface {
@ -738,26 +702,23 @@ export type FuncValue interface {
Type() Type;
}
type FuncValueFunc struct {
type FuncValueStruct struct {
addr Addr;
typ Type;
}
func (v *FuncValueFunc) Kind() int {
func FuncCreator(typ Type, addr Addr) Value {
return &FuncValueStruct{addr, typ}
}
func (v *FuncValueStruct) Kind() int {
return FuncKind
}
func (v *FuncValueFunc) Type() Type {
func (v *FuncValueStruct) Type() Type {
return v.typ
}
func FuncCreator(typ Type, addr Addr) Value {
v := new(FuncValueFunc);
v.addr = addr;
v.typ = typ;
return v;
}
var creator *map[int] Creator
func init() {