class GenericValue
Full-fledged value type equipped with dynamic memory management useful for testing & documentation purposes
Public Instance Methods
configure()
click to toggle source
Calls superclass method
AutoC::Composite#configure
# File lib/autoc/scaffold/generic_value.rb, line 36 def configure super method(:void, :set, { target: lvalue, value: :int.const_rvalue }, instance: :custom_create, constraint:-> { custom_constructible? }).configure do code %{ #{default_create.(target)}; *target->value = value; } end method(:int, :get, { target: const_rvalue }).configure do code %{ return *target.value; } end default_create.configure do code %{ assert(target); target->value = #{memory.allocate('int')}; *target->value = 0; } end destroy.configure do code %{ assert(target); #{memory.free('target->value')}; } end copy.configure do code %{ assert(target); #{default_create}(target); *target->value = *source.value; } end equal.configure do code %{ return *left.value == *right.value; } end compare.configure do code %{ return *left.value < *right.value ? -1 : (*left.value > *right.value ? +1 : 0); } end hash_code.configure do code %{ return *target.value; } end end
const_lvalue(= @clv ||= AutoC::Value.new(self, constant: true, reference: true))
click to toggle source
# File lib/autoc/scaffold/generic_value.rb, line 32 def const_lvalue = @clv ||= AutoC::Value.new(self, constant: true, reference: true) private def configure super method(:void, :set, { target: lvalue, value: :int.const_rvalue }, instance: :custom_create, constraint:-> { custom_constructible? }).configure do code %{ #{default_create.(target)}; *target->value = value; } end method(:int, :get, { target: const_rvalue }).configure do code %{ return *target.value; } end default_create.configure do code %{ assert(target); target->value = #{memory.allocate('int')}; *target->value = 0; } end destroy.configure do code %{ assert(target); #{memory.free('target->value')}; } end copy.configure do code %{ assert(target); #{default_create}(target); *target->value = *source.value; } end equal.configure do code %{ return *left.value == *right.value; } end compare.configure do code %{ return *left.value < *right.value ? -1 : (*left.value > *right.value ? +1 : 0); } end hash_code.configure do code %{ return *target.value; } end end end
const_rvalue(= @crv ||= AutoC::Value.new(self, constant: true))
click to toggle source
# File lib/autoc/scaffold/generic_value.rb, line 30 def const_rvalue = @crv ||= AutoC::Value.new(self, constant: true) def const_lvalue = @clv ||= AutoC::Value.new(self, constant: true, reference: true) private def configure super method(:void, :set, { target: lvalue, value: :int.const_rvalue }, instance: :custom_create, constraint:-> { custom_constructible? }).configure do code %{ #{default_create.(target)}; *target->value = value; } end method(:int, :get, { target: const_rvalue }).configure do code %{ return *target.value; } end default_create.configure do code %{ assert(target); target->value = #{memory.allocate('int')}; *target->value = 0; } end destroy.configure do code %{ assert(target); #{memory.free('target->value')}; } end copy.configure do code %{ assert(target); #{default_create}(target); *target->value = *source.value; } end equal.configure do code %{ return *left.value == *right.value; } end compare.configure do code %{ return *left.value < *right.value ? -1 : (*left.value > *right.value ? +1 : 0); } end hash_code.configure do code %{ return *target.value; } end end
lvalue(= @lv ||= AutoC::Value.new(self, reference: true))
click to toggle source
# File lib/autoc/scaffold/generic_value.rb, line 28 def lvalue = @lv ||= AutoC::Value.new(self, reference: true) def const_rvalue = @crv ||= AutoC::Value.new(self, constant: true) def const_lvalue = @clv ||= AutoC::Value.new(self, constant: true, reference: true) private def configure super method(:void, :set, { target: lvalue, value: :int.const_rvalue }, instance: :custom_create, constraint:-> { custom_constructible? }).configure do code %{ #{default_create.(target)}; *target->value = value; } end method(:int, :get, { target: const_rvalue }).configure do code %{ return *target.value; } end default_create.configure do code %{ assert(target); target->value = #{memory.allocate('int')}; *target->value = 0; } end destroy.configure do code %{ assert(target); #{memory.free('target->value')}; } end copy.configure do code %{ assert(target); #{default_create}(target); *target->value = *source.value; } end equal.configure do code %{ return *left.value == *right.value; } end compare.configure do code %{ return *left.value < *right.value ? -1 : (*left.value > *right.value ? +1 : 0); } end hash_code.configure do code %{ return *target.value; } end
render_interface(stream)
click to toggle source
Calls superclass method
# File lib/autoc/scaffold/generic_value.rb, line 14 def render_interface(stream) super stream << %{ /** @brief #{description} */ typedef struct { int* value; /**< @private */ } #{signature}; } end
rvalue(= @rv ||= AutoC::Value.new(self, reference: true))
click to toggle source
# File lib/autoc/scaffold/generic_value.rb, line 26 def rvalue = @rv ||= AutoC::Value.new(self, reference: true) def lvalue = @lv ||= AutoC::Value.new(self, reference: true) def const_rvalue = @crv ||= AutoC::Value.new(self, constant: true) def const_lvalue = @clv ||= AutoC::Value.new(self, constant: true, reference: true) private def configure super method(:void, :set, { target: lvalue, value: :int.const_rvalue }, instance: :custom_create, constraint:-> { custom_constructible? }).configure do code %{ #{default_create.(target)}; *target->value = value; } end method(:int, :get, { target: const_rvalue }).configure do code %{ return *target.value; } end default_create.configure do code %{ assert(target); target->value = #{memory.allocate('int')}; *target->value = 0; } end destroy.configure do code %{ assert(target); #{memory.free('target->value')}; } end copy.configure do code %{ assert(target); #{default_create}(target); *target->value = *source.value; } end equal.configure do code %{ return *left.value == *right.value; } end compare.configure do code %{ return *left.value < *right.value ? -1 : (*left.value > *right.value ? +1 : 0); } end hash_code.configure do code %{ return *target.value; } end