| package cty |
| |
| import ( |
| "errors" |
| ) |
| |
| type collectionTypeImpl interface { |
| ElementType() Type |
| } |
| |
| // IsCollectionType returns true if the given type supports the operations |
| // that are defined for all collection types. |
| func (t Type) IsCollectionType() bool { |
| _, ok := t.typeImpl.(collectionTypeImpl) |
| return ok |
| } |
| |
| // ElementType returns the element type of the receiver if it is a collection |
| // type, or panics if it is not. Use IsCollectionType first to test whether |
| // this method will succeed. |
| func (t Type) ElementType() Type { |
| if ct, ok := t.typeImpl.(collectionTypeImpl); ok { |
| return ct.ElementType() |
| } |
| panic(errors.New("not a collection type")) |
| } |
| |
| // ElementCallback is a callback type used for iterating over elements of |
| // collections and attributes of objects. |
| // |
| // The types of key and value depend on what type is being iterated over. |
| // Return true to stop iterating after the current element, or false to |
| // continue iterating. |
| type ElementCallback func(key Value, val Value) (stop bool) |