162 lines
3.9 KiB
GDScript
162 lines
3.9 KiB
GDScript
extends Comparable
|
|
class_name ReadOnlyReactiveDictionaryBase
|
|
|
|
class DictionaryAddKeyEvent extends Comparable:
|
|
var key
|
|
var value
|
|
|
|
func _init(key_, value_):
|
|
self.key = key_
|
|
self.value = value_
|
|
|
|
func _to_string() -> String:
|
|
return "Key: " + str(key) + " Value: " + str(value)
|
|
|
|
func get_hash_code() -> int:
|
|
return hash(key) ^ hash(value) << 2
|
|
|
|
func eq(other) -> bool:
|
|
if not (other is DictionaryAddKeyEvent):
|
|
return false
|
|
return GDRx.eq(key, other.key) and GDRx.eq(value, other.value)
|
|
|
|
class DictionaryRemoveKeyEvent extends Comparable:
|
|
var key
|
|
var value
|
|
|
|
func _init(key_, value_):
|
|
self.key = key_
|
|
self.value = value_
|
|
|
|
func _to_string() -> String:
|
|
return "Key: " + str(key) + " Value: " + str(value)
|
|
|
|
func get_hash_code() -> int:
|
|
return hash(key) ^ hash(value) << 2
|
|
|
|
func eq(other) -> bool:
|
|
if not (other is DictionaryRemoveKeyEvent):
|
|
return false
|
|
return GDRx.eq(key, other.key) and GDRx.eq(value, other.value)
|
|
|
|
class DictionaryUpdateValueEvent extends Comparable:
|
|
var key
|
|
var value
|
|
|
|
func _init(key_, value_):
|
|
self.key = key_
|
|
self.value = value_
|
|
|
|
func _to_string() -> String:
|
|
return "Key: " + str(key) + " Value: " + str(value)
|
|
|
|
func get_hash_code() -> int:
|
|
return hash(key) ^ hash(value) << 2
|
|
|
|
func eq(other) -> bool:
|
|
if not (other is DictionaryUpdateValueEvent):
|
|
return false
|
|
return GDRx.eq(key, other.key) and GDRx.eq(value, other.value)
|
|
|
|
var Count : int:
|
|
get: return self.size()
|
|
|
|
## [Observable]<[ReadOnlyReactiveDictionaryBase.DictionaryAddKeyEvent]>
|
|
var ObserveAddKey : Observable:
|
|
get: return self._observe_add_key.oftype(ReadOnlyReactiveDictionaryBase.DictionaryAddKeyEvent)
|
|
var _observe_add_key : Observable = GDRx.throw(NotImplementedError.new())
|
|
|
|
## Creates an [Observable] which emits the dictionary's current key count
|
|
## when the size changes.
|
|
func ObserveCountChanged(_notify_current_count : bool = false) -> Observable:
|
|
return GDRx.throw(NotImplementedError.new())
|
|
|
|
|
|
## [Observable]<[int]>
|
|
var ObserveCount : Observable:
|
|
get: return ObserveCountChanged(true).oftype(TYPE_INT)
|
|
|
|
## [Observable]<[ReadOnlyReactiveDictionaryBase.DictionaryRemoveKeyEvent]>
|
|
var ObserveRemoveKey : Observable:
|
|
get: return self._observe_remove_key.oftype(ReadOnlyReactiveDictionaryBase.DictionaryRemoveKeyEvent)
|
|
var _observe_remove_key : Observable = GDRx.throw(NotImplementedError.new())
|
|
|
|
## [Observable]<[ReadOnlyReactiveDictionaryBase.DictionaryUpdateValueEvent]>
|
|
var ObserveUpdateValue : Observable:
|
|
get: return self._observer_update_value.oftype(ReadOnlyReactiveDictionaryBase.DictionaryUpdateValueEvent)
|
|
var _observer_update_value : Observable = GDRx.throw(NotImplementedError.new())
|
|
|
|
var this
|
|
|
|
func _init():
|
|
this = self
|
|
this.unreference()
|
|
|
|
func _notification(what):
|
|
if what == NOTIFICATION_PREDELETE:
|
|
this.dispose()
|
|
|
|
func to_dict() -> Dictionary:
|
|
NotImplementedError.raise()
|
|
return {}
|
|
|
|
func find_key(value) -> Variant:
|
|
NotImplementedError.raise()
|
|
return null
|
|
|
|
func get_value(key, default = null) -> Variant:
|
|
NotImplementedError.raise()
|
|
return null
|
|
|
|
func has_key(key) -> bool:
|
|
NotImplementedError.raise()
|
|
return false
|
|
|
|
func has_all(keys : Array) -> bool:
|
|
NotImplementedError.raise()
|
|
return false
|
|
|
|
func hash() -> int:
|
|
NotImplementedError.raise()
|
|
return 0
|
|
|
|
func is_empty() -> bool:
|
|
NotImplementedError.raise()
|
|
return false
|
|
|
|
func keys() -> Array:
|
|
NotImplementedError.raise()
|
|
return []
|
|
|
|
func size() -> int:
|
|
NotImplementedError.raise()
|
|
return -1
|
|
|
|
func values() -> Array:
|
|
NotImplementedError.raise()
|
|
return []
|
|
|
|
func dispose():
|
|
NotImplementedError.raise()
|
|
|
|
func iter() -> Iterator:
|
|
NotImplementedError.raise()
|
|
return null
|
|
|
|
var __it__ : Iterator
|
|
var __curr__ : Variant
|
|
|
|
func _iter_init(arg):
|
|
self.__it__ = self.iter()
|
|
var continue_ = self.__it__.has_next()
|
|
self.__curr__ = self.__it__.next()
|
|
return continue_
|
|
|
|
func _iter_next(arg):
|
|
var continue_ = self.__it__.has_next()
|
|
self.__curr__ = self.__it__.next()
|
|
return continue_
|
|
|
|
func _iter_get(arg):
|
|
return self.__curr__
|