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.



905
906
907
908
909
910
911
912
913
914
915
916
917
# File 'lib/milk_tea/core/types.rb', line 905

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.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def alignment
  @alignment
end

#ast_declarationObject

Returns the value of attribute ast_declaration.



903
904
905
# File 'lib/milk_tea/core/types.rb', line 903

def ast_declaration
  @ast_declaration
end

#externalObject (readonly)

Returns the value of attribute external.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def external
  @external
end

#lifetime_paramsObject (readonly)

Returns the value of attribute lifetime_params.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def lifetime_params
  @lifetime_params
end

#linkage_nameObject (readonly)

Returns the value of attribute linkage_name.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def linkage_name
  @linkage_name
end

#module_nameObject (readonly)

Returns the value of attribute module_name.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def module_name
  @module_name
end

#nameObject (readonly)

Returns the value of attribute name.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def name
  @name
end

#nested_typesObject (readonly)

Returns the value of attribute nested_types.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def nested_types
  @nested_types
end

#packedObject (readonly)

Returns the value of attribute packed.



902
903
904
# File 'lib/milk_tea/core/types.rb', line 902

def packed
  @packed
end

Instance Method Details

#childrenObject



984
985
986
# File 'lib/milk_tea/core/types.rb', line 984

def children
  fields.values
end

#define_events(events) ⇒ Object



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

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

#define_fields(fields) ⇒ Object



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

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

#define_nested_types(nested) ⇒ Object



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

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

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

Returns:

  • (Boolean)


964
965
966
967
968
969
970
971
972
# File 'lib/milk_tea/core/types.rb', line 964

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



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

def event(name)
  @events[name]
end

#eventsObject



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

def events
  @events
end

#field(name) ⇒ Object



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

def field(name)
  @fields[name]
end

#field_c_name(name) ⇒ Object



960
961
962
# File 'lib/milk_tea/core/types.rb', line 960

def field_c_name(name)
  name
end

#fieldsObject



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

def fields
  @fields
end

#has_events?Boolean

Returns:

  • (Boolean)


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

def has_events?
  !@events.empty?
end

#hashObject



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

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

#set_layout(packed:, alignment:) ⇒ Object



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

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

#to_sObject



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

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