Class: MilkTea::Types::Struct

Inherits:
Base
  • Object
show all
Defined in:
lib/milk_tea/core/types.rb

Direct Known Subclasses

StructInstance, Union, VariantArmPayload

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#accept, #bitwise?, #boolean?, #float?, #integer?, #numeric?, #sendable?, #void?

Constructor Details

#initialize(name, module_name: nil, external: false, packed: false, alignment: nil, linkage_name: nil, lifetime_params: []) ⇒ Struct

Returns a new instance of Struct.



900
901
902
903
904
905
906
907
908
909
910
911
912
# File 'lib/milk_tea/core/types.rb', line 900

def initialize(name, module_name: nil, external: false, packed: false, alignment: nil, linkage_name: nil, lifetime_params: [])
  @name = name
  @module_name = module_name
  @external = external
  @packed = packed
  @alignment = alignment
  @linkage_name = linkage_name
  @lifetime_params = lifetime_params.freeze
  @fields = {}
  @events = {}
  @nested_types = {}
  @ast_declaration = nil
end

Instance Attribute Details

#alignmentObject (readonly)

Returns the value of attribute alignment.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def alignment
  @alignment
end

#ast_declarationObject

Returns the value of attribute ast_declaration.



898
899
900
# File 'lib/milk_tea/core/types.rb', line 898

def ast_declaration
  @ast_declaration
end

#externalObject (readonly)

Returns the value of attribute external.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def external
  @external
end

#lifetime_paramsObject (readonly)

Returns the value of attribute lifetime_params.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def lifetime_params
  @lifetime_params
end

#linkage_nameObject (readonly)

Returns the value of attribute linkage_name.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def linkage_name
  @linkage_name
end

#module_nameObject (readonly)

Returns the value of attribute module_name.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def module_name
  @module_name
end

#nameObject (readonly)

Returns the value of attribute name.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def name
  @name
end

#nested_typesObject (readonly)

Returns the value of attribute nested_types.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def nested_types
  @nested_types
end

#packedObject (readonly)

Returns the value of attribute packed.



897
898
899
# File 'lib/milk_tea/core/types.rb', line 897

def packed
  @packed
end

Instance Method Details

#childrenObject



979
980
981
# File 'lib/milk_tea/core/types.rb', line 979

def children
  fields.values
end

#define_events(events) ⇒ Object



919
920
921
922
# File 'lib/milk_tea/core/types.rb', line 919

def define_events(events)
  @events = events.freeze
  self
end

#define_fields(fields) ⇒ Object



914
915
916
917
# File 'lib/milk_tea/core/types.rb', line 914

def define_fields(fields)
  @fields = fields.freeze
  self
end

#define_nested_types(nested) ⇒ Object



924
925
926
927
# File 'lib/milk_tea/core/types.rb', line 924

def define_nested_types(nested)
  @nested_types = nested.freeze
  self
end

#eql?(other) ⇒ Boolean Also known as: ==

Returns:

  • (Boolean)


959
960
961
962
963
964
965
966
967
# File 'lib/milk_tea/core/types.rb', line 959

def eql?(other)
  other.class == self.class &&
    other.name == name &&
    other.module_name == module_name &&
    other.external == external &&
    other.packed == packed &&
    other.alignment == alignment &&
    other.linkage_name == linkage_name
end

#event(name) ⇒ Object



947
948
949
# File 'lib/milk_tea/core/types.rb', line 947

def event(name)
  @events[name]
end

#eventsObject



943
944
945
# File 'lib/milk_tea/core/types.rb', line 943

def events
  @events
end

#field(name) ⇒ Object



939
940
941
# File 'lib/milk_tea/core/types.rb', line 939

def field(name)
  @fields[name]
end

#field_c_name(name) ⇒ Object



955
956
957
# File 'lib/milk_tea/core/types.rb', line 955

def field_c_name(name)
  name
end

#fieldsObject



935
936
937
# File 'lib/milk_tea/core/types.rb', line 935

def fields
  @fields
end

#has_events?Boolean

Returns:

  • (Boolean)


951
952
953
# File 'lib/milk_tea/core/types.rb', line 951

def has_events?
  !@events.empty?
end

#hashObject



971
972
973
# File 'lib/milk_tea/core/types.rb', line 971

def hash
  [self.class, name, module_name, external, packed, alignment, linkage_name].hash
end

#set_layout(packed:, alignment:) ⇒ Object



929
930
931
932
933
# File 'lib/milk_tea/core/types.rb', line 929

def set_layout(packed:, alignment:)
  @packed = packed
  @alignment = alignment
  self
end

#to_sObject



975
976
977
# File 'lib/milk_tea/core/types.rb', line 975

def to_s
  module_name ? "#{module_name}.#{name}" : name
end