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.
1944
1945
1946
1947
|
# File 'lib/puppet/pops/types/types.rb', line 1944
def initialize(key_type, value_type)
@key_type = key_type
@value_type = value_type
end
|
Instance Attribute Details
1927
1928
1929
|
# File 'lib/puppet/pops/types/types.rb', line 1927
def key_type
@key_type
end
|
#value_type ⇒ Object
1927
1928
1929
|
# File 'lib/puppet/pops/types/types.rb', line 1927
def value_type
@value_type
end
|
Class Method Details
.register_ptype(loader, ir) ⇒ Object
Instance Method Details
1965
1966
1967
|
# File 'lib/puppet/pops/types/types.rb', line 1965
def <=>(o)
self.name <=> o.name
end
|
1973
1974
1975
|
# File 'lib/puppet/pops/types/types.rb', line 1973
def ==(o)
self.class == o.class && value_type == o.value_type && key_type == o.key_type
end
|
#accept(visitor, guard) ⇒ Object
1929
1930
1931
1932
|
# File 'lib/puppet/pops/types/types.rb', line 1929
def accept(visitor, guard)
@key_type.accept(visitor, guard)
@value_type.accept(visitor, guard)
end
|
#eql?(o) ⇒ Boolean
1969
1970
1971
|
# File 'lib/puppet/pops/types/types.rb', line 1969
def eql?(o)
self == o
end
|
#generalize ⇒ Object
1949
1950
1951
1952
|
# File 'lib/puppet/pops/types/types.rb', line 1949
def generalize
gv_type = @value_type.generalize
@value_type.equal?(gv_type) ? self : PStructElement.new(@key_type, gv_type)
end
|
1934
1935
1936
|
# File 'lib/puppet/pops/types/types.rb', line 1934
def hash
value_type.hash ^ key_type.hash
end
|
1938
1939
1940
1941
1942
|
# File 'lib/puppet/pops/types/types.rb', line 1938
def name
k = key_type
k = k.optional_type if k.is_a?(POptionalType)
k.value
end
|
#normalize(guard = nil) ⇒ Object
1954
1955
1956
1957
|
# File 'lib/puppet/pops/types/types.rb', line 1954
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)
1981
1982
1983
|
# File 'lib/puppet/pops/types/types.rb', line 1981
def replace_value_type(new_type)
@value_type = new_type
end
|
#resolve(loader) ⇒ Object
1959
1960
1961
1962
1963
|
# File 'lib/puppet/pops/types/types.rb', line 1959
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
|