class Puppet::Pops::Types::PStructElement

@api public

@api public

Attributes

key_type[RW]
value_type[RW]

Public Class Methods

new(key_type, value_type) click to toggle source
     # File lib/puppet/pops/types/types.rb
1945 def initialize(key_type, value_type)
1946   @key_type = key_type
1947   @value_type = value_type
1948 end
register_ptype(loader, ir) click to toggle source
     # File lib/puppet/pops/types/types.rb
1922 def self.register_ptype(loader, ir)
1923   @type = Pcore::create_object_type(loader, ir, self, 'Pcore::StructElement', nil,
1924     'key_type' => PTypeType::DEFAULT,
1925     'value_type' => PTypeType::DEFAULT)
1926 end

Public Instance Methods

<=>(o) click to toggle source
     # File lib/puppet/pops/types/types.rb
1966 def <=>(o)
1967   self.name <=> o.name
1968 end
==(o) click to toggle source
     # File lib/puppet/pops/types/types.rb
1974 def ==(o)
1975   self.class == o.class && value_type == o.value_type && key_type == o.key_type
1976 end
accept(visitor, guard) click to toggle source
     # File lib/puppet/pops/types/types.rb
1930 def accept(visitor, guard)
1931   @key_type.accept(visitor, guard)
1932   @value_type.accept(visitor, guard)
1933 end
eql?(o) click to toggle source
     # File lib/puppet/pops/types/types.rb
1970 def eql?(o)
1971   self == o
1972 end
generalize() click to toggle source
     # File lib/puppet/pops/types/types.rb
1950 def generalize
1951   gv_type = @value_type.generalize
1952   @value_type.equal?(gv_type) ? self : PStructElement.new(@key_type, gv_type)
1953 end
hash() click to toggle source
     # File lib/puppet/pops/types/types.rb
1935 def hash
1936   value_type.hash ^ key_type.hash
1937 end
name() click to toggle source
     # File lib/puppet/pops/types/types.rb
1939 def name
1940   k = key_type
1941   k = k.optional_type if k.is_a?(POptionalType)
1942   k.value
1943 end
normalize(guard = nil) click to toggle source
     # File lib/puppet/pops/types/types.rb
1955 def normalize(guard = nil)
1956   nv_type = @value_type.normalize(guard)
1957   @value_type.equal?(nv_type) ? self : PStructElement.new(@key_type, nv_type)
1958 end
replace_value_type(new_type) click to toggle source

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)

@api private

     # File lib/puppet/pops/types/types.rb
1982 def replace_value_type(new_type)
1983   @value_type = new_type
1984 end
resolve(loader) click to toggle source
     # File lib/puppet/pops/types/types.rb
1960 def resolve(loader)
1961   rkey_type = @key_type.resolve(loader)
1962   rvalue_type = @value_type.resolve(loader)
1963   rkey_type.equal?(@key_type) && rvalue_type.equal?(@value_type) ? self : self.class.new(rkey_type, rvalue_type)
1964 end