Class: Puppet::Pops::Types::PStructElement
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
_pcore_type, create_ptype, register_ptypes
#_pcore_all_contents, #_pcore_contents, #_pcore_init_hash, #_pcore_type, #to_s
Constructor Details
#initialize(key_type, value_type) ⇒ PStructElement
Returns a new instance of PStructElement.
1948
1949
1950
1951
|
# File 'lib/puppet/pops/types/types.rb', line 1948
def initialize(key_type, value_type)
@key_type = key_type
@value_type = value_type
end
|
Instance Attribute Details
1931
1932
1933
|
# File 'lib/puppet/pops/types/types.rb', line 1931
def key_type
@key_type
end
|
#value_type ⇒ Object
1931
1932
1933
|
# File 'lib/puppet/pops/types/types.rb', line 1931
def value_type
@value_type
end
|
Class Method Details
.register_ptype(loader, ir) ⇒ Object
Instance Method Details
1969
1970
1971
|
# File 'lib/puppet/pops/types/types.rb', line 1969
def <=>(o)
name <=> o.name
end
|
1977
1978
1979
|
# File 'lib/puppet/pops/types/types.rb', line 1977
def ==(o)
self.class == o.class && value_type == o.value_type && key_type == o.key_type
end
|
#accept(visitor, guard) ⇒ Object
1933
1934
1935
1936
|
# File 'lib/puppet/pops/types/types.rb', line 1933
def accept(visitor, guard)
@key_type.accept(visitor, guard)
@value_type.accept(visitor, guard)
end
|
#eql?(o) ⇒ Boolean
1973
1974
1975
|
# File 'lib/puppet/pops/types/types.rb', line 1973
def eql?(o)
self == o
end
|
#generalize ⇒ Object
1953
1954
1955
1956
|
# File 'lib/puppet/pops/types/types.rb', line 1953
def generalize
gv_type = @value_type.generalize
@value_type.equal?(gv_type) ? self : PStructElement.new(@key_type, gv_type)
end
|
1938
1939
1940
|
# File 'lib/puppet/pops/types/types.rb', line 1938
def hash
value_type.hash ^ key_type.hash
end
|
1942
1943
1944
1945
1946
|
# File 'lib/puppet/pops/types/types.rb', line 1942
def name
k = key_type
k = k.optional_type if k.is_a?(POptionalType)
k.value
end
|
#normalize(guard = nil) ⇒ Object
1958
1959
1960
1961
|
# File 'lib/puppet/pops/types/types.rb', line 1958
def normalize(guard = nil)
nv_type = @value_type.normalize(guard)
@value_type.equal?(nv_type) ? self : PStructElement.new(@key_type, nv_type)
end
|
#replace_value_type(new_type) ⇒ Object
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
Special boostrap method to overcome the hen and egg problem with the Object initializer that contains types that are derived from Object (such as Annotation)
1985
1986
1987
|
# File 'lib/puppet/pops/types/types.rb', line 1985
def replace_value_type(new_type)
@value_type = new_type
end
|
#resolve(loader) ⇒ Object
1963
1964
1965
1966
1967
|
# File 'lib/puppet/pops/types/types.rb', line 1963
def resolve(loader)
rkey_type = @key_type.resolve(loader)
rvalue_type = @value_type.resolve(loader)
rkey_type.equal?(@key_type) && rvalue_type.equal?(@value_type) ? self : self.class.new(rkey_type, rvalue_type)
end
|