Module: FastRuby::LogicalOperatorTranslator
- Defined in:
- lib/fastruby/translator/modules/logical.rb
Instance Method Summary collapse
- #to_c_and(tree, return_var = nil) ⇒ Object
- #to_c_not(tree, return_var = nil) ⇒ Object
- #to_c_or(tree, return_var = nil) ⇒ Object
Instance Method Details
#to_c_and(tree, return_var = nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fastruby/translator/modules/logical.rb', line 25 def to_c_and(tree, return_var = nil) if return_var " { VALUE op1 = Qnil; VALUE op2 = Qnil; #{to_c tree[1], "op1"}; #{to_c tree[2], "op2"}; #{return_var} = (RTEST(op1) && RTEST(op2)) ? Qtrue : Qfalse; } " else "(RTEST(#{to_c tree[1]}) && RTEST(#{to_c tree[2]})) ? Qtrue : Qfalse" end end |
#to_c_not(tree, return_var = nil) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/fastruby/translator/modules/logical.rb', line 58 def to_c_not(tree, return_var = nil) if return_var " { VALUE op1 = Qnil; #{to_c tree[1], "op1"}; #{return_var} = (RTEST(op1)) ? Qfalse: Qtrue; } " else "RTEST(#{to_c tree[1]}) ? Qfalse : Qtrue" end end |
#to_c_or(tree, return_var = nil) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/fastruby/translator/modules/logical.rb', line 42 def to_c_or(tree, return_var = nil) if return_var " { VALUE op1 = Qnil; VALUE op2 = Qnil; #{to_c tree[1], "op1"}; #{to_c tree[2], "op2"}; #{return_var} = (RTEST(op1) || RTEST(op2)) ? Qtrue : Qfalse; } " else "(RTEST(#{to_c tree[1]}) || RTEST(#{to_c tree[2]})) ? Qtrue : Qfalse" end end |