summaryrefslogtreecommitdiffhomepage
path: root/utils/collection.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/collection.go')
-rw-r--r--utils/collection.go199
1 files changed, 0 insertions, 199 deletions
diff --git a/utils/collection.go b/utils/collection.go
deleted file mode 100644
index 3f6e2ed1..00000000
--- a/utils/collection.go
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-// implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-import (
- "container/list"
- "fmt"
- "reflect"
-)
-
-// Elements of abstraction the key.
-type K struct {
- Element interface{}
-}
-
-/*
-// Elements of abstraction the key.
-type V struct {
- Element interface{}
-}
-*/
-/* This method may be required
-func (e *E) Elem() interface{} {
- return e.Element
-}
-*/
-
-// Structure for extending the map collection.
-//
-// keyType : Key type of Map .
-// keyType : Value type of Map.
-// TMap : Map of the object to be extended.
-// TOrder : Insertion order list of map.
-type OrderedMap struct {
- keyType interface{}
- valType interface{}
- TMap map[K]interface{}
- TOrder *list.List
-}
-
-// Constructor of OrderedMap.
-func NewOrderedMap() *OrderedMap {
- om := &OrderedMap{}
- om.TMap = make(map[K]interface{})
- om.TOrder = list.New()
- return om
-}
-
-// Check whether the same of type of Map and List
-//
-// Returns: - error contents
-// and nil if no error occurred.
-func (om *OrderedMap) checkType(keyInfs interface{}, valInfs interface{}) (e error) {
- if om.keyType == nil && om.valType == nil {
- om.keyType = keyInfs
- om.valType = valInfs
- return nil
- } else {
- if reflect.TypeOf(om.keyType) != reflect.TypeOf(keyInfs) {
- return fmt.Errorf("Map Key Type mismatch [ %s ] and [ %s ].", reflect.TypeOf(om.keyType), reflect.TypeOf(keyInfs))
- }
- }
- return nil
-}
-
-// Check whether the same key exists in the map
-//
-// Returns: - error contents
-// and nil if no error occurred.
-func (om *OrderedMap) checkDuplicate(keyInfs interface{}) (e error) {
- for elem := om.TOrder.Front(); elem != nil; elem = elem.Next() {
- if elem.Value == keyInfs {
- return fmt.Errorf("Map key Duplicated [%s].", elem.Value)
- }
- }
- return
-}
-
-// Append Elements to Map
-//
-// Returns: - error contents
-// and nil if no error occurred.
-func (om *OrderedMap) Append(keyInfs interface{}, valInfs interface{}) (e error) {
- e = om.checkType(keyInfs, valInfs)
- if e != nil {
- return e
- }
- // Append key Elements to Map
- om.TMap[K{Element: keyInfs}] = valInfs
- e = om.checkDuplicate(K{Element: keyInfs})
- if e != nil {
- /*
- for elem := om.TOrder.Front(); elem != nil; elem = elem.Next() {
- if elem.Value == (K{Element: keyInfs}) {
- tmp := elem.Next()
- om.TOrder.Remove(elem)
- elem = tmp
- }
- }*/
- return nil
- }
- // Append Elements to List
- om.TOrder.PushBack(K{Element: keyInfs})
- return nil
-}
-
-// Get Elements from receive parameter.
-//
-// Returns: - Value of Map
-// Return the interface that value has entered the Map.
-func (om *OrderedMap) Get(keyInfs interface{}) interface{} {
- elem := om.TMap[K{Element: keyInfs}]
- return elem
-}
-
-// Convert Map keys to List.
-//
-// Returns: - List of Map Keys
-func (om *OrderedMap) KeyLists() *list.List {
- keys := list.New()
- for key := om.TOrder.Front(); key != nil; key = key.Next() {
- keyElem := key.Value.(K).Element
- keys.PushBack(keyElem)
- }
- return keys
-}
-
-// Convert Map values to List.
-//
-// Returns: - List of Map Values
-func (om *OrderedMap) ValueLists() *list.List {
- vals := list.New()
- for key := om.TOrder.Front(); key != nil; key = key.Next() {
- keyElem := key.Value.(K).Element
- value := om.Get(keyElem)
- vals.PushBack(value)
- }
- return vals
-}
-
-// Get Map length
-//
-// Returns: - Length of the map Element.
-func (om *OrderedMap) Len() int {
- return om.TOrder.Len()
-}
-
-// Delete Map Element
-//
-// Returns: - error contents
-// and nil if no error occurred.
-func (om *OrderedMap) Delete(keyInfs interface{}) (e error) {
- // Delete key Elements from Map
- delete(om.TMap, K{Element: keyInfs})
- // Delete key Elements from List
- for elem := om.TOrder.Front(); elem != nil; elem = elem.Next() {
- if elem.Value == (K{Element: keyInfs}) {
- tmp := elem.Next()
- if tmp == nil {
- break
- }
- om.TOrder.Remove(elem)
- elem = tmp
- }
- }
- return
-}
-
-// Get Elements from Map and delete from List
-//
-// Returns: - Value of Map
-// Return the interface that value has entered the Map.
-func (om *OrderedMap) Pop(keyInfs interface{}) interface{} {
- elem := om.TMap[K{Element: keyInfs}]
- key := (K{Element: keyInfs}).Element
- om.Delete(key)
- return elem
-}
-
-// Clear Map and List
-func (om *OrderedMap) Clear() {
- om.keyType = nil
- om.valType = nil
- om.TMap = make(map[K]interface{})
- om.TOrder = list.New()
-}