Class: Puppet::Pops::Types::PStructElement

Inherits:
TypedModelObject show all
Defined in:
lib/puppet/pops/types/types.rb

Overview

API:

  • public

  • public

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from TypedModelObject

_pcore_type, create_ptype, register_ptypes

Methods included from PuppetObject

#_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.

API:

  • public

  • public



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

#key_typeObject

API:

  • public

  • public



1928
1929
1930
# File 'lib/puppet/pops/types/types.rb', line 1928

def key_type
  @key_type
end

#value_typeObject

API:

  • public

  • public



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

API:

  • public

  • public



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

#<=>(o) ⇒ Object

API:

  • public

  • public



1966
1967
1968
# File 'lib/puppet/pops/types/types.rb', line 1966

def <=>(o)
  self.name <=> o.name
end

#==(o) ⇒ Object

API:

  • public

  • public



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

API:

  • public

  • public



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

Returns:

API:

  • public

  • public



1970
1971
1972
# File 'lib/puppet/pops/types/types.rb', line 1970

def eql?(o)
  self == o
end

#generalizeObject

API:

  • public

  • public



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

#hashObject

API:

  • public

  • public



1935
1936
1937
# File 'lib/puppet/pops/types/types.rb', line 1935

def hash
  value_type.hash ^ key_type.hash
end

#nameObject

API:

  • public

  • public



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

API:

  • public

  • public



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)

API:

  • private



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

API:

  • public

  • public



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