File: value/core/atom/bool.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Umu#6
  module: Value#8
  module: Core#10
has properties
function: make_true #118
function: make_false #123
function: make_bool / 1 #128
  module: Atom#12
has properties
constant: TRUE #109
constant: FALSE #110
  class: Bool#14
inherits from
  Abstract ( Umu::Value::Core::Atom )
has properties
class method: meth_make_true / 3 #20
class method: meth_make_false / 3 #30
alias: true? val #35
method: false? #38
method: to_s #43
method: meth_is_less_than / 4 #57
method: meth_not / 3 #103

Class Hierarchy

Code

   1  # coding: utf-8
   2  # frozen_string_literal: true
   3 
   4 
   5 
   6  module Umu
   7 
   8  module Value
   9 
  10  module Core
  11 
  12  module Atom
  13 
  14  class Bool < Abstract
  15      define_class_method(
  16          :meth_make_true,
  17          :true, [],
  18          [], VCA::Bool
  19      )
  20      def self.meth_make_true(_loc, _env, _event)
  21          VC.make_true
  22      end
  23 
  24 
  25      define_class_method(
  26          :meth_make_false,
  27          :false, [],
  28          [], VCA::Bool
  29      )
  30      def self.meth_make_false(_loc, _env, _event)
  31          VC.make_false
  32      end
  33 
  34 
  35      alias true? val
  36 
  37 
  38      def false?
  39          ! self.val
  40      end
  41 
  42 
  43      def to_s
  44          if self.val
  45              'TRUE'
  46          else
  47              'FALSE'
  48          end
  49      end
  50 
  51 
  52      define_instance_method(
  53          :meth_is_less_than,
  54          :'<', [],
  55          [self], self
  56      )
  57      def meth_is_less_than(_loc, _env, _event, other)
  58          ASSERT.kind_of other, Bool
  59 
  60          VC.make_bool(
  61              if self.val
  62                  ! other.val
  63              else
  64                  false
  65              end
  66          )
  67      end
  68 
  69 
  70      define_instance_method(
  71          :meth_is_greater_than,
  72          :'>', [],
  73          [self], VCA::Bool
  74      )
  75 
  76 
  77      define_instance_method(
  78          :meth_is_less_equal,
  79          :'<=', [],
  80          [self], VCA::Bool
  81      )
  82 
  83 
  84      define_instance_method(
  85          :meth_is_greater_equal,
  86          :'>=', [],
  87          [self], VCA::Bool
  88      )
  89 
  90 
  91      define_instance_method(
  92          :meth_compare,
  93          :'<=>', [],
  94          [self], VCAN::Int
  95      )
  96 
  97 
  98      define_instance_method(
  99          :meth_not,
 100          :not, [],
 101          [], self
 102      )
 103      def meth_not(_loc, _env, _event)
 104          VC.make_bool(! self.val)
 105      end
 106  end
 107  Bool.freeze
 108 
 109  TRUE    = Bool.new(true).freeze
 110  FALSE   = Bool.new(false).freeze
 111 
 112  end # Umu::Value::Core::Atom
 113 
 114 
 115 
 116  module_function
 117 
 118      def make_true
 119          Atom::TRUE
 120      end
 121 
 122 
 123      def make_false
 124          Atom::FALSE
 125      end
 126 
 127 
 128      def make_bool(val)
 129          ASSERT.bool val
 130 
 131          if val
 132              VC.make_true
 133          else
 134              VC.make_false
 135          end
 136      end
 137 
 138  end # Umu::Value::Core
 139 
 140  end # Umu::Value
 141 
 142  end # Umu