Browse Source

add tuple, none, and dict

master
Brett Langdon 10 years ago
parent
commit
753945a23e
3 changed files with 49 additions and 4 deletions
  1. +31
    -0
      gython/dict.go
  2. +7
    -0
      gython/none.go
  3. +11
    -4
      gython/tuple.go

+ 31
- 0
gython/dict.go View File

@ -0,0 +1,31 @@
package gython
import "fmt"
type Dict struct {
values map[Object]Object
}
func NewDict() *Dict {
return &Dict{
values: make(map[Object]Object, 0),
}
}
func (dict *Dict) object() {}
func (dict *Dict) Length() *Float {
return NewFloat(float64(len(dict.values)))
}
func (dict *Dict) GetItem(key Object) (Object, error) {
value, exists := dict.values[key]
if exists == false {
return nil, fmt.Errorf("Key error: %#v", key)
}
return value, nil
}
func (dict *Dict) SetItem(key Object, value Object) {
dict.values[key] = value
}

+ 7
- 0
gython/none.go View File

@ -0,0 +1,7 @@
package gython
type _None struct{}
func (none *_None) object() {}
var None *_None = &_None{}

+ 11
- 4
gython/tuple.go View File

@ -1,10 +1,17 @@
package gython
type Tuple struct {
length *Float
values []Object
}
func (tuple *Tuple) object() {}
func NewTuple() *Tuple {
return &Tuple{}
func NewTuple(values ...Object) *Tuple {
return &Tuple{
length: NewFloat(float64(len(values))),
values: values,
}
}
func (tuple *Tuple) object() {}
func (tuple *Tuple) Length() *Float { return tuple.length }
func (tuple *Tuple) Values() []Object { return tuple.values }

Loading…
Cancel
Save