summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-struct
AgeCommit message (Collapse)Author
2021-05-17Global renaming regarding `integer` and `float`.Yukihiro "Matz" Matsumoto
Consistent number conversion function names: * `mrb_value` to immediate (C) value * `mrb_int()` -> `mrb_as_int()` * `mrb_to_flo()` -> `mrb_as_float()` * `mrb_value` to `mrb_value` (converted) * `mrb_to_int()' * `mrb_Integer()` - removed * `mrb_Float()` -> `mrb_to_float` Consistent function name (avoid `_flo` suffix): * `mrb_div_flo()` -> `mrb_div_float`
2021-02-06No need to check class definitiondearblue
Because now the `Struct` class is always defined when this file is included.
2021-01-26Revert "Minimize the changes in #5277"Yukihiro "Matz" Matsumoto
This reverts commit dc51d89ac22acc60b9bfeed87115863565b74085.
2021-01-22Minimize the changes in #5277Yukihiro "Matz" Matsumoto
Instead of including `mruby/presym.h` everywhere, we provided the fallback `mruby/presym.inc` under `include/mruby` directory, and specify `-I<build-dir>/include` before `-I<top-dir>/include` in `presym.rake`. So even when someone drops `-I<build-dir>/include` in compiler options, it just compiles without failure.
2021-01-11Avoid including `presym.inc` in existing header filesKOBAYASHI Shuji
Addressed an issue where existing programs linking `libmruby.a` could only be built by adding `<build-dir>/include` to compiler's include path.
2020-12-13Fix spellingJohn Bampton
2020-10-22Prohibit array changes by "a"/"*" specifier of `mrb_get_args()`dearblue
The "a"/"*" specifier of the `mrb_get_args()` function will now return `const mrb_value *`. This is because it is difficult for the caller to check if it is an array object and write-barrier if necessary. And it requires calling `mrb_ary_modify()` on the unmodified array object, which is also difficult (this is similar to #5087).
2020-10-12Reorganize `Integer` system.Yukihiro "Matz" Matsumoto
- Integrate `Fixnum` and `Integer` - Remove `Integral` - `int / int -> int` - Replace `mrb_fixnum()` to `mrb_int()` - Replace `mrb_fixnum_value()` to `mrb_int_value()`. - Use `mrb_integer_p()` instead of `mrb_fixnum_p()`
2020-10-12Avoid using `mrb_check_intern_str()`.Yukihiro "Matz" Matsumoto
We call `mrb_intern_str()` later anyway, so there's no need to avoid defining a new symbol here.
2020-10-12Integrate `Fixnum` class into `Integer` classdearblue
* The `Fixnum` constant is now an alias for the `Integer` class. * Remove `struct mrb_state::fixnum_class` member. If necessary, use `struct mrb_state::integer_class` instead.
2020-10-12Use functions that take symbols to reduce string litrals in C.Yukihiro "Matz" Matsumoto
2020-10-12Add `MRB_SYM()` for inline symbols.Yukihiro "Matz" Matsumoto
2020-06-20Add `mrb_get_arg1()` that retrieves single (and only) argument.Yukihiro "Matz" Matsumoto
`mrb_get_arg1()` raises `ArgumentError` if the method does not receive one argument. And replaces all `mrb_get_args(mrb, "o", &arg)` by the new function.
2020-01-01Rename `mrb_num_args_error` to `mrb_argnum_error`; ref #4863Yukihiro "Matz" Matsumoto
2019-12-12Add `mrb_num_args_error()` for "wrong number of arguments" errorKOBAYASHI Shuji
To unify the style of messages.
2019-10-29Remove unneeded `Array` creation in `Struct#_inspect`KOBAYASHI Shuji
2019-09-25Rename symbol-to-string functions; close #4684Yukihiro "Matz" Matsumoto
* mrb_sym2name -> mrb_sym_name * mrb_sym2name_len -> mrb_sym_name_len * mrb_sym2str -> mrb_sym_str
2019-08-05Use new specifiers/modifiers of `mrb_vfromat()`KOBAYASHI Shuji
The binary sizes (gems are only `mruby-bin-mruby`) are reduced slightly in my environment than before the introduction of new specifiers/modifiers (5116789a) with this change. ------------+-------------------+-------------------+-------- BINARY | BEFORE (5116789a) | AFTER (This PR) | RATIO ------------+-------------------+-------------------+-------- mruby | 593416 bytes | 593208 bytes | -0.04% libmruby.a | 769048 bytes | 767264 bytes | -0.23% ------------+-------------------+-------------------+-------- BTW, I accidentally changed `tasks/toolchains/visualcpp.rake` at #4613, so I put it back.
2019-07-17Merge branch 'master' into i110/inspect-recursionYukihiro "Matz" Matsumoto
2019-06-25Renamed `stacked` to `onstack`; ref #4523Yukihiro "Matz" Matsumoto
2019-06-22Use stack memory for small name of Struct membersdearblue
2019-06-17Merge pull request #4507 from shuujii/fix-index-in-error-message-of-Struct-arefYukihiro "Matz" Matsumoto
Fix index in error message of `Struct#[]`
2019-06-17Merge pull request #4502 from ↵Yukihiro "Matz" Matsumoto
shuujii/adjust-allocation-size-in-mrb_id_attrset-mruby-struct Adjust allocation size in `mrb_id_attrset()` (`mruby-struct`)
2019-06-15Fix index in error message of `Struct#[]`KOBAYASHI Shuji
Before this patch: $ bin/mruby -e 'Struct.new(:a,:b).new[-3]' #=> offset -1 too small for struct(size:2) (IndexError) After this patch (same as Ruby): $ bin/mruby -e 'Struct.new(:a,:b).new[-3]' #=> offset -3 too small for struct(size:2) (IndexError)
2019-06-14Remove a meaningless branch condition in `mruby-struct`KOBAYASHI Shuji
The following branch condition is always true: // mrbgems/mruby-struct/src/struct.c:187 in make_struct_define_accessors() if (is_local_id(mrb, name) || is_const_id(mrb, name)) {
2019-06-13Fix class name validation in `Struct.new`KOBAYASHI Shuji
Before this patch: $ bin/mruby -e 'p Struct.new("A-")' #=> Struct::"A-" After this patch: $ bin/mruby -e 'p Struct.new("A-")' #=> NameError: identifier A- needs to be constant
2019-06-12Adjust allocation size in `mrb_id_attrset()` (`mruby-struct`)KOBAYASHI Shuji
2019-04-28Commented out "Struct.new removes existing constant" testKOBAYASHI Shuji
Because this test is always skipped.
2019-04-09Extract frozen checking to functionKOBAYASHI Shuji
2019-03-19Use `FrozenError` instead of `RuntimeError` in frozen object modification testKOBAYASHI Shuji
2019-02-24Move `Object#dig` to `Struct#dig`Wataru Ashihara
This method seems to be mistakenly put into `Object` instead of `Struct` since it's in `struct.rb` and daf83946b says: add #dig to Array,Hash and Struct
2019-02-07Raise `NameError` for symbol struct access.Yukihiro "Matz" Matsumoto
2018-11-19Use type checking `mrb_to_str` instead of converting `mrb_str_to_str`.Yukihiro "Matz" Matsumoto
2018-08-13Remove potential path to avoid uninitialized variable access.Yukihiro "Matz" Matsumoto
2018-08-06Small refactoring.Yukihiro "Matz" Matsumoto
The macro `RCLASS_SUPER`, `RCLASS_IV_TBL` and `RCLASS_M_TBL` are removed from `include/mruby/class.h`.
2018-06-04Let inspect recursion do the right thingIchito Nagata
2017-12-12Modifying frozen objects will raise `FrozenError`.Yukihiro "Matz" Matsumoto
`FrozenError` is a subclass of `RuntimeError` which used to be raised. [Ruby2.5]
2017-11-20Add `MRB_METHOD_TABLE_INLINE` option.Yukihiro "Matz" Matsumoto
Now the method tables (in classes/modules and caches) keeps C function pointers without wrapping in `struct RProc` objects. For the sake of portability, `mrb_method_t` is represented by the struct and union, but if the most significant bit of the pointer is not used by the platform, `mrb_method_t` should be packed in `uintptr_t` to reduce memory usage. `MRB_METHOD_TABLE_INLINE` is turned on by default for linux.
2017-11-03Always check division-by-zero to avoid undefined behavior; fix #3816Yukihiro "Matz" Matsumoto
Also removed the code to normalize NaN value for `MRB_NAN_BOXING`. Tha code was added to fix #1712 but no longer required after 249f05e7d.
2017-10-29Need to check number of argument of `Struct#new`; fix #3823Yukihiro "Matz" Matsumoto
2017-10-17Add more checks before accessing struct pointer; ref #3831Yukihiro "Matz" Matsumoto
2017-10-16Check struct-array pointer before accessing; fix #3831Yukihiro "Matz" Matsumoto
2017-10-15fix alias for Struct accessorsdearblue
2017-07-27Embed small size array elements in the heap.Yukihiro "Matz" Matsumoto
It reduces the memory consumption and sometimes improve the performance as well. For example, the consumed memory size of `bench/bm_ao_render.rb` is reduced from 1.2GB to 1GB, and its total execution time become 18.795 sec from 22.229 sec.
2017-07-12Use "$!" specifier of `mrb_get_args`.Yukihiro "Matz" Matsumoto
2017-06-27Remove unnecessary initialization of a local variable.Yukihiro "Matz" Matsumoto
2017-04-21Support freeze in `Struct`.take_cheeze
2017-04-13Struct may not be initialized in #to_h; fix #3607Yukihiro "Matz" Matsumoto
2017-04-05Should specify instance type of Structs; fix #3591Yukihiro "Matz" Matsumoto
2017-04-05Need to insert write barriers in struct updates; fix #3547Yukihiro "Matz" Matsumoto