From 7e7a3c5b1d8a7e382326d2cb635591446a560863 Mon Sep 17 00:00:00 2001 From: Thomas Thomassen Date: Tue, 9 Jan 2024 11:36:15 +0100 Subject: [PATCH] Update Ruby 3.2 Windows build for Ruby DLL rename. (#220) * Update Ruby 3.2 Windows build for Ruby DLL rename. * Remove Ruby 3.1 C extension config and build. * Remove headers and libs for Ruby 3.1. * Remove unused Ruby 2.0 framework. --- .../TaskbarProgress/Ruby 3.1 (x64).props | 16 - .../TaskbarProgress/Ruby 3.2 (x64).props | 2 +- .../TaskbarProgress/TaskbarProgress.vcxproj | 88 - .../sketchup-taskbarlist/TestUp.sln | 10 - .../include/ruby310/win32_x64/ruby.h | 40 - .../include/ruby310/win32_x64/ruby/assert.h | 234 --- .../include/ruby310/win32_x64/ruby/atomic.h | 890 -------- .../include/ruby310/win32_x64/ruby/backward.h | 71 - .../win32_x64/ruby/backward/2/assume.h | 58 - .../win32_x64/ruby/backward/2/attributes.h | 165 -- .../ruby310/win32_x64/ruby/backward/2/bool.h | 36 - .../ruby/backward/2/gcc_version_since.h | 37 - .../win32_x64/ruby/backward/2/inttypes.h | 131 -- .../win32_x64/ruby/backward/2/limits.h | 99 - .../win32_x64/ruby/backward/2/long_long.h | 73 - .../win32_x64/ruby/backward/2/r_cast.h | 32 - .../win32_x64/ruby/backward/2/rmodule.h | 36 - .../win32_x64/ruby/backward/2/stdalign.h | 30 - .../win32_x64/ruby/backward/2/stdarg.h | 69 - .../win32_x64/ruby/backward/cxxanyargs.hpp | 700 ------- .../include/ruby310/win32_x64/ruby/config.h | 181 -- .../include/ruby310/win32_x64/ruby/debug.h | 644 ------ .../include/ruby310/win32_x64/ruby/defines.h | 116 -- .../include/ruby310/win32_x64/ruby/digest.h | 72 - .../include/ruby310/win32_x64/ruby/encoding.h | 31 - .../ruby310/win32_x64/ruby/fiber/scheduler.h | 336 --- .../include/ruby310/win32_x64/ruby/intern.h | 64 - .../ruby310/win32_x64/ruby/internal/anyargs.h | 375 ---- .../win32_x64/ruby/internal/arithmetic.h | 38 - .../win32_x64/ruby/internal/arithmetic/char.h | 81 - .../ruby/internal/arithmetic/double.h | 72 - .../ruby/internal/arithmetic/fixnum.h | 60 - .../ruby/internal/arithmetic/gid_t.h | 41 - .../win32_x64/ruby/internal/arithmetic/int.h | 264 --- .../ruby/internal/arithmetic/intptr_t.h | 74 - .../win32_x64/ruby/internal/arithmetic/long.h | 356 ---- .../ruby/internal/arithmetic/long_long.h | 135 -- .../ruby/internal/arithmetic/mode_t.h | 41 - .../ruby/internal/arithmetic/off_t.h | 62 - .../ruby/internal/arithmetic/pid_t.h | 41 - .../ruby/internal/arithmetic/short.h | 113 - .../ruby/internal/arithmetic/size_t.h | 66 - .../ruby/internal/arithmetic/st_data_t.h | 75 - .../ruby/internal/arithmetic/uid_t.h | 41 - .../ruby310/win32_x64/ruby/internal/assume.h | 90 - .../win32_x64/ruby/internal/attr/alloc_size.h | 32 - .../win32_x64/ruby/internal/attr/artificial.h | 46 - .../win32_x64/ruby/internal/attr/cold.h | 37 - .../win32_x64/ruby/internal/attr/const.h | 46 - .../win32_x64/ruby/internal/attr/constexpr.h | 84 - .../win32_x64/ruby/internal/attr/deprecated.h | 75 - .../ruby/internal/attr/diagnose_if.h | 42 - .../ruby/internal/attr/enum_extensibility.h | 32 - .../win32_x64/ruby/internal/attr/error.h | 32 - .../win32_x64/ruby/internal/attr/flag_enum.h | 33 - .../ruby/internal/attr/forceinline.h | 40 - .../win32_x64/ruby/internal/attr/format.h | 38 - .../ruby/internal/attr/maybe_unused.h | 38 - .../win32_x64/ruby/internal/attr/noalias.h | 69 - .../win32_x64/ruby/internal/attr/nodiscard.h | 45 - .../win32_x64/ruby/internal/attr/noexcept.h | 91 - .../win32_x64/ruby/internal/attr/noinline.h | 35 - .../win32_x64/ruby/internal/attr/nonnull.h | 34 - .../win32_x64/ruby/internal/attr/noreturn.h | 48 - .../win32_x64/ruby/internal/attr/pure.h | 43 - .../win32_x64/ruby/internal/attr/restrict.h | 44 - .../ruby/internal/attr/returns_nonnull.h | 37 - .../win32_x64/ruby/internal/attr/warning.h | 32 - .../win32_x64/ruby/internal/attr/weakref.h | 32 - .../ruby310/win32_x64/ruby/internal/cast.h | 50 - .../win32_x64/ruby/internal/compiler_is.h | 45 - .../ruby/internal/compiler_is/apple.h | 40 - .../ruby/internal/compiler_is/clang.h | 37 - .../win32_x64/ruby/internal/compiler_is/gcc.h | 45 - .../ruby/internal/compiler_is/intel.h | 40 - .../ruby/internal/compiler_is/msvc.h | 56 - .../ruby/internal/compiler_is/sunpro.h | 54 - .../win32_x64/ruby/internal/compiler_since.h | 61 - .../ruby310/win32_x64/ruby/internal/config.h | 153 -- .../win32_x64/ruby/internal/constant_p.h | 38 - .../ruby310/win32_x64/ruby/internal/core.h | 35 - .../win32_x64/ruby/internal/core/rarray.h | 590 ------ .../win32_x64/ruby/internal/core/rbasic.h | 158 -- .../win32_x64/ruby/internal/core/rbignum.h | 80 - .../win32_x64/ruby/internal/core/rclass.h | 140 -- .../win32_x64/ruby/internal/core/rdata.h | 410 ---- .../win32_x64/ruby/internal/core/rfile.h | 51 - .../win32_x64/ruby/internal/core/rhash.h | 144 -- .../win32_x64/ruby/internal/core/rmatch.h | 146 -- .../win32_x64/ruby/internal/core/robject.h | 185 -- .../win32_x64/ruby/internal/core/rregexp.h | 168 -- .../win32_x64/ruby/internal/core/rstring.h | 577 ------ .../win32_x64/ruby/internal/core/rstruct.h | 121 -- .../win32_x64/ruby/internal/core/rtypeddata.h | 604 ------ .../ruby310/win32_x64/ruby/internal/ctype.h | 545 ----- .../win32_x64/ruby/internal/dllexport.h | 112 - .../ruby310/win32_x64/ruby/internal/dosish.h | 89 - .../ruby/internal/encoding/coderange.h | 202 -- .../win32_x64/ruby/internal/encoding/ctype.h | 243 --- .../ruby/internal/encoding/encoding.h | 1058 ---------- .../ruby/internal/encoding/pathname.h | 184 -- .../win32_x64/ruby/internal/encoding/re.h | 46 - .../ruby/internal/encoding/sprintf.h | 78 - .../win32_x64/ruby/internal/encoding/string.h | 346 ---- .../win32_x64/ruby/internal/encoding/symbol.h | 100 - .../ruby/internal/encoding/transcode.h | 558 ----- .../ruby310/win32_x64/ruby/internal/error.h | 582 ------ .../ruby310/win32_x64/ruby/internal/eval.h | 373 ---- .../ruby310/win32_x64/ruby/internal/event.h | 154 -- .../ruby310/win32_x64/ruby/internal/fl_type.h | 967 --------- .../ruby310/win32_x64/ruby/internal/gc.h | 57 - .../ruby310/win32_x64/ruby/internal/glob.h | 113 - .../ruby310/win32_x64/ruby/internal/globals.h | 209 -- .../win32_x64/ruby/internal/has/attribute.h | 163 -- .../win32_x64/ruby/internal/has/builtin.h | 119 -- .../win32_x64/ruby/internal/has/c_attribute.h | 38 - .../ruby/internal/has/cpp_attribute.h | 86 - .../ruby/internal/has/declspec_attribute.h | 47 - .../win32_x64/ruby/internal/has/extension.h | 33 - .../win32_x64/ruby/internal/has/feature.h | 31 - .../win32_x64/ruby/internal/has/warning.h | 31 - .../win32_x64/ruby/internal/intern/array.h | 657 ------ .../win32_x64/ruby/internal/intern/bignum.h | 846 -------- .../win32_x64/ruby/internal/intern/class.h | 382 ---- .../win32_x64/ruby/internal/intern/compar.h | 62 - .../win32_x64/ruby/internal/intern/complex.h | 253 --- .../win32_x64/ruby/internal/intern/cont.h | 260 --- .../win32_x64/ruby/internal/intern/dir.h | 42 - .../win32_x64/ruby/internal/intern/enum.h | 73 - .../ruby/internal/intern/enumerator.h | 259 --- .../win32_x64/ruby/internal/intern/error.h | 301 --- .../win32_x64/ruby/internal/intern/eval.h | 222 -- .../win32_x64/ruby/internal/intern/file.h | 213 -- .../win32_x64/ruby/internal/intern/gc.h | 392 ---- .../win32_x64/ruby/internal/intern/hash.h | 318 --- .../win32_x64/ruby/internal/intern/io.h | 661 ------ .../win32_x64/ruby/internal/intern/load.h | 218 -- .../win32_x64/ruby/internal/intern/marshal.h | 112 - .../win32_x64/ruby/internal/intern/numeric.h | 208 -- .../win32_x64/ruby/internal/intern/object.h | 569 ----- .../win32_x64/ruby/internal/intern/parse.h | 194 -- .../win32_x64/ruby/internal/intern/proc.h | 353 ---- .../win32_x64/ruby/internal/intern/process.h | 273 --- .../win32_x64/ruby/internal/intern/random.h | 116 -- .../win32_x64/ruby/internal/intern/range.h | 89 - .../win32_x64/ruby/internal/intern/rational.h | 172 -- .../win32_x64/ruby/internal/intern/re.h | 249 --- .../win32_x64/ruby/internal/intern/ruby.h | 77 - .../win32_x64/ruby/internal/intern/select.h | 86 - .../ruby/internal/intern/select/largesize.h | 217 -- .../ruby/internal/intern/select/posix.h | 144 -- .../ruby/internal/intern/select/win32.h | 259 --- .../win32_x64/ruby/internal/intern/signal.h | 152 -- .../win32_x64/ruby/internal/intern/sprintf.h | 159 -- .../win32_x64/ruby/internal/intern/string.h | 1821 ----------------- .../win32_x64/ruby/internal/intern/struct.h | 203 -- .../win32_x64/ruby/internal/intern/thread.h | 492 ----- .../win32_x64/ruby/internal/intern/time.h | 161 -- .../win32_x64/ruby/internal/intern/variable.h | 628 ------ .../win32_x64/ruby/internal/intern/vm.h | 435 ---- .../win32_x64/ruby/internal/interpreter.h | 304 --- .../win32_x64/ruby/internal/iterator.h | 513 ----- .../ruby310/win32_x64/ruby/internal/memory.h | 670 ------ .../ruby310/win32_x64/ruby/internal/method.h | 205 -- .../ruby310/win32_x64/ruby/internal/module.h | 177 -- .../ruby310/win32_x64/ruby/internal/newobj.h | 195 -- .../ruby310/win32_x64/ruby/internal/rgengc.h | 443 ---- .../win32_x64/ruby/internal/scan_args.h | 534 ----- .../win32_x64/ruby/internal/special_consts.h | 295 --- .../win32_x64/ruby/internal/static_assert.h | 77 - .../win32_x64/ruby/internal/stdalign.h | 135 -- .../ruby310/win32_x64/ruby/internal/stdbool.h | 51 - .../ruby310/win32_x64/ruby/internal/symbol.h | 332 --- .../ruby310/win32_x64/ruby/internal/value.h | 133 -- .../win32_x64/ruby/internal/value_type.h | 449 ---- .../win32_x64/ruby/internal/variable.h | 337 --- .../win32_x64/ruby/internal/warning_push.h | 124 -- .../ruby310/win32_x64/ruby/internal/xmalloc.h | 392 ---- .../include/ruby310/win32_x64/ruby/io.h | 976 --------- .../ruby310/win32_x64/ruby/io/buffer.h | 91 - .../ruby310/win32_x64/ruby/memory_view.h | 325 --- .../include/ruby310/win32_x64/ruby/missing.h | 229 --- .../include/ruby310/win32_x64/ruby/onigmo.h | 941 --------- .../ruby310/win32_x64/ruby/oniguruma.h | 8 - .../include/ruby310/win32_x64/ruby/ractor.h | 264 --- .../include/ruby310/win32_x64/ruby/random.h | 304 --- .../include/ruby310/win32_x64/ruby/re.h | 147 -- .../include/ruby310/win32_x64/ruby/regex.h | 43 - .../include/ruby310/win32_x64/ruby/ruby.h | 311 --- .../include/ruby310/win32_x64/ruby/st.h | 197 -- .../include/ruby310/win32_x64/ruby/subst.h | 26 - .../include/ruby310/win32_x64/ruby/thread.h | 195 -- .../ruby310/win32_x64/ruby/thread_native.h | 199 -- .../include/ruby310/win32_x64/ruby/util.h | 228 --- .../include/ruby310/win32_x64/ruby/version.h | 158 -- .../include/ruby310/win32_x64/ruby/vm.h | 54 - .../include/ruby310/win32_x64/ruby/win32.h | 806 -------- .../ThirdParty/lib/mac/Ruby.framework/Ruby | 1 - .../lib/mac/Ruby.framework/Versions/2.0/Ruby | 1 - .../Versions/2.0/libruby.2.0.0.dylib | Bin 2505460 -> 0 bytes .../Ruby.framework/Versions/2.0/libruby.dylib | 1 - .../lib/mac/Ruby.framework/Versions/A | 1 - .../lib/mac/Ruby.framework/Versions/Current | 1 - .../lib/win/x64/x64-msvcrt-ruby310.lib | Bin 615390 -> 0 bytes .../lib/win/x64/x64-msvcrt-ruby320.lib | Bin 624846 -> 0 bytes .../lib/win/x64/x64-ucrt-ruby320.lib | Bin 0 -> 619310 bytes src/testup/lib/ruby310/x64/TaskbarProgress.so | Bin 97280 -> 0 bytes src/testup/lib/ruby320/x64/TaskbarProgress.so | Bin 110592 -> 110592 bytes 208 files changed, 1 insertion(+), 41163 deletions(-) delete mode 100644 ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.1 (x64).props delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/assert.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/atomic.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/assume.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/attributes.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/bool.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/gcc_version_since.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/inttypes.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/limits.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/long_long.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/r_cast.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/rmodule.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdalign.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdarg.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/cxxanyargs.hpp delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/config.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/debug.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/defines.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/digest.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/encoding.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/fiber/scheduler.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/intern.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/anyargs.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/char.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/double.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/fixnum.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/gid_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/int.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/intptr_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long_long.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/mode_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/off_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/pid_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/short.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/size_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/st_data_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/uid_t.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/assume.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/alloc_size.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/artificial.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/cold.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/const.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/constexpr.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/deprecated.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/diagnose_if.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/enum_extensibility.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/error.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/flag_enum.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/forceinline.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/format.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/maybe_unused.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noalias.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nodiscard.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noexcept.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noinline.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nonnull.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noreturn.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/pure.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/restrict.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/returns_nonnull.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/warning.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/weakref.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/cast.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/apple.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/clang.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/gcc.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/intel.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/msvc.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/sunpro.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_since.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/config.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/constant_p.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rarray.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbasic.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbignum.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rclass.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rdata.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rfile.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rhash.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rmatch.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/robject.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rregexp.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstring.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstruct.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rtypeddata.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/ctype.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dllexport.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dosish.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/coderange.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/ctype.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/encoding.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/pathname.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/re.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/sprintf.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/string.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/symbol.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/transcode.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/error.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/eval.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/event.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/fl_type.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/gc.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/glob.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/globals.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/attribute.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/builtin.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/c_attribute.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/cpp_attribute.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/declspec_attribute.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/extension.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/feature.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/warning.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/array.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/bignum.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/class.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/compar.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/complex.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/cont.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/dir.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enum.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enumerator.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/error.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/eval.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/file.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/gc.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/hash.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/io.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/load.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/marshal.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/numeric.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/object.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/parse.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/proc.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/process.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/random.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/range.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/rational.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/re.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/ruby.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/largesize.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/posix.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/win32.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/signal.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/sprintf.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/string.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/struct.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/thread.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/time.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/variable.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/vm.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/interpreter.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/iterator.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/memory.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/method.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/module.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/newobj.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/rgengc.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/scan_args.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/special_consts.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/static_assert.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdalign.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdbool.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/symbol.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value_type.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/variable.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/warning_push.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/xmalloc.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io/buffer.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/memory_view.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/missing.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/onigmo.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/oniguruma.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ractor.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/random.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/re.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/regex.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ruby.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/st.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/subst.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread_native.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/util.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/version.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/vm.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/win32.h delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Ruby delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/Ruby delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/libruby.2.0.0.dylib delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/libruby.dylib delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/A delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/Current delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/win/x64/x64-msvcrt-ruby310.lib delete mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/win/x64/x64-msvcrt-ruby320.lib create mode 100644 ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/win/x64/x64-ucrt-ruby320.lib delete mode 100644 src/testup/lib/ruby310/x64/TaskbarProgress.so diff --git a/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.1 (x64).props b/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.1 (x64).props deleted file mode 100644 index 7ae1e87..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.1 (x64).props +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - $(SolutionDir)ThirdParty\include\ruby310\win32_x64;%(AdditionalIncludeDirectories) - - - $(SolutionDir)ThirdParty\lib\win\x64;%(AdditionalLibraryDirectories) - x64-msvcrt-ruby310.lib;%(AdditionalDependencies) - - - - diff --git a/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.2 (x64).props b/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.2 (x64).props index a078fa4..1490046 100644 --- a/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.2 (x64).props +++ b/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/Ruby 3.2 (x64).props @@ -9,7 +9,7 @@ $(SolutionDir)ThirdParty\lib\win\x64;%(AdditionalLibraryDirectories) - x64-msvcrt-ruby320.lib;%(AdditionalDependencies) + x64-ucrt-ruby320.lib;%(AdditionalDependencies) diff --git a/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/TaskbarProgress.vcxproj b/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/TaskbarProgress.vcxproj index ff21158..424c79f 100644 --- a/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/TaskbarProgress.vcxproj +++ b/ruby-c-extension/sketchup-taskbarlist/TaskbarProgress/TaskbarProgress.vcxproj @@ -21,10 +21,6 @@ Debug 2.7 x64 - - Debug 3.1 - x64 - Debug 3.2 x64 @@ -49,10 +45,6 @@ Release 2.7 x64 - - Release 3.1 - x64 - Release 3.2 x64 @@ -96,12 +88,6 @@ Unicode v142 - - DynamicLibrary - true - Unicode - v142 - DynamicLibrary true @@ -138,12 +124,6 @@ Unicode v142 - - DynamicLibrary - false - Unicode - v142 - DynamicLibrary false @@ -178,11 +158,6 @@ - - - - - @@ -213,11 +188,6 @@ - - - - - @@ -239,9 +209,6 @@ true - - true - true @@ -260,9 +227,6 @@ false - - false - false @@ -291,11 +255,6 @@ WindowsLocalDebugger -RubyStartup "$(SolutionDir)/Ruby/debug.rb" - - $(ProgramFiles)\SketchUp\SketchUp 2014\SketchUp.exe - WindowsLocalDebugger - -RubyStartup "$(SolutionDir)/Ruby/debug.rb" - $(ProgramFiles)\SketchUp\SketchUp 2014\SketchUp.exe WindowsLocalDebugger @@ -329,11 +288,6 @@ WindowsLocalDebugger $(ProgramFiles)\SketchUp\SketchUp 2014\SketchUp.exe - - -RubyStartup "$(SolutionDir)/Ruby/release.rb" - WindowsLocalDebugger - $(ProgramFiles)\SketchUp\SketchUp 2014\SketchUp.exe - -RubyStartup "$(SolutionDir)/Ruby/release.rb" WindowsLocalDebugger @@ -429,24 +383,6 @@ $(IntDir);%(AdditionalIncludeDirectories) - - - Disabled - WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) - - - true - - - false - _DEBUG;%(PreprocessorDefinitions) - - - 0x0409 - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - Disabled @@ -585,30 +521,6 @@ $(IntDir);%(AdditionalIncludeDirectories) - - - MaxSpeed - true - WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions) - true - Speed - MultiThreaded - - - true - true - true - - - false - NDEBUG;%(PreprocessorDefinitions) - - - 0x0409 - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - MaxSpeed diff --git a/ruby-c-extension/sketchup-taskbarlist/TestUp.sln b/ruby-c-extension/sketchup-taskbarlist/TestUp.sln index 15d37a3..9de0c6e 100644 --- a/ruby-c-extension/sketchup-taskbarlist/TestUp.sln +++ b/ruby-c-extension/sketchup-taskbarlist/TestUp.sln @@ -15,8 +15,6 @@ Global Debug 2.5|x64 = Debug 2.5|x64 Debug 2.7|Win32 = Debug 2.7|Win32 Debug 2.7|x64 = Debug 2.7|x64 - Debug 3.1|Win32 = Debug 3.1|Win32 - Debug 3.1|x64 = Debug 3.1|x64 Debug 3.2|Win32 = Debug 3.2|Win32 Debug 3.2|x64 = Debug 3.2|x64 Release 2.0|Win32 = Release 2.0|Win32 @@ -27,8 +25,6 @@ Global Release 2.5|x64 = Release 2.5|x64 Release 2.7|Win32 = Release 2.7|Win32 Release 2.7|x64 = Release 2.7|x64 - Release 3.1|Win32 = Release 3.1|Win32 - Release 3.1|x64 = Release 3.1|x64 Release 3.2|Win32 = Release 3.2|Win32 Release 3.2|x64 = Release 3.2|x64 EndGlobalSection @@ -46,9 +42,6 @@ Global {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 2.7|Win32.ActiveCfg = Debug 2.7|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 2.7|x64.ActiveCfg = Debug 2.7|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 2.7|x64.Build.0 = Debug 2.7|x64 - {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 3.1|Win32.ActiveCfg = Debug 3.1|x64 - {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 3.1|x64.ActiveCfg = Debug 3.1|x64 - {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 3.1|x64.Build.0 = Debug 3.1|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 3.2|Win32.ActiveCfg = Debug 3.2|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 3.2|x64.ActiveCfg = Debug 3.2|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Debug 3.2|x64.Build.0 = Debug 3.2|x64 @@ -65,9 +58,6 @@ Global {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 2.7|Win32.ActiveCfg = Release 2.7|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 2.7|x64.ActiveCfg = Release 2.7|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 2.7|x64.Build.0 = Release 2.7|x64 - {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 3.1|Win32.ActiveCfg = Release 3.1|x64 - {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 3.1|x64.ActiveCfg = Release 3.1|x64 - {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 3.1|x64.Build.0 = Release 3.1|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 3.2|Win32.ActiveCfg = Release 3.2|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 3.2|x64.ActiveCfg = Release 3.2|x64 {1456285A-3D25-4B13-BF30-DBAEDEB87C22}.Release 3.2|x64.Build.0 = Release 3.2|x64 diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby.h deleted file mode 100644 index 789804b..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef RUBY_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_H 1 -/** - * @author $Author$ - * @date Sun 10 12:06:15 Jun JST 2007 - * @copyright 2007-2008 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#define HAVE_RUBY_ATOMIC_H 1 -#define HAVE_RUBY_DEBUG_H 1 -#define HAVE_RUBY_DEFINES_H 1 -#define HAVE_RUBY_ENCODING_H 1 -#define HAVE_RUBY_FIBER_SCHEDULER_H 1 -#define HAVE_RUBY_INTERN_H 1 -#define HAVE_RUBY_IO_H 1 -#define HAVE_RUBY_MEMORY_VIEW_H 1 -#define HAVE_RUBY_MISSING_H 1 -#define HAVE_RUBY_ONIGMO_H 1 -#define HAVE_RUBY_ONIGURUMA_H 1 -#define HAVE_RUBY_RACTOR_H 1 -#define HAVE_RUBY_RANDOM_H 1 -#define HAVE_RUBY_RE_H 1 -#define HAVE_RUBY_REGEX_H 1 -#define HAVE_RUBY_RUBY_H 1 -#define HAVE_RUBY_ST_H 1 -#define HAVE_RUBY_THREAD_H 1 -#define HAVE_RUBY_THREAD_NATIVE_H 1 -#define HAVE_RUBY_UTIL_H 1 -#define HAVE_RUBY_VERSION_H 1 -#define HAVE_RUBY_VM_H 1 -#ifdef _WIN32 -#define HAVE_RUBY_WIN32_H 1 -#endif - -#include "ruby/ruby.h" - -#endif /* RUBY_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/assert.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/assert.h deleted file mode 100644 index c9f2c3f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/assert.h +++ /dev/null @@ -1,234 +0,0 @@ -#ifndef RUBY_ASSERT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_ASSERT_H -/** - * @file - * @author Ruby developers - * @date Wed May 18 00:21:44 JST 1994 - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - */ -#include "ruby/internal/assume.h" -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/dllexport.h" -#include "ruby/backward/2/assume.h" - -/* RUBY_NDEBUG is very simple: after everything described below are done, - * define it with either NDEBUG is undefined (=0) or defined (=1). It is truly - * subordinate. - * - * RUBY_DEBUG versus NDEBUG is complicated. Assertions shall be: - * - * | -UNDEBUG | -DNDEBUG - * ---------------+----------+--------- - * -URUBY_DEBUG | (*1) | disabled - * -DRUBY_DEBUG=0 | disabled | disabled - * -DRUBY_DEBUG=1 | enabled | (*2) - * -DRUBY_DEBUG | enabled | (*2) - * - * where: - * - * - (*1): Assertions shall be silently disabled, no warnings, in favour of - * commit 21991e6ca59274e41a472b5256bd3245f6596c90. - * - * - (*2): Compile-time warnings shall be issued. - */ - -/** @cond INTERNAL_MACRO */ - -/* - * Pro tip: `!!RUBY_DEBUG-1` expands to... - * - * - `!!(-1)` (== `!0` == `1`) when RUBY_DEBUG is defined to be empty, - * - `(!!0)-1` (== `0-1` == `-1`) when RUBY_DEBUG is defined as 0, and - * - `(!!n)-1` (== `1-1` == `0`) when RUBY_DEBUG is defined as something else. - */ -#if ! defined(RUBY_DEBUG) -# define RBIMPL_RUBY_DEBUG 0 -#elif !!RUBY_DEBUG-1 < 0 -# define RBIMPL_RUBY_DEBUG 0 -#else -# define RBIMPL_RUBY_DEBUG 1 -#endif - -/* - * ISO/IEC 9899 (all past versions) says that "If NDEBUG is defined as a macro - * name at the point in the source file where is included, ..." - * which means we must not take its defined value into account. - */ -#if defined(NDEBUG) -# define RBIMPL_NDEBUG 1 -#else -# define RBIMPL_NDEBUG 0 -#endif - -/** @endcond */ - -/* Here we go... */ -#undef RUBY_DEBUG -#undef RUBY_NDEBUG -#undef NDEBUG -#if defined(__DOXYGEN__) -# /** Define this macro when you want assertions. */ -# define RUBY_DEBUG 0 -# /** Define this macro when you don't want assertions. */ -# define NDEBUG -# /** This macro is basically the same as #NDEBUG */ -# define RUBY_NDEBUG 1 - -#elif (RBIMPL_NDEBUG == 1) && (RBIMPL_RUBY_DEBUG == 0) -# /* Assertions disabled as per request, no conflicts. */ -# define RUBY_DEBUG 0 -# define RUBY_NDEBUG 1 -# define NDEBUG - -#elif (RBIMPL_NDEBUG == 0) && (RBIMPL_RUBY_DEBUG == 1) -# /* Assertions enabled as per request, no conflicts. */ -# define RUBY_DEBUG 1 -# define RUBY_NDEBUG 0 -# /* keep NDEBUG undefined */ - -#elif (RBIMPL_NDEBUG == 0) && (RBIMPL_RUBY_DEBUG == 0) -# /* The (*1) situation in avobe diagram. */ -# define RUBY_DEBUG 0 -# define RUBY_NDEBUG 1 -# define NDEBUG - -#elif (RBIMPL_NDEBUG == 1) && (RBIMPL_RUBY_DEBUG == 1) -# /* The (*2) situation in above diagram. */ -# define RUBY_DEBUG 1 -# define RUBY_NDEBUG 0 -# /* keep NDEBUG undefined */ - -# if defined(_MSC_VER) -# pragma message("NDEBUG is ignored because RUBY_DEBUG>0.") -# elif defined(__GNUC__) -# pragma GCC warning "NDEBUG is ignored because RUBY_DEBUG>0." -# else -# error NDEBUG is ignored because RUBY_DEBUG>0. -# endif -#endif -#undef RBIMPL_NDEBUG -#undef RBIMPL_RUBY_DEBUG - -/** @cond INTERNAL_MACRO */ -#define RBIMPL_ASSERT_NOTHING RBIMPL_CAST((void)0) - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_COLD() -void rb_assert_failure(const char *file, int line, const char *name, const char *expr); -RBIMPL_SYMBOL_EXPORT_END() - -#ifdef RUBY_FUNCTION_NAME_STRING -# define RBIMPL_ASSERT_FUNC RUBY_FUNCTION_NAME_STRING -#else -# define RBIMPL_ASSERT_FUNC RBIMPL_CAST((const char *)0) -#endif - -/** @endcond */ - -/** - * Prints the given message, and terminates the entire process abnormally. - * - * @param mesg The message to display. - */ -#define RUBY_ASSERT_FAIL(mesg) \ - rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg) - -/** - * Asserts that the expression is truthy. If not aborts with the message. - * - * @param expr What supposedly evaluates to true. - * @param mesg The message to display on failure. - */ -#define RUBY_ASSERT_MESG(expr, mesg) \ - (RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(mesg)) - -/** - * A variant of #RUBY_ASSERT that does not interface with #RUBY_DEBUG. - * - * @copydetails #RUBY_ASSERT - */ -#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr) - -/** - * Asserts that the given expression is truthy if and only if #RUBY_DEBUG is truthy. - * - * @param expr What supposedly evaluates to true. - */ -#if RUBY_DEBUG -# define RUBY_ASSERT(expr) RUBY_ASSERT_MESG((expr), #expr) -#else -# define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING -#endif - -/** - * A variant of #RUBY_ASSERT that interfaces with #NDEBUG instead of - * #RUBY_DEBUG. This almost resembles `assert` C standard macro, except minor - * implementation details. - * - * @copydetails #RUBY_ASSERT - */ -/* Currently `RUBY_DEBUG == ! defined(NDEBUG)` is always true. There is no - * difference any longer between this one and `RUBY_ASSERT`. */ -#if defined(NDEBUG) -# define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING -#else -# define RUBY_ASSERT_NDEBUG(expr) RUBY_ASSERT_MESG((expr), #expr) -#endif - -/** - * @copydoc #RUBY_ASSERT_WHEN - * @param mesg The message to display on failure. - */ -#if RUBY_DEBUG -# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) RUBY_ASSERT_MESG((expr), (mesg)) -#else -# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \ - ((cond) ? RUBY_ASSERT_MESG((expr), (mesg)) : RBIMPL_ASSERT_NOTHING) -#endif - -/** - * A variant of #RUBY_ASSERT that asserts when either #RUBY_DEBUG or `cond` - * parameter is truthy. - * - * @param cond Extra condition that shall hold for assertion to take effect. - * @param expr What supposedly evaluates to true. - */ -#define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr) - -/** - * This is either #RUBY_ASSERT or #RBIMPL_ASSUME, depending on #RUBY_DEBUG. - * - * @copydetails #RUBY_ASSERT - */ -#if RUBY_DEBUG -# define RBIMPL_ASSERT_OR_ASSUME(expr) RUBY_ASSERT_ALWAYS(expr) -#elif RBIMPL_COMPILER_BEFORE(Clang, 7, 0, 0) -# /* See commit 67d259c5dccd31fe49d417fec169977712ffdf10 */ -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING -#elif defined(RUBY_ASSERT_NOASSUME) -# /* See commit d300a734414ef6de7e8eb563b7cc4389c455ed08 */ -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING -#elif ! defined(RBIMPL_HAVE___ASSUME) -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING -#else -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSUME(expr) -#endif - -#endif /* RUBY_ASSERT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/atomic.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/atomic.h deleted file mode 100644 index 3eb80fb..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/atomic.h +++ /dev/null @@ -1,890 +0,0 @@ -#ifndef RUBY_ATOMIC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_ATOMIC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Atomic operations - * - * Basically, if we could assume either C11 or C++11, these macros are just - * redundant. Sadly we cannot. We have to do them ourselves. - */ - -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include /* size_t */ -#endif - -#ifdef HAVE_SYS_TYPES_H -# include /* ssize_t */ -#endif - -#if RBIMPL_COMPILER_SINCE(MSVC, 13, 0, 0) -# pragma intrinsic(_InterlockedOr) -#elif defined(__sun) && defined(HAVE_ATOMIC_H) -# include -#endif - -#include "ruby/assert.h" -#include "ruby/backward/2/limits.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/value.h" -#include "ruby/internal/static_assert.h" -#include "ruby/internal/stdbool.h" - -/* - * Asserts that your environment supports more than one atomic types. These - * days systems tend to have such property (C11 was a standard of decades ago, - * right?) but we still support older ones. - */ -#if defined(__DOXYGEN__) || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) -# define RUBY_ATOMIC_GENERIC_MACRO 1 -#endif - -/** - * Type that is eligible for atomic operations. Depending on your host - * platform you might have more than one such type, but we choose one of them - * anyways. - */ -#if defined(__DOXYGEN__) -using rb_atomic_t = std::atomic; -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) -typedef unsigned int rb_atomic_t; -#elif defined(HAVE_GCC_SYNC_BUILTINS) -typedef unsigned int rb_atomic_t; -#elif defined(_WIN32) -typedef LONG rb_atomic_t; -#elif defined(__sun) && defined(HAVE_ATOMIC_H) -typedef unsigned int rb_atomic_t; -#else -# error No atomic operation found -#endif - -/** - * Atomically replaces the value pointed by `var` with the result of addition - * of `val` to the old value of `var`. - * - * @param var A variable of ::rb_atomic_t. - * @param val Value to add. - * @return What was stored in `var` before the addition. - * @post `var` holds `var + val`. - */ -#define RUBY_ATOMIC_FETCH_ADD(var, val) rbimpl_atomic_fetch_add(&(var), (val)) - -/** - * Atomically replaces the value pointed by `var` with the result of - * subtraction of `val` to the old value of `var`. - * - * @param var A variable of ::rb_atomic_t. - * @param val Value to subtract. - * @return What was stored in `var` before the subtraction. - * @post `var` holds `var - val`. - */ -#define RUBY_ATOMIC_FETCH_SUB(var, val) rbimpl_atomic_fetch_sub(&(var), (val)) - -/** - * Atomically replaces the value pointed by `var` with the result of - * bitwise OR between `val` and the old value of `var`. - * - * @param var A variable of ::rb_atomic_t. - * @param val Value to mix. - * @return void - * @post `var` holds `var | val`. - * @note For portability, this macro can return void. - */ -#define RUBY_ATOMIC_OR(var, val) rbimpl_atomic_or(&(var), (val)) - -/** - * Atomically replaces the value pointed by `var` with `val`. This is just an - * assignment, but you can additionally know the previous value. - * - * @param var A variable of ::rb_atomic_t. - * @param val Value to set. - * @return What was stored in `var` before the assignment. - * @post `var` holds `val`. - */ -#define RUBY_ATOMIC_EXCHANGE(var, val) rbimpl_atomic_exchange(&(var), (val)) - -/** - * Atomic compare-and-swap. This stores `val` to `var` if and only if the - * assignment changes the value of `var` from `oldval` to `newval`. You can - * detect whether the assignment happened or not using the return value. - * - * @param var A variable of ::rb_atomic_t. - * @param oldval Expected value of `var` before the assignment. - * @param newval What you want to store at `var`. - * @retval oldval Successful assignment (`var` is now `newval`). - * @retval otherwise Something else is at `var`; not updated. - */ -#define RUBY_ATOMIC_CAS(var, oldval, newval) \ - rbimpl_atomic_cas(&(var), (oldval), (newval)) - -/** - * Identical to #RUBY_ATOMIC_EXCHANGE, except for the return type. - * - * @param var A variable of ::rb_atomic_t. - * @param val Value to set. - * @return void - * @post `var` holds `val`. - */ -#define RUBY_ATOMIC_SET(var, val) rbimpl_atomic_set(&(var), (val)) - -/** - * Identical to #RUBY_ATOMIC_FETCH_ADD, except for the return type. - * - * @param var A variable of ::rb_atomic_t. - * @param val Value to add. - * @return void - * @post `var` holds `var + val`. - */ -#define RUBY_ATOMIC_ADD(var, val) rbimpl_atomic_add(&(var), (val)) - -/** - * Identical to #RUBY_ATOMIC_FETCH_SUB, except for the return type. - * - * @param var A variable of ::rb_atomic_t. - * @param val Value to subtract. - * @return void - * @post `var` holds `var - val`. - */ -#define RUBY_ATOMIC_SUB(var, val) rbimpl_atomic_sub(&(var), (val)) - -/** - * Atomically increments the value pointed by `var`. - * - * @param var A variable of ::rb_atomic_t. - * @return void - * @post `var` holds `var + 1`. - */ -#define RUBY_ATOMIC_INC(var) rbimpl_atomic_inc(&(var)) - -/** - * Atomically decrements the value pointed by `var`. - * - * @param var A variable of ::rb_atomic_t. - * @return void - * @post `var` holds `var - 1`. - */ -#define RUBY_ATOMIC_DEC(var) rbimpl_atomic_dec(&(var)) - -/** - * Identical to #RUBY_ATOMIC_INC, except it expects its argument is `size_t`. - * There are cases where ::rb_atomic_t is 32bit while `size_t` is 64bit. This - * should be used for size related operations to support such platforms. - * - * @param var A variable of `size_t`. - * @return void - * @post `var` holds `var + 1`. - */ -#define RUBY_ATOMIC_SIZE_INC(var) rbimpl_atomic_size_inc(&(var)) - -/** - * Identical to #RUBY_ATOMIC_DEC, except it expects its argument is `size_t`. - * There are cases where ::rb_atomic_t is 32bit while `size_t` is 64bit. This - * should be used for size related operations to support such platforms. - * - * @param var A variable of `size_t`. - * @return void - * @post `var` holds `var - 1`. - */ -#define RUBY_ATOMIC_SIZE_DEC(var) rbimpl_atomic_size_dec(&(var)) - -/** - * Identical to #RUBY_ATOMIC_EXCHANGE, except it expects its arguments are - * `size_t`. There are cases where ::rb_atomic_t is 32bit while `size_t` is - * 64bit. This should be used for size related operations to support such - * platforms. - * - * @param var A variable of `size_t`. - * @param val Value to set. - * @return What was stored in `var` before the assignment. - * @post `var` holds `val`. - */ -#define RUBY_ATOMIC_SIZE_EXCHANGE(var, val) \ - rbimpl_atomic_size_exchange(&(var), (val)) - -/** - * Identical to #RUBY_ATOMIC_CAS, except it expects its arguments are `size_t`. - * There are cases where ::rb_atomic_t is 32bit while `size_t` is 64bit. This - * should be used for size related operations to support such platforms. - * - * @param var A variable of `size_t`. - * @param oldval Expected value of `var` before the assignment. - * @param newval What you want to store at `var`. - * @retval oldval Successful assignment (`var` is now `newval`). - * @retval otherwise Something else is at `var`; not updated. - */ -#define RUBY_ATOMIC_SIZE_CAS(var, oldval, newval) \ - rbimpl_atomic_size_cas(&(var), (oldval), (newval)) - -/** - * Identical to #RUBY_ATOMIC_ADD, except it expects its arguments are `size_t`. - * There are cases where ::rb_atomic_t is 32bit while `size_t` is 64bit. This - * should be used for size related operations to support such platforms. - * - * @param var A variable of `size_t`. - * @param val Value to add. - * @return void - * @post `var` holds `var + val`. - */ -#define RUBY_ATOMIC_SIZE_ADD(var, val) rbimpl_atomic_size_add(&(var), (val)) - -/** - * Identical to #RUBY_ATOMIC_SUB, except it expects its arguments are `size_t`. - * There are cases where ::rb_atomic_t is 32bit while `size_t` is 64bit. This - * should be used for size related operations to support such platforms. - * - * @param var A variable of `size_t`. - * @param val Value to subtract. - * @return void - * @post `var` holds `var - val`. - */ -#define RUBY_ATOMIC_SIZE_SUB(var, val) rbimpl_atomic_size_sub(&(var), (val)) - -/** - * Identical to #RUBY_ATOMIC_EXCHANGE, except it expects its arguments are - * `void*`. There are cases where ::rb_atomic_t is 32bit while `void*` is - * 64bit. This should be used for pointer related operations to support such - * platforms. - * - * @param var A variable of `void *`. - * @param val Value to set. - * @return What was stored in `var` before the assignment. - * @post `var` holds `val`. - * - * @internal - * - * :FIXME: this `(void*)` cast is evil! However `void*` is incompatible with - * some pointers, most notably function pointers. - */ -#define RUBY_ATOMIC_PTR_EXCHANGE(var, val) \ - RBIMPL_CAST(rbimpl_atomic_ptr_exchange((void **)&(var), (void *)val)) - -/** - * Identical to #RUBY_ATOMIC_CAS, except it expects its arguments are `void*`. - * There are cases where ::rb_atomic_t is 32bit while `void*` is 64bit. This - * should be used for size related operations to support such platforms. - * - * @param var A variable of `void*`. - * @param oldval Expected value of `var` before the assignment. - * @param newval What you want to store at `var`. - * @retval oldval Successful assignment (`var` is now `newval`). - * @retval otherwise Something else is at `var`; not updated. - */ -#define RUBY_ATOMIC_PTR_CAS(var, oldval, newval) \ - RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (oldval), (newval))) - -/** - * Identical to #RUBY_ATOMIC_EXCHANGE, except it expects its arguments are - * ::VALUE. There are cases where ::rb_atomic_t is 32bit while ::VALUE is - * 64bit. This should be used for pointer related operations to support such - * platforms. - * - * @param var A variable of ::VALUE. - * @param val Value to set. - * @return What was stored in `var` before the assignment. - * @post `var` holds `val`. - */ -#define RUBY_ATOMIC_VALUE_EXCHANGE(var, val) \ - rbimpl_atomic_value_exchange(&(var), (val)) - -/** - * Identical to #RUBY_ATOMIC_CAS, except it expects its arguments are ::VALUE. - * There are cases where ::rb_atomic_t is 32bit while ::VALUE is 64bit. This - * should be used for size related operations to support such platforms. - * - * @param var A variable of `void*`. - * @param oldval Expected value of `var` before the assignment. - * @param newval What you want to store at `var`. - * @retval oldval Successful assignment (`var` is now `newval`). - * @retval otherwise Something else is at `var`; not updated. - */ -#define RUBY_ATOMIC_VALUE_CAS(var, oldval, newval) \ - rbimpl_atomic_value_cas(&(var), (oldval), (newval)) - -/** @cond INTERNAL_MACRO */ -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline rb_atomic_t -rbimpl_atomic_fetch_add(volatile rb_atomic_t *ptr, rb_atomic_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - return __atomic_fetch_add(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - return __sync_fetch_and_add(ptr, val); - -#elif defined(_WIN32) - return InterlockedExchangeAdd(ptr, val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - /* - * `atomic_add_int_nv` takes its second argument as `int`! Meanwhile our - * `rb_atomic_t` is unsigned. We cannot pass `val` as-is. We have to - * manually check integer overflow. - */ - RBIMPL_ASSERT_OR_ASSUME(val <= INT_MAX); - return atomic_add_int_nv(ptr, val) - val; - -#else -# error Unsupported platform. -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_add(volatile rb_atomic_t *ptr, rb_atomic_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - /* - * GCC on amd64 is smart enough to detect this `__atomic_add_fetch`'s - * return value is not used, then compiles it into single `LOCK ADD` - * instruction. - */ - __atomic_add_fetch(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - __sync_add_and_fetch(ptr, val); - -#elif defined(_WIN32) - /* - * `InterlockedExchangeAdd` is `LOCK XADD`. It seems there also is - * `_InterlockedAdd` intrinsic in ARM Windows but not for x86? Sticking to - * `InterlockedExchangeAdd` for better portability. - */ - InterlockedExchangeAdd(ptr, val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - /* Ditto for `atomic_add_int_nv`. */ - RBIMPL_ASSERT_OR_ASSUME(val <= INT_MAX); - atomic_add_int(ptr, val); - -#else -# error Unsupported platform. -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_size_add(volatile size_t *ptr, size_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - __atomic_add_fetch(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - __sync_add_and_fetch(ptr, val); - -#elif defined(_WIN32) && defined(_M_AMD64) - /* Ditto for `InterlockeExchangedAdd`. */ - InterlockedExchangeAdd64(ptr, val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx)) - /* Ditto for `atomic_add_int_nv`. */ - RBIMPL_ASSERT_OR_ASSUME(val <= LONG_MAX); - atomic_add_long(ptr, val); - -#else - RBIMPL_STATIC_ASSERT(size_of_rb_atomic_t, sizeof *ptr == sizeof(rb_atomic_t)); - - volatile rb_atomic_t *const tmp = RBIMPL_CAST((volatile rb_atomic_t *)ptr); - rbimpl_atomic_add(tmp, val); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_inc(volatile rb_atomic_t *ptr) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) - rbimpl_atomic_add(ptr, 1); - -#elif defined(_WIN32) - InterlockedIncrement(ptr); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - atomic_inc_uint(ptr); - -#else - rbimpl_atomic_add(ptr, 1); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_size_inc(volatile size_t *ptr) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) - rbimpl_atomic_size_add(ptr, 1); - -#elif defined(_WIN32) && defined(_M_AMD64) - InterlockedIncrement64(ptr); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx)) - atomic_inc_ulong(ptr); - -#else - rbimpl_atomic_size_add(ptr, 1); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline rb_atomic_t -rbimpl_atomic_fetch_sub(volatile rb_atomic_t *ptr, rb_atomic_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - return __atomic_fetch_sub(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - return __sync_fetch_and_sub(ptr, val); - -#elif defined(_WIN32) - /* rb_atomic_t is signed here! Safe to do `-val`. */ - return InterlockedExchangeAdd(ptr, -val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - /* Ditto for `rbimpl_atomic_fetch_add`. */ - const signed neg = -1; - RBIMPL_ASSERT_OR_ASSUME(val <= INT_MAX); - return atomic_add_int_nv(ptr, neg * val) + val; - -#else -# error Unsupported platform. -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_sub(volatile rb_atomic_t *ptr, rb_atomic_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - __atomic_sub_fetch(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - __sync_sub_and_fetch(ptr, val); - -#elif defined(_WIN32) - InterlockedExchangeAdd(ptr, -val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - const signed neg = -1; - RBIMPL_ASSERT_OR_ASSUME(val <= INT_MAX); - atomic_add_int(ptr, neg * val); - -#else -# error Unsupported platform. -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_size_sub(volatile size_t *ptr, size_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - __atomic_sub_fetch(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - __sync_sub_and_fetch(ptr, val); - -#elif defined(_WIN32) && defined(_M_AMD64) - const ssize_t neg = -1; - InterlockedExchangeAdd64(ptr, neg * val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx)) - const signed neg = -1; - RBIMPL_ASSERT_OR_ASSUME(val <= LONG_MAX); - atomic_add_long(ptr, neg * val); - -#else - RBIMPL_STATIC_ASSERT(size_of_rb_atomic_t, sizeof *ptr == sizeof(rb_atomic_t)); - - volatile rb_atomic_t *const tmp = RBIMPL_CAST((volatile rb_atomic_t *)ptr); - rbimpl_atomic_sub(tmp, val); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_dec(volatile rb_atomic_t *ptr) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) - rbimpl_atomic_sub(ptr, 1); - -#elif defined(_WIN32) - InterlockedDecrement(ptr); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - atomic_dec_uint(ptr); - -#else - rbimpl_atomic_sub(ptr, 1); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_size_dec(volatile size_t *ptr) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) - rbimpl_atomic_size_sub(ptr, 1); - -#elif defined(_WIN32) && defined(_M_AMD64) - InterlockedDecrement64(ptr); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx)) - atomic_dec_ulong(ptr); - -#else - rbimpl_atomic_size_sub(ptr, 1); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_or(volatile rb_atomic_t *ptr, rb_atomic_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - __atomic_or_fetch(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - __sync_or_and_fetch(ptr, val); - -#elif RBIMPL_COMPILER_SINCE(MSVC, 13, 0, 0) - _InterlockedOr(ptr, val); - -#elif defined(_WIN32) && defined(__GNUC__) - /* This was for old MinGW. Maybe not needed any longer? */ - __asm__( - "lock\n\t" - "orl\t%1, %0" - : "=m"(ptr) - : "Ir"(val)); - -#elif defined(_WIN32) && defined(_M_IX86) - __asm mov eax, ptr; - __asm mov ecx, val; - __asm lock or [eax], ecx; - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - atomic_or_uint(ptr, val); - -#else -# error Unsupported platform. -#endif -} - -/* Nobody uses this but for theoretical backwards compatibility... */ -#if RBIMPL_COMPILER_BEFORE(MSVC, 13, 0, 0) -static inline rb_atomic_t -rb_w32_atomic_or(volatile rb_atomic_t *var, rb_atomic_t val) -{ - return rbimpl_atomic_or(var, val); -} -#endif - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline rb_atomic_t -rbimpl_atomic_exchange(volatile rb_atomic_t *ptr, rb_atomic_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - return __atomic_exchange_n(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - return __sync_lock_test_and_set(ptr, val); - -#elif defined(_WIN32) - return InterlockedExchange(ptr, val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - return atomic_swap_uint(ptr, val); - -#else -# error Unsupported platform. -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline size_t -rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - return __atomic_exchange_n(ptr, val, __ATOMIC_SEQ_CST); - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - return __sync_lock_test_and_set(ptr, val); - -#elif defined(_WIN32) && defined(_M_AMD64) - return InterlockedExchange64(ptr, val); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx)) - return atomic_swap_ulong(ptr, val); - -#else - RBIMPL_STATIC_ASSERT(size_of_size_t, sizeof *ptr == sizeof(rb_atomic_t)); - - volatile rb_atomic_t *const tmp = RBIMPL_CAST((volatile rb_atomic_t *)ptr); - const rb_atomic_t ret = rbimpl_atomic_exchange(tmp, val); - return RBIMPL_CAST((size_t)ret); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void * -rbimpl_atomic_ptr_exchange(void *volatile *ptr, const void *val) -{ -#if 0 - -#elif defined(InterlockedExchangePointer) - /* const_cast */ - PVOID *pptr = RBIMPL_CAST((PVOID *)ptr); - PVOID pval = RBIMPL_CAST((PVOID)val); - return InterlockedExchangePointer(pptr, pval); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - return atomic_swap_ptr(ptr, RBIMPL_CAST((void *)val)); - -#else - RBIMPL_STATIC_ASSERT(sizeof_voidp, sizeof *ptr == sizeof(size_t)); - - const size_t sval = RBIMPL_CAST((size_t)val); - volatile size_t *const sptr = RBIMPL_CAST((volatile size_t *)ptr); - const size_t sret = rbimpl_atomic_size_exchange(sptr, sval); - return RBIMPL_CAST((void *)sret); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline VALUE -rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val) -{ - RBIMPL_STATIC_ASSERT(sizeof_value, sizeof *ptr == sizeof(size_t)); - - const size_t sval = RBIMPL_CAST((size_t)val); - volatile size_t *const sptr = RBIMPL_CAST((volatile size_t *)ptr); - const size_t sret = rbimpl_atomic_size_exchange(sptr, sval); - return RBIMPL_CAST((VALUE)sret); -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void -rbimpl_atomic_set(volatile rb_atomic_t *ptr, rb_atomic_t val) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - __atomic_store_n(ptr, val, __ATOMIC_SEQ_CST); - -#else - /* Maybe std::atomic::store can be faster? */ - rbimpl_atomic_exchange(ptr, val); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline rb_atomic_t -rbimpl_atomic_cas(volatile rb_atomic_t *ptr, rb_atomic_t oldval, rb_atomic_t newval) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - __atomic_compare_exchange_n( - ptr, &oldval, newval, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); - return oldval; - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - return __sync_val_compare_and_swap(ptr, oldval, newval); - -#elif RBIMPL_COMPILER_SINCE(MSVC, 13, 0, 0) - return InterlockedCompareExchange(ptr, newval, oldval); - -#elif defined(_WIN32) - PVOID *pptr = RBIMPL_CAST((PVOID *)ptr); - PVOID pold = RBIMPL_CAST((PVOID)oldval); - PVOID pnew = RBIMPL_CAST((PVOID)newval); - PVOID pret = InterlockedCompareExchange(pptr, pnew, pold); - return RBIMPL_CAST((rb_atomic_t)pret); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - return atomic_cas_uint(ptr, oldval, newval); - -#else -# error Unsupported platform. -#endif -} - -/* Nobody uses this but for theoretical backwards compatibility... */ -#if RBIMPL_COMPILER_BEFORE(MSVC, 13, 0, 0) -static inline rb_atomic_t -rb_w32_atomic_cas(volatile rb_atomic_t *var, rb_atomic_t oldval, rb_atomic_t newval) -{ - return rbimpl_atomic_cas(var, oldval, newval); -} -#endif - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline size_t -rbimpl_atomic_size_cas(volatile size_t *ptr, size_t oldval, size_t newval) -{ -#if 0 - -#elif defined(HAVE_GCC_ATOMIC_BUILTINS) - __atomic_compare_exchange_n( - ptr, &oldval, newval, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); - return oldval; - -#elif defined(HAVE_GCC_SYNC_BUILTINS) - return __sync_val_compare_and_swap(ptr, oldval, newval); - -#elif defined(_WIN32) && defined(_M_AMD64) - return InterlockedCompareExchange64(ptr, newval, oldval); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx)) - return atomic_cas_ulong(ptr, oldval, newval); - -#else - RBIMPL_STATIC_ASSERT(size_of_size_t, sizeof *ptr == sizeof(rb_atomic_t)); - - volatile rb_atomic_t *tmp = RBIMPL_CAST((volatile rb_atomic_t *)ptr); - return rbimpl_atomic_cas(tmp, oldval, newval); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline void * -rbimpl_atomic_ptr_cas(void **ptr, const void *oldval, const void *newval) -{ -#if 0 - -#elif defined(InterlockedExchangePointer) - /* ... Can we say that InterlockedCompareExchangePtr surly exists when - * InterlockedExchangePointer is defined? Seems so but...?*/ - PVOID *pptr = RBIMPL_CAST((PVOID *)ptr); - PVOID pold = RBIMPL_CAST((PVOID)oldval); - PVOID pnew = RBIMPL_CAST((PVOID)newval); - return InterlockedCompareExchangePointer(pptr, pnew, pold); - -#elif defined(__sun) && defined(HAVE_ATOMIC_H) - void *pold = RBIMPL_CAST((void *)oldval); - void *pnew = RBIMPL_CAST((void *)newval); - return atomic_cas_ptr(ptr, pold, pnew); - - -#else - RBIMPL_STATIC_ASSERT(sizeof_voidp, sizeof *ptr == sizeof(size_t)); - - const size_t snew = RBIMPL_CAST((size_t)newval); - const size_t sold = RBIMPL_CAST((size_t)oldval); - volatile size_t *const sptr = RBIMPL_CAST((volatile size_t *)ptr); - const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew); - return RBIMPL_CAST((void *)sret); - -#endif -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -static inline VALUE -rbimpl_atomic_value_cas(volatile VALUE *ptr, VALUE oldval, VALUE newval) -{ - RBIMPL_STATIC_ASSERT(sizeof_value, sizeof *ptr == sizeof(size_t)); - - const size_t snew = RBIMPL_CAST((size_t)newval); - const size_t sold = RBIMPL_CAST((size_t)oldval); - volatile size_t *const sptr = RBIMPL_CAST((volatile size_t *)ptr); - const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew); - return RBIMPL_CAST((VALUE)sret); -} -/** @endcond */ -#endif /* RUBY_ATOMIC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward.h deleted file mode 100644 index e12f98a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef RUBY_RUBY_BACKWARD_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_RUBY_BACKWARD_H 1 -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "ruby/internal/value.h" -#include "ruby/internal/interpreter.h" -#include "ruby/backward/2/attributes.h" - -#define RBIMPL_ATTR_DEPRECATED_SINCE(ver) RBIMPL_ATTR_DEPRECATED(("since " #ver)) -#define RBIMPL_ATTR_DEPRECATED_INTERNAL(ver) RBIMPL_ATTR_DEPRECATED(("since "#ver", also internal")) - -/* eval.c */ -RBIMPL_ATTR_DEPRECATED_SINCE(2.2) void rb_disable_super(); -RBIMPL_ATTR_DEPRECATED_SINCE(2.2) void rb_enable_super(); - -/* hash.c */ -RBIMPL_ATTR_DEPRECATED_SINCE(2.2) void rb_hash_iter_lev(); -RBIMPL_ATTR_DEPRECATED_SINCE(2.2) void rb_hash_ifnone(); - -/* string.c */ -RBIMPL_ATTR_DEPRECATED_SINCE(2.2) void rb_str_associate(); -RBIMPL_ATTR_DEPRECATED_SINCE(2.2) void rb_str_associated(); - -/* variable.c */ -RBIMPL_ATTR_DEPRECATED_SINCE(2.5) void rb_autoload(); - -/* eval.c */ -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.6) void rb_frozen_class_p(); -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.7) void rb_exec_end_proc(); - -/* error.c */ -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.3) void rb_compile_error(); -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.3) void rb_compile_error_with_enc(); -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.3) void rb_compile_error_append(); - -/* gc.c */ -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.7) void rb_gc_call_finalizer_at_exit(); - -/* signal.c */ -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.7) void rb_trap_exit(); - -/* struct.c */ -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.4) void rb_struct_ptr(); - -/* thread.c */ -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.7) void rb_clear_trace_func(); - -/* variable.c */ -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.7) void rb_generic_ivar_table(); -RBIMPL_ATTR_DEPRECATED_INTERNAL(2.6) NORETURN(VALUE rb_mod_const_missing(VALUE, VALUE)); - -/* from version.c */ -#if defined(RUBY_SHOW_COPYRIGHT_TO_DIE) && !!(RUBY_SHOW_COPYRIGHT_TO_DIE+0) -/* for source code backward compatibility */ -RBIMPL_ATTR_DEPRECATED_SINCE(2.4) -static inline int -ruby_show_copyright_to_die(int exitcode) -{ - ruby_show_copyright(); - return exitcode; -} -#define ruby_show_copyright() /* defer EXIT_SUCCESS */ \ - (exit(ruby_show_copyright_to_die(EXIT_SUCCESS))) -#endif - -#endif /* RUBY_RUBY_BACKWARD_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/assume.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/assume.h deleted file mode 100644 index 265421d..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/assume.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef RUBY_BACKWARD2_ASSUME_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_ASSUME_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #ASSUME / #RB_LIKELY / #UNREACHABLE - */ -#include "ruby/internal/config.h" -#include "ruby/internal/assume.h" -#include "ruby/internal/has/builtin.h" - -#undef ASSUME /* Kill config.h definition */ -#undef UNREACHABLE /* Kill config.h definition */ -#define ASSUME RBIMPL_ASSUME /**< @old{RBIMPL_ASSUME} */ -#define UNREACHABLE RBIMPL_UNREACHABLE() /**< @old{RBIMPL_UNREACHABLE} */ -#define UNREACHABLE_RETURN RBIMPL_UNREACHABLE_RETURN /**< @old{RBIMPL_UNREACHABLE_RETURN} */ - -/* likely */ -#if RBIMPL_HAS_BUILTIN(__builtin_expect) -/** - * Asserts that the given Boolean expression likely holds. - * - * @param x An expression that likely holds. - * - * @note Consider this macro carefully. It has been here since when CPUs were - * like babies, but contemporary processors are beasts. They are - * smarter than mare mortals like us today. Their branch predictions - * highly expectedly outperform your use of this macro. - */ -# define RB_LIKELY(x) (__builtin_expect(!!(x), 1)) - -/** - * Asserts that the given Boolean expression likely doesn't hold. - * - * @param x An expression that likely doesn't hold. - */ -# define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0)) -#else -# define RB_LIKELY(x) (x) -# define RB_UNLIKELY(x) (x) -#endif - -#endif /* RUBY_BACKWARD2_ASSUME_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/attributes.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/attributes.h deleted file mode 100644 index 73acfc9..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/attributes.h +++ /dev/null @@ -1,165 +0,0 @@ -#ifndef RUBY_BACKWARD2_ATTRIBUTES_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_ATTRIBUTES_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Various attribute-related macros. - * - * ### Q&A ### - * - * - Q: Why are the macros defined in this header file so inconsistent in - * style? - * - * - A: Don't know. Don't blame me. Backward compatibility is the key here. - * I'm just preserving what they have been. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/attr/alloc_size.h" -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/error.h" -#include "ruby/internal/attr/forceinline.h" -#include "ruby/internal/attr/format.h" -#include "ruby/internal/attr/maybe_unused.h" -#include "ruby/internal/attr/noinline.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/attr/restrict.h" -#include "ruby/internal/attr/returns_nonnull.h" -#include "ruby/internal/attr/warning.h" -#include "ruby/internal/has/attribute.h" - -/* function attributes */ -#undef CONSTFUNC -#define CONSTFUNC(x) RBIMPL_ATTR_CONST() x - -#undef PUREFUNC -#define PUREFUNC(x) RBIMPL_ATTR_PURE() x - -#undef DEPRECATED -#define DEPRECATED(x) RBIMPL_ATTR_DEPRECATED(("")) x - -#undef DEPRECATED_BY -#define DEPRECATED_BY(n,x) RBIMPL_ATTR_DEPRECATED(("by: " # n)) x - -#undef DEPRECATED_TYPE -#if defined(__GNUC__) -# define DEPRECATED_TYPE(mesg, decl) \ - _Pragma("message \"DEPRECATED_TYPE is deprecated\""); \ - decl RBIMPL_ATTR_DEPRECATED(mseg) -#elif defined(_MSC_VER) -# pragma deprecated(DEPRECATED_TYPE) -# define DEPRECATED_TYPE(mesg, decl) \ - __pragma(message(__FILE__"("STRINGIZE(__LINE__)"): warning: " \ - "DEPRECATED_TYPE is deprecated")) \ - decl RBIMPL_ATTR_DEPRECATED(mseg) -#else -# define DEPRECATED_TYPE(mesg, decl) \ - <-<-"DEPRECATED_TYPE is deprecated"->-> -#endif - -#undef RUBY_CXX_DEPRECATED -#define RUBY_CXX_DEPRECATED(mseg) RBIMPL_ATTR_DEPRECATED((mseg)) - -#undef NOINLINE -#define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x - -#ifndef MJIT_HEADER -# undef ALWAYS_INLINE -# define ALWAYS_INLINE(x) RBIMPL_ATTR_FORCEINLINE() x -#endif - -#undef ERRORFUNC -#define ERRORFUNC(mesg, x) RBIMPL_ATTR_ERROR(mesg) x -#if RBIMPL_HAS_ATTRIBUTE(error) -# define HAVE_ATTRIBUTE_ERRORFUNC 1 -#endif - -#undef WARNINGFUNC -#define WARNINGFUNC(mesg, x) RBIMPL_ATTR_WARNING(mesg) x -#if RBIMPL_HAS_ATTRIBUTE(warning) -# define HAVE_ATTRIBUTE_WARNINGFUNC 1 -#endif - -/* - cold attribute for code layout improvements - RUBY_FUNC_ATTRIBUTE not used because MSVC does not like nested func macros - */ -#undef COLDFUNC -#define COLDFUNC RBIMPL_ATTR_COLD() - -#define PRINTF_ARGS(decl, string_index, first_to_check) \ - RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, (string_index), (first_to_check)) \ - decl - -#undef RUBY_ATTR_ALLOC_SIZE -#define RUBY_ATTR_ALLOC_SIZE RBIMPL_ATTR_ALLOC_SIZE - -#undef RUBY_ATTR_MALLOC -#define RUBY_ATTR_MALLOC RBIMPL_ATTR_RESTRICT() - -#undef RUBY_ATTR_RETURNS_NONNULL -#define RUBY_ATTR_RETURNS_NONNULL RBIMPL_ATTR_RETURNS_NONNULL() - -#ifndef FUNC_MINIMIZED -#define FUNC_MINIMIZED(x) x -#endif - -#ifndef FUNC_UNOPTIMIZED -#define FUNC_UNOPTIMIZED(x) x -#endif - -#ifndef RUBY_ALIAS_FUNCTION_TYPE -#define RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args) \ - FUNC_MINIMIZED(type prot) {return (type)name args;} -#endif - -#ifndef RUBY_ALIAS_FUNCTION_VOID -#define RUBY_ALIAS_FUNCTION_VOID(prot, name, args) \ - FUNC_MINIMIZED(void prot) {name args;} -#endif - -#ifndef RUBY_ALIAS_FUNCTION -#define RUBY_ALIAS_FUNCTION(prot, name, args) \ - RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args) -#endif - -#undef RUBY_FUNC_NONNULL -#define RUBY_FUNC_NONNULL(n, x) RBIMPL_ATTR_NONNULL(n) x - -#undef NORETURN -#define NORETURN(x) RBIMPL_ATTR_NORETURN() x -#define NORETURN_STYLE_NEW - -#ifndef PACKED_STRUCT -# define PACKED_STRUCT(x) x -#endif - -#ifndef PACKED_STRUCT_UNALIGNED -# if UNALIGNED_WORD_ACCESS -# define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x) -# else -# define PACKED_STRUCT_UNALIGNED(x) x -# endif -#endif - -#undef RB_UNUSED_VAR -#define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED() - -#endif /* RUBY_BACKWARD2_ATTRIBUTES_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/bool.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/bool.h deleted file mode 100644 index f2fa390..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/bool.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef RUBY_BACKWARD2_BOOL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_BOOL_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old TRUE / FALSE - */ -#include "ruby/internal/stdbool.h" - -#ifndef FALSE -# define FALSE false -#elif FALSE -# error FALSE must be false -#endif - -#ifndef TRUE -# define TRUE true -#elif ! TRUE -# error TRUE must be true -#endif - -#endif /* RUBY_BACKWARD2_BOOL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/gcc_version_since.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/gcc_version_since.h deleted file mode 100644 index 00cc40c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/gcc_version_since.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef RUBY_BACKWARD2_GCC_VERSION_SINCE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_GCC_VERSION_SINCE_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old GCC_VERSION_SINCE - */ -#include "ruby/internal/compiler_since.h" - -#ifndef GCC_VERSION_SINCE -#define GCC_VERSION_SINCE(x, y, z) RBIMPL_COMPILER_SINCE(GCC, (x), (y), (z)) -#endif - -#ifndef GCC_VERSION_BEFORE -#define GCC_VERSION_BEFORE(x, y, z) \ - (RBIMPL_COMPILER_BEFORE(GCC, (x), (y), (z)) || \ - (RBIMPL_COMPILER_IS(GCC) && \ - ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && \ - ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && \ - (RBIMPL_COMPILER_VERSION_PATCH == (z)))))) -#endif - -#endif /* RUBY_BACKWARD2_GCC_VERSION_SINCE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/inttypes.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/inttypes.h deleted file mode 100644 index 4546087..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/inttypes.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef RUBY_BACKWARD2_INTTYPES_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_INTTYPES_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief C99 shim for `` - */ -#include "ruby/internal/config.h" /* PRI_LL_PREFIX etc. are here */ - -#ifdef HAVE_INTTYPES_H -# include -#endif - -#include "ruby/internal/value.h" /* PRI_VALUE_PREFIX is here. */ - -#ifndef PRI_INT_PREFIX -# define PRI_INT_PREFIX "" -#endif - -#ifndef PRI_LONG_PREFIX -# define PRI_LONG_PREFIX "l" -#endif - -#ifndef PRI_SHORT_PREFIX -# define PRI_SHORT_PREFIX "h" -#endif - -#ifdef PRI_64_PREFIX -# /* Take that. */ -#elif SIZEOF_LONG == 8 -# define PRI_64_PREFIX PRI_LONG_PREFIX -#elif SIZEOF_LONG_LONG == 8 -# define PRI_64_PREFIX PRI_LL_PREFIX -#endif - -#ifndef PRIdPTR -# define PRIdPTR PRI_PTR_PREFIX"d" -# define PRIiPTR PRI_PTR_PREFIX"i" -# define PRIoPTR PRI_PTR_PREFIX"o" -# define PRIuPTR PRI_PTR_PREFIX"u" -# define PRIxPTR PRI_PTR_PREFIX"x" -# define PRIXPTR PRI_PTR_PREFIX"X" -#endif - -#ifndef RUBY_PRI_VALUE_MARK -# define RUBY_PRI_VALUE_MARK "\v" -#endif - -#if defined PRIdPTR && !defined PRI_VALUE_PREFIX -# define PRIdVALUE PRIdPTR -# define PRIoVALUE PRIoPTR -# define PRIuVALUE PRIuPTR -# define PRIxVALUE PRIxPTR -# define PRIXVALUE PRIXPTR -# define PRIsVALUE PRIiPTR"" RUBY_PRI_VALUE_MARK -#else -# define PRIdVALUE PRI_VALUE_PREFIX"d" -# define PRIoVALUE PRI_VALUE_PREFIX"o" -# define PRIuVALUE PRI_VALUE_PREFIX"u" -# define PRIxVALUE PRI_VALUE_PREFIX"x" -# define PRIXVALUE PRI_VALUE_PREFIX"X" -# define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK -#endif - -#ifndef PRI_VALUE_PREFIX -# define PRI_VALUE_PREFIX "" -#endif - -#ifdef PRI_TIMET_PREFIX -# /* Take that. */ -#elif SIZEOF_TIME_T == SIZEOF_INT -# define PRI_TIMET_PREFIX -#elif SIZEOF_TIME_T == SIZEOF_LONG -# define PRI_TIMET_PREFIX "l" -#elif SIZEOF_TIME_T == SIZEOF_LONG_LONG -# define PRI_TIMET_PREFIX PRI_LL_PREFIX -#endif - -#ifdef PRI_PTRDIFF_PREFIX -# /* Take that. */ -#elif SIZEOF_PTRDIFF_T == SIZEOF_INT -# define PRI_PTRDIFF_PREFIX "" -#elif SIZEOF_PTRDIFF_T == SIZEOF_LONG -# define PRI_PTRDIFF_PREFIX "l" -#elif SIZEOF_PTRDIFF_T == SIZEOF_LONG_LONG -# define PRI_PTRDIFF_PREFIX PRI_LL_PREFIX -#endif - -#ifndef PRIdPTRDIFF -# define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d" -# define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i" -# define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o" -# define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u" -# define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x" -# define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X" -#endif - -#ifdef PRI_SIZE_PREFIX -# /* Take that. */ -#elif SIZEOF_SIZE_T == SIZEOF_INT -# define PRI_SIZE_PREFIX "" -#elif SIZEOF_SIZE_T == SIZEOF_LONG -# define PRI_SIZE_PREFIX "l" -#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG -# define PRI_SIZE_PREFIX PRI_LL_PREFIX -#endif - -#ifndef PRIdSIZE -# define PRIdSIZE PRI_SIZE_PREFIX"d" -# define PRIiSIZE PRI_SIZE_PREFIX"i" -# define PRIoSIZE PRI_SIZE_PREFIX"o" -# define PRIuSIZE PRI_SIZE_PREFIX"u" -# define PRIxSIZE PRI_SIZE_PREFIX"x" -# define PRIXSIZE PRI_SIZE_PREFIX"X" -#endif - -#endif /* RUBY_BACKWARD2_INTTYPES_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/limits.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/limits.h deleted file mode 100644 index 6f7021e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/limits.h +++ /dev/null @@ -1,99 +0,0 @@ -#ifndef RUBY_BACKWARD2_LIMITS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_LIMITS_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Historical shim for ``. - * - * The macros in this header file are obsolescent. Does anyone really need our - * own definition of `CHAR_BIT` today? - */ -#include "ruby/internal/config.h" - -#ifdef HAVE_LIMITS_H -# include -#endif - -#include "ruby/backward/2/long_long.h" - -#ifndef LONG_MAX -# /* assuming 32bit(2's complement) long */ -# define LONG_MAX 2147483647L -#endif - -#ifndef LONG_MIN -# define LONG_MIN (-LONG_MAX-1) -#endif - -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif - -#ifdef LLONG_MAX -# /* Take that. */ -#elif defined(LONG_LONG_MAX) -# define LLONG_MAX LONG_LONG_MAX -#elif defined(_I64_MAX) -# define LLONG_MAX _I64_MAX -#else -# /* assuming 64bit(2's complement) long long */ -# define LLONG_MAX 9223372036854775807LL -#endif - -#ifdef LLONG_MIN -# /* Take that. */ -#elif defined(LONG_LONG_MIN) -# define LLONG_MIN LONG_LONG_MIN -#elif defined(_I64_MAX) -# define LLONG_MIN _I64_MIN -#else -# define LLONG_MIN (-LLONG_MAX-1) -#endif - -#ifdef SIZE_MAX -# /* Take that. */ -#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG -# define SIZE_MAX ULLONG_MAX -# define SIZE_MIN ULLONG_MIN -#elif SIZEOF_SIZE_T == SIZEOF_LONG -# define SIZE_MAX ULONG_MAX -# define SIZE_MIN ULONG_MIN -#elif SIZEOF_SIZE_T == SIZEOF_INT -# define SIZE_MAX UINT_MAX -# define SIZE_MIN UINT_MIN -#else -# define SIZE_MAX USHRT_MAX -# define SIZE_MIN USHRT_MIN -#endif - -#ifdef SSIZE_MAX -# /* Take that. */ -#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG -# define SSIZE_MAX LLONG_MAX -# define SSIZE_MIN LLONG_MIN -#elif SIZEOF_SIZE_T == SIZEOF_LONG -# define SSIZE_MAX LONG_MAX -# define SSIZE_MIN LONG_MIN -#elif SIZEOF_SIZE_T == SIZEOF_INT -# define SSIZE_MAX INT_MAX -# define SSIZE_MIN INT_MIN -#else -# define SSIZE_MAX SHRT_MAX -# define SSIZE_MIN SHRT_MIN -#endif - -#endif /* RUBY_BACKWARD2_LIMITS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/long_long.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/long_long.h deleted file mode 100644 index 8e6b274..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/long_long.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef RUBY_BACKWARD2_LONG_LONG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_LONG_LONG_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old #LONG_LONG - * - * No known compiler that can compile today's ruby lacks long long. - * Historically MSVC was one of such compiler, but it implemented long long a - * while ago (some time back in 2013). The macros are for backwards - * compatibility only. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/has/warning.h" -#include "ruby/internal/warning_push.h" - -#if defined(__DOXYGEN__) -# /** @cond INTERNAL_MACRO */ -# define HAVE_LONG_LONG 1 -# define HAVE_TRUE_LONG_LONG 1 -# /** @endcond */ -# /** @deprecated Just use `long long` directly. */ -# define LONG_LONG long long. - -#elif RBIMPL_HAS_WARNING("-Wc++11-long-long") -# define HAVE_TRUE_LONG_LONG 1 -# define LONG_LONG \ - RBIMPL_WARNING_PUSH() \ - RBIMPL_WARNING_IGNORED(-Wc++11-long-long) \ - long long \ - RBIMPL_WARNING_POP() - -#elif RBIMPL_HAS_WARNING("-Wlong-long") -# define HAVE_TRUE_LONG_LONG 1 -# define LONG_LONG \ - RBIMPL_WARNING_PUSH() \ - RBIMPL_WARNING_IGNORED(-Wlong-long) \ - long long \ - RBIMPL_WARNING_POP() - -#elif defined(HAVE_LONG_LONG) -# define HAVE_TRUE_LONG_LONG 1 -# define LONG_LONG long long - -#elif SIZEOF___INT64 > 0 -# define HAVE_LONG_LONG 1 -# define LONG_LONG __int64 -# undef SIZEOF_LONG_LONG -# define SIZEOF_LONG_LONG SIZEOF___INT64 - -#else -# error Hello! Ruby developers believe this message must not happen. -# error If you encounter this message, can you file a bug report? -# error Remember to attach a detailed description of your environment. -# error Thank you! -#endif - -#endif /* RBIMPL_BACKWARD2_LONG_LONG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/r_cast.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/r_cast.h deleted file mode 100644 index 3d0f40f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/r_cast.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RUBY_BACKWARD2_R_CAST_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_R_CAST_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old R_CAST - * - * Nobody is actively using this macro. - */ -#define R_CAST(st) (struct st*) -#define RMOVED(obj) (R_CAST(RMoved)(obj)) - -#if defined(__GNUC__) -# warning R_CAST and RMOVED are deprecated -#elif defined(_MSC_VER) -# pragma message("warning: R_CAST and RMOVED are deprecated") -#endif -#endif /* RUBY_BACKWARD2_R_CAST_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/rmodule.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/rmodule.h deleted file mode 100644 index 53b3783..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/rmodule.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef RUBY_BACKWARD2_RMODULE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_RMODULE_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Orphan macros. - * - * These macros seems broken since at least 2011. Nobody (except ruby itself - * who is implementing the internals) could have used those macros for a while. - * Kept public as-is here to keep some theoretical backwards compatibility. - */ -#define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m) -#define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m) -#define RMODULE_M_TBL(m) RCLASS_M_TBL(m) -#define RMODULE_SUPER(m) RCLASS_SUPER(m) - -#if defined(__GNUC__) -# warning RMODULE_* macros are deprecated -#elif defined(_MSC_VER) -# pragma message("warning: RMODULE_* macros are deprecated") -#endif -#endif /* RUBY_BACKWARD2_RMODULE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdalign.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdalign.h deleted file mode 100644 index 8b491bf..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdalign.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef RUBY_BACKWARD2_STDALIGN_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_STDALIGN_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RUBY_ALIGNAS / #RUBY_ALIGNOF - */ -#include "ruby/internal/stdalign.h" - -#undef RUBY_ALIGNAS -#undef RUBY_ALIGNOF -#define RUBY_ALIGNAS RBIMPL_ALIGNAS /**< @copydoc RBIMPL_ALIGNAS */ -#define RUBY_ALIGNOF RBIMPL_ALIGNOF /**< @copydoc RBIMPL_ALIGNOF */ - -#endif /* RUBY_BACKWARD2_STDALIGN_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdarg.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdarg.h deleted file mode 100644 index 08659fe..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/2/stdarg.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef RUBY_BACKWARD2_STDARG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_STDARG_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old #_ - * - * Nobody should ever use these macros any longer. No known compilers lack - * prototypes today. It's 21st century. Just forget them. - */ - -#undef _ -/** - * @deprecated Nobody practically needs this macro any longer. - * @brief This was a transition path from K&R to ANSI. - */ -#ifdef HAVE_PROTOTYPES -# define _(args) args -#else -# define _(args) () -#endif - -#undef __ -/** - * @deprecated Nobody practically needs this macro any longer. - * @brief This was a transition path from K&R to ANSI. - */ -#ifdef HAVE_STDARG_PROTOTYPES -# define __(args) args -#else -# define __(args) () -#endif - -/** - * Functions declared using this macro take arbitrary arguments, including - * void. - * - * ```CXX - * void func(ANYARGS); - * ``` - * - * This was a necessary evil when there was no such thing like function - * overloading. But it is the 21st century today. People generally need not - * use this. Just use a granular typed function. - * - * @see ruby::backward::cxxanyargs - */ -#ifdef __cplusplus -#define ANYARGS ... -#else -#define ANYARGS -#endif - -#endif /* RUBY_BACKWARD2_STDARG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/cxxanyargs.hpp b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/cxxanyargs.hpp deleted file mode 100644 index 2414b7a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/backward/cxxanyargs.hpp +++ /dev/null @@ -1,700 +0,0 @@ -#ifndef RUBY_BACKWARD_CXXANYARGS_HPP //-*-C++-*-vi:ft=cpp -#define RUBY_BACKWARD_CXXANYARGS_HPP -/// @file -/// @author @shyouhei -/// @copyright This file is a part of the programming language Ruby. -/// Permission is hereby granted, to either redistribute and/or -/// modify this file, provided that the conditions mentioned in the -/// file COPYING are met. Consult the file for details. -/// @note DO NOT MODERNISE THIS FILE! As the file name implies it is -/// meant to be a backwards compatibility shim. Please stick to -/// C++ 98 and never use newer features, like `constexpr`. -/// @brief Provides old prototypes for C++ programs. -#include "ruby/internal/config.h" -#include "ruby/internal/intern/class.h" -#include "ruby/internal/intern/cont.h" -#include "ruby/internal/intern/hash.h" -#include "ruby/internal/intern/proc.h" -#include "ruby/internal/intern/thread.h" -#include "ruby/internal/intern/variable.h" -#include "ruby/internal/intern/vm.h" -#include "ruby/internal/iterator.h" -#include "ruby/internal/method.h" -#include "ruby/internal/value.h" -#include "ruby/internal/variable.h" -#include "ruby/backward/2/stdarg.h" -#include "ruby/st.h" - -extern "C++" { - -#ifdef HAVE_NULLPTR -#include -#endif - -/// @brief The main namespace. -/// @note The name "ruby" might already be taken, but that must not be a -/// problem because namespaces are allowed to reopen. -namespace ruby { - -/// Backwards compatibility layer. -namespace backward { - -/// Provides ANYARGS deprecation warnings. In C, ANYARGS means there is no -/// function prototype. Literally anything, even including nothing, can be a -/// valid ANYARGS. So passing a correctly prototyped function pointer to an -/// ANYARGS-ed function parameter is valid, at the same time passing an -/// ANYARGS-ed function pointer to a granular typed function parameter is also -/// valid. However on the other hand in C++, ANYARGS doesn't actually mean any -/// number of arguments. C++'s ANYARGS means _variadic_ number of arguments. -/// This is incompatible with ordinal, correct function prototypes. -/// -/// Luckily, function prototypes being distinct each other means they can be -/// overloaded. We can provide a compatibility layer for older Ruby APIs which -/// used to have ANYARGS. This namespace includes such attempts. -namespace cxxanyargs { - -typedef VALUE type(ANYARGS); ///< ANYARGS-ed function type. -typedef void void_type(ANYARGS); ///< ANYARGS-ed function type, void variant. -typedef int int_type(ANYARGS); ///< ANYARGS-ed function type, int variant. -typedef VALUE onearg_type(VALUE); ///< Single-argumented function type. - -/// @name Hooking global variables -/// @{ - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Define a function-backended global variable. -/// @param[in] q Name of the variable. -/// @param[in] w Getter function. -/// @param[in] e Setter function. -/// @note Both functions can be nullptr. -/// @see rb_define_hooked_variable() -/// @deprecated Use granular typed overload instead. -inline void -rb_define_virtual_variable(const char *q, type *w, void_type *e) -{ - rb_gvar_getter_t *r = reinterpret_cast(w); - rb_gvar_setter_t *t = reinterpret_cast(e); - ::rb_define_virtual_variable(q, r, t); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_virtual_variable(const char *q, rb_gvar_getter_t *w, void_type *e) -{ - rb_gvar_setter_t *t = reinterpret_cast(e); - ::rb_define_virtual_variable(q, w, t); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_virtual_variable(const char *q, type *w, rb_gvar_setter_t *e) -{ - rb_gvar_getter_t *r = reinterpret_cast(w); - ::rb_define_virtual_variable(q, r, e); -} - -#ifdef HAVE_NULLPTR -inline void -rb_define_virtual_variable(const char *q, rb_gvar_getter_t *w, std::nullptr_t e) -{ - ::rb_define_virtual_variable(q, w, e); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_virtual_variable(const char *q, type *w, std::nullptr_t e) -{ - rb_gvar_getter_t *r = reinterpret_cast(w); - ::rb_define_virtual_variable(q, r, e); -} - -inline void -rb_define_virtual_variable(const char *q, std::nullptr_t w, rb_gvar_setter_t *e) -{ - ::rb_define_virtual_variable(q, w, e); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_virtual_variable(const char *q, std::nullptr_t w, void_type *e) -{ - rb_gvar_setter_t *r = reinterpret_cast(e); - ::rb_define_virtual_variable(q, w, r); -} -#endif - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Define a function-backended global variable. -/// @param[in] q Name of the variable. -/// @param[in] w Variable storage. -/// @param[in] e Getter function. -/// @param[in] r Setter function. -/// @note Both functions can be nullptr. -/// @see rb_define_virtual_variable() -/// @deprecated Use granular typed overload instead. -inline void -rb_define_hooked_variable(const char *q, VALUE *w, type *e, void_type *r) -{ - rb_gvar_getter_t *t = reinterpret_cast(e); - rb_gvar_setter_t *y = reinterpret_cast(r); - ::rb_define_hooked_variable(q, w, t, y); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_hooked_variable(const char *q, VALUE *w, rb_gvar_getter_t *e, void_type *r) -{ - rb_gvar_setter_t *y = reinterpret_cast(r); - ::rb_define_hooked_variable(q, w, e, y); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_hooked_variable(const char *q, VALUE *w, type *e, rb_gvar_setter_t *r) -{ - rb_gvar_getter_t *t = reinterpret_cast(e); - ::rb_define_hooked_variable(q, w, t, r); -} - -#ifdef HAVE_NULLPTR -inline void -rb_define_hooked_variable(const char *q, VALUE *w, rb_gvar_getter_t *e, std::nullptr_t r) -{ - ::rb_define_hooked_variable(q, w, e, r); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_hooked_variable(const char *q, VALUE *w, type *e, std::nullptr_t r) -{ - rb_gvar_getter_t *y = reinterpret_cast(e); - ::rb_define_hooked_variable(q, w, y, r); -} - -inline void -rb_define_hooked_variable(const char *q, VALUE *w, std::nullptr_t e, rb_gvar_setter_t *r) -{ - ::rb_define_hooked_variable(q, w, e, r); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -inline void -rb_define_hooked_variable(const char *q, VALUE *w, std::nullptr_t e, void_type *r) -{ - rb_gvar_setter_t *y = reinterpret_cast(r); - ::rb_define_hooked_variable(q, w, e, y); -} -#endif - -/// @} -/// @name Exceptions and tag jumps -/// @{ - -// RUBY_CXX_DEPRECATED("by rb_block_call since 1.9") -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Old way to implement iterators. -/// @param[in] q A function that can yield. -/// @param[in] w Passed to `q`. -/// @param[in] e What is to be yielded. -/// @param[in] r Passed to `e`. -/// @return The return value of `q`. -/// @note `e` can be nullptr. -/// @deprecated This function is obsoleted since long before 2.x era. Do not -/// use it any longer. rb_block_call() is provided instead. -inline VALUE -rb_iterate(onearg_type *q, VALUE w, type *e, VALUE r) -{ - rb_block_call_func_t t = reinterpret_cast(e); - return backward::rb_iterate_deprecated(q, w, t, r); -} - -#ifdef HAVE_NULLPTR -RUBY_CXX_DEPRECATED("by rb_block_call since 1.9") -inline VALUE -rb_iterate(onearg_type *q, VALUE w, std::nullptr_t e, VALUE r) -{ - return backward::rb_iterate_deprecated(q, w, e, r); -} -#endif - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Call a method with a block. -/// @param[in] q The self. -/// @param[in] w The method. -/// @param[in] e The # of elems of `r` -/// @param[in] r The arguments. -/// @param[in] t What is to be yielded. -/// @param[in] y Passed to `t` -/// @return Return value of `q#w(*r,&t)` -/// @note 't' can be nullptr. -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_block_call(VALUE q, ID w, int e, const VALUE *r, type *t, VALUE y) -{ - rb_block_call_func_t u = reinterpret_cast(t); - return ::rb_block_call(q, w, e, r, u, y); -} - -#ifdef HAVE_NULLPTR -inline VALUE -rb_block_call(VALUE q, ID w, int e, const VALUE *r, std::nullptr_t t, VALUE y) -{ - return ::rb_block_call(q, w, e, r, t, y); -} -#endif - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief An equivalent of `rescue` clause. -/// @param[in] q A function that can raise. -/// @param[in] w Passed to `q`. -/// @param[in] e A function that cleans-up. -/// @param[in] r Passed to `e`. -/// @return The return value of `q` if no exception occurs, or the return -/// value of `e` if otherwise. -/// @note `e` can be nullptr. -/// @see rb_ensure() -/// @see rb_rescue2() -/// @see rb_protect() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_rescue(type *q, VALUE w, type *e, VALUE r) -{ - typedef VALUE func1_t(VALUE); - typedef VALUE func2_t(VALUE, VALUE); - func1_t *t = reinterpret_cast(q); - func2_t *y = reinterpret_cast(e); - return ::rb_rescue(t, w, y, r); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief An equivalent of `rescue` clause. -/// @param[in] q A function that can raise. -/// @param[in] w Passed to `q`. -/// @param[in] e A function that cleans-up. -/// @param[in] r Passed to `e`. -/// @param[in] ... 0-terminated list of subclass of @ref rb_eException. -/// @return The return value of `q` if no exception occurs, or the return -/// value of `e` if otherwise. -/// @note `e` can be nullptr. -/// @see rb_ensure() -/// @see rb_rescue() -/// @see rb_protect() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_rescue2(type *q, VALUE w, type *e, VALUE r, ...) -{ - typedef VALUE func1_t(VALUE); - typedef VALUE func2_t(VALUE, VALUE); - func1_t *t = reinterpret_cast(q); - func2_t *y = reinterpret_cast(e); - va_list ap; - va_start(ap, r); - VALUE ret = ::rb_vrescue2(t, w, y, r, ap); - va_end(ap); - return ret; -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief An equivalent of `ensure` clause. -/// @param[in] q A function that can raise. -/// @param[in] w Passed to `q`. -/// @param[in] e A function that ensures. -/// @param[in] r Passed to `e`. -/// @return The return value of `q`. -/// @note It makes no sense to pass nullptr to `e`. -/// @see rb_rescue() -/// @see rb_rescue2() -/// @see rb_protect() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_ensure(type *q, VALUE w, type *e, VALUE r) -{ - typedef VALUE func1_t(VALUE); - func1_t *t = reinterpret_cast(q); - func1_t *y = reinterpret_cast(e); - return ::rb_ensure(t, w, y, r); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief An equivalent of `Kernel#catch`. -/// @param[in] q The "tag" string. -/// @param[in] w A function that can throw. -/// @param[in] e Passed to `w`. -/// @return What was thrown. -/// @note `q` can be a nullptr but makes no sense to pass nullptr to`w`. -/// @see rb_block_call() -/// @see rb_protect() -/// @see rb_rb_catch_obj() -/// @see rb_rescue() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_catch(const char *q, type *w, VALUE e) -{ - rb_block_call_func_t r = reinterpret_cast(w); - return ::rb_catch(q, r, e); -} - -#ifdef HAVE_NULLPTR -inline VALUE -rb_catch(const char *q, std::nullptr_t w, VALUE e) -{ - return ::rb_catch(q, w, e); -} -#endif - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief An equivalent of `Kernel#catch`. -/// @param[in] q The "tag" object. -/// @param[in] w A function that can throw. -/// @param[in] e Passed to `w`. -/// @return What was thrown. -/// @note It makes no sense to pass nullptr to`w`. -/// @see rb_block_call() -/// @see rb_protect() -/// @see rb_rb_catch_obj() -/// @see rb_rescue() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_catch_obj(VALUE q, type *w, VALUE e) -{ - rb_block_call_func_t r = reinterpret_cast(w); - return ::rb_catch_obj(q, r, e); -} - -/// @} -/// @name Procs, Fibers and Threads -/// @{ - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Creates a rb_cFiber instance. -/// @param[in] q The fiber body. -/// @param[in] w Passed to `q`. -/// @return What was allocated. -/// @note It makes no sense to pass nullptr to`q`. -/// @see rb_proc_new() -/// @see rb_thread_create() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_fiber_new(type *q, VALUE w) -{ - rb_block_call_func_t e = reinterpret_cast(q); - return ::rb_fiber_new(e, w); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Creates a @ref rb_cProc instance. -/// @param[in] q The proc body. -/// @param[in] w Passed to `q`. -/// @return What was allocated. -/// @note It makes no sense to pass nullptr to`q`. -/// @see rb_fiber_new() -/// @see rb_thread_create() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_proc_new(type *q, VALUE w) -{ - rb_block_call_func_t e = reinterpret_cast(q); - return ::rb_proc_new(e, w); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Creates a @ref rb_cThread instance. -/// @param[in] q The thread body. -/// @param[in] w Passed to `q`. -/// @return What was allocated. -/// @note It makes no sense to pass nullptr to`q`. -/// @see rb_proc_new() -/// @see rb_fiber_new() -/// @deprecated Use granular typed overload instead. -inline VALUE -rb_thread_create(type *q, void *w) -{ - typedef VALUE ptr_t(void*); - ptr_t *e = reinterpret_cast(q); - return ::rb_thread_create(e, w); -} - -/// @} -/// @name Hash and st_table -/// @{ - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Iteration over the given table. -/// @param[in] q A table to scan. -/// @param[in] w A function to iterate. -/// @param[in] e Passed to `w`. -/// @retval 0 Always returns 0. -/// @note It makes no sense to pass nullptr to`w`. -/// @see st_foreach_check() -/// @see rb_hash_foreach() -/// @deprecated Use granular typed overload instead. -inline int -st_foreach(st_table *q, int_type *w, st_data_t e) -{ - st_foreach_callback_func *r = - reinterpret_cast(w); - return ::st_foreach(q, r, e); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Iteration over the given table. -/// @param[in] q A table to scan. -/// @param[in] w A function to iterate. -/// @param[in] e Passed to `w`. -/// @retval 0 Successful end of iteration. -/// @retval 1 Element removed during traversing. -/// @note It makes no sense to pass nullptr to`w`. -/// @see st_foreach() -/// @deprecated Use granular typed overload instead. -inline int -st_foreach_check(st_table *q, int_type *w, st_data_t e, st_data_t) -{ - st_foreach_check_callback_func *t = - reinterpret_cast(w); - return ::st_foreach_check(q, t, e, 0); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Iteration over the given table. -/// @param[in] q A table to scan. -/// @param[in] w A function to iterate. -/// @param[in] e Passed to `w`. -/// @note It makes no sense to pass nullptr to`w`. -/// @see st_foreach_check() -/// @deprecated Use granular typed overload instead. -inline void -st_foreach_safe(st_table *q, int_type *w, st_data_t e) -{ - st_foreach_callback_func *r = - reinterpret_cast(w); - ::st_foreach_safe(q, r, e); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Iteration over the given hash. -/// @param[in] q A hash to scan. -/// @param[in] w A function to iterate. -/// @param[in] e Passed to `w`. -/// @note It makes no sense to pass nullptr to`w`. -/// @see st_foreach() -/// @deprecated Use granular typed overload instead. -inline void -rb_hash_foreach(VALUE q, int_type *w, VALUE e) -{ - st_foreach_callback_func *r = - reinterpret_cast(w); - ::rb_hash_foreach(q, r, e); -} - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Iteration over each instance variable of the object. -/// @param[in] q An object. -/// @param[in] w A function to iterate. -/// @param[in] e Passed to `w`. -/// @note It makes no sense to pass nullptr to`w`. -/// @see st_foreach() -/// @deprecated Use granular typed overload instead. -inline void -rb_ivar_foreach(VALUE q, int_type *w, VALUE e) -{ - st_foreach_callback_func *r = - reinterpret_cast(w); - ::rb_ivar_foreach(q, r, e); -} - -/// @} - -/// Driver for *_define_method. ::rb_define_method function for instance takes -/// a pointer to ANYARGS-ed functions, which in fact varies 18 different -/// prototypes. We still need to preserve ANYARGS for storages but why not -/// check the consistencies if possible. In C++ a function has its own -/// prototype, which is a compile-time constant (static type) by nature. We -/// can list up all the possible input types and provide warnings for other -/// cases. This is such attempt. -namespace define_method { - -/// Type of ::rb_f_notimplement(). -typedef VALUE notimpl_type(int, const VALUE *, VALUE, VALUE); - -/// @brief Template metaprogramming to generate function prototypes. -/// @tparam T Type of method id (`ID` or `const char*` in practice). -/// @tparam F Definition driver e.g. ::rb_define_method. -template -struct driver { - - /// @brief Defines a method - /// @tparam N Arity of the function. - /// @tparam U The function in question - template - struct engine { - - /* :TODO: Following deprecation attribute renders tons of warnings (one - * per every method definitions), which is annoying. Of course - * annoyance is the core feature of deprecation warnings... But that - * could be too much, especially when the warnings happen inside of - * machine-generated programs. And SWIG is known to do such thing. - * The new (granular) API was introduced in API version 2.7. As of - * this writing the version is 2.8. Let's warn this later, some time - * during 3.x. Hopefully codes in old (ANYARGS-ed) format should be - * less than now. */ -#if (RUBY_API_VERSION_MAJOR * 100 + RUBY_API_VERSION_MINOR) >= 301 - RUBY_CXX_DEPRECATED("use of ANYARGS is deprecated") -#endif - /// @copydoc define(VALUE klass, T mid, U func) - /// @deprecated Pass correctly typed function instead. - static inline void - define(VALUE klass, T mid, type func) - { - F(klass, mid, func, N); - } - - /// @brief Defines klass#mid as func, whose arity is N. - /// @param[in] klass Where the method lives. - /// @param[in] mid Name of the method to define. - /// @param[in] func Function that implements klass#mid. - static inline void - define(VALUE klass, T mid, U func) - { - F(klass, mid, reinterpret_cast(func), N); - } - - /// @copydoc define(VALUE klass, T mid, U func) - static inline void - define(VALUE klass, T mid, notimpl_type func) - { - F(klass, mid, reinterpret_cast(func), N); - } - }; - - /// @cond INTERNAL_MACRO - template struct specific : public engine {}; - template struct specific<15, b> : public engine<15, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<14, b> : public engine<14, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<13, b> : public engine<13, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<12, b> : public engine<12, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<11, b> : public engine<11, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<10, b> : public engine<10, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 9, b> : public engine< 9, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 8, b> : public engine< 8, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 7, b> : public engine< 7, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 6, b> : public engine< 6, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 5, b> : public engine< 5, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 4, b> : public engine< 4, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 3, b> : public engine< 3, VALUE(*)(VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 2, b> : public engine< 2, VALUE(*)(VALUE, VALUE, VALUE)> {}; - template struct specific< 1, b> : public engine< 1, VALUE(*)(VALUE, VALUE)> {}; - template struct specific< 0, b> : public engine< 0, VALUE(*)(VALUE)> {}; - template struct specific<-1, b> : public engine<-1, VALUE(*)(int argc, VALUE *argv, VALUE self)> { - using engine<-1, VALUE(*)(int argc, VALUE *argv, VALUE self)>::define; - static inline void define(VALUE c, T m, VALUE(*f)(int argc, const VALUE *argv, VALUE self)) { F(c, m, reinterpret_cast(f), -1); } - }; - template struct specific<-2, b> : public engine<-2, VALUE(*)(VALUE, VALUE)> {}; - /// @endcond -}; - -/* We could perhaps merge this struct into the one above using variadic - * template parameters if we could assume C++11, but sadly we cannot. */ -/// @copydoc ruby::backward::cxxanyargs::define_method::driver -template -struct driver0 { - - /// @brief Defines a method - /// @tparam N Arity of the function. - /// @tparam U The function in question - template - struct engine { - RUBY_CXX_DEPRECATED("use of ANYARGS is deprecated") - /// @copydoc define(T mid, U func) - /// @deprecated Pass correctly typed function instead. - static inline void - define(T mid, type func) - { - F(mid, func, N); - } - - /// @brief Defines Kernel#mid as func, whose arity is N. - /// @param[in] mid Name of the method to define. - /// @param[in] func Function that implements klass#mid. - static inline void - define(T mid, U func) - { - F(mid, reinterpret_cast(func), N); - } - - /// @copydoc define(T mid, U func) - /// @deprecated Pass correctly typed function instead. - static inline void - define(T mid, notimpl_type func) - { - F(mid, reinterpret_cast(func), N); - } - }; - - /// @cond INTERNAL_MACRO - template struct specific : public engine {}; - template struct specific<15, b> : public engine<15, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<14, b> : public engine<14, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<13, b> : public engine<13, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<12, b> : public engine<12, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<11, b> : public engine<11, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific<10, b> : public engine<10, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 9, b> : public engine< 9, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 8, b> : public engine< 8, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 7, b> : public engine< 7, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 6, b> : public engine< 6, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 5, b> : public engine< 5, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 4, b> : public engine< 4, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 3, b> : public engine< 3, VALUE(*)(VALUE, VALUE, VALUE, VALUE)> {}; - template struct specific< 2, b> : public engine< 2, VALUE(*)(VALUE, VALUE, VALUE)> {}; - template struct specific< 1, b> : public engine< 1, VALUE(*)(VALUE, VALUE)> {}; - template struct specific< 0, b> : public engine< 0, VALUE(*)(VALUE)> {}; - template struct specific<-1, b> : public engine<-1, VALUE(*)(int argc, VALUE *argv, VALUE self)> { - using engine<-1, VALUE(*)(int argc, VALUE *argv, VALUE self)>::define; - static inline void define(T m, VALUE(*f)(int argc, const VALUE *argv, VALUE self)) { F(m, reinterpret_cast(f), -1); } - }; - template struct specific<-2, b> : public engine<-2, VALUE(*)(VALUE, VALUE)> {}; - /// @endcond -}; - -struct rb_define_method : public driver {}; ///< Dispatches appropriate driver for ::rb_define_method. -struct rb_define_method_id : public driver {}; ///< Dispatches appropriate driver for ::rb_define_method_id. -struct rb_define_private_method : public driver {}; ///< Dispatches appropriate driver for ::rb_define_private_method. -struct rb_define_protected_method : public driver {}; ///< Dispatches appropriate driver for ::rb_define_protected_method. -struct rb_define_singleton_method : public driver {}; ///< Dispatches appropriate driver for ::rb_define_singleton_method. -struct rb_define_module_function : public driver {}; ///< Dispatches appropriate driver for ::rb_define_module_function. -struct rb_define_global_function : public driver0 {}; ///< Dispatches appropriate driver for ::rb_define_global_function. - -/// @brief Defines klass\#mid. -/// @param klass Where the method lives. -/// @copydetails #rb_define_global_function(mid, func, arity) -#define rb_define_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_method::specific::define(klass, mid, func) - -/// @copydoc #rb_define_method(klass, mid, func, arity) -#define rb_define_method_id(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_method_id::specific::define(klass, mid, func) - -/// @brief Defines klass\#mid and makes it private. -/// @copydetails #rb_define_method(klass, mid, func, arity) -#define rb_define_private_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_private_method::specific::define(klass, mid, func) - -/// @brief Defines klass\#mid and makes it protected. -/// @copydetails #rb_define_method -#define rb_define_protected_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_protected_method::specific::define(klass, mid, func) - -/// @brief Defines klass.mid.(klass, mid, func, arity) -/// @copydetails #rb_define_method -#define rb_define_singleton_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_singleton_method::specific::define(klass, mid, func) - -/// @brief Defines klass\#mid and makes it a module function. -/// @copydetails #rb_define_method(klass, mid, func, arity) -#define rb_define_module_function(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_module_function::specific::define(klass, mid, func) - -/// @brief Defines ::rb_mKernel \#mid. -/// @param mid Name of the defining method. -/// @param func Implementation of \#mid. -/// @param arity Arity of \#mid. -#define rb_define_global_function(mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_global_function::specific::define(mid, func) - -}}}}} - -using namespace ruby::backward::cxxanyargs; -#endif // RUBY_BACKWARD_CXXANYARGS_HPP diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/config.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/config.h deleted file mode 100644 index f56e54c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/config.h +++ /dev/null @@ -1,181 +0,0 @@ -#ifndef INCLUDE_RUBY_CONFIG_H -#define INCLUDE_RUBY_CONFIG_H 1 -// #if (_MSC_VER < 1920) || (_MSC_VER > 1929) -// #error MSC version unmatch: 1920..1929 is expected. -// #endif -#define RUBY_MSVCRT_VERSION 140 -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_STDBOOL_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STDDEF_H 1 -#define HAVE_STRING_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_LONG_LONG 1 -#define HAVE_OFF_T 1 -#define SIZEOF_INT 4 -#define SIZEOF_SHORT 2 -#define SIZEOF_LONG 4 -#define SIZEOF_LONG_LONG 8 -#define SIZEOF___INT64 8 -#ifndef _INTEGRAL_MAX_BITS -#define _INTEGRAL_MAX_BITS 64 -#endif -#define SIZEOF_OFF_T 8 -#define SIZEOF_VOIDP 8 -#define SIZEOF_FLOAT 4 -#define SIZEOF_DOUBLE 8 -#define SIGNEDNESS_OF_TIME_T -1 -#define NEGATIVE_TIME_T 1 -#define SIZEOF_TIME_T 8 -#define TIMET2NUM(v) LL2NUM(v) -#define NUM2TIMET(v) NUM2LL(v) -#define CLOCKID2NUM(v) INT2NUM(v) -#define NUM2CLOCKID(v) NUM2INT(v) -#define SIZEOF_CLOCK_T 4 -#define SIZEOF_RLIM_T 0 -#define SIZEOF_SIZE_T 8 -#define SIZEOF_PTRDIFF_T 8 -#define SIZEOF_INTPTR_T 8 -#define SIZEOF_UINTPTR_T 8 -#define HAVE_VA_COPY 1 -#define NORETURN(x) __declspec(noreturn) x -#define DEPRECATED(x) __declspec(deprecated) x -#define RUBY_CXX_DEPRECATED(mesg) __declspec(deprecated(mesg)) -#define NOINLINE(x) __declspec(noinline) x -#define ALWAYS_INLINE(x) __forceinline x -#define WARN_UNUSED_RESULT(x) x -#define MAYBE_UNUSED(x) x -#define UNREACHABLE __assume(0) -#define ASSUME(x) __assume(!!(x)) -#define FUNC_STDCALL(x) __stdcall x -#define FUNC_CDECL(x) __cdecl x -#define FUNC_FASTCALL(x) __fastcall x -#define RUBY_FUNCTION_NAME_STRING __FUNCTION__ -#define PACKED_STRUCT(x) __pragma(pack(push, 1)) x __pragma(pack(pop)) -#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x) -#define RUBY_EXTERN extern __declspec(dllimport) -#define RUBY_ALIGNAS(n) __declspec(align(n)) -#define RUBY_ALIGNOF __alignof -#define HAVE_DECL_SYS_NERR 1 -#define HAVE_LIMITS_H 1 -#define HAVE_FCNTL_H 1 -#define HAVE_SYS_UTIME_H 1 -#define HAVE_FLOAT_H 1 -#define HAVE_TIME_H 1 -#define rb_pid_t int -#define rb_gid_t int -#define rb_uid_t int -#define HAVE_STRUCT_STAT_ST_RDEV 1 -#define HAVE_STRUCT_TIMEVAL 1 -#define HAVE_STRUCT_TIMESPEC -#define HAVE_STDINT_H 1 -#define HAVE_INT8_T 1 -#define HAVE_UINT8_T 1 -#define SIZEOF_INT8_T 1 -#define SIZEOF_UINT8_T 1 -#define HAVE_INT16_T 1 -#define HAVE_UINT16_T 1 -#define SIZEOF_INT16_T 2 -#define SIZEOF_UINT16_T 2 -#define HAVE_INT32_T 1 -#define HAVE_UINT32_T 1 -#define SIZEOF_INT32_T 4 -#define SIZEOF_UINT32_T 4 -#define HAVE_INT64_T 1 -#define HAVE_UINT64_T 1 -#define SIZEOF_INT64_T 8 -#define SIZEOF_UINT64_T 8 -#define HAVE_INTPTR_T 1 -#define HAVE_UINTPTR_T 1 -#define HAVE_SSIZE_T 1 -#define ssize_t __int64 -#define PRI_PTR_PREFIX "I64" -#define PRI_LL_PREFIX "I64" -#define PRI_PIDT_PREFIX PRI_INT_PREFIX -#define GETGROUPS_T int -#define TYPEOF_TIMEVAL_TV_SEC long -#define HAVE_ACOSH 1 -#define HAVE_ASINH 1 -#define HAVE_ATANH 1 -#define HAVE_CBRT 1 -#define HAVE_LOG2 1 -#define log2(x) log2(x) -#define HAVE_ERF 1 -#define HAVE_ERFC 1 -#define HAVE_ROUND 1 -#define HAVE_TGAMMA 1 -#define HAVE_NEXTAFTER 1 -#define HAVE_ALLOCA 1 -#define HAVE_DUP2 1 -#define HAVE_MEMCMP 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MKDIR 1 -#define HAVE_CLOCK_GETTIME 1 -#define HAVE_CLOCK_GETRES 1 -#define HAVE_GETTIMEOFDAY 1 -#define HAVE_SPAWNV 1 -#define HAVE_STRCASECMP 1 -#define HAVE_STRNCASECMP 1 -#define HAVE_STRERROR 1 -#define HAVE_STRFTIME 1 -#define HAVE_STRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_FLOCK 1 -#define HAVE_ISNAN 1 -#define HAVE_FINITE 1 -#define HAVE_NAN 1 -#define HAVE_HYPOT 1 -#define HAVE_FMOD 1 -#define HAVE_FREXP 1 -#define HAVE_MODF 1 -#define HAVE_WAITPID 1 -#define HAVE_FSYNC 1 -#define HAVE_GETCWD 1 -#define HAVE_TRUNCATE 1 -#define HAVE_FTRUNCATE 1 -#define HAVE_LSTAT 1 -#define HAVE_TIMES 1 -#define HAVE_FCNTL 1 -#define HAVE_LINK 1 -#define HAVE_READLINK 1 -#define HAVE_SYMLINK 1 -#define HAVE_LCHOWN 1 -#define HAVE__SETJMP 1 -#define HAVE_TELLDIR 1 -#define HAVE_SEEKDIR 1 -#define HAVE_MKTIME 1 -#define HAVE_COSH 1 -#define HAVE_SINH 1 -#define HAVE_TANH 1 -#define HAVE_SIGNBIT 1 -#define HAVE_TZNAME 1 -#define HAVE_DAYLIGHT 1 -#define HAVE_GMTIME_R 1 -#define HAVE_QSORT_S -#define HAVE_TYPE_NET_LUID 1 -#define HAVE_NULLPTR 1 -#define SETPGRP_VOID 1 -#define RSHIFT(x, y) ((x) >> (int)y) -#define HAVE_RB_FD_INIT 1 -#define RUBY_SETJMP(env) _setjmp(env) -#define RUBY_LONGJMP(env, val) longjmp(env, val) -#define RUBY_JMP_BUF jmp_buf -#ifndef __cplusplus -// #define inline __inline -#define restrict __restrict -#endif -#define NEED_IO_SEEK_BETWEEN_RW 1 -#define STACK_GROW_DIRECTION -1 -#define COROUTINE_H "coroutine/win64/Context.h" -#define THREAD_IMPL_H "thread_win32.h" -#define THREAD_IMPL_SRC "thread_win32.c" -#define LOAD_RELATIVE 1 -#define DLEXT ".so" -#define EXECUTABLE_EXTS ".exe", ".com", ".cmd", ".bat" -#define RUBY_COREDLL "vcruntime140" -#define RUBY_PLATFORM "x64-mswin64_140" -#define RUBY_SITEARCH "x64-vcruntime140" -#define USE_MJIT 1 -#endif /* INCLUDE_RUBY_CONFIG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/debug.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/debug.h deleted file mode 100644 index c88da9c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/debug.h +++ /dev/null @@ -1,644 +0,0 @@ -#ifndef RB_DEBUG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RB_DEBUG_H 1 -/** - * @file - * @author $Author: ko1 $ - * @date Tue Nov 20 20:35:08 2012 - * @copyright Copyright (C) 2012 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/returns_nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/event.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* Note: This file contains experimental APIs. */ -/* APIs can be replaced at Ruby 2.0.1 or later */ - -/** - * @name Frame-profiling APIs - * - * @{ - */ - -RBIMPL_ATTR_NONNULL((3)) -/** - * Queries mysterious "frame"s of the given range. - * - * The returned values are opaque backtrace pointers, which you are allowed to - * issue a very limited set of operations listed below. Don't call arbitrary - * ruby methods. - * - * @param[in] start Start position (0 means the topmost). - * @param[in] limit Number objects of `buff`. - * @param[out] buff Return buffer. - * @param[out] lines Return buffer. - * @return Number of objects filled into `buff`. - * @post `buff` is filled with backtrace pointers. - * @post `lines` is filled with `__LINE__` of each backtraces. - * - * @internal - * - * @shyouhei doesn't like this abuse of ::VALUE. It should have been - * `const struct rb_callable_method_entry_struct *`. - */ -int rb_profile_frames(int start, int limit, VALUE *buff, int *lines); - -/** - * Queries the path of the passed backtrace. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil The frame is implemented in C etc. - * @retval otherwise Where `frame` is running. - */ -VALUE rb_profile_frame_path(VALUE frame); - -/** - * Identical to rb_profile_frame_path(), except it tries to expand the - * returning path. In case the path is `require`-d from something else - * rb_profile_frame_path() can return relative paths. This one tries to avoid - * that. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval "" The frame is in C. - * @retval RUBY_Qnil Can't infer real path (inside of `eval` etc.). - * @retval otherwise Where `frame` is running. - */ -VALUE rb_profile_frame_absolute_path(VALUE frame); - -/** - * Queries human-readable "label" string. This is `"
"` for the toplevel, - * `""` for evaluated ones, method name for methods, class name for - * classes. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil Can't infer the label (C etc.). - * @retval "
" The frame is global toplevel. - * @retval "" The frame is dynamic. - * @retval otherwise Label of the frame. - */ -VALUE rb_profile_frame_label(VALUE frame); - -/** - * Identical to rb_profile_frame_label(), except it does not "qualify" the - * result. Consider the following backtrace: - * - * ```ruby - * def bar - * caller_locations - * end - * - * def foo - * [1].map { bar }.first - * end - * - * obj = foo.first - * obj.label # => "block in foo" - * obj.base_label # => "foo" - * ``` - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil Can't infer the label (C etc.). - * @retval "
" The frame is global toplevel. - * @retval "" The frame is dynamic. - * @retval otherwise Base label of the frame. - */ -VALUE rb_profile_frame_base_label(VALUE frame); - -/** - * Identical to rb_profile_frame_label(), except it returns a qualified result. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil Can't infer the label (C etc.). - * @retval "
" The frame is global toplevel. - * @retval "" The frame is dynamic. - * @retval otherwise Qualified label of the frame. - * - * @internal - * - * As of writing there is no way to obtain this return value from a Ruby - * script. This may change in future (it took 8 years and still no progress, - * though). - */ -VALUE rb_profile_frame_full_label(VALUE frame); - -/** - * Queries the first line of the method of the passed frame pointer. Can be - * handy when for instance a debugger want to display the frame in question. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil Can't infer the line (C etc.). - * @retval otherwise Line number of the method in question. - */ -VALUE rb_profile_frame_first_lineno(VALUE frame); - -/** - * Queries the class path of the method that the passed frame represents. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil Can't infer the class (global toplevel etc.). - * @retval otherwise Class path as in rb_class_path(). - */ -VALUE rb_profile_frame_classpath(VALUE frame); - -/** - * Queries if the method of the passed frame is a singleton class. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qtrue It is a singleton method. - * @retval RUBY_Qfalse Otherwise (normal method/non-method). - */ -VALUE rb_profile_frame_singleton_method_p(VALUE frame); - -/** - * Queries the name of the method of the passed frame. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil The frame in question is not a method. - * @retval otherwise Name of the method of the frame. - */ -VALUE rb_profile_frame_method_name(VALUE frame); - -/** - * Identical to rb_profile_frame_method_name(), except it "qualifies" the - * return value with its defining class. - * - * @param[in] frame What rb_profile_frames() returned. - * @retval RUBY_Qnil The frame in question is not a method. - * @retval otherwise Qualified name of the method of the frame. - */ -VALUE rb_profile_frame_qualified_method_name(VALUE frame); - -/** @} */ - -/** - * @name Debug inspector APIs - * - * @{ - */ - -/** Opaque struct representing a debug inspector. */ -typedef struct rb_debug_inspector_struct rb_debug_inspector_t; - -/** - * Type of the callback function passed to rb_debug_inspector_open(). - * Inspection shall happen only inside of them. The passed pointers gets - * invalidated once after the callback returns. - * - * @param[in] dc A debug context. - * @param[in,out] data What was passed to rb_debug_inspector_open(). - * @return What would be the return value of rb_debug_inspector_open(). - */ -typedef VALUE (*rb_debug_inspector_func_t)(const rb_debug_inspector_t *dc, void *data); - -/** - * Prepares, executes, then cleans up a debug session. - * - * @param[in] func A callback to run inside of a debug session. - * @param[in,out] data Passed as-is to `func`. - * @return What was returned from `func`. - */ -VALUE rb_debug_inspector_open(rb_debug_inspector_func_t func, void *data); - -/** - * Queries the current receiver of the passed context's upper frame. - * - * @param[in] dc A debug context. - * @param[in] index Index of the frame from top to bottom. - * @exception rb_eArgError `index` out of range. - * @return The current receiver at `index`-th frame. - */ -VALUE rb_debug_inspector_frame_self_get(const rb_debug_inspector_t *dc, long index); - -/** - * Queries the current class of the passed context's upper frame. - * - * @param[in] dc A debug context. - * @param[in] index Index of the frame from top to bottom. - * @exception rb_eArgError `index` out of range. - * @return The current class at `index`-th frame. - */ -VALUE rb_debug_inspector_frame_class_get(const rb_debug_inspector_t *dc, long index); - -/** - * Queries the binding of the passed context's upper frame. - * - * @param[in] dc A debug context. - * @param[in] index Index of the frame from top to bottom. - * @exception rb_eArgError `index` out of range. - * @return The binding at `index`-th frame. - */ -VALUE rb_debug_inspector_frame_binding_get(const rb_debug_inspector_t *dc, long index); - -/** - * Queries the instruction sequence of the passed context's upper frame. - * - * @param[in] dc A debug context. - * @param[in] index Index of the frame from top to bottom. - * @exception rb_eArgError `index` out of range. - * @retval RUBY_Qnil `index`-th frame is not in Ruby (C etc.). - * @retval otherwise An instance of `RubyVM::InstructionSequence` which - * represents the instruction sequence at `index`-th - * frame. - */ -VALUE rb_debug_inspector_frame_iseq_get(const rb_debug_inspector_t *dc, long index); - -/** - * Queries the backtrace object of the context. This is as if you call - * `caller_locations` at the point of debugger. - * - * @param[in] dc A debug context. - * @return An array of `Thread::Backtrace::Location` which represents the - * current point of execution at `dc`. - - */ -VALUE rb_debug_inspector_backtrace_locations(const rb_debug_inspector_t *dc); - -/** @} */ - -/** - * @name Old style set_trace_func APIs - * - * @{ - */ - -/* duplicated def of include/ruby/ruby.h */ -#include "ruby/internal/event.h" - -/** - * Identical to rb_remove_event_hook(), except it additionally takes the data - * argument. This extra argument is the same as that of rb_add_event_hook(), - * and this function removes the hook which matches both arguments at once. - * - * @param[in] func A callback. - * @param[in] data What to be passed to `func`. - * @return Number of deleted event hooks. - * @note As multiple events can share the same `func` it is quite - * possible for the return value to become more than one. - */ -int rb_remove_event_hook_with_data(rb_event_hook_func_t func, VALUE data); - -/** - * Identical to rb_add_event_hook(), except its effect is limited to the passed - * thread. Other threads are not affected by this. - * - * @param[in] thval An instance of ::rb_cThread. - * @param[in] func A callback. - * @param[in] events A set of events that `func` should run. - * @param[in] data Passed as-is to `func`. - * @exception rb_eTypeError `thval` is not a thread. - */ -void rb_thread_add_event_hook(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data); - -/** - * Identical to rb_remove_event_hook(), except it additionally takes a thread - * argument. This extra argument is the same as that of - * rb_thread_add_event_hook(), and this function removes the hook which matches - * both arguments at once. - * - * @param[in] thval An instance of ::rb_cThread. - * @param[in] func A callback. - * @exception rb_eTypeError `thval` is not a thread. - * @return Number of deleted event hooks. - * @note As multiple events can share the same `func` it is quite - * possible for the return value to become more than one. - */ -int rb_thread_remove_event_hook(VALUE thval, rb_event_hook_func_t func); - -/** - * Identical to rb_thread_remove_event_hook(), except it additionally takes the - * data argument. It can also be seen as a routine identical to - * rb_remove_event_hook_with_data(), except it additionally takes the thread. - * This function deletes hooks that satisfy all three criteria. - * - * @param[in] thval An instance of ::rb_cThread. - * @param[in] func A callback. - * @param[in] data What to be passed to `func`. - * @exception rb_eTypeError `thval` is not a thread. - * @return Number of deleted event hooks. - * @note As multiple events can share the same `func` it is quite - * possible for the return value to become more than one. - */ -int rb_thread_remove_event_hook_with_data(VALUE thval, rb_event_hook_func_t func, VALUE data); - -/** @} */ - -/** - * @name TracePoint APIs - * - * @{ - */ - -/** - * Creates a tracepoint by registering a callback function for one or more - * tracepoint events. Once the tracepoint is created, you can use - * rb_tracepoint_enable to enable the tracepoint. - * - * @param[in] target_thread_not_supported_yet Meant for picking the - * thread in which the tracepoint is to be created. - * However, current implementation ignore this - * parameter, tracepoint is created for all threads. - * Simply specify Qnil. - * @param[in] events Event(s) to listen to. - * @param[in] func A callback function. - * @param[in,out] data Void pointer that will be passed to the callback - * function. - * - * When the callback function is called, it will be passed 2 parameters: - * 1. `VALUE tpval` - the TracePoint object from which trace args can be - * extracted. - * 1. `void *data` - A void pointer which helps to share scope with the - * callback function. - * - * It is important to note that you cannot register callbacks for normal events - * and internal events simultaneously because they are different purpose. You - * can use any Ruby APIs (calling methods and so on) on normal event hooks. - * However, in internal events, you can not use any Ruby APIs (even object - * creations). This is why we can't specify internal events by TracePoint - * directly. Limitations are MRI version specific. - * - * Example: - * - * ```CXX - * rb_tracepoint_new( - * Qnil, - * RUBY_INTERNAL_EVENT_NEWOBJ | RUBY_INTERNAL_EVENT_FREEOBJ, - * obj_event_i, - * data); - * ``` - * - * In this example, a callback function `obj_event_i` will be registered for - * internal events #RUBY_INTERNAL_EVENT_NEWOBJ and - * #RUBY_INTERNAL_EVENT_FREEOBJ. - */ -VALUE rb_tracepoint_new(VALUE target_thread_not_supported_yet, rb_event_flag_t events, void (*func)(VALUE, void *), void *data); - -/** - * Starts (enables) trace(s) defined by the passed object. A TracePoint object - * does not immediately take effect on creation. You have to explicitly call - * this API. - * - * @param[in] tpval An instance of TracePoint. - * @exception rb_eArgError A trace is already running. - * @return Undefined value. Forget this. It should have returned `void`. - * @post Trace(s) defined by `tpval` start. - */ -VALUE rb_tracepoint_enable(VALUE tpval); - -/** - * Stops (disables) an already running instance of TracePoint. - * - * @param[in] tpval An instance of TracePoint. - * @return Undefined value. Forget this. It should have returned `void`. - * @post Trace(s) defined by `tpval` stop. - */ -VALUE rb_tracepoint_disable(VALUE tpval); - -/** - * Queries if the passed TracePoint is up and running. - * - * @param[in] tpval An instance of TracePoint. - * @retval RUBY_Qtrue It is. - * @retval RUBY_Qfalse It isn't. - */ -VALUE rb_tracepoint_enabled_p(VALUE tpval); - -/** - * Type that represents a specific trace event. Roughly resembles the - * tracepoint object that is passed to the block of `TracePoint.new`: - * - * ```ruby - * TracePoint.new(*events) do |obj| - * ... # ^^^^^ Resembles this object. - * end - * ``` - */ -typedef struct rb_trace_arg_struct rb_trace_arg_t; - -RBIMPL_ATTR_RETURNS_NONNULL() -/** - * Queries the current event of the passed tracepoint. - * - * @param[in] tpval An instance of TracePoint. - * @exception rb_eRuntimeError `tpval` is disabled. - * @return The current event. - * - * @internal - * - * `tpval` is a fake. There is only one instance of ::rb_trace_arg_t at one - * time. This function just returns that global variable. - */ -rb_trace_arg_t *rb_tracearg_from_tracepoint(VALUE tpval); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the event of the passed trace. - * - * @param[in] trace_arg A trace instance. - * @return Its event. - */ -rb_event_flag_t rb_tracearg_event_flag(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_tracearg_event_flag(), except it returns the name of the - * event in Ruby's symbol. - * - * @param[in] trace_arg A trace instance. - * @return Its event, in Ruby level Symbol object. - */ -VALUE rb_tracearg_event(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the line of the point where the trace is at. - * - * @param[in] trace_arg A trace instance. - * @retval 0 The trace is not at Ruby frame. - * @return otherwise Its line number. - */ -VALUE rb_tracearg_lineno(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the file name of the point where the trace is at. - * - * @param[in] trace_arg A trace instance. - * @retval RUBY_Qnil The trace is not at Ruby frame. - * @retval otherwise Its path. - */ -VALUE rb_tracearg_path(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the method name of the point where the trace is at. - * - * @param[in] trace_arg A trace instance. - * @retval RUBY_Qnil There is no method. - * @retval otherwise Its method name, in Ruby level Symbol. - */ -VALUE rb_tracearg_method_id(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_tracearg_method_id(), except it returns callee id like - * rb_frame_callee(). - * - * @param[in] trace_arg A trace instance. - * @retval RUBY_Qnil There is no method. - * @retval otherwise Its method name, in Ruby level Symbol. - */ -VALUE rb_tracearg_callee_id(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the class that defines the method that the passed trace is at. This - * can be different from the class of rb_tracearg_self()'s return value because - * of inheritance(s). - * - * @param[in] trace_arg A trace instance. - * @retval RUBY_Qnil There is no method. - * @retval otherwise Its method's class. - */ -VALUE rb_tracearg_defined_class(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Creates a binding object of the point where the trace is at. - * - * @param[in] trace_arg A trace instance. - * @retval RUBY_Qnil The point has no binding. - * @retval otherwise Its binding. - * - * @internal - * - * @shyouhei has no idea on which situation shall this function return - * ::RUBY_Qnil. - */ -VALUE rb_tracearg_binding(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the receiver of the point trace is at. - * - * @param[in] trace_arg A trace instance. - * @return Its receiver. - */ -VALUE rb_tracearg_self(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the return value that the trace represents. - * - * @param[in] trace_arg A trace instance. - * @exception rb_eRuntimeError The tracing event is not return-related. - * @return The return value. - */ -VALUE rb_tracearg_return_value(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the raised exception that the trace represents. - * - * @param[in] trace_arg A trace instance. - * @exception rb_eRuntimeError The tracing event is not exception-related. - * @return The raised exception. - */ -VALUE rb_tracearg_raised_exception(rb_trace_arg_t *trace_arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries the allocated/deallocated object that the trace represents. - * - * @param[in] trace_arg A trace instance. - * @exception rb_eRuntimeError The tracing event is not GC-related. - * @return The allocated/deallocated object. - */ -VALUE rb_tracearg_object(rb_trace_arg_t *trace_arg); - - -/** @} */ - -/** - * @name Postponed Job API - * - * @{ - */ - -/* - * Postponed Job API - * rb_postponed_job_register and rb_postponed_job_register_one are - * async-signal-safe and used via SIGPROF by the "stackprof" RubyGem - */ - -/** - * Type of postponed jobs. - * - * @param[in,out] arg What was passed to rb_postponed_job_register(). - */ -typedef void (*rb_postponed_job_func_t)(void *arg); - -/** - * Registers a postponed job. - * - * There are situations when running a ruby program is not possible. For - * instance when a program is in a signal handler; for another instance when - * the GC is busy. On such situations however, there might be needs to do - * something. We cannot but defer such operations until we are 100% sure it is - * safe to execute them. This mechanism is called postponed jobs. This - * function registers a new one. The registered job would eventually gets - * executed. - * - * @param[in] flags (Unused) reserved for future extensions. - * @param[in] func Job body. - * @param[in,out] data Passed as-is to `func`. - * @retval 0 Postponed job buffer is full. Failed. - * @retval otherwise Opaque return value. - * @post The passed job is postponed. - */ -int rb_postponed_job_register(unsigned int flags, rb_postponed_job_func_t func, void *data); - -/** - * Identical to rb_postponed_job_register_one(), except it additionally checks - * for duplicated registration. In case the passed job is already in the - * postponed job buffer this function does nothing. - * - * @param[in] flags (Unused) reserved for future extensions. - * @param[in] func Job body. - * @param[in,out] data Passed as-is to `func`. - * @retval 0 Postponed job buffer is full. Failed. - * @retval otherwise Opaque return value. - */ -int rb_postponed_job_register_one(unsigned int flags, rb_postponed_job_func_t func, void *data); - -/** @} */ - -/** - * @cond INTERNAL_MACRO - * - * Anything after this are intentionally left undocumented, to honour the - * comment below. - */ - -/* undocumented advanced tracing APIs */ - -typedef enum { - RUBY_EVENT_HOOK_FLAG_SAFE = 0x01, - RUBY_EVENT_HOOK_FLAG_DELETED = 0x02, - RUBY_EVENT_HOOK_FLAG_RAW_ARG = 0x04 -} rb_event_hook_flag_t; - -void rb_add_event_hook2(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag); -void rb_thread_add_event_hook2(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag); - -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_DEBUG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/defines.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/defines.h deleted file mode 100644 index 48184f8..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/defines.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef RUBY_DEFINES_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_DEFINES_H 1 -/** - * @file - * @author $Author$ - * @date Wed May 18 00:21:44 JST 1994 - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ - -#include "ruby/internal/config.h" - -/* AC_INCLUDES_DEFAULT */ -#include - -#ifdef HAVE_SYS_TYPES_H -# include -#endif - -#ifdef HAVE_SYS_STAT_H -# include -#endif - -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif - -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif - -#ifdef HAVE_STRINGS_H -# include -#endif - -#ifdef HAVE_INTTYPES_H -# include -#endif - -#ifdef HAVE_STDINT_H -# include -#endif - -#ifdef HAVE_STDALIGN_H -# include -#endif - -#ifdef HAVE_UNISTD_H -# include -#endif - -#ifdef HAVE_SYS_SELECT_H -# include -#endif - -#ifdef RUBY_USE_SETJMPEX -# include -#endif - -#include "ruby/internal/dllexport.h" -#include "ruby/internal/xmalloc.h" -#include "ruby/backward/2/assume.h" -#include "ruby/backward/2/attributes.h" -#include "ruby/backward/2/bool.h" -#include "ruby/backward/2/long_long.h" -#include "ruby/backward/2/stdalign.h" -#include "ruby/backward/2/stdarg.h" -#include "ruby/internal/dosish.h" -#include "ruby/missing.h" - -/** - * Asserts that the compilation unit includes Ruby's CAPI. This has been here - * since the very beginning (at least since version 0.49). - */ -#define RUBY - -#ifdef __GNUC__ -# /** This is expanded to nothing for non-GCC compilers. */ -# define RB_GNUC_EXTENSION __extension__ -# /** This is expanded to the passed token for non-GCC compilers. */ -# define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; }) -#else -# define RB_GNUC_EXTENSION -# define RB_GNUC_EXTENSION_BLOCK(x) (x) -#endif - -/** @cond INTERNAL_MACRO */ - -/* :FIXME: Can someone tell us why is this macro defined here? @shyouhei - * thinks this is a truly internal macro but cannot move around because he - * doesn't understand the reason of this arrangement. */ -#ifndef RUBY_MBCHAR_MAXSIZE -# define RUBY_MBCHAR_MAXSIZE INT_MAX -# /* MB_CUR_MAX will not work well in C locale */ -#endif - -#if defined(__sparc) -RBIMPL_SYMBOL_EXPORT_BEGIN() -void rb_sparc_flush_register_windows(void); -RBIMPL_SYMBOL_EXPORT_END() -# define FLUSH_REGISTER_WINDOWS rb_sparc_flush_register_windows() -#else -# define FLUSH_REGISTER_WINDOWS ((void)0) -#endif -/** @endcond */ -#endif /* RUBY_DEFINES_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/digest.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/digest.h deleted file mode 100644 index 0d4f0e7..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/digest.h +++ /dev/null @@ -1,72 +0,0 @@ -/************************************************ - - digest.h - header file for ruby digest modules - - $Author$ - created at: Fri May 25 08:54:56 JST 2001 - - - Copyright (C) 2001-2006 Akinori MUSHA - - $RoughId: digest.h,v 1.3 2001/07/13 15:38:27 knu Exp $ - $Id$ - -************************************************/ - -#include "ruby.h" - -#define RUBY_DIGEST_API_VERSION 3 - -typedef int (*rb_digest_hash_init_func_t)(void *); -typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t); -typedef int (*rb_digest_hash_finish_func_t)(void *, unsigned char *); - -typedef struct { - int api_version; - size_t digest_len; - size_t block_len; - size_t ctx_size; - rb_digest_hash_init_func_t init_func; - rb_digest_hash_update_func_t update_func; - rb_digest_hash_finish_func_t finish_func; -} rb_digest_metadata_t; - -#define DEFINE_UPDATE_FUNC_FOR_UINT(name) \ -void \ -rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \ -{ \ - const unsigned int stride = 16384; \ - \ - for (; size > stride; size -= stride, ptr += stride) { \ - name##_Update(ctx, ptr, stride); \ - } \ - if (size > 0) name##_Update(ctx, ptr, size); \ -} - -#define DEFINE_FINISH_FUNC_FROM_FINAL(name) \ -int \ -rb_digest_##name##_finish(void *ctx, unsigned char *ptr) \ -{ \ - return name##_Final(ptr, ctx); \ -} - -static inline VALUE -rb_digest_namespace(void) -{ - rb_require("digest"); - return rb_path2class("Digest"); -} - -static inline ID -rb_id_metadata(void) -{ - return rb_intern_const("metadata"); -} - -static inline VALUE -rb_digest_make_metadata(const rb_digest_metadata_t *meta) -{ -#undef RUBY_UNTYPED_DATA_WARNING -#define RUBY_UNTYPED_DATA_WARNING 0 - return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta)); -} diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/encoding.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/encoding.h deleted file mode 100644 index 1256393..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/encoding.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef RUBY_ENCODING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_ENCODING_H 1 -/** - * @file - * @author $Author: matz $ - * @date Thu May 24 11:49:41 JST 2007 - * @copyright Copyright (C) 2007 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @brief Encoding relates APIs. - * - * These APIs are mainly for implementing encodings themselves. Encodings are - * built on top of Ruby's core CAPIs. Though not prohibited, there can be - * relatively less rooms for things in this header file be useful when writing - * an extension library. - */ -#include "ruby/ruby.h" - -#include "ruby/internal/encoding/coderange.h" -#include "ruby/internal/encoding/ctype.h" -#include "ruby/internal/encoding/encoding.h" -#include "ruby/internal/encoding/pathname.h" -#include "ruby/internal/encoding/re.h" -#include "ruby/internal/encoding/sprintf.h" -#include "ruby/internal/encoding/string.h" -#include "ruby/internal/encoding/symbol.h" -#include "ruby/internal/encoding/transcode.h" - -#endif /* RUBY_ENCODING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/fiber/scheduler.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/fiber/scheduler.h deleted file mode 100644 index 3ea52be..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/fiber/scheduler.h +++ /dev/null @@ -1,336 +0,0 @@ -#ifndef RUBY_FIBER_SCHEDULER_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_FIBER_SCHEDULER_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @brief Scheduler APIs. - */ -#include "ruby/internal/config.h" - -#include - -#ifdef STDC_HEADERS -#include /* size_t */ -#endif - -#include "ruby/ruby.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/arithmetic.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -struct timeval; - -/** - * Wrap a `ssize_t` and `int errno` into a single `VALUE`. This interface should - * be used to safely capture results from system calls like `read` and `write`. - * - * You should use `rb_fiber_scheduler_io_result_apply` to unpack the result of - * this value and update `int errno`. - * - * You should not directly try to interpret the result value as it is considered - * an opaque representation. However, the general representation is an integer - * in the range of `[-int errno, size_t size]`. Linux generally restricts the - * result of system calls like `read` and `write` to `<= 2^31` which means this - * will typically fit within a single FIXNUM. - * - * @param[in] result The result of the system call. - * @param[in] error The value of `errno`. - * @return A `VALUE` which contains the result and/or errno. - */ -static inline VALUE -rb_fiber_scheduler_io_result(ssize_t result, int error) { - if (result == -1) { - return RB_INT2NUM(-error); - } else { - return RB_SIZE2NUM(result); - } -} - -/** - * Apply an io result to the local thread, returning the value of the original - * system call that created it and updating `int errno`. - * - * You should not directly try to interpret the result value as it is considered - * an opaque representation. - * - * @param[in] result The `VALUE` which contains an errno and/or result size. - * @post Updates `int errno` with the value if negative. - * @return The original result of the system call. - */ -static inline ssize_t -rb_fiber_scheduler_io_result_apply(VALUE result) { - if (RB_FIXNUM_P(result) && RB_NUM2INT(result) < 0) { - errno = -RB_NUM2INT(result); - return -1; - } else { - return RB_NUM2SIZE(result); - } -} - -/** - * Queries the current scheduler of the current thread that is calling this - * function. - * - * @retval RUBY_Qnil No scheduler has been set so far to this thread (which - * is the default). - * @retval otherwise The scheduler that was last set for the current thread - * with rb_fiber_scheduler_set(). - */ -VALUE rb_fiber_scheduler_get(void); - -/** - * Destructively assigns the passed scheduler to that of the current thread - * that is calling this function. If the scheduler is set, non-blocking fibers - * (created by `Fiber.new` with `blocking: false`, or by `Fiber.schedule`) call - * that scheduler's hook methods on potentially blocking operations, and the - * current thread will call scheduler's `#close` method on finalisation - * (allowing the scheduler to properly manage all non-finished fibers). - * `scheduler` can be an object of any class corresponding to - * `Fiber::SchedulerInterface`. Its implementation is up to the user. - * - * @param[in] scheduler The scheduler to set. - * @exception rb_eArgError `scheduler` does not conform the interface. - * @post Current thread's scheduler is `scheduler`. - */ -VALUE rb_fiber_scheduler_set(VALUE scheduler); - -/** - * Identical to rb_fiber_scheduler_get(), except it also returns ::RUBY_Qnil in - * case of a blocking fiber. As blocking fibers do not participate schedulers' - * scheduling this function can be handy. - * - * @retval RUBY_Qnil No scheduler is in effect. - * @retval otherwise The scheduler that is in effect, if any. - */ -VALUE rb_fiber_scheduler_current(void); - -/** - * Identical to rb_fiber_scheduler_current(), except it queries for that of the - * passed thread instead of the implicit current one. - * - * @param[in] thread Target thread. - * @exception rb_eTypeError `thread` is not a thread. - * @retval RUBY_Qnil No scheduler is in effect in `thread`. - * @retval otherwise The scheduler that is in effect in `thread`. - */ -VALUE rb_fiber_scheduler_current_for_thread(VALUE thread); - -/** - * Converts the passed timeout to an expression that rb_fiber_scheduler_block() - * etc. expects. - * - * @param[in] timeout A duration (can be `NULL`). - * @retval RUBY_Qnil No timeout (blocks indefinitely). - * @retval otherwise A timeout object. - */ -VALUE rb_fiber_scheduler_make_timeout(struct timeval *timeout); - -/** - * Closes the passed scheduler object. This expects the scheduler to wait for - * all fibers. Thus the scheduler's main loop tends to start here. - * - * @param[in] scheduler Target scheduler. - * @return What `scheduler.close` returns. - */ -VALUE rb_fiber_scheduler_close(VALUE scheduler); - -/** - * Nonblocking `sleep`. Depending on scheduler implementation, this for - * instance switches to another fiber etc. - * - * @param[in] scheduler Target scheduler. - * @param[in] duration Passed as-is to `scheduler.kernel_sleep`. - * @return What `scheduler.kernel_sleep` returns. - */ -VALUE rb_fiber_scheduler_kernel_sleep(VALUE scheduler, VALUE duration); - -/** - * Identical to rb_fiber_scheduler_kernel_sleep(), except it can pass multiple - * arguments. - * - * @param[in] scheduler Target scheduler. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed as-is to `scheduler.kernel_sleep` - * @return What `scheduler.kernel_sleep` returns. - */ -VALUE rb_fiber_scheduler_kernel_sleepv(VALUE scheduler, int argc, VALUE * argv); - -/* Description TBW */ -#if 0 -VALUE rb_fiber_scheduler_timeout_after(VALUE scheduler, VALUE timeout, VALUE exception, VALUE message); -VALUE rb_fiber_scheduler_timeout_afterv(VALUE scheduler, int argc, VALUE * argv); -int rb_fiber_scheduler_supports_process_wait(VALUE scheduler); -#endif - -/** - * Nonblocking `waitpid`. Depending on scheduler implementation, this for - * instance switches to another fiber etc. - * - * @param[in] scheduler Target scheduler. - * @param[in] pid Process ID to wait. - * @param[in] flags Wait flags, e.g. `WUNTRACED`. - * @return What `scheduler.process_wait` returns. - */ -VALUE rb_fiber_scheduler_process_wait(VALUE scheduler, rb_pid_t pid, int flags); - -/** - * Nonblocking wait for the passed "blocker", which is for instance - * `Thread.join` or `Mutex.lock`. Depending on scheduler implementation, this - * for instance switches to another fiber etc. - * - * @param[in] scheduler Target scheduler. - * @param[in] blocker What blocks the current fiber. - * @param[in] timeout Numeric timeout. - * @return What `scheduler.block` returns. - */ -VALUE rb_fiber_scheduler_block(VALUE scheduler, VALUE blocker, VALUE timeout); - -/** - * Wakes up a fiber previously blocked using rb_fiber_scheduler_block(). - * - * @param[in] scheduler Target scheduler. - * @param[in] blocker What was awaited for. - * @param[in] fiber What to unblock. - * @return What `scheduler.unblock` returns. - */ -VALUE rb_fiber_scheduler_unblock(VALUE scheduler, VALUE blocker, VALUE fiber); - -/** - * Nonblocking version of rb_io_wait(). Depending on scheduler implementation, - * this for instance switches to another fiber etc. - * - * The "events" here is a Ruby level integer, which is an OR-ed value of - * `IO::READABLE`, `IO::WRITABLE`, and `IO::PRIORITY`. - * - * @param[in] scheduler Target scheduler. - * @param[in] io An io object to wait. - * @param[in] events An integer set of interests. - * @param[in] timeout Numeric timeout. - * @return What `scheduler.io_wait` returns. - */ -VALUE rb_fiber_scheduler_io_wait(VALUE scheduler, VALUE io, VALUE events, VALUE timeout); - -/** - * Nonblocking wait until the passed IO is ready for reading. This is a - * special case of rb_fiber_scheduler_io_wait(), where the interest is - * `IO::READABLE` and timeout is never. - * - * @param[in] scheduler Target scheduler. - * @param[in] io An io object to wait. - * @return What `scheduler.io_wait` returns. - */ -VALUE rb_fiber_scheduler_io_wait_readable(VALUE scheduler, VALUE io); - -/** - * Nonblocking wait until the passed IO is ready for writing. This is a - * special case of rb_fiber_scheduler_io_wait(), where the interest is - * `IO::WRITABLE` and timeout is never. - * - * @param[in] scheduler Target scheduler. - * @param[in] io An io object to wait. - * @return What `scheduler.io_wait` returns. - */ -VALUE rb_fiber_scheduler_io_wait_writable(VALUE scheduler, VALUE io); - -/** - * Nonblocking read from the passed IO. - * - * @param[in] scheduler Target scheduler. - * @param[out] io An io object to read from. - * @param[out] buffer Return buffer. - * @param[in] length Requested number of bytes to read. - * @retval RUBY_Qundef `scheduler` doesn't have `#io_read`. - * @return otherwise What `scheduler.io_read` returns `[-errno, size]`. - */ -VALUE rb_fiber_scheduler_io_read(VALUE scheduler, VALUE io, VALUE buffer, size_t length); - -/** - * Nonblocking write to the passed IO. - * - * @param[in] scheduler Target scheduler. - * @param[out] io An io object to write to. - * @param[in] buffer What to write. - * @param[in] length Number of bytes to write. - * @retval RUBY_Qundef `scheduler` doesn't have `#io_write`. - * @return otherwise What `scheduler.io_write` returns `[-errno, size]`. - */ -VALUE rb_fiber_scheduler_io_write(VALUE scheduler, VALUE io, VALUE buffer, size_t length); - -/** - * Nonblocking read from the passed IO at the specified offset. - * - * @param[in] scheduler Target scheduler. - * @param[out] io An io object to read from. - * @param[out] buffer Return buffer. - * @param[in] length Requested number of bytes to read. - * @param[in] offset The offset in the given IO to read the data from. - * @retval RUBY_Qundef `scheduler` doesn't have `#io_read`. - * @return otherwise What `scheduler.io_read` returns. - */ -VALUE rb_fiber_scheduler_io_pread(VALUE scheduler, VALUE io, VALUE buffer, size_t length, off_t offset); - -/** - * Nonblocking write to the passed IO at the specified offset. - * - * @param[in] scheduler Target scheduler. - * @param[out] io An io object to write to. - * @param[in] buffer What to write. - * @param[in] length Number of bytes to write. - * @param[in] offset The offset in the given IO to write the data to. - * @retval RUBY_Qundef `scheduler` doesn't have `#io_write`. - * @return otherwise What `scheduler.io_write` returns. - */ -VALUE rb_fiber_scheduler_io_pwrite(VALUE scheduler, VALUE io, VALUE buffer, size_t length, off_t offset); - -/** - * Nonblocking read from the passed IO using a native buffer. - * - * @param[in] scheduler Target scheduler. - * @param[out] io An io object to read from. - * @param[out] buffer Return buffer. - * @param[in] length Requested number of bytes to read. - * @retval RUBY_Qundef `scheduler` doesn't have `#io_read`. - * @return otherwise What `scheduler.io_read` returns. - */ -VALUE rb_fiber_scheduler_io_read_memory(VALUE scheduler, VALUE io, void *buffer, size_t size, size_t length); - -/** - * Nonblocking write to the passed IO using a native buffer. - * - * @param[in] scheduler Target scheduler. - * @param[out] io An io object to write to. - * @param[in] buffer What to write. - * @param[in] length Number of bytes to write. - * @retval RUBY_Qundef `scheduler` doesn't have `#io_write`. - * @return otherwise What `scheduler.io_write` returns. - */ -VALUE rb_fiber_scheduler_io_write_memory(VALUE scheduler, VALUE io, const void *buffer, size_t size, size_t length); - -/** - * Nonblocking close the given IO. - * - * @param[in] scheduler Target scheduler. - * @param[in] io An io object to close. - * @retval RUBY_Qundef `scheduler` doesn't have `#io_close`. - * @return otherwise What `scheduler.io_close` returns. - */ -VALUE rb_fiber_scheduler_io_close(VALUE scheduler, VALUE io); - -/** - * Nonblocking DNS lookup. - * - * @param[in] scheduler Target scheduler. - * @param[in] hostname A host name to query. - * @retval RUBY_Qundef `scheduler` doesn't have `#address_resolve`. - * @return otherwise What `scheduler.address_resolve` returns. - */ -VALUE rb_fiber_scheduler_address_resolve(VALUE scheduler, VALUE hostname); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_FIBER_SCHEDULER_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/intern.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/intern.h deleted file mode 100644 index 2480e2e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/intern.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef RUBY_INTERN_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERN_H 1 -/** - * @file - * @author $Author$ - * @date Thu Jun 10 14:22:17 JST 1993 - * @copyright Copyright (C) 1993-2007 Yukihiro Matsumoto - * @copyright Copyright (C) 2000 Network Applied Communication Laboratory, Inc. - * @copyright Copyright (C) 2000 Information-technology Promotion Agency, Japan - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "ruby/internal/config.h" -#include "ruby/defines.h" - -#include - -#include "ruby/st.h" - -/* - * Functions and variables that are used by more than one source file of - * the kernel. - */ - -#include "ruby/internal/intern/array.h" -#include "ruby/internal/intern/bignum.h" -#include "ruby/internal/intern/class.h" -#include "ruby/internal/intern/compar.h" -#include "ruby/internal/intern/complex.h" -#include "ruby/internal/intern/cont.h" -#include "ruby/internal/intern/dir.h" -#include "ruby/internal/intern/enum.h" -#include "ruby/internal/intern/enumerator.h" -#include "ruby/internal/intern/error.h" -#include "ruby/internal/intern/eval.h" -#include "ruby/internal/intern/file.h" -#include "ruby/internal/intern/gc.h" -#include "ruby/internal/intern/hash.h" -#include "ruby/internal/intern/io.h" -#include "ruby/internal/intern/load.h" -#include "ruby/internal/intern/marshal.h" -#include "ruby/internal/intern/numeric.h" -#include "ruby/internal/intern/object.h" -#include "ruby/internal/intern/parse.h" -#include "ruby/internal/intern/proc.h" -#include "ruby/internal/intern/process.h" -#include "ruby/internal/intern/random.h" -#include "ruby/internal/intern/range.h" -#include "ruby/internal/intern/rational.h" -#include "ruby/internal/intern/re.h" -#include "ruby/internal/intern/ruby.h" -#include "ruby/internal/intern/select.h" -#include "ruby/internal/intern/signal.h" -#include "ruby/internal/intern/sprintf.h" -#include "ruby/internal/intern/string.h" -#include "ruby/internal/intern/struct.h" -#include "ruby/internal/intern/thread.h" -#include "ruby/internal/intern/time.h" -#include "ruby/internal/intern/variable.h" -#include "ruby/internal/intern/vm.h" - -#endif /* RUBY_INTERN_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/anyargs.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/anyargs.h deleted file mode 100644 index 9d8d16f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/anyargs.h +++ /dev/null @@ -1,375 +0,0 @@ -#ifndef RBIMPL_ANYARGS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ANYARGS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Function overloads to issue warnings around #ANYARGS. - * - * For instance ::rb_define_method takes a pointer to #ANYARGS -ed functions, - * which in fact varies 18 different prototypes. We still need to preserve - * #ANYARGS for storages but why not check the consistencies if possible. With - * those complex macro overlays defined in this header file, use of a function - * pointer gets checked against the corresponding arity argument. - * - * ### Q&A ### - * - * - Q: Where did the magic number "18" came from in the description above? - * - * - A: Count the case branch of `vm_method.c:call_cfunc_invoker_func()`. Note - * also that the 18 branches has lasted for at least 25 years. See also - * commit 200e0ee2fd3c1c006c528874a88f684447215524. - * - * - Q: What is this `__weakref__` thing? - * - * - A: That is a kind of function overloading mechanism that GCC provides. In - * this case for instance `rb_define_method_00` is an alias of - * ::rb_define_method, with a strong type. - * - * - Q: What is this `__transparent_union__` thing? - * - * A: That is another kind of function overloading mechanism that GCC - * provides. In this case the attributed function pointer is either - * `VALUE(*)(int,VALUE*,VALUE)` or `VALUE(*)(int,const VALUE*,VALUE)`. - * - * This is better than `void*` or #ANYARGS because we can reject all other - * possibilities than the two. - * - * - Q: What does this #rb_define_method macro mean? - * - * - A: It selects appropriate alias of the ::rb_define_method function, - * depending on the last (arity) argument. - * - * - Q: Why the special case for ::rb_f_notimplement ? - * - * - A: Function pointer to ::rb_f_notimplement is special cased in - * `vm_method.c:rb_add_method_cfunc()`. That should be handled by the - * `__builtin_choose_expr` chain inside of #rb_define_method macro - * expansion. In order to do so, comparison like - * `(func == rb_f_notimplement)` is inappropriate for - * `__builtin_choose_expr`'s expression (which must be a compile-time - * integer constant but the address of ::rb_f_notimplement is not fixed - * until the linker). Instead we are using - * `__builtin_types_compatible_p`, and in doing so we need to distinguish - * ::rb_f_notimplement from others, by type. - */ -#include "ruby/internal/attr/maybe_unused.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/weakref.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/config.h" -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/intern/class.h" -#include "ruby/internal/intern/vm.h" -#include "ruby/internal/method.h" -#include "ruby/internal/value.h" -#include "ruby/backward/2/stdarg.h" - -#if defined(__cplusplus) -# include "ruby/backward/cxxanyargs.hpp" - -#elif defined(_WIN32) || defined(__CYGWIN__) -# /* Skip due to [Bug #16134] */ - -#elif ! RBIMPL_HAS_ATTRIBUTE(transparent_union) -# /* :TODO: improve here, please find a way to support. */ - -#elif ! defined(HAVE_VA_ARGS_MACRO) -# /* :TODO: improve here, please find a way to support. */ - -#else -# /** @cond INTERNAL_MACRO */ -# if ! defined(HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P) -# define RBIMPL_CFUNC_IS_rb_f_notimplement(f) 0 -# else -# define RBIMPL_CFUNC_IS_rb_f_notimplement(f) \ - __builtin_types_compatible_p( \ - __typeof__(f), \ - __typeof__(rb_f_notimplement)) -# endif - -# if ! defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P) -# define RBIMPL_ANYARGS_DISPATCH(expr, truthy, falsy) (falsy) -# else -# define RBIMPL_ANYARGS_DISPATCH(expr, truthy, falsy) \ - __builtin_choose_expr( \ - __builtin_choose_expr( \ - __builtin_constant_p(expr), \ - (expr), 0), \ - (truthy), (falsy)) -# endif - -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_singleton_method_m2, rb_define_singleton_method_m3) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_singleton_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_singleton_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_singleton_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_singleton_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_singleton_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_singleton_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_singleton_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_singleton_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_singleton_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_singleton_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_singleton_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_singleton_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_singleton_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_singleton_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_singleton_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_singleton_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_singleton_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_protected_method_m2, rb_define_protected_method_m3) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_protected_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_protected_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_protected_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_protected_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_protected_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_protected_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_protected_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_protected_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_protected_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_protected_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_protected_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_protected_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_protected_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_protected_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_protected_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_protected_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_protected_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_private_method_m2, rb_define_private_method_m3) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_private_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_private_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_private_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_private_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_private_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_private_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_private_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_private_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_private_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_private_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_private_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_private_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_private_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_private_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_private_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_private_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_private_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_module_function_m2, rb_define_module_function_m3) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_module_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_module_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_module_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_module_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_module_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_module_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_module_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_module_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_module_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_module_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_module_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_module_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_module_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_module_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_module_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_module_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_module_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_global_function_m2, rb_define_global_function_m3) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_global_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_global_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_global_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_global_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_global_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_global_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_global_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_global_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_global_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_global_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_global_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_global_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_global_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_global_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_global_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_global_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_global_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_id_m2, rb_define_method_id_m3) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_id_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_id_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_id_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_id_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_id_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_id_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_id_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_id_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_id_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_id_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_id_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_id_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_id_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_id_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_id_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_id_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_id_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_m2, rb_define_method_m3) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method(n, f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_singleton_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method(n, f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_protected_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method(n, f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_private_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function(n, f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_module_function_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function(n, f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_global_function_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id(n, f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_id_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n)) -# define RBIMPL_ANYARGS_DISPATCH_rb_define_method(n, f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n)) -# define RBIMPL_ANYARGS_ATTRSET(sym) RBIMPL_ATTR_MAYBE_UNUSED() RBIMPL_ATTR_NONNULL(()) RBIMPL_ATTR_WEAKREF(sym) -# define RBIMPL_ANYARGS_DECL(sym, ...) \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m3(__VA_ARGS__, VALUE(*)(ANYARGS), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m2(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m1(__VA_ARGS__, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _00(__VA_ARGS__, VALUE(*)(VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _01(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _02(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _03(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _04(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _05(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _06(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _07(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _08(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _09(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _10(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _11(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _12(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _13(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _14(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); \ -RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _15(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); -RBIMPL_ANYARGS_DECL(rb_define_singleton_method, VALUE, const char *) -RBIMPL_ANYARGS_DECL(rb_define_protected_method, VALUE, const char *) -RBIMPL_ANYARGS_DECL(rb_define_private_method, VALUE, const char *) -RBIMPL_ANYARGS_DECL(rb_define_module_function, VALUE, const char *) -RBIMPL_ANYARGS_DECL(rb_define_global_function, const char *) -RBIMPL_ANYARGS_DECL(rb_define_method_id, VALUE, ID) -RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *) -/** @endcond */ - -/** - * @brief Defines klass\#mid. - * @see ::rb_define_method - * @param klass Where the method lives. - * @param mid Name of the defining method. - * @param func Implementation of klass\#mid. - * @param arity Arity of klass\#mid. - */ -#define rb_define_method(klass, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid), (func), (arity)) - -/** - * @brief Defines klass\#mid. - * @see ::rb_define_method_id - * @param klass Where the method lives. - * @param mid Name of the defining method. - * @param func Implementation of klass\#mid. - * @param arity Arity of klass\#mid. - */ -#define rb_define_method_id(klass, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method_id((arity), (func))((klass), (mid), (func), (arity)) - -/** - * @brief Defines obj.mid. - * @see ::rb_define_singleton_method - * @param obj Where the method lives. - * @param mid Name of the defining method. - * @param func Implementation of obj.mid. - * @param arity Arity of obj.mid. - */ -#define rb_define_singleton_method(obj, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method((arity), (func))((obj), (mid), (func), (arity)) - -/** - * @brief Defines klass\#mid and make it protected. - * @see ::rb_define_protected_method - * @param klass Where the method lives. - * @param mid Name of the defining method. - * @param func Implementation of klass\#mid. - * @param arity Arity of klass\#mid. - */ -#define rb_define_protected_method(klass, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method((arity), (func))((klass), (mid), (func), (arity)) - -/** - * @brief Defines klass\#mid and make it private. - * @see ::rb_define_private_method - * @param klass Where the method lives. - * @param mid Name of the defining method. - * @param func Implementation of klass\#mid. - * @param arity Arity of klass\#mid. - */ -#define rb_define_private_method(klass, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_private_method((arity), (func))((klass), (mid), (func), (arity)) - -/** - * @brief Defines mod\#mid and make it a module function. - * @see ::rb_define_module_function - * @param mod Where the method lives. - * @param mid Name of the defining method. - * @param func Implementation of mod\#mid. - * @param arity Arity of mod\#mid. - */ -#define rb_define_module_function(mod, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_module_function((arity), (func))((mod), (mid), (func), (arity)) - -/** - * @brief Defines ::rb_mKerbel \#mid. - * @see ::rb_define_global_function - * @param mid Name of the defining method. - * @param func Implementation of ::rb_mKernel \#mid. - * @param arity Arity of ::rb_mKernel \#mid. - */ -#define rb_define_global_function(mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_global_function((arity), (func))((mid), (func), (arity)) - -#endif /* __cplusplus */ - -/** - * This macro is to properly cast a function parameter of *_define_method - * family. It has been around since 1.x era so you can maximise backwards - * compatibility by using it. - * - * ```CXX - * rb_define_method(klass, "method", RUBY_METHOD_FUNC(func), arity); - * ``` - * - * @param func A pointer to a function that implements a method. - */ -#if ! defined(RUBY_DEVEL) -# define RUBY_METHOD_FUNC(func) RBIMPL_CAST((VALUE (*)(ANYARGS))(func)) - -#elif ! RUBY_DEVEL -# define RUBY_METHOD_FUNC(func) RBIMPL_CAST((VALUE (*)(ANYARGS))(func)) - -#elif ! defined(rb_define_method) -# define RUBY_METHOD_FUNC(func) RBIMPL_CAST((VALUE (*)(ANYARGS))(func)) - -#else -# define RUBY_METHOD_FUNC(func) (func) - -#endif - -#endif /* RBIMPL_ANYARGS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic.h deleted file mode 100644 index 3f7840c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Conversion between C's arithmtic types and Ruby's numeric types. - */ -#include "ruby/internal/arithmetic/char.h" -#include "ruby/internal/arithmetic/double.h" -#include "ruby/internal/arithmetic/fixnum.h" -#include "ruby/internal/arithmetic/gid_t.h" -#include "ruby/internal/arithmetic/int.h" -#include "ruby/internal/arithmetic/intptr_t.h" -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/arithmetic/long_long.h" -#include "ruby/internal/arithmetic/mode_t.h" -#include "ruby/internal/arithmetic/off_t.h" -#include "ruby/internal/arithmetic/pid_t.h" -#include "ruby/internal/arithmetic/short.h" -#include "ruby/internal/arithmetic/size_t.h" -#include "ruby/internal/arithmetic/st_data_t.h" -#include "ruby/internal/arithmetic/uid_t.h" -#endif /* RBIMPL_ARITHMETIC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/char.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/char.h deleted file mode 100644 index 920fdc0..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/char.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_CHAR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_CHAR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `char` and Ruby's. - */ -#include "ruby/internal/arithmetic/int.h" /* NUM2INT is here, but */ -#include "ruby/internal/arithmetic/long.h" /* INT2FIX is here.*/ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rstring.h" -#include "ruby/internal/value_type.h" - -#define RB_NUM2CHR rb_num2char_inline /**< @alias{rb_num2char_inline} */ -#define NUM2CHR RB_NUM2CHR /**< @old{RB_NUM2CHR} */ -#define CHR2FIX RB_CHR2FIX /**< @old{RB_CHR2FIX} */ - -/** @cond INTERNAL_MACRO */ -#define RB_CHR2FIX RB_CHR2FIX -/** @endcond */ - -RBIMPL_ATTR_CONST_UNLESS_DEBUG() -RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Converts a C's `unsigned char` into an instance of ::rb_cInteger. - * - * @param[in] c Arbitrary `unsigned char` value. - * @return An instance of ::rb_cInteger. - * - * @internal - * - * Nobody explicitly states this but in Ruby, a char means an unsigned integer - * value of range 0..255. This is a general principle. AFAIK there is no - * single line of code where char is signed. - */ -static inline VALUE -RB_CHR2FIX(unsigned char c) -{ - return RB_INT2FIX(c); -} - -/** - * Converts an instance of ::rb_cNumeric into C's `char`. At the same time it - * accepts a String of more than one character, and returns its first byte. In - * the early days there was a Ruby level "character" literal `?c`, which - * roughly worked this way. - * - * @param[in] x Either a string or a numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `unsigned int`. - * @return The passed value converted into C's `char`. - */ -static inline char -rb_num2char_inline(VALUE x) -{ - if (RB_TYPE_P(x, RUBY_T_STRING) && (RSTRING_LEN(x)>=1)) - return RSTRING_PTR(x)[0]; - else - return RBIMPL_CAST((char)RB_NUM2INT(x)); -} - -#endif /* RBIMPL_ARITHMETIC_CHAR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/double.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/double.h deleted file mode 100644 index 229de47..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/double.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_DOUBLE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_DOUBLE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `double` and Ruby's. - */ -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -#define NUM2DBL rb_num2dbl /**< @old{rb_num2dbl} */ -#define RFLOAT_VALUE rb_float_value /**< @old{rb_float_value} */ -#define DBL2NUM rb_float_new /**< @old{rb_float_new} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * Converts an instance of ::rb_cNumeric into C's `double`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @return The passed value converted into C's `double`. - */ -double rb_num2dbl(VALUE num); - -RBIMPL_ATTR_PURE() -/** - * Extracts its double value from an instance of ::rb_cFloat. - * - * @param[in] num An instance of ::rb_cFloat. - * @pre Must not pass anything other than a Fixnum. - * @return The passed value converted into C's `double`. - */ -double rb_float_value(VALUE num); - -/** - * Converts a C's `double` into an instance of ::rb_cFloat. - * - * @param[in] d Arbitrary `double` value. - * @return An instance of ::rb_cFloat. - */ -VALUE rb_float_new(double d); - -/** - * Identical to rb_float_new(), except it does not generate Flonums. - * - * @param[in] d Arbitrary `double` value. - * @return An instance of ::rb_cFloat. - * - * @internal - * - * @shyouhei has no idea why it is here. - */ -VALUE rb_float_new_in_heap(double d); -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_ARITHMETIC_DOUBLE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/fixnum.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/fixnum.h deleted file mode 100644 index c8927ac..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/fixnum.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_FIXNUM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_FIXNUM_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Handling of integers formerly known as Fixnums. - */ -#include "ruby/backward/2/limits.h" - -#define FIXABLE RB_FIXABLE /**< @old{RB_FIXABLE} */ -#define FIXNUM_MAX RUBY_FIXNUM_MAX /**< @old{RUBY_FIXNUM_MAX} */ -#define FIXNUM_MIN RUBY_FIXNUM_MIN /**< @old{RUBY_FIXNUM_MIN} */ -#define NEGFIXABLE RB_NEGFIXABLE /**< @old{RB_NEGFIXABLE} */ -#define POSFIXABLE RB_POSFIXABLE /**< @old{RB_POSFIXABLE} */ - -/** - * Checks if the passed value is in range of fixnum, assuming it is a positive - * number. Can sometimes be useful for C's unsigned integer types. - * - * @internal - * - * FIXABLE can be applied to anything, from double to intmax_t. The problem is - * double. On a 64bit system RUBY_FIXNUM_MAX is 4,611,686,018,427,387,903, - * which is not representable by a double. The nearest value that a double can - * represent is 4,611,686,018,427,387,904, which is not fixable. The - * seemingly-strange "< FIXNUM_MAX + 1" expression below is due to this. - */ -#define RB_POSFIXABLE(_) ((_) < RUBY_FIXNUM_MAX + 1) - -/** - * Checks if the passed value is in range of fixnum, assuming it is a negative - * number. This is an implementation of #RB_FIXABLE. Rarely used stand alone. - */ -#define RB_NEGFIXABLE(_) ((_) >= RUBY_FIXNUM_MIN) - -/** Checks if the passed value is in range of fixnum */ -#define RB_FIXABLE(_) (RB_POSFIXABLE(_) && RB_NEGFIXABLE(_)) - -/** Maximum possible value that a fixnum can represent. */ -#define RUBY_FIXNUM_MAX (LONG_MAX / 2) - -/** Minimum possible value that a fixnum can represent. */ -#define RUBY_FIXNUM_MIN (LONG_MIN / 2) - -#endif /* RBIMPL_ARITHMETIC_FIXNUM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/gid_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/gid_t.h deleted file mode 100644 index 361220b..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/gid_t.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_GID_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_GID_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `gid_t` and Ruby's. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/long.h" - -/** Converts a C's `gid_t` into an instance of ::rb_cInteger. */ -#ifndef GIDT2NUM -# define GIDT2NUM RB_LONG2NUM -#endif - -/** Converts an instance of ::rb_cNumeric into C's `gid_t`. */ -#ifndef NUM2GIDT -# define NUM2GIDT RB_NUM2LONG -#endif - -/** A rb_sprintf() format prefix to be used for a `gid_t` parameter. */ -#ifndef PRI_GIDT_PREFIX -# define PRI_GIDT_PREFIX PRI_LONG_PREFIX -#endif - -#endif /* RBIMPL_ARITHMETIC_GID_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/int.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/int.h deleted file mode 100644 index 6bd8ec2..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/int.h +++ /dev/null @@ -1,264 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_INT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_INT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `int` and Ruby's. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/fixnum.h" -#include "ruby/internal/arithmetic/intptr_t.h" -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/compiler_is.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/value.h" -#include "ruby/internal/warning_push.h" -#include "ruby/assert.h" - -#define RB_INT2NUM rb_int2num_inline /**< @alias{rb_int2num_inline} */ -#define RB_NUM2INT rb_num2int_inline /**< @alias{rb_num2int_inline} */ -#define RB_UINT2NUM rb_uint2num_inline /**< @alias{rb_uint2num_inline} */ - -#define FIX2INT RB_FIX2INT /**< @old{RB_FIX2INT} */ -#define FIX2UINT RB_FIX2UINT /**< @old{RB_FIX2UINT} */ -#define INT2NUM RB_INT2NUM /**< @old{RB_INT2NUM} */ -#define NUM2INT RB_NUM2INT /**< @old{RB_NUM2INT} */ -#define NUM2UINT RB_NUM2UINT /**< @old{RB_NUM2UINT} */ -#define UINT2NUM RB_UINT2NUM /**< @old{RB_UINT2NUM} */ - -/** @cond INTERNAL_MACRO */ -#define RB_FIX2INT RB_FIX2INT -#define RB_NUM2UINT RB_NUM2UINT -#define RB_FIX2UINT RB_FIX2UINT -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Converts an instance of ::rb_cNumeric into C's `long`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `int`. - * @return The passed value converted into C's `long`. - * - * @internal - * - * Yes, the API is really strange. It returns `long`, but raises when the - * value is out of `int`. This seems to be due to the fact that Matz favoured - * K&R before, and his machine at that moment was an ILP32 architecture. - */ -long rb_num2int(VALUE num); - -/** - * Identical to rb_num2int(). - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `int`. - * @return The passed value converted into C's `long`. - * - * @internal - * - * This function seems to be a complete waste of disk space. @shyouhei has no - * idea why this is a different thing from rb_num2short(). - */ -long rb_fix2int(VALUE num); - -/** - * Converts an instance of ::rb_cNumeric into C's `unsigned long`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `unsigned int`. - * @return The passed value converted into C's `unsigned long`. - * - * @internal - * - * Yes, the API is really strange. It returns `unsigned long`, but raises when - * the value is out of `unsigned int`. This seems to be due to the fact that - * Matz favoured K&R before, and his machine at that moment was an ILP32 - * architecture. - */ -unsigned long rb_num2uint(VALUE num); - -/** - * Identical to rb_num2uint(). - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `unsigned int`. - * @return The passed value converted into C's `unsigned long`. - * - * @internal - * - * This function seems to be a complete waste of disk space. @shyouhei has no - * idea why this is a different thing from rb_num2short(). - */ -unsigned long rb_fix2uint(VALUE num); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Converts a Fixnum into C's `int`. - * - * @param[in] x Some Fixnum. - * @pre Must not pass anything other than a Fixnum. - * @return The passed value converted into C's `int`. - */ -static inline int -RB_FIX2INT(VALUE x) -{ - /* "FIX2INT raises a TypeError if passed nil", says rubyspec. Not sure if - * that is a desired behaviour but just preserve backwards compatilibily. - */ -#if 0 - RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); -#endif - long ret; - - if /* constexpr */ (sizeof(int) < sizeof(long)) { - ret = rb_fix2int(x); - } - else { - ret = RB_FIX2LONG(x); - } - - return RBIMPL_CAST((int)ret); -} - -/** - * Converts an instance of ::rb_cNumeric into C's `int`. - * - * @param[in] x Something numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `int`. - * @return The passed value converted into C's `int`. - */ -static inline int -rb_num2int_inline(VALUE x) -{ - long ret; - - if /* constexpr */ (sizeof(int) == sizeof(long)) { - ret = RB_NUM2LONG(x); - } - else if (RB_FIXNUM_P(x)) { - ret = rb_fix2int(x); - } - else { - ret = rb_num2int(x); - } - - return RBIMPL_CAST((int)ret); -} - -/** - * Converts an instance of ::rb_cNumeric into C's `unsigned int`. - * - * @param[in] x Something numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `unsigned int`. - * @return The passed value converted into C's `unsigned int`. - */ -RBIMPL_ATTR_ARTIFICIAL() -static inline unsigned int -RB_NUM2UINT(VALUE x) -{ - unsigned long ret; - - if /* constexpr */ (sizeof(int) < sizeof(long)) { - ret = rb_num2uint(x); - } - else { - ret = RB_NUM2ULONG(x); - } - - return RBIMPL_CAST((unsigned int)ret); -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Converts a Fixnum into C's `int`. - * - * @param[in] x Some Fixnum. - * @pre Must not pass anything other than a Fixnum. - * @return The passed value converted into C's `int`. - */ -static inline unsigned int -RB_FIX2UINT(VALUE x) -{ -#if 0 /* Ditto for RB_FIX2INT. */ - RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); -#endif - unsigned long ret; - - if /* constexpr */ (sizeof(int) < sizeof(long)) { - ret = rb_fix2uint(x); - } - else { - ret = RB_FIX2ULONG(x); - } - - return RBIMPL_CAST((unsigned int)ret); -} - -RBIMPL_WARNING_PUSH() -#if RBIMPL_COMPILER_IS(GCC) -RBIMPL_WARNING_IGNORED(-Wtype-limits) /* We can ignore them here. */ -#elif RBIMPL_HAS_WARNING("-Wtautological-constant-out-of-range-compare") -RBIMPL_WARNING_IGNORED(-Wtautological-constant-out-of-range-compare) -#endif - -/** - * Converts a C's `int` into an instance of ::rb_cInteger. - * - * @param[in] v Arbitrary `int` value. - * @return An instance of ::rb_cInteger. - */ -static inline VALUE -rb_int2num_inline(int v) -{ - if (RB_FIXABLE(v)) - return RB_INT2FIX(v); - else - return rb_int2big(v); -} - -/** - * Converts a C's `unsigned int` into an instance of ::rb_cInteger. - * - * @param[in] v Arbitrary `unsigned int` value. - * @return An instance of ::rb_cInteger. - */ -static inline VALUE -rb_uint2num_inline(unsigned int v) -{ - if (RB_POSFIXABLE(v)) - return RB_LONG2FIX(v); - else - return rb_uint2big(v); -} - -RBIMPL_WARNING_POP() - -#endif /* RBIMPL_ARITHMETIC_INT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/intptr_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/intptr_t.h deleted file mode 100644 index a354f44..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/intptr_t.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_INTPTR_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_INTPTR_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `intptr_t` and Ruby's. - */ -#include "ruby/internal/config.h" - -#ifdef HAVE_STDINT_H -# include -#endif - -#include "ruby/internal/value.h" -#include "ruby/internal/dllexport.h" - -#define rb_int_new rb_int2inum /**< @alias{rb_int2inum} */ -#define rb_uint_new rb_uint2inum /**< @alias{rb_uint2inum} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Converts a C's `intptr_t` into an instance of ::rb_cInteger. - * - * @param[in] i Arbitrary `intptr_t` value. - * @return An instance of ::rb_cInteger. - * @note This function always allocates Bignums, even if the given number - * is small enough to fit into a Fixnum. - */ -VALUE rb_int2big(intptr_t i); - -/** - * Converts a C's `intptr_t` into an instance of ::rb_cInteger. - * - * @param[in] i Arbitrary `intptr_t` value. - * @return An instance of ::rb_cInteger. - */ -VALUE rb_int2inum(intptr_t i); - -/** - * Converts a C's `intptr_t` into an instance of ::rb_cInteger. - * - * @param[in] i Arbitrary `intptr_t` value. - * @return An instance of ::rb_cInteger. - * @note This function always allocates Bignums, even if the given number - * is small enough to fit into a Fixnum. - */ -VALUE rb_uint2big(uintptr_t i); - -/** - * Converts a C's `uintptr_t` into an instance of ::rb_cInteger. - * - * @param[in] i Arbitrary `uintptr_t` value. - * @return An instance of ::rb_cInteger. - */ -VALUE rb_uint2inum(uintptr_t i); -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_ARITHMETIC_INTPTR_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long.h deleted file mode 100644 index 792f7be..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long.h +++ /dev/null @@ -1,356 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_LONG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_LONG_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `long` and Ruby's. - * - * ### Q&A ### - * - * - Q: Why are INT2FIX etc. here, not in `int.h`? - * - * - A: Because they are in fact handling `long`. It seems someone did not - * understand the difference of `int` and `long` when they designed those - * macros. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/fixnum.h" /* FIXABLE */ -#include "ruby/internal/arithmetic/intptr_t.h" /* rb_int2big etc.*/ -#include "ruby/internal/assume.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/special_consts.h" /* FIXNUM_FLAG */ -#include "ruby/internal/value.h" -#include "ruby/assert.h" - -#define FIX2LONG RB_FIX2LONG /**< @old{RB_FIX2LONG} */ -#define FIX2ULONG RB_FIX2ULONG /**< @old{RB_FIX2ULONG} */ -#define INT2FIX RB_INT2FIX /**< @old{RB_INT2FIX} */ -#define LONG2FIX RB_INT2FIX /**< @old{RB_INT2FIX} */ -#define LONG2NUM RB_LONG2NUM /**< @old{RB_LONG2NUM} */ -#define NUM2LONG RB_NUM2LONG /**< @old{RB_NUM2LONG} */ -#define NUM2ULONG RB_NUM2ULONG /**< @old{RB_NUM2ULONG} */ -#define RB_FIX2LONG rb_fix2long /**< @alias{rb_fix2long} */ -#define RB_FIX2ULONG rb_fix2ulong /**< @alias{rb_fix2ulong} */ -#define RB_LONG2FIX RB_INT2FIX /**< @alias{RB_INT2FIX} */ -#define RB_LONG2NUM rb_long2num_inline /**< @alias{rb_long2num_inline} */ -#define RB_NUM2LONG rb_num2long_inline /**< @alias{rb_num2long_inline} */ -#define RB_NUM2ULONG rb_num2ulong_inline /**< @alias{rb_num2ulong_inline} */ -#define RB_ULONG2NUM rb_ulong2num_inline /**< @alias{rb_ulong2num_inline} */ -#define ULONG2NUM RB_ULONG2NUM /**< @old{RB_ULONG2NUM} */ -#define rb_fix_new RB_INT2FIX /**< @alias{RB_INT2FIX} */ -#define rb_long2int rb_long2int_inline /**< @alias{rb_long2int_inline} */ - -/** @cond INTERNAL_MACRO */ -#define RB_INT2FIX RB_INT2FIX -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_COLD() -/** - * This is an utility function to raise an ::rb_eRangeError. - * - * @param[in] num A signed value about to overflow. - * @exception rb_eRangeError `num` is out of range of `int`. - */ -void rb_out_of_int(SIGNED_VALUE num); - -/** - * Converts an instance of ::rb_cNumeric into C's `long`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `long`. - * @return The passed value converted into C's `long`. - */ -long rb_num2long(VALUE num); - -/** - * Converts an instance of ::rb_cNumeric into C's `unsigned long`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `unsigned long`. - * @return The passed value converted into C's `unsigned long`. - */ -unsigned long rb_num2ulong(VALUE num); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_CONST_UNLESS_DEBUG() -RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Converts a C's `long` into an instance of ::rb_cInteger. - * - * @param[in] i Arbitrary `long` value. - * @return An instance of ::rb_cInteger. - */ -static inline VALUE -RB_INT2FIX(long i) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(i)); - - /* :NOTE: VALUE can be wider than long. As j being unsigned, 2j+1 is fully - * defined. Also it can be compiled into a single LEA instruction. */ - const unsigned long j = i; - const unsigned long k = 2 * j + RUBY_FIXNUM_FLAG; - const long l = k; - const SIGNED_VALUE m = l; /* Sign extend */ - const VALUE n = m; - - RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(n)); - return n; -} - -/** - * Checks if `int` can hold the given integer. - * - * @param[in] n Arbitrary `long` value. - * @exception rb_eRangeError `n` is out of range of `int`. - * @return Identical value of type `int` - */ -static inline int -rb_long2int_inline(long n) -{ - int i = RBIMPL_CAST((int)n); - - if /* constexpr */ (sizeof(long) <= sizeof(int)) { - RBIMPL_ASSUME(i == n); - } - - if (i != n) - rb_out_of_int(n); - - return i; -} - -RBIMPL_ATTR_CONST_UNLESS_DEBUG() -RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) -/** - * @private - * - * This is an implementation detail of rb_fix2long(). People don't use it - * directly. - * - * @param[in] x A Fixnum. - * @return Identical value of type `long` - * @pre Must not pass anything other than a Fixnum. - */ -static inline long -rbimpl_fix2long_by_idiv(VALUE x) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); - - /* :NOTE: VALUE can be wider than long. (x-1)/2 never overflows because - * RB_FIXNUM_P(x) holds. Also it has no portability issue like y>>1 - * below. */ - const SIGNED_VALUE y = x - RUBY_FIXNUM_FLAG; - const SIGNED_VALUE z = y / 2; - const long w = RBIMPL_CAST((long)z); - - RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(w)); - return w; -} - -RBIMPL_ATTR_CONST_UNLESS_DEBUG() -RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) -/** - * @private - * - * This is an implementation detail of rb_fix2long(). People don't use it - * directly. - * - * @param[in] x A Fixnum. - * @return Identical value of type `long` - * @pre Must not pass anything other than a Fixnum. - */ -static inline long -rbimpl_fix2long_by_shift(VALUE x) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); - - /* :NOTE: VALUE can be wider than long. If right shift is arithmetic, this - * is noticeably faster than above. */ - const SIGNED_VALUE y = x; - const SIGNED_VALUE z = y >> 1; - const long w = RBIMPL_CAST((long)z); - - RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(w)); - return w; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -/** - * @private - * - * This is an implementation detail of rb_fix2long(). People don't use it - * directly. - * - * @retval true This C compiler's right shift operator is arithmetic. - * @retval false This C compiler's right shift operator is logical. - */ -static inline bool -rbimpl_right_shift_is_arithmetic_p(void) -{ - return (-1 >> 1) == -1; -} - -RBIMPL_ATTR_CONST_UNLESS_DEBUG() -RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) -/** - * Converts a Fixnum into C's `long`. - * - * @param[in] x Some Fixnum. - * @pre Must not pass anything other than a Fixnum. - * @return The passed value converted into C's `long`. - */ -static inline long -rb_fix2long(VALUE x) -{ - if /* constexpr */ (rbimpl_right_shift_is_arithmetic_p()) { - return rbimpl_fix2long_by_shift(x); - } - else { - return rbimpl_fix2long_by_idiv(x); - } -} - -RBIMPL_ATTR_CONST_UNLESS_DEBUG() -RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) -/** - * Converts a Fixnum into C's `unsigned long`. - * - * @param[in] x Some Fixnum. - * @pre Must not pass anything other than a Fixnum. - * @return The passed value converted into C's `unsigned long`. - * @note Negative fixnums will be converted into large unsigned longs. - */ -static inline unsigned long -rb_fix2ulong(VALUE x) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); - return rb_fix2long(x); -} - -/** - * Converts an instance of ::rb_cNumeric into C's `long`. - * - * @param[in] x Something numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `long`. - * @return The passed value converted into C's `long`. - */ -static inline long -rb_num2long_inline(VALUE x) -{ - if (RB_FIXNUM_P(x)) - return RB_FIX2LONG(x); - else - return rb_num2long(x); -} - -/** - * Converts an instance of ::rb_cNumeric into C's `unsigned long`. - * - * @param[in] x Something numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `unsigned long`. - * @return The passed value converted into C's `unsigned long`. - * - * @internal - * - * This (negative fixnum would become a large unsigned long while negative - * bignum is an exception) has been THE behaviour of NUM2ULONG since the - * beginning. It is strange, but we can no longer change how it works at this - * moment. We have to get by with it. - * - * @see https://bugs.ruby-lang.org/issues/9089 - */ -static inline unsigned long -rb_num2ulong_inline(VALUE x) -{ - if (RB_FIXNUM_P(x)) - return RB_FIX2ULONG(x); - else - return rb_num2ulong(x); -} - -/** - * Converts a C's `long` into an instance of ::rb_cInteger. - * - * @param[in] v Arbitrary `long` value. - * @return An instance of ::rb_cInteger. - */ -static inline VALUE -rb_long2num_inline(long v) -{ - if (RB_FIXABLE(v)) - return RB_LONG2FIX(v); - else - return rb_int2big(v); -} - -/** - * Converts a C's `unsigned long` into an instance of ::rb_cInteger. - * - * @param[in] v Arbitrary `unsigned long` value. - * @return An instance of ::rb_cInteger. - */ -static inline VALUE -rb_ulong2num_inline(unsigned long v) -{ - if (RB_POSFIXABLE(v)) - return RB_LONG2FIX(v); - else - return rb_uint2big(v); -} - -/** - * @cond INTERNAL_MACRO - * - * Following overload is necessary because sometimes INT2FIX is used as a enum - * value (e.g. `enum { FOO = INT2FIX(0) };`). THIS IS NG in theory because a - * VALUE does not fit into an enum (which must be a signed int). But we cannot - * break existing codes. - */ -#if RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 -# /* C++ can write constexpr as enum values. */ - -#elif ! defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P) -# undef INT2FIX -# define INT2FIX(i) (RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG) - -#else -# undef INT2FIX -# define INT2FIX(i) \ - __builtin_choose_expr( \ - __builtin_constant_p(i), \ - RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG, \ - RB_INT2FIX(i)) -#endif -/** @endcond */ - -#endif /* RBIMPL_ARITHMETIC_LONG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long_long.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long_long.h deleted file mode 100644 index 65dec87..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/long_long.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_LONG_LONG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_LONG_LONG_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `long long` and Ruby's. - */ -#include "ruby/internal/value.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/special_consts.h" -#include "ruby/backward/2/long_long.h" - -#define RB_LL2NUM rb_ll2num_inline /**< @alias{rb_ll2num_inline} */ -#define RB_ULL2NUM rb_ull2num_inline /**< @alias{rb_ull2num_inline} */ -#define LL2NUM RB_LL2NUM /**< @old{RB_LL2NUM} */ -#define ULL2NUM RB_ULL2NUM /**< @old{RB_ULL2NUM} */ -#define RB_NUM2LL rb_num2ll_inline /**< @alias{rb_num2ll_inline} */ -#define RB_NUM2ULL rb_num2ull_inline /**< @alias{rb_num2ull_inline} */ -#define NUM2LL RB_NUM2LL /**< @old{RB_NUM2LL} */ -#define NUM2ULL RB_NUM2ULL /**< @old{RB_NUM2ULL} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * Converts a C's `long long` into an instance of ::rb_cInteger. - * - * @param[in] num Arbitrary `long long` value. - * @return An instance of ::rb_cInteger. - */ -VALUE rb_ll2inum(LONG_LONG num); - -/** - * Converts a C's `unsigned long long` into an instance of ::rb_cInteger. - * - * @param[in] num Arbitrary `unsigned long long` value. - * @return An instance of ::rb_cInteger. - */ -VALUE rb_ull2inum(unsigned LONG_LONG num); - -/** - * Converts an instance of ::rb_cNumeric into C's `long long`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `long long`. - * @return The passed value converted into C's `long long`. - */ -LONG_LONG rb_num2ll(VALUE num); - -/** - * Converts an instance of ::rb_cNumeric into C's `unsigned long long`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `unsigned long long`. - * @return The passed value converted into C's `unsigned long long`. - */ -unsigned LONG_LONG rb_num2ull(VALUE num); -RBIMPL_SYMBOL_EXPORT_END() - -/** - * Converts a C's `long long` into an instance of ::rb_cInteger. - * - * @param[in] n Arbitrary `long long` value. - * @return An instance of ::rb_cInteger - */ -static inline VALUE -rb_ll2num_inline(LONG_LONG n) -{ - if (FIXABLE(n)) return LONG2FIX((long)n); - return rb_ll2inum(n); -} - -/** - * Converts a C's `unsigned long long` into an instance of ::rb_cInteger. - * - * @param[in] n Arbitrary `unsigned long long` value. - * @return An instance of ::rb_cInteger - */ -static inline VALUE -rb_ull2num_inline(unsigned LONG_LONG n) -{ - if (POSFIXABLE(n)) return LONG2FIX((long)n); - return rb_ull2inum(n); -} - -/** - * Converts an instance of ::rb_cNumeric into C's `long long`. - * - * @param[in] x Something numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `long long`. - * @return The passed value converted into C's `long long`. - */ -static inline LONG_LONG -rb_num2ll_inline(VALUE x) -{ - if (RB_FIXNUM_P(x)) - return RB_FIX2LONG(x); - else - return rb_num2ll(x); -} - -/** - * Converts an instance of ::rb_cNumeric into C's `unsigned long long`. - * - * @param[in] x Something numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `unsigned long long`. - * @return The passed value converted into C's `unsigned long long`. - */ -static inline unsigned LONG_LONG -rb_num2ull_inline(VALUE x) -{ - if (RB_FIXNUM_P(x)) - return RB_FIX2LONG(x); - else - return rb_num2ull(x); -} - -#endif /* RBIMPL_ARITHMETIC_LONG_LONG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/mode_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/mode_t.h deleted file mode 100644 index 5b7ad35..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/mode_t.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_MODE_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_MODE_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `mode_t` and Ruby's. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/int.h" - -/** Converts a C's `mode_t` into an instance of ::rb_cInteger. */ -#ifndef NUM2MODET -# define NUM2MODET RB_NUM2INT -#endif - -/** Converts an instance of ::rb_cNumeric into C's `mode_t`. */ -#ifndef MODET2NUM -# define MODET2NUM RB_INT2NUM -#endif - -/** A rb_sprintf() format prefix to be used for a `mode_t` parameter. */ -#ifndef PRI_MODET_PREFIX -# define PRI_MODET_PREFIX PRI_INT_PREFIX -#endif - -#endif /* RBIMPL_ARITHMETIC_MODE_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/off_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/off_t.h deleted file mode 100644 index 0ec9362..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/off_t.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_OFF_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_OFF_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `off_t` and Ruby's. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/int.h" -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/arithmetic/long_long.h" -#include "ruby/backward/2/long_long.h" - -/** Converts a C's `off_t` into an instance of ::rb_cInteger. */ -#ifdef OFFT2NUM -# /* take that. */ -#elif SIZEOF_OFF_T == SIZEOF_LONG_LONG -# define OFFT2NUM RB_LL2NUM -#elif SIZEOF_OFF_T == SIZEOF_LONG -# define OFFT2NUM RB_LONG2NUM -#else -# define OFFT2NUM RB_INT2NUM -#endif - -/** Converts an instance of ::rb_cNumeric into C's `off_t`. */ -#ifdef NUM2OFFT -# /* take that. */ -#elif SIZEOF_OFF_T == SIZEOF_LONG_LONG -# define NUM2OFFT RB_NUM2LL -#elif SIZEOF_OFF_T == SIZEOF_LONG -# define NUM2OFFT RB_NUM2LONG -#else -# define NUM2OFFT RB_NUM2INT -#endif - -/** A rb_sprintf() format prefix to be used for an `off_t` parameter. */ -#ifdef PRI_OFFT_PREFIX -# /* take that. */ -#elif SIZEOF_OFF_T == SIZEOF_LONG_LONG -# define PRI_OFFT_PREFIX PRI_LL_PREFIX -#elif SIZEOF_OFF_T == SIZEOF_LONG -# define PRI_OFFT_PREFIX PRI_LONG_PREFIX -#else -# define PRI_OFFT_PREFIX PRI_INT_PREFIX -#endif - -#endif /* RBIMPL_ARITHMETIC_OFF_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/pid_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/pid_t.h deleted file mode 100644 index df9704e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/pid_t.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_PID_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_PID_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `pid_t` and Ruby's. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/long.h" - -/** Converts a C's `pid_t` into an instance of ::rb_cInteger. */ -#ifndef PIDT2NUM -# define PIDT2NUM RB_LONG2NUM -#endif - -/** Converts an instance of ::rb_cNumeric into C's `pid_t`. */ -#ifndef NUM2PIDT -# define NUM2PIDT RB_NUM2LONG -#endif - -/** A rb_sprintf() format prefix to be used for a `pid_t` parameter. */ -#ifndef PRI_PIDT_PREFIX -# define PRI_PIDT_PREFIX PRI_LONG_PREFIX -#endif - -#endif /* RBIMPL_ARITHMETIC_PID_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/short.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/short.h deleted file mode 100644 index 7a324d9..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/short.h +++ /dev/null @@ -1,113 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_SHORT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_SHORT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `short` and Ruby's. - * - * Shyouhei wonders: why there is no SHORT2NUM, given there are both - * #USHORT2NUM and #CHR2FIX? - */ -#include "ruby/internal/value.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/special_consts.h" - -#define RB_NUM2SHORT rb_num2short_inline /**< @alias{rb_num2short_inline} */ -#define RB_NUM2USHORT rb_num2ushort /**< @alias{rb_num2ushort} */ -#define NUM2SHORT RB_NUM2SHORT /**< @old{RB_NUM2SHORT} */ -#define NUM2USHORT RB_NUM2USHORT /**< @old{RB_NUM2USHORT} */ -#define USHORT2NUM RB_INT2FIX /**< @old{RB_INT2FIX} */ -#define RB_FIX2SHORT rb_fix2short /**< @alias{rb_fix2ushort} */ -#define FIX2SHORT RB_FIX2SHORT /**< @old{RB_FIX2SHORT} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Converts an instance of ::rb_cNumeric into C's `short`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `short`. - * @return The passed value converted into C's `short`. - */ -short rb_num2short(VALUE num); - -/** - * Converts an instance of ::rb_cNumeric into C's `unsigned short`. - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `unsigned short`. - * @return The passed value converted into C's `unsigned short`. - */ -unsigned short rb_num2ushort(VALUE num); - -/** - * Identical to rb_num2short(). - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `short`. - * @return The passed value converted into C's `short`. - * - * @internal - * - * This function seems to be a complete waste of disk space. @shyouhei has no - * idea why this is a different thing from rb_num2short(). - */ -short rb_fix2short(VALUE num); - -/** - * Identical to rb_num2ushort(). - * - * @param[in] num Something numeric. - * @exception rb_eTypeError `num` is not a numeric. - * @exception rb_eRangeError `num` is out of range of `unsigned short`. - * @return The passed value converted into C's `unsigned short`. - * - * @internal - * - * This function seems to be a complete waste of disk space. @shyouhei has no - * idea why this is a different thing from rb_num2ushort(). - */ -unsigned short rb_fix2ushort(VALUE num); -RBIMPL_SYMBOL_EXPORT_END() - -/** - * Identical to rb_num2short(). - * - * @param[in] x Something numeric. - * @exception rb_eTypeError `x` is not a numeric. - * @exception rb_eRangeError `x` is out of range of `short`. - * @return The passed value converted into C's `short`. - * - * @internal - * - * This function seems to be a complete waste of time. @shyouhei has no idea - * why this is a different thing from rb_num2short(). - */ -static inline short -rb_num2short_inline(VALUE x) -{ - if (RB_FIXNUM_P(x)) - return rb_fix2short(x); - else - return rb_num2short(x); -} - -#endif /* RBIMPL_ARITHMETIC_SHORT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/size_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/size_t.h deleted file mode 100644 index 1082160..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/size_t.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_SIZE_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_SIZE_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `size_t` and Ruby's. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/int.h" -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/arithmetic/long_long.h" -#include "ruby/backward/2/long_long.h" - -#if defined(__DOXYGEN__) -# /** Converts a C's `size_t` into an instance of ::rb_cInteger. */ -# define RB_SIZE2NUM RB_ULONG2NUM -# /** Converts a C's `ssize_t` into an instance of ::rb_cInteger. */ -# define RB_SSIZE2NUM RB_LONG2NUM -#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG -# define RB_SIZE2NUM RB_ULL2NUM -# define RB_SSIZE2NUM RB_LL2NUM -#elif SIZEOF_SIZE_T == SIZEOF_LONG -# define RB_SIZE2NUM RB_ULONG2NUM -# define RB_SSIZE2NUM RB_LONG2NUM -#else -# define RB_SIZE2NUM RB_UINT2NUM -# define RB_SSIZE2NUM RB_INT2NUM -#endif - -#if defined(__DOXYGEN__) -# /** Converts an instance of ::rb_cInteger into C's `size_t`. */ -# define RB_NUM2SIZE RB_NUM2ULONG -# /** Converts an instance of ::rb_cInteger into C's `ssize_t`. */ -# define RB_NUM2SSIZE RB_NUM2LONG -#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG -# define RB_NUM2SIZE RB_NUM2ULL -# define RB_NUM2SSIZE RB_NUM2LL -#elif SIZEOF_SIZE_T == SIZEOF_LONG -# define RB_NUM2SIZE RB_NUM2ULONG -# define RB_NUM2SSIZE RB_NUM2LONG -#else -# define RB_NUM2SIZE RB_NUM2UINT -# define RB_NUM2SSIZE RB_NUM2INT -#endif - -#define NUM2SIZET RB_NUM2SIZE /**< @old{RB_NUM2SIZE} */ -#define SIZET2NUM RB_SIZE2NUM /**< @old{RB_SIZE2NUM} */ -#define NUM2SSIZET RB_NUM2SSIZE /**< @old{RB_NUM2SSIZE} */ -#define SSIZET2NUM RB_SSIZE2NUM /**< @old{RB_SSIZE2NUM} */ - -#endif /* RBIMPL_ARITHMETIC_SIZE_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/st_data_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/st_data_t.h deleted file mode 100644 index 3bff4ff..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/st_data_t.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef RBIMPL_ARITHMERIC_ST_DATA_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMERIC_ST_DATA_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `st_data_t` and Ruby's. - */ -#include "ruby/internal/arithmetic/fixnum.h" -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/value.h" -#include "ruby/assert.h" -#include "ruby/st.h" - -#define ST2FIX RB_ST2FIX /**< @old{RB_ST2FIX} */ -/** @cond INTERNAL_MACRO */ -#define RB_ST2FIX RB_ST2FIX -/** @endcond */ - -RBIMPL_ATTR_CONST_UNLESS_DEBUG() -RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Converts a C's `st_data_t` into an instance of ::rb_cInteger. - * - * @param[in] i The data in question. - * @return A converted result - * @warning THIS CONVERSION LOSES DATA! Be warned. - * @see https://bugs.ruby-lang.org/issues/13877 - * @see https://bugs.ruby-lang.org/issues/14218 - * - * @internal - * - * This is needed because of hash functions. Hash functions return - * `st_data_t`, which could theoretically be bigger than Fixnums. However - * allocating Bignums for them every time we calculate hash values is just too - * heavy. To avoid penalty we need to ignore some upper bit(s) and stick to - * Fixnums. This function is used for that purpose. - */ -static inline VALUE -RB_ST2FIX(st_data_t i) -{ - SIGNED_VALUE x = i; - - if (x >= 0) { - x &= RUBY_FIXNUM_MAX; - } - else { - x |= RUBY_FIXNUM_MIN; - } - - RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(x)); - unsigned long y = RBIMPL_CAST((unsigned long)x); - return RB_LONG2FIX(y); -} - -#endif /* RBIMPL_ARITHMETIC_ST_DATA_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/uid_t.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/uid_t.h deleted file mode 100644 index 12cde2a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/arithmetic/uid_t.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef RBIMPL_ARITHMETIC_UID_T_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ARITHMETIC_UID_T_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Arithmetic conversion between C's `uid_t` and Ruby's. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/long.h" - -/** Converts a C's `uid_t` into an instance of ::rb_cInteger. */ -#ifndef UIDT2NUM -# define UIDT2NUM RB_LONG2NUM -#endif - -/** Converts an instance of ::rb_cNumeric into C's `uid_t`. */ -#ifndef NUM2UIDT -# define NUM2UIDT RB_NUM2LONG -#endif - -/** A rb_sprintf() format prefix to be used for a `uid_t` parameter. */ -#ifndef PRI_UIDT_PREFIX -# define PRI_UIDT_PREFIX PRI_LONG_PREFIX -#endif - -#endif /* RBIMPL_ARITHMETIC_UID_T_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/assume.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/assume.h deleted file mode 100644 index 65d34d4..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/assume.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef RBIMPL_ASSUME_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ASSUME_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ASSUME / #RBIMPL_UNREACHABLE. - * - * These macros must be defined at once because: - * - * - #RBIMPL_ASSUME could fallback to #RBIMPL_UNREACHABLE. - * - #RBIMPL_UNREACHABLE could fallback to #RBIMPL_ASSUME. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/builtin.h" -#include "ruby/internal/warning_push.h" - -/** @cond INTERNAL_MACRO */ -#if RBIMPL_COMPILER_SINCE(MSVC, 13, 10, 0) -# define RBIMPL_HAVE___ASSUME - -#elif RBIMPL_COMPILER_SINCE(Intel, 13, 0, 0) -# define RBIMPL_HAVE___ASSUME -#endif -/** @endcond */ - -/** Wraps (or simulates) `__builtin_unreachable`. */ -#if RBIMPL_HAS_BUILTIN(__builtin_unreachable) -# define RBIMPL_UNREACHABLE_RETURN(_) __builtin_unreachable() - -#elif defined(RBIMPL_HAVE___ASSUME) -# define RBIMPL_UNREACHABLE_RETURN(_) return (__assume(0), (_)) - -#else -# define RBIMPL_UNREACHABLE_RETURN(_) return (_) -#endif - -/** Wraps (or simulates) `__builtin_unreachable`. */ -#if RBIMPL_HAS_BUILTIN(__builtin_unreachable) -# define RBIMPL_UNREACHABLE __builtin_unreachable - -#elif defined(RBIMPL_HAVE___ASSUME) -# define RBIMPL_UNREACHABLE() __assume(0) -#endif - -/** Wraps (or simulates) `__assume`. */ -#if RBIMPL_COMPILER_SINCE(Intel, 13, 0, 0) -# /* icc warnings are false positives. Ignore them. */ -# /* "warning #2261: __assume expression with side effects discarded" */ -# define RBIMPL_ASSUME(expr) \ - RBIMPL_WARNING_PUSH() \ - RBIMPL_WARNING_IGNORED(2261) \ - __assume(expr) \ - RBIMPL_WARNING_POP() - -#elif defined(RBIMPL_HAVE___ASSUME) -# define RBIMPL_ASSUME __assume - -#elif RBIMPL_HAS_BUILTIN(__builtin_assume) -# define RBIMPL_ASSUME __builtin_assume - -#elif ! defined(RBIMPL_UNREACHABLE) -# define RBIMPL_ASSUME(_) RBIMPL_CAST((void)(_)) - -#else -# define RBIMPL_ASSUME(_) \ - (RB_LIKELY(!!(_)) ? RBIMPL_CAST((void)0) : RBIMPL_UNREACHABLE()) -#endif - -#if ! defined(RBIMPL_UNREACHABLE) -# define RBIMPL_UNREACHABLE() RBIMPL_ASSUME(0) -#endif - -#endif /* RBIMPL_ASSUME_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/alloc_size.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/alloc_size.h deleted file mode 100644 index 954a201..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/alloc_size.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RBIMPL_ATTR_ALLOC_SIZE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_ALLOC_SIZE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_ALLOC_SIZE. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((alloc_size))` */ -#if RBIMPL_HAS_ATTRIBUTE(alloc_size) -# define RBIMPL_ATTR_ALLOC_SIZE(tuple) __attribute__((__alloc_size__ tuple)) -#else -# define RBIMPL_ATTR_ALLOC_SIZE(tuple) /* void */ -#endif - -#endif /* RBIMPL_ATTR_ALLOC_SIZE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/artificial.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/artificial.h deleted file mode 100644 index ef5f36a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/artificial.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef RBIMPL_ATTR_ARTIFICIAL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_ARTIFICIAL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_ARTIFICIAL. - * - * ### Q&A ### - * - * - Q: What is this attribute? I don't get what GCC manual is talking about. - * - * - A: In short it is an attribute to manipulate GDB backtraces. The - * attribute makes the best sense when it comes with - * __attribute__((always_inline)). When a function annotated with this - * attribute gets inlined, and when you somehow look at a backtrace which - * includes such inlined call site, then the backtrace shows the caller - * and not the callee. This is handy for instance when an identical - * function is inlined more than once in a single big function. On such - * case it gets vital to know where the inlining happened in the callee. - * See also https://stackoverflow.com/a/21936099 - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((artificial))` */ -#if RBIMPL_HAS_ATTRIBUTE(artificial) -# define RBIMPL_ATTR_ARTIFICIAL() __attribute__((__artificial__)) -#else -# define RBIMPL_ATTR_ARTIFICIAL() /* void */ -#endif - -#endif /* RBIMPL_ATTR_ARTIFICIAL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/cold.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/cold.h deleted file mode 100644 index c68b3ae..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/cold.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef RBIMPL_ATTR_COLD_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_COLD_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_COLD. - */ -#include "ruby/internal/compiler_is.h" -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((cold))` */ -#if RBIMPL_COMPILER_IS(SunPro) -# /* Recent SunPro has __has_attribute, and is broken. */ -# /* It reports it has attribute cold, reality isn't (warnings issued). */ -# define RBIMPL_ATTR_COLD() /* void */ -#elif RBIMPL_HAS_ATTRIBUTE(cold) -# define RBIMPL_ATTR_COLD() __attribute__((__cold__)) -#else -# define RBIMPL_ATTR_COLD() /* void */ -#endif - -#endif /* RBIMPL_ATTR_COLD_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/const.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/const.h deleted file mode 100644 index e66aa17..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/const.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef RBIMPL_ATTR_CONST_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_CONST_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_CONST. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/has/declspec_attribute.h" - -/** Wraps (or simulates) `__attribute__((const))` */ -#if RBIMPL_HAS_ATTRIBUTE(const) -# define RBIMPL_ATTR_CONST() __attribute__((__const__)) -#elif RBIMPL_HAS_DECLSPEC_ATTRIBUTE(noalias) -# /* If a function can be a const, that is also a noalias. */ -# define RBIMPL_ATTR_CONST() __declspec(noalias) -#elif RBIMPL_COMPILER_SINCE(SunPro, 5, 10, 0) -# define RBIMPL_ATTR_CONST() _Pragma("no_side_effect") -#else -# define RBIMPL_ATTR_CONST() /* void */ -#endif - -/** Enables #RBIMPL_ATTR_CONST if and only if. ! #RUBY_DEBUG. */ -#if !defined(RUBY_DEBUG) || !RUBY_DEBUG -# define RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONST() -#else -# define RBIMPL_ATTR_CONST_UNLESS_DEBUG() /* void */ -#endif - -#endif /* RBIMPL_ATTR_CONST_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/constexpr.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/constexpr.h deleted file mode 100644 index abc4f23..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/constexpr.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef RBIMPL_ATTR_CONSTEXPR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_CONSTEXPR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief #RBIMPL_ATTR_CONSTEXPR. - */ -#include "ruby/internal/has/feature.h" -#include "ruby/internal/compiler_is.h" - -/** @cond INTERNAL_MACRO */ -#if ! defined(__cplusplus) -# /* Makes no sense. */ -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0 -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0 - -#elif defined(__cpp_constexpr) -# /* https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations */ -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 (__cpp_constexpr >= 200704L) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 (__cpp_constexpr >= 201304L) - -#elif RBIMPL_COMPILER_SINCE(MSVC, 19, 0, 0) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 RBIMPL_COMPILER_SINCE(MSVC, 19, 00, 00) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 RBIMPL_COMPILER_SINCE(MSVC, 19, 11, 00) - -#elif RBIMPL_COMPILER_SINCE(SunPro, 5, 13, 0) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 (__cplusplus >= 201103L) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 (__cplusplus >= 201402L) - -#elif RBIMPL_COMPILER_SINCE(GCC, 4, 9, 0) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 (__cplusplus >= 201103L) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 (__cplusplus >= 201402L) - -#elif RBIMPL_HAS_FEATURE(cxx_relaxed_constexpr) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 1 -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 1 - -#elif RBIMPL_HAS_FEATURE(cxx_constexpr) -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 1 -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0 - -#else -# /* :FIXME: icpc must have constexpr but don't know how to detect. */ -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0 -# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0 -#endif -/** @endcond */ - -/** Wraps (or simulates) C++11 `constexpr`. */ -#if RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 -# define RBIMPL_ATTR_CONSTEXPR(_) constexpr - -#elif RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 -# define RBIMPL_ATTR_CONSTEXPR(_) RBIMPL_ATTR_CONSTEXPR_ ## _ -# define RBIMPL_ATTR_CONSTEXPR_CXX11 constexpr -# define RBIMPL_ATTR_CONSTEXPR_CXX14 /* void */ - -#else -# define RBIMPL_ATTR_CONSTEXPR(_) /* void */ -#endif - -/** Enables #RBIMPL_ATTR_CONSTEXPR if and only if. ! #RUBY_DEBUG. */ -#if !RUBY_DEBUG -# define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) RBIMPL_ATTR_CONSTEXPR(_) -#else -# define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) /* void */ -#endif - -#endif /* RBIMPL_ATTR_CONSTEXPR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/deprecated.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/deprecated.h deleted file mode 100644 index e1bbdbd..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/deprecated.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef RBIMPL_ATTR_DEPRECATED_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_DEPRECATED_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_DEPRECATED. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/has/c_attribute.h" -#include "ruby/internal/has/cpp_attribute.h" -#include "ruby/internal/has/declspec_attribute.h" -#include "ruby/internal/has/extension.h" - -/** Wraps (or simulates) `[[deprecated]]` */ -#if defined(__COVERITY__) -/* Coverity Scan emulates gcc but seems not to support this attribute correctly */ -# define RBIMPL_ATTR_DEPRECATED(msg) - -#elif RBIMPL_HAS_EXTENSION(attribute_deprecated_with_message) -# define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg)) - -#elif defined(__cplusplus) && RBIMPL_COMPILER_SINCE(GCC, 10, 1, 0) && RBIMPL_COMPILER_BEFORE(GCC, 10, 3, 0) -# /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95302 */ -# define RBIMPL_ATTR_DEPRECATED(msg) /* disable until they fix this bug */ - -#elif RBIMPL_COMPILER_SINCE(GCC, 4, 5, 0) -# define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg)) - -#elif RBIMPL_COMPILER_SINCE(Intel, 13, 0, 0) -# define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg)) - -#elif RBIMPL_HAS_ATTRIBUTE(deprecated) /* but not with message. */ -# define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__)) - -#elif RBIMPL_COMPILER_SINCE(MSVC, 14, 0, 0) -# define RBIMPL_ATTR_DEPRECATED(msg) __declspec(deprecated msg) - -#elif RBIMPL_HAS_DECLSPEC_ATTRIBUTE(deprecated) -# define RBIMPL_ATTR_DEPRECATED(msg) __declspec(deprecated) - -#elif RBIMPL_HAS_CPP_ATTRIBUTE(deprecated) -# define RBIMPL_ATTR_DEPRECATED(msg) [[deprecated msg]] - -#elif RBIMPL_HAS_C_ATTRIBUTE(deprecated) -# define RBIMPL_ATTR_DEPRECATED(msg) [[deprecated msg]] - -#else -# define RBIMPL_ATTR_DEPRECATED(msg) /* void */ -#endif - -/** This is when a function is used internally (for backwards compatibility - * etc.), but extension libraries must consider it deprecated. */ -#if defined(RUBY_EXPORT) -# define RBIMPL_ATTR_DEPRECATED_EXT(msg) /* void */ -#else -# define RBIMPL_ATTR_DEPRECATED_EXT(msg) RBIMPL_ATTR_DEPRECATED(msg) -#endif - -#endif /* RBIMPL_ATTR_DEPRECATED_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/diagnose_if.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/diagnose_if.h deleted file mode 100644 index cadc6ce..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/diagnose_if.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef RBIMPL_ATTR_DIAGNOSE_IF_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_DIAGNOSE_IF_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_DIAGNOSE_IF. - */ -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/warning_push.h" - -/** Wraps (or simulates) `__attribute__((diagnose_if))` */ -#if RBIMPL_COMPILER_BEFORE(Clang, 5, 0, 0) -# /* https://bugs.llvm.org/show_bug.cgi?id=34319 */ -# define RBIMPL_ATTR_DIAGNOSE_IF(_, __, ___) /* void */ - -#elif RBIMPL_HAS_ATTRIBUTE(diagnose_if) -# define RBIMPL_ATTR_DIAGNOSE_IF(_, __, ___) \ - RBIMPL_WARNING_PUSH() \ - RBIMPL_WARNING_IGNORED(-Wgcc-compat) \ - __attribute__((__diagnose_if__(_, __, ___))) \ - RBIMPL_WARNING_POP() - -#else -# define RBIMPL_ATTR_DIAGNOSE_IF(_, __, ___) /* void */ -#endif - -#endif /* RBIMPL_ATTR_DIAGNOSE_IF_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/enum_extensibility.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/enum_extensibility.h deleted file mode 100644 index eb0d5b6..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/enum_extensibility.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RBIMPL_ATTR_ENUM_EXTENSIBILITY_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_ENUM_EXTENSIBILITY_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief #RBIMPL_ATTR_ENUM_EXTENSIBILITY. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((enum_extensibility))` */ -#if RBIMPL_HAS_ATTRIBUTE(enum_extensibility) -# define RBIMPL_ATTR_ENUM_EXTENSIBILITY(_) __attribute__((__enum_extensibility__(_))) -#else -# define RBIMPL_ATTR_ENUM_EXTENSIBILITY(_) /* void */ -#endif - -#endif /* RBIMPL_ATTR_ENUM_EXTENSIBILITY_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/error.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/error.h deleted file mode 100644 index 2ed388a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/error.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RBIMPL_ATTR_ERROR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_ERROR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_ERROR. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((error))` */ -#if RBIMPL_HAS_ATTRIBUTE(error) -# define RBIMPL_ATTR_ERROR(msg) __attribute__((__error__ msg)) -#else -# define RBIMPL_ATTR_ERROR(msg) /* void */ -#endif - -#endif /* RBIMPL_ATTR_ERROR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/flag_enum.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/flag_enum.h deleted file mode 100644 index 3053d75..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/flag_enum.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RBIMPL_ATTR_FLAG_ENUM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_FLAG_ENUM_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_FLAG_ENUM. - * @see https://clang.llvm.org/docs/AttributeReference.html#flag_enum - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((flag_enum)` */ -#if RBIMPL_HAS_ATTRIBUTE(flag_enum) -# define RBIMPL_ATTR_FLAG_ENUM() __attribute__((__flag_enum__)) -#else -# define RBIMPL_ATTR_FLAG_ENUM() /* void */ -#endif - -#endif /* RBIMPLATTR_FLAG_ENUM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/forceinline.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/forceinline.h deleted file mode 100644 index b7daafe..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/forceinline.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef RBIMPL_ATTR_FORCEINLINE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_FORCEINLINE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_FORCEINLINE. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/attribute.h" - -/** - * Wraps (or simulates) `__forceinline`. MSVC complains on declarations like - * `static inline __forceinline void foo()`. It seems MSVC's `inline` and - * `__forceinline` are mutually exclusive. We have to mimic that behaviour for - * non-MSVC compilers. - */ -#if RBIMPL_COMPILER_SINCE(MSVC, 12, 0, 0) -# define RBIMPL_ATTR_FORCEINLINE() __forceinline -#elif RBIMPL_HAS_ATTRIBUTE(always_inline) -# define RBIMPL_ATTR_FORCEINLINE() __attribute__((__always_inline__)) inline -#else -# define RBIMPL_ATTR_FORCEINLINE() inline -#endif - -#endif /* RBIMPL_ATTR_FORCEINLINE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/format.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/format.h deleted file mode 100644 index b3488ee..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/format.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RBIMPL_ATTR_FORMAT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_FORMAT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_FORMAT. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((format))` */ -#if RBIMPL_HAS_ATTRIBUTE(format) -# define RBIMPL_ATTR_FORMAT(x, y, z) __attribute__((__format__(x, y, z))) -#else -# define RBIMPL_ATTR_FORMAT(x, y, z) /* void */ -#endif - -#if defined(__MINGW_PRINTF_FORMAT) -# define RBIMPL_PRINTF_FORMAT __MINGW_PRINTF_FORMAT -#else -# define RBIMPL_PRINTF_FORMAT __printf__ -#endif - -#endif /* RBIMPL_ATTR_FORMAT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/maybe_unused.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/maybe_unused.h deleted file mode 100644 index 3ee8be4..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/maybe_unused.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RBIMPL_ATTR_MAYBE_UNUSED_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_MAYBE_UNUSED_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_MAYBE_UNUSED. - */ -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/has/c_attribute.h" -#include "ruby/internal/has/cpp_attribute.h" - -/** Wraps (or simulates) `[[maybe_unused]]` */ -#if RBIMPL_HAS_CPP_ATTRIBUTE(maybe_unused) -# define RBIMPL_ATTR_MAYBE_UNUSED() [[maybe_unused]] -#elif RBIMPL_HAS_C_ATTRIBUTE(maybe_unused) -# define RBIMPL_ATTR_MAYBE_UNUSED() [[maybe_unused]] -#elif RBIMPL_HAS_ATTRIBUTE(unused) -# define RBIMPL_ATTR_MAYBE_UNUSED() __attribute__((__unused__)) -#else -# define RBIMPL_ATTR_MAYBE_UNUSED() /* void */ -#endif - -#endif /* RBIMPL_ATTR_MAYBE_UNUSED */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noalias.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noalias.h deleted file mode 100644 index 0790ef6..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noalias.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef RBIMPL_ATTR_NOALIAS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_NOALIAS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_NOALIAS. - * - * ### Q&A ### - * - * - Q: There are seemingly similar attributes named #RBIMPL_ATTR_CONST, - * #RBIMPL_ATTR_PURE, and #RBIMPL_ATTR_NOALIAS. What are the difference? - * - * - A: Allowed operations are different. - * - * - #RBIMPL_ATTR_CONST ... Functions attributed by this are not allowed to - * read/write _any_ pointers at all (there are exceptional situations - * when reading a pointer is possible but forget that; they are too - * exceptional to be useful). Just remember that everything pointer- - * related are NG. - * - * - #RBIMPL_ATTR_PURE ... Functions attributed by this can read any - * nonvolatile pointers, but no writes are allowed at all. The ability - * to read _any_ nonvolatile pointers makes it possible to mark ::VALUE- - * taking functions as being pure, as long as they are read-only. - * - * - #RBIMPL_ATTR_NOALIAS ... Can both read/write, but only through - * pointers passed to the function as parameters. This is a typical - * situation when you create a C++ non-static member function which only - * concerns `this`. No global variables are allowed to read/write. So - * this is not a super-set of being pure. If you want to read something, - * that has to be passed to the function as a pointer. ::VALUE -taking - * functions thus cannot be attributed as such. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/declspec_attribute.h" - -/** Wraps (or simulates) `__declspec((noalias))` */ -#if RBIMPL_COMPILER_BEFORE(Clang, 12, 0, 0) -# /* -# * `::llvm::Attribute::ArgMemOnly` was buggy before. Maybe because nobody -# * actually seriously used it. It seems they somehow mitigated the situation -# * in LLVM 12. Still not found the exact changeset which fiexed the -# * attribute, though. -# * -# * :FIXME: others (armclang, xlclang, ...) can also be affected? -# */ -# define RBIMPL_ATTR_NOALIAS() /* void */ -#elif RBIMPL_HAS_DECLSPEC_ATTRIBUTE(noalias) -# define RBIMPL_ATTR_NOALIAS() __declspec(noalias) -#else -# define RBIMPL_ATTR_NOALIAS() /* void */ -#endif - -#endif /* RBIMPL_ATTR_NOALIAS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nodiscard.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nodiscard.h deleted file mode 100644 index 087192a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nodiscard.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef RBIMPL_ATTR_NODISCARD_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_NODISCARD_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_NODISCARD. - */ -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/has/c_attribute.h" -#include "ruby/internal/has/cpp_attribute.h" - -/** - * Wraps (or simulates) `[[nodiscard]]`. In C++ (at least since C++20) a - * nodiscard attribute can have a message why the result shall not be ignoed. - * However GCC attribute and SAL annotation cannot take them. - */ -#if RBIMPL_HAS_CPP_ATTRIBUTE(nodiscard) -# define RBIMPL_ATTR_NODISCARD() [[nodiscard]] -#elif RBIMPL_HAS_C_ATTRIBUTE(nodiscard) -# define RBIMPL_ATTR_NODISCARD() [[nodiscard]] -#elif RBIMPL_HAS_ATTRIBUTE(warn_unused_result) -# define RBIMPL_ATTR_NODISCARD() __attribute__((__warn_unused_result__)) -#elif defined(_Check_return_) -# /* Take SAL definition. */ -# define RBIMPL_ATTR_NODISCARD() _Check_return_ -#else -# define RBIMPL_ATTR_NODISCARD() /* void */ -#endif - -#endif /* RBIMPL_ATTR_NODISCARD_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noexcept.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noexcept.h deleted file mode 100644 index ea3001d..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noexcept.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef RBIMPL_ATTR_NOEXCEPT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_NOEXCEPT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_NOEXCEPT. - * - * This isn't actually an attribute in C++ but who cares... - * - * Mainly due to aesthetic reasons, this one is rarely used in the project. - * But can be handy on occasions, especially when a function's noexcept-ness - * depends on its calling functions. - * - * ### Q&A ### - * - * - Q: Can a function that raises Ruby exceptions be attributed `noexcept`? - * - * - A: Yes. `noexcept` is about C++ exceptions, not Ruby's. They don't - * interface each other. You can safely attribute a function that raises - * Ruby exceptions as `noexcept`. - * - * - Q: How, then, can I assert that a function I wrote doesn't raise any Ruby - * exceptions? - * - * - A: `__attribute__((__leaf__))` is for that purpose. A function attributed - * as leaf can still throw C++ exceptions, but not Ruby's. Note however, - * that it's extremely difficult -- if not impossible -- to assert that a - * function doesn't raise any Ruby exceptions at all. Use of that - * attribute is not recommended; mere mortals can't properly use that by - * hand. - * - * - Q: Does it make sense to attribute an inline function `noexcept`? - * - * - A: I thought so before. But no, I don't think they are useful any longer. - * - * - When an inline function attributed `noexcept` actually doesn't throw - * any exceptions at all: these days I don't see any difference in - * generated assembly by adding/removing this attribute. C++ compilers - * get smarter and smarter. Today they can infer if it actually throws - * or not without any annotations by humans (correct me if I'm wrong). - * - * - When an inline function attributed `noexcepr` actually _does_ throw an - * exception: they have to call `std::terminate` then (C++ standard - * mandates so). This means exception handling routines are actually - * enforced, not omitted. This doesn't impact runtime performance (The - * Itanium C++ ABI has zero-cost exception handling), but does impact on - * generated binary size. This is bad. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/feature.h" - -/** Wraps (or simulates) C++11 `noexcept` */ -#if ! defined(__cplusplus) -# /* Doesn't make sense. */ -# define RBIMPL_ATTR_NOEXCEPT(_) /* void */ - -#elif RBIMPL_HAS_FEATURE(cxx_noexcept) -# define RBIMPL_ATTR_NOEXCEPT(_) noexcept(noexcept(_)) - -#elif defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__ -# define RBIMPL_ATTR_NOEXCEPT(_) noexcept(noexcept(_)) - -#elif defined(__INTEL_CXX11_MODE__) -# define RBIMPL_ATTR_NOEXCEPT(_) noexcept(noexcept(_)) - -#elif RBIMPL_COMPILER_SINCE(MSVC, 19, 0, 0) -# define RBIMPL_ATTR_NOEXCEPT(_) noexcept(noexcept(_)) - -#elif __cplusplus >= 201103L -# define RBIMPL_ATTR_NOEXCEPT(_) noexcept(noexcept(_)) - -#else -# define RBIMPL_ATTR_NOEXCEPT(_) /* void */ -#endif - -#endif /* RBIMPL_ATTR_NOEXCEPT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noinline.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noinline.h deleted file mode 100644 index b7605a0..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noinline.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef RBIMPL_ATTR_NOINLINE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_NOINLINE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_NOINLINE. - */ -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/has/declspec_attribute.h" - -/** Wraps (or simulates) `__declspec(noinline)` */ -#if RBIMPL_HAS_DECLSPEC_ATTRIBUTE(noinline) -# define RBIMPL_ATTR_NOINLINE() __declspec(noinline) -#elif RBIMPL_HAS_ATTRIBUTE(noinline) -# define RBIMPL_ATTR_NOINLINE() __attribute__((__noinline__)) -#else -# define RBIMPL_ATTR_NOINLINE() /* void */ -#endif - -#endif /* RBIMPL_ATTR_NOINLINE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nonnull.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nonnull.h deleted file mode 100644 index 778d5be..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/nonnull.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef RBIMPL_ATTR_NONNULL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_NONNULL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_NONNULL. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((nonnull))` */ -#if RBIMPL_HAS_ATTRIBUTE(nonnull) -# define RBIMPL_ATTR_NONNULL(list) __attribute__((__nonnull__ list)) -# define RBIMPL_NONNULL_ARG(arg) RBIMPL_ASSERT_NOTHING -#else -# define RBIMPL_ATTR_NONNULL(list) /* void */ -# define RBIMPL_NONNULL_ARG(arg) RUBY_ASSERT(arg) -#endif - -#endif /* RBIMPL_ATTR_NONNULL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noreturn.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noreturn.h deleted file mode 100644 index 5839212..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/noreturn.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef RBIMPL_ATTR_NORETURN_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_NORETURN_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_NORETURN. - */ -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/has/cpp_attribute.h" -#include "ruby/internal/has/declspec_attribute.h" - -/** Wraps (or simulates) `[[noreturn]]` */ -#if RBIMPL_HAS_DECLSPEC_ATTRIBUTE(noreturn) -# define RBIMPL_ATTR_NORETURN() __declspec(noreturn) - -#elif RBIMPL_HAS_ATTRIBUTE(noreturn) -# define RBIMPL_ATTR_NORETURN() __attribute__((__noreturn__)) - -#elif RBIMPL_HAS_CPP_ATTRIBUTE(noreturn) -# define RBIMPL_ATTR_NORETURN() [[noreturn]] - -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112) -# define RBIMPL_ATTR_NORETURN() _Noreturn - -#elif defined(_Noreturn) -# /* glibc has this macro. */ -# define RBIMPL_ATTR_NORETURN() _Noreturn - -#else -# define RBIMPL_ATTR_NORETURN() /* void */ -#endif - -#endif /* RBIMPL_ATTR_NORETURN_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/pure.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/pure.h deleted file mode 100644 index 015711b..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/pure.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef RBIMPL_ATTR_PURE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_PURE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_PURE. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/attribute.h" -#include "ruby/assert.h" - -/** Wraps (or simulates) `__attribute__((pure))` */ -#if RBIMPL_HAS_ATTRIBUTE(pure) -# define RBIMPL_ATTR_PURE() __attribute__((__pure__)) -#elif RBIMPL_COMPILER_SINCE(SunPro, 5, 10, 0) -# define RBIMPL_ATTR_PURE() _Pragma("does_not_write_global_data") -#else -# define RBIMPL_ATTR_PURE() /* void */ -#endif - -/** Enables #RBIMPL_ATTR_PURE if and only if. ! #RUBY_DEBUG. */ -#if !RUBY_DEBUG -# define RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_PURE() -#else -# define RBIMPL_ATTR_PURE_UNLESS_DEBUG() /* void */ -#endif - -#endif /* RBIMPL_ATTR_PURE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/restrict.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/restrict.h deleted file mode 100644 index e391041..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/restrict.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef RBIMPL_ATTR_RESTRICT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_RESTRICT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_RESTRICT. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/attribute.h" - -/* :FIXME: config.h includes conflicting `#define restrict`. MSVC can be - * detected using `RBIMPL_COMPILER_SINCE()`, but Clang & family cannot use - * `__has_declspec_attribute()` which involves macro substitution. */ - -/** Wraps (or simulates) `__declspec(restrict)` */ -#if RBIMPL_COMPILER_SINCE(MSVC, 14, 0, 0) -# define RBIMPL_ATTR_RESTRICT() __declspec(re ## strict) - -#elif RBIMPL_HAS_ATTRIBUTE(malloc) -# define RBIMPL_ATTR_RESTRICT() __attribute__((__malloc__)) - -#elif RBIMPL_COMPILER_SINCE(SunPro, 5, 10, 0) -# define RBIMPL_ATTR_RESTRICT() _Pragma("returns_new_memory") - -#else -# define RBIMPL_ATTR_RESTRICT() /* void */ -#endif - -#endif /* RBIMPL_ATTR_RESTRICT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/returns_nonnull.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/returns_nonnull.h deleted file mode 100644 index 5d6f1d1..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/returns_nonnull.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef RBIMPL_ATTR_RETURNS_NONNULL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_RETURNS_NONNULL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_RETURNS_NONNULL. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((returns_nonnull))` */ -#if defined(_Ret_nonnull_) -# /* Take SAL definition. */ -# define RBIMPL_ATTR_RETURNS_NONNULL() _Ret_nonnull_ - -#elif RBIMPL_HAS_ATTRIBUTE(returns_nonnull) -# define RBIMPL_ATTR_RETURNS_NONNULL() __attribute__((__returns_nonnull__)) - -#else -# define RBIMPL_ATTR_RETURNS_NONNULL() /* void */ -#endif - -#endif /* RBIMPL_ATTR_RETURNS_NONNULL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/warning.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/warning.h deleted file mode 100644 index e5ced26..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/warning.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RBIMPL_ATTR_WARNING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_WARNING_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_WARNING. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((warning))` */ -#if RBIMPL_HAS_ATTRIBUTE(warning) -# define RBIMPL_ATTR_WARNING(msg) __attribute__((__warning__ msg)) -#else -# define RBIMPL_ATTR_WARNING(msg) /* void */ -#endif - -#endif /* RBIMPL_ATTR_WARNING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/weakref.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/weakref.h deleted file mode 100644 index f118bb6..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/attr/weakref.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RBIMPL_ATTR_WEAKREF_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ATTR_WEAKREF_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ATTR_WEAKREF. - */ -#include "ruby/internal/has/attribute.h" - -/** Wraps (or simulates) `__attribute__((weakref))` */ -#if RBIMPL_HAS_ATTRIBUTE(weakref) -# define RBIMPL_ATTR_WEAKREF(sym) __attribute__((__weakref__(# sym))) -#else -# define RBIMPL_ATTR_WEAKREF(sym) /* void */ -#endif - -#endif /* RBIMPL_ATTR_WEAKREF_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/cast.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/cast.h deleted file mode 100644 index a31fddb..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/cast.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef RBIMPL_CAST_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_CAST_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines RBIMPL_CAST. - * - * This casting macro makes sense only inside of other macros that are part of - * public headers. They could be used from C++, and C-style casts could issue - * warnings. Ruby internals are pure C so they should not bother. - */ -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/has/warning.h" -#include "ruby/internal/warning_push.h" - -#if ! defined(__cplusplus) -# define RBIMPL_CAST(expr) (expr) - -#elif RBIMPL_COMPILER_SINCE(GCC, 4, 6, 0) -# /* g++ has -Wold-style-cast since 1997 or so, but its _Pragma is broken. */ -# /* See https://gcc.godbolt.org/z/XWhU6J */ -# define RBIMPL_CAST(expr) (expr) -# pragma GCC diagnostic ignored "-Wold-style-cast" - -#elif RBIMPL_HAS_WARNING("-Wold-style-cast") -# define RBIMPL_CAST(expr) \ - RBIMPL_WARNING_PUSH() \ - RBIMPL_WARNING_IGNORED(-Wold-style-cast) \ - (expr) \ - RBIMPL_WARNING_POP() - -#else -# define RBIMPL_CAST(expr) (expr) -#endif - -#endif /* RBIMPL_CAST_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is.h deleted file mode 100644 index 7070b03..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef RBIMPL_COMPILER_IS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_IS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_COMPILER_IS. - */ - -/** - * @brief Checks if the compiler is of given brand. - * @param cc Compiler brand, like `MSVC`. - * @retval true It is. - * @retval false It isn't. - */ -#define RBIMPL_COMPILER_IS(cc) RBIMPL_COMPILER_IS_ ## cc - -#include "ruby/internal/compiler_is/apple.h" -#include "ruby/internal/compiler_is/clang.h" -#include "ruby/internal/compiler_is/gcc.h" -#include "ruby/internal/compiler_is/intel.h" -#include "ruby/internal/compiler_is/msvc.h" -#include "ruby/internal/compiler_is/sunpro.h" -/* :TODO: Other possible compilers to support: - * - * - IBM XL: recent XL are clang-backended so some tweaks like we do for - * Apple's might be needed. - * - * - ARM's armclang: ditto, it can be clang-backended. */ - -#endif /* RBIMPL_COMPILER_IS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/apple.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/apple.h deleted file mode 100644 index a81f1f2..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/apple.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef RBIMPL_COMPILER_IS_APPLE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_IS_APPLE_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines RBIMPL_COMPILER_IS_Apple. - * - * Apple ships clang. Problem is, its `__clang_major__` etc. are not the - * upstream LLVM version, but XCode's. We have to think Apple's is distinct - * from LLVM's, when it comes to compiler detection business in this header - * file. - */ -#if ! defined(__clang__) -# define RBIMPL_COMPILER_IS_Apple 0 - -#elif ! defined(__apple_build_version__) -# define RBIMPL_COMPILER_IS_Apple 0 - -#else -# define RBIMPL_COMPILER_IS_Apple 1 -# define RBIMPL_COMPILER_VERSION_MAJOR __clang_major__ -# define RBIMPL_COMPILER_VERSION_MINOR __clang_minor__ -# define RBIMPL_COMPILER_VERSION_PATCH __clang_patchlevel__ -#endif - -#endif /* RBIMPL_COMPILER_IS_APPLE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/clang.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/clang.h deleted file mode 100644 index 169ff78..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/clang.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef RBIMPL_COMPILER_IS_CLANG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_IS_CLANG_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines RBIMPL_COMPILER_IS_Clang. - */ -#include "ruby/internal/compiler_is/apple.h" - -#if ! defined(__clang__) -# define RBIMPL_COMPILER_IS_Clang 0 - -#elif RBIMPL_COMPILER_IS(Apple) -# define RBIMPL_COMPILER_IS_Clang 0 - -#else -# define RBIMPL_COMPILER_IS_Clang 1 -# define RBIMPL_COMPILER_VERSION_MAJOR __clang_major__ -# define RBIMPL_COMPILER_VERSION_MINOR __clang_minor__ -# define RBIMPL_COMPILER_VERSION_PATCH __clang_patchlevel__ -#endif - -#endif /* RBIMPL_COMPILER_IS_CLANG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/gcc.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/gcc.h deleted file mode 100644 index accc80e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/gcc.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef RBIMPL_COMPILER_IS_GCC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_IS_GCC_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines RBIMPL_COMPILER_IS_GCC. - */ -#include "ruby/internal/compiler_is/apple.h" -#include "ruby/internal/compiler_is/clang.h" -#include "ruby/internal/compiler_is/intel.h" - -#if ! defined(__GNUC__) -# define RBIMPL_COMPILER_IS_GCC 0 - -#elif RBIMPL_COMPILER_IS(Apple) -# define RBIMPL_COMPILER_IS_GCC 0 - -#elif RBIMPL_COMPILER_IS(Clang) -# define RBIMPL_COMPILER_IS_GCC 0 - -#elif RBIMPL_COMPILER_IS(Intel) -# define RBIMPL_COMPILER_IS_GCC 0 - -#else -# define RBIMPL_COMPILER_IS_GCC 1 -# define RBIMPL_COMPILER_VERSION_MAJOR __GNUC__ -# define RBIMPL_COMPILER_VERSION_MINOR __GNUC_MINOR__ -# define RBIMPL_COMPILER_VERSION_PATCH __GNUC_PATCHLEVEL__ -#endif - -#endif /* RBIMPL_COMPILER_IS_GCC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/intel.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/intel.h deleted file mode 100644 index 377946a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/intel.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef RBIMPL_COMPILER_IS_INTEL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_IS_INTEL_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines RBIMPL_COMPILER_IS_Intel. - */ -#if ! defined(__INTEL_COMPILER) -# define RBIMPL_COMPILER_IS_Intel 0 - -#elif ! defined(__INTEL_COMPILER_UPDATE) -# define RBIMPL_COMPILER_IS_Intel 1 -# /* __INTEL_COMPILER = XXYZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (__INTEL_COMPILER / 100) -# define RBIMPL_COMPILER_VERSION_MINOR (__INTEL_COMPILER % 100 / 10) -# define RBIMPL_COMPILER_VERSION_PATCH (__INTEL_COMPILER % 10) - -#else -# define RBIMPL_COMPILER_IS_Intel 1 -# /* __INTEL_COMPILER = XXYZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (__INTEL_COMPILER / 100) -# define RBIMPL_COMPILER_VERSION_MINOR (__INTEL_COMPILER % 100 / 10) -# define RBIMPL_COMPILER_VERSION_PATCH __INTEL_COMPILER_UPDATE -#endif - -#endif /* RBIMPL_COMPILER_IS_INTEL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/msvc.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/msvc.h deleted file mode 100644 index 8a864ea..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/msvc.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef RBIMPL_COMPILER_IS_MSVC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_IS_MSVC_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines RBIMPL_COMPILER_IS_MSVC. - */ -#include "ruby/internal/compiler_is/clang.h" -#include "ruby/internal/compiler_is/intel.h" - -#if ! defined(_MSC_VER) -# define RBIMPL_COMPILER_IS_MSVC 0 - -#elif RBIMPL_COMPILER_IS(Clang) -# define RBIMPL_COMPILER_IS_MSVC 0 - -#elif RBIMPL_COMPILER_IS(Intel) -# define RBIMPL_COMPILER_IS_MSVC 0 - -#elif _MSC_VER >= 1400 -# define RBIMPL_COMPILER_IS_MSVC 1 -# /* _MSC_FULL_VER = XXYYZZZZZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (_MSC_FULL_VER / 10000000) -# define RBIMPL_COMPILER_VERSION_MINOR (_MSC_FULL_VER % 10000000 / 100000) -# define RBIMPL_COMPILER_VERSION_PATCH (_MSC_FULL_VER % 100000) - -#elif defined(_MSC_FULL_VER) -# define RBIMPL_COMPILER_IS_MSVC 1 -# /* _MSC_FULL_VER = XXYYZZZZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (_MSC_FULL_VER / 1000000) -# define RBIMPL_COMPILER_VERSION_MINOR (_MSC_FULL_VER % 1000000 / 10000) -# define RBIMPL_COMPILER_VERSION_PATCH (_MSC_FULL_VER % 10000) - -#else -# define RBIMPL_COMPILER_IS_MSVC 1 -# /* _MSC_VER = XXYY */ -# define RBIMPL_COMPILER_VERSION_MAJOR (_MSC_VER / 100) -# define RBIMPL_COMPILER_VERSION_MINOR (_MSC_VER % 100) -# define RBIMPL_COMPILER_VERSION_PATCH 0 -#endif - -#endif /* RBIMPL_COMPILER_IS_MSVC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/sunpro.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/sunpro.h deleted file mode 100644 index c11c845..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_is/sunpro.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef RBIMPL_COMPILER_IS_SUNPRO_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_IS_SUNPRO_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines RBIMPL_COMPILER_IS_SunPro. - */ -#if ! (defined(__SUNPRO_C) || defined(__SUNPRO_CC)) -# define RBIMPL_COMPILER_IS_SunPro 0 - -#elif defined(__SUNPRO_C) && __SUNPRO_C >= 0x5100 -# define RBIMPL_COMPILER_IS_SunPro 1 -# /* __SUNPRO_C = 0xXYYZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (__SUNPRO_C >> 12) -# define RBIMPL_COMPILER_VERSION_MINOR ((__SUNPRO_C >> 8 & 0xF) * 10 + (__SUNPRO_C >> 4 & 0xF)) -# define RBIMPL_COMPILER_VERSION_PATCH (__SUNPRO_C & 0xF) - -#elif defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5100 -# define RBIMPL_COMPILER_IS_SunPro 1 -# /* __SUNPRO_CC = 0xXYYZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (__SUNPRO_CC >> 12) -# define RBIMPL_COMPILER_VERSION_MINOR ((__SUNPRO_CC >> 8 & 0xF) * 10 + (__SUNPRO_CC >> 4 & 0xF)) -# define RBIMPL_COMPILER_VERSION_PATCH (__SUNPRO_CC & 0xF) - -#elif defined(__SUNPRO_C) -# define RBIMPL_COMPILER_IS_SunPro 1 -# /* __SUNPRO_C = 0xXYZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (__SUNPRO_C >> 8) -# define RBIMPL_COMPILER_VERSION_MINOR (__SUNPRO_C >> 4 & 0xF) -# define RBIMPL_COMPILER_VERSION_PATCH (__SUNPRO_C & 0xF) - -#else -# define RBIMPL_COMPILER_IS_SunPro 1 -# /* __SUNPRO_CC = 0xXYZ */ -# define RBIMPL_COMPILER_VERSION_MAJOR (__SUNPRO_CC >> 8) -# define RBIMPL_COMPILER_VERSION_MINOR (__SUNPRO_CC >> 4 & 0xF) -# define RBIMPL_COMPILER_VERSION_PATCH (__SUNPRO_CC & 0xF) -#endif - -#endif /* RBIMPL_COMPILER_IS_SUNPRO_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_since.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_since.h deleted file mode 100644 index 1929032..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/compiler_since.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef RBIMPL_COMPILER_SINCE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_COMPILER_SINCE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_COMPILER_SINCE. - */ -#include "ruby/internal/compiler_is.h" - -/** - * @brief Checks if the compiler is of given brand and is newer than or equal - * to the passed version. - * @param cc Compiler brand, like `MSVC`. - * @param x Major version. - * @param y Minor version. - * @param z Patchlevel. - * @retval true cc >= x.y.z. - * @retval false otherwise. - */ -#define RBIMPL_COMPILER_SINCE(cc, x, y, z) \ - (RBIMPL_COMPILER_IS(cc) && \ - ((RBIMPL_COMPILER_VERSION_MAJOR > (x)) || \ - ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && \ - ((RBIMPL_COMPILER_VERSION_MINOR > (y)) || \ - ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && \ - (RBIMPL_COMPILER_VERSION_PATCH >= (z))))))) - -/** - * @brief Checks if the compiler is of given brand and is older than the - * passed version. - * @param cc Compiler brand, like `MSVC`. - * @param x Major version. - * @param y Minor version. - * @param z Patchlevel. - * @retval true cc < x.y.z. - * @retval false otherwise. - */ -#define RBIMPL_COMPILER_BEFORE(cc, x, y, z) \ - (RBIMPL_COMPILER_IS(cc) && \ - ((RBIMPL_COMPILER_VERSION_MAJOR < (x)) || \ - ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && \ - ((RBIMPL_COMPILER_VERSION_MINOR < (y)) || \ - ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && \ - (RBIMPL_COMPILER_VERSION_PATCH < (z))))))) - -#endif /* RBIMPL_COMPILER_SINCE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/config.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/config.h deleted file mode 100644 index 51f863f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/config.h +++ /dev/null @@ -1,153 +0,0 @@ -#ifndef RBIMPL_CONFIG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_CONFIG_H -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Thin wrapper to ruby/config.h - */ -#include "ruby/config.h" - -#ifdef RUBY_EXTCONF_H -# include RUBY_EXTCONF_H -#endif - -#include "ruby/internal/compiler_since.h" - -#undef HAVE_PROTOTYPES -#define HAVE_PROTOTYPES 1 - -#undef HAVE_STDARG_PROTOTYPES -#define HAVE_STDARG_PROTOTYPES 1 - -#undef TOKEN_PASTE -#define TOKEN_PASTE(x,y) x##y - -#if defined(__cplusplus) -#/* __builtin_choose_expr and __builtin_types_compatible aren't available -# * on C++. See https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html */ -# undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P -# undef HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P - -/* HAVE_VA_ARGS_MACRO is for C. C++ situations might be different. */ -# undef HAVE_VA_ARGS_MACRO -# if __cplusplus >= 201103L -# define HAVE_VA_ARGS_MACRO -# elif defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__ -# define HAVE_VA_ARGS_MACRO -# elif defined(__INTEL_CXX11_MODE__) -# define HAVE_VA_ARGS_MACRO -# elif RBIMPL_COMPILER_SINCE(MSVC, 16, 0, 0) -# define HAVE_VA_ARGS_MACRO -# else -# /* NG, not known. */ -# endif -#endif - -#if RBIMPL_COMPILER_BEFORE(GCC, 4, 9, 0) -# /* See https://bugs.ruby-lang.org/issues/14221 */ -# undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P -#endif - -#if RBIMPL_COMPILER_BEFORE(GCC, 5, 0, 0) -# /* GCC 4.9.2 reportedly has this feature and is broken. The function is not -# * officially documented below. Seems we should not use it. -# * https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Other-Builtins.html */ -# undef HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN -#endif - -#if defined(__SUNPRO_CC) -# /* Oracle Developer Studio 12.5: GCC compatibility guide says it supports -# * statement expressions. But to our knowledge they support the extension -# * only for C and not for C++. Prove me wrong. Am happy to support them if -# * there is a way. */ -# undef HAVE_STMT_AND_DECL_IN_EXPR -#endif - -#ifndef STRINGIZE0 -# define STRINGIZE(expr) STRINGIZE0(expr) -# define STRINGIZE0(expr) #expr -#endif - -#ifdef AC_APPLE_UNIVERSAL_BUILD -# undef WORDS_BIGENDIAN -# ifdef __BIG_ENDIAN__ -# define WORDS_BIGENDIAN -# endif -#endif - -#ifndef DLEXT_MAXLEN -# define DLEXT_MAXLEN 4 -#endif - -#ifndef RUBY_PLATFORM -# define RUBY_PLATFORM "unknown-unknown" -#endif - -#ifdef UNALIGNED_WORD_ACCESS -# /* Take that. */ -#elif defined(__i386) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(__i386__) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(_M_IX86) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(__x86_64) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(__x86_64__) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(_M_AMD64) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(__powerpc64__) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(__aarch64__) -# define UNALIGNED_WORD_ACCESS 1 -#elif defined(__mc68020__) -# define UNALIGNED_WORD_ACCESS 1 -#else -# define UNALIGNED_WORD_ACCESS 0 -#endif - -/* Detection of __VA_OPT__ */ -#if ! defined(HAVE_VA_ARGS_MACRO) -# undef HAVE___VA_OPT__ - -#elif defined(__cplusplus) -# if __cplusplus > 201703L -# define HAVE___VA_OPT__ -# else -# undef HAVE___VA_OPT__ -# endif -#else -# /* Idea taken from: https://stackoverflow.com/a/48045656 */ -# define RBIMPL_TEST3(q, w, e, ...) e -# define RBIMPL_TEST2(...) RBIMPL_TEST3(__VA_OPT__(,),1,0,0) -# define RBIMPL_TEST1() RBIMPL_TEST2("ruby") -# if RBIMPL_TEST1() -# define HAVE___VA_OPT__ -# else -# undef HAVE___VA_OPT__ -# endif -# undef RBIMPL_TEST1 -# undef RBIMPL_TEST2 -# undef RBIMPL_TEST3 -#endif /* HAVE_VA_ARGS_MACRO */ - -#ifndef USE_RVARGC -# define USE_RVARGC 0 -#endif - -#endif /* RBIMPL_CONFIG_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/constant_p.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/constant_p.h deleted file mode 100644 index 92d69cb..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/constant_p.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RBIMPL_CONSTANT_P_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_CONSTANT_P_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_CONSTANT_P. - * - * Note that __builtin_constant_p can be applicable inside of inline functions, - * according to GCC manual. Clang lacks that feature, though. - * - * @see https://bugs.llvm.org/show_bug.cgi?id=4898 - * @see https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html - */ -#include "ruby/internal/has/builtin.h" - -/** Wraps (or simulates) `__builtin_constant_p` */ -#if RBIMPL_HAS_BUILTIN(__builtin_constant_p) -# define RBIMPL_CONSTANT_P(expr) __builtin_constant_p(expr) -#else -# define RBIMPL_CONSTANT_P(expr) 0 -#endif - -#endif /* RBIMPL_CONSTANT_P_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core.h deleted file mode 100644 index 3f4561c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef RBIMPL_CORE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_CORE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Core data structures, definitions and manipulations. - */ -#include "ruby/internal/core/rarray.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/core/rbignum.h" -#include "ruby/internal/core/rclass.h" -#include "ruby/internal/core/rdata.h" -#include "ruby/internal/core/rfile.h" -#include "ruby/internal/core/rhash.h" -#include "ruby/internal/core/robject.h" -#include "ruby/internal/core/rregexp.h" -#include "ruby/internal/core/rstring.h" -#include "ruby/internal/core/rstruct.h" -#include "ruby/internal/core/rtypeddata.h" -#endif /* RBIMPL_CORE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rarray.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rarray.h deleted file mode 100644 index 9f1d050..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rarray.h +++ /dev/null @@ -1,590 +0,0 @@ -#ifndef RBIMPL_RARRAY_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RARRAY_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RArray. - */ -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/attr/maybe_unused.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/rgengc.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" -#include "ruby/assert.h" - -/** - * @private - * @warning Do not touch this macro. - * @warning It is an implementation detail. - * @warning The value of this macro must match for ruby itself and all - * extension libraries, otherwise serious memory corruption shall - * occur. - */ -#ifndef USE_TRANSIENT_HEAP -# define USE_TRANSIENT_HEAP 1 -#endif - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RArray. - * @return The passed object casted to ::RArray. - */ -#define RARRAY(obj) RBIMPL_CAST((struct RArray *)(obj)) -/** @cond INTERNAL_MACRO */ -#define RARRAY_EMBED_FLAG RARRAY_EMBED_FLAG -#define RARRAY_EMBED_LEN_MASK RARRAY_EMBED_LEN_MASK -#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX -#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT -#if USE_TRANSIENT_HEAP -# define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG -#else -# define RARRAY_TRANSIENT_FLAG 0 -#endif -/** @endcond */ -#define RARRAY_LEN rb_array_len /**< @alias{rb_array_len} */ -#define RARRAY_CONST_PTR rb_array_const_ptr /**< @alias{rb_array_const_ptr} */ -#define RARRAY_CONST_PTR_TRANSIENT rb_array_const_ptr_transient /**< @alias{rb_array_const_ptr_transient} */ - -/** @cond INTERNAL_MACRO */ -#if defined(__fcc__) || defined(__fcc_version) || \ - defined(__FCC__) || defined(__FCC_VERSION) -/* workaround for old version of Fujitsu C Compiler (fcc) */ -# define FIX_CONST_VALUE_PTR(x) ((const VALUE *)(x)) -#else -# define FIX_CONST_VALUE_PTR(x) (x) -#endif - -#define RARRAY_EMBED_LEN RARRAY_EMBED_LEN -#define RARRAY_LENINT RARRAY_LENINT -#define RARRAY_TRANSIENT_P RARRAY_TRANSIENT_P -#define RARRAY_ASET RARRAY_ASET -#define RARRAY_PTR RARRAY_PTR -/** @endcond */ - -/** - * @private - * - * Bits that you can set to ::RBasic::flags. - * - * @warning These enums are not the only bits we use for arrays. - * - * @internal - * - * Unlike strings, flag usages for arrays are scattered across the entire - * source codes. @shyouhei doesn't know the complete list. But what is listed - * here is at least incomplete. - */ -enum ruby_rarray_flags { - /** - * This flag has something to do with memory footprint. If the array is - * "small" enough, ruby tries to be creative to abuse padding bits of - * struct ::RArray for storing its contents. This flag denotes that - * situation. - * - * @warning This bit has to be considered read-only. Setting/clearing - * this bit without corresponding fix up must cause immediate - * SEGV. Also, internal structures of an array change - * dynamically and transparently throughout of its lifetime. - * Don't assume it being persistent. - * - * @internal - * - * 3rd parties must not be aware that there even is more than one way to - * store array elements. It was a bad idea to expose this to them. - */ - RARRAY_EMBED_FLAG = RUBY_FL_USER1, - - /* RUBY_FL_USER2 is for ELTS_SHARED */ - - /** - * When an array employs embedded strategy (see ::RARRAY_EMBED_FLAG), these - * bits are used to store the number of elements actually filled into - * ::RArray::ary. - * - * @internal - * - * 3rd parties must not be aware that there even is more than one way to - * store array elements. It was a bad idea to expose this to them. - */ - RARRAY_EMBED_LEN_MASK = RUBY_FL_USER4 | RUBY_FL_USER3 -#if USE_TRANSIENT_HEAP - , - - /** - * This flag has something to do with an array's "transiency". A transient - * array is an array of young generation (of generational GC), who stores - * its elements inside of dedicated memory pages called a transient heap. - * Not every young generation share that storage scheme, but elder - * generations must no join. - * - * @internal - * - * 3rd parties must not be aware that there even is more than one way to - * store array elements. It was a bad idea to expose this to them. - */ - RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13 -#endif -}; - -/** - * This is an enum because GDB wants it (rather than a macro). People need not - * bother. - */ -enum ruby_rarray_consts { - /** Where ::RARRAY_EMBED_LEN_MASK resides. */ - RARRAY_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 3, - - /** Max possible number elements that can be embedded. */ - RARRAY_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(VALUE) -}; - -/** Ruby's array. */ -struct RArray { - - /** Basic part, including flags and class. */ - struct RBasic basic; - - /** Array's specific fields. */ - union { - - /** - * Arrays that use separated memory region for elements use this - * pattern. - */ - struct { - - /** Number of elements of the array. */ - long len; - - /** Auxiliary info. */ - union { - - /** - * Capacity of `*ptr`. A continuous memory region of at least - * `capa` elements is expected to exist at `*ptr`. This can be - * bigger than `len`. - */ - long capa; - - /** - * Parent of the array. Nowadays arrays can share their - * backend memory regions each other, constructing gigantic - * nest of objects. This situation is called "shared", and - * this is the field to control such properties. - */ -#if defined(__clang__) /* <- clang++ is sane */ || \ - !defined(__cplusplus) /* <- C99 is sane */ || \ - (__cplusplus > 199711L) /* <- C++11 is sane */ - const -#endif - VALUE shared_root; - } aux; - - /** - * Pointer to the C array that holds the elements of the array. In - * the old days each array had dedicated memory regions. That is - * no longer true today, but there still are arrays of such - * properties. This field could be used to point such things. - */ - const VALUE *ptr; - } heap; - - /** - * Embedded elements. When an array is short enough, it uses this area - * to store its elements. In this case the length is encoded into the - * flags. - */ - const VALUE ary[RARRAY_EMBED_LEN_MAX]; - } as; -}; - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * @private - * - * Declares a section of code where raw pointers are used. This is an - * implementation detail of #RARRAY_PTR_USE. People don't use it directly. - * - * @param[in] ary An object of ::RArray. - * @return `ary`'s backend C array. - */ -VALUE *rb_ary_ptr_use_start(VALUE ary); - -/** - * @private - * - * Declares an end of a section formerly started by rb_ary_ptr_use_start(). - * This is an implementation detail of #RARRAY_PTR_USE. People don't use it - * directly. - * - * @param[in] a An object of ::RArray. - */ -void rb_ary_ptr_use_end(VALUE a); - -#if USE_TRANSIENT_HEAP -/** - * Destructively converts an array of transient backend into ordinal one. - * - * @param[out] a An object of ::RArray. - * @pre `a` must be a transient array. - * @post `a` gets out of transient heap, destructively. - */ -void rb_ary_detransient(VALUE a); -#endif -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the length of the array. - * - * @param[in] ary Array in question. - * @return Its number of elements. - * @pre `ary` must be an instance of ::RArray, and must has its - * ::RARRAY_EMBED_FLAG flag set. - * - * @internal - * - * This was a macro before. It was inevitable to be public, since macros are - * global constructs. But should it be forever? Now that it is a function, - * @shyouhei thinks it could just be eliminated, hidden into implementation - * details. - */ -static inline long -RARRAY_EMBED_LEN(VALUE ary) -{ - RBIMPL_ASSERT_TYPE(ary, RUBY_T_ARRAY); - RBIMPL_ASSERT_OR_ASSUME(RB_FL_ANY_RAW(ary, RARRAY_EMBED_FLAG)); - - VALUE f = RBASIC(ary)->flags; - f &= RARRAY_EMBED_LEN_MASK; - f >>= RARRAY_EMBED_LEN_SHIFT; - return RBIMPL_CAST((long)f); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/** - * Queries the length of the array. - * - * @param[in] a Array in question. - * @return Its number of elements. - * @pre `a` must be an instance of ::RArray. - */ -static inline long -rb_array_len(VALUE a) -{ - RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY); - - if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) { - return RARRAY_EMBED_LEN(a); - } - else { - return RARRAY(a)->as.heap.len; - } -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Identical to rb_array_len(), except it differs for the return type. - * - * @param[in] ary Array in question. - * @exception rb_eRangeError Too long. - * @return Its number of elements. - * @pre `ary` must be an instance of ::RArray. - * - * @internal - * - * This API seems redundant but has actual usages. - */ -static inline int -RARRAY_LENINT(VALUE ary) -{ - return rb_long2int(RARRAY_LEN(ary)); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries if the array is a transient array. - * - * @param[in] ary Array in question. - * @retval true Yes it is. - * @retval false No it isn't. - * @pre `ary` must be an instance of ::RArray. - * - * @internal - * - * @shyouhei doesn't understand the benefit of this function called from - * extension libraries. - */ -static inline bool -RARRAY_TRANSIENT_P(VALUE ary) -{ - RBIMPL_ASSERT_TYPE(ary, RUBY_T_ARRAY); - -#if USE_TRANSIENT_HEAP - return RB_FL_ANY_RAW(ary, RARRAY_TRANSIENT_FLAG); -#else - return false; -#endif -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/** - * @private - * - * This is an implementation detail of RARRAY_PTR(). People do not use it - * directly. - * - * @param[in] a An object of ::RArray. - * @return Its backend storage. - */ -static inline const VALUE * -rb_array_const_ptr_transient(VALUE a) -{ - RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY); - - if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) { - return FIX_CONST_VALUE_PTR(RARRAY(a)->as.ary); - } - else { - return FIX_CONST_VALUE_PTR(RARRAY(a)->as.heap.ptr); - } -} - -#if ! USE_TRANSIENT_HEAP -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -#endif -/** - * @private - * - * This is an implementation detail of RARRAY_PTR(). People do not use it - * directly. - * - * @param[in] a An object of ::RArray. - * @return Its backend storage. - * @post `a` is not a transient array. - */ -static inline const VALUE * -rb_array_const_ptr(VALUE a) -{ - RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY); - -#if USE_TRANSIENT_HEAP - if (RARRAY_TRANSIENT_P(a)) { - rb_ary_detransient(a); - } -#endif - return rb_array_const_ptr_transient(a); -} - -/** - * @private - * - * This is an implementation detail of #RARRAY_PTR_USE. People do not use it - * directly. - * - * @param[in] a An object of ::RArray. - * @param[in] allow_transient Whether `a` can be transient or not. - * @return Its backend storage. - * @post `a` is not a transient array unless `allow_transient`. - */ -static inline VALUE * -rb_array_ptr_use_start(VALUE a, - RBIMPL_ATTR_MAYBE_UNUSED() - int allow_transient) -{ - RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY); - -#if USE_TRANSIENT_HEAP - if (!allow_transient) { - if (RARRAY_TRANSIENT_P(a)) { - rb_ary_detransient(a); - } - } -#endif - - return rb_ary_ptr_use_start(a); -} - -/** - * @private - * - * This is an implementation detail of #RARRAY_PTR_USE. People do not use it - * directly. - * - * @param[in] a An object of ::RArray. - * @param[in] allow_transient Whether `a` can be transient or not. - */ -static inline void -rb_array_ptr_use_end(VALUE a, - RBIMPL_ATTR_MAYBE_UNUSED() - int allow_transient) -{ - RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY); - rb_ary_ptr_use_end(a); -} - -/** - * @private - * - * This is an implementation detail of #RARRAY_PTR_USE. People do not use it - * directly. - */ -#define RBIMPL_RARRAY_STMT(flag, ary, var, expr) do { \ - RBIMPL_ASSERT_TYPE((ary), RUBY_T_ARRAY); \ - const VALUE rbimpl_ary = (ary); \ - VALUE *var = rb_array_ptr_use_start(rbimpl_ary, (flag)); \ - expr; \ - rb_array_ptr_use_end(rbimpl_ary, (flag)); \ -} while (0) - -/** - * @private - * - * This is an implementation detail of #RARRAY_PTR_USE. People do not use it - * directly. - */ -#define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0) - -/** - * @private - * - * This is an implementation detail of #RARRAY_PTR_USE. People do not use it - * directly. - */ -#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0) - -/** - * Declares a section of code where raw pointers are used. In case you need to - * touch the raw C array instead of polite CAPIs, then that operation shall be - * wrapped using this macro. - * - * ```CXX - * const auto ary = rb_eval_string("[...]"); - * const auto len = RARRAY_LENINT(ary); - * const auto symwrite = rb_intern("write"); - * - * RARRAY_PTR_USE(ary, ptr, { - * rb_funcallv(rb_stdout, symwrite, len, ptr); - * }); - * ``` - * - * @param ary An object of ::RArray. - * @param ptr_name A variable name which points the C array in `expr`. - * @param expr The expression that touches `ptr_name`. - * - * @internal - * - * For historical reasons use of this macro is not enforced. There are - * extension libraries in the wild which call RARRAY_PTR() without it. We want - * them use it... Maybe some transition path can be implemented later. - */ -#define RARRAY_PTR_USE(ary, ptr_name, expr) \ - RBIMPL_RARRAY_STMT(0, ary, ptr_name, expr) - -/** - * @private - * - * This is an implementation detail of #RARRAY_PTR_USE_TRANSIENT. People do - * not use it directly. - */ -#define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1) - -/** - * @private - * - * This is an implementation detail of #RARRAY_PTR_USE_TRANSIENT. People do - * not use it directly. - */ -#define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1) - -/** - * Identical to #RARRAY_PTR_USE, except the pointer can be a transient one. - * - * @param ary An object of ::RArray. - * @param ptr_name A variable name which points the C array in `expr`. - * @param expr The expression that touches `ptr_name`. - */ -#define RARRAY_PTR_USE_TRANSIENT(ary, ptr_name, expr) \ - RBIMPL_RARRAY_STMT(1, ary, ptr_name, expr) - -/** - * Wild use of a C pointer. This function accesses the backend storage - * directly. This is slower than #RARRAY_PTR_USE_TRANSIENT. It exercises - * extra manoeuvres to protect our generational GC. Use of this function is - * considered archaic. Use a modern way instead. - * - * @param[in] ary An object of ::RArray. - * @return The backend C array. - * - * @internal - * - * That said... there are extension libraries in the wild who uses it. We - * cannot but continue supporting. - */ -static inline VALUE * -RARRAY_PTR(VALUE ary) -{ - RBIMPL_ASSERT_TYPE(ary, RUBY_T_ARRAY); - - VALUE tmp = RB_OBJ_WB_UNPROTECT_FOR(ARRAY, ary); - return RBIMPL_CAST((VALUE *)RARRAY_CONST_PTR(tmp)); -} - -/** - * Assigns an object in an array. - * - * @param[out] ary Destination array object. - * @param[in] i Index of `ary`. - * @param[in] v Arbitrary ruby object. - * @pre `ary` must be an instance of ::RArray. - * @pre `ary`'s length must be longer than or equal to `i`. - * @pre `i` must be greater than or equal to zero. - * @post `ary`'s `i`th element is set to `v`. - */ -static inline void -RARRAY_ASET(VALUE ary, long i, VALUE v) -{ - RARRAY_PTR_USE_TRANSIENT(ary, ptr, - RB_OBJ_WRITE(ary, &ptr[i], v)); -} - -/** - * @deprecated - * - * :FIXME: we want to convert RARRAY_AREF into an inline function (to add rooms - * for more sanity checks). However there were situations where the address of - * this macro is taken i.e. &RARRAY_AREF(...). They cannot be possible if this - * is not a macro. Such usages are abuse, and we eliminated them internally. - * However we are afraid of similar things to remain in the wild. This macro - * remains as it is due to that. If we could warn such usages we can set a - * transition path, but currently no way is found to do so. - */ -#define RARRAY_AREF(a, i) RARRAY_CONST_PTR_TRANSIENT(a)[i] - -#endif /* RBIMPL_RARRAY_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbasic.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbasic.h deleted file mode 100644 index 4617f74..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbasic.h +++ /dev/null @@ -1,158 +0,0 @@ -#ifndef RBIMPL_RBASIC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RBASIC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RBasic. - */ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/attr/forceinline.h" -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/value.h" -#include "ruby/assert.h" - -/** - * Convenient casting macro. - * - * @param obj Arbitrary Ruby object. - * @return The passed object casted to ::RBasic. - */ -#define RBASIC(obj) RBIMPL_CAST((struct RBasic *)(obj)) -/** @cond INTERNAL_MACRO */ -#define RBASIC_CLASS RBASIC_CLASS -#define RBIMPL_RVALUE_EMBED_LEN_MAX 3 -#define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX -#define RBIMPL_EMBED_LEN_MAX_OF(T) \ - RBIMPL_CAST((int)(sizeof(VALUE[RBIMPL_RVALUE_EMBED_LEN_MAX]) / (sizeof(T)))) -/** @endcond */ - -/** - * This is an enum because GDB wants it (rather than a macro). People need not - * bother. - */ -enum ruby_rvalue_flags { - /** Max possible number of objects that can be embedded. */ - RVALUE_EMBED_LEN_MAX = RBIMPL_RVALUE_EMBED_LEN_MAX -}; - -/** - * Ruby's object's, base components. Every single ruby objects have them in - * common. - */ -struct -RUBY_ALIGNAS(SIZEOF_VALUE) -RBasic { - - /** - * Per-object flags. Each ruby objects have their own characteristics - * apart from their classes. For instance whether an object is frozen or - * not is not controlled by its class. This is where such properties are - * stored. - * - * @see enum ::ruby_fl_type - * - * @note This is ::VALUE rather than an enum for alignment purpose. Back - * in the 1990s there were no such thing like `_Alignas` in C. - */ - VALUE flags; - - /** - * Class of an object. Every object has its class. Also, everything is an - * object in Ruby. This means classes are also objects. Classes have - * their own classes, classes of classes have their classes, too ... and - * it recursively continues forever. - * - * Also note the `const` qualifier. In ruby an object cannot "change" its - * class. - */ - const VALUE klass; - -#ifdef __cplusplus - public: - RBIMPL_ATTR_CONSTEXPR(CXX11) - RBIMPL_ATTR_ARTIFICIAL() - RBIMPL_ATTR_FORCEINLINE() - RBIMPL_ATTR_NOALIAS() - /** - * We need to define this explicit constructor because the field `klass` is - * const-qualified above, which effectively defines the implicit default - * constructor as "deleted" (as of C++11) -- No way but to define one by - * ourselves. - */ - RBasic() : - flags(RBIMPL_VALUE_NULL), - klass(RBIMPL_VALUE_NULL) - { - } -#endif -}; - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * Make the object invisible from Ruby code. - * - * It is useful to let Ruby's GC manage your internal data structure -- The - * object keeps being managed by GC, but `ObjectSpace.each_object` never yields - * the object. - * - * Note that the object also lose a way to call a method on it. - * - * @param[out] obj A Ruby object. - * @return The passed object. - * @post The object is destructively modified to be invisible. - * @see rb_obj_reveal - */ -VALUE rb_obj_hide(VALUE obj); - -/** - * Make a hidden object visible again. - * - * It is the caller's responsibility to pass the right `klass` which `obj` - * originally used to belong to. - * - * @param[out] obj A Ruby object. - * @param[in] klass Class of `obj`. - * @return Passed `obj`. - * @pre `obj` was previously hidden. - * @post `obj`'s class is `klass`. - * @see rb_obj_hide - */ -VALUE rb_obj_reveal(VALUE obj, VALUE klass); /* do not use this API to change klass information */ -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the class of an object. - * - * @param[in] obj An object. - * @return Its class. - */ -static inline VALUE -RBASIC_CLASS(VALUE obj) -{ - RBIMPL_ASSERT_OR_ASSUME(! RB_SPECIAL_CONST_P(obj)); - return RBASIC(obj)->klass; -} - -#endif /* RBIMPL_RBASIC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbignum.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbignum.h deleted file mode 100644 index 1d31743..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rbignum.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef RBIMPL_RBIGNUM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RBIGNUM_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate struct RBignum. - * @note The struct RBignum itself is opaque. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" -#include "ruby/internal/stdbool.h" - -#define RBIGNUM_SIGN rb_big_sign /**< @alias{rb_big_sign} */ - -/** @cond INTERNAL_MACRO */ -#define RBIGNUM_POSITIVE_P RBIGNUM_POSITIVE_P -#define RBIGNUM_NEGATIVE_P RBIGNUM_NEGATIVE_P -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * The "sign" of a bignum. - * - * @param[in] num An object of RBignum. - * @retval 1 It is greater than or equal to zero. - * @retval 0 It is less than zero. - * - * @internal - * - * Implementation wise, unlike fixnums (which are 2's complement), bignums are - * signed magnitude system. Theoretically it could be possible to have - * negative zero instances. But in reality there is no way to create such - * thing. Nobody ever needed that kind of insanity. - */ -int rb_big_sign(VALUE num); -RBIMPL_SYMBOL_EXPORT_END() - -/** - * Checks if the bignum is positive. - * @param[in] b An object of RBignum. - * @retval false `b` is less than zero. - * @retval true Otherwise. - */ -static inline bool -RBIGNUM_POSITIVE_P(VALUE b) -{ - RBIMPL_ASSERT_TYPE(b, RUBY_T_BIGNUM); - return RBIGNUM_SIGN(b); -} - -/** - * Checks if the bignum is negative. - * @param[in] b An object of RBignum. - * @retval true `b` is less than zero. - * @retval false Otherwise. - */ -static inline bool -RBIGNUM_NEGATIVE_P(VALUE b) -{ - RBIMPL_ASSERT_TYPE(b, RUBY_T_BIGNUM); - return ! RBIGNUM_POSITIVE_P(b); -} - -#endif /* RBIMPL_RBIGNUM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rclass.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rclass.h deleted file mode 100644 index 13a33a2..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rclass.h +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef RBIMPL_RCLASS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RCLASS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate struct RClass. - * @note The struct RClass itself is opaque. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/cast.h" - -/** @cond INTERNAL_MACRO */ -#define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID -#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT -#define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT -/** @endcond */ - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an RClass. - * @return The passed object casted to RClass. - */ -#define RCLASS(obj) RBIMPL_CAST((struct RClass *)(obj)) - -/** @alias{RCLASS} */ -#define RMODULE RCLASS - -/** @alias{rb_class_get_superclass} */ -#define RCLASS_SUPER rb_class_get_superclass - -/** - * @private - * - * Bits that you can set to ::RBasic::flags. - * - * @internal - * - * Why is it here, given RClass itself is not? - */ -enum ruby_rmodule_flags { - - /** - * This flag has something to do with refinements... I guess? It is set on - * occasions for modules that are refined by refinements, but it seems - * ... nobody cares about such things? Not sure but this flag could - * perhaps be a write-only information. - */ - RMODULE_IS_OVERLAID = RUBY_FL_USER2, - - /** - * This flag has something to do with refinements. A module created using - * rb_mod_refine() has this flag set. This is the bit which controls - * difference between normal inclusion versus refinements. - */ - RMODULE_IS_REFINEMENT = RUBY_FL_USER3, - - /** - * This flag has something to do with refinements. This is set when a - * (non-refinement) module is included into another module, which is a - * refinement. This amends the way `super` searches for a super method. - * - * ```ruby - * class Foo - * def foo - * "Foo" - * end - * end - * - * module Bar - * def foo - * "[#{super}]" # this - * end - * end - * - * module Baz - * refine Foo do - * include Bar - * def foo - * "<#{super}>" - * end - * end - * end - * - * using Baz - * Foo.new.foo # => "[]" - * ``` - * - * The `super` marked with "this" comment shall look for overlaid - * `Foo#foo`, which is not the ordinal method lookup direction. - */ - RMODULE_INCLUDED_INTO_REFINEMENT = RUBY_FL_USER4 -}; - -struct RClass; /* Opaque, declared here for RCLASS() macro. */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * Returns the superclass of a class. - * @param[in] klass An object of RClass. - * @retval RUBY_Qfalse `klass` has no super class. - * @retval otherwise Raw superclass of `klass` - * @see rb_class_superclass - * - * ### Q&A ### - * - * - Q: How can a class have no super class? - * - * - A: `klass` could be a module. Or it could be ::rb_cBasicObject. - * - * - Q: What do you mean by "raw" superclass? - * - * - A: This is a really good question. The answer is that this function - * returns something different from what you would normally expect. On - * occasions ruby inserts hidden classes in a hierarchy of class - * inheritance behind-the-scene. Such classes are called "iclass"es and - * distinguished using ::RUBY_T_ICLASS in C level. They are truly - * transparent from Ruby level but can be accessed from C, by using this - * API. - */ -VALUE rb_class_get_superclass(VALUE klass); -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_RCLASS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rdata.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rdata.h deleted file mode 100644 index f6656b6..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rdata.h +++ /dev/null @@ -1,410 +0,0 @@ -#ifndef RBIMPL_RDATA_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RDATA_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RData. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/warning.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" -#include "ruby/defines.h" - -/** @cond INTERNAL_MACRO */ -#ifdef RUBY_UNTYPED_DATA_WARNING -# /* Take that. */ -#elif defined(RUBY_EXPORT) -# define RUBY_UNTYPED_DATA_WARNING 1 -#else -# define RUBY_UNTYPED_DATA_WARNING 0 -#endif - -#define RBIMPL_DATA_FUNC(f) RBIMPL_CAST((void (*)(void *))(f)) -#define RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() \ - RBIMPL_ATTR_WARNING(("untyped Data is unsafe; use TypedData instead")) \ - RBIMPL_ATTR_DEPRECATED(("by TypedData")) - -#define RBIMPL_MACRO_SELECT(x, y) x ## y -#define RUBY_MACRO_SELECT(x, y) RBIMPL_MACRO_SELECT(x, y) -/** @endcond */ - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RData. - * @return The passed object casted to ::RData. - */ -#define RDATA(obj) RBIMPL_CAST((struct RData *)(obj)) - -/** - * Convenient getter macro. - * - * @param obj An object, which is in fact an ::RData. - * @return The passed object's ::RData::data field. - */ -#define DATA_PTR(obj) RDATA(obj)->data - -/** - * This is a value you can set to ::RData::dfree. Setting this means the data - * was allocated using ::ruby_xmalloc() (or variants), and shall be freed using - * ::ruby_xfree(). - * - * @warning Do not use this if you want to use system malloc, because the - * system and Ruby might or might not share the same malloc - * implementation. - */ -#define RUBY_DEFAULT_FREE RBIMPL_DATA_FUNC(-1) - -/** - * This is a value you can set to ::RData::dfree. Setting this means the data - * is managed by someone else, like, statically allocated. Of course you are - * on your own then. - */ -#define RUBY_NEVER_FREE RBIMPL_DATA_FUNC(0) - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RUBY_UNTYPED_DATA_FUNC(f) f RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() - -/* -#define RUBY_DATA_FUNC(func) ((void (*)(void*))(func)) -*/ - -/** - * This is the type of callbacks registered to ::RData. The argument is the - * `data` field. - */ -typedef void (*RUBY_DATA_FUNC)(void*); - -/** - * @deprecated - * - * Old "untyped" user data. It has roughly the same usage as struct - * ::RTypedData, but lacked several features such as support for compaction GC. - * Use of this struct is not recommended any longer. If it is dead necessary, - * please inform the core devs about your usage. - * - * @internal - * - * @shyouhei tried to add RBIMPL_ATTR_DEPRECATED for this type but that yielded - * too many warnings in the core. Maybe we want to retry later... Just add - * deprecated document for now. - */ -struct RData { - - /** Basic part, including flags and class. */ - struct RBasic basic; - - /** - * This function is called when the object is experiencing GC marks. If it - * contains references to other Ruby objects, you need to mark them also. - * Otherwise GC will smash your data. - * - * @see rb_gc_mark() - * @warning This is called during GC runs. Object allocations are - * impossible at that moment (that is why GC runs). - */ - RUBY_DATA_FUNC dmark; - - /** - * This function is called when the object is no longer used. You need to - * do whatever necessary to avoid memory leaks. - * - * @warning This is called during GC runs. Object allocations are - * impossible at that moment (that is why GC runs). - */ - RUBY_DATA_FUNC dfree; - - /** Pointer to the actual C level struct that you want to wrap. */ - void *data; -}; - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * This is the primitive way to wrap an existing C struct into ::RData. - * - * @param[in] klass Ruby level class of the returning object. - * @param[in] datap Pointer to the target C struct. - * @param[in] dmark Mark function. - * @param[in] dfree Free function. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return An allocated object that wraps `datap`. - */ -VALUE rb_data_object_wrap(VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree); - -/** - * Identical to rb_data_object_wrap(), except it allocates a new data region - * internally instead of taking an existing one. The allocation is done using - * ruby_calloc(). Hence it makes no sense to pass anything other than - * ::RUBY_DEFAULT_FREE to the last argument. - * - * @param[in] klass Ruby level class of the returning object. - * @param[in] size Requested size of memory to allocate. - * @param[in] dmark Mark function. - * @param[in] dfree Free function. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return An allocated object that wraps a new `size` byte region. - */ -VALUE rb_data_object_zalloc(VALUE klass, size_t size, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree); - -/** - * @private - * Documented in include/ruby/internal/globals.h - */ -RUBY_EXTERN VALUE rb_cObject; -RBIMPL_SYMBOL_EXPORT_END() - -/** - * Converts sval, a pointer to your struct, into a Ruby object. - * - * @param klass A ruby level class. - * @param mark Mark function. - * @param free Free function. - * @param sval A pointer to your struct. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return A created Ruby object. - */ -#define Data_Wrap_Struct(klass, mark, free, sval) \ - rb_data_object_wrap( \ - (klass), \ - (sval), \ - RBIMPL_DATA_FUNC(mark), \ - RBIMPL_DATA_FUNC(free)) - -/** - * @private - * - * This is an implementation detail of #Data_Make_Struct. People don't use it - * directly. - * - * @param result Variable name of created Ruby object. - * @param klass Ruby level class of the object. - * @param type Type name of the C struct. - * @param size Size of the C struct. - * @param mark Mark function. - * @param free Free function. - * @param sval Variable name of created C struct. - */ -#define Data_Make_Struct0(result, klass, type, size, mark, free, sval) \ - VALUE result = rb_data_object_zalloc( \ - (klass), \ - (size), \ - RBIMPL_DATA_FUNC(mark), \ - RBIMPL_DATA_FUNC(free)); \ - (sval) = RBIMPL_CAST((type *)DATA_PTR(result)); \ - RBIMPL_CAST(/*suppress unused variable warnings*/(void)(sval)) - -/** - * Identical to #Data_Wrap_Struct, except it allocates a new data region - * internally instead of taking an existing one. The allocation is done using - * ruby_calloc(). Hence it makes no sense to pass anything other than - * ::RUBY_DEFAULT_FREE to the `free` argument. - * - * @param klass Ruby level class of the returning object. - * @param type Type name of the C struct. - * @param mark Mark function. - * @param free Free function. - * @param sval Variable name of created C struct. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return A created Ruby object. - */ -#ifdef HAVE_STMT_AND_DECL_IN_EXPR -#define Data_Make_Struct(klass, type, mark, free, sval) \ - RB_GNUC_EXTENSION({ \ - Data_Make_Struct0( \ - data_struct_obj, \ - klass, \ - type, \ - sizeof(type), \ - mark, \ - free, \ - sval); \ - data_struct_obj; \ - }) -#else -#define Data_Make_Struct(klass, type, mark, free, sval) \ - rb_data_object_make( \ - (klass), \ - RBIMPL_DATA_FUNC(mark), \ - RBIMPL_DATA_FUNC(free), \ - RBIMPL_CAST((void **)&(sval)), \ - sizeof(type)) -#endif - -/** - * Obtains a C struct from inside of a wrapper Ruby object. - * - * @param obj An instance of ::RData. - * @param type Type name of the C struct. - * @param sval Variable name of obtained C struct. - * @return Unwrapped C struct that `obj` holds. - */ -#define Data_Get_Struct(obj, type, sval) \ - ((sval) = RBIMPL_CAST((type*)rb_data_object_get(obj))) - -RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() -/** - * @private - * - * This is an implementation detail of rb_data_object_wrap(). People don't use - * it directly. - * - * @param[in] klass Ruby level class of the returning object. - * @param[in] ptr Pointer to the target C struct. - * @param[in] mark Mark function. - * @param[in] free Free function. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return An allocated object that wraps `datap`. - */ -static inline VALUE -rb_data_object_wrap_warning(VALUE klass, void *ptr, RUBY_DATA_FUNC mark, RUBY_DATA_FUNC free) -{ - return rb_data_object_wrap(klass, ptr, mark, free); -} - -/** - * @private - * - * This is an implementation detail of #Data_Get_Struct. People don't use it - * directly. - * - * @param[in] obj An instance of ::RData. - * @return Unwrapped C struct that `obj` holds. - */ -static inline void * -rb_data_object_get(VALUE obj) -{ - Check_Type(obj, RUBY_T_DATA); - return DATA_PTR(obj); -} - -RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() -/** - * @private - * - * This is an implementation detail of #Data_Get_Struct. People don't use it - * directly. - * - * @param[in] obj An instance of ::RData. - * @return Unwrapped C struct that `obj` holds. - */ -static inline void * -rb_data_object_get_warning(VALUE obj) -{ - return rb_data_object_get(obj); -} - -#if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P) -# define rb_data_object_wrap_warning(klass, ptr, mark, free) \ - RB_GNUC_EXTENSION( \ - __builtin_choose_expr( \ - __builtin_constant_p(klass) && !(klass), \ - rb_data_object_wrap(klass, ptr, mark, free), \ - (rb_data_object_wrap_warning)(klass, ptr, mark, free))) -#endif - -/** - * This is an implementation detail of #Data_Make_Struct. People don't use it - * directly. - * - * @param[in] klass Ruby level class of the returning object. - * @param[in] mark_func Mark function. - * @param[in] free_func Free function. - * @param[in] datap Variable of created C struct. - * @param[in] size Requested size of allocation. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return A created Ruby object. - * @post `*datap` holds the created C struct. - */ -static inline VALUE -rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size) -{ - Data_Make_Struct0(result, klass, void, size, mark_func, free_func, *datap); - return result; -} - -RBIMPL_ATTR_DEPRECATED(("by: rb_data_object_wrap")) -/** @deprecated This function was renamed to rb_data_object_wrap(). */ -static inline VALUE -rb_data_object_alloc(VALUE klass, void *data, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree) -{ - return rb_data_object_wrap(klass, data, dmark, dfree); -} - -RBIMPL_ATTR_DEPRECATED(("by: rb_cObject. Will be removed in 3.1.")) -RBIMPL_ATTR_PURE() -/** - * @private - * - * @deprecated There once was a variable called rb_cData, which no longer - * exists today. This function is a function because we want - * warnings for the usages. - */ -static inline VALUE -rb_cData(void) -{ - return rb_cObject; -} - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define rb_cData rb_cData() - -/** @cond INTERNAL_MACRO */ -#define rb_data_object_wrap_0 rb_data_object_wrap -#define rb_data_object_wrap_1 rb_data_object_wrap_warning -#define rb_data_object_wrap_2 rb_data_object_wrap_ /* Used here vvvv */ -#define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_2, RUBY_UNTYPED_DATA_WARNING) -#define rb_data_object_get_0 rb_data_object_get -#define rb_data_object_get_1 rb_data_object_get_warning -#define rb_data_object_get_2 rb_data_object_get_ /* Used here vvvv */ -#define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_2, RUBY_UNTYPED_DATA_WARNING) -#define rb_data_object_make_0 rb_data_object_make -#define rb_data_object_make_1 rb_data_object_make_warning -#define rb_data_object_make_2 rb_data_object_make_ /* Used here vvvv */ -#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_2, RUBY_UNTYPED_DATA_WARNING) -/** @endcond */ -#endif /* RBIMPL_RDATA_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rfile.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rfile.h deleted file mode 100644 index f8dddde..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rfile.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef RBIMPL_RFILE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RFILE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RFile. - */ -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/cast.h" - -/* rb_io_t is in ruby/io.h. The header file has historically not been included - * into ruby/ruby.h. We follow that tradition. */ -struct rb_io_t; - -/** - * Ruby's File and IO. Ruby's IO are not just file descriptors. They have - * buffers. They also have encodings. Various information are controlled - * using this struct. - */ -struct RFile { - - /** Basic part, including flags and class. */ - struct RBasic basic; - - /** IO's specific fields. */ - struct rb_io_t *fptr; -}; - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RFile. - * @return The passed object casted to ::RFile. - */ -#define RFILE(obj) RBIMPL_CAST((struct RFile *)(obj)) -#endif /* RBIMPL_RFILE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rhash.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rhash.h deleted file mode 100644 index 61d2c15..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rhash.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef RBIMPL_RHASH_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RHASH_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate struct RHash. - * @note The struct RHash itself is opaque. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#if !defined RUBY_EXPORT && !defined RUBY_NO_OLD_COMPATIBILITY -# include "ruby/backward.h" -#endif - -/** - * Retrieves the internal table. - * - * @param[in] h An instance of RHash. - * @pre `h` must be of ::RUBY_T_HASH. - * @return A struct st_table which has the contents of this hash. - * @note Nowadays as Ruby evolved over ages, RHash has multiple backend - * storage engines. `h`'s backend is not guaranteed to be a - * st_table. This function creates one when necessary. - */ -#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__) - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - * - * @internal - * - * Declaration of rb_hash_iter_lev() is at include/ruby/backward.h. - */ -#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h) - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - * - * @internal - * - * Declaration of rb_hash_ifnone() is at include/ruby/backward.h. - */ -#define RHASH_IFNONE(h) rb_hash_ifnone(h) - -/** - * Queries the size of the hash. Size here means the number of keys that the - * hash stores. - * - * @param[in] h An instance of RHash. - * @pre `h` must be of ::RUBY_T_HASH. - * @return The size of the hash. - */ -#define RHASH_SIZE(h) rb_hash_size_num(h) - -/** - * Checks if the hash is empty. - * - * @param[in] h An instance of RHash. - * @pre `h` must be of ::RUBY_T_HASH. - * @retval true It is. - * @retval false It isn't. - */ -#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0) - -/** - * Destructively updates the default value of the hash. - * - * @param[out] h An instance of RHash. - * @param[in] ifnone Arbitrary default value. - * @pre `h` must be of ::RUBY_T_HASH. - * - * @internal - * - * But why you can set this, given rb_hash_ifnone() doesn't exist? - */ -#define RHASH_SET_IFNONE(h, ifnone) rb_hash_set_ifnone((VALUE)h, ifnone) - -struct st_table; /* in ruby/st.h */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * This is the implementation detail of #RHASH_SIZE. People don't call this - * directly. - * - * @param[in] hash An instance of RHash. - * @pre `hash` must be of ::RUBY_T_HASH. - * @return The size of the hash. - */ -size_t rb_hash_size_num(VALUE hash); - -/** - * This is the implementation detail of #RHASH_TBL. People don't call this - * directly. - * - * @param[in] hash An instance of RHash. - * @param[in] file The `__FILE__`. - * @param[in] line The `__LINE__`. - * @pre `hash` must be of ::RUBY_T_HASH. - * @return Table that has the contents of the hash. - */ -struct st_table *rb_hash_tbl(VALUE hash, const char *file, int line); - -/** - * This is the implementation detail of #RHASH_SET_IFNONE. People don't call - * this directly. - * - * @param[out] hash An instance of RHash. - * @param[in] ifnone Arbitrary default value. - * @pre `hash` must be of ::RUBY_T_HASH. - */ -VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone); -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_RHASH_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rmatch.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rmatch.h deleted file mode 100644 index 2d2fd89..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rmatch.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef RBIMPL_RMATCH_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RMATCH_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RMatch. - */ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" -#include "ruby/assert.h" - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RMatch. - * @return The passed object casted to ::RMatch. - */ -#define RMATCH(obj) RBIMPL_CAST((struct RMatch *)(obj)) -/** @cond INTERNAL_MACRO */ -#define RMATCH_REGS RMATCH_REGS -/** @endcond */ - -struct re_patter_buffer; /* a.k.a. OnigRegexType, defined in onigmo.h */ -struct re_registers; /* Also in onigmo.h */ - -/** - * @old{re_pattern_buffer} - * - * @internal - * - * @shyouhei wonders: is anyone actively using this typedef ...? - */ -typedef struct re_pattern_buffer Regexp; - -/** - * Represents the region of a capture group. This is basically for caching - * purpose. re_registers have similar concepts (`beg` and `end`) but they are - * in `ptrdiff_t*`. In order for us to implement `MatchData#offset` that info - * has to be converted to offset integers. This is the struct to hold such - * things. - * - * @internal - * - * But why on earth it has to be visible from extension libraries? - */ -struct rmatch_offset { - long beg; /**< Beginning of a group. */ - long end; /**< End of a group. */ -}; - -/** Represents a match. */ -struct rmatch { - /** - * "Registers" of a match. This is a quasi-opaque struct that holds - * execution result of a match. Roughly resembles `&~`. - */ - struct re_registers regs; - - /** Capture group offsets, in C array. */ - struct rmatch_offset *char_offset; - - /** Number of ::rmatch_offset that ::rmatch::char_offset holds. */ - int char_offset_num_allocated; -}; - -/** - * Regular expression execution context. When a regular expression "matches" - * to a string, it generates capture groups etc. This struct holds that info. - * Visible from Ruby as an instance of `MatchData`. - * - * @note There is no way for extension libraries to manually generate this - * struct except by actually exercising the match operation of a regular - * expression. - */ -struct RMatch { - - /** Basic part, including flags and class. */ - struct RBasic basic; - - /** - * The target string that the match was made against. - */ - VALUE str; - - /** - * The result of this match. - */ - struct rmatch *rmatch; - - /** - * The expression of this match. - */ - VALUE regexp; /* RRegexp */ -}; - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the raw ::re_registers. - * - * @param[in] match A match object - * @pre `match` must be of ::RMatch. - * @return Its execution result. - * @note Good. So you are aware of the fact that it could return NULL. - * Yes. It actually does. This is a really bizarre thing. The - * situation is about `String#gsub` and its family. They take - * strings as arguments, like `"foo".sub("bar", "baz")`. On such - * situations, in order to optimise memory allocations, these - * methods do not involve regular expressions at all. They just - * sequentially scan the receiver. Okay. The story begins here. - * Even when they do not kick our regexp engine, there must be - * backref objects e.g. `$&`. But how? You know what? Ruby fakes - * them. It allocates an empty ::RMatch and behaves as if there - * were execution contexts. In reality there weren't. No - * ::re_registers are allocated then. There is no way for this - * function but to return NULL for those fake ::RMatch. This is - * the reason for the nullability of this function. - */ -static inline struct re_registers * -RMATCH_REGS(VALUE match) -{ - RBIMPL_ASSERT_TYPE(match, RUBY_T_MATCH); - RBIMPL_ASSERT_OR_ASSUME(RMATCH(match)->rmatch != NULL); - return &RMATCH(match)->rmatch->regs; -} - -#endif /* RBIMPL_RMATCH_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/robject.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/robject.h deleted file mode 100644 index f202806..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/robject.h +++ /dev/null @@ -1,185 +0,0 @@ -#ifndef RBIMPL_ROBJECT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ROBJECT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RObject. - */ -#include "ruby/internal/config.h" - -#ifdef HAVE_STDINT_H -# include -#endif - -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RRegexp. - * @return The passed object casted to ::RRegexp. - */ -#define ROBJECT(obj) RBIMPL_CAST((struct RObject *)(obj)) -/** @cond INTERNAL_MACRO */ -#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX -#define ROBJECT_EMBED ROBJECT_EMBED -#define ROBJECT_NUMIV ROBJECT_NUMIV -#define ROBJECT_IVPTR ROBJECT_IVPTR -#define ROBJECT_IV_INDEX_TBL ROBJECT_IV_INDEX_TBL -/** @endcond */ - -/** - * @private - * - * Bits that you can set to ::RBasic::flags. - */ -enum ruby_robject_flags { - /** - * This flag has something to do with memory footprint. If the object is - * "small" enough, ruby tries to be creative to abuse padding bits of - * struct ::RObject for storing instance variables. This flag denotes that - * situation. - * - * @warning This bit has to be considered read-only. Setting/clearing - * this bit without corresponding fix up must cause immediate - * SEGV. Also, internal structures of an object change - * dynamically and transparently throughout of its lifetime. - * Don't assume it being persistent. - * - * @internal - * - * 3rd parties must not be aware that there even is more than one way to - * store instance variables. Might better be hidden. - */ - ROBJECT_EMBED = RUBY_FL_USER1 -}; - -/** - * This is an enum because GDB wants it (rather than a macro). People need not - * bother. - */ -enum ruby_robject_consts { - /** Max possible number of instance variables that can be embedded. */ - ROBJECT_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(VALUE) -}; - -struct st_table; - -/** - * Ruby's ordinal objects. Unless otherwise special cased, all predefined and - * user-defined classes share this struct to hold their instances. - */ -struct RObject { - - /** Basic part, including flags and class. */ - struct RBasic basic; - - /** Object's specific fields. */ - union { - - /** - * Object that use separated memory region for instance variables use - * this pattern. - */ - struct { - - /** - * Number of instance variables. This is per object; objects might - * differ in this field even if they have the identical classes. - */ - uint32_t numiv; - - /** Pointer to a C array that holds instance variables. */ - VALUE *ivptr; - - /** - * This is a table that holds instance variable name to index - * mapping. Used when accessing instance variables using names. - * - * @internal - * - * This is a shortcut for `RCLASS_IV_INDEX_TBL(rb_obj_class(obj))`. - */ - struct st_table *iv_index_tbl; - } heap; - - /** - * Embedded instance variables. When an object is small enough, it - * uses this area to store the instance variables. - */ - VALUE ary[ROBJECT_EMBED_LEN_MAX]; - } as; -}; - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the number of instance variables. - * - * @param[in] obj Object in question. - * @return Its number of instance variables. - * @pre `obj` must be an instance of ::RObject. - */ -static inline uint32_t -ROBJECT_NUMIV(VALUE obj) -{ - RBIMPL_ASSERT_TYPE(obj, RUBY_T_OBJECT); - - if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) { - return ROBJECT_EMBED_LEN_MAX; - } - else { - return ROBJECT(obj)->as.heap.numiv; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the instance variables. - * - * @param[in] obj Object in question. - * @return Its instance variables, in C array. - * @pre `obj` must be an instance of ::RObject. - * - * @internal - * - * @shyouhei finds no reason for this to be visible from extension libraries. - */ -static inline VALUE * -ROBJECT_IVPTR(VALUE obj) -{ - RBIMPL_ASSERT_TYPE(obj, RUBY_T_OBJECT); - - struct RObject *const ptr = ROBJECT(obj); - - if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) { - return ptr->as.ary; - } - else { - return ptr->as.heap.ivptr; - } -} - -#endif /* RBIMPL_ROBJECT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rregexp.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rregexp.h deleted file mode 100644 index cf54a39..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rregexp.h +++ /dev/null @@ -1,168 +0,0 @@ -#ifndef RBIMPL_RREGEXP_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RREGEXP_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RRegexp. - */ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/core/rstring.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RRegexp. - * @return The passed object casted to ::RRegexp. - */ -#define RREGEXP(obj) RBIMPL_CAST((struct RRegexp *)(obj)) - -/** - * Convenient accessor macro. - * - * @param obj An object, which is in fact an ::RRegexp. - * @return The passed object's pattern buffer. - */ -#define RREGEXP_PTR(obj) (RREGEXP(obj)->ptr) -/** @cond INTERNAL_MACRO */ -#define RREGEXP_SRC RREGEXP_SRC -#define RREGEXP_SRC_PTR RREGEXP_SRC_PTR -#define RREGEXP_SRC_LEN RREGEXP_SRC_LEN -#define RREGEXP_SRC_END RREGEXP_SRC_END -/** @endcond */ - -struct re_patter_buffer; /* a.k.a. OnigRegexType, defined in onigmo.h */ - -/** - * Ruby's regular expression. A regexp is compiled into its own intermediate - * representation. This one holds that info. Regexp "match" operation then - * executes that IR. - */ -struct RRegexp { - - /** Basic part, including flags and class. */ - struct RBasic basic; - - /** - * The pattern buffer. This is a quasi-opaque struct that holds compiled - * intermediate representation of the regular expression. - * - * @note Compilation of a regexp could be delayed until actual match. - */ - struct re_pattern_buffer *ptr; - - /** Source code of this expression. */ - const VALUE src; - - /** - * Reference count. A regexp match can take extraordinarily long time to - * run. Ruby's regular expression is heavily extended and not a regular - * language any longer; runs in NP-time in practice. Now, Ruby also has - * threads and GVL. In order to prevent long GVL lockup, our regexp engine - * can release it on occasions. This means that multiple threads can touch - * a regular expressions at once. That itself is okay. But their cleanup - * phase shall wait for all the concurrent runs, to prevent use-after-free - * situation. This field is used to count such threads that are executing - * this particular pattern buffer. - * - * @warning Of course, touching this field from extension libraries causes - * catastrophic effects. Just leave it. - */ - unsigned long usecnt; -}; - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Convenient getter function. - * - * @param[in] rexp The regular expression in question. - * @return The source code of the regular expression. - * @pre `rexp` must be of ::RRegexp. - */ -static inline VALUE -RREGEXP_SRC(VALUE rexp) -{ - RBIMPL_ASSERT_TYPE(rexp, RUBY_T_REGEXP); - VALUE ret = RREGEXP(rexp)->src; - RBIMPL_ASSERT_TYPE(ret, RUBY_T_STRING); - return ret; -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Convenient getter function. - * - * @param[in] rexp The regular expression in question. - * @return The source code of the regular expression, in C's string. - * @pre `rexp` must be of ::RRegexp. - * - * @internal - * - * It seems nobody uses this function in the wild. Subject to hide? - */ -static inline char * -RREGEXP_SRC_PTR(VALUE rexp) -{ - return RSTRING_PTR(RREGEXP_SRC(rexp)); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Convenient getter function. - * - * @param[in] rexp The regular expression in question. - * @return The length of the source code of the regular expression. - * @pre `rexp` must be of ::RRegexp. - * - * @internal - * - * It seems nobody uses this function in the wild. Subject to hide? - */ -static inline long -RREGEXP_SRC_LEN(VALUE rexp) -{ - return RSTRING_LEN(RREGEXP_SRC(rexp)); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Convenient getter function. - * - * @param[in] rexp The regular expression in question. - * @return The end of the source code of the regular expression. - * @pre `rexp` must be of ::RRegexp. - * - * @internal - * - * It seems nobody uses this function in the wild. Subject to hide? - */ -static inline char * -RREGEXP_SRC_END(VALUE rexp) -{ - return RSTRING_END(RREGEXP_SRC(rexp)); -} - -#endif /* RBIMPL_RREGEXP_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstring.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstring.h deleted file mode 100644 index a682dbe..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstring.h +++ /dev/null @@ -1,577 +0,0 @@ -#ifndef RBIMPL_RSTRING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RSTRING_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RString. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/value_type.h" -#include "ruby/internal/warning_push.h" -#include "ruby/assert.h" - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RString. - * @return The passed object casted to ::RString. - */ -#define RSTRING(obj) RBIMPL_CAST((struct RString *)(obj)) - -/** @cond INTERNAL_MACRO */ -#define RSTRING_NOEMBED RSTRING_NOEMBED -#if !USE_RVARGC -#define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK -#define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT -#define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX -#endif -#define RSTRING_FSTR RSTRING_FSTR -#define RSTRING_EMBED_LEN RSTRING_EMBED_LEN -#define RSTRING_LEN RSTRING_LEN -#define RSTRING_LENINT RSTRING_LENINT -#define RSTRING_PTR RSTRING_PTR -#define RSTRING_END RSTRING_END -/** @endcond */ - -/** - * @name Conversion of Ruby strings into C's - * - * @{ - */ - -/** - * Ensures that the parameter object is a String. This is done by calling its - * `to_str` method. - * - * @param[in,out] v Arbitrary Ruby object. - * @exception rb_eTypeError No implicit conversion defined. - * @post `v` is a String. - */ -#define StringValue(v) rb_string_value(&(v)) - -/** - * Identical to #StringValue, except it returns a `char*`. - * - * @param[in,out] v Arbitrary Ruby object. - * @exception rb_eTypeError No implicit conversion defined. - * @return Converted Ruby string's backend C string. - * @post `v` is a String. - */ -#define StringValuePtr(v) rb_string_value_ptr(&(v)) - -/** - * Identical to #StringValuePtr, except it additionally checks for the contents - * for viability as a C string. Ruby can accept wider range of contents as - * strings, compared to C. This function is to check that. - * - * @param[in,out] v Arbitrary Ruby object. - * @exception rb_eTypeError No implicit conversion defined. - * @exception rb_eArgError String is not C-compatible. - * @return Converted Ruby string's backend C string. - * @post `v` is a String. - */ -#define StringValueCStr(v) rb_string_value_cstr(&(v)) - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define SafeStringValue(v) StringValue(v) - -/** - * Identical to #StringValue, except it additionally converts the string's - * encoding to default external encoding. Ruby has a concept called encodings. - * A string can have different encoding than the environment expects. Someone - * has to make sure its contents be converted to something suitable. This is - * that routine. Call it when necessary. - * - * @param[in,out] v Arbitrary Ruby object. - * @exception rb_eTypeError No implicit conversion defined. - * @return Converted Ruby string's backend C string. - * @post `v` is a String. - * - * @internal - * - * Not sure but it seems this macro does not raise on encoding - * incompatibilities? Doesn't sound right to @shyouhei. - */ -#define ExportStringValue(v) do { \ - StringValue(v); \ - (v) = rb_str_export(v); \ -} while (0) - -/** @} */ - -/** - * @private - * - * Bits that you can set to ::RBasic::flags. - * - * @warning These enums are not the only bits we use for strings. - * - * @internal - * - * Actually all bits through FL_USER1 to FL_USER19 are used for strings. Why - * only this tiny part of them are made public here? @shyouhei can find no - * reason. - */ -enum ruby_rstring_flags { - - /** - * This flag has something to do with memory footprint. If the string is - * short enough, ruby tries to be creative to abuse padding bits of struct - * ::RString for storing contents. If this flag is set that string does - * _not_ do that, to resort to good old fashioned external allocation - * strategy instead. - * - * @warning This bit has to be considered read-only. Setting/clearing - * this bit without corresponding fix up must cause immediate - * SEGV. Also, internal structures of a string change - * dynamically and transparently throughout of its lifetime. - * Don't assume it being persistent. - * - * @internal - * - * 3rd parties must not be aware that there even is more than one way to - * store a string. Might better be hidden. - */ - RSTRING_NOEMBED = RUBY_FL_USER1, - -#if !USE_RVARGC - /** - * When a string employs embedded strategy (see ::RSTRING_NOEMBED), these - * bits are used to store the number of bytes actually filled into - * ::RString::ary. - * - * @internal - * - * 3rd parties must not be aware that there even is more than one way to - * store a string. Might better be hidden. - */ - RSTRING_EMBED_LEN_MASK = RUBY_FL_USER2 | RUBY_FL_USER3 | RUBY_FL_USER4 | - RUBY_FL_USER5 | RUBY_FL_USER6, -#endif - - /* Actually, string encodings are also encoded into the flags, using - * remaining bits.*/ - - /** - * This flag has something to do with infamous "f"string. What is a - * fstring? Well it is a special subkind of strings that is immutable, - * deduped globally, and managed by our GC. It is much like a Symbol (in - * fact Symbols are dynamic these days and are backended using fstrings). - * This concept has been silently introduced at some point in 2.x era. - * Since then it gained wider acceptance in the core. But extension - * libraries could not know that until very recently. Strings of this flag - * live in a special Limbo deep inside of the interpreter. Never try to - * manipulate it by hand. - * - * @internal - * - * Fstrings are not the only variant strings that we implement today. - * Other things are behind-the-scene. This is the only one that is visible - * from extension library. There is no clear reason why it has to be. - * Given there are more "polite" ways to create fstrings, it seems this bit - * need not be exposed to extension libraries. Might better be hidden. - */ - RSTRING_FSTR = RUBY_FL_USER17 -}; - -#if !USE_RVARGC -/** - * This is an enum because GDB wants it (rather than a macro). People need not - * bother. - */ -enum ruby_rstring_consts { - /** Where ::RSTRING_EMBED_LEN_MASK resides. */ - RSTRING_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 2, - - /** Max possible number of characters that can be embedded. */ - RSTRING_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(char) - 1 -}; -#endif - -/** - * Ruby's String. A string in ruby conceptually has these information: - * - * - Encoding of the string. - * - Length of the string. - * - Contents of the string. - * - * It is worth noting that a string is _not_ an array of characters in ruby. - * It has never been. In 1.x a string was an array of integers. Since 2.x a - * string is no longer an array of anything. A string is a string -- just like - * a Time is not an integer. - */ -struct RString { - - /** Basic part, including flags and class. */ - struct RBasic basic; - - /** String's specific fields. */ - union { - - /** - * Strings that use separated memory region for contents use this - * pattern. - */ - struct { - - /** - * Length of the string, not including terminating NUL character. - * - * @note This is in bytes. - */ - long len; - - /** - * Pointer to the contents of the string. In the old days each - * string had dedicated memory regions. That is no longer true - * today, but there still are strings of such properties. This - * field could be used to point such things. - */ - char *ptr; - - /** Auxiliary info. */ - union { - - /** - * Capacity of `*ptr`. A continuous memory region of at least - * `capa` bytes is expected to exist at `*ptr`. This can be - * bigger than `len`. - */ - long capa; - - /** - * Parent of the string. Nowadays strings can share their - * contents each other, constructing gigantic nest of objects. - * This situation is called "shared", and this is the field to - * control such properties. - */ - VALUE shared; - } aux; - } heap; - - /** Embedded contents. */ - struct { -#if USE_RVARGC - short len; - /* This is a length 1 array because: - * 1. GCC has a bug that does not optimize C flexible array members - * (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102452) - * 2. Zero length arrays are not supported by all compilers - */ - char ary[1]; -#else - /** - * When a string is short enough, it uses this area to store the - * contents themselves. This was impractical in the 20th century, - * but these days 64 bit machines can typically hold 24 bytes here. - * Could be sufficiently large. In this case the length is encoded - * into the flags. - */ - char ary[RSTRING_EMBED_LEN_MAX + 1]; -#endif - } embed; - } as; -}; - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * Identical to rb_check_string_type(), except it raises exceptions in case of - * conversion failures. - * - * @param[in] obj Target object. - * @exception rb_eTypeError No implicit conversion to String. - * @return Return value of `obj.to_str`. - * @see rb_io_get_io - * @see rb_ary_to_ary - */ -VALUE rb_str_to_str(VALUE obj); - -/** - * Identical to rb_str_to_str(), except it fills the passed pointer with the - * converted object. - * - * @param[in,out] ptr Pointer to a variable of target object. - * @exception rb_eTypeError No implicit conversion to String. - * @return Return value of `obj.to_str`. - * @post `*ptr` is the return value. - */ -VALUE rb_string_value(volatile VALUE *ptr); - -/** - * Identical to rb_str_to_str(), except it returns the converted string's - * backend memory region. - * - * @param[in,out] ptr Pointer to a variable of target object. - * @exception rb_eTypeError No implicit conversion to String. - * @post `*ptr` is the return value of `obj.to_str`. - * @return Pointer to the contents of the return value. - */ -char *rb_string_value_ptr(volatile VALUE *ptr); - -/** - * Identical to rb_string_value_ptr(), except it additionally checks for the - * contents for viability as a C string. Ruby can accept wider range of - * contents as strings, compared to C. This function is to check that. - * - * @param[in,out] ptr Pointer to a variable of target object. - * @exception rb_eTypeError No implicit conversion to String. - * @exception rb_eArgError String is not C-compatible. - * @post `*ptr` is the return value of `obj.to_str`. - * @return Pointer to the contents of the return value. - */ -char *rb_string_value_cstr(volatile VALUE *ptr); - -/** - * Identical to rb_str_to_str(), except it additionally converts the string - * into default external encoding. Ruby has a concept called encodings. A - * string can have different encoding than the environment expects. Someone - * has to make sure its contents be converted to something suitable. This is - * that routine. Call it when necessary. - * - * @param[in] obj Target object. - * @exception rb_eTypeError No implicit conversion to String. - * @return Converted ruby string of default external encoding. - */ -VALUE rb_str_export(VALUE obj); - -/** - * Identical to rb_str_export(), except it converts into the locale encoding - * instead. - * - * @param[in] obj Target object. - * @exception rb_eTypeError No implicit conversion to String. - * @return Converted ruby string of locale encoding. - */ -VALUE rb_str_export_locale(VALUE obj); - -RBIMPL_ATTR_ERROR(("rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead")) -/** - * @private - * - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - */ -void rb_check_safe_str(VALUE); - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define Check_SafeStr(v) rb_check_safe_str(RBIMPL_CAST((VALUE)(v))) - -/** - * @private - * - * Prints diagnostic message to stderr when RSTRING_PTR or RSTRING_END - * is NULL. - * - * @param[in] func The function name where encountered NULL pointer. - */ -void rb_debug_rstring_null_ptr(const char *func); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the length of the string. - * - * @param[in] str String in question. - * @return Its length, in bytes. - * @pre `str` must be an instance of ::RString, and must has its - * ::RSTRING_NOEMBED flag off. - * - * @internal - * - * This was a macro before. It was inevitable to be public, since macros are - * global constructs. But should it be forever? Now that it is a function, - * @shyouhei thinks it could just be eliminated, hidden into implementation - * details. - */ -static inline long -RSTRING_EMBED_LEN(VALUE str) -{ - RBIMPL_ASSERT_TYPE(str, RUBY_T_STRING); - RBIMPL_ASSERT_OR_ASSUME(! RB_FL_ANY_RAW(str, RSTRING_NOEMBED)); - -#if USE_RVARGC - short f = RSTRING(str)->as.embed.len; -#else - VALUE f = RBASIC(str)->flags; - f &= RSTRING_EMBED_LEN_MASK; - f >>= RSTRING_EMBED_LEN_SHIFT; -#endif - return RBIMPL_CAST((long)f); -} - -RBIMPL_WARNING_PUSH() -#if RBIMPL_COMPILER_IS(Intel) -RBIMPL_WARNING_IGNORED(413) -#endif - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * @private - * - * "Expands" an embedded string into an ordinal one. This is a function that - * returns aggregated type. The returned struct always has its `as.heap.len` - * an `as.heap.ptr` fields set appropriately. - * - * This is an implementation detail that 3rd parties should never bother. - */ -static inline struct RString -rbimpl_rstring_getmem(VALUE str) -{ - RBIMPL_ASSERT_TYPE(str, RUBY_T_STRING); - - if (RB_FL_ANY_RAW(str, RSTRING_NOEMBED)) { - return *RSTRING(str); - } - else { - /* Expecting compilers to optimize this on-stack struct away. */ - struct RString retval; - retval.as.heap.len = RSTRING_EMBED_LEN(str); - retval.as.heap.ptr = RSTRING(str)->as.embed.ary; - return retval; - } -} - -RBIMPL_WARNING_POP() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the length of the string. - * - * @param[in] str String in question. - * @return Its length, in bytes. - * @pre `str` must be an instance of ::RString. - */ -static inline long -RSTRING_LEN(VALUE str) -{ - return rbimpl_rstring_getmem(str).as.heap.len; -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the contents pointer of the string. - * - * @param[in] str String in question. - * @return Pointer to its contents. - * @pre `str` must be an instance of ::RString. - */ -static inline char * -RSTRING_PTR(VALUE str) -{ - char *ptr = rbimpl_rstring_getmem(str).as.heap.ptr; - - if (RB_UNLIKELY(! ptr)) { - /* :BEWARE: @shyouhei thinks that currently, there are rooms for this - * function to return NULL. In the 20th century that was a pointless - * concern. However struct RString can hold fake strings nowadays. It - * seems no check against NULL are exercised around handling of them - * (one of such usages is located in marshal.c, which scares - * @shyouhei). Better check here for maximum safety. - * - * Also, this is not rb_warn() because RSTRING_PTR() can be called - * during GC (see what obj_info() does). rb_warn() needs to allocate - * Ruby objects. That is not possible at this moment. */ - rb_debug_rstring_null_ptr("RSTRING_PTR"); - } - - return ptr; -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the end of the contents pointer of the string. - * - * @param[in] str String in question. - * @return Pointer to its end of contents. - * @pre `str` must be an instance of ::RString. - */ -static inline char * -RSTRING_END(VALUE str) -{ - struct RString buf = rbimpl_rstring_getmem(str); - - if (RB_UNLIKELY(! buf.as.heap.ptr)) { - /* Ditto. */ - rb_debug_rstring_null_ptr("RSTRING_END"); - } - - return &buf.as.heap.ptr[buf.as.heap.len]; -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Identical to RSTRING_LEN(), except it differs for the return type. - * - * @param[in] str String in question. - * @exception rb_eRangeError Too long. - * @return Its length, in bytes. - * @pre `str` must be an instance of ::RString. - * - * @internal - * - * This API seems redundant but has actual usages. - */ -static inline int -RSTRING_LENINT(VALUE str) -{ - return rb_long2int(RSTRING_LEN(str)); -} - -/** - * Convenient macro to obtain the contents and length at once. - * - * @param str String in question. - * @param ptrvar Variable where its contents is stored. - * @param lenvar Variable where its length is stored. - */ -#ifdef HAVE_STMT_AND_DECL_IN_EXPR -# define RSTRING_GETMEM(str, ptrvar, lenvar) \ - __extension__ ({ \ - struct RString rbimpl_str = rbimpl_rstring_getmem(str); \ - (ptrvar) = rbimpl_str.as.heap.ptr; \ - (lenvar) = rbimpl_str.as.heap.len; \ - }) -#else -# define RSTRING_GETMEM(str, ptrvar, lenvar) \ - ((ptrvar) = RSTRING_PTR(str), \ - (lenvar) = RSTRING_LEN(str)) -#endif /* HAVE_STMT_AND_DECL_IN_EXPR */ -#endif /* RBIMPL_RSTRING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstruct.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstruct.h deleted file mode 100644 index 69be487..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rstruct.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef RBIMPL_RSTRUCT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RSTRUCT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate struct RStruct. - * @note The struct RStruct itself is opaque. - */ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" -#include "ruby/internal/arithmetic/long.h" -#include "ruby/internal/arithmetic/int.h" -#if !defined RUBY_EXPORT && !defined RUBY_NO_OLD_COMPATIBILITY -# include "ruby/backward.h" -#endif - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - * - * @internal - * - * Declaration of rb_struct_ptr() is at include/ruby/backward.h. - */ -#define RSTRUCT_PTR(st) rb_struct_ptr(st) -/** @cond INTERNAL_MACRO */ -#define RSTRUCT_LEN RSTRUCT_LEN -#define RSTRUCT_SET RSTRUCT_SET -#define RSTRUCT_GET RSTRUCT_GET -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * Returns the number of struct members. - * - * @param[in] st An instance of RStruct. - * @return The number of members of `st`. - * @pre `st` must be of ::RUBY_T_STRUCT. - */ -VALUE rb_struct_size(VALUE st); - -/** - * Resembles `Struct#[]`. - * - * @param[in] st An instance of RStruct. - * @param[in] k Index a.k.a. key of the struct. - * @exception rb_eTypeError `k` is neither Numeric, Symbol, nor String. - * @exception rb_eIndexError Numerical index out of range. - * @exception rb_eNameError No such key. - * @return The member stored at `k` in `st`. - * @pre `st` must be of ::RUBY_T_STRUCT. - */ -VALUE rb_struct_aref(VALUE st, VALUE k); - -/** - * Resembles `Struct#[]=`. - * - * @param[out] st An instance of RStruct. - * @param[in] k Index a.k.a. key of the struct. - * @param[in] v Value to store. - * @exception rb_eTypeError `k` is neither Numeric, Symbol, nor String. - * @exception rb_eIndexError Numerical index out of range. - * @exception rb_eNameError No such key. - * @return Passed `v`. - * @pre `st` must be of ::RUBY_T_STRUCT. - * @post `v` is stored at `k` in `st`. - */ -VALUE rb_struct_aset(VALUE st, VALUE k, VALUE v); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_ARTIFICIAL() -/** @copydoc rb_struct_size() */ -static inline long -RSTRUCT_LEN(VALUE st) -{ - RBIMPL_ASSERT_TYPE(st, RUBY_T_STRUCT); - - return RB_NUM2LONG(rb_struct_size(st)); -} - -RBIMPL_ATTR_ARTIFICIAL() -/** @copydoc rb_struct_aset() */ -static inline VALUE -RSTRUCT_SET(VALUE st, int k, VALUE v) -{ - RBIMPL_ASSERT_TYPE(st, RUBY_T_STRUCT); - - return rb_struct_aset(st, INT2NUM(k), (v)); -} - -RBIMPL_ATTR_ARTIFICIAL() -/** @copydoc rb_struct_aref() */ -static inline VALUE -RSTRUCT_GET(VALUE st, int k) -{ - RBIMPL_ASSERT_TYPE(st, RUBY_T_STRUCT); - - return rb_struct_aref(st, INT2NUM(k)); -} - -#endif /* RBIMPL_RSTRUCT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rtypeddata.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rtypeddata.h deleted file mode 100644 index bbf2088..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/core/rtypeddata.h +++ /dev/null @@ -1,604 +0,0 @@ -#ifndef RBIMPL_RTYPEDDATA_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RTYPEDDATA_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines struct ::RTypedData. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#include "ruby/internal/assume.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/flag_enum.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/core/rdata.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/error.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/value_type.h" - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_TYPE_RB_DATA_TYPE_T 1 - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_RB_DATA_TYPE_T_FUNCTION 1 - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_RB_DATA_TYPE_T_PARENT 1 - -/** - * This is a value you can set to ::rb_data_type_struct::dfree. Setting this - * means the data was allocated using ::ruby_xmalloc() (or variants), and shall - * be freed using ::ruby_xfree(). - * - * @warning Do not use this if you want to use system malloc, because the - * system and Ruby might or might not share the same malloc - * implementation. - */ -#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE - -/** - * This is a value you can set to ::rb_data_type_struct::dfree. Setting this - * means the data is managed by someone else, like, statically allocated. Of - * course you are on your own then. - */ -#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE - -/** - * Convenient casting macro. - * - * @param obj An object, which is in fact an ::RTypedData. - * @return The passed object casted to ::RTypedData. - */ -#define RTYPEDDATA(obj) RBIMPL_CAST((struct RTypedData *)(obj)) - -/** - * Convenient getter macro. - * - * @param v An object, which is in fact an ::RTypedData. - * @return The passed object's ::RTypedData::data field. - */ -#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data) - -/** @old{rb_check_typeddata} */ -#define Check_TypedStruct(v, t) \ - rb_check_typeddata(RBIMPL_CAST((VALUE)(v)), (t)) - -/** @cond INTERNAL_MACRO */ -#define RTYPEDDATA_P RTYPEDDATA_P -#define RTYPEDDATA_TYPE RTYPEDDATA_TYPE -#define RUBY_TYPED_FREE_IMMEDIATELY RUBY_TYPED_FREE_IMMEDIATELY -#define RUBY_TYPED_FROZEN_SHAREABLE RUBY_TYPED_FROZEN_SHAREABLE -#define RUBY_TYPED_WB_PROTECTED RUBY_TYPED_WB_PROTECTED -#define RUBY_TYPED_PROMOTED1 RUBY_TYPED_PROMOTED1 -/** @endcond */ - -/** - * @private - * - * Bits for rb_data_type_struct::flags. - */ -enum -RBIMPL_ATTR_FLAG_ENUM() -rbimpl_typeddata_flags { - /** - * This flag has something to do with Ruby's global interpreter lock. For - * maximum safety, Ruby locks the entire VM during GC. However your - * callback functions could unintentionally unlock it, for instance when - * they try to flush an IO buffer. Such operations are dangerous (threads - * then run alongside of GC). By default, to prevent those scenario, - * callbacks are deferred until the GC engine is 100% sure threads can run. - * This flag skips that; structs with it are deallocated during the sweep - * phase. - * - * Using this flag needs deep understanding of both GC and threads. You - * would better leave it unspecified. - */ - RUBY_TYPED_FREE_IMMEDIATELY = 1, - - /** - * This flag has something to do with Ractor. Multiple Ractors run without - * protecting each other. Sharing an object among Ractors is basically - * dangerous, disabled by default. This flag is used to bypass that - * restriction. but setting it is not enough. In addition to do so, an - * object also has to be frozen, and be passed to - * rb_ractor_make_shareable() before being actually shareable. Of course, - * you have to manually prevent race conditions then. - * - * Using this flag needs deep understanding of multithreaded programming. - * You would better leave it unspecified. - */ - RUBY_TYPED_FROZEN_SHAREABLE = RUBY_FL_SHAREABLE, - - /** - * This flag has something to do with our garbage collector. These days - * ruby objects are "generational". There are those who are young and - * those who are old. Young objects are prone to die; monitored relatively - * extensively by the garbage collector. OTOH old objects tend to live - * longer. They are relatively rarely considered. This basically works. - * But there is one tweak that has to be exercised. When an elder object - * has reference(s) to younger one(s), that referenced objects must not - * die. In order to detect additions of such references, old generations - * are protected by write barriers. It is a very difficult hack to - * appropriately insert write barriers everywhere. This mechanism is - * disabled by default for 3rd party extensions (they never get aged). By - * specifying this flag you can enable the generational feature to your - * data structure. Of course, you have to manually insert write barriers - * then. - * - * Using this flag needs deep understanding of GC internals, often at the - * level of source code. You would better leave it unspecified. - */ - RUBY_TYPED_WB_PROTECTED = RUBY_FL_WB_PROTECTED, /* THIS FLAG DEPENDS ON Ruby version */ - - /** - * This flag is mysterious. It seems nobody is currently using it. The - * intention of this flag is also unclear. We need further investigations. - */ - RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1 /* THIS FLAG DEPENDS ON Ruby version */ -}; - -/** - * This is the struct that holds necessary info for a struct. It roughly - * resembles a Ruby level class; multiple objects can share a ::rb_data_type_t - * instance. - */ -typedef struct rb_data_type_struct rb_data_type_t; - -/** @copydoc rb_data_type_t */ -struct rb_data_type_struct { - - /** - * Name of structs of this kind. This is used for diagnostic purposes. - * This has to be unique in the process, but doesn't has to be a valid - * C/Ruby identifier. - */ - const char *wrap_struct_name; - - /** Function pointers. Resembles C++ `vtbl`.*/ - struct { - - /** - * This function is called when the object is experiencing GC marks. - * If it contains references to other Ruby objects, you need to mark - * them also. Otherwise GC will smash your data. - * - * @see rb_gc_mark() - * @warning This is called during GC runs. Object allocations are - * impossible at that moment (that is why GC runs). - */ - RUBY_DATA_FUNC dmark; - - /** - * This function is called when the object is no longer used. You need - * to do whatever necessary to avoid memory leaks. - * - * @warning This is called during GC runs. Object allocations are - * impossible at that moment (that is why GC runs). - */ - RUBY_DATA_FUNC dfree; - - /** - * This function is to query the size of the underlying memory regions. - * - * @internal - * - * This function has only one usage, which is form inside of - * `ext/objspace`. - */ - size_t (*dsize)(const void *); - - /** - * This function is called when the object is relocated. Like - * ::rb_data_type_struct::dmark, you need to update references to Ruby - * objects inside of your structs. - * - * @see rb_gc_location() - * @warning This is called during GC runs. Object allocations are - * impossible at that moment (that is why GC runs). - */ - RUBY_DATA_FUNC dcompact; - - /** - * This field is reserved for future extension. For now, it must be - * filled with zeros. - */ - void *reserved[1]; /* For future extension. - This array *must* be filled with ZERO. */ - } function; - - /** - * Parent of this class. Sometimes C structs have inheritance-like - * relationships. An example is `struct sockaddr` and its family. If you - * design such things, make ::rb_data_type_t for each of them and connect - * using this field. Ruby can then transparently cast your data back and - * forth when you call #TypedData_Get_Struct(). - * - * ```CXX - * struct parent { }; - * static inline const rb_data_type_t parent_type = { - * .wrap_struct_name = "parent", - * }; - * - * struct child: public parent { }; - * static inline const rb_data_type_t child_type = { - * .wrap_struct_name = "child", - * .parent = &parent_type, - * }; - * - * // This function can take both parent_class and child_class. - * static inline struct parent * - * get_parent(VALUE v) - * { - * struct parent *p; - * TypedData_Get_Struct(v, parent_type, struct parent, p); - * return p; - * } - * ``` - */ - const rb_data_type_t *parent; - - /** - * Type-specific static data. This area can be used for any purpose by a - * programmer who define the type. Ruby does not manage this at all. - */ - void *data; /* This area can be used for any purpose - by a programmer who define the type. */ - - /** - * Type-specific behavioural characteristics. This is a bitfield. It is - * an EXTREMELY WISE IDEA to leave this field blank. It is designed so - * that setting zero is the safest thing to do. If you risk to set any - * bits on, you have to know exactly what you are doing. - * - * @internal - * - * Why it has to be a ::VALUE? @shyouhei doesn't understand the design. - */ - VALUE flags; /* RUBY_FL_WB_PROTECTED */ -}; - -/** - * "Typed" user data. By using this, extension libraries can wrap a C struct - * to make it visible from Ruby. For instance if you have a `struct timeval`, - * and you want users to use it, - * - * ```CXX - * static inline const rb_data_type_t timeval_type = { - * // Note that unspecified fields are 0-filled by default. - * .wrap_struct_name = "timeval", - * .function = { - * .dmark = nullptr, // no need to mark - * .dfree = RUBY_TYPED_DEFAULT_FREE, // use ruby_xfree() - * .dsize = [](auto) { - * return sizeof(struct timeval); - * }, - * }, - * }; - * - * extern "C" void - * Init_timeval(void) - * { - * auto klass = rb_define_class("YourName", rb_cObject); - * - * rb_define_alloc_func(klass, [](auto klass) { - * struct timeval *t; - * auto ret = TypedData_Make_Struct( - * klass, struct timeval, &timeval_type, t); - * - * if (auto i = gettimeofday(t, nullptr); i == -1) { - * rb_sys_fail("gettimeofday(3)"); - * } - * else { - * return ret; - * } - * }); - * } - * ``` - */ -struct RTypedData { - - /** The part that all ruby objects have in common. */ - struct RBasic basic; - - /** - * This field stores various information about how Ruby should handle a - * data. This roughly resembles a Ruby level class (apart from method - * definition etc.) - */ - const rb_data_type_t *type; - - /** - * This has to be always 1. - * - * @internal - * - * Why, then, this is not a const ::VALUE? - */ - VALUE typed_flag; - - /** Pointer to the actual C level struct that you want to wrap. */ - void *data; -}; - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_NONNULL((3)) -/** - * This is the primitive way to wrap an existing C struct into ::RTypedData. - * - * @param[in] klass Ruby level class of the returning object. - * @param[in] datap Pointer to the target C struct. - * @param[in] type The characteristics of the passed data. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return An allocated object that wraps `datap`. - */ -VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type); - -/** - * Identical to rb_data_typed_object_wrap(), except it allocates a new data - * region internally instead of taking an existing one. The allocation is done - * using ruby_calloc(). Hence it makes no sense for `type->function.dfree` to - * be anything other than ::RUBY_TYPED_DEFAULT_FREE. - * - * @param[in] klass Ruby level class of the returning object. - * @param[in] size Requested size of memory to allocate. - * @param[in] type The characteristics of the passed data. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return An allocated object that wraps a new `size` byte region. - */ -VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type); - -/** - * Checks for the domestic relationship between the two. - * - * @param[in] child A data type supposed to be a child of `parent`. - * @param[in] parent A data type supposed to be a parent of `child`. - * @retval true `child` is a descendent of `parent`. - * @retval false Otherwise. - * - * @internal - * - * You can path NULL to both arguments, don't know what that means though. - */ -int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent); - -/** - * Checks if the given object is of given kind. - * - * @param[in] obj An instance of ::RTypedData. - * @param[in] data_type Expected data type of `obj`. - * @retval true `obj` is of `data_type`. - * @retval false Otherwise. - */ -int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type); - -/** - * Identical to rb_typeddata_is_kind_of(), except it raises exceptions instead - * of returning false. - * - * @param[in] obj An instance of ::RTypedData. - * @param[in] data_type Expected data type of `obj`. - * @exception rb_eTypeError obj is not of `data_type`. - * @return Unwrapped C struct that `obj` holds. - * @post Upon successful return `obj`'s type is guaranteed `data_type`. - */ -void *rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type); -RBIMPL_SYMBOL_EXPORT_END() - -/** - * Converts sval, a pointer to your struct, into a Ruby object. - * - * @param klass A ruby level class. - * @param data_type The type of `sval`. - * @param sval A pointer to your struct. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return A created Ruby object. - */ -#define TypedData_Wrap_Struct(klass,data_type,sval)\ - rb_data_typed_object_wrap((klass),(sval),(data_type)) - -/** - * @private - * - * This is an implementation detail of #TypedData_Make_Struct. People don't - * use it directly. - * - * @param result Variable name of created Ruby object. - * @param klass Ruby level class of the object. - * @param type Type name of the C struct. - * @param size Size of the C struct. - * @param data_type The data type describing `type`. - * @param sval Variable name of created C struct. - */ -#define TypedData_Make_Struct0(result, klass, type, size, data_type, sval) \ - VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); \ - (sval) = RBIMPL_CAST((type *)RTYPEDDATA_DATA(result)); \ - RBIMPL_CAST(/*suppress unused variable warnings*/(void)(sval)) - -/** - * Identical to #TypedData_Wrap_Struct, except it allocates a new data region - * internally instead of taking an existing one. The allocation is done using - * ruby_calloc(). Hence it makes no sense for `data_type->function.dfree` to - * be anything other than ::RUBY_TYPED_DEFAULT_FREE. - * - * @param klass Ruby level class of the object. - * @param type Type name of the C struct. - * @param data_type The data type describing `type`. - * @param sval Variable name of created C struct. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return A created Ruby object. - */ -#ifdef HAVE_STMT_AND_DECL_IN_EXPR -#define TypedData_Make_Struct(klass, type, data_type, sval) \ - RB_GNUC_EXTENSION({ \ - TypedData_Make_Struct0( \ - data_struct_obj, \ - klass, \ - type, \ - sizeof(type), \ - data_type, \ - sval); \ - data_struct_obj; \ - }) -#else -#define TypedData_Make_Struct(klass, type, data_type, sval) \ - rb_data_typed_object_make( \ - (klass), \ - (data_type), \ - RBIMPL_CAST((void **)&(sval)), \ - sizeof(type)) -#endif - -/** - * Obtains a C struct from inside of a wrapper Ruby object. - * - * @param obj An instance of ::RTypedData. - * @param type Type name of the C struct. - * @param data_type The data type describing `type`. - * @param sval Variable name of obtained C struct. - * @exception rb_eTypeError `obj` is not a kind of `data_type`. - * @return Unwrapped C struct that `obj` holds. - */ -#define TypedData_Get_Struct(obj,type,data_type,sval) \ - ((sval) = RBIMPL_CAST((type *)rb_check_typeddata((obj), (data_type)))) - -RBIMPL_ATTR_PURE() -RBIMPL_ATTR_ARTIFICIAL() -/** - * @private - * - * This is an implementation detail of Check_Type(). People don't use it - * directly. - * - * @param[in] obj Object in question - * @retval true `obj` is an instance of ::RTypedData. - * @retval false `obj` is an instance of ::RData. - * @pre `obj` must be a Ruby object of ::RUBY_T_DATA. - */ -static inline bool -rbimpl_rtypeddata_p(VALUE obj) -{ - return RTYPEDDATA(obj)->typed_flag == 1; -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks whether the passed object is ::RTypedData or ::RData. - * - * @param[in] obj Object in question - * @retval true `obj` is an instance of ::RTypedData. - * @retval false `obj` is an instance of ::RData. - * @pre `obj` must be a Ruby object of ::RUBY_T_DATA. - */ -static inline bool -RTYPEDDATA_P(VALUE obj) -{ -#if RUBY_DEBUG - if (RB_UNLIKELY(! RB_TYPE_P(obj, RUBY_T_DATA))) { - Check_Type(obj, RUBY_T_DATA); - RBIMPL_UNREACHABLE_RETURN(false); - } -#endif - - return rbimpl_rtypeddata_p(obj); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/* :TODO: can this function be __attribute__((returns_nonnull)) or not? */ -/** - * Queries for the type of given object. - * - * @param[in] obj Object in question - * @return Data type struct that corresponds to `obj`. - * @pre `obj` must be an instance of ::RTypedData. - */ -static inline const struct rb_data_type_struct * -RTYPEDDATA_TYPE(VALUE obj) -{ -#if RUBY_DEBUG - if (RB_UNLIKELY(! RTYPEDDATA_P(obj))) { - rb_unexpected_type(obj, RUBY_T_DATA); - RBIMPL_UNREACHABLE_RETURN(NULL); - } -#endif - - return RTYPEDDATA(obj)->type; -} - -/** - * While we don't stop you from using this function, it seems to be an - * implementation detail of #TypedData_Make_Struct, which is preferred over - * this one. - * - * @param[in] klass Ruby level class of the returning object. - * @param[in] type The data type - * @param[out] datap Return pointer. - * @param[in] size Size of the C struct. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eNoMemError Out of memory. - * @return A created Ruby object. - * @post `*datap` points to the C struct wrapped by the returned object. - */ -static inline VALUE -rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size) -{ - TypedData_Make_Struct0(result, klass, void, size, type, *datap); - return result; -} - -RBIMPL_ATTR_DEPRECATED(("by: rb_data_typed_object_wrap")) -/** @deprecated This function was renamed to rb_data_typed_object_wrap(). */ -static inline VALUE -rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *type) -{ - return rb_data_typed_object_wrap(klass, datap, type); -} - -#endif /* RBIMPL_RTYPEDDATA_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/ctype.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/ctype.h deleted file mode 100644 index 0f7ca6c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/ctype.h +++ /dev/null @@ -1,545 +0,0 @@ -#ifndef RBIMPL_CTYPE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_CTYPE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Our own, locale independent, character handling routines. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" - -/** - * @name Old character classification macros - * - * What is this #ISPRINT business? Well, according to our VCS and some - * internet surfing, it appears that the initial intent of these macros were to - * mimic codes appear in common in several GNU projects. As far as @shyouhei - * detects they seem to originate GNU regex (that standalone one rather than - * Gnulib or Glibc), and at least date back to 1995. - * - * Let me lawfully quote from a GNU coreutils commit - * https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=49803907f5dbd7646184a8912c9db9b09dcd0f22 - * - * > Jim Meyering writes: - * > - * > "... Some ctype macros are valid only for character codes that - * > isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when - * > using /bin/cc or gcc but without giving an ansi option). So, all - * > ctype uses should be through macros like ISPRINT... If - * > STDC_HEADERS is defined, then autoconf has verified that the ctype - * > macros don't need to be guarded with references to isascii. ... - * > Defining isascii to 1 should let any compiler worth its salt - * > eliminate the && through constant folding." - * > - * > Bruno Haible adds: - * > - * > "... Furthermore, isupper(c) etc. have an undefined result if c is - * > outside the range -1 <= c <= 255. One is tempted to write isupper(c) - * > with c being of type `char', but this is wrong if c is an 8-bit - * > character >= 128 which gets sign-extended to a negative value. - * > The macro ISUPPER protects against this as well." - * - * So the intent was to reroute old problematic systems that no longer exist. - * At the same time the problems described above no longer hurt us, because we - * decided to completely avoid using system-provided isupper etc. to reinvent - * the wheel. These macros are entirely legacy; please ignore them. - * - * But let me also put stress that GNU people are wise; they use those macros - * only inside of their own implementations and never let them be public. On - * the other hand ruby has thoughtlessly publicised them to 3rd party libraries - * since its beginning, which is a very bad idea. These macros are too easy to - * get conflicted with definitions elsewhere. - * - * New programs should stick to the `rb_` prefixed names. - * - * @note It seems we just mimic the API. We do not share their implementation - * with GPL-ed programs. - * - * @{ - */ -#ifndef ISPRINT -# define ISASCII rb_isascii /**< @old{rb_isascii}*/ -# define ISPRINT rb_isprint /**< @old{rb_isprint}*/ -# define ISGRAPH rb_isgraph /**< @old{rb_isgraph}*/ -# define ISSPACE rb_isspace /**< @old{rb_isspace}*/ -# define ISUPPER rb_isupper /**< @old{rb_isupper}*/ -# define ISLOWER rb_islower /**< @old{rb_islower}*/ -# define ISALNUM rb_isalnum /**< @old{rb_isalnum}*/ -# define ISALPHA rb_isalpha /**< @old{rb_isalpha}*/ -# define ISDIGIT rb_isdigit /**< @old{rb_isdigit}*/ -# define ISXDIGIT rb_isxdigit /**< @old{rb_isxdigit}*/ -# define ISBLANK rb_isblank /**< @old{rb_isblank}*/ -# define ISCNTRL rb_iscntrl /**< @old{rb_iscntrl}*/ -# define ISPUNCT rb_ispunct /**< @old{rb_ispunct}*/ -#endif - -#define TOUPPER rb_toupper /**< @old{rb_toupper}*/ -#define TOLOWER rb_tolower /**< @old{rb_tolower}*/ -#define STRCASECMP st_locale_insensitive_strcasecmp /**< @old{st_locale_insensitive_strcasecmp}*/ -#define STRNCASECMP st_locale_insensitive_strncasecmp /**< @old{st_locale_insensitive_strncasecmp}*/ -#define STRTOUL ruby_strtoul /**< @old{ruby_strtoul}*/ - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** @name locale insensitive functions - * @{ - */ - -/* In descriptions below, `the POSIX Locale` and `the "C" locale` are tactfully - * used as to whether the described function mimics POSIX or C99. */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Our own locale-insensitive version of `strcasecmp(3)`. The "case" here - * always means that of the POSIX Locale. It doesn't depend on runtime locale - * settings. - * - * @param[in] s1 Comparison LHS. - * @param[in] s2 Comparison RHS. - * @retval -1 `s1` is "less" than `s2`. - * @retval 0 Both strings converted into lowercase would be identical. - * @retval 1 `s1` is "greater" than `s2`. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - */ -int st_locale_insensitive_strcasecmp(const char *s1, const char *s2); - -RBIMPL_ATTR_NONNULL(()) -/** - * Our own locale-insensitive version of `strcnasecmp(3)`. The "case" here - * always means that of the POSIX Locale. It doesn't depend on runtime locale - * settings. - * - * @param[in] s1 Comparison LHS. - * @param[in] s2 Comparison RHS. - * @param[in] n Comparison shall stop after first `n` bytes are scanned. - * @retval -1 `s1` is "less" than `s2`. - * @retval 0 Both strings converted into lowercase would be identical. - * @retval 1 `s1` is "greater" than `s2`. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning This function is _not_ timing safe. - */ -int st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Our own locale-insensitive version of `strtoul(3)`. The conversion is done - * as if the current locale is set to the "C" locale, no matter actual runtime - * locale settings. - * - * @note This is needed because `strtoul("i", 0, 36)` would return zero - * if it is locale sensitive and the current locale is `tr_TR`. - * @param[in] str String of digits, optionally preceded with whitespaces - * (ignored) and optionally `+` or `-` sign. - * @param[out] endptr NULL, or an arbitrary pointer (overwritten on return). - * @param[in] base `2` to `36` inclusive for each base, or special case - * `0` to detect the base from the contents of the string. - * @return Converted integer, casted to unsigned long. - * @post If `endptr` is not NULL, it is updated to point the first such - * byte where conversion failed. - * @note This function sets `errno` on failure. - * - `EINVAL`: Passed `base` is out of range. - * - `ERANGE`: Converted integer is out of range of `long`. - * @warning As far as @shyouhei reads ISO/IEC 9899:2018 section 7.22.1.4, a - * conforming `strtoul` implementation shall render `ERANGE` - * whenever it finds the input string represents a negative - * integer. Such thing can never be representable using `unsigned - * long`. However this implementation does not honour that - * language. It just casts such negative value to the return - * type, resulting a very big return value. This behaviour is at - * least questionable. But we can no longer change that at this - * point. - * @note Not only does this function works under the "C" locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - */ -unsigned long ruby_strtoul(const char *str, char **endptr, int base); -RBIMPL_SYMBOL_EXPORT_END() - -/* - * We are making the functions below to return `int` instead of `bool`. They - * have been as such since their birth at 5f237d79033b2109afb768bc889611fa9630. - */ - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isascii(3)`. - * - * @param[in] c Byte in question to query. - * @retval false `c` is out of range of ASCII character set. - * @retval true Yes it is. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isascii(int c) -{ - return '\0' <= c && c <= '\x7f'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isupper(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "upper". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isupper(int c) -{ - return 'A' <= c && c <= 'Z'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `islower(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "lower". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_islower(int c) -{ - return 'a' <= c && c <= 'z'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isalpha(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in either IEEE 1003.1 section 7.3.1.1 - * "upper" or "lower". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isalpha(int c) -{ - return rb_isupper(c) || rb_islower(c); -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isdigit(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "digit". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isdigit(int c) -{ - return '0' <= c && c <= '9'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isalnum(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in either IEEE 1003.1 section 7.3.1.1 - * "upper", "lower", or "digit". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isalnum(int c) -{ - return rb_isalpha(c) || rb_isdigit(c); -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isxdigit(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "xdigit". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isxdigit(int c) -{ - return rb_isdigit(c) || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'); -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isblank(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "blank". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isblank(int c) -{ - return c == ' ' || c == '\t'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isspace(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "space". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isspace(int c) -{ - return c == ' ' || ('\t' <= c && c <= '\r'); -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `iscntrl(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "cntrl". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_iscntrl(int c) -{ - return ('\0' <= c && c < ' ') || c == '\x7f'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Identical to rb_isgraph(), except it also returns true for `' '`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in either IEEE 1003.1 section 7.3.1.1 - * "upper", "lower", "digit", "punct", or a `' '`. - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isprint(int c) -{ - return ' ' <= c && c <= '\x7e'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `ispunct(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in IEEE 1003.1 section 7.3.1.1 "punct". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_ispunct(int c) -{ - return !rb_isalnum(c); -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `isgraph(3)`. - * - * @param[in] c Byte in question to query. - * @retval true `c` is listed in either IEEE 1003.1 section 7.3.1.1 - * "upper", "lower", "digit", or "punct". - * @retval false Anything else. - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_isgraph(int c) -{ - return '!' <= c && c <= '\x7e'; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `tolower(3)`. - * - * @param[in] c Byte in question to convert. - * @retval c The byte is not listed in in IEEE 1003.1 section - * 7.3.1.1 "upper". - * @retval otherwise Byte converted using the map defined in IEEE 1003.1 - * section 7.3.1 "tolower". - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_tolower(int c) -{ - return rb_isupper(c) ? (c|0x20) : c; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Our own locale-insensitive version of `toupper(3)`. - * - * @param[in] c Byte in question to convert. - * @retval c The byte is not listed in in IEEE 1003.1 section - * 7.3.1.1 "lower". - * @retval otherwise Byte converted using the map defined in IEEE 1003.1 - * section 7.3.1 "toupper". - * @note Not only does this function works under the POSIX Locale, but - * also assumes its execution character set be what ruby calls an - * ASCII-compatible character set; which does not include for - * instance EBCDIC or UTF-16LE. - * @warning `c` is an int. This means that when you pass a `char` value - * here, it experiences "integer promotion" as defined in ISO/IEC - * 9899:2018 section 6.3.1.1 paragraph 1. - */ -static inline int -rb_toupper(int c) -{ - return rb_islower(c) ? (c&0x5f) : c; -} - -/** @} */ -#endif /* RBIMPL_CTYPE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dllexport.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dllexport.h deleted file mode 100644 index 08a2622..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dllexport.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef RBIMPL_DLLEXPORT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_DLLEXPORT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Tweaking visibility of C variables/functions. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/compiler_is.h" - -/** - * Declaration of externally visible global variables. Here "externally" means - * they should be visible from extension libraries. Depending on operating - * systems (dynamic linkers, to be precise), global variables inside of a DLL - * may or may not be visible form outside of that DLL by default. This - * declaration manually tweaks that default and ensures the declared variable - * be truly globally visible. - * - * ```CXX - * extern VALUE foo; // hidden on some OS - * RUBY_EXTERN VALUE foo; // ensure visible - * ``` - */ -#undef RUBY_EXTERN -#if defined(MJIT_HEADER) && defined(_WIN32) -# define RUBY_EXTERN extern __declspec(dllimport) -#elif defined(RUBY_EXPORT) -# define RUBY_EXTERN extern -#elif defined(_WIN32) -# define RUBY_EXTERN extern __declspec(dllimport) -#else -# define RUBY_EXTERN extern -#endif - -#ifndef RUBY_SYMBOL_EXPORT_BEGIN -# define RUBY_SYMBOL_EXPORT_BEGIN /* begin */ -#endif - -#ifndef RUBY_SYMBOL_EXPORT_END -# define RUBY_SYMBOL_EXPORT_END /* end */ -#endif - -#ifndef RUBY_FUNC_EXPORTED -# define RUBY_FUNC_EXPORTED /* void */ -#endif - -/** - * @cond INTERNAL_MACRO - * - * These MJIT related macros are placed here because translate_mjit_header can - * need them. Extension libraries should not touch. - */ - -/* These macros are used for functions which are exported only for MJIT - and NOT ensured to be exported in future versions. */ - -#if ! defined(MJIT_HEADER) -# define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED -#elif ! RBIMPL_COMPILER_IS(MSVC) -# define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED -#else -# define MJIT_FUNC_EXPORTED static -#endif - -#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN -#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END - -/* On mswin, MJIT header transformation can't be used since cl.exe can't output - preprocessed output preserving macros. So this `MJIT_STATIC` is needed - to force non-static function to static on MJIT header to avoid symbol conflict. */ -#ifdef MJIT_HEADER -# define MJIT_STATIC static -#else -# define MJIT_STATIC -#endif - -/** @endcond */ - -/** Shortcut macro equivalent to `RUBY_SYMBOL_EXPORT_BEGIN extern "C" {`. - * \@shyouhei finds it handy. */ -#if defined(__DOXYGEN__) -# define RBIMPL_SYMBOL_EXPORT_BEGIN() /* void */ -#elif defined(__cplusplus) -# define RBIMPL_SYMBOL_EXPORT_BEGIN() RUBY_SYMBOL_EXPORT_BEGIN extern "C" { -#else -# define RBIMPL_SYMBOL_EXPORT_BEGIN() RUBY_SYMBOL_EXPORT_BEGIN -#endif - -/** Counterpart of #RBIMPL_SYMBOL_EXPORT_BEGIN */ -#if defined(__DOXYGEN__) -# define RBIMPL_SYMBOL_EXPORT_END() /* void */ -#elif defined(__cplusplus) -# define RBIMPL_SYMBOL_EXPORT_END() } RUBY_SYMBOL_EXPORT_END -#else -# define RBIMPL_SYMBOL_EXPORT_END() RUBY_SYMBOL_EXPORT_END -#endif -#endif /* RBIMPL_DLLEXPORT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dosish.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dosish.h deleted file mode 100644 index 7d354dd..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/dosish.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef RBIMPL_DOSISH_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_DOSISH_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Support for so-called dosish systems. - */ -#ifdef __CYGWIN__ -#undef _WIN32 -#endif - -#if defined(_WIN32) -/* - DOSISH mean MS-Windows style filesystem. - But you should use more precise macros like DOSISH_DRIVE_LETTER, PATH_SEP, - ENV_IGNORECASE or CASEFOLD_FILESYSTEM. - */ -#define DOSISH 1 -# define DOSISH_DRIVE_LETTER -#endif - -#ifdef _WIN32 -#include "ruby/win32.h" -#endif - -/** The delimiter of `PATH` environment variable. */ -#if defined(DOSISH) -#define PATH_SEP ";" -#else -#define PATH_SEP ":" -#endif - -/** Identical to #PATH_SEP, except it is of type `char`. */ -#define PATH_SEP_CHAR PATH_SEP[0] - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - * - * @internal - * - * For historical interests: there was an operating system called Human68k - * which used an environment variable called `"path"` for this purpose. - */ -#define PATH_ENV "PATH" - -#if defined(DOSISH) -#define ENV_IGNORECASE -#endif - -/** - * Stone age assumption was that an operating system supports only one file - * system at a moment. This macro was to detect if such (one and only) file - * system has case sensitivity. This assumption is largely not true any - * longer; most operating systems can mount many kinds of file systems side by - * side. Also there are file systems that do or do not ignore cases depending - * on configuration (e.g. EXT4's `casefold` feature). - * - * This macro is still used internally (for instance Ruby level constant - * `File::FNM_SYSCASE` depends on it), but it is basically a wrong idea for you - * to use it today. Please just find another way. - */ -#ifndef CASEFOLD_FILESYSTEM -# if defined DOSISH -# define CASEFOLD_FILESYSTEM 1 -# else -# define CASEFOLD_FILESYSTEM 0 -# endif -#endif - -#endif /* RBIMPL_DOSISH_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/coderange.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/coderange.h deleted file mode 100644 index 7a81208..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/coderange.h +++ /dev/null @@ -1,202 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_CODERANGE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_CODERANGE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines for code ranges. - */ - -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** What rb_enc_str_coderange() returns. */ -enum ruby_coderange_type { - - /** The object's coderange is unclear yet. */ - RUBY_ENC_CODERANGE_UNKNOWN = 0, - - /** The object holds 0 to 127 inclusive and nothing else. */ - RUBY_ENC_CODERANGE_7BIT = ((int)RUBY_FL_USER8), - - /** The object's encoding and contents are consistent each other */ - RUBY_ENC_CODERANGE_VALID = ((int)RUBY_FL_USER9), - - /** The object holds invalid/malformed/broken character(s). */ - RUBY_ENC_CODERANGE_BROKEN = ((int)(RUBY_FL_USER8|RUBY_FL_USER9)), - - /** Where the coderange resides. */ - RUBY_ENC_CODERANGE_MASK = (RUBY_ENC_CODERANGE_7BIT| - RUBY_ENC_CODERANGE_VALID| - RUBY_ENC_CODERANGE_BROKEN) -}; - -RBIMPL_ATTR_CONST() -/** - * @private - * - * This is an implementation detail of #RB_ENC_CODERANGE_CLEAN_P. People don't - * use it directly. - * - * @param[in] cr An enum ::ruby_coderange_type. - * @retval 1 It is. - * @retval 0 It isn't. - */ -static inline int -rb_enc_coderange_clean_p(int cr) -{ - return (cr ^ (cr >> 1)) & RUBY_ENC_CODERANGE_7BIT; -} - -RBIMPL_ATTR_CONST() -/** - * Queries if a code range is "clean". "Clean" in this context means it is - * known and valid. - * - * @param[in] cr An enum ::ruby_coderange_type. - * @retval 1 It is. - * @retval 0 It isn't. - */ -static inline bool -RB_ENC_CODERANGE_CLEAN_P(enum ruby_coderange_type cr) -{ - return rb_enc_coderange_clean_p(cr); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/** - * Queries the (inline) code range of the passed object. The object must be - * capable of having inline encoding. Using this macro needs deep - * understanding of bit level object binary layout. - * - * @param[in] obj Target object. - * @return An enum ::ruby_coderange_type. - */ -static inline enum ruby_coderange_type -RB_ENC_CODERANGE(VALUE obj) -{ - VALUE ret = RB_FL_TEST_RAW(obj, RUBY_ENC_CODERANGE_MASK); - - return RBIMPL_CAST((enum ruby_coderange_type)ret); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/** - * Queries the (inline) code range of the passed object is - * ::RUBY_ENC_CODERANGE_7BIT. The object must be capable of having inline - * encoding. Using this macro needs deep understanding of bit level object - * binary layout. - * - * @param[in] obj Target object. - * @retval 1 It is ascii only. - * @retval 0 Otherwise (including cases when the range is not known). - */ -static inline bool -RB_ENC_CODERANGE_ASCIIONLY(VALUE obj) -{ - return RB_ENC_CODERANGE(obj) == RUBY_ENC_CODERANGE_7BIT; -} - -/** - * Destructively modifies the passed object so that its (inline) code range is - * the passed one. The object must be capable of having inline encoding. - * Using this macro needs deep understanding of bit level object binary layout. - * - * @param[out] obj Target object. - * @param[out] cr An enum ::ruby_coderange_type. - * @post `obj`'s code range is `cr`. - */ -static inline void -RB_ENC_CODERANGE_SET(VALUE obj, enum ruby_coderange_type cr) -{ - RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK); - RB_FL_SET_RAW(obj, cr); -} - -/** - * Destructively clears the passed object's (inline) code range. The object - * must be capable of having inline encoding. Using this macro needs deep - * understanding of bit level object binary layout. - * - * @param[out] obj Target object. - * @post `obj`'s code range is ::RUBY_ENC_CODERANGE_UNKNOWN. - */ -static inline void -RB_ENC_CODERANGE_CLEAR(VALUE obj) -{ - RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK); -} - -RBIMPL_ATTR_CONST() -/* assumed ASCII compatibility */ -/** - * "Mix" two code ranges into one. This is handy for instance when you - * concatenate two strings into one. Consider one of then is valid but the - * other isn't. The result must be invalid. This macro computes that kind of - * mixture. - * - * @param[in] a An enum ::ruby_coderange_type. - * @param[in] b Another enum ::ruby_coderange_type. - * @return The `a` "and" `b`. - */ -static inline enum ruby_coderange_type -RB_ENC_CODERANGE_AND(enum ruby_coderange_type a, enum ruby_coderange_type b) -{ - if (a == RUBY_ENC_CODERANGE_7BIT) { - return b; - } - else if (a != RUBY_ENC_CODERANGE_VALID) { - return RUBY_ENC_CODERANGE_UNKNOWN; - } - else if (b == RUBY_ENC_CODERANGE_7BIT) { - return RUBY_ENC_CODERANGE_VALID; - } - else { - return b; - } -} - -#define ENC_CODERANGE_MASK RUBY_ENC_CODERANGE_MASK /**< @old{RUBY_ENC_CODERANGE_MASK} */ -#define ENC_CODERANGE_UNKNOWN RUBY_ENC_CODERANGE_UNKNOWN /**< @old{RUBY_ENC_CODERANGE_UNKNOWN} */ -#define ENC_CODERANGE_7BIT RUBY_ENC_CODERANGE_7BIT /**< @old{RUBY_ENC_CODERANGE_7BIT} */ -#define ENC_CODERANGE_VALID RUBY_ENC_CODERANGE_VALID /**< @old{RUBY_ENC_CODERANGE_VALID} */ -#define ENC_CODERANGE_BROKEN RUBY_ENC_CODERANGE_BROKEN /**< @old{RUBY_ENC_CODERANGE_BROKEN} */ -#define ENC_CODERANGE_CLEAN_P(cr) RB_ENC_CODERANGE_CLEAN_P(cr) /**< @old{RB_ENC_CODERANGE_CLEAN_P} */ -#define ENC_CODERANGE(obj) RB_ENC_CODERANGE(obj) /**< @old{RB_ENC_CODERANGE} */ -#define ENC_CODERANGE_ASCIIONLY(obj) RB_ENC_CODERANGE_ASCIIONLY(obj) /**< @old{RB_ENC_CODERANGE_ASCIIONLY} */ -#define ENC_CODERANGE_SET(obj,cr) RB_ENC_CODERANGE_SET(obj,cr) /**< @old{RB_ENC_CODERANGE_SET} */ -#define ENC_CODERANGE_CLEAR(obj) RB_ENC_CODERANGE_CLEAR(obj) /**< @old{RB_ENC_CODERANGE_CLEAR} */ -#define ENC_CODERANGE_AND(a, b) RB_ENC_CODERANGE_AND(a, b) /**< @old{RB_ENC_CODERANGE_AND} */ -#define ENCODING_CODERANGE_SET(obj, encindex, cr) RB_ENCODING_CODERANGE_SET(obj, encindex, cr) /**< @old{RB_ENCODING_CODERANGE_SET} */ - -/** @cond INTERNAL_MACRO */ -#define RB_ENC_CODERANGE RB_ENC_CODERANGE -#define RB_ENC_CODERANGE_AND RB_ENC_CODERANGE_AND -#define RB_ENC_CODERANGE_ASCIIONLY RB_ENC_CODERANGE_ASCIIONLY -#define RB_ENC_CODERANGE_CLEAN_P RB_ENC_CODERANGE_CLEAN_P -#define RB_ENC_CODERANGE_CLEAR RB_ENC_CODERANGE_CLEAR -#define RB_ENC_CODERANGE_SET RB_ENC_CODERANGE_SET -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_INTERNAL_ENCODING_CODERANGE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/ctype.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/ctype.h deleted file mode 100644 index 64aaf0a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/ctype.h +++ /dev/null @@ -1,243 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_CTYPE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_CTYPE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to query chacater types. - */ - -#include "ruby/onigmo.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/encoding/encoding.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Queries if the passed pointer points to a newline character. What is a - * newline and what is not depends on the passed encoding. - * - * @param[in] p Pointer to a possibly-middle of a character. - * @param[in] end End of the string. - * @param[in] enc Encoding. - * @retval 0 It isn't. - * @retval otherwise It is. - */ -static inline bool -rb_enc_is_newline(const char *p, const char *e, rb_encoding *enc) -{ - OnigUChar *up = RBIMPL_CAST((OnigUChar *)p); - OnigUChar *ue = RBIMPL_CAST((OnigUChar *)e); - - return ONIGENC_IS_MBC_NEWLINE(enc, up, ue); -} - -/** - * Queries if the passed code point is of passed character type in the passed - * encoding. The "character type" here is a set of macros defined in onigmo.h, - * like `ONIGENC_CTYPE_PUNCT`. - * - * @param[in] c An `OnigCodePoint` value. - * @param[in] t An `OnigCtype` value. - * @param[in] enc A `rb_encoding*` value. - * @retval 1 `c` is of `t` in `enc`. - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_isctype(OnigCodePoint c, OnigCtype t, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_CTYPE(enc, c, t); -} - -/** - * Identical to rb_isascii(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 0 `c` is out of range of ASCII character set in `enc`. - * @retval 1 Otherwise. - * - * @internal - * - * `enc` is ignored. This is at least an intentional implementation detail - * (not a bug). But there could be rooms for future extensions. - */ -static inline bool -rb_enc_isascii(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_ASCII(c); -} - -/** - * Identical to rb_isalpha(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "ALPHA". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_isalpha(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_ALPHA(enc, c); -} - -/** - * Identical to rb_islower(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "LOWER". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_islower(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_LOWER(enc, c); -} - -/** - * Identical to rb_isupper(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "UPPER". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_isupper(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_UPPER(enc, c); -} - -/** - * Identical to rb_ispunct(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "PUNCT". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_ispunct(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_PUNCT(enc, c); -} - -/** - * Identical to rb_isalnum(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "ANUM". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_isalnum(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_ALNUM(enc, c); -} - -/** - * Identical to rb_isprint(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "PRINT". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_isprint(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_PRINT(enc, c); -} - -/** - * Identical to rb_isspace(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "PRINT". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_isspace(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_SPACE(enc, c); -} - -/** - * Identical to rb_isdigit(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @retval 1 `enc` classifies `c` as "DIGIT". - * @retval 0 Otherwise. - */ -static inline bool -rb_enc_isdigit(OnigCodePoint c, rb_encoding *enc) -{ - return ONIGENC_IS_CODE_DIGIT(enc, c); -} - -RBIMPL_ATTR_CONST() -/** - * Identical to rb_toupper(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @return `c`'s (Ruby's definition of) upper case counterpart. - * - * @internal - * - * As `RBIMPL_ATTR_CONST` implies this function ignores `enc`. - */ -int rb_enc_toupper(int c, rb_encoding *enc); - -RBIMPL_ATTR_CONST() -/** - * Identical to rb_tolower(), except it additionally takes an encoding. - * - * @param[in] c A code point. - * @param[in] enc An encoding. - * @return `c`'s (Ruby's definition of) lower case counterpart. - * - * @internal - * - * As `RBIMPL_ATTR_CONST` implies this function ignores `enc`. - */ -int rb_enc_tolower(int c, rb_encoding *enc); - -RBIMPL_SYMBOL_EXPORT_END() - -/** @cond INTERNAL_MACRO */ -#define rb_enc_is_newline rb_enc_is_newline -#define rb_enc_isalnum rb_enc_isalnum -#define rb_enc_isalpha rb_enc_isalpha -#define rb_enc_isascii rb_enc_isascii -#define rb_enc_isctype rb_enc_isctype -#define rb_enc_isdigit rb_enc_isdigit -#define rb_enc_islower rb_enc_islower -#define rb_enc_isprint rb_enc_isprint -#define rb_enc_ispunct rb_enc_ispunct -#define rb_enc_isspace rb_enc_isspace -#define rb_enc_isupper rb_enc_isupper -/** @endcond */ - -#endif /* RUBY_INTERNAL_ENCODING_CTYPE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/encoding.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/encoding.h deleted file mode 100644 index 9208d27..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/encoding.h +++ /dev/null @@ -1,1058 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_ENCODING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_ENCODING_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines ::rb_encoding - */ - -#include "ruby/oniguruma.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/attr/returns_nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/fl_type.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * `Encoding` class. - * - * @ingroup object - */ -RUBY_EXTERN VALUE rb_cEncoding; - -/** - * @private - * - * Bit constants used when embedding encodings into ::RBasic::flags. Extension - * libraries must not bother such things. - */ -enum ruby_encoding_consts { - - /** Max possible number of embeddable encodings. */ - RUBY_ENCODING_INLINE_MAX = 127, - - /** Where inline encodings reside. */ - RUBY_ENCODING_SHIFT = (RUBY_FL_USHIFT+10), - - /** Bits we use to store inline encodings. */ - RUBY_ENCODING_MASK = (RUBY_ENCODING_INLINE_MAX<> RUBY_ENCODING_SHIFT; - - return RBIMPL_CAST((int)ret); -} - -#define ENCODING_SET_INLINED(obj,i) RB_ENCODING_SET_INLINED(obj,i) /**< @old{RB_ENCODING_SET_INLINED} */ -#define ENCODING_SET(obj,i) RB_ENCODING_SET(obj,i) /**< @old{RB_ENCODING_SET} */ -#define ENCODING_GET_INLINED(obj) RB_ENCODING_GET_INLINED(obj) /**< @old{RB_ENCODING_GET_INLINED} */ -#define ENCODING_GET(obj) RB_ENCODING_GET(obj) /**< @old{RB_ENCODING_GET} */ -#define ENCODING_IS_ASCII8BIT(obj) RB_ENCODING_IS_ASCII8BIT(obj) /**< @old{RB_ENCODING_IS_ASCII8BIT} */ -#define ENCODING_MAXNAMELEN RUBY_ENCODING_MAXNAMELEN /**< @old{RUBY_ENCODING_MAXNAMELEN} */ - -/** - * The type of encoding. Our design here is we take Oniguruma/Onigmo's - * multilingualisation schema as our base data structure. - */ -typedef const OnigEncodingType rb_encoding; - -RBIMPL_ATTR_NOALIAS() -/** - * Converts a character option to its encoding. It only supports a very - * limited set of Japanese encodings due to its Japanese origin. Ruby still - * has this in-core for backwards compatibility. But new codes must not bother - * such concept like one-character encoding option. Consider deprecated in - * practice. - * - * @param[in] c One of `['n', 'e', 's', 'u', 'i', 'x', 'm']`. - * @param[out] option Return buffer. - * @param[out] kcode Return buffer. - * @retval 1 `c` understood properly. - * @retval 0 `c` is not understood. - * @post `option` is a ::OnigOptionType. - * @post `kcode` is an enum `ruby_preserved_encindex`. - * - * @internal - * - * `kcode` is opaque because `ruby_preserved_encindex` is not visible from - * extension libraries. But who cares? - */ -int rb_char_to_option_kcode(int c, int *option, int *kcode); - -/** - * Creates a new encoding, using the passed one as a template. - * - * @param[in] name Name of the creating encoding. - * @param[in] src Template. - * @exception rb_eArgError Duplicated or malformed `name`. - * @return Replicated new encoding's index. - * @post Encoding named `name` is created as a copy of `src`, whose index - * is the return value. - * - * @internal - * - * `name` can be `NULL`, but that just raises an exception. OTOH it seems no - * sanity check is done against `src`...? - */ -int rb_enc_replicate(const char *name, rb_encoding *src); - -/** - * Creates a new "dummy" encoding. Roughly speaking, an encoding is dummy when - * it is stateful. Notable example of dummy encoding are those defined in - * ISO/IEC 2022 - * - * @param[in] name Name of the creating encoding. - * @exception rb_eArgError Duplicated or malformed `name`. - * @return New dummy encoding's index. - * @post Encoding named `name` is created, whose index is the return - * value. - */ -int rb_define_dummy_encoding(const char *name); - -RBIMPL_ATTR_PURE() -/** - * Queries if the passed encoding is dummy. - * - * @param[in] enc Encoding in question. - * @retval 1 It is. - * @retval 0 It isn't. - */ -int rb_enc_dummy_p(rb_encoding *enc); - -RBIMPL_ATTR_PURE() -/** - * Queries the index of the encoding. An encoding's index is a Ruby-local - * concept. It is a (sequential) number assigned to each encoding. - * - * @param[in] enc Encoding in question. - * @return Its index. - * @note You can pass null pointers to this function. It is equivalent - * to rb_usascii_encindex() then. - */ -int rb_enc_to_index(rb_encoding *enc); - -/** - * Queries the index of the encoding of the passed object, if any. - * - * @param[in] obj Object in question. - * @retval -1 `obj` is incapable of having an encoding. - * @retval otherwise `obj`'s encoding's index. - */ -int rb_enc_get_index(VALUE obj); - -/** - * @alias{rb_enc_get_index} - * - * @internal - * - * Implementation wise this is not a verbatim alias of rb_enc_get_index(). But - * the API is consistent. Don't bother. - */ -static inline int -RB_ENCODING_GET(VALUE obj) -{ - int encindex = RB_ENCODING_GET_INLINED(obj); - - if (encindex == RUBY_ENCODING_INLINE_MAX) { - return rb_enc_get_index(obj); - } - else { - return encindex; - } -} - -/** - * Destructively assigns an encoding (via its index) to an object. - * - * @param[out] obj Object in question. - * @param[in] encindex An encoding index. - * @exception rb_eFrozenError `obj` is frozen. - * @exception rb_eArgError `obj` is incapable of having an encoding. - * @exception rb_eEncodingError `encindex` is out of bounds. - * @exception rb_eLoadError Failed to load the encoding. - */ -void rb_enc_set_index(VALUE obj, int encindex); - -/** @alias{rb_enc_set_index} */ -static inline void -RB_ENCODING_SET(VALUE obj, int encindex) -{ - rb_enc_set_index(obj, encindex); -} - -/** - * This is #RB_ENCODING_SET + RB_ENC_CODERANGE_SET combo. The object must be - * capable of having inline encoding. Using this macro needs deep - * understanding of bit level object binary layout. - * - * @param[out] obj Target object. - * @param[in] encindex Encoding in encindex format. - * @param[in] cr An enum ::ruby_coderange_type. - * @post `obj`'s encoding is `encindex`. - * @post `obj`'s code range is `cr`. - */ -static inline void -RB_ENCODING_CODERANGE_SET(VALUE obj, int encindex, enum ruby_coderange_type cr) -{ - RB_ENCODING_SET(obj, encindex); - RB_ENC_CODERANGE_SET(obj, cr); -} - -RBIMPL_ATTR_PURE() -/** - * Queries if the passed object can have its encoding. - * - * @param[in] obj Object in question. - * @retval 1 It can. - * @retval 0 It cannot. - */ -int rb_enc_capable(VALUE obj); - -/** - * Queries the index of the encoding. - * - * @param[in] name Name of the encoding to find. - * @exception rb_eArgError No such encoding named `name`. - * @retval -1 `name` exists, but unable to load. - * @retval otherwise Index of encoding named `name`. - */ -int rb_enc_find_index(const char *name); - -/** - * Registers an "alias" name. In the wild, an encoding can be called using - * multiple names. For instance an encoding known as `"CP932"` is also called - * `"SJIS"` on occasions. This API registers such relationships. - * - * @param[in] alias New name. - * @param[in] orig Old name. - * @exception rb_eArgError `alias` is duplicated or malformed. - * @retval -1 Failed to load `orig`. - * @retval otherwise The index of `orig` and `alias`. - * @post `alias` is a synonym of `orig`. They refer to the identical - * encoding. - */ -int rb_enc_alias(const char *alias, const char *orig); - -/** - * Obtains a encoding index from a wider range of objects (than - * rb_enc_find_index()). - * - * @param[in] obj An ::rb_cEncoding, or its name in ::rb_cString. - * @retval -1 `obj` is unexpected type/contents. - * @retval otherwise Index corresponding to `obj`. - */ -int rb_to_encoding_index(VALUE obj); - -/** - * Identical to rb_find_encoding(), except it raises an exception instead of - * returning NULL. - * - * @param[in] obj An ::rb_cEncoding, or its name in ::rb_cString. - * @exception rb_eTypeError `obj` is neither ::rb_cEncoding nor ::rb_cString. - * @exception rb_eArgError `obj` is an unknown encoding name. - * @return Encoding of `obj`. - */ -rb_encoding *rb_to_encoding(VALUE obj); - -/** - * Identical to rb_to_encoding_index(), except the return type. - * - * @param[in] obj An ::rb_cEncoding, or its name in ::rb_cString. - * @exception rb_eTypeError `obj` is neither ::rb_cEncoding nor ::rb_cString. - * @retval NULL No such encoding. - * @return otherwise Encoding of `obj`. - */ -rb_encoding *rb_find_encoding(VALUE obj); - -/** - * Identical to rb_enc_get_index(), except the return type. - * - * @param[in] obj Object in question. - * @retval NULL Obj is incapable of having an encoding. - * @retval otherwise `obj`'s encoding. - */ -rb_encoding *rb_enc_get(VALUE obj); - -/** - * Look for the "common" encoding between the two. One character can or cannot - * be expressed depending on an encoding. This function finds the super-set of - * encodings that satisfy contents of both arguments. If that is impossible - * returns NULL. - * - * @param[in] str1 An object. - * @param[in] str2 Another object. - * @retval NULL No encoding can satisfy both at once. - * @retval otherwise Common encoding between the two. - * @note Arguments can be non-string, e.g. Regexp. - */ -rb_encoding *rb_enc_compatible(VALUE str1, VALUE str2); - -/** - * Identical to rb_enc_compatible(), except it raises an exception instead of - * returning NULL. - * - * @param[in] str1 An object. - * @param[in] str2 Another object. - * @exception rb_eEncCompatError No encoding can satisfy both. - * @return Common encoding between the two. - * @note Arguments can be non-string, e.g. Regexp. - */ -rb_encoding *rb_enc_check(VALUE str1,VALUE str2); - -/** - * Identical to rb_enc_set_index(), except it additionally does contents fix-up - * depending on the passed object. It for instance changes the byte length of - * terminating `U+0000` according to the passed encoding. - * - * @param[out] obj Object in question. - * @param[in] encindex An encoding index. - * @exception rb_eFrozenError `obj` is frozen. - * @exception rb_eArgError `obj` is incapable of having an encoding. - * @exception rb_eEncodingError `encindex` is out of bounds. - * @exception rb_eLoadError Failed to load the encoding. - * @return The passed `obj`. - * @post `obj`'s contents might be fixed according to `encindex`. - */ -VALUE rb_enc_associate_index(VALUE obj, int encindex); - -/** - * Identical to rb_enc_associate(), except it takes an encoding itself instead - * of its index. - * - * @param[out] obj Object in question. - * @param[in] enc An encoding. - * @exception rb_eFrozenError `obj` is frozen. - * @exception rb_eArgError `obj` is incapable of having an encoding. - * @return The passed `obj`. - * @post `obj`'s contents might be fixed according to `enc`. - */ -VALUE rb_enc_associate(VALUE obj, rb_encoding *enc); - -/** - * Destructively copies the encoding of the latter object to that of former - * one. It can also be seen as a routine identical to - * rb_enc_associate_index(), except it takes an object's encoding instead of an - * encoding's index. - * - * @param[out] dst Object to modify. - * @param[in] src Object to reference. - * @exception rb_eFrozenError `dst` is frozen. - * @exception rb_eArgError `dst` is incapable of having an encoding. - * @exception rb_eEncodingError `src` is incapable of having an encoding. - * @post `dst`'s encoding is that of `src`'s. - */ -void rb_enc_copy(VALUE dst, VALUE src); - - -/** - * Identical to rb_find_encoding(), except it takes an encoding index instead - * of a Ruby object. - * - * @param[in] idx An encoding index. - * @retval NULL No such encoding. - * @retval otherwise An encoding whose index is `idx`. - */ -rb_encoding *rb_enc_from_index(int idx); - -/** - * Identical to rb_find_encoding(), except it takes a C's string instead of - * Ruby's. - * - * @param[in] name Name of the encoding to query. - * @retval NULL No such encoding. - * @retval otherwise An encoding whose index is `idx`. - */ -rb_encoding *rb_enc_find(const char *name); - -/** - * Queries the (canonical) name of the passed encoding. - * - * @param[in] enc An encoding. - * @return Its name. - */ -static inline const char * -rb_enc_name(rb_encoding *enc) -{ - return enc->name; -} - -/** - * Queries the minimum number of bytes that the passed encoding needs to - * represent a character. For ASCII and compatible encodings this is typically - * 1. There are however encodings whose minimum is not 1; they are - * historically called wide characters. - * - * @param[in] enc An encoding. - * @return Its least possible number of bytes except 0. - */ -static inline int -rb_enc_mbminlen(rb_encoding *enc) -{ - return enc->min_enc_len; -} - -/** - * Queries the maximum number of bytes that the passed encoding needs to - * represent a character. Fixed-width encodings have the same value for this - * one and #rb_enc_mbminlen. However there are variable-width encodings. - * UTF-8, for instance, takes from 1 up to 6 bytes. - * - * @param[in] enc An encoding. - * @return Its maximum possible number of bytes of a character. - */ -static inline int -rb_enc_mbmaxlen(rb_encoding *enc) -{ - return enc->max_enc_len; -} - -/** - * Queries the number of bytes of the character at the passed pointer. - * - * @param[in] p Pointer to a character's first byte. - * @param[in] e End of the string that has `p`. - * @param[in] enc Encoding of the string. - * @return If the character at `p` does not end until `e`, number of bytes - * between `p` and `e`. Otherwise the number of bytes that the - * character at `p` is encoded. - * - * @internal - * - * Strictly speaking there are chances when `p` points to a middle byte of a - * wide character. This function returns "the number of bytes from `p` to - * nearest of either `e` or the next character boundary", if you go strict. - */ -int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc); - -/** - * Identical to rb_enc_mbclen() unless the character at `p` overruns `e`. That - * can happen for instance when you read from a socket and its partial read - * cuts a wide character in-between. In those situations this function - * "estimates" theoretical length of the character in question. Typically it - * tends to be possible to know how many bytes a character needs before - * actually reaching its end; for instance UTF-8 encodes a character's length - * in the first byte of it. This function returns that info. - * - * @note This implies that the string is not broken. - * - * @param[in] p Pointer to the character's first byte. - * @param[in] e End of the string that has `p`. - * @param[in] enc Encoding of the string. - * @return Number of bytes of character at `p`, measured or estimated. - */ -int rb_enc_fast_mbclen(const char *p, const char *e, rb_encoding *enc); - -/** - * Queries the number of bytes of the character at the passed pointer. This - * function returns 3 different types of information: - * - * ```CXX - * auto n = rb_enc_precise_mbclen(p, q, r); - * - * if (ONIGENC_MBCLEN_CHARFOUND_P(n)) { - * // Character found. Normal return. - * auto found_length = ONIGENC_MBCLEN_CHARFOUND_LEN(n); - * } - * else if (ONIGENC_MBCLEN_NEEDMORE_P(n)) { - * // Character overruns past `q`; needs more. - * auto requested_length = ONIGENC_MBCLEN_NEEDMORE_LEN(n); - * } - * else { - * // `p` is broken. - * assert(ONIGENC_MBCLEN_INVALID_P(n)); - * } - * ``` - * - * @param[in] p Pointer to the character's first byte. - * @param[in] e End of the string that has `p`. - * @param[in] enc Encoding of the string. - * @return Encoded read/needed number of bytes (see above). - */ -int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc); - -#define MBCLEN_CHARFOUND_P(ret) ONIGENC_MBCLEN_CHARFOUND_P(ret) /**< @old{ONIGENC_MBCLEN_CHARFOUND_P} */ -#define MBCLEN_CHARFOUND_LEN(ret) ONIGENC_MBCLEN_CHARFOUND_LEN(ret) /**< @old{ONIGENC_MBCLEN_CHARFOUND_LEN} */ -#define MBCLEN_INVALID_P(ret) ONIGENC_MBCLEN_INVALID_P(ret) /**< @old{ONIGENC_MBCLEN_INVALID_P} */ -#define MBCLEN_NEEDMORE_P(ret) ONIGENC_MBCLEN_NEEDMORE_P(ret) /**< @old{ONIGENC_MBCLEN_NEEDMORE_P} */ -#define MBCLEN_NEEDMORE_LEN(ret) ONIGENC_MBCLEN_NEEDMORE_LEN(ret) /**< @old{ONIGENC_MBCLEN_NEEDMORE_LEN} */ - -/** - * Queries the code point of character pointed by the passed pointer. If that - * code point is included in ASCII that code point is returned. Otherwise -1. - * This can be different from just looking at the first byte. For instance it - * reads 2 bytes in case of UTF-16BE. - * - * @param[in] p Pointer to the character's first byte. - * @param[in] e End of the string that has `p`. - * @param[in] len Return buffer. - * @param[in] enc Encoding of the string. - * @retval -1 The character at `p` is not i ASCII. - * @retval otherwise A code point of the character at `p`. - * @post `len` (if set) is the number of bytes of `p`. - */ -int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc); - -/** - * Queries the code point of character pointed by the passed pointer. - * Exceptions happen in case of broken input. - * - * @param[in] p Pointer to the character's first byte. - * @param[in] e End of the string that has `p`. - * @param[in] len Return buffer. - * @param[in] enc Encoding of the string. - * @exception rb_eArgError `p` is broken. - * @return Code point of the character pointed by `p`. - * @post `len` (if set) is the number of bytes of `p`. - */ -unsigned int rb_enc_codepoint_len(const char *p, const char *e, int *len, rb_encoding *enc); - -/** - * Queries the code point of character pointed by the passed pointer. - * Exceptions happen in case of broken input. - * - * @deprecated Use rb_enc_codepoint_len() instead. - * @param[in] p Pointer to the character's first byte. - * @param[in] e End of the string that has `p`. - * @param[in] enc Encoding of the string. - * @exception rb_eArgError `p` is broken. - * @return Code point of the character pointed by `p`. - * - * @internal - * - * @matz says in commit 91e5ba1cb865a2385d3e1cbfacd824496898e098 that the line - * below is a "prototype for obsolete function". However even today there - * still are some use cases of it throughout our repository. It seems it has - * its own niche. - */ -static inline unsigned int -rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc) -{ - return rb_enc_codepoint_len(p, e, 0, enc); - /* ^^^ - * This can be `NULL` in C, `nullptr` in C++, and `0` for both. - * We choose the most portable one here. - */ -} - - -/** - * Identical to rb_enc_codepoint(), except it assumes the passed character is - * not broken. - * - * @param[in] p Pointer to the character's first byte. - * @param[in] e End of the string that has `p`. - * @param[in] enc Encoding of the string. - * @return Code point of the character pointed by `p`. - */ -static inline OnigCodePoint -rb_enc_mbc_to_codepoint(const char *p, const char *e, rb_encoding *enc) -{ - const OnigUChar *up = RBIMPL_CAST((const OnigUChar *)p); - const OnigUChar *ue = RBIMPL_CAST((const OnigUChar *)e); - - return ONIGENC_MBC_TO_CODE(enc, up, ue); -} - -/** - * Queries the number of bytes requested to represent the passed code point - * using the passed encoding. - * - * @param[in] code Code point in question. - * @param[in] enc Encoding to convert the code into a byte sequence. - * @exception rb_eArgError `enc` does not glean `code`. - * @return Number of bytes requested to represent `code` using `enc`. - */ -int rb_enc_codelen(int code, rb_encoding *enc); - -/** - * Identical to rb_enc_codelen(), except it returns 0 for invalid code points. - * - * @param[in] c Code point in question. - * @param[in] enc Encoding to convert `c` into a byte sequence. - * @retval 0 `c` is invalid. - * @return otherwise Number of bytes needed for `enc` to encode `c`. - */ -static inline int -rb_enc_code_to_mbclen(int c, rb_encoding *enc) -{ - OnigCodePoint uc = RBIMPL_CAST((OnigCodePoint)c); - - return ONIGENC_CODE_TO_MBCLEN(enc, uc); -} - -/** - * Identical to rb_enc_uint_chr(), except it writes back to the passed buffer - * instead of allocating one. - * - * @param[in] c Code point. - * @param[out] buf Return buffer. - * @param[in] enc Target encoding scheme. - * @post `c` is encoded according to `enc`, then written to `buf`. - * - * @internal - * - * The second argument must be typed. But its current usages prevent us from - * being any stricter than this. :FIXME: - */ -static inline int -rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc) -{ - OnigCodePoint uc = RBIMPL_CAST((OnigCodePoint)c); - OnigUChar *ubuf = RBIMPL_CAST((OnigUChar *)buf); - - return ONIGENC_CODE_TO_MBC(enc, uc, ubuf); -} - -/** - * Queries the previous (left) character. - * - * @param[in] s Start of the string. - * @param[in] p Pointer to a character. - * @param[in] e End of the string. - * @param[in] enc Encoding. - * @retval NULL No previous character. - * @retval otherwise Pointer to the head of the previous character. - */ -static inline char * -rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc) -{ - const OnigUChar *us = RBIMPL_CAST((const OnigUChar *)s); - const OnigUChar *up = RBIMPL_CAST((const OnigUChar *)p); - const OnigUChar *ue = RBIMPL_CAST((const OnigUChar *)e); - OnigUChar *ur = onigenc_get_prev_char_head(enc, us, up, ue); - - return RBIMPL_CAST((char *)ur); -} - -/** - * Queries the left boundary of a character. This function takes a pointer - * that is not necessarily a head of a character, and searches for its head. - * - * @param[in] s Start of the string. - * @param[in] p Pointer to a possibly-middle of a character. - * @param[in] e End of the string. - * @param[in] enc Encoding. - * @return Pointer to the head of the character that contains `p`. - */ -static inline char * -rb_enc_left_char_head(const char *s, const char *p, const char *e, rb_encoding *enc) -{ - const OnigUChar *us = RBIMPL_CAST((const OnigUChar *)s); - const OnigUChar *up = RBIMPL_CAST((const OnigUChar *)p); - const OnigUChar *ue = RBIMPL_CAST((const OnigUChar *)e); - OnigUChar *ur = onigenc_get_left_adjust_char_head(enc, us, up, ue); - - return RBIMPL_CAST((char *)ur); -} - -/** - * Queries the right boundary of a character. This function takes a pointer - * that is not necessarily a head of a character, and searches for its tail. - * - * @param[in] s Start of the string. - * @param[in] p Pointer to a possibly-middle of a character. - * @param[in] e End of the string. - * @param[in] enc Encoding. - * @return Pointer to the end of the character that contains `p`. - */ -static inline char * -rb_enc_right_char_head(const char *s, const char *p, const char *e, rb_encoding *enc) -{ - const OnigUChar *us = RBIMPL_CAST((const OnigUChar *)s); - const OnigUChar *up = RBIMPL_CAST((const OnigUChar *)p); - const OnigUChar *ue = RBIMPL_CAST((const OnigUChar *)e); - OnigUChar *ur = onigenc_get_right_adjust_char_head(enc, us, up, ue); - - return RBIMPL_CAST((char *)ur); -} - -/** - * Scans the string backwards for n characters. - * - * @param[in] s Start of the string. - * @param[in] p Pointer to a character. - * @param[in] e End of the string. - * @param[in] n Steps. - * @param[in] enc Encoding. - * @retval NULL There are no `n` characters left. - * @retval otherwise Pointer to `n` character before `p`. - */ -static inline char * -rb_enc_step_back(const char *s, const char *p, const char *e, int n, rb_encoding *enc) -{ - const OnigUChar *us = RBIMPL_CAST((const OnigUChar *)s); - const OnigUChar *up = RBIMPL_CAST((const OnigUChar *)p); - const OnigUChar *ue = RBIMPL_CAST((const OnigUChar *)e); - const OnigUChar *ur = onigenc_step_back(enc, us, up, ue, n); - - return RBIMPL_CAST((char *)ur); -} - -/** - * @private - * - * This is an implementation detail of rb_enc_asciicompat(). People don't use - * it directly. Just always use rb_enc_asciicompat(). - * - * @param[in] enc Encoding in question. - * @retval 1 It is ASCII compatible. - * @retval 0 It isn't. - */ -static inline int -rb_enc_asciicompat_inline(rb_encoding *enc) -{ - return rb_enc_mbminlen(enc)==1 && !rb_enc_dummy_p(enc); -} - -/** - * Queries if the passed encoding is _in some sense_ compatible with ASCII. - * The concept of ASCII compatibility is nuanced, and private to our - * implementation. For instance SJIS is ASCII compatible to us, despite their - * having different characters at code point `0x5C`. This is based on some - * practical consideration that Japanese people confuses SJIS to be "upper - * compatible" with ASCII (which is in fact a wrong idea, but we just don't go - * strict here). An example of ASCII incompatible encoding is UTF-16. UTF-16 - * shares code points with ASCII, but employs a completely different encoding - * scheme. - * - * @param[in] enc Encoding in question. - * @retval 0 It is incompatible. - * @retval 1 It is compatible. - */ -static inline bool -rb_enc_asciicompat(rb_encoding *enc) -{ - if (rb_enc_mbminlen(enc) != 1) { - return false; - } - else if (rb_enc_dummy_p(enc)) { - return false; - } - else { - return true; - } -} - -/** - * Queries if the passed string is in an ASCII-compatible encoding. - * - * @param[in] str A Ruby's string to query. - * @retval 0 `str` is not a String, or an ASCII-incompatible string. - * @retval 1 Otherwise. - */ -static inline bool -rb_enc_str_asciicompat_p(VALUE str) -{ - rb_encoding *enc = rb_enc_get(str); - - return rb_enc_asciicompat(enc); -} - -/** - * Queries the Ruby-level counterpart instance of ::rb_cEncoding that - * corresponds to the passed encoding. - * - * @param[in] enc An encoding - * @retval RUBY_Qnil `enc` is a null pointer. - * @retval otherwise An instance of ::rb_cEncoding. - */ -VALUE rb_enc_from_encoding(rb_encoding *enc); - -RBIMPL_ATTR_PURE() -/** - * Queries if the passed encoding is either one of UTF-8/16/32. - * - * @note It does not take UTF-7, which we actually support, into account. - * - * @param[in] enc Encoding in question. - * @retval 0 It is not a Unicode variant. - * @retval otherwise It is. - * - * @internal - * - * In reality it returns 1/0, but the value is abstracted as - * `ONIGENC_FLAG_UNICODE`. - */ -int rb_enc_unicode_p(rb_encoding *enc); - -RBIMPL_ATTR_RETURNS_NONNULL() -/** - * Queries the encoding that represents ASCII-8BIT a.k.a. binary. - * - * @return The encoding that represents ASCII-8BIT. - * - * @internal - * - * This can not return NULL once the process properly boots up. - */ -rb_encoding *rb_ascii8bit_encoding(void); - -RBIMPL_ATTR_RETURNS_NONNULL() -/** - * Queries the encoding that represents UTF-8. - * - * @return The encoding that represents UTF-8. - * - * @internal - * - * This can not return NULL once the process properly boots up. - */ -rb_encoding *rb_utf8_encoding(void); - -RBIMPL_ATTR_RETURNS_NONNULL() -/** - * Queries the encoding that represents US-ASCII. - * - * @return The encoding that represents US-ASCII. - * - * @internal - * - * This can not return NULL once the process properly boots up. - */ -rb_encoding *rb_usascii_encoding(void); - -/** - * Queries the encoding that represents the current locale. - * - * @return The encoding that represents the process' locale. - * - * @internal - * - * This is dynamic. If you change the process' locale by e.g. calling - * `setlocale(3)`, that should also change the return value of this function. - * - * There is no official way for Ruby scripts to manipulate locales, though. - */ -rb_encoding *rb_locale_encoding(void); - -/** - * Queries the "filesystem" encoding. This is the encoding that ruby expects - * info from the OS' file system are in. This affects for instance return - * value of rb_dir_getwd(). Most notably on Windows it can be an alias of OS - * codepage. Most notably on Linux users can set this via default external - * encoding. - * - * @return The "filesystem" encoding. - */ -rb_encoding *rb_filesystem_encoding(void); - -/** - * Queries the "default external" encoding. This is used to interact with - * outer-process things such as File. Though not recommended, you can set this - * using rb_enc_set_default_external(). - * - * @return The "default external" encoding. - */ -rb_encoding *rb_default_external_encoding(void); - -/** - * Queries the "default internal" encoding. This could be a null pointer. - * Otherwise, outer-process info are transcoded from default external encoding - * to this one during reading from an IO. - * - * @return The "default internal" encoding (if any). - */ -rb_encoding *rb_default_internal_encoding(void); - -#ifndef rb_ascii8bit_encindex -RBIMPL_ATTR_CONST() -/** - * Identical to rb_ascii8bit_encoding(), except it returns the encoding's index - * instead of the encoding itself. - * - * @return The index of encoding of ASCII-8BIT. - * - * @internal - * - * This happens to be 0. - */ -int rb_ascii8bit_encindex(void); -#endif - -/** - * Queries if the passed object is in ascii 8bit (== binary) encoding. The - * object must be capable of having inline encoding. Using this macro needs - * deep understanding of bit level object binary layout. - * - * @param[in] obj An object to check. - * @retval 1 It is. - * @retval 0 It isn't. - */ -static inline bool -RB_ENCODING_IS_ASCII8BIT(VALUE obj) -{ - return RB_ENCODING_GET_INLINED(obj) == rb_ascii8bit_encindex(); -} - -#ifndef rb_utf8_encindex -RBIMPL_ATTR_CONST() -/** - * Identical to rb_utf8_encoding(), except it returns the encoding's index - * instead of the encoding itself. - * - * @return The index of encoding of UTF-8. - */ -int rb_utf8_encindex(void); -#endif - -#ifndef rb_usascii_encindex -RBIMPL_ATTR_CONST() -/** - * Identical to rb_usascii_encoding(), except it returns the encoding's index - * instead of the encoding itself. - * - * @return The index of encoding of UTF-8. - */ -int rb_usascii_encindex(void); -#endif - -/** - * Identical to rb_locale_encoding(), except it returns the encoding's index - * instead of the encoding itself. - * - * @return The index of the locale encoding. - */ -int rb_locale_encindex(void); - -/** - * Identical to rb_filesystem_encoding(), except it returns the encoding's - * index instead of the encoding itself. - * - * @return The index of the filesystem encoding. - */ -int rb_filesystem_encindex(void); - -/** - * Identical to rb_default_external_encoding(), except it returns the - * Ruby-level counterpart instance of ::rb_cEncoding that corresponds to the - * default external encoding. - * - * @return An instance of ::rb_cEncoding of default external. - */ -VALUE rb_enc_default_external(void); - -/** - * Identical to rb_default_internal_encoding(), except it returns the - * Ruby-level counterpart instance of ::rb_cEncoding that corresponds to the - * default internal encoding. - * - * @return An instance of ::rb_cEncoding of default internal. - */ -VALUE rb_enc_default_internal(void); - -/** - * Destructively assigns the passed encoding as the default external encoding. - * You should not use this API. It has process-global side effects. Also it - * doesn't change encodings of strings that have already been read. - * - * @param[in] encoding Ruby level encoding. - * @exception rb_eArgError `encoding` is ::RUBY_Qnil. - * @post The default external encoding is `encoding`. - */ -void rb_enc_set_default_external(VALUE encoding); - -/** - * Destructively assigns the passed encoding as the default internal encoding. - * You should not use this API. It has process-global side effects. Also it - * doesn't change encodings of strings that have already been read. - * - * @param[in] encoding Ruby level encoding. - * @post The default internal encoding is `encoding`. - * @note Unlike rb_enc_set_default_external() you can pass ::RUBY_Qnil. - */ -void rb_enc_set_default_internal(VALUE encoding); - -/** - * Returns a platform-depended "charmap" of the current locale. This - * information is called a "Codeset name" in IEEE 1003.1 section 13 - * (``). This is a very low-level API. The return value can have - * no corresponding encoding when passed to rb_find_encoding(). - * - * @param[in] klass Ignored for no reason (why...) - * @return The low-level locale charmap, in Ruby's String. - */ -VALUE rb_locale_charmap(VALUE klass); - -RBIMPL_SYMBOL_EXPORT_END() - -/** @cond INTERNAL_MACRO */ -#define RB_ENCODING_GET RB_ENCODING_GET -#define RB_ENCODING_GET_INLINED RB_ENCODING_GET_INLINED -#define RB_ENCODING_IS_ASCII8BIT RB_ENCODING_IS_ASCII8BIT -#define RB_ENCODING_SET RB_ENCODING_SET -#define RB_ENCODING_SET_INLINED RB_ENCODING_SET_INLINED -#define rb_enc_asciicompat rb_enc_asciicompat -#define rb_enc_code_to_mbclen rb_enc_code_to_mbclen -#define rb_enc_codepoint rb_enc_codepoint -#define rb_enc_left_char_head rb_enc_left_char_head -#define rb_enc_mbc_to_codepoint rb_enc_mbc_to_codepoint -#define rb_enc_mbcput rb_enc_mbcput -#define rb_enc_mbmaxlen rb_enc_mbmaxlen -#define rb_enc_mbminlen rb_enc_mbminlen -#define rb_enc_name rb_enc_name -#define rb_enc_prev_char rb_enc_prev_char -#define rb_enc_right_char_head rb_enc_right_char_head -#define rb_enc_step_back rb_enc_step_back -#define rb_enc_str_asciicompat_p rb_enc_str_asciicompat_p -/** @endcond */ - -#endif /* RUBY_INTERNAL_ENCODING_ENCODING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/pathname.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/pathname.h deleted file mode 100644 index 0b5e85a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/pathname.h +++ /dev/null @@ -1,184 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_PATHNAME_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_PATHNAME_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate encodings of pathnames. - */ - -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/encoding/encoding.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_NONNULL(()) -/** - * Returns a path component directly adjacent to the passed pointer. - * - * ``` - * "/multi/byte/encoded/pathname.txt" - * ^ ^ ^ - * | | +--- end - * | +--- @return - * +--- path - * ``` - * - * @param[in] path Where to start scanning. - * @param[in] end End of the path string. - * @param[in] enc Encoding of the string. - * @return A pointer in the passed string where the next path component - * resides, or `end` if there is no next path component. - */ -char *rb_enc_path_next(const char *path, const char *end, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL(()) -/** - * Seeks for non-prefix part of a pathname. This can be a no-op when the OS - * has no such concept like a path prefix. But there are OSes where path - * prefixes do exist. - * - * ``` - * "C:\multi\byte\encoded\pathname.txt" - * ^ ^ ^ - * | | +--- end - * | +--- @return - * +--- path - * ``` - * - * @param[in] path Where to start scanning. - * @param[in] end End of the path string. - * @param[in] enc Encoding of the string. - * @return A pointer in the passed string where non-prefix part starts, or - * `path` if the OS does not have path prefix. - */ -char *rb_enc_path_skip_prefix(const char *path, const char *end, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL(()) -/** - * Returns the last path component. - * - * ``` - * "/multi/byte/encoded/pathname.txt" - * ^ ^ ^ - * | | +--- end - * | +--- @return - * +--- path - * ``` - * - * @param[in] path Where to start scanning. - * @param[in] end End of the path string. - * @param[in] enc Encoding of the string. - * @return A pointer in the passed string where the last path component - * resides, or `end` if there is no more path component. - */ -char *rb_enc_path_last_separator(const char *path, const char *end, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL(()) -/** - * This just returns the passed end basically. It makes difference in case the - * passed string ends with tons of path separators like the following: - * - * ``` - * "/path/that/ends/with/lots/of/slashes//////////////" - * ^ ^ ^ - * | | +--- end - * | +--- @return - * +--- path - * ``` - * - * @param[in] path Where to start scanning. - * @param[in] end End of the path string. - * @param[in] enc Encoding of the string. - * @return A pointer in the passed string where the trailing path - * separators start, or `end` if there is no trailing path - * separators. - * - * @internal - * - * It seems this function was introduced to mimic what POSIX says about - * `basename(3)`. - */ -char *rb_enc_path_end(const char *path, const char *end, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL((1, 4)) -/** - * Our own encoding-aware version of `basename(3)`. Normally, this function - * returns the last path component of the given name. However in case the - * passed name ends with a path separator, it returns the name of the - * directory, not the last (empty) component. Also if the passed name is a - * root directory, it returns that root directory. Note however that Windows - * filesystem have drive letters, which this function does not return. - * - * @param[in] name Target path. - * @param[out] baselen Return buffer. - * @param[in,out] alllen Number of bytes of `name`. - * @param[enc] enc Encoding of `name`. - * @return The rightmost component of `name`. - * @post `baselen`, if passed, is updated to be the number of bytes - * of the returned basename. - * @post `alllen`, if passed, is updated to be the number of bytes of - * strings not considered as the basename. - */ -const char *ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL((1, 3)) -/** - * Our own encoding-aware version of `extname`. This function first applies - * rb_enc_path_last_separator() to the passed name and only concerns its return - * value (ignores any parent directories). This function returns complicated - * results: - * - * ```CXX - * auto path = "..."; - * auto len = strlen(path); - * auto ret = ruby_enc_find_extname(path, &len, rb_ascii8bit_encoding()); - * - * switch(len) { - * case 0: - * if (ret == 0) { - * // `path` is a file without extensions. - * } - * else { - * // `path` is a dotfile. - * // `ret` is the file's name. - * } - * break; - * - * case 1: - * // `path` _ends_ with a dot. - * // `ret` is that dot. - * break; - * - * default: - * // `path` has an extension. - * // `ret` is that extension. - * } - * ``` - * - * @param[in] name Target path. - * @param[in,out] len Number of bytes of `name`. - * @param[in] enc Encoding of `name`. - * @return See above. - * @post `len`, if passed, is updated (see above). - */ -const char *ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_INTERNAL_ENCODING_PATHNAME_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/re.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/re.h deleted file mode 100644 index d0de23b..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/re.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_RE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_RE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate encodings of symbols. - */ - -#include "ruby/internal/dllexport.h" -#include "ruby/internal/encoding/encoding.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Identical to rb_reg_new(), except it additionally takes an encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @param[in] enc Encoding of `ptr`. - * @param[in] opts Options e.g. ONIG_OPTION_MULTILINE. - * @exception rb_eRegexpError Failed to compile `ptr`. - * @return An allocated new instance of ::rb_cRegexp, of `enc` encoding, - * whose expression is compiled according to `ptr`. - */ -VALUE rb_enc_reg_new(const char *ptr, long len, rb_encoding *enc, int opts); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_INTERNAL_ENCODING_RE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/sprintf.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/sprintf.h deleted file mode 100644 index cb8737b..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/sprintf.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_SPRINTF_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_SPRINTF_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate encodings of symbols. - */ -#include "ruby/internal/config.h" -#include -#include "ruby/internal/attr/format.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/encoding/encoding.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Identical to rb_sprintf(), except it additionally takes an encoding. The - * passed encoding rules both the incoming format specifier and the resulting - * string. - * - * @param[in] enc Encoding of `fmt`. - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ... Variadic number of contents to format. - * @return A rendered new instance of ::rb_cString, of `enc` encoding. - */ -VALUE rb_enc_sprintf(rb_encoding *enc, const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 0) -/** - * Identical to rb_enc_sprintf(), except it takes a `va_list` instead of - * variadic arguments. It can also be seen as a routine identical to - * rb_vsprintf(), except it additionally takes an encoding. - * - * @param[in] enc Encoding of `fmt`. - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ap Contents to format. - * @return A rendered new instance of ::rb_cString, of `enc` encoding. - */ -VALUE rb_enc_vsprintf(rb_encoding *enc, const char *fmt, va_list ap); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((3)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4) -/** - * Identical to rb_raise(), except it additionally takes an encoding. - * - * @param[in] enc Encoding of the generating exception. - * @param[in] exc A subclass of ::rb_eException. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @param[in] ... Contents of the message. - * @exception exc The specified exception. - * @note It never returns. - */ -void rb_enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_INTERNAL_ENCODING_SPRINTF_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/string.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/string.h deleted file mode 100644 index 6ed7ca1..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/string.h +++ /dev/null @@ -1,346 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_STRING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_STRING_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate encodings of strings. - */ - -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/encoding/encoding.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/intern/string.h" /* rbimpl_strlen */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Identical to rb_enc_str_new(), except it additionally takes an encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @param[in] enc Encoding of `ptr`. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of `enc` - * encoding, whose contents are verbatim copy of `ptr`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - * @note `enc` can be a null pointer. It can also be seen as a routine - * identical to rb_usascii_str_new() then. - */ -VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_enc_str_new(), except it assumes the passed pointer is a - * pointer to a C string. It can also be seen as a routine identical to - * rb_str_new_cstr(), except it additionally takes an encoding. - * - * @param[in] ptr A C string. - * @param[in] enc Encoding of `ptr`. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of `enc` encoding, whose contents - * are verbatim copy of `ptr`. - * @pre `ptr` must not be a null pointer. - * @pre Because `ptr` is a C string it makes no sense for `enc` to be - * something like UTF-32. - * @note `enc` can be a null pointer. It can also be seen as a routine - * identical to rb_usascii_str_new_cstr() then. - */ -VALUE rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc); - -/** - * Identical to rb_enc_str_new(), except it takes a C string literal. It can - * also be seen as a routine identical to rb_str_new_static(), except it - * additionally takes an encoding. - * - * @param[in] ptr A C string literal. - * @param[in] len `strlen(ptr)`. - * @param[in] enc Encoding of `ptr`. - * @exception rb_eArgError `len` out of range of `size_t`. - * @pre `ptr` must be a C string constant. - * @return An instance of ::rb_cString, of `enc` encoding, whose backend - * storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - * @note `enc` can be a null pointer. It can also be seen as a routine - * identical to rb_usascii_str_new_static() then. - */ -VALUE rb_enc_str_new_static(const char *ptr, long len, rb_encoding *enc); - -/** - * Identical to rb_enc_str_new(), except it returns a "f"string. It can also - * be seen as a routine identical to rb_interned_str(), except it additionally - * takes an encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @param[in] enc Encoding of `ptr`. - * @exception rb_eArgError `len` is negative. - * @return A found or created instance of ::rb_cString, of `len` bytes - * length, of `enc` encoding, whose contents are identical to that - * of `ptr`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - * @note `enc` can be a null pointer. - */ -VALUE rb_enc_interned_str(const char *ptr, long len, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_enc_str_new_cstr(), except it returns a "f"string. It can - * also be seen as a routine identical to rb_interned_str_cstr(), except it - * additionally takes an encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] enc Encoding of `ptr`. - * @return A found or created instance of ::rb_cString of `enc` encoding, - * whose contents are identical to that of `ptr`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - * @note `enc` can be a null pointer. - */ -VALUE rb_enc_interned_str_cstr(const char *ptr, rb_encoding *enc); - -/** - * Counts the number of characters of the passed string, according to the - * passed encoding. This has to be complicated. The passed string could be - * invalid and/or broken. This routine would scan from the beginning til the - * end, byte by byte, to seek out character boundaries. Could be super slow. - * - * @param[in] head Leftmost pointer to the string. - * @param[in] tail Rightmost pointer to the string. - * @param[in] enc Encoding of the string. - * @return Number of characters exist in `head` .. `tail`. The definition - * of "character" depends on the passed `enc`. - */ -long rb_enc_strlen(const char *head, const char *tail, rb_encoding *enc); - -/** - * Queries the n-th character. Like rb_enc_strlen() this function can be fast - * or slow depending on the contents. Don't expect characters to be uniformly - * distributed across the entire string. - * - * @param[in] head Leftmost pointer to the string. - * @param[in] tail Rightmost pointer to the string. - * @param[in] nth Requested index of characters. - * @param[in] enc Encoding of the string. - * @return Pointer to the first byte of the character that is `nth` - * character ahead of `head`, or `tail` if there is no such - * character (OOB etc). The definition of "character" depends on - * the passed `enc`. - */ -char *rb_enc_nth(const char *head, const char *tail, long nth, rb_encoding *enc); - -/** - * Identical to rb_enc_get_index(), except the return type. - * - * @param[in] obj Object in question. - * @exception rb_eTypeError `obj` is incapable of having an encoding. - * @return `obj`'s encoding. - */ -VALUE rb_obj_encoding(VALUE obj); - -/** - * Identical to rb_str_cat(), except it additionally takes an encoding. - * - * @param[out] str Destination object. - * @param[in] ptr Contents to append. - * @param[in] len Length of `src`, in bytes. - * @param[in] enc Encoding of `ptr`. - * @exception rb_eArgError `len` is negative. - * @exception rb_eEncCompatError `enc` is not compatible with `str`. - * @return The passed `dst`. - * @post The contents of `ptr` is copied, transcoded into `dst`'s - * encoding, then pasted into `dst`'s end. - */ -VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc); - -/** - * Encodes the passed code point into a series of bytes. - * - * @param[in] code Code point. - * @param[in] enc Target encoding scheme. - * @exception rb_eRangeError `enc` does not glean `code`. - * @return An instance of ::rb_cString, of `enc` encoding, whose sole - * contents is `code` represented in `enc`. - * @note No way to encode code points bigger than UINT_MAX. - * - * @internal - * - * In other languages, APIs like this one could be seen as the primitive - * routines where encodings' "encode" feature are implemented. However in case - * of Ruby this is not the primitive one. We directly manipulate encoded - * strings. Encoding conversion routines transcode an encoded string directly - * to another one; not via a code point array. - */ -VALUE rb_enc_uint_chr(unsigned int code, rb_encoding *enc); - -/** - * Identical to rb_external_str_new(), except it additionally takes an - * encoding. However the whole point of rb_external_str_new() is to encode a - * string into default external encoding. Being able to specify arbitrary - * encoding just ruins the designed purpose the function meseems. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @param[in] enc Target encoding scheme. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to `enc` is fully defined over the given - * contents, then the return value is a string of `enc` encoding, - * whose contents are the converted ones. Otherwise the string is - * a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - * - * @internal - * - * @shyouhei has no idea why this one does not follow the naming convention - * that others obey. It seems to him that this should have been called - * `rb_enc_external_str_new`. - */ -VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *enc); - -/** - * Identical to rb_str_export(), except it additionally takes an encoding. - * - * @param[in] obj Target object. - * @param[in] enc Target encoding. - * @exception rb_eTypeError No implicit conversion to String. - * @return Converted ruby string of `enc` encoding. - */ -VALUE rb_str_export_to_enc(VALUE obj, rb_encoding *enc); - -/** - * Encoding conversion main routine. - * - * @param[in] str String to convert. - * @param[in] from Source encoding. - * @param[in] to Destination encoding. - * @return A copy of `str`, with conversion from `from` to `to` applied. - * @note `from` can be a null pointer. `str`'s encoding is taken then. - * @note `to` can be a null pointer. No-op then. - */ -VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to); - -/** - * Identical to rb_str_conv_enc(), except it additionally takes IO encoder - * options. The extra arguments can be constructed using io_extract_modeenc() - * etc. - * - * @param[in] str String to convert. - * @param[in] from Source encoding. - * @param[in] to Destination encoding. - * @param[in] ecflags A set of enum ::ruby_econv_flag_type. - * @param[in] ecopts Optional hash. - * @return A copy of `str`, with conversion from `from` to `to` applied. - * @note `from` can be a null pointer. `str`'s encoding is taken then. - * @note `to` can be a null pointer. No-op then. - * @note `ecopts` can be ::RUBY_Qnil, which is equivalent to passing an - * empty hash. - */ -VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts); - -/** - * Scans the passed string to collect its code range. Because a Ruby's string - * is mutable, its contents change from time to time; so does its code range. - * A long-lived string tends to fall back to ::RUBY_ENC_CODERANGE_UNKNOWN. - * This API scans it and re-assigns a fine-grained code range constant. - * - * @param[out] str A string. - * @return An enum ::ruby_coderange_type. - */ -int rb_enc_str_coderange(VALUE str); - -/** - * Scans the passed string until it finds something odd. Returns the number of - * bytes scanned. As the name implies this is suitable for repeated call. One - * of its application is `IO#readlines`. The method reads from its receiver's - * read buffer, maybe more than once, looking for newlines. But "newline" can - * be different among encodings. This API is used to detect broken contents to - * properly mark them as such. - * - * @param[in] str String to scan. - * @param[in] end End of `str`. - * @param[in] enc `str`'s encoding. - * @param[out] cr Return buffer. - * @return Distance between `str` and first such byte where broken. - * @post `cr` has the code range type. - */ -long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr); - -/** - * Queries if the passed string is "ASCII only". An ASCII only string is a - * string who doesn't have any non-ASCII characters at all. This doesn't - * necessarily mean the string is in ASCII encoding. For instance a String of - * CP932 encoding can quite much be ASCII only, depending on its contents. - * - * @param[in] str String in question. - * @retval 1 It doesn't have non-ASCII characters. - * @retval 0 It has characters that are out of ASCII. - */ -int rb_enc_str_asciionly_p(VALUE str); - -RBIMPL_ATTR_NONNULL(()) -/** - * Looks for the passed string in the passed buffer. - * - * @param[in] x Buffer that potentially includes `y`. - * @param[in] m Number of bytes of `x`. - * @param[in] y Query string. - * @param[in] n Number of bytes of `y`. - * @param[in] enc Encoding of both `x` and `y`. - * @retval -1 Not found. - * @retval otherwise Found index in `x`. - * @note This API can match at a non-character-boundary. - */ -long rb_memsearch(const void *x, long m, const void *y, long n, rb_encoding *enc); - -/** @cond INTERNAL_MACRO */ -RBIMPL_ATTR_NONNULL(()) -static inline VALUE -rbimpl_enc_str_new_cstr(const char *str, rb_encoding *enc) -{ - long len = rbimpl_strlen(str); - - return rb_enc_str_new_static(str, len, enc); -} - -#define rb_enc_str_new(str, len, enc) \ - ((RBIMPL_CONSTANT_P(str) && \ - RBIMPL_CONSTANT_P(len) ? \ - rb_enc_str_new_static: \ - rb_enc_str_new) ((str), (len), (enc))) - -#define rb_enc_str_new_cstr(str, enc) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_enc_str_new_cstr : \ - rb_enc_str_new_cstr) ((str), (enc))) - -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_INTERNAL_ENCODING_STRING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/symbol.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/symbol.h deleted file mode 100644 index 9cd1b0d..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/symbol.h +++ /dev/null @@ -1,100 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_SYMBOL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_SYMBOL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Routines to manipulate encodings of symbols. - */ - -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/encoding/encoding.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Identical to rb_intern2(), except it additionally takes an encoding. - * - * @param[in] name The name of the id. - * @param[in] len Length of `name`. - * @param[in] enc `name`'s encoding. - * @exception rb_eRuntimeError Too many symbols. - * @return A (possibly new) id whose value is the given name. - * @note These days Ruby internally has two kinds of symbols - * (static/dynamic). Symbols created using this function would - * become static ones; i.e. would never be garbage collected. It - * is up to you to avoid memory leaks. Think twice before using - * it. - */ -ID rb_intern3(const char *name, long len, rb_encoding *enc); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_symname_p(), except it additionally takes an encoding. - * - * @param[in] str A C string to check. - * @param[in] enc `str`'s encoding. - * @retval 1 It is a valid symbol name. - * @retval 0 It is invalid as a symbol name. - */ -int rb_enc_symname_p(const char *str, rb_encoding *enc); - -/** - * Identical to rb_enc_symname_p(), except it additionally takes the passed - * string's length. This is needed for strings containing NUL bytes, like in - * case of UTF-32. - * - * @param[in] name A C string to check. - * @param[in] len Number of bytes of `str`. - * @param[in] enc `str`'s encoding. - * @retval 1 It is a valid symbol name. - * @retval 0 It is invalid as a symbol name. - */ -int rb_enc_symname2_p(const char *name, long len, rb_encoding *enc); - -/** - * Identical to rb_check_id(), except it takes a pointer to a memory region - * instead of Ruby's string. - * - * @param[in] ptr A pointer to a memory region. - * @param[in] len Number of bytes of `ptr`. - * @param[in] enc Encoding of `ptr`. - * @exception rb_eEncodingError `ptr` contains non-ASCII according to `enc`. - * @retval 0 No such id ever existed in the history. - * @retval otherwise The id that represents the given name. - */ -ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc); - -/** - * Identical to rb_check_id_cstr(), except for the return type. It can also be - * seen as a routine identical to rb_check_symbol(), except it takes a pointer - * to a memory region instead of Ruby's string. - * - * @param[in] ptr A pointer to a memory region. - * @param[in] len Number of bytes of `ptr`. - * @param[in] enc Encoding of `ptr`. - * @exception rb_eEncodingError `ptr` contains non-ASCII according to `enc`. - * @retval RUBY_Qnil No such id ever existed in the history. - * @retval otherwise The id that represents the given name. - */ -VALUE rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_INTERNAL_ENCODING_SYMBOL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/transcode.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/transcode.h deleted file mode 100644 index 60c96a4..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/encoding/transcode.h +++ /dev/null @@ -1,558 +0,0 @@ -#ifndef RUBY_INTERNAL_ENCODING_TRANSCODE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_INTERNAL_ENCODING_TRANSCODE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief econv stuff - */ - -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** return value of rb_econv_convert() */ -typedef enum { - - /** - * The conversion stopped when it found an invalid sequence. - */ - econv_invalid_byte_sequence, - - /** - * The conversion stopped when it found a character in the input which - * cannot be representable in the output. - */ - econv_undefined_conversion, - - /** - * The conversion stopped because there is no destination. - */ - econv_destination_buffer_full, - - /** - * The conversion stopped because there is no input. - */ - econv_source_buffer_empty, - - /** - * The conversion stopped after converting everything. This is arguably - * the expected normal end of conversion. - */ - econv_finished, - - /** - * The conversion stopped after writing something to somewhere, before - * reading everything. - */ - econv_after_output, - - /** - * The conversion stopped in middle of reading a character, possibly due to - * a partial read of a socket etc. - */ - econv_incomplete_input -} rb_econv_result_t; - -/** An opaque struct that represents a lowest level of encoding conversion. */ -typedef struct rb_econv_t rb_econv_t; - -/** - * Converts the contents of the passed string from its encoding to the passed - * one. - * - * @param[in] str Target string. - * @param[in] to Destination encoding. - * @param[in] ecflags A set of enum - * ::ruby_econv_flag_type. - * @param[in] ecopts A keyword hash, like - * ::rb_io_t::rb_io_enc_t::ecopts. - * @exception rb_eArgError Not fully converted. - * @exception rb_eInvalidByteSequenceError `str` is malformed. - * @exception rb_eUndefinedConversionError `str` has a character not - * representable using `to`. - * @exception rb_eConversionNotFoundError There is no known conversion from - * `str`'s encoding to `to`. - * @return A string whose encoding is `to`, and whose contents is converted - * contents of `str`. - * @note Use rb_econv_prepare_options() to generate `ecopts`. - */ -VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts); - -/** - * Queries if there is more than one way to convert between the passed two - * encodings. Encoding conversion are has_and_belongs_to_many relationships. - * There could be no direct conversion defined for the passed pair. Ruby tries - * to find an indirect way to do so then. For instance ISO-8859-1 has no - * direct conversion to ISO-2022-JP. But there is ISO-8859-1 to UTF-8 - * conversion; then there is UTF-8 to EUC-JP conversion; finally there also is - * EUC-JP to ISO-2022-JP conversion. So in short ISO-8859-1 can be converted - * to ISO-2022-JP using that path. This function returns true. Obviously not - * everything that can be represented using UTF-8 can also be represented using - * EUC-JP. Conversions in practice can fail depending on the actual input, and - * that renders exceptions in case of rb_str_encode(). - * - * @param[in] from_encoding One encoding. - * @param[in] to_encoding Another encoding. - * @retval 0 No way to convert the two. - * @retval 1 At least one way to convert the two. - * - * @internal - * - * Practically @shyouhei knows no way for this function to return 0. It seems - * everything can eventually be converted to/from UTF-8, which connects - * everything. - */ -int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding); - -/** - * Identical to rb_econv_prepare_opts(), except it additionally takes the - * initial value of flags. The extra bits are bitwise-ORed to the return - * value. - * - * @param[in] opthash Keyword arguments. - * @param[out] ecopts Return buffer. - * @param[in] ecflags Default set of enum ::ruby_econv_flag_type. - * @exception rb_eArgError Unknown/Broken values passed. - * @return Calculated set of enum ::ruby_econv_flag_type. - * @post `ecopts` holds a hash object suitable for - * ::rb_io_t::rb_io_enc_t::ecopts. - */ -int rb_econv_prepare_options(VALUE opthash, VALUE *ecopts, int ecflags); - -/** - * Splits a keyword arguments hash (that for instance `String#encode` took) - * into a set of enum ::ruby_econv_flag_type and a hash storing replacement - * characters etc. - * - * @param[in] opthash Keyword arguments. - * @param[out] ecopts Return buffer. - * @exception rb_eArgError Unknown/Broken values passed. - * @return Calculated set of enum ::ruby_econv_flag_type. - * @post `ecopts` holds a hash object suitable for - * ::rb_io_t::rb_io_enc_t::ecopts. - */ -int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts); - -/** - * Creates a new instance of struct ::rb_econv_t. - * - * @param[in] source_encoding Name of an encoding. - * @param[in] destination_encoding Name of another encoding. - * @param[in] ecflags A set of enum ::ruby_econv_flag_type. - * @exception rb_eArgError No such encoding. - * @retval NULL Failed to create a struct ::rb_econv_t. - * @retval otherwise Allocated struct ::rb_econv_t. - * @warning Return value must be passed to rb_econv_close() exactly once. - */ -rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags); - -/** - * Identical to rb_econv_open(), except it additionally takes a hash of - * optional strings. - * - * - * @param[in] source_encoding Name of an encoding. - * @param[in] destination_encoding Name of another encoding. - * @param[in] ecflags A set of enum ::ruby_econv_flag_type. - * @param[in] ecopts Optional set of strings. - * @exception rb_eArgError No such encoding. - * @retval NULL Failed to create a struct ::rb_econv_t. - * @retval otherwise Allocated struct ::rb_econv_t. - * @warning Return value must be passed to rb_econv_close() exactly once. - */ -rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts); - -/** - * Converts a string from an encoding to another. - * - * Possible flags are either ::RUBY_ECONV_PARTIAL_INPUT (means the source - * buffer is a part of much larger one), ::RUBY_ECONV_AFTER_OUTPUT (instructs - * the converter to stop after output before input), or both of them. - * - * @param[in,out] ec Conversion specification/state etc. - * @param[in] source_buffer_ptr Target string. - * @param[in] source_buffer_end End of target string. - * @param[out] destination_buffer_ptr Return buffer. - * @param[out] destination_buffer_end End of return buffer. - * @param[in] flags Flags (see above). - * @return The status of the conversion. - * @post `destination_buffer_ptr` holds conversion results. - */ -rb_econv_result_t rb_econv_convert(rb_econv_t *ec, - const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end, - unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end, - int flags); - -/** - * Destructs a converter. Note that a converter can have a buffer, and can be - * non-empty. Calling this would lose your data then. - * - * @param[out] ec The converter to destroy. - * @post `ec` is no longer a valid pointer. - */ -void rb_econv_close(rb_econv_t *ec); - -/** - * Assigns the replacement string. The string passed here would appear in - * converted string when it cannot represent its source counterpart. This can - * happen for instance you convert an emoji to ISO-8859-1. - * - * @param[out] ec Target converter. - * @param[in] str Replacement string. - * @param[in] len Number of bytes of `str`. - * @param[in] encname Name of encoding of `str`. - * @retval 0 Success. - * @retval -1 Failure (ENOMEM etc.). - * @post `ec`'s replacement string is set to `str`. - */ -int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname); - -/** - * "Decorate"s a converter. There are special kind of converters that - * transforms the contents, like replacing CR into CRLF. You can add such - * decorators to a converter using this API. By using this function a - * decorator is prepended at the beginning of a conversion sequence: in case of - * CRLF conversion, newlines are converted before encodings are converted. - * - * @param[out] ec Target converter to decorate. - * @param[in] decorator_name Name of decorator to prepend. - * @retval 0 Success. - * @retval -1 Failure (no such decorator etc.). - * @post Decorator works before encoding conversion happens. - * - * @internal - * - * What is the possible value of the `decorator_name` is not public. You have - * to read through `transcode.c` carefully. - */ -int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name); - -/** - * Identical to rb_econv_decorate_at_first(), except it adds to the opposite - * direction. For instance CRLF conversion would run _after_ encodings are - * converted. - * - * @param[out] ec Target converter to decorate. - * @param[in] decorator_name Name of decorator to prepend. - * @retval 0 Success. - * @retval -1 Failure (no such decorator etc.). - * @post Decorator works after encoding conversion happens. - */ -int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name); - -/** - * Creates a `rb_eConverterNotFoundError` exception object (but does not - * raise). - * - * @param[in] senc Name of source encoding. - * @param[in] denc Name of destination encoding. - * @param[in] ecflags A set of enum ::ruby_econv_flag_type. - * @return An instance of `rb_eConverterNotFoundError`. - */ -VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags); - -/** - * Appends the passed string to the passed converter's output buffer. This can - * be handy when an encoding needs bytes out of thin air; for instance - * ISO-2022-JP has "shift function" which does not correspond to any - * characters. - * - * @param[out] ec Target converter. - * @param[in] str String to insert. - * @param[in] len Number of bytes of `str`. - * @param[in] str_encoding Encoding of `str`. - * @retval 0 Success. - * @retval -1 Failure (conversion error etc.). - * @note `str_encoding` can be anything, and `str` itself is converted - * when necessary. - */ -int rb_econv_insert_output(rb_econv_t *ec, - const unsigned char *str, size_t len, const char *str_encoding); - -/** - * Queries an encoding name which best suits for rb_econv_insert_output()'s - * last parameter. Strings in this encoding need no conversion when inserted; - * can be both time/space efficient. - * - * @param[in] ec Target converter. - * @return Its encoding for insertion. - */ -const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec); - -/** - * This is a rb_econv_make_exception() + rb_exc_raise() combo. - * - * @param[in] ec (Possibly failed) conversion. - * @exception rb_eInvalidByteSequenceError Invalid byte sequence. - * @exception rb_eUndefinedConversionError Conversion undefined. - * @note This function can return when no error. - */ -void rb_econv_check_error(rb_econv_t *ec); - -/** - * This function makes sense right after rb_econv_convert() returns. As listed - * in ::rb_econv_result_t, rb_econv_convert() can bail out for various reasons. - * This function checks the passed converter's internal state and convert it to - * an appropriate exception object. - * - * @param[in] ec Target converter. - * @retval RUBY_Qnil The converter has no error. - * @retval otherwise Conversion error turned into an exception. - */ -VALUE rb_econv_make_exception(rb_econv_t *ec); - -/** - * Queries if rb_econv_putback() makes sense, i.e. there are invalid byte - * sequences remain in the buffer. - * - * @param[in] ec Target converter. - * @return Number of bytes that can be pushed back. - */ -int rb_econv_putbackable(rb_econv_t *ec); - -/** - * Puts back the bytes. In case of ::econv_invalid_byte_sequence, some of - * those invalid bytes are discarded and the others are buffered to be - * converted later. The latter bytes can be put back using this API. - * - * @param[out] ec Target converter (invalid byte sequence). - * @param[out] p Return buffer. - * @param[in] n Max number of bytes to put back. - * @post At most `n` bytes of what was put back is written to `p`. - */ -void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n); - -/** - * Queries the passed encoding's corresponding ASCII compatible encoding. "The - * corresponding ASCII compatible encoding" in this context is an ASCII - * compatible encoding which can represent exactly the same character sets as - * the given ASCII incompatible encoding. For instance that of UTF-16LE is - * UTF-8. - * - * @param[in] encname Name of an ASCII incompatible encoding. - * @retval NULL `encname` is already ASCII compatible. - * @retval otherwise The corresponding ASCII compatible encoding. - */ -const char *rb_econv_asciicompat_encoding(const char *encname); - -/** - * Identical to rb_econv_convert(), except it takes Ruby's string instead of - * C's pointer. - * - * @param[in,out] ec Target converter. - * @param[in] src Source string. - * @param[in] flags Flags (see rb_econv_convert). - * @exception rb_eArgError Converted string is too long. - * @exception rb_eInvalidByteSequenceError Invalid byte sequence. - * @exception rb_eUndefinedConversionError Conversion undefined. - * @return The conversion result. - */ -VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags); - -/** - * Identical to rb_econv_str_convert(), except it converts only a part of the - * passed string. Can be handy when you for instance want to do line-buffered - * conversion. - * - * @param[in,out] ec Target converter. - * @param[in] src Source string. - * @param[in] byteoff Number of bytes to seek. - * @param[in] bytesize Number of bytes to read. - * @param[in] flags Flags (see rb_econv_convert). - * @exception rb_eArgError Converted string is too long. - * @exception rb_eInvalidByteSequenceError Invalid byte sequence. - * @exception rb_eUndefinedConversionError Conversion undefined. - * @return The conversion result. - */ -VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags); - -/** - * Identical to rb_econv_str_convert(), except it appends the conversion result - * to the additionally passed string instead of creating a new string. It can - * also be seen as a routine identical to rb_econv_append(), except it takes a - * Ruby's string instead of C's pointer. - * - * @param[in,out] ec Target converter. - * @param[in] src Source string. - * @param[in] dst Return buffer. - * @param[in] flags Flags (see rb_econv_convert). - * @exception rb_eArgError Converted string is too long. - * @exception rb_eInvalidByteSequenceError Invalid byte sequence. - * @exception rb_eUndefinedConversionError Conversion undefined. - * @return The conversion result. - */ -VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags); - -/** - * Identical to rb_econv_str_append(), except it appends only a part of the - * passed string with conversion. It can also be seen as a routine identical - * to rb_econv_substr_convert(), except it appends the conversion result to the - * additionally passed string instead of creating a new string. - * - * @param[in,out] ec Target converter. - * @param[in] src Source string. - * @param[in] byteoff Number of bytes to seek. - * @param[in] bytesize Number of bytes to read. - * @param[in] dst Return buffer. - * @param[in] flags Flags (see rb_econv_convert). - * @exception rb_eArgError Converted string is too long. - * @exception rb_eInvalidByteSequenceError Invalid byte sequence. - * @exception rb_eUndefinedConversionError Conversion undefined. - * @return The conversion result. - */ -VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags); - -/** - * Converts the passed C's pointer according to the passed converter, then - * append the conversion result to the passed Ruby's string. This way buffer - * overflow is properly avoided to resize the destination properly. - * - * @param[in,out] ec Target converter. - * @param[in] bytesrc Target string. - * @param[in] bytesize Number of bytes of `bytesrc`. - * @param[in] dst Return buffer. - * @param[in] flags Flags (see rb_econv_convert). - * @exception rb_eArgError Converted string is too long. - * @exception rb_eInvalidByteSequenceError Invalid byte sequence. - * @exception rb_eUndefinedConversionError Conversion undefined. - * @return The conversion result. - */ -VALUE rb_econv_append(rb_econv_t *ec, const char *bytesrc, long bytesize, VALUE dst, int flags); - -/** - * This badly named function does not set the destination encoding to binary, - * but instead just nullifies newline conversion decorators if any. Other - * ordinal character conversions still happen after this; something non-binary - * would still be generated. - * - * @param[out] ec Target converter to modify. - * @post Any newline conversions, if any, would be killed. - */ -void rb_econv_binmode(rb_econv_t *ec); - -/** - * This enum is kind of omnibus. Gathers various constants. - */ -enum ruby_econv_flag_type { - - /** - * @name Flags for rb_econv_open() - * - * @{ - */ - - /** Mask for error handling related bits. */ - RUBY_ECONV_ERROR_HANDLER_MASK = 0x000000ff, - - /** Special handling of invalid sequences are there. */ - RUBY_ECONV_INVALID_MASK = 0x0000000f, - - /** Invalid sequences shall be replaced. */ - RUBY_ECONV_INVALID_REPLACE = 0x00000002, - - /** Special handling of undefined conversion are there. */ - RUBY_ECONV_UNDEF_MASK = 0x000000f0, - - /** Undefined characters shall be replaced. */ - RUBY_ECONV_UNDEF_REPLACE = 0x00000020, - - /** Undefined characters shall be escaped. */ - RUBY_ECONV_UNDEF_HEX_CHARREF = 0x00000030, - - /** Decorators are there. */ - RUBY_ECONV_DECORATOR_MASK = 0x0000ff00, - - /** Newline converters are there. */ - RUBY_ECONV_NEWLINE_DECORATOR_MASK = 0x00003f00, - - /** (Unclear; seems unused). */ - RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK = 0x00000f00, - - /** (Unclear; seems unused). */ - RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK = 0x00003000, - - /** Universal newline mode. */ - RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR = 0x00000100, - - /** CR to CRLF conversion shall happen. */ - RUBY_ECONV_CRLF_NEWLINE_DECORATOR = 0x00001000, - - /** CRLF to CR conversion shall happen. */ - RUBY_ECONV_CR_NEWLINE_DECORATOR = 0x00002000, - - /** Texts shall be XML-escaped. */ - RUBY_ECONV_XML_TEXT_DECORATOR = 0x00004000, - - /** Texts shall be AttrValue escaped */ - RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR = 0x00008000, - - /** (Unclear; seems unused). */ - RUBY_ECONV_STATEFUL_DECORATOR_MASK = 0x00f00000, - - /** Texts shall be AttrValue escaped. */ - RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR = 0x00100000, - - /** Newline decorator's default. */ - RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR = -#if defined(RUBY_TEST_CRLF_ENVIRONMENT) || defined(_WIN32) - RUBY_ECONV_CRLF_NEWLINE_DECORATOR, -#else - 0, -#endif - -#define ECONV_ERROR_HANDLER_MASK RUBY_ECONV_ERROR_HANDLER_MASK /**< @old{RUBY_ECONV_ERROR_HANDLER_MASK} */ -#define ECONV_INVALID_MASK RUBY_ECONV_INVALID_MASK /**< @old{RUBY_ECONV_INVALID_MASK} */ -#define ECONV_INVALID_REPLACE RUBY_ECONV_INVALID_REPLACE /**< @old{RUBY_ECONV_INVALID_REPLACE} */ -#define ECONV_UNDEF_MASK RUBY_ECONV_UNDEF_MASK /**< @old{RUBY_ECONV_UNDEF_MASK} */ -#define ECONV_UNDEF_REPLACE RUBY_ECONV_UNDEF_REPLACE /**< @old{RUBY_ECONV_UNDEF_REPLACE} */ -#define ECONV_UNDEF_HEX_CHARREF RUBY_ECONV_UNDEF_HEX_CHARREF /**< @old{RUBY_ECONV_UNDEF_HEX_CHARREF} */ -#define ECONV_DECORATOR_MASK RUBY_ECONV_DECORATOR_MASK /**< @old{RUBY_ECONV_DECORATOR_MASK} */ -#define ECONV_NEWLINE_DECORATOR_MASK RUBY_ECONV_NEWLINE_DECORATOR_MASK /**< @old{RUBY_ECONV_NEWLINE_DECORATOR_MASK} */ -#define ECONV_NEWLINE_DECORATOR_READ_MASK RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK /**< @old{RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK} */ -#define ECONV_NEWLINE_DECORATOR_WRITE_MASK RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK /**< @old{RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK} */ -#define ECONV_UNIVERSAL_NEWLINE_DECORATOR RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR /**< @old{RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR} */ -#define ECONV_CRLF_NEWLINE_DECORATOR RUBY_ECONV_CRLF_NEWLINE_DECORATOR /**< @old{RUBY_ECONV_CRLF_NEWLINE_DECORATOR} */ -#define ECONV_CR_NEWLINE_DECORATOR RUBY_ECONV_CR_NEWLINE_DECORATOR /**< @old{RUBY_ECONV_CR_NEWLINE_DECORATOR} */ -#define ECONV_XML_TEXT_DECORATOR RUBY_ECONV_XML_TEXT_DECORATOR /**< @old{RUBY_ECONV_XML_TEXT_DECORATOR} */ -#define ECONV_XML_ATTR_CONTENT_DECORATOR RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR /**< @old{RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR} */ -#define ECONV_STATEFUL_DECORATOR_MASK RUBY_ECONV_STATEFUL_DECORATOR_MASK /**< @old{RUBY_ECONV_STATEFUL_DECORATOR_MASK} */ -#define ECONV_XML_ATTR_QUOTE_DECORATOR RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR /**< @old{RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR} */ -#define ECONV_DEFAULT_NEWLINE_DECORATOR RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR /**< @old{RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR} */ - /** @} */ - - /** - * @name Flags for rb_econv_convert() - * - * @{ - */ - - /** Indicates the input is a part of much larger one. */ - RUBY_ECONV_PARTIAL_INPUT = 0x00010000, - - /** Instructs the converter to stop after output. */ - RUBY_ECONV_AFTER_OUTPUT = 0x00020000, -#define ECONV_PARTIAL_INPUT RUBY_ECONV_PARTIAL_INPUT /**< @old{RUBY_ECONV_PARTIAL_INPUT} */ -#define ECONV_AFTER_OUTPUT RUBY_ECONV_AFTER_OUTPUT /**< @old{RUBY_ECONV_AFTER_OUTPUT} */ - - RUBY_ECONV_FLAGS_PLACEHOLDER /**< Placeholder (not used) */ -}; - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_INTERNAL_ENCODING_TRANSCODE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/error.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/error.h deleted file mode 100644 index 49e2276..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/error.h +++ /dev/null @@ -1,582 +0,0 @@ -#ifndef RBIMPL_ERROR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ERROR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Declares ::rb_raise(). - */ -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/format.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -/** - * @defgroup exception Exception handlings - * @{ - */ - -/** - * Warning categories. A warning issued using this API can be selectively - * requested / suppressed by the end-users. For instance passing - * `-W:no-deprecated` to the ruby process would suppress those warnings in - * deprecated category. - * - * @warning There is no way to declare a new category (for now). - */ -typedef enum { - /** Category unspecified. */ - RB_WARN_CATEGORY_NONE, - - /** Warning is for deprecated features. */ - RB_WARN_CATEGORY_DEPRECATED, - - /** Warning is for experimental features. */ - RB_WARN_CATEGORY_EXPERIMENTAL, - - RB_WARN_CATEGORY_ALL_BITS = 0x6 /* no RB_WARN_CATEGORY_NONE bit */ -} rb_warning_category_t; - -/** for rb_readwrite_sys_fail first argument */ -enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE}; -/** @cond INTERNAL_MACRO */ -#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE -#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * This is the same as `$!` in Ruby. - * - * @retval RUBY_Qnil Not handling exceptions at the moment. - * @retval otherwise The current exception in the current thread. - * @ingroup exception - */ -VALUE rb_errinfo(void); - -/** - * Sets the current exception (`$!`) to the given value. - * - * @param[in] err An instance of ::rb_eException, or ::RUBY_Qnil. - * @exception rb_eTypeError What is given was neither ::rb_eException nor - * ::RUBY_Qnil. - * @note Use rb_raise() instead to raise `err`. This function just - * assigns the given object to the global variable. - * @ingroup exception - */ -void rb_set_errinfo(VALUE err); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Exception entry point. By calling this function the execution of your - * program gets interrupted to "raise" an exception up to the callee entities. - * Programs could "rescue" that exception, or could "ensure" some part of them. - * If nobody cares about such things, the raised exception reaches at the top - * of execution. This yields abnormal end of the process. - * - * @param[in] exc A subclass of ::rb_eException. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @exception exc The specified exception. - * @note It never returns. - */ -void rb_raise(VALUE exc, const char *fmt, ...); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -/** - * Raises the unsung "fatal" exception. This is considered severe. Nobody can - * rescue the exception. Once raised, process termination is inevitable. - * However ensure clauses still run, so that resources are properly cleaned up. - * - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @exception rb_eFatal An exception that you cannot rescue. - * @note It never returns. - */ -void rb_fatal(const char *fmt, ...); - -RBIMPL_ATTR_COLD() -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -/** - * Interpreter panic switch. Immediate process termination without any - * synchronisations shall occur. LOTS of internal states, stack traces, and - * even machine registers are displayed if possible for debugging purposes - * then. - * - * @warning Do not use this API. - * @warning You are not expected to use this API. - * @warning Why not just fix your code instead of calling this API? - * @warning It was a bad idea to expose this API to extension libraries at - * the first place. We just cannot delete it at this point for - * backwards compatibility. That doesn't mean everyone are - * welcomed to call this function at will. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @note It never returns. - */ -void rb_bug(const char *fmt, ...); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL(()) -/** - * This is a wrapper of rb_bug() which automatically constructs appropriate - * message from the passed errno. - * - * @param[in] msg Additional message to display. - * @exception err C level errno. - * @note It never returns. - */ -void rb_bug_errno(const char *msg, int err); - -RBIMPL_ATTR_NORETURN() -/** - * Converts a C errno into a Ruby exception, then raises it. For instance: - * - * ```CXX - * static VALUE - * foo(VALUE argv) - * { - * const auto cmd = StringValueCStr(argv); - * const auto waitr = system(cmd); - * if (waitr == -1) { - * rb_sys_fail("system(3posix)"); // <-------------- this - * } - * else { - * return INT2FIX(fd); - * } - * } - * ``` - * - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing errno. - * @note It never returns. - */ -void rb_sys_fail(const char *msg); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_sys_fail(), except it takes the message in Ruby's String - * instead of C's. - * - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing errno. - * @note It never returns. - */ -void rb_sys_fail_str(VALUE msg); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((2)) -/** - * Identical to rb_sys_fail(), except it takes additional module to extend the - * exception object before raising. - * - * @param[in] mod A ::rb_cModule instance. - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing errno. - * @note It never returns. - * - * @internal - * - * Does anybody use it? - */ -void rb_mod_sys_fail(VALUE mod, const char *msg); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_mod_sys_fail(), except it takes the message in Ruby's String - * instead of C's. - * - * @param[in] mod A ::rb_cModule instance. - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing errno. - * @note It never returns. - */ -void rb_mod_sys_fail_str(VALUE mod, VALUE msg); - -RBIMPL_ATTR_NORETURN() -/** - * Raises appropriate exception using the parameters. - * - * In Ruby level there are rb_eEAGAINWaitReadable etc. This function maps the - * given parameter to an appropriate exception class, then raises it. - * - * @param[in] waiting Reason for the IO to wait. - * @param[in] msg Additional message to raise. - * @exception rb_eEAGAINWaitWritable - * @exception rb_eEWOULDBLOCKWaitWritable - * @exception rb_eEINPROGRESSWaitWritable - * @exception rb_eEAGAINWaitReadable - * @exception rb_eEWOULDBLOCKWaitReadable - * @exception rb_eEINPROGRESSWaitReadable - * @exception rb_eSystemCallError - * @note It never returns. - */ -void rb_readwrite_sys_fail(enum rb_io_wait_readwrite waiting, const char *msg); - -RBIMPL_ATTR_NORETURN() -/** - * Breaks from a block. Because you are using a CAPI this is not as intuitive - * as it sounds. In order for this function to properly work, make a - * ::rb_block_call_func_t function that calls it internally, and pass that - * function to rb_block_call(). - * - * @exception rb_eLocalJumpError Called from outside of a block. - * @note It never returns. - */ -void rb_iter_break(void); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_iter_break(), except it additionally takes the "value" of - * this breakage. It will be the evaluation result of the iterator. This is - * kind of complicated; you cannot see this as a "return from a block" - * behaviour. Take a look at this example: - * - * ```ruby - * def foo(q) - * puts(w = yield(q)) - * puts(e = yield(w)) - * puts(r = yield(e)) - * puts(t = yield(r)) - * puts(y = yield(t)) - * return "howdy!" - * end - * - * x = foo(0) {|i| - * if i > 2 - * break "hello!" - * else - * next i + 1 - * end - * } - * - * puts x - * ``` - * - * This script outputs 1, 2, 3, and hello. Note that the value passed to break - * becomes the return value of foo method, not the value of yield. This is - * confusing, but can be handy on occasions e.g. when you want to bring a - * local variable out of a block. - * - * @param[in] val The value of the iterator. - * @exception rb_eLocalJumpError Called from outside of a block. - * @note It never returns. - */ -void rb_iter_break_value(VALUE val); - -RBIMPL_ATTR_NORETURN() -/** - * Terminates the current execution context. This API is the entry point of a - * "well-mannered" termination sequence. When called from an extension - * library, it raises ::rb_eSystemExit exception. Programs could rescue that - * exception. Can cancel process exit then. Otherwise, that exception results - * in a process termination with the status passed to this function. - * - * @param[in] status Exit status, see also exit(3). - * @exception rb_eSystemExit Exception representing the exit status. - * @note It never returns. - * - * @internal - * - * "When called from an extension library"? You might wonder. In fact there - * are chances for this function to be called from outside of it, for instance - * when dlopen(3) failed. In case it is not possible for this function to - * raise an exception, it does not (silently enters to process cleanup). But - * that is a kind of implementation detail which extension library authors - * should not bother. - */ -void rb_exit(int status); - -RBIMPL_ATTR_NORETURN() -/** - * @exception rb_eNotImpError - * @note It never returns. - */ -void rb_notimplement(void); - -/** - * Creates an exception object that represents the given C errno. - * - * @param[in] err C level errno. - * @param[in] msg Additional message. - * @retval rb_eSystemCallError An exception for the errno. - */ -VALUE rb_syserr_new(int err, const char * msg); - -/** - * Identical to rb_syserr_new(), except it takes the message in Ruby's String - * instead of C's. - * - * @param[in] n C level errno. - * @param[in] arg Additional message. - * @retval rb_eSystemCallError An exception for the errno. - */ -VALUE rb_syserr_new_str(int n, VALUE arg); - -RBIMPL_ATTR_NORETURN() -/** - * Raises appropriate exception that represents a C errno. - * - * @param[in] err C level errno. - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing `err`. - * @note It never returns. - */ -void rb_syserr_fail(int err, const char *msg); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_syserr_fail(), except it takes the message in Ruby's String - * instead of C's. - * - * @param[in] err C level errno. - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing `err`. - * @note It never returns. - */ -void rb_syserr_fail_str(int err, VALUE msg); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_mod_sys_fail(), except it does not depend on C global - * variable errno. Pass it explicitly. - * - * @param[in] mod A ::rb_cModule instance. - * @param[in] err C level errno. - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing `err`. - * @note It never returns. - */ -void rb_mod_syserr_fail(VALUE mod, int err, const char *msg); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_mod_syserr_fail(), except it takes the message in Ruby's - * String instead of C's. - * - * @param[in] mod A ::rb_cModule instance. - * @param[in] err C level errno. - * @param[in] msg Additional message to raise. - * @exception rb_eSystemCallError An exception representing `err`. - * @note It never returns. - */ -void rb_mod_syserr_fail_str(VALUE mod, int err, VALUE msg); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_readwrite_sys_fail(), except it does not depend on C global - * variable errno. Pass it explicitly. - * - * @param[in] waiting Reason for the IO to wait. - * @param[in] err C level errno. - * @param[in] msg Additional message to raise. - * @exception rb_eEAGAINWaitWritable - * @exception rb_eEWOULDBLOCKWaitWritable - * @exception rb_eEINPROGRESSWaitWritable - * @exception rb_eEAGAINWaitReadable - * @exception rb_eEWOULDBLOCKWaitReadable - * @exception rb_eEINPROGRESSWaitReadable - * @exception rb_eSystemCallError - * @note It never returns. - */ -void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite waiting, int err, const char *msg); - -RBIMPL_ATTR_COLD() -RBIMPL_ATTR_NORETURN() -/** - * Fails with the given object's type incompatibility to the type. - * - * It seems this function is visible from extension libraries only because - * RTYPEDDATA_TYPE() uses it on RUBY_DEBUG. So you can basically ignore it; - * use some other fine-grained method instead. - * - * @param[in] self The object in question. - * @param[in] t Expected type of the object. - * @exception rb_eTypeError `self` not in type `t`. - * @note It never returns. - * @note The second argument must have been an enum ::ruby_value_type, - * but for historical reasons it remains to be an int (in other - * words we see no benefits fixing this bug). - */ -void rb_unexpected_type(VALUE self, int t); - -/** - * @private - * - * This is an implementation detail of #ruby_verbose. Please don't use it - * directly. - * - * @retval Qnil Interpreter is quiet. - * @retval Qfalse Interpreter is kind of chatty. - * @retval otherwise Interpreter is very verbose. - */ -VALUE *rb_ruby_verbose_ptr(void); - -/** - * @private - * - * This is an implementation detail of #ruby_debug. Please don't use it - * directly. - * - * @retval Qnil Interpreter not in debug mode. - * @retval Qfalse Interpreter not in debug mode. - * @retval otherwise Interpreter is in debug mode. - */ -VALUE *rb_ruby_debug_ptr(void); - -/** - * This variable controls whether the interpreter is in debug mode. Setting - * this to some truthy value is equivalent to passing `-W` flag to the - * interpreter. Setting this to ::Qfalse is equivalent to passing `-W1` flag - * to the interpreter. Setting this to ::Qnil is equivalent to passing `-W0` - * flag to the interpreter. - * - * @retval Qnil Interpreter is quiet. - * @retval Qfalse Interpreter is kind of chatty. - * @retval otherwise Interpreter is very verbose. - */ -#define ruby_verbose (*rb_ruby_verbose_ptr()) - -/** - * This variable controls whether the interpreter is in debug mode. Setting - * this to some truthy value is equivalent to passing `-d` flag to the - * interpreter. - * - * @retval Qnil Interpreter not in debug mode. - * @retval Qfalse Interpreter not in debug mode. - * @retval otherwise Interpreter is in debug mode. - */ -#define ruby_debug (*rb_ruby_debug_ptr()) - -/* reports if `-W' specified */ -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -/** - * Issues a warning. - * - * In ruby, warnings these days are tightly coupled with the rb_mWarning - * constant and its `warn` singleton method. This CAPI is just a thin wrapper - * of it; everything passed are formatted like what rb_sprintf() does, then - * passed through to the method. Programs can have their own `def - * Warning.warn` at will to do whatever they want, from ignoring the warnings - * at all to sinking them to some BigQuery data set via a Fluentd cluster. By - * default, the method just emits its passed contents to ::rb_stderr using - * rb_io_write(). - * - * @note This function is affected by the `-W` flag. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -void rb_warning(const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Identical to rb_warning(), except it takes additional "category" parameter. - * - * @param[in] cat Name of a known category. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - */ -void rb_category_warning(rb_warning_category_t cat, const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((1, 3)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4) -/** - * Issues a compile-time warning that happens at `__file__:__line__`. Purpose - * of this function being exposed to CAPI is unclear. - * - * @note This function is affected by the `-W` flag. - * @param[in] file The path corresponding to Ruby level `__FILE__`. - * @param[in] line The number corresponding to Ruby level `__LINE__`. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - */ -void rb_compile_warning(const char *file, int line, const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -/** - * Identical to rb_sys_fail(), except it does not raise an exception to render - * a warning instead. - * - * @note This function is affected by the `-W` flag. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - */ -void rb_sys_warning(const char *fmt, ...); - -/* reports always */ -RBIMPL_ATTR_COLD() -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -/** - * Identical to rb_warning(), except it reports always regardless of runtime - * `-W` flag. - * - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - */ -void rb_warn(const char *fmt, ...); - -RBIMPL_ATTR_COLD() -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Identical to rb_category_warning(), except it reports always regardless of - * runtime `-W` flag. - * - * @param[in] cat Category e.g. deprecated. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - */ -void rb_category_warn(rb_warning_category_t cat, const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((1, 3)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4) -/** - * Identical to rb_compile_warning(), except it reports always regardless of - * runtime `-W` flag. - * - * @param[in] file The path corresponding to Ruby level `__FILE__`. - * @param[in] line The number corresponding to Ruby level `__LINE__`. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - */ -void rb_compile_warn(const char *file, int line, const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((2, 4)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 4, 5) -/** - * Identical to rb_compile_warn(), except it also accepts category. - * - * @param[in] cat Category e.g. deprecated. - * @param[in] file The path corresponding to Ruby level `__FILE__`. - * @param[in] line The number corresponding to Ruby level `__LINE__`. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - */ -void rb_category_compile_warn(rb_warning_category_t cat, const char *file, int line, const char *fmt, ...); - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_ERROR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/eval.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/eval.h deleted file mode 100644 index 34a5384..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/eval.h +++ /dev/null @@ -1,373 +0,0 @@ -#ifndef RBIMPL_EVAL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_EVAL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Declares ::rb_eval_string(). - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -RBIMPL_ATTR_NONNULL(()) -/** - * Evaluates the given string in an isolated binding. - * - * Here "isolated" means that the binding does not inherit any other - * bindings. This behaves same as the binding for required libraries. - * - * `__FILE__` will be `"(eval)"`, and `__LINE__` starts from 1 in the - * evaluation. - * - * @param[in] str Ruby code to evaluate. - * @exception rb_eException Raises an exception on error. - * @return The evaluated result. - */ -VALUE rb_eval_string(const char *str); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_eval_string(), except it avoids potential global escapes. - * Such global escapes include exceptions, `throw`, `break`, for example. - * - * It first evaluates the given string as rb_eval_string() does. If no global - * escape occurred during the evaluation, it returns the result and `*state` is - * zero. Otherwise, it returns some undefined value and sets `*state` to - * nonzero. If state is `NULL`, it is not set in both cases. - * - * @param[in] str Ruby code to evaluate. - * @param[out] state State of execution. - * @return The evaluated result if succeeded, an undefined value if - * otherwise. - * @post `*state` is set to zero if succeeded. Nonzero otherwise. - * @warning You have to clear the error info with `rb_set_errinfo(Qnil)` if - * you decide to ignore the caught exception. - * @see rb_eval_string - * @see rb_protect - * - * @internal - * - * The "undefined value" described above is in fact ::RUBY_Qnil for now. But - * @shyouhei doesn't think that we would never change that. - * - * Though not a part of our public API, `state` is in fact an - * enum ruby_tag_type. You can see the potential "nonzero" values by looking - * at vm_core.h. - */ -VALUE rb_eval_string_protect(const char *str, int *state); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_eval_string_protect(), except it evaluates the given string - * under a module binding in an isolated binding. This is the same as a - * binding for loaded libraries on `rb_load(something, true)`. - * - * @param[in] str Ruby code to evaluate. - * @param[out] state State of execution. - * @return The evaluated result if succeeded, an undefined value if - * otherwise. - * @post `*state` is set to zero if succeeded. Nonzero otherwise. - * @warning You have to clear the error info with `rb_set_errinfo(Qnil)` if - * you decide to ignore the caught exception. - * @see rb_eval_string - */ -VALUE rb_eval_string_wrap(const char *str, int *state); - -/** - * Calls a method. Can call both public and private methods. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] n Number of arguments that follow. - * @param[in] ... Arbitrary number of method arguments. - * @exception rb_eNoMethodError No such method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcall(VALUE recv, ID mid, int n, ...); - -/** - * Identical to rb_funcall(), except it takes the method arguments as a C - * array. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @exception rb_eNoMethodError No such method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcallv(VALUE recv, ID mid, int argc, const VALUE *argv); - -/** - * Identical to rb_funcallv(), except you can specify how to handle the last - * element of the given array. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eNoMethodError No such method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcallv_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); - -/** - * Identical to rb_funcallv(), except it only takes public methods into - * account. This is roughly Ruby's `Object#public_send`. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @exception rb_eNoMethodError No such method. - * @exception rb_eNoMethodError The method is private or protected. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, const VALUE *argv); - -/** - * Identical to rb_funcallv_public(), except you can specify how to handle the - * last element of the given array. It can also be seen as a routine identical - * to rb_funcallv_kw(), except it only takes public methods into account. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eNoMethodError No such method. - * @exception rb_eNoMethodError The method is private or protected. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcallv_public_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); - -/** - * @deprecated This is an old name of rb_funcallv(). Provided here for - * backwards compatibility to 2.x programs (introduced in 2.1). - * It is not a good name. Please don't use it any longer. - */ -#define rb_funcall2 rb_funcallv - -/** - * @deprecated This is an old name of rb_funcallv_public(). Provided here - * for backwards compatibility to 2.x programs (introduced in - * 2.1). It is not a good name. Please don't use it any longer. - */ -#define rb_funcall3 rb_funcallv_public - -/** - * Identical to rb_funcallv_public(), except you can pass the passed block. - * - * Sometimes you want to "pass" a block parameter form one method to another. - * Suppose you have this Ruby method `foo`: - * - * ```ruby - * def foo(x, y, &z) - * x.open(y, &z) - * end - * ``` - * - * And suppose you want to translate this into C. Then - * rb_funcall_passing_block() function is usable in this situation. - * - * ```CXX - * VALUE - * foo_translated_into_C(VALUE self, VALUE x, VALUE y) - * { - * const auto open = rb_intern("open"); - * - * return rb_funcall_passing_block(x, open, 1, &y); - * } - * ``` - * - * @see rb_yield_block - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @exception rb_eNoMethodError No such method. - * @exception rb_eNoMethodError The method is private or protected. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcall_passing_block(VALUE recv, ID mid, int argc, const VALUE *argv); - -/** - * Identical to rb_funcallv_passing_block(), except you can specify how to - * handle the last element of the given array. It can also be seen as a - * routine identical to rb_funcallv_public_kw(), except you can pass the passed - * block. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eNoMethodError No such method. - * @exception rb_eNoMethodError The method is private or protected. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcall_passing_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); - -/** - * Identical to rb_funcallv_public(), except you can pass a block. A block - * here basically is an instance of ::rb_cProc. If you want to exercise - * `to_proc` conversion, do so before passing it here. However nil and symbols - * are special-case allowed. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] procval An instance of Proc, Symbol, or NilClass. - * @exception rb_eNoMethodError No such method. - * @exception rb_eNoMethodError The method is private or protected. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - * - * @internal - * - * Implementation-wise, `procval` is in fact a "block handler" object. You - * could also pass an IFUNC (block_handler_ifunc) here to say precise. --- But - * AFAIK there is no 3rd party way to even know that there are objects called - * IFUNC behind-the-scene. - */ -VALUE rb_funcall_with_block(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval); - -/** - * Identical to rb_funcallv_with_block(), except you can specify how to handle - * the last element of the given array. It can also be seen as a routine - * identical to rb_funcallv_public_kw(), except you can pass a block. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] procval An instance of Proc, Symbol, or NilClass. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eNoMethodError No such method. - * @exception rb_eNoMethodError The method is private or protected. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - */ -VALUE rb_funcall_with_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval, int kw_splat); - -/** - * This resembles ruby's `super`. - * - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @exception rb_eNoMethodError No super method are there. - * @exception rb_eException Any exceptions happen inside. - * @return What the super method evaluates to. - */ -VALUE rb_call_super(int argc, const VALUE *argv); - -/** - * Identical to rb_call_super(), except you can specify how to handle the last - * element of the given array. - * - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eNoMethodError No super method are there. - * @exception rb_eException Any exceptions happen inside. - * @return What the super method evaluates to. - */ -VALUE rb_call_super_kw(int argc, const VALUE *argv, int kw_splat); - -/** - * This resembles ruby's `self`. - * - * @exception rb_eRuntimeError Called from outside of method context. - * @return Current receiver. - */ -VALUE rb_current_receiver(void); - -RBIMPL_ATTR_NONNULL((2)) -/** - * Keyword argument deconstructor. - * - * Retrieves argument values bound to keywords, which directed by `table` into - * `values`, deleting retrieved entries from `keyword_hash` along the way. - * First `required` number of IDs referred by `table` are mandatory, and - * succeeding `optional` (`-optional-1` if `optional` is negative) number of - * IDs are optional. If a mandatory key is not contained in `keyword_hash`, - * raises ::rb_eArgError. If an optional key is not present in `keyword_hash`, - * the corresponding element in `values` is set to ::RUBY_Qundef. If - * `optional` is negative, rest of `keyword_hash` are ignored, otherwise raises - * ::rb_eArgError. - * - * @warning Handling keyword arguments in the C API is less efficient than - * handling them in Ruby. Consider using a Ruby wrapper method - * around a non-keyword C function. - * @see https://bugs.ruby-lang.org/issues/11339 - * @param[out] keyword_hash Target hash to deconstruct. - * @param[in] table List of keywords that you are interested in. - * @param[in] required Number of mandatory keywords. - * @param[in] optional Number of optional keywords (can be negative). - * @param[out] values Buffer to be filled. - * @exception rb_eArgError Absence of a mandatory keyword. - * @exception rb_eArgError Found an unknown keyword. - * @return Number of found values that are stored into `values`. - */ -int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values); - -RBIMPL_ATTR_NONNULL(()) -/** - * Splits a hash into two. - * - * Takes a hash of various keys, and split it into symbol-keyed parts and - * others. Symbol-keyed part becomes the return value. What remains are - * returned as a new hash object stored at the argument pointer. - * - * @param[in,out] orighash Pointer to a target hash to split. - * @return An extracted keyword hash. - * @post Upon successful return `orighash` points to another hash - * object, whose contents are the remainder of the operation. - * @note The argument hash object is not modified. - */ -VALUE rb_extract_keywords(VALUE *orighash); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_EVAL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/event.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/event.h deleted file mode 100644 index 04b137a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/event.h +++ /dev/null @@ -1,154 +0,0 @@ -#ifndef RBIMPL_EVENT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_EVENT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Debugging and tracing APIs. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -/* These macros are not enums because they are wider than int.*/ - -/** - * @name Traditional set_trace_func events - * - * @{ - */ -#define RUBY_EVENT_NONE 0x0000 /**< No events. */ -#define RUBY_EVENT_LINE 0x0001 /**< Encountered a new line. */ -#define RUBY_EVENT_CLASS 0x0002 /**< Encountered a new class. */ -#define RUBY_EVENT_END 0x0004 /**< Encountered an end of a class clause. */ -#define RUBY_EVENT_CALL 0x0008 /**< A method, written in Ruby, is called. */ -#define RUBY_EVENT_RETURN 0x0010 /**< Encountered a `return` statement. */ -#define RUBY_EVENT_C_CALL 0x0020 /**< A method, written in C, is called. */ -#define RUBY_EVENT_C_RETURN 0x0040 /**< Return from a method, written in C. */ -#define RUBY_EVENT_RAISE 0x0080 /**< Encountered a `raise` statement. */ -#define RUBY_EVENT_ALL 0x00ff /**< Bitmask of traditional events. */ - -/** @} */ - -/** - * @name TracePoint extended events - * - * @{ - */ -#define RUBY_EVENT_B_CALL 0x0100 /**< Encountered an `yield` statement. */ -#define RUBY_EVENT_B_RETURN 0x0200 /**< Encountered a `next` statement. */ -#define RUBY_EVENT_THREAD_BEGIN 0x0400 /**< Encountered a new thread. */ -#define RUBY_EVENT_THREAD_END 0x0800 /**< Encountered an end of a thread. */ -#define RUBY_EVENT_FIBER_SWITCH 0x1000 /**< Encountered a `Fiber#yield`. */ -#define RUBY_EVENT_SCRIPT_COMPILED 0x2000 /**< Encountered an `eval`. */ -#define RUBY_EVENT_TRACEPOINT_ALL 0xffff /**< Bitmask of extended events. */ - -/** @} */ - -/** - * @name Special events - * - * @internal - * - * These bits are actually used internally. See vm_core.h if you are curious. - * - * @endinternal - * - * @{ - */ -#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000 /**< Opaque bits. */ - -/** @} */ - -/** - * @name Internal events - * - * @shyouhei's understanding is that some of them are visible from extension - * libraries because of `ext/objspace`. But it seems that doesn't describe - * everything? The ultimate reason why they are here remains unclear. - * - * @{ - */ -#define RUBY_INTERNAL_EVENT_SWITCH 0x040000 /**< Thread switched. */ -#define RUBY_EVENT_SWITCH 0x040000 /**< @old{RUBY_INTERNAL_EVENT_SWITCH} */ - /* 0x080000 */ -#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000 /**< Object allocated. */ -#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000 /**< Object swept. */ -#define RUBY_INTERNAL_EVENT_GC_START 0x400000 /**< GC started. */ -#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000 /**< GC ended mark phase. */ -#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000 /**< GC ended sweep phase. */ -#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000 /**< `gc_enter()` is called. */ -#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000 /**< `gc_exit()` is called. */ -#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000 /**< Bitmask of GC events. */ -#define RUBY_INTERNAL_EVENT_MASK 0xffff0000 /**< Bitmask of internal events. */ - -/** @} */ - -/** - * Represents event(s). As the name implies events are bit flags. - */ -typedef uint32_t rb_event_flag_t; - -/** - * Type of event hooks. When an event happens registered functions are kicked - * with appropriate parameters. - * - * @param[in] evflag The kind of event that happened. - * @param[in] data The `data` passed to rb_add_event_hook(). - * @param[in] self Current receiver. - * @param[in] mid Name of the current method. - * @param[in] klass Current class. - */ -typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass); - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1 - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Registers an event hook function. - * - * @param[in] func A callback. - * @param[in] events A set of events that `func` should run. - * @param[in] data Passed as-is to `func`. - */ -void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data); - -/** - * Removes the passed function from the list of event hooks. - * - * @param[in] func A callback. - * @return Number of deleted event hooks. - * @note As multiple events can share the same `func` it is quite - * possible for the return value to become more than one. - * - * @internal - * - * @shyouhei doesn't know if this is an Easter egg or an official feature, but - * you can pass 0 to the argument. That effectively swipes everything out from - * the hook list. - */ -int rb_remove_event_hook(rb_event_hook_func_t func); -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_EVENT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/fl_type.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/fl_type.h deleted file mode 100644 index 08405d6..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/fl_type.h +++ /dev/null @@ -1,967 +0,0 @@ -#ifndef RBIMPL_FL_TYPE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_FL_TYPE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines enum ::ruby_fl_type. - */ -#include "ruby/internal/config.h" /* for ENUM_OVER_INT */ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/flag_enum.h" -#include "ruby/internal/attr/forceinline.h" -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/compiler_since.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/has/extension.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" -#include "ruby/assert.h" -#include "ruby/defines.h" - -/** @cond INTERNAL_MACRO */ -#if RBIMPL_HAS_EXTENSION(enumerator_attributes) -# define RBIMPL_HAVE_ENUM_ATTRIBUTE 1 -#elif RBIMPL_COMPILER_SINCE(GCC, 6, 0, 0) -# define RBIMPL_HAVE_ENUM_ATTRIBUTE 1 -#endif - -#ifdef ENUM_OVER_INT -# define RBIMPL_WIDER_ENUM 1 -#elif SIZEOF_INT * CHAR_BIT > 12+19+1 -# define RBIMPL_WIDER_ENUM 1 -#else -# define RBIMPL_WIDER_ENUM 0 -#endif -/** @endcond */ - -#define FL_SINGLETON RBIMPL_CAST((VALUE)RUBY_FL_SINGLETON) /**< @old{RUBY_FL_SINGLETON} */ -#define FL_WB_PROTECTED RBIMPL_CAST((VALUE)RUBY_FL_WB_PROTECTED) /**< @old{RUBY_FL_WB_PROTECTED} */ -#define FL_PROMOTED0 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED0) /**< @old{RUBY_FL_PROMOTED0} */ -#define FL_PROMOTED1 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED1) /**< @old{RUBY_FL_PROMOTED1} */ -#define FL_FINALIZE RBIMPL_CAST((VALUE)RUBY_FL_FINALIZE) /**< @old{RUBY_FL_FINALIZE} */ -#define FL_TAINT RBIMPL_CAST((VALUE)RUBY_FL_TAINT) /**< @old{RUBY_FL_TAINT} */ -#define FL_SHAREABLE RBIMPL_CAST((VALUE)RUBY_FL_SHAREABLE) /**< @old{RUBY_FL_SHAREABLE} */ -#define FL_UNTRUSTED RBIMPL_CAST((VALUE)RUBY_FL_UNTRUSTED) /**< @old{RUBY_FL_UNTRUSTED} */ -#define FL_SEEN_OBJ_ID RBIMPL_CAST((VALUE)RUBY_FL_SEEN_OBJ_ID) /**< @old{RUBY_FL_SEEN_OBJ_ID} */ -#define FL_EXIVAR RBIMPL_CAST((VALUE)RUBY_FL_EXIVAR) /**< @old{RUBY_FL_EXIVAR} */ -#define FL_FREEZE RBIMPL_CAST((VALUE)RUBY_FL_FREEZE) /**< @old{RUBY_FL_FREEZE} */ - -#define FL_USHIFT RBIMPL_CAST((VALUE)RUBY_FL_USHIFT) /**< @old{RUBY_FL_USHIFT} */ - -#define FL_USER0 RBIMPL_CAST((VALUE)RUBY_FL_USER0) /**< @old{RUBY_FL_USER0} */ -#define FL_USER1 RBIMPL_CAST((VALUE)RUBY_FL_USER1) /**< @old{RUBY_FL_USER1} */ -#define FL_USER2 RBIMPL_CAST((VALUE)RUBY_FL_USER2) /**< @old{RUBY_FL_USER2} */ -#define FL_USER3 RBIMPL_CAST((VALUE)RUBY_FL_USER3) /**< @old{RUBY_FL_USER3} */ -#define FL_USER4 RBIMPL_CAST((VALUE)RUBY_FL_USER4) /**< @old{RUBY_FL_USER4} */ -#define FL_USER5 RBIMPL_CAST((VALUE)RUBY_FL_USER5) /**< @old{RUBY_FL_USER5} */ -#define FL_USER6 RBIMPL_CAST((VALUE)RUBY_FL_USER6) /**< @old{RUBY_FL_USER6} */ -#define FL_USER7 RBIMPL_CAST((VALUE)RUBY_FL_USER7) /**< @old{RUBY_FL_USER7} */ -#define FL_USER8 RBIMPL_CAST((VALUE)RUBY_FL_USER8) /**< @old{RUBY_FL_USER8} */ -#define FL_USER9 RBIMPL_CAST((VALUE)RUBY_FL_USER9) /**< @old{RUBY_FL_USER9} */ -#define FL_USER10 RBIMPL_CAST((VALUE)RUBY_FL_USER10) /**< @old{RUBY_FL_USER10} */ -#define FL_USER11 RBIMPL_CAST((VALUE)RUBY_FL_USER11) /**< @old{RUBY_FL_USER11} */ -#define FL_USER12 RBIMPL_CAST((VALUE)RUBY_FL_USER12) /**< @old{RUBY_FL_USER12} */ -#define FL_USER13 RBIMPL_CAST((VALUE)RUBY_FL_USER13) /**< @old{RUBY_FL_USER13} */ -#define FL_USER14 RBIMPL_CAST((VALUE)RUBY_FL_USER14) /**< @old{RUBY_FL_USER14} */ -#define FL_USER15 RBIMPL_CAST((VALUE)RUBY_FL_USER15) /**< @old{RUBY_FL_USER15} */ -#define FL_USER16 RBIMPL_CAST((VALUE)RUBY_FL_USER16) /**< @old{RUBY_FL_USER16} */ -#define FL_USER17 RBIMPL_CAST((VALUE)RUBY_FL_USER17) /**< @old{RUBY_FL_USER17} */ -#define FL_USER18 RBIMPL_CAST((VALUE)RUBY_FL_USER18) /**< @old{RUBY_FL_USER18} */ -#define FL_USER19 RBIMPL_CAST((VALUE)(unsigned int)RUBY_FL_USER19) /**< @old{RUBY_FL_USER19} */ - -#define ELTS_SHARED RUBY_ELTS_SHARED /**< @old{RUBY_ELTS_SHARED} */ -#define RB_OBJ_FREEZE rb_obj_freeze_inline /**< @alias{rb_obj_freeze_inline} */ - -/** @cond INTERNAL_MACRO */ -#define RUBY_ELTS_SHARED RUBY_ELTS_SHARED -#define RB_FL_ABLE RB_FL_ABLE -#define RB_FL_ALL RB_FL_ALL -#define RB_FL_ALL_RAW RB_FL_ALL_RAW -#define RB_FL_ANY RB_FL_ANY -#define RB_FL_ANY_RAW RB_FL_ANY_RAW -#define RB_FL_REVERSE RB_FL_REVERSE -#define RB_FL_REVERSE_RAW RB_FL_REVERSE_RAW -#define RB_FL_SET RB_FL_SET -#define RB_FL_SET_RAW RB_FL_SET_RAW -#define RB_FL_TEST RB_FL_TEST -#define RB_FL_TEST_RAW RB_FL_TEST_RAW -#define RB_FL_UNSET RB_FL_UNSET -#define RB_FL_UNSET_RAW RB_FL_UNSET_RAW -#define RB_OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW -#define RB_OBJ_FROZEN RB_OBJ_FROZEN -#define RB_OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW -#define RB_OBJ_INFECT RB_OBJ_INFECT -#define RB_OBJ_INFECT_RAW RB_OBJ_INFECT_RAW -#define RB_OBJ_TAINT RB_OBJ_TAINT -#define RB_OBJ_TAINTABLE RB_OBJ_TAINTABLE -#define RB_OBJ_TAINTED RB_OBJ_TAINTED -#define RB_OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW -#define RB_OBJ_TAINT_RAW RB_OBJ_TAINT_RAW -#define RB_OBJ_UNTRUST RB_OBJ_TAINT -#define RB_OBJ_UNTRUSTED RB_OBJ_TAINTED -/** @endcond */ - -/** - * @defgroup deprecated_macros Deprecated macro APIs - * @{ - * These macros are deprecated. Prefer their `RB_`-prefixed versions. - */ -#define FL_ABLE RB_FL_ABLE /**< @old{RB_FL_ABLE} */ -#define FL_ALL RB_FL_ALL /**< @old{RB_FL_ALL} */ -#define FL_ALL_RAW RB_FL_ALL_RAW /**< @old{RB_FL_ALL_RAW} */ -#define FL_ANY RB_FL_ANY /**< @old{RB_FL_ANY} */ -#define FL_ANY_RAW RB_FL_ANY_RAW /**< @old{RB_FL_ANY_RAW} */ -#define FL_REVERSE RB_FL_REVERSE /**< @old{RB_FL_REVERSE} */ -#define FL_REVERSE_RAW RB_FL_REVERSE_RAW /**< @old{RB_FL_REVERSE_RAW} */ -#define FL_SET RB_FL_SET /**< @old{RB_FL_SET} */ -#define FL_SET_RAW RB_FL_SET_RAW /**< @old{RB_FL_SET_RAW} */ -#define FL_TEST RB_FL_TEST /**< @old{RB_FL_TEST} */ -#define FL_TEST_RAW RB_FL_TEST_RAW /**< @old{RB_FL_TEST_RAW} */ -#define FL_UNSET RB_FL_UNSET /**< @old{RB_FL_UNSET} */ -#define FL_UNSET_RAW RB_FL_UNSET_RAW /**< @old{RB_FL_UNSET_RAW} */ -#define OBJ_FREEZE RB_OBJ_FREEZE /**< @old{RB_OBJ_FREEZE} */ -#define OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW /**< @old{RB_OBJ_FREEZE_RAW} */ -#define OBJ_FROZEN RB_OBJ_FROZEN /**< @old{RB_OBJ_FROZEN} */ -#define OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW /**< @old{RB_OBJ_FROZEN_RAW} */ -#define OBJ_INFECT RB_OBJ_INFECT /**< @old{RB_OBJ_INFECT} */ -#define OBJ_INFECT_RAW RB_OBJ_INFECT_RAW /**< @old{RB_OBJ_INFECT_RAW} */ -#define OBJ_TAINT RB_OBJ_TAINT /**< @old{RB_OBJ_TAINT} */ -#define OBJ_TAINTABLE RB_OBJ_TAINTABLE /**< @old{RB_OBJ_TAINT_RAW} */ -#define OBJ_TAINTED RB_OBJ_TAINTED /**< @old{RB_OBJ_TAINTED} */ -#define OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW /**< @old{RB_OBJ_TAINTED_RAW} */ -#define OBJ_TAINT_RAW RB_OBJ_TAINT_RAW /**< @old{RB_OBJ_TAINT_RAW} */ -#define OBJ_UNTRUST RB_OBJ_UNTRUST /**< @old{RB_OBJ_TAINT} */ -#define OBJ_UNTRUSTED RB_OBJ_UNTRUSTED /**< @old{RB_OBJ_TAINTED} */ -/** @} */ - -/** - * This is an enum because GDB wants it (rather than a macro). People need not - * bother. - */ -enum ruby_fl_ushift { - /** - * Number of bits in ::ruby_fl_type that are _not_ open to users. This is - * an implementation detail. Please ignore. - */ - RUBY_FL_USHIFT = 12 -}; - -/* > The expression that defines the value of an enumeration constant shall be - * > an integer constant expression that has a value representable as an `int`. - * - * -- ISO/IEC 9899:2018 section 6.7.2.2 - * - * So ENUM_OVER_INT situation is an extension to the standard. Note however - * that we do not support 16 bit `int` environment. */ -RB_GNUC_EXTENSION -/** - * The flags. Each ruby objects have their own characteristics apart from - * their classes. For instance whether an object is frozen or not is not - * controlled by its class. This is the type that represents such properties. - * - * @note About the `FL_USER` terminology: the "user" here does not necessarily - * mean only you. For instance struct ::RString instances use these - * bits to cache their encodings etc. Devs discussed about this topic, - * reached their consensus that ::RUBY_T_DATA is the only valid data - * structure that can use these bits; other data structures including - * ::RUBY_T_OBJECT use these bits for their own purpose. See also - * https://bugs.ruby-lang.org/issues/18059 - */ -enum -RBIMPL_ATTR_FLAG_ENUM() -ruby_fl_type { - - /** - * @deprecated This flag once was a thing back in the old days, but makes - * no sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @internal - * - * The reality is our GC no longer remembers write barriers inside of each - * objects, to use dedicated bitmap instead. But this flag is still used - * internally. The current usages of this flag should be something - * different, which is unclear to @shyouhei. - */ - RUBY_FL_WB_PROTECTED = (1<<5), - - /** - * This flag has something to do with our garbage collector. These days - * ruby objects are "generational". There are those who are young and - * those who are old. Young objects are prone to die; monitored relatively - * extensively by the garbage collector. OTOH old objects tend to live - * longer. They are relatively rarely considered. This flag is set when a - * object experienced promotion i.e. survived a garbage collection. - * - * @internal - * - * But honestly, @shyouhei doesn't think this flag should be visible from - * 3rd parties. It must be an implementation detail that they should never - * know. Might better be hidden. - */ - RUBY_FL_PROMOTED0 = (1<<5), - - /** - * This flag has something to do with our garbage collector. These days - * ruby objects are "generational". There are those who are young and - * those who are old. Young objects are prone to die; monitored relatively - * extensively by the garbage collector. OTOH old objects tend to live - * longer. They are relatively rarely considered. This flag is set when a - * object experienced two promotions i.e. survived garbage collections - * twice. - * - * @internal - * - * But honestly, @shyouhei doesn't think this flag should be visible from - * 3rd parties. It must be an implementation detail that they should never - * know. Might better be hidden. - */ - RUBY_FL_PROMOTED1 = (1<<6), - - /** - * This flag has something to do with our garbage collector. These days - * ruby objects are "generational". There are those who are young and - * those who are old. Young objects are prone to die; monitored relatively - * extensively by the garbage collector. OTOH old objects tend to live - * longer. They are relatively rarely considered. This flag is set when a - * object experienced promotions i.e. survived more than one garbage - * collections. - * - * @internal - * - * But honestly, @shyouhei doesn't think this flag should be visible from - * 3rd parties. It must be an implementation detail that they should never - * know. Might better be hidden. - */ - RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0 | RUBY_FL_PROMOTED1, - - /** - * This flag has something to do with finalisers. A ruby object can have - * its finaliser, which is another object that evaluates when the target - * object is about to die. This flag is used to denote that there is an - * attached finaliser. - * - * @internal - * - * But honestly, @shyouhei doesn't think this flag should be visible from - * 3rd parties. It must be an implementation detail that they should never - * know. Might better be hidden. - */ - RUBY_FL_FINALIZE = (1<<7), - - /** - * @deprecated This flag once was a thing back in the old days, but makes - * no sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - */ - RUBY_FL_TAINT - -#if defined(RBIMPL_HAVE_ENUM_ATTRIBUTE) - RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -#elif defined(_MSC_VER) -# pragma deprecated(RUBY_FL_TAINT) -#endif - - = (1<<8), - - /** - * This flag has something to do with Ractor. Multiple Ractors run without - * protecting each other. Sharing an object among Ractors are basically - * dangerous, disabled by default. This flag is used to bypass that - * restriction. Of course, you have to manually prevent race conditions - * then. - * - * This flag needs deep understanding of multithreaded programming. You - * would better not use it. - */ - RUBY_FL_SHAREABLE = (1<<8), - - /** - * @deprecated This flag once was a thing back in the old days, but makes - * no sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - */ - RUBY_FL_UNTRUSTED - -#if defined(RBIMPL_HAVE_ENUM_ATTRIBUTE) - RBIMPL_ATTR_DEPRECATED(("trustedness turned out to be a wrong idea.")) -#elif defined(_MSC_VER) -# pragma deprecated(RUBY_FL_UNTRUSTED) -#endif - - = (1<<8), - - /** - * This flag has something to do with object IDs. Unlike in the old days, - * an object's object ID (that a user can query using `Object#object_id`) - * is no longer its physical address represented using Ruby level integers. - * It is now a monotonic-increasing integer unrelated to the underlying - * memory arrangement. Object IDs are assigned when necessary; objects are - * born without one, and will eventually have such property when queried. - * The interpreter has to manage which one is which. This is the flag that - * helps the management. Objects with this flag set are the ones with - * object IDs assigned. - * - * @internal - * - * But honestly, @shyouhei doesn't think this flag should be visible from - * 3rd parties. It must be an implementation detail that they should never - * know. Might better be hidden. - */ - RUBY_FL_SEEN_OBJ_ID = (1<<9), - - /** - * This flag has something to do with instance variables. 3rd parties need - * not know, but there are several ways to store an object's instance - * variables. Objects with this flag use so-called "generic" backend - * storage. This distinction is purely an implementation detail. People - * need not be aware of this working behind-the-scene. - * - * @internal - * - * As of writing everything except ::RObject and RModule use this scheme. - */ - RUBY_FL_EXIVAR = (1<<10), - - /** - * This flag has something to do with data immutability. When this flag is - * set an object is considered "frozen". No modification are expected to - * happen beyond that point for the particular object. Immutability is - * basically considered to be a good property these days. Library authors - * are expected to obey. Test this bit before you touch a data structure. - * - * @see rb_check_frozen() - */ - RUBY_FL_FREEZE = (1<<11), - -/** (@shyouhei doesn't know how to excude this macro from doxygen). */ -#define RBIMPL_FL_USER_N(n) RUBY_FL_USER##n = (1<<(RUBY_FL_USHIFT+n)) - RBIMPL_FL_USER_N(0), /**< User-defined flag. */ - RBIMPL_FL_USER_N(1), /**< User-defined flag. */ - RBIMPL_FL_USER_N(2), /**< User-defined flag. */ - RBIMPL_FL_USER_N(3), /**< User-defined flag. */ - RBIMPL_FL_USER_N(4), /**< User-defined flag. */ - RBIMPL_FL_USER_N(5), /**< User-defined flag. */ - RBIMPL_FL_USER_N(6), /**< User-defined flag. */ - RBIMPL_FL_USER_N(7), /**< User-defined flag. */ - RBIMPL_FL_USER_N(8), /**< User-defined flag. */ - RBIMPL_FL_USER_N(9), /**< User-defined flag. */ - RBIMPL_FL_USER_N(10), /**< User-defined flag. */ - RBIMPL_FL_USER_N(11), /**< User-defined flag. */ - RBIMPL_FL_USER_N(12), /**< User-defined flag. */ - RBIMPL_FL_USER_N(13), /**< User-defined flag. */ - RBIMPL_FL_USER_N(14), /**< User-defined flag. */ - RBIMPL_FL_USER_N(15), /**< User-defined flag. */ - RBIMPL_FL_USER_N(16), /**< User-defined flag. */ - RBIMPL_FL_USER_N(17), /**< User-defined flag. */ - RBIMPL_FL_USER_N(18), /**< User-defined flag. */ -#ifdef ENUM_OVER_INT - RBIMPL_FL_USER_N(19), /**< User-defined flag. */ -#else -# define RUBY_FL_USER19 (RBIMPL_VALUE_ONE<<(RUBY_FL_USHIFT+19)) -#endif -#undef RBIMPL_FL_USER_N -#undef RBIMPL_WIDER_ENUM - - /** - * This flag has something to do with data structures. Over time, ruby - * evolved to reduce memory footprints. One of such attempt is so-called - * copy-on-write, which delays duplication of resources until ultimately - * necessary. Some data structures share this scheme. For example - * multiple instances of struct ::RArray could point identical memory - * region in common, as long as they don't differ. As people favour - * immutable style of programming than before, this situation is getting - * more and more common. Because such "shared" memory regions have nuanced - * ownership by nature, each structures need special care for them. This - * flag is used to distinguish such shared constructs. - * - * @internal - * - * But honestly, @shyouhei doesn't think this flag should be visible from - * 3rd parties. It must be an implementation detail that they should never - * know. Might better be hidden. - */ - RUBY_ELTS_SHARED = RUBY_FL_USER2, - - /** - * This flag has something to do with an object's class. There are kind of - * classes called "singleton class", each of which have exactly one - * instance. What is interesting about singleton classes is that they are - * created _after_ their instance were instantiated, like this: - * - * ```ruby - * foo = Object.new # foo is an instance of Object... - * bar = foo.singleton_class # foo is now an instance of bar. - * ``` - * - * Here as you see `bar` is a singleton class of `foo`, which is injected - * into `foo`'s inheritance tree in a different statement (== distinct - * sequence point). In order to achieve this property singleton classes - * are special-cased in the interpreter. There is one bit flag that - * distinguishes if a class is a singleton class or not, and this is it. - * - * @internal - * - * But honestly, @shyouhei doesn't think this flag should be visible from - * 3rd parties. It must be an implementation detail that they should never - * know. Might better be hidden. - */ - RUBY_FL_SINGLETON = RUBY_FL_USER0, -}; - -enum { - /** - * @deprecated This flag once was a thing back in the old days, but makes - * no sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - */ - RUBY_FL_DUPPED - -#if defined(RBIMPL_HAVE_ENUM_ATTRIBUTE) - RBIMPL_ATTR_DEPRECATED(("It seems there is no actual usage of this enum.")) -#elif defined(_MSC_VER) -# pragma deprecated(RUBY_FL_DUPPED) -#endif - - = (int)RUBY_T_MASK | (int)RUBY_FL_EXIVAR -}; - -#undef RBIMPL_HAVE_ENUM_ATTRIBUTE - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * @deprecated Does nothing. This method is deprecated and will be removed in - * Ruby 3.2. - */ -void rb_obj_infect(VALUE victim, VALUE carrier); - -/** - * This is an implementation detail of #RB_OBJ_FREEZE(). People don't use it - * directly. - * - * @param[out] klass A singleton class. - * @post `klass` gets frozen. - */ -void rb_freeze_singleton_class(VALUE klass); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_FORCEINLINE() -/** - * Checks if the object is flaggable. There are some special cases (most - * notably ::RUBY_Qfalse) where appending a flag to an object is not possible. - * This function can detect that. - * - * @param[in] obj Object in question - * @retval true It is flaggable. - * @retval false No it isn't. - */ -static bool -RB_FL_ABLE(VALUE obj) -{ - if (RB_SPECIAL_CONST_P(obj)) { - return false; - } - else if (RB_TYPE_P(obj, RUBY_T_NODE)) { - return false; - } - else { - return true; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_FL_TEST(). 3rd parties need not use - * this. Just always use RB_FL_TEST(). - * - * @param[in] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @pre The object must not be an enum ::ruby_special_consts. - * @return `obj`'s flags, masked by `flags`. - */ -static inline VALUE -RB_FL_TEST_RAW(VALUE obj, VALUE flags) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj)); - return RBASIC(obj)->flags & flags; -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Tests if the given flag(s) are set or not. You can pass multiple flags at - * once: - * - * ```CXX - * auto obj = rb_eval_string("..."); - * if (RB_FL_TEST(obj, RUBY_FL_FREEZE | RUBY_FL_SHAREABLE)) { - * printf("Ractor ready!\n"); - * } - * ``` - * - * @param[in] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @return `obj`'s flags, masked by `flags`. - * @note It is intentional for this function to return ::VALUE. The - * return value could be passed to RB_FL_STE() etc. - */ -static inline VALUE -RB_FL_TEST(VALUE obj, VALUE flags) -{ - if (RB_FL_ABLE(obj)) { - return RB_FL_TEST_RAW(obj, flags); - } - else { - return RBIMPL_VALUE_NULL; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_FL_ANY(). 3rd parties need not use - * this. Just always use RB_FL_ANY(). - * - * @param[in] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @retval true The object has any of the flags set. - * @retval false No it doesn't at all. - * @pre The object must not be an enum ::ruby_special_consts. - */ -static inline bool -RB_FL_ANY_RAW(VALUE obj, VALUE flags) -{ - return RB_FL_TEST_RAW(obj, flags); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Identical to RB_FL_TEST(), except it returns bool. - * - * @param[in] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @retval true The object has any of the flags set. - * @retval false No it doesn't at all. - */ -static inline bool -RB_FL_ANY(VALUE obj, VALUE flags) -{ - return RB_FL_TEST(obj, flags); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_FL_ALL(). 3rd parties need not use - * this. Just always use RB_FL_ALL(). - * - * @param[in] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @retval true The object has all of the flags set. - * @retval false The object lacks any of the flags. - * @pre The object must not be an enum ::ruby_special_consts. - */ -static inline bool -RB_FL_ALL_RAW(VALUE obj, VALUE flags) -{ - return RB_FL_TEST_RAW(obj, flags) == flags; -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Identical to RB_FL_ANY(), except it mandates all passed flags be set. - * - * @param[in] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @retval true The object has all of the flags set. - * @retval false The object lacks any of the flags. - */ -static inline bool -RB_FL_ALL(VALUE obj, VALUE flags) -{ - return RB_FL_TEST(obj, flags) == flags; -} - -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_ARTIFICIAL() -/** - * @private - * - * This is an implenentation detail of RB_FL_SET(). 3rd parties need not use - * this. Just always use RB_FL_SET(). - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` set. - * - * @internal - * - * This is function is here to annotate a part of RB_FL_SET_RAW() as - * `__declspec(noalias)`. - */ -static inline void -rbimpl_fl_set_raw_raw(struct RBasic *obj, VALUE flags) -{ - obj->flags |= flags; -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_FL_SET(). 3rd parties need not use - * this. Just always use RB_FL_SET(). - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` set. - */ -static inline void -RB_FL_SET_RAW(VALUE obj, VALUE flags) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj)); - rbimpl_fl_set_raw_raw(RBASIC(obj), flags); -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Sets the given flag(s). - * - * ```CXX - * auto v = rb_eval_string("..."); - * RB_FL_SET(v, RUBY_FL_FREEZE); - * ``` - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` set. - */ -static inline void -RB_FL_SET(VALUE obj, VALUE flags) -{ - if (RB_FL_ABLE(obj)) { - RB_FL_SET_RAW(obj, flags); - } -} - -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_ARTIFICIAL() -/** - * @private - * - * This is an implenentation detail of RB_FL_UNSET(). 3rd parties need not use - * this. Just always use RB_FL_UNSET(). - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` cleared. - * - * @internal - * - * This is function is here to annotate a part of RB_FL_UNSET_RAW() as - * `__declspec(noalias)`. - */ -static inline void -rbimpl_fl_unset_raw_raw(struct RBasic *obj, VALUE flags) -{ - obj->flags &= ~flags; -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_FL_UNSET(). 3rd parties need not use - * this. Just always use RB_FL_UNSET(). - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` cleared. - */ -static inline void -RB_FL_UNSET_RAW(VALUE obj, VALUE flags) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj)); - rbimpl_fl_unset_raw_raw(RBASIC(obj), flags); -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Clears the given flag(s). - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` cleard. - */ -static inline void -RB_FL_UNSET(VALUE obj, VALUE flags) -{ - if (RB_FL_ABLE(obj)) { - RB_FL_UNSET_RAW(obj, flags); - } -} - -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_ARTIFICIAL() -/** - * @private - * - * This is an implenentation detail of RB_FL_REVERSE(). 3rd parties need not - * use this. Just always use RB_FL_REVERSE(). - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` reversed. - * - * @internal - * - * This is function is here to annotate a part of RB_FL_REVERSE_RAW() as - * `__declspec(noalias)`. - */ -static inline void -rbimpl_fl_reverse_raw_raw(struct RBasic *obj, VALUE flags) -{ - obj->flags ^= flags; -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_FL_REVERSE(). 3rd parties need not - * use this. Just always use RB_FL_REVERSE(). - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` cleared. - */ -static inline void -RB_FL_REVERSE_RAW(VALUE obj, VALUE flags) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj)); - rbimpl_fl_reverse_raw_raw(RBASIC(obj), flags); -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Reverses the flags. This function is here mainly for symmetry on set/unset. - * Rarely used in practice. - * - * @param[out] obj Object in question. - * @param[in] flags A set of enum ::ruby_fl_type. - * @post `obj` has `flags` reversed. - */ -static inline void -RB_FL_REVERSE(VALUE obj, VALUE flags) -{ - if (RB_FL_ABLE(obj)) { - RB_FL_REVERSE_RAW(obj, flags); - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return false always. - */ -static inline bool -RB_OBJ_TAINTABLE(VALUE obj) -{ - return false; -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return false always. - */ -static inline VALUE -RB_OBJ_TAINTED_RAW(VALUE obj) -{ - return false; -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return false always. - */ -static inline bool -RB_OBJ_TAINTED(VALUE obj) -{ - return false; -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - */ -static inline void -RB_OBJ_TAINT_RAW(VALUE obj) -{ - return; -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - */ -static inline void -RB_OBJ_TAINT(VALUE obj) -{ - return; -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] dst Victim object. - * @param[in] src Infectant object. - */ -static inline void -RB_OBJ_INFECT_RAW(VALUE dst, VALUE src) -{ - return; -} - -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] dst Victim object. - * @param[in] src Infectant object. - */ -static inline void -RB_OBJ_INFECT(VALUE dst, VALUE src) -{ - return; -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_OBJ_FROZEN(). 3rd parties need not - * use this. Just always use RB_OBJ_FROZEN(). - * - * @param[in] obj Object in question. - * @retval RUBY_FL_FREEZE Yes it is. - * @retval 0 No it isn't. - * - * @internal - * - * It is intentional not to return bool here. There is a place in ruby core - * (namely `class.c:singleton_class_of()`) where return value of this function - * is passed to RB_FL_SET_RAW(). - */ -static inline VALUE -RB_OBJ_FROZEN_RAW(VALUE obj) -{ - return RB_FL_TEST_RAW(obj, RUBY_FL_FREEZE); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks if an object is frozen. - * - * @param[in] obj Object in question. - * @retval true Yes it is. - * @retval false No it isn't. - */ -static inline bool -RB_OBJ_FROZEN(VALUE obj) -{ - if (! RB_FL_ABLE(obj)) { - return true; - } - else { - return RB_OBJ_FROZEN_RAW(obj); - } -} - -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is an implenentation detail of RB_OBJ_FREEZE(). 3rd parties need not - * use this. Just always use RB_OBJ_FREEZE(). - * - * @param[out] obj Object in question. - */ -static inline void -RB_OBJ_FREEZE_RAW(VALUE obj) -{ - RB_FL_SET_RAW(obj, RUBY_FL_FREEZE); -} - -/** - * Prevents further modifications to the given object. ::rb_eFrozenError shall - * be raised if modification is attempted. - * - * @param[out] x Object in question. - */ -static inline void -rb_obj_freeze_inline(VALUE x) -{ - if (RB_FL_ABLE(x)) { - RB_OBJ_FREEZE_RAW(x); - if (RBASIC_CLASS(x) && !(RBASIC(x)->flags & RUBY_FL_SINGLETON)) { - rb_freeze_singleton_class(x); - } - } -} - -#endif /* RBIMPL_FL_TYPE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/gc.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/gc.h deleted file mode 100644 index 66fc14e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/gc.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef RBIMPL_GC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_GC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Registering values to the GC. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Inform the garbage collector that `valptr` points to a live Ruby object that - * should not be moved. Note that extensions should use this API on global - * constants instead of assuming constants defined in Ruby are always alive. - * Ruby code can remove global constants. - */ -void rb_gc_register_address(VALUE *valptr); - -/** - * An alias for `rb_gc_register_address()`. - */ -void rb_global_variable(VALUE *); - -/** - * Inform the garbage collector that a pointer previously passed to - * `rb_gc_register_address()` no longer points to a live Ruby object. - */ -void rb_gc_unregister_address(VALUE *valptr); - -/** - * Inform the garbage collector that `object` is a live Ruby object that should - * not be moved. - * - * See also: rb_gc_register_address() - */ -void rb_gc_register_mark_object(VALUE object); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_GC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/glob.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/glob.h deleted file mode 100644 index adbccbd..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/glob.h +++ /dev/null @@ -1,113 +0,0 @@ -#ifndef RBIMPL_GLOB_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_GLOB_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Declares ::rb_glob(). - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Type of a glob callback function. Called every time glob scans a path. - * - * @param[in] path The path in question. - * @param[in] arg The argument passed to rb_glob(). - * @param[in] enc Encoding of the path. - * @retval -1 Not enough memory to do the operation. - * @retval 0 Operation successful. - * @retval otherwise Opaque exception state. - * @note You can use rb_protect() to generate the return value. - * - * @internal - * - * This is a wrong design. Type of `enc` should have been `rb_encoding*` - * instead of just `void*`. But we cannot change the API any longer. - * - * Though not a part of our public API, the "opaque exception state" is in fact - * an enum ruby_tag_type. You can see the potential "otherwise" values by - * looking at vm_core.h. - */ -typedef int ruby_glob_func(const char *path, VALUE arg, void *enc); - -RBIMPL_ATTR_NONNULL(()) -/** - * The "glob" operator. Expands the given pattern against the actual local - * filesystem, then iterates over the expanded filenames by calling the - * callback function. - * - * @param[in] pattern A glob pattern. - * @param[in] func Identical to ruby_glob_func, except it can raise - * exceptions instead of returning opaque state. - * @param[in] arg Extra argument passed to func. - * @exception rb_eException Can propagate what `func` raises. - * @note The language accepted as the pattern is not a regular - * expression. It resembles shell's glob. - */ -void rb_glob(const char *pattern, void (*func)(const char *path, VALUE arg, void *enc), VALUE arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_glob(), except it returns opaque exception states instead of - * raising exceptions. - * - * @param[in] pattern A glob pattern. - * @param[in] flags No, you are not allowed to use this. Just pass 0. - * @param[in] func A callback function. - * @param[in] arg Extra argument passed to func. - * @return Return value of `func`. - * - * @internal - * - * This function is completely broken by design... Not only is there no sane - * way to pass flags, but there also is no sane way to know what a return value - * is meant to be. - * - * Though not a part of our public API, and @shyouhei thinks it's a failure not - * to be a public API, the flags can be `FNM_EXTGLOB`, `FNM_DOTMATCH` etc. - * Look at dir.c for the list. - * - * Though not a part of our public API, the return value is in fact an - * enum ruby_tag_type. You can see the potential values by looking at - * vm_core.h. - */ -int ruby_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to ruby_glob(), @shyouhei currently suspects. Historically you - * had to call this function instead of ruby_glob() if the pattern included - * "{x,y,...}" syntax. However since commit 0f63d961169989a7f6dcf7c0487fe29da, - * ruby_glob() also supports that syntax. It seems as of writing these two - * functions provide basically the same functionality in a different - * implementation. Is this analysis right? Correct me! :FIXME: - * - * @param[in] pattern A glob pattern. - * @param[in] flags No, you are not allowed to use this. Just pass 0. - * @param[in] func A callback function. - * @param[in] arg Extra argument passed to func. - * @return Return value of `func`. - */ -int ruby_brace_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_GLOB_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/globals.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/globals.h deleted file mode 100644 index 5a414fc..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/globals.h +++ /dev/null @@ -1,209 +0,0 @@ -#ifndef RBIMPL_GLOBALS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_GLOBALS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Ruby-level global variables / constants, visible from C. - */ -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" - -/** - * @defgroup object Core objects and their operations - * - * @internal - * - * There are several questionable constants listed in this header file. They - * are intentionally left untouched for purely academic backwards compatibility - * concerns. But for instance do any one of 3rd party extension libraries even - * need to know that there is NameError::Message? - * - * @endinternal - * - * @{ - */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RUBY_INTEGER_UNIFICATION 1 - -RUBY_EXTERN VALUE rb_mKernel; /**< `Kernel` module. */ -RUBY_EXTERN VALUE rb_mComparable; /**< `Comparable` module. */ -RUBY_EXTERN VALUE rb_mEnumerable; /**< `Enumerable` module. */ -RUBY_EXTERN VALUE rb_mErrno; /**< `Errno` module. */ -RUBY_EXTERN VALUE rb_mFileTest; /**< `FileTest` module. */ -RUBY_EXTERN VALUE rb_mGC; /**< `GC` module. */ -RUBY_EXTERN VALUE rb_mMath; /**< `Math` module. */ -RUBY_EXTERN VALUE rb_mProcess; /**< `Process` module. */ -RUBY_EXTERN VALUE rb_mWaitReadable; /**< `IO::WaitReadable` module. */ -RUBY_EXTERN VALUE rb_mWaitWritable; /**< `IO::WaitReadable` module. */ - -RUBY_EXTERN VALUE rb_cBasicObject; /**< `BasicObject` class. */ -RUBY_EXTERN VALUE rb_cObject; /**< `Object` class. */ -RUBY_EXTERN VALUE rb_cArray; /**< `Array` class. */ -RUBY_EXTERN VALUE rb_cBinding; /**< `Binding` class. */ -RUBY_EXTERN VALUE rb_cClass; /**< `Class` class. */ -RUBY_EXTERN VALUE rb_cDir; /**< `Dir` class. */ -RUBY_EXTERN VALUE rb_cEncoding; /**< `Encoding` class. */ -RUBY_EXTERN VALUE rb_cEnumerator; /**< `Enumerator` class. */ -RUBY_EXTERN VALUE rb_cFalseClass; /**< `FalseClass` class. */ -RUBY_EXTERN VALUE rb_cFile; /**< `File` class. */ -RUBY_EXTERN VALUE rb_cComplex; /**< `Complex` class. */ -RUBY_EXTERN VALUE rb_cFloat; /**< `Float` class. */ -RUBY_EXTERN VALUE rb_cHash; /**< `Hash` class. */ -RUBY_EXTERN VALUE rb_cIO; /**< `IO` class. */ -RUBY_EXTERN VALUE rb_cInteger; /**< `Module` class. */ -RUBY_EXTERN VALUE rb_cMatch; /**< `MatchData` class. */ -RUBY_EXTERN VALUE rb_cMethod; /**< `Method` class. */ -RUBY_EXTERN VALUE rb_cModule; /**< `Module` class. */ -RUBY_EXTERN VALUE rb_cRefinement; /**< `Refinement` class. */ -RUBY_EXTERN VALUE rb_cNameErrorMesg; /**< `NameError::Message` class. */ -RUBY_EXTERN VALUE rb_cNilClass; /**< `NilClass` class. */ -RUBY_EXTERN VALUE rb_cNumeric; /**< `Numeric` class. */ -RUBY_EXTERN VALUE rb_cProc; /**< `Proc` class. */ -RUBY_EXTERN VALUE rb_cRandom; /**< `Random` class. */ -RUBY_EXTERN VALUE rb_cRange; /**< `Range` class. */ -RUBY_EXTERN VALUE rb_cRational; /**< `Rational` class. */ -RUBY_EXTERN VALUE rb_cRegexp; /**< `Regexp` class. */ -RUBY_EXTERN VALUE rb_cStat; /**< `File::Stat` class. */ -RUBY_EXTERN VALUE rb_cString; /**< `String` class. */ -RUBY_EXTERN VALUE rb_cStruct; /**< `Struct` class. */ -RUBY_EXTERN VALUE rb_cSymbol; /**< `Sumbol` class. */ -RUBY_EXTERN VALUE rb_cThread; /**< `Thread` class. */ -RUBY_EXTERN VALUE rb_cTime; /**< `Time` class. */ -RUBY_EXTERN VALUE rb_cTrueClass; /**< `TrueClass` class. */ -RUBY_EXTERN VALUE rb_cUnboundMethod; /**< `UnboundMethod` class. */ - -/** - * @} - * @addtogroup exception - * @{ - */ - -RUBY_EXTERN VALUE rb_eException; /**< Mother of all exceptions. */ -RUBY_EXTERN VALUE rb_eStandardError; /**< `StandardError` exception. */ -RUBY_EXTERN VALUE rb_eSystemExit; /**< `SystemExit` exception. */ -RUBY_EXTERN VALUE rb_eInterrupt; /**< `Interrupt` exception. */ -RUBY_EXTERN VALUE rb_eSignal; /**< `SignalException` exception. */ -RUBY_EXTERN VALUE rb_eFatal; /**< `fatal` exception. */ -RUBY_EXTERN VALUE rb_eArgError; /**< `ArgumentError` exception. */ -RUBY_EXTERN VALUE rb_eEOFError; /**< `EOFError` exception. */ -RUBY_EXTERN VALUE rb_eIndexError; /**< `IndexError` exception. */ -RUBY_EXTERN VALUE rb_eStopIteration; /**< `StopIteration` exception. */ -RUBY_EXTERN VALUE rb_eKeyError; /**< `KeyError` exception. */ -RUBY_EXTERN VALUE rb_eRangeError; /**< `RangeError` exception. */ -RUBY_EXTERN VALUE rb_eIOError; /**< `IOError` exception. */ -RUBY_EXTERN VALUE rb_eRuntimeError; /**< `RuntimeError` exception. */ -RUBY_EXTERN VALUE rb_eFrozenError; /**< `FrozenError` exception. */ -RUBY_EXTERN VALUE rb_eSecurityError; /**< `SecurityError` exception. */ -RUBY_EXTERN VALUE rb_eSystemCallError; /**< `SystemCallError` exception. */ -RUBY_EXTERN VALUE rb_eThreadError; /**< `ThreadError` exception. */ -RUBY_EXTERN VALUE rb_eTypeError; /**< `TypeError` exception. */ -RUBY_EXTERN VALUE rb_eZeroDivError; /**< `ZeroDivisionError` exception. */ -RUBY_EXTERN VALUE rb_eNotImpError; /**< `NotImplementedError` exception. */ -RUBY_EXTERN VALUE rb_eNoMemError; /**< `NoMemoryError` exception. */ -RUBY_EXTERN VALUE rb_eNoMethodError; /**< `NoMethodError` exception. */ -RUBY_EXTERN VALUE rb_eFloatDomainError; /**< `FloatDomainError` exception. */ -RUBY_EXTERN VALUE rb_eLocalJumpError; /**< `LocalJumpError` exception. */ -RUBY_EXTERN VALUE rb_eSysStackError; /**< `SystemStackError` exception. */ -RUBY_EXTERN VALUE rb_eRegexpError; /**< `RegexpError` exception. */ -RUBY_EXTERN VALUE rb_eEncodingError; /**< `EncodingError` exception. */ -RUBY_EXTERN VALUE rb_eEncCompatError; /**< `Encoding::CompatibilityError` exception. */ -RUBY_EXTERN VALUE rb_eNoMatchingPatternError; /**< `NoMatchingPatternError` exception. */ -RUBY_EXTERN VALUE rb_eNoMatchingPatternKeyError; /**< `NoMatchingPatternKeyError` exception. */ - -RUBY_EXTERN VALUE rb_eScriptError; /**< `ScriptError` exception. */ -RUBY_EXTERN VALUE rb_eNameError; /**< `NameError` exception. */ -RUBY_EXTERN VALUE rb_eSyntaxError; /**< `SyntaxError` exception. */ -RUBY_EXTERN VALUE rb_eLoadError; /**< `LoadError` exception. */ - -RUBY_EXTERN VALUE rb_eMathDomainError; /**< `Math::DomainError` exception. */ - -/** - * @} - * @addtogroup object - * @{ - */ - -RUBY_EXTERN VALUE rb_stdin; /**< `STDIN` constant. */ -RUBY_EXTERN VALUE rb_stdout; /**< `STDOUT` constant. */ -RUBY_EXTERN VALUE rb_stderr; /**< `STDERR` constant. */ - -RBIMPL_ATTR_PURE() -/** - * Object to class mapping function. Every object have its class. This - * function obtains that. - * - * @param[in] obj Target object to query. - * @return The class of the given object. - * - * @internal - * - * This function is a super-duper hot path. Optimised targeting modern C - * compilers and x86_64 architecture. - */ -static inline VALUE -rb_class_of(VALUE obj) -{ - if (! RB_SPECIAL_CONST_P(obj)) { - return RBASIC_CLASS(obj); - } - else if (obj == RUBY_Qfalse) { - return rb_cFalseClass; - } - else if (obj == RUBY_Qnil) { - return rb_cNilClass; - } - else if (obj == RUBY_Qtrue) { - return rb_cTrueClass; - } - else if (RB_FIXNUM_P(obj)) { - return rb_cInteger; - } - else if (RB_STATIC_SYM_P(obj)) { - return rb_cSymbol; - } - else if (RB_FLONUM_P(obj)) { - return rb_cFloat; - } - -#if !RUBY_DEBUG - RBIMPL_UNREACHABLE_RETURN(Qfalse); -#else - RUBY_ASSERT_FAIL("unexpected type"); -#endif -} - -#define CLASS_OF rb_class_of /**< @old{rb_class_of} */ - -RBIMPL_SYMBOL_EXPORT_END() - -/** @} */ - -#endif /* RBIMPL_GLOBALS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/attribute.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/attribute.h deleted file mode 100644 index f068a65..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/attribute.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifndef RBIMPL_HAS_ATTRIBUTE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_ATTRIBUTE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_ATTRIBUTE. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/compiler_since.h" - -#if defined(__has_attribute) -# if __has_attribute(pure) || RBIMPL_COMPILER_IS(GCC) -# /* FreeBSD's defines its own *broken* version of -# * __has_attribute. Cygwin copied that content to be a victim of the -# * broken-ness. We don't take them into account. */ -# define RBIMPL_HAVE___HAS_ATTRIBUTE 1 -# endif -#endif - -/** Wraps (or simulates) `__has_attribute`. */ -#if defined(RBIMPL_HAVE___HAS_ATTRIBUTE) -# define RBIMPL_HAS_ATTRIBUTE(_) __has_attribute(_) - -#elif RBIMPL_COMPILER_IS(GCC) -# /* GCC <= 4 lack __has_attribute predefined macro, while have attributes -# * themselves. We can simulate the macro like the following: */ -# define RBIMPL_HAS_ATTRIBUTE(_) (RBIMPL_HAS_ATTRIBUTE_ ## _) -# define RBIMPL_HAS_ATTRIBUTE_aligned RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_alloc_size RBIMPL_COMPILER_SINCE(GCC, 4, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_artificial RBIMPL_COMPILER_SINCE(GCC, 4, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_always_inline RBIMPL_COMPILER_SINCE(GCC, 3, 1, 0) -# define RBIMPL_HAS_ATTRIBUTE_cdecl RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_cold RBIMPL_COMPILER_SINCE(GCC, 4, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_const RBIMPL_COMPILER_SINCE(GCC, 2, 6, 0) -# define RBIMPL_HAS_ATTRIBUTE_deprecated RBIMPL_COMPILER_SINCE(GCC, 3, 1, 0) -# define RBIMPL_HAS_ATTRIBUTE_dllexport RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_dllimport RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_error RBIMPL_COMPILER_SINCE(GCC, 4, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_format RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_hot RBIMPL_COMPILER_SINCE(GCC, 4, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_leaf RBIMPL_COMPILER_SINCE(GCC, 4, 6, 0) -# define RBIMPL_HAS_ATTRIBUTE_malloc RBIMPL_COMPILER_SINCE(GCC, 3, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_no_address_safety_analysis RBIMPL_COMPILER_SINCE(GCC, 4, 8, 0) -# define RBIMPL_HAS_ATTRIBUTE_no_sanitize_address RBIMPL_COMPILER_SINCE(GCC, 4, 8, 0) -# define RBIMPL_HAS_ATTRIBUTE_no_sanitize_undefined RBIMPL_COMPILER_SINCE(GCC, 4, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_noinline RBIMPL_COMPILER_SINCE(GCC, 3, 1, 0) -# define RBIMPL_HAS_ATTRIBUTE_nonnull RBIMPL_COMPILER_SINCE(GCC, 3, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_noreturn RBIMPL_COMPILER_SINCE(GCC, 2, 5, 0) -# define RBIMPL_HAS_ATTRIBUTE_nothrow RBIMPL_COMPILER_SINCE(GCC, 3, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_pure RBIMPL_COMPILER_SINCE(GCC, 2,96, 0) -# define RBIMPL_HAS_ATTRIBUTE_returns_nonnull RBIMPL_COMPILER_SINCE(GCC, 4, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_returns_twice RBIMPL_COMPILER_SINCE(GCC, 4, 1, 0) -# define RBIMPL_HAS_ATTRIBUTE_stdcall RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_unused RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_ATTRIBUTE_visibility RBIMPL_COMPILER_SINCE(GCC, 3, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_warn_unused_result RBIMPL_COMPILER_SINCE(GCC, 3, 4, 0) -# define RBIMPL_HAS_ATTRIBUTE_warning RBIMPL_COMPILER_SINCE(GCC, 4, 3, 0) -# define RBIMPL_HAS_ATTRIBUTE_weak RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# /* Note that "0, 0, 0" might be inaccurate. */ - -#elif RBIMPL_COMPILER_IS(SunPro) -# /* Oracle Solaris Studio 12.4 (cc version 5.11) introduced __has_attribute. -# * Before that, following attributes were available. */ -# /* See https://docs.oracle.com/cd/F24633_01/index.html */ -# define RBIMPL_HAS_ATTRIBUTE(_) (RBIMPL_HAS_ATTRIBUTE_ ## _) -# define RBIMPL_HAS_ATTRIBUTE_alias RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_aligned RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_always_inline RBIMPL_COMPILER_SINCE(SunPro, 5, 10, 0) -# define RBIMPL_HAS_ATTRIBUTE_const RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_constructor RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_destructor RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_malloc RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_noinline RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_noreturn RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_packed RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_pure RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_returns_twice RBIMPL_COMPILER_SINCE(SunPro, 5, 10, 0) -# define RBIMPL_HAS_ATTRIBUTE_vector_size RBIMPL_COMPILER_SINCE(SunPro, 5, 10, 0) -# define RBIMPL_HAS_ATTRIBUTE_visibility RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) -# define RBIMPL_HAS_ATTRIBUTE_weak RBIMPL_COMPILER_SINCE(SunPro, 5, 9, 0) - -#elif defined (_MSC_VER) -# define RBIMPL_HAS_ATTRIBUTE(_) 0 -# /* Fallback below doesn't work: see win32/Makefile.sub */ - -#else -# /* Take config.h definition when available. */ -# define RBIMPL_HAS_ATTRIBUTE(_) ((RBIMPL_HAS_ATTRIBUTE_ ## _)+0) -# ifdef ALWAYS_INLINE -# define RBIMPL_HAS_ATTRIBUTE_always_inline 1 -# endif -# ifdef FUNC_CDECL -# define RBIMPL_HAS_ATTRIBUTE_cdecl 1 -# endif -# ifdef CONSTFUNC -# define RBIMPL_HAS_ATTRIBUTE_const 1 -# endif -# ifdef DEPRECATED -# define RBIMPL_HAS_ATTRIBUTE_deprecated 1 -# endif -# ifdef ERRORFUNC -# define RBIMPL_HAS_ATTRIBUTE_error 1 -# endif -# ifdef FUNC_FASTCALL -# define RBIMPL_HAS_ATTRIBUTE_fastcall 1 -# endif -# ifdef PUREFUNC -# define RBIMPL_HAS_ATTRIBUTE_pure 1 -# endif -# ifdef NO_ADDRESS_SAFETY_ANALYSIS -# define RBIMPL_HAS_ATTRIBUTE_no_address_safety_analysis 1 -# endif -# ifdef NO_SANITIZE -# define RBIMPL_HAS_ATTRIBUTE_no_sanitize 1 -# endif -# ifdef NO_SANITIZE_ADDRESS -# define RBIMPL_HAS_ATTRIBUTE_no_sanitize_address 1 -# endif -# ifdef NOINLINE -# define RBIMPL_HAS_ATTRIBUTE_noinline 1 -# endif -# ifdef RBIMPL_FUNC_NONNULL -# define RBIMPL_HAS_ATTRIBUTE_nonnull 1 -# endif -# ifdef NORETURN -# define RBIMPL_HAS_ATTRIBUTE_noreturn 1 -# endif -# ifdef FUNC_OPTIMIZED -# define RBIMPL_HAS_ATTRIBUTE_optimize 1 -# endif -# ifdef FUNC_STDCALL -# define RBIMPL_HAS_ATTRIBUTE_stdcall 1 -# endif -# ifdef MAYBE_UNUSED -# define RBIMPL_HAS_ATTRIBUTE_unused 1 -# endif -# ifdef WARN_UNUSED_RESULT -# define RBIMPL_HAS_ATTRIBUTE_warn_unused_result 1 -# endif -# ifdef WARNINGFUNC -# define RBIMPL_HAS_ATTRIBUTE_warning 1 -# endif -# ifdef WEAK -# define RBIMPL_HAS_ATTRIBUTE_weak 1 -# endif -#endif - -#endif /* RBIMPL_HAS_ATTRIBUTE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/builtin.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/builtin.h deleted file mode 100644 index 957aff8..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/builtin.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef RBIMPL_HAS_BUILTIN_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_BUILTIN_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_BUILTIN. - */ -#include "ruby/internal/config.h" -#include "ruby/internal/compiler_since.h" - -#if defined(__has_builtin) -# if RBIMPL_COMPILER_IS(Intel) -# /* :TODO: Intel C Compiler has __has_builtin (since 19.1 maybe?), and is -# * reportedly broken. We have to skip them. However the situation can -# * change. They might improve someday. We need to revisit here later. */ -# elif RBIMPL_COMPILER_IS(GCC) && ! __has_builtin(__builtin_alloca) -# /* FreeBSD's defines its own *broken* version of -# * __has_builtin. Cygwin copied that content to be a victim of the -# * broken-ness. We don't take them into account. */ -# else -# define RBIMPL_HAVE___HAS_BUILTIN 1 -# endif -#endif - -/** Wraps (or simulates) `__has_builtin`. */ -#if defined(RBIMPL_HAVE___HAS_BUILTIN) -# define RBIMPL_HAS_BUILTIN(_) __has_builtin(_) - -#elif RBIMPL_COMPILER_IS(GCC) -# /* :FIXME: Historically GCC has had tons of builtins, but it implemented -# * __has_builtin only since GCC 10. This section can be made more -# * granular. */ -# /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66970 */ -# define RBIMPL_HAS_BUILTIN(_) (RBIMPL_HAS_BUILTIN_ ## _) -# define RBIMPL_HAS_BUILTIN___builtin_add_overflow RBIMPL_COMPILER_SINCE(GCC, 5, 1, 0) -# define RBIMPL_HAS_BUILTIN___builtin_alloca RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0) -# define RBIMPL_HAS_BUILTIN___builtin_alloca_with_align RBIMPL_COMPILER_SINCE(GCC, 6, 1, 0) -# define RBIMPL_HAS_BUILTIN___builtin_assume 0 -# /* See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624 for bswap16. */ -# define RBIMPL_HAS_BUILTIN___builtin_bswap16 RBIMPL_COMPILER_SINCE(GCC, 4, 8, 0) -# define RBIMPL_HAS_BUILTIN___builtin_bswap32 RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_bswap64 RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_clz RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_clzl RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_clzll RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_constant_p RBIMPL_COMPILER_SINCE(GCC, 2,95, 3) -# define RBIMPL_HAS_BUILTIN___builtin_ctz RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_ctzl RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_ctzll RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_expect RBIMPL_COMPILER_SINCE(GCC, 3, 0, 0) -# define RBIMPL_HAS_BUILTIN___builtin_mul_overflow RBIMPL_COMPILER_SINCE(GCC, 5, 1, 0) -# define RBIMPL_HAS_BUILTIN___builtin_mul_overflow_p RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0) -# define RBIMPL_HAS_BUILTIN___builtin_popcount RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_popcountl RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_popcountll RBIMPL_COMPILER_SINCE(GCC, 3, 6, 0) -# define RBIMPL_HAS_BUILTIN___builtin_rotateleft32 0 -# define RBIMPL_HAS_BUILTIN___builtin_rotateleft64 0 -# define RBIMPL_HAS_BUILTIN___builtin_rotateright32 0 -# define RBIMPL_HAS_BUILTIN___builtin_rotateright64 0 -# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow RBIMPL_COMPILER_SINCE(GCC, 5, 1, 0) -# define RBIMPL_HAS_BUILTIN___builtin_unreachable RBIMPL_COMPILER_SINCE(GCC, 4, 5, 0) -# /* Note that "0, 0, 0" might be inaccurate. */ - -#elif RBIMPL_COMPILER_IS(MSVC) -# /* MSVC has UNREACHABLE, but that is not __builtin_unreachable. */ -# define RBIMPL_HAS_BUILTIN(_) 0 - -#else -# /* Take config.h definition when available */ -# define RBIMPL_HAS_BUILTIN(_) ((RBIMPL_HAS_BUILTIN_ ## _)+0) -# define RBIMPL_HAS_BUILTIN___builtin_add_overflow HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW -# define RBIMPL_HAS_BUILTIN___builtin_alloca 0 -# define RBIMPL_HAS_BUILTIN___builtin_alloca_with_align HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN -# define RBIMPL_HAS_BUILTIN___builtin_assume 0 -# define RBIMPL_HAS_BUILTIN___builtin_assume_aligned HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED -# define RBIMPL_HAS_BUILTIN___builtin_bswap16 HAVE_BUILTIN___BUILTIN_BSWAP16 -# define RBIMPL_HAS_BUILTIN___builtin_bswap32 HAVE_BUILTIN___BUILTIN_BSWAP32 -# define RBIMPL_HAS_BUILTIN___builtin_bswap64 HAVE_BUILTIN___BUILTIN_BSWAP64 -# define RBIMPL_HAS_BUILTIN___builtin_clz HAVE_BUILTIN___BUILTIN_CLZ -# define RBIMPL_HAS_BUILTIN___builtin_clzl HAVE_BUILTIN___BUILTIN_CLZL -# define RBIMPL_HAS_BUILTIN___builtin_clzll HAVE_BUILTIN___BUILTIN_CLZLL -# define RBIMPL_HAS_BUILTIN___builtin_constant_p HAVE_BUILTIN___BUILTIN_CONSTANT_P -# define RBIMPL_HAS_BUILTIN___builtin_ctz HAVE_BUILTIN___BUILTIN_CTZ -# define RBIMPL_HAS_BUILTIN___builtin_ctzl 0 -# define RBIMPL_HAS_BUILTIN___builtin_ctzll HAVE_BUILTIN___BUILTIN_CTZLL -# define RBIMPL_HAS_BUILTIN___builtin_expect HAVE_BUILTIN___BUILTIN_EXPECT -# define RBIMPL_HAS_BUILTIN___builtin_mul_overflow HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW -# define RBIMPL_HAS_BUILTIN___builtin_mul_overflow_p HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW_P -# define RBIMPL_HAS_BUILTIN___builtin_popcount HAVE_BUILTIN___BUILTIN_POPCOUNT -# define RBIMPL_HAS_BUILTIN___builtin_popcountl 0 -# define RBIMPL_HAS_BUILTIN___builtin_rotateleft32 0 -# define RBIMPL_HAS_BUILTIN___builtin_rotateleft64 0 -# define RBIMPL_HAS_BUILTIN___builtin_rotateright32 0 -# define RBIMPL_HAS_BUILTIN___builtin_rotateright64 0 -# define RBIMPL_HAS_BUILTIN___builtin_popcountll HAVE_BUILTIN___BUILTIN_POPCOUNTLL -# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW -# if defined(UNREACHABLE) -# define RBIMPL_HAS_BUILTIN___builtin_unreachable 1 -# else -# define RBIMPL_HAS_BUILTIN___builtin_unreachable 0 -# endif -#endif - -#endif /* RBIMPL_HAS_BUILTIN_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/c_attribute.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/c_attribute.h deleted file mode 100644 index c5c4886..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/c_attribute.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RBIMPL_HAS_C_ATTRIBUTE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_C_ATTRIBUTE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_C_ATTRIBUTE. - */ - -/** Wraps (or simulates) `__has_c_attribute`. */ -#if defined(__cplusplus) -# /* Makes no sense. */ -# define RBIMPL_HAS_C_ATTRIBUTE(_) 0 - -#elif defined(__has_c_attribute) -# define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_) - -#else -# /* As of writing everything that lacks __has_c_attribute also completely -# * lacks C2x attributes as well. Might change in future? */ -# define RBIMPL_HAS_C_ATTRIBUTE(_) 0 -#endif - -#endif /* RBIMPL_HAS_C_ATTRIBUTE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/cpp_attribute.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/cpp_attribute.h deleted file mode 100644 index 6a393b1..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/cpp_attribute.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef RBIMPL_HAS_CPP_ATTRIBUTE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_CPP_ATTRIBUTE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_CPP_ATTRIBUTE. - */ -#include "ruby/internal/compiler_is.h" -#include "ruby/internal/compiler_since.h" - -/** @cond INTERNAL_MACRO */ -#if RBIMPL_COMPILER_IS(SunPro) -# /* Oracle Developer Studio 12.5's C++ preprocessor is reportedly broken. We -# * could simulate __has_cpp_attribute like below, but don't know the exact -# * list of which version supported which attribute. Just kill everything for -# * now. If you can please :FIXME: */ -# /* https://unicode-org.atlassian.net/browse/ICU-12893 */ -# /* https://github.com/boostorg/config/pull/95 */ -# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) 0 - -#elif defined(__has_cpp_attribute) -# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) __has_cpp_attribute(_) - -#elif RBIMPL_COMPILER_IS(MSVC) -# /* MSVC has never updated its __cplusplus since forever (unless specified -# * explicitly by a compiler flag). They also lack __has_cpp_attribute until -# * 2019. However, they do have attributes since 2015 or so. */ -# /* https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance */ -# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) (RBIMPL_HAS_CPP_ATTRIBUTE_ ## _) -# define RBIMPL_HAS_CPP_ATTRIBUTE_noreturn 200809 * RBIMPL_COMPILER_SINCE(MSVC, 19, 00, 0) -# define RBIMPL_HAS_CPP_ATTRIBUTE_carries_dependency 200809 * RBIMPL_COMPILER_SINCE(MSVC, 19, 00, 0) -# define RBIMPL_HAS_CPP_ATTRIBUTE_deprecated 201309 * RBIMPL_COMPILER_SINCE(MSVC, 19, 10, 0) -# define RBIMPL_HAS_CPP_ATTRIBUTE_fallthrough 201603 * RBIMPL_COMPILER_SINCE(MSVC, 19, 10, 0) -# define RBIMPL_HAS_CPP_ATTRIBUTE_maybe_unused 201603 * RBIMPL_COMPILER_SINCE(MSVC, 19, 11, 0) -# define RBIMPL_HAS_CPP_ATTRIBUTE_nodiscard 201603 * RBIMPL_COMPILER_SINCE(MSVC, 19, 11, 0) - -#elif RBIMPL_COMPILER_BEFORE(Clang, 3, 6, 0) -# /* Clang 3.6.0 introduced __has_cpp_attribute. Prior to that following -# * attributes were already there. */ -# /* https://clang.llvm.org/cxx_status.html */ -# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) (RBIMPL_HAS_CPP_ATTRIBUTE_ ## _) -# define RBIMPL_HAS_CPP_ATTRIBUTE_noreturn 200809 * RBIMPL_COMPILER_SINCE(Clang, 3, 3, 0) -# define RBIMPL_HAS_CPP_ATTRIBUTE_deprecated 201309 * RBIMPL_COMPILER_SINCE(Clang, 3, 4, 0) - -#elif RBIMPL_COMPILER_BEFORE(GCC, 5, 0, 0) -# /* GCC 5+ have __has_cpp_attribute, while 4.x had following attributes. */ -# /* https://gcc.gnu.org/projects/cxx-status.html */ -# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) (RBIMPL_HAS_CPP_ATTRIBUTE_ ## _) -# define RBIMPL_HAS_CPP_ATTRIBUTE_noreturn 200809 * RBIMPL_COMPILER_SINCE(GCC, 4, 8, 0) -# define RBIMPL_HAS_CPP_ATTRIBUTE_deprecated 201309 * RBIMPL_COMPILER_SINCE(GCC, 4, 9, 0) - -#else -# /* :FIXME: -# * Candidate compilers to list here: -# * - icpc: They have __INTEL_CXX11_MODE__. -# */ -# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) 0 -#endif -/** @endcond */ - -/** Wraps (or simulates) `__has_cpp_attribute`. */ -#if ! defined(__cplusplus) -# /* Makes no sense. */ -# define RBIMPL_HAS_CPP_ATTRIBUTE(_) 0 -#else -# /* GCC needs workarounds. See https://gcc.godbolt.org/z/jdz3pa */ -# define RBIMPL_HAS_CPP_ATTRIBUTE(_) \ - ((RBIMPL_HAS_CPP_ATTRIBUTE0(_) <= __cplusplus) ? RBIMPL_HAS_CPP_ATTRIBUTE0(_) : 0) -#endif - -#endif /* RBIMPL_HAS_CPP_ATTRIBUTE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/declspec_attribute.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/declspec_attribute.h deleted file mode 100644 index 1c526da..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/declspec_attribute.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef RBIMPL_HAS_DECLSPEC_ATTRIBUTE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_DECLSPEC_ATTRIBUTE. - */ -#include "ruby/internal/compiler_since.h" - -/** Wraps (or simulates) `__has_declspec_attribute`. */ -#if defined(__has_declspec_attribute) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE(_) __has_declspec_attribute(_) -#else -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE(_) (RBIMPL_HAS_DECLSPEC_ATTRIBUTE_ ## _) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_align RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_deprecated RBIMPL_COMPILER_SINCE(MSVC,13, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_dllexport RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_dllimport RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_empty_bases RBIMPL_COMPILER_SINCE(MSVC,19, 0, 23918) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_noalias RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_noinline RBIMPL_COMPILER_SINCE(MSVC,13, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_noreturn RBIMPL_COMPILER_SINCE(MSVC,11, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_nothrow RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0) -# define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_restrict RBIMPL_COMPILER_SINCE(MSVC,14, 0, 0) -# /* Note that "8, 0, 0" might be inaccurate. */ -# if ! defined(__cplusplus) -# /* Clang has this in both C/C++, but MSVC has this in C++ only.*/ -# undef RBIMPL_HAS_DECLSPEC_ATTRIBUTE_nothrow -# endif -#endif - -#endif /* RBIMPL_HAS_DECLSPEC_ATTRIBUTE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/extension.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/extension.h deleted file mode 100644 index da8c0d3..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/extension.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RBIMPL_HAS_EXTENSION_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_EXTENSION_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_EXTENSION. - */ -#include "ruby/internal/has/feature.h" - -/** Wraps (or simulates) `__has_extension`. */ -#if defined(__has_extension) -# define RBIMPL_HAS_EXTENSION(_) __has_extension(_) -#else -# /* Pre-3.0 clang had __has_feature but not __has_extension. */ -# define RBIMPL_HAS_EXTENSION(_) RBIMPL_HAS_FEATURE(_) -#endif - -#endif /* RBIMPL_HAS_EXTENSION_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/feature.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/feature.h deleted file mode 100644 index 7be8d27..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/feature.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef RBIMPL_HAS_FEATURE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_FEATURE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_FEATURE. - */ - -/** Wraps (or simulates) `__has_feature`. */ -#if defined(__has_feature) -# define RBIMPL_HAS_FEATURE(_) __has_feature(_) -#else -# define RBIMPL_HAS_FEATURE(_) 0 -#endif - -#endif /* RBIMPL_HAS_FEATURE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/warning.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/warning.h deleted file mode 100644 index 12d7db1..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/has/warning.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef RBIMPL_HAS_WARNING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_HAS_WARNING_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_HAS_WARNING. - */ - -/** Wraps (or simulates) `__has_warning`. */ -#if defined(__has_warning) -# define RBIMPL_HAS_WARNING(_) __has_warning(_) -#else -# define RBIMPL_HAS_WARNING(_) 0 -#endif - -#endif /* RBIMPL_HAS_WARNING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/array.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/array.h deleted file mode 100644 index 17964bf..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/array.h +++ /dev/null @@ -1,657 +0,0 @@ -#ifndef RBIMPL_INTERN_ARRAY_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_ARRAY_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cArray. - */ -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/noexcept.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* array.c */ - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_NOALIAS() -/** - * Fills the memory region with a series of ::RUBY_Qnil. - * - * @param[out] buf Buffer to squash. - * @param[in] len Number of objects of `buf`. - * @post `buf` is filled with ::RUBY_Qnil. - */ -void rb_mem_clear(VALUE *buf, long len) - RBIMPL_ATTR_NOEXCEPT(true) - ; - -/** - * Identical to rb_ary_new_from_values(), except it expects exactly two - * parameters. - * - * @param[in] car Arbitrary ruby object. - * @param[in] cdr Arbitrary ruby object. - * @return An allocated new array, of length 2, whose contents are the - * passed objects. - */ -VALUE rb_assoc_new(VALUE car, VALUE cdr); - -/** - * Try converting an object to its array representation using its `to_ary` - * method, if any. If there is no such thing, returns ::RUBY_Qnil. - * - * @param[in] obj Arbitrary ruby object to convert. - * @exception rb_eTypeError `obj.to_ary` returned something non-Array. - * @retval RUBY_Qnil No conversion from `obj` to array defined. - * @retval otherwise Converted array representation of `obj`. - * @see rb_io_check_io - * @see rb_check_string_type - * @see rb_check_hash_type - */ -VALUE rb_check_array_type(VALUE obj); - -/** - * Allocates a new, empty array. - * - * @return An allocated new array, whose length is 0. - */ -VALUE rb_ary_new(void); - -/** - * Identical to rb_ary_new(), except it additionally specifies how many rooms - * of objects it should allocate. This way you can create an array whose - * capacity is bigger than the length of it. If you can say that an array - * grows to a specific amount, this could be effective than resizing an array - * over and over again and again. - * - * @param[in] capa Designed capacity of the generating array. - * @return An empty array, whose capacity is `capa`. - */ -VALUE rb_ary_new_capa(long capa); - -/** - * Constructs an array from the passed objects. - * - * @param[in] n Number of passed objects. - * @param[in] ... Arbitrary ruby objects, filled into the returning array. - * @return An array of size `n`, whose contents are the passed objects. - */ -VALUE rb_ary_new_from_args(long n, ...); - -/** - * Identical to rb_ary_new_from_args(), except how objects are passed. - * - * @param[in] n Number of objects of `elts`. - * @param[in] elts Arbitrary ruby objects, filled into the returning array. - * @return An array of size `n`, whose contents are the passed objects. - */ -VALUE rb_ary_new_from_values(long n, const VALUE *elts); - -/** - * Allocates a "temporary" array. This is a hidden empty array. Handy on - * occasions. - * - * @param[in] capa Designed capacity of the array. - * @return A hidden, empty array. - * @see rb_obj_hide() - */ -VALUE rb_ary_tmp_new(long capa); - -/** - * Destroys the given array for no reason. - * - * @warning DO NOT USE IT. - * @warning Leave this task to our GC. - * @warning It was a wrong indea at the first place to let you know about it. - * - * @param[out] ary The array to be executed. - * @post The given array no longer exists. - * @note Maybe `Array#clear` could be what you want. - * - * @internal - * - * Should have moved this to `internal/array.h`. - */ -void rb_ary_free(VALUE ary); - -/** - * Declares that the array is about to be modified. This for instance let the - * array have a dedicated backend storage. - * - * @param[out] ary Array about to be modified. - * @exception rb_eFrozenError `ary` is frozen. - * @post Upon successful return the passed array is eligible to be - * modified. - */ -void rb_ary_modify(VALUE ary); - -/** @alias{rb_obj_freeze} */ -VALUE rb_ary_freeze(VALUE obj); - -RBIMPL_ATTR_PURE() -/** - * Queries if the passed two arrays share the same backend storage. A use-case - * for knowing such property is to take a snapshot of an array (using - * e.g. rb_ary_replace()), then check later if that snapshot still shares the - * storage with the original. Taking a snapshot is ultra-cheap. If nothing - * happens the impact shall be minimal. But if someone modifies the original, - * that entity shall pay the cost of copy-on-write. You can detect that using - * this API. - * - * @param[in] lhs Comparison LHS. - * @param[in] rhs Comparison RHS. - * @retval RUBY_Qtrue They share the same backend storage. - * @retval RUBY_Qfalse They are distinct. - * @pre Both arguments must be of ::RUBY_T_ARRAY. - */ -VALUE rb_ary_shared_with_p(VALUE lhs, VALUE rhs); - -/** - * Queries element(s) of an array. This is complicated! Refer `Array#slice` - * document for the complete description of how it behaves. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Up to 2 objects. - * @param[in] ary Target array. - * @exception rb_eTypeError `argv` (or its part) includes non-Integer. - * @exception rb_eRangeError rb_cArithSeq is passed, and is OOB. - * @return An element (if requested), or an array of elements (if - * requested), or ::RUBY_Qnil (if index OOB). - * - * @internal - * - * ```rbs - * # "int" is ::Integer or `#to_int`, defined in builtin.rbs - * - * class ::Array[unchecked out T] - * def slice - * : (int i) -> T? - * | (int beg, int len) -> ::Array[T]? - * | (Range[int] r) -> ::Array[T]? - * | (ArithmeticSequence as) -> ::Array[T]? # This also raises RagneError. - * end - * ``` - */ -VALUE rb_ary_aref(int argc, const VALUE *argv, VALUE ary); - -/** - * Obtains a part of the passed array. - * - * @param[in] ary Target array. - * @param[in] beg Subpart index. - * @param[in] len Requested length of returning array. - * @retval RUBY_Qnil Requested range out of bounds of `ary`. - * @retval otherwise An allocated new array whose contents are `ary`'s - * `beg` to `len`. - * @note Return array can be shorter than `len` when for instance - * `[0, 1, 2, 3]`'s 4th to 1,000,000,000th is requested. - */ -VALUE rb_ary_subseq(VALUE ary, long beg, long len); - -/** - * Destructively stores the passed value to the passed array's passed index. - * It also resizes the array's backend storage so that the requested index is - * not out of bounds. - * - * @param[out] ary Target array to modify. - * @param[in] key Where to store `val`. - * @param[in] val What to store at `key`. - * @exception rb_eFrozenError `ary` is frozen. - * @exception rb_eIndexError `key` is negative. - * @post `ary`'s `key`th position is occupied with `val`. - * @post Depending on `key` and previous length of `ary` this operation - * can also create a series of "hole" positions inside of the - * backend storage. They are filled with ::RUBY_Qnil. - */ -void rb_ary_store(VALUE ary, long key, VALUE val); - -/** - * Duplicates an array. - * - * @param[in] ary Target to duplicate. - * @return An allocated new array whose contents are identical to `ary`. - * - * @internal - * - * Not sure why this has to be something different from `ary_make_shared_copy`, - * which seems much efficient. - */ -VALUE rb_ary_dup(VALUE ary); - -/** - * I guess there is no use case of this function in extension libraries, but - * this is a routine identical to rb_ary_dup(). This makes the most sense when - * the passed array is formerly hidden by rb_obj_hide(). - * - * @param[in] ary An array, possibly hidden. - * @return A duplicated new instance of ::rb_cArray. - */ -VALUE rb_ary_resurrect(VALUE ary); - -/** - * Force converts an object to an array. It first tries its `#to_ary` method. - * Takes the result if any. Otherwise creates an array of size 1 whose sole - * element is the passed object. - * - * @param[in] obj Arbitrary ruby object. - * @return An array representation of `obj`. - * @note Unlike rb_str_to_str() which is a variant of - * rb_check_string_type(), rb_ary_to_ary() is not a variant of - * rb_check_array_type(). - */ -VALUE rb_ary_to_ary(VALUE obj); - -/** - * Converts an array into a human-readable string. Historically its behaviour - * changed over time. Currently it is identical to calling `inspect` method. - * This behaviour is from that of python (!!) circa 2006. - * - * @param[in] ary Array to inspect. - * @return Recursively inspected representation of `ary`. - * @see `[ruby-dev:29520]` - */ -VALUE rb_ary_to_s(VALUE ary); - -/** - * Destructively appends multiple elements at the end of the array. - * - * @param[out] ary Where to push `train`. - * @param[in] train Arbitrary ruby objects to push to `ary`. - * @param[in] len Number of objects of `train`. - * @exception rb_eIndexError `len` too large. - * @exception rb_eFrozenError `ary` is frozen. - * @return The passed `ary`. - * @post `ary` has contents from `train` appended at its end. - */ -VALUE rb_ary_cat(VALUE ary, const VALUE *train, long len); - -/** - * Special case of rb_ary_cat() that it adds only one element. - * - * @param[out] ary Where to push `elem`. - * @param[in] elem Arbitrary ruby object to push. - * @exception rb_eFrozenError `ary` is frozen. - * @return The passed `ary`. - * @post `ary` has `elem` appended at its end. - */ -VALUE rb_ary_push(VALUE ary, VALUE elem); - -/** - * Destructively deletes an element from the end of the passed array and - * returns what was deleted. - * - * @param[out] ary Target array to modify. - * @exception rb_eFrozenError `ary` is frozen. - * @return What was at the end of `ary`, or ::RUBY_Qnil if there is - * nothing to remove. - * @post `ary`'s last element, if any, is removed. - * @note There is no way to distinguish whether `ary` was an 1-element - * array whose content was ::RUBY_Qnil, or was empty. - */ -VALUE rb_ary_pop(VALUE ary); - -/** - * Destructively deletes an element from the beginning of the passed array and - * returns what was deleted. It can also be seen as a routine identical to - * rb_ary_pop(), except which side of the array to scrub. - * - * @param[out] ary Target array to modify. - * @exception rb_eFrozenError `ary` is frozen. - * @return What was at the beginning of `ary`, or ::RUBY_Qnil if there is - * nothing to remove. - * @post `ary`'s first element, if any, is removed. As the name implies - * everything else remaining in `ary` gets moved towards `ary`'s - * beginning. - * @note There is no way to distinguish whether `ary` was an 1-element - * array whose content was ::RUBY_Qnil, or was empty. - */ -VALUE rb_ary_shift(VALUE ary); - -/** - * Destructively prepends the passed item at the beginning of the passed array. - * It can also be seen as a routine identical to rb_ary_push(), except which - * side of the array to modify. - * - * @param[out] ary Target array to modify. - * @param[in] elem Arbitrary ruby object to unshift. - * @exception rb_eFrozenError `ary` is frozen. - * @return The passed `ary`. - * @post `ary` has `elem` prepended at this beginning. - */ -VALUE rb_ary_unshift(VALUE ary, VALUE elem); - -RBIMPL_ATTR_PURE() -/** - * Queries an element of an array. When passed offset is negative it counts - * backwards. - * - * @param[in] ary An array to look into. - * @param[in] off Offset (can be negative). - * @return ::RUBY_Qnil when `off` is out of bounds of `ary`. Otherwise - * what is stored at `off`-th position of `ary`. - * @note `ary`'s `off`-th element can happen to be ::RUBY_Qnil. - */ -VALUE rb_ary_entry(VALUE ary, long off); - -/** - * Iteratively yields each element of the passed array to the implicitly passed - * block if any. In case there is no block given, an enumerator that does the - * thing is generated instead. - * - * @param[in] ary Array to iterate over. - * @retval ary Passed block was evaluated. - * @retval otherwise An instance of ::rb_cEnumerator for `Array#each`. - */ -VALUE rb_ary_each(VALUE ary); - -/** - * Recursively stringises the elements of the passed array, flattens that - * result, then joins the sequence using the passed separator. - * - * @param[in] ary Target array to convert. - * @param[in] sep Separator. Either a string, or ::RUBY_Qnil - * if you want no separator. - * @exception rb_eArgError Infinite recursion in `ary`. - * @exception rb_eTypeError `sep` is not a string. - * @exception rb_eEncCompatError Strings do not agree with their encodings. - * @return An instance of ::rb_cString which concatenates stringised - * contents of `ary`, using `sep` as separator. - */ -VALUE rb_ary_join(VALUE ary, VALUE sep); - -/** - * _Destructively_ reverses the passed array in-place. - * - * @warning This is `Array#reverse!`, not `Array#reverse`. - * @param[out] ary Target array to modify. - * @exception rb_eFrozenError `ary` is frozen. - * @return Passed `ary`. - * @post `ary` is reversed. - */ -VALUE rb_ary_reverse(VALUE ary); - -/** - * _Destructively_ rotates the passed array in-place to towards its end. The - * amount can be negative. Would rotate to the opposite direction then. - * - * @warning This is `Array#rotate!`, not `Array#rotate`. - * @param[out] ary Target array to modify. - * @param[in] rot Amount of rotation. - * @exception rb_eFrozenError `ary` is frozen. - * @retval RUBY_Qnil Not rotated. - * @retval ary Rotated. - * @post `ary` is rotated. - */ -VALUE rb_ary_rotate(VALUE ary, long rot); - -/** - * Creates a copy of the passed array, whose elements are sorted according to - * their `<=>` result. - * - * @param[in] ary Array to sort. - * @exception rb_eArgError Comparison not defined among elements. - * @exception rb_eRuntimeError Infinite recursion in `<=>`. - * @return A copy of `ary`, sorted. - * @note As of writing this function uses `qsort` as backend algorithm, - * which means the result is unstable (in terms of sort stability). - */ -VALUE rb_ary_sort(VALUE ary); - -/** - * Destructively sorts the passed array in-place, according to each elements' - * `<=>` result. - * - * @param[in] ary Target array to modify. - * @exception rb_eArgError Comparison not defined among elements. - * @exception rb_eRuntimeError Infinite recursion in `<=>`. - * @return Passed `ary`. - * @post `ary` is sorted. - * @note As of writing this function uses `qsort` as backend algorithm, - * which means the result is unstable (in terms of sort stability). - */ -VALUE rb_ary_sort_bang(VALUE ary); - -/** - * Destructively removes elements from the passed array, so that there would be - * no elements inside that satisfy `==` relationship with the passed object. - * Returns the last deleted element if any. But in case there was nothing to - * delete it gets complicated. It checks for the implicitly passed block. If - * there is a block the return value would be what the block evaluates to. - * Otherwise it resorts to ::RUBY_Qnil. - * - * @param[out] ary Target array to modify. - * @param[in] elem Template object to match against each element. - * @exception rb_eFrozenError `ary` is frozen. - * @return What was deleted, or what was the block returned, or - * ::RUBY_Qnil (see above). - * @post All elements that have `==` relationship with `elem` are purged - * from `ary`. Elements shift their positions so that `ary` gets - * compact. - * - * @internal - * - * Internally there also is `rb_ary_delete_same`, which compares by identity. - */ -VALUE rb_ary_delete(VALUE ary, VALUE elem); - -/** - * Destructively removes an element which resides at the specific index of the - * passed array. Unlike rb_ary_stre() the index can be negative, which means - * the index counts backwards from the array's tail. - * - * @param[out] ary Target array to modify. - * @param[in] pos Position (can be negative). - * @exception rb_eFrozenError `ary` is frozen. - * @return What was deleted, or ::RUBY_Qnil in case of OOB. - * @post `ary`'s `pos`-th element is deleted if any. - * @note There is no way to distinguish whether `pos` is out of bound, - * or `pos` did exist but stored ::RUBY_Qnil as an ordinal value. - */ -VALUE rb_ary_delete_at(VALUE ary, long pos); - -/** - * Destructively removes everything form an array. - * - * @param[out] ary Target array to modify. - * @exception rb_eFrozenError `ary` is frozen. - * @return The passed `ary`. - * @post `ary` is an empty array. - */ -VALUE rb_ary_clear(VALUE ary); - -/** - * Creates a new array, concatenating the former to the latter. - * - * @param[in] lhs Source array #1. - * @param[in] rhs Source array #2. - * @exception rb_eIndexError Result array too big. - * @return A new array containing `rhs` concatenated to `lhs`. - * @note This operation doesn't commute. Don't get confused by the - * "plus" terminology. For historical reasons there are some - * noncommutative `+`s in Ruby. This is one of such things. There - * has been a long discussion around `+`s in programming languages. - * - * @internal - * - * rb_ary_concat() is not a destructive version of rb_ary_plus(). They raise - * different exceptions. Don't know why though. - */ -VALUE rb_ary_plus(VALUE lhs, VALUE rhs); - -/** - * Destructively appends the contents of latter into the end of former. - * - * @param[out] lhs Destination array. - * @param[in] rhs Source array. - * @exception rb_eFrozenError `lhs` is frozen. - * @exception rb_eIndexError Result array too big. - * @exception rb_eTypeError `rhs` doesn't respond to `#to_ary`. - * @return The passed `lhs`. - * @post `lhs` has contents of `rhs` appended to its end. - */ -VALUE rb_ary_concat(VALUE lhs, VALUE rhs); - -/** - * Looks up the passed key, assuming the passed array is an alist. An "alist" - * here is a list of "association"s, much like that of Emacs. Emacs has - * `assoc` function that behaves exactly the same as this one. - * - * ```ruby - * # This is an example of aliist. - * auto_mode_alist = [ - * [ /\.[ch]\z/, :"c-mode" ], - * [ /\.[ch]pp\z/, :"c++-mode" ], - * [ /\.awk\z/, :"awk-mode" ], - * [ /\.cs\z/, :"csharp-mode" ], - * [ /\.go\z/, :"go-mode" ], - * [ /\.java\z/, :"java-mode" ], - * [ /\.pas\z/, :"pascal-mode" ], - * [ /\.rs\z/, :"rust-mode" ], - * [ /\.txt\z/, :"text-mode" ], - * ] - * ``` - * - * This function scans the passed array looking for an element, which itself is - * an array, whose first element is the passed key. If no such element is - * found, returns ::RUBY_Qnil. - * - * Although this function expects the passed array be an array of arrays, it - * can happily accept non-array elements; it just ignores such things. - * - * @param[in] alist An array of arrays. - * @param[in] key Needle. - * @retval RUBY_Qnil Nothing was found. - * @retval otherwise An element in `alist` whose first element is in `==` - * relationship with `key`. - */ -VALUE rb_ary_assoc(VALUE alist, VALUE key); - -/** - * Identical to rb_ary_assoc(), except it scans the passed array from the - * opposite direction. - * - * @param[in] alist An array of arrays. - * @param[in] key Needle. - * @retval RUBY_Qnil Nothing was found. - * @retval otherwise An element in `alist` whose first element is in `==` - * relationship with `key`. - */ -VALUE rb_ary_rassoc(VALUE alist, VALUE key); - -/** - * Queries if the passed array has the passed entry. - * - * @param[in] ary Target array to scan. - * @param[in] elem Target array to find. - * @retval RUBY_Qfalse No element in `ary` is in `==` relationship with - * `elem`. - * @retval RUBY_Qtrue There is at least one element in `ary` which is in - * `==` relationship with `elem`. - * - * @internal - * - * This is the only function in the entire C API that is named using third - * person singular form of a verb (except #ISASCII etc., which are not our - * naming). The counterpart Ruby API of this function is `Array#include?`. - */ -VALUE rb_ary_includes(VALUE ary, VALUE elem); - -/** - * Recursively compares each elements of the two arrays one-by-one using `<=>`. - * - * @param[in] lhs Comparison LHS. - * @param[in] rhs Comparison RHS. - * @retval RUBY_Qnil `lhs` and `rhs` are not comparable. - * @retval -1 `lhs` is less than `rhs`. - * @retval 0 They are equal. - * @retval 1 `rhs` is less then `lhs`. - */ -VALUE rb_ary_cmp(VALUE lhs, VALUE rhs); - -/** - * Replaces the contents of the former object with the contents of the latter. - * - * @param[out] copy Destination object. - * @param[in] orig Source object. - * @exception rb_eTypeError `orig` has no implicit conversion to Array. - * @exception rb_eFrozenError `copy` is frozen. - * @return The passed `copy`. - * @post `copy`'s former components are abandoned. It now has the - * identical length and contents to `orig`. - */ -VALUE rb_ary_replace(VALUE copy, VALUE orig); - -/** - * This _was_ a generalisation of `Array#values_at`, `Struct#values_at`, and - * `MatchData#values_at`. It begun its life as a refactoring effort. However - * as Ruby evolves over time, as of writing none of aforementioned methods - * share their implementations at all. This function is not deprecated; still - * works as it has been. But it is now kind of like a rudimentum. - * - * This function takes an object, which is a receiver, and a series of - * "indices", which are either integers, or ranges of integers. Calls the - * passed callback for each of those indices, along with the receiver. This - * callback is expected to do something like rb_ary_aref(), rb_struct_aref(), - * etc. In case of a range index rb_range_beg_len() expands the range. - * Finally return values of the callback are gathered as an array, then - * returned. - * - * @param[in] obj Arbitrary ruby object. - * @param[in] olen "Length" of `obj`. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv List of "indices", described above. - * @param[in] func Callback function. - * @return A new instance of ::rb_cArray gathering `func`outputs. - * - * @internal - * - * `Array#values_at` no longer uses this function. There is no reason apart - * from historical ones to list this function here. - */ -VALUE rb_get_values_at(VALUE obj, long olen, int argc, const VALUE *argv, VALUE (*func)(VALUE obj, long oidx)); - -/** - * Expands or shrinks the passed array to the passed length. - * - * @param[out] ary An array to modify. - * @param[in] len Desired length of `ary`. - * @exception rb_eFrozenError `ary` is frozen. - * @exception rb_eIndexError `len` too long. - * @return The passed `ary`. - * @post `ary`'s length is `len`. - * @post Depending on `len` and previous length of `ary` this operation - * can also create a series of "hole" positions inside of the - * backend storage. They are filled with ::RUBY_Qnil. - * - * @internal - * - * `len` is signed. Intentional or...? - */ -VALUE rb_ary_resize(VALUE ary, long len); - -#define rb_ary_new2 rb_ary_new_capa /**< @old{rb_ary_new_capa} */ -#define rb_ary_new3 rb_ary_new_from_args /**< @old{rb_ary_new_from_args} */ -#define rb_ary_new4 rb_ary_new_from_values /**< @old{rb_ary_new_from_values} */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_ARRAY_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/bignum.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/bignum.h deleted file mode 100644 index 43d6801..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/bignum.h +++ /dev/null @@ -1,846 +0,0 @@ -#ifndef RBIMPL_INTERN_BIGNUM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_BIGNUM_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to so-called rb_cBignum. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/backward/2/long_long.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* bignum.c */ - -/** - * Allocates a bignum object. - * - * @param[in] len Length of the bignum's backend storage, in words. - * @param[in] sign Sign of the bignum. - * @return An allocated new bignum instance. - * @note This only allocates an object, doesn't fill its value in. - * - * @internal - * - * @shyouhei finds it hard to use from extension libraries. `len` is per - * `BDIGIT` but its definition is hidden. - */ -VALUE rb_big_new(size_t len, int sign); - -/** - * Queries if the passed bignum instance is a "bigzro". What is a bigzero? - * Well, bignums are for very big integers, but can also represent tiny ones - * like -1, 0, 1. Bigzero are instances of bignums whose values are zero. - * Knowing if a bignum is bigzero can be handy on occasions, like for instance - * detecting division by zero situation. - * - * @param[in] x A bignum. - * @retval 1 It is a bigzero. - * @retval 0 Otherwise. - */ -int rb_bigzero_p(VALUE x); - -/** - * Duplicates the given bignum. - * - * @param[in] num A bignum. - * @return An allocated bignum, who is equivalent to `num`. - */ -VALUE rb_big_clone(VALUE num); - -/** - * Destructively modify the passed bignum into 2's complement representation. - * - * @note By default bignums are in signed magnitude system. - * - * @param[out] num A bignum to modify. - */ -void rb_big_2comp(VALUE num); - -/** - * Normalises the passed bignum. It for instance returns a fixnum of the same - * value if fixnum can represent that number. - * - * @param[out] x Target bignum (can be destructively modified). - * @return An integer of the identical value (can be `x` itself). - */ -VALUE rb_big_norm(VALUE x); - -/** - * Destructively resizes the backend storage of the passed bignum. - * - * @param[out] big A bignum. - * @param[in] len New length of `big`'s backend, in words. - */ -void rb_big_resize(VALUE big, size_t len); - -RBIMPL_ATTR_NONNULL(()) -/** - * Parses C's string to convert into a Ruby's integer. It understands prefixes - * (e.g. `0x`) and underscores. - * - * @param[in] str Stringised representation of the return value. - * @param[in] base Base of conversion. Must be `-36..36` inclusive, - * except `1`. `2..36` means the conversion is done - * according to it, with unmatched prefix understood - * as a part of the result. `-36..-2` means the - * conversion honours prefix when present, or use - * `-base` when absent. `0` is equivalent to `-10`. - * `-1` mandates a prefix. `1` is an error. - * @param[in] badcheck Whether to raise ::rb_eArgError on failure. If - * `0` is passed here this function can return - * `INT2FIX(0)` for parse errors. - * @exception rb_eArgError Failed to parse (and `badcheck` is truthy). - * @return An instance of ::rb_cInteger, which is a numeric interpretation - * of what is written in `str`. - * - * @internal - * - * Not sure if it intentionally accepts `base == -1` or is just buggy. Nobody - * practically uses negative bases these days. - */ -VALUE rb_cstr_to_inum(const char *str, int base, int badcheck); - -/** - * Identical to rb_cstr2inum(), except it takes Ruby's strings instead of C's. - * - * @param[in] str Stringised representation of the return - * value. - * @param[in] base Base of conversion. Must be `-36..36` - * inclusive, except `1`. `2..36` means the - * conversion is done according to it, with - * unmatched prefix understood as a part of the - * result. `-36..-2` means the conversion - * honours prefix when present, or use `-base` - * when absent. `0` is equivalent to `-10`. - * `-1` mandates a prefix. `1` is an error. - * @param[in] badcheck Whether to raise ::rb_eArgError on failure. - * If `0` is passed here this function can - * return `INT2FIX(0)` for parse errors. - * @exception rb_eArgError Failed to parse (and `badcheck` is truthy). - * @exception rb_eTypeError `str` is not a string. - * @exception rb_eEncCompatError `str` is not ASCII compatible. - * @return An instance of ::rb_cInteger, which is a numeric interpretation - * of what is written in `str`. - */ -VALUE rb_str_to_inum(VALUE str, int base, int badcheck); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_cstr_to_inum(), except the second argument controls the base - * and badcheck at once. It basically doesn't raise for parse errors, unless - * the base is zero. - * - * This is an older API. New codes might prefer rb_cstr_to_inum(). - * - * @param[in] str Stringised representation of the return value. - * @param[in] base Base of conversion. Must be `-36..36` inclusive, - * except `1`. `2..36` means the conversion is done - * according to it, with unmatched prefix understood - * as a part of the result. `-36..-2` means the - * conversion honours prefix when present, or use - * `-base` when absent. `0` is equivalent to `-10`. - * `-1` mandates a prefix. `1` is an error. - * @exception rb_eArgError Failed to parse (and `base` is zero). - * @return An instance of ::rb_cInteger, which is a numeric interpretation - * of what is written in `str`. - */ -VALUE rb_cstr2inum(const char *str, int base); - -/** - * Identical to rb_str_to_inum(), except the second argument controls the base - * and badcheck at once. It can also be seen as a routine identical to - * rb_cstr2inum(), except it takes Ruby's strings instead of C's. - * - * This is an older API. New codes might prefer rb_cstr_to_inum(). - * - * @param[in] str Stringised representation of the return - * value. - * @param[in] base Base of conversion. Must be `-36..36` - * inclusive, except `1`. `2..36` means the - * conversion is done according to it, with - * unmatched prefix understood as a part of the - * result. `-36..-2` means the conversion - * honours prefix when present, or use `-base` - * when absent. `0` is equivalent to `-10`. - * `-1` mandates a prefix. `1` is an error. - * @exception rb_eArgError Failed to parse (and `base` is zero). - * @exception rb_eTypeError `str` is not a string. - * @exception rb_eEncCompatError `str` is not ASCII compatible. - * @return An instance of ::rb_cInteger, which is a numeric interpretation - * of what is written in `str`. - */ -VALUE rb_str2inum(VALUE str, int base); - -/** - * Generates a place-value representation of the passed integer. - * - * @param[in] x An integer to stringify. - * @param[in] base `2` to `36` inclusive for each radix. - * @exception rb_eArgError `base` is out of range. - * @exception rb_eRangeError `x` is too big, cannot represent in string. - * @return An instance of ::rb_cString which represents `x`. - */ -VALUE rb_big2str(VALUE x, int base); - -/** - * Converts a bignum into C's `long`. - * - * @param[in] x A bignum. - * @exception rb_eRangeError `x` is out of range of `long`. - * @return The passed value converted into C's `long`. - */ -long rb_big2long(VALUE x); - -/** @alias{rb_big2long} */ -#define rb_big2int(x) rb_big2long(x) - -/** - * Converts a bignum into C's `unsigned long`. - * - * @param[in] x A bignum. - * @exception rb_eRangeError `x` is out of range of `unsigned long`. - * @return The passed value converted into C's `unsigned long`. - * - * @internal - * - * This function can generate a very large positive integer for a negative - * input. For instance applying Ruby's -4,611,686,018,427,387,905 to this - * function yields C's 13,835,058,055,282,163,711 on my machine. This is how - * it has been. Cannot change any longer. - */ -unsigned long rb_big2ulong(VALUE x); - -/** @alias{rb_big2long} */ -#define rb_big2uint(x) rb_big2ulong(x) - -#if HAVE_LONG_LONG -/** - * Converts a bignum into C's `long long`. - * - * @param[in] x A bignum. - * @exception rb_eRangeError `x` is out of range of `long long`. - * @return The passed value converted into C's `long long`. - */ -LONG_LONG rb_big2ll(VALUE); - -/** - * Converts a bignum into C's `unsigned long long`. - * - * @param[in] x A bignum. - * @exception rb_eRangeError `x` is out of range of `unsigned long long`. - * @return The passed value converted into C's `unsigned long long`. - * - * @internal - * - * This function can generate a very large positive integer for a negative - * input. For instance applying Ruby's -4,611,686,018,427,387,905 to this - * function yields C's 13,835,058,055,282,163,711 on my machine. This is how - * it has been. Cannot change any longer. - */ -unsigned LONG_LONG rb_big2ull(VALUE); - -#endif /* HAVE_LONG_LONG */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Converts a bignum into a series of its parts. - * - * @param[in] val An integer. - * @param[out] buf Return buffer. - * @param[in] num_longs Number of words of `buf`. - * @exception rb_eTypeError `val` doesn't respond to `#to_int`. - * @post `buf` is filled with `val`'s 2's complement representation, in - * the host CPU's native byte order, from least significant word - * towards the most significant one, for `num_longs` words. - * @note The "pack" terminology comes from `Array#pack`. - */ -void rb_big_pack(VALUE val, unsigned long *buf, long num_longs); - -RBIMPL_ATTR_NONNULL(()) -/** - * Constructs a (possibly very big) bignum from a series of integers. `buf[0]` - * would be the return value's least significant word; `buf[num_longs-1]` would - * be that of most significant. - * - * @param[in] buf A series of integers. - * @param[in] num_longs Number of words of `buf`. - * @exception rb_eArgError Result would be too big. - * @return An instance of ::rb_cInteger which is an "unpack"-ed value of - * the parameters. - * @note The "unpack" terminology comes from `String#pack`. - */ -VALUE rb_big_unpack(unsigned long *buf, long num_longs); - -/* pack.c */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Encodes a Unicode codepoint into its UTF-8 representation. - * - * @param[out] buf Return buffer, must at least be 6 bytes width. - * @param[in] uv An Unicode codepoint. - * @exception rb_eRangeError `uv` is out of Unicode. - * @return Number of bytes written to `buf` - * @post `buf` holds a UTF-8 representation of `uv`. - */ -int rb_uv_to_utf8(char buf[6], unsigned long uv); - -/* bignum.c */ - -/** - * Converts a C's `double` into a bignum. - * - * @param[in] d A value to convert. - * @exception rb_eFloatDomainError `d` is Inf/NaN. - * @return An instance of ::rb_cInteger whose value is approximately `d`. - * - * @internal - * - * @shyouhei is not sure if the result is guaranteed to be the nearest integer - * of `d`. - */ -VALUE rb_dbl2big(double d); - -/** - * Converts a bignum into C's `double`. - * - * @param[in] x A bignum. - * @return The passed value converted into C's `double`. - * - * @internal - * - * @shyouhei is not sure if the result is guaranteed to be `x`'s nearest value - * that a `double` can represent. - */ -double rb_big2dbl(VALUE x); - -/** - * Compares the passed two bignums. - * - * @param[in] lhs Comparison LHS. - * @param[in] rhs Comparison RHS. - * @retval -1 `rhs` is bigger than `lhs`. - * @retval 0 They are identical. - * @retval 1 `lhs` is bigger than `rhs`. - * @see rb_num_coerce_cmp() - */ -VALUE rb_big_cmp(VALUE lhs, VALUE rhs); - -/** - * Equality, in terms of `==`. This checks if the _value_ is the same, not the - * identity. For instance `1 == 1.0` must hold. - * - * @param[in] lhs Comparison LHS. - * @param[in] rhs Comparison RHS. - * @retval RUBY_Qtrue They are the same. - * @retval RUBY_Qfalse They are different. - */ -VALUE rb_big_eq(VALUE lhs, VALUE rhs); - -/** - * Equality, in terms of `eql?`. Unlike rb_big_eq() it does not convert - * ::rb_cFloat etc. This function returns ::RUBY_Qtrue if and only if both - * parameters are bignums, which represent the identical numerical value. - * - * @param[in] lhs Comparison LHS. - * @param[in] rhs Comparison RHS. - * @retval RUBY_Qtrue They are identical. - * @retval RUBY_Qfalse They are distinct. - */ -VALUE rb_big_eql(VALUE lhs, VALUE rhs); - -/** - * Performs addition of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x + y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_big_plus(VALUE x, VALUE y); - -/** - * Performs subtraction of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x - y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_big_minus(VALUE x, VALUE y); - -/** - * Performs multiplication of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x * y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_big_mul(VALUE x, VALUE y); - -/** - * Performs division of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x / y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_big_div(VALUE x, VALUE y); - -/** - * Performs "integer division". This is different from rb_big_div(). - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x.div y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_big_idiv(VALUE x, VALUE y); - -/** - * Performs modulo of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x % y` evaluates to. - * @see rb_num_coerce_bin() - * - * @internal - * - * There also is `rb_big_remainder()` internally, which is different from this - * one. - */ -VALUE rb_big_modulo(VALUE x, VALUE y); - -/** - * Performs "divmod" operation. The operation in bignum's context is that it - * calculates rb_big_idiv() and rb_big_modulo() at once. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x.divmod y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_big_divmod(VALUE x, VALUE y); - -/** - * Raises `x` to the powerof `y`. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x ** y` evaluates to. - * @see rb_num_coerce_bin() - * @note This can return an instance of ::rb_cFloat, even when both `x` - * and `y` are bignums. Or an instance of ::rb_cRational, when for - * instance `y` is negative. - */ -VALUE rb_big_pow(VALUE x, VALUE y); - -/** - * Performs bitwise and of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x & y` evaluates to. - * @see rb_num_coerce_bit() - */ -VALUE rb_big_and(VALUE x, VALUE y); - -/** - * Performs bitwise or of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x | y` evaluates to. - * @see rb_num_coerce_bit() - */ -VALUE rb_big_or(VALUE x, VALUE y); - -/** - * Performs exclusive or of the passed two objects. - * - * @param[in] x A bignum. - * @param[in] y Arbitrary ruby object. - * @return What `x ^ y` evaluates to. - * @see rb_num_coerce_bit() - */ -VALUE rb_big_xor(VALUE x, VALUE y); - -/** - * Performs shift left. - * - * @param[in] x A bignum. - * @param[in] y Shift amount. - * @exception rb_eTypeError `y` is not an integer. - * @exception rb_eArgError `y` is too big. - * @return `x` shifted left to `y` bits. - * @note `y` can be negative. Shifts right then. - */ -VALUE rb_big_lshift(VALUE x, VALUE y); - -/** - * Performs shift right. - * - * @param[in] x A bignum. - * @param[in] y Shift amount. - * @exception rb_eTypeError `y` is not an integer. - * @return `x` shifted right to `y` bits. - * @note This is arithmetic. Because bignums are not bitfields there is - * no shift right logical operator. - */ -VALUE rb_big_rshift(VALUE x, VALUE y); - -/** - * @name Flags for rb_integer_pack()/rb_integer_unpack() - * @{ - */ - -/** Stores/interprets the most significant word as the first word. */ -#define INTEGER_PACK_MSWORD_FIRST 0x01 - -/** Stores/interprets the least significant word as the first word. */ -#define INTEGER_PACK_LSWORD_FIRST 0x02 - -/** - * Stores/interprets the most significant byte in a word as the first byte in - * the word. - */ -#define INTEGER_PACK_MSBYTE_FIRST 0x10 - -/** - * Stores/interprets the least significant byte in a word as the first byte in - * the word. - */ -#define INTEGER_PACK_LSBYTE_FIRST 0x20 - -/** - * Means either #INTEGER_PACK_MSBYTE_FIRST or #INTEGER_PACK_LSBYTE_FIRST, - * depending on the host processor's endian. - */ -#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40 - -/** Uses 2's complement representation. */ -#define INTEGER_PACK_2COMP 0x80 - -/** Uses "generic" implementation (handy on test). */ -#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400 - -/** - * Always generates a bignum object even if the integer can be representable - * using fixnum scheme (unpack only) - */ -#define INTEGER_PACK_FORCE_BIGNUM 0x100 - -/** - * Interprets the input as a signed negative number (unpack only). If not - * specified returns a positive number. - */ -#define INTEGER_PACK_NEGATIVE 0x200 - -/** Little endian combination. */ -#define INTEGER_PACK_LITTLE_ENDIAN \ - (INTEGER_PACK_LSWORD_FIRST | \ - INTEGER_PACK_LSBYTE_FIRST) - -/** Big endian combination */ -#define INTEGER_PACK_BIG_ENDIAN \ - (INTEGER_PACK_MSWORD_FIRST | \ - INTEGER_PACK_MSBYTE_FIRST) - -/** @} */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Exports an integer into a buffer. This function fills the buffer specified - * by `words` and `numwords` as `val` in the format specified by `wordsize`, - * `nails` and `flags`. - * - * @param[in] val Integer or integer-like object which has - * `#to_int` method. - * @param[out] words Return buffer. - * @param[in] numwords Number of words of `words`. - * @param[in] wordsize Number of bytes per word. - * @param[in] nails Number of padding bits in a word. Most - * significant nails bits of each word are filled - * by zero. - * @param[in] flags Bitwise or of constants whose name starts - * "INTEGER_PACK_". - * @exception rb_eTypeError `val` doesn't respond to `#to_int`. - * - * Possible flags are: - * - * - #INTEGER_PACK_MSWORD_FIRST: - * Stores the most significant word as the first word. - * - * - #INTEGER_PACK_LSWORD_FIRST: - * Stores the least significant word as the first word. - * - * - #INTEGER_PACK_MSBYTE_FIRST: - * Stores the most significant byte in a word as the first byte in the - * word. - * - * - #INTEGER_PACK_LSBYTE_FIRST: - * Stores the least significant byte in a word as the first byte in the - * word. - * - * - #INTEGER_PACK_NATIVE_BYTE_ORDER: - * Either #INTEGER_PACK_MSBYTE_FIRST or #INTEGER_PACK_LSBYTE_FIRST - * corresponding to the host's endian. - * - * - #INTEGER_PACK_2COMP: - * Uses 2's complement representation. - * - * - #INTEGER_PACK_LITTLE_ENDIAN: Shorthand of - * `INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_LSBYTE_FIRST`. - * - * - #INTEGER_PACK_BIG_ENDIAN: Shorthand of - * `INTEGER_PACK_MSWORD_FIRST|INTEGER_PACK_MSBYTE_FIRST`. - * - * - #INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION: - * Uses generic implementation (for test and debug). - * - * This function fills the buffer specified by `words` as `val`'s 2's - * complement representation if #INTEGER_PACK_2COMP is specified in `flags`. - * Otherwise it fills `words` as `abs(val)` and signedness is returned via the - * return value. - * - * @return The signedness and overflow condition. The overflow condition - * depends on #INTEGER_PACK_2COMP. - * - * When #INTEGER_PACK_2COMP is not specified: - * - * - `-2` : - * Negative overflow. `val <= -2**(numwords*(wordsize*CHAR_BIT-nails))` - * - * - `-1` : - * Negative without overflow. - * `-2**(numwords*(wordsize*CHAR_BIT-nails)) < val < 0` - * - * - `0` : zero. `val == 0` - * - * - `1` : - * Positive without overflow. - * `0 < val < 2**(numwords*(wordsize*CHAR_BIT-nails))` - * - * - `2` : - * Positive overflow. `2**(numwords*(wordsize*CHAR_BIT-nails)) <= val` - * - * When #INTEGER_PACK_2COMP is specified: - * - * - `-2` : - * Negative overflow. `val < -2**(numwords*(wordsize*CHAR_BIT-nails))` - * - * - `-1` : - * Negative without overflow. - * `-2**(numwords*(wordsize*CHAR_BIT-nails)) <= val < 0` - * - * - `0` : zero. `val == 0` - * - * - `1` : - * Positive without overflow. - * `0 < val < 2**(numwords*(wordsize*CHAR_BIT-nails))` - * - * - `2` : - * Positive overflow. `2**(numwords*(wordsize*CHAR_BIT-nails)) <= val` - * - * The value, `-2**(numwords*(wordsize*CHAR_BIT-nails))`, is representable in - * 2's complement representation but not representable in absolute value. So - * `-1` is returned for the value if #INTEGER_PACK_2COMP is specified but - * returns `-2` if #INTEGER_PACK_2COMP is not specified. - * - * The least significant words are filled in the buffer when overflow occur. - */ -int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags); - -RBIMPL_ATTR_NONNULL(()) -/** - * Import an integer from a buffer. - * - * @param[in] words Buffer to import. - * @param[in] numwords Number of words of `words`. - * @param[in] wordsize Number of bytes per word. - * @param[in] nails Number of padding bits in a word. Most - * significant nails bits of each word are ignored. - * @param[in] flags Bitwise or of constants whose name starts - * "INTEGER_PACK_". - * @exception rb_eArgError `numwords * wordsize` too big. - * - * Possible flags are: - * - * - #INTEGER_PACK_MSWORD_FIRST: - * Interpret the first word as the most significant word. - * - * - #INTEGER_PACK_LSWORD_FIRST: - * Interpret the first word as the least significant word. - * - * - #INTEGER_PACK_MSBYTE_FIRST: - * Interpret the first byte in a word as the most significant byte in the - * word. - * - * - #INTEGER_PACK_LSBYTE_FIRST: - * Interpret the first byte in a word as the least significant byte in - * the word. - * - * - #INTEGER_PACK_NATIVE_BYTE_ORDER: - * Either #INTEGER_PACK_MSBYTE_FIRST or #INTEGER_PACK_LSBYTE_FIRST - * corresponding to the host's endian. - * - * - #INTEGER_PACK_2COMP: - * Uses 2's complement representation. - * - * - #INTEGER_PACK_LITTLE_ENDIAN: Shorthand of - * `INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_LSBYTE_FIRST` - * - * - #INTEGER_PACK_BIG_ENDIAN: Shorthand of - * `INTEGER_PACK_MSWORD_FIRST|INTEGER_PACK_MSBYTE_FIRST` - * - * - #INTEGER_PACK_FORCE_BIGNUM: - * Returns a bignum even if its value is representable as a fixnum. - * - * - #INTEGER_PACK_NEGATIVE: - * Returns a non-positive value. (Returns a non-negative value if not - * specified.) - * - * - #INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION: - * Uses generic implementation (for test and debug). - * - * @return An instance of ::rb_cInteger whose value is the interpreted - * `words`. The range of the result value depends on - * #INTEGER_PACK_2COMP and #INTEGER_PACK_NEGATIVE. - * - * When #INTEGER_PACK_2COMP is not set: - * - * - `0 <= val < 2**(numwords*(wordsize*CHAR_BIT-nails))` if - * `!INTEGER_PACK_NEGATIVE` - * - * - `-2**(numwords*(wordsize*CHAR_BIT-nails)) < val <= 0` if - * `INTEGER_PACK_NEGATIVE` - * - * When #INTEGER_PACK_2COMP is set: - * - * - `-2**(numwords*(wordsize*CHAR_BIT-nails)-1)` `<= val <=` - * `2**(numwords*(wordsize*CHAR_BIT-nails)-1)-1` if - * `!INTEGER_PACK_NEGATIVE` - * - * - `-2**(numwords*(wordsize*CHAR_BIT-nails)) <= val <= -1` if - * `INTEGER_PACK_NEGATIVE` - * - * Passing #INTEGER_PACK_2COMP without #INTEGER_PACK_NEGATIVE means sign - * extension. #INTEGER_PACK_2COMP with #INTEGER_PACK_NEGATIVE means assuming - * the higher bits are `1`. - * - * Note that this function returns 0 when `numwords` is zero and - * #INTEGER_PACK_2COMP is set but #INTEGER_PACK_NEGATIVE is not set. - */ -VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags); - -/** - * Calculates the number of bytes needed to represent the absolute value of the - * passed integer. - * - * @param[in] val Integer or integer-like object which has - * `#to_int` method. - * @param[out] nlz_bits_ret Number of leading zero bits in the most - * significant byte is returned if not `NULL`. - * @exception rb_eTypeError `val` doesn't respond to `#to_int`. - * @return `((val_numbits * CHAR_BIT + CHAR_BIT - 1) / CHAR_BIT)`, where - * val_numbits is the number of bits of `abs(val)`. - * @post If `nlz_bits_ret` is not `NULL`, - * `(return_value * CHAR_BIT - val_numbits)` is stored in - * `*nlz_bits_ret`. In this case, - * `0 <= *nlz_bits_ret < CHAR_BIT`. - * - * This function should not overflow. - */ -size_t rb_absint_size(VALUE val, int *nlz_bits_ret); - -/** - * Calculates the number of words needed represent the absolute value of the - * passed integer. Unlike rb_absint_size() this function can overflow. It - * returns `(size_t)-1` then. - * - * @param[in] val Integer or integer-like object which has - * `#to_int` method. - * @param[in] word_numbits Number of bits per word. - * @param[out] nlz_bits_ret Number of leading zero bits in the most - * significant word is returned if not `NULL`. - * @exception rb_eTypeError `val` doesn't respond to `#to_int`. - * @retval (size_t)-1 Overflowed. - * @retval otherwise - `((val_numbits * CHAR_BIT + word_numbits - 1) / word_numbits)`, - * where val_numbits is the number of bits of `abs(val)`. - * @post If `nlz_bits_ret` is not `NULL` and there is no overflow, - * `(return_value * word_numbits - val_numbits)` is stored in - * `*nlz_bits_ret`. In this case, - * `0 <= *nlz_bits_ret < word_numbits.` - * - */ -size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret); - -/** - * Tests `abs(val)` consists only of a bit or not. - * - * @param[in] val Integer or integer-like object which has - * `#to_int` method. - * @exception rb_eTypeError `val` doesn't respond to `#to_int`. - * @retval 1 `abs(val) == 1 << n` for some `n >= 0`. - * @retval 0 Otherwise. - * - * rb_absint_singlebit_p() can be used to determine required buffer size for - * rb_integer_pack() used with #INTEGER_PACK_2COMP (two's complement). - * - * Following example calculates number of bits required to represent val in - * two's complement number, without sign bit. - * - * ```CXX - * size_t size; - * int neg = FIXNUM_P(val) ? FIX2LONG(val) < 0 : BIGNUM_NEGATIVE_P(val); - * size = rb_absint_numwords(val, 1, NULL) - * if (size == (size_t)-1) ...overflow... - * if (neg && rb_absint_singlebit_p(val)) - * size--; - * ``` - * - * Following example calculates number of bytes required to represent val in - * two's complement number, with sign bit. - * - * ```CXX - * size_t size; - * int neg = FIXNUM_P(val) ? FIX2LONG(val) < 0 : BIGNUM_NEGATIVE_P(val); - * int nlz_bits; - * size = rb_absint_size(val, &nlz_bits); - * if (nlz_bits == 0 && !(neg && rb_absint_singlebit_p(val))) - * size++; - * ``` - */ -int rb_absint_singlebit_p(VALUE val); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_BIGNUM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/class.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/class.h deleted file mode 100644 index 2181ab9..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/class.h +++ /dev/null @@ -1,382 +0,0 @@ -#ifndef RBIMPL_INTERN_CLASS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_CLASS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cClass/::rb_cModule. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/backward/2/stdarg.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* class.c */ - -/** - * Creates a new, anonymous class. - * - * @param[in] super What would become a parent class. - * @exception rb_eTypeError `super` is not something inheritable. - * @return An anonymous class that inherits `super`. - */ -VALUE rb_class_new(VALUE super); - -/** - * The comment that comes with this function says `:nodoc:`. Not sure what - * that means though. - * - * @param[out] clone Destination object. - * @param[in] orig Source object. - * @exception rb_eTypeError Cannot copy `orig`. - * @return The passed `clone`. - */ -VALUE rb_mod_init_copy(VALUE clone, VALUE orig); - -/** - * Asserts that the given class can derive a child class. A class might or - * might not be able to do so; for instance a singleton class cannot. - * - * @param[in] super Possible super class. - * @exception rb_eTypeError No it cannot. - * @post Upon successful return `super` can derive. - */ -void rb_check_inheritable(VALUE super); - -/** - * This is a very badly designed API that creates an anonymous class. - * - * @param[in] id Discarded for no reason (why...). - * @param[in] super What would become a parent class. 0 means - * ::rb_cObject. - * @exception rb_eTypeError `super` is not something inheritable. - * @return An anonymous class that inherits `super`. - * @warning You must explicitly name the return value. - */ -VALUE rb_define_class_id(ID id, VALUE super); - -/** - * Identical to rb_define_class_under(), except it takes the name in ::ID - * instead of C's string. - * - * @param[out] outer A class which contains the new class. - * @param[in] id Name of the new class - * @param[in] super A class from which the new class will derive. - * 0 means ::rb_cObject. - * @exception rb_eTypeError The constant name `id` is already taken but the - * constant is not a class. - * @exception rb_eTypeError The class is already defined but the class can - * not be reopened because its superclass is not - * `super`. - * @exception rb_eArgError `super` is NULL. - * @return The created class. - * @post `outer::id` refers the returned class. - * @note If a class named `id` is already defined and its superclass is - * `super`, the function just returns the defined class. - * @note The compaction GC does not move classes returned by this - * function. - */ -VALUE rb_define_class_id_under(VALUE outer, ID id, VALUE super); - -/** - * Creates a new, anonymous module. - * - * @return An anonymous module. - */ -VALUE rb_module_new(void); - - -/** - * Creates a new, anonymous refinement. - * - * @return An anonymous refinement. - */ -VALUE rb_refinement_new(void); - -/** - * This is a very badly designed API that creates an anonymous module. - * - * @param[in] id Discarded for no reason (why...). - * @return An anonymous module. - * @warning You must explicitly name the return value. - */ -VALUE rb_define_module_id(ID id); - -/** - * Identical to rb_define_module_under(), except it takes the name in ::ID - * instead of C's string. - * - * @param[out] outer A class which contains the new module. - * @param[in] id Name of the new module - * @exception rb_eTypeError The constant name `id` is already taken but the - * constant is not a module. - * @return The created module. - * @post `outer::id` refers the returned module. - * @note The compaction GC does not move classes returned by this - * function. - */ -VALUE rb_define_module_id_under(VALUE outer, ID id); - -/** - * Queries the list of included modules. It can also be seen as a routine to - * first call rb_mod_ancestors(), then rejects non-modules from the return - * value. - * - * @param[in] mod Class or Module. - * @return An array of modules that are either included or prepended in any - * of `mod`'s ancestry tree (including itself). - */ -VALUE rb_mod_included_modules(VALUE mod); - -/** - * Queries if the passed module is included by the module. It can also be seen - * as a routine to first call rb_mod_included_modules(), then see if the return - * value contains the passed module. - * - * @param[in] child A Module. - * @param[in] parent Another Module. - * @exception rb_eTypeError `child` is not an instance of ::rb_cModule. - * @retval RUBY_Qtrue `parent` is either included or prepended in any - * of `child`'s ancestry tree (including itself). - * @return RUBY_Qfalse Otherwise. - */ -VALUE rb_mod_include_p(VALUE child, VALUE parent); - -/** - * Queries the module's ancestors. This routine gathers classes and modules - * that the passed module either inherits, includes, or prepends, then - * recursively applies that routine again and again to the collected entries - * until the list doesn't grow up. - * - * @param[in] mod A module or a class. - * @return An array of classes or modules that `mod` possibly recursively - * inherits, includes, or prepends. - * - * @internal - * - * Above description is written in a recursive language but in practice it - * computes the return value iteratively. - */ -VALUE rb_mod_ancestors(VALUE mod); - -/** - * Queries the class's descendants. This routine gathers classes that are - * subclasses of the given class (or subclasses of those subclasses, etc.), - * returning an array of classes that have the given class as an ancestor. - * The returned array does not include the given class or singleton classes. - * - * @param[in] klass A class. - * @return An array of classes where `klass` is an ancestor. - * - * @internal - */ -VALUE rb_class_descendants(VALUE klass); - -/** - * Queries the class's direct descendants. This routine gathers classes that are - * direct subclasses of the given class, - * returning an array of classes that have the given class as a superclass. - * The returned array does not include singleton classes. - * - * @param[in] klass A class. - * @return An array of classes where `klass` is the `superclass`. - * - * @internal - */ -VALUE rb_class_subclasses(VALUE klass); - -/** - * Generates an array of symbols, which are the list of method names defined in - * the passed class. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Array of at most one object, which controls (if - * any) whether the return array includes the names - * of methods defined in ancestors or not. - * @param[in] mod A module or a class. - * @exception rb_eArgError `argc` out of range. - * @return An array of symbols collecting names of instance methods that - * are not private, defined at `mod`. - */ -VALUE rb_class_instance_methods(int argc, const VALUE *argv, VALUE mod); - -/** - * Identical to rb_class_instance_methods(), except it returns names of methods - * that are public only. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Array of at most one object, which controls (if - * any) whether the return array includes the names - * of methods defined in ancestors or not. - * @param[in] mod A module or a class. - * @exception rb_eArgError `argc` out of range. - * @return An array of symbols collecting names of instance methods that - * are public, defined at `mod`. - */ -VALUE rb_class_public_instance_methods(int argc, const VALUE *argv, VALUE mod); - -/** - * Identical to rb_class_instance_methods(), except it returns names of methods - * that are protected only. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Array of at most one object, which controls (if - * any) whether the return array includes the names - * of methods defined in ancestors or not. - * @param[in] mod A module or a class. - * @exception rb_eArgError `argc` out of range. - * @return An array of symbols collecting names of instance methods that - * are protected, defined at `mod`. - */ -VALUE rb_class_protected_instance_methods(int argc, const VALUE *argv, VALUE mod); - -/** - * Identical to rb_class_instance_methods(), except it returns names of methods - * that are private only. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Array of at most one object, which controls (if - * any) whether the return array includes the names - * of methods defined in ancestors or not. - * @param[in] mod A module or a class. - * @exception rb_eArgError `argc` out of range. - * @return An array of symbols collecting names of instance methods that - * are protected, defined at `mod`. - */ -VALUE rb_class_private_instance_methods(int argc, const VALUE *argv, VALUE mod); - -/** - * Identical to rb_class_instance_methods(), except it returns names of - * singleton methods instead of instance methods. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Array of at most one object, which controls (if - * any) whether the return array includes the names - * of methods defined in ancestors or not. - * @param[in] obj Arbitrary ruby object. - * @exception rb_eArgError `argc` out of range. - * @return An array of symbols collecting names of instance methods that - * are not private, defined at the singleton class of `obj`. - */ -VALUE rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj); - -/** - * Identical to rb_define_method(), except it takes the name of the method in - * ::ID instead of C's string. - * - * @param[out] klass A module or a class. - * @param[in] mid Name of the function. - * @param[in] func The method body. - * @param[in] arity The number of parameters. See @ref defmethod. - * @note There are in fact 18 different prototypes for func. - * @see ::ruby::backward::cxxanyargs::define_method::rb_define_method_id - */ -void rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(ANYARGS), int arity); - -/* vm_method.c */ - -/** - * Inserts a method entry that hides previous method definition of the given - * name. This is not a deletion of a method. Method of the same name defined - * in a parent class is kept invisible in this way. - * - * @param[out] mod The module to insert an undef. - * @param[in] mid Name of the undef. - * @exception rb_eTypeError `klass` is a non-module. - * @exception rb_eFrozenError `klass` is frozen. - * @exception rb_eNameError No such method named `klass#name`. - * @post `klass#name` is undefined. - * @see rb_undef_method - * - * @internal - * - * @shyouhei doesn't understand why this is not the ::ID -taking variant of - * rb_undef_method(), given rb_remove_method() has its ::ID -taking counterpart - * named rb_remove_method_id(). - */ -void rb_undef(VALUE mod, ID mid); - -/* class.c */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_define_method(), except it defines a protected method. - * - * @param[out] klass A module or a class. - * @param[in] mid Name of the function. - * @param[in] func The method body. - * @param[in] arity The number of parameters. See @ref defmethod. - * @note There are in fact 18 different prototypes for func. - * @see ::ruby::backward::cxxanyargs::define_method::rb_define_protected_method - */ -void rb_define_protected_method(VALUE klass, const char *mid, VALUE (*func)(ANYARGS), int arity); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_define_method(), except it defines a private method. - * - * @param[out] klass A module or a class. - * @param[in] mid Name of the function. - * @param[in] func The method body. - * @param[in] arity The number of parameters. See @ref defmethod. - * @note There are in fact 18 different prototypes for func. - * @see ::ruby::backward::cxxanyargs::define_method::rb_define_protected_method - */ -void rb_define_private_method(VALUE klass, const char *mid, VALUE (*func)(ANYARGS), int arity); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_define_method(), except it defines a singleton method. - * - * @param[out] obj Arbitrary ruby object. - * @param[in] mid Name of the function. - * @param[in] func The method body. - * @param[in] arity The number of parameters. See @ref defmethod. - * @note There are in fact 18 different prototypes for func. - * @see ::ruby::backward::cxxanyargs::define_method::rb_define_singleton_method - */ -void rb_define_singleton_method(VALUE obj, const char *mid, VALUE(*func)(ANYARGS), int arity); - -/** - * Finds or creates the singleton class of the passed object. - * - * @param[out] obj Arbitrary ruby object. - * @exception rb_eTypeError `obj` cannot have its singleton class. - * @return A (possibly newly allocated) instance of ::rb_cClass. - * @post `obj` has its singleton class, which is the return value. - * @post In case `obj` is a class, the returned singleton class also has - * its own singleton class in order to keep consistency of the - * inheritance structure of metaclasses. - * @note A new singleton class will be created if `obj` did not have - * one. - * @note The singleton classes for ::RUBY_Qnil, ::RUBY_Qtrue, and - * ::RUBY_Qfalse are ::rb_cNilClass, ::rb_cTrueClass, and - * ::rb_cFalseClass respectively. - * - * @internal - * - * You can _create_ a singleton class of a frozen object. Intentional or ...? - * - * Nowadays there are wider range of objects who cannot have singleton classes - * than before. For instance some string instances cannot for some reason. - */ -VALUE rb_singleton_class(VALUE obj); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_CLASS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/compar.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/compar.h deleted file mode 100644 index dc3b377..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/compar.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef RBIMPL_INTERN_COMPAR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_COMPAR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_mComparable. - */ -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* bignum.c */ - -/** - * Canonicalises the passed `val`, which is the return value of `a <=> b`, into - * C's `{-1, 0, 1}`. This can be handy when you implement a callback function - * to pass to `qsort(3)` etc. - * - * @param[in] val Return value of a space ship operator. - * @param[in] a Comparison LHS. - * @param[in] b Comparison RHS. - * @exception rb_eArgError `a` and `b` are not comparable each other. - * @retval -1 `val` is less than zero. - * @retval 0 `val` is equal to zero. - * @retval 1 `val` is greater than zero. - */ -int rb_cmpint(VALUE val, VALUE a, VALUE b); - -/* compar.c */ - -RBIMPL_ATTR_COLD() -RBIMPL_ATTR_NORETURN() -/** - * Raises "comparison failed" error. - * - * @param[in] a Comparison LHS. - * @param[in] b Comparison RHS. - * @exception rb_eArgError `a` and `b` are not comparable each other. - */ -void rb_cmperr(VALUE a, VALUE b); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_COMPAR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/complex.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/complex.h deleted file mode 100644 index e111bd8..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/complex.h +++ /dev/null @@ -1,253 +0,0 @@ -#ifndef RBIMPL_INTERN_COMPLEX_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_COMPLEX_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cComplex. - */ -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/arithmetic/long.h" /* INT2FIX is here. */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* complex.c */ - -/** - * Identical to rb_complex_new(), except it assumes both arguments are not - * instances of ::rb_cComplex. It is thus dangerous for extension libraries. - * - * @param[in] real Real part, in any numeric except Complex. - * @param[in] imag Imaginary part, in any numeric except Complex. - * @return An instance of ::rb_cComplex whose value is `real + (imag)i`. - */ -VALUE rb_complex_raw(VALUE real, VALUE imag); - -/** - * Shorthand of `x+0i`. It practically converts `x` into a Complex of the - * identical value. - * - * @param[in] x Any numeric except Complex. - * @return An instance of ::rb_cComplex, whose value is `x + 0i`. - */ -#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0)) - -/** @alias{rb_complex_raw} */ -#define rb_complex_raw2(x,y) rb_complex_raw((x), (y)) - -/** - * Constructs a Complex, by first multiplying the imaginary part with `1i` then - * adds it to the real part. This definition doesn't need both arguments be - * real numbers. It can happily combine two instances of ::rb_cComplex (with - * rotating the latter one). - * - * @param[in] real An instance of ::rb_cNumeric. - * @param[in] imag Another instance of ::rb_cNumeric. - * @return An instance of ::rb_cComplex whose value is `imag * 1i + real`. - */ -VALUE rb_complex_new(VALUE real, VALUE imag); - -/** - * Shorthand of `x+0i`. It practically converts `x` into a Complex of the - * identical value. - * - * @param[in] x Any numeric value. - * @return An instance of ::rb_cComplex, whose value is `x + 0i`. - */ -#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0)) - -/** @alias{rb_complex_new} */ -#define rb_complex_new2(x,y) rb_complex_new((x), (y)) - -/** - * Constructs a Complex using polar representations. Unlike rb_complex_new() - * it makes no sense to pass non-real instances to this function. - * - * @param[in] abs Magnitude, in any numeric except Complex. - * @param[in] arg Angle, in radians, in any numeric except Complex. - * @return An instance of ::rb_cComplex which denotes the given polar - * coordinates. - */ -VALUE rb_complex_new_polar(VALUE abs, VALUE arg); - -RBIMPL_ATTR_DEPRECATED(("by: rb_complex_new_polar")) -/** @old{rb_complex_new_polar} */ -VALUE rb_complex_polar(VALUE abs, VALUE arg); - -RBIMPL_ATTR_PURE() -/** - * Queries the real part of the passed Complex. - * - * @param[in] z An instance of ::rb_cComplex. - * @return Its real part, which is an instance of ::rb_cNumeric. - */ -VALUE rb_complex_real(VALUE z); - -RBIMPL_ATTR_PURE() -/** - * Queries the imaginary part of the passed Complex. - * - * @param[in] z An instance of ::rb_cComplex. - * @return Its imaginary part, which is an instance of ::rb_cNumeric. - */ -VALUE rb_complex_imag(VALUE z); - -/** - * Performs addition of the passed two objects. - * - * @param[in] x An instance of ::rb_cComplex. - * @param[in] y Arbitrary ruby object. - * @return What `x + y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_complex_plus(VALUE x, VALUE y); - -/** - * Performs subtraction of the passed two objects. - * - * @param[in] x An instance of ::rb_cComplex. - * @param[in] y Arbitrary ruby object. - * @return What `x - y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_complex_minus(VALUE x, VALUE y); - -/** - * Performs multiplication of the passed two objects. - * - * @param[in] x An instance of ::rb_cComplex. - * @param[in] y Arbitrary ruby object. - * @return What `x * y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_complex_mul(VALUE x, VALUE y); - -/** - * Performs division of the passed two objects. - * - * @param[in] x An instance of ::rb_cComplex. - * @param[in] y Arbitrary ruby object. - * @return What `x / y` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_complex_div(VALUE x, VALUE y); - -/** - * Performs negation of the passed object. - * - * @param[in] z An instance of ::rb_cComplex. - * @return What `-z` evaluates to. - */ -VALUE rb_complex_uminus(VALUE z); - -/** - * Performs complex conjugation of the passed object. - * - * @param[in] z An instance of ::rb_cComplex. - * @return Its complex conjugate, in ::rb_cComplex. - */ -VALUE rb_complex_conjugate(VALUE z); - -/** - * Queries the absolute (or the magnitude) of the passed object. - * - * @param[in] z An instance of ::rb_cComplex. - * @return Its magnitude, in ::rb_cFloat. - */ -VALUE rb_complex_abs(VALUE z); - -/** - * Queries the argument (or the angle) of the passed object. - * - * @param[in] z An instance of ::rb_cComplex. - * @return Its magnitude, in ::rb_cFloat. - */ -VALUE rb_complex_arg(VALUE z); - -/** - * Performs exponentiation of the passed two objects. - * - * @param[in] base An instance of ::rb_cComplex. - * @param[in] exp Arbitrary ruby object. - * @return What `base ** exp` evaluates to. - * @see rb_num_coerce_bin() - */ -VALUE rb_complex_pow(VALUE base, VALUE exp); - -/** - * Identical to rb_complex_new(), except it takes the arguments as C's double - * instead of Ruby's object. - * - * @param[in] real Real part. - * @param[in] imag Imaginary part. - * @return An instance of ::rb_cComplex whose value is `real + (imag)i`. - */ -VALUE rb_dbl_complex_new(double real, double imag); - -/** @alias{rb_complex_plus} */ -#define rb_complex_add rb_complex_plus - -/** @alias{rb_complex_minus} */ -#define rb_complex_sub rb_complex_minus - -/** @alias{rb_complex_uminus} */ -#define rb_complex_nagate rb_complex_uminus - -/** - * Converts various values into a Complex. This function accepts: - * - * - Instances of ::rb_cComplex (taken as-is), - * - Instances of ::rb_cNumeric (adds `0i`), - * - Instances of ::rb_cString (parses), - * - Other objects that respond to `#to_c`. - * - * It (possibly recursively) applies `#to_c` until both sides become a Complex - * value, then computes `imag * 1i + real`. - * - * As a special case, passing ::RUBY_Qundef to `imag` is the same as passing - * `RB_INT2NUM(0)`. - * - * @param[in] real Real part (see above). - * @param[in] imag Imaginary part (see above). - * @exception rb_eTypeError Passed something not described above. - * @return An instance of ::rb_cComplex whose value is `1i * imag + real`. - * - * @internal - * - * This was the implementation of `Kernel#Complex` before, but they diverged. - */ -VALUE rb_Complex(VALUE real, VALUE imag); - -/** - * Shorthand of `x+0i`. It practically converts `x` into a Complex of the - * identical value. - * - * @param[in] x ::rb_cNumeric, ::rb_cString, or something that responds to - * `#to_c`. - * @return An instance of ::rb_cComplex, whose value is `x + 0i`. - */ -#define rb_Complex1(x) rb_Complex((x), INT2FIX(0)) - -/** @alias{rb_Complex} */ -#define rb_Complex2(x,y) rb_Complex((x), (y)) - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_COMPLEX_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/cont.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/cont.h deleted file mode 100644 index 3749300..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/cont.h +++ /dev/null @@ -1,260 +0,0 @@ -#ifndef RBIMPL_INTERN_CONT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_CONT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to rb_cFiber. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/iterator.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* cont.c */ - -/** - * Creates a Fiber instance from a C-backended block. - * - * @param[in] func A function, to become the fiber's body. - * @param[in] callback_obj Passed as-is to `func`. - * @return An allocated new instance of rb_cFiber, which is ready to be - * "resume"d. - */ -VALUE rb_fiber_new(rb_block_call_func_t func, VALUE callback_obj); - -/** - * Queries the fiber which is calling this function. Any ruby execution - * context has its fiber, either explicitly or implicitly. - * - * @return The current fiber. - */ -VALUE rb_fiber_current(void); - -/** - * Queries the liveness of the passed fiber. "Alive" in this context means - * that the fiber can still be resumed. Once it reaches is its end of - * execution, this function returns ::RUBY_Qfalse. - * - * @param[in] fiber A target fiber. - * @retval RUBY_Qtrue It is. - * @retval RUBY_Qfalse It isn't. - */ -VALUE rb_fiber_alive_p(VALUE fiber); - -/** - * Queries if an object is a fiber. - * - * @param[in] obj Arbitrary ruby object. - * @retval RUBY_Qtrue It is. - * @retval RUBY_Qfalse It isn't. - */ -VALUE rb_obj_is_fiber(VALUE obj); - -/** - * Resumes the execution of the passed fiber, either from the point at which - * the last rb_fiber_yield() was called if any, or at the beginning of the - * fiber body if it is the first call to this function. - * - * Other arguments are passed into the fiber's body, either as return values of - * rb_fiber_yield() in case it switches to there, or as the block parameter of - * the fiber body if it switches to the beginning of the fiber. - * - * The return value of this function is either the value passed to previous - * rb_fiber_yield() call, or the ultimate evaluated value of the entire fiber - * body if the execution reaches the end of it. - * - * When an exception happens inside of a fiber it propagates to this function. - * - * ```ruby - * f = Fiber.new do |i| - * puts " =>> #{i}" - * puts " <-- #{i + 1}" - * j = Fiber.yield(i + 1) - * puts " =>> #{j}" - * puts " <-- #{j + 1}" - * next j + 1 - * end - * - * puts "[a] <-- 1" - * p = f.resume(1) - * puts "[b] =>> #{p}" - * puts "[c] <-- #{p + 1}" - * q = f.resume(p + 1) - * puts "[d] =>> #{q}" - * ``` - * - * Above program executes in `[a] [b] [c] [d]`. - * - * @param[out] fiber The fiber to resume. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed (somehow) to `fiber`. - * @exception rb_eFiberError `fib` is terminated etc. - * @exception rb_eException Any exceptions happen in `fiber`. - * @return (See above) - * @note This function _does_ return. - * - * @internal - * - * @shyouhei expected this function to raise ::rb_eFrozenError for frozen - * fibers but it doesn't in practice. Intentional or ...? - */ -VALUE rb_fiber_resume(VALUE fiber, int argc, const VALUE *argv); - -/** - * Identical to rb_fiber_resume(), except you can specify how to handle the - * last element of the given array. - * - * @param[out] fiber The fiber to resume. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed (somehow) to `fiber`. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eFiberError `fiber` is terminated etc. - * @exception rb_eException Any exceptions happen in `fiber`. - * @return Either what was yielded or the last value of the fiber body. - */ -VALUE rb_fiber_resume_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat); - -/** - * Yields the control back to the point where the current fiber was resumed. - * The passed objects would be the return value of rb_fiber_resume(). This - * fiber then suspends its execution until next time it is resumed. - * - * This function can also raise arbitrary exceptions injected from outside of - * the fiber using rb_fiber_raise(). - * - * ```ruby - * exc = Class.new Exception - * - * f = Fiber.new do - * Fiber.yield - * rescue exc => e - * puts e.message - * end - * - * f.resume - * f.raise exc, "Hi!" - * ``` - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed to rb_fiber_resume(). - * @exception rb_eException (See above) - * @return (See rb_fiber_resume() for details) - */ -VALUE rb_fiber_yield(int argc, const VALUE *argv); - -/** - * Identical to rb_fiber_yield(), except you can specify how to handle the last - * element of the given array. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed to rb_fiber_resume(). - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eException What was raised using `Fiber#raise`. - * @return (See rb_fiber_resume() for details) - */ -VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat); - -/** - * Transfers control to another fiber, resuming it from where it last stopped - * or starting it if it was not resumed before. The calling fiber will be - * suspended much like in a call to rb_fiber_yield(). - * - * The fiber which receives the transfer call treats it much like a resume - * call. Arguments passed to transfer are treated like those passed to resume. - * - * The two style of control passing to and from fiber (one is rb_fiber_resume() - * and rb_fiber_yield(), another is rb_fiber_transfer() to and from fiber) - * can't be freely mixed. - * - * - If the Fiber's lifecycle had started with transfer, it will never be - * able to yield or be resumed control passing, only finish or transfer - * back. (It still can resume other fibers that are allowed to be - * resumed.) - * - * - If the Fiber's lifecycle had started with resume, it can yield or - * transfer to another Fiber, but can receive control back only the way - * compatible with the way it was given away: if it had transferred, it - * only can be transferred back, and if it had yielded, it only can be - * resumed back. After that, it again can transfer or yield. - * - * If those rules are broken, rb_eFiberError is raised. - * - * For an individual Fiber design, yield/resume is easier to use (the Fiber - * just gives away control, it doesn't need to think about who the control is - * given to), while transfer is more flexible for complex cases, allowing to - * build arbitrary graphs of Fibers dependent on each other. - * - * @param[out] fiber Explicit control destination. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed to rb_fiber_resume(). - * @exception rb_eFiberError (See above) - * @exception rb_eException What was raised using `Fiber#raise`. - * @return (See rb_fiber_resume() for details) - */ -VALUE rb_fiber_transfer(VALUE fiber, int argc, const VALUE *argv); - -/** - * Identical to rb_fiber_transfer(), except you can specify how to handle the - * last element of the given array. - * - * @param[out] fiber Explicit control destination. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed to rb_fiber_resume(). - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eFiberError (See above) - * @exception rb_eException What was raised using `Fiber#raise`. - * @return (See rb_fiber_resume() for details) - */ -VALUE rb_fiber_transfer_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat); - -/** - * Identical to rb_fiber_resume() but instead of resuming normal execution of - * the passed fiber, it raises the given exception in it. From inside of the - * fiber this would be seen as if rb_fiber_yield() raised. - * - * This function does return in case the passed fiber gracefully handled the - * passed exception. But if it does not, the raised exception propagates out - * of the passed fiber; this function then does not return. - * - * Parameters are passed to rb_make_exception() to create an exception object. - * See its document for what are allowed here. - * - * It is a failure to call this function against a fiber which is resuming, - * have never run yet, or has already finished running. - * - * @param[out] fiber Where exception is raised. - * @param[in] argc Passed as-is to rb_make_exception(). - * @param[in] argv Passed as-is to rb_make_exception(). - * @exception rb_eFiberError `fiber` is terminated etc. - * @return (See rb_fiber_resume() for details) - */ -VALUE rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_CONT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/dir.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/dir.h deleted file mode 100644 index da1873e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/dir.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef RBIMPL_INTERN_DIR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_DIR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cDir. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* dir.c */ - -/** - * Queries the path of the current working directory of the current process. - * - * @return An instance of ::rb_cString that holds the working directory. - * @note The returned string is in "filesystem" encoding. Most notably on - * Linux this is an alias of default external encoding. Most notably - * on Windows it can be an alias of OS codepage. - */ -VALUE rb_dir_getwd(void); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_DIR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enum.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enum.h deleted file mode 100644 index 215ad82..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enum.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef RBIMPL_INTERN_ENUM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_ENUM_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_mEnumerable. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* enum.c */ - -/** - * Basically identical to rb_ary_new_form_values(), except it returns something - * different when `argc` < 2. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arbitrary objects. - * @retval RUBY_Qnil `argc` is zero. - * @retval argv[0] `argc` is one. - * @retval otherwise Otherwise. - * - * @internal - * - * What is this business? Well, this function is about `yield`'s taking - * multiple values. Consider following user-defined class: - * - * ```ruby - * class Foo - * include Enumerable - * - * def each - * yield :q, :w, :e, :r - * end - * end - * - * Foo.new.each_with_object([]) do |i, j| - * j << i # ^^^ <- What to expect for `i`? - * end - * ``` - * - * Here, `Foo#each_with_object` is in fact `Enumerable#each_with_object`, which - * doesn't know what would be yielded. Yet, it has to take a block of arity 2. - * This function is used here, to "pack" arbitrary number of yielded objects - * into one. - * - * If people want to implement their own `Enumerable#each_with_object` this API - * can be handy. Though @shyouhei suspects it is relatively rare for 3rd party - * extension libraries to have such things. Also `Enumerable#each_entry` is - * basically this function exposed as a Ruby method. - */ -VALUE rb_enum_values_pack(int argc, const VALUE *argv); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_ENUM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enumerator.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enumerator.h deleted file mode 100644 index 20e5d7c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/enumerator.h +++ /dev/null @@ -1,259 +0,0 @@ -#ifndef RBIMPL_INTERN_ENUMERATOR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_ENUMERATOR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cEnumerator. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/intern/eval.h" /* rb_frame_this_func */ -#include "ruby/internal/iterator.h" /* rb_block_given_p */ -#include "ruby/internal/symbol.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * This is the type of functions that rb_enumeratorize_with_size() expects. In - * theory an enumerator can have indefinite number of elements, but in practice - * it often is the case we can compute the size of an enumerator beforehand. - * If your enumerator has such property, supply a function that calculates such - * values. - * - * @param[in] recv The original receiver of the enumerator. - * @param[in] argv Arguments passed to `Object#enum_for` etc. - * @param[in] eobj The enumerator object. - * @return The size of `eobj`, in ::rb_cNumeric, or ::RUBY_Qnil if the size - * is not known until we actually iterate. - */ -typedef VALUE rb_enumerator_size_func(VALUE recv, VALUE argv, VALUE eobj); - -/** - * Decomposed `Enumerator::ArithmeicSequence`. This is a subclass of - * ::rb_cEnumerator, which represents a sequence of numbers with common - * difference. Internal data structure of the class is opaque to users, but - * you can obtain a decomposed one using rb_arithmetic_sequence_extract(). - */ -typedef struct { - VALUE begin; /**< "Left" or "lowest" endpoint of the sequence. */ - VALUE end; /**< "Right" or "highest" endpoint of the sequence.*/ - VALUE step; /**< Step between a sequence. */ - int exclude_end; /**< Whether the endpoint is open or closed. */ -} rb_arithmetic_sequence_components_t; - -/* enumerator.c */ - -/** - * Constructs an enumerator. This roughly resembles `Object#enum_for`. - * - * @param[in] recv A receiver of `meth`. - * @param[in] meth Method ID in a symbol object. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to `meth`. - * @exception rb_eTypeError `meth` is not an instance of ::rb_cSymbol. - * @return A new instance of ::rb_cEnumerator which, when yielded, - * enumerates by calling `meth` on `recv` with `argv`. - */ -VALUE rb_enumeratorize(VALUE recv, VALUE meth, int argc, const VALUE *argv); - -/** - * Identical to rb_enumeratorize(), except you can additionally specify the - * size function of return value. - * - * @param[in] recv A receiver of `meth`. - * @param[in] meth Method ID in a symbol object. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to `meth`. - * @param[in] func Size calculator. - * @exception rb_eTypeError `meth` is not an instance of ::rb_cSymbol. - * @return A new instance of ::rb_cEnumerator which, when yielded, - * enumerates by calling `meth` on `recv` with `argv`. - * @note `func` can be zero, which means the size is unknown. - */ -VALUE rb_enumeratorize_with_size(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func); - -/** - * Identical to rb_enumeratorize_with_func(), except you can specify how to - * handle the last element of the given array. - * - * @param[in] recv A receiver of `meth`. - * @param[in] meth Method ID in a symbol object. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to `meth`. - * @param[in] func Size calculator. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eTypeError `meth` is not an instance of ::rb_cSymbol. - * @return A new instance of ::rb_cEnumerator which, when yielded, - * enumerates by calling `meth` on `recv` with `argv`. - * @note `func` can be zero, which means the size is unknown. - */ -VALUE rb_enumeratorize_with_size_kw(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func, int kw_splat); - -RBIMPL_ATTR_NONNULL(()) -/** - * Extracts components of the passed arithmetic sequence. This can be seen as - * an extended version of rb_range_values(). - * - * @param[in] as Target instance of `Enumerator::ArithmericSequence`. - * @param[out] buf Decomposed results buffer. - * @return 0 `as` is not `Enumerator::ArithmericSequence`. - * @return 1 Success. - * @post `buf` is filled. - */ -int rb_arithmetic_sequence_extract(VALUE as, rb_arithmetic_sequence_components_t *buf); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_range_beg_len(), except it takes an instance of - * `Enumerator::ArithmericSequence`. - * - * @param[in] as An `Enumerator::ArithmericSequence` instance. - * @param[out] begp Return value buffer. - * @param[out] lenp Return value buffer. - * @param[out] stepp Return value buffer. - * @param[in] len Updated length. - * @param[in] err In case `len` is out of range... - * - `0`: returns ::RUBY_Qnil. - * - `1`: raises ::rb_eRangeError. - * - `2`: `beg` and `len` expanded accordingly. - * @exception rb_eRangeError `as` cannot fit into `long`. - * @retval RUBY_Qfalse `as` is not `Enumerator::ArithmericSequence`. - * @retval RUBY_Qnil `len` is out of `as` but `err` is zero. - * @retval RUBY_Qtrue Otherwise. - * @post `beg` is the (possibly updated) left endpoint. - * @post `len` is the (possibly updated) length of the range. - * - * @internal - * - * Currently no 3rd party applications of this function is found. But that can - * be because this function is relatively new. - */ -VALUE rb_arithmetic_sequence_beg_len_step(VALUE as, long *begp, long *lenp, long *stepp, long len, int err); - -RBIMPL_SYMBOL_EXPORT_END() - -/** @cond INTERNAL_MACRO */ -#ifndef RUBY_EXPORT -# define rb_enumeratorize_with_size(obj, id, argc, argv, size_fn) \ - rb_enumeratorize_with_size(obj, id, argc, argv, (rb_enumerator_size_func *)(size_fn)) -# define rb_enumeratorize_with_size_kw(obj, id, argc, argv, size_fn, kw_splat) \ - rb_enumeratorize_with_size_kw(obj, id, argc, argv, (rb_enumerator_size_func *)(size_fn), kw_splat) -#endif -/** @endcond */ - -/** - * This is an implementation detail of #RETURN_SIZED_ENUMERATOR(). You could - * use it directly, but can hardly be handy. - * - * @param[in] obj A receiver. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to the current method. - * @param[in] size_fn Size calculator. - * @return A new instance of ::rb_cEnumerator which, when yielded, - * enumerates by calling the current method on `recv` with `argv`. - */ -#define SIZED_ENUMERATOR(obj, argc, argv, size_fn) \ - rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), \ - (argc), (argv), (size_fn)) - -/** - * This is an implementation detail of #RETURN_SIZED_ENUMERATOR_KW(). You - * could use it directly, but can hardly be handy. - * - * @param[in] obj A receiver. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to the current method. - * @param[in] size_fn Size calculator. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @return A new instance of ::rb_cEnumerator which, when yielded, - * enumerates by calling the current method on `recv` with `argv`. - */ -#define SIZED_ENUMERATOR_KW(obj, argc, argv, size_fn, kw_splat) \ - rb_enumeratorize_with_size_kw((obj), ID2SYM(rb_frame_this_func()), \ - (argc), (argv), (size_fn), (kw_splat)) - -/** - * This roughly resembles `return enum_for(__callee__) unless block_given?`. - * - * @param[in] obj A receiver. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to the current method. - * @param[in] size_fn Size calculator. - * @note This macro may return inside. - */ -#define RETURN_SIZED_ENUMERATOR(obj, argc, argv, size_fn) do { \ - if (!rb_block_given_p()) \ - return SIZED_ENUMERATOR(obj, argc, argv, size_fn); \ - } while (0) - - -/** - * Identical to #RETURN_SIZED_ENUMERATOR(), except you can specify how to - * handle the last element of the given array. - * - * @param[in] obj A receiver. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to the current method. - * @param[in] size_fn Size calculator. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @note This macro may return inside. - */ -#define RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, size_fn, kw_splat) do { \ - if (!rb_block_given_p()) \ - return SIZED_ENUMERATOR_KW(obj, argc, argv, size_fn, kw_splat); \ - } while (0) - -/** - * Identical to #RETURN_SIZED_ENUMERATOR(), except its size is unknown. - * - * @param[in] obj A receiver. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to the current method. - * @note This macro may return inside. - */ -#define RETURN_ENUMERATOR(obj, argc, argv) \ - RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0) - -/** - * Identical to #RETURN_SIZED_ENUMERATOR_KW(), except its size is unknown. It - * can also be seen as a routine identical to #RETURN_ENUMERATOR(), except you - * can specify how to handle the last element of the given array. - * - * @param[in] obj A receiver. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to the current method. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @note This macro may return inside. - */ -#define RETURN_ENUMERATOR_KW(obj, argc, argv, kw_splat) \ - RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat) - -#endif /* RBIMPL_INTERN_ENUMERATOR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/error.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/error.h deleted file mode 100644 index 37d3b85..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/error.h +++ /dev/null @@ -1,301 +0,0 @@ -#ifndef RBIMPL_INTERN_ERROR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_ERROR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_eException. - */ -#include "ruby/internal/attr/format.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/fl_type.h" -#include "ruby/backward/2/assume.h" - -/** - * This macro is used in conjunction with rb_check_arity(). If you pass it to - * the function's last (max) argument, that means the function does not check - * upper limit. - */ -#define UNLIMITED_ARGUMENTS (-1) - -#define rb_exc_new2 rb_exc_new_cstr /**< @old{rb_exc_new_cstr} */ -#define rb_exc_new3 rb_exc_new_str /**< @old{rb_exc_new_str} */ - -/** @cond INTERNAL_MACRO */ -#define rb_check_trusted rb_check_trusted -#define rb_check_trusted_inline rb_check_trusted -#define rb_check_arity rb_check_arity -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* error.c */ - -/** - * Creates an instance of the passed exception class. - * - * @param[in] etype A subclass of ::rb_eException. - * @param[in] ptr Buffer contains error message. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eTypeError `etype` is not a class. - * @exception rb_eArgError `len` is negative. - * @return An instance of `etype`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - * - * @internal - * - * This function works for non-exception classes as well, as long as they take - * one string argument. - */ -VALUE rb_exc_new(VALUE etype, const char *ptr, long len); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_exc_new(), except it assumes the passed pointer is a pointer - * to a C string. - * - * @param[in] etype A subclass of ::rb_eException. - * @param[in] str A C string (becomes an error message). - * @exception rb_eTypeError `etype` is not a class. - * @return An instance of `etype`. - */ -VALUE rb_exc_new_cstr(VALUE etype, const char *str); - -/** - * Identical to rb_exc_new_cstr(), except it takes a Ruby's string instead of - * C's. - * - * @param[in] etype A subclass of ::rb_eException. - * @param[in] str An instance of ::rb_cString. - * @exception rb_eTypeError `etype` is not a class. - * @return An instance of `etype`. - */ -VALUE rb_exc_new_str(VALUE etype, VALUE str); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -/** - * Raises an instance of ::rb_eLoadError. - * - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @exception rb_eLoadError Always raises this. - * @note It never returns. - * - * @internal - * - * Who needs this? Except ruby itself? - */ -void rb_loaderror(const char *fmt, ...); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Identical to rb_loaderror(), except it additionally takes which file is - * unable to load. The path can be obtained later using `LoadError#path` of - * the raising exception. - * - * @param[in] path What failed. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @exception rb_eLoadError Always raises this. - * @note It never returns. - */ -void rb_loaderror_with_path(VALUE path, const char *fmt, ...); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Raises an instance of ::rb_eNameError. The name can be obtained later using - * `NameError#name` of the raising exception. - * - * @param[in] name What failed. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @exception rb_eNameError Always raises this. - * @note It never returns. - */ -void rb_name_error(ID name, const char *fmt, ...); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Identical to rb_name_error(), except it takes a ::VALUE instead of ::ID. - * - * @param[in] name What failed. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @exception rb_eNameError Always raises this. - * @note It never returns. - */ -void rb_name_error_str(VALUE name, const char *fmt, ...); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Raises an instance of ::rb_eFrozenError. The object can be obtained later - * using `FrozenError#receiver` of the raising exception. - * - * @param[in] recv What is frozen. - * @param[in] fmt Format specifier string compatible with rb_sprintf(). - * @exception rb_eFrozenError Always raises this. - * @note It never returns. - * - * @internal - * - * Note however, that it is often not possible to inspect a frozen object, - * because the inspection itself could be forbidden by the frozen-ness. - */ -void rb_frozen_error_raise(VALUE recv, const char *fmt, ...); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL(()) -/** - * Honestly I don't understand the name, but it raises an instance of - * ::rb_eArgError. - * - * @param[in] str A message. - * @param[in] type Another message. - * @exception rb_eArgError Always raises this. - * @note It never returns. - */ -void rb_invalid_str(const char *str, const char *type); - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_frozen_error_raise(), except its raising exception has a - * message like "can't modify frozen /what/". - * - * @param[in] what What was frozen. - * @exception rb_eFrozenError Always raises this. - * @note It never returns. - */ -void rb_error_frozen(const char *what); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_error_frozen(), except it takes arbitrary Ruby object - * instead of C's string. - * - * @param[in] what What was frozen. - * @exception rb_eFrozenError Always raises this. - * @note It never returns. - */ -void rb_error_frozen_object(VALUE what); - -/** - * @deprecated Does nothing. This method is deprecated and will be removed in - * Ruby 3.2. - */ -void rb_error_untrusted(VALUE); - -/** - * Queries if the passed object is frozen. - * - * @param[in] obj Target object to test frozen-ness. - * @exception rb_eFrozenError It is frozen. - * @post Upon successful return it is guaranteed _not_ frozen. - */ -void rb_check_frozen(VALUE obj); - -/** - * @deprecated Does nothing. This method is deprecated and will be removed in - * Ruby 3.2. - */ -void rb_check_trusted(VALUE); - -/** - * Ensures that the passed object can be `initialize_copy` relationship. When - * you implement your own one you would better call this at the right beginning - * of your implementation. - * - * @param[in] obj Destination object. - * @param[in] orig Source object. - * @exception rb_eFrozenError `obj` is frozen. - * @post Upon successful return obj is guaranteed safe to copy orig. - */ -void rb_check_copyable(VALUE obj, VALUE orig); - -RBIMPL_ATTR_NORETURN() -/** - * @private - * - * This is an implementation detail of rb_scan_args(). You don't have to - * bother. - * - * @pre `argc` is out of range of `min`..`max`, both inclusive. - * @param[in] argc Arbitrary integer. - * @param[in] min Minimum allowed `argc`. - * @param[in] max Maximum allowed `argc`. - * @exception rb_eArgError Always. - */ -MJIT_STATIC void rb_error_arity(int argc, int min, int max); - -RBIMPL_SYMBOL_EXPORT_END() - -/** - * @deprecated - * - * Does anyone use this? Remain not deleted for compatibility. - */ -#define rb_check_frozen_internal(obj) do { \ - VALUE frozen_obj = (obj); \ - if (RB_UNLIKELY(RB_OBJ_FROZEN(frozen_obj))) { \ - rb_error_frozen_object(frozen_obj); \ - } \ - } while (0) - -/** @alias{rb_check_frozen} */ -static inline void -rb_check_frozen_inline(VALUE obj) -{ - if (RB_UNLIKELY(RB_OBJ_FROZEN(obj))) { - rb_error_frozen_object(obj); - } -} - -/** @alias{rb_check_frozen} */ -#define rb_check_frozen rb_check_frozen_inline - -/** - * Ensures that the passed integer is in the passed range. When you can use - * rb_scan_args() that is preferred over this one (powerful, descriptive). But - * it can have its own application area. - * - * @param[in] argc Arbitrary integer. - * @param[in] min Minimum allowed `argv`. - * @param[in] max Maximum allowed `argv`, or `UNLIMITED_ARGUMENTS`. - * @exception rb_eArgError `argc` out of range. - * @return The passed `argc`. - * @post Upon successful return `argc` is in range of `min`..`max`, both - * inclusive. - */ -static inline int -rb_check_arity(int argc, int min, int max) -{ - if ((argc < min) || (max != UNLIMITED_ARGUMENTS && argc > max)) - rb_error_arity(argc, min, max); - return argc; -} - -#endif /* RBIMPL_INTERN_ERROR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/eval.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/eval.h deleted file mode 100644 index 2230f7a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/eval.h +++ /dev/null @@ -1,222 +0,0 @@ -#ifndef RBIMPL_INTERN_EVAL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_EVAL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Pre-1.9 era evaluator APIs (now considered miscellaneous). - */ -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* eval.c */ -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_raise(), except it raises the passed exception instance as- - * is instead of creating new one. - * - * @param[in] exc An instance of a subclass of ::rb_eException. - * @exception exc What is passed. - * @exception rb_eTypeError `exc` is not an exception. - * @note It never returns. - * - * @internal - * - * Wellll actually, it can take more than what is described above. This - * function tries to call `exception` method of the passed object. If that - * function returns an exception object that is used instead. - */ -void rb_exc_raise(VALUE exc); - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_fatal(), except it raises the passed exception instance as- - * is instead of creating new one. - * - * @param[in] exc An instance of a subclass of ::rb_eException. - * @exception exc What is passed. - * @note It never returns. - * - * @internal - * - * You know what...? Using this API you can make arbitrary exceptions, like - * `RuntimeError`, that doesn't interface with `rescue` clause. This is very - * confusing. - */ -void rb_exc_fatal(VALUE exc); - -/* process.c */ - -RBIMPL_ATTR_NORETURN() -/** - * Identical to rb_exit(), except how arguments are passed. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Contains at most one of the following: - * - ::RUBY_Qtrue - means `EXIT_SUCCESS`. - * - ::RUBY_Qfalse - means `EXIT_FAILURE`. - * - Numerical value - takes that value. - * @exception rb_eArgError Wrong `argc`. - * @exception rb_eSystemExit Exception representing the exit status. - * @note It never returns. - */ -VALUE rb_f_exit(int argc, const VALUE *argv); - -RBIMPL_ATTR_NORETURN() -/** - * This is similar to rb_f_exit(). In fact on some situation it internally - * calls rb_exit(). But can be very esoteric on occasions. - * - * It takes up to one argument. If an argument is passed, it tries to display - * that. Otherwise if there is `$!`, displays that exception instead. It - * finally raise ::rb_eSystemExit in both cases. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Contains at most one string-ish object. - * @exception rb_eArgError Wrong `argc`. - * @exception rb_eTypeError No conversion from `argv[0]` to String. - * @exception rb_eSystemExit Exception representing `EXIT_FAILURE`. - * @note It never returns. - */ -VALUE rb_f_abort(int argc, const VALUE *argv); - -/* eval.c*/ - -RBIMPL_ATTR_NORETURN() -/** - * Raises an instance of ::rb_eInterrupt. - * - * @exception rb_eInterrupt Always raises this exception. - * @note It never returns. - */ -void rb_interrupt(void); - -/** - * Queries the name of the Ruby level method that is calling this function. - * The "name" in this context is the one assigned to the function for the first - * time (note that methods can have multiple names via aliases). - * - * @retval 0 There is no method (e.g. toplevel context). - * @retval otherwise The name of the current method. - */ -ID rb_frame_this_func(void); - -RBIMPL_ATTR_NORETURN() -/** - * This function is to re-throw global escapes. Such global escapes include - * exceptions, `throw`, `break`, for example. - * - * It makes sense only when used in conjunction with "protect" series APIs - * e.g. rb_protect(), rb_load_protect(), rb_eval_string_protect(), etc. In - * case these functions experience global escapes, they fill their opaque - * `state` return buffer. You can ignore such escapes. But if you decide - * otherwise, you have to somehow escape globally again. This function is used - * for that purpose. - * - * @param[in] state Opaque state of execution. - * @note It never returns. - * - * @internal - * - * Though not a part of our public API, `state` is in fact an enum - * ruby_tag_type. You can see the potential values by looking at vm_core.h. - */ -void rb_jump_tag(int state); - -/** - * Calls `initialize` method of the passed object with the passed arguments. - * It also forwards the implicitly passed block to the method. - * - * @param[in] obj Receiver object. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed as-is to `obj.initialize`. - * @exception rb_eException Any exceptions happen inside. - */ -void rb_obj_call_init(VALUE obj, int argc, const VALUE *argv); - -/** - * Identical to rb_obj_call_init(), except you can specify how to handle the - * last element of the given array. - * - * @param[in] obj Receiver object. - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Passed as-is to `obj.initialize`. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eNoMethodError No such method. - * @exception rb_eException Any exceptions happen inside. - */ -void rb_obj_call_init_kw(VALUE, int, const VALUE*, int); - -/** - * Identical to rb_frame_this_func(), except it returns the named used to call - * the method. - * - * @retval 0 There is no method (e.g. toplevel context). - * @retval otherwise The name of the current method. - */ -ID rb_frame_callee(void); - -/** - * Constructs an exception object from the list of arguments, in a manner - * similar to Ruby's `raise`. This function can take: - * - * - No arguments at all, i.e. `argc == 0`. This is not a failure. It - * returns ::RUBY_Qnil then. - * - * - An object, which is an instance of ::rb_cString. In this case an - * instance of ::rb_eRuntimeError whose message is the passed string is - * created then returned. - * - * - An object, which responds to `exception` method, and optionally its - * argument, and optionally its backtrace. For example instances of - * subclasses of ::rb_eException have this method. What is returned from - * the method is returned. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv 0 up to 3 objects. - * @exception rb_eArgError Wrong `argc`. - * @exception rb_eTypeError `argv[0].exception` returned non-exception. - * @return An instance of a subclass of ::rb_eException. - * - * @internal - * - * Historically this was _the_ way `raise` converted its arguments to an - * exception. However they diverged. - */ -VALUE rb_make_exception(int argc, const VALUE *argv); - -/* eval_jump.c */ - -/** - * Registers a function that shall run on process exit. Registered functions - * run in reverse-chronological order, mixed with syntactic `END` block and - * `Kernel#at_exit`. - * - * @param[in] func Function to run at process exit. - * @param[in] arg Passed as-is to `func`. - */ -void rb_set_end_proc(void (*func)(VALUE arg), VALUE arg); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_EVAL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/file.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/file.h deleted file mode 100644 index 2dc60c7..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/file.h +++ /dev/null @@ -1,213 +0,0 @@ -#ifndef RBIMPL_INTERN_FILE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_FILE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cFile. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* file.c */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_file_expand_path(), except how arguments are passed. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Filename, and base directory, in that order. - * @exception rb_eArgError Wrong `argc`. - * @exception rb_eTypeError Non-string passed. - * @exception rb_eEncCompatError No conversion from arguments to a path. - * @return Expanded path. - * - * @internal - * - * It seems nobody actually uses this function right now. Maybe delete it? - */ -VALUE rb_file_s_expand_path(int argc, const VALUE *argv); - -/** - * Identical to rb_file_absolute_path(), except it additionally understands - * `~`. If a given pathname starts with `~someone/`, that part expands to the - * user's home directory (or that of current process' owner's in case of `~/`). - * - * @param[in] fname Relative file name. - * @param[in] dname Lookup base directory name, or in case - * ::RUBY_Qnil is passed the process' current - * working directory is assumed. - * @exception rb_eArgError Home directory is not absolute. - * @exception rb_eTypeError Non-string passed. - * @exception rb_eEncCompatError No conversion from arguments to a path. - * @return Expanded path. - */ -VALUE rb_file_expand_path(VALUE fname, VALUE dname); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_file_absolute_path(), except how arguments are passed. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Filename, and base directory, in that order. - * @exception rb_eArgError Wrong `argc`. - * @exception rb_eTypeError Non-string passed. - * @exception rb_eEncCompatError No conversion from arguments to a path. - * @return Expanded path. - * - * @internal - * - * It seems nobody actually uses this function right now. Maybe delete it? - */ -VALUE rb_file_s_absolute_path(int argc, const VALUE *argv); - -/** - * Maps a relative path to its absolute representation. Relative paths are - * referenced from the passed directory name, or from the process' current - * working directory in case ::RUBY_Qnil is passed. - * - * @param[in] fname Relative file name. - * @param[in] dname Lookup base directory name, or in case - * ::RUBY_Qnil is passed the process' current - * working directory is assumed. - * @exception rb_eArgError Strings contain NUL bytes. - * @exception rb_eTypeError Non-string passed. - * @exception rb_eEncCompatError No conversion from arguments to a path. - * @return Expanded path. - */ -VALUE rb_file_absolute_path(VALUE fname, VALUE dname); - -/** - * Strips a file path's last component (and trailing separators if any). This - * function is relatively simple on POSIX environments; just splits the input - * with `/`, strips the last one, if something remains joins them again, - * otherwise the return value is `"."`. However when it comes to Windows this - * function is quite very much complicated. We have to take UNC etc. into - * account. So for instance `"C:foo"`'s dirname is `"C:."`. - * - * @param[in] fname File name to strip. - * @exception rb_eTypeError `fname` is not a String. - * @exception rb_eArgError `fname` contains NUL bytes. - * @exception rb_eEncCompatError `fname`'s encoding is not path-compat. - * @return A dirname of `fname`. - * @note This is a "pure" operation; it computes the return value solely - * from the passed object and never does any file IO. - */ -VALUE rb_file_dirname(VALUE fname); - -RBIMPL_ATTR_NONNULL(()) -/** - * Resolves a feature's path. This function takes for instance `"json"` and - * `[".so", ".rb"]`, and iterates over the `$LOAD_PATH` to see if there is - * either `json.so` or `json.rb` in the directory. - * - * This is not what everything `require` does, but at least `require` is built - * on top of it. - * - * @param[in,out] feature File to search, and return buffer. - * @param[in] exts List of file extensions. - * @exception rb_eTypeError `feature` is not a String. - * @exception rb_eArgError `feature` contains NUL bytes. - * @exception rb_eEncCompatError `feature`'s encoding is not path-compat. - * @retval 0 Not found - * @retval otherwise Found index in `ext`, plus one. - * @post `*feature` is a resolved path. - */ -int rb_find_file_ext(VALUE *feature, const char *const *exts); - -/** - * Identical to rb_find_file_ext(), except it takes a feature name and is - * extension at once, e.g. `"json.rb"`. This difference is much like how - * `require` and `load` are different. - * - * @param[in] path A path relative to `$LOAD_PATH`. - * @exception rb_eTypeError `path` is not a String. - * @exception rb_eArgError `path` contains NUL bytes. - * @exception rb_eEncCompatError `path`'s encoding is not path-compat. - * @return Expanded path. - */ -VALUE rb_find_file(VALUE path); - -/** - * Queries if the given path is either a directory, or a symlink that - * (potentially recursively) points to such thing. - * - * @param[in] _ Ignored (why...?) - * @param[in] path String, or IO. In case of IO it issues - * `fstat(2)` instead of `stat(2)`. - * @exception rb_eFrozenError `path` is a frozen IO (why...?) - * @exception rb_eTypeError `path` is neither String nor IO. - * @exception rb_eArgError `path` contains NUL bytes. - * @exception rb_eEncCompatError `path`'s encoding is not path-compat. - * @retval RUBY_Qtrue `path` is a directory. - * @retval RUBY_Qfalse Otherwise. - */ -VALUE rb_file_directory_p(VALUE _, VALUE path); - -/** - * Converts a string into an "OS Path" encoding, if any. In most operating - * systems there are no such things like per-OS default encoding of filename. - * For them this function is no-op. However most notably on MacOS, pathnames - * are UTF-8 encoded. It converts the given string into such encoding. - * - * @param[in] path An instance of ::rb_cString. - * @exception rb_eEncCompatError `path`'s encoding is not path-compat. - * @return `path`'s contents converted to the OS' path encoding. - */ -VALUE rb_str_encode_ospath(VALUE path); - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_PURE() -/** - * Queries if the given path is an absolute path. On POSIX environments it is - * as easy as `path[0] == '/'`. However on Windows, drive letters and UNC - * paths are also taken into account. - * - * @param[in] path A possibly relative path string. - * @retval 1 `path` is absolute. - * @retval 0 `path` is relative. - */ -int rb_is_absolute_path(const char *path); - -/** - * Queries the file size of the given file. Because this function calls - * `fstat(2)` internally, it is a failure to pass a closed file to this - * function. - * - * This function flushes the passed file's buffer if any. Can take time. - * - * @param[in] file A file object. - * @exception rb_eFrozenError `file` is frozen. - * @exception rb_eIOError `file` is closed. - * @exception rb_eSystemCallError Permission denied etc. - * @exception rb_eNoMethodError The given non-file object doesn't respond - * to `#size`. - * @return The size of the passed file. - * @note Passing a non-regular file such as a UNIX domain socket to this - * function is not a failure. But the return value is - * unpredictable. POSIX's `` states that "the use of - * this field is unspecified" then. - */ -off_t rb_file_size(VALUE file); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_FILE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/gc.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/gc.h deleted file mode 100644 index e7b8008..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/gc.h +++ /dev/null @@ -1,392 +0,0 @@ -#ifndef RBIMPL_INTERN_GC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_GC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_mGC. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include /* size_t */ -#endif - -#if HAVE_SYS_TYPES_H -# include /* ssize_t */ -#endif - -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* gc.c */ - -RBIMPL_ATTR_COLD() -RBIMPL_ATTR_NORETURN() -/** - * Triggers out-of-memory error. If possible it raises ::rb_eNoMemError. But - * because we are running out of memory that is not always doable. This - * function tries hard to show something, but ultimately can die silently. - * - * @exception rb_eNoMemError Raises it if possible. - */ -void rb_memerror(void); - -RBIMPL_ATTR_PURE() -/** - * Queries if the GC is busy. - * - * @retval 0 It isn't. - * @retval 1 It is. - */ -int rb_during_gc(void); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Marks objects between the two pointers. This is one of the GC utility - * functions that you can call when you design your own - * ::rb_data_type_struct::dmark. - * - * @pre Continuous memory region from `start` to `end` shall be fully - * addressable. - * @param[out] start Pointer to an array of objects. - * @param[out] end Pointer that terminates the array of objects. - * @post Objects from `start` to `end`, both inclusive, are marked. - * - * @internal - * - * `end` can be NULL... But that just results in no-op. - */ -void rb_gc_mark_locations(const VALUE *start, const VALUE *end); - -/** - * Identical to rb_mark_hash(), except it marks only values of the table and - * leave their associated keys unmarked. This is one of the GC utility - * functions that you can call when you design your own - * ::rb_data_type_struct::dmark. - * - * @warning Of course it can break GC. Leave it unused if unsure. - * @param[in] tbl A table to mark. - * @post Values stored in `tbl` are marked. - */ -void rb_mark_tbl(struct st_table *tbl); - -/** - * Identical to rb_mark_tbl(), except it marks objects using - * rb_gc_mark_movable(). This is one of the GC utility functions that you can - * call when you design your own ::rb_data_type_struct::dmark. - * - * @warning Of course it can break GC. Leave it unused if unsure. - * @param[in] tbl A table to mark. - * @post Values stored in `tbl` are marked. - */ -void rb_mark_tbl_no_pin(struct st_table *tbl); - -/** - * Identical to rb_mark_hash(), except it marks only keys of the table and - * leave their associated values unmarked. This is one of the GC utility - * functions that you can call when you design your own - * ::rb_data_type_struct::dmark. - * - * @warning Of course it can break GC. Leave it unused if unsure. - * @param[in] tbl A table to mark. - * @post Keys stored in `tbl` are marked. - */ -void rb_mark_set(struct st_table *tbl); - -/** - * Marks keys and values associated inside of the given table. This is one of - * the GC utility functions that you can call when you design your own - * ::rb_data_type_struct::dmark. - * - * @param[in] tbl A table to mark. - * @post Objects stored in `tbl` are marked. - */ -void rb_mark_hash(struct st_table *tbl); - -/** - * Updates references inside of tables. After you marked values using - * rb_mark_tbl_no_pin(), the objects inside of the table could of course be - * moved. This function is to fixup those references. You can call this from - * your ::rb_data_type_struct::dcompact. - * - * @param[out] ptr A table that potentially includes moved references. - * @post Moved references, if any, are corrected. - */ -void rb_gc_update_tbl_refs(st_table *ptr); - -/** - * Identical to rb_gc_mark(), except it allows the passed value be a - * non-object. For instance pointers to different type of memory regions are - * allowed here. Such values are silently ignored. This is one of the GC - * utility functions that you can call when you design your own - * ::rb_data_type_struct::dmark. - * - * @param[out] obj A possible object. - * @post `obj` is marked, if possible. - */ -void rb_gc_mark_maybe(VALUE obj); - -/** - * Marks an object. This is one of the GC utility functions that you can call - * when you design your own ::rb_data_type_struct::dmark. - * - * @param[out] obj Arbitrary Ruby object. - * @post `obj` is marked. - */ -void rb_gc_mark(VALUE obj); - -/** - * Maybe this is the only function provided for C extensions to control the - * pinning of objects, so let us describe it in detail. These days Ruby's GC - * is copying. As far as an object's physical address is guaranteed unused, it - * can move around the object space. Our GC engine rearranges these objects - * after it reclaims unreachable objects from our object space, so that the - * space is compact (improves memory locality). This is called the - * "compaction" phase, and works well most of the time... as far as there are - * no C extensions. C extensions complicate the scenario because Ruby core - * cannot detect any use of the physical address of an object inside of C - * functions. In order to prevent memory corruptions, objects observable from - * C extensions are "pinned"; they stick to where they are born until they die, - * just in case any C extensions touch their raw pointers. This variant of - * scheme is called "Mostly-Copying" garbage collector. Authors of C - * extensions, however, can extremely carefully write them to become - * compaction-aware. To do so avoid referring to a Ruby object from inside of - * your struct in the first place. But if that is not possible, use this - * function from your ::rb_data_type_struct::dmark then. This way objects - * marked using it are considered movable. If you chose this way you have to - * manually fix up locations of such moved pointers using rb_gc_location(). - * - * @see Bartlett, Joel F., "Compacting Garbage Collection with Ambiguous - * Roots", ACM SIGPLAN Lisp Pointers Volume 1 Issue 6 pp. 3-12, - * April-May-June, 1988. https://doi.org/10.1145/1317224.1317225 - * - * @param[in] obj Object that is movable. - * @post Values stored in `tbl` are marked. - */ -void rb_gc_mark_movable(VALUE obj); - -/** - * Finds a new "location" of an object. An object can be moved on compaction. - * This function projects its new abode, or just returns the passed object if - * not moved. This is one of the GC utility functions that you can call when - * you design your own ::rb_data_type_struct::dcompact. - * - * @param[in] obj An object, possibly already moved to somewhere else. - * @return An object, which holds the current contents of former `obj`. - */ -VALUE rb_gc_location(VALUE obj); - -/** - * Asserts that the passed object is no longer needed. Such objects are - * reclaimed sooner or later so this function is not mandatory. But sometimes - * you can know from your application knowledge that an object is surely dead - * at some point. Calling this as a hint can be a polite way. - * - * @param[out] obj Object, dead. - * @pre `obj` have never been passed to this function before. - * @post `obj` could be invalidated. - * @warning It is a failure to pass an object multiple times to this - * function. - * @deprecated This is now a no-op function. - */ -RBIMPL_ATTR_DEPRECATED(("this is now a no-op function")) -void rb_gc_force_recycle(VALUE obj); - -/** - * Triggers a GC process. This was the only GC entry point that we had at the - * beginning. Over time our GC evolved. Now what this function does is just a - * very simplified variation of the entire GC algorithms. A series of - * procedures kicked by this API is called a "full" GC. - * - * - It immediately scans the entire object space to sort the dead. - * - It immediately reclaims any single dead bodies to reuse later. - * - * It is worth noting that the procedures above do not include evaluations of - * finalisers. They run later. - * - * @internal - * - * Finalisers are deferred until we can handle interrupts. See - * `rb_postponed_job_flush` in vm_trace.c. - * - * Of course there are GC that are not "full". For instance this one and the - * GC which runs when we are running out of memory are different. See - * `gc_profile_record_flag` defined in gc.c for the kinds of GC. - * - * In spite of the name this is not what everything that a GC can trigger. As - * of writing it seems this function does not trigger compaction. But this - * might change in future. - */ -void rb_gc(void); - -/** - * Copy&paste an object's finaliser to another. This is one of the GC utility - * functions that you can call when you design your own `initialize_copy`, - * `initialize_dup`, `initialize_clone`. - * - * @param[out] dst Destination object. - * @param[in] src Source object. - * @post `dst` and `src` share the same finaliser. - * - * @internal - * - * But isn't it easier for you to call super, and let `Object#initialize_copy` - * call this function instead? - */ -void rb_gc_copy_finalizer(VALUE dst, VALUE src); - -/** - * (Re-) enables GC. This makes sense only after you called rb_gc_disable(). - * - * @retval RUBY_Qtrue GC was disabled before. - * @retval RUBY_Qfalse GC was enabled before. - * @post GC is enabled. - * - * @internal - * - * This is one of such exceptional functions that does not raise both Ruby - * exceptions and C++ exceptions. - */ -VALUE rb_gc_enable(void); - -/** - * Disables GC. This prevents automatic GC runs when the process is running - * out of memory. Such situations shall result in rb_memerror(). However this - * does not prevent users from manually invoking rb_gc(). That should work. - * People abused this by disabling GC at the beginning of an event loop, - * process events without GC overheads, then manually force reclaiming garbage - * at the bottom of the loop. However because our GC is now much smarter than - * just calling rb_gc(), this technique is proven to be sub-optimal these days. - * It is believed that there is currently practically no needs of this - * function. - * - * @retval RUBY_Qtrue GC was disabled before. - * @retval RUBY_Qfalse GC was enabled before. - * @post GC is disabled. - */ -VALUE rb_gc_disable(void); - -/** - * Identical to rb_gc(), except the return value. - * - * @return Always returns ::RUBY_Qnil. - */ -VALUE rb_gc_start(void); - -/** - * Assigns a finaliser for an object. Each objects can have objects (typically - * blocks) that run immediately after that object dies. They are called - * finalisers of an object. This function associates a finaliser object with a - * target object. - * - * @note Note that finalisers run _after_ the object they finalise dies. You - * cannot for instance call its methods. - * @note If your finaliser references the object it finalises that object - * loses any chance to become a garbage; effectively leaks memory until - * the end of the process. - * - * @param[in] obj Target to finalise. - * @param[in] block Something `call`able. - * @exception rb_eRuntimeError Somehow `obj` cannot have finalisers. - * @exception rb_eFrozenError `obj` is frozen. - * @exception rb_eArgError `block` doesn't respond to `call`. - * @return The passed `block`. - * @post `block` runs after `obj` dies. - */ -VALUE rb_define_finalizer(VALUE obj, VALUE block); - -/** - * Modifies the object so that it has no finalisers at all. This function is - * mainly provided for symmetry. No practical usages can be thought of. - * - * @param[out] obj Object to clear its finalisers. - * @exception rb_eFrozenError `obj` is frozen. - * @return The passed `obj`. - * @post `obj` has no finalisers. - * @note There is no way to undefine a specific part of many finalisers - * that `obj` could have. All you can do is to clear them all. - */ -VALUE rb_undefine_finalizer(VALUE obj); - -/** - * Identical to rb_gc_stat(), with "count" parameter. - * - * @return Lifetime total number of runs of GC. - */ -size_t rb_gc_count(void); - -/** - * Obtains various GC related profiles. The parameter can be either a Symbol - * or a Hash. If a Hash is passed, it is filled with everything currently - * available. If a Symbol is passed just that portion is returned. - * - * Possible variations of keys you can pass here change from version to - * version. You can get the list of known keys by passing an empty hash and - * let it be filled. - * - * @param[in,out] key_or_buf A Symbol, or a Hash. - * @exception rb_eTypeError Neither Symbol nor Hash. - * @exception rb_eFrozenError Frozen hash is passed. - * @return In case a Hash is passed it returns 0. Otherwise the - * profile value associated with the given key is returned. - * @post In case a Hash is passed it is filled with values. - */ -size_t rb_gc_stat(VALUE key_or_buf); - -/** - * Obtains various info regarding the most recent GC run. This includes for - * instance the reason of the GC. The parameter can be either a Symbol or a - * Hash. If a Hash is passed, it is filled with everything currently - * available. If a Symbol is passed just that portion is returned. - * - * Possible variations of keys you can pass here change from version to - * version. You can get the list of known keys by passing an empty hash and - * let it be filled. - * - * @param[in,out] key_or_buf A Symbol, or a Hash. - * @exception rb_eTypeError Neither Symbol nor Hash. - * @exception rb_eFrozenError Frozen hash is passed. - * @return In case a Hash is passed it returns that hash. Otherwise - * the profile value associated with the given key is returned. - * @post In case a Hash is passed it is filled with values. - */ -VALUE rb_gc_latest_gc_info(VALUE key_or_buf); - -/** - * Informs that there are external memory usages. Our GC runs when we are - * running out of memory. The amount of memory, however, can increase/decrease - * behind-the-scene. For instance DLLs can allocate memories using `mmap(2)` - * etc, which are opaque to us. Registering such external allocations using - * this function enables proper detection of how much memories an object used - * as a whole. That will trigger GCs more often than it would otherwise. You - * can also pass negative numbers here, to indicate that such external - * allocations are gone. - * - * @param[in] diff Amount of memory increased(+)/decreased(-). - */ -void rb_gc_adjust_memory_usage(ssize_t diff); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_GC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/hash.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/hash.h deleted file mode 100644 index 9d2ce82..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/hash.h +++ /dev/null @@ -1,318 +0,0 @@ -#ifndef RBIMPL_INTERN_HASH_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_HASH_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cHash. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/st.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* hash.c */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_st_foreach(), except it raises exceptions when the callback - * function tampers the table during iterating over it. - * - * @param[in] st Table to iterate over. - * @param[in] func Callback function to apply. - * @param[in] arg Passed as-is to `func`. - * @exception rb_eRuntimeError `st` was tampered during iterating. - * - * @internal - * - * This is declared here because exceptions are Ruby level concept. - * - * This is in fact a very thin wrapper of rb_st_foreach_check(). - */ -void rb_st_foreach_safe(struct st_table *st, st_foreach_callback_func *func, st_data_t arg); - -/** @alias{rb_st_foreach_safe} */ -#define st_foreach_safe rb_st_foreach_safe - -/** - * Try converting an object to its hash representation using its `to_hash` - * method, if any. If there is no such thing, returns ::RUBY_Qnil. - * - * @param[in] obj Arbitrary ruby object to convert. - * @exception rb_eTypeError `obj.to_hash` returned something non-Hash. - * @retval RUBY_Qnil No conversion from `obj` to hash defined. - * @retval otherwise Converted hash representation of `obj`. - * @see rb_io_check_io - * @see rb_check_array_type - * @see rb_check_string_type - * - * @internal - * - * There is no rb_hash_to_hash() that analogous to rb_str_to_str(). - * Intentional or ...? - */ -VALUE rb_check_hash_type(VALUE obj); - -RBIMPL_ATTR_NONNULL(()) -/** - * Iterates over a hash. This basically does the same thing as - * rb_st_foreach(). But because the passed hash is a Ruby object, its keys and - * values are both Ruby objects. - * - * @param[in] hash An instance of ::rb_cHash to iterate over. - * @param[in] func Callback function to yield. - * @param[in] arg Passed as-is to `func`. - * @exception rb_eRuntimeError `hash` was tampered during iterating. - */ -void rb_hash_foreach(VALUE hash, int (*func)(VALUE key, VALUE val, VALUE arg), VALUE arg); - -/** - * Calculates a message authentication code of the passed object. The return - * value is a very small integer used as an index of a key of a table. In - * order to calculate the value this function calls `#hash` method of the - * passed object. Ruby provides you a default implementation. But if you - * implement your class in C, that default implementation cannot know the - * underlying data structure. You must implement your own `#hash` method then, - * which must return an integer of uniform distribution in a sufficiently - * instant manner. - * - * @param[in] obj Arbitrary Ruby object. - * @exception rb_eTypeError `obj.hash` returned something non-Integer. - * @return A small integer. - * @note `#hash` can return very big integers, but they get truncated. - */ -VALUE rb_hash(VALUE obj); - -/** - * Creates a new, empty hash object. - * - * @return An allocated new instance of ::rb_cHash. - */ -VALUE rb_hash_new(void); - -/** - * Duplicates a hash. - * - * @param[in] hash An instance of ::rb_cHash. - * @return An allocated new instance of ::rb_cHash, whose contents are - * a verbatim copy of from `hash`. - */ -VALUE rb_hash_dup(VALUE hash); - -/** @alias{rb_obj_freeze} */ -VALUE rb_hash_freeze(VALUE obj); - -/** - * Queries the given key in the given hash table. If there is the key in the - * hash, returns the value associated with the key. Otherwise it returns the - * "default" value (defined per hash table). - * - * @param[in] hash Hash table to look into. - * @param[in] key Hash key to look for. - * @return Either the value associated with the key, or the default one if - * absent. - */ -VALUE rb_hash_aref(VALUE hash, VALUE key); - -/** - * Identical to rb_hash_aref(), except it always returns ::RUBY_Qnil for - * misshits. - * - * @param[in] hash Hash table to look into. - * @param[in] key Hash key to look for. - * @return Either the value associated with the key, or ::RUBY_Qnil if - * absent. - * @note A hash can store ::RUBY_Qnil as an ordinary value. You cannot - * distinguish whether the key is missing, or just its associated - * value happens to be ::RUBY_Qnil, as far as you use this API. - */ -VALUE rb_hash_lookup(VALUE hash, VALUE key); - -/** - * Identical to rb_hash_lookup(), except you can specify what to return on - * misshits. This is much like 2-arguments version of `Hash#fetch`. - * - * ```CXX - * VALUE hash; - * VALUE key; - * VALUE tmp = rb_obj_alloc(rb_cObject); - * VALUE val = rb_hash_lookup2(hash, key, tmp); - * if (val == tmp) { - * printf("misshit"); - * } - * else { - * printf("hit"); - * } - * ``` - * - * @param[in] hash Hash table to look into. - * @param[in] key Hash key to look for. - * @param[in] def Default value. - * @retval def `hash` does not have `key`. - * @retval otherwise The value associated with `key`. - */ -VALUE rb_hash_lookup2(VALUE hash, VALUE key, VALUE def); - -/** - * Identical to rb_hash_lookup(), except it yields the (implicitly) passed - * block instead of returning ::RUBY_Qnil. - * - * @param[in] hash Hash table to look into. - * @param[in] key Hash key to look for. - * @exception rb_eKeyError No block given. - * @return Either the value associated with the key, or what the block - * evaluates to if absent. - */ -VALUE rb_hash_fetch(VALUE hash, VALUE key); - -/** - * Inserts or replaces ("upsert"s) the objects into the given hash table. This - * basically associates the given value with the given key. On duplicate key - * this function updates its associated value with the given one. Otherwise it - * inserts the association at the end of the table. - * - * @param[out] hash Target hash table to modify. - * @param[in] key Arbitrary Ruby object. - * @param[in] val A value to be associated with `key`. - * @exception rb_eFrozenError `hash` is frozen. - * @return The passed `val` - * @post `val` is associated with `key` in `hash`. - */ -VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val); - -/** - * Swipes everything out of the passed hash table. - * - * @param[out] hash Target to clear. - * @exception rb_eFrozenError `hash`is frozen. - * @return The passed `hash` - * @post `hash` has no contents. - */ -VALUE rb_hash_clear(VALUE hash); - -/** - * Deletes each entry for which the block returns a truthy value. If there is - * no block given, it returns an enumerator that does the thing. - * - * @param[out] hash Target hash to modify. - * @exception rb_eFrozenError `hash` is frozen. - * @retval hash The hash is modified. - * @retval otherwise An instance of ::rb_cEnumerator that does it. - */ -VALUE rb_hash_delete_if(VALUE hash); - -/** - * Deletes the passed key from the passed hash table, if any. - * - * @param[out] hash Target hash to modify. - * @param[in] key Key to delete. - * @retval RUBY_Qnil `hash` has no such key as `key`. - * @retval otherwise What was associated with `key`. - * @post `hash` has no such key as `key`. - */ -VALUE rb_hash_delete(VALUE hash, VALUE key); - -/** - * Inserts a list of key-value pairs into a hash table at once. It is - * semantically identical to repeatedly calling rb_hash_aset(), but can be - * faster than that. - * - * @param[in] argc Length of `argv`, must be even. - * @param[in] argv A list of key, value, key, value, ... - * @param[out] hash Target hash table to modify. - * @post `hash` has contents from `argv`. - * @note `argv` is allowed to be NULL as long as `argc` is zero. - * - * @internal - * - * What happens for duplicated keys? Well it silently discards older ones to - * accept the newest (rightmost) one. This behaviour also mimics repeated call - * of rb_hash_aset(). - */ -void rb_hash_bulk_insert(long argc, const VALUE *argv, VALUE hash); - -/** - * Type of callback functions to pass to rb_hash_update_by(). - * - * @param[in] newkey A key of the table. - * @param[in] oldkey Value associated with `key` in hash1. - * @param[in] value Value associated with `key` in hash2. - * @return Either one of the passed values to take. - */ -typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value); - -/** - * Destructively merges two hash tables into one. It resolves key conflicts by - * calling the passed function and take its return value. - * - * @param[out] hash1 Target hash to be modified. - * @param[in] hash2 A hash to merge into `hash1`. - * @param[in] func Conflict reconciler. - * @exception rb_eFrozenError `hash1` is frozen. - * @exception rb_eRuntimeError `hash2` is updated instead. - * @return The passed `hash1`. - * @post Contents of `hash2` is merged into `hash1`. - * @note You can pass zero to `func`. This means values from `hash2` - * are always taken. - */ -VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func); - -/* file.c */ - -/** - * This function is mysterious. What it does is not immediately obvious. Also - * what it does seems platform dependent. - * - * @param[in] path A local path. - * @retval 0 The "check" succeeded. - * @retval otherwise The "check" failed. - */ -int rb_path_check(const char *path); - -/* hash.c */ - -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @return 0 always. - */ -int rb_env_path_tainted(void); - -/** - * Destructively removes every environment variables of the running process. - * - * @return The `ENV` object. - * @post The process has no environment variables. - */ -VALUE rb_env_clear(void); - -/** - * Identical to #RHASH_SIZE(), except it returns the size in Ruby's integer - * instead of C's. - * - * @param[in] hash A hash object. - * @return The size of the hash. - */ -VALUE rb_hash_size(VALUE hash); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_HASH_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/io.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/io.h deleted file mode 100644 index 02c2497..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/io.h +++ /dev/null @@ -1,661 +0,0 @@ -#ifndef RBIMPL_INTERN_IO_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_IO_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cIO. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* io.c */ - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define rb_defout rb_stdout - -/* string.c */ /* ...why? moved in commit de7161526014b781468cea5d84411e23be */ - -/** - * The field separator character for inputs, or the `$;`. This affects how - * `String#split` works. You can set this via the `-F` command line option. - * You can also assign arbitrary ruby objects programmatically, but it makes - * best sense for you to assign a regular expression here. - * - * @internal - * - * Tidbit: "fs" comes from AWK's `FS` variable. - */ -RUBY_EXTERN VALUE rb_fs; - -/* io.c */ /* ...why? given rb_fs is in string.c? */ - -/** - * The field separator character for outputs, or the `$,`. This affects how - * `Array#join` works. - * - * @deprecated Assigning anything other than ::RUBY_Qnil to this variable is - * deprecated. - */ -RUBY_EXTERN VALUE rb_output_fs; - -/** - * The record separator character for inputs, or the `$/`. This affects how - * `IO#gets` works. You can set this via the `-0` command line option. - * - * @deprecated Assigning anything other than ::RUBY_Qnil to this variable is - * deprecated. - * - * @internal - * - * Tidbit: "rs" comes from AWK's `RS` variable. - */ -RUBY_EXTERN VALUE rb_rs; - -/** - * This is the default value of ::rb_rs, i.e. `"\n"`. It seems it has always - * been just a newline string since the beginning. Not sure why C codes has to - * use this, given there is no way for ruby programs to interface. - * - * Also it has not been deprecated for unknown reasons. - */ -RUBY_EXTERN VALUE rb_default_rs; - -/** - * The record separator character for outputs, or the `$\`. This affects how - * `IO#print` works. - * - * @deprecated Assigning anything other than ::RUBY_Qnil to this variable is - * deprecated. - */ -RUBY_EXTERN VALUE rb_output_rs; - -/** - * Writes the given string to the given IO. - * - * @param[out] io An IO, opened for writing. - * @param[in] str A String-like object to write to `io`. - * @exception rb_eIOError `io` isn't opened for writing. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eTypeError No conversion from `str` to String. - * @exception rb_eSystemCallError `write(2)` failed for some reason. - * @return The number of bytes written to the `io`. - * @post `str` (up to the length of return value) is written to `io`. - * @note This function blocks. - * @note Partial write is a thing. It must be at least questionable not - * to check the return value. - * - * @internal - * - * Above description is in fact inaccurate. This function can take arbitrary - * objects, and calls their `write` method. What is written above in fact - * describes how `IO#write` works. You can pass StringIO etc. here, and would - * work completely differently. - */ -VALUE rb_io_write(VALUE io, VALUE str); - -/** - * Reads a "line" from the given IO. A line here means a chunk of characters - * which is terminated by either `"\n"` or an EOF. - * - * @param[in,out] io An IO, opened for reading. - * @exception rb_eIOError `io` isn't opened for reading. - * @exception rb_eFrozenError `io` is frozen. - * @retval RUBY_Qnil `io` is at EOF. - * @retval otherwise An instance of ::rb_cString. - * @post `io` is read. - * @note Unlike `IO#gets` it doesn't set `$_`. - * @note Unlike `IO#gets` it doesn't consider `$/`. - */ -VALUE rb_io_gets(VALUE io); - -/** - * Reads a byte from the given IO. - * - * @note In Ruby a "byte" always means an 8 bit integer ranging from - * 0 to 255 inclusive. - * @param[in,out] io An IO, opened for reading. - * @exception rb_eIOError `io` is not opened for reading. - * @exception rb_eFrozenError `io` is frozen. - * @retval RUBY_Qnil `io` is at EOF. - * @retval otherwise An instance of ::rb_cInteger. - * @post `io` is read. - * - * @internal - * - * Of course there was a function called `rb_io_getc()`. It was removed in - * commit a25fbe3b3e531bbe479f344af24eaf9d2eeae6ea. - */ -VALUE rb_io_getbyte(VALUE io); - -/** - * "Unget"s a string. This function pushes back the passed string onto the - * passed IO, such that a subsequent buffered read will return it. If the - * passed content is in fact an integer, a single character string of that - * codepoint of the encoding of the IO will be pushed back instead. - * - * It might be counter-intuitive but this function can push back multiple - * characters at once. Also this function can be called multiple times on a - * same IO. Also a "character" can be wider than a byte, depending on the - * encoding of the IO. - * - * @param[out] io An IO, opened for reading. - * @param[in] c Either a String, or an Integer. - * @exception rb_eIOError `io` is not opened for reading. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eTypeError No conversion from `c` to ::rb_cString. - * @return Always returns ::RUBY_Qnil. - * - * @internal - * - * Why there is ungetc, given there is no getc? - */ -VALUE rb_io_ungetc(VALUE io, VALUE c); - -/** - * Identical to rb_io_ungetc(), except it doesn't take the encoding of the - * passed IO into account. When an integer is passed, it just casts that value - * to C's `unsigned char`, and pushes that back. - * - * @param[out] io An IO, opened for reading. - * @param[in] b Either a String, or an Integer. - * @exception rb_eIOError `io` is not opened for reading. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eTypeError No conversion from `b` to ::rb_cString. - * @return Always returns ::RUBY_Qnil. - */ -VALUE rb_io_ungetbyte(VALUE io, VALUE b); - -/** - * Closes the IO. Any buffered contents are flushed to the operating system. - * Any future operations against the IO would raise ::rb_eIOError. In case the - * io was created using `IO.popen`, it also sets the `$?`. - * - * @param[out] io Target IO to close. - * @return Always returns ::RUBY_Qnil. - * @post `$?` is set in case IO is a pipe. - * @post No operations are possible against `io` any further. - * @note This can block to flush the contents. - * @note This can wake other threads up, especially those who are - * `select()`-ing the passed IO. - * @note Multiple invocations of this function over the same IO again - * and again is not an error, since Ruby 2.3. - * - * @internal - * - * You can close a frozen IO... Is this intentional? - */ -VALUE rb_io_close(VALUE io); - -/** - * Flushes any buffered data within the passed IO to the underlying operating - * system. - * - * @param[out] io Target IO to flush. - * @exception rb_eIOError `io` is closed. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eSystemCallError `write(2)` failed for some reason. - * @return The passed `io`. - * @post `io`'s buffers are empty. - * @note This operation also discards the read buffer. Should basically - * be harmless, but in an esoteric situation like when user pushed - * something different from what was read using `ungetc`, this - * operation in fact changes the behaviour of the `io`. - * @note Buffering is difficult. This operation flushes the data from - * our userspace to the kernel, but that doesn't always mean you - * can expect them stored persistently onto your hard drive. - */ -VALUE rb_io_flush(VALUE io); - -/** - * Queries if the passed IO is at the end of file. "The end of file" here mans - * that there are no more data to read. This function blocks until the read - * buffer is filled in, and if that operation reached the end of file, it still - * returns ::RUBY_Qfalse (because there are data yet in that buffer). It - * returns ::RUBY_Qtrue once after the buffer is cleared. - * - * @param[in,out] io Target io to query. - * @exception rb_eIOError `io` is not opened for reading. - * @exception rb_eFrozenError `io` is frozen. - * @retval RUBY_Qfalse There are things yet to be read. - * @retval RUBY_Qtrue "The end of file" situation. - */ -VALUE rb_io_eof(VALUE io); - -/** - * Sets the binmode. This operation nullifies the effect of textmode (newline - * conversion from `"\r\n"` to `"\n"` or vice versa). Note that it doesn't - * stop character encodings conversions. For instance an IO created using: - * - * ```ruby - * File.open( - * "/dev/urandom", - * textmode: true, - * external_encoding: Encoding::GB18030, - * internal_encoding: Encoding::Windows_31J) - * ``` - * - * has both newline and character conversions. If you pass such IO to this - * function, only the `textmode:true` part is cancelled. Texts read through - * the IO would still be encoded in Windows-31J; texts written to the IO will - * be encoded in GB18030. - * - * @param[out] io Target IO to modify. - * @exception rb_eFrozenError `io` is frozen. - * @return The passed `io`. - * @post `io` is in binmode. - * @note There is no equivalent operation in Ruby. You can do this only - * in C. - */ -VALUE rb_io_binmode(VALUE io); - -/** - * Forces no conversions be applied to the passed IO. Unlike rb_io_binmode(), - * this cancels any newline conversions as well as encoding conversions. Any - * texts read/written through the IO will be the verbatim binary contents. - * - * @param[out] io Target IO to modify. - * @exception rb_eFrozenError `io` is frozen. - * @return The passed `io`. - * @post `io` is in binmode. Both external/internal encoding are set to - * rb_ascii8bit_encoding(). - * @note This is the implementation of `IO#binmode`. - */ -VALUE rb_io_ascii8bit_binmode(VALUE io); - -/** - * Identical to rb_io_write(), except it always returns the passed IO. - * - * @param[out] io An IO, opened for writing. - * @param[in] str A String-like object to write to `io`. - * @exception rb_eIOError `io` isn't opened for writing. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eTypeError No conversion from `str` to String. - * @exception rb_eSystemCallError `write(2)` failed. - * @return The passed `io`. - * @post `str` is written to `io`. - * @note This function blocks. - * - * @internal - * - * As rb_io_write(), above description is a fake. - */ -VALUE rb_io_addstr(VALUE io, VALUE str); - -/** - * This is a rb_f_sprintf() + rb_io_write() combo. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv A format string followed by its arguments. - * @param[out] io An IO, opened for writing. - * @exception rb_eIOError `io` isn't opened for writing. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eTypeError No conversion from `str` to String. - * @exception rb_eSystemCallError `write(2)` failed. - * @return Always returns ::RUBY_Qnil. - * @post `argv` is formatted, then written to `io`. - * @note This function blocks. - * - * @internal - * - * As rb_io_write(), above descriptions include fakes. - */ -VALUE rb_io_printf(int argc, const VALUE *argv, VALUE io); - -/** - * Iterates over the passed array to apply rb_io_write() individually. If - * there is `$,`, this function inserts the string in middle of each - * iterations. If there is `$\`, this function appends the string at the end. - * If the array is empty, this function outputs `$_`. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv An array of strings to display. - * @param[out] io An IO, opened for writing. - * @exception rb_eIOError `io` isn't opened for writing. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eTypeError No conversion from `str` to String. - * @exception rb_eSystemCallError `write(2)` failed. - * @return Always returns ::RUBY_Qnil. - * @post `argv` is written to `io`. - * @note This function blocks. - * @note This function calls rb_io_write() multiple times. Which means, - * it is not an atomic operation. Outputs from multiple threads - * can interleave. - * - * @internal - * - * As rb_io_write(), above descriptions include fakes. - */ -VALUE rb_io_print(int argc, const VALUE *argv, VALUE io); - -/** - * Iterates over the passed array to apply rb_io_write() individually. Unlike - * rb_io_print(), this function prints a newline per each element. It also - * flattens the passed array (OTOH rb_io_print() just resorts to - * rb_ary_to_s()). - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv An array of strings to display. - * @param[out] io An IO, opened for writing. - * @exception rb_eIOError `io` isn't opened for writing. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eTypeError No conversion from `str` to String. - * @exception rb_eSystemCallError `write(2)` failed. - * @return Always returns ::RUBY_Qnil. - * @post `argv` is written to `io`. - * @note This function blocks. - * @note This function calls rb_io_write() multiple times. Which means, - * it is not an atomic operation. Outputs from multiple threads - * can interleave. - * - * @internal - * - * As rb_io_write(), above descriptions include fakes. - */ -VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io); - -/** - * Creates an IO instance whose backend is the given file descriptor. C - * extension libraries sometimes have file descriptors created elsewhere (maybe - * deep inside of another shared library), which they want ruby programs to - * handle. This function is handy for such situations. - * - * @param[in] fd Target file descriptor. - * @param[in] flags Flags, e.g. `O_CREAT|O_EXCL` - * @param[in] path The path of the file that backs `fd`, for diagnostics. - * @return An allocated instance of ::rb_cIO. - * @note Leave `path` NULL if you don't know. - */ -VALUE rb_io_fdopen(int fd, int flags, const char *path); - -RBIMPL_ATTR_NONNULL(()) -/** - * Opens a file located at the given path. - * - * `fmode` is a C string that represents the open mode. It can be one of: - * - * - `r` (means `O_RDONLY`), - * - `w` (means `O_WRONLY | O_TRUNC | O_CREAT`), - * - `a` (means `O_WRONLY | O_APPEND | O_CREAT`), - * - * Followed by zero or more combinations of: - * - * - `b` (means `_O_BINARY`), - * - `t` (means `_O_TEXT`), - * - `+` (means `O_RDWR`), - * - `x` (means `O_TRUNC`), or - * - `:[BOM|]enc[:enc]` (see below). - * - * This last one specifies external (and internal if any) encodings, - * respectively. If optional `BOM|` is specified and the specified external - * encoding is capable of expressing BOMs, opening file's contents' byte order - * is auto-detected using the mechanism. - * - * So for instance, fmode of `"rt|BOM:utf-16le:utf-8"` specifies that... - * - * - the physical representation of the contents of the file is in UTF-16; - * - honours its BOM but assumes little endian if absent; - * - opens the file for reading; - * - what is read is converted into UTF-8; - * - with newlines cannibalised to `\n`. - * - * @param[in] fname Path to open. - * @param[in] fmode Mode specifier much like `fopen(3)`. - * @exception rb_eArgError `fmode` contradicted (e.g. `"bt"`). - * @exception rb_eSystemCallError `open(2)` failed for some reason. - * @return An instance of ::rb_cIO. - */ -VALUE rb_file_open(const char *fname, const char *fmode); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_file_open(), except it takes the pathname as a Ruby's string - * instead of C's. In case the passed Ruby object is a non-String it tries to - * call `#to_path`. - * - * @param[in] fname Path to open. - * @param[in] fmode Mode specifier much like `fopen(3)`. - * @exception rb_eTypeError `fname` is not a String. - * @exception rb_eEncCompatError `fname` is not ASCII-compatible. - * @exception rb_eArgError `fmode` contradicted (e.g. `"bt"`). - * @exception rb_eSystemCallError `open(2)` failed for some reason. - * @return An instance of ::rb_cIO. - */ -VALUE rb_file_open_str(VALUE fname, const char *fmode); - -/** - * Much like rb_io_gets(), but it reads from the mysterious ARGF object. ARGF - * in this context can be seen as a virtual IO which concatenates contents of - * the files passed to the process via the ARGV, or just STDIN if there are no - * such files. - * - * Unlike rb_io_gets() this function sets `$_`. - * - * @exception rb_eFrozenError ARGF resorts to STDIN but it is frozen. - * @retval RUBY_Qnil ARGF is at EOF. - * @retval otherwise An instance of ::rb_cString. - * @post ARGF is read. - * @post `$_` is set. - * - * @internal - * - * In reality, this function can call `ARGF.gets`. Its redefinition can affect - * the behaviour. - * - * Also, you can tamper ARGV on-the-fly in middle of ARGF usages: - * - * ``` - * gets # Reads the first file. - * ARGV << '/proc/self/limits' # Adds a file. - * gets # Can read from /proc/self/limits. - * ``` - */ -VALUE rb_gets(void); - -RBIMPL_ATTR_NONNULL(()) -/** - * Writes the given error message to somewhere applicable. On Windows it goes - * to the console. On POSIX environments it goes to the standard error. - * - * @warning IT IS A BAD IDEA to use this function form your C extensions. - * It is often annoying when GUI applications write to consoles; - * users don't want to look at there. Programmers also want to - * control the cause of the message itself, like by rescuing an - * exception. Just let ruby handle errors. That must be better than - * going your own way. - * - * @param[in] str Error message to display. - * @post `str` is written to somewhere. - * - * @internal - * - * AFAIK this function is listed here without marked deprecated because there - * are usages of this function in the wild. - */ -void rb_write_error(const char *str); - -/** - * Identical to rb_write_error(), except it additionally takes the message's - * length. Necessary when you want to handle wide characters. - * - * @param[in] str Error message to display. - * @param[in] len Length of `str`, in bytes. - * @post `str` is written to somewhere. - */ -void rb_write_error2(const char *str, long len); - -/** - * Closes everything. In case of POSIX environments, a child process inherits - * its parent's opened file descriptors. Which is nowadays considered as one - * of the UNIX mistakes. This function closes such inherited file descriptors. - * When your C extension needs to have a child process, don't forget to call - * this from your child process right before exec. - * - * @param[in] lowfd Lower bound of FDs (you want STDIN to remain, no?). - * @param[in] maxhint Hint of max FDs. - * @param[in] noclose_fds A hash, whose keys are an allowlist. - * - * @internal - * - * As of writing, in spite of the name, this function does not actually close - * anything. It just sets `FD_CLOEXEC` for everything and let `execve(2)` to - * atomically close them at once. This is because as far as we know there are - * no such platform that has `fork(2)` but lacks `FD_CLOEXEC`. - * - * Because this function is expected to run on a forked process it is entirely - * async-signal-safe. - */ -void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds); - -RBIMPL_ATTR_NONNULL(()) -/** - * This is an rb_cloexec_pipe() + rb_update_max_fd() combo. - * - * @param[out] pipes Return buffer. Must at least hold 2 elements. - * @retval 0 Successful creation of a pipe. - * @retval -1 Failure in underlying system call(s). - * @post `pipes` is filled with file descriptors. - * @post `errno` is set on failure. - */ -int rb_pipe(int *pipes); - -/** - * Queries if the given FD is reserved or not. Occasionally Ruby interpreter - * opens files for its own purposes. Use this function to prevent touching - * such behind-the-scene descriptors. - * - * @param[in] fd Target file descriptor. - * @retval 1 `fd` is reserved. - * @retval 0 Otherwise. - */ -int rb_reserved_fd_p(int fd); - -/** @alias{rb_reserved_fd_p} */ -#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd) - -/** - * Opens a file that closes on exec. In case of POSIX environments, a child - * process inherits its parent's opened file descriptors. Which is nowadays - * considered as one of the UNIX mistakes. This function opens a file - * descriptor as `open(2)` does, but additionally instructs the operating - * system that we don't want it be seen from child processes. - * - * @param[in] pathname File path to open. - * @param[in] flags Open mode, as in `open(2)`. - * @param[in] mode File mode, in case of `O_CREAT`. - * @retval -1 `open(2)` failed for some reason. - * @retval otherwise An allocated new file descriptor. - * @note This function does not raise. - * - * @internal - * - * Whether this function can take NULL or not depends on the underlying open(2) - * system call implementation but @shyouhei doesn't think it's worth trying. - */ -int rb_cloexec_open(const char *pathname, int flags, mode_t mode); - -/** - * Identical to rb_cloexec_fcntl_dupfd(), except it implies minfd is 3. - * - * @param[in] oldfd File descriptor to duplicate. - * @retval -1 `dup2(2)` failed for some reason. - * @retval otherwise An allocated new file descriptor. - * @note This function does not raise. - */ -int rb_cloexec_dup(int oldfd); - -/** - * Identical to rb_cloexec_dup(), except you can specify the destination file - * descriptor. If the destination is already squatted by another file - * descriptor that gets silently closed without any warnings. (This is a spec - * requested by POSIX.) - * - * @param[in] oldfd File descriptor to duplicate. - * @param[in] newfd Return value destination. - * @retval -1 `dup2(2)` failed for some reason. - * @retval newfd An allocated new file descriptor. - * @post Whatever sat at `newfd` gets closed with no notifications. - * @post In case return value is -1 `newfd` is untouched. - * @note This function does not raise. - */ -int rb_cloexec_dup2(int oldfd, int newfd); - -RBIMPL_ATTR_NONNULL(()) -/** - * Opens a pipe with closing on exec. In case of POSIX environments, a child - * process inherits its parent's opened file descriptors. Which is nowadays - * considered as one of the UNIX mistakes. This function opens a pipe as - * `pipe(2)` does, but additionally instructs the operating system that we - * don't want the duplicated FDs be seen from child processes. - * - * @param[out] fildes Return buffer. Must at least hold 2 elements. - * @retval 0 Successful creation of a pipe. - * @retval -1 Failure in underlying system call(s). - * @post `pipes` is filled with file descriptors. - * @post `errno` is set on failure. - */ -int rb_cloexec_pipe(int fildes[2]); - -/** - * Duplicates a file descriptor with closing on exec. In case of POSIX - * environments, a child process inherits its parent's opened file descriptors. - * Which is nowadays considered as one of the UNIX mistakes. This function - * duplicates a file descriptor as `dup(2)` does, but additionally instructs - * the operating system that we don't want the duplicated FD be seen from child - * processes. - * - * @param[in] fd File descriptor to duplicate. - * @param[in] minfd Minimum allowed FD to return. - * @retval -1 `dup(2)` failed for some reason. - * @retval otherwise An allocated new file descriptor. - * @note This function does not raise. - * - * `minfd` is handy when for instance STDERR is closed but you don't want to - * use fd 2. - */ -int rb_cloexec_fcntl_dupfd(int fd, int minfd); - -/** - * Informs the interpreter that the passed fd can be the max. This information - * is used from rb_close_before_exec(). - * - * @param[in] fd An open FD, which can be large. - */ -void rb_update_max_fd(int fd); - -/** - * Sets or clears the close-on-exec flag of the passed file descriptor to the - * desired state. STDIN, STDOUT, STDERR are the exceptional file descriptors - * that shall remain open. All others are to be closed on exec. When a C - * extension library opens a file descriptor using anything other than - * rb_cloexec_open() etc., that file descriptor shall experience this function. - * - * @param[in] fd An open file descriptor. - */ -void rb_fd_fix_cloexec(int fd); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_IO_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/load.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/load.h deleted file mode 100644 index 288a16c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/load.h +++ /dev/null @@ -1,218 +0,0 @@ -#ifndef RBIMPL_INTERN_LOAD_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_LOAD_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_f_require(). - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* load.c */ - -/** - * Loads and executes the Ruby program in the given file. - * - * If the path is an absolute path (e.g. starts with `'/'`), the file will be - * loaded directly using the absolute path. If the path is an explicit - * relative path (e.g. starts with `'./'` or `'../'`), the file will be loaded - * using the relative path from the current directory. Otherwise, the file - * will be searched for in the library directories listed in the `$LOAD_PATH`. - * If the file is found in a directory, this function will attempt to load the - * file relative to that directory. If the file is not found in any of the - * directories in the `$LOAD_PATH`, the file will be loaded using the relative - * path from the current directory. - * - * If the file doesn't exist when there is an attempt to load it, a LoadError - * will be raised. - * - * If the `wrap` parameter is true, the loaded script will be executed under an - * anonymous module, protecting the calling program's global namespace. In no - * circumstance will any local variables in the loaded file be propagated to - * the loading environment. - * - * @param[in] path Pathname of a file to load. - * @param[in] wrap Either to load under an anonymous module. - * @exception rb_eTypeError `path` is not a string. - * @exception rb_eArgError `path` is broken as a pathname. - * @exception rb_eEncCompatError `path` is incompatible with pathnames. - * @exception rb_eLoadError `path` not found. - * @exception rb_eException Any exceptions while loading the contents. - * - * @internal - * - * It seems this function is under the rule of bootsnap's regime? - */ -void rb_load(VALUE path, int wrap); - -/** - * Identical to rb_load(), except it avoids potential global escapes. Such - * global escapes include exceptions, `throw`, `break`, for example. - * - * It first evaluates the given file as rb_load() does. If no global escape - * occurred during the evaluation, it `*state` is set to zero on return. - * Otherwise, it sets `*state` to nonzero. If state is `NULL`, it is not set - * in both cases. - * - * @param[in] path Pathname of a file to load. - * @param[in] wrap Either to load under an anonymous module. - * @param[out] state State of execution. - * @post `*state` is set to zero if succeeded. Nonzero otherwise. - * @warning You have to clear the error info with `rb_set_errinfo(Qnil)` if - * you decide to ignore the caught exception. - * @see rb_load - * @see rb_protect - * - * @internal - * - * Though not a part of our public API, `state` is in fact an - * enum ruby_tag_type. You can see the potential "nonzero" values by looking - * at vm_core.h. - */ -void rb_load_protect(VALUE path, int wrap, int *state); - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries if the given feature has already been loaded into the execution - * context. The "feature" head are things like `"json"` or `"socket"`. - * - * @param[in] feature Name of a library you want to know about. - * @retval 1 Yes there is. - * @retval 0 Not yet. - */ -int rb_provided(const char *feature); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_provided(), except it additionally returns the "canonical" - * name of the loaded feature. This can be handy when for instance you want to - * know the actually loaded library is either `foo.rb` or `foo.so`. - * - * @param[in] feature Name of a library you want to know about. - * @param[out] loading Return buffer. - * @retval 1 Yes there is. - * @retval 0 Not yet. - */ -int rb_feature_provided(const char *feature, const char **loading); - -RBIMPL_ATTR_NONNULL(()) -/** - * Declares that the given feature is already provided by someone else. This - * API can be handy when you have an extension called `foo.so` which, when - * required, also provides functionality of `bar.so`. - * - * @param[in] feature Name of a library which had already been provided. - * @post No further `require` would search `feature`. - */ -void rb_provide(const char *feature); - -/** - * Identical to rb_require_string(), except it ignores the first argument for - * no reason. There seems to be no reason for 3rd party extension libraries to - * use it. - * - * @param[in] self Ignored. Can be anything. - * @param[in] feature Name of a feature, e.g. `"json"`. - * @exception rb_eLoadError No such feature. - * @exception rb_eRuntimeError `$"` is frozen; unable to push. - * @retval RUBY_Qtrue The feature is loaded for the first time. - * @retval RUBY_Qfalse The feature has already been loaded. - * @post `$"` is updated. - */ -VALUE rb_f_require(VALUE self, VALUE feature); - -/** - * Finds and loads the given feature, if absent. - * - * If the feature is an absolute path (e.g. starts with `'/'`), the feature - * will be loaded directly using the absolute path. If the feature is an - * explicit relative path (e.g. starts with `'./'` or `'../'`), the feature - * will be loaded using the relative path from the current directory. - * Otherwise, the feature will be searched for in the library directories - * listed in the `$LOAD_PATH`. - * - * If the feature has the extension `".rb"`, it is loaded as a source file; if - * the extension is `".so"`, `".o"`, or `".dll"`, or the default shared library - * extension on the current platform, Ruby loads the shared library as a Ruby - * extension. Otherwise, Ruby tries adding `".rb"`, `".so"`, and so on to the - * name until found. If the file named cannot be found, a LoadError will be - * raised. - * - * For extension libraries the given feature may use any shared library - * extension. For example, on Linux you can require `"socket.dll"` to actually - * load `socket.so`. - * - * The absolute path of the loaded file is added to `$LOADED_FEATURES`. A file - * will not be loaded again if its path already appears in there. - * - * Any constants or globals within the loaded source file will be available in - * the calling program's global namespace. However, local variables will not - * be propagated to the loading environment. - * - * @param[in] feature Name of a feature, e.g. `"json"`. - * @exception rb_eLoadError No such feature. - * @exception rb_eRuntimeError `$"` is frozen; unable to push. - * @retval RUBY_Qtrue The feature is loaded for the first time. - * @retval RUBY_Qfalse The feature has already been loaded. - * @post `$"` is updated. - */ -VALUE rb_require_string(VALUE feature); - -/** - * @name extension configuration - * @{ - */ - -/** - * Asserts that the extension library that calls this function is aware of - * Ractor. Multiple Ractors run without protecting each other. This doesn't - * interface well with C programs, unless designed with an in-depth - * understanding of how Ractors work. Extension libraries are shut out from - * Ractors by default. This API is to bypass that restriction. Once after it - * was called, successive calls to rb_define_method() etc. become definitions - * of methods that are aware of Ractors. The amendment would be in effect - * until the end of rb_require_string() etc. - * - * @param[in] flag Either the library is aware of Ractors or not. - * @post Methods would be callable form Ractors, if `flag` is true. - */ -void rb_ext_ractor_safe(bool flag); - -/** @alias{rb_ext_ractor_safe} */ -#define RB_EXT_RACTOR_SAFE(f) rb_ext_ractor_safe(f) - -/** - * This macro is to provide backwards compatibility. It must be safe to do - * something like: - * - * ```CXX - * #ifdef HAVE_RB_EXT_RACTOR_SAFE - * rb_ext_ractor_safe(true); - * #endif - * ``` - */ -#define HAVE_RB_EXT_RACTOR_SAFE 1 - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_LOAD_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/marshal.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/marshal.h deleted file mode 100644 index 118d78a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/marshal.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef RBIMPL_INTERN_MARSHAL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_MARSHAL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to rb_mMarshal. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* marshal.c */ - -/** - * Serialises the given object and all its referring objects, to write them - * down to the passed port. - * - * @param[in] obj Target object to dump. - * @param[out] port IO-like destination buffer. - * @exception rb_eTypeError `obj` cannot be dumped for some reason. - * @exception rb_eRuntimeError `obj` was tampered during dumping. - * @exception rb_eArgError Traversal too deep. - * @return The passed `port` as-is. - * @post Serialised representation of `obj` is written to `port`. - * @note `port` is basically an IO but StringIO is also possible. - */ -VALUE rb_marshal_dump(VALUE obj, VALUE port); - -/** - * Deserialises a previous output of rb_marshal_dump() into a network of - * objects. - * - * @param[in,out] port Either IO or String. - * @exception rb_eTypeError `port` is in unexpected type. - * @exception rb_eArgError Contents of `port` is broken. - * @return Object(s) rebuilt using the info from `port`. - * - * SECURITY CONSIDERATIONS - * ======================== - * - * @warning By design, rb_marshal_load() can deserialise almost any - * class loaded into the Ruby process. In many cases this can - * lead to remote code execution if the Marshal data is loaded - * from an untrusted source. - * @warning As a result, rb_marshal_load() is not suitable as a general - * purpose serialisation format and you should never unmarshal - * user supplied input or other untrusted data. - * @warning If you need to deserialise untrusted data, use JSON or - * another serialisation format that is only able to load - * simple, 'primitive' types such as String, Array, Hash, etc. - * Never allow user input to specify arbitrary types to - * deserialise into. - */ -VALUE rb_marshal_load(VALUE port); - -/** - * Marshal format compatibility layer. Over time, classes evolve, so that - * their internal data structure change drastically. For instance an instance - * of ::rb_cRange was made of ::RUBY_T_OBJECT in 1.x., but in 3.x it is a - * ::RUBY_T_STRUCT now. In order to keep binary compatibility, we "fake" the - * marshalled representation to stick to old types. This is the API to enable - * that manoeuvre. Here is how: - * - * First, because you are going to keep backwards compatibility, you need to - * retain the old implementation of your class. Rename it, and keep the class - * somewhere (for instance rb_register_global_address() could help). Next - * create your new class. Do whatever you want. - * - * Then, this is the key point. Create two new "bridge" functions that convert - * the structs back and forth: - * - * - the "dumper" function that takes an instance of the new class, and - * returns an instance of the old one. This is called from - * rb_marshal_dump(), to keep it possible for old programs to read your new - * data. - * - * - the "loader" function that takes two arguments, new one and old one, in - * that order. rb_marshal_load() calls this function when it finds a - * representation of the retained old class. The old one passed to this - * function is the reconstructed instance of the old class. - * Reverse-engineer that to modify the new one, to have the identical - * contents. - * - * Finally, connect all of them using this function. - * - * @param[in] newclass The class that needs conversion. - * @param[in] oldclass Old implementation of `newclass`. - * @param[in] dumper Function that converts `newclass` to `oldclass`. - * @param[in] loader Function that converts `oldclass` to `newclass`. - * @exception rb_eTypeError `newclass` has no allocator. - */ -void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE)); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_MARSHAL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/numeric.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/numeric.h deleted file mode 100644 index 30863fb..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/numeric.h +++ /dev/null @@ -1,208 +0,0 @@ -#ifndef RBIMPL_INTERN_NUMERIC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_NUMERIC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cNumeric. - */ -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RB_NUM_COERCE_FUNCS_NEED_OPID 1 - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* numeric.c */ - -RBIMPL_ATTR_NORETURN() -RBIMPL_ATTR_COLD() -/** - * Just always raises an exception. - * - * @exception rb_eZeroDivError Division by zero error. - */ -void rb_num_zerodiv(void); - -/** - * @name Coercion operators. - * - * What is a coercion? Well Ruby is basically an OOPL but it also has - * arithmetic operators. They are implemented in OO manners. For instance - * `a+b` is a binary operation `+`, whose receiver is `a`, and whose (sole) - * argument is `b`. - * - * The problem is, you often want `a+b == b+a` to hold. That is easy if both - * `a` and `b` belongs to the same class... Ensuring `1 + 2 == 2 + 1` is kind - * of intuitive. But if you want `1.0 + 2 == 2 + 1.0`, things start getting - * complicated. `1.0+2` is `Float#+`, while `2+1.0` is `Integer#+`. In order - * to achieve the equality Float's and Integer's methods must agree with their - * behaviours. - * - * Now. Floats versus Integers situation is still controllable because they - * are both built-in. But in Ruby you can define your own numeric classes. - * BigDecimal, which is a rubygems gem distributed along with the interpreter, - * is one of such examples. Rational was another such example before. In - * short you cannot create list of all possible combination of the classes that - * could be the operand of `+` operator. Then how do we achieve the - * commutativity? - * - * Here comes the concept of coercion. If a definition of an operator - * encounters an object which is unknown to the author, just assumes that the - * unknown object knows how to handle the situation. So for instance when - * `1+x` has unknown `x`, it lets the `x` handle this. - * - * ```ruby - * class Foo - * def +(x) - * if we_know_what_is_x? then - * ... # handle here - * else - * y, z = x.coerce self - * return y + z - * end - * end - * end - * ``` - * - * The `x.coerce` method returns a 2-element array which are "casted" versions - * of `x` and `self`. - * - * @{ - */ - -/** - * Coerced binary operation. This function first coerces the two objects, then - * applies the operation. - * - * @param[in] lhs LHS operand. - * @param[in] rhs RHS operand. - * @param[in] op Operator method name. - * @exception rb_eTypeError Coercion failed for some reason. - * @return `lhs op rhs`, in a coerced way. - */ -VALUE rb_num_coerce_bin(VALUE lhs, VALUE rhs, ID op); - -/** - * Identical to rb_num_coerce_bin(), except for return values. This function - * best suits for comparison operators e.g. `<=>`. - * - * @param[in] lhs LHS operand. - * @param[in] rhs RHS operand. - * @param[in] op Operator method name. - * @retval RUBY_Qnil Coercion failed for some reason. - * @retval otherwise `lhs op rhs`, in a coerced way. - */ -VALUE rb_num_coerce_cmp(VALUE lhs, VALUE rhs, ID op); - -/** - * Identical to rb_num_coerce_cmp(), except for return values. This function - * best suits for relationship operators e.g. `<=`. - * - * @param[in] lhs LHS operand. - * @param[in] rhs RHS operand. - * @param[in] op Operator method name. - * @exception rb_eArgError Coercion failed for some reason. - * @return `lhs op rhs`, in a coerced way. - */ -VALUE rb_num_coerce_relop(VALUE lhs, VALUE rhs, ID op); - -/** - * This one is optimised for bitwise operations, but the API is identical to - * rb_num_coerce_bin(). - * - * @param[in] lhs LHS operand. - * @param[in] rhs RHS operand. - * @param[in] op Operator method name. - * @exception rb_eArgError Coercion failed for some reason. - * @return `lhs op rhs`, in a coerced way. - */ -VALUE rb_num_coerce_bit(VALUE lhs, VALUE rhs, ID op); - -/** @} */ - -/** - * Converts a numeric value into a Fixnum. This is not a preserving - * conversion; for instance 1.5 would be converted into 1. - * - * @param[in] val A numeric object. - * @exception rb_eTypeError No conversion from `val` to Integer. - * @exception rb_eRangeError `val` out of range. - * @return A fixnum converted from `val`. - * - * @internal - * - * This seems used from nowhere? - */ -VALUE rb_num2fix(VALUE val); - -/** - * Generates a place-value representation of the given Fixnum, with given - * radix. - * - * @param[in] val A fixnum to stringify. - * @param[in] base `2` to `36` inclusive for each radix. - * @exception rb_eArgError `base` is out of range. - * @return An instance of ::rb_cString representing `val`. - * @pre `val` must be a Fixnum (no checks performed). - */ -VALUE rb_fix2str(VALUE val, int base); - -RBIMPL_ATTR_CONST() -/** - * Compares two `double`s. Handy when implementing a spaceship operator. - * - * @param[in] lhs A value. - * @param[in] rhs Another value. - * @retval RB_INT2FIX(-1) `lhs` is "bigger than" `rhs`. - * @retval RB_INT2FIX(1) `rhs` is "bigger than" `lhs`. - * @retval RB_INT2FIX(0) They are equal. - * @retval RUBY_Qnil Not comparable, e.g. NaN. - */ -VALUE rb_dbl_cmp(double lhs, double rhs); - -/** - * Raises the passed `x` to the power of `y`. - * - * @note The return value can be really big. - * @note Also the return value can be really small, in case `x` is a - * negative number. - * @param[in] x A number. - * @param[in] y Another number. - * @retval Inf Cannot express the result. - * @retval 1 Either `y` is 0 or `x` is 1. - * @retval otherwise An instance of ::rb_cInteger whose value is `x ** y`. - * - * @internal - * - * This function returns Infinity when `y` is big enough not to fit into a - * Fixnum. Warning is issued then. - */ -RUBY_EXTERN VALUE rb_int_positive_pow(long x, unsigned long y); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_NUMERIC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/object.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/object.h deleted file mode 100644 index 6bb4ccb..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/object.h +++ /dev/null @@ -1,569 +0,0 @@ -#ifndef RBIMPL_INTERN_OBJECT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_OBJECT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cObject. - */ -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * This macro is (used but) mysterious. Why on earth do we need this? - * - * - `obj != orig` check is done anyways inside of rb_obj_init_copy(). - * - rb_obj_init_copy() returns something. No need are there to add `, 1`. - */ -#define RB_OBJ_INIT_COPY(obj, orig) \ - ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1)) -/** @old{RB_OBJ_INIT_COPY} */ -#define OBJ_INIT_COPY(obj, orig) RB_OBJ_INIT_COPY(obj, orig) - -/* object.c */ - -/** - * Identical to rb_class_new_instance(), except it passes the passed keywords - * if any to the `#initialize` method. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] klass An instance of ::rb_cClass. - * @exception rb_eTypeError `klass`'s allocator is undefined. - * @exception rb_eException Any exceptions can happen inside. - * @return An allocated new instance of `klass`. - * @note This is _the_ implementation of `Object.new`. - */ -VALUE rb_class_new_instance_pass_kw(int argc, const VALUE *argv, VALUE klass); - -/** - * Allocates, then initialises an instance of the given class. It first calls - * the passed class' allocator to obtain an uninitialised object, then calls - * its initialiser with the remaining arguments. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arguments passed to `#initialize`. - * @param[in] klass An instance of ::rb_cClass. - * @exception rb_eTypeError `klass`'s allocator is undefined. - * @exception rb_eException Any exceptions can happen inside. - * @return An allocated new instance of `klass`. - */ -VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass); - -/** - * Identical to rb_class_new_instance(), except you can specify how to handle - * the last element of the given array. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] klass An instance of ::rb_cClass. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eTypeError `klass`'s allocator is undefined. - * @exception rb_eException Any exceptions can happen inside. - * @return An allocated new instance of `klass`. - */ -VALUE rb_class_new_instance_kw(int argc, const VALUE *argv, VALUE klass, int kw_splat); - -/** - * Checks for equality of the passed objects, in terms of `Object#eql?`. - * - * @param[in] lhs Comparison left hand side. - * @param[in] rhs Comparison right hand side. - * @retval RUBY_Qtrue They are equal. - * @retval RUBY_Qfalse Otherwise. - * @note This function actually calls `lhs.eql?(rhs)` so you cannot - * implement your class' `#eql?` method using it. - */ -int rb_eql(VALUE lhs, VALUE rhs); - -/** - * Generates a textual representation of the given object. - * - * @param[in] obj Arbitrary ruby object. - * @return An instance of ::rb_cString that represents `obj`. - * @note This is the default implementation of `Object#to_s` that each - * subclasses want to override. - */ -VALUE rb_any_to_s(VALUE obj); - -/** - * Generates a human-readable textual representation of the given object. This - * is largely similar to Ruby level `Object#inspect` but not the same; it - * additionally escapes the inspection result so that the string be compatible - * with that of default internal (or default external, if absent). - * - * @param[in] obj Arbitrary ruby object. - * @return An instance of ::rb_cString that represents `obj`. - */ -VALUE rb_inspect(VALUE obj); - -/** - * Queries if the given object is a direct instance of the given class. - * - * @param[in] obj Arbitrary ruby object. - * @param[in] klass An instance of ::rb_cModule. - * @exception rb_eTypeError `klass` is neither module nor class. - * @retval RUBY_Qtrue `obj` is an instance of `klass`. - * @retval RUBY_Qfalse Otherwise. - */ -VALUE rb_obj_is_instance_of(VALUE obj, VALUE klass); - -/** - * Queries if the given object is an instance (of possibly descendants) of the - * given class. - * - * @param[in] obj Arbitrary ruby object. - * @param[in] klass An instance of ::rb_cModule. - * @exception rb_eTypeError `klass` is neither module nor class. - * @retval RUBY_Qtrue `obj` is a `klass`. - * @retval RUBY_Qfalse Otherwise. - */ -VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass); - -/** - * Allocates an instance of the given class. - * - * @param[in] klass A class to instantiate. - * @exception rb_eTypeError `klass` is not a class. - * @return An allocated, not yet initialised instance of `klass`. - * @note It calls the allocator defined by rb_define_alloc_func(). You - * cannot use this function to define an allocator. Use - * rb_newobj_of(), #TypedData_Make_Struct or others, instead. - * @note Usually prefer rb_class_new_instance() to rb_obj_alloc() and - * rb_obj_call_init(). - * @see rb_class_new_instance() - * @see rb_obj_call_init() - * @see rb_define_alloc_func() - * @see rb_newobj_of() - * @see #TypedData_Make_Struct - */ -VALUE rb_obj_alloc(VALUE klass); - -/** - * Produces a shallow copy of the given object. Its list of instance variables - * are copied, but not the objects they reference. It also copies the frozen - * value state. - * - * @param[in] obj Arbitrary ruby object. - * @exception rb_eException `#initialize_copy` can raise anything. - * @return A "clone" of `obj`. - * - * @internal - * - * Unlike ruby-level `Object#clone`, there is no way to control the frozen-ness - * of the return value. - */ -VALUE rb_obj_clone(VALUE obj); - -/** - * Duplicates the given object. This does almost the same thing as - * rb_obj_clone() do. However it does not copy the singleton class (if any). - * It also doesn't copy frozen-ness. - * - * @param[in] obj Arbitrary ruby object. - * @exception rb_eException `#initialize_copy` can raise anything. - * @return A shallow copy of `obj`. - */ -VALUE rb_obj_dup(VALUE obj); - -/** - * Default implementation of `#initialize_copy`, `#initialize_dup` and - * `#initialize_clone`. It does almost nothing. Just raises exceptions for - * checks. - * - * @param[in] dst The destination object. - * @param[in] src The source object. - * @exception rb_eFrozenError `dst` is frozen. - * @exception rb_eTypeError `dst` and `src` have different classes. - * @return Always returns `dst`. - */ -VALUE rb_obj_init_copy(VALUE src, VALUE dst); - -RBIMPL_ATTR_DEPRECATED_EXT(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return Verbatim `obj`. - */ -VALUE rb_obj_taint(VALUE obj); - -RBIMPL_ATTR_PURE() -RBIMPL_ATTR_DEPRECATED_EXT(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return Always returns ::RUBY_Qfalse. - */ -VALUE rb_obj_tainted(VALUE obj); - -RBIMPL_ATTR_DEPRECATED_EXT(("taintedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return Verbatim `obj`. - */ -VALUE rb_obj_untaint(VALUE obj); - -RBIMPL_ATTR_DEPRECATED_EXT(("trustedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return Verbatim `obj`. - */ -VALUE rb_obj_untrust(VALUE obj); - -RBIMPL_ATTR_PURE() -RBIMPL_ATTR_DEPRECATED_EXT(("trustedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return Always returns ::RUBY_Qfalse. - */ -VALUE rb_obj_untrusted(VALUE obj); - -RBIMPL_ATTR_DEPRECATED_EXT(("trustedness turned out to be a wrong idea.")) -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @return Verbatim `obj`. - */ -VALUE rb_obj_trust(VALUE obj); - -/** - * Just calls rb_obj_freeze_inline() inside. Does this make any sens to - * extension libraries? - * - * @param[out] obj Object to freeze. - * @return Verbatim `obj`. - */ -VALUE rb_obj_freeze(VALUE obj); - -RBIMPL_ATTR_PURE() -/** - * Just calls RB_OBJ_FROZEN() inside. Does this make any sens to extension - * libraries? - * - * @param[in] obj Object in question. - * @retval RUBY_Qtrue Yes it is. - * @retval RUBY_Qfalse No it isn't. - */ -VALUE rb_obj_frozen_p(VALUE obj); - -/* gc.c */ - -/** - * Finds or creates an integer primary key of the given object. In the old - * days this function was a purely arithmetic operation that maps the - * underlying memory address where the object resides into a Ruby's integer. - * Some time around 2.x this changed. It no longer relates its return values - * to C level pointers. This function assigns some random number to the given - * object if absent. The same number will be returned on all subsequent - * requests. No two active objects share a number. - * - * @param[in] obj Arbitrary ruby object. - * @return An instance of ::rb_cInteger which is an "identifier" of `obj`. - * - * @internal - * - * The "some random number" is in fact a monotonic-increasing process-global - * unique integer, much like an `INTEGER AUTO_INCREMENT PRIMARY KEY` column in - * a MySQL table. - */ -VALUE rb_obj_id(VALUE obj); - -RBIMPL_ATTR_CONST() -/** - * Identical to rb_obj_id(), except it hesitates from allocating a new instance - * of ::rb_cInteger. rb_obj_id() could allocate ::RUBY_T_BIGNUM objects. That - * allocation might perhaps impact negatively. On such situations, this - * function instead returns one-shot temporary small integers that need no - * allocations at all. The values are guaranteed unique at the moment, but no - * future promise is made; could be reused. Use of this API should be very - * instant. It is a failure to store the returned integer to somewhere else. - * - * In short it is difficult to use. - * - * @param[in] obj Arbitrary ruby object. - * @return An instance of ::rb_cInteger unique at the moment. - * - * @internal - * - * This is roughly the old behaviour of rb_obj_id(). - */ -VALUE rb_memory_id(VALUE obj); - -/* object.c */ - -RBIMPL_ATTR_PURE() -/** - * Finds a "real" class. As the name implies there are class objects that are - * surreal. This function takes a class, traverses its ancestry tree, and - * returns its nearest ancestor which is neither a module nor a singleton - * class. - * - * @param[in] klass An instance of ::rb_cClass. - * @retval RUBY_Qfalse No real class in `klass`' ancestry tree. - * @retval klass `klass` itself is a real class. - * @retval otherwise Nearest ancestor of `klass` who is real. - */ -VALUE rb_class_real(VALUE klass); - -RBIMPL_ATTR_PURE() -/** - * Determines if the given two modules are relatives. - * - * @param[in] scion Possible subclass. - * @param[in] ascendant Possible superclass. - * @exception rb_eTypeError `ascendant` is not a module. - * @retval RUBY_Qtrue `scion` inherits, or is equal to `ascendant`. - * @retval RUBY_Qfalse `ascendant` inherits `scion`. - * @retval RUBY_Qnil They are not relatives. - */ -VALUE rb_class_inherited_p(VALUE scion, VALUE ascendant); - -RBIMPL_ATTR_PURE() -/** - * Queries the parent of the given class. - * - * @param[in] klass A child class. - * @exception rb_eTypeError `klass` is a `Class.allocate`. - * @retval RUBY_Qfalse `klass` has no superclass. - * @retval otherwise `klass`' superclass. - * - * @internal - * - * Is there any class except ::rb_cBasicObject, that has no superclass? - */ -VALUE rb_class_superclass(VALUE klass); - -RBIMPL_ATTR_NONNULL(()) -/** - * Converts an object into another type. Calls the specified conversion method - * if necessary. - * - * @param[in] val An object to convert. - * @param[in] type A value of enum ::ruby_value_type. - * @param[in] name Name to display on error (e.g. "Array"). - * @param[in] mid Conversion method (e.g. "to_ary"). - * @exception rb_eTypeError Failed to convert. - * @return An object of the specified type. - */ -VALUE rb_convert_type(VALUE val, int type, const char *name, const char *mid); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_convert_type(), except it returns ::RUBY_Qnil instead of - * raising exceptions, in case of conversion failure. It still raises - * exceptions for various reasons, like when the conversion method itself - * raises, though. - * - * @param[in] val An object to convert. - * @param[in] type A value of enum ::ruby_value_type. - * @param[in] name Name to display on error (e.g. "Array"). - * @param[in] mid Conversion method (e.g. "to_ary"). - * @exception rb_eTypeError The `mid` does not generate `type`. - * @retval RUBY_Qnil No conversion defined. - * @retval otherwise An object of the specified type. - */ -VALUE rb_check_convert_type(VALUE val, int type, const char *name, const char *mid); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_check_convert_type(), except the return value type is fixed - * to ::rb_cInteger. - * - * @param[in] val An object to convert. - * @param[in] mid Conversion method (e.g. "to_ary"). - * @exception rb_eTypeError The `mid` does not generate an integer. - * @retval RUBY_Qnil No conversion defined. - * @retval otherwise An instance of ::rb_cInteger. - */ -VALUE rb_check_to_integer(VALUE val, const char *mid); - -/** - * This is complicated. - * - * - When the passed object is already an instance of ::rb_cFloat, just - * returns it as-is. - * - * - When the passed object is something numeric, the function tries to - * convert it using `#to_f` method. - * - * - If that conversion fails (this happens for instance when the numeric - * is a complex) it returns ::RUBY_Qnil. - * - * - Otherwise returns the conversion result. - * - * - Otherwise it also returns ::RUBY_Qnil. - * - * @param[in] val An object to convert. - * @retval RUBY_Qnil Conversion from `val` to float is undefined. - * @retval otherwise Converted result. - */ -VALUE rb_check_to_float(VALUE val); - -/** - * Identical to rb_check_to_int(), except it raises in case of conversion - * mismatch. - * - * @param[in] val An object to convert. - * @exception rb_eTypeError `#to_int` does not generate an integer. - * @return An instance of ::rb_cInteger. - */ -VALUE rb_to_int(VALUE val); - -/** - * Identical to rb_check_to_integer(), except it uses `#to_int` for conversion. - * - * @param[in] val An object to convert. - * @exception rb_eTypeError `#to_int` does not return an integer. - * @retval RUBY_Qnil No conversion defined. - * @retval otherwise An instance of ::rb_cInteger. - */ -VALUE rb_check_to_int(VALUE val); - -/** - * This is the logic behind `Kernel#Integer`. Numeric types are converted - * directly, with floating point numbers being truncated. Strings are - * interpreted strictly; only leading/trailing whitespaces, plus/minus sign, - * radix indicators such as `0x`, digits, and underscores are allowed. - * Anything else are converted by first trying `#to_int`, then `#to_i`. - * - * This is slightly stricter than `String#to_i`. - * - * @param[in] val An object to convert. - * @exception rb_eArgError Malformed `val` passed. - * @exception rb_eTypeError No conversion defined. - * @return An instance of ::rb_cInteger. - */ -VALUE rb_Integer(VALUE val); - -/** - * Identical to rb_check_to_float(), except it raises on error. - * - * @param[in] val An object to convert. - * @exception rb_eTypeError No conversion defined. - * @return An instance of ::rb_cFloat. - */ -VALUE rb_to_float(VALUE val); - -/** - * This is the logic behind `Kernel#Float`. Numeric types are converted - * directly to the nearest value that a Float can represent. Strings are - * interpreted strictly; only leading/trailing whitespaces are allowed except - * what `strtod` understands. Anything else are converted using `#to_f`. - * - * This is slightly stricter than `String#to_f`. - * - * @param[in] val An object to convert. - * @exception rb_eArgError Malformed `val` passed. - * @exception rb_eTypeError No conversion defined. - * @return An instance of ::rb_cFloat. - */ -VALUE rb_Float(VALUE val); - -/** - * This is the logic behind `Kernel#String`. Arguments are converted by first - * trying `#to_str`, then `#to_s`. - * - * @param[in] val An object to convert. - * @exception rb_eTypeError No conversion defined. - * @return An instance of ::rb_cString. - */ -VALUE rb_String(VALUE val); - -/** - * This is the logic behind `Kernel#Array`. Arguments are converted by first - * trying `#to_ary`, then `#to_a`, and if both failed, returns an array of - * length 1 that contains the passed argument as the sole contents. - * - * @param[in] val An object to convert. - * @return An instance of ::rb_cArray. - */ -VALUE rb_Array(VALUE val); - -/** - * This is the logic behind `Kernel#Hash`. Arguments are converted by first - * trying `#to_hash`. if it failed, and the argument is either ::RUBY_Qnil or - * an empty array, returns an empty hash. Otherwise an exception is raised. - * - * @param[in] val An object to convert. - * @exception rb_eTypeError No conversion defined. - * @return An instance of ::rb_cHash. - */ -VALUE rb_Hash(VALUE val); - -RBIMPL_ATTR_NONNULL(()) -/** - * Converts a textual representation of a real number into a numeric, which is - * the nearest value that the return type can represent, of the value that the - * argument represents. This is in fact a 2-in-1 function whose behaviour can - * be controlled using the second (mode) argument. If the mode is zero, this - * function is in "historical" mode which only understands "floating-constant" - * defined at ISO/IEC 9899:1990 section 6.1.3.1. If the mode is nonzero, it is - * in "extended" mode, which also accepts "hexadecimal-floating-constant" - * defined at ISO/IEC 9899:2018 section 6.4.4.2. - * - * @param[in] str A textual representation of a real number. - * @param[in] mode Conversion mode, as described above. - * @exception rb_eArgError Malformed `str` passed. - * @see https://bugs.ruby-lang.org/issues/2969 - * @note Null pointers are allowed, and it returns 0.0 then. - */ -double rb_cstr_to_dbl(const char *str, int mode); - -/** - * Identical to rb_cstr_to_dbl(), except it accepts a Ruby's string instead of - * C's. - * - * @param[in] str A textual representation of a real number. - * @param[in] mode Conversion mode, as described in rb_cstr_to_dbl(). - * @exception rb_eArgError Malformed `str` passed. - * @see https://bugs.ruby-lang.org/issues/2969 - */ -double rb_str_to_dbl(VALUE str, int mode); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_OBJECT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/parse.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/parse.h deleted file mode 100644 index 7c4e992..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/parse.h +++ /dev/null @@ -1,194 +0,0 @@ -#ifndef RBIMPL_INTERN_PARSE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_PARSE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cSymbol. - */ -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* symbol.c */ - -/** - * Calculates an ID of attribute writer. For instance it returns `:foo=` when - * passed `:foo`. - * - * @param[in] id An id. - * @exception rb_eNameError `id` is not for attributes (e.g. operator). - * @return Calculated name of attribute writer. - */ -ID rb_id_attrset(ID id); - -RBIMPL_ATTR_CONST() -/** - * Classifies the given ID, then sees if it is a constant. In case an ID is in - * Unicode (likely), its "constant"-ness is determined if its first character - * is either upper case or title case. Otherwise it is detected if case- - * folding the first character changes its case or not. - * - * @param[in] id An id to classify. - * @retval 1 It is a constant. - * @retval 0 It isn't. - */ -int rb_is_const_id(ID id); - -RBIMPL_ATTR_CONST() -/** - * Classifies the given ID, then sees if it is a global variable. A global - * variable must start with `$`. - * - * @param[in] id An id to classify. - * @retval 1 It is a global variable. - * @retval 0 It isn't. - */ -int rb_is_global_id(ID id); - -RBIMPL_ATTR_CONST() -/** - * Classifies the given ID, then sees if it is an instance variable. An - * instance variable must start with `@`, but not `@@`. - * - * @param[in] id An id to classify. - * @retval 1 It is an instance variable. - * @retval 0 It isn't. - */ -int rb_is_instance_id(ID id); - -RBIMPL_ATTR_CONST() -/** - * Classifies the given ID, then sees if it is an attribute writer. An - * attribute writer is otherwise a local variable, except it ends with `=`. - * - * @param[in] id An id to classify. - * @retval 1 It is an attribute writer. - * @retval 0 It isn't. - */ -int rb_is_attrset_id(ID id); - -RBIMPL_ATTR_CONST() -/** - * Classifies the given ID, then sees if it is a class variable. A class - * variable is must start with `@@`. - * - * @param[in] id An id to classify. - * @retval 1 It is a class variable. - * @retval 0 It isn't. - */ -int rb_is_class_id(ID id); - -RBIMPL_ATTR_CONST() -/** - * Classifies the given ID, then sees if it is a local variable. A local - * variable starts with a lowercase character, followed by some alphanumeric - * characters or `_`, then ends with anything other than `!`, `?`, or `=`. - * - * @param[in] id An id to classify. - * @retval 1 It is a local variable. - * @retval 0 It isn't. - */ -int rb_is_local_id(ID id); - -RBIMPL_ATTR_CONST() -/** - * Classifies the given ID, then sees if it is a junk ID. An ID with no - * special syntactic structure is considered junk. This category includes for - * instance punctuation. - * - * @param[in] id An id to classify. - * @retval 1 It is a junk. - * @retval 0 It isn't. - */ -int rb_is_junk_id(ID); - -RBIMPL_ATTR_NONNULL(()) -/** - * Sees if the passed C string constructs a valid syntactic symbol. Invalid - * ones for instance includes whitespaces. - * - * @param[in] str A C string to check. - * @retval 1 It is a valid symbol name. - * @retval 0 It is invalid as a symbol name. - */ -int rb_symname_p(const char *str); - -/* vm.c */ - -/** - * Queries the last match, or `Regexp.last_match`, or the `$~`. You don't have - * to use it, because in reality you can get `$~` using rb_gv_get() as usual. - * - * @retval RUBY_Qnil The method has not ran a regular expression. - * @retval otherwise An instance of ::rb_cMatch. - */ -VALUE rb_backref_get(void); - -/** - * Updates `$~`. You don't have to use it, because in reality you can set `$~` - * using rb_gv_set() as usual. - * - * @param[in] md Arbitrary Ruby object. - * @post The passed object is assigned to `$~`. - * - * @internal - * - * Yes, this function bypasses the Check_Type() that would normally prevent - * evil souls from assigning evil objects to `$~`. Use of this function is a - * really bad smell. - */ -void rb_backref_set(VALUE md); - -/** - * Queries the last line, or the `$_`. You don't have to use it, because in - * reality you can get `$_` using rb_gv_get() as usual. - * - * @retval RUBY_Qnil There has never been a "line" yet. - * @retval otherwise The last set `$_` value. - */ -VALUE rb_lastline_get(void); - -/** - * Updates `$_`. You don't have to use it, because in reality you can set `$_` - * using rb_gv_set() as usual. - * - * @param[in] str Arbitrary Ruby object. - * @post The passed object is assigned to `$_`. - * - * @internal - * - * Unlike `$~`, you can assign non-strings to `$_`, even from ruby scripts. - */ -void rb_lastline_set(VALUE str); - -/* symbol.c */ - -/** - * Collects every single bits of symbols that have ever interned in the entire - * history of the current process. - * - * @return An array that contains all symbols that have ever existed. - */ -VALUE rb_sym_all_symbols(void); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_PARSE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/proc.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/proc.h deleted file mode 100644 index b8c3c5e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/proc.h +++ /dev/null @@ -1,353 +0,0 @@ -#ifndef RBIMPL_INTERN_PROC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_PROC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cProc. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/iterator.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* proc.c */ - -/** - * Constructs a Proc object from implicitly passed components. When a ruby - * method is called with a block, that block is not explicitly passed around - * using C level function parameters. This function gathers all the necessary - * info to turn them into a Ruby level instance of ::rb_cProc. - * - * @exception rb_eArgError There is no passed block. - * @return An instance of ::rb_cProc. - */ -VALUE rb_block_proc(void); - -/** - * Identical to rb_proc_new(), except it returns a lambda. - * - * @exception rb_eArgError There is no passed block. - * @return An instance of ::rb_cProc. - */ -VALUE rb_block_lambda(void); - -/** - * This is an rb_iterate() + rb_block_proc() combo. - * - * ```CXX - * VALUE - * my_own_iterator(RB_BLOCK_CALL_FUNC_ARGLIST(y, c)) - * { - * const auto plus = rb_intern("+"); - * return rb_funcall(c, plus, 1, y); - * } - * - * VALUE - * my_own_method(VALUE self) - * { - * return rb_proc_new(my_own_iterator, self); - * } - * ``` - * - * @param[in] func A backend function of a proc. - * @param[in] callback_arg Passed to `func`'s callback_arg. - * @return A C-backended proc object. - * - */ -VALUE rb_proc_new(rb_block_call_func_t func, VALUE callback_arg); - -/** - * Queries if the given object is a proc. - * - * @note This is about the object's data structure, not its class etc. - * @param[in] recv Object in question. - * @retval RUBY_Qtrue It is a proc. - * @retval RUBY_Qfalse Otherwise. - */ -VALUE rb_obj_is_proc(VALUE recv); - -/** - * Evaluates the passed proc with the passed arguments. - * - * @param[in] recv The proc to call. - * @param[in] args An instance of ::RArray which is the arguments. - * @exception rb_eException Any exceptions happen inside. - * @return What the proc evaluates to. - */ -VALUE rb_proc_call(VALUE recv, VALUE args); - -/** - * Identical to rb_proc_call(), except you can specify how to handle the last - * element of the given array. - * - * @param[in] recv The proc to call. - * @param[in] args An instance of ::RArray which is the arguments. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `args`' last is not a keyword argument. - * - RB_PASS_KEYWORDS `args`' last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eException Any exceptions happen inside. - * @return What the proc evaluates to. - */ -VALUE rb_proc_call_kw(VALUE recv, VALUE args, int kw_splat); - -/** - * Identical to rb_proc_call(), except you can additionally pass another proc - * object, as a block. Nowadays procs can take blocks: - * - * ```ruby - * l = -> (positional, optional=nil, *rest, kwarg:, **kwrest, &block) { - * # ... how can we pass this `&block`? ^^^^^^ - * } - * ``` - * - * And this function is to pass one to such procs. - * - * @param[in] recv The proc to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of proc arguments. - * @param[in] proc Proc as a passed block. - * @exception rb_eException Any exceptions happen inside. - * @return What the proc evaluates to. - */ -VALUE rb_proc_call_with_block(VALUE recv, int argc, const VALUE *argv, VALUE proc); - -/** - * Identical to rb_proc_call_with_block(), except you can specify how to handle - * the last element of the given array. It can also be seen as a routine - * identical to rb_proc_call_kw(), except you can additionally pass another - * proc object as a block. - * - * @param[in] recv The proc to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of proc arguments. - * @param[in] proc Proc as a passed block. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `args`' last is not a keyword argument. - * - RB_PASS_KEYWORDS `args`' last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eException Any exceptions happen inside. - * @return What the proc evaluates to. - */ -VALUE rb_proc_call_with_block_kw(VALUE recv, int argc, const VALUE *argv, VALUE proc, int kw_splat); - -/** - * Queries the number of mandatory arguments of the given Proc. If its block - * is declared to take no arguments, returns `0`. If the block is known to - * take exactly `n` arguments, returns `n`. If the block has optional - * arguments, returns `-n-1`, where `n` is the number of mandatory arguments, - * with the exception for blocks that are not lambdas and have only a finite - * number of optional arguments; in this latter case, returns `n`. Keyword - * arguments will be considered as a single additional argument, that argument - * being mandatory if any keyword argument is mandatory. - * - * @param[in] recv Target Proc object. - * @retval 0 It takes no arguments. - * @retval >0 It takes exactly this number of arguments. - * @retval <0 It takes optional arguments. - */ -int rb_proc_arity(VALUE recv); - -/** - * Queries if the given object is a lambda. Instances of ::rb_cProc are either - * lambda or proc. They differ in several points. This function can - * distinguish them without actually evaluating their contents. - * - * @param[in] recv Target proc object. - * @retval RUBY_Qtrue It is a lambda. - * @retval RUBY_Qfalse Otherwise. - */ -VALUE rb_proc_lambda_p(VALUE recv); - -/** - * Snapshots the current execution context and turn it into an instance of - * ::rb_cBinding. - * - * @return An instance of ::rb_cBinding. - */ -VALUE rb_binding_new(void); - -/** - * Creates a method object. A method object is a proc-like object that you can - * "call". Note that a method object snapshots the method at the time the - * object is created: - * - * ```ruby - * class Foo - * def foo - * return 1 - * end - * end - * - * obj = Foo.new.method(:foo) - * - * class Foo - * def foo - * return 2 - * end - * end - * - * obj.call # => 1, not 2. - * ``` - * - * @param[in] recv Receiver of the method. - * @param[in] mid Method name, in either String or Symbol. - * @exception rb_eNoMethodError No such method. - * @return An instance of ::rb_cMethod. - */ -VALUE rb_obj_method(VALUE recv, VALUE mid); - -/** - * Queries if the given object is a method. - * - * @note This is about the object's data structure, not its class etc. - * @param[in] recv Object in question. - * @retval RUBY_Qtrue It is a method. - * @retval RUBY_Qfalse Otherwise. - */ -VALUE rb_obj_is_method(VALUE recv); - -/** - * Evaluates the passed method with the passed arguments. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] recv The method object to call. - * @exception rb_eTypeError `recv` is not a method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method returns. - */ -VALUE rb_method_call(int argc, const VALUE *argv, VALUE recv); - -/** - * Identical to rb_method_call(), except you can specify how to handle the last - * element of the given array. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] recv The method object to call. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `args`' last is not a keyword argument. - * - RB_PASS_KEYWORDS `args`' last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eTypeError `recv` is not a method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method returns. - */ -VALUE rb_method_call_kw(int argc, const VALUE *argv, VALUE recv, int kw_splat); - -/** - * Identical to rb_proc_call(), except you can additionally pass a proc as a - * block. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] recv The method object to call. - * @param[in] proc Proc as a passed block. - * @exception rb_eTypeError `recv` is not a method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method returns. - */ -VALUE rb_method_call_with_block(int argc, const VALUE *argv, VALUE recv, VALUE proc); - -/** - * Identical to rb_method_call_with_block(), except you can specify how to - * handle the last element of the given array. It can also be seen as a - * routine identical to rb_method_call_kw(), except you can additionally pass - * another proc object as a block. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] recv The method object to call. - * @param[in] proc Proc as a passed block. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `args`' last is not a keyword argument. - * - RB_PASS_KEYWORDS `args`' last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @exception rb_eTypeError `recv` is not a method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method returns. - */ -VALUE rb_method_call_with_block_kw(int argc, const VALUE *argv, VALUE recv, VALUE proc, int kw_splat); - -/** - * Queries the number of mandatory arguments of the method defined in the given - * module. If it is declared to take no arguments, returns `0`. If it takes - * exactly `n` arguments, returns `n`. If it has optional arguments, returns - * `-n-1`, where `n` is the number of mandatory arguments. Keyword arguments - * will be considered as a single additional argument, that argument being - * mandatory if any keyword argument is mandatory. - * - * @param[in] mod Namespace to search a method for. - * @param[in] mid Method id. - * @retval 0 It takes no arguments. - * @retval >0 It takes exactly this number of arguments. - * @retval <0 It takes optional arguments. - */ -int rb_mod_method_arity(VALUE mod, ID mid); - -/** - * Identical to rb_mod_method_arity(), except it searches for singleton methods - * rather than instance methods. - * - * @param[in] obj Object to search for a singleton method. - * @param[in] mid Method id. - * @retval 0 It takes no arguments. - * @retval >0 It takes exactly this number of arguments. - * @retval <0 It takes optional arguments. - */ -int rb_obj_method_arity(VALUE obj, ID mid); - -/* eval.c */ - -RBIMPL_ATTR_NONNULL((1)) -/** - * Protects a function call from potential global escapes from the function. - * Such global escapes include exceptions, `throw`, `break`, for example. - * - * It first calls the function func with `args` as the argument. If no global - * escape occurred during the function, it returns the result and `*state` is - * zero. Otherwise, it returns ::RUBY_Qnil and sets `*state` to nonzero. If - * `state` is `NULL`, it is not set in both cases. - * - * @param[in] func A function that potentially escapes globally. - * @param[in] args Passed as-is to `func`. - * @param[out] state State of execution. - * @return What `func` returns, or an undefined value when it did not - * return. - * @post `*state` is set to zero if succeeded. Nonzero otherwise. - * @warning You have to clear the error info with `rb_set_errinfo(Qnil)` if - * you decide to ignore the caught exception. - * @see rb_eval_string_protect() - * @see rb_load_protect() - * - * @internal - * - * The "undefined value" described above is in fact ::RUBY_Qnil for now. But - * @shyouhei doesn't think that we would never change that. - * - * Though not a part of our public API, `state` is in fact an - * enum ruby_tag_type. You can see the potential "nonzero" values by looking - * at vm_core.h. - */ -VALUE rb_protect(VALUE (*func)(VALUE args), VALUE args, int *state); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_PROC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/process.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/process.h deleted file mode 100644 index 7a7b24e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/process.h +++ /dev/null @@ -1,273 +0,0 @@ -#ifndef RBIMPL_INTERN_PROCESS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_PROCESS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_mProcess. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/config.h" /* rb_pid_t is defined here. */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* process.c */ - -/** - * Sets the "last status", or the `$?`. - * - * @param[in] status The termination status, as defined in `waitpid(3posix)`. - * @param[in] pid The last child of the current process. - * @post `$?` is updated. - */ -void rb_last_status_set(int status, rb_pid_t pid); - -/** - * Queries the "last status", or the `$?`. - * - * @retval RUBY_Qnil The current thread has no dead children. - * @retval otherwise An instance of Process::Status describing the status of - * the child that was most recently `wait`-ed. - */ -VALUE rb_last_status_get(void); - -RBIMPL_ATTR_NONNULL(()) -/** - * Executes a shell command. - * - * @warning THIS FUNCTION RETURNS on error! - * @param[in] cmd Passed to the shell. - * @retval -1 Something prevented the command execution. - * @post Upon successful execution this function doesn't return. - * @post In case it returns the `errno` is set properly. - */ -int rb_proc_exec(const char *cmd); - -RBIMPL_ATTR_NORETURN() -/** - * Replaces the current process by running the given external command. This is - * the implementation of `Kernel#exec`. - * - * @param[in] argc Number of objects in `argv`. - * @param[in] argv Command and its options to execute. - * @exception rb_eTypeError Invalid options e.g. non-String argv. - * @exception rb_eArgError Invalid options e.g. redirection cycle. - * @exception rb_eNotImpError Not implemented e.g. no `setuid(2)`. - * @exception rb_eRuntimeError `Process::UID.switch` in operation. - * @exception rb_eSystemCallError `execve(2)` failed. - * @warning This function doesn't return. - * @warning On failure it raises. On success the process is replaced. - * - * @internal - * - * @shyouhei have to say that the rdoc for `Kernel#exec` is fairly incomplete. - * AFAIK this function ultimately takes the following signature: - * - * ```rbs - * type boolx = bool | nil # != `boolish` - * - * type rlim_t = Integer # rlim_cur - * | [ Integer, Integer ] # rlim_cur, rlim_max - * - * type uid_t = String # e.g. "root" - * | Integer # e.g. 0 - * - * type gid_t = String # e.g. "wheel" - * | Integer # e.g. 0 - * - * type fmode = String # e.g. "rb" - * | Integer # e.g. O_RDONLY | O_BINARY - * - * type mode_t = Integer # e.g. 0644 - * - * type pgrp = true # Creates a dedicated pgroup - * | 0 # ditto - * | nil # Uses the current one - * | Integer # Uses this specific pgroup - * - * type fd = :in # STDIN - * | :out # STDOUT - * | :err # STDERR - * | IO # This specific IO - * | Integer # A file descriptor of this # - * - * type src = fd | [ fd ] - * type dst = :close # Intuitive - * | fd # Intuitive - * | String # Open a file at this path - * | [ String ] # ... using O_RDONLY - * | [ String, fmode ] # ... using this mode - * | [ String, fmode, mode_t ] # ... with a permission - * | [ :child, fd ] # fd of child side - * - * type redir = Hash[ src, dst ] - * - * # ---- - * - * # Key-value pair of environment variables - * type envp = Hash[ String, String ] - * - * # Actual name (and the name passed to the subprocess if any) - * type arg0 = String | [ String, String ] - * - * # Arbitrary string parameters - * type argv = String - * - * # Exec options: - * type argh = redir | { - * chdir: String, # Working directory - * close_others: boolx, # O_CLOEXEC like behaviour - * gid: gid_t, # setegid(2) - * pgrooup: pgrp, # setpgrp(2) - * rlimit_as: rlim_t, # setrlimit(2) - * rlimit_core: rlim_t, # ditto - * rlimit_cpu: rlim_t, # ditto - * rlimit_data: rlim_t, # ditto - * rlimit_fsize: rlim_t, # ditto - * rlimit_memlock: rlim_t, # ditto - * rlimit_msgqueue: rlim_t, # ditto - * rlimit_nice: rlim_t, # ditto - * rlimit_nofile: rlim_t, # ditto - * rlimit_nproc: rlim_t, # ditto - * rlimit_rss: rlim_t, # ditto - * rlimit_rtprio: rlim_t, # ditto - * rlimit_rttime: rlim_t, # ditto - * rlimit_sbsize: rlim_t, # ditto - * rlimit_sigpending: rlim_t, # ditto - * rlimit_stack: rlim_t, # ditto - * uid: uid_t, # seteuid(2) - * umask: mode_t, # umask(2) - * unsetenv_others: boolx # Unset everything except the passed envp - * } - * - * # ==== - * - * class Kernel - * def self?.exec - * : ( arg0 cmd, *argv args ) -> void - * | ( arg0 cmd, *argv args, argh opts) -> void - * | (envp env, arg0 cmd, *argv args ) -> void - * | (envp env, arg0 cmd, *argv args, argh opts) -> void - * end - * ``` - */ -VALUE rb_f_exec(int argc, const VALUE *argv); - -/** - * Waits for a process, with releasing GVL. - * - * @param[in] pid Process ID. - * @param[out] status The wait status is filled back. - * @param[in] flags Wait options. - * @retval -1 System call failed, errno set. - * @retval 0 WNOHANG but no waitable children. - * @retval otherwise A process ID that was `wait()`-ed. - * @post Upon successful return `status` is updated to have the process' - * status. - * @note `status` can be NULL. - * @note The arguments are passed through to underlying system call(s). - * Can have special meanings. For instance passing `(rb_pid_t)-1` - * to `pid` means it waits for any processes, under - * POSIX-compliant situations. - */ -rb_pid_t rb_waitpid(rb_pid_t pid, int *status, int flags); - -/** - * This is a shorthand of rb_waitpid without status and flags. It has been - * like this since the very beginning. The initial revision already did the - * same thing. Not sure why, then, it has been named `syswait`. AFAIK this is - * different from how `wait(3posix)` works. - * - * @param[in] pid Passed to rb_waitpid(). - */ -void rb_syswait(rb_pid_t pid); - -/** - * Identical to rb_f_exec(), except it spawns a child process instead of - * replacing the current one. - * - * @param[in] argc Number of objects in `argv`. - * @param[in] argv Command and its options to execute. - * @exception rb_eTypeError Invalid options e.g. non-String argv. - * @exception rb_eArgError Invalid options e.g. redirection cycle. - * @exception rb_eNotImpError Not implemented e.g. no `setuid(2)`. - * @exception rb_eRuntimeError `Process::UID.switch` in operation. - * @retval -1 Child process died for some reason. - * @retval otherwise The ID of the born child. - * - * @internal - * - * This is _really_ identical to rb_f_exec() until ultimately calling the - * system call. Almost everything are shared among these two (and - * rb_f_system()). - */ -rb_pid_t rb_spawn(int argc, const VALUE *argv); - -/** - * Identical to rb_spawn(), except you can additionally know the detailed - * situation in case of abnormal parturitions. - * - * @param[in] argc Number of objects in `argv`. - * @param[in] argv Command and its options to execute. - * @param[out] errbuf Error description write-back buffer. - * @param[in] buflen Number of bytes of `errbuf`, including NUL. - * @exception rb_eTypeError Invalid options e.g. non-String argv. - * @exception rb_eArgError Invalid options e.g. redirection cycle. - * @exception rb_eNotImpError Not implemented e.g. no `setuid(2)`. - * @exception rb_eRuntimeError `Process::UID.switch` in operation. - * @retval -1 Child process died for some reason. - * @retval otherwise The ID of the born child. - * @post In case of `-1`, at most `buflen` bytes of the reason why is - * written back to `errbuf`. - */ -rb_pid_t rb_spawn_err(int argc, const VALUE *argv, char *errbuf, size_t buflen); - -/** - * Gathers info about resources consumed by the current process. - * - * @param[in] _ Not used. Pass anything. - * @return An instance of `Process::Tms`. - * - * @internal - * - * This function might or might not exist depending on `./confiugre` result. - * It must be a portability hell. Better not use. - */ -VALUE rb_proc_times(VALUE _); - -/** - * "Detaches" a subprocess. In POSIX systems every child processes that a - * process creates must be `wait(2)`-ed. A child process that died yet has not - * been waited so far is called a "zombie", which more or less consumes - * resources. This function automates reclamation of such processes. Once - * after this function successfully returns you can basically forget about the - * child process. - * - * @param[in] pid Process to wait. - * @return An instance of ::rb_cThread which is `waitpid(2)`-ing `pid`. - * @post You can just forget about the return value. GC reclaims it. - * @post You can know the exit status by querying `#value` of the - * return value (which is a blocking operation). - */ -VALUE rb_detach_process(rb_pid_t pid); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_PROCESS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/random.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/random.h deleted file mode 100644 index 5577f53..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/random.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef RBIMPL_INTERN_RANDOM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_RANDOM_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief MT19937 backended pseudo random number generator. - * @see Matsumoto, M., Nishimura, T., "Mersenne Twister: A 623- - * dimensionally equidistributed uniform pseudorandom number - * generator", ACM Trans. on Modeling and Computer Simulation, 8 - * (1): pp 3-30, 1998. https://doi.org/10.1145/272991.272995 - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* random.c */ - -/** - * Generates a 32 bit random number. - * - * @return A random number. - * @note Now that we have ractors, the RNG behind this function is - * per-ractor. - */ -unsigned int rb_genrand_int32(void); - -/** - * Generates a `double` random number. - * - * @return A random number. - * @note This function shares the RNG with rb_genrand_int32(). - */ -double rb_genrand_real(void); - -/** - * Resets the RNG behind rb_genrand_int32()/rb_genrand_real(). - * - * @post The (now per-ractor) default RNG's internal state is cleared. - */ -void rb_reset_random_seed(void); - -/** - * Generates a String of random bytes. - * - * @param[in,out] rnd An instance of ::rb_cRandom. - * @param[in] n Requested number of bytes. - * @return An instance of ::rb_cString, of binary, of `n` bytes length, - * whose contents are random bits. - * - * @internal - * - * @shyouhei doesn't know if this is an Easter egg or an official feature, but - * this function can take a wider range of objects, such as `Socket::Ifaddr`. - * The arguments are just silently ignored and the default RNG is used instead, - * if they are non-RNG. - */ -VALUE rb_random_bytes(VALUE rnd, long n); - -/** - * Identical to rb_genrand_int32(), except it generates using the passed RNG. - * - * @param[in,out] rnd An instance of ::rb_cRandom. - * @return A random number. - */ -unsigned int rb_random_int32(VALUE rnd); - -/** - * Identical to rb_genrand_real(), except it generates using the passed RNG. - * - * @param[in,out] rnd An instance of ::rb_cRandom. - * @return A random number. - */ -double rb_random_real(VALUE rnd); - -/** - * Identical to rb_genrand_ulong_limited(), except it generates using the - * passed RNG. - * - * @param[in,out] rnd An instance of ::rb_cRandom. - * @param[in] limit Max possible return value. - * @return A random number, distributed in `[0, limit]` interval. - * @note Note it can return `limit`. - * @note Whether the return value distributes uniformly in the - * interval or not depends on how the argument RNG behaves; at - * least in case of MT19937 it does. - */ -unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit); - -/** - * Generates a random number whose upper limit is `i`. - * - * @param[in] i Max possible return value. - * @return A random number, uniformly distributed in `[0, limit]` interval. - * @note Note it can return `i`. - */ -unsigned long rb_genrand_ulong_limited(unsigned long i); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_RANDOM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/range.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/range.h deleted file mode 100644 index 1f7d7c3..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/range.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef RBIMPL_INTERN_RANGE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_RANGE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cRange. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* range.c */ - -/** - * Creates a new Range. - * - * @param[in] beg "Left" or "lowest" endpoint of the range. - * @param[in] end "Right" or "highest" endpoint of the range. - * @param[in] excl Whether the range is open-ended. - * @exception rb_eArgError `beg` and `end` are not comparable. - * @note These days both endpoints can be ::RUBY_Qnil, which means that - * endpoint is unbound. - */ -VALUE rb_range_new(VALUE beg, VALUE end, int excl); - -RBIMPL_ATTR_NONNULL(()) -/** - * Deconstructs a numerical range. As the arguments are `long` based, it - * expects everything are in the `long` domain. - * - * @param[in] range A range of numerical endpoints. - * @param[out] begp Return value buffer. - * @param[out] lenp Return value buffer. - * @param[in] len Updated length. - * @param[in] err In case `len` is out of range... - * - `0`: returns ::RUBY_Qnil. - * - `1`: raises ::rb_eRangeError. - * - `2`: `beg` and `len` expanded accordingly. - * @exception rb_eTypeError `range` is not a numerical range. - * @exception rb_eRangeError `range` cannot fit into `long`. - * @retval RUBY_Qfalse `range` is not an ::rb_cRange. - * @retval RUBY_Qnil `len` is out of `range` but `err` is zero. - * @retval RUBY_Qtrue Otherwise. - * @post `beg` is the (possibly updated) left endpoint. - * @post `len` is the (possibly updated) length of the range. - * - * @internal - * - * The complex error handling switch reflects the fact that `Array#[]=` and - * `String#[]=` behave differently when they take ranges. - */ -VALUE rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err); - -RBIMPL_ATTR_NONNULL(()) -/** - * Deconstructs a range into its components. - * - * @param[in] range Range or range-ish object. - * @param[out] begp Return value buffer. - * @param[out] endp Return value buffer. - * @param[out] exclp Return value buffer. - * @retval RUBY_Qfalse `range` is not an instance of ::rb_cRange. - * @retval RUBY_Qtrue Argument pointers are updated. - * @post `*begp` is the left endpoint of the range. - * @post `*endp` is the right endpoint of the range. - * @post `*exclp` is whether the range is open-ended or not. - */ -int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_RANGE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/rational.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/rational.h deleted file mode 100644 index ff4beca..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/rational.h +++ /dev/null @@ -1,172 +0,0 @@ -#ifndef RBIMPL_INTERN_RATIONAL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_RATIONAL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cRational. - */ -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/arithmetic/long.h" /* INT2FIX is here. */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* rational.c */ - -/** - * Identical to rb_rational_new(), except it skips argument validations. It is - * thus dangerous for extension libraries. For instance `1/0r` could be - * constructed using this. - * - * @param[in] num Numerator, an instance of ::rb_cInteger. - * @param[in] den Denominator, an instance of ::rb_cInteger. - * @exception rb_eTypeError Either argument is not an Integer. - * @return An instance of ::rb_cRational whose value is `(num/den)r`. - */ -VALUE rb_rational_raw(VALUE num, VALUE den); - -/** - * Shorthand of `(x/1)r`. As `x` is already an Integer, it practically - * converts it into a Rational of the identical value. - * - * @param[in] x An instance of ::rb_cInteger. - * @return An instance of ::rb_cRational, whose value is `(x/1)r`. - */ -#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1)) - -/** @alias{rb_rational_raw} */ -#define rb_rational_raw2(x,y) rb_rational_raw((x), (y)) - -/** - * Constructs a Rational, with reduction. This returns for instance `(2/3)r` - * for `rb_rational_new(INT2NUM(-384), INT2NUM(-576))`. - * - * @param[in] num Numerator, an instance of ::rb_cInteger. - * @param[in] den Denominator, an instance of ::rb_cInteger. - * @exception rb_eZeroDivError `den` is zero. - * @return An instance of ::rb_cRational whose value is `(num/den)r`. - */ -VALUE rb_rational_new(VALUE num, VALUE den); - -/** - * Shorthand of `(x/1)r`. As `x` is already an Integer, it practically - * converts it into a Rational of the identical value. - * - * @param[in] x An instance of ::rb_cInteger. - * @return An instance of ::rb_cRational, whose value is `(x/1)r`. - */ -#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1)) - -/** @alias{rb_rational_new} */ -#define rb_rational_new2(x,y) rb_rational_new((x), (y)) - -/** - * Converts various values into a Rational. This function accepts: - * - * - Instances of ::rb_cInteger (taken as-is), - * - Instances of ::rb_cRational (taken as-is), - * - Instances of ::rb_cFloat (applies `#to_r`), - * - Instances of ::rb_cComplex (applies `#to_r`), - * - Instances of ::rb_cString (applies `#to_r`), - * - Other objects that respond to `#to_r`. - * - * It (possibly recursively) applies `#to_r` until both sides become either - * Integer or Rational, then divides them. - * - * As a special case, passing ::RUBY_Qundef to `den` is the same as passing - * `RB_INT2NUM(1)`. - * - * @param[in] num Numerator (see above). - * @param[in] den Denominator (see above). - * @exception rb_eTypeError Passed something not described above. - * @exception rb_eFloatDomainError `#to_r` produced Nan/Inf. - * @exception rb_eZeroDivError `#to_r` produced zero for `den`. - * @return An instance of ::rb_cRational whose value is `(num/den)r`. - * - * @internal - * - * This was the implementation of `Kernel#Rational` before, but they diverged. - */ -VALUE rb_Rational(VALUE num, VALUE den); - -/** - * Shorthand of `(x/1)r`. It practically converts it into a Rational of the - * identical value. - * - * @param[in] x ::rb_cInteger, ::rb_cRational, or something that responds to - * `#to_r`. - * @return An instance of ::rb_cRational, whose value is `(x/1)r`. - */ -#define rb_Rational1(x) rb_Rational((x), INT2FIX(1)) - -/** @alias{rb_Rational} */ -#define rb_Rational2(x,y) rb_Rational((x), (y)) - -RBIMPL_ATTR_PURE() -/** - * Queries the numerator of the passed Rational. - * - * @param[in] rat An instance of ::rb_cRational. - * @return Its numerator part, which is an instance of ::rb_cInteger. - */ -VALUE rb_rational_num(VALUE rat); - -RBIMPL_ATTR_PURE() -/** - * Queries the denominator of the passed Rational. - * - * @param[in] rat An instance of ::rb_cRational. - * @return Its denominator part, which is an instance of ::rb_cInteger - * greater than or equal to one.. - */ -VALUE rb_rational_den(VALUE rat); - -/** - * Simplified approximation of a float. It returns a rational `rat` which - * satisfies: - * - * ``` - * flt - |prec| <= rat <= flt + |prec| - * ``` - * - * ```ruby - * 3.141592.rationalize(0.001) # => (201/64)r - * 3.141592.rationalize(0.01)' # => (22/7)r - * 3.141592.rationalize(0.1)' # => (16/5)r - * 3.141592.rationalize(1)' # => (3/1)r - * ``` - * - * @param[in] flt An instance of ::rb_cFloat to rationalise. - * @param[in] prec Another ::rb_cFloat, which is the "precision". - * @return Approximation of `flt`, in ::rb_cRational. - */ -VALUE rb_flt_rationalize_with_prec(VALUE flt, VALUE prec); - -/** - * Identical to rb_flt_rationalize_with_prec(), except it auto-detects - * appropriate precision depending on the passed value. - * - * @param[in] flt An instance of ::rb_cFloat to rationalise. - * @return Approximation of `flt`, in ::rb_cRational. - */ -VALUE rb_flt_rationalize(VALUE flt); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_RATIONAL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/re.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/re.h deleted file mode 100644 index 31f5593..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/re.h +++ /dev/null @@ -1,249 +0,0 @@ -#ifndef RBIMPL_INTERN_RE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_RE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cRegexp. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* re.c */ - -/** - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - * - * @internal - * - * This was a function that switched between memcmp and rb_memcicmp depending - * on then-called `ruby_ignorecase`, or the `$=` global variable. That feature - * was abandoned in sometime around version 1.9.0. - */ -#define rb_memcmp memcmp - -/** - * Identical to st_locale_insensitive_strcasecmp(), except it is timing safe - * and returns something different. - * - * @param[in] s1 Comparison LHS. - * @param[in] s2 Comparison RHS. - * @param[in] n Comparison shall stop after first `n` bytes are scanned. - * @retval <0 `s1` is "less" than `s2`. - * @retval 0 Both sides converted into lowercase would be identical. - * @retval >0 `s1` is "greater" than `s2`. - * @note The "case" here means that of the POSIX Locale. - * - * @internal - * - * Can accept NULLs as long as n is also 0, and returns 0. - */ -int rb_memcicmp(const void *s1,const void *s2, long n); - -/** - * Asserts that the given MatchData is "occupied". MatchData shares its - * backend storages with its Regexp object. But programs can destructively - * tamper its contents. Calling this function beforehand shall prevent such - * modifications to spill over into other objects. - * - * @param[out] md Target instance of ::rb_cMatch. - * @post The object is "busy". - * - * @internal - * - * There is rb_match_unbusy internally, but extension libraries are left unable - * to do so. - */ -void rb_match_busy(VALUE md); - -/** - * Identical to rb_reg_nth_match(), except it just returns Boolean. This could - * skip allocating a returning string, resulting in reduced memory footprints - * if applicable. - * - * @param[in] n Match index. - * @param[in] md An instance of ::rb_cMatch. - * @exception rb_eTypeError `md` is not initialised. - * @retval RUBY_Qnil There is no `n`-th capture. - * @retval RUBY_Qfalse There is a `n`-th capture and is empty. - * @retval RUBY_Qtrue There is a `n`-th capture that has something. - * - * @internal - * - * @shyouhei wonders: why there are both rb_reg_match_defined() and - * rb_match_nth_defined, which are largely the same things, but do not share - * their implementations at all? - */ -VALUE rb_reg_nth_defined(int n, VALUE md); - -/** - * Queries the nth captured substring. - * - * @param[in] n Match index. - * @param[in] md An instance of ::rb_cMatch. - * @exception rb_eTypeError `md` is not initialised. - * @retval RUBY_Qnil There is no `n`-th capture. - * @retval otherwise An allocated instance of ::rb_cString containing - * the contents captured. - */ -VALUE rb_reg_nth_match(int n, VALUE md); - -/** - * Queries the index of the given named capture. Captures could be named. But - * that doesn't mean named ones are not indexed. A regular expression can mix - * named and non-named captures, and they are all indexed. This function - * converts from a name to its index. - * - * @param[in] match An instance of ::rb_cMatch. - * @param[in] backref Capture name, in String, Symbol, or Numeric. - * @exception rb_eIndexError No such named capture. - * @return The index of the given name. - */ -int rb_reg_backref_number(VALUE match, VALUE backref); - -/** - * This just returns the argument, stringified. What a poor name. - * - * @param[in] md An instance of ::rb_cMatch. - * @return Its 0th capture (i.e. entire matched string). - */ -VALUE rb_reg_last_match(VALUE md); - -/** - * The portion of the original string before the given match. - * - * @param[in] md An instance of ::rb_cMatch. - * @return Its "prematch". This is perl's ``$```. - */ -VALUE rb_reg_match_pre(VALUE md); - -/** - * The portion of the original string after the given match. - * - * @param[in] md An instance of ::rb_cMatch. - * @return Its "postmatch". This is perl's `$'`. - */ -VALUE rb_reg_match_post(VALUE md); - -/** - * The portion of the original string that captured at the very last. - * - * @param[in] md An instance of ::rb_cMatch. - * @return Its "lastmatch". This is perl's `$+`. - */ -VALUE rb_reg_match_last(VALUE md); - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_RB_REG_NEW_STR 1 - -/** - * Identical to rb_reg_new(), except it takes the expression in Ruby's string - * instead of C's. - * - * @param[in] src Source code in String. - * @param[in] opts Options e.g. ONIG_OPTION_MULTILINE. - * @exception rb_eRegexpError `src` and `opts` do not interface. - * @return Allocated new instance of ::rb_cRegexp. - */ -VALUE rb_reg_new_str(VALUE src, int opts); - -RBIMPL_ATTR_NONNULL(()) -/** - * Creates a new Regular expression. - * - * @param[in] src Source code. - * @param[in] len `strlen(src)`. - * @param[in] opts Options e.g. ONIG_OPTION_MULTILINE. - * @return Allocated new instance of ::rb_cRegexp. - */ -VALUE rb_reg_new(const char *src, long len, int opts); - -/** - * Allocates an instance of ::rb_cRegexp. - * - * @private - * - * Nobody should call this function. Regular expressions that are not - * initialised must not exist in the wild. - */ -VALUE rb_reg_alloc(void); - -/** - * Initialises an instance of ::rb_cRegexp. - * - * @private - * - * This just raises for ordinal regexp objects. Extension libraries must not - * use. - */ -VALUE rb_reg_init_str(VALUE re, VALUE s, int options); - -/** - * This is the match operator. - * - * @param[in] re An instance of ::rb_cRegexp. - * @param[in] str An instance of ::rb_cString. - * @exception rb_eTypeError `str` is not a string. - * @exception rb_eRegexpError Error inside of Onigmo (unlikely). - * @retval RUBY_Qnil Match failed. - * @retval otherwise Matched position (character index inside of - * `str`). - * @post `Regexp.last_match` is updated. - * @post `$&`, `$~`, etc., are updated. - * @note If you do this in ruby, named captures are assigned to local - * variable of the local scope. But that doesn't happen here. The - * assignment is done by the interpreter. - */ -VALUE rb_reg_match(VALUE re, VALUE str); - -/** - * Identical to rb_reg_match(), except it matches against rb_lastline_get() - * (or, the `$_`). - * - * @param[in] re An instance of ::rb_cRegexp. - * @exception rb_eRegexpError Error inside of Onigmo (unlikely). - * @retval RUBY_Qnil Match failed or `$_` is absent. - * @retval otherwise Matched position (character index inside of - * `$_`). - * @post `Regexp.last_match` is updated. - * @post `$&`, `$~`, etc., are updated. - */ -VALUE rb_reg_match2(VALUE re); - -/** - * Queries the options of the passed regular expression. - * - * @param[in] re An instance of ::rb_cRegexp. - * @return Its options. - * @note Possible return values are defined in Onigmo.h. - */ -int rb_reg_options(VALUE re); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_RE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/ruby.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/ruby.h deleted file mode 100644 index efe6142..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/ruby.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef RBIMPL_INTERN_RUBY_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_RUBY_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Process-global APIs. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* ruby.c */ -/** @alias{rb_get_argv} */ -#define rb_argv rb_get_argv() - -/** - * The value of `$0` at process bootup. - * - * @note This is just a snapshot of `$0`, not the backend storage of it. `$0` - * could become something different because it is a writable global - * variable. Modifying it for instance affects `ps(1)` output. Don't - * assume they are synced. - */ -RUBY_EXTERN VALUE rb_argv0; - -/* io.c */ - -/** - * Queries the arguments passed to the current process that you can access from - * Ruby as `ARGV`. - * - * @return An array of strings containing arguments passed to the process. - */ -VALUE rb_get_argv(void); - -/* ruby.c */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Loads the given file. This function opens the given pathname for reading, - * parses the contents as a Ruby script, and returns an opaque "node" pointer. - * You can then pass it to ruby_run_node() for evaluation. - * - * @param[in] file File name, or "-" to read from stdin. - * @return Opaque "node" pointer. - */ -void *rb_load_file(const char *file); - -/** - * Identical to rb_load_file(), except it takes the argument as a Ruby's string - * instead of C's. - * - * @param[in] file File name, or "-" to read from stdin. - * @return Opaque "node" pointer. - */ -void *rb_load_file_str(VALUE file); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_RUBY_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select.h deleted file mode 100644 index fabc287..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef RBIMPL_INTERN_SELECT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_SELECT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs to provide ::rb_fd_select(). - * @note Functions and structs defined in this header file are not - * necessarily ruby-specific. They don't need ::VALUE etc. - */ -#include "ruby/internal/config.h" - -#ifdef HAVE_SYS_TYPES_H -# include /* for NFDBITS (BSD Net/2) */ -#endif - -#include "ruby/internal/dllexport.h" - -/* thread.c */ -#if defined(NFDBITS) && defined(HAVE_RB_FD_INIT) -# include "ruby/internal/intern/select/largesize.h" -#elif defined(_WIN32) -# include "ruby/internal/intern/select/win32.h" -# /** Does nothing (defined for compatibility). */ -# define rb_fd_resize(n, f) ((void)(f)) -#else -# include "ruby/internal/intern/select/posix.h" -# /** Does nothing (defined for compatibility). */ -# define rb_fd_resize(n, f) ((void)(f)) -#endif - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -struct timeval; - -/** - * Waits for multiple file descriptors at once. This is basically a wrapper of - * system-provided select() with releasing GVL, to allow other Ruby threads run - * in parallel. - * - * @param[in] nfds Max FD in everything passed, plus one. - * @param[in,out] rfds Set of FDs to wait for reads. - * @param[in,out] wfds Set of FDs to wait for writes. - * @param[in,out] efds Set of FDs to wait for OOBs. - * @param[in,out] timeout Max blocking duration. - * @retval -1 Failed, errno set. - * @retval 0 Timeout exceeded. - * @retval otherwise Total number of file descriptors returned. - * @post `rfds` contains readable FDs. - * @post `wfds` contains writable FDs. - * @post `efds` contains exceptional FDs. - * @post `timeout` is the time left. - * @note All pointers are allowed to be null pointers. - * - * Although backend threads can run in parallel of this function, touching a - * file descriptor from multiple threads could be problematic. For instance - * what happens when a thread closes a file descriptor that is selected by - * someone else, vastly varies among operating systems. You would better avoid - * touching an fd from more than one threads. - * - * @internal - * - * Although any file descriptors are possible here, it makes completely no - * sense to pass a descriptor that is not `O_NONBLOCK`. If you want to know - * the reason for this limitatuon in detail, you might find this thread super - * interesting: https://lkml.org/lkml/2004/10/6/117 - */ -int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_SELECT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/largesize.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/largesize.h deleted file mode 100644 index d156f62..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/largesize.h +++ /dev/null @@ -1,217 +0,0 @@ -#ifndef RBIMPL_INTERN_SELECT_LARGESIZE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_SELECT_LARGESIZE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs to provide ::rb_fd_select(). - * - * Several Unix platforms support file descriptors bigger than FD_SETSIZE in - * `select(2)` system call. - * - * - Linux 2.2.12 (?) - * - * - NetBSD 1.2 (src/sys/kern/sys_generic.c:1.25) - * `select(2)` documents how to allocate fd_set dynamically. - * http://netbsd.gw.com/cgi-bin/man-cgi?select++NetBSD-4.0 - * - * - FreeBSD 2.2 (src/sys/kern/sys_generic.c:1.19) - * - * - OpenBSD 2.0 (src/sys/kern/sys_generic.c:1.4) - * `select(2)` documents how to allocate fd_set dynamically. - * http://www.openbsd.org/cgi-bin/man.cgi?query=select&manpath=OpenBSD+4.4 - * - * - HP-UX documents how to allocate fd_set dynamically. - * http://docs.hp.com/en/B2355-60105/select.2.html - * - * - Solaris 8 has `select_large_fdset` - * - * - Mac OS X 10.7 (Lion) - * `select(2)` returns `EINVAL` if `nfds` is greater than `FD_SET_SIZE` and - * `_DARWIN_UNLIMITED_SELECT` (or `_DARWIN_C_SOURCE`) isn't defined. - * http://developer.apple.com/library/mac/#releasenotes/Darwin/SymbolVariantsRelNotes/_index.html - * - * When `fd_set` is not big enough to hold big file descriptors, it should be - * allocated dynamically. Note that this assumes `fd_set` is structured as - * bitmap. - * - * `rb_fd_init` allocates the memory. - * `rb_fd_term` frees the memory. - * `rb_fd_set` may re-allocate bitmap. - * - * So `rb_fd_set` doesn't reject file descriptors bigger than `FD_SETSIZE`. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" - -/**@cond INTERNAL_MACRO */ -#define rb_fd_ptr rb_fd_ptr -#define rb_fd_max rb_fd_max -/** @endcond */ - -struct timeval; - -/** - * The data structure which wraps the fd_set bitmap used by select(2). This - * allows Ruby to use FD sets larger than that allowed by historic limitations - * on modern platforms. - */ -typedef struct { - int maxfd; /**< Maximum allowed number of FDs. */ - fd_set *fdset; /**< File descriptors buffer */ -} rb_fdset_t; - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_NONNULL(()) -/** - * (Re-)initialises a fdset. One must be initialised before other `rb_fd_*` - * operations. Analogous to calling `malloc(3)` to allocate an `fd_set`. - * - * @param[out] f An fdset to squash. - * @post `f` holds no file descriptors. - */ -void rb_fd_init(rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -/** - * Destroys the ::rb_fdset_t, releasing any memory and resources it used. It - * must be reinitialised using rb_fd_init() before future use. Analogous to - * calling `free(3)` to release memory for an `fd_set`. - * - * @param[out] f An fdset to squash. - * @post `f` holds no file descriptors. - */ -void rb_fd_term(rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -/** - * Wipes out the current set of FDs. - * - * @param[out] f The fdset to clear. - * @post `f` has no FDs. - */ -void rb_fd_zero(rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -/** - * Sets an fd to a fdset. - * - * @param[in] fd A file descriptor. - * @param[out] f Target fdset. - * @post `f` holds `fd`. - */ -void rb_fd_set(int fd, rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -/** - * Releases a specific FD from the given fdset. - * - * @param[in] fd Target FD. - * @param[out] f The fdset that holds `fd`. - * @post `f` doesn't hold n. - */ -void rb_fd_clr(int fd, rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_PURE() -/** - * Queries if the given FD is in the given set. - * - * @param[in] fd Target FD. - * @param[in] f The fdset to scan. - * @retval 1 Yes there is. - * @retval 0 No there isn't. - * @see http://www.freebsd.org/cgi/query-pr.cgi?pr=91421 - */ -int rb_fd_isset(int fd, const rb_fdset_t *f); - -/** - * Destructively overwrites an fdset with another. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @param[in] max Maximum number of file descriptors to copy. - * @post `dst` is a copy of `src`. - */ -void rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int max); - -/** - * Identical to rb_fd_copy(), except it copies unlimited number of file - * descriptors. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @post `dst` is a copy of `src`. - */ -void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src); - -/** - * Waits for multiple file descriptors at once. - * - * @param[in] nfds Max FD in everything passed, plus one. - * @param[in,out] rfds Set of FDs to wait for reads. - * @param[in,out] wfds Set of FDs to wait for writes. - * @param[in,out] efds Set of FDs to wait for OOBs. - * @param[in,out] timeout Max blocking duration. - * @retval -1 Failed, errno set. - * @retval 0 Timeout exceeded. - * @retval otherwise Total number of file descriptors returned. - * @post `rfds` contains readable FDs. - * @post `wfds` contains writable FDs. - * @post `efds` contains exceptional FDs. - * @post `timeout` is the time left. - * @note All pointers are allowed to be null pointers. - */ -int rb_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_PURE() -/** - * Raw pointer to `fd_set`. - * - * @param[in] f Target fdset. - * @retval NULL `f` is already terminated by rb_fd_term(). - * @retval otherwise Underlying fd_set. - * - * @internal - * - * Extension library must not touch raw pointers. It was a bad idea to let - * them use it. - */ -static inline fd_set * -rb_fd_ptr(const rb_fdset_t *f) -{ - return f->fdset; -} - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_PURE() -/** - * It seems this function has no use. Maybe just remove? - * - * @param[in] f A set. - * @return Number of file descriptors stored. - */ -static inline int -rb_fd_max(const rb_fdset_t *f) -{ - return f->maxfd; -} - -#endif /* RBIMPL_INTERN_SELECT_LARGESIZE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/posix.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/posix.h deleted file mode 100644 index 5f828e6..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/posix.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef RBIMPL_INTERN_SELECT_POSIX_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_SELECT_POSIX_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs to provide ::rb_fd_select(). - */ -#include "ruby/internal/config.h" - -#ifdef HAVE_SYS_SELECT_H -# include /* for select(2) (modern POSIX) */ -#endif - -#ifdef HAVE_UNISTD_H -# include /* for select(2) (archaic UNIX) */ -#endif - -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" - -/** - * The data structure which wraps the fd_set bitmap used by `select(2)`. This - * allows Ruby to use FD sets larger than what has been historically allowed on - * modern platforms. - * - * @internal - * - * ... but because this header file is included only when the system is with - * that "historic restrictions", this is nothing more than an alias of fd_set. - */ -typedef fd_set rb_fdset_t; - -/** Clears the given ::rb_fdset_t. */ -#define rb_fd_zero FD_ZERO - -/** Sets the given fd to the ::rb_fdset_t. */ -#define rb_fd_set FD_SET - -/** Unsets the given fd from the ::rb_fdset_t. */ -#define rb_fd_clr FD_CLR - -/** Queries if the given fd is in the ::rb_fdset_t. */ -#define rb_fd_isset FD_ISSET - -/** Initialises the :given :rb_fdset_t. */ -#define rb_fd_init FD_ZERO - -/** Waits for multiple file descriptors at once. */ -#define rb_fd_select select - -/**@cond INTERNAL_MACRO */ -#define rb_fd_copy rb_fd_copy -#define rb_fd_dup rb_fd_dup -#define rb_fd_ptr rb_fd_ptr -#define rb_fd_max rb_fd_max -/** @endcond */ - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_NOALIAS() -/** - * Destructively overwrites an fdset with another. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @param[in] n Unused parameter. - * @post `dst` is a copy of `src`. - */ -static inline void -rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int n) -{ - *dst = *src; -} - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_NOALIAS() -/** - * Destructively overwrites an fdset with another. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @post `dst` is a copy of `src`. - */ -static inline void -rb_fd_dup(rb_fdset_t *dst, const fd_set *src) -{ - *dst = *src; -} - -RBIMPL_ATTR_PURE() -/* :TODO: can this function be __attribute__((returns_nonnull)) or not? */ -/** - * Raw pointer to `fd_set`. - * - * @param[in] f Target fdset. - * @return Underlying fd_set. - * - * @internal - * - * Extension library must not touch raw pointers. It was a bad idea to let - * them use it. - */ -static inline fd_set * -rb_fd_ptr(rb_fdset_t *f) -{ - return f; -} - -RBIMPL_ATTR_CONST() -/** - * It seems this function has no use. Maybe just remove? - * - * @param[in] f A set. - * @return Number of file descriptors stored. - */ -static inline int -rb_fd_max(const rb_fdset_t *f) -{ - return FD_SETSIZE; -} - -/** @cond INTERNAL_MACRO */ -/* :FIXME: What are these? They don't exist for shibling implementations. */ -#define rb_fd_init_copy(d, s) (*(d) = *(s)) -#define rb_fd_term(f) ((void)(f)) -/** @endcond */ - -#endif /* RBIMPL_INTERN_SELECT_POSIX_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/win32.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/win32.h deleted file mode 100644 index edaf7a8..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/select/win32.h +++ /dev/null @@ -1,259 +0,0 @@ -#ifndef RBIMPL_INTERN_SELECT_WIN32_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_SELECT_WIN32_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs to provide ::rb_fd_select(). - */ -#include "ruby/internal/dosish.h" /* for rb_w32_select */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/dllexport.h" -#include "ruby/assert.h" - -/**@cond INTERNAL_MACRO */ -#define rb_fd_zero rb_fd_zero -#define rb_fd_clr rb_fd_clr -#define rb_fd_isset rb_fd_isset -#define rb_fd_copy rb_fd_copy -#define rb_fd_dup rb_fd_dup -#define rb_fd_ptr rb_fd_ptr -#define rb_fd_max rb_fd_max -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -struct timeval; - -/** - * The data structure which wraps the fd_set bitmap used by select(2). This - * allows Ruby to use FD sets larger than that allowed by historic limitations - * on modern platforms. - */ -typedef struct { - int capa; /**< Maximum allowed number of FDs. */ - fd_set *fdset; /**< File descriptors buffer. */ -} rb_fdset_t; - -RBIMPL_ATTR_NONNULL(()) -/** - * (Re-)initialises a fdset. One must be initialised before other `rb_fd_*` - * operations. Analogous to calling `malloc(3)` to allocate an `fd_set`. - * - * @param[out] f An fdset to squash. - * @post `f` holds no file descriptors. - * - * @internal - * - * Can't this leak memory if the same `f` is passed twice...? - */ -void rb_fd_init(rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -/** - * Destroys the ::rb_fdset_t, releasing any memory and resources it used. It - * must be reinitialised using rb_fd_init() before future use. Analogous to - * calling `free(3)` to release memory for an `fd_set`. - * - * @param[out] f An fdset to squash. - * @post `f` holds no file descriptors. - */ -void rb_fd_term(rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -/** - * Sets an fd to a fdset. - * - * @param[in] fd A file descriptor. - * @param[out] f Target fdset. - * @post `f` holds `fd`. - */ -void rb_fd_set(int fd, rb_fdset_t *f); - -RBIMPL_ATTR_NONNULL(()) -/** - * Destructively overwrites an fdset with another. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @param[in] max Maximum number of file descriptors to copy. - * @post `dst` is a copy of `src`. - */ -void rb_w32_fd_copy(rb_fdset_t *dst, const fd_set *src, int max); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_w32_fd_copy(), except it copies unlimited number of file - * descriptors. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @post `dst` is a copy of `src`. - */ -void rb_w32_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src); - -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_NOALIAS() -/** - * Wipes out the current set of FDs. - * - * @param[out] f The fdset to clear. - * @post `f` has no FDs. - */ -static inline void -rb_fd_zero(rb_fdset_t *f) -{ - f->fdset->fd_count = 0; -} - -RBIMPL_ATTR_NONNULL(()) -/** - * Releases a specific FD from the given fdset. - * - * @param[in] n Target FD. - * @param[out] f The fdset that holds `n`. - * @post `f` doesn't hold n. - */ -static inline void -rb_fd_clr(int n, rb_fdset_t *f) -{ - rb_w32_fdclr(n, f->fdset); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * Queries if the given FD is in the given set. - * - * @param[in] n Target FD. - * @param[in] f The fdset to scan. - * @retval 1 Yes there is. - * @retval 0 No there isn't. - */ -static inline int -rb_fd_isset(int n, rb_fdset_t *f) -{ - return rb_w32_fdisset(n, f->fdset); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * Destructively overwrites an fdset with another. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @param[in] n Maximum number of file descriptors to copy. - * @post `dst` is a copy of `src`. - */ -static inline void -rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int n) -{ - rb_w32_fd_copy(dst, src, n); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_fd_copy(), except it copies unlimited number of file - * descriptors. - * - * @param[out] dst Target fdset. - * @param[in] src Source fdset. - * @post `dst` is a copy of `src`. - */ -static inline void -rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src) -{ - rb_w32_fd_dup(dst, src); -} - -/** - * Waits for multiple file descriptors at once. - * - * @param[in] n Max FD in everything passed, plus one. - * @param[in,out] rfds Set of FDs to wait for reads. - * @param[in,out] wfds Set of FDs to wait for writes. - * @param[in,out] efds Set of FDs to wait for OOBs. - * @param[in,out] timeout Max blocking duration. - * @retval -1 Failed, errno set. - * @retval 0 Timeout exceeded. - * @retval otherwise Total number of file descriptors returned. - * @post `rfds` contains readable FDs. - * @post `wfds` contains writable FDs. - * @post `efds` contains exceptional FDs. - * @post `timeout` is the time left. - * @note All pointers are allowed to be null pointers. - * - * @internal - * - * This can wait for `SOCKET` and `HANDLE` at once. In order to achieve that - * property we heavily touch the internals of MSVCRT. We `CreateFile` a - * `"NUL"` alongside of a socket and directly manipulate its `struct ioinfo`. - * This is of course a very dirty hack. If we could design the API today we - * could use `CancellIoEx`. But we are older than that Win32 API. - */ -static inline int -rb_fd_select(int n, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout) -{ - return rb_w32_select( - n, - rfds ? rfds->fdset : NULL, - wfds ? wfds->fdset : NULL, - efds ? efds->fdset : NULL, - timeout); -} - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_PURE() -/** - * Raw pointer to `fd_set`. - * - * @param[in] f Target fdset. - * @retval NULL `f` is already terminated by rb_fd_term(). - * @retval otherwise Underlying fd_set. - * - * @internal - * - * Extension library must not touch raw pointers. It was a bad idea to let - * them use it. - */ -static inline fd_set * -rb_fd_ptr(const rb_fdset_t *f) -{ - return f->fdset; -} - -RBIMPL_ATTR_NONNULL(()) -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/** - * It seems this function has no use. Maybe just remove? - * - * @param[in] f A set. - * @return Number of file descriptors stored. - */ -static inline int -rb_fd_max(const rb_fdset_t *f) -{ - const fd_set *p = f->fdset; - - RBIMPL_ASSERT_OR_ASSUME(p); - return p->fd_count; -} - -#endif /* RBIMPL_INTERN_SELECT_WIN32_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/signal.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/signal.h deleted file mode 100644 index 84f7558..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/signal.h +++ /dev/null @@ -1,152 +0,0 @@ -#ifndef RBIMPL_INTERN_SIGNAL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_SIGNAL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Signal handling APIs. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* signal.c */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Sends a signal ("kills") to processes. - * - * The first argument is the signal, either in: - * - * - Numerical representation (e.g. `9`), or - * - Textual representation of canonical (e.g. `:SIGKILL`) name or - * abbreviated (e.g. `:KILL`) name, either in ::rb_cSymbol or ::rb_cString. - * - * All the remaining arguments are numerical representations of process IDs. - * This function iterates over them to send the specified signal. - * - * You can specify both negative PIDs and negative signo to this function: - * - * ``` - * sig \ pid | >= 1 | == 0 | == -1 | <= -2 - * ===========+======+======+=======+======= - * > 0 | #1 | #2 | #3 | #4 - * == 0 | #5 | #6 | #7 | #8 - * < 0 | #9 | #10 | #11 - * ``` - * - * - Case #1: When signo and PID are both positive, this function sends the - * specified signal to the specified process (intuitive). - * - * - Case #2: When signo is positive and PID is zero, this function sends - * that signal to the current process group. - * - * - Case #3: When signo is positive and PID is -1, this function sends that - * signal to everything that the current process is allowed to kill. - * - * - Case #4: When signo is positive and PID is negative (but not -1), this - * function sends that signal to every processes in a process group, whose - * process group ID is the absolute value of the passed PID. - * - * - Case #5: When signo is zero and PID is positive, this function just - * checks for the existence of the specified process and doesn't send - * anything to anyone. In case the process is absent `Errno::ESRCH` is - * raised. - * - * - Case #6: When signo and PID are both zero, this function checks for the - * existence of the current process group. And it must do. This function - * is effectively a no-op then. - * - * - Case #7: When signo is zero and PID is -1, this function checks if there - * is any other process that the current process can kill. At least init - * (PID 1) must exist, so this must not fail. - * - * - Case #8: When signo is zero and PID is negative (but not -1), this - * function checks if there is a process group whose process group ID is - * the absolute value of the passed PID. In case the process group is - * absent `Errno::ESRCH` is raised. - * - * - Case #9: When signo is negative and PID is positive, this function sends - * the absolute value of the passed signo to the process group specified as - * the PID. - * - * - Case #10: When signo is negative and PID is zero, it is highly expected - * that this function sends the absolute value of the passed signo to the - * current process group. Strictly speaking, IEEE Std 1003.1-2017 - * specifies that this (`killpg(3posix)` with an argument of zero) is an - * undefined behaviour. But no operating system is known so far that does - * things differently. - * - * - Case #11: When signo and PID are both negative, the behaviour of this - * function depends on how `killpg(3)` works. On Linux, it seems such - * attempt is strictly prohibited and `Errno::EINVAL` is raised. But on - * macOS, it seems it tries to to send the signal actually to the process - * group. - * - * @note Above description is in fact different from how `kill(2)` works. - * We interpret the passed arguments before passing them through to - * system calls. - * @param[in] argc Number of objects in `argv`. - * @param[in] argv Signal, followed by target PIDs. - * @exception rb_eArgError Unknown signal name. - * @exception rb_eSystemCallError Various errors sending signal to processes. - * @return Something numeric. The meaning of this return value is unclear. - * It seems in case of #1 above, this could be the body count. But - * other cases remain mysterious. - */ -VALUE rb_f_kill(int argc, const VALUE *argv); - -/* This must be private, @shyouhei guesses. */ -#ifdef POSIX_SIGNAL -#define posix_signal ruby_posix_signal -void (*posix_signal(int, void (*)(int)))(int); -#endif - -RBIMPL_ATTR_PURE() -/** - * Queries the name of the signal. It returns for instance `"KILL"` for - * SIGKILL. - * - * @param[in] signo Signal number to query. - * @retval 0 No such signal. - * @retval otherwise A pointer to a static C string that is the name of - * the signal. - * @warning Don't free the return value. - */ -const char *ruby_signal_name(int signo); - -/** - * Pretends as if there was no custom signal handler. This function sets the - * signal action to SIG_DFL, then kills itself. - * - * @param[in] sig The signal. - * @post Previous signal handler is lost. - * @post Passed signal is sent to the current process. - * - * @internal - * - * @shyouhei doesn't understand the needs of this function being visible from - * extension libraries. - */ -void ruby_default_signal(int sig); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_SIGNAL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/sprintf.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/sprintf.h deleted file mode 100644 index aedc0f9..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/sprintf.h +++ /dev/null @@ -1,159 +0,0 @@ -#ifndef RBIMPL_INTERN_SPRINTF_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_SPRINTF_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Our own private `printf(3)`. - */ -#include "ruby/internal/attr/format.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* sprintf.c */ - -/** - * Identical to rb_str_format(), except how the arguments are arranged. - * - * @param[in] argc Number of objects of `argv`. - * @param[in] argv A format string, followed by its arguments. - * @return A rendered new instance of ::rb_cString. - * - * @internal - * - * You can safely pass NULL to `argv`. Doesn't make any sense though. - */ -VALUE rb_f_sprintf(int argc, const VALUE *argv); - -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -/** - * Ruby's extended `sprintf(3)`. We ended up reinventing the entire `printf` - * business because we don't want to depend on locales. OS-provided `printf` - * routines might or might not, which caused instabilities of the result - * strings. - * - * The format sequence is a mixture of format specifiers and other verbatim - * contents. Each format specifier starts with a `%`, and has the following - * structure: - * - * ``` - * %[flags][width][.precision][length]conversion - * ``` - * - * This function supports flags of ` `, `#`, `+`, `-`, `0`, width of - * non-negative decimal integer and `*`, precision of non-negative decimal - * integers and `*`, length of `L`, `h`, `t`, `z`, `l`, `ll`, `q`, conversions - * of `A`, `D`, `E`, `G`, `O`, `U`, `X`, `a`, `c`, `d`, `e`, `f`, `g`, `i`, - * `n`, `o`, `p`, `s`, `u`, `x`, and `%`. In case of `_WIN32` it also supports - * `I`. And additionally, it supports magical `PRIsVALUE` macro that can - * stringise arbitrary Ruby objects: - * - * ```CXX - * rb_sprintf("|%"PRIsVALUE"|", RUBY_Qtrue); // => "|true|" - * rb_sprintf("%+"PRIsVALUE, rb_stdin); // => "#>" - * ``` - * - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ... Variadic number of contents to format. - * @return A rendered new instance of ::rb_cString. - * - * @internal - * - * :FIXME: We can improve this document. - */ -VALUE rb_sprintf(const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 0) -/** - * Identical to rb_sprintf(), except it takes a `va_list`. - * - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ap Contents to format. - * @return A rendered new instance of ::rb_cString. - */ -VALUE rb_vsprintf(const char *fmt, va_list ap); - -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) -/** - * Identical to rb_sprintf(), except it renders the output to the specified - * object rather than creating a new one. - * - * @param[out] dst String to modify. - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ... Variadic number of contents to format. - * @exception rb_eTypeError `dst` is not a String. - * @return Passed `dst`. - * @post `dst` has the rendered output appended to its end. - */ -VALUE rb_str_catf(VALUE dst, const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((2)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 0) -/** - * Identical to rb_str_catf(), except it takes a `va_list`. It can also be - * seen as a routine identical to rb_vsprintf(), except it renders the output - * to the specified object rather than creating a new one. - * - * @param[out] dst String to modify. - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ap Contents to format. - * @exception rb_eTypeError `dst` is not a String. - * @return Passed `dst`. - * @post `dst` has the rendered output appended to its end. - */ -VALUE rb_str_vcatf(VALUE dst, const char *fmt, va_list ap); - -/** - * Formats a string. - * - * Returns the string resulting from applying `fmt` to `argv`. The format - * sequence is a mixture of format specifiers and other verbatim contents. - * Each format specifier starts with a `%`, and has the following structure: - * - * ``` - * %[flags][width][.precision]type - * ``` - * - * ... which is different from that of rb_sprintf(). Because ruby has no - * `short` or `long`, there is no way to specify a "length" of an argument. - * - * This function supports flags of ` `, `#`, `+`, `-`, `<>`, `{}`, with of - * non-negative decimal integer and `$`, `*`, precision of non-negative decimal - * integer and `$`, `*`, type of `A`, `B`, `E`, `G`, `X`, `a`, `b`, `c`, `d`, - * `e`, `f`, `g`, `i`, `o`, `p`, `s`, `u`, `x`, `%`. This list is also - * (largely the same but) not identical to that of rb_sprintf(). - * - * @param[in] argc Number of objects in `argv`. - * @param[in] argv Format arguments. - * @param[in] fmt A printf-like format specifier. - * @exception rb_eTypeError `fmt` is not a string. - * @exception rb_eArgError Failed to parse `fmt`. - * @return A rendered new instance of ::rb_cString. - * @note Everything it takes must be Ruby objects. - * - */ -VALUE rb_str_format(int argc, const VALUE *argv, VALUE fmt); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_SPRINTF_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/string.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/string.h deleted file mode 100644 index 2ee8496..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/string.h +++ /dev/null @@ -1,1821 +0,0 @@ -#ifndef RBIMPL_INTERN_STRING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_STRING_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cString. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#ifdef HAVE_STRING_H -# include -#endif - -#ifdef HAVE_STDINT_H -# include -#endif - -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/constant_p.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/variable.h" /* rb_gvar_setter_t */ -#include "ruby/st.h" /* st_index_t */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* string.c */ - -/** - * Allocates an instance of ::rb_cString. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of - * "binary" encoding, whose contents are verbatim copy of `ptr`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - */ -VALUE rb_str_new(const char *ptr, long len); - -/** - * Identical to rb_str_new(), except it assumes the passed pointer is a pointer - * to a C string. - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @exception rb_eArgError `ptr` is a null pointer. - * @return An instance of ::rb_cString, of "binary" encoding, whose - * contents are verbatim copy of `ptr`. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_str_new_cstr(const char *ptr); - -/** - * Identical to rb_str_new_cstr(), except it takes a Ruby's string instead of - * C's. Implementation wise it creates a string that shares the backend memory - * region with the receiver. So the name. But there is no way for extension - * libraries to know if a string is of such variant. - * - * @param[in] str An object of ::RString. - * @return An allocated instance of ::rb_cString, which shares the - * encoding, length, and contents with the passed string. - * @pre `str` must not be any arbitrary object except ::RString. - * @note Use #StringValue to enforce the precondition. - */ -VALUE rb_str_new_shared(VALUE str); - -/** - * Creates a frozen copy of the string, if necessary. This function does - * nothing when the passed string is already frozen. Otherwise, it allocates a - * copy of it, which is frozen. The passed string is untouched either ways. - * - * @param[in] str An object of ::RString. - * @return Something frozen. - * @pre `str` must not be any arbitrary object except ::RString. - * @note Use #StringValue to enforce the precondition. - */ -VALUE rb_str_new_frozen(VALUE str); - -/** - * Identical to rb_str_new(), except it takes the class of the allocating - * object. - * - * @param[in] obj A string-ish object. - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of the class of `obj`, of `len` bytes length, of - * "binary" encoding, whose contents are verbatim copy of `ptr`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - * - * @internal - * - * Why it doesn't take an instance of ::rb_cClass? - */ -VALUE rb_str_new_with_class(VALUE obj, const char *ptr, long len); - -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @exception rb_eArgError `ptr` is a null pointer. - * @return An instance of ::rb_cString, of "binary" encoding, whose - * contents are verbatim copy of `ptr`. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_tainted_str_new_cstr(const char *ptr); - -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of - * "binary" encoding, whose contents are verbatim copy of `ptr`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - */ -VALUE rb_tainted_str_new(const char *ptr, long len); - -/** - * Identical to rb_str_new(), except it generates a string of "default - * external" encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "default external" is fully defined over - * the given contents, then the return value is a string of - * "default external" encoding, whose contents are the converted - * ones. Otherwise the string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - */ -VALUE rb_external_str_new(const char *ptr, long len); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_external_str_new(), except it assumes the passed pointer is - * a pointer to a C string. It can also be seen as a routine identical to - * rb_str_new_cstr(), except it generates a string of "default external" - * encoding. - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "default external" is fully defined over - * the given contents, then the return value is a string of - * "default external" encoding, whose contents are the converted - * ones. Otherwise the string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_external_str_new_cstr(const char *ptr); - -/** - * Identical to rb_str_new(), except it generates a string of "locale" - * encoding. It can also be seen as a routine identical to - * rb_external_str_new(), except it generates a string of "locale" encoding - * instead of "default external" encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "locale" is fully defined over the given - * contents, then the return value is a string of "locale" - * encoding, whose contents are the converted ones. Otherwise the - * string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - */ -VALUE rb_locale_str_new(const char *ptr, long len); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_locale_str_new(), except it assumes the passed pointer is a - * pointer to a C string. It can also be seen as a routine identical to - * rb_external_str_new_cstr(), except it generates a string of "locale" - * encoding instead of "default external". - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "locale" is fully defined over the given - * contents, then the return value is a string of "locale" - * encoding, whose contents are the converted ones. Otherwise the - * string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_locale_str_new_cstr(const char *ptr); - -/** - * Identical to rb_str_new(), except it generates a string of "filesystem" - * encoding. It can also be seen as a routine identical to - * rb_external_str_new(), except it generates a string of "filesystem" encoding - * instead of "default external" encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "filesystem" is fully defined over the - * given contents, then the return value is a string of - * "filesystem" encoding, whose contents are the converted ones. - * Otherwise the string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - */ -VALUE rb_filesystem_str_new(const char *ptr, long len); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_filesystem_str_new(), except it assumes the passed pointer - * is a pointer to a C string. It can also be seen as a routine identical to - * rb_external_str_new_cstr(), except it generates a string of "filesystem" - * encoding instead of "default external". - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "filesystem" is fully defined over the - * given contents, then the return value is a string of - * "filesystem" encoding, whose contents are the converted ones. - * Otherwise the string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_filesystem_str_new_cstr(const char *ptr); - -/** - * Allocates a "string buffer". A string buffer here is an instance of - * ::rb_cString, whose capacity is bigger than the length of it. If you can - * say that a string grows to a specific amount of bytes, this could be - * effective than resizing a string over and over again and again. - * - * @param[in] capa Designed capacity of the generating string. - * @return An empty string, of "binary" encoding, whose capacity is `capa`. - */ -VALUE rb_str_buf_new(long capa); - -RBIMPL_ATTR_NONNULL(()) -/** - * This is a rb_str_buf_new() + rb_str_buf_cat() combo. - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of "binary" encoding, whose - * contents are verbatim copy of `ptr`. - * @pre `ptr` must not be a null pointer. - * - * @internal - * - * This must be identical to rb_str_new_cstr(), except done in inefficient way? - * @shyouhei doesn't understand why this is not a simple alias. - */ -VALUE rb_str_buf_new_cstr(const char *ptr); - -/** - * Allocates a "temporary" string. This is a hidden empty string. Handy on - * occasions. - * - * @param[in] len Designed length of the string. - * @return A hidden, empty string. - * @see rb_obj_hide() - */ -VALUE rb_str_tmp_new(long len); - -/** - * Identical to rb_str_new(), except it generates a string of "US ASCII" - * encoding. This is different from rb_external_str_new(), not only for the - * output encoding, but also it doesn't convert the contents. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of - * "US ASCII" encoding, whose contents are verbatim copy of `ptr`. - */ -VALUE rb_usascii_str_new(const char *ptr, long len); - -/** - * Identical to rb_str_new_cstr(), except it generates a string of "US ASCII" - * encoding. It can also be seen as a routine Identical to - * rb_usascii_str_new(), except it assumes the passed pointer is a pointer to a - * C string. - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @exception rb_eArgError `ptr` is a null pointer. - * @return An instance of ::rb_cString, of "US ASCII" encoding, whose - * contents are verbatim copy of `ptr`. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_usascii_str_new_cstr(const char *ptr); - -/** - * Identical to rb_str_new(), except it generates a string of "UTF-8" encoding. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of - * "UTF-8" encoding, whose contents are verbatim copy of `ptr`. - */ -VALUE rb_utf8_str_new(const char *ptr, long len); - -/** - * Identical to rb_str_new_cstr(), except it generates a string of "UTF-8" - * encoding. It can also be seen as a routine Identical to - * rb_usascii_str_new(), except it assumes the passed pointer is a pointer to a - * C string. - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @exception rb_eArgError `ptr` is a null pointer. - * @return An instance of ::rb_cString, of "UTF-8" encoding, whose contents - * are verbatim copy of `ptr`. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_utf8_str_new_cstr(const char *ptr); - -/** - * @name Special strings that are backended by C string literals. - * - * *_str_new_static functions are intended for C string literals. - * They require memory in the range [ptr, ptr+len] to always be readable. - * Note that this range covers a total of len + 1 bytes. - * - * @{ - */ - -/** - * Identical to rb_str_new(), except it takes a C string literal. - * - * @param[in] ptr A C string literal. - * @param[in] len `strlen(ptr)`. - * @exception rb_eArgError `len` out of range of `size_t`. - * @pre `ptr` must be a C string constant. - * @return An instance of ::rb_cString, of "binary" encoding, whose backend - * storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - * - * @internal - * - * Surprisingly it can take NULL, and generates an empty string. - */ -VALUE rb_str_new_static(const char *ptr, long len); - -/** - * Identical to rb_str_new_static(), except it generates a string of "US ASCII" - * encoding instead of "binary". It can also be seen as a routine identical to - * rb_usascii_str_new(), except it takes a C string literal. - * - * @param[in] ptr A C string literal. - * @param[in] len `strlen(ptr)`. - * @exception rb_eArgError `len` out of range of `size_t`. - * @pre `ptr` must be a C string constant. - * @return An instance of ::rb_cString, of "US ASCII" encoding, whose - * backend storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - */ -VALUE rb_usascii_str_new_static(const char *ptr, long len); - -/** - * Identical to rb_str_new_static(), except it generates a string of "UTF-8" - * encoding instead of "binary". It can also be seen as a routine identical to - * rb_utf8_str_new(), except it takes a C string literal. - * - * @param[in] ptr A C string literal. - * @param[in] len `strlen(ptr)`. - * @exception rb_eArgError `len` out of range of `size_t`. - * @pre `ptr` must be a C string constant. - * @return An instance of ::rb_cString, of "UTF-8" encoding, whose backend - * storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - */ -VALUE rb_utf8_str_new_static(const char *ptr, long len); - -/** @} */ - -/** - * Identical to rb_interned_str(), except it takes a Ruby's string instead of - * C's. It can also be seen as a routine identical to to rb_str_new_shared(), - * except it returns an infamous "f"string. - * - * @param[in] str An object of ::RString. - * @return An instance of ::rb_cString, either cached or allocated, which - * has the identical encoding, length, and contents with the passed - * string. - * @pre `str` must not be any arbitrary object except ::RString. - * @note Use #StringValue to enforce the precondition. - * - * @internal - * - * It actually finds or creates a fstring of the needed property, and - * destructively modifies the receiver behind-the-scene so that it becomes a - * shared string whose parent is the returning fstring. - */ -VALUE rb_str_to_interned_str(VALUE str); - -/** - * Identical to rb_str_new(), except it returns an infamous "f"string. What is - * a fstring? Well it is a special subkind of strings that is immutable, - * deduped globally, and managed by our GC. It is much like a Symbol (in fact - * Symbols are dynamic these days and are backended using fstrings). This - * concept has been silently introduced at some point in 2.x era. Since then - * it gained wider acceptance in the core. Starting from 3.x extension - * libraries can also generate ones. - * - * @param[in] ptr A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eArgError `len` is negative. - * @return A found or created instance of ::rb_cString, of `len` bytes - * length, of "binary" encoding, whose contents are identical to - * that of `ptr`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `ptr`. - */ -VALUE rb_interned_str(const char *ptr, long len); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_interned_str(), except it assumes the passed pointer is a - * pointer to a C's string. It can also be seen as a routine identical to to - * rb_str_to_interned_str(), except it takes a C's string instead of Ruby's. - * Or it can also be seen as a routine identical to rb_str_new_cstr(), except - * it returns an infamous "f"string. - * - * @param[in] ptr A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of "binary" encoding, whose - * contents are verbatim copy of `ptr`. - * @pre `ptr` must not be a null pointer. - */ -VALUE rb_interned_str_cstr(const char *ptr); - -/** - * Destroys the given string for no reason. - * - * @warning DO NOT USE IT. - * @warning Leave this task to our GC. - * @warning It was a bad idea at the first place to let you know about it. - * - * @param[out] str The string to be executed. - * @post The given string no longer exists. - * @note Maybe `String#clear` could be what you want. - * - * @internal - * - * Should have moved this to `internal/string.h`. - */ -void rb_str_free(VALUE str); - -/** - * Replaces the contents of the former with the latter. - * - * @param[out] dst Destination object. - * @param[in] src Source object. - * @pre Both objects must not be any arbitrary objects except - * ::RString. - * @post `dst`'s former components are abandoned. It now has the - * identical encoding, length, and contents to `src`. - * @see rb_str_replace() - * - * @internal - * - * @shyouhei doesn't understand why this is useful to extension libraries. - * Just use rb_str_replace(). What's wrong with that? - */ -void rb_str_shared_replace(VALUE dst, VALUE src); - -/** - * Identical to rb_str_cat_cstr(), except it takes Ruby's string instead of - * C's. It can also be seen as a routine identical to rb_str_shared_replace(), - * except it appends instead of replaces. - * - * @param[out] dst Destination object. - * @param[in] src Source object. - * @exception rb_eEncCompatError Can't mix the encodings. - * @exception rb_eArgError Result string too big. - * @return The passed `dst`. - * @pre Both objects must not be any arbitrary objects except - * ::RString. - * @post `dst` has the contents of `src` appended, with encoding - * converted into `dst`'s one, into the end of `dst`. - */ -VALUE rb_str_buf_append(VALUE dst, VALUE src); - -/** @alias{rb_str_cat} */ -VALUE rb_str_buf_cat(VALUE, const char*, long); - -/** @alias{rb_str_cat_cstr} */ -VALUE rb_str_buf_cat2(VALUE, const char*); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_str_cat_cstr(), except it additionally assumes the source - * string be a NUL terminated ASCII string. - * - * @param[out] dst Destination object. - * @param[in] src Source string. - * @exception rb_eArgError Result string too big. - * @return The passed `dst`. - * @pre `dst` must not be any arbitrary object except ::RString. - * @pre `src` must be a NUL terminated ASCII string. - * @post `dst` has the contents of `src` appended, with encoding - * converted into `dst`'s one, into the end of `dst`. - */ -VALUE rb_str_buf_cat_ascii(VALUE dst, const char *src); - -/** - * Try converting an object to its stringised representation using its `to_s` - * method, if any. If there is no such thing, it resorts to rb_any_to_s() - * output. - * - * @param[in] obj Arbitrary ruby object to stringise. - * @return An instance of ::rb_cString. - */ -VALUE rb_obj_as_string(VALUE obj); - -/** - * Try converting an object to its stringised representation using its `to_str` - * method, if any. If there is no such thing, returns ::RUBY_Qnil. - * - * @param[in] obj Arbitrary ruby object to stringise. - * @exception rb_eTypeError `obj.to_str` returned something non-String. - * @retval RUBY_Qnil No conversion from obj to String defined. - * @return otherwise Stringised representation of `obj`. - * @see rb_io_check_io - * @see rb_check_array_type - * @see rb_check_hash_type - */ -VALUE rb_check_string_type(VALUE obj); - -/** - * Asserts that the given string's encoding is (Ruby's definition of) ASCII - * compatible. - * - * @param[in] obj An instance of ::rb_cString. - * @exception rb_eEncCompatError `obj` is ASCII incompatible. - * - * @internal - * - * @shyouhei doesn't know if this is an Easter egg or an official feature, but - * this function can in fact take non-strings such as Symbols, Regexps, IOs, - * etc. However if something unsupported is passed, it causes SEGV. It seems - * the feature is kind of untested. - */ -void rb_must_asciicompat(VALUE obj); - -/** - * Duplicates a string. - * - * @param[in] str String in question to duplicate. - * @return A duplicated new instance. - * @pre `str` must be of ::RString. - */ -VALUE rb_str_dup(VALUE str); - -/** - * I guess there is no use case of this function in extension libraries, but - * this is a routine identical to rb_str_dup(), except it always creates an - * instance of ::rb_cString regardless of the given object's class. This makes - * the most sense when the passed string is formerly hidden by rb_obj_hide(). - * - * @param[in] str A string, possibly hidden. - * @return A duplicated new instance of ::rb_cString. - */ -VALUE rb_str_resurrect(VALUE str); - -/** - * Obtains a "temporary lock" of the string. This advisory locking mechanism - * prevents other cooperating threads from tampering the receiver. The same - * thing could be done via freeze mechanism, but this one can also be unlocked - * using rb_str_unlocktmp(). - * - * @param[out] str String to lock. - * @exception rb_eRuntimeError `str` already locked. - * @return The given string. - * @post The string is locked. - */ -VALUE rb_str_locktmp(VALUE str); - -/** - * Releases a lock formerly obtained by rb_str_locktmp(). - * - * @param[out] str String to unlock. - * @exception rb_eRuntimeError `str` already unlocked. - * @return The given string. - * @post The string is locked. - */ -VALUE rb_str_unlocktmp(VALUE str); - -/** @alias{rb_str_new_frozen} */ -VALUE rb_str_dup_frozen(VALUE); - -/** @alias{rb_str_new_frozen} */ -#define rb_str_dup_frozen rb_str_new_frozen - -/** - * Generates a new string, concatenating the former to the latter. It can also - * be seen as a routine identical to rb_str_append(), except it doesn't tamper - * the passed strings to create a new one instead. - * - * @param[in] lhs Source string #1. - * @param[in] rhs Source string #2. - * @exception rb_eEncCompatError Can't mix the encodings. - * @exception rb_eArgError Result string too big. - * @return A new string containing `rhs` concatenated to `lhs`. - * @pre Both objects must not be any arbitrary objects except ::RString. - * @note This operation doesn't commute. Don't get confused by the - * "plus" terminology. For historical reasons there are some - * noncommutative `+`s in Ruby. This is one of such things. There - * has been a long discussion around `+`s in programming languages. - */ -VALUE rb_str_plus(VALUE lhs, VALUE rhs); - -/** - * Repetition of a string. - * - * @param[in] str String to repeat. - * @param[in] num Count, something numeric. - * @exception rb_eArgError `num` is negative. - * @return A new string repeating `num` times of `str`. - */ -VALUE rb_str_times(VALUE str, VALUE num); - -/** - * Byte offset to character offset conversion. This makes sense when the - * receiver is in a multibyte encoding. The string's i-th character does not - * always sit at its i-th byte. This function scans the contents to find the - * character index that matches the byte index. Generally speaking this is an - * `O(n)` operation. Could be slow. - * - * @param[in] str The string to scan. - * @param[in] pos Offset, in bytes. - * @return Offset, in characters. - */ -long rb_str_sublen(VALUE str, long pos); - -/** - * This is the implementation of two-argumented `String#slice`. - * - * - Returns the substring of the given `len` found in `str` at offset `beg`: - * - * ```ruby - * 'foo'[0, 2] # => "fo" - * 'foo'[0, 0] # => "" - * ``` - * - * - Counts backward from the end of `str` if `beg` is negative: - * - * ```ruby - * 'foo'[-2, 2] # => "oo" - * ``` - * - * - Special case: returns a new empty string if `beg` is equal to the length - * of `str`: - * - * ```ruby - * 'foo'[3, 2] # => "" - * ``` - * - * - Returns a null pointer if `beg` is out of range: - * - * ```ruby - * 'foo'[4, 2] # => nil - * 'foo'[-4, 2] # => nil - * ``` - * - * - Returns the trailing substring of `str` if `len` is large: - * - * ```ruby - * 'foo'[1, 50] # => "oo" - * ``` - * - * - Returns a null pointer if `len` is negative: - * - * ```ruby - * 'foo'[0, -1] # => nil - * ``` - * - * @param[in] str The string to slice. - * @param[in] beg Requested offset of the substring. - * @param[in] len Requested length of the substring. - * @retval RUBY_Qnil Parameters out of range. - * @retval otherwise A new string whose contents is the specified - * substring of `str`. - * @pre `str` must not be any arbitrary objects except ::RString. - */ -VALUE rb_str_substr(VALUE str, long beg, long len); - -/** - * Identical to rb_str_substr(), except the numbers are interpreted as byte - * offsets instead of character offsets. - * - * @param[in] str The string to slice. - * @param[in] beg Requested offset of the substring. - * @param[in] len Requested length of the substring. - * @return A new string whose contents is the specified substring of `str`. - * @pre `str` must not be any arbitrary objects except ::RString. - * @pre `beg` and `len` must not point to OOB contents. - */ -VALUE rb_str_subseq(VALUE str, long beg, long len); - -/** - * Identical to rb_str_substr(), except it returns a C's string instead of - * Ruby's. - * - * @param[in] str The string to slice. - * @param[in] beg Requested offset of the substring. - * @param[in,out] len Requested length of the substring. - * @retval NULL Parameters out of range. - * @retval otherwise A pointer inside of `str`'s backend storage where - * the specified substring exist. - * @pre `str` must not be any arbitrary objects except ::RString. - * @post `len` is updated to have the length of the return value. - */ -char *rb_str_subpos(VALUE str, long beg, long *len); - -/** - * Declares that the string is about to be modified. This for instance let the - * string have a dedicated backend storage. - * - * @param[out] str String about to be modified. - * @exception rb_eRuntimeError `str` is `locktmp`-ed. - * @exception rb_eFrozenError `str` is frozen. - * @pre `str` must not be any arbitrary objects except ::RString. - * @post Upon successful return the passed string is eligible to be - * modified. - */ -void rb_str_modify(VALUE str); - -/** - * Identical to rb_str_modify(), except it additionally expands the capacity of - * the receiver. - * - * @param[out] str Target string to modify. - * @param[in] capa Additional capacity to add. - * @exception rb_eArgError `capa` is negative. - * @exception rb_eRuntimeError `str` is `locktmp`-ed. - * @exception rb_eFrozenError `str` is frozen. - * @pre `str` must not be any arbitrary objects except ::RString. - * @post Upon successful return the passed string is modified so that - * its capacity is increased for `capa` bytes. - */ -void rb_str_modify_expand(VALUE str, long capa); - -/** - * This is the implementation of `String#freeze`. - * - * @param[out] str Target string to freeze. - * @return The passed string. - * @post Upon successful return the passed string is frozen. - */ -VALUE rb_str_freeze(VALUE str); - -/** - * Overwrites the length of the string. Typically this is used to shrink a - * string that was formerly expanded. - * - * ```CXX - * extern int fd; - * auto str = rb_eval_string("'...'"); - * rb_str_modify_expand(str, BUFSIZ); - * if (auto len = recv(fd, RSTRING_PTR(str), BUFSIZ, 0); len >= 0) { - * rb_str_set_len(str, len); - * } - * else { - * rb_sys_fail("recv(2)"); - * } - * ``` - * - * @param[out] str String to shrink. - * @param[in] len New length of the string. - * @exception rb_eRuntimeError `str` is `locktmp`-ed. - * @exception rb_eFrozenError `str` is frozen. - * @pre `str` must not be any arbitrary objects except ::RString. - * @post Upon successful return `str`'s length is set to `len`. - */ -void rb_str_set_len(VALUE str, long len); - -/** - * Overwrites the length of the string. In contrast to rb_str_set_len(), this - * function can also expand a string. - * - * @param[out] str String to shrink. - * @param[in] len New length of the string. - * @exception rb_eArgError `len` is negative. - * @exception rb_eRuntimeError `str` is `locktmp`-ed. - * @exception rb_eFrozenError `str` is frozen. - * @return The passed `str`. - * @pre `str` must not be any arbitrary objects except ::RString. - * @post Upon successful return `str` is either expanded or shrunken to - * have its length be `len`. - */ -VALUE rb_str_resize(VALUE str, long len); - -/** - * Destructively appends the passed contents to the string. - * - * @param[out] dst Destination object. - * @param[in] src Contents to append. - * @param[in] srclen Length of `src`. - * @exception rb_eArgError `srclen` is negative. - * @return The passed `dst`. - * @pre `dst` must not be any arbitrary objects except ::RString. - * @post `dst` has the contents of `ptr` appended. - */ -VALUE rb_str_cat(VALUE dst, const char *src, long srclen); - -/** - * Identical to rb_str_cat(), except it assumes the passed pointer is a pointer - * to a C string. - * - * @param[out] dst Destination object. - * @param[in] src Contents to append. - * @exception rb_eArgError Result string too big. - * @exception rb_eArgError `src` is a null pointer. - * @return The passed `dst`. - * @pre `dst` must not be any arbitrary objects except ::RString. - * @pre `src` must not be a null pointer. - * @post `dst` has the contents of `src` appended. - */ -VALUE rb_str_cat_cstr(VALUE dst, const char *src); - -/** @alias{rb_str_cat_cstr} */ -VALUE rb_str_cat2(VALUE, const char*); - -/** - * Identical to rb_str_buf_append(), except it converts the right hand side - * before concatenating. - * - * @param[out] dst Destination object. - * @param[in] src Source object. - * @exception rb_eEncCompatError Can't mix the encodings. - * @exception rb_eArgError Result string too big. - * @return The passed `dst`. - * @pre `dst` must not be any arbitrary objects except ::RString. - * @post `dst` has the contents of `src` appended, with encoding - * converted into `dst`'s one, into the end of `dst`. - */ -VALUE rb_str_append(VALUE dst, VALUE src); - -/** - * Identical to rb_str_append(), except it also accepts an integer as a - * codepoint. This resembles `String#<<`. - * - * @param[out] dst Destination object. - * @param[in] src Source object, String or Numeric. - * @exception rb_eRangeError Source numeric is out of range. - * @exception rb_eEncCompatError Source string too long. - * @exception rb_eArgError Result string too big. - * @return The passed `dst`. - * @pre `dst` must not be any arbitrary objects except ::RString. - * @post `dst` has the contents of `src` appended, with encoding - * converted into `dst`'s one, into the end of `dst`. - */ -VALUE rb_str_concat(VALUE dst, VALUE src); - -/* random.c */ - -/** - * This is a universal hash function. - * - * @warning This function changes its value per process. - * @param[in] ptr Target message. - * @param[in] len Length of `ptr` in bytes. - * @return A pseudorandom number suitable for Hash's hash value. - * @see Aumasson, JP., Bernstein, D.J., "SipHash: A Fast Short-Input - * PRF", In proceedings of 13th International Conference on - * Cryptology in India (INDOCRYPT 2012), LNCS 7668, pp. 489-508, - * 2012. http://doi.org/10.1007/978-3-642-34931-7_28 -*/ -st_index_t rb_memhash(const void *ptr, long len); - -/** - * Starts a series of hashing. Suppose you have a struct: - * - * ```CXX - * struct foo_tag { - * unsigned char bar; - * uint32_t baz; - * }; - * ``` - * - * It is not a wise idea to call rb_memhash() over it, because there could be - * padding bits. Instead you should explicitly iterate over each fields: - * - * ```CXX - * foo_tag foo = { 0, 0, }; - * st_index_t hash = 0; - * - * hash = rb_hash_start(0); - * hash = rb_hash_uint(hash, foo.bar); - * hash = rb_hash_uint32(hash, foo.baz); - * hash = rb_hash_end(hash); - * ``` - * - * @param[in] i Initial value. - * @return A hash value. - */ -st_index_t rb_hash_start(st_index_t i); - -/** @alias{st_hash_uint32} */ -#define rb_hash_uint32(h, i) st_hash_uint32((h), (i)) - -/** @alias{st_hash_uint} */ -#define rb_hash_uint(h, i) st_hash_uint((h), (i)) - -/** @alias{st_hash_end} */ -#define rb_hash_end(h) st_hash_end(h) - -/* string.c */ - -/** - * Calculates a hash value of a string. This is one of the two functions that - * constructs struct ::st_hash_type. - * - * @param[in] str An object of ::RString. - * @return A hash value. - * @pre `str` must not be any arbitrary object except ::RString. - * - * @internal - * - * Although safe to call, there must be no particular use case of this function - * for extension libraries. Only ruby internals must know about it. - * - * This is not a simple alias of rb_memhash(), because it considers the passed - * string's encoding as well as its contents. - */ -st_index_t rb_str_hash(VALUE str); - -/** - * Compares two strings. This is one of the two functions that constructs - * struct ::st_hash_type. - * - * @param[in] str1 A string. - * @param[in] str2 Another string. - * @retval 1 They have identical contents, length, and encodings. - * @retval 0 Otherwise. - * @pre Both objects must not be any arbitrary objects except - * ::RString. - * - * @internal - * - * In contrast to rb_str_hash(), this could be handy for comparison that only - * concerns equality. rb_str_cmp() returns 1, 0, -1. - */ -int rb_str_hash_cmp(VALUE str1, VALUE str2); - -/** - * Checks if two strings are comparable each other or not. Because - * rb_str_cmp() must return "lesser than" or "greater than" information, - * comparing two strings needs a stricter restriction. Both sides must be in a - * same set of strings which have total order. This is to check that property. - * Intuitive it sounds? But they can have different encodings. A character - * and another might or might not appear in the same order in their codepoints. - * It is complicated than you think. - * - * @param[in] str1 A string. - * @param[in] str2 Another string. - * @retval 1 They agree on a total order. - * @retval 0 Otherwise. - * @pre Both objects must not be any arbitrary objects except - * ::RString. - */ -int rb_str_comparable(VALUE str1, VALUE str2); - -/** - * Compares two strings, as in `strcmp(3)`. This does not consider the current - * locale, but considers the encodings of both sides instead. - * - * @param[in] lhs A string. - * @param[in] rhs Another string. - * @retval -1 `lhs` is "bigger than" `rhs`. - * @retval 1 `rhs` is "bigger than" `lhs`. - * @retval 0 Otherwise, e.g. not comparable. - * @pre Both objects must not be any arbitrary objects except - * ::RString. - */ -int rb_str_cmp(VALUE lhs, VALUE rhs); - -/** - * Equality of two strings. - * - * If `str2` is not a String, it resorts to `str2 == str1`. Otherwise if they - * are not comparable, returns ::RUBY_Qfalse. Otherwise if they have the same - * contents and the length, returns ::RUBY_Qtrue. Otherwise, returns - * ::RUBY_Qfalse. - * - * @param[in] str1 A string. - * @param[in] str2 Another string. - * @retval RUBY_Qtrue They are equal. - * @retval RUBY_Qfalse They are either different, or not comparable. - */ -VALUE rb_str_equal(VALUE str1, VALUE str2); - -/** - * Shrinks the given string for the given number of bytes. - * - * @param[out] str String to squash. - * @param[in] len Number of bytes to reduce. - * @exception rb_eRuntimeError `str` is `locktmp`-ed. - * @exception rb_eFrozenError `str` is frozen. - * @return The passed `str`. - * @pre `str` must not be any arbitrary objects except ::RString. - * @post `str` is shrunken. - * @warning Can break a multibyte character in middle. - * - * @internal - * - * What if `len` is negative? - */ -VALUE rb_str_drop_bytes(VALUE str, long len); - -/** - * Replaces some (or all) of the contents of the given string. This is the - * implementation of three-argumented `String#[]=`. - * - * @param[out] dst Target string to update. - * @param[in] beg Offset of the affected portion. - * @param[in] len Length of the affected portion. - * @param[in] src Object to be assigned. - * @exception rb_eTypeError `src` has no implicit conversion to String. - * @exception rb_eIndexError `len` is negative, or `beg` is OOB. - * @exception rb_eRuntimeError `dst` is `locktmp`-ed. - * @exception rb_eFrozenError `dst` is frozen. - * @note Unlike rb_str_substr(), this function raises. - * @post A portion of `dst` from `beg` to `len` is the stringised - * representation of `src`. If that replacement string is not the - * same length as the portion it is replacing, `dst` will be - * resized accordingly. - */ -void rb_str_update(VALUE dst, long beg, long len, VALUE src); - -/** - * Replaces the contents of the former object with the stringised contents of - * the latter. - * - * @param[out] dst Destination object. - * @param[in] src Source object. - * @exception rb_eTypeError `src` has no implicit conversion to String. - * @exception rb_eRuntimeError `dst` is `locktmp`-ed. - * @exception rb_eFrozenError `dst` is frozen. - * @return The passed `dst`. - * @pre `dst` must not be any arbitrary object except ::RString. - * @post `dst`'s former components are abandoned. It now has the - * identical encoding, length, and contents to `src`. - */ -VALUE rb_str_replace(VALUE dst, VALUE src); - -/** - * Generates a "readable" version of the receiver. - * - * @warning The output is _insecure_. Never feed one to `eval`. - * @warning The output is not always in the same encoding as the given one. - * @warning A character might or might not be escaped, depending on the - * result encoding. - * @param[in] str String to inspect. - * @return Its inspection, either in default internal encoding if any, or - * in default external encoding otherwise. - * @see rb_str_dump() - * - * @internal - * - * This is a (silent) fix of an actual vulnerability feeding `inspect` output - * strings to `eval`: - * https://github.com/hiki/hiki/commit/8771a6e25198e264a2bf9dc1c102fea2cc8ff975 - * - * ... and its advisory: - * http://hikiwiki.org/en/advisory20040712.html - */ -VALUE rb_str_inspect(VALUE str); - -/** - * "Inverse" of rb_eval_string(). Returns a quoted version of the string. All - * non-printing characters are replaced by `\uNNNN` or `\xHH` notation and all - * special characters are escaped. The result string is guaranteed to render a - * string of the same contents when passed to `eval` and friends. - * - * @param[in] str String to dump. - * @exception rb_eRuntimeError Too many escape sequences causes integer - * overflow on the length of the string. - * @return An US-ASCII string that includes all the necessary info to - * reconstruct the original string. - */ -VALUE rb_str_dump(VALUE str); - -/** - * Divides the given string based on the given delimiter. This is the - * 1-argument 0-block version of `String#split`. - * - * @param[in] str Object in question to split. - * @param[in] delim Delimiter, in C string. - * @exception rb_eTypeError `str` has no implicit conversion to String. - * @exception rb_eArgError `delim` is a null pointer. - * @return An array of strings, which are substrings of the passed `str`. - * If `delim` is an empty C string (i.e. `""`), `str` is split into - * each characters. If `delim` is a C string whose sole content is - * a whitespace (i.e. `" "`), `str` is split on whitespaces, with - * leading and trailing whitespace and runs of contiguous - * whitespace characters ignored. Otherwise, `str` is split - * according to `delim`. - */ -VALUE rb_str_split(VALUE str, const char *delim); - -/** - * This is a ::rb_gvar_setter_t that refutes non-string assignments. - * - * @exception rb_eTypeError Passed something non-string. - */ -rb_gvar_setter_t rb_str_setter; - -/* symbol.c */ - -/** - * Identical to rb_to_symbol(), except it assumes the receiver being an - * instance of ::RString. - * - * @param[in] str The name of the id. - * @exception rb_eRuntimeError Too many symbols. - * @return A (possibly new) id whose value is the given `str`. - * @pre `str` must not be any arbitrary object except ::RString. - * @note These days Ruby internally has two kinds of symbols - * (static/dynamic). Symbols created using this function would - * become dynamic ones; i.e. would be garbage collected. It could - * be safer for you to use it than alternatives, when applicable. - */ -VALUE rb_str_intern(VALUE str); - -/* string.c */ - -/** - * This is an rb_sym2str() + rb_str_dup() combo. - * - * @param[in] sym A symbol to query. - * @return A string duplicating the symbol's backend storage. - * - * @internal - * - * This function causes SEGV when the passed value is a static symbol that - * doesn't exist. - */ -VALUE rb_sym_to_s(VALUE sym); - -/** - * Counts the number of characters (not bytes) that are stored inside of the - * given string. This of course depends on its encoding. Also this function - * generally runs in O(n), because for instance you have to scan the entire - * string to know how many characters are there in a UTF-8 string. - * - * @param[in] str Target string to query. - * @return Its number of characters. - */ -long rb_str_strlen(VALUE str); - -/** - * Identical to rb_str_strlen(), except it returns the value in ::rb_cInteger. - * - * @param[in] str Target string to query. - * @return Its number of characters. - */ -VALUE rb_str_length(VALUE); - -/** - * "Inverse" of rb_str_sublen(). This function scans the contents to find the - * byte index that matches the character index. Generally speaking this is an - * `O(n)` operation. Could be slow. - * - * @param[in] str The string to scan. - * @param[in] pos Offset, in characters. - * @return Offset, in bytes. - */ -long rb_str_offset(VALUE str, long pos); - -RBIMPL_ATTR_PURE() -/** - * Queries the capacity of the given string. - * - * @see ::RString::capa - * @param[in] str String in question. - * @return Its capacity. - */ -size_t rb_str_capacity(VALUE str); - -/** - * Shortens `str` and adds three dots, an ellipsis, if it is longer than `len` - * characters. The length of the returned string in characters is less than or - * equal to `len`. If the length of `str` is less than or equal `len`, returns - * `str` itself. The encoding of returned string is equal to that of passed - * one. The class of returned string is equal to that of passed one. - * - * @param[in] str The string to shorten. - * @param[in] len The maximum string length. - * @exception rb_eIndexError `len` is negative. - * @retval str No need to add ellipsis. - * @retval otherwise A new, shortened string. - * @note The length is counted in characters. - */ -VALUE rb_str_ellipsize(VALUE str, long len); - -/** - * "Cleanses" the string. A string has its encoding and its contents. They, - * in practice, do not always fit. There are strings in the wild that are - * "broken"; include bit patterns that are not allowed by its encoding. That - * can happen when a user copy&pasted something bad, network input got - * clobbered by a middleman, cosmic rays hit the physical memory, and many more - * occasions. This function takes such strings, and fills the "broken" portion - * with the passed replacement bit pattern. - * - * This function also takes a ruby block. That is a neat way to do things, but - * can be annoying when the caller function want to use a block for another - * purpose. - * - * @param[in] str Target string to scrub. - * @param[in] repl Replacement string. When it is a string, - * this function takes that as a replacement. - * When it is ::RUBY_Qnil, this function tries - * to yield a block (if any) and takes its - * evaluated value as a replacement. In case - * of ::RUBY_Qnil without a block, this - * function takes an encoding-specific default - * character (`U+FFFD`, for instance) as a last - * resort. - * @exception rb_eTypeError `repl` is neither string nor nil. - * @exception rb_eArgError `repl` itself is broken. - * @exception rb_eEncCompatError `repl` and `str` are incompatible. - * @retval RUBY_Qnil `str` is already clean. - * @retval otherwise A new, clean string. - */ -VALUE rb_str_scrub(VALUE str, VALUE repl); - -/** - * Searches for the "successor" of a string. This function is complicated! - * This is the only function in the entire ruby API (either C or Ruby) that - * generates a string out of thin air. First, the successor to an empty string - * is a new empty string: - * - * ```ruby - * ''.succ # => "" - * ``` - * - * Otherwise the successor is calculated by "incrementing" characters. The - * first character to be incremented is the rightmost alphanumeric: or, if no - * alphanumerics, the rightmost character: - * - * ```ruby - * 'THX1138'.succ # => "THX1139" - * '<>'.succ # => "<>" - * '***'.succ # => '**+' - * ``` - * - * The successor to a digit is another digit, "carrying" to the next-left - * character for a "rollover" from 9 to 0, and prepending another digit if - * necessary: - * - * ```ruby - * '00'.succ # => "01" - * '09'.succ # => "10" - * '99'.succ # => "100" - * '-9'.succ # => "-10" - * ``` - * - * The successor to a letter is another letter of the same case, carrying to - * the next-left character for a rollover, and prepending another same-case - * letter if necessary: - * - * ```ruby - * 'aa'.succ # => "ab" - * 'az'.succ # => "ba" - * 'zz'.succ # => "aaa" - * 'AA'.succ # => "AB" - * 'AZ'.succ # => "BA" - * 'ZZ'.succ # => "AAA" - * ``` - * - * The successor to a non-alphanumeric character is the next character in the - * underlying character set's collating sequence, carrying to the next-left - * character for a rollover, and prepending another character if necessary: - * - * ```ruby - * s = "\u03A1" - * s.succ # => "\u03A3" # There is no such thing like \u03A2. - * s = 255.chr * 3 - * s # => "\xFF\xFF\xFF" - * s.succ # => "\x01\x00\x00\x00" - * ``` - * - * Carrying can occur between and among mixtures of alphanumeric characters: - * - * ```ruby - * s = 'zz99zz99' - * s.succ # => "aaa00aa00" - * s = '99zz99zz' - * s.succ # => "100aa00aa" - * s = '1.9.9' - * s.succ # => "2.0.0" - * ``` - * - * @param[in] orig Predecessor string. - * @return Successor string. - */ -VALUE rb_str_succ(VALUE orig); - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string. - * @return `strlen`, casted to `long`. - */ -static inline long -rbimpl_strlen(const char *str) -{ - return RBIMPL_CAST((long)strlen(str)); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string literal. - * @return Corresponding Ruby string. - */ -static inline VALUE -rbimpl_str_new_cstr(const char *str) -{ - long len = rbimpl_strlen(str); - return rb_str_new_static(str, len); -} - -RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string literal. - * @return Corresponding Ruby string. - */ -static inline VALUE -rbimpl_tainted_str_new_cstr(const char *str) -{ - long len = rbimpl_strlen(str); - return rb_tainted_str_new(str, len); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string literal. - * @return Corresponding Ruby string. - */ -static inline VALUE -rbimpl_usascii_str_new_cstr(const char *str) -{ - long len = rbimpl_strlen(str); - return rb_usascii_str_new_static(str, len); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string literal. - * @return Corresponding Ruby string. - */ -static inline VALUE -rbimpl_utf8_str_new_cstr(const char *str) -{ - long len = rbimpl_strlen(str); - return rb_utf8_str_new_static(str, len); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string literal. - * @return Corresponding Ruby string. - */ -static inline VALUE -rbimpl_external_str_new_cstr(const char *str) -{ - long len = rbimpl_strlen(str); - return rb_external_str_new(str, len); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string literal. - * @return Corresponding Ruby string. - */ -static inline VALUE -rbimpl_locale_str_new_cstr(const char *str) -{ - long len = rbimpl_strlen(str); - return rb_locale_str_new(str, len); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] str A C string literal. - * @return Corresponding Ruby string. - */ -static inline VALUE -rbimpl_str_buf_new_cstr(const char *str) -{ - long len = rbimpl_strlen(str); - VALUE buf = rb_str_buf_new(len); - return rb_str_buf_cat(buf, str, len); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[out] buf A string buffer. - * @param[in] str A C string literal. - * @return `buf` itself. - */ -static inline VALUE -rbimpl_str_cat_cstr(VALUE buf, const char *str) -{ - long len = rbimpl_strlen(str); - return rb_str_cat(buf, str, len); -} - -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail. Don't bother. - * - * @param[in] exc An exception class. - * @param[in] str A C string literal. - * @return An instance of `exc`. - */ -static inline VALUE -rbimpl_exc_new_cstr(VALUE exc, const char *str) -{ - long len = rbimpl_strlen(str); - return rb_exc_new(exc, str, len); -} - -/** - * Allocates an instance of ::rb_cString. - * - * @param[in] str A memory region of `len` bytes length. - * @param[in] len Length of `ptr`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of - * "binary" encoding, whose contents are verbatim copy of `str`. - * @pre At least `len` bytes of continuous memory region shall be - * accessible via `str`. - */ -#define rb_str_new(str, len) \ - ((RBIMPL_CONSTANT_P(str) && \ - RBIMPL_CONSTANT_P(len) ? \ - rb_str_new_static : \ - rb_str_new) ((str), (len))) - -/** - * Identical to #rb_str_new, except it assumes the passed pointer is a pointer - * to a C string. - * - * @param[in] str A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of "binary" encoding, whose - * contents are verbatim copy of `str`. - * @pre `str` must not be a null pointer. - */ -#define rb_str_new_cstr(str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_str_new_cstr : \ - rb_str_new_cstr) (str)) - -/** - * Identical to #rb_str_new, except it generates a string of "US ASCII" - * encoding. This is different from rb_external_str_new(), not only for the - * output encoding, but also it doesn't convert the contents. - * - * @param[in] str A memory region of `len` bytes length. - * @param[in] len Length of `str`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of - * "US ASCII" encoding, whose contents are verbatim copy of `str`. - */ -#define rb_usascii_str_new(str, len) \ - ((RBIMPL_CONSTANT_P(str) && \ - RBIMPL_CONSTANT_P(len) ? \ - rb_usascii_str_new_static : \ - rb_usascii_str_new) ((str), (len))) - -/** - * Identical to #rb_str_new, except it generates a string of "UTF-8" encoding. - * - * @param[in] str A memory region of `len` bytes length. - * @param[in] len Length of `str`, in bytes, not including the - * terminating NUL character. - * @exception rb_eNoMemError Failed to allocate `len+1` bytes. - * @exception rb_eArgError `len` is negative. - * @return An instance of ::rb_cString, of `len` bytes length, of - * "UTF-8" encoding, whose contents are verbatim copy of `str`. - */ -#define rb_utf8_str_new(str, len) \ - ((RBIMPL_CONSTANT_P(str) && \ - RBIMPL_CONSTANT_P(len) ? \ - rb_utf8_str_new_static : \ - rb_utf8_str_new) ((str), (len))) - -/** - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - * - * @param[in] str A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of "binary" encoding, whose - * contents are verbatim copy of `str`. - * @pre `str` must not be a null pointer. - */ -#define rb_tainted_str_new_cstr(str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_tainted_str_new_cstr : \ - rb_tainted_str_new_cstr) (str)) - -/** - * Identical to #rb_str_new_cstr, except it generates a string of "US ASCII" - * encoding. It can also be seen as a routine Identical to - * #rb_usascii_str_new, except it assumes the passed pointer is a pointer to a - * C string. - * - * @param[in] str A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of "US ASCII" encoding, whose - * contents are verbatim copy of `str`. - * @pre `str` must not be a null pointer. - */ -#define rb_usascii_str_new_cstr(str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_usascii_str_new_cstr : \ - rb_usascii_str_new_cstr) (str)) - -/** - * Identical to #rb_str_new_cstr, except it generates a string of "UTF-8" - * encoding. It can also be seen as a routine Identical to #rb_utf8_str_new, - * except it assumes the passed pointer is a pointer to a C string. - * - * @param[in] str A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of "UTF-8" encoding, whose contents - * are verbatim copy of `str`. - * @pre `str` must not be a null pointer. - */ -#define rb_utf8_str_new_cstr(str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_utf8_str_new_cstr : \ - rb_utf8_str_new_cstr) (str)) - -/** - * Identical to #rb_str_new_cstr, except it generates a string of "default - * external" encoding. - * - * @param[in] str A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "default external" is fully defined over - * the given contents, then the return value is a string of - * "default external" encoding, whose contents are the converted - * ones. Otherwise the string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - * @pre `str` must not be a null pointer. - */ -#define rb_external_str_new_cstr(str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_external_str_new_cstr : \ - rb_external_str_new_cstr) (str)) - -/** - * Identical to #rb_external_str_new_cstr, except it generates a string of - * "locale" encoding instead of "default external". - * - * @param[in] str A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString. In case encoding conversion from - * "default internal" to "locale" is fully defined over the given - * contents, then the return value is a string of "locale" - * encoding, whose contents are the converted ones. Otherwise the - * string is a junk. - * @warning It doesn't raise on a conversion failure and silently ends up in - * a corrupted output. You can know the failure by querying - * `valid_encoding?` of the result object. - * @pre `str` must not be a null pointer. - */ -#define rb_locale_str_new_cstr(str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_locale_str_new_cstr : \ - rb_locale_str_new_cstr) (str)) - -/** - * Identical to #rb_str_new_cstr, except done differently. - * - * @param[in] str A C string. - * @exception rb_eNoMemError Failed to allocate memory. - * @return An instance of ::rb_cString, of "binary" encoding, whose - * contents are verbatim copy of `str`. - * @pre `str` must not be a null pointer. - */ -#define rb_str_buf_new_cstr(str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_str_buf_new_cstr : \ - rb_str_buf_new_cstr) (str)) - -/** - * Identical to rb_str_cat(), except it assumes the passed pointer is a pointer - * to a C string. - * - * @param[out] buf Destination object. - * @param[in] str Contents to append. - * @exception rb_eArgError Result string too big. - * @return The passed `buf`. - * @pre `buf` must not be any arbitrary objects except ::RString. - * @pre `str` must not be a null pointer. - * @post `buf` has the contents of `str` appended. - */ -#define rb_str_cat_cstr(buf, str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_str_cat_cstr : \ - rb_str_cat_cstr) ((buf), (str))) - -/** - * Identical to rb_exc_new(), except it assumes the passed pointer is a pointer - * to a C string. - * - * @param[out] exc A subclass of ::rb_eException. - * @param[in] str Message to raise. - * @return An instance of `exc` whose message is `str`. - * @pre `str` must not be a null pointer. - */ -#define rb_exc_new_cstr(exc, str) \ - ((RBIMPL_CONSTANT_P(str) ? \ - rbimpl_exc_new_cstr : \ - rb_exc_new_cstr) ((exc), (str))) - -#define rb_str_new2 rb_str_new_cstr /**< @old{rb_str_new_cstr} */ -#define rb_str_new3 rb_str_new_shared /**< @old{rb_str_new_shared} */ -#define rb_str_new4 rb_str_new_frozen /**< @old{rb_str_new_frozen} */ -#define rb_str_new5 rb_str_new_with_class /**< @old{rb_str_new_with_class} */ -#define rb_tainted_str_new2 rb_tainted_str_new_cstr /**< @old{rb_tainted_str_new_cstr} */ -#define rb_str_buf_new2 rb_str_buf_new_cstr /**< @old{rb_str_buf_new_cstr} */ -#define rb_usascii_str_new2 rb_usascii_str_new_cstr /**< @old{rb_usascii_str_new_cstr} */ -#define rb_str_buf_cat rb_str_cat /**< @alias{rb_str_cat} */ -#define rb_str_buf_cat2 rb_str_cat_cstr /**< @old{rb_usascii_str_new_cstr} */ -#define rb_str_cat2 rb_str_cat_cstr /**< @old{rb_str_cat_cstr} */ - -/** - * Length of a string literal. - * - * @param[in] str A C String literal. - * @return An integer constant expression that represents `str`'s length, - * in bytes, not including the terminating NUL character. - */ -#define rb_strlen_lit(str) (sizeof(str "") - 1) - -/** - * Identical to rb_str_new_static(), except it cannot take string variables. - * - * @param[in] str A C string literal. - * @pre `str` must not be a variable. - * @return An instance of ::rb_cString, of "binary" encoding, whose backend - * storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - */ -#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str)) - -/** - * Identical to rb_usascii_str_new_static(), except it cannot take string - * variables. - * - * @param[in] str A C string literal. - * @pre `str` must not be a variable. - * @return An instance of ::rb_cString, of "US ASCII" encoding, whose - * backend storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - */ -#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str)) - -/** - * Identical to rb_utf8_str_new_static(), except it cannot take string - * variables. - * - * @param[in] str A C string literal. - * @pre `str` must not be a variable. - * @return An instance of ::rb_cString, of "UTF-8" encoding, whose backend - * storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - */ -#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str)) - -/** - * Identical to rb_enc_str_new_static(), except it cannot take string - * variables. - * - * @param[in] str A C string literal. - * @param[in] enc A pointer to an encoding. - * @pre `str` must not be a variable. - * @return An instance of ::rb_cString, of the passed encoding, whose - * backend storage is the passed C string literal. - * @warning It is a very bad idea to write to a C string literal (often - * immediate SEGV shall occur). Consider return values of this - * function be read-only. - */ -#define rb_enc_str_new_lit(str, enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc)) - -#define rb_str_new_literal(str) rb_str_new_lit(str) /**< @alias{rb_str_new_lit} */ -#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str) /**< @alias{rb_usascii_str_new_lit} */ -#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str) /**< @alias{rb_utf8_str_new_lit} */ -#define rb_enc_str_new_literal(str, enc) rb_enc_str_new_lit(str, enc) /**< @alias{rb_enc_str_new_lit} */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_STRING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/struct.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/struct.h deleted file mode 100644 index 312cf44..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/struct.h +++ /dev/null @@ -1,203 +0,0 @@ -#ifndef RBIMPL_INTERN_STRUCT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_STRUCT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cStruct. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/intern/vm.h" /* rb_alloc_func_t */ -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* struct.c */ - -/** - * Creates an instance of the given struct. - * - * @param[in] klass The class of the instance to allocate. - * @param[in] ... The fields. - * @return Allocated instance of `klass`. - * @pre `klass` must be a subclass of ::rb_cStruct. - * @note Number of variadic arguments must much that of the passed klass' - * fields. - */ -VALUE rb_struct_new(VALUE klass, ...); - -/** - * Defines a struct class. - * - * @param[in] name Name of the class. - * @param[in] ... Arbitrary number of `const char*`, terminated by - * zero. Each of which are the name of fields. - * @exception rb_eNameError `name` is not a constant name. - * @exception rb_eTypeError `name` is already taken. - * @exception rb_eArgError Duplicated field name. - * @return The defined class. - * @post Global toplevel constant `name` is defined. - * @note `name` is allowed to be a null pointer. This function creates - * an anonymous struct class then. - * - * @internal - * - * Not seriously checked but it seems this function does not share its - * implementation with how `Struct.new` is implemented...? - */ -VALUE rb_struct_define(const char *name, ...); - -RBIMPL_ATTR_NONNULL((2)) -/** - * Identical to rb_struct_define(), except it defines the class under the - * specified namespace instead of global toplevel. - * - * @param[out] space Namespace that the defining class shall reside. - * @param[in] name Name of the class. - * @param[in] ... Arbitrary number of `const char*`, terminated by - * zero. Each of which are the name of fields. - * @exception rb_eNameError `name` is not a constant name. - * @exception rb_eTypeError `name` is already taken. - * @exception rb_eArgError Duplicated field name. - * @return The defined class. - * @post `name` is a constant under `space`. - * @note In contrast to rb_struct_define(), it doesn't make any sense to - * pass a null pointer to this function. - */ -VALUE rb_struct_define_under(VALUE space, const char *name, ...); - -/** - * Identical to rb_struct_new(), except it takes the field values as a Ruby - * array. - * - * @param[in] klass The class of the instance to allocate. - * @param[in] values Field values. - * @return Allocated instance of `klass`. - * @pre `klass` must be a subclass of ::rb_cStruct. - * @pre `values` must be an instance of struct ::RArray. - */ -VALUE rb_struct_alloc(VALUE klass, VALUE values); - -/** - * Mass-assigns a struct's fields. - * - * @param[out] self An instance of a struct class to squash. - * @param[in] values New values. - * @return ::RUBY_Qnil. - */ -VALUE rb_struct_initialize(VALUE self, VALUE values); - -/** - * Identical to rb_struct_aref(), except it takes ::ID instead of ::VALUE. - * - * @param[in] self An instance of a struct class. - * @param[in] key Key to query. - * @exception rb_eTypeError `self` is not a struct. - * @exception rb_eNameError No such field. - * @return The value stored at `key` in `self`. - */ -VALUE rb_struct_getmember(VALUE self, ID key); - -/** - * Queries the list of the names of the fields of the given struct class. - * - * @param[in] klass A subclass of ::rb_cStruct. - * @return The list of the names of the fields of `klass`. - */ -VALUE rb_struct_s_members(VALUE klass); - -/** - * Queries the list of the names of the fields of the class of the given struct - * object. This is almost the same as calling rb_struct_s_members() over the - * class of the receiver. - * - * @internal - * - * "Almost"? What exactly is the difference? - * - * @endinternal - * - * @param[in] self An instance of a subclass of ::rb_cStruct. - * @return The list of the names of the fields. - */ -VALUE rb_struct_members(VALUE self); - -/** - * Allocates an instance of the given class. This consequential name is of - * course because rb_struct_alloc() not only allocates but also initialises an - * instance. The API design is broken. - * - * @param[in] klass A subclass of ::rb_cStruct. - * @return An allocated instance of `klass`, not initialised. - */ -VALUE rb_struct_alloc_noinit(VALUE klass); - -/** - * Identical to rb_struct_define(), except it does not define accessor methods. - * You have to define them yourself. Forget about the allocator function - * parameter; it is for internal use only. Extension libraries are unable to - * properly allocate a ruby struct, because `RStruct` is opaque. - * - * @internal - * - * Several flags must be set up properly for ::RUBY_T_STRUCT objects, which are - * also missing for extension libraries. - * - * @endinternal - * - * @param[in] name Name of the class. - * @param[in] super Superclass of the defining class. - * @param[in] func Must be 0 for extension libraries. - * @param[in] ... Arbitrary number of `const char*`, terminated by - * zero. Each of which are the name of fields. - * @exception rb_eNameError `name` is not a constant name. - * @exception rb_eTypeError `name` is already taken. - * @exception rb_eArgError Duplicated field name. - * @return The defined class. - * @post Global toplevel constant `name` is defined. - * @note `name` is allowed to be a null pointer. This function creates - * an anonymous struct class then. - */ -VALUE rb_struct_define_without_accessor(const char *name, VALUE super, rb_alloc_func_t func, ...); - -RBIMPL_ATTR_NONNULL((2)) -/** - * Identical to rb_struct_define_without_accessor(), except it defines the - * class under the specified namespace instead of global toplevel. It can also - * be seen as a routine identical to rb_struct_define_under(), except it does - * not define accessor methods. - * - * @param[out] outer Namespace that the defining class shall reside. - * @param[in] class_name Name of the class. - * @param[in] super Superclass of the defining class. - * @param[in] alloc Must be 0 for extension libraries. - * @param[in] ... Arbitrary number of `const char*`, terminated by - * zero. Each of which are the name of fields. - * @exception rb_eNameError `class_name` is not a constant name. - * @exception rb_eTypeError `class_name` is already taken. - * @exception rb_eArgError Duplicated field name. - * @return The defined class. - * @post `class_name` is a constant under `outer`. - * @note In contrast to rb_struct_define_without_accessor(), it doesn't - * make any sense to pass a null name. - */ -VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_STRUCT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/thread.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/thread.h deleted file mode 100644 index 716375a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/thread.h +++ /dev/null @@ -1,492 +0,0 @@ -#ifndef RBIMPL_INTERN_THREAD_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_THREAD_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cThread. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/config.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -struct timeval; - -/* thread.c */ - -/** - * Tries to switch to another thread. This function blocks until the current - * thread re-acquires the GVL. - * - * @exception rb_eInterrupt Operation interrupted. - */ -void rb_thread_schedule(void); - -/** - * Blocks the current thread until the given file descriptor is ready to be - * read. - * - * @param[in] fd A file descriptor. - * @exception rb_eIOError Closed stream. - * @exception rb_eSystemCallError Situations like EBADF. - */ -int rb_thread_wait_fd(int fd); - -/** - * Identical to rb_thread_wait_fd(), except it blocks the current thread until - * the given file descriptor is ready to be written. - * - * @param[in] fd A file descriptor. - * @exception rb_eIOError Closed stream. - * @exception rb_eSystemCallError Situations like EBADF. - */ -int rb_thread_fd_writable(int fd); - -/** - * Notifies a closing of a file descriptor to other threads. Multiple threads - * can wait for the given file descriptor at once. If such file descriptor is - * closed, threads need to start propagating their exceptions. This is the API - * to kick that process. - * - * @param[in] fd A file descriptor. - * @note This function blocks until all the threads waiting for such fd - * have woken up. - */ -void rb_thread_fd_close(int fd); - -/** - * Checks if the thread this function is running is the only thread that is - * currently alive. - * - * @retval 1 Yes it is. - * @retval 0 No it isn't. - * - * @internal - * - * Above description is in fact inaccurate. There are Ractors these days. - */ -int rb_thread_alone(void); - -/** - * Blocks for the given period of time. - * - * @warning This function can be interrupted by signals. - * @param[in] sec Duration in seconds. - * @exception rb_eInterrupt Interrupted. - */ -void rb_thread_sleep(int sec); - -/** - * Blocks indefinitely. - * - * @exception rb_eInterrupt Interrupted. - */ -void rb_thread_sleep_forever(void); - -/** - * Identical to rb_thread_sleep_forever(), except the thread calling this - * function is considered "dead" when our deadlock checker is triggered. - * - * @exception rb_eInterrupt Interrupted. - */ -void rb_thread_sleep_deadly(void); - -/** - * Stops the current thread. This is not the end of the thread's lifecycle. A - * stopped thread can later be woken up. - * - * @exception rb_eThreadError Stopping this thread would deadlock. - * @retval ::RUBY_Qnil Always. - * - * @internal - * - * The return value makes no sense at all. - */ -VALUE rb_thread_stop(void); - -/** - * Marks a given thread as eligible for scheduling. - * - * @note It may still remain blocked on I/O. - * @note This does not invoke the scheduler itself. - * - * @param[out] thread Thread in question to wake up. - * @exception rb_eThreadError Stop flogging a dead horse. - * @return The passed thread. - * @post The passed thread is made runnable. - */ -VALUE rb_thread_wakeup(VALUE thread); - -/** - * Identical to rb_thread_wakeup(), except it doesn't raise on an already - * killed thread. - * - * @param[out] thread A thread to wake up. - * @retval RUBY_Qnil `thread` is already killed. - * @retval otherwise `thread` is alive. - * @post The passed thread is made runnable, unless killed. - */ -VALUE rb_thread_wakeup_alive(VALUE thread); - -/** - * This is a rb_thread_wakeup() + rb_thread_schedule() combo. - * - * @note There is no guarantee that this function yields to the passed - * thread. It may still remain blocked on I/O. - * @param[out] thread Thread in question to wake up. - * @exception rb_eThreadError Stop flogging a dead horse. - * @return The passed thread. - */ -VALUE rb_thread_run(VALUE thread); - -/** - * Terminates the given thread. Unlike a stopped thread, a killed thread could - * never be revived. This function does return, when passed e.g. an already - * killed thread. But if the passed thread is the only one, or a special - * thread called "main", then it also terminates the entire process. - * - * @param[out] thread The thread to terminate. - * @exception rb_eFatal The passed thread is the running thread. - * @exception rb_eSystemExit The passed thread is the last thread. - * @return The passed thread. - * @post Either the passed thread, or the process entirely, is killed. - * - * @internal - * - * It seems killing the main thread also kills the entire process even if there - * are multiple running ractors. No idea why. - */ -VALUE rb_thread_kill(VALUE thread); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Creates a Ruby thread that is backended by a C function. - * - * @param[in] f The function to run on a thread. - * @param[in,out] g Passed through to `f`. - * @exception rb_eThreadError Could not create a ruby thread. - * @exception rb_eSystemCallError Situations like `EPERM`. - * @return Allocated instance of ::rb_cThread. - * @note This doesn't wait for anything. - */ -VALUE rb_thread_create(VALUE (*f)(void *g), void *g); - -/** - * Identical to rb_thread_sleep(), except it takes struct `timeval` instead. - * - * @warning This function can be interrupted by signals. - * @param[in] time Duration. - * @exception rb_eInterrupt Interrupted. - */ -void rb_thread_wait_for(struct timeval time); - -/** - * Obtains the "current" thread. - * - * @return The current thread of the current ractor of the current execution - * context. - * @pre This function must be called from a thread controlled by ruby. - */ -VALUE rb_thread_current(void); - -/** - * Obtains the "main" thread. There are threads called main. Historically the - * (only) main thread was the one which runs when the process boots. Now that - * we have Ractor, there are more than one main threads. - * - * @return The main thread of the current ractor of the current execution - * context. - * @pre This function must be called from a thread controlled by ruby. - */ -VALUE rb_thread_main(void); - -/** - * This badly named function reads from a Fiber local storage. When this - * function was born there was no such thing like a Fiber. The world was - * innocent. But now... This is a Fiber local storage. Sorry. - * - * @param[in] thread Thread that the target Fiber is running. - * @param[in] key The name of the Fiber local storage to read. - * @retval RUBY_Qnil No such storage. - * @retval otherwise The value stored at `key`. - * @note There in fact are "true" thread local storage, but Ruby doesn't - * provide any interface of them to you, C programmers. - */ -VALUE rb_thread_local_aref(VALUE thread, ID key); - -/** - * This badly named function writes to a Fiber local storage. When this - * function was born there was no such thing like a Fiber. The world was - * innocent. But now... This is a Fiber local storage. Sorry. - * - * @param[in] thread Thread that the target Fiber is running. - * @param[in] key The name of the Fiber local storage to write. - * @param[in] val The new value of the storage. - * @exception rb_eFrozenError `thread` is frozen. - * @return The passed `val` as-is. - * @post Fiber local storage `key` has value of `val`. - * @note There in fact are "true" thread local storage, but Ruby doesn't - * provide any interface of them to you, C programmers. - */ -VALUE rb_thread_local_aset(VALUE thread, ID key, VALUE val); - -/** - * A `pthread_atfork(3posix)`-like API. Ruby expects its child processes to - * call this function at the very beginning of their processes. If you plan to - * fork a process don't forget to call it. - */ -void rb_thread_atfork(void); - -/** - * :FIXME: situation of this function is unclear. It seems nobody uses it. - * Maybe a good idea to KonMari. - */ -void rb_thread_atfork_before_exec(void); - -/** - * "Recursion" API entry point. This basically calls the given function with - * the given arguments, but additionally with recursion flag. The flag is set - * to 1 if the execution have already experienced the passed `g` parameter - * before. - * - * @param[in] f The function that possibly recurs. - * @param[in,out] g Passed as-is to `f`. - * @param[in,out] h Passed as-is to `f`. - * @return The return value of f. - */ -VALUE rb_exec_recursive(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h); - -/** - * Identical to rb_exec_recursive(), except it checks for the recursion on the - * ordered pair of `{ g, p }` instead of just `g`. - * - * @param[in] f The function that possibly recurs. - * @param[in,out] g Passed as-is to `f`. - * @param[in] p Paired object for recursion detection. - * @param[in,out] h Passed as-is to `f`. - */ -VALUE rb_exec_recursive_paired(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h); - -/** - * Identical to rb_exec_recursive(), except it calls `f` for outermost - * recursion only. Inner recursions yield calls to rb_throw_obj(). - * - * @param[in] f The function that possibly recurs. - * @param[in,out] g Passed as-is to `f`. - * @param[in,out] h Passed as-is to `f`. - * @return The return value of f. - * - * @internal - * - * It seems nobody uses the "it calls rb_throw_obj()" part of this function. - * @shyouhei doesn't understand the needs. - */ -VALUE rb_exec_recursive_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h); - -/** - * Identical to rb_exec_recursive_outer(), except it checks for the recursion - * on the ordered pair of `{ g, p }` instead of just `g`. It can also be seen - * as a routine identical to rb_exec_recursive_paired(), except it calls `f` - * for outermost recursion only. Inner recursions yield calls to - * rb_throw_obj(). - * - * @param[in] f The function that possibly recurs. - * @param[in,out] g Passed as-is to `f`. - * @param[in] p Paired object for recursion detection. - * @param[in,out] h Passed as-is to `f`. - * - * @internal - * - * It seems nobody uses the "it calls rb_throw_obj()" part of this function. - * @shyouhei doesn't understand the needs. - */ -VALUE rb_exec_recursive_paired_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h); - -/** - * This is the type of UBFs. An UBF is a function that unblocks a blocking - * region. For instance when a thread is blocking due to `pselect(3posix)`, it - * is highly expected that `pthread_kill(3posix)` can interrupt the system call - * and the thread could revive. Or when a thread is blocking due to - * `waitpid(3posix)`, it is highly expected that killing the waited process - * should suffice. An UBF is a function that does such things. Designing your - * own UBF needs deep understanding of why your blocking region blocks, how - * threads work in ruby, and a matter of luck. It often is the case you simply - * cannot cancel something that had already begun. - * - * @see rb_thread_call_without_gvl() - */ -typedef void rb_unblock_function_t(void *); - -/** - * @private - * - * This is an implementation detail. Must be a mistake to be here. - * - * @internal - * - * Why is this function type different from what rb_thread_call_without_gvl() - * takes? - */ -typedef VALUE rb_blocking_function_t(void *); - -/** - * Checks for interrupts. In ruby, signals are masked by default. You can - * call this function at will to check if there are pending signals. In case - * there are, they would be handled in this function. - * - * If your extension library has a function that takes a long time, consider - * calling it periodically. - * - * @note It might switch to another thread. - */ -void rb_thread_check_ints(void); - -/** - * Checks if the thread's execution was recently interrupted. If called from - * that thread, this function can be used to detect spurious wake-ups. - * - * @param[in] thval Thread in question. - * @retval 0 The thread was not interrupted. - * @retval otherwise The thread was interrupted recently. - * - * @internal - * - * Above description is not a lie. But actually the return value is an opaque - * trap vector. If you know which bit means which, you can know what happened. - */ -int rb_thread_interrupted(VALUE thval); - -/** - * A special UBF for blocking IO operations. You need deep understanding of - * what this actually do before using. Basically you should not use it from - * extension libraries. It is too easy to mess up. - */ -#define RUBY_UBF_IO RBIMPL_CAST((rb_unblock_function_t *)-1) - -/** - * A special UBF for blocking process operations. You need deep understanding - * of what this actually do before using. Basically you should not use it from - * extension libraries. It is too easy to mess up. - */ -#define RUBY_UBF_PROCESS RBIMPL_CAST((rb_unblock_function_t *)-1) - -/* thread_sync.c */ - -/** - * Creates a mutex. - * - * @return An allocated instance of rb_cMutex. - */ -VALUE rb_mutex_new(void); - -/** - * Queries if there are any threads that holds the lock. - * - * @param[in] mutex The mutex in question. - * @retval RUBY_Qtrue The mutex is locked by someone. - * @retval RUBY_Qfalse The mutex is not locked by anyone. - */ -VALUE rb_mutex_locked_p(VALUE mutex); - -/** - * Attempts to lock the mutex, without waiting for other threads to unlock it. - * Failure in locking the mutex can be detected by the return value. - * - * @param[out] mutex The mutex to lock. - * @retval RUBY_Qtrue Successfully locked by the current thread. - * @retval RUBY_Qfalse Otherwise. - * @note This function also returns ::RUBY_Qfalse when the mutex is - * already owned by the calling thread itself. - */ -VALUE rb_mutex_trylock(VALUE mutex); - -/** - * Attempts to lock the mutex. It waits until the mutex gets available. - * - * @param[out] mutex The mutex to lock. - * @exception rb_eThreadError Recursive deadlock situation. - * @return The passed mutex. - * @post The mutex is owned by the current thread. - */ -VALUE rb_mutex_lock(VALUE mutex); - -/** - * Releases the mutex. - * - * @param[out] mutex The mutex to unlock. - * @exception rb_eThreadError The mutex is not owned by the current thread. - * @return The passed mutex. - * @post Upon successful return the passed mutex is no longer owned by - * the current thread. - */ -VALUE rb_mutex_unlock(VALUE mutex); - -/** - * Releases the lock held in the mutex and waits for the period of time; - * reacquires the lock on wakeup. - * - * @pre The lock has to be owned by the current thread beforehand. - * @param[out] self The target mutex. - * @param[in] timeout Duration, in seconds, in ::rb_cNumeric. - * @exception rb_eArgError `timeout` is negative. - * @exception rb_eRangeError `timeout` is out of range of `time_t`. - * @exception rb_eThreadError The mutex is not owned by the current thread. - * @return Number of seconds it actually slept. - * @warning It is a failure not to check the return value. This function - * can return spuriously for various reasons. Maybe other threads - * can rb_thread_wakeup(). Maybe an end user can press the - * Control and C key from the interactive console. On the other - * hand it can also take longer than the specified. The mutex - * could be locked by someone else. It waits then. - * @post Upon successful return the passed mutex is owned by the current - * thread. - * - * @internal - * - * This function is called from `ConditionVariable#wait`. So it is not a - * deprecated feature. However @shyouhei have never seen any similar mutex - * primitive available in any other languages than Ruby. - * - * EDIT: In 2021, @shyouhei asked @ko1 in person about this API. He answered - * that it is his invention. The motivation behind its design is to eliminate - * needs of condition variables as primitives. Unlike other languages, Ruby's - * `ConditionVariable` class was written in pure-Ruby initially. We don't have - * to implement machine-native condition variables in assembly each time we - * port Ruby to a new architecture. This function made it possible. "I felt I - * was a genius when this idea came to me", said @ko1. - * - * `rb_cConditionVariable` is now written in C for speed, though. - */ -VALUE rb_mutex_sleep(VALUE self, VALUE timeout); - -/** - * Obtains the lock, runs the passed function, and releases the lock when it - * completes. - * - * @param[out] mutex The mutex to lock. - * @param[in] func What to do during the mutex is locked. - * @param[in,out] arg Passed as-is to `func`. - */ -VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_THREAD_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/time.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/time.h deleted file mode 100644 index df48286..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/time.h +++ /dev/null @@ -1,161 +0,0 @@ -#ifndef RBIMPL_INTERN_TIME_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_TIME_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to ::rb_cTime. - */ -#include "ruby/internal/config.h" - -#ifdef HAVE_TIME_H -# include /* for time_t */ -#endif - -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -struct timespec; -struct timeval; - -/* time.c */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Fills the current time into the given struct. - * - * @param[out] ts Return buffer. - * @exception rb_eSystemCallError Access denied for hardware clock. - * @post Current time is stored in `*ts`. - */ -void rb_timespec_now(struct timespec *ts); - -/** - * Creates an instance of ::rb_cTime with the given time and the local - * timezone. - * - * @param[in] sec Seconds since the UNIX epoch. - * @param[in] usec Subsecond part, in microseconds resolution. - * @exception rb_eRangeError Cannot express the time. - * @return An allocated instance of ::rb_cTime. - */ -VALUE rb_time_new(time_t sec, long usec); - -/** - * Identical to rb_time_new(), except it accepts the time in nanoseconds - * resolution. - * - * @param[in] sec Seconds since the UNIX epoch. - * @param[in] nsec Subsecond part, in nanoseconds resolution. - * @exception rb_eRangeError Cannot express the time. - * @return An allocated instance of ::rb_cTime. - */ -VALUE rb_time_nano_new(time_t sec, long nsec); - -RBIMPL_ATTR_NONNULL(()) -/** - * Creates an instance of ::rb_cTime, with given time and offset. - * - * @param[in] ts Time specifier. - * @param[in] offset Offset specifier, can take following values: - * - `INT_MAX`: `ts` is in local time. - * - `INT_MAX - 1`: `ts` is in UTC. - * - `-86400` to `86400`: fixed timezone. - * @exception rb_eArgError Malformed `offset`. - * @return An allocated instance of ::rb_cTime. - */ -VALUE rb_time_timespec_new(const struct timespec *ts, int offset); - -/** - * Identical to rb_time_timespec_new(), except it takes Ruby values instead of - * C structs. - * - * @param[in] timev Something numeric. Currently Integers, Rationals, - * and Floats are accepted. - * @param[in] off Offset specifier. As of 2.7 this argument is - * heavily extended to take following kinds of - * objects: - * - ::RUBY_Qundef ... means UTC. - * - ::rb_cString ... "+12:34" etc. - * - A mysterious "zone" object. This is largely - * undocumented. However the initial intent was - * that we want to accept - * `ActiveSupport::TimeZone` here. Other gems - * could also be possible... But how to make an - * acceptable class is beyond this document. - * @exception rb_eArgError Malformed `off`. - * @return An allocated instance of ::rb_cTime. - */ -VALUE rb_time_num_new(VALUE timev, VALUE off); - -/** - * Creates a "time interval". This basically converts an instance of - * ::rb_cNumeric into a struct `timeval`, but for instance negative time - * interval must not exist. - * - * @param[in] num An instance of ::rb_cNumeric. - * @exception rb_eArgError `num` is negative. - * @exception rb_eRangeError `num` is out of range of `timeval::tv_sec`. - * @return A struct that represents the identical time to `num`. - */ -struct timeval rb_time_interval(VALUE num); - -/** - * Converts an instance of rb_cTime to a struct timeval that represents the - * identical point of time. It can also take something numeric; would consider - * it as a UNIX time then. - * - * @param[in] time Instance of either ::rb_cTime or ::rb_cNumeric. - * @exception rb_eRangeError `time` is out of range of `timeval::tv_sec`. - * @return A struct that represents the identical time to `num`. - */ -struct timeval rb_time_timeval(VALUE time); - -/** - * Identical to rb_time_timeval(), except for return type. - * - * @param[in] time Instance of either ::rb_cTime or ::rb_cNumeric. - * @exception rb_eRangeError `time` is out of range of `timeval::tv_sec`. - * @return A struct that represents the identical time to `num`. - */ -struct timespec rb_time_timespec(VALUE time); - -/** - * Identical to rb_time_interval(), except for return type. - * - * @param[in] num An instance of ::rb_cNumeric. - * @exception rb_eArgError `num` is negative. - * @exception rb_eRangeError `num` is out of range of `timespec::tv_sec`. - * @return A struct that represents the identical time to `num`. - */ -struct timespec rb_time_timespec_interval(VALUE num); - -/** - * Queries the offset, in seconds between the time zone of the time and the - * UTC. - * - * @param[in] time An instance of ::rb_cTime. - * @return Numeric offset. - */ -VALUE rb_time_utc_offset(VALUE time); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_TIME_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/variable.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/variable.h deleted file mode 100644 index 479c395..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/variable.h +++ /dev/null @@ -1,628 +0,0 @@ -#ifndef RBIMPL_INTERN_VARIABLE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_VARIABLE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to names inside of a Ruby program. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/st.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* variable.c */ - -/** - * Queries the name of a module. - * - * @param[in] mod An instance of ::rb_cModule. - * @retval RUBY_Qnil `mod` is anonymous. - * @retval otherwise `mod` is onymous. - */ -VALUE rb_mod_name(VALUE mod); - -/** - * Identical to rb_mod_name(), except it returns `#` style - * inspection for anonymous modules. - * - * @param[in] mod An instance of ::rb_cModule. - * @return An instance of ::rb_cString representing `mod`'s path. - */ -VALUE rb_class_path(VALUE mod); - -/** - * @alias{rb_mod_name} - * - * @internal - * - * Am I missing something? Why we have the same thing in different names? - */ -VALUE rb_class_path_cached(VALUE mod); - -RBIMPL_ATTR_NONNULL(()) -/** - * Names a class. - * - * @param[out] klass Target module to name. - * @param[out] space Namespace that `klass` shall reside. - * @param[in] name Name of `klass`. - * @post `klass` has `space::klass` name. - */ -void rb_set_class_path(VALUE klass, VALUE space, const char *name); - -/** - * Identical to rb_set_class_path(), except it accepts the name as Ruby's - * string instead of C's. - * - * @param[out] klass Target module to name. - * @param[out] space Namespace that `klass` shall reside. - * @param[in] name Name of `klass`. - * @post `klass` has `space::klass` name. - */ -void rb_set_class_path_string(VALUE klass, VALUE space, VALUE name); - -/** - * Identical to rb_path2class(), except it accepts the path as Ruby's string - * instead of C's. - * - * @param[in] path Path to query. - * @exception rb_eArgError No such constant. - * @exception rb_eTypeError The path resolved to a non-module. - * @return Resolved class. - */ -VALUE rb_path_to_class(VALUE path); - -RBIMPL_ATTR_NONNULL(()) -/** - * Resolves a `Q::W::E::R`-style path string to the actual class it points. - * - * @param[in] path Path to query. - * @exception rb_eArgError No such constant. - * @exception rb_eTypeError The path resolved to a non-module. - * @return Resolved class. - */ -VALUE rb_path2class(const char *path); - -/** - * Queries the name of the given object's class. - * - * @param[in] obj Arbitrary object. - * @return An instance of ::rb_cString representing `obj`'s class' path. - */ -VALUE rb_class_name(VALUE obj); - -/** - * Kicks the autoload procedure as if it was "touched". - * - * @param[out] space Namespace where autoload is defined. - * @param[in] name Name of the autoloaded constant. - * @retval RUBY_Qfalse No such autoload. - * @retval RUBY_Qtrue Autoload successfully initiated. - * @note As an autoloaded library is expected to define `space::name`, - * it is a nature of this function to have process-global side - * effects. - * @note Multiple threads can simultaneously call this API. It blocks - * then. That must not last indefinitely but can take longer than - * you expect. - * - * @internal - * - * @shyouhei has no idea why extension libraries should use this API. - */ -VALUE rb_autoload_load(VALUE space, ID name); - -/** - * Queries if an autoload is defined at a point. - * - * @param[in] space Namespace where autoload is defined. - * @param[in] name Name of the autoloaded constant. - * @retval RUBY_Qnil No such autoload. - * @retval otherwise The feature (path) registered at `space::name`. - */ -VALUE rb_autoload_p(VALUE space, ID name); - -/** - * Traces a global variable. - * - * @param[in] argc Either 1 or 2. - * @param[in] argv Variable name, optionally a Proc. - * @retval RUBY_Qnil No previous tracers. - * @retval otherwise Previous tracers. - * - * @internal - * - * @shyouhei has no idea why extension libraries should use this API. - */ -VALUE rb_f_trace_var(int argc, const VALUE *argv); - -/** - * Deletes the passed tracer from the passed global variable, or if omitted, - * deletes everything. - * - * @param[in] argc Either 1 or 2. - * @param[in] argv Variable name, optionally a Proc. - * @retval RUBY_Qnil No previous tracers. - * @retval otherwise Deleted tracers. - * - * @internal - * - * @shyouhei has no idea why extension libraries should use this API. - */ -VALUE rb_f_untrace_var(int argc, const VALUE *argv); - -/** - * Queries the list of global variables. - * - * @return The list of the name of the global variables. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -VALUE rb_f_global_variables(void); - -/** - * Aliases a global variable. Did you know that you can alias a global - * variable? It is like aliasing methods: - * - * ```ruby - * alias $dst $src - * ``` - * - * This C function does the same thing. - * - * @param[in] dst Destination name. - * @param[in] src Source name. - * @post A global variable named `dst` is defined to be an alias of a - * global variable named `src`. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -void rb_alias_variable(ID dst, ID src); - -/** - * Frees the list of instance variables. 3rd parties need not know, but there - * are several ways to store an object's instance variables, depending on its - * internal structure. This function makes sense when the passed objects is - * using so-called "generic" backend storage. People need not be aware of this - * working behind-the-scenes. - * - * @param[out] obj The object in question. - * - * @internal - * - * This just destroys the given object. @shyouhei has no idea why extension - * libraries should use this API. - */ -void rb_free_generic_ivar(VALUE obj); - -/** - * Identical to rb_iv_get(), except it accepts the name as an ::ID instead of a - * C string. - * - * @param[in] obj Target object. - * @param[in] name Target instance variable to query. - * @retval RUBY_nil No such instance variable. - * @retval otherwise The value assigned to the instance variable. - */ -VALUE rb_ivar_get(VALUE obj, ID name); - -/** - * Identical to rb_iv_set(), except it accepts the name as an ::ID instead of a - * C string. - * - * @param[out] obj Target object. - * @param[in] name Target instance variable. - * @param[in] val Value to assign. - * @exception rb_eFrozenError Can't modify `obj`. - * @exception rb_eArgError `obj` has too many instance variables. - * @return Passed value. - * @post An instance variable named `name` is defined if absent on - * `obj`, whose value is set to `val`. - */ -VALUE rb_ivar_set(VALUE obj, ID name, VALUE val); - -/** - * Queries if the instance variable is defined at the object. This roughly - * resembles `defined?(@name)` in `obj`'s context. - * - * @param[in] obj Target object. - * @param[in] name Target instance variable to query. - * @retval RUBY_Qtrue There is an instance variable. - * @retval RUBY_Qfalse No such instance variable. - */ -VALUE rb_ivar_defined(VALUE obj, ID name); - -/** - * Iterates over an object's instance variables. - * - * @param[in] obj Target object. - * @param[in] func Callback function. - * @param[in] arg Passed as-is to the last argument of `func`. - */ -void rb_ivar_foreach(VALUE obj, int (*func)(ID name, VALUE val, st_data_t arg), st_data_t arg); - -/** - * Number of instance variables defined on an object. - * - * @param[in] obj Target object. - * @return Number of instance variables defined on `obj`. - */ -st_index_t rb_ivar_count(VALUE obj); - -/** - * Identical to rb_ivar_get() - * - * @param[in] obj Target object. - * @param[in] name Target instance variable to query. - * @retval RUBY_nil No such instance variable. - * @retval otherwise The value assigned to the instance variable. - * - * @internal - * - * Am I missing something? Why we have the same thing in different names? - */ -VALUE rb_attr_get(VALUE obj, ID name); - -/** - * Resembles `Object#instance_variables`. - * - * @param[in] obj Target object to query. - * @return An array of instance variable names for the receiver. - * @note Simply defining an accessor does not create the corresponding - * instance variable. - */ -VALUE rb_obj_instance_variables(VALUE obj); - -/** - * Resembles `Object#remove_instance_variable`. - * - * @param[out] obj Target object. - * @param[in] name Variable name to remove, either in Symbol or String. - * @return What was removed. - * @pre Instance variable named `name` is deleted from `obj`. - */ -VALUE rb_obj_remove_instance_variable(VALUE obj, VALUE name); - -/** - * This API is mysterious. It has been there since the initial revision. No - * single bits of documents has ever been written. The function name doesn't - * describe anything. What should be passed to the argument, or what should be - * the return value, are not obvious. Yet it has evolved over time. The - * source code is written in counter-intuitive way (as of 3.0). - * - * Simply put, don't try to understand this API. - */ -void *rb_mod_const_at(VALUE, void*); - -/** - * This is a variant of rb_mod_const_at(). As a result, it is also mysterious. - * It _seems_ it iterates over the ancestry tree of the module. But what that - * means is beyond a human brain. - */ -void *rb_mod_const_of(VALUE, void*); - -/** - * This is another mysterious API that comes with no documents at all. It - * seems it expects some specific data structure for the passed pointer. But - * the details has never been made explicit. It seems nobody should use this - * API. - */ -VALUE rb_const_list(void*); - -/** - * Resembles `Module#constants`. List up the constants defined at the - * receiver. This includes the names of constants in any included modules, - * unless `argv[0]` is ::RUBY_Qfalse. - * - * The implementation makes no guarantees about the order in which the - * constants are yielded. - * - * @param[in] argc Either 0 or 1. - * @param[in] argv Pointer to ::RUBY_Qfalse, if `argc == 1`. - * @param[in] recv Target namespace. - * @return An array of symbols, which are constant names under `recv`. - */ -VALUE rb_mod_constants(int argc, const VALUE *argv, VALUE recv); - -/** - * Resembles `Module#remove_const`. - * - * @param[out] space Target namespace. - * @param[in] name Variable name to remove, either in Symbol or String. - * @return What was removed. - * @pre Constant named `space::name` is deleted. - * @note In case what was removed was in fact a module or a class, this - * operation does not affect its name. Which means when people - * for instance look at it using `p` etc., it still introduces - * itself using the deleted name. Can confuse people. - */ -VALUE rb_mod_remove_const(VALUE space, VALUE name); - -/** - * Queries if the constant is defined at the namespace. - * - * @param[in] space Target namespace. - * @param[in] name Target name to query. - * @retval RUBY_Qtrue There is a constant. - * @retval RUBY_Qfalse No such constant. - * - * @internal - * - * The return values are not typo! This function returns ruby values casted to - * `int`. Completely brain-damaged design. - */ -int rb_const_defined(VALUE space, ID name); - -/** - * Identical to rb_const_defined(), except it doesn't look for parent classes. - * For instance `Array` is a toplevel constant, which is visible from - * everywhere. But this function does not take such things into account. It - * concerns only what is directly defined inside of the given namespace. - * - * @param[in] space Target namespace. - * @param[in] name Target name to query. - * @retval RUBY_Qtrue There is a constant. - * @retval RUBY_Qfalse No such constant. - * - * @internal - * - * The return values are not typo! This function returns ruby values casted to - * `int`. Completely brain-damaged design. - */ -int rb_const_defined_at(VALUE space, ID name); - -/** - * Identical to rb_const_defined(), except it returns false for private - * constants. - * - * @param[in] space Target namespace. - * @param[in] name Target name to query. - * @retval RUBY_Qtrue There is a constant. - * @retval RUBY_Qfalse No such constant. - * - * @internal - * - * What does "from" mean? The name sounds quite cryptic. - * - * The return values are not typo! This function returns ruby values casted to - * `int`. Completely brain-damaged design. - */ -int rb_const_defined_from(VALUE space, ID name); - -/** - * Identical to rb_const_defined(), except it returns the actual defined value. - * - * @param[in] space Target namespace. - * @param[in] name Target name to query. - * @exception rb_eNameError No such constant. - * @return The defined constant. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -VALUE rb_const_get(VALUE space, ID name); - -/** - * Identical to rb_const_defined_at(), except it returns the actual defined - * value. It can also be seen as a routine identical to rb_const_get(), except - * it doesn't look for parent classes. - * - * @param[in] space Target namespace. - * @param[in] name Target name to query. - * @exception rb_eNameError No such constant. - * @return The defined constant. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -VALUE rb_const_get_at(VALUE space, ID name); - -/** - * Identical to rb_const_defined_at(), except it returns the actual defined - * value. It can also be seen as a routine identical to rb_const_get(), except - * it doesn't return a private constant. - * - * @param[in] space Target namespace. - * @param[in] name Target name to query. - * @exception rb_eNameError No such constant. - * @return The defined constant. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -VALUE rb_const_get_from(VALUE space, ID name); - -/** - * Names a constant. - * - * @param[out] space Target namespace. - * @param[in] name Target name to query. - * @param[in] val Value to define. - * @exception rb_eTypeError `space` is not a module. - * @post `name` is a constant under `space`, whose value is `val`. - * @note You can reassign. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -void rb_const_set(VALUE space, ID name, VALUE val); - -/** - * Identical to rb_mod_remove_const(), except it takes the name as ::ID instead - * of ::VALUE. - * - * @param[out] space Target namespace. - * @param[in] name Variable name to remove, either in Symbol or String. - * @return What was removed. - * @pre Constant named `space::name` is deleted. - * @note In case what was removed was in fact a module or a class, this - * operation does not affect its name. Which means when people - * for instance look at it using `p` etc., it still introduces - * itself using the deleted name. Can confuse people. - */ -VALUE rb_const_remove(VALUE space, ID name); - -#if 0 /* EXPERIMENTAL: remove if no problem */ -RBIMPL_ATTR_NORETURN() -/** - * This is the default implementation of `Module#const_missing`. - * - * @param[in] space Target namespace. - * @param[in] name Target name that is nonexistent. - * @exception rb_eNameError Always. - */ -VALUE rb_mod_const_missing(VALUE space, VALUE name); -#endif - -/** - * Queries if the given class has the given class variable. - * - * @param[in] klass Target class. - * @param[in] name Name to query. - * @return RUBY_Qtrue Yes there is. - * @return RUBY_Qfalse No there isn't. - * @pre `klass` must be an instance of rb_cModule. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -VALUE rb_cvar_defined(VALUE klass, ID name); - -/** - * Assigns a value to a class variable. - * - * @param[out] klass Target class. - * @param[in] name Variable name. - * @param[in] val Value to be assigned. - * @post `klass` has a class variable named `name` whose value is `val`. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -void rb_cvar_set(VALUE klass, ID name, VALUE val); - -/** - * Obtains a value from a class variable. - * - * @param[in] klass Target class. - * @param[in] name Variable name. - * @exception rb_eNameError Uninitialised class variable. - * @exception rb_eRuntimeError `[Bug#14541]` situation. - * @return Class variable named `name` under `klass`. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -VALUE rb_cvar_get(VALUE klass, ID name); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_cvar_get(), except it takes additional "front" pointer. - * This extra parameter is a buffer, which will have the class where the - * queried class variable actually resides. - * - * @param[in] klass Target class. - * @param[in] name Variable name. - * @param[out] front Return buffer. - * @exception rb_eNameError Uninitialised class variable. - * @exception rb_eRuntimeError `[Bug#14541]` situation. - * @return Class variable named `name` under `klass`. - * @post `front` has the class object, which is an ancestor of `klass`, - * where the queried class variable actually resides. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -VALUE rb_cvar_find(VALUE klass, ID name, VALUE *front); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_cvar_set(), except it accepts C's string instead of ::ID. - * - * @param[out] klass Target class. - * @param[in] name Variable name. - * @param[in] val Value to be assigned. - * @post `klass` has a class variable named `name` whose value is `val`. - */ -void rb_cv_set(VALUE klass, const char *name, VALUE val); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_cvar_get(), except it accepts C's string instead of ::ID. - * - * @param[in] klass Target class. - * @param[in] name Variable name. - * @exception rb_eNameError Uninitialised class variable. - * @exception rb_eRuntimeError `[Bug#14541]` situation. - * @return Class variable named `name` under `klass`. - */ -VALUE rb_cv_get(VALUE klass, const char *name); - -RBIMPL_ATTR_NONNULL(()) -/** - * @alias{rb_cv_set} - * - * @internal - * - * Am I missing something? Why we have the same thing in different names? - */ -void rb_define_class_variable(VALUE, const char*, VALUE); - -/** - * Resembles `Module#class_variables`. List up the variables defined at the - * receiver. This includes the names of constants in any included modules, - * unless `argv[0]` is ::RUBY_Qfalse. - * - * The implementation makes no guarantees about the order in which the - * constants are yielded. - * - * @param[in] argc Either 0 or 1. - * @param[in] argv Pointer to ::RUBY_Qfalse, if `argc == 1`. - * @param[in] recv Target class. - * @return An array of symbols, which are class variable names under - * `recv`. - */ -VALUE rb_mod_class_variables(int argc, const VALUE *argv, VALUE recv); - -/** - * Resembles `Module#remove_class_variable`. - * - * @param[out] mod Target class. - * @param[in] name Variable name to remove, either in Symbol or String. - * @return What was removed. - * @pre Instance variable named `name` is deleted from `obj`. - */ -VALUE rb_mod_remove_cvar(VALUE mod, VALUE name); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_VARIABLE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/vm.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/vm.h deleted file mode 100644 index 562d30a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/intern/vm.h +++ /dev/null @@ -1,435 +0,0 @@ -#ifndef RBIMPL_INTERN_VM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERN_VM_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Public APIs related to rb_cRubyVM. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* vm.c */ - -/** - * Resembles `__LINE__`. - * - * @retval 0 Current execution context not in a ruby method. - * @retval otherwise The current line number of the current thread of the - * current ractor of the current execution context. - */ -int rb_sourceline(void); - -/** - * Resembles `__FILE__`. - * - * @retval 0 Current execution context not in a ruby method. - * @retval otherwise The current source path of the current thread of the - * current ractor of the current execution context. - * @note This may or may not be an absolute path. - */ -const char *rb_sourcefile(void); - -/** - * Resembles `__method__`. - * - * @param[out] idp Return buffer for method id. - * @param[out] klassp Return buffer for class. - * @retval 0 Current execution context not in a method. - * @retval 1 Successful return. - * @post Upon successful return `*idp` and `*klassp` are updated to have - * the current method name and its defined class respectively. - * @note Both parameters can be `NULL`. - */ -int rb_frame_method_id_and_class(ID *idp, VALUE *klassp); - -/* vm_eval.c */ - -/** - * Identical to rb_funcallv(), except it returns ::RUBY_Qundef instead of - * raising ::rb_eNoMethodError. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @retval RUBY_Qundef `recv` doesn't respond to `mid`. - * @retval otherwise What the method evaluates to. - */ -VALUE rb_check_funcall(VALUE recv, ID mid, int argc, const VALUE *argv); - -/** - * Identical to rb_check_funcall(), except you can specify how to handle the - * last element of the given array. It can also be seen as a routine identical - * to rb_funcallv_kw(), except it returns ::RUBY_Qundef instead of raising - * ::rb_eNoMethodError. - * - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] argc Number of arguments. - * @param[in] argv Arbitrary number of method arguments. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `argv`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `argv`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @retval RUBY_Qundef `recv` doesn't respond to `mid`. - * @retval otherwise What the method evaluates to. - */ -VALUE rb_check_funcall_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); - -/** - * This API is practically a variant of rb_proc_call_kw() now. Historically - * when there still was a concept called `$SAFE`, this was an API for that. - * But we no longer have that. This function basically ended its role. It - * just remains here because of no harm. - * - * @param[in] cmd A string, or something callable. - * @param[in] arg Argument passed to the call. - * @param[in] kw_splat Handling of keyword parameters: - * - RB_NO_KEYWORDS `arg`'s last is not a keyword argument. - * - RB_PASS_KEYWORDS `arg`'s last is a keyword argument. - * - RB_PASS_CALLED_KEYWORDS it depends if there is a passed block. - * @return What the command evaluates to. - */ -VALUE rb_eval_cmd_kw(VALUE cmd, VALUE arg, int kw_splat); - -/** - * Identical to rb_funcallv(), except it takes Ruby's array instead of C's. - * @param[in,out] recv Receiver of the method. - * @param[in] mid Name of the method to call. - * @param[in] args An instance of ::RArray. - * @exception rb_eNoMethodError No such method. - * @exception rb_eException Any exceptions happen inside. - * @return What the method evaluates to. - * @pre `args` must be an ::RArray. Call `to_ary` beforehand when - * necessary. - */ -VALUE rb_apply(VALUE recv, ID mid, VALUE args); - -/** - * Evaluates a string containing Ruby source code, or the given block, within - * the context of the receiver. In order to set the context, the variable - * `self` is set to `recv` while the code is executing, giving the code access - * to `recv`'s instance variables and private methods. - * - * When given a block, `recv` is also passed in as the block's only argument. - * - * When given a string, the optional second and third parameters supply a - * filename and starting line number that are used when reporting compilation - * errors. - * - * @param[in] argc Number of objects in `argv` - * @param[in] argv C array of 0 up to 3 elements. - * @param[in] recv The object in question. - * @return What was evaluated. - */ -VALUE rb_obj_instance_eval(int argc, const VALUE *argv, VALUE recv); - -/** - * Executes the given block within the context of the receiver. In order to - * set the context, the variable `self` is set to `recv` while the code is - * executing, giving the code access to `recv`'s instance variables. Arguments - * are passed as block parameters. - * - * @param[in] argc Number of objects in `argv` - * @param[in] argv Arbitrary parameters to be passed to the block. - * @param[in] recv The object in question. - * @return What was evaluated. - * @note Don't confuse this with rb_obj_instance_eval(). The key - * difference is whether you can pass arbitrary parameters to the - * block, like this: - * - * ```ruby - * class Foo - * def initialize - * @foo = 5 - * end - * end - * Foo.new.instance_exec(7) {|i| @foo + i } # => 12 - * ``` - */ -VALUE rb_obj_instance_exec(int argc, const VALUE *argv, VALUE recv); - -/** - * Identical to rb_obj_instance_eval(), except it evaluates within the context - * of module. - * - * @param[in] argc Number of objects in `argv` - * @param[in] argv C array of 0 up to 3 elements. - * @param[in] mod The module in question. - * @pre `mod` must be a Module. - * @return What was evaluated. - */ -VALUE rb_mod_module_eval(int argc, const VALUE *argv, VALUE mod); - -/** - * Identical to rb_obj_instance_exec(), except it evaluates within the context - * of module. - * - * @param[in] argc Number of objects in `argv` - * @param[in] argv Arbitrary parameters to be passed to the block. - * @param[in] mod The module in question. - * @pre `mod` must be a Module. - * @return What was evaluated. - */ -VALUE rb_mod_module_exec(int argc, const VALUE *argv, VALUE mod); - -/* vm_method.c */ - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_RB_DEFINE_ALLOC_FUNC 1 - -/** - * This is the type of functions that ruby calls when trying to allocate an - * object. It is sometimes necessary to allocate extra memory regions for an - * object. When you define a class that uses ::RTypedData, it is typically the - * case. On such situations define a function of this type and pass it to - * rb_define_alloc_func(). - * - * @param[in] klass The class that this function is registered. - * @return A newly allocated instance of `klass`. - */ -typedef VALUE (*rb_alloc_func_t)(VALUE klass); - -/** - * Sets the allocator function of a class. - * - * @param[out] klass The class to modify. - * @param[in] func An allocator function for the class. - * @pre `klass` must be an instance of Class. - */ -void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func); - -/** - * Deletes the allocator function of a class. It is sometimes desirable to - * restrict creation of an instance of a class. For example it rarely makes - * sense for a DB adaptor class to allow programmers creating DB row objects - * without querying the DB itself. You can kill sporadic creation of such - * objects then, by nullifying the allocator function using this API. Your - * object shall be allocated using #RB_NEWOBJ_OF() directly. - * - * @param[out] klass The class to modify. - * @pre `klass` must be an instance of Class. - */ -void rb_undef_alloc_func(VALUE klass); - -/** - * Queries the allocator function of a class. - * - * @param[in] klass The class in question. - * @pre `klass` must be an instance of Class. - * @retval 0 No allocator function is registered. - * @retval otherwise The allocator function. - * - * @internal - * - * Who cares? @shyouhei fins no practical usage of the return value. Maybe we - * need KonMari. - */ -rb_alloc_func_t rb_get_alloc_func(VALUE klass); - -/** - * Clears the constant cache. Extension libraries should not bother such - * things. Just forget about this API (or even, the presence of constant - * cache). - * - * @internal - * - * Completely no idea why this function is defined in vm_method.c. - */ -void rb_clear_constant_cache(void); - -/** - * Resembles `alias`. - * - * @param[out] klass Where to define an alias. - * @param[in] dst New name. - * @param[in] src Existing name. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eFrozenError `klass` is frozen. - * @exception rb_eNameError No such method named `src`. - * @post `klass` has a method named `dst`, which is the identical to its - * method named `src`. - */ -void rb_alias(VALUE klass, ID dst, ID src); - -/** - * This function resembles now-deprecated `Module#attr`. - * - * @param[out] klass Where to define an attribute. - * @param[in] name Name of an instance variable. - * @param[in] need_reader Whether attr_reader is needed. - * @param[in] need_writer Whether attr_writer is needed. - * @param[in] honour_visibility Whether to use the current visibility. - * @exception rb_eTypeError `klass` is not a class. - * @exception rb_eFrozenError `klass` is frozen. - * @post If `need_reader` is set `klass` has a method named `name`. - * @post If `need_writer` is set `klass` has a method named `name=`. - * - * @internal - * - * The three `int` arguments should have been bool, but there was no such thing - * like a bool when K&R was used in this project. - */ -void rb_attr(VALUE klass, ID name, int need_reader, int need_writer, int honour_visibility); - -RBIMPL_ATTR_NONNULL(()) -/** - * Removes a method. Don't confuse this to rb_undef_method(), which doesn't - * remove a method. This one resembles `Module#remove_method`. - * - * @param[out] klass The class to remove a method. - * @param[in] name Name of a method to be removed. - * @exception rb_eTypeError `klass` is a non-module. - * @exception rb_eFrozenError `klass` is frozen. - * @exception rb_eNameError No such method. - * @see rb_undef_method - */ -void rb_remove_method(VALUE klass, const char *name); - -/** - * Identical to rb_remove_method(), except it accepts the method name as ::ID. - * - * @param[out] klass The class to remove a method. - * @param[in] mid Name of a method to be removed. - * @exception rb_eTypeError `klass` is a non-module. - * @exception rb_eFrozenError `klass` is frozen. - * @exception rb_eNameError No such method. - * @see rb_undef - */ -void rb_remove_method_id(VALUE klass, ID mid); - -/** - * Queries if the klass has this method. This function has only one line of - * document in the implementation that states "// deprecated". Don't know what - * that means though. - * - * @param[in] klass The class in question. - * @param[in] id The method name to query. - * @param[in] ex Undocumented magic value. - * @retval false Method not found. - * @retval true There is a method. - * @pre `klass` must be a module. - * - * @internal - * - * @shyouhei has no motivation to describe what should be passed to `ex`. It - * seems this function should just be trashed. - */ -int rb_method_boundp(VALUE klass, ID id, int ex); - -/** - * Well... Let us hesitate from describing what a "basic definition" is. This - * nuanced concept should have been kept private. Just please. Don't touch - * it. This function is a badly distributed random number generator. Right? - * - * @param[in] klass The class in question. - * @param[in] mid The method name in question. - * @retval 1 It is. - * @retval 0 It isn't. - */ -int rb_method_basic_definition_p(VALUE klass, ID mid); - -/** - * Identical to rb_respond_to(), except it additionally takes the visibility - * parameter. This does not make difference unless the object has - * `respond_to?` undefined, but has `respond_to_missing?` defined. That case - * the passed argument becomes the second argument of `respond_to_missing?`. - * - * @param[in] obj The object in question. - * @param[in] mid The method name in question. - * @param[in] private_p This is the second argument of `obj`'s - * `respond_to_missing?`. - * @retval 1 Yes it does. - * @retval 0 No it doesn't. - */ -int rb_obj_respond_to(VALUE obj, ID mid, int private_p); - -/** - * Queries if the object responds to the method. This involves calling the - * object's `respond_to?` method. - * - * @param[in] obj The object in question. - * @param[in] mid The method name in question. - * @retval 1 Yes it does. - * @retval 0 No it doesn't. - */ -int rb_respond_to(VALUE obj, ID mid); - -RBIMPL_ATTR_NORETURN() -/** - * Raises ::rb_eNotImpError. This function is used as an argument to - * rb_define_method() etc. - * - * ```CXX - * rb_define_method(rb_cFoo, "foo", rb_f_notimplement, -1); - * ``` - * - * @param argc Unused parameter. - * @param argv Unused parameter. - * @param obj Unused parameter. - * @param marker Unused parameter. - * @exception rb_eNotImpError Always. - * @return Never returns. - * - * @internal - * - * See also the Q&A section of include/ruby/internal/anyargs.h. - */ -VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker); -#if !defined(RUBY_EXPORT) && defined(_WIN32) -RUBY_EXTERN VALUE (*const rb_f_notimplement_)(int, const VALUE *, VALUE, VALUE marker); -#define rb_f_notimplement (*rb_f_notimplement_) -#endif - -/* vm_backtrace.c */ - -/** - * Prints the backtrace out to the standard error. This just confuses people - * for no reason. Evil souls must only use it. - * - * @internal - * - * Actually it is very useful when called from an interactive GDB session. - */ -void rb_backtrace(void); - -/** - * Creates the good old fashioned array-of-strings style backtrace info. - * - * @return An array which contains strings, which are the textual - * representations of the backtrace locations of the current thread of - * the current ractor of the current execution context. - * @note Ruby scripts can access more sophisticated - * `Thread::Backtrace::Location`. But it seems there is no way for C - * extensions to use that API. - */ -VALUE rb_make_backtrace(void); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERN_VM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/interpreter.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/interpreter.h deleted file mode 100644 index 662d39c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/interpreter.h +++ /dev/null @@ -1,304 +0,0 @@ -#ifndef RBIMPL_INTERPRETER_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_INTERPRETER_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Interpreter embedding APIs. - */ -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * @defgroup embed CRuby Embedding APIs - * - * CRuby interpreter APIs. These are APIs to embed MRI interpreter into your - * program. - * These functions are not a part of Ruby extension library API. - * Extension libraries of Ruby should not depend on these functions. - * - * @{ - */ - -/** - * @defgroup ruby1 ruby(1) implementation - * - * A part of the implementation of ruby(1) command. - * Other programs that embed Ruby interpreter do not always need to use these - * functions. - * - * @{ - */ - -RBIMPL_ATTR_NONNULL(()) -/** - * Initializes the process for libruby. - * - * This function assumes this process is `ruby(1)` and it has just started. - * Usually programs that embed CRuby interpreter may not call this function, - * and may do their own initialization. - * - * @param[in] argc Pointer to process main's `argc`. - * @param[in] argv Pointer to process main's `argv`. - * @warning `argc` and `argv` cannot be `NULL`. - * - * @internal - * - * AFAIK Ruby does write to argv, especially `argv[0][0]`, via setproctitle(3). - * It is intentional that the argument is not const-qualified. - */ -void ruby_sysinit(int *argc, char ***argv); - -/** - * Calls ruby_setup() and check error. - * - * Prints errors and calls exit(3) if an error occurred. - */ -void ruby_init(void); - -/** - * Processes command line arguments and compiles the Ruby source to execute. - * - * This function does: - * - Processes the given command line flags and arguments for `ruby(1)` - * - Compiles the source code from the given argument, `-e` or `stdin`, and - * - Returns the compiled source as an opaque pointer to an internal data - * structure - * - * @param[in] argc Process main's `argc`. - * @param[in] argv Process main's `argv`. - * @return An opaque pointer to the compiled source or an internal special - * value. Pass it to ruby_executable_node() to detect which. - * @see ruby_executable_node - */ -void* ruby_options(int argc, char** argv); - -/** - * Checks the return value of ruby_options(). - * - * ruby_options() sometimes returns a special value to indicate this process - * should immediately exit. This function checks if the case. Also stores the - * exit status that the caller have to pass to exit(3) into `*status`. - * - * @param[in] n A return value of ruby_options(). - * @param[out] status Pointer to the exit status of this process. - * @retval 0 The given value is such a special value. - * @retval otherwise The given opaque pointer is actually a compiled - * source. - */ -int ruby_executable_node(void *n, int *status); - -/** - * Runs the given compiled source and exits this process. - * - * @param[in] n Opaque "node" pointer. - * @retval EXIT_SUCCESS Successfully run the source. - * @retval EXIT_FAILURE An error occurred. - */ -int ruby_run_node(void *n); - -/* version.c */ -/** Prints the version information of the CRuby interpreter to stdout. */ -void ruby_show_version(void); - -#ifndef ruby_show_copyright -/** Prints the copyright notice of the CRuby interpreter to stdout. */ -void ruby_show_copyright(void); -#endif - -/** - * A convenience macro to call ruby_init_stack(). - * Must be placed just after variable declarations. - */ -#define RUBY_INIT_STACK \ - VALUE variable_in_this_stack_frame; \ - ruby_init_stack(&variable_in_this_stack_frame); -/** @} */ - -/** - * Set stack bottom of Ruby implementation. - * - * You must call this function before any heap allocation by Ruby - * implementation. Or GC will break living objects. - * - * @param[in] addr A pointer somewhere on the stack, near its bottom. - */ -void ruby_init_stack(volatile VALUE *addr); - -/** - * Initializes the VM and builtin libraries. - * - * @retval 0 Initialization succeeded. - * @retval otherwise An error occurred. - * - * @internal - * - * Though not a part of our public API, the return value is in fact an enum - * ruby_tag_type. You can see the potential "otherwise" values by looking at - * vm_core.h. - */ -int ruby_setup(void); - -/** - * Destructs the VM. - * - * Runs the VM finalization processes as well as ruby_finalize(), and frees - * resources used by the VM. - * - * @param[in] ex Default value to the return value. - * @retval EXIT_FAILURE An error occurred. - * @retval ex Successful cleanup. - * @note This function does not raise any exception. - */ -int ruby_cleanup(int ex); - -/** - * Runs the VM finalization processes. - * - * `END{}` and procs registered by `Kernel.#at_exit` are executed here. See the - * Ruby language spec for more details. - * - * @note This function is allowed to raise an exception if an error occurred. - */ -void ruby_finalize(void); - -RBIMPL_ATTR_NORETURN() -/** Calls ruby_cleanup() and exits the process. */ -void ruby_stop(int); - -/** - * Checks for stack overflow. - * - * @retval true NG machine stack is about to overflow. - * @retval false OK there still is a room in the stack. - * - * @internal - * - * Does anybody use it? So far @shyouhei have never seen any actual use-case. - */ -int ruby_stack_check(void); - -/** - * Queries what Ruby thinks is the machine stack. Ruby manages a region of - * memory. It calls that area the "machine stack". By calling this function, - * in spite of its name, you can obtain both one end of the stack and its - * length at once. Which means you can know the entire region. - * - * @param[out] topnotch On return the pointer points to the upmost address of - * the macihne stack that Ruby knows. - * @return Length of the machine stack that Ruby knows. - * - * @internal - * - * Does anybody use it? @shyouhei is quite skeptical if this is useful outside - * of the VM. Maybe it was a wrong idea to expose this API to 3rd parties. - */ -size_t ruby_stack_length(VALUE **topnotch); - -/** - * Identical to ruby_run_node(), except it returns an opaque execution status. - * You can pass it to rb_cleanup(). - * - * @param[in] n Opaque "node" pointer. - * @retval 0 Successful end-of-execution. - * @retval otherwise An error occurred. - * - * @internal - * - * Though not a part of our public API, the return value is in fact an enum - * ruby_tag_type. You can see the potential "otherwise" values by looking at - * vm_core.h. - */ -int ruby_exec_node(void *n); - -/** - * Sets the current script name to this value. - * - * This is similar to `$0 = name` in Ruby level but also affects - * `Method#location` and others. - * - * @param[in] name File name to set. - */ -void ruby_script(const char* name); - -/** - * Identical to ruby_script(), except it takes the name as a Ruby String - * instance. - * - * @param[in] name File name to set. - */ -void ruby_set_script_name(VALUE name); - -/** Defines built-in variables */ -void ruby_prog_init(void); - -/** - * Sets argv that ruby understands. Your program might have its own command - * line parameters etc. Handle them as you wish, and pass remaining parts of - * argv here. - * - * @param[in] argc Number of elements of `argv`. - * @param[in] argv Command line arguments. - */ -void ruby_set_argv(int argc, char **argv); - -/** - * Identical to ruby_options(), except it raises ruby-level exceptions on - * failure. - * - * @param[in] argc Process main's `argc`. - * @param[in] argv Process main's `argv`. - * @return An opaque "node" pointer. - */ -void *ruby_process_options(int argc, char **argv); - -/** - * Sets up `$LOAD_PATH`. - * - * @internal - * - * @shyouhei guesses this has to be called at very later stage, at least after - * the birth of object system. But is not exactly sure when. - */ -void ruby_init_loadpath(void); - -/** - * Appends the given path to the end of the load path. - * - * @pre ruby_init_loadpath() must be done beforehand. - * @param[in] path The path you want to push to the load path. - */ -void ruby_incpush(const char *path); - -/** - * Clear signal handlers. - * - * Ruby installs its own signal handler (apart from those which user scripts - * set). This is to clear that. Must be called when the ruby part terminates, - * before switching to your program's own logic. - */ -void ruby_sig_finalize(void); - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_INTERPRETER_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/iterator.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/iterator.h deleted file mode 100644 index 5f70646..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/iterator.h +++ /dev/null @@ -1,513 +0,0 @@ -#ifndef RBIMPL_ITERATOR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_ITERATOR_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Block related APIs. - */ -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RB_BLOCK_CALL_FUNC_STRICT 1 - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1 - -/** - * Shim for block function parameters. Historically ::rb_block_call_func_t had - * only two parameters. Over time it evolved to have much more than that. By - * using this macro you can absorb such API differences. - * - * ```CXX - * // This works since 2.1.0 - * VALUE my_own_iterator(RB_BLOCK_CALL_FUNC_ARGLIST(y, c)); - * ``` - */ -#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg) \ - VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg - -/** - * This is the type of a function that the interpreter expect for C-backended - * blocks. Blocks are often written in Ruby. But C extensions might want to - * have their own blocks. In order to do so authors have to create a separate - * C function of this type, and pass its pointer to rb_block_call(). - * - * ```CXX - * VALUE - * my_own_iterator(RB_BLOCK_CALL_FUNC_ARGLIST(y, c)) - * { - * const auto plus = rb_intern("+"); - * return rb_funcall(c, plus, 1, y); - * } - * - * VALUE - * my_own_method(VALUE self) - * { - * const auto each = rb_intern("each"); - * return rb_block_call(self, each, 0, 0, my_own_iterator, self); - * } - * ``` - */ -typedef VALUE rb_block_call_func(RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg)); - -/** - * Shorthand type that represents an iterator-written-in-C function pointer. - */ -typedef rb_block_call_func *rb_block_call_func_t; - -/** - * This is a shorthand of calling `obj.each`. - * - * @param[in] obj The receiver. - * @return What `obj.each` returns. - * - * @internal - * - * Does anyone still need it? This API was to use with rb_iterate(), which is - * marked deprecated (see below). Old idiom to call an iterator was: - * - * ```CXX - * VALUE recv; - * VALUE iter_func(ANYARGS); - * VALUE iter_data; - * rb_iterate(rb_each, recv, iter_func, iter_data); - * ``` - */ -VALUE rb_each(VALUE obj); - -/** - * Yields the block. In Ruby there is a concept called a block. You can pass - * one to a method. In a method, when called with a block, you can yield it - * using this function. - * - * ```CXX - * VALUE - * iterate(VALUE self) - * { - * extern int get_n(VALUE); - * extern VALUE get_v(VALUE, VALUE); - * const auto n = get_n(self); - * - * for (int i=0; i - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Memory management stuff. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#ifdef HAVE_STRING_H -# include -#endif - -#ifdef HAVE_STDINT_H -# include -#endif - -#ifdef HAVE_ALLOCA_H -# include -#endif - -#if defined(_MSC_VER) && defined(_WIN64) -# include -# pragma intrinsic(_umul128) -#endif - -#include "ruby/internal/attr/alloc_size.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/attr/restrict.h" -#include "ruby/internal/attr/returns_nonnull.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/has/builtin.h" -#include "ruby/internal/stdalign.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/xmalloc.h" -#include "ruby/backward/2/limits.h" -#include "ruby/backward/2/long_long.h" -#include "ruby/backward/2/assume.h" -#include "ruby/defines.h" - -/** @cond INTENAL_MACRO */ - -/* Make alloca work the best possible way. */ -#if defined(alloca) -# /* Take that. */ -#elif RBIMPL_HAS_BUILTIN(__builtin_alloca) -# define alloca __builtin_alloca -#elif defined(_AIX) -# pragma alloca -#elif defined(__cplusplus) -extern "C" void *alloca(size_t); -#else -extern void *alloca(); -#endif - -/** @endcond */ - -#if defined(__DOXYGEN__) -/** - * @private - * - * Type that is as twice wider as size_t. This is an implementation detail of - * rb_mul_size_overflow(). People should not use it. This is not a good name - * either. - */ -typedef uint128_t DSIZE_T; -#elif defined(HAVE_INT128_T) && SIZEOF_SIZE_T <= 8 -# define DSIZE_T uint128_t -#elif SIZEOF_SIZE_T * 2 <= SIZEOF_LONG_LONG -# define DSIZE_T unsigned LONG_LONG -#endif - -/** - * @private - * - * Maximum possible number of bytes that #RB_ALLOCV can allocate using - * `alloca`. Anything beyond this is allocated using rb_alloc_tmp_buffer(). - * This selection is transparent to users. People don't have to bother. - */ -#ifdef C_ALLOCA -# define RUBY_ALLOCV_LIMIT 0 -#else -# define RUBY_ALLOCV_LIMIT 1024 -#endif - -/** - * Prevents premature destruction of local objects. Ruby's garbage collector - * is conservative; it scans the C level machine stack as well. Possible in- - * use Ruby objects must remain visible on stack, to be properly marked as - * such. However contemporary C compilers do not interface well with this. - * Consider the following example: - * - * ```CXX - * auto s = rb_str_new_cstr(" world"); - * auto sptr = RSTRING_PTR(s); - * auto t = rb_str_new_cstr("hello,"); // Possible GC invocation - * auto u = rb_str_cat_cstr(t, sptr); - * - * RB_GC_GUARD(s); // ensure `s` (and thus `sptr`) do not get GC-ed - * ``` - * - * Here, without the #RB_GC_GUARD, the last use of `s` is _before_ the last use - * of `sptr`. Compilers could thus think `s` and `t` are allowed to overlap. - * That would eliminate `s` from the stack, while `sptr` is still in use. If - * our GC ran at that very moment, `s` gets swept out, which also destroys - * `sptr`. Boom! You got a SEGV. - * - * In order to prevent this scenario #RB_GC_GUARD must be placed _after_ the - * last use of `sptr`. Placing #RB_GC_GUARD before dereferencing `sptr` would - * be of no use. - * - * #RB_GC_GUARD would not be necessary at all in the above example if non- - * inlined function calls are made on the `s` variable after `sptr` is - * dereferenced. Thus, in the above example, calling any un-inlined function - * on `s` such as `rb_str_modify(s);` will ensure `s` stays on the stack or - * register to prevent a GC invocation from prematurely freeing it. - * - * Using the #RB_GC_GUARD macro is preferable to using the `volatile` keyword - * in C. #RB_GC_GUARD has the following advantages: - * - * - the intent of the macro use is clear. - * - * - #RB_GC_GUARD only affects its call site. OTOH `volatile` generates some - * extra code every time the variable is used, hurting optimisation. - * - * - `volatile` implementations may be buggy/inconsistent in some compilers - * and architectures. #RB_GC_GUARD is customisable for broken - * systems/compilers without negatively affecting other systems. - * - * - C++ since C++20 deprecates `volatile`. If you write your extension - * library in that language there is no escape but to use this macro. - * - * @param v A variable of ::VALUE type. - * @post `v` is still alive. - */ -#ifdef __GNUC__ -#define RB_GC_GUARD(v) \ - (*__extension__ ({ \ - volatile VALUE *rb_gc_guarded_ptr = &(v); \ - __asm__("" : : "m"(rb_gc_guarded_ptr)); \ - rb_gc_guarded_ptr; \ - })) -#elif defined _MSC_VER -#define RB_GC_GUARD(v) (*rb_gc_guarded_ptr(&(v))) -#else -#define HAVE_RB_GC_GUARDED_PTR_VAL 1 -#define RB_GC_GUARD(v) (*rb_gc_guarded_ptr_val(&(v),(v))) -#endif - -/* Casts needed because void* is NOT compatible with others in C++. */ - -/** - * Convenient macro that allocates an array of n elements. - * - * @param type Type of array elements. - * @param n Length of the array. - * @exception rb_eNoMemError No space left for allocation. - * @exception rb_eArgError Integer overflow trying to calculate the length - * of continuous memory region of `n` elements of - * `type`. - * @return Storage instance that is capable of storing at least `n` - * elements of type `type`. - * @note It doesn't return NULL, even when `n` is zero. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -#define RB_ALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xmalloc2((n), sizeof(type))) - -/** - * Shorthand of #RB_ALLOC_N with `n=1`. - * - * @param type Type of allocation. - * @exception rb_eNoMemError No space left for allocation. - * @return Storage instance that can hold an `type` object. - * @note It doesn't return NULL. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -#define RB_ALLOC(type) RBIMPL_CAST((type *)ruby_xmalloc(sizeof(type))) - -/** - * Identical to #RB_ALLOC_N() but also nullifies the allocated region before - * returning. - * - * @param type Type of array elements. - * @param n Length of the array. - * @exception rb_eNoMemError No space left for allocation. - * @exception rb_eArgError Integer overflow trying to calculate the length - * of continuous memory region of `n` elements of - * `type`. - * @return Storage instance that is capable of storing at least `n` - * elements of type `type`. - * @post Returned array is filled with zeros. - * @note It doesn't return NULL, even when `n` is zero. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -#define RB_ZALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xcalloc((n), sizeof(type))) - -/** - * Shorthand of #RB_ZALLOC_N with `n=1`. - * - * @param type Type of allocation. - * @exception rb_eNoMemError No space left for allocation. - * @return Storage instance that can hold an `type` object. - * @post Returned object is filled with zeros. - * @note It doesn't return NULL. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -#define RB_ZALLOC(type) (RB_ZALLOC_N(type, 1)) - -/** - * Convenient macro that reallocates an array with a new size. - * - * @param var A variable of `type`, which points to a storage - * instance that was previously returned from - * either - * - ruby_xmalloc(), - * - ruby_xmalloc2(), - * - ruby_xcalloc(), - * - ruby_xrealloc(), or - * - ruby_xrealloc2(). - * @param type Type of allocation. - * @param n Requested new size of each element. - * @exception rb_eNoMemError No space left for allocation. - * @exception rb_eArgError Integer overflow trying to calculate the length - * of continuous memory region of `n` elements of - * `type`. - * @return Storage instance that is capable of storing at least `n` - * elements of type `type`. - * @pre The passed variable must point to a valid live storage instance. - * It is a failure to pass a variable that holds an already-freed - * pointer. - * @note It doesn't return NULL, even when `n` is zero. - * @warning Do not assume anything on the alignment of the return value. - * There is no guarantee that it inherits the passed argument's - * one. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -#define RB_REALLOC_N(var,type,n) \ - ((var) = RBIMPL_CAST((type *)ruby_xrealloc2((void *)(var), (n), sizeof(type)))) - -/** - * @deprecated This macro is dangerous (does not bother stack overflow at - * all). #RB_ALLOCV is the modern way to do the same thing. - * @param type Type of array elements. - * @param n Length of the array. - * @return A pointer on stack. - */ -#define ALLOCA_N(type,n) \ - RBIMPL_CAST((type *)alloca(rbimpl_size_mul_or_raise(sizeof(type), (n)))) - -/** - * Identical to #RB_ALLOCV_N(), except it implicitly assumes the type of array - * is ::VALUE. - * - * @param v A variable to hold the just-in-case opaque Ruby object. - * @param n Size of allocation, in bytes. - * @return An array of `n` bytes of ::VALUE. - * @note `n` may be evaluated twice. - */ -#define RB_ALLOCV(v, n) \ - ((n) < RUBY_ALLOCV_LIMIT ? \ - ((v) = 0, alloca(n)) : \ - rb_alloc_tmp_buffer(&(v), (n))) - -/** - * Allocates a memory region, possibly on stack. If the given size exceeds - * #RUBY_ALLOCV_LIMIT, it allocates a dedicated opaque ruby object instead and - * let our GC sweep that region after use. Either way you can fire-and-forget. - * - * ```CXX - * #include - * - * VALUE - * foo(int n) - * { - * VALUE v; - * auto ptr = RB_ALLOCV(struct tms, v, n); - * ... - * // no need to free `ptr`. - * } - * ``` - * - * If you want to be super-duper polite you can also explicitly state the end - * of use of such memory region by calling #RB_ALLOCV_END(). - * - * @param type The type of array elements. - * @param v A variable to hold the just-in-case opaque Ruby object. - * @param n Number of elements requested to allocate. - * @return An array of `n` elements of `type`. - * @note `n` may be evaluated twice. - */ -#define RB_ALLOCV_N(type, v, n) \ - RBIMPL_CAST((type *) \ - (((size_t)(n) < RUBY_ALLOCV_LIMIT / sizeof(type)) ? \ - ((v) = 0, alloca((n) * sizeof(type))) : \ - rb_alloc_tmp_buffer2(&(v), (n), sizeof(type)))) - -/** - * Polite way to declare that the given array is not used any longer. Calling - * this not mandatory. Our GC can baby-sit you. However it is not a very bad - * idea to use it when possible. Doing so could reduce memory footprint. - * - * @param v A variable previously passed to either #RB_ALLOCV/#RB_ALLOCV_N. - */ -#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v)) - -/** - * Handy macro to erase a region of memory. - * - * @param p Target pointer. - * @param type Type of `p[0]` - * @param n Length of `p`. - * @return `p`. - * @post First `n` elements of `p` are squashed. - */ -#define MEMZERO(p,type,n) memset((p), 0, rbimpl_size_mul_or_raise(sizeof(type), (n))) - -/** - * Handy macro to call memcpy. - * - * @param p1 Destination pointer. - * @param p2 Source pointer. - * @param type Type of `p2[0]` - * @param n Length of `p2`. - * @return `p1`. - * @post First `n` elements of `p2` are copied into `p1`. - */ -#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n))) - -/** - * Handy macro to call memmove. - * - * @param p1 Destination pointer. - * @param p2 Source pointer. - * @param type Type of `p2[0]` - * @param n Length of `p2`. - * @return `p1`. - * @post First `n` elements of `p2` are copied into `p1`. - */ -#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n))) - -/** - * Handy macro to call memcmp - * - * @param p1 Target LHS. - * @param p2 Target RHS. - * @param type Type of `p1[0]` - * @param n Length of `p1`. - * @retval <0 `p1` is "less" than `p2`. - * @retval 0 `p1` is equal to `p2`. - * @retval >0 `p1` is "greater" than `p2`. - */ -#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n))) - -#define ALLOC_N RB_ALLOC_N /**< @old{RB_ALLOC_N} */ -#define ALLOC RB_ALLOC /**< @old{RB_ALLOC} */ -#define ZALLOC_N RB_ZALLOC_N /**< @old{RB_ZALLOC_N} */ -#define ZALLOC RB_ZALLOC /**< @old{RB_ZALLOC} */ -#define REALLOC_N RB_REALLOC_N /**< @old{RB_REALLOC_N} */ -#define ALLOCV RB_ALLOCV /**< @old{RB_ALLOCV} */ -#define ALLOCV_N RB_ALLOCV_N /**< @old{RB_ALLOCV_N} */ -#define ALLOCV_END RB_ALLOCV_END /**< @old{RB_ALLOCV_END} */ - -/** - * @private - * - * This is an implementation detail of rbimpl_size_mul_overflow(). - * - * @internal - * - * Expecting this struct to be eliminated by function inlinings. This is - * nothing more than std::variant if we could use recent C++, but - * reality is we cannot. - */ -struct rbimpl_size_mul_overflow_tag { - bool left; /**< Whether overflow happened or not. */ - size_t right; /**< Multiplication result. */ -}; - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((2)) -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail of #RB_ALLOCV(). People don't use this - * directly. - * - * @param[out] store Pointer to a variable. - * @param[in] len Requested number of bytes to allocate. - * @return Allocated `len` bytes array. - * @post `store` holds the corresponding tmp buffer object. - */ -void *rb_alloc_tmp_buffer(volatile VALUE *store, long len); - -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((2,3)) -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail of #RB_ALLOCV_N(). People don't use this - * directly. - * - * @param[out] store Pointer to a variable. - * @param[in] len Requested number of bytes to allocate. - * @param[in] count Number of elements in an array. - * @return Allocated `len` bytes array. - * @post `store` holds the corresponding tmp buffer object. - * - * @internal - * - * Although the meaning of `count` variable is clear, @shyouhei doesn't - * understand its needs. - */ -void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count); - -/** - * @private - * - * This is an implementation detail of #RB_ALLOCV_END(). People don't use this - * directly. - * - * @param[out] store Pointer to a variable. - * @pre `store` is a NULL, or a pointer to a tmp buffer object. - * @post `*store` is ::RUBY_Qfalse. - * @post The object formerly stored in `store` is destroyed. - */ -void rb_free_tmp_buffer(volatile VALUE *store); - -RBIMPL_ATTR_NORETURN() -/** - * @private - * - * This is an implementation detail of #RB_ALLOCV_N(). People don't use this - * directly. - * - * @param[in] x Arbitrary value. - * @param[in] y Arbitrary value. - * @exception rb_eArgError `x` * `y` would integer overflow. - */ -void ruby_malloc_size_overflow(size_t x, size_t y); - -#ifdef HAVE_RB_GC_GUARDED_PTR_VAL -volatile VALUE *rb_gc_guarded_ptr_val(volatile VALUE *ptr, VALUE val); -#endif -RBIMPL_SYMBOL_EXPORT_END() - -#ifdef _MSC_VER -# pragma optimize("", off) - -/** - * @private - * - * This is an implementation detail of #RB_GC_GUARD(). People don't use this - * directly. - * - * @param[in] ptr A pointer to an on-stack C variable. - * @return `ptr` as-is. - */ -static inline volatile VALUE * -rb_gc_guarded_ptr(volatile VALUE *ptr) -{ - return ptr; -} - -# pragma optimize("", on) -#endif - -/** - * @deprecated This function was an implementation detail of old - * #RB_ALLOCV_N(). We no longer use it. @shyouhei suspects that - * there are no actual usage now. However it was not marked as - * private before. We cannot delete it any longer. - * @param[in] a Arbitrary value. - * @param[in] b Arbitrary value. - * @param[in] max Possible maximum value. - * @param[out] c A pointer to return the computation result. - * @retval 1 `c` is insane. - * @retval 0 `c` is sane. - * @post `c` holds `a` * `b`, but could be overflowed. - */ -static inline int -rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c) -{ -#ifdef DSIZE_T - RB_GNUC_EXTENSION DSIZE_T da, db, c2; - da = a; - db = b; - c2 = da * db; - if (c2 > max) return 1; - *c = RBIMPL_CAST((size_t)c2); -#else - if (b != 0 && a > max / b) return 1; - *c = a * b; -#endif - return 0; -} - -#if defined(__DOXYGEN__) -RBIMPL_ATTR_CONSTEXPR(CXX14) -#elif RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0) -RBIMPL_ATTR_CONSTEXPR(CXX14) /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70507 */ -#elif RBIMPL_COMPILER_SINCE(Clang, 7, 0, 0) -RBIMPL_ATTR_CONSTEXPR(CXX14) /* https://bugs.llvm.org/show_bug.cgi?id=37633 */ -#endif -RBIMPL_ATTR_CONST() -/** - * @private - * - * This is an implementation detail of #RB_ALLOCV_N(). People don't use this - * directly. - * - * @param[in] x Arbitrary value. - * @param[in] y Arbitrary value. - * @return `{ left, right }`, where `left` is whether there is an integer - * overflow or not, and `right` is a (possibly overflowed) result - * of `x` * `y`. - * - * @internal - * - * This is in fact also an implementation detail of ruby_xmalloc2() etc. - */ -static inline struct rbimpl_size_mul_overflow_tag -rbimpl_size_mul_overflow(size_t x, size_t y) -{ - struct rbimpl_size_mul_overflow_tag ret = { false, 0, }; - -#if RBIMPL_HAS_BUILTIN(__builtin_mul_overflow) - ret.left = __builtin_mul_overflow(x, y, &ret.right); - -#elif defined(DSIZE_T) - RB_GNUC_EXTENSION DSIZE_T dx = x; - RB_GNUC_EXTENSION DSIZE_T dy = y; - RB_GNUC_EXTENSION DSIZE_T dz = dx * dy; - ret.left = dz > SIZE_MAX; - ret.right = RBIMPL_CAST((size_t)dz); - -#elif defined(_MSC_VER) && defined(_WIN64) - unsigned __int64 dp = 0; - unsigned __int64 dz = _umul128(x, y, &dp); - ret.left = RBIMPL_CAST((bool)dp); - ret.right = RBIMPL_CAST((size_t)dz); - -#else - /* https://wiki.sei.cmu.edu/confluence/display/c/INT30-C.+Ensure+that+unsigned+integer+operations+do+not+wrap */ - ret.left = (y != 0) && (x > SIZE_MAX / y); - ret.right = x * y; -#endif - - return ret; -} - -/** - * @private - * - * This is an implementation detail of #RB_ALLOCV_N(). People don't use this - * directly. - * - * @param[in] x Arbitrary value. - * @param[in] y Arbitrary value. - * @exception rb_eArgError Multiplication could integer overflow. - * @return `x` * `y`. - * - * @internal - * - * This is in fact also an implementation detail of ruby_xmalloc2() etc. - */ -static inline size_t -rbimpl_size_mul_or_raise(size_t x, size_t y) -{ - struct rbimpl_size_mul_overflow_tag size = - rbimpl_size_mul_overflow(x, y); - - if (RB_LIKELY(! size.left)) { - return size.right; - } - else { - ruby_malloc_size_overflow(x, y); - RBIMPL_UNREACHABLE_RETURN(0); - } -} - -/** - * This is an implementation detail of #RB_ALLOCV_N(). People don't use this - * directly. - * - * @param[out] store Pointer to a variable. - * @param[in] count Number of elements in an array. - * @param[in] elsize Size of each elements. - * @return Region of `count` * `elsize` bytes. - * @post `store` holds the corresponding tmp buffer object. - * - * @internal - * - * We might want to deprecate this function and make a `rbimpl_` counterpart. - */ -static inline void * -rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize) -{ - const size_t total_size = rbimpl_size_mul_or_raise(count, elsize); - const size_t cnt = (total_size + sizeof(VALUE) - 1) / sizeof(VALUE); - return rb_alloc_tmp_buffer_with_count(store, total_size, cnt); -} - -#if ! defined(__MINGW32__) && ! defined(__DOXYGEN__) -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL((1)) -RBIMPL_ATTR_RETURNS_NONNULL() -/* At least since 2004, glibc's annotates memcpy to be - * __attribute__((__nonnull__(1, 2))). However it is safe to pass NULL to the - * source pointer, if n is 0. Let's wrap memcpy. */ -static inline void * -ruby_nonempty_memcpy(void *dest, const void *src, size_t n) -{ - if (n) { - return memcpy(dest, src, n); - } - else { - return dest; - } -} -RBIMPL_SYMBOL_EXPORT_END() -#undef memcpy -#define memcpy ruby_nonempty_memcpy -#endif - -#endif /* RBIMPL_MEMORY_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/method.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/method.h deleted file mode 100644 index 19feb0c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/method.h +++ /dev/null @@ -1,205 +0,0 @@ -#ifndef RBIMPL_METHOD_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_METHOD_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Creation and modification of Ruby methods. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/backward/2/stdarg.h" - -/** - * @defgroup defmethod Defining methods - * - * There are some APIs to define a method from C. - * These API takes a C function as a method body. - * - * ### Method body functions - * - * Method body functions must return a VALUE and - * can be one of the following form: - * - * #### Fixed number of parameters - * - * This form is a normal C function, excepting it takes - * a receiver object as the first argument. - * - * ```CXX - * static VALUE my_method(VALUE self, VALUE x, VALUE y); - * ``` - * - * #### argc and argv style - * - * This form takes three parameters: argc, argv and self. - * self is the receiver. argc is the number of arguments. - * argv is a pointer to an array of the arguments. - * - * ```CXX - * static VALUE my_method(int argc, VALUE *argv, VALUE self); - * ``` - * - * #### Ruby array style - * - * This form takes two parameters: self and args. - * self is the receiver. args is an Array object which - * contains the arguments. - * - * ```CXX - * static VALUE my_method(VALUE self, VALUE args); - * ``` - * - * ### Number of parameters - * - * Method defining APIs takes the number of parameters which the - * method will takes. This number is called argc. - * argc can be: - * - * - Zero or positive number. - * This means the method body function takes a fixed number of parameters. - * - * - `-1`. - * This means the method body function is "argc and argv" style. - * - * - `-2`. - * This means the method body function is "self and args" style. - * - * @{ - */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a method. - * - * @param[out] klass A module or a class. - * @param[in] mid Name of the function. - * @param[in] func The method body. - * @param[in] arity The number of parameters. See @ref defmethod. - * @note There are in fact 18 different prototypes for func. - * @see ::ruby::backward::cxxanyargs::define_method::rb_define_method - */ -void rb_define_method(VALUE klass, const char *mid, VALUE (*func)(ANYARGS), int arity); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a module function for a module. - * - * @param[out] klass A module or a class. - * @param[in] mid Name of the function. - * @param[in] func The method body. - * @param[in] arity The number of parameters. See @ref defmethod. - * @note There are in fact 18 different prototypes for func. - * @see ::ruby::backward::cxxanyargs::define_method::rb_define_module_function - */ -void rb_define_module_function(VALUE klass, const char *mid, VALUE (*func)(ANYARGS), int arity); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a global function. - * - * @param[in] mid Name of the function. - * @param[in] func The method body. - * @param[in] arity The number of parameters. See @ref defmethod. - * @note There are in fact 18 different prototypes for func. - * @see ::ruby::backward::cxxanyargs::define_method::rb_define_global_function - */ -void rb_define_global_function(const char *mid, VALUE (*func)(ANYARGS), int arity); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines an undef of a method. -- What? - * - * In ruby, there are two separate concepts called "undef" and "remove_method". - * The thing you imagine when you "un-define" a method is remove_method. This - * one on the other hand is masking of a previous method definition. Suppose - * for instance: - * - * ```ruby - * class Foo - * def foo - * end - * end - * - * class Bar < Foo - * def bar - * foo - * end - * end - * - * class Baz < Foo - * undef foo # <--- (*1) - * end - * ``` - * - * This `undef foo` at `(*1)` must not eliminate `Foo#foo`, because that method - * is also used from `Bar#bar`. So instead of physically executing the target - * method, `undef` inserts a special filtering entry to the class (`Baz` this - * case). That entry, when called, acts as if there were no methods at all. - * But the original can still be accessible, via ways like `Bar#bar` above. - * - * @param[out] klass The class to insert an undef. - * @param[in] name Name of the undef. - * @exception rb_eTypeError `klass` is a non-module. - * @exception rb_eFrozenError `klass` is frozen. - * @see rb_remove_method - */ -void rb_undef_method(VALUE klass, const char *name); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines an alias of a method. - * - * @param[in,out] klass The class which the original method belongs - * to; this is also where the new method will - * belong to. - * @param[in] dst A new name for the method. - * @param[in] src The original name of the method. - * @exception rb_eTypeError `klass` is a non-module. - * @exception rb_eFrozenError `klass` is frozen. - * @exception rb_eNameError There is no such method named as `src` in - * `klass`. - * - * @internal - * - * Above description is in fact a bit inaccurate because it ignores - * Refinements. - */ -void rb_define_alias(VALUE klass, const char *dst, const char *src); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines public accessor method(s) for an attribute. - * - * @param[out] klass The class which the attribute will belong to. - * @param[in] name Name of the attribute. - * @param[in] read Whether to define a getter method. - * @param[in] write Whether to define a setter method. - * @exception rb_eTypeError `klass` is a non-module. - * @exception rb_eFrozenError `klass` is frozen. - * @exception rb_eNameError `name` invalid as an attr e.g. an operator. - */ -void rb_define_attr(VALUE klass, const char *name, int read, int write); - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_METHOD_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/module.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/module.h deleted file mode 100644 index d678dd2..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/module.h +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef RBIMPL_MODULE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_MODULE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Creation and modification of Ruby modules. - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" - -/** - * @defgroup class Classes and their hierarchy. - * - * @par Terminology - * - class: same as in Ruby. - * - singleton class: class for a particular object. - * - eigenclass: = singleton class - * - metaclass: class of a class. Metaclass is a kind of singleton class. - * - metametaclass: class of a metaclass. - * - meta^(n)-class: class of a meta^(n-1)-class. - * - attached object: A singleton class knows its unique instance. - * The instance is called the attached object for the singleton class. - * @{ - */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a top-level class. - * - * @param[in] name Name of the class. - * @param[in] super A class from which the new class will derive. - * @exception rb_eTypeError The constant name `name` is already taken but the - * constant is not a class. - * @exception rb_eTypeError The class is already defined but the class can - * not be reopened because its superclass is not - * `super`. - * @exception rb_eArgError `super` is NULL. - * @return The created class. - * @post Top-level constant named `name` refers the returned class. - * @note If a class named `name` is already defined and its superclass is - * `super`, the function just returns the defined class. - * @note The compaction GC does not move classes returned by this - * function. - * - * @internal - * - * There are classes without names, but you can't pass NULL here. You have to - * use other ways to create one. - */ -VALUE rb_define_class(const char *name, VALUE super); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a top-level module. - * - * @param[in] name Name of the module. - * @exception rb_eTypeError The constant name `name` is already taken but the - * constant is not a module. - * @return The created module. - * @post Top-level constant named `name` refers the returned module. - * @note The compaction GC does not move classes returned by this - * function. - * - * @internal - * - * There are modules without names, but you can't pass NULL here. You have to - * use other ways to create one. - */ -VALUE rb_define_module(const char *name); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a class under the namespace of `outer`. - * - * @param[out] outer A class which contains the new class. - * @param[in] name Name of the new class - * @param[in] super A class from which the new class will derive. - * 0 means ::rb_cObject. - * @exception rb_eTypeError The constant name `name` is already taken but - * the constant is not a class. - * @exception rb_eTypeError The class is already defined but the class can - * not be reopened because its superclass is not - * `super`. - * @exception rb_eArgError `super` is NULL. - * @return The created class. - * @post `outer::name` refers the returned class. - * @note If a class named `name` is already defined and its superclass - * is `super`, the function just returns the defined class. - * @note The compaction GC does not move classes returned by this - * function. - */ -VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a module under the namespace of `outer`. - * - * @param[out] outer A class which contains the new module. - * @param[in] name Name of the new module - * @exception rb_eTypeError The constant name `name` is already taken but - * the constant is not a class. - * @return The created module. - * @post `outer::name` refers the returned module. - * @note The compaction GC does not move classes returned by this - * function. - */ -VALUE rb_define_module_under(VALUE outer, const char *name); - -/** - * Includes a module to a class. - * - * @param[out] klass Inclusion destination. - * @param[in] module Inclusion source. - * @exception rb_eArgError Cyclic inclusion. - * - * @internal - * - * :FIXME: @shyouhei suspects this function lacks assertion that the arguments - * being modules... Could silently SEGV if non-module was passed? - */ -void rb_include_module(VALUE klass, VALUE module); - -/** - * Extend the object with the module. - * - * @warning This is the same as `Module#extend_object`, not - * `Object#extend`! These two methods are very similar, but not - * identical. The difference is the hook. `Module#extend_object` - * does not invoke `Module#extended`, while `Object#extend` does. - * @param[out] obj Object to extend. - * @param[in] mod Module of extension. - */ -void rb_extend_object(VALUE obj, VALUE mod); - -/** - * Identical to rb_include_module(), except it "prepends" the passed module to - * the klass, instead of includes. This affects how `super` resolves. For - * instance: - * - * ```ruby - * class Q; def foo; "" end end - * module W; def foo; "#{super}" end end - * class E < Q; include W; def foo; "#{super}" end end - * class R < Q; prepend W; def foo; "#{super}" end end - * - * E.new.foo # => "" - * r.new.foo # => "" - * ``` - * - * @param[out] klass Target class to modify. - * @param[in] module Module to prepend. - * @exception rb_eArgError Cyclic inclusion. - */ -void rb_prepend_module(VALUE klass, VALUE module); - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_MODULE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/newobj.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/newobj.h deleted file mode 100644 index a8a5557..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/newobj.h +++ /dev/null @@ -1,195 +0,0 @@ -#ifndef RBIMPL_NEWOBJ_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_NEWOBJ_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #NEWOBJ. - */ -#include "ruby/internal/attr/deprecated.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/value.h" -#include "ruby/assert.h" - -/** - * Declares, allocates, then assigns a new object to the given variable. - * - * @param obj Variable name. - * @param type Variable type. - * @exception rb_eNoMemError No space left. - * @return An allocated object, not initialised. - * @note Modern programs tend to use #NEWOBJ_OF instead. - * - * @internal - * - * :FIXME: Should we deprecate it? - */ -#define RB_NEWOBJ(obj,type) type *(obj) = RBIMPL_CAST((type *)rb_newobj()) - -/** - * Identical to #RB_NEWOBJ, except it also accepts the allocating object's - * class and flags. - * - * @param obj Variable name. - * @param type Variable type. - * @param klass Object's class. - * @param flags Object's flags. - * @exception rb_eNoMemError No space left. - * @return An allocated object, filled with the arguments. - */ -#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = RBIMPL_CAST((type *)rb_newobj_of(klass, flags)) - -#define NEWOBJ RB_NEWOBJ /**< @old{RB_NEWOBJ} */ -#define NEWOBJ_OF RB_NEWOBJ_OF /**< @old{RB_NEWOBJ_OF} */ -#define OBJSETUP rb_obj_setup /**< @old{rb_obj_setup} */ -#define CLONESETUP rb_clone_setup /**< @old{rb_clone_setup} */ -#define DUPSETUP rb_dup_setup /**< @old{rb_dup_setup} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * This is the implementation detail of #RB_NEWOBJ. - * - * @exception rb_eNoMemError No space left. - * @return An allocated object, not initialised. - */ -VALUE rb_newobj(void); - -/** - * This is the implementation detail of #RB_NEWOBJ_OF. - * - * @param klass Object's class. - * @param flags Object's flags. - * @exception rb_eNoMemError No space left. - * @return An allocated object, filled with the arguments. - */ -VALUE rb_newobj_of(VALUE klass, VALUE flags); - -/** - * Fills common fields in the object. - * - * @note Prefer rb_newobj_of() to this function. - * @param[in,out] obj A Ruby object to be set up. - * @param[in] klass `obj` will belong to this class. - * @param[in] type One of ::ruby_value_type. - * @return The passed object. - * - * @internal - * - * Historically, authors of Ruby has described the `type` argument as "one of - * ::ruby_value_type". In reality it accepts either ::ruby_value_type, - * ::ruby_fl_type, or any combinations of the two. For instance - * `RUBY_T_STRING | RUBY_FL_FREEZE` is a valid value that this function takes, - * and means this is a frozen string. - * - * 3rd party extension libraries rarely need to allocate Strings this way. - * They normally only concern ::RUBY_T_DATA. This argument is mainly used for - * specifying flags, @shyouhei suspects. - */ -VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type); - -/** - * Queries the class of an object. This is not always identical to - * `RBASIC_CLASS(obj)`. It searches for the nearest ancestor skipping - * singleton classes or included modules. - * - * @param[in] obj Object in question. - * @return The object's class, in a normal sense. - */ -VALUE rb_obj_class(VALUE obj); - -/** - * Clones a singleton class. An object can have its own singleton class. OK. - * Then what happens when a program clones such object? The singleton class - * that is attached to the source object must also be cloned. Otherwise a - * singleton object gets shared with two objects, which breaks "singleton"-ness - * of such class. - * - * This is basically an implementation detail of rb_clone_setup(). People - * need not be aware of this working behind-the-scene. - * - * @param[in] obj The object that has its own singleton class. - * @return Cloned singleton class. - */ -VALUE rb_singleton_class_clone(VALUE obj); - -/** - * Attaches a singleton class to its corresponding object. - * - * This is basically an implementation detail of rb_clone_setup(). People - * need not be aware of this working behind-the-scene. - * - * @param[in] klass The singleton class. - * @param[out] obj The object to attach a class. - * @pre The passed two objects must agree with each other that `klass` - * becomes a singleton class of `obj`. - * @post `klass` becomes the singleton class of `obj`. - */ -void rb_singleton_class_attached(VALUE klass, VALUE obj); - -/** - * Copies the list of instance variables. 3rd parties need not know, but there - * are several ways to store an object's instance variables, depending on its - * internal structure. This function makes sense when either of the passed - * objects are using so-called "generic" backend storage. This distinction is - * purely an implementation detail of rb_clone_setup(). People need not be - * aware of this working behind-the-scenes. - * - * @param[out] clone The destination object. - * @param[in] obj The source object. - */ -void rb_copy_generic_ivar(VALUE clone, VALUE obj); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_DEPRECATED(("This is no longer how Object#clone works.")) -/** - * @deprecated Not sure exactly when but at some time, the implementation of - * `Object#clone` stopped using this function. It remained - * untouched for a while, and then @shyouhei realised that they - * are no longer doing the same thing. It seems nobody seriously - * uses this function any longer. Let's just abandon it. - * - * @param[out] clone The destination object. - * @param[in] obj The source object. - */ -static inline void -rb_clone_setup(VALUE clone, VALUE obj) -{ - return; -} - -RBIMPL_ATTR_DEPRECATED(("This is no longer how Object#dup works.")) -/** - * @deprecated Not sure exactly when but at some time, the implementation of - * `Object#dup` stopped using this function. It remained - * untouched for a while, and then @shyouhei realised that they - * are no longer the same thing. It seems nobody seriously uses - * this function any longer. Let's just abandon it. - * - * @param[out] dup The destination object. - * @param[in] obj The source object. - */ -static inline void -rb_dup_setup(VALUE dup, VALUE obj) -{ - return; -} - -#endif /* RBIMPL_NEWOBJ_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/rgengc.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/rgengc.h deleted file mode 100644 index 7ea0444..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/rgengc.h +++ /dev/null @@ -1,443 +0,0 @@ -#ifndef RBIMPL_RGENGC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_RGENGC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief RGENGC write-barrier APIs. - * @see Sasada, K., "Gradual write-barrier insertion into a Ruby - * interpreter", in proceedings of the 2019 ACM SIGPLAN - * International Symposium on Memory Management (ISMM 2019), pp - * 115-121, 2019. https://doi.org/10.1145/3315573.3329986 - */ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/maybe_unused.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/value.h" -#include "ruby/assert.h" - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#undef USE_RGENGC -#define USE_RGENGC 1 - -/** - * @private - * - * This is a compile-time flag to enable/disable incremental GC feature. It - * has to be set at the time ruby itself compiles. Makes no sense for 3rd - * parties. It is safe for them to set this though; that just doesn't change - * anything. - */ -#ifndef USE_RINCGC -# define USE_RINCGC 1 -#endif - -/** - * @deprecated This macro seems broken. Setting this to anything other than - * zero just doesn't compile. We need to KonMari. - */ -#ifndef USE_RGENGC_LOGGING_WB_UNPROTECT -# define USE_RGENGC_LOGGING_WB_UNPROTECT 0 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RArray. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_ARRAY -# define RGENGC_WB_PROTECTED_ARRAY 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RHash. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_HASH -# define RGENGC_WB_PROTECTED_HASH 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RStruct. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_STRUCT -# define RGENGC_WB_PROTECTED_STRUCT 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RString. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_STRING -# define RGENGC_WB_PROTECTED_STRING 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RObject. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_OBJECT -# define RGENGC_WB_PROTECTED_OBJECT 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RRegexp. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_REGEXP -# define RGENGC_WB_PROTECTED_REGEXP 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RClass. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_CLASS -# define RGENGC_WB_PROTECTED_CLASS 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RFloat. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_FLOAT -# define RGENGC_WB_PROTECTED_FLOAT 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RComplex. It has to be set at the time ruby itself compiles. - * Makes no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_COMPLEX -# define RGENGC_WB_PROTECTED_COMPLEX 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RRational. It has to be set at the time ruby itself compiles. - * Makes no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_RATIONAL -# define RGENGC_WB_PROTECTED_RATIONAL 1 -#endif - -/** - * @private - * - * This is a compile-time flag to enable/disable write barrier for - * struct ::RBignum. It has to be set at the time ruby itself compiles. Makes - * no sense for 3rd parties. - */ -#ifndef RGENGC_WB_PROTECTED_BIGNUM -# define RGENGC_WB_PROTECTED_BIGNUM 1 -#endif - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - * - * @internal - * - * @shyouhei doesn't think anybody uses this right now. - */ -#ifndef RGENGC_WB_PROTECTED_NODE_CREF -# define RGENGC_WB_PROTECTED_NODE_CREF 1 -#endif - -/** - * @defgroup rgengc Write barrier (WB) interfaces: - * - * @note The following core interfaces can be changed in the future. Please - * catch up if you want to insert WB into C-extensions correctly. - * - * @{ - */ - -/** - * Declaration of a "back" pointer. This is a write barrier for new reference - * from "old" generation to "young" generation. It writes `young` into - * `*slot`, which is a pointer inside of `old`. - * - * @param[in] old An old object. - * @param[in] slot A pointer inside of `old`. - * @param[out] young A young object. - */ -#define RB_OBJ_WRITE(old, slot, young) \ - RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__)) - -/** - * Identical to #RB_OBJ_WRITE(), except it doesn't write any values, but only a - * WB declaration. `oldv` is replaced value with `b` (not used in current - * Ruby). - * - * @param[in] old An old object. - * @param[in] oldv An object previously stored inside of `old`. - * @param[out] young A young object. - */ -#define RB_OBJ_WRITTEN(old, oldv, young) \ - RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__)) -/** @} */ - -#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW /**< @old{RB_OBJ_PROMOTED_RAW} */ -#define OBJ_PROMOTED RB_OBJ_PROMOTED /**< @old{RB_OBJ_PROMOTED} */ -#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT /**< @old{RB_OBJ_WB_UNPROTECT} */ - -/** - * Asserts that the passed object is not fenced by write barriers. Objects of - * such property do not contribute to generational GCs. They are scanned - * always. - * - * @param[out] x An object that would not be protected by the barrier. - */ -#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__) - -/** - * Identical to #RB_OBJ_WB_UNPROTECT(), except it can also assert that the - * given object is of given type. - * - * @param[in] type One of `ARRAY`, `STRING`, etc. - * @param[out] obj An object of `type` that would not be protected. - * - * @internal - * - * @shyouhei doesn't understand why this has to be visible from extensions. - */ -#define RB_OBJ_WB_UNPROTECT_FOR(type, obj) \ - (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj) - -/** - * @private - * - * This is an implementation detail of rb_obj_wb_unprotect(). People don't use - * it directly. - */ -#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging - -/** @cond INTERNAL_MACRO */ -#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW -#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() -/** - * This is the implementation of #RB_OBJ_WRITE(). People don't use it - * directly. - * - * @param[in] old An object that points to `young`. - * @param[out] young An object that is referenced from `old`. - */ -void rb_gc_writebarrier(VALUE old, VALUE young); - -/** - * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it - * directly. - * - * @param[out] obj An object that does not participate in WB. - */ -void rb_gc_writebarrier_unprotect(VALUE obj); - -#if USE_RGENGC_LOGGING_WB_UNPROTECT -/** - * @private - * - * This is the implementation of #RGENGC_LOGGING_WB_UNPROTECT(). People - * don't use it directly. - * - * @param[in] objptr Don't know why this is a pointer to void but in - * reality this is a pointer to an object that is about - * to be un-protected. - * @param[in] filename Pass C's `__FILE__` here. - * @param[in] line Pass C's `__LINE__` here. - */ -void rb_gc_unprotect_logging(void *objptr, const char *filename, int line); -#endif - -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * This is the implementation of #RB_OBJ_PROMOTED(). People don't use it - * directly. - * - * @param[in] obj An object to query. - * @retval true The object is "promoted". - * @retval false The object is young. Have not experienced GC at all. - */ -static inline bool -RB_OBJ_PROMOTED_RAW(VALUE obj) -{ - RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj)); - return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Tests if the object is "promoted" -- that is, whether the object experienced - * one or more GC marks. - * - * @param[in] obj An object to query. - * @retval true The object is "promoted". - * @retval false The object is young. Have not experienced GC at all. - * @note Hello, is anyone actively calling this function? @shyouhei have - * never seen any actual usages outside of the GC implementation - * itself. - */ -static inline bool -RB_OBJ_PROMOTED(VALUE obj) -{ - if (! RB_FL_ABLE(obj)) { - return false; - } - else { - return RB_OBJ_PROMOTED_RAW(obj); - } -} - -/** - * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it - * directly. - * - * @param[out] x An object that does not participate in WB. - * @param[in] filename C's `__FILE__` of the caller function. - * @param[in] line C's `__LINE__` of the caller function. - * @return x - */ -static inline VALUE -rb_obj_wb_unprotect( - VALUE x, - RBIMPL_ATTR_MAYBE_UNUSED() - const char *filename, - RBIMPL_ATTR_MAYBE_UNUSED() - int line) -{ -#if USE_RGENGC_LOGGING_WB_UNPROTECT - RGENGC_LOGGING_WB_UNPROTECT(RBIMPL_CAST((void *)x), filename, line); -#endif - rb_gc_writebarrier_unprotect(x); - return x; -} - -/** - * @private - * - * This is the implementation of #RB_OBJ_WRITTEN(). People don't use it - * directly. - * - * @param[in] a An old object. - * @param[in] oldv An object previously stored inside of `old`. - * @param[out] b A young object. - * @param[in] filename C's `__FILE__` of the caller function. - * @param[in] line C's `__LINE__` of the caller function. - * @return a - */ -static inline VALUE -rb_obj_written( - VALUE a, - RBIMPL_ATTR_MAYBE_UNUSED() - VALUE oldv, - VALUE b, - RBIMPL_ATTR_MAYBE_UNUSED() - const char *filename, - RBIMPL_ATTR_MAYBE_UNUSED() - int line) -{ -#if USE_RGENGC_LOGGING_WB_UNPROTECT - RGENGC_LOGGING_OBJ_WRITTEN(a, oldv, b, filename, line); -#endif - - if (!RB_SPECIAL_CONST_P(b)) { - rb_gc_writebarrier(a, b); - } - - return a; -} - -/** - * @private - * - * This is the implementation of #RB_OBJ_WRITE(). People don't use it - * directly. - * - * @param[in] a An old object. - * @param[in] slot A pointer inside of `old`. - * @param[out] b A young object. - * @param[in] filename C's `__FILE__` of the caller function. - * @param[in] line C's `__LINE__` of the caller function. - * @return a - */ -static inline VALUE -rb_obj_write( - VALUE a, VALUE *slot, VALUE b, - RBIMPL_ATTR_MAYBE_UNUSED() - const char *filename, - RBIMPL_ATTR_MAYBE_UNUSED() - int line) -{ -#ifdef RGENGC_LOGGING_WRITE - RGENGC_LOGGING_WRITE(a, slot, b, filename, line); -#endif - - *slot = b; - - rb_obj_written(a, RUBY_Qundef /* ignore `oldv' now */, b, filename, line); - return a; -} - -#endif /* RBIMPL_RGENGC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/scan_args.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/scan_args.h deleted file mode 100644 index cf5b18f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/scan_args.h +++ /dev/null @@ -1,534 +0,0 @@ -#ifndef RBIMPL_SCAN_ARGS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_SCAN_ARGS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Compile-time static implementation of ::rb_scan_args(). - * - * This is a beast. It statically analyses the argument spec string, and - * expands the assignment of variables into dedicated codes. - */ -#include "ruby/assert.h" -#include "ruby/internal/attr/diagnose_if.h" -#include "ruby/internal/attr/error.h" -#include "ruby/internal/attr/forceinline.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/config.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/intern/array.h" /* rb_ary_new_from_values */ -#include "ruby/internal/intern/error.h" /* rb_error_arity */ -#include "ruby/internal/intern/hash.h" /* rb_hash_dup */ -#include "ruby/internal/intern/proc.h" /* rb_block_proc */ -#include "ruby/internal/iterator.h" /* rb_block_given_p / rb_keyword_given_p */ -#include "ruby/internal/static_assert.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/value.h" - -/** - * @name Possible values that you should pass to rb_scan_args_kw(). - * @{ - */ - -/** Same behaviour as rb_scan_args(). */ -#define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0 - -/** The final argument should be a hash treated as keywords.*/ -#define RB_SCAN_ARGS_KEYWORDS 1 - -/** - * Treat a final argument as keywords if it is a hash, and not as keywords - * otherwise. - */ -#define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3 - -/** @} */ - -/** - * @name Possible values that you should pass to rb_funcallv_kw(). - * @{ - */ - -/** Do not pass keywords. */ -#define RB_NO_KEYWORDS 0 - -/** Pass keywords, final argument should be a hash of keywords. */ -#define RB_PASS_KEYWORDS 1 - -/** - * Pass keywords if current method is called with keywords, useful for argument - * delegation - */ -#define RB_PASS_CALLED_KEYWORDS rb_keyword_given_p() - -/** @} */ - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1 - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_NONNULL((2, 3)) -/** - * Retrieves argument from argc and argv to given ::VALUE references according - * to the format string. The format can be described in ABNF as follows: - * - * ``` - * scan-arg-spec := param-arg-spec [keyword-arg-spec] [block-arg-spec] - * - * param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec / - * pre-opt-post-arg-spec - * pre-arg-spec := num-of-leading-mandatory-args - [num-of-optional-args] - * post-arg-spec := sym-for-variable-length-args - * [num-of-trailing-mandatory-args] - * pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args - * num-of-trailing-mandatory-args - * keyword-arg-spec := sym-for-keyword-arg - * block-arg-spec := sym-for-block-arg - * - * num-of-leading-mandatory-args := DIGIT ; The number of leading mandatory - * ; arguments - * num-of-optional-args := DIGIT ; The number of optional arguments - * sym-for-variable-length-args := "*" ; Indicates that variable length - * ; arguments are captured as a ruby - * ; array - * num-of-trailing-mandatory-args := DIGIT ; The number of trailing mandatory - * ; arguments - * sym-for-keyword-arg := ":" ; Indicates that keyword argument - * ; captured as a hash. - * ; If keyword arguments are not - * ; provided, returns nil. - * sym-for-block-arg := "&" ; Indicates that an iterator block - * ; should be captured if given - * ``` - * - * For example, "12" means that the method requires at least one argument, and - * at most receives three (1+2) arguments. So, the format string must be - * followed by three variable references, which are to be assigned to captured - * arguments. For omitted arguments, variables are set to ::RUBY_Qnil. `NULL` - * can be put in place of a variable reference, which means the corresponding - * captured argument(s) should be just dropped. - * - * The number of given arguments, excluding an option hash or iterator block, - * is returned. - * - * @param[in] argc Length of `argv`. - * @param[in] argv Pointer to the arguments to parse. - * @param[in] fmt Format, in the language described above. - * @param[out] ... Variables to fill in. - * @exception rb_eFatal Malformed `fmt`. - * @exception rb_eArgError Arity mismatch. - * @return Actually parsed number of given arguments. - * @post Each values passed to `argv` is filled into the variadic - * arguments, according to the format. - */ -int rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...); - -RBIMPL_ATTR_NONNULL((3, 4)) -/** - * Identical to rb_scan_args(), except it also accepts `kw_splat`. - * - * @param[in] kw_splat How to understand the keyword arguments. - * - RB_SCAN_ARGS_PASS_CALLED_KEYWORDS: Same behaviour as rb_scan_args(). - * - RB_SCAN_ARGS_KEYWORDS: The final argument is a kwarg. - * - RB_SCAN_ARGS_LAST_HASH_KEYWORDS: The final argument is a kwarg, iff it - * is a hash. - * @param[in] argc Length of `argv`. - * @param[in] argv Pointer to the arguments to parse. - * @param[in] fmt Format, in the language described above. - * @param[out] ... Variables to fill in. - * @exception rb_eFatal Malformed `fmt`. - * @exception rb_eArgError Arity mismatch. - * @return Actually parsed number of given arguments. - * @post Each values passed to `argv` is filled into the variadic - * arguments, according to the format. - */ -int rb_scan_args_kw(int kw_splat, int argc, const VALUE *argv, const char *fmt, ...); - -RBIMPL_ATTR_ERROR(("bad scan arg format")) -/** - * @private - * - * This is an implementation detail of rb_scan_args(). People don't use it - * directly. - */ -void rb_scan_args_bad_format(const char*); - -RBIMPL_ATTR_ERROR(("variable argument length doesn't match")) -/** - * @private - * - * This is an implementation detail of rb_scan_args(). People don't use it - * directly. - */ -void rb_scan_args_length_mismatch(const char*,int); - -RBIMPL_SYMBOL_EXPORT_END() - -/** @cond INTERNAL_MACRO */ - -/* If we could use constexpr the following macros could be inline functions - * ... but sadly we cannot. */ - -#define rb_scan_args_isdigit(c) (RBIMPL_CAST((unsigned char)((c)-'0'))<10) - -#define rb_scan_args_count_end(fmt, ofs, vari) \ - ((fmt)[ofs] ? -1 : (vari)) - -#define rb_scan_args_count_block(fmt, ofs, vari) \ - ((fmt)[ofs]!='&' ? \ - rb_scan_args_count_end(fmt, ofs, vari) : \ - rb_scan_args_count_end(fmt, (ofs)+1, (vari)+1)) - -#define rb_scan_args_count_hash(fmt, ofs, vari) \ - ((fmt)[ofs]!=':' ? \ - rb_scan_args_count_block(fmt, ofs, vari) : \ - rb_scan_args_count_block(fmt, (ofs)+1, (vari)+1)) - -#define rb_scan_args_count_trail(fmt, ofs, vari) \ - (!rb_scan_args_isdigit((fmt)[ofs]) ? \ - rb_scan_args_count_hash(fmt, ofs, vari) : \ - rb_scan_args_count_hash(fmt, (ofs)+1, (vari)+((fmt)[ofs]-'0'))) - -#define rb_scan_args_count_var(fmt, ofs, vari) \ - ((fmt)[ofs]!='*' ? \ - rb_scan_args_count_trail(fmt, ofs, vari) : \ - rb_scan_args_count_trail(fmt, (ofs)+1, (vari)+1)) - -#define rb_scan_args_count_opt(fmt, ofs, vari) \ - (!rb_scan_args_isdigit((fmt)[ofs]) ? \ - rb_scan_args_count_var(fmt, ofs, vari) : \ - rb_scan_args_count_var(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0')) - -#define rb_scan_args_count_lead(fmt, ofs, vari) \ - (!rb_scan_args_isdigit((fmt)[ofs]) ? \ - rb_scan_args_count_var(fmt, ofs, vari) : \ - rb_scan_args_count_opt(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0')) - -#define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0) - -#if RBIMPL_HAS_ATTRIBUTE(diagnose_if) -# /* Assertions done in the attribute. */ -# define rb_scan_args_verify(fmt, varc) RBIMPL_ASSERT_NOTHING -#else -# /* At one sight it _seems_ the expressions below could be written using -# * static assertions. The reality is no, they don't. Because fmt is a -# * string literal, any operations against fmt cannot produce the "integer -# * constant expression"s, as defined in ISO/IEC 9899:2018 section 6.6 -# * paragraph #6. Static assertions need such integer constant expressions as -# * defined in ISO/IEC 9899:2018 section 6.7.10 paragraph #3. -# * -# * GCC nonetheless constant-folds this into a no-op, though. */ -# define rb_scan_args_verify(fmt, varc) \ - (sizeof(char[1-2*(rb_scan_args_count(fmt)<0)])!=1 ? \ - rb_scan_args_bad_format(fmt) : \ - sizeof(char[1-2*(rb_scan_args_count(fmt)!=(varc))])!=1 ? \ - rb_scan_args_length_mismatch(fmt, varc) : \ - RBIMPL_ASSERT_NOTHING) -#endif - -static inline bool -rb_scan_args_keyword_p(int kw_flag, VALUE last) -{ - switch (kw_flag) { - case RB_SCAN_ARGS_PASS_CALLED_KEYWORDS: - return !! rb_keyword_given_p(); - case RB_SCAN_ARGS_KEYWORDS: - return true; - case RB_SCAN_ARGS_LAST_HASH_KEYWORDS: - return RB_TYPE_P(last, T_HASH); - default: - return false; - } -} - -RBIMPL_ATTR_FORCEINLINE() -static bool -rb_scan_args_lead_p(const char *fmt) -{ - return rb_scan_args_isdigit(fmt[0]); -} - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_n_lead(const char *fmt) -{ - return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0); -} - -RBIMPL_ATTR_FORCEINLINE() -static bool -rb_scan_args_opt_p(const char *fmt) -{ - return (rb_scan_args_lead_p(fmt) && rb_scan_args_isdigit(fmt[1])); -} - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_n_opt(const char *fmt) -{ - return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0); -} - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_var_idx(const char *fmt) -{ - return (!rb_scan_args_lead_p(fmt) ? 0 : !rb_scan_args_isdigit(fmt[1]) ? 1 : 2); -} - -RBIMPL_ATTR_FORCEINLINE() -static bool -rb_scan_args_f_var(const char *fmt) -{ - return (fmt[rb_scan_args_var_idx(fmt)]=='*'); -} - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_trail_idx(const char *fmt) -{ - const int idx = rb_scan_args_var_idx(fmt); - return idx+(fmt[idx]=='*'); -} - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_n_trail(const char *fmt) -{ - const int idx = rb_scan_args_trail_idx(fmt); - return (rb_scan_args_isdigit(fmt[idx]) ? fmt[idx]-'0' : 0); -} - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_hash_idx(const char *fmt) -{ - const int idx = rb_scan_args_trail_idx(fmt); - return idx+rb_scan_args_isdigit(fmt[idx]); -} - -RBIMPL_ATTR_FORCEINLINE() -static bool -rb_scan_args_f_hash(const char *fmt) -{ - return (fmt[rb_scan_args_hash_idx(fmt)]==':'); -} - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_block_idx(const char *fmt) -{ - const int idx = rb_scan_args_hash_idx(fmt); - return idx+(fmt[idx]==':'); -} - -RBIMPL_ATTR_FORCEINLINE() -static bool -rb_scan_args_f_block(const char *fmt) -{ - return (fmt[rb_scan_args_block_idx(fmt)]=='&'); -} - -# if 0 -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_end_idx(const char *fmt) -{ - const int idx = rb_scan_args_block_idx(fmt); - return idx+(fmt[idx]=='&'); -} -# endif - -/* NOTE: Use `char *fmt` instead of `const char *fmt` because of clang's bug*/ -/* https://bugs.llvm.org/show_bug.cgi?id=38095 */ -# define rb_scan_args0(argc, argv, fmt, varc, vars) \ - rb_scan_args_set(RB_SCAN_ARGS_PASS_CALLED_KEYWORDS, argc, argv, \ - rb_scan_args_n_lead(fmt), \ - rb_scan_args_n_opt(fmt), \ - rb_scan_args_n_trail(fmt), \ - rb_scan_args_f_var(fmt), \ - rb_scan_args_f_hash(fmt), \ - rb_scan_args_f_block(fmt), \ - (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc) -# define rb_scan_args_kw0(kw_flag, argc, argv, fmt, varc, vars) \ - rb_scan_args_set(kw_flag, argc, argv, \ - rb_scan_args_n_lead(fmt), \ - rb_scan_args_n_opt(fmt), \ - rb_scan_args_n_trail(fmt), \ - rb_scan_args_f_var(fmt), \ - rb_scan_args_f_hash(fmt), \ - rb_scan_args_f_block(fmt), \ - (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc) - -RBIMPL_ATTR_FORCEINLINE() -static int -rb_scan_args_set(int kw_flag, int argc, const VALUE *argv, - int n_lead, int n_opt, int n_trail, - bool f_var, bool f_hash, bool f_block, - VALUE *vars[], RB_UNUSED_VAR(const char *fmt), RB_UNUSED_VAR(int varc)) - RBIMPL_ATTR_DIAGNOSE_IF(rb_scan_args_count(fmt) < 0, "bad scan arg format", "error") - RBIMPL_ATTR_DIAGNOSE_IF(rb_scan_args_count(fmt) != varc, "variable argument length doesn't match", "error") -{ - int i, argi = 0, vari = 0; - VALUE *var, hash = Qnil; -#define rb_scan_args_next_param() vars[vari++] - const int n_mand = n_lead + n_trail; - - /* capture an option hash - phase 1: pop from the argv */ - if (f_hash && argc > 0) { - VALUE last = argv[argc - 1]; - if (rb_scan_args_keyword_p(kw_flag, last)) { - hash = rb_hash_dup(last); - argc--; - } - } - - if (argc < n_mand) { - goto argc_error; - } - - /* capture leading mandatory arguments */ - for (i = 0; i < n_lead; i++) { - var = rb_scan_args_next_param(); - if (var) *var = argv[argi]; - argi++; - } - - /* capture optional arguments */ - for (i = 0; i < n_opt; i++) { - var = rb_scan_args_next_param(); - if (argi < argc - n_trail) { - if (var) *var = argv[argi]; - argi++; - } - else { - if (var) *var = Qnil; - } - } - - /* capture variable length arguments */ - if (f_var) { - int n_var = argc - argi - n_trail; - - var = rb_scan_args_next_param(); - if (0 < n_var) { - if (var) *var = rb_ary_new_from_values(n_var, &argv[argi]); - argi += n_var; - } - else { - if (var) *var = rb_ary_new(); - } - } - - /* capture trailing mandatory arguments */ - for (i = 0; i < n_trail; i++) { - var = rb_scan_args_next_param(); - if (var) *var = argv[argi]; - argi++; - } - - /* capture an option hash - phase 2: assignment */ - if (f_hash) { - var = rb_scan_args_next_param(); - if (var) *var = hash; - } - - /* capture iterator block */ - if (f_block) { - var = rb_scan_args_next_param(); - if (rb_block_given_p()) { - *var = rb_block_proc(); - } - else { - *var = Qnil; - } - } - - if (argi == argc) { - return argc; - } - - argc_error: - rb_error_arity(argc, n_mand, f_var ? UNLIMITED_ARGUMENTS : n_mand + n_opt); - UNREACHABLE_RETURN(-1); -#undef rb_scan_args_next_param -} - -/** @endcond */ - -#if defined(__DOXYGEN__) -# /* don't bother */ - -#elif ! defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P) -# /* skip */ - -#elif ! defined(HAVE_VA_ARGS_MACRO) -# /* skip */ - -#elif ! defined(__OPTIMIZE__) -# /* skip */ - -#elif defined(HAVE___VA_OPT__) -# define rb_scan_args(argc, argvp, fmt, ...) \ - __builtin_choose_expr( \ - __builtin_constant_p(fmt), \ - rb_scan_args0( \ - argc, argvp, fmt, \ - (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), \ - ((VALUE*[]){__VA_ARGS__})), \ - (rb_scan_args)(argc, argvp, fmt __VA_OPT__(, __VA_ARGS__))) -# define rb_scan_args_kw(kw_flag, argc, argvp, fmt, ...) \ - __builtin_choose_expr( \ - __builtin_constant_p(fmt), \ - rb_scan_args_kw0( \ - kw_flag, argc, argvp, fmt, \ - (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), \ - ((VALUE*[]){__VA_ARGS__})), \ - (rb_scan_args_kw)(kw_flag, argc, argvp, fmt __VA_OPT__(, __VA_ARGS__))) - -#elif defined(__STRICT_ANSI__) -# /* skip */ - -#elif defined(__GNUC__) -# define rb_scan_args(argc, argvp, fmt, ...) \ - __builtin_choose_expr( \ - __builtin_constant_p(fmt), \ - rb_scan_args0( \ - argc, argvp, fmt, \ - (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), \ - ((VALUE*[]){__VA_ARGS__})), \ - (rb_scan_args)(argc, argvp, fmt, __VA_ARGS__)) -# define rb_scan_args_kw(kw_flag, argc, argvp, fmt, ...) \ - __builtin_choose_expr( \ - __builtin_constant_p(fmt), \ - rb_scan_args_kw0( \ - kw_flag, argc, argvp, fmt, \ - (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), \ - ((VALUE*[]){__VA_ARGS__})), \ - (rb_scan_args_kw)(kw_flag, argc, argvp, fmt, __VA_ARGS__ /**/)) -#endif - -#endif /* RBIMPL_SCAN_ARGS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/special_consts.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/special_consts.h deleted file mode 100644 index 38934e4..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/special_consts.h +++ /dev/null @@ -1,295 +0,0 @@ -#ifndef RBIMPL_SPECIAL_CONSTS_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_SPECIAL_CONSTS_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines enum ::ruby_special_consts. - * @see Sasada, K., "A Lightweight Representation of Floating-Point - * Numbers on Ruby Interpreter", in proceedings of 10th JSSST - * SIGPPL Workshop on Programming and Programming Languages - * (PPL2008), pp. 9-16, 2008. - */ -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/constexpr.h" -#include "ruby/internal/attr/enum_extensibility.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/value.h" - -/** - * @private - * @warning Do not touch this macro. - * @warning It is an implementation detail. - * @warning The value of this macro must match for ruby itself and all - * extension libraries, otherwise serious memory corruption shall - * occur. - */ -#if defined(USE_FLONUM) -# /* Take that. */ -#elif SIZEOF_VALUE >= SIZEOF_DOUBLE -# define USE_FLONUM 1 -#else -# define USE_FLONUM 0 -#endif - -/** This is an old name of #RB_TEST. Not sure which name is preferred. */ -#define RTEST RB_TEST - -#define FIXNUM_P RB_FIXNUM_P /**< @old{RB_FIXNUM_P} */ -#define IMMEDIATE_P RB_IMMEDIATE_P /**< @old{RB_IMMEDIATE_P} */ -#define NIL_P RB_NIL_P /**< @old{RB_NIL_P} */ -#define SPECIAL_CONST_P RB_SPECIAL_CONST_P /**< @old{RB_SPECIAL_CONST_P} */ -#define STATIC_SYM_P RB_STATIC_SYM_P /**< @old{RB_STATIC_SYM_P} */ - -#define Qfalse RUBY_Qfalse /**< @old{RUBY_Qfalse} */ -#define Qnil RUBY_Qnil /**< @old{RUBY_Qnil} */ -#define Qtrue RUBY_Qtrue /**< @old{RUBY_Qtrue} */ -#define Qundef RUBY_Qundef /**< @old{RUBY_Qundef} */ - -#define FIXNUM_FLAG RUBY_FIXNUM_FLAG /**< @old{RUBY_FIXNUM_FLAG} */ -#define FLONUM_FLAG RUBY_FLONUM_FLAG /**< @old{RUBY_FLONUM_FLAG} */ -#define FLONUM_MASK RUBY_FLONUM_MASK /**< @old{RUBY_FLONUM_MASK} */ -#define FLONUM_P RB_FLONUM_P /**< @old{RB_FLONUM_P} */ -#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK /**< @old{RUBY_IMMEDIATE_MASK} */ -#define SYMBOL_FLAG RUBY_SYMBOL_FLAG /**< @old{RUBY_SYMBOL_FLAG} */ - -/** @cond INTERNAL_MACRO */ -#define RB_FIXNUM_P RB_FIXNUM_P -#define RB_FLONUM_P RB_FLONUM_P -#define RB_IMMEDIATE_P RB_IMMEDIATE_P -#define RB_NIL_P RB_NIL_P -#define RB_SPECIAL_CONST_P RB_SPECIAL_CONST_P -#define RB_STATIC_SYM_P RB_STATIC_SYM_P -#define RB_TEST RB_TEST -/** @endcond */ - -/** special constants - i.e. non-zero and non-fixnum constants */ -enum -RBIMPL_ATTR_ENUM_EXTENSIBILITY(closed) -ruby_special_consts { -#if defined(__DOXYGEN__) - RUBY_Qfalse, /**< @see ::rb_cFalseClass */ - RUBY_Qtrue, /**< @see ::rb_cTrueClass */ - RUBY_Qnil, /**< @see ::rb_cNilClass */ - RUBY_Qundef, /**< Represents so-called undef. */ - RUBY_IMMEDIATE_MASK, /**< Bit mask detecting special consts. */ - RUBY_FIXNUM_FLAG, /**< Flag to denote a fixnum. */ - RUBY_FLONUM_MASK, /**< Bit mask detecting a flonum. */ - RUBY_FLONUM_FLAG, /**< Flag to denote a flonum. */ - RUBY_SYMBOL_FLAG, /**< Flag to denote a static symbol. */ -#elif USE_FLONUM - RUBY_Qfalse = 0x00, /* ...0000 0000 */ - RUBY_Qtrue = 0x14, /* ...0001 0100 */ - RUBY_Qnil = 0x08, /* ...0000 1000 */ - RUBY_Qundef = 0x34, /* ...0011 0100 */ - RUBY_IMMEDIATE_MASK = 0x07, /* ...0000 0111 */ - RUBY_FIXNUM_FLAG = 0x01, /* ...xxxx xxx1 */ - RUBY_FLONUM_MASK = 0x03, /* ...0000 0011 */ - RUBY_FLONUM_FLAG = 0x02, /* ...xxxx xx10 */ - RUBY_SYMBOL_FLAG = 0x0c, /* ...xxxx 1100 */ -#else - RUBY_Qfalse = 0x00, /* ...0000 0000 */ - RUBY_Qtrue = 0x02, /* ...0000 0010 */ - RUBY_Qnil = 0x04, /* ...0000 0100 */ - RUBY_Qundef = 0x06, /* ...0000 0110 */ - RUBY_IMMEDIATE_MASK = 0x03, /* ...0000 0011 */ - RUBY_FIXNUM_FLAG = 0x01, /* ...xxxx xxx1 */ - RUBY_FLONUM_MASK = 0x00, /* any values ANDed with FLONUM_MASK cannot be FLONUM_FLAG */ - RUBY_FLONUM_FLAG = 0x02, /* ...0000 0010 */ - RUBY_SYMBOL_FLAG = 0x0e, /* ...0000 1110 */ -#endif - - RUBY_SPECIAL_SHIFT = 8 /**< Least significant 8 bits are reserved. */ -}; - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Emulates Ruby's "if" statement. - * - * @param[in] obj An arbitrary ruby object. - * @retval false `obj` is either ::RUBY_Qfalse or ::RUBY_Qnil. - * @retval true Anything else. - * - * @internal - * - * It HAS to be `__attribute__((const))` in order for clang to properly deduce - * `__builtin_assume()`. - */ -static inline bool -RB_TEST(VALUE obj) -{ - /* - * Qfalse: ....0000 0000 - * Qnil: ....0000 1000 - * ~Qnil: ....1111 0111 - * v ....xxxx xxxx - * ---------------------------- - * RTEST(v) ....xxxx 0xxx - * - * RTEST(v) can be 0 if and only if (v == Qfalse || v == Qnil). - */ - return obj & ~RUBY_Qnil; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks if the given object is nil. - * - * @param[in] obj An arbitrary ruby object. - * @retval true `obj` is ::RUBY_Qnil. - * @retval false Anything else. - */ -static inline bool -RB_NIL_P(VALUE obj) -{ - return obj == RUBY_Qnil; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks if the given object is a so-called Fixnum. - * - * @param[in] obj An arbitrary ruby object. - * @retval true `obj` is a Fixnum. - * @retval false Anything else. - * @note Fixnum was a thing in the 20th century, but it is rather an - * implementation detail today. - */ -static inline bool -RB_FIXNUM_P(VALUE obj) -{ - return obj & RUBY_FIXNUM_FLAG; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX14) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks if the given object is a static symbol. - * - * @param[in] obj An arbitrary ruby object. - * @retval true `obj` is a static symbol - * @retval false Anything else. - * @see RB_DYNAMIC_SYM_P() - * @see RB_SYMBOL_P() - * @note These days there are static and dynamic symbols, just like we - * once had Fixnum/Bignum back in the old days. - */ -static inline bool -RB_STATIC_SYM_P(VALUE obj) -{ - RBIMPL_ATTR_CONSTEXPR(CXX14) - const VALUE mask = ~(RBIMPL_VALUE_FULL << RUBY_SPECIAL_SHIFT); - return (obj & mask) == RUBY_SYMBOL_FLAG; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks if the given object is a so-called Flonum. - * - * @param[in] obj An arbitrary ruby object. - * @retval true `obj` is a Flonum. - * @retval false Anything else. - * @see RB_FLOAT_TYPE_P() - * @note These days there are Flonums and non-Flonum floats, just like we - * once had Fixnum/Bignum back in the old days. - */ -static inline bool -RB_FLONUM_P(VALUE obj) -{ -#if USE_FLONUM - return (obj & RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG; -#else - return false; -#endif -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks if the given object is an immediate i.e. an object which has no - * corresponding storage inside of the object space. - * - * @param[in] obj An arbitrary ruby object. - * @retval true `obj` is a Flonum. - * @retval false Anything else. - * @see RB_FLOAT_TYPE_P() - * @note The concept of "immediate" is purely C specific. - */ -static inline bool -RB_IMMEDIATE_P(VALUE obj) -{ - return obj & RUBY_IMMEDIATE_MASK; -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -RBIMPL_ATTR_ARTIFICIAL() -/** - * Checks if the given object is of enum ::ruby_special_consts. - * - * @param[in] obj An arbitrary ruby object. - * @retval true `obj` is a special constant. - * @retval false Anything else. - */ -static inline bool -RB_SPECIAL_CONST_P(VALUE obj) -{ - return RB_IMMEDIATE_P(obj) || ! RB_TEST(obj); -} - -RBIMPL_ATTR_CONST() -RBIMPL_ATTR_CONSTEXPR(CXX11) -/** - * Identical to RB_SPECIAL_CONST_P, except it returns a ::VALUE. - * - * @param[in] obj An arbitrary ruby object. - * @retval RUBY_Qtrue `obj` is a special constant. - * @retval RUBY_Qfalse Anything else. - * - * @internal - * - * This function is to mimic old rb_special_const_p macro but have anyone - * actually used its return value? Wasn't it just something no one needed? - */ -static inline VALUE -rb_special_const_p(VALUE obj) -{ - return RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue; -} - -/** - * @cond INTERNAL_MACRO - * See [ruby-dev:27513] for the following macros. - */ -#define RUBY_Qfalse RBIMPL_CAST((VALUE)RUBY_Qfalse) -#define RUBY_Qtrue RBIMPL_CAST((VALUE)RUBY_Qtrue) -#define RUBY_Qnil RBIMPL_CAST((VALUE)RUBY_Qnil) -#define RUBY_Qundef RBIMPL_CAST((VALUE)RUBY_Qundef) -/** @endcond */ - -#endif /* RBIMPL_SPECIAL_CONSTS_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/static_assert.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/static_assert.h deleted file mode 100644 index 594c2b2..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/static_assert.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef RBIMPL_STATIC_ASSERT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_STATIC_ASSERT_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_STATIC_ASSERT. - */ -#include -#include "ruby/internal/has/extension.h" -#include "ruby/internal/compiler_since.h" - -/** @cond INTERNAL_MACRO */ -#if defined(__cplusplus) && defined(__cpp_static_assert) -# /* https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations */ -# define RBIMPL_STATIC_ASSERT0 static_assert - -#elif defined(__cplusplus) && RBIMPL_COMPILER_SINCE(MSVC, 16, 0, 0) -# define RBIMPL_STATIC_ASSERT0 static_assert - -#elif defined(__INTEL_CXX11_MODE__) -# define RBIMPL_STATIC_ASSERT0 static_assert - -#elif defined(__cplusplus) && __cplusplus >= 201103L -# define RBIMPL_STATIC_ASSERT0 static_assert - -#elif defined(__cplusplus) && RBIMPL_HAS_EXTENSION(cxx_static_assert) -# define RBIMPL_STATIC_ASSERT0 __extension__ static_assert - -#elif defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__ -# define RBIMPL_STATIC_ASSERT0 __extension__ static_assert - -#elif defined(__STDC_VERSION__) && RBIMPL_HAS_EXTENSION(c_static_assert) -# define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert - -#elif defined(__STDC_VERSION__) && RBIMPL_COMPILER_SINCE(GCC, 4, 6, 0) -# define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert - -#elif defined(static_assert) -# /* Take definition */ -# define RBIMPL_STATIC_ASSERT0 static_assert -#endif -/** @endcond */ - -/** - * @brief Wraps (or simulates) `static_assert` - * @param name Valid C/C++ identifier, describing the assertion. - * @param expr Expression to assert. - * @note `name` shall not be a string literal. - */ -#if defined(__DOXYGEN__) -# define RBIMPL_STATIC_ASSERT static_assert - -#elif defined(RBIMPL_STATIC_ASSERT0) -# define RBIMPL_STATIC_ASSERT(name, expr) \ - RBIMPL_STATIC_ASSERT0(expr, # name ": " # expr) - -#else -# define RBIMPL_STATIC_ASSERT(name, expr) \ - typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)] -#endif - -#endif /* RBIMPL_STATIC_ASSERT_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdalign.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdalign.h deleted file mode 100644 index ec68f6a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdalign.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef RBIMPL_STDALIGN_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_STDALIGN_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_ALIGNAS / #RBIMPL_ALIGNOF - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#include "ruby/internal/compiler_is.h" -#include "ruby/internal/has/attribute.h" -#include "ruby/internal/has/declspec_attribute.h" -#include "ruby/internal/has/feature.h" - -/** - * Wraps (or simulates) `alignas`. This is C++11's `alignas` and is _different_ - * from C11 `_Alignas`. For instance, - * - * ```CXX - * typedef struct alignas(128) foo { int foo } foo; - * ``` - * - * is a valid C++ while - * - * ```C - * typedef struct _Alignas(128) foo { int foo } foo; - * ``` - * - * is an invalid C because: - * - * - You cannot `struct _Alignas`. - * - A `typedef` cannot have alignments. - */ -#if defined(__cplusplus) && RBIMPL_HAS_FEATURE(cxx_alignas) -# define RBIMPL_ALIGNAS alignas - -#elif defined(__cplusplus) && (__cplusplus >= 201103L) -# define RBIMPL_ALIGNAS alignas - -#elif defined(__INTEL_CXX11_MODE__) -# define RBIMPL_ALIGNAS alignas - -#elif defined(__GXX_EXPERIMENTAL_CXX0X__) -# define RBIMPL_ALIGNAS alignas - -#elif RBIMPL_HAS_DECLSPEC_ATTRIBUTE(align) -# define RBIMPL_ALIGNAS(_) __declspec(align(_)) - -#elif RBIMPL_HAS_ATTRIBUTE(aligned) -# define RBIMPL_ALIGNAS(_) __attribute__((__aligned__(_))) - -#else -# define RBIMPL_ALIGNAS(_) /* void */ -#endif - -/** - * Wraps (or simulates) `alignof`. - * - * We want C11's `_Alignof`. However in spite of its clear language, compilers - * (including GCC and clang) tend to have buggy implementations. We have to - * avoid such things to resort to our own version. - * - * @see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023 - * @see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69560 - * @see https://bugs.llvm.org/show_bug.cgi?id=26547 - */ -#if defined(__DOXYGEN__) -# define RBIMPL_ALIGNOF alignof -#elif defined(__cplusplus) -# /* C++11 `alignof()` can be buggy. */ -# /* see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69560 */ -# /* But don't worry, we can use templates. */ -# define RBIMPL_ALIGNOF(T) (static_cast(ruby::rbimpl_alignof::value)) - -namespace ruby { -template -struct rbimpl_alignof { - typedef struct { - char _; - T t; - } type; - - enum { - value = offsetof(type, t) - }; -}; -} - -#elif RBIMPL_COMPILER_IS(MSVC) -# /* Windows have no alignment glitch.*/ -# define RBIMPL_ALIGNOF __alignof - -#elif defined(HAVE__ALIGNOF) -# /* Autoconf detected availability of a sane `_Alignof()`. */ -# define RBIMPL_ALIGNOF(T) RB_GNUC_EXTENSION(_Alignof(T)) - -#else -# /* :BEWARE: This is the last resort. If your compiler somehow supports -# * querying the alignment of a type, you definitely should use that instead. -# * There are 2 known pitfalls for this fallback implementation: -# * -# * First, it is either an undefined behaviour (C) or an explicit error (C++) -# * to define a struct inside of `offsetof`. C compilers tend to accept such -# * things, but AFAIK C++ has no room to allow. -# * -# * Second, there exist T such that `struct { char _; T t; }` is invalid. A -# * known example is when T is a struct with a flexible array member. Such -# * struct cannot be enclosed into another one. -# */ -# /* see: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2083.htm */ -# /* see: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm */ -# define RBIMPL_ALIGNOF(T) offsetof(struct { char _; T t; }, t) - -#endif - -#endif /* RBIMPL_STDALIGN_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdbool.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdbool.h deleted file mode 100644 index b15321c..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/stdbool.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef RBIMPL_STDBOOL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_STDBOOL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief C99 shim for - */ -#include "ruby/internal/config.h" - -#if defined(__bool_true_false_are_defined) -# /* Take that. */ - -#elif defined(__cplusplus) -# /* bool is a keyword in C++. */ -# if defined(HAVE_STDBOOL_H) && (__cplusplus >= 201103L) -# include -# endif -# -# ifndef __bool_true_false_are_defined -# define __bool_true_false_are_defined -# endif - -#elif defined(HAVE_STDBOOL_H) -# /* Take stdbool.h definition. */ -# include - -#else -typedef unsigned char _Bool; -# /* See also http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2229.htm */ -# define bool _Bool -# define true ((_Bool)+1) -# define false ((_Bool)+0) -# define __bool_true_false_are_defined -#endif - -#endif /* RBIMPL_STDBOOL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/symbol.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/symbol.h deleted file mode 100644 index 869a311..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/symbol.h +++ /dev/null @@ -1,332 +0,0 @@ -#ifndef RBIMPL_SYMBOL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_SYMBOL_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #rb_intern - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#ifdef HAVE_STRING_H -# include -#endif - -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/constant_p.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/has/builtin.h" -#include "ruby/internal/value.h" - -#define RB_ID2SYM rb_id2sym /**< @alias{rb_id2sym} */ -#define RB_SYM2ID rb_sym2id /**< @alias{rb_sym2id} */ -#define ID2SYM RB_ID2SYM /**< @old{RB_ID2SYM} */ -#define SYM2ID RB_SYM2ID /**< @old{RB_SYM2ID} */ -#define CONST_ID_CACHE RUBY_CONST_ID_CACHE /**< @old{RUBY_CONST_ID_CACHE} */ -#define CONST_ID RUBY_CONST_ID /**< @old{RUBY_CONST_ID} */ - -/** @cond INTERNAL_MACRO */ -#define rb_intern_const rb_intern_const -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Converts an instance of ::rb_cSymbol into an ::ID. - * - * @param[in] obj An instance of ::rb_cSymbol. - * @exception rb_eTypeError `obj` is not an instance of ::rb_cSymbol. - * @return An ::ID of the identical symbol. - */ -ID rb_sym2id(VALUE obj); - -/** - * Allocates an instance of ::rb_cSymbol that has the given id. - * - * @param[in] id An id. - * @retval RUBY_Qfalse No such id ever existed in the history. - * @retval Otherwise An allocated ::rb_cSymbol instance. - */ -VALUE rb_id2sym(ID id); - -RBIMPL_ATTR_NONNULL(()) -/** - * Finds or creates a symbol of the given name. - * - * @param[in] name The name of the id. - * @exception rb_eRuntimeError Too many symbols. - * @return A (possibly new) id whose value is the given name. - * @note These days Ruby internally has two kinds of symbols (static / - * dynamic). Symbols created using this function would become a - * static one; i.e. would never be garbage collected. It is up to - * you to avoid memory leaks. Think twice before using it. - */ -ID rb_intern(const char *name); - -/** - * Identical to rb_intern(), except it additionally takes the length of the - * string. This way you can have a symbol that contains NUL characters. - * - * @param[in] name The name of the id. - * @param[in] len Length of `name`. - * @exception rb_eRuntimeError Too many symbols. - * @return A (possibly new) id whose value is the given name. - * @note These days Ruby internally has two kinds of symbols - * (static/dynamic). Symbols created using this function would - * become static ones; i.e. would never be garbage collected. It - * is up to you to avoid memory leaks. Think twice before using - * it. - */ -ID rb_intern2(const char *name, long len); - -/** - * Identical to rb_intern(), except it takes an instance of ::rb_cString. - * - * @param[in] str The name of the id. - * @pre `str` must either be an instance of ::rb_cSymbol, or an instance - * of ::rb_cString, or responds to `#to_str` method. - * @exception rb_eTypeError Can't convert `str` into ::rb_cString. - * @exception rb_eRuntimeError Too many symbols. - * @return A (possibly new) id whose value is the given str. - * @note These days Ruby internally has two kinds of symbols - * (static/dynamic). Symbols created using this function would - * become static ones; i.e. would never be garbage collected. It - * is up to you to avoid memory leaks. Think twice before using - * it. - */ -ID rb_intern_str(VALUE str); - -/** - * Retrieves the name mapped to the given id. - * - * @param[in] id An id to query. - * @retval NULL No such id ever existed in the history. - * @retval otherwise A name that the id represents. - * @note The return value is managed by the interpreter. Don't pass it - * to free(). - */ -const char *rb_id2name(ID id); - -RBIMPL_ATTR_NONNULL(()) -/** - * Detects if the given name is already interned or not. It first tries to - * convert the argument to an instance of ::rb_cString if it is neither an - * instance of ::rb_cString nor ::rb_cSymbol. The conversion result is written - * back to the variable. Then queries if that name was already interned - * before. If found it returns such id, otherwise zero. - * - * We eventually introduced this API to avoid inadvertent symbol pin-down. - * Before, there was no way to know if an ID was already interned or not - * without actually creating one (== leaking memory). By using this API you - * can avoid such situations: - * - * ```CXX - * bool does_interning_this_leak_memory(VALUE obj) - * { - * auto tmp = obj; - * if (auto id = rb_check_id(&tmp); id) { - * return false; - * } - * else { - * return true; // Let GC sweep tmp if necessary. - * } - * } - * ``` - * - * @param[in,out] namep A pointer to a name to query. - * @pre The object referred by `*namep` must either be an instance - * of ::rb_cSymbol, or an instance of ::rb_cString, or responds - * to `#to_str` method. - * @exception rb_eTypeError Can't convert `*namep` into ::rb_cString. - * @exception rb_eEncodingError Given string is non-ASCII. - * @retval 0 No such id ever existed in the history. - * @retval otherwise The id that represents the given name. - * @post The object that `*namep` points to is a converted result - * object, which is always an instance of either ::rb_cSymbol - * or ::rb_cString. - * @see https://bugs.ruby-lang.org/issues/5072 - * - * @internal - * - * @shyouhei doesn't know why this has to raise rb_eEncodingError. - */ -ID rb_check_id(volatile VALUE *namep); - -/** - * @copydoc rb_intern_str() - * - * @internal - * - * :FIXME: Can anyone tell us what is the difference between this one and - * rb_intern_str()? As far as @shyouhei reads the implementation it seems what - * rb_to_id() does is is just waste some CPU time, then call rb_intern_str(). - * He hopes he is wrong. - */ -ID rb_to_id(VALUE str); - -/** - * Identical to rb_id2name(), except it returns a Ruby's String instead of C's. - * - * @param[in] id An id to query. - * @retval RUBY_Qfalse No such id ever existed in the history. - * @retval otherwise An instance of ::rb_cString with the name of id. - * - * @internal - * - * In reality "rb_id2str() is identical to rb_id2name() except it returns Ruby - * string" is just describing things upside down; truth is `rb_id2name(foo)` is - * a shorthand of `RSTRING_PTR(rb_id2str(foo))`. - */ -VALUE rb_id2str(ID id); - -/** - * Identical to rb_id2str(), except it takes an instance of ::rb_cSymbol rather - * than an ::ID. - * - * @param[in] id An id to query. - * @retval RUBY_Qfalse No such id ever existed in the history. - * @retval otherwise An instance of ::rb_cString with the name of id. - */ -VALUE rb_sym2str(VALUE id); - -/** - * Identical to rb_intern_str(), except it generates a dynamic symbol if - * necessary. - * - * @param[in] name The name of the id. - * @pre `name` must either be an instance of ::rb_cSymbol, or an - * instance of ::rb_cString, or responds to `#to_str` method. - * @exception rb_eTypeError Can't convert `name` into ::rb_cString. - * @exception rb_eRuntimeError Too many symbols. - * @return A (possibly new) id whose value is the given name. - * @note These days Ruby internally has two kinds of symbols - * (static/dynamic). Symbols created using this function would - * become dynamic ones; i.e. would be garbage collected. It could - * be safer for you to use it than alternatives, when applicable. - */ -VALUE rb_to_symbol(VALUE name); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_check_id(), except it returns an instance of ::rb_cSymbol - * instead. - * - * @param[in,out] namep A pointer to a name to query. - * @pre The object referred by `*namep` must either be an instance - * of ::rb_cSymbol, or an instance of ::rb_cString, or responds - * to `#to_str` method. - * @exception rb_eTypeError Can't convert `*namep` into ::rb_cString. - * @exception rb_eEncodingError Given string is non-ASCII. - * @retval RUBY_Qnil No such id ever existed in the history. - * @retval otherwise The id that represents the given name. - * @post The object that `*namep` points to is a converted result - * object, which is always an instance of either ::rb_cSymbol - * or ::rb_cString. - * @see https://bugs.ruby-lang.org/issues/5072 - * - * @internal - * - * @shyouhei doesn't know why this has to raise rb_eEncodingError. - */ -VALUE rb_check_symbol(volatile VALUE *namep); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE() -RBIMPL_ATTR_NONNULL(()) -/** - * This is a "tiny optimisation" over rb_intern(). If you pass a string - * _literal_, and if your C compiler can special-case strlen of such literal to - * strength-reduce into an integer constant expression, then this inline - * function can precalc a part of conversion. - * - * @note This function also works happily for non-constant strings. Why - * bother then? Just apply liberally to everything. - * @note But #rb_intern() could be faster on compilers with statement - * expressions, because they can cache the created ::ID. - * @param[in] str The name of the id. - * @exception rb_eRuntimeError Too many symbols. - * @return A (possibly new) id whose value is the given str. - * @note These days Ruby internally has two kinds of symbols (static / - * dynamic). Symbols created using this function would become a - * static one; i.e. would never be garbage collected. It is up to - * you to avoid memory leaks. Think twice before using it. - */ -static inline ID -rb_intern_const(const char *str) -{ - size_t len = strlen(str); - return rb_intern2(str, RBIMPL_CAST((long)len)); -} - -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL(()) -/** - * @private - * - * This is an implementation detail of #rb_intern(). Just don't use it. - */ -static inline ID -rbimpl_intern_const(ID *ptr, const char *str) -{ - while (! *ptr) { - *ptr = rb_intern_const(str); - } - - return *ptr; -} - -/** - * Old implementation detail of rb_intern(). - * @deprecated Does anyone use it? Preserved for backward compat. - */ -#define RUBY_CONST_ID_CACHE(result, str) \ - { \ - static ID rb_intern_id_cache; \ - rbimpl_intern_const(&rb_intern_id_cache, (str)); \ - result rb_intern_id_cache; \ - } - -/** - * Old implementation detail of rb_intern(). - * @deprecated Does anyone use it? Preserved for backward compat. - */ -#define RUBY_CONST_ID(var, str) \ - do { \ - static ID rbimpl_id; \ - (var) = rbimpl_intern_const(&rbimpl_id, (str)); \ - } while (0) - -#if defined(HAVE_STMT_AND_DECL_IN_EXPR) -/* __builtin_constant_p and statement expression is available - * since gcc-2.7.2.3 at least. */ -#define rb_intern(str) \ - (RBIMPL_CONSTANT_P(str) ? \ - __extension__ ({ \ - static ID rbimpl_id; \ - rbimpl_intern_const(&rbimpl_id, (str)); \ - }) : \ - (rb_intern)(str)) -#endif - -#endif /* RBIMPL_SYMBOL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value.h deleted file mode 100644 index 805cd83..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value.h +++ /dev/null @@ -1,133 +0,0 @@ -#ifndef RBIMPL_VALUE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_VALUE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines ::VALUE and ::ID. - */ -#include "ruby/internal/static_assert.h" -#include "ruby/backward/2/long_long.h" -#include "ruby/backward/2/limits.h" - -#if defined(__DOXYGEN__) - -/** - * Type that represents a Ruby object. It is an unsigned integer of some kind, - * depending on platforms. - * - * ```CXX - * VALUE value = rb_eval_string("ARGF.readlines.map.with_index"); - * ``` - * - * @warning ::VALUE is not a pointer. - * @warning ::VALUE can be wider than `long`. - */ -typedef uintptr_t VALUE; - -/** - * Type that represents a Ruby identifier such as a variable name. - * - * ```CXX - * ID method = rb_intern("method"); - * VALUE result = rb_funcall(obj, method, 0); - * ``` - * - * @note ::rb_cSymbol is a Ruby-level data type for the same thing. - */ -typedef uintptr_t ID; - -/** - * A signed integer type that has the same width with ::VALUE. - * - * @internal - * - * @shyouhei wonders: is it guaranteed that `uintptr_t` and `intptr_t` are the - * same width? As far as I read ISO/IEC 9899:2018 section 7.20.1.4 paragraph 1 - * no such description is given... or defined elsewhere? - */ -typedef intptr_t SIGNED_VALUE; - -/** - * Identical to `sizeof(VALUE)`, except it is a macro that can also be used - * inside of preprocessor directives such as `#if`. Handy on occasions. - */ -#define SIZEOF_VALUE SIZEOF_UINTPTR_T - -/** - * @private - * - * A compile-time constant of type ::VALUE whose value is 0. - */ -#define RBIMPL_VALUE_NULL UINTPTR_C(0) - -/** - * @private - * - * A compile-time constant of type ::VALUE whose value is 1. - */ -#define RBIMPL_VALUE_ONE UINTPTR_C(1) - -/** - * @private - * - * Maximum possible value that a ::VALUE can take. - */ -#define RBIMPL_VALUE_FULL UINTPTR_MAX - -#elif defined HAVE_UINTPTR_T && 0 -typedef uintptr_t VALUE; -typedef uintptr_t ID; -# define SIGNED_VALUE intptr_t -# define SIZEOF_VALUE SIZEOF_UINTPTR_T -# undef PRI_VALUE_PREFIX -# define RBIMPL_VALUE_NULL UINTPTR_C(0) -# define RBIMPL_VALUE_ONE UINTPTR_C(1) -# define RBIMPL_VALUE_FULL UINTPTR_MAX - -#elif SIZEOF_LONG == SIZEOF_VOIDP -typedef unsigned long VALUE; -typedef unsigned long ID; -# define SIGNED_VALUE long -# define SIZEOF_VALUE SIZEOF_LONG -# define PRI_VALUE_PREFIX "l" -# define RBIMPL_VALUE_NULL 0UL -# define RBIMPL_VALUE_ONE 1UL -# define RBIMPL_VALUE_FULL ULONG_MAX - -#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP -typedef unsigned LONG_LONG VALUE; -typedef unsigned LONG_LONG ID; -# define SIGNED_VALUE LONG_LONG -# define LONG_LONG_VALUE 1 -# define SIZEOF_VALUE SIZEOF_LONG_LONG -# define PRI_VALUE_PREFIX PRI_LL_PREFIX -# define RBIMPL_VALUE_NULL 0ULL -# define RBIMPL_VALUE_ONE 1ULL -# define RBIMPL_VALUE_FULL ULLONG_MAX - -#else -# error ---->> ruby requires sizeof(void*) == sizeof(long) or sizeof(LONG_LONG) to be compiled. <<---- -#endif - -/** @cond INTERNAL_MACRO */ -RBIMPL_STATIC_ASSERT(sizeof_int, SIZEOF_INT == sizeof(int)); -RBIMPL_STATIC_ASSERT(sizeof_long, SIZEOF_LONG == sizeof(long)); -RBIMPL_STATIC_ASSERT(sizeof_long_long, SIZEOF_LONG_LONG == sizeof(LONG_LONG)); -RBIMPL_STATIC_ASSERT(sizeof_voidp, SIZEOF_VOIDP == sizeof(void *)); -/** @endcond */ -#endif /* RBIMPL_VALUE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value_type.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value_type.h deleted file mode 100644 index 977f60a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/value_type.h +++ /dev/null @@ -1,449 +0,0 @@ -#ifndef RBIMPL_VALUE_TYPE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_VALUE_TYPE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines enum ::ruby_value_type. - */ -#include "ruby/internal/assume.h" -#include "ruby/internal/attr/artificial.h" -#include "ruby/internal/attr/cold.h" -#include "ruby/internal/attr/enum_extensibility.h" -#include "ruby/internal/attr/forceinline.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/cast.h" -#include "ruby/internal/constant_p.h" -#include "ruby/internal/core/rbasic.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/error.h" -#include "ruby/internal/has/builtin.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/stdbool.h" -#include "ruby/internal/value.h" -#include "ruby/assert.h" - -#if defined(T_DATA) -/* - * :!BEWARE!: (Recent?) Solaris' have conflicting definition of - * T_DATA. Let us stop here. Please have a workaround like this: - * - * ```C - * #include // <- Include this one first. - * #undef T_DATA // <- ... and stick to RUBY_T_DATA forever. - * #include // <- OS-provided T_DATA introduced. - * ``` - * - * See also [ruby-core:4261] - */ -# error Bail out due to conflicting definition of T_DATA. -#endif - -#define T_ARRAY RUBY_T_ARRAY /**< @old{RUBY_T_ARRAY} */ -#define T_BIGNUM RUBY_T_BIGNUM /**< @old{RUBY_T_BIGNUM} */ -#define T_CLASS RUBY_T_CLASS /**< @old{RUBY_T_CLASS} */ -#define T_COMPLEX RUBY_T_COMPLEX /**< @old{RUBY_T_COMPLEX} */ -#define T_DATA RUBY_T_DATA /**< @old{RUBY_T_DATA} */ -#define T_FALSE RUBY_T_FALSE /**< @old{RUBY_T_FALSE} */ -#define T_FILE RUBY_T_FILE /**< @old{RUBY_T_FILE} */ -#define T_FIXNUM RUBY_T_FIXNUM /**< @old{RUBY_T_FIXNUM} */ -#define T_FLOAT RUBY_T_FLOAT /**< @old{RUBY_T_FLOAT} */ -#define T_HASH RUBY_T_HASH /**< @old{RUBY_T_HASH} */ -#define T_ICLASS RUBY_T_ICLASS /**< @old{RUBY_T_ICLASS} */ -#define T_IMEMO RUBY_T_IMEMO /**< @old{RUBY_T_IMEMO} */ -#define T_MASK RUBY_T_MASK /**< @old{RUBY_T_MASK} */ -#define T_MATCH RUBY_T_MATCH /**< @old{RUBY_T_MATCH} */ -#define T_MODULE RUBY_T_MODULE /**< @old{RUBY_T_MODULE} */ -#define T_MOVED RUBY_T_MOVED /**< @old{RUBY_T_MOVED} */ -#define T_NIL RUBY_T_NIL /**< @old{RUBY_T_NIL} */ -#define T_NODE RUBY_T_NODE /**< @old{RUBY_T_NODE} */ -#define T_NONE RUBY_T_NONE /**< @old{RUBY_T_NONE} */ -#define T_OBJECT RUBY_T_OBJECT /**< @old{RUBY_T_OBJECT} */ -#define T_RATIONAL RUBY_T_RATIONAL /**< @old{RUBY_T_RATIONAL} */ -#define T_REGEXP RUBY_T_REGEXP /**< @old{RUBY_T_REGEXP} */ -#define T_STRING RUBY_T_STRING /**< @old{RUBY_T_STRING} */ -#define T_STRUCT RUBY_T_STRUCT /**< @old{RUBY_T_STRUCT} */ -#define T_SYMBOL RUBY_T_SYMBOL /**< @old{RUBY_T_SYMBOL} */ -#define T_TRUE RUBY_T_TRUE /**< @old{RUBY_T_TRUE} */ -#define T_UNDEF RUBY_T_UNDEF /**< @old{RUBY_T_UNDEF} */ -#define T_ZOMBIE RUBY_T_ZOMBIE /**< @old{RUBY_T_ZOMBIE} */ - -#define BUILTIN_TYPE RB_BUILTIN_TYPE /**< @old{RB_BUILTIN_TYPE} */ -#define DYNAMIC_SYM_P RB_DYNAMIC_SYM_P /**< @old{RB_DYNAMIC_SYM_P} */ -#define RB_INTEGER_TYPE_P rb_integer_type_p /**< @old{rb_integer_type_p} */ -#define SYMBOL_P RB_SYMBOL_P /**< @old{RB_SYMBOL_P} */ -#define rb_type_p RB_TYPE_P /**< @alias{RB_TYPE_P} */ - -/** @cond INTERNAL_MACRO */ -#define RB_BUILTIN_TYPE RB_BUILTIN_TYPE -#define RB_DYNAMIC_SYM_P RB_DYNAMIC_SYM_P -#define RB_FLOAT_TYPE_P RB_FLOAT_TYPE_P -#define RB_SYMBOL_P RB_SYMBOL_P -#define RB_TYPE_P RB_TYPE_P -#define Check_Type Check_Type - -#if !RUBY_DEBUG -# define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t))) -#else -# define RBIMPL_ASSERT_TYPE Check_Type -#endif -/** @endcond */ - -/** @old{rb_type} */ -#define TYPE(_) RBIMPL_CAST((int)rb_type(_)) - -/** C-level type of an object. */ -enum -RBIMPL_ATTR_ENUM_EXTENSIBILITY(closed) -ruby_value_type { - RUBY_T_NONE = 0x00, /**< Non-object (swept etc.) */ - - RUBY_T_OBJECT = 0x01, /**< @see struct ::RObject */ - RUBY_T_CLASS = 0x02, /**< @see struct ::RClass and ::rb_cClass */ - RUBY_T_MODULE = 0x03, /**< @see struct ::RClass and ::rb_cModule */ - RUBY_T_FLOAT = 0x04, /**< @see struct ::RFloat */ - RUBY_T_STRING = 0x05, /**< @see struct ::RString */ - RUBY_T_REGEXP = 0x06, /**< @see struct ::RRegexp */ - RUBY_T_ARRAY = 0x07, /**< @see struct ::RArray */ - RUBY_T_HASH = 0x08, /**< @see struct ::RHash */ - RUBY_T_STRUCT = 0x09, /**< @see struct ::RStruct */ - RUBY_T_BIGNUM = 0x0a, /**< @see struct ::RBignum */ - RUBY_T_FILE = 0x0b, /**< @see struct ::RFile */ - RUBY_T_DATA = 0x0c, /**< @see struct ::RTypedData */ - RUBY_T_MATCH = 0x0d, /**< @see struct ::RMatch */ - RUBY_T_COMPLEX = 0x0e, /**< @see struct ::RComplex */ - RUBY_T_RATIONAL = 0x0f, /**< @see struct ::RRational */ - - RUBY_T_NIL = 0x11, /**< @see ::RUBY_Qnil */ - RUBY_T_TRUE = 0x12, /**< @see ::RUBY_Qfalse */ - RUBY_T_FALSE = 0x13, /**< @see ::RUBY_Qtrue */ - RUBY_T_SYMBOL = 0x14, /**< @see struct ::RSymbol */ - RUBY_T_FIXNUM = 0x15, /**< Integers formerly known as Fixnums. */ - RUBY_T_UNDEF = 0x16, /**< @see ::RUBY_Qundef */ - - RUBY_T_IMEMO = 0x1a, /**< @see struct ::RIMemo */ - RUBY_T_NODE = 0x1b, /**< @see struct ::RNode */ - RUBY_T_ICLASS = 0x1c, /**< Hidden classes known as IClasses. */ - RUBY_T_ZOMBIE = 0x1d, /**< @see struct ::RZombie */ - RUBY_T_MOVED = 0x1e, /**< @see struct ::RMoved */ - - RUBY_T_MASK = 0x1f /**< Bitmask of ::ruby_value_type. */ -}; - -RBIMPL_SYMBOL_EXPORT_BEGIN() -RBIMPL_ATTR_COLD() -/** - * @private - * - * This was the old implementation of Check_Type(), but they diverged. This - * one remains for theoretical backwards compatibility. People normally need - * not use it. - * - * @param[in] obj An object. - * @param[in] t A type. - * @exception rb_eTypeError `obj` is not of type `t`. - * @exception rb_eFatal `obj` is corrupt. - * @post Upon successful return `obj` is guaranteed to have type `t`. - * - * @internal - * - * The second argument shall have been enum ::ruby_value_type. But at the time - * matz designed this function he still used K&R C. There was no such thing - * like a function prototype. We can no longer change this API. - */ -void rb_check_type(VALUE obj, int t); -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries the type of the object. - * - * @param[in] obj Object in question. - * @pre `obj` must not be a special constant. - * @return The type of `obj`. - */ -static inline enum ruby_value_type -RB_BUILTIN_TYPE(VALUE obj) -{ - RBIMPL_ASSERT_OR_ASSUME(! RB_SPECIAL_CONST_P(obj)); - -#if 0 && defined __GNUC__ && !defined __clang__ - /* Don't move the access to `flags` before the preceding - * RB_SPECIAL_CONST_P check. */ - __asm volatile("": : :"memory"); -#endif - VALUE ret = RBASIC(obj)->flags & RUBY_T_MASK; - return RBIMPL_CAST((enum ruby_value_type)ret); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/** - * Queries if the object is an instance of ::rb_cInteger. - * - * @param[in] obj Object in question. - * @retval true It is. - * @retval false It isn't. - */ -static inline bool -rb_integer_type_p(VALUE obj) -{ - if (RB_FIXNUM_P(obj)) { - return true; - } - else if (RB_SPECIAL_CONST_P(obj)) { - return false; - } - else { - return RB_BUILTIN_TYPE(obj) == RUBY_T_BIGNUM; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/** - * Identical to RB_BUILTIN_TYPE(), except it can also accept special constants. - * - * @param[in] obj Object in question. - * @return The type of `obj`. - */ -static inline enum ruby_value_type -rb_type(VALUE obj) -{ - if (! RB_SPECIAL_CONST_P(obj)) { - return RB_BUILTIN_TYPE(obj); - } - else if (obj == RUBY_Qfalse) { - return RUBY_T_FALSE; - } - else if (obj == RUBY_Qnil) { - return RUBY_T_NIL; - } - else if (obj == RUBY_Qtrue) { - return RUBY_T_TRUE; - } - else if (obj == RUBY_Qundef) { - return RUBY_T_UNDEF; - } - else if (RB_FIXNUM_P(obj)) { - return RUBY_T_FIXNUM; - } - else if (RB_STATIC_SYM_P(obj)) { - return RUBY_T_SYMBOL; - } - else { - RBIMPL_ASSUME(RB_FLONUM_P(obj)); - return RUBY_T_FLOAT; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries if the object is an instance of ::rb_cFloat. - * - * @param[in] obj Object in question. - * @retval true It is. - * @retval false It isn't. - */ -static inline bool -RB_FLOAT_TYPE_P(VALUE obj) -{ - if (RB_FLONUM_P(obj)) { - return true; - } - else if (RB_SPECIAL_CONST_P(obj)) { - return false; - } - else { - return RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries if the object is a dynamic symbol. - * - * @param[in] obj Object in question. - * @retval true It is. - * @retval false It isn't. - */ -static inline bool -RB_DYNAMIC_SYM_P(VALUE obj) -{ - if (RB_SPECIAL_CONST_P(obj)) { - return false; - } - else { - return RB_BUILTIN_TYPE(obj) == RUBY_T_SYMBOL; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries if the object is an instance of ::rb_cSymbol. - * - * @param[in] obj Object in question. - * @retval true It is. - * @retval false It isn't. - */ -static inline bool -RB_SYMBOL_P(VALUE obj) -{ - return RB_STATIC_SYM_P(obj) || RB_DYNAMIC_SYM_P(obj); -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -RBIMPL_ATTR_FORCEINLINE() -/** - * @private - * - * This is an implementation detail of RB_TYPE_P(). Just don't use it. - * - * @param[in] obj An object. - * @param[in] t A type. - * @retval true `obj` is of type `t`. - * @retval false Otherwise. - */ -static bool -rbimpl_RB_TYPE_P_fastpath(VALUE obj, enum ruby_value_type t) -{ - if (t == RUBY_T_TRUE) { - return obj == RUBY_Qtrue; - } - else if (t == RUBY_T_FALSE) { - return obj == RUBY_Qfalse; - } - else if (t == RUBY_T_NIL) { - return obj == RUBY_Qnil; - } - else if (t == RUBY_T_UNDEF) { - return obj == RUBY_Qundef; - } - else if (t == RUBY_T_FIXNUM) { - return RB_FIXNUM_P(obj); - } - else if (t == RUBY_T_SYMBOL) { - return RB_SYMBOL_P(obj); - } - else if (t == RUBY_T_FLOAT) { - return RB_FLOAT_TYPE_P(obj); - } - else if (RB_SPECIAL_CONST_P(obj)) { - return false; - } - else if (t == RB_BUILTIN_TYPE(obj)) { - return true; - } - else { - return false; - } -} - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -RBIMPL_ATTR_ARTIFICIAL() -/** - * Queries if the given object is of given type. - * - * @param[in] obj An object. - * @param[in] t A type. - * @retval true `obj` is of type `t`. - * @retval false Otherwise. - * - * @internal - * - * This function is a super-duper hot path. Optimised targeting modern C - * compilers and x86_64 architecture. - */ -static inline bool -RB_TYPE_P(VALUE obj, enum ruby_value_type t) -{ - if (RBIMPL_CONSTANT_P(t)) { - return rbimpl_RB_TYPE_P_fastpath(obj, t); - } - else { - return t == rb_type(obj); - } -} - -/** @cond INTERNAL_MACRO */ -/* Clang, unlike GCC, cannot propagate __builtin_constant_p beyond function - * boundary. */ -#if defined(__clang__) -# undef RB_TYPE_P -# define RB_TYPE_P(obj, t) \ - (RBIMPL_CONSTANT_P(t) ? \ - rbimpl_RB_TYPE_P_fastpath((obj), (t)) : \ - (RB_TYPE_P)((obj), (t))) -#endif - -/* clang 3.x (4.2 compatible) can't eliminate CSE of RB_BUILTIN_TYPE - * in inline function and caller function - * See also 8998c06461ea0bef11b3aeb30b6d2ab71c8762ba - */ -#if RBIMPL_COMPILER_BEFORE(Clang, 4, 0, 0) -# undef rb_integer_type_p -# define rb_integer_type_p(obj) \ - __extension__ ({ \ - const VALUE integer_type_obj = (obj); \ - (RB_FIXNUM_P(integer_type_obj) || \ - (!RB_SPECIAL_CONST_P(integer_type_obj) && \ - RB_BUILTIN_TYPE(integer_type_obj) == RUBY_T_BIGNUM)); \ - }) -#endif -/** @endcond */ - -RBIMPL_ATTR_PURE() -RBIMPL_ATTR_ARTIFICIAL() -/** - * @private - * Defined in ruby/internal/core/rtypeddata.h - */ -static inline bool rbimpl_rtypeddata_p(VALUE obj); - -RBIMPL_ATTR_ARTIFICIAL() -/** - * Identical to RB_TYPE_P(), except it raises exceptions on predication - * failure. - * - * @param[in] v An object. - * @param[in] t A type. - * @exception rb_eTypeError `obj` is not of type `t`. - * @exception rb_eFatal `obj` is corrupt. - * @post Upon successful return `obj` is guaranteed to have type `t`. - */ -static inline void -Check_Type(VALUE v, enum ruby_value_type t) -{ - if (RB_UNLIKELY(! RB_TYPE_P(v, t))) { - goto unexpected_type; - } - else if (t == RUBY_T_DATA && rbimpl_rtypeddata_p(v)) { - /* Typed data is not simple `T_DATA`, see `rb_check_type` */ - goto unexpected_type; - } - else { - return; - } - - unexpected_type: - rb_unexpected_type(v, t); -} - -#endif /* RBIMPL_VALUE_TYPE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/variable.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/variable.h deleted file mode 100644 index 1f84b92..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/variable.h +++ /dev/null @@ -1,337 +0,0 @@ -#ifndef RBIMPL_VARIABLE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_VARIABLE_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Declares rb_define_variable(). - */ -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/noreturn.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Type that represents a global variable getter function. - * - * @param[in] id The variable name. - * @param[in,out] data Where the value is stored. - * @return The value that shall be visible from Ruby. - */ -typedef VALUE rb_gvar_getter_t(ID id, VALUE *data); - -/** - * Type that represents a global variable setter function. - * - * @param[in] val The value to set. - * @param[in] id The variable name. - * @param[in,out] data Where the value is to be stored. - */ -typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data); - -/** - * Type that represents a global variable marker function. - * - * @param[in] var Where the value is to be stored. - */ -typedef void rb_gvar_marker_t(VALUE *var); - -/** - * @deprecated - * - * This function has no actual usage (than in ruby itself). Please ignore. It - * was a bad idea to expose this function to 3rd parties, but we can no longer - * delete it. - */ -rb_gvar_getter_t rb_gvar_undef_getter; - -/** - * @deprecated - * - * This function has no actual usage (than in ruby itself). Please ignore. It - * was a bad idea to expose this function to 3rd parties, but we can no longer - * delete it. - */ -rb_gvar_setter_t rb_gvar_undef_setter; - -/** - * @deprecated - * - * This function has no actual usage (than in ruby itself). Please ignore. It - * was a bad idea to expose this function to 3rd parties, but we can no longer - * delete it. - */ -rb_gvar_marker_t rb_gvar_undef_marker; - -/** - * This is the getter function that backs global variables defined from a ruby - * script. Extension libraries can use this if its global variable needs no - * custom logic. - */ -rb_gvar_getter_t rb_gvar_val_getter; - -/** - * This is the setter function that backs global variables defined from a ruby - * script. Extension libraries can use this if its global variable needs no - * custom logic. - */ -rb_gvar_setter_t rb_gvar_val_setter; - -/** - * This is the setter function that backs global variables defined from a ruby - * script. Extension libraries can use this if its global variable needs no - * custom logic. - */ -rb_gvar_marker_t rb_gvar_val_marker; - -/** - * @deprecated - * - * This function has no actual usage (than in ruby itself). Please ignore. It - * was a bad idea to expose this function to 3rd parties, but we can no longer - * delete it. - */ -rb_gvar_getter_t rb_gvar_var_getter; - -/** - * @deprecated - * - * This function has no actual usage (than in ruby itself). Please ignore. It - * was a bad idea to expose this function to 3rd parties, but we can no longer - * delete it. - */ -rb_gvar_setter_t rb_gvar_var_setter; - -/** - * @deprecated - * - * This function has no actual usage (than in ruby itself). Please ignore. It - * was a bad idea to expose this function to 3rd parties, but we can no longer - * delete it. - */ -rb_gvar_marker_t rb_gvar_var_marker; - -RBIMPL_ATTR_NORETURN() -/** - * This function just raises ::rb_eNameError. Handy when you want to prohibit - * a global variable from being squashed by someone. - */ -rb_gvar_setter_t rb_gvar_readonly_setter; - -RBIMPL_ATTR_NONNULL(()) -/** - * "Shares" a global variable between Ruby and C. Normally a Ruby-level global - * variable is stored somewhere deep inside of the interpreter's execution - * context, but this way you can explicitly specify its storage. - * - * ```CXX - * static VALUE foo; - * - * extern "C" void - * init_Foo(void) - * { - * foo = rb_eval_string("..."); - * rb_define_global_variable("$foo", &foo); - * } - * ``` - * - * In the above example a Ruby global variable named `$foo` is stored in a C - * global variable named `foo`. - * - * @param[in] name Variable (Ruby side). - * @param[in] var Variable (C side). - * @post Ruby level global variable named `name` is defined if absent, - * and its storage is set to `var`. - */ -void rb_define_variable(const char *name, VALUE *var); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Defines a global variable that is purely function-backended. By using this - * API a programmer can define a global variable that dynamically changes from - * time to time. - * - * @param[in] name Variable name, in C's string. - * @param[in] getter A getter function. - * @param[in] setter A setter function. - * @post Ruby level global variable named `name` is defined if absent. - * - * @internal - * - * @shyouhei doesn't know if this is an Easter egg or an official feature, but - * you can pass 0 to the third argument (setter). That effectively nullifies - * any efforts to write to the defining global variable. - */ -void rb_define_virtual_variable(const char *name, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_define_virtual_variable(), but can also specify a storage. - * A programmer can use the storage for e.g. memoisation, storing intermediate - * computation result, etc. - * - * Also you can pass 0 to this function, unlike other variants: - * - * - When getter is 0 ::rb_gvar_var_getter is used instead. - * - When setter is 0 ::rb_gvar_var_setter is used instead. - * - When data is 0, you must specify a non-zero setter function. Otherwise - * ::rb_gvar_var_setter tries to write to `*NULL`, and just causes SEGV. - * - * @param[in] name Variable name, in C's string. - * @param[in] var Variable storage. - * @param[in] getter A getter function. - * @param[in] setter A setter function. - * @post Ruby level global variable named `name` is defined if absent. - */ -void rb_define_hooked_variable(const char *name, VALUE *var, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_define_variable(), except it does not allow Ruby programs to - * assign values to such global variable. C codes can still set values at - * will. This could be handy for you when implementing an `errno`-like - * experience, where a method updates a read-only global variable as a side- - * effect. - * - * @param[in] name Variable (Ruby side). - * @param[in] var Variable (C side). - * @post Ruby level global variable named `name` is defined if absent, - * and its storage is set to `var`. - */ -void rb_define_readonly_variable(const char *name, const VALUE *var); - -RBIMPL_ATTR_NONNULL(()) -/** - * Defines a Ruby level constant under a namespace. - * - * @param[out] klass Namespace for the constant to reside. - * @param[in] name Name of the constant. - * @param[in] val Value of the constant. - * @exception rb_eTypeError `klass` is not a kind of ::rb_cModule. - * @exception rb_eFrozenError `klass` is frozen. - * @post Ruby level constant `klass::name` is defined to be `val`. - * @note This API does not stop you from defining a constant that is - * unable to reach from ruby (like for instance passing - * non-capital letter to `name`). - * @note This API does not stop you from overwriting a constant that - * already exist. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -void rb_define_const(VALUE klass, const char *name, VALUE val); - -RBIMPL_ATTR_NONNULL(()) -/** - * Identical to rb_define_const(), except it defines that of "global", - * i.e. toplevel constant. - * - * @param[in] name Name of the constant. - * @param[in] val Value of the constant. - * @exception rb_eFrozenError ::rb_cObject is frozen. - * @post Ruby level constant \::name is defined to be `val`. - * @note This API does not stop you from defining a constant that is - * unable to reach from ruby (like for instance passing - * non-capital letter to `name`). - * @note This API does not stop you from overwriting a constant that - * already exist. - */ -void rb_define_global_const(const char *name, VALUE val); - -RBIMPL_ATTR_NONNULL(()) -/** - * Asserts that the given constant is deprecated. Attempt to refer such - * constant will produce a warning. - * - * @param[in] mod Namespace of the target constant. - * @param[in] name Name of the constant. - * @exception rb_eNameError No such constant. - * @exception rb_eFrozenError `mod` is frozen. - * @post `name` under `mod` is deprecated. - */ -void rb_deprecate_constant(VALUE mod, const char *name); - -RBIMPL_ATTR_NONNULL(()) -/** - * Assigns to a global variable. - * - * @param[in] name Target global variable. - * @param[in] val Value to assign. - * @return Passed value. - * @post Ruby level global variable named `name` is defined if absent, - * whose value is set to `val`. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with - * `set_trace_func`. - */ -VALUE rb_gv_set(const char *name, VALUE val); - -RBIMPL_ATTR_NONNULL(()) -/** - * Obtains a global variable. - * - * @param[in] name Global variable to query. - * @retval RUBY_Qnil The global variable does not exist. - * @retval otherwise The value assigned to the global variable. - * - * @internal - * - * Unlike rb_gv_set(), there is no way to trace this function. - */ -VALUE rb_gv_get(const char *name); - -RBIMPL_ATTR_NONNULL(()) -/** - * Obtains an instance variable. - * - * @param[in] obj Target object. - * @param[in] name Target instance variable to query. - * @exception rb_eEncodingError `name` is corrupt (contains Hanzi etc.). - * @retval RUBY_nil No such instance variable. - * @retval otherwise The value assigned to the instance variable. - */ -VALUE rb_iv_get(VALUE obj, const char *name); - -RBIMPL_ATTR_NONNULL(()) -/** - * Assigns to an instance variable. - * - * @param[out] obj Target object. - * @param[in] name Target instance variable. - * @param[in] val Value to assign. - * @exception rb_eFrozenError Can't modify `obj`. - * @exception rb_eArgError `obj` has too many instance variables. - * @return Passed value. - * @post An instance variable named `name` is defined if absent on - * `obj`, whose value is set to `val`. - * - * @internal - * - * This function does not stop you form creating an ASCII-incompatible instance - * variable, but there is no way to get one because rb_iv_get raises exceptions - * for such things. This design seems broken... But no idea why. - */ -VALUE rb_iv_set(VALUE obj, const char *name, VALUE val); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_VARIABLE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/warning_push.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/warning_push.h deleted file mode 100644 index f598163..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/warning_push.h +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef RBIMPL_WARNING_PUSH_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_WARNING_PUSH_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines #RBIMPL_WARNING_PUSH. - * - * ### Q&A ### - * - * Q: Why all the macros defined in this file are function-like macros? - * - * A: Sigh. This is because of Doxygen. Its `SKIP_FUNCTION_MACROS = YES` - * configuration setting requests us that if we want it to ignore these - * macros, then we have to do two things: (1) let them be defined as - * function-like macros, and (2) place them separately in their own line, - * like below: - * - * ```CXX - * // NG -- foo's type considered something like `unsigned int`. - * RBIMPL_WARNING_PUSH - * int foo(void); - * RBIMPL_WARNING_POP - * - * // OK -- the macros are ignored by Doxygen. - * RBIMPL_WARNING_PUSH() - * int foo(void); - * RBIMPL_WARNING_POP() - * ``` - */ -#include "ruby/internal/compiler_is.h" -#include "ruby/internal/compiler_since.h" - -#if defined(__DOXYGEN__) - -/** - * @private - * - * Pushes compiler warning state. - */ -#define RBIMPL_WARNING_PUSH() __pragma(warning(push)) - -/** - * @private - * - * Pops compiler warning state. - */ -#define RBIMPL_WARNING_POP() __pragma(warning(pop)) - -/** - * @private - * - * Turns a warning into a fatal error. - * - * @param flag A flag that represents the kind of warnings. - */ -#define RBIMPL_WARNING_ERROR(flag) __pragma(warning(error: flag)) - -/** - * @private - * - * Suppresses a warning. - * - * @param flag A flag that represents the kind of warnings. - */ -#define RBIMPL_WARNING_IGNORED(flag) __pragma(warning(disable: flag)) - -#elif RBIMPL_COMPILER_SINCE(MSVC, 12, 0, 0) -# /* Not sure exactly when but it seems VC++ 6.0 is a version with it.*/ -# define RBIMPL_WARNING_PUSH() __pragma(warning(push)) -# define RBIMPL_WARNING_POP() __pragma(warning(pop)) -# define RBIMPL_WARNING_ERROR(flag) __pragma(warning(error: flag)) -# define RBIMPL_WARNING_IGNORED(flag) __pragma(warning(disable: flag)) - -#elif RBIMPL_COMPILER_SINCE(Intel, 13, 0, 0) -# define RBIMPL_WARNING_PUSH() __pragma(warning(push)) -# define RBIMPL_WARNING_POP() __pragma(warning(pop)) -# define RBIMPL_WARNING_ERROR(flag) __pragma(warning(error: flag)) -# define RBIMPL_WARNING_IGNORED(flag) __pragma(warning(disable: flag)) - -#elif RBIMPL_COMPILER_IS(Clang) || RBIMPL_COMPILER_IS(Apple) -# /* Not sure exactly when but it seems LLVM 2.6.0 is a version with it. */ -# define RBIMPL_WARNING_PRAGMA0(x) _Pragma(# x) -# define RBIMPL_WARNING_PRAGMA1(x) RBIMPL_WARNING_PRAGMA0(clang diagnostic x) -# define RBIMPL_WARNING_PRAGMA2(x, y) RBIMPL_WARNING_PRAGMA1(x # y) -# define RBIMPL_WARNING_PUSH() RBIMPL_WARNING_PRAGMA1(push) -# define RBIMPL_WARNING_POP() RBIMPL_WARNING_PRAGMA1(pop) -# define RBIMPL_WARNING_ERROR(flag) RBIMPL_WARNING_PRAGMA2(error, flag) -# define RBIMPL_WARNING_IGNORED(flag) RBIMPL_WARNING_PRAGMA2(ignored, flag) - -#elif RBIMPL_COMPILER_SINCE(GCC, 4, 6, 0) -# /* https://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Diagnostic-Pragmas.html */ -# define RBIMPL_WARNING_PRAGMA0(x) _Pragma(# x) -# define RBIMPL_WARNING_PRAGMA1(x) RBIMPL_WARNING_PRAGMA0(GCC diagnostic x) -# define RBIMPL_WARNING_PRAGMA2(x, y) RBIMPL_WARNING_PRAGMA1(x # y) -# define RBIMPL_WARNING_PUSH() RBIMPL_WARNING_PRAGMA1(push) -# define RBIMPL_WARNING_POP() RBIMPL_WARNING_PRAGMA1(pop) -# define RBIMPL_WARNING_ERROR(flag) RBIMPL_WARNING_PRAGMA2(error, flag) -# define RBIMPL_WARNING_IGNORED(flag) RBIMPL_WARNING_PRAGMA2(ignored, flag) - -#else -# /* :FIXME: improve here */ -# define RBIMPL_WARNING_PUSH() /* void */ -# define RBIMPL_WARNING_POP() /* void */ -# define RBIMPL_WARNING_ERROR(flag) /* void */ -# define RBIMPL_WARNING_IGNORED(flag) /* void */ -#endif /* _MSC_VER */ -/** @endcond */ - -#endif /* RBIMPL_WARNING_PUSH_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/xmalloc.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/xmalloc.h deleted file mode 100644 index 57552e4..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/internal/xmalloc.h +++ /dev/null @@ -1,392 +0,0 @@ -#ifndef RBIMPL_XMALLOC_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RBIMPL_XMALLOC_H -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Declares ::ruby_xmalloc(). - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#ifdef HAVE_STDLIB_H -# include -#endif - -#include "ruby/internal/attr/alloc_size.h" -#include "ruby/internal/attr/nodiscard.h" -#include "ruby/internal/attr/noexcept.h" -#include "ruby/internal/attr/restrict.h" -#include "ruby/internal/attr/returns_nonnull.h" -#include "ruby/internal/dllexport.h" - -/** - * @private - * @warning Do not touch this macro. - * @warning It is an implementation detail. - * @warning It was a failure at the first place to let you know about it. - * @warning The value of this macro must match for ruby itself and all - * extension libraries, otherwise serious memory corruption shall - * occur. - */ -#ifndef USE_GC_MALLOC_OBJ_INFO_DETAILS -# define USE_GC_MALLOC_OBJ_INFO_DETAILS 0 -#endif - -#define xmalloc ruby_xmalloc /**< @old{ruby_xmalloc} */ -#define xmalloc2 ruby_xmalloc2 /**< @old{ruby_xmalloc2} */ -#define xcalloc ruby_xcalloc /**< @old{ruby_xcalloc} */ -#define xrealloc ruby_xrealloc /**< @old{ruby_xrealloc} */ -#define xrealloc2 ruby_xrealloc2 /**< @old{ruby_xrealloc2} */ -#define xfree ruby_xfree /**< @old{ruby_xfree} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((1)) -/** - * Allocates a storage instance. It is largely the same as system malloc(), - * except: - * - * - It raises Ruby exceptions instead of returning NULL, and - * - In case of `ENOMEM` it tries to GC to make some room. - * - * @param[in] size Requested amount of memory. - * @exception rb_eNoMemError No space left for `size` bytes allocation. - * @return A valid pointer to an allocated storage instance; which has at - * least `size` bytes width, with appropriate alignment detected by - * the underlying malloc() routine. - * @note It doesn't return NULL. - * @note Unlike some malloc() implementations, it allocates something and - * returns a meaningful value even when `size` is equal to zero. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -void *ruby_xmalloc(size_t size) -RBIMPL_ATTR_NOEXCEPT(malloc(size)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((1,2)) -/** - * Identical to ruby_xmalloc(), except it allocates `nelems` * `elemsiz` bytes. - * This is needed because the multiplication could integer overflow. On such - * situations Ruby does not try to allocate at all but raises Ruby level - * exceptions instead. If there is no integer overflow the behaviour is - * exactly the same as `ruby_xmalloc(nelems*elemsiz)`. - * - * @param[in] nelems Number of elements. - * @param[in] elemsiz Size of an element. - * @exception rb_eNoMemError No space left for allocation. - * @exception rb_eArgError `nelems` * `elemsiz` would overflow. - * @return A valid pointer to an allocated storage instance; which has at - * least `nelems` * `elemsiz` bytes width, with appropriate - * alignment detected by the underlying malloc() routine. - * @note It doesn't return NULL. - * @note Unlike some malloc() implementations, it allocates something and - * returns a meaningful value even when `nelems` or `elemsiz` or - * both are zero. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -void *ruby_xmalloc2(size_t nelems, size_t elemsiz) -RBIMPL_ATTR_NOEXCEPT(malloc(nelems * elemsiz)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((1,2)) -/** - * Identical to ruby_xmalloc2(), except it returns a zero-filled storage - * instance. It can also be seen as a routine identical to ruby_xmalloc(), - * except it calls calloc() instead of malloc(). - * - * @param[in] nelems Number of elements. - * @param[in] elemsiz Size of an element. - * @exception rb_eNoMemError No space left for allocation. - * @exception rb_eArgError `nelems` * `elemsiz` would overflow. - * @return A valid pointer to an allocated storage instance; which has at - * least `nelems` * `elemsiz` bytes width, with appropriate - * alignment detected by the underlying calloc() routine. - * @post The returned storage instance is filled with zeros. - * @note It doesn't return NULL. - * @note Unlike some calloc() implementations, it allocates something and - * returns a meaningful value even when `nelems` or `elemsiz` or - * both are zero. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -void *ruby_xcalloc(size_t nelems, size_t elemsiz) -RBIMPL_ATTR_NOEXCEPT(calloc(nelems, elemsiz)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((2)) -/** - * Resize the storage instance. - * - * @param[in] ptr A valid pointer to a storage instance that was - * previously returned from either: - * - ruby_xmalloc(), - * - ruby_xmalloc2(), - * - ruby_xcalloc(), - * - ruby_xrealloc(), or - * - ruby_xrealloc2(). - * @param[in] newsiz Requested new amount of memory. - * @exception rb_eNoMemError No space left for `newsiz` bytes allocation. - * @return A valid pointer to a (possibly newly allocated) storage - * instance; which has at least `newsiz` bytes width, with - * appropriate alignment detected by the underlying realloc() - * routine. - * @pre The passed pointer must point to a valid live storage instance. - * It is a failure to pass an already freed pointer. - * @post In case the function returns the passed pointer as-is, the - * storage instance that the pointer holds is either grown or - * shrunken to have at least `newsiz` bytes. Otherwise a valid - * pointer to a newly allocated storage instance is returned. In - * this case `ptr` is invalidated as if it was passed to - * ruby_xfree(). - * @note It doesn't return NULL. - * @warning Unlike some realloc() implementations, passing zero to `newsiz` - * is not the same as calling ruby_xfree(), because this function - * never returns NULL. Something meaningful still returns then. - * @warning It is a failure not to check the return value. Do not assume - * anything on it. It could be either identical to, or distinct - * form the passed argument. - * @warning Do not assume anything on the alignment of the return value. - * There is no guarantee that it inherits the passed argument's - * one. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -void *ruby_xrealloc(void *ptr, size_t newsiz) -RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newsiz)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((2,3)) -/** - * Identical to ruby_xrealloc(), except it resizes the given storage instance - * to `newelems` * `newsiz` bytes. This is needed because the multiplication - * could integer overflow. On such situations Ruby does not try to touch the - * contents of argument pointer at all but raises Ruby level exceptions - * instead. If there is no integer overflow the behaviour is exactly the same - * as `ruby_xrealloc(ptr,nelems*elemsiz)`. - * - * This is roughly the same as reallocarray() function that OpenBSD - * etc. provides, but also interacts with our GC. - * - * @param[in] ptr A valid pointer to a storage instance that was - * previously returned from either: - * - ruby_xmalloc(), - * - ruby_xmalloc2(), - * - ruby_xcalloc(), - * - ruby_xrealloc(), or - * - ruby_xrealloc2(). - * @param[in] newelems Requested new number of elements. - * @param[in] newsiz Requested new size of each element. - * @exception rb_eNoMemError No space left for allocation. - * @exception rb_eArgError `newelems` * `newsiz` would overflow. - * @return A valid pointer to a (possibly newly allocated) storage - * instance; which has at least `newelems` * `newsiz` bytes width, - * with appropriate alignment detected by the underlying realloc() - * routine. - * @pre The passed pointer must point to a valid live storage instance. - * It is a failure to pass an already freed pointer. - * @post In case the function returns the passed pointer as-is, the - * storage instance that the pointer holds is either grown or - * shrunken to have at least `newelems` * `newsiz` bytes. - * Otherwise a valid pointer to a newly allocated storage instance - * is returned. In this case `ptr` is invalidated as if it was - * passed to ruby_xfree(). - * @note It doesn't return NULL. - * @warning Unlike some realloc() implementations, passing zero to either - * `newelems` or `elemsiz` are not the same as calling - * ruby_xfree(), because this function never returns NULL. - * Something meaningful still returns then. - * @warning It is a failure not to check the return value. Do not assume - * anything on it. It could be either identical to, or distinct - * form the passed argument. - * @warning Do not assume anything on the alignment of the return value. - * There is no guarantee that it inherits the passed argument's - * one. - * @warning The return value shall be invalidated exactly once by either - * ruby_xfree(), ruby_xrealloc(), or ruby_xrealloc2(). It is a - * failure to pass it to system free(), because the system and Ruby - * might or might not share the same malloc() implementation. - */ -void *ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz) -RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newelems * newsiz)) -; - -/** - * Deallocates a storage instance. - * - * @param[out] ptr Either - * - NULL, or - * - a valid pointer previously returned from one of: - * - ruby_xmalloc(), - * - ruby_xmalloc2(), - * - ruby_xcalloc(), - * - ruby_xrealloc(), or - * - ruby_xrealloc2(). - * @pre The passed pointer must point to a valid live storage instance. - * It is a failure to pass an already freed pointer. - * @post The storage instance pointed by the passed pointer gets - * invalidated; it is no longer addressable. - * @warning Every single storage instance that was previously allocated by - * either ruby_xmalloc(), ruby_xmalloc2(), ruby_xcalloc(), - * ruby_xrealloc(), or ruby_xrealloc2() shall be invalidated - * exactly once by either passing it to ruby_xfree(), or passing - * it to either ruby_xrealloc(), ruby_xrealloc2() then check the - * return value for invalidation. - * @warning Do not pass anything other than pointers described above. For - * instance pointers returned from malloc() or mmap() shall not be - * passed to this function, because the underlying memory - * management mechanism could differ. - * @warning Do not pass any invalid pointers to this function e.g. by - * calling it twice with a same argument. - */ -void ruby_xfree(void *ptr) -RBIMPL_ATTR_NOEXCEPT(free(ptr)) -; - -#if USE_GC_MALLOC_OBJ_INFO_DETAILS -# define ruby_xmalloc(s1) ruby_xmalloc_with_location(s1, __FILE__, __LINE__) -# define ruby_xmalloc2(s1, s2) ruby_xmalloc2_with_location(s1, s2, __FILE__, __LINE__) -# define ruby_xcalloc(s1, s2) ruby_xcalloc_with_location(s1, s2, __FILE__, __LINE__) -# define ruby_xrealloc(ptr, s1) ruby_xrealloc_with_location(ptr, s1, __FILE__, __LINE__) -# define ruby_xrealloc2(ptr, s1, s2) ruby_xrealloc2_with_location(ptr, s1, s2, __FILE__, __LINE__) - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((1)) -void *ruby_xmalloc_body(size_t size) -RBIMPL_ATTR_NOEXCEPT(malloc(size)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((1,2)) -void *ruby_xmalloc2_body(size_t nelems, size_t elemsiz) -RBIMPL_ATTR_NOEXCEPT(malloc(nelems * elemsiz)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((1,2)) -void *ruby_xcalloc_body(size_t nelems, size_t elemsiz) -RBIMPL_ATTR_NOEXCEPT(calloc(nelems, elemsiz)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((2)) -void *ruby_xrealloc_body(void *ptr, size_t newsiz) -RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newsiz)) -; - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_ALLOC_SIZE((2,3)) -void *ruby_xrealloc2_body(void *ptr, size_t newelems, size_t newsiz) -RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newelems * newsiz)) -; - -RUBY_EXTERN const char *ruby_malloc_info_file; -RUBY_EXTERN int ruby_malloc_info_line; - -static inline void * -ruby_xmalloc_with_location(size_t s, const char *file, int line) -{ - void *ptr; - ruby_malloc_info_file = file; - ruby_malloc_info_line = line; - ptr = ruby_xmalloc_body(s); - ruby_malloc_info_file = NULL; - return ptr; -} - -static inline void * -ruby_xmalloc2_with_location(size_t s1, size_t s2, const char *file, int line) -{ - void *ptr; - ruby_malloc_info_file = file; - ruby_malloc_info_line = line; - ptr = ruby_xmalloc2_body(s1, s2); - ruby_malloc_info_file = NULL; - return ptr; -} - -static inline void * -ruby_xcalloc_with_location(size_t s1, size_t s2, const char *file, int line) -{ - void *ptr; - ruby_malloc_info_file = file; - ruby_malloc_info_line = line; - ptr = ruby_xcalloc_body(s1, s2); - ruby_malloc_info_file = NULL; - return ptr; -} - -static inline void * -ruby_xrealloc_with_location(void *ptr, size_t s, const char *file, int line) -{ - void *rptr; - ruby_malloc_info_file = file; - ruby_malloc_info_line = line; - rptr = ruby_xrealloc_body(ptr, s); - ruby_malloc_info_file = NULL; - return rptr; -} - -static inline void * -ruby_xrealloc2_with_location(void *ptr, size_t s1, size_t s2, const char *file, int line) -{ - void *rptr; - ruby_malloc_info_file = file; - ruby_malloc_info_line = line; - rptr = ruby_xrealloc2_body(ptr, s1, s2); - ruby_malloc_info_file = NULL; - return rptr; -} -#endif - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RBIMPL_XMALLOC_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io.h deleted file mode 100644 index 3e035c1..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io.h +++ /dev/null @@ -1,976 +0,0 @@ -#ifndef RUBY_IO_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_IO_H 1 -/** - * @file - * @author $Author$ - * @date Fri Nov 12 16:47:09 JST 1993 - * @copyright Copyright (C) 1993-2007 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "ruby/internal/config.h" - -#include -#include "ruby/encoding.h" - -#if defined(HAVE_STDIO_EXT_H) -#include -#endif - -#include - -/** @cond INTERNAL_MACRO */ -#if defined(HAVE_POLL) -# ifdef _AIX -# define reqevents events -# define rtnevents revents -# endif -# include -# ifdef _AIX -# undef reqevents -# undef rtnevents -# undef events -# undef revents -# endif -# define RB_WAITFD_IN POLLIN -# define RB_WAITFD_PRI POLLPRI -# define RB_WAITFD_OUT POLLOUT -#else -# define RB_WAITFD_IN 0x001 -# define RB_WAITFD_PRI 0x002 -# define RB_WAITFD_OUT 0x004 -#endif -/** @endcond */ - -#include "ruby/internal/attr/const.h" -#include "ruby/internal/attr/pure.h" -#include "ruby/internal/attr/noreturn.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/value.h" -#include "ruby/backward/2/attributes.h" /* PACKED_STRUCT_UNALIGNED */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -struct stat; -struct timeval; - -/** - * Type of events that an IO can wait. - * - * @internal - * - * This is visible from extension libraries because `io/wait` wants it. - */ -typedef enum { - RUBY_IO_READABLE = RB_WAITFD_IN, /**< `IO::READABLE` */ - RUBY_IO_WRITABLE = RB_WAITFD_OUT, /**< `IO::WRITABLE` */ - RUBY_IO_PRIORITY = RB_WAITFD_PRI, /**< `IO::PRIORITY` */ -} rb_io_event_t; - -/** - * IO buffers. This is an implementation detail of ::rb_io_t::wbuf and - * ::rb_io_t::rbuf. People don't manipulate it directly. - */ -PACKED_STRUCT_UNALIGNED(struct rb_io_buffer_t { - - /** Pointer to the underlying memory region, of at least `capa` bytes. */ - char *ptr; /* off + len <= capa */ - - /** Offset inside of `ptr`. */ - int off; - - /** Length of the buffer. */ - int len; - - /** Designed capacity of the buffer. */ - int capa; -}); - -/** @alias{rb_io_buffer_t} */ -typedef struct rb_io_buffer_t rb_io_buffer_t; - -/** Ruby's IO, metadata and buffers. */ -typedef struct rb_io_t { - - /** The IO's Ruby level counterpart. */ - VALUE self; - - /** stdio ptr for read/write, if available. */ - FILE *stdio_file; - - /** file descriptor. */ - int fd; - - /** mode flags: FMODE_XXXs */ - int mode; - - /** child's pid (for pipes) */ - rb_pid_t pid; - - /** number of lines read */ - int lineno; - - /** pathname for file */ - VALUE pathv; - - /** finalize proc */ - void (*finalize)(struct rb_io_t*,int); - - /** Write buffer. */ - rb_io_buffer_t wbuf; - - /** - * (Byte) read buffer. Note also that there is a field called - * ::rb_io_t::cbuf, which also concerns read IO. - */ - rb_io_buffer_t rbuf; - - /** - * Duplex IO object, if set. - * - * @see rb_io_set_write_io() - */ - VALUE tied_io_for_writing; - - /** Decomposed encoding flags (e.g. `"enc:enc2""`). */ - /* - * enc enc2 read action write action - * NULL NULL force_encoding(default_external) write the byte sequence of str - * e1 NULL force_encoding(e1) convert str.encoding to e1 - * e1 e2 convert from e2 to e1 convert str.encoding to e2 - */ - struct rb_io_enc_t { - /** Internal encoding. */ - rb_encoding *enc; - - /** External encoding. */ - rb_encoding *enc2; - - /** - * Flags. - * - * @see enum ::ruby_econv_flag_type - */ - int ecflags; - - /** - * Flags as Ruby hash. - * - * @internal - * - * This is set. But used from nowhere maybe? - */ - VALUE ecopts; - } encs; /**< Decomposed encoding flags. */ - - /** Encoding converter used when reading from this IO. */ - rb_econv_t *readconv; - - /** - * rb_io_ungetc() destination. This buffer is read before checking - * ::rb_io_t::rbuf - */ - rb_io_buffer_t cbuf; - - /** Encoding converter used when writing to this IO. */ - rb_econv_t *writeconv; - - /** - * This is, when set, an instance of ::rb_cString which holds the "common" - * encoding. Write conversion can convert strings twice... In case - * conversion from encoding X to encoding Y does not exist, Ruby finds an - * encoding Z that bridges the two, so that X to Z to Y conversion happens. - */ - VALUE writeconv_asciicompat; - - /** Whether ::rb_io_t::writeconv is already set up. */ - int writeconv_initialized; - - /** - * Value of ::rb_io_t::rb_io_enc_t::ecflags stored right before - * initialising ::rb_io_t::writeconv. - */ - int writeconv_pre_ecflags; - - /** - * Value of ::rb_io_t::rb_io_enc_t::ecopts stored right before initialising - * ::rb_io_t::writeconv. - */ - VALUE writeconv_pre_ecopts; - - /** - * This is a Ruby level mutex. It avoids multiple threads to write to an - * IO at once; helps for instance rb_io_puts() to ensure newlines right - * next to its arguments. - * - * This of course doesn't help inter-process IO interleaves, though. - */ - VALUE write_lock; -} rb_io_t; - -/** @alias{rb_io_enc_t} */ -typedef struct rb_io_enc_t rb_io_enc_t; - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_RB_IO_T 1 - -/** - * @name Possible flags for ::rb_io_t::mode - * - * @{ - */ - -/** The IO is opened for reading. */ -#define FMODE_READABLE 0x00000001 - -/** The IO is opened for writing. */ -#define FMODE_WRITABLE 0x00000002 - -/** The IO is opened for both read/write. */ -#define FMODE_READWRITE (FMODE_READABLE|FMODE_WRITABLE) - -/** - * The IO is in "binary mode". This is not what everything rb_io_binmode() - * concerns. This low-level flag is to stop CR <-> CRLF conversions that would - * happen in the underlying operating system. - * - * Setting this one and #FMODE_TEXTMODE at the same time is a contradiction. - * Setting this one and #ECONV_NEWLINE_DECORATOR_MASK at the same time is also - * a contradiction. - */ -#define FMODE_BINMODE 0x00000004 - -/** - * The IO is in "sync mode". All output is immediately flushed to the - * underlying operating system then. Can be set via rb_io_synchronized(), but - * there is no way except calling `IO#sync=` to reset. - */ -#define FMODE_SYNC 0x00000008 - -/** - * The IO is a TTY. What is a TTY and what isn't depends on the underlying - * operating system's `isatty(3)` output. You cannot change this. - */ -#define FMODE_TTY 0x00000010 - -/** - * Ruby eventually detects that the IO is bidirectional. For instance a TTY - * has such property. There are several other things known to be duplexed. - * Additionally you (extension library authors) can also implement your own - * bidirectional IO subclasses. One of such example is `Socket`. - */ -#define FMODE_DUPLEX 0x00000020 - -/** - * The IO is opened for appending. This mode always writes at the end of the - * IO. Ruby manages this flag for record but basically the logic behind this - * mode is at the underlying operating system. We almost do nothing. - */ -#define FMODE_APPEND 0x00000040 - -/** - * The IO is opened for creating. This makes sense only when the destination - * file does not exist at the time the IO object was created. This is the - * default mode for writing, but you can pass `"r+"` to `IO.open` etc., to - * reroute this creation. - */ -#define FMODE_CREATE 0x00000080 -/* #define FMODE_NOREVLOOKUP 0x00000100 */ - -/** - * This flag amends the effect of #FMODE_CREATE, so that if there already is a - * file at the given path the operation fails. Using this you can be sure that - * the file you get is a fresh new one. - */ -#define FMODE_EXCL 0x00000400 - -/** - * This flag amends the effect of #FMODE_CREATE, so that if there already is a - * file at the given path it gets truncated. - */ -#define FMODE_TRUNC 0x00000800 - -/** - * The IO is in "text mode". On systems where such mode make sense, this flag - * changes the way the IO handles the contents. On POSIX systems it is - * basically a no-op, but with this flag set you can optionally let Ruby - * manually convert newlines, unlike when in binary mode: - * - * ```ruby - * IO.open("/p/a/t/h", "wt", crlf_newline: true) # "wb" is NG. - * ``` - * - * Setting this one and #FMODE_BINMODE at the same time is a contradiction. - */ -#define FMODE_TEXTMODE 0x00001000 -/* #define FMODE_PREP 0x00010000 */ -/* #define FMODE_SIGNAL_ON_EPIPE 0x00020000 */ - -/** - * This flag amends the encoding of the IO so that the BOM of the contents of - * the IO takes effect. - */ -#define FMODE_SETENC_BY_BOM 0x00100000 -/* #define FMODE_UNIX 0x00200000 */ -/* #define FMODE_INET 0x00400000 */ -/* #define FMODE_INET6 0x00800000 */ - -/** @} */ - -/** - * Queries the underlying IO pointer. - * - * @param[in] obj An IO object. - * @param[out] fp A variable of type ::rb_io_t. - * @exception rb_eFrozenError `obj` is frozen. - * @exception rb_eIOError `obj` is closed. - * @post `fp` holds `obj`'s underlying IO. - */ -#define RB_IO_POINTER(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr) - -/** - * This is an old name of #RB_IO_POINTER. Not sure if we want to deprecate - * this macro. There still are tons of usages out there in the wild. - */ -#define GetOpenFile RB_IO_POINTER - -/** - * Fills an IO object. This makes the best sense when called from inside of an - * `#initialize` method of a 3rd party extension library that inherits - * ::rb_cIO. - * - * If the passed IO is already opened for something it first closes that and - * opens a new one instead. - * - * @param[out] obj An IO object to fill in. - * @param[out] fp A variable of type ::rb_io_t. - * @exception rb_eTypeError `obj` is not ::RUBY_T_FILE. - * @post `fp` holds `obj`'s underlying IO. - */ -#define RB_IO_OPEN(obj, fp) do {\ - (fp) = rb_io_make_open_file(obj);\ -} while (0) - -/** - * This is an old name of #RB_IO_OPEN. Not sure if we want to deprecate this - * macro. There still are usages out there in the wild. - */ -#define MakeOpenFile RB_IO_OPEN - -/** - * @private - * - * This is an implementation detail of #RB_IO_OPEN. People don't use it - * directly. - * - * @param[out] obj An IO object to fill in. - * @exception rb_eTypeError `obj` is not ::RUBY_T_FILE. - * @return `obj`'s backend IO. - * @post `obj` is initialised. - */ -rb_io_t *rb_io_make_open_file(VALUE obj); - -/** - * Finds or creates a stdio's file structure from a Ruby's one. This can be - * handy if you want to call an external API that accepts `FILE *`. - * - * @note Note however, that `FILE`s can have their own buffer. Mixing Ruby's - * and stdio's file are basically dangerous. Use with care. - * - * @param[in,out] fptr Target IO. - * @return A stdio's file, created if absent. - * @post `fptr` has its corresponding stdio's file. - * - * @internal - * - * We had rich support for `FILE` before! In the days of 1.8.x ::rb_io_t was - * like this: - * - * ```CXX - * typedef struct rb_io_t { - * FILE *f; // stdio ptr for read/write - * FILE *f2; // additional ptr for rw pipes - * int mode; // mode flags - * int pid; // child's pid (for pipes) - * int lineno; // number of lines read - * char *path; // pathname for file - * void (*finalize) _((struct rb_io_t*,int)); // finalize proc - * } rb_io_t; - *``` - * - * But we eventually abandoned this layout. It was too difficult. We could - * not have fine-grained control over the `f` field. - * - * - `FILE` tends to be an opaque struct. It does not interface well with - * `select(2)` etc. This makes IO multiplexing quite hard. Using stdio, - * there is arguably no portable way to know if `fwrite(3)` blocks. - * - * - Nonblocking mode, which is another core concept that enables IO - * multiplexing, does not interface with stdio routines at all. - * - * - Detection of duplexed IO is also hard for the same reason. - * - * - `feof(3)` is not portable. - * https://mail.python.org/pipermail/python-dev/2001-January/011390.html - * - * - Solaris was a thing back then. They could not have more than 256 `FILE` - * structures at a time. Their file descriptors ware stored in an - * `unsigned char`. - * - * - It is next to impossible to avoid SEGV, especially when a thread tries to - * `ungetc(3)`-ing from a `FILE` which is `fread(3)`-ed by another one. - * - * In short, it is a bad idea to let someone else manage IO buffers, especially - * someone you cannot control. This still applies to extension libraries - * methinks. Ruby doesn't prevent you from shooting yourself in the foot, but - * consider yourself warned here. - */ -FILE *rb_io_stdio_file(rb_io_t *fptr); - -/** - * Identical to rb_io_stdio_file(), except it takes file descriptors instead of - * Ruby's IO. It can also be seen as a compatibility layer to wrap - * `fdopen(3)`. Nowadays all supporting systems, including Windows, have - * `fdopen`. Why not use them. - * - * @param[in] fd A file descriptor. - * @param[in] modestr C string, something like `"r+"`. - * @exception rb_eSystemCallError `fdopen` failed for some reason. - * @return A stdio's file associated with `fd`. - * @note Interpretation of `modestr` depends on the underlying operating - * system. On glibc you might be able to pass e.g. `"rm"`, but - * that's an extension to POSIX. - */ -FILE *rb_fdopen(int fd, const char *modestr); - -/** - * Maps a file mode string (that rb_file_open() takes) into a mixture of - * `FMODE_` flags. This for instance returns - * `FMODE_WRITABLE | FMODE_TRUNC | FMODE_CREATE | FMODE_EXCL` for `"wx"`. - * - * @note You cannot pass this return value to OS provided `open(2)` etc. - * - * @param[in] modestr File mode, in C's string. - * @exception rb_eArgError `modestr` is broken. - * @return A set of flags. - * - * @internal - * - * rb_io_modestr_fmode() is not a pure function because it raises. - */ -int rb_io_modestr_fmode(const char *modestr); - -/** - * Identical to rb_io_modestr_fmode(), except it returns a mixture of `O_` - * flags. This for instance returns `O_WRONLY | O_TRUNC | O_CREAT | O_EXCL` for - * `"wx"`. - * - * @param[in] modestr File mode, in C's string. - * @exception rb_eArgError `modestr` is broken. - * @return A set of flags. - * - * @internal - * - * rb_io_modestr_oflags() is not a pure function because it raises. - */ -int rb_io_modestr_oflags(const char *modestr); - -RBIMPL_ATTR_CONST() -/** - * Converts an oflags (that rb_io_modestr_oflags() returns) to a fmode (that - * rb_io_mode_flags() returns). This is a purely functional operation. - * - * @param[in] oflags A set of `O_` flags. - * @return Corresponding set of `FMODE_` flags. - */ -int rb_io_oflags_fmode(int oflags); - -/** - * Asserts that an IO is opened for writing. - * - * @param[in] fptr An IO you want to write to. - * @exception rb_eIOError `fptr` is not for writing. - * @post Upon successful return `fptr` is ready for writing. - * - * @internal - * - * The parameter must have been `const rb_io_t *`. - */ -void rb_io_check_writable(rb_io_t *fptr); - -/** @alias{rb_io_check_byte_readable} */ -void rb_io_check_readable(rb_io_t *fptr); - -/** - * Asserts that an IO is opened for character-based reading. A character can - * be wider than a byte. Because of this we have to buffer reads from - * descriptors. This fiction checks if that is possible. - * - * @param[in] fptr An IO you want to read characters from. - * @exception rb_eIOError `fptr` is not for reading. - * @post Upon successful return `fptr` is ready for reading characters. - * - * @internal - * - * Unlike rb_io_check_writable() the parameter cannot be `const rb_io_t *`. - * Behind the scene this operation flushes its write buffers. This is because - * of OpenSSL. They mandate this way. - * - * @see "Can I use OpenSSL's SSL library with non-blocking I/O?" - * https://www.openssl.org/docs/faq.html - */ -void rb_io_check_char_readable(rb_io_t *fptr); - -/** - * Asserts that an IO is opened for byte-based reading. Byte-based and - * character-based reading operations cannot be mixed at a time. - * - * @param[in] fptr An IO you want to read characters from. - * @exception rb_eIOError `fptr` is not for reading. - * @post Upon successful return `fptr` is ready for reading bytes. - */ -void rb_io_check_byte_readable(rb_io_t *fptr); - -/** - * Destroys the given IO. Any pending operations are flushed. - * - * @note It makes no sense to call this function from anywhere outside of your - * class' ::rb_data_type_struct::dfree. - * - * @param[out] fptr IO to close. - * @post `fptr` is no longer a valid pointer. - */ -int rb_io_fptr_finalize(rb_io_t *fptr); - -/** - * Sets #FMODE_SYNC. - * - * @note There is no way for C extensions to undo this operation. - * - * @param[out] fptr IO to set the flag. - * @exception rb_eIOError `fptr` is not opened. - * @post `fptr` is in sync mode. - */ -void rb_io_synchronized(rb_io_t *fptr); - -/** - * Asserts that the passed IO is initialised. - * - * @param[in] fptr IO that you expect be initialised. - * @exception rb_eIOError `fptr` is not initialised. - * @post `fptr` is initialised. - */ -void rb_io_check_initialized(rb_io_t *fptr); - -/** - * This badly named function asserts that the passed IO is _open_. - * - * @param[in] fptr An IO - * @exception rb_eIOError `fptr` is closed. - * @post `fptr` is open. - */ -void rb_io_check_closed(rb_io_t *fptr); - -/** - * Identical to rb_io_check_io(), except it raises exceptions on conversion - * failures. - * - * @param[in] io Target object. - * @exception rb_eTypeError No implicit conversion to IO. - * @return Return value of `obj.to_io`. - * @see rb_str_to_str - * @see rb_ary_to_ary - */ -VALUE rb_io_get_io(VALUE io); - -/** - * Try converting an object to its IO representation using its `to_io` method, - * if any. If there is no such thing, returns ::RUBY_Qnil. - * - * @param[in] io Arbitrary ruby object to convert. - * @exception rb_eTypeError `obj.to_io` returned something non-IO. - * @retval RUBY_Qnil No conversion from `obj` to IO defined. - * @retval otherwise Converted IO representation of `obj`. - * @see rb_check_array_type - * @see rb_check_string_type - * @see rb_check_hash_type - */ -VALUE rb_io_check_io(VALUE io); - -/** - * Queries the tied IO for writing. An IO can be duplexed. Fine. The thing - * is, that characteristics could sometimes be achieved by the underlying - * operating system (for instance a socket's duplexity is by nature) but - * sometimes by us. Notable example is a bidirectional pipe. Suppose you - * have: - * - * ```ruby - * fp = IO.popen("-", "r+") - * ``` - * - * This pipe is duplexed (the `"r+"`). You can both read from/write to it. - * However your operating system may or may not implement bidirectional pipes. - * FreeBSD is one of such operating systems known to have one; OTOH Linux is - * known to lack such things. So to achieve maximum portability, Ruby's - * bidirectional pipes are done purely in user land. A pipe in ruby can have - * multiple file descriptors; one for reading and the other for writing. This - * API is to obtain the IO port which corresponds to the passed one, for - * writing. - * - * @param[in] io An IO. - * @return Its tied IO for writing, if any, or `io` itself otherwise. - */ -VALUE rb_io_get_write_io(VALUE io); - -/** - * Assigns the tied IO for writing. See rb_io_get_write_io() for what a "tied - * IO for writing" is. - * - * @param[out] io An IO. - * @param[in] w Another IO. - * @retval RUBY_Qnil There was no tied IO for writing for `io`. - * @retval otherwise The IO formerly tied to `io`. - * @post `io` ties `w` for writing. - * - * @internal - * - * @shyouhei doesn't think there is any needs of this function for 3rd party - * extension libraries. - */ -VALUE rb_io_set_write_io(VALUE io, VALUE w); - -/** - * Sets an IO to a "nonblock mode". This amends the way an IO operates so that - * instead of waiting for rooms for read/write, it returns errors. In case of - * multiplexed IO situations it can be vital for IO operations not to block. - * This is the key API to achieve that property. - * - * @note Note however that nonblocking-ness propagates across process - * boundaries. You must really carefully watch your step when turning - * for instance `stderr` into nonblock mode (it tends to be shared - * across many processes). Also it is a complete disaster to mix a - * nonblocking file and stdio, and `stderr` tends to be under control of - * stdio in other processes. - * - * @param[out] fptr An IO that is to ne nonblocking. - * @post Descriptor that `fptr` describes is under nonblocking mode. - * - * @internal - * - * There is `O_NONBLOCK` but not `FMODE_NONBLOCK`. You cannot atomically - * create a nonblocking file descriptor using our API. - */ -void rb_io_set_nonblock(rb_io_t *fptr); - -/** - * Returns an integer representing the numeric file descriptor for - * io. - * - * @param[in] io An IO. - * @retval int A file descriptor. - */ -int rb_io_descriptor(VALUE io); - -/** - * This function breaks down the option hash that `IO#initialize` takes into - * components. This is an implementation detail of rb_io_extract_modeenc() - * today. People prefer that API instead. - * - * @param[in] opt The hash to decompose. - * @param[out] enc_p Return value buffer. - * @param[out] enc2_p Return value buffer. - * @param[out] fmode_p Return value buffer. - * @exception rb_eTypeError `opt` is broken. - * @exception rb_eArgError Specified encoding does not exist. - * @retval 1 Components got extracted. - * @retval 0 Otherwise. - * @post `enc_p` is the specified internal encoding. - * @post `enc2_p` is the specified external encoding. - * @post `fmode_p` is the specified set of `FMODE_` modes. - */ -int rb_io_extract_encoding_option(VALUE opt, rb_encoding **enc_p, rb_encoding **enc2_p, int *fmode_p); - -/** - * This function can be seen as an extended version of - * rb_io_extract_encoding_option() that not only concerns the option hash but - * also mode string and so on. This should be mixed with rb_scan_args() like: - * - * ```CXX - * // This method mimics File.new - * static VALUE - * your_method(int argc, const VALUE *argv, VALUE self) - * { - * VALUE f; // file name - * VALUE m; // open mode - * VALUE p; // permission (O_CREAT) - * VALUE k; // keywords - * rb_io_enc_t c; // converter - * int oflags; - * int fmode; - * - * int n = rb_scan_args(argc, argv, "12:", &f, &m, &p, &k); - * rb_io_extract_modeenc(&m, &p, k, &oflags, &fmode, &c); - * - * // Every local variables declared so far has been properly filled here. - * ... - * } - * ``` - * - * @param[in,out] vmode_p Pointer to a mode object. - * @param[in,out] vperm_p Pointer to a permission object. - * @param[in] opthash Keyword arguments - * @param[out] oflags_p `O_` flags return buffer. - * @param[out] fmode_p `FMODE_` flags return buffer. - * @param[out] convconfig_p Encoding config return buffer. - * @exception rb_eTypeError Unexpected object (e.g. Time) passed. - * @exception rb_eArgError Contradiction inside of params. - * @post `*vmode_p` is a mode object (filled if any). - * @post `*vperm_p` is a permission object (filled if any). - * @post `*oflags_p` is filled with `O_` flags. - * @post `*fmode_p` is filled with `FMODE_` flags. - * @post `*convconfig_p` is filled with conversion instructions. - * - * @internal - * - * ```rbs - * class File - * def initialize: ( - * (String | int) path, - * ?(String | int) fmode, - * ?(String | int) perm, - * ?mode: (String | int), - * ?flags: int, - * ?external_encoding: (Encoding | String), - * ?internal_encoding: (Encoding | String), - * ?encoding: String, - * ?textmode: bool, - * ?binmode: bool, - * ?autoclose: bool, - * ?invalid: :replace, - * ?undef: :replace, - * ?replace: String, - * ?fallback: (Hash | Proc | Method), - * ?xml: (:text | :attr), - * ?crlf_newline: bool, - * ?cr_newline: bool, - * ?universal_newline: bool - * ) -> void - * ``` - */ -void rb_io_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash, int *oflags_p, int *fmode_p, rb_io_enc_t *convconfig_p); - -/* :TODO: can this function be __attribute__((warn_unused_result)) or not? */ -/** - * Buffered write to the passed IO. - * - * @param[out] io Destination IO. - * @param[in] buf Contents to go to `io`. - * @param[in] size Number of bytes of `buf`. - * @exception rb_eFrozenError `io` is frozen. - * @exception rb_eIOError `io` is not open for writing. - * @exception rb_eSystemCallError `writev(2)` failed for some reason. - * @retval -1 Write failed. - * @retval otherwise Number of bytes actually written. - * @post `buf` is written to `io`. - * @note Partial write is a thing. It is a failure not to check the - * return value. - */ -ssize_t rb_io_bufwrite(VALUE io, const void *buf, size_t size); - -//RBIMPL_ATTR_DEPRECATED(("use rb_io_maybe_wait_readable")) -/** - * Blocks until the passed file descriptor gets readable. - * - * @deprecated We now prefer rb_io_maybe_wait_readable() over this one. - * @param[in] fd The file descriptor to wait. - * @exception rb_eIOError Bad file descriptor. - * @return 0 or 1 (meaning unclear). - * @post `fd` is ready for reading. - */ -int rb_io_wait_readable(int fd); - -//RBIMPL_ATTR_DEPRECATED(("use rb_io_maybe_wait_writable")) -/** - * Blocks until the passed file descriptor gets writable. - * - * @deprecated We now prefer rb_io_maybe_wait_writable() over this one. - * @param[in] fd The file descriptor to wait. - * @exception rb_eIOError Bad file descriptor. - * @return 0 or 1 (meaning unclear). - */ -int rb_io_wait_writable(int fd); - -//RBIMPL_ATTR_DEPRECATED(("use rb_io_wait")) -/** - * Blocks until the passed file descriptor is ready for the passed events. - * - * @deprecated We now prefer rb_io_maybe_wait() over this one. - * @param[in] fd The file descriptor to wait. - * @param[in] events A set of enum ::rb_io_event_t. - * @param[in,out] tv Timeout. - * @retval 0 Operation timed out. - * @retval -1 `select(2)` failed for some reason. - * @retval otherwise A set of enum ::rb_io_event_t. - * @note Depending on your operating system `tv` might or might not - * be updated (POSIX permits both). Portable programs must - * have no assumptions. - */ -int rb_wait_for_single_fd(int fd, int events, struct timeval *tv); - -/** - * Blocks until the passed IO is ready for the passed events. The "events" - * here is a Ruby level integer, which is an OR-ed value of `IO::READABLE`, - * `IO::WRITable`, and `IO::PRIORITY`. - * - * @param[in] io An IO object to wait. - * @param[in] events See above. - * @param[in] timeout Time, or numeric seconds since UNIX epoch. - * @exception rb_eIOError `io` is not open. - * @exception rb_eRangeError `timeout` is out of range. - * @exception rb_eSystemCallError `select(2)` failed for some reason. - * @retval RUBY_Qfalse Operation timed out. - * @retval Otherwise Actual events reached. - */ -VALUE rb_io_wait(VALUE io, VALUE events, VALUE timeout); - -/** - * Identical to rb_io_wait() except it additionally takes previous errno. If - * the passed errno indicates for instance `EINTR`, this function returns - * immediately. This is expected to be called in a loop. - * - * ```CXX - * while (true) { - * - * ... // Your interesting operation here - * // `errno` could be updated - * - * rb_io_maybe_wait(errno, io, ev, Qnil); - * } - * ``` - * - * @param[in] error System errno. - * @param[in] io An IO object to wait. - * @param[in] events An integer set of interests. - * @param[in] timeout Time, or numeric seconds since UNIX epoch. - * @exception rb_eIOError `io` is not open. - * @exception rb_eRangeError `timeout` is out of range. - * @exception rb_eSystemCallError `select(2)` failed for some reason. - * @retval RUBY_Qfalse Operation timed out. - * @retval Otherwise Actual events reached. - * - * @internal - * - * This function to return ::RUBY_Qfalse on timeout could be unintended. It - * seems timeout feature has some rough edge. - */ -VALUE rb_io_maybe_wait(int error, VALUE io, VALUE events, VALUE timeout); - -/** - * Blocks until the passed IO is ready for reading, if that makes sense for the - * passed errno. This is a special case of rb_io_maybe_wait() that only - * concerns for reading. - * - * @param[in] error System errno. - * @param[in] io An IO object to wait. - * @param[in] timeout Time, or numeric seconds since UNIX epoch. - * @exception rb_eIOError `io` is not open. - * @exception rb_eRangeError `timeout` is out of range. - * @exception rb_eSystemCallError `select(2)` failed for some reason. - * @exception rb_eTypeError Operation timed out. - * @return Always returns ::RUBY_IO_READABLE. - * - * @internal - * - * Because rb_io_maybe_wait() returns ::RUBY_Qfalse on timeout, this function - * fails to convert that value to `int`, and raises ::rb_eTypeError. - */ -int rb_io_maybe_wait_readable(int error, VALUE io, VALUE timeout); - -/** - * Blocks until the passed IO is ready for writing, if that makes sense for the - * passed errno. This is a special case of rb_io_maybe_wait() that only - * concernsfor writing. - * - * @param[in] error System errno. - * @param[in] io An IO object to wait. - * @param[in] timeout Time, or numeric seconds since UNIX epoch. - * @exception rb_eIOError `io` is not open. - * @exception rb_eRangeError `timeout` is out of range. - * @exception rb_eSystemCallError `select(2)` failed for some reason. - * @exception rb_eTypeError Operation timed out. - * @return Always returns ::RUBY_IO_WRITABLE. - * - * @internal - * - * Because rb_io_maybe_wait() returns ::RUBY_Qfalse on timeout, this function - * fails to convert that value to `int`, and raises ::rb_eTypeError. - */ -int rb_io_maybe_wait_writable(int error, VALUE io, VALUE timeout); - -/** @cond INTERNAL_MACRO */ -/* compatibility for ruby 1.8 and older */ -#define rb_io_mode_flags(modestr) [<"rb_io_mode_flags() is obsolete; use rb_io_modestr_fmode()">] -#define rb_io_modenum_flags(oflags) [<"rb_io_modenum_flags() is obsolete; use rb_io_oflags_fmode()">] -/** @endcond */ - -/** - * @deprecated This function once was a thing in the old days, but makes no - * sense any longer today. Exists here for backwards - * compatibility only. You can safely forget about it. - * - * @param[in] obj Object in question. - * @exception rb_eFrozenError obj is frozen. - * @return The passed `obj` - */ -VALUE rb_io_taint_check(VALUE obj); - -RBIMPL_ATTR_NORETURN() -/** - * Utility function to raise ::rb_eEOFError. - * - * @exception rb_eEOFError End of file situation. - * @note It never returns. - */ -void rb_eof_error(void); - -/** - * Blocks until there is a pending read in the passed IO. If there already is - * it just returns. - * - * @param[out] fptr An IO to wait for reading. - * @post The are bytes to be read. - */ -void rb_io_read_check(rb_io_t *fptr); - -RBIMPL_ATTR_PURE() -/** - * Queries if the passed IO has any pending reads. Unlike rb_io_read_check() - * this doesn't block; has no side effects. - * - * @param[in] fptr An IO which can have pending reads. - * @retval 0 The IO is empty. - * @retval 1 There is something buffered. - */ -int rb_io_read_pending(rb_io_t *fptr); - -/** - * Constructs an instance of ::rb_cStat from the passed information. - * - * @param[in] st A stat. - * @return Allocated new instance of ::rb_cStat. - */ -VALUE rb_stat_new(const struct stat *st); - -/* gc.c */ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_IO_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io/buffer.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io/buffer.h deleted file mode 100644 index 907fec2..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/io/buffer.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef RUBY_IO_BUFFER_T -#define RUBY_IO_BUFFER_T 1 -/** - * @file - * @author Samuel Williams - * @date Fri 2 Jul 2021 16:29:01 NZST - * @copyright Copyright (C) 2021 Samuel Williams - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ - -#pragma once - -#include "ruby/ruby.h" -#include "ruby/internal/config.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -// WARNING: This entire interface is experimental and may change in the future! -#define RB_IO_BUFFER_EXPERIMENTAL 1 - -RUBY_EXTERN VALUE rb_cIOBuffer; -RUBY_EXTERN size_t RUBY_IO_BUFFER_PAGE_SIZE; -RUBY_EXTERN size_t RUBY_IO_BUFFER_DEFAULT_SIZE; - -enum rb_io_buffer_flags { - // The memory in the buffer is owned by someone else. - // More specifically, it means that someone else owns the buffer and we shouldn't try to resize it. - RB_IO_BUFFER_EXTERNAL = 1, - // The memory in the buffer is allocated internally. - RB_IO_BUFFER_INTERNAL = 2, - // The memory in the buffer is mapped. - // A non-private mapping is marked as external. - RB_IO_BUFFER_MAPPED = 4, - - // The buffer is locked and cannot be resized. - // More specifically, it means we can't change the base address or size. - // A buffer is typically locked before a system call that uses the data. - RB_IO_BUFFER_LOCKED = 32, - - // The buffer mapping is private and will not impact other processes or the underlying file. - RB_IO_BUFFER_PRIVATE = 64, - - // The buffer is read-only and cannot be modified. - RB_IO_BUFFER_READONLY = 128 -}; - -enum rb_io_buffer_endian { - RB_IO_BUFFER_LITTLE_ENDIAN = 4, - RB_IO_BUFFER_BIG_ENDIAN = 8, - -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN, -#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN, -#elif REG_DWORD == REG_DWORD_LITTLE_ENDIAN - RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN, -#elif REG_DWORD == REG_DWORD_BIG_ENDIAN - RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN, -#endif - - RB_IO_BUFFER_NETWORK_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN -}; - -VALUE rb_io_buffer_new(void *base, size_t size, enum rb_io_buffer_flags flags); -VALUE rb_io_buffer_map(VALUE io, size_t size, off_t offset, enum rb_io_buffer_flags flags); - -VALUE rb_io_buffer_lock(VALUE self); -VALUE rb_io_buffer_unlock(VALUE self); -int rb_io_buffer_try_unlock(VALUE self); -VALUE rb_io_buffer_free(VALUE self); - -int rb_io_buffer_get_bytes(VALUE self, void **base, size_t *size); -void rb_io_buffer_get_bytes_for_reading(VALUE self, const void **base, size_t *size); -void rb_io_buffer_get_bytes_for_writing(VALUE self, void **base, size_t *size); - -VALUE rb_io_buffer_transfer(VALUE self); -void rb_io_buffer_resize(VALUE self, size_t size); -void rb_io_buffer_clear(VALUE self, uint8_t value, size_t offset, size_t length); - -// The length is the minimum required length. -VALUE rb_io_buffer_read(VALUE self, VALUE io, size_t length); -VALUE rb_io_buffer_pread(VALUE self, VALUE io, size_t length, off_t offset); -VALUE rb_io_buffer_write(VALUE self, VALUE io, size_t length); -VALUE rb_io_buffer_pwrite(VALUE self, VALUE io, size_t length, off_t offset); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_IO_BUFFER_T */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/memory_view.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/memory_view.h deleted file mode 100644 index 8393103..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/memory_view.h +++ /dev/null @@ -1,325 +0,0 @@ -#ifndef RUBY_MEMORY_VIEW_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_MEMORY_VIEW_H 1 -/** - * @file - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @brief Memory View. - */ - -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include /* size_t */ -#endif - -#if HAVE_SYS_TYPES_H -# include /* ssize_t */ -#endif - -#include "ruby/internal/attr/pure.h" /* RBIMPL_ATTR_PURE */ -#include "ruby/internal/core/rtypeddata.h" /* rb_data_type_t */ -#include "ruby/internal/dllexport.h" /* RUBY_EXTERN */ -#include "ruby/internal/stdbool.h" /* bool */ -#include "ruby/internal/value.h" /* VALUE */ - -/** - * Flags passed to rb_memory_view_get(), then to ::rb_memory_view_get_func_t. - */ -enum ruby_memory_view_flags { - RUBY_MEMORY_VIEW_SIMPLE = 0, - RUBY_MEMORY_VIEW_WRITABLE = (1<<0), - RUBY_MEMORY_VIEW_FORMAT = (1<<1), - RUBY_MEMORY_VIEW_MULTI_DIMENSIONAL = (1<<2), - RUBY_MEMORY_VIEW_STRIDES = (1<<3) | RUBY_MEMORY_VIEW_MULTI_DIMENSIONAL, - RUBY_MEMORY_VIEW_ROW_MAJOR = (1<<4) | RUBY_MEMORY_VIEW_STRIDES, - RUBY_MEMORY_VIEW_COLUMN_MAJOR = (1<<5) | RUBY_MEMORY_VIEW_STRIDES, - RUBY_MEMORY_VIEW_ANY_CONTIGUOUS = RUBY_MEMORY_VIEW_ROW_MAJOR | RUBY_MEMORY_VIEW_COLUMN_MAJOR, - RUBY_MEMORY_VIEW_INDIRECT = (1<<6) | RUBY_MEMORY_VIEW_STRIDES, -}; - -/** Memory view component metadata. */ -typedef struct { - /** @see ::rb_memory_view_t::format */ - char format; - - /** :FIXME: what is a "native" size is unclear. */ - unsigned native_size_p: 1; - - /** Endian of the component */ - unsigned little_endian_p: 1; - - /** The component's offset. */ - size_t offset; - - /** The component's size. */ - size_t size; - - /** - * How many numbers of components are there. For instance "CCC"'s repeat is - * 3. - */ - size_t repeat; -} rb_memory_view_item_component_t; - -/** - * A MemoryView structure, `rb_memory_view_t`, is used for exporting objects' - * MemoryView. - * - * This structure contains the reference of the object, which is the owner of - * the MemoryView, the pointer to the head of exported memory, and the metadata - * that describes the structure of the memory. The metadata can describe - * multidimensional arrays with strides. - */ -typedef struct { - /** - * The original object that has the memory exported via this memory view. - */ - VALUE obj; - - /** The pointer to the exported memory. */ - void *data; - - /** The number of bytes in data. */ - ssize_t byte_size; - - /** true for readonly memory, false for writable memory. */ - bool readonly; - - /** - * A string to describe the format of an element, or NULL for unsigned bytes. - * The format string is a sequence of the following pack-template specifiers: - * - * c, C, s, s!, S, S!, n, v, i, i!, I, I!, l, l!, L, L!, - * N, V, f, e, g, q, q!, Q, Q!, d, E, G, j, J, x - * - * For example, "dd" for an element that consists of two double values, - * and "CCC" for an element that consists of three bytes, such as - * an RGB color triplet. - * - * Also, the value endianness can be explicitly specified by '<' or '>' - * following a value type specifier. - * - * The items are packed contiguously. When you emulate the alignment of - * structure members, put '|' at the beginning of the format string, - * like "|iqc". On x86_64 Linux ABI, the size of the item by this format - * is 24 bytes instead of 13 bytes. - */ - const char *format; - - /** - * The number of bytes in each element. - * item_size should equal to rb_memory_view_item_size_from_format(format). */ - ssize_t item_size; - - /** Description of each components. */ - struct { - /** - * The array of rb_memory_view_item_component_t that describes the - * item structure. rb_memory_view_prepare_item_desc and - * rb_memory_view_get_item allocate this memory if needed, - * and rb_memory_view_release frees it. */ - const rb_memory_view_item_component_t *components; - - /** The number of components in an item. */ - size_t length; - } item_desc; - - /** The number of dimension. */ - ssize_t ndim; - - /** - * ndim size array indicating the number of elements in each dimension. - * This can be NULL when ndim == 1. */ - const ssize_t *shape; - - /** - * ndim size array indicating the number of bytes to skip to go to the - * next element in each dimension. */ - const ssize_t *strides; - - /** - * The offset in each dimension when this memory view exposes a nested array. - * Or, NULL when this memory view exposes a flat array. */ - const ssize_t *sub_offsets; - - /** The private data for managing this exported memory */ - void *private_data; - - /** DO NOT TOUCH THIS: The memory view entry for the internal use */ - const struct rb_memory_view_entry *_memory_view_entry; -} rb_memory_view_t; - -/** Type of function of ::rb_memory_view_entry_t::get_func. */ -typedef bool (* rb_memory_view_get_func_t)(VALUE obj, rb_memory_view_t *view, int flags); - -/** Type of function of ::rb_memory_view_entry_t::release_func. */ -typedef bool (* rb_memory_view_release_func_t)(VALUE obj, rb_memory_view_t *view); - -/** Type of function of ::rb_memory_view_entry_t::available_p_func. */ -typedef bool (* rb_memory_view_available_p_func_t)(VALUE obj); - -/** Operations applied to a specific kind of a memory view. */ -typedef struct rb_memory_view_entry { - /** - * Exports a memory view from a Ruby object. - */ - rb_memory_view_get_func_t get_func; - - /** - * Releases a memory view that was previously generated using - * ::rb_memory_view_entry_t::get_func. - */ - rb_memory_view_release_func_t release_func; - - /** - * Queries if an object understands memory view protocol. - */ - rb_memory_view_available_p_func_t available_p_func; -} rb_memory_view_entry_t; - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* memory_view.c */ - -/** - * Associates the passed class with the passed memory view entry. This has to - * be called before actually creating a memory view from an instance. - */ -bool rb_memory_view_register(VALUE klass, const rb_memory_view_entry_t *entry); - -RBIMPL_ATTR_PURE() -/** - * Return `true` if the data in the MemoryView `view` is row-major contiguous. - * - * Return `false` otherwise. - */ -bool rb_memory_view_is_row_major_contiguous(const rb_memory_view_t *view); - -RBIMPL_ATTR_PURE() -/** - * Return `true` if the data in the MemoryView `view` is column-major - * contiguous. - * - * Return `false` otherwise. - */ -bool rb_memory_view_is_column_major_contiguous(const rb_memory_view_t *view); - -RBIMPL_ATTR_NOALIAS() -/** - * Fill the `strides` array with byte-Strides of a contiguous array of the - * given shape with the given element size. - */ -void rb_memory_view_fill_contiguous_strides(const ssize_t ndim, const ssize_t item_size, const ssize_t *const shape, const bool row_major_p, ssize_t *const strides); - -RBIMPL_ATTR_NOALIAS() -/** - * Fill the members of `view` as an 1-dimensional byte array. - */ -bool rb_memory_view_init_as_byte_array(rb_memory_view_t *view, VALUE obj, void *data, const ssize_t len, const bool readonly); - -/** - * Deconstructs the passed format string, as describe in - * ::rb_memory_view_t::format. - */ -ssize_t rb_memory_view_parse_item_format(const char *format, - rb_memory_view_item_component_t **members, - size_t *n_members, const char **err); - -/** - * Calculate the number of bytes occupied by an element. - * - * When the calculation fails, the failed location in `format` is stored into - * `err`, and returns `-1`. - */ -ssize_t rb_memory_view_item_size_from_format(const char *format, const char **err); - -/** - * Calculate the location of the item indicated by the given `indices`. - * - * The length of `indices` must equal to `view->ndim`. - * - * This function initializes `view->item_desc` if needed. - */ -void *rb_memory_view_get_item_pointer(rb_memory_view_t *view, const ssize_t *indices); - -/** - * Return a value that consists of item members. - * - * When an item is a single member, the return value is a single value. - * - * When an item consists of multiple members, an array will be returned. - */ -VALUE rb_memory_view_extract_item_members(const void *ptr, const rb_memory_view_item_component_t *members, const size_t n_members); - -/** Fill the `item_desc` member of `view`. */ -void rb_memory_view_prepare_item_desc(rb_memory_view_t *view); - -/** * Return a value that consists of item members in the given memory view. */ -VALUE rb_memory_view_get_item(rb_memory_view_t *view, const ssize_t *indices); - -/** - * Return `true` if `obj` supports to export a MemoryView. Return `false` - * otherwise. - * - * If this function returns `true`, it doesn't mean the function - * `rb_memory_view_get` will succeed. - */ -bool rb_memory_view_available_p(VALUE obj); - -/** - * If the given `obj` supports to export a MemoryView that conforms the given - * `flags`, this function fills `view` by the information of the MemoryView and - * returns `true`. In this case, the reference count of `obj` is increased. - * - * If the given combination of `obj` and `flags` cannot export a MemoryView, - * this function returns `false`. The content of `view` is not touched in this - * case. - * - * The exported MemoryView must be released by `rb_memory_view_release` when - * the MemoryView is no longer needed. - */ -bool rb_memory_view_get(VALUE obj, rb_memory_view_t* memory_view, int flags); - -/** - * Release the given MemoryView `view` and decrement the reference count of - * `memory_view->obj`. - * - * Consumers must call this function when the MemoryView is no longer needed. - * Missing to call this function leads memory leak. - */ -bool rb_memory_view_release(rb_memory_view_t* memory_view); - -/* for testing */ -/** @cond INTERNAL_MACRO */ -RUBY_EXTERN VALUE rb_memory_view_exported_object_registry; -RUBY_EXTERN const rb_data_type_t rb_memory_view_exported_object_registry_data_type; -/** @endcond */ - -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE() -/** - * Return `true` if the data in the MemoryView `view` is row-major or - * column-major contiguous. - * - * Return `false` otherwise. - */ -static inline bool -rb_memory_view_is_contiguous(const rb_memory_view_t *view) -{ - if (rb_memory_view_is_row_major_contiguous(view)) { - return true; - } - else if (rb_memory_view_is_column_major_contiguous(view)) { - return true; - } - else { - return false; - } -} - -#endif /* RUBY_BUFFER_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/missing.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/missing.h deleted file mode 100644 index 1e97e29..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/missing.h +++ /dev/null @@ -1,229 +0,0 @@ -#ifndef RUBY_MISSING_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_MISSING_H 1 -/** - * @author $Author$ - * @date Sat May 11 23:46:03 JST 2002 - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @brief Prototype for *.c in ./missing, and for missing timeval struct. - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include -#endif - -#if defined(__cplusplus) -# include -#else -# include /* for INFINITY and NAN */ -#endif - -#ifdef RUBY_ALTERNATIVE_MALLOC_HEADER -# include RUBY_ALTERNATIVE_MALLOC_HEADER -#endif - -#if defined(HAVE_TIME_H) -# include -#endif - -#if defined(HAVE_SYS_TIME_H) -# include -#endif - -#ifdef HAVE_IEEEFP_H -# include -#endif - -#include "ruby/internal/dllexport.h" -#include "ruby/internal/attr/format.h" - -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif -#ifndef M_PI_2 -# define M_PI_2 (M_PI/2) -#endif - -#if !defined(HAVE_STRUCT_TIMEVAL) -struct timeval { - time_t tv_sec; /* seconds */ - long tv_usec; /* microseconds */ -}; -#endif /* HAVE_STRUCT_TIMEVAL */ - -#if !defined(HAVE_STRUCT_TIMESPEC) -/* :BEWARE: @shyouhei warns that IT IS A WRONG IDEA to define our own version - * of struct timespec here. `clock_gettime` is a system call, and your kernel - * could expect something other than just `long` (results stack smashing if - * that happens). See also https://ewontfix.com/19/ */ -struct timespec { - time_t tv_sec; /* seconds */ - long tv_nsec; /* nanoseconds */ -}; -#endif - -#if !defined(HAVE_STRUCT_TIMEZONE) -struct timezone { - int tz_minuteswest; - int tz_dsttime; -}; -#endif - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -#ifndef HAVE_ACOSH -RUBY_EXTERN double acosh(double); -RUBY_EXTERN double asinh(double); -RUBY_EXTERN double atanh(double); -#endif - -#ifndef HAVE_CRYPT -RUBY_EXTERN char *crypt(const char *, const char *); -#endif - -#ifndef HAVE_EACCESS -RUBY_EXTERN int eaccess(const char*, int); -#endif - -#ifndef HAVE_ROUND -RUBY_EXTERN double round(double); /* numeric.c */ -#endif - -#ifndef HAVE_FLOCK -RUBY_EXTERN int flock(int, int); -#endif - -/* -#ifndef HAVE_FREXP -RUBY_EXTERN double frexp(double, int *); -#endif -*/ - -#ifndef HAVE_HYPOT -RUBY_EXTERN double hypot(double, double); -#endif - -#ifndef HAVE_ERF -RUBY_EXTERN double erf(double); -RUBY_EXTERN double erfc(double); -#endif - -#ifndef HAVE_TGAMMA -RUBY_EXTERN double tgamma(double); -#endif - -#ifndef HAVE_LGAMMA_R -RUBY_EXTERN double lgamma_r(double, int *); -#endif - -#ifndef HAVE_CBRT -RUBY_EXTERN double cbrt(double); -#endif - -#if !defined(INFINITY) || !defined(NAN) -union bytesequence4_or_float { - unsigned char bytesequence[4]; - float float_value; -}; -#endif - -#ifndef INFINITY -/** @internal */ -RUBY_EXTERN const union bytesequence4_or_float rb_infinity; -# define INFINITY (rb_infinity.float_value) -# define USE_RB_INFINITY 1 -#endif - -#ifndef NAN -/** @internal */ -RUBY_EXTERN const union bytesequence4_or_float rb_nan; -# define NAN (rb_nan.float_value) -# define USE_RB_NAN 1 -#endif - -#ifndef HUGE_VAL -# define HUGE_VAL ((double)INFINITY) -#endif - -#ifndef HAVE_FINITE -# define HAVE_FINITE 1 -# define finite(x) isfinite(x) -#endif - -#ifndef HAVE_NAN -RUBY_EXTERN double nan(const char *); -#endif - -#ifndef HAVE_NEXTAFTER -RUBY_EXTERN double nextafter(double x, double y); -#endif - -/* -#ifndef HAVE_MEMCMP -RUBY_EXTERN int memcmp(const void *, const void *, size_t); -#endif -*/ - -#ifndef HAVE_MEMMOVE -RUBY_EXTERN void *memmove(void *, const void *, size_t); -#endif - -/* -#ifndef HAVE_MODF -RUBY_EXTERN double modf(double, double *); -#endif -*/ - -#ifndef HAVE_STRCHR -RUBY_EXTERN char *strchr(const char *, int); -RUBY_EXTERN char *strrchr(const char *, int); -#endif - -#ifndef HAVE_STRERROR -RUBY_EXTERN char *strerror(int); -#endif - -#ifndef HAVE_STRSTR -RUBY_EXTERN char *strstr(const char *, const char *); -#endif - -#ifndef HAVE_STRLCPY -RUBY_EXTERN size_t strlcpy(char *, const char*, size_t); -#endif - -#ifndef HAVE_STRLCAT -RUBY_EXTERN size_t strlcat(char *, const char*, size_t); -#endif - -#ifndef HAVE_FFS -RUBY_EXTERN int ffs(int); -#endif - -#ifdef BROKEN_CLOSE -# include -# include -RUBY_EXTERN int ruby_getpeername(int, struct sockaddr *, socklen_t *); -RUBY_EXTERN int ruby_getsockname(int, struct sockaddr *, socklen_t *); -RUBY_EXTERN int ruby_shutdown(int, int); -RUBY_EXTERN int ruby_close(int); -#endif - -#ifndef HAVE_SETPROCTITLE -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2) -RUBY_EXTERN void setproctitle(const char *fmt, ...); -#endif - -#ifdef HAVE_EXPLICIT_BZERO -# /* Take that. */ -#elif defined(SecureZeroMemory) -# define explicit_bzero(b, len) SecureZeroMemory(b, len) -#else -RUBY_EXTERN void explicit_bzero(void *b, size_t len); -#endif - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_MISSING_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/onigmo.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/onigmo.h deleted file mode 100644 index 6187b37..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/onigmo.h +++ /dev/null @@ -1,941 +0,0 @@ -#ifndef ONIGMO_H -#define ONIGMO_H -/********************************************************************** - onigmo.h - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2009 K.Kosako - * Copyright (c) 2011-2017 K.Takata - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifdef __cplusplus -extern "C" { -# if 0 -} /* satisfy cc-mode */ -# endif -#endif - -#define ONIGMO_VERSION_MAJOR 6 -#define ONIGMO_VERSION_MINOR 1 -#define ONIGMO_VERSION_TEENY 3 - -#ifndef ONIG_EXTERN -# ifdef RUBY_EXTERN -# define ONIG_EXTERN RUBY_EXTERN -# else -# if defined(_WIN32) && !defined(__GNUC__) -# if defined(EXPORT) || defined(RUBY_EXPORT) -# define ONIG_EXTERN extern __declspec(dllexport) -# else -# define ONIG_EXTERN extern __declspec(dllimport) -# endif -# endif -# endif -#endif - -#ifndef ONIG_EXTERN -# define ONIG_EXTERN extern -#endif - -#ifndef RUBY -# ifndef RUBY_SYMBOL_EXPORT_BEGIN -# define RUBY_SYMBOL_EXPORT_BEGIN -# define RUBY_SYMBOL_EXPORT_END -# endif -#endif - -RUBY_SYMBOL_EXPORT_BEGIN - -#include /* for size_t */ - -/* PART: character encoding */ - -#ifndef ONIG_ESCAPE_UCHAR_COLLISION -# define UChar OnigUChar -#endif - -typedef unsigned char OnigUChar; -typedef unsigned int OnigCodePoint; -typedef unsigned int OnigCtype; -typedef size_t OnigDistance; -typedef ptrdiff_t OnigPosition; - -#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) - -/* - * Onig casefold/case mapping flags and related definitions - * - * Subfields (starting with 0 at LSB): - * 0-2: Code point count in casefold.h - * 3-12: Index into SpecialCaseMapping array in casefold.h - * 13-22: Case folding/mapping flags - */ -typedef unsigned int OnigCaseFoldType; /* case fold flag */ - -ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; - -/* bits for actual code point count; 3 bits is more than enough, currently only 2 used */ -#define OnigCodePointMaskWidth 3 -#define OnigCodePointMask ((1< Unicode:0x1ffc */ - -/* code range */ -#define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) -#define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] -#define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] - -typedef struct { - int byte_len; /* argument(original) character(s) byte length */ - int code_len; /* number of code */ - OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN]; -} OnigCaseFoldCodeItem; - -typedef struct { - OnigCodePoint esc; - OnigCodePoint anychar; - OnigCodePoint anytime; - OnigCodePoint zero_or_one_time; - OnigCodePoint one_or_more_time; - OnigCodePoint anychar_anytime; -} OnigMetaCharTableType; - -typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); - -typedef struct OnigEncodingTypeST { - int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc); - const char* name; - int max_enc_len; - int min_enc_len; - int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - int (*code_to_mbclen)(OnigCodePoint code, const struct OnigEncodingTypeST* enc); - int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, const struct OnigEncodingTypeST* enc); - int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, const struct OnigEncodingTypeST* enc); - int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, const struct OnigEncodingTypeST* enc); - int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], const struct OnigEncodingTypeST* enc); - int (*property_name_to_ctype)(const struct OnigEncodingTypeST* enc, const OnigUChar* p, const OnigUChar* end); - int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, const struct OnigEncodingTypeST* enc); - int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], const struct OnigEncodingTypeST* enc); - OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - int (*case_map)(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc); - int ruby_encoding_index; - unsigned int flags; -} OnigEncodingType; - -typedef const OnigEncodingType* OnigEncoding; - -ONIG_EXTERN const OnigEncodingType OnigEncodingASCII; -#ifndef RUBY -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_1; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_2; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_3; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_4; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_5; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_6; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_7; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_8; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_9; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_10; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_11; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_13; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_14; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_15; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_16; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_8; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_16BE; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_16LE; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_32BE; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_32LE; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_JP; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_TW; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_KR; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_CN; -ONIG_EXTERN const OnigEncodingType OnigEncodingShift_JIS; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_31J; -/* ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8; */ -ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8_R; -ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8_U; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1250; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1251; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1252; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1253; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1254; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1257; -ONIG_EXTERN const OnigEncodingType OnigEncodingBIG5; -ONIG_EXTERN const OnigEncodingType OnigEncodingGB18030; -#endif /* RUBY */ - -#define ONIG_ENCODING_ASCII (&OnigEncodingASCII) -#ifndef RUBY -# define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1) -# define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2) -# define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3) -# define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4) -# define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5) -# define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6) -# define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7) -# define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8) -# define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9) -# define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10) -# define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11) -# define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13) -# define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14) -# define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15) -# define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16) -# define ONIG_ENCODING_UTF_8 (&OnigEncodingUTF_8) -# define ONIG_ENCODING_UTF_16BE (&OnigEncodingUTF_16BE) -# define ONIG_ENCODING_UTF_16LE (&OnigEncodingUTF_16LE) -# define ONIG_ENCODING_UTF_32BE (&OnigEncodingUTF_32BE) -# define ONIG_ENCODING_UTF_32LE (&OnigEncodingUTF_32LE) -# define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP) -# define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW) -# define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR) -# define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN) -# define ONIG_ENCODING_SHIFT_JIS (&OnigEncodingShift_JIS) -# define ONIG_ENCODING_WINDOWS_31J (&OnigEncodingWindows_31J) -/* # define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8) */ -# define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R) -# define ONIG_ENCODING_KOI8_U (&OnigEncodingKOI8_U) -# define ONIG_ENCODING_WINDOWS_1250 (&OnigEncodingWindows_1250) -# define ONIG_ENCODING_WINDOWS_1251 (&OnigEncodingWindows_1251) -# define ONIG_ENCODING_WINDOWS_1252 (&OnigEncodingWindows_1252) -# define ONIG_ENCODING_WINDOWS_1253 (&OnigEncodingWindows_1253) -# define ONIG_ENCODING_WINDOWS_1254 (&OnigEncodingWindows_1254) -# define ONIG_ENCODING_WINDOWS_1257 (&OnigEncodingWindows_1257) -# define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5) -# define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030) - -/* old names */ -# define ONIG_ENCODING_SJIS ONIG_ENCODING_SHIFT_JIS -# define ONIG_ENCODING_CP932 ONIG_ENCODING_WINDOWS_31J -# define ONIG_ENCODING_CP1250 ONIG_ENCODING_WINDOWS_1250 -# define ONIG_ENCODING_CP1251 ONIG_ENCODING_WINDOWS_1251 -# define ONIG_ENCODING_CP1252 ONIG_ENCODING_WINDOWS_1252 -# define ONIG_ENCODING_CP1253 ONIG_ENCODING_WINDOWS_1253 -# define ONIG_ENCODING_CP1254 ONIG_ENCODING_WINDOWS_1254 -# define ONIG_ENCODING_CP1257 ONIG_ENCODING_WINDOWS_1257 -# define ONIG_ENCODING_UTF8 ONIG_ENCODING_UTF_8 -# define ONIG_ENCODING_UTF16_BE ONIG_ENCODING_UTF_16BE -# define ONIG_ENCODING_UTF16_LE ONIG_ENCODING_UTF_16LE -# define ONIG_ENCODING_UTF32_BE ONIG_ENCODING_UTF_32BE -# define ONIG_ENCODING_UTF32_LE ONIG_ENCODING_UTF_32LE -#endif /* RUBY */ - -#define ONIG_ENCODING_UNDEF ((OnigEncoding )0) - -/* this declaration needs to be here because it is used in string.c in Ruby */ -ONIG_EXTERN -int onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc); - - -/* work size */ -#define ONIGENC_CODE_TO_MBC_MAXLEN 7 -#define ONIGENC_MBC_CASE_FOLD_MAXLEN 18 -/* 18: 6(max-byte) * 3(case-fold chars) */ - -/* character types */ -#define ONIGENC_CTYPE_NEWLINE 0 -#define ONIGENC_CTYPE_ALPHA 1 -#define ONIGENC_CTYPE_BLANK 2 -#define ONIGENC_CTYPE_CNTRL 3 -#define ONIGENC_CTYPE_DIGIT 4 -#define ONIGENC_CTYPE_GRAPH 5 -#define ONIGENC_CTYPE_LOWER 6 -#define ONIGENC_CTYPE_PRINT 7 -#define ONIGENC_CTYPE_PUNCT 8 -#define ONIGENC_CTYPE_SPACE 9 -#define ONIGENC_CTYPE_UPPER 10 -#define ONIGENC_CTYPE_XDIGIT 11 -#define ONIGENC_CTYPE_WORD 12 -#define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */ -#define ONIGENC_CTYPE_ASCII 14 -#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII - -/* flags */ -#define ONIGENC_FLAG_NONE 0U -#define ONIGENC_FLAG_UNICODE 1U - -#define onig_enc_len(enc,p,e) ONIGENC_MBC_ENC_LEN(enc, p, e) - -#define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) -#define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) -#define ONIGENC_IS_MBC_HEAD(enc,p,e) (ONIGENC_MBC_ENC_LEN(enc,p,e) != 1) -#define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) -#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) -#define ONIGENC_IS_MBC_WORD(enc,s,end) \ - ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) -#define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) \ - onigenc_ascii_is_code_ctype( \ - ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc) -#define ONIGENC_IS_UNICODE(enc) ((enc)->flags & ONIGENC_FLAG_UNICODE) - - -#define ONIGENC_NAME(enc) ((enc)->name) - -#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \ - (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc) -#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ - (enc)->is_allowed_reverse_match(s,end,enc) -#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) \ - (enc)->left_adjust_char_head(start, s, end, enc) -#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ - (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc) -#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ - (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs,enc) -#define ONIGENC_STEP_BACK(enc,start,s,end,n) \ - onigenc_step_back((enc),(start),(s),(end),(n)) - -#define ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) (n) -#define ONIGENC_MBCLEN_CHARFOUND_P(r) (0 < (r)) -#define ONIGENC_MBCLEN_CHARFOUND_LEN(r) (r) - -#define ONIGENC_CONSTRUCT_MBCLEN_INVALID() (-1) -#define ONIGENC_MBCLEN_INVALID_P(r) ((r) == -1) - -#define ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(n) (-1-(n)) -#define ONIGENC_MBCLEN_NEEDMORE_P(r) ((r) < -1) -#define ONIGENC_MBCLEN_NEEDMORE_LEN(r) (-1-(r)) - -#define ONIGENC_PRECISE_MBC_ENC_LEN(enc,p,e) (enc)->precise_mbc_enc_len(p,e,enc) - -ONIG_EXTERN -int onigenc_mbclen_approximate(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc); - -#define ONIGENC_MBC_ENC_LEN(enc,p,e) onigenc_mbclen_approximate(p,e,enc) -#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) -#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) -#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) -#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end),enc) -#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end),enc) -#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code,enc) -#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf,enc) -#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \ - (enc)->property_name_to_ctype(enc,p,end) - -#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype,enc) - -#define ONIGENC_IS_CODE_NEWLINE(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) -#define ONIGENC_IS_CODE_GRAPH(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) -#define ONIGENC_IS_CODE_PRINT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) -#define ONIGENC_IS_CODE_ALNUM(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) -#define ONIGENC_IS_CODE_ALPHA(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) -#define ONIGENC_IS_CODE_LOWER(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) -#define ONIGENC_IS_CODE_UPPER(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) -#define ONIGENC_IS_CODE_CNTRL(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) -#define ONIGENC_IS_CODE_PUNCT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) -#define ONIGENC_IS_CODE_SPACE(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) -#define ONIGENC_IS_CODE_BLANK(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) -#define ONIGENC_IS_CODE_DIGIT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) -#define ONIGENC_IS_CODE_XDIGIT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) -#define ONIGENC_IS_CODE_WORD(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) - -#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \ - (enc)->get_ctype_code_range(ctype,sbout,ranges,enc) - -ONIG_EXTERN -OnigUChar* onigenc_step_back(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n); - - -/* encoding API */ -ONIG_EXTERN -int onigenc_init(void); -ONIG_EXTERN -int onigenc_set_default_encoding(OnigEncoding enc); -ONIG_EXTERN -OnigEncoding onigenc_get_default_encoding(void); -ONIG_EXTERN -OnigUChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev); -ONIG_EXTERN -OnigUChar* onigenc_get_prev_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); -ONIG_EXTERN -OnigUChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); -ONIG_EXTERN -OnigUChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); -ONIG_EXTERN -int onigenc_strlen(OnigEncoding enc, const OnigUChar* p, const OnigUChar* end); -ONIG_EXTERN -int onigenc_strlen_null(OnigEncoding enc, const OnigUChar* p); -ONIG_EXTERN -int onigenc_str_bytelen_null(OnigEncoding enc, const OnigUChar* p); - - - -/* PART: regular expression */ - -/* config parameters */ -#define ONIG_NREGION 4 -#define ONIG_MAX_CAPTURE_GROUP_NUM 32767 -#define ONIG_MAX_BACKREF_NUM 1000 -#define ONIG_MAX_REPEAT_NUM 100000 -#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 -/* constants */ -#define ONIG_MAX_ERROR_MESSAGE_LEN 90 - -typedef unsigned int OnigOptionType; - -#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE - -/* options */ -#define ONIG_OPTION_NONE 0U -#define ONIG_OPTION_IGNORECASE 1U -#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) -#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) -#define ONIG_OPTION_DOTALL ONIG_OPTION_MULTILINE -#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) -#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) -#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) -#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) -#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) -#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) -/* options (search time) */ -#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) -#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) -#define ONIG_OPTION_NOTBOS (ONIG_OPTION_NOTEOL << 1) -#define ONIG_OPTION_NOTEOS (ONIG_OPTION_NOTBOS << 1) -/* options (ctype range) */ -#define ONIG_OPTION_ASCII_RANGE (ONIG_OPTION_NOTEOS << 1) -#define ONIG_OPTION_POSIX_BRACKET_ALL_RANGE (ONIG_OPTION_ASCII_RANGE << 1) -#define ONIG_OPTION_WORD_BOUND_ALL_RANGE (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1) -/* options (newline) */ -#define ONIG_OPTION_NEWLINE_CRLF (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1) -#define ONIG_OPTION_MAXBIT ONIG_OPTION_NEWLINE_CRLF /* limit */ - -#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) -#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) -#define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) - -/* syntax */ -typedef struct { - unsigned int op; - unsigned int op2; - unsigned int behavior; - OnigOptionType options; /* default option */ - OnigMetaCharTableType meta_char_table; -} OnigSyntaxType; - -ONIG_EXTERN const OnigSyntaxType OnigSyntaxASIS; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixBasic; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixExtended; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxEmacs; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxGrep; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxGnuRegex; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxJava; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58_NG; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxRuby; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPython; - -/* predefined syntaxes (see regsyntax.c) */ -#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) -#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) -#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) -#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) -#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) -#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) -#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) -#define ONIG_SYNTAX_PERL58 (&OnigSyntaxPerl58) -#define ONIG_SYNTAX_PERL58_NG (&OnigSyntaxPerl58_NG) -#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) -#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) -#define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython) - -/* default syntax */ -ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax; -#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax - -/* syntax (operators) */ -#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0) -#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1) /* . */ -#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2) /* * */ -#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3) -#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4) /* + */ -#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5) -#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6) /* ? */ -#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7) -#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8) /* {lower,upper} */ -#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) /* \{lower,upper\} */ -#define ONIG_SYN_OP_VBAR_ALT (1U<<10) /* | */ -#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11) /* \| */ -#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12) /* (...) */ -#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13) /* \(...\) */ -#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14) /* \A, \Z, \z */ -#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) /* \G */ -#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) /* \num */ -#define ONIG_SYN_OP_BRACKET_CC (1U<<17) /* [...] */ -#define ONIG_SYN_OP_ESC_W_WORD (1U<<18) /* \w, \W */ -#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) /* \<. \> */ -#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) /* \b, \B */ -#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) /* \s, \S */ -#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) /* \d, \D */ -#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) /* ^, $ */ -#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) /* [:xxxx:] */ -#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) /* ??,*?,+?,{n,m}? */ -#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) /* \n,\r,\t,\a ... */ -#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) /* \cx */ -#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ -#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ -#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ -#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31) /* \o{OOO} */ - -#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ -#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ -#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsxadlu), (?-imsx), (?^imsxalu) */ -#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imxadu), (?-imx) */ -#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */ -#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */ -#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */ -#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7) /* (?...) */ -#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8) /* \k */ -#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) /* \g, \g */ -#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) /* (?@..),(?@..) */ -#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) /* \C-x */ -#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) /* \M-x */ -#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) /* \v as VTAB */ -#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) /* \uHHHH */ -#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) /* \`, \' */ -#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) /* \p{...}, \P{...} */ -#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */ -/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ -#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ -#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ -#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK (1U<<21) /* \R as (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}]) */ -#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22) /* \X */ -#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE (1U<<23) /* \v, \V -- Perl */ /* NOTIMPL */ -#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24) /* \h, \H -- Perl */ /* NOTIMPL */ -#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<25) /* \K */ -#define ONIG_SYN_OP2_ESC_G_BRACE_BACKREF (1U<<26) /* \g{name}, \g{n} */ -#define ONIG_SYN_OP2_QMARK_SUBEXP_CALL (1U<<27) /* (?&name), (?n), (?R), (?0) */ -#define ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET (1U<<28) /* (?|...) */ /* NOTIMPL */ -#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION (1U<<29) /* (?(cond)yes...|no...) */ -#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30) /* (?P...), (?P=name), (?P>name) -- Python/PCRE */ -#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT (1U<<31) /* (?~...) */ -/* #define ONIG_SYN_OP2_OPTION_JAVA (1U< {0,n} */ -#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) /* /(\1)/,/\1()/ ..*/ -#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) /* (?<=a|bc) */ -#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ -#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?)(?) */ -#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ -#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10) /* (?)(?)(?&x) */ -#define ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP (1U<<11) /* (?)(?)\k */ - -/* syntax (behavior) in char class [...] */ -#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ -#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ -#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) -#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ -/* syntax (behavior) warning */ -#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ -#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ -#define ONIG_SYN_WARN_CC_DUP (1U<<26) /* [aa] */ - -/* meta character specifiers (onig_set_meta_char()) */ -#define ONIG_META_CHAR_ESCAPE 0 -#define ONIG_META_CHAR_ANYCHAR 1 -#define ONIG_META_CHAR_ANYTIME 2 -#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 -#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 -#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 - -#define ONIG_INEFFECTIVE_META_CHAR 0 - -/* error codes */ -#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) -/* normal return */ -#define ONIG_NORMAL 0 -#define ONIG_MISMATCH -1 -#define ONIG_NO_SUPPORT_CONFIG -2 - -/* internal error */ -#define ONIGERR_MEMORY -5 -#define ONIGERR_TYPE_BUG -6 -#define ONIGERR_PARSER_BUG -11 -#define ONIGERR_STACK_BUG -12 -#define ONIGERR_UNDEFINED_BYTECODE -13 -#define ONIGERR_UNEXPECTED_BYTECODE -14 -#define ONIGERR_MATCH_STACK_LIMIT_OVER -15 -#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16 -#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21 -#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 -/* general error */ -#define ONIGERR_INVALID_ARGUMENT -30 -/* syntax error */ -#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 -#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 -#define ONIGERR_EMPTY_CHAR_CLASS -102 -#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 -#define ONIGERR_END_PATTERN_AT_ESCAPE -104 -#define ONIGERR_END_PATTERN_AT_META -105 -#define ONIGERR_END_PATTERN_AT_CONTROL -106 -#define ONIGERR_META_CODE_SYNTAX -108 -#define ONIGERR_CONTROL_CODE_SYNTAX -109 -#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 -#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 -#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 -#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 -#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 -#define ONIGERR_NESTED_REPEAT_OPERATOR -115 -#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 -#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 -#define ONIGERR_END_PATTERN_IN_GROUP -118 -#define ONIGERR_UNDEFINED_GROUP_OPTION -119 -#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 -#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 -#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 -#define ONIGERR_INVALID_CONDITION_PATTERN -124 -/* values error (syntax error) */ -#define ONIGERR_TOO_BIG_NUMBER -200 -#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 -#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 -#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 -#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 -#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 -#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 -#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 -#define ONIGERR_INVALID_BACKREF -208 -#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 -#define ONIGERR_TOO_MANY_CAPTURE_GROUPS -210 -#define ONIGERR_TOO_SHORT_DIGITS -211 -#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 -#define ONIGERR_EMPTY_GROUP_NAME -214 -#define ONIGERR_INVALID_GROUP_NAME -215 -#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 -#define ONIGERR_UNDEFINED_NAME_REFERENCE -217 -#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 -#define ONIGERR_MULTIPLEX_DEFINED_NAME -219 -#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 -#define ONIGERR_NEVER_ENDING_RECURSION -221 -#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 -#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 -#define ONIGERR_INVALID_CODE_POINT_VALUE -400 -#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 -#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 -#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 -#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 - -/* errors related to thread */ -/* #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 */ - - -/* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */ -#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 -#define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ - ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) - -#ifdef USE_CAPTURE_HISTORY -typedef struct OnigCaptureTreeNodeStruct { - int group; /* group number */ - OnigPosition beg; - OnigPosition end; - int allocated; - int num_childs; - struct OnigCaptureTreeNodeStruct** childs; -} OnigCaptureTreeNode; -#endif - -/* match result region type */ -struct re_registers { - int allocated; - int num_regs; - OnigPosition* beg; - OnigPosition* end; -#ifdef USE_CAPTURE_HISTORY - /* extended */ - OnigCaptureTreeNode* history_root; /* capture history tree root */ -#endif -}; - -/* capture tree traverse */ -#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 -#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 -#define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ - ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) - - -#define ONIG_REGION_NOTPOS -1 - -typedef struct re_registers OnigRegion; - -typedef struct { - OnigEncoding enc; - OnigUChar* par; - OnigUChar* par_end; -} OnigErrorInfo; - -typedef struct { - int lower; - int upper; -} OnigRepeatRange; - -typedef void (*OnigWarnFunc)(const char* s); -extern void onig_null_warn(const char* s); -#define ONIG_NULL_WARN onig_null_warn - -#define ONIG_CHAR_TABLE_SIZE 256 - -typedef struct re_pattern_buffer { - /* common members of BBuf(bytes-buffer) */ - unsigned char* p; /* compiled pattern */ - unsigned int used; /* used space for p */ - unsigned int alloc; /* allocated space for p */ - - int num_mem; /* used memory(...) num counted from 1 */ - int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ - int num_null_check; /* OP_NULL_CHECK_START/END id counter */ - int num_comb_exp_check; /* combination explosion check */ - int num_call; /* number of subexp call */ - unsigned int capture_history; /* (?@...) flag (1-31) */ - unsigned int bt_mem_start; /* need backtrack flag */ - unsigned int bt_mem_end; /* need backtrack flag */ - int stack_pop_level; - int repeat_range_alloc; - - OnigOptionType options; - - OnigRepeatRange* repeat_range; - - OnigEncoding enc; - const OnigSyntaxType* syntax; - void* name_table; - OnigCaseFoldType case_fold_flag; - - /* optimization info (string search, char-map and anchors) */ - int optimize; /* optimize flag */ - int threshold_len; /* search str-length for apply optimize */ - int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ - OnigDistance anchor_dmin; /* (SEMI_)END_BUF anchor distance */ - OnigDistance anchor_dmax; /* (SEMI_)END_BUF anchor distance */ - int sub_anchor; /* start-anchor for exact or map */ - unsigned char *exact; - unsigned char *exact_end; - unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ - int *int_map; /* BM skip for exact_len > 255 */ - int *int_map_backward; /* BM skip for backward search */ - OnigDistance dmin; /* min-distance of exact or map */ - OnigDistance dmax; /* max-distance of exact or map */ - - /* regex_t link chain */ - struct re_pattern_buffer* chain; /* escape compile-conflict */ -} OnigRegexType; - -typedef OnigRegexType* OnigRegex; - -#ifndef ONIG_ESCAPE_REGEX_T_COLLISION -typedef OnigRegexType regex_t; -#endif - - -typedef struct { - int num_of_elements; - OnigEncoding pattern_enc; - OnigEncoding target_enc; - const OnigSyntaxType* syntax; - OnigOptionType option; - OnigCaseFoldType case_fold_flag; -} OnigCompileInfo; - -/* Oniguruma Native API */ -ONIG_EXTERN -int onig_initialize(OnigEncoding encodings[], int n); -ONIG_EXTERN -int onig_init(void); -ONIG_EXTERN -int onig_error_code_to_str(OnigUChar* s, OnigPosition err_code, ...); -ONIG_EXTERN -void onig_set_warn_func(OnigWarnFunc f); -ONIG_EXTERN -void onig_set_verb_warn_func(OnigWarnFunc f); -ONIG_EXTERN -int onig_new(OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo); -ONIG_EXTERN -int onig_reg_init(OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax); -ONIG_EXTERN -int onig_new_without_alloc(OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo); -ONIG_EXTERN -int onig_new_deluxe(OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo); -ONIG_EXTERN -void onig_free(OnigRegex); -ONIG_EXTERN -void onig_free_body(OnigRegex); -ONIG_EXTERN -OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg); -ONIG_EXTERN -OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option); -ONIG_EXTERN -OnigPosition onig_search_gpos(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option); -ONIG_EXTERN -OnigPosition onig_match(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option); -ONIG_EXTERN -OnigRegion* onig_region_new(void); -ONIG_EXTERN -void onig_region_init(OnigRegion* region); -ONIG_EXTERN -void onig_region_free(OnigRegion* region, int free_self); -ONIG_EXTERN -void onig_region_copy(OnigRegion* to, const OnigRegion* from); -ONIG_EXTERN -void onig_region_clear(OnigRegion* region); -ONIG_EXTERN -int onig_region_resize(OnigRegion* region, int n); -ONIG_EXTERN -int onig_region_set(OnigRegion* region, int at, int beg, int end); -ONIG_EXTERN -int onig_name_to_group_numbers(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums); -ONIG_EXTERN -int onig_name_to_backref_number(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, const OnigRegion *region); -ONIG_EXTERN -int onig_foreach_name(OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg); -ONIG_EXTERN -int onig_number_of_names(const OnigRegexType *reg); -ONIG_EXTERN -int onig_number_of_captures(const OnigRegexType *reg); -ONIG_EXTERN -int onig_number_of_capture_histories(const OnigRegexType *reg); -#ifdef USE_CAPTURE_HISTORY -ONIG_EXTERN -OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region); -#endif -ONIG_EXTERN -int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg); -ONIG_EXTERN -int onig_noname_group_capture_is_active(const OnigRegexType *reg); -ONIG_EXTERN -OnigEncoding onig_get_encoding(const OnigRegexType *reg); -ONIG_EXTERN -OnigOptionType onig_get_options(const OnigRegexType *reg); -ONIG_EXTERN -OnigCaseFoldType onig_get_case_fold_flag(const OnigRegexType *reg); -ONIG_EXTERN -const OnigSyntaxType* onig_get_syntax(const OnigRegexType *reg); -ONIG_EXTERN -int onig_set_default_syntax(const OnigSyntaxType* syntax); -ONIG_EXTERN -void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from); -ONIG_EXTERN -unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax); -ONIG_EXTERN -unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax); -ONIG_EXTERN -unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax); -ONIG_EXTERN -OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax); -ONIG_EXTERN -void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op); -ONIG_EXTERN -void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2); -ONIG_EXTERN -void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior); -ONIG_EXTERN -void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options); -ONIG_EXTERN -int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code); -ONIG_EXTERN -void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from); -ONIG_EXTERN -OnigCaseFoldType onig_get_default_case_fold_flag(void); -ONIG_EXTERN -int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag); -ONIG_EXTERN -unsigned int onig_get_match_stack_limit_size(void); -ONIG_EXTERN -int onig_set_match_stack_limit_size(unsigned int size); -ONIG_EXTERN -unsigned int onig_get_parse_depth_limit(void); -ONIG_EXTERN -int onig_set_parse_depth_limit(unsigned int depth); -ONIG_EXTERN -int onig_end(void); -ONIG_EXTERN -const char* onig_version(void); -ONIG_EXTERN -const char* onig_copyright(void); - -RUBY_SYMBOL_EXPORT_END - -#ifdef __cplusplus -# if 0 -{ /* satisfy cc-mode */ -# endif -} -#endif - -#endif /* ONIGMO_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/oniguruma.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/oniguruma.h deleted file mode 100644 index dc83754..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/oniguruma.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef ONIGURUMA_H -#define ONIGURUMA_H -#include "onigmo.h" -#define ONIGURUMA -#define ONIGURUMA_VERSION_MAJOR ONIGMO_VERSION_MAJOR -#define ONIGURUMA_VERSION_MINOR ONIGMO_VERSION_MINOR -#define ONIGURUMA_VERSION_TEENY ONIGMO_VERSION_TEENY -#endif /* ONIGURUMA_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ractor.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ractor.h deleted file mode 100644 index 7811616..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ractor.h +++ /dev/null @@ -1,264 +0,0 @@ -#ifndef RUBY_RACTOR_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_RACTOR_H 1 - -/** - * @file - * @author Koichi Sasada - * @date Tue Nov 17 16:39:15 2020 - * @copyright Copyright (C) 2020 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "internal/dllexport.h" /* RUBY_EXTERN is here */ -#include "internal/fl_type.h" /* FL_TEST_RAW is here */ -#include "internal/special_consts.h" /* RB_SPECIAL_CONSTS_P is here */ -#include "internal/stdbool.h" /* bool is here */ -#include "internal/value.h" /* VALUE is here */ - -/** Type that defines a ractor-local storage. */ -struct rb_ractor_local_storage_type { - - /** - * A function to mark a ractor-local storage. - * - * @param[out] ptr A ractor-local storage. - * @post Ruby objects inside of `ptr` are marked. - */ - void (*mark)(void *ptr); - - /** - * A function to destruct a ractor-local storage. - * - * @param[out] ptr A ractor-local storage. - * @post `ptr` is not a valid pointer. - */ - void (*free)(void *ptr); - // TODO: update -}; - -/** (Opaque) struct that holds a ractor-local storage key. */ -typedef struct rb_ractor_local_key_struct *rb_ractor_local_key_t; - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * `Ractor` class. - * - * @ingroup object - */ -RUBY_EXTERN VALUE rb_cRactor; - -/** - * Queries the standard input of the current Ractor that is calling this - * function. - * - * @return An IO. - * @note This can be different from the process-global one. - */ -VALUE rb_ractor_stdin(void); - -/** - * Queries the standard output of the current Ractor that is calling this - * function. - * - * @return An IO. - * @note This can be different from the process-global one. - */ -VALUE rb_ractor_stdout(void); - -/** - * Queries the standard error of the current Ractor that is calling this - * function. - * - * @return An IO. - * @note This can be different from the process-global one. - */ -VALUE rb_ractor_stderr(void); - -/** - * Assigns an IO to the standard input of the Ractor that is calling this - * function. - * - * @param[in] io An IO. - * @post `io` is the standard input of the current ractor. - * @post In case the calling Ractor is the main Ractor, it also updates - * the process global ::rb_stdin. - */ -void rb_ractor_stdin_set(VALUE io); - -/** - * Assigns an IO to the standard output of the Ractor that is calling this - * function. - * - * @param[in] io An IO. - * @post `io` is the standard input of the current ractor. - * @post In case the calling Ractor is the main Ractor, it also updates - * the process global ::rb_stdout. - */ -void rb_ractor_stdout_set(VALUE io); - -/** - * Assigns an IO to the standard error of the Ractor that is calling this - * function. - * - * @param[in] io An IO. - * @post `io` is the standard input of the current ractor. - * @post In case the calling Ractor is the main Ractor, it also updates - * the process global ::rb_stderr. - */ -void rb_ractor_stderr_set(VALUE io); - -/** - * Issues a new key. - * - * @return A newly issued ractor-local storage key. Keys issued using this - * key can be associated to a Ruby object per Ractor. - */ -rb_ractor_local_key_t rb_ractor_local_storage_value_newkey(void); - -/** - * Queries the key. - * - * @param[in] key A ractor-local storage key to lookup. - * @retval RUBY_Qnil No such key. - * @retval otherwise A value corresponds to `key` in the current Ractor. - * @note This cannot distinguish between a nonexistent key and a key - * exists and corresponds to ::RUBY_Qnil. - */ -VALUE rb_ractor_local_storage_value(rb_ractor_local_key_t key); - -/** - * Queries the key. - * - * @param[in] key A ractor-local storage key to lookup. - * @param[out] val Return value buffer. - * @retval false `key` not found. - * @retval true `key` found. - * @post `val` is updated so that it has the value corresponds to `key` - * in the current Ractor. - */ -bool rb_ractor_local_storage_value_lookup(rb_ractor_local_key_t key, VALUE *val); - -/** - * Associates the passed value to the passed key. - * - * @param[in] key A ractor-local storage key. - * @param[in] val Arbitrary ruby object. - * @post `val` corresponds to `key` in the current Ractor. - */ -void rb_ractor_local_storage_value_set(rb_ractor_local_key_t key, VALUE val); - -/** - * A type of ractor-local storage that destructs itself using ::ruby_xfree. - * - * @internal - * - * Why it is visible from 3rd party extension libraries is not obvious to - * @shyouhei. - */ -RUBY_EXTERN const struct rb_ractor_local_storage_type rb_ractor_local_storage_type_free; - -/** @alias{rb_ractor_local_storage_type_free} */ -#define RB_RACTOR_LOCAL_STORAGE_TYPE_FREE (&rb_ractor_local_storage_type_free) - -/** - * Extended version of rb_ractor_local_storage_value_newkey(). It additionally - * takes the type of the issuing key. - * - * @param[in] type How the value associated with the issuing key should - * behave. - * @return A newly issued ractor-local storage key, of type `type`. - */ -rb_ractor_local_key_t rb_ractor_local_storage_ptr_newkey(const struct rb_ractor_local_storage_type *type); - -/** - * Identical to rb_ractor_local_storage_value() except the return type. - * - * @param[in] key A ractor-local storage key to lookup. - * @retval NULL No such key. - * @retval otherwise A value corresponds to `key` in the current Ractor. - */ -void *rb_ractor_local_storage_ptr(rb_ractor_local_key_t key); - -/** - * Identical to rb_ractor_local_storage_value_set() except the parameter type. - * - * @param[in] key A ractor-local storage key. - * @param[in] ptr A pointer that conforms `key`'s type. - * @post `ptr` corresponds to `key` in the current Ractor. - */ -void rb_ractor_local_storage_ptr_set(rb_ractor_local_key_t key, void *ptr); - -/** - * Destructively transforms the passed object so that multiple Ractors can - * share it. What is a shareable object and what is not is a nuanced concept, - * and @ko1 says the definition can still change. However extension library - * authors might interest to learn how to use #RUBY_TYPED_FROZEN_SHAREABLE. - * - * @param[out] obj Arbitrary ruby object to modify. - * @exception rb_eRactorError Ractors cannot share `obj` by nature. - * @return Passed `obj`. - * @post Multiple Ractors can share `obj`. - * - * @internal - * - * In case an exception is raised, `obj` remains in an intermediate state where - * some of its part is frozen and others are not. @shyouhei is not sure if it - * is either an intended behaviour, current implementation limitation, or - * simply a bug. Note also that there is no way to "melt" a frozen object. - */ -VALUE rb_ractor_make_shareable(VALUE obj); - -/** - * Identical to rb_ractor_make_shareable(), except it returns a (deep) copy of - * the passed one instead of modifying it in-place. - * - * @param[in] obj Arbitrary ruby object to duplicate. - * @exception rb_eRactorError Ractors cannot share `obj` by nature. - * @return A deep copy of `obj` which is sharable among Ractors. - */ -VALUE rb_ractor_make_shareable_copy(VALUE obj); - -RBIMPL_SYMBOL_EXPORT_END() - -/** - * Queries if the passed object has previously classified as shareable or not. - * This doesn't mean anything in practice... Objects can be shared later. - * Always use rb_ractor_shareable_p() instead. - * - * @param[in] obj Object in question. - * @retval RUBY_FL_SHAREABLE It once was shareable before. - * @retval 0 Otherwise. - */ -#define RB_OBJ_SHAREABLE_P(obj) FL_TEST_RAW((obj), RUBY_FL_SHAREABLE) - -/** - * Queries if multiple Ractors can share the passed object or not. Ractors run - * without protecting each other. Sharing an object among them is basically - * dangerous, disabled by default. However there are objects that are - * extremely carefully implemented to be Ractor-safe; for instance integers - * have such property. This function can classify that. - * - * @param[in] obj Arbitrary ruby object. - * @retval true `obj` is capable of shared across ractors. - * @retval false `obj` cannot travel across ractor boundaries. - */ -static inline bool -rb_ractor_shareable_p(VALUE obj) -{ - bool rb_ractor_shareable_p_continue(VALUE obj); - - if (RB_SPECIAL_CONST_P(obj)) { - return true; - } - else if (RB_OBJ_SHAREABLE_P(obj)) { - return true; - } - else { - return rb_ractor_shareable_p_continue(obj); - } -} - -#endif /* RUBY_RACTOR_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/random.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/random.h deleted file mode 100644 index 657b37f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/random.h +++ /dev/null @@ -1,304 +0,0 @@ -#ifndef RUBY_RANDOM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_RANDOM_H 1 -/** - * @file - * @date Sat May 7 11:51:14 JST 2016 - * @copyright 2007-2020 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * - * This is a set of APIs to roll your own subclass of ::rb_cRandom. An - * illustrative example of such PRNG can be found at - * `ext/-test-/ramdom/loop.c`. - */ - -#include "ruby/ruby.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Base components of the random interface. - * - * @internal - * - * Ideally this could be an empty class if we could assume C++, but in C a - * struct must have at least one field. - */ -struct rb_random_struct { - /** Seed, passed through e.g. `Random.new` */ - VALUE seed; -}; -typedef struct rb_random_struct rb_random_t; /**< @see ::rb_random_struct */ - -RBIMPL_ATTR_NONNULL(()) -/** - * This is the type of functions called when your random object is initialised. - * Passed buffer is the seed object basically. But in Ruby a number can be - * really big. This type of functions accept such big integers as a series of - * machine words. - * - * @param[out] rng Your random struct to fill in. - * @param[in] buf Seed, maybe converted from a bignum. - * @param[in] len Number of words of `buf`. - * @post `rng` is initialised using the passed seeds. - */ -typedef void rb_random_init_func(rb_random_t *rng, const uint32_t *buf, size_t len); - -RBIMPL_ATTR_NONNULL(()) -/** - * This is the type of functions called from your object's `#rand` method. - * - * @param[out] rng Your random struct to extract an integer from. - * @return A random number. - * @post `rng` is consumed somehow. - */ -typedef unsigned int rb_random_get_int32_func(rb_random_t *rng); - -RBIMPL_ATTR_NONNULL(()) -/** - * This is the type of functions called from your object's `#bytes` method. - * - * @param[out] rng Your random struct to extract an integer from. - * @param[out] buf Return buffer of at least `len` bytes length. - * @param[in] len Number of bytes of `buf`. - * @post `rng` is consumed somehow. - * @post `buf` is filled with random bytes. - */ -typedef void rb_random_get_bytes_func(rb_random_t *rng, void *buf, size_t len); - -RBIMPL_ATTR_NONNULL(()) -/** - * This is the type of functions called from your object's `#rand` method. - * - * @param[out] rng Your random struct to extract an integer from. - * @param[in] excl Pass nonzero value here to indicate you don't want 1.0. - * @return A random number of range 0.0 to 1.0. - * @post `rng` is consumed somehow. - */ -typedef double rb_random_get_real_func(rb_random_t *rng, int excl); - -/** PRNG algorithmic interface, analogous to Ruby level classes. */ -typedef struct { - /** Number of bits of seed numbers. */ - size_t default_seed_bits; - - /** Initialiser function. */ - rb_random_init_func *init; - - /** Function to obtain a random integer. */ - rb_random_get_int32_func *get_int32; - - /** - * Function to obtain a series of random bytes. If your PRNG have a native - * method to yield arbitrary number of bytes use that to implement this. - * But in case you lack such things, you can do so by using - * rb_rand_bytes_int32() - * - * ```CXX - * extern rb_random_get_int32_func your_get_int32_func; - * - * void - * your_get_byes_func(rb_random_t *rng, void *buf, size_t len) - * { - * rb_rand_bytes_int32(your_get_int32_func, rng, buf, len); - * } - * ``` - */ - rb_random_get_bytes_func *get_bytes; - - /** - * Function to obtain a random double. If your PRNG have a native method - * to yield a floating point random number use that to implement this. But - * in case you lack such things, you can do so by using - * rb_int_pair_to_real(). - * - * ```CXX - * extern rb_random_get_int32_func your_get_int32_func; - * - * void - * your_get_real_func(rb_random_t *rng, int excl) - * { - * auto a = your_get_int32_func(rng); - * auto b = your_get_int32_func(rng); - * return rb_int_pair_to_real(a, b, excl); - * } - * ``` - */ - rb_random_get_real_func *get_real; -} rb_random_interface_t; - -/** - * This utility macro defines 3 functions named prefix_init, prefix_get_int32, - * prefix_get_bytes. - */ -#define RB_RANDOM_INTERFACE_DECLARE(prefix) \ - static void prefix##_init(rb_random_t *, const uint32_t *, size_t); \ - static unsigned int prefix##_get_int32(rb_random_t *); \ - static void prefix##_get_bytes(rb_random_t *, void *, size_t) - -/** - * Identical to #RB_RANDOM_INTERFACE_DECLARE except it also declares - * prefix_get_real. - */ -#define RB_RANDOM_INTERFACE_DECLARE_WITH_REAL(prefix) \ - RB_RANDOM_INTERFACE_DECLARE(prefix); \ - static double prefix##_get_real(rb_random_t *, int) - -/** - * This utility macro expands to the names declared using - * #RB_RANDOM_INTERFACE_DECLARE. Expected to be used inside of a - * ::rb_random_interface_t initialiser: - * - * ```CXX - * RB_RANDOM_INTERFACE_DECLARE(foo); - * - * static inline constexpr rb_random_interface_t foo_interface = { - * 32768, // bits - * RB_RANDOM_INTERFACE_DEFINE(foo), - * }; - * ``` - */ -#define RB_RANDOM_INTERFACE_DEFINE(prefix) \ - prefix##_init, \ - prefix##_get_int32, \ - prefix##_get_bytes - -/** - * Identical to #RB_RANDOM_INTERFACE_DEFINE except it also defines - * prefix_get_real. - */ -#define RB_RANDOM_INTERFACE_DEFINE_WITH_REAL(prefix) \ - RB_RANDOM_INTERFACE_DEFINE(prefix), \ - prefix##_get_real - -#if defined _WIN32 && !defined __CYGWIN__ -typedef rb_data_type_t rb_random_data_type_t; -# define RB_RANDOM_PARENT 0 -#else - -/** This is the type of ::rb_random_data_type. */ -typedef const rb_data_type_t rb_random_data_type_t; - -/** - * This utility macro can be used when you define your own PRNG type: - * - * ```CXX - * static inline constexpr rb_random_interface_t your_if = { - * 0, RB_RANDOM_INTERFACE_DEFINE(your), - * }; - * - * static inline constexpr your_prng = { - * "your PRNG", - * { rb_random_mark, }, - * RB_RANDOM_PARENT, // <<-- HERE - * &your_if, - * 0, - * } - * ``` - */ -# define RB_RANDOM_PARENT &rb_random_data_type -#endif - -/** - * This macro is expected to be called exactly once at the beginning of a - * program, possibly from inside of your `Init_Foo()` function. Depending on - * platforms #RB_RANDOM_PARENT can require a fixup. This routine does that - * when necessary. - */ -#define RB_RANDOM_DATA_INIT_PARENT(random_data) \ - rbimpl_random_data_init_parent(&random_data) - -/** - * This is the implementation of ::rb_data_type_struct::dmark for - * ::rb_random_data_type. In case your PRNG does not involve Ruby objects at - * all (which is quite likely), you can simply reuse it. - * - * @param[out] ptr Target to mark, which is a ::rb_random_t this case. - */ -void rb_random_mark(void *ptr); - -/** - * Initialises an allocated ::rb_random_t instance. Call it from your own - * initialiser appropriately. - * - * @param[out] rnd Your PRNG's base part. - * @post `rnd` is filled with an initial state. - */ -void rb_random_base_init(rb_random_t *rnd); - -/** - * Generates a 64 bit floating point number by concatenating two 32bit unsigned - * integers. - * - * @param[in] a Most significant 32 bits of the result. - * @param[in] b Least significant 32 bits of the result. - * @param[in] excl Whether the result should exclude 1.0 or not. - * @return A double, whose range is either `[0, 1)` or `[0, 1]`. - * @see ::rb_random_interface_t::get_real() - * - * @internal - * - * This in fact has nothing to do with PRNGs. - */ -double rb_int_pair_to_real(uint32_t a, uint32_t b, int excl); - -/** - * Repeatedly calls the passed function over and over again until the passed - * buffer is filled with random bytes. - * - * @param[in] func Generator function. - * @param[out] prng Passed as-is to `func`. - * @param[out] buff Return buffer. - * @param[in] size Number of words of `buff`. - * @post `buff` is filled with random bytes. - * @post `prng` is updated by `func`. - * @see ::rb_random_interface_t::get_bytes() - */ -void rb_rand_bytes_int32(rb_random_get_int32_func *func, rb_random_t *prng, void *buff, size_t size); - -/** - * The data that holds the backend type of ::rb_cRandom. Used as your PRNG's - * ::rb_data_type_struct::parent. - */ -RUBY_EXTERN const rb_data_type_t rb_random_data_type; - -RBIMPL_SYMBOL_EXPORT_END() - -RBIMPL_ATTR_PURE_UNLESS_DEBUG() -/* :TODO: can this function be __attribute__((returns_nonnull)) or not? */ -/** - * Queries the interface of the passed random object. - * - * @param[in] obj An instance (of a subclass) of ::rb_cRandom. - * @return Its corresponding ::rb_random_interface_t interface. - */ -static inline const rb_random_interface_t * -rb_rand_if(VALUE obj) -{ - RBIMPL_ASSERT_OR_ASSUME(RTYPEDDATA_P(obj)); - const struct rb_data_type_struct *t = RTYPEDDATA_TYPE(obj); - const void *ret = t->data; - return RBIMPL_CAST((const rb_random_interface_t *)ret); -} - -RBIMPL_ATTR_NOALIAS() -/** - * @private - * - * This is an implementation detail of #RB_RANDOM_DATA_INIT_PARENT. People - * don't use it directly. - * - * @param[out] random_data Region to fill. - * @post ::rb_random_data_type is filled appropriately. - */ -static inline void -rbimpl_random_data_init_parent(rb_random_data_type_t *random_data) -{ -#if defined _WIN32 && !defined __CYGWIN__ - random_data->parent = &rb_random_data_type; -#endif -} - -#endif /* RUBY_RANDOM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/re.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/re.h deleted file mode 100644 index 3892d6e..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/re.h +++ /dev/null @@ -1,147 +0,0 @@ -#ifndef RUBY_RE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_RE_H 1 -/** - * @file - * @author $Author$ - * @date Thu Sep 30 14:18:32 JST 1993 - * @copyright Copyright (C) 1993-2007 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "ruby/internal/config.h" - -#ifdef HAVE_SYS_TYPES_H -# include -#endif - -#include - -#include "ruby/regex.h" -#include "ruby/internal/core/rmatch.h" -#include "ruby/internal/dllexport.h" - -struct re_registers; /* Defined in onigmo.h */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Creates a new instance of ::rb_cRegexp. It can be seen as a specialised - * version of rb_reg_new_str() where it does not take options. - * - * @param[in] str Source code in String. - * @return Allocated new instance of ::rb_cRegexp. - */ -VALUE rb_reg_regcomp(VALUE str); - -/** - * Runs the passed regular expression over the passed string. Unlike - * rb_reg_search() this function also takes position and direction of the - * search, which make it possible for this function to run from in middle of - * the string. - * - * @param[in] re Regular expression to execute. - * @param[in] str Target string to search. - * @param[in] pos Offset in `str` to start searching, in bytes. - * @param[in] dir `pos`' direction; 0 means left-to-right, 1 for - * the opposite. - * @exception rb_eArgError `re` is broken. - * @exception rb_eRegexpError `re` is malformed. - * @retval -1 Match failed. - * @retval otherwise Offset of first such byte where match happened. - * @post `Regexp.last_match` is updated. - * @post `$&`, `$~`, etc., are updated. - * - * @internal - * - * Distinction between raising ::rb_eArgError and ::rb_eRegexpError is not - * obvious, at least to @shyouhei. - */ -long rb_reg_search(VALUE re, VALUE str, long pos, int dir); - -/** - * Substitution. This is basically the implementation of `String#sub`. Also - * `String#gsub` repeatedly calls this function. - * - * @param[in] repl Replacement string, e.g. `"\\1\\2"` - * @param[in] src Source string, to be replaced. - * @param[in] regs Matched data generated by applying `rexp` to `src`. - * @param[in] rexp Regular expression. - * @return A substituted string. - * - * @internal - * - * This function does not check for encoding compatibility. `String#sub!` - * etc. employ their own checker. - * - * `regs` should have been `const struct re_registers *` because it is read - * only. Kept as-is for compatibility. - */ -VALUE rb_reg_regsub(VALUE repl, VALUE src, struct re_registers *regs, VALUE rexp); - -/** - * Tell us if this is a wrong idea, but it seems this function has no usage at - * all. Just remains here for theoretical backwards compatibility. - * - * @param[in] re Regular expression to execute. - * @param[in] str Target string to search. - * @param[in] pos Offset in `str` to start searching, in bytes. - * @param[in] dir `pos`' direction; 0 means left-to-right, 1 for - * the opposite. - * @return Adjusted nearest offset to `pos` inside of `str`, where is a - * character boundary. - * - */ -long rb_reg_adjust_startpos(VALUE re, VALUE str, long pos, int dir); - -/** - * Escapes any characters that would have special meaning in a regular - * expression. - * - * @param[in] str Target string to escape. - * @return A copy of `str` whose contents are escaped. - */ -VALUE rb_reg_quote(VALUE str); - -/** - * Exercises various checks and preprocesses so that the given regular - * expression can be applied to the given string. The preprocess here includes - * (but not limited to) for instance encoding conversion. - * - * @param[in] re Target regular expression. - * @param[in] str What `re` is about to run on. - * @exception rb_eArgError `re` does not fit for `str`. - * @exception rb_eEncCompatError `re` and `str` are incompatible. - * @exception rb_eRegexpError `re` is malformed. - * @return A preprocessesed pattern buffer ready to be applied to `str`. - * @note The return value is manages by our GC. Don't free. - * - * @internal - * - * The return type, `regex_t *`, is defined in ``, _and_ - * _conflicts_ with POSIX's ``. We can no longer save the situation - * at this point. Just don't mix the two. - */ -regex_t *rb_reg_prepare_re(VALUE re, VALUE str); - -/** - * Duplicates a match data. This is roughly the same as `onig_region_copy()`, - * except it tries to GC when there is not enough memory. - * - * @param[out] dst Target registers to fill. - * @param[in] src Source registers to duplicate. - * @exception rb_eNoMemError Not enough memory. - * @retval 0 Successful - * @retval ONIGERR_MEMORY Not enough memory, even after GC (unlikely). - * @post `dst` has identical contents to `src`. - * - * @internal - * - * It seems this function is here for `ext/strscan` and nothing else. - */ -int rb_reg_region_copy(struct re_registers *dst, const struct re_registers *src); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_RE_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/regex.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/regex.h deleted file mode 100644 index 5327817..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/regex.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef ONIGURUMA_REGEX_H /*-*-C++-*-vi:se ft=cpp:*/ -#define ONIGURUMA_REGEX_H 1 -/** - * @author $Author$ - * @copyright Copyright (C) 1993-2007 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#if defined(__cplusplus) -extern "C" { -#if 0 -} /* satisfy cc-mode */ -#endif -#endif - -#ifdef RUBY -#include "ruby/oniguruma.h" -#else -#include "oniguruma.h" -#endif - -RUBY_SYMBOL_EXPORT_BEGIN - -#ifndef ONIG_RUBY_M17N - -ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; - -#define mbclen(p,e,enc) rb_enc_mbclen((p),(e),(enc)) - -#endif /* ifndef ONIG_RUBY_M17N */ - -RUBY_SYMBOL_EXPORT_END - -#if defined(__cplusplus) -#if 0 -{ /* satisfy cc-mode */ -#endif -} /* extern "C" { */ -#endif - -#endif /* ONIGURUMA_REGEX_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ruby.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ruby.h deleted file mode 100644 index f35d136..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/ruby.h +++ /dev/null @@ -1,311 +0,0 @@ -#ifndef RUBY_RUBY_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_RUBY_H 1 -/** - * @file - * @author $Author$ - * @date Thu Jun 10 14:26:32 JST 1993 - * @copyright Copyright (C) 1993-2008 Yukihiro Matsumoto - * @copyright Copyright (C) 2000 Network Applied Communication Laboratory, Inc. - * @copyright Copyright (C) 2000 Information-technology Promotion Agency, Japan - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "ruby/internal/config.h" - -/* @shyouhei doesn't understand why we need at this very - * beginning of the entire circus. */ -#ifdef HAVE_INTRINSICS_H -# include -#endif - -#include - -#include "defines.h" -#include "ruby/internal/anyargs.h" -#include "ruby/internal/arithmetic.h" -#include "ruby/internal/core.h" -#include "ruby/internal/ctype.h" -#include "ruby/internal/dllexport.h" -#include "ruby/internal/error.h" -#include "ruby/internal/eval.h" -#include "ruby/internal/event.h" -#include "ruby/internal/fl_type.h" -#include "ruby/internal/gc.h" -#include "ruby/internal/glob.h" -#include "ruby/internal/globals.h" -#include "ruby/internal/has/warning.h" -#include "ruby/internal/interpreter.h" -#include "ruby/internal/iterator.h" -#include "ruby/internal/memory.h" -#include "ruby/internal/method.h" -#include "ruby/internal/module.h" -#include "ruby/internal/newobj.h" -#include "ruby/internal/rgengc.h" -#include "ruby/internal/scan_args.h" -#include "ruby/internal/special_consts.h" -#include "ruby/internal/symbol.h" -#include "ruby/internal/value.h" -#include "ruby/internal/value_type.h" -#include "ruby/internal/variable.h" -#include "ruby/assert.h" -#include "ruby/backward/2/assume.h" -#include "ruby/backward/2/inttypes.h" -#include "ruby/backward/2/limits.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/* Module#methods, #singleton_methods and so on return Symbols */ -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define USE_SYMBOL_AS_METHOD_NAME 1 - -/** - * Converts an object to a path. It first tries `#to_path` method if any, then - * falls back to `#to_str` method. - * - * @param[in] obj Arbitrary ruby object. - * @exception rb_eArgError `obj` contains a NUL byte. - * @exception rb_eTypeError `obj` is not path-ish. - * @exception rb_eEncCompatError No encoding conversion from `obj` to path. - * @return Converted path object. - */ -VALUE rb_get_path(VALUE obj); - -/** - * Ensures that the parameter object is a path. - * - * @param[in,out] v Arbitrary ruby object. - * @exception rb_eArgError `v` contains a NUL byte. - * @exception rb_eTypeError `v` is not path-ish. - * @exception rb_eEncCompatError `v` is not path-compatible. - * @post `v` is a path. - */ -#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v)) - -/** - * @deprecated This function is an alias of rb_get_path() now. The part that - * did "no_checksafe" was deleted. It remains here because of no - * harm. - */ -VALUE rb_get_path_no_checksafe(VALUE); - -/** - * @deprecated This macro is an alias of #FilePathValue now. The part that did - * "String" was deleted. It remains here because of no harm. - */ -#define FilePathStringValue(v) ((v) = rb_get_path(v)) - -/** @cond INTERNAL_MACRO */ -#if defined(HAVE_BUILTIN___BUILTIN_CONSTANT_P) && defined(HAVE_STMT_AND_DECL_IN_EXPR) -# define rb_varargs_argc_check_runtime(argc, vargc) \ - (((argc) <= (vargc)) ? (argc) : \ - (rb_fatal("argc(%d) exceeds actual arguments(%d)", \ - argc, vargc), 0)) -# define rb_varargs_argc_valid_p(argc, vargc) \ - ((argc) == 0 ? (vargc) <= 1 : /* [ruby-core:85266] [Bug #14425] */ \ - (argc) == (vargc)) -# if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P) -# ifdef HAVE_ATTRIBUTE_ERRORFUNC -ERRORFUNC((" argument length doesn't match"), int rb_varargs_bad_length(int,int)); -# else -# define rb_varargs_bad_length(argc, vargc) \ - ((argc)/rb_varargs_argc_valid_p(argc, vargc)) -# endif -# define rb_varargs_argc_check(argc, vargc) \ - __builtin_choose_expr(__builtin_constant_p(argc), \ - (rb_varargs_argc_valid_p(argc, vargc) ? (argc) : \ - rb_varargs_bad_length(argc, vargc)), \ - rb_varargs_argc_check_runtime(argc, vargc)) -# else -# define rb_varargs_argc_check(argc, vargc) \ - rb_varargs_argc_check_runtime(argc, vargc) -# endif -#endif -/** @endcond */ - -/** - * Queries the name of the passed class. - * - * @param[in] klass An instance of a class. - * @return The name of `klass`. - * @note Return value is managed by our GC. Don't free. - */ -const char *rb_class2name(VALUE klass); - -/** - * Queries the name of the class of the passed object. - * - * @param[in] obj Arbitrary ruby object. - * @return The name of the class of `obj`. - * @note Return value is managed by our GC. Don't free. - */ -const char *rb_obj_classname(VALUE obj); - -/** - * Inspects an object. It first calls the argument's `#inspect` method, then - * feeds its result string into ::rb_stdout. - * - * This is identical to Ruby level `Kernel#p`, except it takes only one object. - * - * @internal - * - * Above description is in fact inaccurate. This API interfaces with Ractors. - */ -void rb_p(VALUE obj); - -/** - * This function is an optimised version of calling `#==`. It checks equality - * between two objects by first doing a fast identity check using using C's - * `==` (same as `BasicObject#equal?`). If that check fails, it calls `#==` - * dynamically. This optimisation actually affects semantics, because when - * `#==` returns false for the same object obj, `rb_equal(obj, obj)` would - * still return true. This happens for `Float::NAN`, where `Float::NAN == - * Float::NAN` is `false`, but `rb_equal(Float::NAN, Float::NAN)` is `true`. - * - * @param[in] lhs Comparison LHS. - * @param[in] rhs Comparison RHS. - * @retval RUBY_Qtrue They are the same. - * @retval RUBY_Qfalse They are different. - */ -VALUE rb_equal(VALUE lhs, VALUE rhs); - -/** - * Identical to rb_require_string(), except it takes C's string instead of - * Ruby's. - * - * @param[in] feature Name of a feature, e.g. `"json"`. - * @exception rb_eLoadError No such feature. - * @exception rb_eRuntimeError `$"` is frozen; unable to push. - * @retval RUBY_Qtrue The feature is loaded for the first time. - * @retval RUBY_Qfalse The feature has already been loaded. - * @post `$"` is updated. - */ -VALUE rb_require(const char *feature); - -#include "ruby/intern.h" - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RUBY_VM 1 /* YARV */ - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define HAVE_NATIVETHREAD - -/** - * Queries if the thread which calls this function is a ruby's thread. - * "Ruby's" in this context is a thread created using one of our APIs like - * rb_thread_create(). There are distinctions between ruby's and other - * threads. For instance calling ruby methods are allowed only from inside of - * a ruby's thread. - * - * @retval 1 The current thread is a Ruby's thread. - * @retval 0 The current thread is a random thread from outside of Ruby. - */ -int ruby_native_thread_p(void); - -/** - * @private - * - * This macro is for internal use. Must be a mistake to place here. - */ -#define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();} - -RBIMPL_ATTR_NONNULL((3)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4) -/** - * Our own locale-insensitive version of `snprintf(3)`. It can also be seen as - * a routine identical to rb_sprintf(), except it writes back to the passed - * buffer instead of allocating a new Ruby object. - * - * @param[out] str Return buffer - * @param[in] n Number of bytes of `str`. - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ... Variadic number of contents to format. - * @return Number of bytes that would have been written to `str`, if `n` - * was large enough. Comparing this to `n` can give you insights - * that the buffer is too small or too big. Especially passing 0 - * to `n` gives you the exact number of bytes necessary to hold - * the result string without writing anything to anywhere. - * @post `str` holds up to `n-1` bytes of formatted contents (and the - * terminating NUL character.) - */ -int ruby_snprintf(char *str, size_t n, char const *fmt, ...); - -RBIMPL_ATTR_NONNULL((3)) -RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 0) -/** - * Identical to ruby_snprintf(), except it takes a `va_list`. It can also be - * seen as a routine identical to rb_vsprintf(), except it writes back to the - * passed buffer instead of allocating a new Ruby object. - * - * @param[out] str Return buffer - * @param[in] n Number of bytes of `str`. - * @param[in] fmt A `printf`-like format specifier. - * @param[in] ap Contents to format. - * @return Number of bytes that would have been written to `str`, if `n` - * was large enough. Comparing this to `n` can give you insights - * that the buffer is too small or too big. Especially passing 0 - * to `n` gives you the exact number of bytes necessary to hold - * the result string without writing anything to anywhere. - * @post `str` holds up to `n-1` bytes of formatted contents (and the - * terminating NUL character.) - */ -int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap); - -/** @cond INTERNAL_MACRO */ -#if RBIMPL_HAS_WARNING("-Wgnu-zero-variadic-macro-arguments") -# /* Skip it; clang -pedantic doesn't like the following */ -#elif defined(__GNUC__) && defined(HAVE_VA_ARGS_MACRO) && defined(__OPTIMIZE__) -# define rb_yield_values(argc, ...) \ -__extension__({ \ - const int rb_yield_values_argc = (argc); \ - const VALUE rb_yield_values_args[] = {__VA_ARGS__}; \ - const int rb_yield_values_nargs = \ - (int)(sizeof(rb_yield_values_args) / sizeof(VALUE)); \ - rb_yield_values2( \ - rb_varargs_argc_check(rb_yield_values_argc, rb_yield_values_nargs), \ - rb_yield_values_nargs ? rb_yield_values_args : NULL); \ - }) - -# define rb_funcall(recv, mid, argc, ...) \ -__extension__({ \ - const int rb_funcall_argc = (argc); \ - const VALUE rb_funcall_args[] = {__VA_ARGS__}; \ - const int rb_funcall_nargs = \ - (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); \ - rb_funcallv(recv, mid, \ - rb_varargs_argc_check(rb_funcall_argc, rb_funcall_nargs), \ - rb_funcall_nargs ? rb_funcall_args : NULL); \ - }) -#endif -/** @endcond */ - -#ifndef RUBY_DONT_SUBST -#include "ruby/subst.h" -#endif - -#if !defined RUBY_EXPORT && !defined RUBY_NO_OLD_COMPATIBILITY -# include "ruby/backward.h" -#endif - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_RUBY_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/st.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/st.h deleted file mode 100644 index 1e4bb80..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/st.h +++ /dev/null @@ -1,197 +0,0 @@ -/* This is a public domain general purpose hash table package - originally written by Peter Moore @ UCB. - - The hash table data structures were redesigned and the package was - rewritten by Vladimir Makarov . */ - -#ifndef RUBY_ST_H -#define RUBY_ST_H 1 - -#if defined(__cplusplus) -extern "C" { -#if 0 -} /* satisfy cc-mode */ -#endif -#endif - -#include "ruby/defines.h" - -RUBY_SYMBOL_EXPORT_BEGIN - -#if SIZEOF_LONG == SIZEOF_VOIDP -typedef unsigned long st_data_t; -#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP -typedef unsigned LONG_LONG st_data_t; -#else -# error ---->> st.c requires sizeof(void*) == sizeof(long) or sizeof(LONG_LONG) to be compiled. <<---- -#endif -#define ST_DATA_T_DEFINED - -#ifndef CHAR_BIT -# ifdef HAVE_LIMITS_H -# include -# else -# define CHAR_BIT 8 -# endif -#endif -#ifndef _ -# define _(args) args -#endif -#ifndef ANYARGS -# ifdef __cplusplus -# define ANYARGS ... -# else -# define ANYARGS -# endif -#endif - -typedef struct st_table st_table; - -typedef st_data_t st_index_t; - -/* Maximal value of unsigned integer type st_index_t. */ -#define MAX_ST_INDEX_VAL (~(st_index_t) 0) - -typedef int st_compare_func(st_data_t, st_data_t); -typedef st_index_t st_hash_func(st_data_t); - -typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index_t) ? 1 : -1]; -#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP - -struct st_hash_type { - int (*compare)(st_data_t, st_data_t); /* st_compare_func* */ - st_index_t (*hash)(st_data_t); /* st_hash_func* */ -}; - -#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT) - -#if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR) && defined(HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P) -# define ST_DATA_COMPATIBLE_P(type) \ - __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0) -#else -# define ST_DATA_COMPATIBLE_P(type) 0 -#endif - -typedef struct st_table_entry st_table_entry; - -struct st_table_entry; /* defined in st.c */ - -struct st_table { - /* Cached features of the table -- see st.c for more details. */ - unsigned char entry_power, bin_power, size_ind; - /* How many times the table was rebuilt. */ - unsigned int rebuilds_num; - const struct st_hash_type *type; - /* Number of entries currently in the table. */ - st_index_t num_entries; - /* Array of bins used for access by keys. */ - st_index_t *bins; - /* Start and bound index of entries in array entries. - entries_starts and entries_bound are in interval - [0,allocated_entries]. */ - st_index_t entries_start, entries_bound; - /* Array of size 2^entry_power. */ - st_table_entry *entries; -}; - -#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0) - -enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK, ST_REPLACE}; - -st_table *rb_st_init_table(const struct st_hash_type *); -#define st_init_table rb_st_init_table -st_table *rb_st_init_table_with_size(const struct st_hash_type *, st_index_t); -#define st_init_table_with_size rb_st_init_table_with_size -st_table *rb_st_init_numtable(void); -#define st_init_numtable rb_st_init_numtable -st_table *rb_st_init_numtable_with_size(st_index_t); -#define st_init_numtable_with_size rb_st_init_numtable_with_size -st_table *rb_st_init_strtable(void); -#define st_init_strtable rb_st_init_strtable -st_table *rb_st_init_strtable_with_size(st_index_t); -#define st_init_strtable_with_size rb_st_init_strtable_with_size -st_table *rb_st_init_strcasetable(void); -#define st_init_strcasetable rb_st_init_strcasetable -st_table *rb_st_init_strcasetable_with_size(st_index_t); -#define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size -int rb_st_delete(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */ -#define st_delete rb_st_delete -int rb_st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t); -#define st_delete_safe rb_st_delete_safe -int rb_st_shift(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */ -#define st_shift rb_st_shift -int rb_st_insert(st_table *, st_data_t, st_data_t); -#define st_insert rb_st_insert -int rb_st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t)); -#define st_insert2 rb_st_insert2 -int rb_st_lookup(st_table *, st_data_t, st_data_t *); -#define st_lookup rb_st_lookup -int rb_st_get_key(st_table *, st_data_t, st_data_t *); -#define st_get_key rb_st_get_key -typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing); -/* *key may be altered, but must equal to the old key, i.e., the - * results of hash() are same and compare() returns 0, otherwise the - * behavior is undefined */ -int rb_st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg); -#define st_update rb_st_update -typedef int st_foreach_callback_func(st_data_t, st_data_t, st_data_t); -typedef int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t, int); -int rb_st_foreach_with_replace(st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg); -#define st_foreach_with_replace rb_st_foreach_with_replace -int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t); -#define st_foreach rb_st_foreach -int rb_st_foreach_check(st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t); -#define st_foreach_check rb_st_foreach_check -st_index_t rb_st_keys(st_table *table, st_data_t *keys, st_index_t size); -#define st_keys rb_st_keys -st_index_t rb_st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never); -#define st_keys_check rb_st_keys_check -st_index_t rb_st_values(st_table *table, st_data_t *values, st_index_t size); -#define st_values rb_st_values -st_index_t rb_st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never); -#define st_values_check rb_st_values_check -void rb_st_add_direct(st_table *, st_data_t, st_data_t); -#define st_add_direct rb_st_add_direct -void rb_st_free_table(st_table *); -#define st_free_table rb_st_free_table -void rb_st_cleanup_safe(st_table *, st_data_t); -#define st_cleanup_safe rb_st_cleanup_safe -void rb_st_clear(st_table *); -#define st_clear rb_st_clear -st_table *rb_st_copy(st_table *); -#define st_copy rb_st_copy -CONSTFUNC(int rb_st_numcmp(st_data_t, st_data_t)); -#define st_numcmp rb_st_numcmp -CONSTFUNC(st_index_t rb_st_numhash(st_data_t)); -#define st_numhash rb_st_numhash -PUREFUNC(int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2)); -#define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp -PUREFUNC(int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n)); -#define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp -#define st_strcasecmp rb_st_locale_insensitive_strcasecmp -#define st_strncasecmp rb_st_locale_insensitive_strncasecmp -PUREFUNC(size_t rb_st_memsize(const st_table *)); -#define st_memsize rb_st_memsize -PUREFUNC(st_index_t rb_st_hash(const void *ptr, size_t len, st_index_t h)); -#define st_hash rb_st_hash -CONSTFUNC(st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i)); -#define st_hash_uint32 rb_st_hash_uint32 -CONSTFUNC(st_index_t rb_st_hash_uint(st_index_t h, st_index_t i)); -#define st_hash_uint rb_st_hash_uint -CONSTFUNC(st_index_t rb_st_hash_end(st_index_t h)); -#define st_hash_end rb_st_hash_end -CONSTFUNC(st_index_t rb_st_hash_start(st_index_t h)); -#define st_hash_start(h) ((st_index_t)(h)) - -void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE); - -RUBY_SYMBOL_EXPORT_END - -#if defined(__cplusplus) -#if 0 -{ /* satisfy cc-mode */ -#endif -} /* extern "C" { */ -#endif - -#endif /* RUBY_ST_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/subst.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/subst.h deleted file mode 100644 index d7b9a63..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/subst.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef RUBY_SUBST_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_SUBST_H 1 -/** - * @author Ruby developers - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ - -#undef snprintf -#undef vsnprintf -#define snprintf ruby_snprintf -#define vsnprintf ruby_vsnprintf - -#ifdef BROKEN_CLOSE -#undef getpeername -#define getpeername ruby_getpeername -#undef getsockname -#define getsockname ruby_getsockname -#undef shutdown -#define shutdown ruby_shutdown -#undef close -#define close ruby_close -#endif -#endif diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread.h deleted file mode 100644 index 18c792b..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread.h +++ /dev/null @@ -1,195 +0,0 @@ -#ifndef RUBY_THREAD_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_THREAD_H 1 -/** - * @file - * @author $Author: matz $ - * @date Tue Jul 10 17:35:43 JST 2012 - * @copyright Copyright (C) 2007 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/intern/thread.h" /* rb_unblock_function_t */ -#include "ruby/internal/dllexport.h" - -/** - * @name Flags for rb_nogvl() - * - * @{ - */ - -/** - * Passing this flag to rb_nogvl() prevents it from checking interrupts. - * Interrupts can impact your program negatively. For instance consider - * following callback function: - * - * ```CXX - * static inline int fd; // set elsewhere. - * static inline auto callback(auto buf) { - * auto tmp = ruby_xmalloc(BUFSIZ); - * auto ret = ruby_xmalloc(sizeof(ssize_t)); // (a) - * auto n = read(fd, tmp, BUFSIZ); // (b) - * memcpy(buf, tmp, n); // (c) - * memcpy(ret, n, sizeof(n)); - * ruby_xfree(tmp); - * return ret; - * } - * ``` - * - * Here, if it gets interrupted at (a) or (b), `read(2)` is cancelled and this - * function leaks memory (which is not a good thing of course, but...). But if - * it gets interrupted at (c), where `read(2)` is already done, interruption is - * way more catastrophic because what was read gets lost. To reroute this kind - * of problem you should set this flag. And check interrupts elsewhere at your - * own risk. - */ -#define RB_NOGVL_INTR_FAIL (0x1) - -/** - * Passing this flag to rb_nogvl() indicates that the passed UBF is - * async-signal-safe. An UBF could be async safe, and that makes things - * simpler. However async unsafe UBFs are just okay. If unsure, you can - * safely leave it unspecified. - * - * @internal - * - * This makes sense only in case of POSIX threads. - */ -#define RB_NOGVL_UBF_ASYNC_SAFE (0x2) - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -RBIMPL_ATTR_NONNULL((1)) -/** - * (Re-)acquires the GVL. This manoeuvre makes it possible for an out-of-GVL - * routine to one-shot call a ruby method. - * - * What this function does: - * - * 1. Blocks until it acquires the GVL. - * 2. Calls the passed function. - * 3. Releases the GVL. - * 4. Returns what was returned form the passed function. - * - * @param[in] func What to call with GVL. - * @param[in,out] data1 Passed as-is to `func`. - * @return What was returned from `func`. - * @warning `func` must not return a Ruby object. If it did such return - * value would escape from GC's scope; would not be marked. - * @warning Global escapes from this function just yield whatever fatal - * undefined behaviours. You must make sure that `func` does - * not raise, by properly rescuing everything using - * e.g. rb_protect(). - * @warning You cannot convert a non-Ruby thread into a Ruby thread - * using this API. This function makes sense only from inside - * of a rb_thread_call_without_gvl()'s callback. - */ -void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Allows the passed function to run in parallel with other Ruby threads. - * - * What this function does: - * - * 1. Checks (and handles) pending interrupts. - * 2. Releases the GVL. (Others can run here in parallel...) - * 3. Calls the passed function. - * 4. Blocks until it re-acquires the GVL. - * 5. Checks interrupts that happened between 2 to 4. - * - * In case other threads interfaced with this thread using rb_thread_kill() - * etc., the passed UBF is additionally called. See ::rb_unblock_function_t - * for details. - * - * Unlike rb_thread_call_without_gvl2() this function also reacts to signals - * etc. - * - * @param[in] func A function to call without GVL. - * @param[in,out] data1 Passed as-is to `func`. - * @param[in] ubf An UBF to cancel `func`. - * @param[in,out] data2 Passed as-is to `ubf`. - * @return What `func` returned, or 0 in case `ubf` cancelled `func`. - * @warning You cannot use most of Ruby C APIs like calling methods or - * raising exceptions from any of the functions passed to it. - * If that is dead necessary use rb_thread_call_with_gvl() to - * re-acquire the GVL. - * @warning In short, this API is difficult. @ko1 recommends you to use - * other ways if any. We lack experiences to use this API. If - * you find any corner cases etc., please report it to the - * devs. - * @warning Releasing and re-acquiring the GVL are expensive operations. - * For a short-running `func`, it might be faster to just call - * `func` with blocking everything else. Be sure to benchmark - * your code to see if it is actually worth releasing the GVL. - */ -void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1, - rb_unblock_function_t *ubf, void *data2); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_thread_call_without_gvl(), except it does not interface with - * signals etc. As described in #RB_NOGVL_INTR_FAIL, interrupts can hurt you. - * In case this function detects an interrupt, it returns immediately. You can - * record progress of your callback and check it after returning from this - * function. - * - * What this function does: - * - * 1. Checks for pending interrupts and if any, just returns. - * 2. Releases the GVL. (Others can run here in parallel...) - * 3. Calls the passed function. - * 4. Blocks until it re-acquires the GVL. - * - * @param[in] func A function to call without GVL. - * @param[in,out] data1 Passed as-is to `func`. - * @param[in] ubf An UBF to cancel `func`. - * @param[in,out] data2 Passed as-is to `ubf`. - * @return What `func` returned, or 0 in case `func` did not return. - */ -void *rb_thread_call_without_gvl2(void *(*func)(void *), void *data1, - rb_unblock_function_t *ubf, void *data2); - -/* - * XXX: unstable/unapproved - out-of-tree code should NOT not depend - * on this until it hits Ruby 2.6.1 - */ - -RBIMPL_ATTR_NONNULL((1)) -/** - * Identical to rb_thread_call_without_gvl(), except it additionally takes - * "flags" that change the behaviour. - * - * @param[in] func A function to call without GVL. - * @param[in,out] data1 Passed as-is to `func`. - * @param[in] ubf An UBF to cancel `func`. - * @param[in,out] data2 Passed as-is to `ubf`. - * @param[in] flags Flags. - * @return What `func` returned, or 0 in case `func` did not return. - */ -void *rb_nogvl(void *(*func)(void *), void *data1, - rb_unblock_function_t *ubf, void *data2, - int flags); - -/** - * @private - * - * @deprecated This macro once was a thing in the old days, but makes no sense - * any longer today. Exists here for backwards compatibility - * only. You can safely forget about it. - */ -#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_AFTER 0x01 - -/** - * @private - * @deprecated It seems even in the old days it made no sense...? - */ -#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_ - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_THREAD_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread_native.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread_native.h deleted file mode 100644 index 2945ff1..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/thread_native.h +++ /dev/null @@ -1,199 +0,0 @@ -#ifndef RUBY_THREAD_NATIVE_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_THREAD_NATIVE_H 1 -/** - * @file - * @author $Author: ko1 $ - * @date Wed May 14 19:37:31 2014 - * @copyright Copyright (C) 2014 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * - * This file contains wrapper APIs for native thread primitives - * which Ruby interpreter uses. - * - * Now, we only support pthread and Windows threads. - * - * If you want to use Ruby's Mutex and so on to synchronize Ruby Threads, - * please use Mutex directly. - */ - -#if defined(_WIN32) -#include -typedef HANDLE rb_nativethread_id_t; - -typedef union rb_thread_lock_union { - HANDLE mutex; - CRITICAL_SECTION crit; -} rb_nativethread_lock_t; - -typedef struct rb_thread_cond_struct rb_nativethread_cond_t; - -#elif defined(HAVE_PTHREAD_H) - -#include -typedef pthread_t rb_nativethread_id_t; -typedef pthread_mutex_t rb_nativethread_lock_t; -typedef pthread_cond_t rb_nativethread_cond_t; - -#elif defined(__DOXYGEN__) - -/** Opaque type that holds an ID of a native thread. */ -struct rb_nativethread_id_t; - -/** Opaque type that holds a lock. */ -struct rb_nativethread_lock_t; - -/** Opaque type that holds a condition variable. */ -struct rb_nativethread_cond_t; - -#else -#error "unsupported thread type" - -#endif - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * Queries the ID of the native thread that is calling this function. - * - * @return The caller thread's native ID. - */ -rb_nativethread_id_t rb_nativethread_self(void); - -/** - * Fills the passed lock with an initial value. - * - * @param[out] lock A mutex to initialise. - * @post `lock` is updated to its initial state. - * - * @internal - * - * There is no data structure that analogous to pthread_once_t in ruby. It is - * pretty much tricky (if not impossible) to properly initialise a mutex - * exactly once. - */ -void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock); - -/** - * Destroys the passed mutex. - * - * @param[out] lock A mutex to kill. - * @post `lock` is no longer eligible for other functions. - * - * @internal - * - * It is an undefined behaviour (see `pthread_mutex_destroy(3posix)`) to - * destroy a locked mutex. So it has to be unlocked. But an unlocked mutex - * can of course be locked by another thread. That's the ultimate reason why - * we do mutex. There is an inevitable race condition here. 2017 edition of - * IEEE 1003.1 issue 7 says in its rationale that "care must be taken". Care? - * How? - * - * @shyouhei thinks that POSIX is broken by design. - */ -void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock); - -/** - * Blocks until the current thread obtains a lock. - * - * @param[out] lock A mutex to lock. - * @post `lock` is owned by the current native thread. - */ -void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock); - -/** - * Releases a lock. - * - * @param[out] lock A mutex to unlock. - * @pre `lock` is owned by the current native thread. - * @post `lock` is not owned by the current native thread. - */ -void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock); - -/** @alias{rb_nativethread_lock_lock} */ -void rb_native_mutex_lock(rb_nativethread_lock_t *lock); - -/** - * Identical to rb_native_mutex_lock(), except it doesn't block in case - * rb_native_mutex_lock() would. - * - * @param[out] lock A mutex to lock. - * @retval 0 `lock` is successfully owned by the current thread. - * @retval EBUSY `lock` is owned by someone else. - */ -int rb_native_mutex_trylock(rb_nativethread_lock_t *lock); - -/** @alias{rb_nativethread_lock_unlock} */ -void rb_native_mutex_unlock(rb_nativethread_lock_t *lock); - -/** @alias{rb_nativethread_lock_initialize} */ -void rb_native_mutex_initialize(rb_nativethread_lock_t *lock); - -/** @alias{rb_nativethread_lock_destroy} */ -void rb_native_mutex_destroy(rb_nativethread_lock_t *lock); - -/** - * Signals a condition variable. - * - * @param[out] cond A condition variable to ping. - * @post More than one threads waiting for `cond` gets signalled. - * @note This function can spuriously wake multiple threads up. - * `pthread_cond_signal(3posix)` says it can even be "impossible - * to avoid the unblocking of more than one thread blocked on a - * condition variable". Just brace spurious wakeups. - */ -void rb_native_cond_signal(rb_nativethread_cond_t *cond); - -/** - * Signals a condition variable. - * - * @param[out] cond A condition variable to ping. - * @post All threads waiting for `cond` gets signalled. - */ -void rb_native_cond_broadcast(rb_nativethread_cond_t *cond); - -/** - * Waits for the passed condition variable to be signalled. - * - * @param[out] cond A condition variable to wait. - * @param[out] mutex A mutex. - * @pre `mutex` is owned by the current thread. - * @post `mutex` is owned by the current thread. - * @note This can wake up spuriously. - */ -void rb_native_cond_wait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex); - -/** - * Identical to rb_native_cond_wait(), except it additionally takes timeout in - * msec resolution. Timeouts can be detected by catching exceptions. - * - * @param[out] cond A condition variable to wait. - * @param[out] mutex A mutex. - * @param[in] msec Timeout. - * @exception rb_eSystemCallError `Errno::ETIMEDOUT` for timeout. - * @pre `mutex` is owned by the current thread. - * @post `mutex` is owned by the current thread. - * @note This can wake up spuriously. - */ -void rb_native_cond_timedwait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex, unsigned long msec); - -/** - * Fills the passed condition variable with an initial value. - * - * @param[out] cond A condition variable to initialise. - * @post `cond` is updated to its initial state. - */ -void rb_native_cond_initialize(rb_nativethread_cond_t *cond); - -/** - * Destroys the passed condition variable. - * - * @param[out] cond A condition variable to kill. - * @post `cond` is no longer eligible for other functions. - */ -void rb_native_cond_destroy(rb_nativethread_cond_t *cond); - -RBIMPL_SYMBOL_EXPORT_END() -#endif diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/util.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/util.h deleted file mode 100644 index b2bc1a0..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/util.h +++ /dev/null @@ -1,228 +0,0 @@ -#ifndef RUBY_UTIL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_UTIL_H 1 -/** - * @file - * @author $Author$ - * @date Thu Mar 9 11:55:53 JST 1995 - * @copyright Copyright (C) 1993-2007 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning DO NOT ADD RANDOM GARBAGES IN THIS FILE! Contents of this file - * reside here for historical reasons. Find a right place for your - * API! - */ -#include "ruby/internal/config.h" - -#ifdef STDC_HEADERS -# include /* size_t */ -#endif - -#if HAVE_SYS_TYPES_H -# include /* ssize_t */ -#endif - -#include "ruby/internal/attr/noalias.h" -#include "ruby/internal/attr/nodiscard.h" -#include "ruby/internal/attr/nonnull.h" -#include "ruby/internal/attr/restrict.h" -#include "ruby/internal/attr/returns_nonnull.h" -#include "ruby/internal/dllexport.h" -#include "ruby/defines.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** an approximation of ceil(n * log10(2)), up to 65536 at least */ -#define DECIMAL_SIZE_OF_BITS(n) (((n) * 3010 + 9998) / 9999) - -/** - * Character to number mapping like `'a'` -> `10`, `'b'` -> `11` etc. For - * punctuation etc., the value is -1. "36" terminology comes from the fact - * that this is the table behind `str.to_i(36)`. - */ -RUBY_EXTERN const signed char ruby_digit36_to_number_table[]; - -/** - * Characters that Ruby accepts as hexadecimal digits. This is `/\h/` expanded - * into an array. - */ -RUBY_EXTERN const char ruby_hexdigits[]; - -/** - * Scans the passed string, assuming the string is a textual representation of - * an integer. Stops when encountering something non-digit for the passed - * base. - * - * @note This does not understand minus sign. - * @note This does not understand e.g. `0x` prefix. - * @note It is a failure to pass `0` to `base`, unlike ruby_strtoul(). - * @param[in] str Target string of digits to interpret. - * @param[in] len Number of bytes of `str`, or -1 to detect `NUL`. - * @param[in] base Base, `2` to `36` inclusive. - * @param[out] retlen Return value buffer. - * @param[out] overflow Return value buffer. - * @return Interpreted numeric representation of `str`. - * @post `retlen` is the number of bytes scanned so far. - * @post `overflow` is set to true if the string represents something - * bigger than `ULONG_MAX`. Something meaningful still returns; - * which is the designed belabour of C's unsigned arithmetic. - */ -unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow); - -/** @old{ruby_scan_oct} */ -#define scan_oct(s,l,e) ((int)ruby_scan_oct((s),(l),(e))) - -RBIMPL_ATTR_NOALIAS() -RBIMPL_ATTR_NONNULL(()) -/** - * Interprets the passed string as an octal unsigned integer. Stops when - * encounters something not understood. - * - * @param[in] str C string to scan. - * @param[in] len Length of `str`. - * @param[out] consumed Return value buffer. - * @return Parsed integer. - * @post `ret` is the number of characters read. - * - * @internal - * - * No consideration is made for integer overflows. As the return value is - * unsigned this function has fully defined behaviour, but you cannot know if - * there was an integer wrap-around or not. - */ -unsigned long ruby_scan_oct(const char *str, size_t len, size_t *consumed); - -/** @old{ruby_scan_hex} */ -#define scan_hex(s,l,e) ((int)ruby_scan_hex((s),(l),(e))) - -RBIMPL_ATTR_NONNULL(()) -/** - * Interprets the passed string a hexadecimal unsigned integer. Stops when - * encounters something not understood. - * - * @param[in] str C string to scan. - * @param[in] len Length of `str`. - * @param[out] ret Return value buffer. - * @return Parsed integer. - * @post `ret` is the number of characters read. - * - * @internal - * - * No consideration is made for integer overflows. As the return value is - * unsigned this function has fully defined behaviour, but you cannot know if - * there was an integer wrap-around or not. - */ -unsigned long ruby_scan_hex(const char *str, size_t len, size_t *ret); - -/** - * Reentrant implementation of quick sort. If your system provides something - * (like C11 qsort_s), this is a thin wrapper of that routine. Otherwise - * resorts to our own version. - */ -#ifdef HAVE_GNU_QSORT_R -# define ruby_qsort qsort_r -#else -void ruby_qsort(void *, const size_t, const size_t, - int (*)(const void *, const void *, void *), void *); -#endif - -RBIMPL_ATTR_NONNULL((1)) -/** - * Sets an environment variable. In case of POSIX this is a wrapper of - * `setenv(3)`. But there are systems which lack one. We try hard emulating. - * - * @param[in] key An environment variable. - * @param[in] val A value to be associated with `key`, or 0. - * @exception rb_eSystemCallError `setenv(3)` failed for some reason. - * @post Environment variable `key` is created if necessary. Its value - * is updated to be `val`. - */ -void ruby_setenv(const char *key, const char *val); - -RBIMPL_ATTR_NONNULL(()) -/** - * Deletes the passed environment variable, if any. - * - * @param[in] key An environment variable. - * @exception rb_eSystemCallError `unsetenv(3)` failed for some reason. - * @post Environment variable `key` does not exist. - */ -void ruby_unsetenv(const char *key); - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -RBIMPL_ATTR_NONNULL(()) -/** - * This is our own version of `strdup(3)` that uses ruby_xmalloc() instead of - * system malloc (benefits our GC). - * - * @param[in] str Target C string to duplicate. - * @return An allocated C string holding the identical contents. - * @note Return value must be discarded using ruby_xfree(). - */ -char *ruby_strdup(const char *str); - -#undef strdup -/** - * @alias{ruby_strdup} - * - * @internal - * - * @shyouhei doesn't think it is a wise idea. ruby_strdup()'s return value - * must be passed to ruby_xfree(), but this macro makes it almost impossible. - */ -#define strdup(s) ruby_strdup(s) - -RBIMPL_ATTR_NODISCARD() -RBIMPL_ATTR_RESTRICT() -RBIMPL_ATTR_RETURNS_NONNULL() -/** - * This is our own version of `getcwd(3)` that uses ruby_xmalloc() instead of - * system malloc (benefits our GC). - * - * @return An allocated C string holding the process working directory. - * @note Return value must be discarded using ruby_xfree(). - */ -char *ruby_getcwd(void); - -RBIMPL_ATTR_NONNULL((1)) -/** - * Our own locale-insensitive version of `strtod(3)`. The conversion is done - * as if the current locale is set to the "C" locale, no matter actual runtime - * locale settings. - * - * @param[in] str Decimal or hexadecimal representation of a floating - * point number. - * @param[out] endptr NULL, or an arbitrary pointer (overwritten on return). - * @return Converted number. - * @post If `endptr` is not NULL, it is updated to point the first such - * byte where conversion failed. - * @note This function sets `errno` on failure. - * - `ERANGE`: Converted integer is out of range of `double`. - * @see William D. Clinger, "How to Read Floating Point Numbers - * Accurately" in Proc. ACM SIGPLAN '90, pp. 92-101. - * https://doi.org/10.1145/93542.93557 - */ -double ruby_strtod(const char *str, char **endptr); - -#undef strtod -/** @alias{ruby_strtod} */ -#define strtod(s,e) ruby_strtod((s),(e)) - -RBIMPL_ATTR_NONNULL((2)) -/** - * Scans the passed string, with calling the callback function every time it - * encounters a "word". A word here is a series of characters separated by - * either a space (of IEEE 1003.1 section 7.3.1.1), or a `','`. - * - * @param[in] str Target string to split into each words. - * @param[in] func Callback function. - * @param[in,out] argv Passed as-is to `func`. - */ -void ruby_each_words(const char *str, void (*func)(const char *word, int len, void *argv), void *argv); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_UTIL_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/version.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/version.h deleted file mode 100644 index 104f78a..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/version.h +++ /dev/null @@ -1,158 +0,0 @@ -#ifndef RUBY_VERSION_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_VERSION_H 1 -/** - * @file - * @author $Author$ - * @date Wed May 13 12:56:56 JST 2009 - * @copyright Copyright (C) 1993-2009 Yukihiro Matsumoto - * @copyright Copyright (C) 2000 Network Applied Communication Laboratory, Inc. - * @copyright Copyright (C) 2000 Information-technology Promotion Agency, Japan - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * - * This file contains only - * - never-changeable information, and - * - interfaces accessible from extension libraries. - * - * Never try to check RUBY_VERSION_CODE etc in extension libraries, - * check the features with mkmf.rb instead. - */ - -/** - * @name The origin. - * - * These information never change. Just written here to remember. - * - * @{ - */ - -/** Author of this project. */ -#define RUBY_AUTHOR "Yukihiro Matsumoto" - -/** Ruby's birth year. */ -#define RUBY_BIRTH_YEAR 1993 - -/** Ruby's birth month. */ -#define RUBY_BIRTH_MONTH 2 - -/** Ruby's birth day. */ -#define RUBY_BIRTH_DAY 24 - -/** @} */ - -/** - * @name The API version. - * - * API version is different from binary version. These numbers are for API - * stability. When you have distinct API versions x and y, you cannot expect - * codes targeted to x also works for y. - * - * However let us repeat here that it's a BAD idea to check - * #RUBY_API_VERSION_CODE form extension libraries. Different API versions are - * just different. There is no such thing like upper compatibility. - * - * @{ - */ - -/** - * Major version. This digit changes sometimes for various reasons, but that - * doesn't mean a total rewrite. Practically when it comes to API versioning, - * major and minor version changes are equally catastrophic. - */ -#define RUBY_API_VERSION_MAJOR 3 - -/** - * Minor version. As of writing this version changes annually. Greater - * version doesn't mean "better"; they just mean years passed. - */ -#define RUBY_API_VERSION_MINOR 1 - -/** - * Teeny version. This digit is kind of reserved these days. Kept 0 for the - * entire 2.x era. Waiting for future uses. - */ -#define RUBY_API_VERSION_TEENY 0 - -/** - * This macro is API versions encoded into a C integer. - * - * @note Use mkmf. - * @note Don't rely on it. - */ -#define RUBY_API_VERSION_CODE (RUBY_API_VERSION_MAJOR*10000+RUBY_API_VERSION_MINOR*100+RUBY_API_VERSION_TEENY) - -/** @} */ - -#ifdef RUBY_EXTERN -/* Internal note: this file could be included from verconf.mk _before_ - * generating config.h, on Windows. The #ifdef above is to trick such - * situation. */ -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * @name Interfaces from extension libraries. - * - * Before using these infos, think thrice whether they are really - * necessary or not, and if the answer was yes, think twice a week - * later again. - * - * @{ - */ - -/** API versions, in { major, minor, teeny } order. */ -RUBY_EXTERN const int ruby_api_version[3]; - -/** - * Stringised version. - * - * @note This is the runtime version, not the API version. For instance it - * was `"2.5.9"` when ::ruby_api_version was `{ 2, 5, 0 }`. - */ -RUBY_EXTERN const char ruby_version[]; - -/** Date of release, in a C string. */ -RUBY_EXTERN const char ruby_release_date[]; - -/** - * Target platform identifier, in a C string. - * - * @note Seasoned UNIX programmers should beware that this "platform - * identifier" is our invention; not always identical to so-called - * target triplets that GNU systems use. For instance on @shyouhei's - * machine, ::ruby_platform is `"x64_64-linux"` while its target triplet - * is `x86_64-pc-linux-gnu`. - * @note Note also that we support Windows. - */ -RUBY_EXTERN const char ruby_platform[]; - -/** - * This is a monotonic increasing integer that describes specific "patch" - * level. You can know the exact changeset your binary is running by this info - * (and ::ruby_version), unless this is -1. -1 means there is no release yet - * for the version; ruby is actively developed. 0 means the initial GA version. - */ -RUBY_EXTERN const int ruby_patchlevel; - -/** - * This is what `ruby -v` prints to the standard error. Something like: - * `"ruby 2.5.9p229 (2021-04-05 revision 67829) [x86_64-linux]"` - */ -RUBY_EXTERN const char ruby_description[]; - -/** Copyright notice. */ -RUBY_EXTERN const char ruby_copyright[]; - -/** - * This is just `"ruby"` for us. But different implementations can have - * different strings here. - */ -RUBY_EXTERN const char ruby_engine[]; - -/** @} */ - -RBIMPL_SYMBOL_EXPORT_END() -#endif - -#endif diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/vm.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/vm.h deleted file mode 100644 index 3458c28..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/vm.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef RUBY_VM_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_VM_H 1 -/** - * @file - * @author $Author$ - * @date Sat May 31 15:17:36 2008 - * @copyright Copyright (C) 2008 Yukihiro Matsumoto - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * - * We planned to have multiple VMs run side-by-side. The API here was a - * preparation of that feature. The topic branch was eventually abandoned, and - * we now have Ractor. This file is kind of obsolescent. - */ -#include "ruby/internal/dllexport.h" - -RBIMPL_SYMBOL_EXPORT_BEGIN() - -/** - * The opaque struct to hold VM internals. Its fields are intentionally hidden - * from extension libraries because it changes drastically time to time. - */ -typedef struct rb_vm_struct ruby_vm_t; - -/** - * Destructs the passed VM. You don't have to call this API directly now, - * because there is no way to create one. There is only one VM at one time. - * ruby_stop() should just suffice. - */ -int ruby_vm_destruct(ruby_vm_t *vm); - -/** - * ruby_vm_at_exit registers a function _func_ to be invoked when a VM - * passed away. Functions registered this way runs in reverse order - * of registration, just like END {} block does. The difference is - * its timing to be triggered. ruby_vm_at_exit functions runs when a - * VM _passed_ _away_, while END {} blocks runs just _before_ a VM - * _is_ _passing_ _away_. - * - * You cannot register a function to another VM than where you are in. - * So where to register is intuitive, omitted. OTOH the argument - * _func_ cannot know which VM it is in because at the time of - * invocation, the VM has already died and there is no execution - * context. The VM itself is passed as the first argument to it. - * - * @param[in] func the function to register. - */ -void ruby_vm_at_exit(void(*func)(ruby_vm_t *)); - -RBIMPL_SYMBOL_EXPORT_END() - -#endif /* RUBY_VM_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/win32.h b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/win32.h deleted file mode 100644 index c8ae599..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/include/ruby310/win32_x64/ruby/win32.h +++ /dev/null @@ -1,806 +0,0 @@ -#ifndef RUBY_WIN32_H -#define RUBY_WIN32_H 1 - -#if defined(__cplusplus) -extern "C" { -#if 0 -} /* satisfy cc-mode */ -#endif -#endif - -RUBY_SYMBOL_EXPORT_BEGIN - -/* - * Copyright (c) 1993, Intergraph Corporation - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the perl README file. - * - */ - -/* - * Definitions for NT port of Perl - */ - - -/* - * Ok now we can include the normal include files. - */ - -/* #include conflict with varargs.h? */ -#if !defined(WSAAPI) -#if defined(__cplusplus) && defined(_MSC_VER) -extern "C++" { /* template without extern "C++" */ -#endif -#if !defined(_WIN64) && !defined(WIN32) -#define WIN32 -#endif -#if defined(_MSC_VER) && _MSC_VER <= 1200 -#include -#endif -#include -#include -#if !defined(_MSC_VER) || _MSC_VER >= 1400 -#include -#endif -#if defined(__cplusplus) && defined(_MSC_VER) -} -#endif -#endif - -/* - * We're not using Microsoft's "extensions" to C for - * Structured Exception Handling (SEH) so we can nuke these - */ -#undef try -#undef except -#undef finally -#undef leave - -#include -#include -#include -#include -#include -#include -#if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200 -extern "C++" { /* template without extern "C++" */ -#endif -#include -#if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200 -} -#endif -#include -#include -#include -#ifdef HAVE_SYS_UTIME_H -# include -#else -# include -#endif -#include -#include -#if defined __MINGW32__ -# include -#else -# if !defined(_INTPTR_T_DEFINED) -# ifdef _WIN64 -typedef __int64 intptr_t; -# else -typedef int intptr_t; -# endif -# define _INTPTR_T_DEFINED -# endif -# if !defined(INTPTR_MAX) -# ifdef _WIN64 -# define INTPTR_MAX 9223372036854775807I64 -# else -# define INTPTR_MAX 2147483647 -# endif -# define INTPTR_MIN (-INTPTR_MAX-1) -# endif -# if !defined(_UINTPTR_T_DEFINED) -# ifdef _WIN64 -typedef unsigned __int64 uintptr_t; -# else -typedef unsigned int uintptr_t; -# endif -# define _UINTPTR_T_DEFINED -# endif -# if !defined(UINTPTR_MAX) -# ifdef _WIN64 -# define UINTPTR_MAX 18446744073709551615UI64 -# else -# define UINTPTR_MAX 4294967295U -# endif -# endif -#endif -#ifndef __MINGW32__ -# define mode_t int -#endif -#ifdef HAVE_UNISTD_H -# include -#endif - -#define rb_w32_iswinnt() TRUE -#define rb_w32_iswin95() FALSE - -#define WNOHANG -1 - -#define O_SHARE_DELETE 0x20000000 /* for rb_w32_open(), rb_w32_wopen() */ - -typedef int clockid_t; -#define CLOCK_REALTIME 0 -#define CLOCK_MONOTONIC 1 - -#undef utime -#undef lseek -#undef stat -#undef fstat -#ifdef RUBY_EXPORT -#define utime(_p, _t) rb_w32_uutime(_p, _t) -#undef HAVE_UTIMES -#define HAVE_UTIMES 1 -#define utimes(_p, _t) rb_w32_uutimes(_p, _t) -#undef HAVE_UTIMENSAT -#define HAVE_UTIMENSAT 1 -#define AT_FDCWD -100 -#define utimensat(_d, _p, _t, _f) rb_w32_uutimensat(_d, _p, _t, _f) -#define lseek(_f, _o, _w) rb_w32_lseek(_f, _o, _w) - -#define pipe(p) rb_w32_pipe(p) -#define open rb_w32_uopen -#define close(h) rb_w32_close(h) -#define fclose(f) rb_w32_fclose(f) -#define read(f, b, s) rb_w32_read(f, b, s) -#define write(f, b, s) rb_w32_write(f, b, s) -#define getpid() rb_w32_getpid() -#define getppid() rb_w32_getppid() -#define sleep(x) rb_w32_Sleep((x)*1000) -#define Sleep(msec) (void)rb_w32_Sleep(msec) - -#undef execv -#define execv(path,argv) rb_w32_uaspawn(P_OVERLAY,path,argv) -#undef isatty -#define isatty(h) rb_w32_isatty(h) - -#undef mkdir -#define mkdir(p, m) rb_w32_umkdir(p, m) -#undef rmdir -#define rmdir(p) rb_w32_urmdir(p) -#undef unlink -#define unlink(p) rb_w32_uunlink(p) -#endif /* RUBY_EXPORT */ - -/* same with stati64 except the size of st_ino and nanosecond timestamps */ -struct stati128 { - _dev_t st_dev; - unsigned __int64 st_ino; - __int64 st_inohigh; - unsigned short st_mode; - short st_nlink; - short st_uid; - short st_gid; - _dev_t st_rdev; - __int64 st_size; - __time64_t st_atime; - long st_atimensec; - __time64_t st_mtime; - long st_mtimensec; - __time64_t st_ctime; - long st_ctimensec; -}; - -#define off_t __int64 -#define stat stati128 -#undef SIZEOF_STRUCT_STAT_ST_INO -#define SIZEOF_STRUCT_STAT_ST_INO sizeof(unsigned __int64) -#define HAVE_STRUCT_STAT_ST_INOHIGH -#define HAVE_STRUCT_STAT_ST_ATIMENSEC -#define HAVE_STRUCT_STAT_ST_MTIMENSEC -#define HAVE_STRUCT_STAT_ST_CTIMENSEC -#define fstat(fd,st) rb_w32_fstati128(fd,st) -#define stati128(path, st) rb_w32_ustati128(path,st) -#define lstat(path,st) rb_w32_ulstati128(path,st) -#define access(path,mode) rb_w32_uaccess(path,mode) - -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#define fsync _commit - -struct timezone; - -#ifdef __MINGW32__ -#undef isascii -#define isascii __isascii -#endif - -struct iovec { - void *iov_base; - size_t iov_len; -}; -struct msghdr { - void *msg_name; - int msg_namelen; - struct iovec *msg_iov; - int msg_iovlen; - void *msg_control; - int msg_controllen; - int msg_flags; -}; - -/* for getifaddrs() and others */ -struct ifaddrs { - struct ifaddrs *ifa_next; - char *ifa_name; - u_int ifa_flags; - struct sockaddr *ifa_addr; - struct sockaddr *ifa_netmask; - struct sockaddr *ifa_broadaddr; - struct sockaddr *ifa_dstaddr; - void *ifa_data; -}; -#ifdef IF_NAMESIZE -#define IFNAMSIZ IF_NAMESIZE -#else -#define IFNAMSIZ 256 -#endif -#ifdef IFF_POINTTOPOINT -#define IFF_POINTOPOINT IFF_POINTTOPOINT -#endif - -extern void rb_w32_sysinit(int *, char ***); -extern DWORD rb_w32_osid(void); -extern int flock(int fd, int oper); -extern int rb_w32_io_cancelable_p(int); -extern int rb_w32_is_socket(int); -extern int WSAAPI rb_w32_accept(int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_bind(int, const struct sockaddr *, int); -extern int WSAAPI rb_w32_connect(int, const struct sockaddr *, int); -extern void rb_w32_fdset(int, fd_set*); -extern void rb_w32_fdclr(int, fd_set*); -extern int rb_w32_fdisset(int, fd_set*); -extern int WSAAPI rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); -extern int WSAAPI rb_w32_getpeername(int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_getsockname(int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_getsockopt(int, int, int, char *, int *); -extern int WSAAPI rb_w32_ioctlsocket(int, long, u_long *); -extern int WSAAPI rb_w32_listen(int, int); -extern int WSAAPI rb_w32_recv(int, char *, int, int); -extern int WSAAPI rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_send(int, const char *, int, int); -extern int WSAAPI rb_w32_sendto(int, const char *, int, int, const struct sockaddr *, int); -extern int recvmsg(int, struct msghdr *, int); -extern int sendmsg(int, const struct msghdr *, int); -extern int WSAAPI rb_w32_setsockopt(int, int, int, const char *, int); -extern int WSAAPI rb_w32_shutdown(int, int); -extern int WSAAPI rb_w32_socket(int, int, int); -extern SOCKET rb_w32_get_osfhandle(int); -extern struct hostent *WSAAPI rb_w32_gethostbyaddr(const char *, int, int); -extern struct hostent *WSAAPI rb_w32_gethostbyname(const char *); -extern int WSAAPI rb_w32_gethostname(char *, int); -extern struct protoent *WSAAPI rb_w32_getprotobyname(const char *); -extern struct protoent *WSAAPI rb_w32_getprotobynumber(int); -extern struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *); -extern struct servent *WSAAPI rb_w32_getservbyport(int, const char *); -extern int socketpair(int, int, int, int *); -extern int getifaddrs(struct ifaddrs **); -extern void freeifaddrs(struct ifaddrs *); -extern char * rb_w32_ugetcwd(char *, int); -extern char * rb_w32_ugetenv(const char *); -extern int rb_w32_urename(const char *, const char *); -extern char **rb_w32_get_environ(void); -extern void rb_w32_free_environ(char **); -extern int rb_w32_map_errno(DWORD); -extern const char *WSAAPI rb_w32_inet_ntop(int,const void *,char *,size_t); -extern int WSAAPI rb_w32_inet_pton(int,const char *,void *); -extern DWORD rb_w32_osver(void); - -extern int rb_w32_uchown(const char *, int, int); -extern int rb_w32_ulink(const char *, const char *); -extern ssize_t rb_w32_ureadlink(const char *, char *, size_t); -extern ssize_t rb_w32_wreadlink(const WCHAR *, WCHAR *, size_t); -extern int rb_w32_usymlink(const char *src, const char *link); -extern int gettimeofday(struct timeval *, struct timezone *); -extern int clock_gettime(clockid_t, struct timespec *); -extern int clock_getres(clockid_t, struct timespec *); -extern rb_pid_t waitpid(rb_pid_t, int *, int); -extern rb_pid_t wait(int *); -extern rb_pid_t rb_w32_uspawn(int, const char *, const char*); -extern rb_pid_t rb_w32_uaspawn(int, const char *, char *const *); -extern rb_pid_t rb_w32_uaspawn_flags(int, const char *, char *const *, DWORD); -extern int kill(int, int); -extern int fcntl(int, int, ...); -extern int rb_w32_set_nonblock(int); -extern rb_pid_t rb_w32_getpid(void); -extern rb_pid_t rb_w32_getppid(void); -extern int rb_w32_isatty(int); -extern int rb_w32_uchdir(const char *); -extern int rb_w32_umkdir(const char *, int); -extern int rb_w32_urmdir(const char *); -extern int rb_w32_uunlink(const char *); -extern int rb_w32_uchmod(const char *, int); -extern int rb_w32_ustati128(const char *, struct stati128 *); -extern int rb_w32_ulstati128(const char *, struct stati128 *); -extern int rb_w32_uaccess(const char *, int); -extern char rb_w32_fd_is_text(int); -extern int rb_w32_fstati128(int, struct stati128 *); -extern int rb_w32_dup2(int, int); - -#include - -#if defined _MSC_VER && _MSC_VER >= 1800 && defined INFINITY -#pragma warning(push) -#pragma warning(disable:4756) -static inline float -rb_infinity_float(void) -{ - return INFINITY; -} -#pragma warning(pop) -#undef INFINITY -#define INFINITY rb_infinity_float() -#endif - -#if !defined __MINGW32__ || defined __NO_ISOCEXT -#ifndef copysign -#define copysign(a, b) _copysign(a, b) -#endif -static inline double -scalb(double a, long b) -{ - return _scalb(a, b); -} -#endif - -#if !defined S_IFIFO && defined _S_IFIFO -#define S_IFIFO _S_IFIFO -#endif - -#if !defined S_IRUSR && !defined __MINGW32__ -#define S_IRUSR 0400 -#endif -#ifndef S_IRGRP -#define S_IRGRP 0040 -#endif -#ifndef S_IROTH -#define S_IROTH 0004 -#endif - -#if !defined S_IWUSR && !defined __MINGW32__ -#define S_IWUSR 0200 -#endif -#ifndef S_IWGRP -#define S_IWGRP 0020 -#endif -#ifndef S_IWOTH -#define S_IWOTH 0002 -#endif - -#if !defined S_IXUSR && !defined __MINGW32__ -#define S_IXUSR 0100 -#endif -#ifndef S_IXGRP -#define S_IXGRP 0010 -#endif -#ifndef S_IXOTH -#define S_IXOTH 0001 -#endif - -#define S_IFLNK 0xa000 - -/* - * define this so we can do inplace editing - */ - -#define SUFFIX - -extern int rb_w32_ftruncate(int fd, off_t length); -extern int rb_w32_truncate(const char *path, off_t length); -extern int rb_w32_utruncate(const char *path, off_t length); - -#undef HAVE_FTRUNCATE -#define HAVE_FTRUNCATE 1 -#if defined HAVE_FTRUNCATE64 -#define ftruncate ftruncate64 -#else -#define ftruncate rb_w32_ftruncate -#endif - -#undef HAVE_TRUNCATE -#define HAVE_TRUNCATE 1 -#define truncate rb_w32_utruncate - -#if defined(_MSC_VER) && _MSC_VER >= 1400 && _MSC_VER < 1800 -#define strtoll _strtoi64 -#define strtoull _strtoui64 -#endif - -/* - * stubs - */ -extern int ioctl (int, int, ...); -extern rb_uid_t getuid (void); -extern rb_uid_t geteuid (void); -extern rb_gid_t getgid (void); -extern rb_gid_t getegid (void); -extern int setuid (rb_uid_t); -extern int setgid (rb_gid_t); - -extern char *rb_w32_strerror(int); - -#ifdef RUBY_EXPORT -#define strerror(e) rb_w32_strerror(e) -#endif - -#define PIPE_BUF 1024 - -#define LOCK_SH 1 -#define LOCK_EX 2 -#define LOCK_NB 4 -#define LOCK_UN 8 - - -#ifndef SIGINT -#define SIGINT 2 -#endif -#ifndef SIGKILL -#define SIGKILL 9 -#endif - - -/* #undef va_start */ -/* #undef va_end */ - -/* winsock error map */ -#include - -#ifndef EWOULDBLOCK -# define EWOULDBLOCK WSAEWOULDBLOCK -#endif -#ifndef EINPROGRESS -# define EINPROGRESS WSAEINPROGRESS -#endif -#ifndef EALREADY -# define EALREADY WSAEALREADY -#endif -#ifndef ENOTSOCK -# define ENOTSOCK WSAENOTSOCK -#endif -#ifndef EDESTADDRREQ -# define EDESTADDRREQ WSAEDESTADDRREQ -#endif -#ifndef EMSGSIZE -# define EMSGSIZE WSAEMSGSIZE -#endif -#ifndef EPROTOTYPE -# define EPROTOTYPE WSAEPROTOTYPE -#endif -#ifndef ENOPROTOOPT -# define ENOPROTOOPT WSAENOPROTOOPT -#endif -#ifndef EPROTONOSUPPORT -# define EPROTONOSUPPORT WSAEPROTONOSUPPORT -#endif -#ifndef ESOCKTNOSUPPORT -# define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT -#endif -#ifndef EOPNOTSUPP -# define EOPNOTSUPP WSAEOPNOTSUPP -#endif -#ifndef EPFNOSUPPORT -# define EPFNOSUPPORT WSAEPFNOSUPPORT -#endif -#ifndef EAFNOSUPPORT -# define EAFNOSUPPORT WSAEAFNOSUPPORT -#endif -#ifndef EADDRINUSE -# define EADDRINUSE WSAEADDRINUSE -#endif -#ifndef EADDRNOTAVAIL -# define EADDRNOTAVAIL WSAEADDRNOTAVAIL -#endif -#ifndef ENETDOWN -# define ENETDOWN WSAENETDOWN -#endif -#ifndef ENETUNREACH -# define ENETUNREACH WSAENETUNREACH -#endif -#ifndef ENETRESET -# define ENETRESET WSAENETRESET -#endif -#ifndef ECONNABORTED -# define ECONNABORTED WSAECONNABORTED -#endif -#ifndef ECONNRESET -# define ECONNRESET WSAECONNRESET -#endif -#ifndef ENOBUFS -# define ENOBUFS WSAENOBUFS -#endif -#ifndef EISCONN -# define EISCONN WSAEISCONN -#endif -#ifndef ENOTCONN -# define ENOTCONN WSAENOTCONN -#endif -#ifndef ESHUTDOWN -# define ESHUTDOWN WSAESHUTDOWN -#endif -#ifndef ETOOMANYREFS -# define ETOOMANYREFS WSAETOOMANYREFS -#endif -#ifndef ETIMEDOUT -# define ETIMEDOUT WSAETIMEDOUT -#endif -#ifndef ECONNREFUSED -# define ECONNREFUSED WSAECONNREFUSED -#endif -#ifndef ELOOP -# define ELOOP WSAELOOP -#endif -/*#define ENAMETOOLONG WSAENAMETOOLONG*/ -#ifndef EHOSTDOWN -# define EHOSTDOWN WSAEHOSTDOWN -#endif -#ifndef EHOSTUNREACH -# define EHOSTUNREACH WSAEHOSTUNREACH -#endif -/*#define ENOTEMPTY WSAENOTEMPTY*/ -#ifndef EPROCLIM -# define EPROCLIM WSAEPROCLIM -#endif -#ifndef EUSERS -# define EUSERS WSAEUSERS -#endif -#ifndef EDQUOT -# define EDQUOT WSAEDQUOT -#endif -#ifndef ESTALE -# define ESTALE WSAESTALE -#endif -#ifndef EREMOTE -# define EREMOTE WSAEREMOTE -#endif - -#define F_DUPFD 0 -#define F_GETFD 1 -#define F_SETFD 2 -#if 0 -#define F_GETFL 3 -#endif -#define F_SETFL 4 -#define F_DUPFD_CLOEXEC 67 -#define FD_CLOEXEC 1 /* F_GETFD, F_SETFD */ -#define O_NONBLOCK 1 - -#undef FD_SET -#define FD_SET(fd, set) do {\ - unsigned int i;\ - SOCKET s = _get_osfhandle(fd);\ -\ - for (i = 0; i < (set)->fd_count; i++) {\ - if ((set)->fd_array[i] == s) {\ - break;\ - }\ - }\ - if (i == (set)->fd_count) {\ - if ((set)->fd_count < FD_SETSIZE) {\ - (set)->fd_array[i] = s;\ - (set)->fd_count++;\ - }\ - }\ -} while(0) - -#undef FD_CLR -#define FD_CLR(f, s) rb_w32_fdclr(f, s) - -#undef FD_ISSET -#define FD_ISSET(f, s) rb_w32_fdisset(f, s) - -#ifdef RUBY_EXPORT -#undef inet_ntop -#define inet_ntop(f,a,n,l) rb_w32_inet_ntop(f,a,n,l) - -#undef inet_pton -#define inet_pton(f,s,d) rb_w32_inet_pton(f,s,d) - -#undef accept -#define accept(s, a, l) rb_w32_accept(s, a, l) - -#undef bind -#define bind(s, a, l) rb_w32_bind(s, a, l) - -#undef connect -#define connect(s, a, l) rb_w32_connect(s, a, l) - -#undef select -#define select(n, r, w, e, t) rb_w32_select(n, r, w, e, t) - -#undef getpeername -#define getpeername(s, a, l) rb_w32_getpeername(s, a, l) - -#undef getsockname -#define getsockname(s, a, l) rb_w32_getsockname(s, a, l) - -#undef getsockopt -#define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l) - -#undef ioctlsocket -#define ioctlsocket(s, c, a) rb_w32_ioctlsocket(s, c, a) - -#undef listen -#define listen(s, b) rb_w32_listen(s, b) - -#undef recv -#define recv(s, b, l, f) rb_w32_recv(s, b, l, f) - -#undef recvfrom -#define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl) - -#undef send -#define send(s, b, l, f) rb_w32_send(s, b, l, f) - -#undef sendto -#define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl) - -#undef setsockopt -#define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l) - -#undef shutdown -#define shutdown(s, h) rb_w32_shutdown(s, h) - -#undef socket -#define socket(s, t, p) rb_w32_socket(s, t, p) - -#undef gethostbyaddr -#define gethostbyaddr(a, l, t) rb_w32_gethostbyaddr(a, l, t) - -#undef gethostbyname -#define gethostbyname(n) rb_w32_gethostbyname(n) - -#undef gethostname -#define gethostname(n, l) rb_w32_gethostname(n, l) - -#undef getprotobyname -#define getprotobyname(n) rb_w32_getprotobyname(n) - -#undef getprotobynumber -#define getprotobynumber(n) rb_w32_getprotobynumber(n) - -#undef getservbyname -#define getservbyname(n, p) rb_w32_getservbyname(n, p) - -#undef getservbyport -#define getservbyport(p, pr) rb_w32_getservbyport(p, pr) - -#undef get_osfhandle -#define get_osfhandle(h) rb_w32_get_osfhandle(h) - -#undef getcwd -#define getcwd(b, s) rb_w32_ugetcwd(b, s) - -#undef getenv -#define getenv(n) rb_w32_ugetenv(n) - -#undef rename -#define rename(o, n) rb_w32_urename(o, n) - -#undef times -#define times(t) rb_w32_times(t) - -#undef dup2 -#define dup2(o, n) rb_w32_dup2(o, n) -#endif - -struct tms { - long tms_utime; - long tms_stime; - long tms_cutime; - long tms_cstime; -}; - -int rb_w32_times(struct tms *); - -struct tm *gmtime_r(const time_t *, struct tm *); -struct tm *localtime_r(const time_t *, struct tm *); - -/* thread stuff */ -int rb_w32_sleep(unsigned long msec); -int rb_w32_uopen(const char *, int, ...); -int rb_w32_wopen(const WCHAR *, int, ...); -int rb_w32_close(int); -int rb_w32_fclose(FILE*); -int rb_w32_pipe(int[2]); -ssize_t rb_w32_read(int, void *, size_t); -ssize_t rb_w32_write(int, const void *, size_t); -off_t rb_w32_lseek(int, off_t, int); -int rb_w32_uutime(const char *, const struct utimbuf *); -int rb_w32_uutimes(const char *, const struct timeval *); -int rb_w32_uutimensat(int /* must be AT_FDCWD */, const char *, const struct timespec *, int /* must be 0 */); -long rb_w32_write_console(uintptr_t, int); /* use uintptr_t instead of VALUE because it's not defined yet here */ -int WINAPI rb_w32_Sleep(unsigned long msec); -int rb_w32_wait_events_blocking(HANDLE *events, int num, DWORD timeout); -int rb_w32_time_subtract(struct timeval *rest, const struct timeval *wait); -int rb_w32_wrap_io_handle(HANDLE, int); -int rb_w32_unwrap_io_handle(int); -WCHAR *rb_w32_mbstr_to_wstr(UINT, const char *, int, long *); -char *rb_w32_wstr_to_mbstr(UINT, const WCHAR *, int, long *); - -DEPRECATED_BY(rb_w32_ugetcwd, char *rb_w32_getcwd(char *, int)); -DEPRECATED_BY(rb_w32_ugetenv, char *rb_w32_getenv(const char *)); -DEPRECATED_BY(rb_w32_urename, int rb_w32_rename(const char *, const char *)); -DEPRECATED_BY(rb_w32_uopen, int rb_w32_open(const char *, int, ...)); -DEPRECATED_BY(rb_w32_uchown, int chown(const char *, int, int)); -DEPRECATED_BY(rb_w32_ulink, int link(const char *, const char *)); -DEPRECATED_BY(rb_w32_ureadlink, ssize_t readlink(const char *, char *, size_t)); -DEPRECATED_BY(rb_w32_usymlink, int symlink(const char *src, const char *link)); -DEPRECATED_BY(rb_w32_umkdir, int rb_w32_mkdir(const char *, int)); -DEPRECATED_BY(rb_w32_urmdir, int rb_w32_rmdir(const char *)); -DEPRECATED_BY(rb_w32_uunlink, int rb_w32_unlink(const char *)); -DEPRECATED_BY(rb_w32_uutime, int rb_w32_utime(const char *, const struct utimbuf *)); -DEPRECATED_BY(rb_w32_uutimes, int rb_w32_utimes(const char *, const struct timeval *)); -DEPRECATED_BY(rb_w32_uutimensat, int rb_w32_utimensat(int, const char *, const struct timespec *, int)); -DEPRECATED_BY(rb_w32_ustati128, int rb_w32_stati128(const char *, struct stati128 *)); -DEPRECATED_BY(rb_w32_ulstati128, int rb_w32_lstati128(const char *, struct stati128 *)); -DEPRECATED_BY(rb_w32_uaccess, int rb_w32_access(const char *, int)); -DEPRECATED_BY(rb_w32_uspawn, rb_pid_t rb_w32_spawn(int, const char *, const char*)); -DEPRECATED_BY(rb_w32_uaspawn, rb_pid_t rb_w32_aspawn(int, const char *, char *const *)); -DEPRECATED_BY(rb_w32_uaspawn_flags, rb_pid_t rb_w32_aspawn_flags(int, const char *, char *const *, DWORD)); - -/* -== ***CAUTION*** -Since this function is very dangerous, ((*NEVER*)) -* lock any HANDLEs(i.e. Mutex, Semaphore, CriticalSection and so on) or, -* use anything like rb_thread_call_without_gvl, -in asynchronous_func_t. -*/ -typedef uintptr_t (*asynchronous_func_t)(uintptr_t self, int argc, uintptr_t* argv); -uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc, uintptr_t* argv, uintptr_t intrval); - -RUBY_SYMBOL_EXPORT_END - -#if (defined(__MINGW64_VERSION_MAJOR) || defined(__MINGW64__)) && !defined(__cplusplus) -#ifdef RUBY_MINGW64_BROKEN_FREXP_MODF -/* License: Ruby's */ -/* get rid of bugs in math.h of mingw */ -#define frexp(_X, _Y) __extension__ ({\ - int intpart_frexp_bug = intpart_frexp_bug;\ - double result_frexp_bug = frexp((_X), &intpart_frexp_bug);\ - *(_Y) = intpart_frexp_bug;\ - result_frexp_bug;\ -}) -/* License: Ruby's */ -#define modf(_X, _Y) __extension__ ({\ - double intpart_modf_bug = intpart_modf_bug;\ - double result_modf_bug = modf((_X), &intpart_modf_bug);\ - *(_Y) = intpart_modf_bug;\ - result_modf_bug;\ -}) -#endif - -#if defined(__MINGW64__) -/* - * Use powl() instead of broken pow() of x86_64-w64-mingw32. - * This workaround will fix test failures in test_bignum.rb, - * test_fixnum.rb and test_float.rb etc. - */ -static inline double -rb_w32_pow(double x, double y) -{ - return (double)powl(x, y); -} -#elif defined(__MINGW64_VERSION_MAJOR) -double rb_w32_pow(double x, double y); -#endif -#define pow rb_w32_pow -#endif - -#if defined(__cplusplus) -#if 0 -{ /* satisfy cc-mode */ -#endif -} /* extern "C" { */ -#endif - -#endif /* RUBY_WIN32_H */ diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Ruby b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Ruby deleted file mode 100644 index 3bfcc02..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Ruby +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/libruby.dylib \ No newline at end of file diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/Ruby b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/Ruby deleted file mode 100644 index 241fb04..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/Ruby +++ /dev/null @@ -1 +0,0 @@ -libruby.2.0.0.dylib \ No newline at end of file diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/libruby.2.0.0.dylib b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/libruby.2.0.0.dylib deleted file mode 100644 index 7686755e2a20cc2f6a23ad22f09e0d35939588cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2505460 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%0APQ7zmMDywwUe5~{{cEuf^>}DMVRp=N7 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

3Nzz&k7<4`WuC%heiC-P!jWf!RkQeCj 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

s97&-`JJ61F;1J8 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 z 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�`6)=WI*9b&;w)dN-rY7q7lBvYmfQv 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

)s#K3_8z;O|+hUXSt*xAUSrWx>B8+imZ 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

0-ZjP&p+114z+b#cYhVN| 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

=%<<85ZvRi}*rR*n2N^9V*UM4i&x9e4Y?_ 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

MoRl&upfSl$_+ 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 diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/libruby.dylib b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/libruby.dylib deleted file mode 100644 index 241fb04..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/2.0/libruby.dylib +++ /dev/null @@ -1 +0,0 @@ -libruby.2.0.0.dylib \ No newline at end of file diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/A b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/A deleted file mode 100644 index 415b19f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/A +++ /dev/null @@ -1 +0,0 @@ -2.0 \ No newline at end of file diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/Current b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/Current deleted file mode 100644 index 415b19f..0000000 --- a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/mac/Ruby.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -2.0 \ No newline at end of file diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/win/x64/x64-msvcrt-ruby310.lib b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/win/x64/x64-msvcrt-ruby310.lib deleted file mode 100644 index 5a131312506c35c8bc4dfb81c0dd190cc86a3f11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615390 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 diff --git a/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/win/x64/x64-msvcrt-ruby320.lib b/ruby-c-extension/sketchup-taskbarlist/ThirdParty/lib/win/x64/x64-msvcrt-ruby320.lib deleted file mode 100644 index 7a79fb88647d8d47f9151d07082431cf1eeaac06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624846 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Î)Ux#V!V5FGc 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 Q`oSf4d%Nft+pG!yAN%&s*#H0l literal 0 HcmV?d00001 diff --git a/src/testup/lib/ruby310/x64/TaskbarProgress.so b/src/testup/lib/ruby310/x64/TaskbarProgress.so deleted file mode 100644 index 11ccdbcbe141ec15df11defdeea6255c4d369ac7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97280 zcmdqKdwf*Y)%ZP=WRf9dID;@4RAkhk!FY+rOX7&mz(mf#M1qRq6)b{Uu_DX>R*^=uc*`l*+;Qgu@4Wf<+&=%-yS=k+{lO3JiFm&^+dDt{1Mi(b@CK(`?Y;Y++h(8R za^)ALLEpaP@m;4q*KK4z7w`JI@pRrV-nGB+zj)r;y1y}7J@+-9t)5>uo~hFJHJ+=U z2O7ulyubB8qnGDt&mAzX=J_t=_9= z+Z~@ZE0fk`JJmZlYse_uOT=_ovC~iF=~m$y&|rnLY_?n#)&I10kSfUKFUvNQ7pqX_ z@t^NjOwILn+f9^ti|1`p_!+xxuT-?$ZgUTji1c5R-4>)$w{EvxlZhMnoMg8Z^FELC za@EjuBK>g6z<=Y4rgP?58C4(YtEyYjHsH@s))`j?1J?v>wr?bU z1?k{k!Ik&)pI_>ozhJ%$q{1CIRQcxrC%kj!&z^e^83mU%aB6e%jQmHw@x=cB>d$|* z9{bd*8*i);Vn}(4*4k`(JiDw(kFE3G*s{61IWIa~KhS(2l}beh8}``V(Y_At(WVx? zenWKds$mpLzsGu=L<}7mF`S6w21Z;!#E8C#?q+*r@G4K=drfb_Dj~7Js^Rjj1)D6; zn+N<=mNkVFE`bq9RC_!3l7B$z=FOdt9~q;^Zz^(Lm+qr(^mebcM;!Y0L&<#I*ks1Z zZ0s^N)xQ}jjCI;0!{lp7tTQVzDAt>!)jvo*DNpskY_@PBSX8dJ@kNx)Xx9^-=ELB` zbEwH?TT?)sZfrBR5>?j}3G1Y3xy^c$mp-_rQotf!xK4` zLSXvix^YucsUUnti$1Hp|E=?V2F2{+YqM^+-lZn0&6g1}2AMl0db8@E9*-0is!oQC zUFl9b_3a1sS^JWMbz`IX9C>x4tGmS>A^wm)>rIK@Wd2&k?@D>@e&v{5eCJ!~Vj&gx zbumd4UA*4v;#I1PVPlhYF>JJ&mmb~Akw^8?h!pvc>S|w9=YC3?vL5w~X_`J0uBVzw z`j&J(*5iy8>V{`G!=fi#`6TGZaps$(B}ax0N3)9e>=Seu?Nx@&+$_Zst}Yd`%j^N` zVWSCLexzbHnNgL&^E>(`Xt{ycz-k$raKf=hA`_lX>8wGO#+Rf$z<87PuXI|mq^**2 zM6O9kj#QEKNh1H5j?7V!4lDARbmSM546GVtMLv~|d_zUbw4(T9R-~Gnox-K8@t2{8 ze(rOV=RUV??2b;Vxv$U`y|`>c%JV~pwrqzUUsB{{=FAlc30IUyFfrbq@?1@_9=qHY zJ-&59A@4rk&u4@e0Hr_|Ufr1N4jOH`@tSVf zEmCHD%hizUshQQr1m{t)Eq#McAWhG6i`)Z=x;JEW>Bc8g&tR(_kJJ-3wn1~c@o%b1 zRqM&@e&BPdvX8C?)L_w*N%w8Db)#U+bOJgoz*9EcZd2SxH->LF3fvX0f8S=eEj!-u zY~U$W@wm#`qLAML4*yBK`2m9v8~0~|spzXj=0JSr9g;KQdX(6>qfxTmOt$3nsWJ60 z!%)T?U@=XNxmSf}sqbm(d!qWTP~Ro$dzAXt)VE!I?^k6%RNrmtd$s!h3*Q<1si9f3 zLQ}0cRodoxo^_liB^ce5=XH63Q`9#_Jw!IC$hCcuk!6tDCZP*sQ_AxXRnqgO^{yK| zDbMdDsy-F*03pIajr(X8D2h8i=8-(PvTOrfx@jh!-_1L1dkPa1O-=`o)zIy5#omAqi}ZPMf)@s<1}=1WDs=!0&!c9B1jp{;hq z(Lf!6c#fNP)sv(MN>7a$1VF35hT}I954w&c&r~ZqRRn4b)Y`3Wp9=`dg9p{;CEgA_7472p0MMFW6(_YH6BH zt6xu2o8w+yc(s{lQ7tq!#rz3WWL_d)xAFxJ<|}%3P2gc(0{t-w#+n;|skm3dbE=g- zOww1LBtTCBDCsu;`KiWD=4Ehge_bkixp|fVWE#cFZIL3D8q-kCj1}Rw6D}hSOlCpsYS~xZ(O6QX3mpV*NfUn^wJaYvpG*CXy@ulv%GWn7 zb6JJc96Hq=cPu8sYy+~wj5jv!`$S|#FILN@&mM=&4Sf|IQd&6;mVZ560(Vf>`rv}ImTQ&|dMD;tO zT7~DU88FPevZl_@>0n}fD%N9Pgbd_p5{!c8e8i_x)%oEm&#$2(V^^FQ2%+vDlmKhS z>!8eB!HV0T^oxN>cfvZXq*%%xy$GP^Q><)<6ssalukVJc%vM>K4aY>Q;>eIp9^_l9 zg>yM#sqCn~uf}r*)EF5{NmshbgA&v2NRXw;;hDTC&$};V+K|jGds9+H!n>(xF$3ri z+%n@9S#J92Sux{~(PO-!8(%U>q7L%_cnuqE#!g)bL}b6dC9?A;G+oLwzsxTfF(&UR zikFmv2i?$}Nr&!hj|?ws>e97mT@T-4w?#i^!InAqj6HcEQ}#KlY@V45T9PBpb0H{5 z^i!__nR9+qGSB=;k?bo~QK^rKHjd$8qW#>0mw`2!&01YkR0vsuPK^tgo~=vSUO@= z@9Y>!4#86!T?9|UP#eT3yV=TMnO`&2(-;_TK3uF`27#}$DW3eKF)b9(Ukg^vxNmL(3WC_}v0nS4 z@0(++78cjP87-ofACYSQ@pNf*R9gMHy#HLiN6rDuWplK99FIU}daOOQUt8w*CmC2p zU*RFI^5nIRN2}uzzU>O*Y}i&a%r^51DpxcFD{5X3Jln-6z^2}0XT9{s|8+V%; zjV;^3$PKQ0Gn%JAG4MO9rA@QRFox&mF_E{O@5F7bM)MjE0b1FIgFT4PO4QW~V4uR@TzVU>Uh z&xAEsvlI98yoP?$w>O?)x#+R$Y0=`>!-`m2HznwdqXNE6_~x_+R8*L-<}I&N-J3$@S)`y~-0Q)6aKvS^AtKmWeu?bk^pM%{lFkQ3t~Jd(#DEeIVT z*e;O~jkP#+-=6uM7WcFC0|U!WvC8U4mG%D*W!-(-D!0h!+LH)|m1S=RjZJ~tt{+5Z z&kfXmIdS$6qCsPa(Iqnc1bgM+cJ0YP?Y=vIFgp~_DXJX2kv8NQy%3)>eoaw9v|5k3 zTB?|OW4bO+Y2%u5?Y2nqxS6?Gw#X^t=E>s($1}a(AP;yK73r%*LK70xwWpdF3=bNP z^6ALKv37ef?l_xZGLN_-0;|9;yHx#?k8)dSCoZ^;949SU0C;f+V3GIKmP=Zq*BOrY!ggD%-Pz{YPC({)+_8;Npu5EzDUY>#+Z?NSg~~}-NeCe$ zyCZnouApz1s49R|wD;1zQCH0M3sU{@Q3)P0s>LG6MU?W#JwxP%vZe~h9e2>~pEt?t zX4Gtv+Z(Q7I~@B|udSH1;O@QAt7G>S=0vNEfcI>#<7XpdJz0zVx)CT9(z#flRh@%i zK2*=1$__YGY@SK0lHTOW-8MH{E+bH^8%}}hQu}j1bIHxTfLkTIjYs^qKg%A7d?W09`azeUY@d@j91 zq%ZfCX|YB|#yG5Jr;OmCoUpG;`_X@shZm>3#D2p|Y{?pb+oN1G$kCG|C-<&zx=sM77vt7s1t>|z6e}{|~ zHD!)S4;#C+l{-SK?diX;_V}-8nk!OxfX4- z-=>w=wUU1LCBQGS;Fkcu1o$O^y?nZ&|JMH2BQ+$SpgVo|3K`o)U%o4qnqbt`ilro+ z-5%oKXbGg=owHnzPyI4JwRcW@>bDJ3Q!VoTReb6OWt8GRW z6V5c0h4O-{V36!{9Oi2-a?0+ePp`4ta78D=kb6^+G668eyb?MxTr-JeKVG)Oe2{li zB8ae#Po@f_T`0cM;l(Xrsyd6_#DXD=)1m4xtJx?B#T~VOi;c?ycq%Hp+vSu>{ms z3p@NXK+F|Pz_?>P0Af9<$QVTb*Q#lDyE((EZ%CV?0whU&Na}f}lSZa@lnO_ND_6>b z?gH}(V8vWtW4Iu%H7tUzqyGBoPefFN&TEPagYZ&!sI6I+tfbQ_FlV`1OS4MFmE+uYTGi_>ND~*-Cjull>XD~puJ!| zKjmm7PIZqhTVMCmG-ZsMOKNfyPjp4cB5ZC4esP}&~VXQ7@neH?3z z^cub4#JHzkO{GGyt*I*G-H>6jRECVYlx>OKwmjr()#{QoLRe+}2L!5o&05`d0!EZY z<%t94{bUpR9USt#qt*YCl;mAi#!CmB?~70$GPVU)iGdRRC#_3sa<5H!mhl$rxh{Hk zFfk#ITww53Hj(D-sIfr82vN&Q>69nYU+(0P(Mo&w@1(sC)v3Dm*!rB1@6*oP6$Q4C z`tO0MfEuJ!!WPa5{&#RD#IXB5Res0lp5qM_GoFA~v z^v`X$RXJ@g+kkoH4A}uEJjK!nL$(yu%${zO6uuF0{JQ@lJstiT^+QzF{@d6Mm_Zan z*i?p^uSJ=V@O1Mq13&@>unIDThYSGpJq2h0ob41^4H=2S=Vc4dD*~riltxFwX%)1l z8E2XJydll@#L8CS0IWZ0X*H31^_vxV0b8^6( z9x$I-ztwhB=5)EtX+Op{-DozC`vz+1Fnv5A0c95?C9p~`XMQc4XT`)7)c*~*>_Z~n|A$-tQy!s`Fm}5RVFo>#_D}%?IdFZRXgvI*YF6c{?2W9)Ez843mNCg0 z)LxiW5Y$#)H6$Fjp>LfNjOzu#hUy_Lq?1O5m6P&Gn?qu-L1*!OA%9NX*|OZor|kF~ zNzaW-Ie!l6xl%3zcK}E!M%M9Jlnplcv-;~_iGD{_P3eM6t?3HY>&i(^UK@008nl(W zC0&2IYW2Eue2#*igO)U3r;*yq{01jU(q6FQU3C0@?VkMoNM+K&Q|^77cYsh6__(|+_mbcGaW^V)0+M@Ya{Xj|m!c6<^-eADW0 zW0J2wd{5T8-#>8A+^oHl0nBR;u9F#OYzW2P9UY2wdP5}}LM7X)vYY!dFxwPdz-bR% zmL9GC@djo-pR2rl-Qefzdo$O6yKE4jsb0RW_w#k@OyV1B0L1gBE3D_QnylxOd*%7< zvUrX4d}M|7{AH8%{QX{@h?CM>y>_iULbay#u=)^N%*3cl=yc%Sy;a8UP;=5T(Rkul z%U1{)y%9*gFP(lkAAhbCp=A#bN{5K^_Qj<`#QFQ;(jnqz_Qj<`_k{Cn1Xy^GJa}7S zy~%^OChJW-=GynJKfKJgzGqR(oaJEPKk@Z3`1)Az^|9dVBj@{C2#%slDC2QLVQ;!6YkJYZ$g)> z^b4VEHxek6-3U)&zGTUKnVZ!`h8ieFd+^76Ta>Lq+3taqEg2TxtK@ez)3kf8auc}0 z%h&fx=P={=Om*{hy_c_BONpQ4=j*C!$u?86%_AY?mweTdZ>Hp%m)`b3r&0xUYCTko z7CZ`#(v)|*EE>%b8r{{0b7?*_B~u+7S#Qg&H+cw!S#R>-?HTJ$9zt){n>={yu-@ds z+g|HUJ?7elq1amb(pYrXl4Y~8m}*Cu`|=KK@-)sNpk0rwI0W2#m6 z9f*FE-d`MHe_@Z;?^|_HfciE@PE5ndPkB}Y1Euibv>G${z9j^fih!gRN_5R`P=#`& z$ldwHP$j>u5}gkFK0MG`jP_2rpQSTq578%UOJ7)Wjb8Ko<59VkZLlO@txnjrXt!j| zt!<)c2uQAqauM{J+#z36bbp8u7K7t3vW5-6Q_RqHxx!>)J&vd=%z7F~_`m7=T1un- zjykcxbbid6Zrnv97C2*zbDUZ|_CXNTT&gD?k^Nwj#V~{k1Z{zDV|0IQc>*s&<9>JK zhqdKQ%%;d)wdFsN=S{WcHe~TaK!$DRORY`OoC(tu22(i|5eV@_+I) zUXS|M0LzxVXpKzp z$Y@G=&iFME_q&sBL(h?(s>tJr)Z=$KJBPvHGDC!%j`pz6RVz(TVI(JS+Mc;vOq%&- z5hJi%T;F6Lz1$dV-cG~-an+KeAH9TPyaR{uLPD$UbFj=vLw7SeFyOLzfR*I!&L z+tS#(m*d^_Yf1BUpfD&~tM6=ATNkl9%=#7Z6Rwwn?AHn~u0>tEwen_;9ITp>jX6F# z4Dq+w%K0lE=4T?6COofLQGb`HH6k z6|z)rk3#bz_7)=ly3>Y?YGXI5yyzrp-~GR!eMs=*R$FE_XS7V8rC+LNx2FwlMg4}h zk+Ib>enS?zW2+HhP+{h=wf{W{jfr)ts`lfjpiWYlOS6j+zZy2|VnQ8;RD=c1Wy`k6{wosd0uz{H}lBdT{ z2*p~R{_{Vpx%||q=CAwAzw%VS_UL*&)t0(L$;3o>y?X%#?fH$xvF=^ z9hFX^zpguS5>TSg_-hV(Be{GJivB@>3~HT_vLykt&3}G(W1cv(yhQ9Cbj3bX5T~)XfR~@sZ<}if=p2-^^d!BP^1E6oUQt* zdfJ$$z0z(za!!9YQ*8q=AstV(b0%5+#k#3B^vgNy~){{j%-Xg`J=P zSb_q8VOD$poBDKmt0*Ubqr+&!eeDazVY-Czh7NRvc{^8cemA>H`#XEHW{h+pU-QC~ zLfIP>R?H_y2+gqsn16*vQJpE*8jF(Bd~2Hct6;xSR>#t^R1lAq4O$(FURxp{ZYm2$ zm_EQHW{ijznnRf##-Yv&Nj2Xd3&_N%)7f+2!9@%^bX3|8oFbtMzZegXijQiS2c35K z%P)&&>&AX&sIJGC`kA?YWkL|GRD7vUry!pYoAI!*)Nk1$bYq&1O2*s|QKvOIh34OA z!i(ZmT(*G*y_#>cb$%c0T$#w}Q6_D`8(aIJn+ITJf!JYtbc9jqXT;;9Drr*OaWUUz z8G zqIL6!#o+nwv!xlzBheAtmP(!>O}#)()26738G>o{UzFmpf(L`}GKxIO_D`PTa4H&5 zh8>Sp;n4%+g)}?Bg8pS$x3RU#Xbm)uNEX!`9H%D&c4Y-dVF9`6sir{r1-9scP^u}M z-4tka<8`o$zORub)GQyKX=G$>*ysr~<}#0F=&>ynTu;Gsq6Y|EIxccy#_(i1RFNK8 z5XMliF3PfYa{`9VvJFf{Jrut@6l-&uUs6Fh`|IRiq(eb9@aEgZ!7+^e^mRL7=^+yc zAfi80nzRgxTSN%L3EZoeN%NlL6pt2Nx^JM6#`?A!E+~Ex?dAglGO-M42`&d$kea`r zuBKl`Q~DEQknVGh$2SOd{GXsh(2P1>>4xz{C+%b_%{VG8;rjYg2t+0~i}aTgZkMoO z#ouIw-z8okc7}QH+{x_7$gjtcH=ZAomN%{jNk|}r&2D0j7=DY^j!|}TrfeG%S(WAN z(lN@ilFTh)DFL4r-%#?Vz3j8FsCo)vd0HJNTI5I1hv#5WF(xBP?bFN3s>(L%#*J<) zddM)LvN!adoAjMqLpwKweVep;H1#&U1&it9^+Qo=@;xh+>M3sD?D?#~IVVxS-hmFL2~Jb$tBXmuM&rF9c&T~(ss zolxSW!y%)a5oTA2kea7AcV^Qj>fRzmg6VT@$mrd#|Aj)wQ7Ev=4}?(SJ}0)!fU!2V z_wo`zPG-x@g!Xlzc_u)le+Bu@x$afQ?Jup- zvSj#e3MY;->Z4squX>qJiJCV$X;Y|dm(-h>2yyp(t34!AD%q-xF7kv88j#duN#%}# z(3g!4Kk`M0vncU0gwvE~3&K4|4_-S9QZ{las35z;D7^5Hsw!(IFLXfOD&IENY2W(D zGs=z*L76bV*?v7uWQq)d*mx@xpUe*B)ACSaf-@AKU{)n27b^L&Dlx$fC9d`&)mDcRlifV0n=goX z99vf|un^C47zFfpSRyOzQS`lzWQp)%yB?=W@c@kxn~3-+h`}c<7yDTVi4d{13c6K( zJm{(`&9vA$4OzCz8?P)z$~E(?3jH^WFOB0o#pxeoeR;-C6D(enaIG(ghs?G3$#w~g zx+Pxn=TPokW`n}Y)5d2j)s}7A_^g4sMO%wgpuqt^!hBqD~Qj4viPX$Z9i?!kz~WQ zo3I`mvw;VPe1s_&u7rS!jd@wcy=BGKT5Mj{gPh z0dUL`;Od4S?x?I6FFnlSWmEf(umUB|vzw2e*f7%k0fYRa)PwXi z9;pyRvl0l=k73E5(3s;4G}uF_X4daq9q)BkKfD%qQ}O~Sc`7B7>o#{z$5pihltfV_OZX`0IE$Y(Tjuq!BFU{QKm8Qo*uj6^@G)w~@ zMni)NO>xUQysumkr|F67+~x@tDs0p~4T(IRg~L#LR$RTbPAr58C?hYTPUb+3%nbSK z*AJoD0tu1t9}sVETV#~B(tb%!e)ML9m{6)cauq$kQnwPL?}uKjN&kh`qz+quiJbf~ zDa~dZ*TdJMCgGz#0KCAm;S9x0=R%DYB}=66)0#u|Es<@^eEq~G#3waRWdsU|(q6F7 zp&i5K__CryD2of++APZ3qaTul*`cIaju1vJR_6~70rOLlLv4gj)ypY zb-J*f_DHVzSGEw+(hr2_`o-bR{*0PJk5}!24ev^`WbYa%7W*Uom=d;lrLf|3I@$#^ z4e`nzb#5hIDGCPR%Ob16t>aV4=+Z=;VhB7ZZ$qUayv3Ib^;+?Y(i4-$tGC3o;yLjK zQ8dUa!L`)S3Q(w0V=Gor%x0cWFIX=+XqTussI{uld_;Cfv2`djWZc2R3F&jIyG=wm z;B7MhCiYV`%QOA;(+872^AS*F7KD6PgNCf0te>%yn_O78U>&l z6ud?uB2fob_JEfURAhxfimhYO%*+S1$5J*)M5wr8IiTw-6EzoT`iYA0xyG@6pzcmM zo`3@j^$eENgHeZh6AOSI|D9FtP0MNKCABp6&l`*H8ZLK{^x0?s=ZSILRl)h zpbQ6_l`9I9;8jn~XafMOSAAQvRpAU2!- zCIS|7oZ*^mHFlkIs$?ikSgSDA^1Yo+9{w!_l=Gss7K zHXo$)%f01j==r*$w%WgX}rSy^{SvWej7Pyysj!s<9-TA zC;MIyn#TRJKa#cx`DF%Rzyhe`s)VbPQfBcfFfqpu0V>oYCl5TPTVzE>S`KTln%k0{ z8L0_8AjcT4Ns?drHkDF7=BnU5BRyvHoX8jnPc0iGQRG;zK^raqqP>&>3qw$5n2S5U)@y96)<+wot~YL$GEo=>ByfuMYljwj1NAEXpq zBIP=dgPJ7>zL$vLmYUyIx_6KX&0QVWZtYc#c$aVD%@jwx^i7+cJ4L7~H3zm?JB z)Iqpto^|HHyz4b9rV8I%bs*vfBIHoPJav!&F6M?!QyrU+l&6Z;hmC(aX^x(_MjTVO zg7TDS9Pz?kF3Oyc2#X&P88W9MM7ct(GiCcB{1Slavl01H)Tnn#+vD{XWb2LN5Ok7u z)IUw{`|?!Q;I14=d3G-o!j}U<5OQ+Yr=kV1Ln)=O@7N-=YMt3A+iX_c zD~swAMS?9HYm0HJ#kux?%ak^2nDx3NV zpC?_OiLbu$Q0D}hk}Gj?Zxc7>^O=+1R@QY<~rT2); zrL-8|{D7JgdFm)qpBR69jt%X-Za06+l9lod7nB<9Ya|*F#mt7GL}6>em+1veVK}Y^ zQ9SzcBPFS(P1tFj&%`8jybAq;x%Am2S<)uy`+XAa_G#h|H4ld-VhRF-y*$5Yqm>OBuyr z*yw?F!MUztV@jKfg`}s|*pb)R!g2C^vw}@s zcoypG=!leO`4V_myEzp3!d$|aQJ7rHJrspu-^^MT~DEYo#Iuq4=!rW!~y1x zQqJ{$H{ShaZ&u3v2FJkr?tTA>cNSpI>5YtDb2Q@rYGtn&JsAR>i>cF_PYf?PtyioRfv2L;f1L{}N=SfH2)8mD# zEAM}SyQJ|Jb%#p!fEN0e%(nWrMZZBSM)>o`qSVzE7({jD@LsRZ0zVk{k5 zB}S?B46h(9ztlq7E_zT^a(Ggrpp2BTv8BpbXMTomPcZtT!srxdFtHdPrA7F*Y}M+2 zBasysM@s_6>j^!_Y@muV7*n44)6Zp8HKB>|*u1& zlgT?dan?nctE!AP^Ht1ALc^yrG`fPc$@KGlMXfa(%nJw`t({p+K3dx)`YwT=C@^`t zDKtzKk}5}r?aQ1=PQ4B=SCQcru9vdrq<7$SO#HQ|LpHdzpO%UQWH=UjGLok^3+x!o zpfB|o?M^!GB?AYOPi@RP>)cDvUX-tEuQYMOuw_0=&sOtWH4_=6*62II#;ib1&m~cg zi(P?ot0Us6GQ_t))ID3xFQ~BdTA&AN%yY|9`~@n{O4_6a8~ z4PC3;2HMMZq&&N#f=uqMV3&0Kz`lzf!szM5&k)>3ikwv?7ZeFifEnP-lP*?EXfYkE z;nTopIlX+`-2I8w$LamOyTj^T^%1=b4eRgSQ5gpI?x-ZyyKAHYRo|E^=^sq7roM@3 zB)zJsI43%^FAm!vXs*BfzO2Xy`o)|=#5G5$UV+ma%ToUGrH@CPGXIvzs3fMr zkJ#RCjWFJ7bYyb5AmosdQxrnlcEZ&3=7UU&eUY)DlGlX5kx>8Gjm2FV;mkFxXUQQo zOCPscfKOM$4bVFQTC=p>CL8doXUrkQi^QG~($&j0n?q;IFg#JzAhcb(PDp$px8g3d z>nsM9UaJQBzacUlA*ziO@hiLG2FCgZB(xil&~ET{iYtjo3Z+U?P~x2AF{fbTSdB<& zi#si$uF%-6jx}Mdaw7#m*2k0rL;^wbgVGQ>x`aKdY*6Qkj;Z$3<$_wn zF=c3mP1Hcj>W->60;?Q^Wm7qi^Xl^z8FCFtm=H{N3o;@{yHuzmm z2-j1;R~s6@WmPZb9Y0pTpLd*E^=jU$d7sJqOs3V*_2V}7hlS(qBC;2-vdXs(lJsxZMY_++j)z$GyMNe)38dcOpcOf z*`!&k*3+z#{$|-|7M_6!XZ#Pf)bCj_jDI-0TCoYoa1HcT$n|=t`cG4Y0ghRF(#3w% zAf$!8bRg=*ETNefs?|~STWs2dxYb_KZ|s&WB1#N%$%i=gjk%tEye)RJo4AiweIiR+<~FJG2%gJlMd^{i|^;kFB*(FY3j_!T*;(Y(^d2Zg_BFEq{B{}=8x z_{IfZN)9*Xj8>jydh9cMbf2F1v5e*#=|f{qMT1@3i^L4K&)Rb%J(Y{}$9W+rHq=V3@f{hP)=>H%tx(moHUjhk7B9d9+`kz-I+v5lbKPk zNc9c&R1>xPTIYY=7%W1DzozI~X7@aA(klmJ?Aprq{1qH3af_dIlbHLZWuuE)N zjai(Ce#@AUBi@hm;2EW8S+>Fc2a$7xwT(QBvAeCvk79_LDa9Eq-T0ZH z3KuV!0y?mHD5FXxdocm8`D5h3BZ@$sWIw7@{X9BxWWi|^v~&rHpGzCMv$$rnCR|wP zZVWr_NqV}ovLZv|-P`!E;~t80G0TRAhYJe{O3&CX=&{f3(YEA-vKa#4OwcyOURG2WXzF3|Um?7LTPcxk8`EPxP=!0K!BWx-Pe1H1CxVzDb3Ig4E_ z$gnGm<`ln@Gg^g6ftI(P-`|LGQEg7z&0hc*ZOB_J=q#zFasz=f?*)AR9Cb8z6%@Ey zZecW^A1SDkeT-K3bD>M4vUCmFN&=hEsL5=kOH2Om_=h?>pwA0sH!1EWl)LgsNLa!V zvI8iSPT|D!PID-2GI~Vd8e?w%EW_~dbfY=uS6sv+l7Z#0>zA#HIA=P{*H5$>p0*ed zF#Mqjsw~YIk`s={@|gr!aUAB;z-r3|PgX}O(dp=M%ic^0qe13+z3b%TxHYN{nuFdd zk!Px~CRLUb?h%tyVuAz7$P{}Rn^xR6%)c?^Xp&Y}rS{}xg%!qK|8nDAatTou&tN^y z+(W7^h2*}nf3gzSD+4x;+_BZmX_u0ReklWxyv@3;Xs@Z(q~BRAQW&A{#(4%K>L&MZ}nbenX-9A_%9UT%Gcdh1Oy1Ci~Iq+q|TqXJs`)bi@ zniuii>UfSw>q4fqUQmO9v$ey9kPr|teBCySz=9|tl-{R)Q1@#%9zjQ~IGV5pW1sn% zY~$WEdW4j(hK|CCv%6_!(BLq``ovxKigK;)O4=XH{+hMC6h~0U{A6v)R4fo>FU*(| zzx(gB7$9m%n-W*JGU6Oz+j{)B!iM6v6wZm?a*{A}?S&S_%Y}opp;(IMqw_tA33G&^ zQ=WgNVXb2jWs$nFFukBZ@CqvxJM66Z0~xql{iEa(hI@MXO+}|i&MLp&9yvo>8GyA8 z^>r*7Ua~gvLwjO)aZUK*!kp}H^^$)_zY>Q5REyYtuQ*}#VanGyoqG0qy<|)DYvanC z+Ri^f#*uSkojDP2tkV@a&bNgF{J8#}%8Jm7{yB+vtHYE4OR(d03FHxIC6HdBl37MF z{sU*{V8*Rt)VCwJ(4qcoYJ%cA4;%lpfN9)y*}U!o?jTu{&zah z!o9+G%TI_RCN-m;`8Hhgb@XrGkOtO%q53*D_C-$Q#Ml?Eh|BkFlx~hXF5S&h_H;K# zbuG2JIcg7qaLGIAk<}B|7O3%@oVc_^dm(sy&zyLcp13MY(D_B@NTEcAIhTDED7etS3rAgZCNT^?MVZxU6ro3X?_{iCQnaS$x~HXn67d}y2>F|m62R+&AvP+ z7ex{Kk;=LqVTQ{O0}5-EZG5(IqydCx#mi+C)v*)ElIpLNHIMz$44QkIYVLR10Q@P> zAaYc4lSO*<{DTmH(KRPnQHlYA>4AK}%LP|NyY<8cSLm_UEM6~)eh`NHm+K|_<%ulY znx$_)Obd{Tg2bRimIN=_o(`e7StbpgjG4(CBe-qQPdaeoYJ+wzs*dN_5NiQtMtMn&`vHGs-wtE6qM5?F1+HW9J4Ue7fVbw9zMLcM%E$EwOO*fY=c+f&$~k} z+m7RIBM!Bksd!zhlMC&{V-5VR?X2dd%C}Cd+s*h|_fB;Cfg;Q05N;jQ>i$YX=aYO@ z8P9inO=0zDh%+}&Or9nE76B_dCFODOCO1!vPfUM?OhK00gl9T>CNsHPjoDZ$>W}a$ zQ8WMBiXEoZZbWd8`u7w(@c1Sjoc#zG!r0Ai5^dZ{p<0$iE!mQJ5i&=w!ceb~f@GbR zzO_QDKL@S=GD2`%aSnVlGAVOO#YeYF-lhnbhC0q9d5xd$S>C!O+Z!>6b|}~8j>!)_ zs!*Cd8#vq~WJ|6hAjhx4>}n~bJffA~@WIIsy`(Y=^HdZ!S8UV&FLzuNfr!;70f-wL zh7$%|LwT5T3yZXHgq-teYi8-SoSK-qcY@lEjyQ0i}ImjTh;r8mfjOhe`b3G4p z6_SX+;q;|4uAU`@h0V%)W{>H`&H(^F1u|DroMplICrTYNl7@kSxbMo14+Ps%KMnGN z&9v`=fUyf0YgKf7hG~wbJSbq!1`Ggb3~oGD$=?ouvTvsF&jE0nDXYXcQ1gE*I9Cds z4@Hl6B%Esp!1+#AWOiP%*cR;L@=oz zS;s(LRBibK82jkPdMs_a(MfgBNhslYp2uob#Wr)RW!#Qj6*lUMRuCip0mj2cj}tUr zQ#W2(B><|7tjufLEsKA#JK$A_X z@tRIV4H0UKoAR7@i?mTTF|f2dGS-jkw2!{>OXITOglnkkiyRlslTL`{hkotgFOx8yrWx)~|@o>qq& zCG81|5{<`@$Z5N_<(Q>1^3KC~_BCM%lLCk6#NuElOW>%>FV3%eqC5n6;I$ zdQ_pjS&l_C_i&x;Nu1cblranLDQ44xcQA+W&@1dIuj%{=b+rcfl-C+tSz$-WPjcjQ z(04Vua^yiqV`f>jRf_SzQ?W}B7rJVb0-w)CRF!L+xhIM$mL z&65iJ$@5~p+0nBk>`abPQT(vSo?|`IK$3Oq;4m*&ka(w^9bEIit!uM<%bO@ zpOV?Ka}zq+N7Ch0k25@*Gc}?<5brFGSxt6xj>ZXR`7gtcNg;jNa9oQ3n7S6>w$QXTekE7A+2}vWmVQCN6t9?YIRUQ!X%B~bdysusrB9zV+6hubpv6)Vq-{ejvDbe0diFjTz*J_G1J>TlhczPpER!Yks z!w;mAk>GB>-0ei9c1V}nRhMukv$_+CS2_j6v*sTJ zM3`Ra?&MQaqcd@3wz-4xwQ63~1RiCNVR**UJY%C?<|&5J$b?~=fDev!@hn6-lxRlX zV<#U6G*s4aQGN7fjmjk*Tzn$U z+-Pn#T~FI1R~pSl+4!h9x|{i-0By~?gXia@vXU3WKHN3j(0~j|F{cq2zTG7IXzSJd zkbxGzYM@SVa=;!X&xFF56AISMKQb?m5ajyjy_^SUg3SyWUs~5#-2AG=JuVbY-z>-J zJi>_!l$U0?+`(6;rh{50c(|&Q@kIHJh2t< zI|}dyp&4D|t!i;XV!uFwMMor*ij|;PGW$j6R;ni~S}tI&M$V_E3>o)0%exY zR6je=5bi&D7n{xH5nL1zo9(41ReSZgx;%oFvJy3|I$0q)U+R?81XYE~mMsT6DnBq^ zrIwndZX5S$Yn7Y`feZAXFX)$pVbVs30aW8QnQ@C;Vfae!cgAM%J4D6;=2}^O>H((C zCUYT!FCruh{%dC9bcC3mNPbsr@^ClYCOOoYFud8!Vpttrv01~vwKh_vB0=^E$kw_l z>lluS`80{&WhsEQnsP@WZ08gOV=yq#^=>j9szUR)QEK6pgXZcKsT6D3{H(omJ6-%v z9f;R(j6v~R_U6BYvjaR&SzeM3Uz-+g(`U6S=gYXmMkez#rn2ZK90yU`nqxOHE)}Cb zCmcQ3$~JDd=yMU?dYObOXNTlWZB#keNlu4gA*yr4G;!h2Sbx|6M|gx1SC+Ctwj9kD zVWEbnJW77#xJvFK&^b)rd@wg0zkr#s9&ru@LlZ(v2RgiVMorFK^=2)~ZOf&zXl=yb z3PqZTb@D{C`)wbl`wVUaM49xSOvx+e)5UBuIbGlyrg~E_*qkJ;l!hbQdgoMDb1C;M zUnTS?RU9geZYTQ(dGvLd^ffl-b;3feG6s?zrr{!gCOk;O{o@?#-Mi>gM%&u8T0XIt zAy+Z;#>f!wz-NdsieA?l@O!0MNqIh%1`z#f(q-PkB+002($yYI=TlwwnfiGt+%LuJ zPpd1ZnVe(O>dqzLFF!LnlxApk#k|dlkL~pGMB6KR&Qf!4n+yw!e(mA{F*-(1WrveT zN5xrD^mLqiQHW}1jDe!Jv+z|sEmcI%6x~FwwlZ%{JX<+!`pfa&KGG@3Xzu(6M5wLg zfZ#Pn`h=M#lrTyW=eVJ zunB~oHGLMRc70v*FY}k*V~>;rCK)r<2UH_00O_(gyTZ4`5FtPey}*0{IN+v!vP`~Q zmPvd?+iZCG+B(MxnZ?f@#C1v*Va+^xCn$HgY*6>NWX9R?9BvsRE>_^PW1V}fcPwLZ zk2=l8Ok#b&dB46g6H_D{Rc5kP=3!KH1IvhjCM?5a-oVP37E8|EPP3VE*+!rc!ccb^ zi2hdbw!Xy+r~O_QuJK!CX-JI9mxd-Tyz47z6v$wcn37q@)xwNu8A>zR5pOcj&$Jre z{~F8CwUn1-$S?d%r#js7H*Z!{{gC5BAmF5L$&nQNZaMNsL2kOO^vQft=9F3-jP$`$ zF^l2K@+7lehKv`PY;>+G#j$Opb}!&%YGf-LS#8&mujY}jsJi+yCj#YxRk@NO;n^wu zuc+>l8;0DXO#~c_X0d4#!mUQu&qOtOLvr2|VJ0q9rt?0&jy3;g%k*oC+@~j8 z4`PWCf$DDEi0w@`>{hv`=_cJUtcG)LIaa~1Z<#Cc)*x0OnAa+`t6}w}FUO+;a`>4) z{JQ?9`IA?Vpmi%EWKSod6ziNokOSYNiR$QTE<8`d{Dqze} zR#^IO{!y|go)Z@GvW3X|G5I?l+)s4H#4gz;DeuhVq)#sMJsc}^miag28CwQ!S=FY1 zTXuqy!(le5lvWsRn^!qiJPYlmH)MUx99BD{^D%NFmr)esp5v`MsS)F;TM;0q*lTa1 zO{u1qRnXTm_%iuQt+SO0$KNG0qeA}U4V4k*;WC>PmN%J~sx~NgZk@>l{*pBOAdYYmmeWU`nfDBRX5KR+WxWri(DU{QQlU`jQBkO5 zL1YjTMJHmBXgV%UqbMU3jhYu`W|@)|mCnkXDl9&+N>m`0{oHW8LlyPyB6W_2T}IDR zYEQF}DY+bhc`t2~1s_u5xywqNBJ)-0)-6+XT9;++u>|t|`s5q{bLa{giGXg5)O~Mo zVFbRR7wPc|0eiM6E`gL3ZX;)YWA}4(^KFp7?F$*)T@e=EP3BL@mTb$c@Inf*$Ha%0 z)=9|vvuq2v(^L!FG91G{;UVrcbwzGsFfu5|=T2G^Jwe*#F^6vHW27G;?sS$TC5apJ zM^*J7MBde72eY&v6^ZN}f1*eisPVrR`PK9JqH^_osi>4^IQ~*mu{;w$OmVr>;c#}Z zh)1|24Y>bOYz}RqlJ%hjSevG!Qj9+DkxmG9eyvnMAmI45LabU7UI9a!YmM$-jR zyW%FF@>GOnsnoS8dqUZyrxw1?Au;ixN7HdKj^&!%XRi#k1;ZM0hBf446SXUr^$C90 zz+dzSS!J1Com_K4Kx;tz&cZ%-GY2DH+ALP{&YOf_wkP@R2#)Z)L%ov{7nHCPV3(LI z)ju#6=Wb+yuOi%`j7-FJ8)9E%Lr zQ2b40SoWS=Z&NNu^^DgeC-bYZVH))v9pc(aQP^meWbW#mEokZ0MTNvs;u93%KcutVbQp5q-owr&jI#qGAE!P zMf;+8mw6@@cY6iT+I2D!Ev1Xh(tf_c?}f0H4jXS&F%{2}`N-Ff$Z)fELn@WI>|z@C zD+Of=prFK5#rn^*7f!Of3Xbur6mduWxq zRHO5HVq^_q!|V9-hth9Y4clCf{TUlk0(((3ELhYU%<*!gT$4mB>1xbMj@DMGT)(4lCr2|enw9e%feo>DIW=Nt?|iTBnjCL*G_$O- z(OHQBV7IVDjN*dwA74xpV(X^U_oig0xrh-+^To_V;osWx%Du6P3pYjNuC@2jM;r{5 zuw{6I7HikN8RGX2xh7Ym$wL+`FzOyW>&Jl3ZcXvy9}9NdliZiPV0TvXdU<3guaZYj zau%I||{3wrGW-ro7V0==L&OJ1`&MWB(?YTFF8xXP6<1c*GZUrh^5nlm)?8{=O-_h@L&lKmY>C2(5re~ zkUT@eE{S&~Pn7Tw2@gqX5|*#sS~6R^ZUeuHqt$;zdl;STxZ?PpwIGQ5fCWL(3t29d z0!y695zh-}bk1P*3cfmm<=3H7{3|78Hf56iBx^6V8_l5-W*3@Iep_bI>R`zR_F>wh z`^Fm&|M=+v*gI%X&ZaE~vy!*SBU^RzU`~=dlouRyBt!DZO^%mGUeYHIXYvAh3`(9Y zkNo86@)(>PEsug^p*&p4q4F4#6cim)-P|!pOKzug8)bcA-d>RTJq-@7%+Y?pXJ+~{ zuZe-mP)PIy^82|7r->Q#swFF=dy3|dUNbK&ytKeuzsI_JC!cwI7V&w2Pd%T9`TUH} zulW3)&(nPV&Sxc`m-(#YbMnJB+u3|BQv;~~Q_9h*?yimw2wwHYn`X#+ewX6lK#)DXXU zrXG*p!2z3ju*wJa((tg*TWFQ>asz#X6{G*GbQ+5b4*W*M z)k681)a03$U^3)LmKmA3RD4ADJSdG)d_<}W#ws2kwd z0KW$KP0a2)qNntn|2ZBgX>ay39y;Su&3JtNPG&ru`mCF0a+8}Lp9Z>390BUzd;pUb zY-NM_yA#oLwjj1H$uf2Yjp*Xa`feE_e&B8%Lu7Sn6G!Yg%X*A43S&J9&)O@D{32vc zM6FOi^0S*TdWzviKXHeC+IAVLgKDVG!DWe|TDu63C{|F$NWUOGMsgxq%p+S_7TR*v zI3dPuG#~m@2)pZup=y<(>Q>o*NA_SG3c?3~#>#4FjS$T?|Ab{sTKGdU34!@R11tP( zoPrS*7=copX8z5IE%9bArWe~RIy49Eq1IW-tyLWL*GTJw^`AtpGAic@L~+&k^=Lnl z4fOv2SyWs~w5w#c1evDKzQcqNuBv)i)QA-v=go7`^8bx-L16DA|YIEm5sIji7Nia^t zbfEf?@`+kS6zYE>%8}fOc!mhxO2vZpwB(l-5ME)$d(A~`U*Vj0D76y6)5lcg=j!HJ zo(K!@M0j5|wW3onIoODHoePv7ZRV2TnCQLIx&{nux4hEF-^*TR=ul3mESY=9KKhgv zPzH^(&!=R-e!07UoyeEDa$_gh7!67A3wXZg2oGgXx_9B(=0O1WX`4m<1|Y(>*$BU6 zkoO3$I~j*{!pP^Y1ym_JAfru=WWIa}4IpJZ*UtTij;#MWYq^#It1TXK<0gDRmHOBF zU@MU`I`ZAqy7NgN9lp0$IA$CC&^$ zT1Fn|yX0M?OVcLxnAxBu<4hX4QBOQ=JC3e$|0Uk`i&;shbo7}x9);WMu_--hTc!-D zx!u(R|A=4QHqmLb<>$9fEXemaoTpCfa8>{O{b;^)?(6ITR&eKu&`B(%kukJvKNyIe23MNZdUh$?z2kugHi_(xnP7Gbd@>Fv<`W}9Tbq~Z6btD!SB!~0+sT7Dc`QwgrrDUol z*}NJ%iOqaVB!jkOqdtq@0CXG&7%a81_tG9X1rSFLi-@|3sJ>iuvnt;w$VuOsZ??)u z4|rs}qmm?jsZBVRmc+Lyv_ijG#8ctOd1gHo>!b zEx{Nfj<_%=GLW$X(|$#*>fQ%j!N!TCOy$<$nMranu4g6u6* zu+i_gG<<_#tvlF34_L{A9mUC$%ss1BwdMhy>6UCppW4S}GQ6|TwBVJ!wmOeFlkr?G z#_U;6xv~}3g?kkB-bTGLREgngn5+tm%y9@_%Ef8PMPiSG2u?O{rB)WBl&1#V#IwzN z`&tp(l)?ZphANKGIilP^Z~SRF;~hJA7=`ZTeI=4}LBVvN=ffl@sD|Isl-(cG6x;() zCn(pgf;0-+LBZL20v?YAyIQQ+Vzy>s5qmc5+^ekJvJmLzx3mG7@HMcKM$lg%&i{wK zHvx;{=>A4$Saf7@#swuVaa2?kQH&dkbkDHpfS|Zz+y+?$1)Q)b8jT>vfD6u~Pyl>v`e)m5A`#kq69e(|*Q+roc zSDmV^=G`zJG0Xc9+jn7L6nqiXl1$BObY6V{ZUgEHLc8i>>m%`$B7;i-6r|b?Ze+Y#+qAc9F?uu-!To!H&F?)lbJ+KcG2Clfh z8&aGfy3^$OF%}{`v+!fc`SV`a!gq$}y#*>U;}kco@jECoP5z9JKq;uqy^6X`)Fj?x z<&huy#|EYLAPiDuumB$t0*wQPV(bM(_HrJy;Me2u^^x#&v(7%LrrW?g*dbL7?$43*(gs_Kzvcf<4GB$3u;O zh4|czjJ*&UP^sLQ1*1b)%!ilO&qw%FOop&wW`N&z2PIC>h7h>`Z&(KWxawx;^M5|) zfucybmyW0LAiTM+!svVWCG=U~{8wyC3+yJZ#;CdP@p*IW1oVp=2U;TX=N*L7I}RHP z4r-xF70fuU&24dFw-}D|X(@vNdI)?DbCw&V2exG>*Zl;U(V|ad%5GgOya;@+2Iu0i z=80RfeSQj89{AE9^HeZNjz^>g98zw)4n+xDoFK9@7)k!>pCD|A@(lF-1v7raNdVR< zW0mPIR~}DBIs_a7XZCM^ut5(#0P+!T+{E$`v>~ECu(2Foo`I667qYKB$P0xpIt1l` zH3Zi-FH}+6%e3n{OlZD_6F(Eibk?o*g*y@!a95f8IV1&2iNBM~YjVIfsA}*YU!UyN z8)Y>{aDYQ%Ob`}lPcDVsS0FG(?u1fP;^Ufa_JDWl;q@xeB}3N)GamT-jkhx-7-}K5 z7SmqPtK&&9%5~>hw2^zTJw;%C@o4~wRl;|{pTfB;G<@Z{_rX;Nc5cSseCGY8b^Hw~ zEbJ$ZP_C_mP+{y8;*uE#lb${B5pQ=ER06~k5(=O6j^F`K_X=t87-S6*{lV*75pw0) zPvH{kSfRW-K#u*>gI6dO^8r0mr@RBbql712c`x%`^w;T#L zzIcsSqtj5BL3trijbabMSy!v7jq~2pI#$(2gu+bu`E$<&LEZQZ)Q^$I3)eoaPrr-ltZoji8UQ|bPWV|Q3zwzW!0}x8je3h0z>@gZG;A_sSVoz z`)r*1LQ15%+;SM?EDg}Gc&*5eFb6vM&)8Uds>MSGC6FKbI(o*NTC2b-3=UV2;8;4E zK|-$Y)hkt@uh%O(;79qOXuF~kF|03^$lG2TylXi}u*Z@H*7z!Ci-!p&oD@C;TDyzJ z4RFRh?n5e#g2$g}dw=i@^Jt^IL zDq1|+Vg})9cwA?EktG_7<*7c9_=2~+FncgyhezHLSW(Ag@NCXsYE=eB{iHH@2^5k4 zxeP+C{5NHw%w3DsRVs&J$~~aAhWC|nn_Mzgxf2u)?Ax&k`LK!cumkMEK+r*<2vjJb zl8ytF2`dyGm5T1{16C@I&}rg}E^vQ`{B6wfBE28tZr(>j(RoO{oDA zWXkrE$|v=-rF`@tVRhsp)R9m)4u?IX-My-L`9wOx5l&6)SV5_p#PMnZ2Pz%Q4^}91 zAuN`|sIY*?>AuQ6N*MS;5jDGHy6tlZSps~@8MbJ{Cn6Da1uuFvwE-Ui%iX}{=&MT0f5xEC*OEJUb@Pz#r6uqNVH&f#Dvw#yGT#ew=4M@F`<`x0p!!}ia@m?=G==V#C?)0eQg*>D%$)7=VsA{duM6nK?|8AI;M zf*M1rVbnAprh<#^Ku~Akk!`VtG3nP3K8=rzJgQn{C|k4yA6mEQ>Z!}Ic^wK@5e&G-!GO!HCP;Z8qj^lh z_?B_<L9@Ra&p*_{T`dT5Fy+9|9j-yeR&5#yV=Igw_FqEXah?wW zhZ~(tLH=`_{FMcFG5SM0aiqrgyo`Cn9~`n*!-v~A9mBtX0Ri-6wr((bnPCn$Ml^fF z^UjAyQ4E2xciMCC;_+$tR+C)$!Vm~=Qi0cKNKIt~KJp$ab8*9mG4ls4^d8DR6$!9= z(sTjlq{=;!<^%D?XK2#&oqPGW>zvV!h#h5sBOC5FdBiu42<;P z)NhzqCFf253z$^xk(K!;@}dRvM+v0ue+%RhSXG<53oxd z?9?2BF@rI(+B65OYQ6#jd0T#oZZpmdH5ty?VmCPdc^C8413a0YgUejCtmb+29D3b{ zf8zHO~zU8&AxwUdbSuQTHiqRlEK)=E1+laZ}2K_iZ1p6JaR?2 z)*0P!e@&)C?R3~=%r_-J0eYIgT-I#b2HhBLHFj!Y#pCQEd14zM=MKam-0z}d*yz@5 zQoo0_)cJShxn50hGH~q+JR##DA@C4YbA1YE0NB0^zPAlxhW$1?@&POvZJ^Ecgd@lm zrqe|&E#{oq&Ie&Cg^zi76(ipG_f6?<(EbWB46+&v)?>HT3o z3){Ece#Qh^=d*6G^~LFs^6QWa|J-U#ZAa5^i+7XaLl#pm>e5*HG|&-ZXRkKZY=v_X zgXMuZ*jWxM{m|X>x4LKdlVx*#(cdk5%5aV)$lA-xh?k00v6Et|KodKh8t z8@iPD;5x*AXr@BTwm#MN41v9m$eTG>|PdjuPQ9J%n^s?4p9hi)2;MSCqqZB&yuxqHFm+LF-xu z1B=oYsCfx}D{z2ODubq+;0hfHsNU|gAqSj_qkMh=JiuUEN?5*tLku{~pnI6{5q!bf zr?v*{OmFVO`wC4F3d_>LC);=Mup8!oEtAHd;Pse6&@@^0-oWhT;@yA`nZXBN9Gg&| z^a+$Z7AM|qzBdfjWnpl{m;0UXp&2=whCzMM87Hd2<|eo4#cjO7rkdNha~nUf`H|Z^ zc!&A&2b)veriRRWG#)AMMi?P9Pk5J7f!Ka7{t6zRDjKQ z+{TmJz`BEbIk#!UZKA>E9=EykHY)}_*!; zYr{-0UEeww!t0b1?%^r`bRn*$A`Ah(+E)NyHv%2zEgO9pgv<7XDAzs4Eb<6IdCSyz z-=gLa!Z%(pfXRZ`DvLBh=2weI>8wK{)W9AQ!JHx1| zks6IfKuslYvFl>I-p;Q}@Olfs#zt;>kzF&rAa0R_a+rU3co~ex;C=T)@IG8iS@t-E zEVCZ_8Q5nN0lQ-0p@uKHz@y(K5>Ctj>=aor$Du%b5Dq>HDF}m8j}C??C!7FQ5Uz%e z6v_!FeabUkLqSj9CJeW~9yttq?%H33Qjo8oIB`KVUtVEX(6 zssF}yUONregSh?xw^LQLcr5J0p2naHDC`TR0_Puthgw)tKpg{iQ5CTI2ovBwKfv<} zG>8xZyzR*qiEb6yacBJ>*;fY0Z_NTIcfbT30^`HPv=zoM&>8f?$o=U|E0`3T8o7O2 z@GSK({k|PD!-kFf-e<$c+9~i{gMlx9$c;7a1g!_8 z5wu3lP3+1PhOaPHm=3|P@cFV8?Bjp%gqeujxZyp><8NR|#lmVfjD#IP0fe(oyr-;M zOV0-!$3rgEl#nM)bFB#(#uI|RXl;N!Y2DyS+tyU#0uO^Lrg>+WTJ}4WHxvtM8^1Hn z1S=SISI{#Eb(Q=xqZ)Y5|565pfRlD86WFK~QP8t5sJ>vk6}-~+jW4#SLoknsRE9#i zoYNL8hOZ8W-VZU}1sgM*i>>S42yGZPQD(a7j+a5TZmF3B4Im+O%(OO{iEx^X6529s zUdnsj{15$&O!OY*WgSu z_7~;aPtfn!DrN3=xKMsw8y0Xo1a>4UgHOY@JC;0%rEFX_KkOHl8Lo)s)oqMtT`Tbf z2cP5c&Cax+A_Bfo?}5>42VG3i!o*Ga^yGoY6YDj?1;W$-u(n7+<4tuq#iLw=WgKS#ny0YA}kw6-H$nig$q{m8_v z8!#W-(gAPCTsX!Q#v?d#S8U4S3Nx)h2W?nm@t_IY*7_u9dOM;`Mq z*SU~kbR{Gak})5mSM__5B}L`C9T4ozkc2u2@C00+g=_p>h2KrE>lek7?VHHZB0ER! zz>Uh|)=Eri^zV>-NT6!uDc}$m-26*Dx&OI`L0%1Zu!+q36on5Nn|&I7zk&=iRSrLp zTQdcB=qw9*uEz<6s+$m`hc5;X)d}*HegQUq-S?dcnS@$%x2En<3+%_ud=gUOzGDTd zdYyj*ndv4}|5}~2zYC?sT#9Ezm`hn@7vKV`QdvTw zO&XQBA6hrO?C6#B$`MDdG(QJd4|*;Ew@2^aXgJz@$#*DTHxKn40H|E2h1z`d>|cL^ z4b<&xP;4WPRN^j1pbc|R9w|?U+6@-JqtAxf zL-YxV^X!qUHM{zK!6K~L<$DsPwX@G2y)^qO;5l}Ee)i3ym!f|^dTH(rDCC~USO{|u zgIzVabMKEaU7Fo*2;#Nb&WvB1-LpMQN%WDU52B%Hq7U1o6iZcP37qRO8u4uUxe-Te zE_uAU97wbGp`&N-`yN2SeW;8YcqXy>kvRl%;@$<^Kz*DH$uK<)vm={udGocjUv#bD zuKS_u!L3~vLbbfO465Y-xG2L5te=0t1?%b{js{4AsS)NUwNAKy-6ke!PHJ?%cL*0l zVes=fa|n)S{XzC7@$}78~x-_}fF1*--y))}Sx{_V;Vh)hGA}veg=NI}=QZ z@NC)kCIyVAxq^o;H1CISQ1faXjh#A0!%1na*~9e3n@p8s`VNqLuFc?U&d)%=(wcKT zM*Y9J=Ijmw3Q&>;QG`!hA~X$!F{J(4GaoL-Hp8yND#!;Lj5`g#RQoiH?tZEOb)Exc zJGVui*-o>r6ga%570{fiZp_YxYk5Xj(>CzMU!a7Q$;}u1_+%4UGuNoznndC22hx@~UgO^wh zg*9bp)G!lvkuSZ+8Nd;BV6nvni1vhxZ$v>b%gIM8p z8Wtz)TLPT7)Hq`in})F1z2PqmtW0-dFj3nBDx4E)dT@P{<-`;Ul>3I&%)fAO{48Wh z>HVcwH53A@W@1_30C^7E8B6DMsqok~=u(}>pM)+7&fdX^@3wp=P{*odY!Rhz1(byo z>tH$nmTFA68anqj;NPpwxHh56ka7s_9<+LZI{={J%srxF zdQE&$awI(PwR^i`npjalvY{h{uM=aRoO>$~ZkI{vU8gmkg|V6z-%lB&#VtiiA^Dmr zzt ztk%Yo;guBu8Obtz1Es6jK^|sDU_e~@G?4iLHZSkv42#43f~zx zto#&a&wJr*z?R+?y9DJB=kN{CEq2B$9b7GQsn;oeE8x$da;6W>y@d}1cy?e)c9i=@U_WM)xnJ*&(%4}!ODTGUgcH}U?nH3m${V_SUHi^OWaBURtmBzlWO&!yljawVm*~Jzl#*(dG1Qc^4k(SSk=_ zRDK&QPHmJfzYW*&@V%gPN*6!NgsqpzGdv2kk0Fxfo~E&{;D7|1dabL;ml5nGp!vY^ z2c1h{3VaA9SCxBBG)3YS4jb__3$7D_mIZw+>79OtT^pwM=*SE`mcQ}4duMY_tjTU^ z>08nFf$JG)_kP)dk);qrM!&{#O@`W3_W=6n-p8E%(Gt37zuYSaO_#wEpIfyGWO&ve zj`eU~2iStX51(Ls?Fdv|rmY}{#JL`Zp&_QM<{hwLV_Fk@tPr=zQFfSJq)`jIBTvFv z7A9!=t&WF;{DvAmv1iD=)&yV8);7wVKp&dXNo&+7B4eYR?o~xNp4G)xMD#ry7JE3{ z*coa~u*!(LVuBToA#z7$hAXTp$sOSZgb2rqh~W^;i8(brA)Zz}BPTZfV}Se1pTOV> z+H1Kg;a+)5OQ!s=uKa|m22Pa#uMx4@aWE*3a4d({@jxA`=^U!u6AimM$~@sXc6iw< z<4I$bTSUOQG#5yWUyLEx=%I9NMl8UYCf z?Pni6x77&B)ib8G&}eXVL}}D`m799qtIVyI|La(+H1cVfyNr=%f_hgwPUl#j;~y0Y z`RTCN6*`=RF*?u8Hf;R~G|!k2%e}*M)|SI<099j)M*>{5c$gWj*w@ZUhEGFw=H@N5 zlLpoF!Nn-BgM_tZPp$6ahDpnehVbWou2_4jP|(m61akZz%G-n*i%!tqztDkDd_XKliUI852zkw%--n! z{YP+_AK|2yETJ!QFOe+47?B<_q%aP5JyC(`R%R&^q6FcRA)`GyLUw+Xz=YZ*S0*lw8c) z%U}n?I6qx}XF1SwYay;ko?@5_!uWP9yzPC8S~ z4|bWiVWu5cUgMbA3l?WGlw9t{<(YM$zB=5!EVruVa3MHy$QZ3N;`i%2WX^%-0jz|D zbWp%C|3-WdD5QfbGY~Fe6*HuRCnyeb%hh2mCo;be%dLjD?O7xlZ%O{UgBV`bKaqJG z#BFO~iL@NDKtH1!d~U2lr#t~qd>*^C=-8Dte=XH^B71qiwQviqZs1$yY#HO`hDZ(e z0rP4O%!Dr8##(Lq7;Fle5Z2Zu_uR4j49T&d&Uh0t11DnOoyS2qsLe)2;oI$@2ICB< zC6Rj5r0F~)KX^t$NX*CZ6FL4c+~zOVp#3zA!W)J8kxmli0nG>09mRjxn>Jxb02{_48_eO%FOC)`OWO|w6_1FbNDET@y zNFd?S3R4tX=0|&*Hm-&w9uHMRHNykSAe-Lvptf4`jo%T(+66^*X}y$t2#DogVH#@q zo5Etp4Rb#`Tlrz@BwX-PD*-fB7DZMo+w9c_c9{rh6B}!SB(s}9DjJS!v}QXg$#b0KXVW5+vdK=Th%0TfVc7gnE$yF$cw=TpiDL* zj$?nqj)XG8o3UK}E8$7PeS{wq77@Ngm`!LPoKN`id>-B;;=%&XBM9RNR}pR}+)r3R z_#@$M!pDRi^*lT;LVv=kgb9Qz311`plJFSeRl*Y9ZK%)vC@OPKeCDA!&Myp_H(p%Z_n4|aCfRb9D6+X z-}wtmT^5s^6sJzlh{=eDK&Qu~FIgCq7L~SiQCfU@x@_1Gzaf5L9~>GzeZkDosnfzH zPr|s<<1-dWek2YdWnvg;CQXi-I(fp>&}q{+51SMcIz4o1WY{F_^iU?B8mWx{?cda? zlcxfY($1I`8Updhr)SJC$Ye97kN5Ql`$q;(q!>)l`dNWHnFlqxK5T0gTGI~&rdc) z76&|;Cl3BD0oQ5ZG9K)PgByGKwB-1BL-5knxTK7vrKvMx(vo5pCdUU;?qsrAF-zjL z$;toX!V&>pz$CDhDeBw$K1E&T9Opu4^u$4Z%}k=5Jd1cclIIbJ0XZ{U?07M8mM$II;a5j$RC z$4?QL%B#|j|6u37%8p;QP8FRQ?*`?J2w{;!=JL#HI2pB;JqQmlF3P zUTr5=T;b{QA-O+sDg0>SYLaIY??b$pxHs`C;)94QuJZ74DGH4@aj8G{Ck|W8n291T z^`G|rrQXhc7I7*3EyShzRYF`UpGxAehkzOT@a_9I`~JzkecSg3dDLE{{?Wevn<;(| zihsd^g)!;zaZ>Tg7A%O3i;qnPG{mIG##kQM3t;pS2VAmPuplEb2_2Bdf&~dN=^3_s zS$u59(lp5i!cCUQf(7w03zK*PAl&6i2^kB9S<=HfyyD3Wq$4A3)Cfoq439F>l43I? z`^;1rNG(c@k7E{+6f>eujbF}P!F61Gay*Q*0>MHM;Q2L9ChHB?fnd=aeskt=mrD)t zX)%yqWWL}I>yHmqN?%|2;WhlQP5KIhWJ3Y5enU{QaS#SLmkEG_0lf#p`B;GS;kOEY z{lOD{(`XRLeccJbl@5B4tf zaq$T;naLUI*rlnGS9NUi()7$UmR3F1g_yK|@1MfA^`4Z$%N&znjo%Wwt=J;x$^Unu zU^q!>8JSQLaY^Zh)QZ;p?*qpAFV$;)L*gYW(=Sa) zO;TeWN>9RCp|=(iZz;An71L)gpEIwO3w=sVYRsbexPK~Cdv||Zs2HEMT>quytfk+| zomBpIWY-5ndxe{fAQ%CXwv9WeT_fY^@K%) z|1>{MfEnvTHuuE&E1#j_ELD2`{FDEGH@{_t2Y>A6wUT}7aJenc5ymH{Ym?z#O70NJ zetcSdJhLV~AwFZK&5YmTZknw20sl-7pBsoSu9NH4~!Gbq_Ga# z^#m@>1(CmI#|wZfP(TK^irDgvb{zMO*venFN=kRJUHY-Ubb%k% z8T?^6B4QozgdfxonLGS&et>1$7JgXfcux?~4iWVaD8srW$uL~>i-_|T3>TLh(GJJk zI7Y@F+T)lE?MD*V5)URG1&Ds8l07Pd(ETjwq!lvmj*vf zYc~8atvQ5i0nt7eei+U=_@RHOr?P?Y+e-XBKuqU$_+dOd;fL<_zz@@P8h$AM34SP_ z4F!l}NZbdBIKra+7!+fGy$uwxeGN$|kz63OEzOsod|5o{Q zmVe}uDWmYD{!v!L!`BcN5}GCZn_MpSquIpE2xYb8pRkb7EZN`U@*P!gDAc!p78Mj%{P`v&8UE=`}#j#uUdxSm_W>BGbdh$l`!WA#yD& z5AvVF!!Xhy@2Sx7*!q`J^w0iRK+Nbr0n#OffOmnH+CTZ{H6jgCA^FABOR@j+{mWvd z!0Ql(z+<+C@b~d!eA3gx7t)>~%Y<-HLoMmJ;~+Q7|0Yd;A0GORg)p!rGe9HG_2O8z z@ldN1K!Q4Qtm9a>THh&aUh$5_%d)_oy}rG53gaLgtg%bso-KsGS$~sGsY3lX;qiOG zbBt-m(rn!dtoH)&M256#U?dfG?CBmeJq!0z3}s z{z!4Q&KG~qV2s+d`0+`}@mfPtx^~jEFqs_eRPg(Eh|e&T<8u%(A~-U}FpbTj*~rOa zkJIh=NiZaxzBD2@ECiggXPMSuh+3MQ6uSaOYc$B19-o$ylp2GBugLg}#HDfQRx*WV z-Y;$<+(P&^VG-eW!eYXY3BM#PBdj2-BD_v$CVWUJtK;!H5h@7X2vvlg2|WpW5UL5i z2)zmY2>l5|2qOrk@TU`>OBhFJAj~GrBiur`ov@g&gs_aTiV*KF8WV9dVH2UOp66dd zs3PySp%h)(38-QP(vt% zA4ObGXduic+(KAPSVs5*;blS-q3jNi-47hntiV-o=(j3gW{ zLKtkK1>vw%LRgvUG(ma9o)sbM-c(DQu6X$3w^q z0V9E98ET=QM?{V(45xe|;=RxUE&`ke{tSSV*>e)sx1k)C0S^Ityt6#~OcpAJ!{foH z2FAnl4%QSeu19mjZFDe7_)q`V!Hm-WUu*X{Fc+2n$z}iD zKid%2%B=q!U=I4<{FD5v|9@WzvUAqvu6us{3wik)j4u|vw6XBzS6)RGvL|{)Y=c{#14G=S!D=`SrKzD_5^w|NX`vrkb0zxBk5Sm$|OK;m+O0 zdri&vA3TIpmSu7WM>FK`t={+ zJ#diEVBaA_{f0d?e8k96qy5K>4FH|3sEJt!3w8;M5|b7$Nlr;!YIr6sJtK43@~jmr z=ggfqe}Vqr%b#7f`nfg#)A|3Oj{kqV{Ix;BA)(_Z=)%G$Mnu9ctSM8cO^35)qGvzN z%m3fY|36Xwa_RvJ74mGnMjaNKEyQuYgQkc$sI{0WCXV_+G^NC)eFSC1aXy8nf;j31 z(ZDyAS$wE_LsLZ@b#rK{iK8wJjfptw($JWRqYe&D6Y=((f>Mu%FYS|15XU(k8WnNW z-J$U$-jP$8ns_JT-o!f-_aiQ?qx%y_9U>YHanzxr(Gh=wQ&|*o%RUF<(mnz`anxO+ zNhA*Xd1eg6pCq0|T-ryHOxb}|5OnellvL@oAiOXF0{l`6xXcWZ9 za4J&~=c`_D|A~tvR}I66Nx7h zm-N8~;*&|9MLddlHu0In^N6Fq98Dqdr#Y2vAuf%Ci-@lwc` z%d01G74avDtBLm_?nhirTtmD!@hIYbi0g^>C2k<@MLe5$KjMYN`x7rBK7e=$@qxt4 zhz}xON!*8cHSxj3&BT3)E8KbhhZ6TB{uFU<;v3VXyT)ZClbdG;-bkS zK8AQ6@v+3W5Dy?;Ok5ydN?asfL0m(;inx}ziFh#aCgLH)Rqc8HLy4=2k0f}N1|S;ZPQ;~kxwgckNZyXPp12Ef193Ov*~C@E3yF6kUPQbz z@e<-)h?f!XM!b@EPvR!xgNZj04R}x=ByqdV2254sDPSSv_1J7Su;ws|ph^vXa5cebQ zMqER@8}TUO0mSvhMJLKHaZlm_#J!2jy}5sX;_Zm*B>%*tCHI55 z`$Wk-@hr(b@jS`BA9ue+a!3~ySC&G z*H_Wt{s}a=PXbLUg_}y;KpfupWpZ3KM}rz;G`Mb#CLKcH_zWRxo#D_A(jepNI2zP= zqe+6CpvfeEsO?3QZpjyqFPUktaeoTu36$Ptl+Q%c@y0;Op^2w-rBJvrP!edCkUv~q zN0UhYalaFqCFFhyg_jPi)@U**+zg7}K;bN+cyN^$4QjU0EMeMv+(#po3zw&m{UXXA zmN%9d?u$d0xE9Sz3`4>7dR#-F26}yNu%7tJf@IP>2LwsH7~c$= z`-SBdB%4k7$9j$NN#%=sSMdHx@nb#rh15y&POR_9rSijikMT+Q!}{+FuBCY`wgb!` zEuVqwm5e_Pejkz?OrKPa*iLajmsHQOy&{*|1-4t{QvBF{ z@xIuX1GZ<|`m>Pb+nO$H=eFs@_HN6u-M8kveMtGje!y0q!tTE{eC!`=<>_|eVSj=7 zmcol=`J4bXiW}@lZ0{rQPpl#Geg$hBFFD@7V2HeiJp=i{k_ncw&+A!`rMzwHjjcba+(MzRMZ?P_)KdTW^IK>F&)yK<>`pDq?4C_n57=_c%m$F9#16QU3@-cJ^TB3 zum_N8D352lrT*}EtnG=%6Jp7~ZMd!PYYOWLTBm<9v?OkLxZyS&%VDM^KbU{Ck!l7{ z*KCWN`wzDCBT_j_&sFq~ccQg_sTaZV6-t9F_f;xCslVm%gnxv$)P zgiU%d{HHDZbGdt|wMp%5qKzEgN7?j4nEPO;6Ws9dwKn-j`3y_D;PN0l|50}GDVF-d z(jfG~Z!GoqlAeAr&z8*GhtG5P zXdCp>w2nh!nXE6DSCNH^_|L@E#6KhMN4$u*hWJL}QN+&>*Au@$+(7&s@oeI|h!+yy zOT38q5#lApFB2~#F0B((5OY4+viF=Y< zTBniLEfpm9Ci(ls{fU21Tu1z4;?cxU5Kkoj3h^xB`-tZeKT3QH@h^!N6aSHTDe+3; z6~v`+auxA1lADO1CoZkSwj}Lewug{@hikl#4izVBK|9J#Q>iFi^M&N zA0sZUllCRR!F6vM6WRgqkru~WQNS-M9r~cA~cr?i)h%0DaZ3yv1lBW}w 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 YfVaZ?(o0)J&%Loex?kl{iuTU_2d;uQ761SM delta 1648 zcmeIx-%FEG7zgn4Y-1@5i%Riw?Lr7fhzvAXH@XW!kk~~Oh>R7>LP;uhlj%ElAw%9X zdMVmkUNw0AbyX8yk?2Z7V;ZE$E`mnHF2XJnK@gJ8d(Lb#4H_Lsx#4z@>($^MT!$ZD%eux^km%2;2?Ovs z)Zq#&!wRgy6WEkj>-b;*_QEI}muig7B4NUHxCalQ2Rr41K^TS+7>5~{hYN5G?%Im} z>?acY@ECdu>Px&Z0K4HGI1JM;3k%SMYw!#FF0}iz8WIQa1YW|?_+VH4sNfJx!z`SG zOVI9NKZokfSrv*@i!3zZ?7T2gGJY2)g7z