Class: Udb::XlenTerm

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Includes:
Comparable
Defined in:
lib/udb/logic.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(xlen)

Parameters:

  • xlen (Integer)


47
48
49
50
51
52
53
54
# File 'lib/udb/logic.rb', line 47

def initialize(xlen)
  @xlen = xlen
  @to_s = "xlen=#{@xlen}".freeze
  @to_h = {
    "xlen" => @xlen
  }.freeze
  @hash = to_s.hash
end

Instance Attribute Details

#xlenObject (readonly)

Returns the value of attribute xlen.



44
45
46
# File 'lib/udb/logic.rb', line 44

def xlen
  @xlen
end

Instance Method Details

#<=>(other) ⇒ Integer?

Parameters:

  • other (T.untyped)

Returns:

  • (Integer, nil)


93
94
95
96
97
# File 'lib/udb/logic.rb', line 93

def <=>(other)
  return nil unless other.is_a?(XlenTerm)

  @xlen <=> other.xlen
end

#eql?(other) ⇒ Boolean

Parameters:

  • other (T.untyped)

Returns:

  • (Boolean)


109
110
111
# File 'lib/udb/logic.rb', line 109

def eql?(other)
  (self <=> other) == 0
end

#hashInteger

hash and eql? must be implemented to use XlenTerm as a Hash key

Returns:

  • (Integer)


101
# File 'lib/udb/logic.rb', line 101

def hash = @hash

#to_asciidocString

Returns:

  • (String)


75
# File 'lib/udb/logic.rb', line 75

def to_asciidoc = "xlen+++()+++ == #{@xlen}"

#to_condition(cfg_arch) ⇒ Condition

Parameters:

Returns:



57
58
59
# File 'lib/udb/logic.rb', line 57

def to_condition(cfg_arch)
  Condition.new({ "xlen" => @xlen }, cfg_arch)
end

#to_hHash{String => Integer}

Returns:

  • (Hash{String => Integer})


78
79
80
# File 'lib/udb/logic.rb', line 78

def to_h
  @to_h
end

#to_idl(cfg_arch) ⇒ String

Parameters:

Returns:

  • (String)


83
84
85
# File 'lib/udb/logic.rb', line 83

def to_idl(cfg_arch)
  "(xlen() == #{@xlen})"
end

#to_sString

Returns:

  • (String)


62
63
64
# File 'lib/udb/logic.rb', line 62

def to_s
  @to_s
end

#to_s_prettyString

Returns:

  • (String)


72
# File 'lib/udb/logic.rb', line 72

def to_s_pretty = to_s

#to_z3(solver) ⇒ Z3::BoolExpr

Parameters:

Returns:

  • (Z3::BoolExpr)


67
68
69
# File 'lib/udb/logic.rb', line 67

def to_z3(solver)
  solver.xlen == @xlen
end