Skip to content

Commit

Permalink
mobile: Add management methods to {Addresses,Topics,Hashes} structures
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicolas Guillaume committed May 23, 2017
1 parent da636c5 commit 30cc1c3
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
43 changes: 43 additions & 0 deletions mobile/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 89,18 @@ func (h *Hash) GetHex() string {
// Hashes represents a slice of hashes.
type Hashes struct{ hashes []common.Hash }

// NewHashes creates a slice of uninitialized Hashes.
func NewHashes(size int) *Hashes {
return &Hashes{
hashes: make([]common.Hash, size),
}
}

// NewHashesEmpty creates an empty slice of Hashes values.
func NewHashesEmpty() *Hashes {
return NewHashes(0)
}

// Size returns the number of hashes in the slice.
func (h *Hashes) Size() int {
return len(h.hashes)
Expand All @@ -102,6 114,20 @@ func (h *Hashes) Get(index int) (hash *Hash, _ error) {
return &Hash{h.hashes[index]}, nil
}

// Set sets the Hash at the given index in the slice.
func (h *Hashes) Set(index int, hash *Hash) error {
if index < 0 || index >= len(h.hashes) {
return errors.New("index out of bounds")
}
h.hashes[index] = hash.hash
return nil
}

// Append adds a new Hash element to the end of the slice.
func (h *Hashes) Append(hash *Hash) {
h.hashes = append(h.hashes, hash.hash)
}

// Address represents the 20 byte address of an Ethereum account.
type Address struct {
address common.Address
Expand Down Expand Up @@ -164,6 190,18 @@ func (a *Address) GetHex() string {
// Addresses represents a slice of addresses.
type Addresses struct{ addresses []common.Address }

// NewAddresses creates a slice of uninitialized addresses.
func NewAddresses(size int) *Addresses {
return &Addresses{
addresses: make([]common.Address, size),
}
}

// NewAddressesEmpty creates an empty slice of Addresses values.
func NewAddressesEmpty() *Addresses {
return NewAddresses(0)
}

// Size returns the number of addresses in the slice.
func (a *Addresses) Size() int {
return len(a.addresses)
Expand All @@ -185,3 223,8 @@ func (a *Addresses) Set(index int, address *Address) error {
a.addresses[index] = address.address
return nil
}

// Append adds a new address element to the end of the slice.
func (a *Addresses) Append(address *Address) {
a.addresses = append(a.addresses, address.address)
}
17 changes: 17 additions & 0 deletions mobile/ethereum.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 87,18 @@ func (p *SyncProgress) GetKnownStates() int64 { return int64(p.progress.KnownS
// Topics is a set of topic lists to filter events with.
type Topics struct{ topics [][]common.Hash }

// NewTopics creates a slice of uninitialized Topics.
func NewTopics(size int) *Topics {
return &Topics{
topics: make([][]common.Hash, size),
}
}

// NewTopicsEmpty creates an empty slice of Topics values.
func NewTopicsEmpty() *Topics {
return NewTopics(0)
}

// Size returns the number of topic lists inside the set
func (t *Topics) Size() int {
return len(t.topics)
Expand All @@ -109,6 121,11 @@ func (t *Topics) Set(index int, topics *Hashes) error {
return nil
}

// Append adds a new topic list to the end of the slice.
func (t *Topics) Append(topics *Hashes) {
t.topics = append(t.topics, topics.hashes)
}

// FilterQuery contains options for contact log filtering.
type FilterQuery struct {
query ethereum.FilterQuery
Expand Down

0 comments on commit 30cc1c3

Please sign in to comment.