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.
1945
1946
1947
1948
|
# File 'lib/puppet/pops/types/types.rb', line 1945
def initialize(key_type, value_type)
@key_type = key_type
@value_type = value_type
end
|
Instance Attribute Details
1928
1929
1930
|
# File 'lib/puppet/pops/types/types.rb', line 1928
def key_type
@key_type
end
|
#value_type ⇒ Object
1928
1929
1930
|
# File 'lib/puppet/pops/types/types.rb', line 1928
def value_type
@value_type
end
|
Class Method Details
.register_ptype(loader, ir) ⇒ Object
1922
1923
1924
1925
1926
|
# File 'lib/puppet/pops/types/types.rb', line 1922
def self.register_ptype(loader, ir)
@type = Pcore::create_object_type(loader, ir, self, 'Pcore::StructElement', nil,
'key_type' => PTypeType::DEFAULT,
'value_type' => PTypeType::DEFAULT)
end
|
Instance Method Details
1966
1967
1968
|
# File 'lib/puppet/pops/types/types.rb', line 1966
def <=>(o)
self.name <=> o.name
end
|
1974
1975
1976
|
# File 'lib/puppet/pops/types/types.rb', line 1974
def ==(o)
self.class == o.class && value_type == o.value_type && key_type == o.key_type
end
|
#accept(visitor, guard) ⇒ Object
1930
1931
1932
1933
|
# File 'lib/puppet/pops/types/types.rb', line 1930
def accept(visitor, guard)
@key_type.accept(visitor, guard)
@value_type.accept(visitor, guard)
end
|
#eql?(o) ⇒ Boolean
1970
1971
1972
|
# File 'lib/puppet/pops/types/types.rb', line 1970
def eql?(o)
self == o
end
|
#generalize ⇒ Object
1950
1951
1952
1953
|
# File 'lib/puppet/pops/types/types.rb', line 1950
def generalize
gv_type = @value_type.generalize
@value_type.equal?(gv_type) ? self : PStructElement.new(@key_type, gv_type)
end
|
1935
1936
1937
|
# File 'lib/puppet/pops/types/types.rb', line 1935
def hash
value_type.hash ^ key_type.hash
end
|
1939
1940
1941
1942
1943
|
# File 'lib/puppet/pops/types/types.rb', line 1939
def name
k = key_type
k = k.optional_type if k.is_a?(POptionalType)
k.value
end
|
#normalize(guard = nil) ⇒ Object
1955
1956
1957
1958
|
# File 'lib/puppet/pops/types/types.rb', line 1955
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)
1982
1983
1984
|
# File 'lib/puppet/pops/types/types.rb', line 1982
def replace_value_type(new_type)
@value_type = new_type
end
|
#resolve(loader) ⇒ Object
1960
1961
1962
1963
1964
|
# File 'lib/puppet/pops/types/types.rb', line 1960
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
|