From 4bfd0654a084fca3712489bbde346d6a696c01b8 Mon Sep 17 00:00:00 2001 From: Dennis Ameling Date: Tue, 18 Jun 2024 10:45:29 +0200 Subject: [PATCH] mingw-w64-asciidoctor: install to sdk In a recent changes, GfW switched from the homegrown `-asciidoctor-extensions` package to the MSYS2-provided `-asciidoctor` one, as there's no need for the former nowadays. This commit installs `-asciidoctor` and its dependencies: mingw-w64-clang-aarch64-gdbm-1.19-3 mingw-w64-clang-aarch64-libyaml-0.2.5-2 mingw-w64-clang-aarch64-pdcurses-4.4.0-1 mingw-w64-clang-aarch64-ruby-3.1.5-1 mingw-w64-clang-aarch64-asciidoctor-2.0.23-1 Ref: https://github.com/git-for-windows/MINGW-packages/commit/907ead42e93c073c0a37b902df02ef0d08102a99 Signed-off-by: Dennis Ameling --- clangarm64/bin/asciidoctor | 36 + clangarm64/bin/asciidoctor.bat | 2 + clangarm64/bin/bundle | 37 + clangarm64/bin/bundle.bat | 2 + clangarm64/bin/bundler | 37 + clangarm64/bin/bundler.bat | 2 + clangarm64/bin/erb | 37 + clangarm64/bin/erb.bat | 2 + clangarm64/bin/gdbm_dump.exe | Bin 0 -> 37888 bytes clangarm64/bin/gdbm_load.exe | Bin 0 -> 38912 bytes clangarm64/bin/gdbmtool.exe | Bin 0 -> 135168 bytes clangarm64/bin/gem | 25 + clangarm64/bin/gem.cmd | 33 + clangarm64/bin/irb | 37 + clangarm64/bin/irb.bat | 2 + clangarm64/bin/libgdbm-6.dll | Bin 0 -> 62464 bytes clangarm64/bin/libgdbm_compat-4.dll | Bin 0 -> 26112 bytes clangarm64/bin/libpdcurses.dll | Bin 0 -> 196096 bytes clangarm64/bin/libpdcurses_vt.dll | Bin 0 -> 165376 bytes clangarm64/bin/libpdcurses_wincon.dll | Bin 0 -> 181760 bytes clangarm64/bin/libpdcurses_wingui.dll | Bin 0 -> 196096 bytes clangarm64/bin/libyaml-0-2.dll | Bin 0 -> 141824 bytes clangarm64/bin/racc | 37 + clangarm64/bin/racc.bat | 2 + clangarm64/bin/rake | 37 + clangarm64/bin/rake.bat | 2 + clangarm64/bin/rbs | 37 + clangarm64/bin/rbs.bat | 2 + clangarm64/bin/rdbg | 37 + clangarm64/bin/rdbg.bat | 2 + clangarm64/bin/rdoc | 37 + clangarm64/bin/rdoc.bat | 2 + clangarm64/bin/ri | 37 + clangarm64/bin/ri.bat | 2 + clangarm64/bin/ruby.exe | Bin 0 -> 24576 bytes clangarm64/bin/ruby310.dll | Bin 0 -> 3620352 bytes clangarm64/bin/rubyw.exe | Bin 0 -> 24576 bytes clangarm64/bin/typeprof | 37 + clangarm64/bin/typeprof.bat | 2 + clangarm64/include/dbm.h | 38 + clangarm64/include/gdbm.h | 285 + clangarm64/include/ndbm.h | 66 + clangarm64/include/pdcurses.h | 5 + clangarm64/include/pdcurses/curses.h | 1902 + clangarm64/include/pdcurses/panel.h | 41 + clangarm64/include/pdcurses/term.h | 48 + .../rb_mjit_min_header-3.1.5.h | 97042 ++++++++++++++++ .../aarch64-mingw-ucrt/ruby/config.h | 312 + clangarm64/include/ruby-3.1.0/ruby.h | 40 + clangarm64/include/ruby-3.1.0/ruby/assert.h | 234 + clangarm64/include/ruby-3.1.0/ruby/atomic.h | 890 + clangarm64/include/ruby-3.1.0/ruby/backward.h | 71 + .../ruby-3.1.0/ruby/backward/2/assume.h | 58 + .../ruby-3.1.0/ruby/backward/2/attributes.h | 165 + .../include/ruby-3.1.0/ruby/backward/2/bool.h | 36 + .../ruby/backward/2/gcc_version_since.h | 37 + .../ruby-3.1.0/ruby/backward/2/inttypes.h | 131 + .../ruby-3.1.0/ruby/backward/2/limits.h | 99 + .../ruby-3.1.0/ruby/backward/2/long_long.h | 73 + .../ruby-3.1.0/ruby/backward/2/r_cast.h | 32 + .../ruby-3.1.0/ruby/backward/2/rmodule.h | 36 + .../ruby-3.1.0/ruby/backward/2/stdalign.h | 30 + .../ruby-3.1.0/ruby/backward/2/stdarg.h | 69 + .../ruby-3.1.0/ruby/backward/cxxanyargs.hpp | 700 + clangarm64/include/ruby-3.1.0/ruby/debug.h | 644 + clangarm64/include/ruby-3.1.0/ruby/defines.h | 116 + clangarm64/include/ruby-3.1.0/ruby/digest.h | 72 + clangarm64/include/ruby-3.1.0/ruby/encoding.h | 31 + .../include/ruby-3.1.0/ruby/fiber/scheduler.h | 336 + clangarm64/include/ruby-3.1.0/ruby/intern.h | 64 + .../ruby-3.1.0/ruby/internal/anyargs.h | 375 + .../ruby-3.1.0/ruby/internal/arithmetic.h | 38 + .../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 + .../ruby-3.1.0/ruby/internal/arithmetic/int.h | 264 + .../ruby/internal/arithmetic/intptr_t.h | 74 + .../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 + .../include/ruby-3.1.0/ruby/internal/assume.h | 90 + .../ruby/internal/attr/alloc_size.h | 32 + .../ruby/internal/attr/artificial.h | 46 + .../ruby-3.1.0/ruby/internal/attr/cold.h | 37 + .../ruby-3.1.0/ruby/internal/attr/const.h | 46 + .../ruby-3.1.0/ruby/internal/attr/constexpr.h | 84 + .../ruby/internal/attr/deprecated.h | 75 + .../ruby/internal/attr/diagnose_if.h | 42 + .../ruby/internal/attr/enum_extensibility.h | 32 + .../ruby-3.1.0/ruby/internal/attr/error.h | 32 + .../ruby-3.1.0/ruby/internal/attr/flag_enum.h | 33 + .../ruby/internal/attr/forceinline.h | 40 + .../ruby-3.1.0/ruby/internal/attr/format.h | 38 + .../ruby/internal/attr/maybe_unused.h | 38 + .../ruby-3.1.0/ruby/internal/attr/noalias.h | 69 + .../ruby-3.1.0/ruby/internal/attr/nodiscard.h | 45 + .../ruby-3.1.0/ruby/internal/attr/noexcept.h | 91 + .../ruby-3.1.0/ruby/internal/attr/noinline.h | 35 + .../ruby-3.1.0/ruby/internal/attr/nonnull.h | 34 + .../ruby-3.1.0/ruby/internal/attr/noreturn.h | 48 + .../ruby-3.1.0/ruby/internal/attr/pure.h | 43 + .../ruby-3.1.0/ruby/internal/attr/restrict.h | 44 + .../ruby/internal/attr/returns_nonnull.h | 37 + .../ruby-3.1.0/ruby/internal/attr/warning.h | 32 + .../ruby-3.1.0/ruby/internal/attr/weakref.h | 32 + .../include/ruby-3.1.0/ruby/internal/cast.h | 50 + .../ruby-3.1.0/ruby/internal/compiler_is.h | 45 + .../ruby/internal/compiler_is/apple.h | 40 + .../ruby/internal/compiler_is/clang.h | 37 + .../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 + .../ruby-3.1.0/ruby/internal/compiler_since.h | 61 + .../include/ruby-3.1.0/ruby/internal/config.h | 153 + .../ruby-3.1.0/ruby/internal/constant_p.h | 38 + .../include/ruby-3.1.0/ruby/internal/core.h | 35 + .../ruby-3.1.0/ruby/internal/core/rarray.h | 590 + .../ruby-3.1.0/ruby/internal/core/rbasic.h | 158 + .../ruby-3.1.0/ruby/internal/core/rbignum.h | 80 + .../ruby-3.1.0/ruby/internal/core/rclass.h | 140 + .../ruby-3.1.0/ruby/internal/core/rdata.h | 410 + .../ruby-3.1.0/ruby/internal/core/rfile.h | 51 + .../ruby-3.1.0/ruby/internal/core/rhash.h | 144 + .../ruby-3.1.0/ruby/internal/core/rmatch.h | 146 + .../ruby-3.1.0/ruby/internal/core/robject.h | 185 + .../ruby-3.1.0/ruby/internal/core/rregexp.h | 168 + .../ruby-3.1.0/ruby/internal/core/rstring.h | 577 + .../ruby-3.1.0/ruby/internal/core/rstruct.h | 121 + .../ruby/internal/core/rtypeddata.h | 604 + .../include/ruby-3.1.0/ruby/internal/ctype.h | 545 + .../ruby-3.1.0/ruby/internal/dllexport.h | 112 + .../include/ruby-3.1.0/ruby/internal/dosish.h | 89 + .../ruby/internal/encoding/coderange.h | 202 + .../ruby-3.1.0/ruby/internal/encoding/ctype.h | 243 + .../ruby/internal/encoding/encoding.h | 1058 + .../ruby/internal/encoding/pathname.h | 184 + .../ruby-3.1.0/ruby/internal/encoding/re.h | 46 + .../ruby/internal/encoding/sprintf.h | 78 + .../ruby/internal/encoding/string.h | 346 + .../ruby/internal/encoding/symbol.h | 100 + .../ruby/internal/encoding/transcode.h | 558 + .../include/ruby-3.1.0/ruby/internal/error.h | 582 + .../include/ruby-3.1.0/ruby/internal/eval.h | 373 + .../include/ruby-3.1.0/ruby/internal/event.h | 154 + .../ruby-3.1.0/ruby/internal/fl_type.h | 967 + .../include/ruby-3.1.0/ruby/internal/gc.h | 57 + .../include/ruby-3.1.0/ruby/internal/glob.h | 113 + .../ruby-3.1.0/ruby/internal/globals.h | 209 + .../ruby-3.1.0/ruby/internal/has/attribute.h | 163 + .../ruby-3.1.0/ruby/internal/has/builtin.h | 119 + .../ruby/internal/has/c_attribute.h | 38 + .../ruby/internal/has/cpp_attribute.h | 86 + .../ruby/internal/has/declspec_attribute.h | 47 + .../ruby-3.1.0/ruby/internal/has/extension.h | 33 + .../ruby-3.1.0/ruby/internal/has/feature.h | 31 + .../ruby-3.1.0/ruby/internal/has/warning.h | 31 + .../ruby-3.1.0/ruby/internal/intern/array.h | 657 + .../ruby-3.1.0/ruby/internal/intern/bignum.h | 846 + .../ruby-3.1.0/ruby/internal/intern/class.h | 382 + .../ruby-3.1.0/ruby/internal/intern/compar.h | 62 + .../ruby-3.1.0/ruby/internal/intern/complex.h | 253 + .../ruby-3.1.0/ruby/internal/intern/cont.h | 260 + .../ruby-3.1.0/ruby/internal/intern/dir.h | 42 + .../ruby-3.1.0/ruby/internal/intern/enum.h | 73 + .../ruby/internal/intern/enumerator.h | 259 + .../ruby-3.1.0/ruby/internal/intern/error.h | 301 + .../ruby-3.1.0/ruby/internal/intern/eval.h | 222 + .../ruby-3.1.0/ruby/internal/intern/file.h | 213 + .../ruby-3.1.0/ruby/internal/intern/gc.h | 392 + .../ruby-3.1.0/ruby/internal/intern/hash.h | 318 + .../ruby-3.1.0/ruby/internal/intern/io.h | 661 + .../ruby-3.1.0/ruby/internal/intern/load.h | 218 + .../ruby-3.1.0/ruby/internal/intern/marshal.h | 112 + .../ruby-3.1.0/ruby/internal/intern/numeric.h | 208 + .../ruby-3.1.0/ruby/internal/intern/object.h | 569 + .../ruby-3.1.0/ruby/internal/intern/parse.h | 194 + .../ruby-3.1.0/ruby/internal/intern/proc.h | 353 + .../ruby-3.1.0/ruby/internal/intern/process.h | 273 + .../ruby-3.1.0/ruby/internal/intern/random.h | 116 + .../ruby-3.1.0/ruby/internal/intern/range.h | 89 + .../ruby/internal/intern/rational.h | 172 + .../ruby-3.1.0/ruby/internal/intern/re.h | 249 + .../ruby-3.1.0/ruby/internal/intern/ruby.h | 77 + .../ruby-3.1.0/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 + .../ruby-3.1.0/ruby/internal/intern/signal.h | 152 + .../ruby-3.1.0/ruby/internal/intern/sprintf.h | 159 + .../ruby-3.1.0/ruby/internal/intern/string.h | 1821 + .../ruby-3.1.0/ruby/internal/intern/struct.h | 203 + .../ruby-3.1.0/ruby/internal/intern/thread.h | 492 + .../ruby-3.1.0/ruby/internal/intern/time.h | 161 + .../ruby/internal/intern/variable.h | 628 + .../ruby-3.1.0/ruby/internal/intern/vm.h | 435 + .../ruby-3.1.0/ruby/internal/interpreter.h | 304 + .../ruby-3.1.0/ruby/internal/iterator.h | 513 + .../include/ruby-3.1.0/ruby/internal/memory.h | 670 + .../include/ruby-3.1.0/ruby/internal/method.h | 205 + .../include/ruby-3.1.0/ruby/internal/module.h | 177 + .../include/ruby-3.1.0/ruby/internal/newobj.h | 195 + .../include/ruby-3.1.0/ruby/internal/rgengc.h | 443 + .../ruby-3.1.0/ruby/internal/scan_args.h | 534 + .../ruby-3.1.0/ruby/internal/special_consts.h | 295 + .../ruby-3.1.0/ruby/internal/static_assert.h | 77 + .../ruby-3.1.0/ruby/internal/stdalign.h | 135 + .../ruby-3.1.0/ruby/internal/stdbool.h | 51 + .../include/ruby-3.1.0/ruby/internal/symbol.h | 332 + .../include/ruby-3.1.0/ruby/internal/value.h | 133 + .../ruby-3.1.0/ruby/internal/value_type.h | 449 + .../ruby-3.1.0/ruby/internal/variable.h | 337 + .../ruby-3.1.0/ruby/internal/warning_push.h | 124 + .../ruby-3.1.0/ruby/internal/xmalloc.h | 392 + clangarm64/include/ruby-3.1.0/ruby/io.h | 976 + .../include/ruby-3.1.0/ruby/io/buffer.h | 91 + .../include/ruby-3.1.0/ruby/memory_view.h | 325 + clangarm64/include/ruby-3.1.0/ruby/missing.h | 229 + clangarm64/include/ruby-3.1.0/ruby/onigmo.h | 941 + .../include/ruby-3.1.0/ruby/oniguruma.h | 8 + clangarm64/include/ruby-3.1.0/ruby/ractor.h | 264 + clangarm64/include/ruby-3.1.0/ruby/random.h | 304 + clangarm64/include/ruby-3.1.0/ruby/re.h | 147 + clangarm64/include/ruby-3.1.0/ruby/regex.h | 43 + clangarm64/include/ruby-3.1.0/ruby/ruby.h | 311 + clangarm64/include/ruby-3.1.0/ruby/st.h | 197 + clangarm64/include/ruby-3.1.0/ruby/subst.h | 26 + clangarm64/include/ruby-3.1.0/ruby/thread.h | 195 + .../include/ruby-3.1.0/ruby/thread_native.h | 199 + clangarm64/include/ruby-3.1.0/ruby/util.h | 228 + clangarm64/include/ruby-3.1.0/ruby/version.h | 158 + clangarm64/include/ruby-3.1.0/ruby/vm.h | 54 + clangarm64/include/ruby-3.1.0/ruby/win32.h | 806 + clangarm64/include/yaml.h | 1985 + clangarm64/lib/libgdbm.a | Bin 0 -> 74744 bytes clangarm64/lib/libgdbm.dll.a | Bin 0 -> 12716 bytes clangarm64/lib/libgdbm_compat.a | Bin 0 -> 15452 bytes clangarm64/lib/libgdbm_compat.dll.a | Bin 0 -> 4020 bytes clangarm64/lib/libpdcurses.a | Bin 0 -> 312410 bytes clangarm64/lib/libpdcurses.dll.a | Bin 0 -> 72734 bytes clangarm64/lib/libpdcurses_vt.a | Bin 0 -> 264944 bytes clangarm64/lib/libpdcurses_wincon.a | Bin 0 -> 299388 bytes clangarm64/lib/libpdcurses_wingui.a | Bin 0 -> 312410 bytes clangarm64/lib/libruby310.dll.a | Bin 0 -> 480066 bytes clangarm64/lib/libyaml.a | Bin 0 -> 131842 bytes clangarm64/lib/libyaml.dll.a | Bin 0 -> 11640 bytes clangarm64/lib/pkgconfig/ruby-3.1.pc | 59 + clangarm64/lib/pkgconfig/yaml-0.1.pc | 10 + clangarm64/lib/ruby/3.1.0/English.rb | 182 + .../3.1.0/aarch64-mingw-ucrt/bigdecimal.so | Bin 0 -> 137728 bytes .../3.1.0/aarch64-mingw-ucrt/cgi/escape.so | Bin 0 -> 30720 bytes .../3.1.0/aarch64-mingw-ucrt/continuation.so | Bin 0 -> 18944 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/coverage.so | Bin 0 -> 28160 bytes .../3.1.0/aarch64-mingw-ucrt/date_core.so | Bin 0 -> 233472 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/digest.so | Bin 0 -> 31232 bytes .../aarch64-mingw-ucrt/digest/bubblebabble.so | Bin 0 -> 23552 bytes .../3.1.0/aarch64-mingw-ucrt/digest/md5.so | Bin 0 -> 24064 bytes .../3.1.0/aarch64-mingw-ucrt/digest/rmd160.so | Bin 0 -> 27648 bytes .../3.1.0/aarch64-mingw-ucrt/digest/sha1.so | Bin 0 -> 25600 bytes .../3.1.0/aarch64-mingw-ucrt/digest/sha2.so | Bin 0 -> 28160 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/enc/big5.so | Bin 0 -> 26112 bytes .../3.1.0/aarch64-mingw-ucrt/enc/cesu_8.so | Bin 0 -> 25088 bytes .../3.1.0/aarch64-mingw-ucrt/enc/cp949.so | Bin 0 -> 23040 bytes .../aarch64-mingw-ucrt/enc/emacs_mule.so | Bin 0 -> 25088 bytes .../3.1.0/aarch64-mingw-ucrt/enc/encdb.so | Bin 0 -> 24064 bytes .../3.1.0/aarch64-mingw-ucrt/enc/euc_jp.so | Bin 0 -> 26112 bytes .../3.1.0/aarch64-mingw-ucrt/enc/euc_kr.so | Bin 0 -> 22528 bytes .../3.1.0/aarch64-mingw-ucrt/enc/euc_tw.so | Bin 0 -> 23552 bytes .../3.1.0/aarch64-mingw-ucrt/enc/gb18030.so | Bin 0 -> 23552 bytes .../3.1.0/aarch64-mingw-ucrt/enc/gb2312.so | Bin 0 -> 18944 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/enc/gbk.so | Bin 0 -> 23040 bytes .../aarch64-mingw-ucrt/enc/iso_8859_1.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_10.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_11.so | Bin 0 -> 21504 bytes .../aarch64-mingw-ucrt/enc/iso_8859_13.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_14.so | Bin 0 -> 23040 bytes .../aarch64-mingw-ucrt/enc/iso_8859_15.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_16.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_2.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_3.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_4.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_5.so | Bin 0 -> 22016 bytes .../aarch64-mingw-ucrt/enc/iso_8859_6.so | Bin 0 -> 21504 bytes .../aarch64-mingw-ucrt/enc/iso_8859_7.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/iso_8859_8.so | Bin 0 -> 21504 bytes .../aarch64-mingw-ucrt/enc/iso_8859_9.so | Bin 0 -> 22528 bytes .../3.1.0/aarch64-mingw-ucrt/enc/koi8_r.so | Bin 0 -> 22016 bytes .../3.1.0/aarch64-mingw-ucrt/enc/koi8_u.so | Bin 0 -> 22016 bytes .../3.1.0/aarch64-mingw-ucrt/enc/shift_jis.so | Bin 0 -> 25088 bytes .../aarch64-mingw-ucrt/enc/trans/big5.so | Bin 0 -> 591872 bytes .../aarch64-mingw-ucrt/enc/trans/cesu_8.so | Bin 0 -> 20480 bytes .../aarch64-mingw-ucrt/enc/trans/chinese.so | Bin 0 -> 196608 bytes .../aarch64-mingw-ucrt/enc/trans/ebcdic.so | Bin 0 -> 21504 bytes .../aarch64-mingw-ucrt/enc/trans/emoji.so | Bin 0 -> 60928 bytes .../enc/trans/emoji_iso2022_kddi.so | Bin 0 -> 122880 bytes .../enc/trans/emoji_sjis_docomo.so | Bin 0 -> 131072 bytes .../enc/trans/emoji_sjis_kddi.so | Bin 0 -> 135168 bytes .../enc/trans/emoji_sjis_softbank.so | Bin 0 -> 131072 bytes .../aarch64-mingw-ucrt/enc/trans/escape.so | Bin 0 -> 20992 bytes .../aarch64-mingw-ucrt/enc/trans/gb18030.so | Bin 0 -> 192000 bytes .../3.1.0/aarch64-mingw-ucrt/enc/trans/gbk.so | Bin 0 -> 208384 bytes .../aarch64-mingw-ucrt/enc/trans/iso2022.so | Bin 0 -> 24064 bytes .../aarch64-mingw-ucrt/enc/trans/japanese.so | Bin 0 -> 20480 bytes .../enc/trans/japanese_euc.so | Bin 0 -> 370176 bytes .../enc/trans/japanese_sjis.so | Bin 0 -> 163328 bytes .../aarch64-mingw-ucrt/enc/trans/korean.so | Bin 0 -> 256512 bytes .../enc/trans/single_byte.so | Bin 0 -> 116736 bytes .../aarch64-mingw-ucrt/enc/trans/transdb.so | Bin 0 -> 24576 bytes .../aarch64-mingw-ucrt/enc/trans/utf8_mac.so | Bin 0 -> 284672 bytes .../aarch64-mingw-ucrt/enc/trans/utf_16_32.so | Bin 0 -> 26112 bytes .../3.1.0/aarch64-mingw-ucrt/enc/utf_16be.so | Bin 0 -> 20992 bytes .../3.1.0/aarch64-mingw-ucrt/enc/utf_16le.so | Bin 0 -> 20992 bytes .../3.1.0/aarch64-mingw-ucrt/enc/utf_32be.so | Bin 0 -> 20480 bytes .../3.1.0/aarch64-mingw-ucrt/enc/utf_32le.so | Bin 0 -> 20480 bytes .../aarch64-mingw-ucrt/enc/windows_1250.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/windows_1251.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/windows_1252.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/windows_1253.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/windows_1254.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/windows_1257.so | Bin 0 -> 22528 bytes .../aarch64-mingw-ucrt/enc/windows_31j.so | Bin 0 -> 25088 bytes .../lib/ruby/3.1.0/aarch64-mingw-ucrt/etc.so | Bin 0 -> 26624 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/fcntl.so | Bin 0 -> 19456 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/fiddle.so | Bin 0 -> 84480 bytes .../3.1.0/aarch64-mingw-ucrt/io/console.so | Bin 0 -> 45568 bytes .../3.1.0/aarch64-mingw-ucrt/io/nonblock.so | Bin 0 -> 21504 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/io/wait.so | Bin 0 -> 24576 bytes .../aarch64-mingw-ucrt/json/ext/generator.so | Bin 0 -> 51200 bytes .../aarch64-mingw-ucrt/json/ext/parser.so | Bin 0 -> 39424 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/monitor.so | Bin 0 -> 24576 bytes .../lib/ruby/3.1.0/aarch64-mingw-ucrt/nkf.so | Bin 0 -> 315904 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/objspace.so | Bin 0 -> 80384 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/openssl.so | Bin 0 -> 437760 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/pathname.so | Bin 0 -> 48128 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/psych.so | Bin 0 -> 41984 bytes .../3.1.0/aarch64-mingw-ucrt/racc/cparse.so | Bin 0 -> 31744 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/rbconfig.rb | 356 + .../aarch64-mingw-ucrt/rbconfig/sizeof.so | Bin 0 -> 27648 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/readline.so | Bin 0 -> 49152 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/ripper.so | Bin 0 -> 230912 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/socket.so | Bin 0 -> 169472 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/stringio.so | Bin 0 -> 50176 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/strscan.so | Bin 0 -> 39936 bytes .../3.1.0/aarch64-mingw-ucrt/win32/resolv.so | Bin 0 -> 22016 bytes .../ruby/3.1.0/aarch64-mingw-ucrt/win32ole.so | Bin 0 -> 179200 bytes .../lib/ruby/3.1.0/aarch64-mingw-ucrt/zlib.so | Bin 0 -> 81408 bytes clangarm64/lib/ruby/3.1.0/abbrev.rb | 132 + clangarm64/lib/ruby/3.1.0/base64.rb | 110 + clangarm64/lib/ruby/3.1.0/benchmark.rb | 582 + .../lib/ruby/3.1.0/benchmark/version.rb | 4 + clangarm64/lib/ruby/3.1.0/bigdecimal.rb | 1 + .../lib/ruby/3.1.0/bigdecimal/jacobian.rb | 90 + .../lib/ruby/3.1.0/bigdecimal/ludcmp.rb | 89 + clangarm64/lib/ruby/3.1.0/bigdecimal/math.rb | 232 + .../lib/ruby/3.1.0/bigdecimal/newton.rb | 80 + clangarm64/lib/ruby/3.1.0/bigdecimal/util.rb | 181 + clangarm64/lib/ruby/3.1.0/bundler.rb | 713 + .../lib/ruby/3.1.0/bundler/build_metadata.rb | 43 + .../lib/ruby/3.1.0/bundler/capistrano.rb | 22 + clangarm64/lib/ruby/3.1.0/bundler/cli.rb | 851 + clangarm64/lib/ruby/3.1.0/bundler/cli/add.rb | 47 + .../lib/ruby/3.1.0/bundler/cli/binstubs.rb | 53 + .../lib/ruby/3.1.0/bundler/cli/cache.rb | 43 + .../lib/ruby/3.1.0/bundler/cli/check.rb | 40 + .../lib/ruby/3.1.0/bundler/cli/clean.rb | 25 + .../lib/ruby/3.1.0/bundler/cli/common.rb | 129 + .../lib/ruby/3.1.0/bundler/cli/config.rb | 203 + .../lib/ruby/3.1.0/bundler/cli/console.rb | 43 + .../lib/ruby/3.1.0/bundler/cli/doctor.rb | 159 + clangarm64/lib/ruby/3.1.0/bundler/cli/exec.rb | 88 + clangarm64/lib/ruby/3.1.0/bundler/cli/fund.rb | 36 + clangarm64/lib/ruby/3.1.0/bundler/cli/gem.rb | 443 + clangarm64/lib/ruby/3.1.0/bundler/cli/info.rb | 94 + clangarm64/lib/ruby/3.1.0/bundler/cli/init.rb | 51 + .../lib/ruby/3.1.0/bundler/cli/inject.rb | 60 + .../lib/ruby/3.1.0/bundler/cli/install.rb | 190 + .../lib/ruby/3.1.0/bundler/cli/issue.rb | 41 + clangarm64/lib/ruby/3.1.0/bundler/cli/list.rb | 66 + clangarm64/lib/ruby/3.1.0/bundler/cli/lock.rb | 67 + clangarm64/lib/ruby/3.1.0/bundler/cli/open.rb | 29 + .../lib/ruby/3.1.0/bundler/cli/outdated.rb | 299 + .../lib/ruby/3.1.0/bundler/cli/platform.rb | 46 + .../lib/ruby/3.1.0/bundler/cli/plugin.rb | 41 + .../lib/ruby/3.1.0/bundler/cli/pristine.rb | 52 + .../lib/ruby/3.1.0/bundler/cli/remove.rb | 17 + clangarm64/lib/ruby/3.1.0/bundler/cli/show.rb | 75 + .../lib/ruby/3.1.0/bundler/cli/update.rb | 122 + clangarm64/lib/ruby/3.1.0/bundler/cli/viz.rb | 31 + .../3.1.0/bundler/compact_index_client.rb | 119 + .../bundler/compact_index_client/cache.rb | 101 + .../compact_index_client/gem_parser.rb | 28 + .../bundler/compact_index_client/updater.rb | 116 + .../lib/ruby/3.1.0/bundler/constants.rb | 7 + .../lib/ruby/3.1.0/bundler/current_ruby.rb | 106 + .../lib/ruby/3.1.0/bundler/definition.rb | 875 + .../lib/ruby/3.1.0/bundler/dependency.rb | 96 + .../lib/ruby/3.1.0/bundler/deployment.rb | 69 + .../lib/ruby/3.1.0/bundler/deprecate.rb | 44 + clangarm64/lib/ruby/3.1.0/bundler/digest.rb | 71 + clangarm64/lib/ruby/3.1.0/bundler/dsl.rb | 583 + .../3.1.0/bundler/endpoint_specification.rb | 147 + clangarm64/lib/ruby/3.1.0/bundler/env.rb | 150 + .../3.1.0/bundler/environment_preserver.rb | 85 + clangarm64/lib/ruby/3.1.0/bundler/errors.rb | 185 + .../lib/ruby/3.1.0/bundler/feature_flag.rb | 54 + clangarm64/lib/ruby/3.1.0/bundler/fetcher.rb | 314 + .../lib/ruby/3.1.0/bundler/fetcher/base.rb | 50 + .../3.1.0/bundler/fetcher/compact_index.rb | 135 + .../ruby/3.1.0/bundler/fetcher/dependency.rb | 82 + .../ruby/3.1.0/bundler/fetcher/downloader.rb | 90 + .../lib/ruby/3.1.0/bundler/fetcher/index.rb | 26 + .../lib/ruby/3.1.0/bundler/friendly_errors.rb | 129 + .../lib/ruby/3.1.0/bundler/gem_helper.rb | 238 + .../lib/ruby/3.1.0/bundler/gem_helpers.rb | 117 + .../lib/ruby/3.1.0/bundler/gem_tasks.rb | 7 + .../3.1.0/bundler/gem_version_promoter.rb | 179 + clangarm64/lib/ruby/3.1.0/bundler/graph.rb | 152 + clangarm64/lib/ruby/3.1.0/bundler/index.rb | 188 + clangarm64/lib/ruby/3.1.0/bundler/injector.rb | 287 + clangarm64/lib/ruby/3.1.0/bundler/inline.rb | 75 + .../lib/ruby/3.1.0/bundler/installer.rb | 281 + .../3.1.0/bundler/installer/gem_installer.rb | 84 + .../bundler/installer/parallel_installer.rb | 250 + .../3.1.0/bundler/installer/standalone.rb | 99 + .../ruby/3.1.0/bundler/lazy_specification.rb | 159 + .../ruby/3.1.0/bundler/lockfile_generator.rb | 95 + .../lib/ruby/3.1.0/bundler/lockfile_parser.rb | 224 + .../lib/ruby/3.1.0/bundler/man/bundle-add.1 | 82 + .../ruby/3.1.0/bundler/man/bundle-add.1.ronn | 58 + .../ruby/3.1.0/bundler/man/bundle-binstubs.1 | 42 + .../3.1.0/bundler/man/bundle-binstubs.1.ronn | 41 + .../lib/ruby/3.1.0/bundler/man/bundle-cache.1 | 61 + .../3.1.0/bundler/man/bundle-cache.1.ronn | 79 + .../lib/ruby/3.1.0/bundler/man/bundle-check.1 | 31 + .../3.1.0/bundler/man/bundle-check.1.ronn | 26 + .../lib/ruby/3.1.0/bundler/man/bundle-clean.1 | 24 + .../3.1.0/bundler/man/bundle-clean.1.ronn | 18 + .../ruby/3.1.0/bundler/man/bundle-config.1 | 515 + .../3.1.0/bundler/man/bundle-config.1.ronn | 408 + .../ruby/3.1.0/bundler/man/bundle-console.1 | 53 + .../3.1.0/bundler/man/bundle-console.1.ronn | 44 + .../ruby/3.1.0/bundler/man/bundle-doctor.1 | 44 + .../3.1.0/bundler/man/bundle-doctor.1.ronn | 33 + .../lib/ruby/3.1.0/bundler/man/bundle-exec.1 | 165 + .../ruby/3.1.0/bundler/man/bundle-exec.1.ronn | 152 + .../lib/ruby/3.1.0/bundler/man/bundle-gem.1 | 115 + .../ruby/3.1.0/bundler/man/bundle-gem.1.ronn | 117 + .../lib/ruby/3.1.0/bundler/man/bundle-help.1 | 13 + .../ruby/3.1.0/bundler/man/bundle-help.1.ronn | 12 + .../lib/ruby/3.1.0/bundler/man/bundle-info.1 | 20 + .../ruby/3.1.0/bundler/man/bundle-info.1.ronn | 17 + .../lib/ruby/3.1.0/bundler/man/bundle-init.1 | 25 + .../ruby/3.1.0/bundler/man/bundle-init.1.ronn | 29 + .../ruby/3.1.0/bundler/man/bundle-inject.1 | 36 + .../3.1.0/bundler/man/bundle-inject.1.ronn | 24 + .../ruby/3.1.0/bundler/man/bundle-install.1 | 342 + .../3.1.0/bundler/man/bundle-install.1.ronn | 411 + .../lib/ruby/3.1.0/bundler/man/bundle-list.1 | 50 + .../ruby/3.1.0/bundler/man/bundle-list.1.ronn | 33 + .../lib/ruby/3.1.0/bundler/man/bundle-lock.1 | 84 + .../ruby/3.1.0/bundler/man/bundle-lock.1.ronn | 94 + .../lib/ruby/3.1.0/bundler/man/bundle-open.1 | 32 + .../ruby/3.1.0/bundler/man/bundle-open.1.ronn | 19 + .../ruby/3.1.0/bundler/man/bundle-outdated.1 | 148 + .../3.1.0/bundler/man/bundle-outdated.1.ronn | 102 + .../ruby/3.1.0/bundler/man/bundle-platform.1 | 71 + .../3.1.0/bundler/man/bundle-platform.1.ronn | 49 + .../ruby/3.1.0/bundler/man/bundle-plugin.1 | 81 + .../3.1.0/bundler/man/bundle-plugin.1.ronn | 59 + .../ruby/3.1.0/bundler/man/bundle-pristine.1 | 34 + .../3.1.0/bundler/man/bundle-pristine.1.ronn | 34 + .../ruby/3.1.0/bundler/man/bundle-remove.1 | 31 + .../3.1.0/bundler/man/bundle-remove.1.ronn | 23 + .../lib/ruby/3.1.0/bundler/man/bundle-show.1 | 23 + .../ruby/3.1.0/bundler/man/bundle-show.1.ronn | 21 + .../ruby/3.1.0/bundler/man/bundle-update.1 | 394 + .../3.1.0/bundler/man/bundle-update.1.ronn | 351 + .../ruby/3.1.0/bundler/man/bundle-version.1 | 35 + .../3.1.0/bundler/man/bundle-version.1.ronn | 24 + .../lib/ruby/3.1.0/bundler/man/bundle-viz.1 | 42 + .../ruby/3.1.0/bundler/man/bundle-viz.1.ronn | 32 + .../lib/ruby/3.1.0/bundler/man/bundle.1 | 141 + .../lib/ruby/3.1.0/bundler/man/bundle.1.ronn | 116 + .../lib/ruby/3.1.0/bundler/man/gemfile.5 | 723 + .../lib/ruby/3.1.0/bundler/man/gemfile.5.ronn | 538 + .../lib/ruby/3.1.0/bundler/match_metadata.rb | 13 + .../lib/ruby/3.1.0/bundler/match_platform.rb | 23 + .../3.1.0/bundler/match_remote_metadata.rb | 29 + clangarm64/lib/ruby/3.1.0/bundler/mirror.rb | 223 + clangarm64/lib/ruby/3.1.0/bundler/plugin.rb | 352 + .../lib/ruby/3.1.0/bundler/plugin/api.rb | 81 + .../ruby/3.1.0/bundler/plugin/api/source.rb | 320 + .../lib/ruby/3.1.0/bundler/plugin/dsl.rb | 53 + .../lib/ruby/3.1.0/bundler/plugin/events.rb | 61 + .../lib/ruby/3.1.0/bundler/plugin/index.rb | 185 + .../ruby/3.1.0/bundler/plugin/installer.rb | 109 + .../3.1.0/bundler/plugin/installer/git.rb | 34 + .../bundler/plugin/installer/rubygems.rb | 23 + .../ruby/3.1.0/bundler/plugin/source_list.rb | 31 + .../lib/ruby/3.1.0/bundler/process_lock.rb | 24 + .../3.1.0/bundler/remote_specification.rb | 121 + clangarm64/lib/ruby/3.1.0/bundler/resolver.rb | 380 + .../lib/ruby/3.1.0/bundler/resolver/base.rb | 50 + .../ruby/3.1.0/bundler/resolver/spec_group.rb | 92 + clangarm64/lib/ruby/3.1.0/bundler/retry.rb | 66 + clangarm64/lib/ruby/3.1.0/bundler/ruby_dsl.rb | 18 + .../lib/ruby/3.1.0/bundler/ruby_version.rb | 124 + .../lib/ruby/3.1.0/bundler/rubygems_ext.rb | 348 + .../3.1.0/bundler/rubygems_gem_installer.rb | 170 + .../3.1.0/bundler/rubygems_integration.rb | 566 + clangarm64/lib/ruby/3.1.0/bundler/runtime.rb | 311 + .../lib/ruby/3.1.0/bundler/self_manager.rb | 168 + clangarm64/lib/ruby/3.1.0/bundler/settings.rb | 513 + .../ruby/3.1.0/bundler/settings/validator.rb | 102 + clangarm64/lib/ruby/3.1.0/bundler/setup.rb | 27 + .../lib/ruby/3.1.0/bundler/shared_helpers.rb | 342 + .../ruby/3.1.0/bundler/similarity_detector.rb | 63 + clangarm64/lib/ruby/3.1.0/bundler/source.rb | 114 + .../lib/ruby/3.1.0/bundler/source/gemspec.rb | 18 + .../lib/ruby/3.1.0/bundler/source/git.rb | 354 + .../3.1.0/bundler/source/git/git_proxy.rb | 263 + .../lib/ruby/3.1.0/bundler/source/metadata.rb | 63 + .../lib/ruby/3.1.0/bundler/source/path.rb | 260 + .../3.1.0/bundler/source/path/installer.rb | 74 + .../lib/ruby/3.1.0/bundler/source/rubygems.rb | 567 + .../3.1.0/bundler/source/rubygems/remote.rb | 68 + .../bundler/source/rubygems_aggregate.rb | 68 + .../lib/ruby/3.1.0/bundler/source_list.rb | 225 + .../lib/ruby/3.1.0/bundler/source_map.rb | 71 + clangarm64/lib/ruby/3.1.0/bundler/spec_set.rb | 208 + .../ruby/3.1.0/bundler/stub_specification.rb | 116 + .../ruby/3.1.0/bundler/templates/Executable | 27 + .../bundler/templates/Executable.bundler | 114 + .../bundler/templates/Executable.standalone | 12 + .../lib/ruby/3.1.0/bundler/templates/Gemfile | 5 + .../lib/ruby/3.1.0/bundler/templates/gems.rb | 5 + .../bundler/templates/newgem/CHANGELOG.md.tt | 5 + .../templates/newgem/CODE_OF_CONDUCT.md.tt | 84 + .../3.1.0/bundler/templates/newgem/Gemfile.tt | 23 + .../bundler/templates/newgem/LICENSE.txt.tt | 21 + .../bundler/templates/newgem/README.md.tt | 43 + .../bundler/templates/newgem/Rakefile.tt | 56 + .../bundler/templates/newgem/bin/console.tt | 15 + .../bundler/templates/newgem/bin/setup.tt | 8 + .../templates/newgem/circleci/config.yml.tt | 13 + .../bundler/templates/newgem/exe/newgem.tt | 3 + .../templates/newgem/ext/newgem/extconf.rb.tt | 5 + .../templates/newgem/ext/newgem/newgem.c.tt | 9 + .../templates/newgem/ext/newgem/newgem.h.tt | 6 + .../newgem/github/workflows/main.yml.tt | 27 + .../bundler/templates/newgem/gitignore.tt | 20 + .../bundler/templates/newgem/gitlab-ci.yml.tt | 10 + .../bundler/templates/newgem/lib/newgem.rb.tt | 15 + .../templates/newgem/lib/newgem/version.rb.tt | 9 + .../templates/newgem/newgem.gemspec.tt | 44 + .../3.1.0/bundler/templates/newgem/rspec.tt | 3 + .../bundler/templates/newgem/rubocop.yml.tt | 13 + .../templates/newgem/sig/newgem.rbs.tt | 8 + .../templates/newgem/spec/newgem_spec.rb.tt | 11 + .../templates/newgem/spec/spec_helper.rb.tt | 15 + .../bundler/templates/newgem/standard.yml.tt | 3 + .../newgem/test/minitest/test_helper.rb.tt | 6 + .../newgem/test/minitest/test_newgem.rb.tt | 13 + .../newgem/test/test-unit/newgem_test.rb.tt | 15 + .../newgem/test/test-unit/test_helper.rb.tt | 6 + .../bundler/templates/newgem/travis.yml.tt | 6 + clangarm64/lib/ruby/3.1.0/bundler/ui.rb | 9 + .../lib/ruby/3.1.0/bundler/ui/rg_proxy.rb | 19 + clangarm64/lib/ruby/3.1.0/bundler/ui/shell.rb | 142 + .../lib/ruby/3.1.0/bundler/ui/silent.rb | 69 + .../3.1.0/bundler/uri_credentials_filter.rb | 43 + .../connection_pool/lib/connection_pool.rb | 126 + .../lib/connection_pool/timed_stack.rb | 174 + .../lib/connection_pool/version.rb | 3 + .../lib/connection_pool/wrapper.rb | 57 + .../bundler/vendor/fileutils/lib/fileutils.rb | 1764 + .../bundler/vendor/molinillo/lib/molinillo.rb | 11 + .../molinillo/delegates/resolution_state.rb | 57 + .../delegates/specification_provider.rb | 88 + .../lib/molinillo/dependency_graph.rb | 255 + .../lib/molinillo/dependency_graph/action.rb | 36 + .../dependency_graph/add_edge_no_circular.rb | 66 + .../molinillo/dependency_graph/add_vertex.rb | 62 + .../molinillo/dependency_graph/delete_edge.rb | 63 + .../dependency_graph/detach_vertex_named.rb | 61 + .../lib/molinillo/dependency_graph/log.rb | 126 + .../molinillo/dependency_graph/set_payload.rb | 46 + .../lib/molinillo/dependency_graph/tag.rb | 36 + .../lib/molinillo/dependency_graph/vertex.rb | 164 + .../vendor/molinillo/lib/molinillo/errors.rb | 149 + .../molinillo/lib/molinillo/gem_metadata.rb | 6 + .../modules/specification_provider.rb | 112 + .../molinillo/lib/molinillo/modules/ui.rb | 67 + .../molinillo/lib/molinillo/resolution.rb | 839 + .../molinillo/lib/molinillo/resolver.rb | 46 + .../vendor/molinillo/lib/molinillo/state.rb | 58 + .../lib/net/http/persistent.rb | 1073 + .../lib/net/http/persistent/connection.rb | 40 + .../lib/net/http/persistent/pool.rb | 53 + .../net/http/persistent/timed_stack_multi.rb | 79 + .../3.1.0/bundler/vendor/thor/lib/thor.rb | 516 + .../bundler/vendor/thor/lib/thor/actions.rb | 340 + .../thor/lib/thor/actions/create_file.rb | 104 + .../thor/lib/thor/actions/create_link.rb | 61 + .../vendor/thor/lib/thor/actions/directory.rb | 108 + .../thor/lib/thor/actions/empty_directory.rb | 143 + .../lib/thor/actions/file_manipulation.rb | 375 + .../thor/lib/thor/actions/inject_into_file.rb | 119 + .../bundler/vendor/thor/lib/thor/base.rb | 699 + .../bundler/vendor/thor/lib/thor/command.rb | 142 + .../core_ext/hash_with_indifferent_access.rb | 103 + .../bundler/vendor/thor/lib/thor/error.rb | 115 + .../bundler/vendor/thor/lib/thor/group.rb | 281 + .../vendor/thor/lib/thor/invocation.rb | 178 + .../vendor/thor/lib/thor/line_editor.rb | 17 + .../vendor/thor/lib/thor/line_editor/basic.rb | 37 + .../thor/lib/thor/line_editor/readline.rb | 88 + .../vendor/thor/lib/thor/nested_context.rb | 29 + .../bundler/vendor/thor/lib/thor/parser.rb | 4 + .../vendor/thor/lib/thor/parser/argument.rb | 70 + .../vendor/thor/lib/thor/parser/arguments.rb | 179 + .../vendor/thor/lib/thor/parser/option.rb | 159 + .../vendor/thor/lib/thor/parser/options.rb | 255 + .../vendor/thor/lib/thor/rake_compat.rb | 72 + .../bundler/vendor/thor/lib/thor/runner.rb | 325 + .../bundler/vendor/thor/lib/thor/shell.rb | 81 + .../vendor/thor/lib/thor/shell/basic.rb | 512 + .../vendor/thor/lib/thor/shell/color.rb | 157 + .../vendor/thor/lib/thor/shell/html.rb | 126 + .../bundler/vendor/thor/lib/thor/util.rb | 284 + .../bundler/vendor/thor/lib/thor/version.rb | 3 + .../3.1.0/bundler/vendor/tmpdir/lib/tmpdir.rb | 154 + .../3.1.0/bundler/vendor/tsort/lib/tsort.rb | 452 + .../ruby/3.1.0/bundler/vendor/uri/lib/uri.rb | 103 + .../bundler/vendor/uri/lib/uri/common.rb | 681 + .../3.1.0/bundler/vendor/uri/lib/uri/file.rb | 94 + .../3.1.0/bundler/vendor/uri/lib/uri/ftp.rb | 266 + .../bundler/vendor/uri/lib/uri/generic.rb | 1567 + .../3.1.0/bundler/vendor/uri/lib/uri/http.rb | 87 + .../3.1.0/bundler/vendor/uri/lib/uri/https.rb | 22 + .../3.1.0/bundler/vendor/uri/lib/uri/ldap.rb | 261 + .../3.1.0/bundler/vendor/uri/lib/uri/ldaps.rb | 21 + .../bundler/vendor/uri/lib/uri/mailto.rb | 293 + .../vendor/uri/lib/uri/rfc2396_parser.rb | 533 + .../vendor/uri/lib/uri/rfc3986_parser.rb | 114 + .../bundler/vendor/uri/lib/uri/version.rb | 6 + .../3.1.0/bundler/vendor/uri/lib/uri/ws.rb | 84 + .../3.1.0/bundler/vendor/uri/lib/uri/wss.rb | 22 + .../ruby/3.1.0/bundler/vendored_fileutils.rb | 4 + .../ruby/3.1.0/bundler/vendored_molinillo.rb | 4 + .../ruby/3.1.0/bundler/vendored_persistent.rb | 47 + .../lib/ruby/3.1.0/bundler/vendored_thor.rb | 8 + .../lib/ruby/3.1.0/bundler/vendored_tmpdir.rb | 4 + .../lib/ruby/3.1.0/bundler/vendored_tsort.rb | 4 + .../lib/ruby/3.1.0/bundler/vendored_uri.rb | 4 + clangarm64/lib/ruby/3.1.0/bundler/version.rb | 9 + .../lib/ruby/3.1.0/bundler/version_ranges.rb | 122 + clangarm64/lib/ruby/3.1.0/bundler/vlad.rb | 17 + clangarm64/lib/ruby/3.1.0/bundler/worker.rb | 119 + .../lib/ruby/3.1.0/bundler/yaml_serializer.rb | 89 + clangarm64/lib/ruby/3.1.0/cgi.rb | 297 + clangarm64/lib/ruby/3.1.0/cgi/cookie.rb | 209 + clangarm64/lib/ruby/3.1.0/cgi/core.rb | 900 + clangarm64/lib/ruby/3.1.0/cgi/html.rb | 1035 + clangarm64/lib/ruby/3.1.0/cgi/session.rb | 562 + .../lib/ruby/3.1.0/cgi/session/pstore.rb | 88 + clangarm64/lib/ruby/3.1.0/cgi/util.rb | 252 + clangarm64/lib/ruby/3.1.0/coverage.rb | 14 + clangarm64/lib/ruby/3.1.0/csv.rb | 2875 + .../lib/ruby/3.1.0/csv/core_ext/array.rb | 9 + .../lib/ruby/3.1.0/csv/core_ext/string.rb | 9 + .../lib/ruby/3.1.0/csv/delete_suffix.rb | 18 + .../lib/ruby/3.1.0/csv/fields_converter.rb | 89 + .../ruby/3.1.0/csv/input_record_separator.rb | 18 + clangarm64/lib/ruby/3.1.0/csv/match_p.rb | 20 + clangarm64/lib/ruby/3.1.0/csv/parser.rb | 1289 + clangarm64/lib/ruby/3.1.0/csv/row.rb | 757 + clangarm64/lib/ruby/3.1.0/csv/table.rb | 1056 + clangarm64/lib/ruby/3.1.0/csv/version.rb | 6 + clangarm64/lib/ruby/3.1.0/csv/writer.rb | 210 + clangarm64/lib/ruby/3.1.0/date.rb | 66 + clangarm64/lib/ruby/3.1.0/delegate.rb | 444 + clangarm64/lib/ruby/3.1.0/did_you_mean.rb | 155 + .../3.1.0/did_you_mean/core_ext/name_error.rb | 32 + .../ruby/3.1.0/did_you_mean/experimental.rb | 2 + .../lib/ruby/3.1.0/did_you_mean/formatter.rb | 44 + .../formatters/plain_formatter.rb | 4 + .../formatters/verbose_formatter.rb | 9 + .../ruby/3.1.0/did_you_mean/jaro_winkler.rb | 87 + .../ruby/3.1.0/did_you_mean/levenshtein.rb | 57 + .../ruby/3.1.0/did_you_mean/spell_checker.rb | 46 + .../spell_checkers/key_error_checker.rb | 20 + .../spell_checkers/method_name_checker.rb | 72 + .../spell_checkers/name_error_checkers.rb | 20 + .../name_error_checkers/class_name_checker.rb | 49 + .../variable_name_checker.rb | 85 + .../spell_checkers/null_checker.rb | 6 + .../pattern_key_name_checker.rb | 20 + .../spell_checkers/require_path_checker.rb | 39 + .../3.1.0/did_you_mean/tree_spell_checker.rb | 109 + .../lib/ruby/3.1.0/did_you_mean/verbose.rb | 2 + .../lib/ruby/3.1.0/did_you_mean/version.rb | 3 + clangarm64/lib/ruby/3.1.0/digest.rb | 123 + clangarm64/lib/ruby/3.1.0/digest/loader.rb | 3 + clangarm64/lib/ruby/3.1.0/digest/sha2.rb | 142 + .../lib/ruby/3.1.0/digest/sha2/loader.rb | 3 + clangarm64/lib/ruby/3.1.0/digest/version.rb | 5 + clangarm64/lib/ruby/3.1.0/drb.rb | 3 + clangarm64/lib/ruby/3.1.0/drb/acl.rb | 239 + clangarm64/lib/ruby/3.1.0/drb/drb.rb | 1937 + clangarm64/lib/ruby/3.1.0/drb/eq.rb | 15 + clangarm64/lib/ruby/3.1.0/drb/extserv.rb | 44 + clangarm64/lib/ruby/3.1.0/drb/extservm.rb | 92 + clangarm64/lib/ruby/3.1.0/drb/gw.rb | 161 + clangarm64/lib/ruby/3.1.0/drb/invokemethod.rb | 35 + clangarm64/lib/ruby/3.1.0/drb/observer.rb | 26 + clangarm64/lib/ruby/3.1.0/drb/ssl.rb | 344 + clangarm64/lib/ruby/3.1.0/drb/timeridconv.rb | 97 + clangarm64/lib/ruby/3.1.0/drb/unix.rb | 118 + clangarm64/lib/ruby/3.1.0/drb/version.rb | 3 + clangarm64/lib/ruby/3.1.0/drb/weakidconv.rb | 59 + clangarm64/lib/ruby/3.1.0/erb.rb | 1079 + clangarm64/lib/ruby/3.1.0/erb/version.rb | 5 + clangarm64/lib/ruby/3.1.0/error_highlight.rb | 2 + .../lib/ruby/3.1.0/error_highlight/base.rb | 461 + .../ruby/3.1.0/error_highlight/core_ext.rb | 52 + .../ruby/3.1.0/error_highlight/formatter.rb | 23 + .../lib/ruby/3.1.0/error_highlight/version.rb | 3 + clangarm64/lib/ruby/3.1.0/fiddle.rb | 70 + clangarm64/lib/ruby/3.1.0/fiddle/closure.rb | 49 + clangarm64/lib/ruby/3.1.0/fiddle/cparser.rb | 264 + clangarm64/lib/ruby/3.1.0/fiddle/function.rb | 29 + clangarm64/lib/ruby/3.1.0/fiddle/import.rb | 320 + clangarm64/lib/ruby/3.1.0/fiddle/pack.rb | 136 + clangarm64/lib/ruby/3.1.0/fiddle/struct.rb | 539 + clangarm64/lib/ruby/3.1.0/fiddle/types.rb | 73 + clangarm64/lib/ruby/3.1.0/fiddle/value.rb | 122 + clangarm64/lib/ruby/3.1.0/fiddle/version.rb | 3 + clangarm64/lib/ruby/3.1.0/fileutils.rb | 1753 + clangarm64/lib/ruby/3.1.0/find.rb | 88 + clangarm64/lib/ruby/3.1.0/forwardable.rb | 319 + clangarm64/lib/ruby/3.1.0/forwardable/impl.rb | 16 + clangarm64/lib/ruby/3.1.0/getoptlong.rb | 616 + clangarm64/lib/ruby/3.1.0/io/console/size.rb | 23 + clangarm64/lib/ruby/3.1.0/ipaddr.rb | 783 + clangarm64/lib/ruby/3.1.0/irb.rb | 978 + clangarm64/lib/ruby/3.1.0/irb/cmd/chws.rb | 34 + clangarm64/lib/ruby/3.1.0/irb/cmd/fork.rb | 37 + clangarm64/lib/ruby/3.1.0/irb/cmd/help.rb | 47 + clangarm64/lib/ruby/3.1.0/irb/cmd/info.rb | 32 + clangarm64/lib/ruby/3.1.0/irb/cmd/load.rb | 67 + clangarm64/lib/ruby/3.1.0/irb/cmd/ls.rb | 101 + clangarm64/lib/ruby/3.1.0/irb/cmd/measure.rb | 43 + clangarm64/lib/ruby/3.1.0/irb/cmd/nop.rb | 45 + clangarm64/lib/ruby/3.1.0/irb/cmd/pushws.rb | 40 + .../lib/ruby/3.1.0/irb/cmd/show_source.rb | 93 + clangarm64/lib/ruby/3.1.0/irb/cmd/subirb.rb | 43 + clangarm64/lib/ruby/3.1.0/irb/cmd/whereami.rb | 20 + clangarm64/lib/ruby/3.1.0/irb/color.rb | 246 + .../lib/ruby/3.1.0/irb/color_printer.rb | 47 + clangarm64/lib/ruby/3.1.0/irb/completion.rb | 443 + clangarm64/lib/ruby/3.1.0/irb/context.rb | 518 + clangarm64/lib/ruby/3.1.0/irb/easter-egg.rb | 138 + .../lib/ruby/3.1.0/irb/ext/change-ws.rb | 45 + clangarm64/lib/ruby/3.1.0/irb/ext/history.rb | 155 + clangarm64/lib/ruby/3.1.0/irb/ext/loader.rb | 155 + .../lib/ruby/3.1.0/irb/ext/multi-irb.rb | 265 + .../lib/ruby/3.1.0/irb/ext/save-history.rb | 130 + clangarm64/lib/ruby/3.1.0/irb/ext/tracer.rb | 84 + .../lib/ruby/3.1.0/irb/ext/use-loader.rb | 75 + .../lib/ruby/3.1.0/irb/ext/workspaces.rb | 66 + .../lib/ruby/3.1.0/irb/extend-command.rb | 356 + clangarm64/lib/ruby/3.1.0/irb/frame.rb | 86 + clangarm64/lib/ruby/3.1.0/irb/help.rb | 36 + clangarm64/lib/ruby/3.1.0/irb/init.rb | 422 + clangarm64/lib/ruby/3.1.0/irb/input-method.rb | 469 + clangarm64/lib/ruby/3.1.0/irb/inspector.rb | 136 + clangarm64/lib/ruby/3.1.0/irb/lc/error.rb | 71 + clangarm64/lib/ruby/3.1.0/irb/lc/help-message | 61 + .../ruby/3.1.0/irb/lc/ja/encoding_aliases.rb | 11 + clangarm64/lib/ruby/3.1.0/irb/lc/ja/error.rb | 72 + .../lib/ruby/3.1.0/irb/lc/ja/help-message | 57 + clangarm64/lib/ruby/3.1.0/irb/locale.rb | 191 + clangarm64/lib/ruby/3.1.0/irb/magic-file.rb | 38 + clangarm64/lib/ruby/3.1.0/irb/notifier.rb | 236 + .../lib/ruby/3.1.0/irb/output-method.rb | 92 + clangarm64/lib/ruby/3.1.0/irb/ruby-lex.rb | 861 + clangarm64/lib/ruby/3.1.0/irb/ruby_logo.aa | 37 + clangarm64/lib/ruby/3.1.0/irb/src_encoding.rb | 7 + clangarm64/lib/ruby/3.1.0/irb/version.rb | 17 + clangarm64/lib/ruby/3.1.0/irb/workspace.rb | 187 + .../lib/ruby/3.1.0/irb/ws-for-case-2.rb | 15 + clangarm64/lib/ruby/3.1.0/irb/xmp.rb | 170 + clangarm64/lib/ruby/3.1.0/json.rb | 583 + .../lib/ruby/3.1.0/json/add/bigdecimal.rb | 29 + clangarm64/lib/ruby/3.1.0/json/add/complex.rb | 28 + clangarm64/lib/ruby/3.1.0/json/add/core.rb | 12 + clangarm64/lib/ruby/3.1.0/json/add/date.rb | 34 + .../lib/ruby/3.1.0/json/add/date_time.rb | 50 + .../lib/ruby/3.1.0/json/add/exception.rb | 31 + clangarm64/lib/ruby/3.1.0/json/add/ostruct.rb | 31 + clangarm64/lib/ruby/3.1.0/json/add/range.rb | 29 + .../lib/ruby/3.1.0/json/add/rational.rb | 27 + clangarm64/lib/ruby/3.1.0/json/add/regexp.rb | 30 + clangarm64/lib/ruby/3.1.0/json/add/set.rb | 29 + clangarm64/lib/ruby/3.1.0/json/add/struct.rb | 30 + clangarm64/lib/ruby/3.1.0/json/add/symbol.rb | 25 + clangarm64/lib/ruby/3.1.0/json/add/time.rb | 38 + clangarm64/lib/ruby/3.1.0/json/common.rb | 703 + clangarm64/lib/ruby/3.1.0/json/ext.rb | 15 + .../lib/ruby/3.1.0/json/generic_object.rb | 71 + clangarm64/lib/ruby/3.1.0/json/version.rb | 9 + clangarm64/lib/ruby/3.1.0/kconv.rb | 283 + clangarm64/lib/ruby/3.1.0/logger.rb | 588 + clangarm64/lib/ruby/3.1.0/logger/errors.rb | 9 + clangarm64/lib/ruby/3.1.0/logger/formatter.rb | 37 + .../lib/ruby/3.1.0/logger/log_device.rb | 205 + clangarm64/lib/ruby/3.1.0/logger/period.rb | 47 + clangarm64/lib/ruby/3.1.0/logger/severity.rb | 19 + clangarm64/lib/ruby/3.1.0/logger/version.rb | 5 + clangarm64/lib/ruby/3.1.0/mkmf.rb | 2882 + clangarm64/lib/ruby/3.1.0/monitor.rb | 284 + clangarm64/lib/ruby/3.1.0/mutex_m.rb | 118 + clangarm64/lib/ruby/3.1.0/net/http.rb | 1763 + .../lib/ruby/3.1.0/net/http/backward.rb | 40 + .../lib/ruby/3.1.0/net/http/exceptions.rb | 34 + .../ruby/3.1.0/net/http/generic_request.rb | 338 + clangarm64/lib/ruby/3.1.0/net/http/header.rb | 517 + .../lib/ruby/3.1.0/net/http/proxy_delta.rb | 17 + clangarm64/lib/ruby/3.1.0/net/http/request.rb | 21 + .../lib/ruby/3.1.0/net/http/requests.rb | 123 + .../lib/ruby/3.1.0/net/http/response.rb | 602 + .../lib/ruby/3.1.0/net/http/responses.rb | 312 + clangarm64/lib/ruby/3.1.0/net/http/status.rb | 83 + clangarm64/lib/ruby/3.1.0/net/https.rb | 23 + clangarm64/lib/ruby/3.1.0/net/protocol.rb | 507 + clangarm64/lib/ruby/3.1.0/objspace.rb | 91 + clangarm64/lib/ruby/3.1.0/objspace/trace.rb | 45 + clangarm64/lib/ruby/3.1.0/observer.rb | 229 + clangarm64/lib/ruby/3.1.0/open-uri.rb | 811 + clangarm64/lib/ruby/3.1.0/open3.rb | 764 + clangarm64/lib/ruby/3.1.0/open3/version.rb | 3 + clangarm64/lib/ruby/3.1.0/openssl.rb | 37 + clangarm64/lib/ruby/3.1.0/openssl/bn.rb | 40 + .../lib/ruby/3.1.0/openssl/buffering.rb | 487 + clangarm64/lib/ruby/3.1.0/openssl/cipher.rb | 67 + clangarm64/lib/ruby/3.1.0/openssl/digest.rb | 73 + clangarm64/lib/ruby/3.1.0/openssl/hmac.rb | 78 + clangarm64/lib/ruby/3.1.0/openssl/marshal.rb | 30 + clangarm64/lib/ruby/3.1.0/openssl/pkcs5.rb | 22 + clangarm64/lib/ruby/3.1.0/openssl/pkey.rb | 467 + clangarm64/lib/ruby/3.1.0/openssl/ssl.rb | 542 + clangarm64/lib/ruby/3.1.0/openssl/version.rb | 5 + clangarm64/lib/ruby/3.1.0/openssl/x509.rb | 391 + clangarm64/lib/ruby/3.1.0/optionparser.rb | 2 + clangarm64/lib/ruby/3.1.0/optparse.rb | 2228 + clangarm64/lib/ruby/3.1.0/optparse/ac.rb | 54 + clangarm64/lib/ruby/3.1.0/optparse/date.rb | 18 + clangarm64/lib/ruby/3.1.0/optparse/kwargs.rb | 22 + .../lib/ruby/3.1.0/optparse/shellwords.rb | 7 + clangarm64/lib/ruby/3.1.0/optparse/time.rb | 11 + clangarm64/lib/ruby/3.1.0/optparse/uri.rb | 7 + clangarm64/lib/ruby/3.1.0/optparse/version.rb | 71 + clangarm64/lib/ruby/3.1.0/ostruct.rb | 472 + clangarm64/lib/ruby/3.1.0/pathname.rb | 599 + clangarm64/lib/ruby/3.1.0/pp.rb | 631 + clangarm64/lib/ruby/3.1.0/prettyprint.rb | 556 + clangarm64/lib/ruby/3.1.0/pstore.rb | 493 + clangarm64/lib/ruby/3.1.0/psych.rb | 741 + .../lib/ruby/3.1.0/psych/class_loader.rb | 104 + clangarm64/lib/ruby/3.1.0/psych/coder.rb | 95 + clangarm64/lib/ruby/3.1.0/psych/core_ext.rb | 19 + clangarm64/lib/ruby/3.1.0/psych/exception.rb | 14 + clangarm64/lib/ruby/3.1.0/psych/handler.rb | 255 + .../3.1.0/psych/handlers/document_stream.rb | 23 + .../lib/ruby/3.1.0/psych/handlers/recorder.rb | 40 + .../lib/ruby/3.1.0/psych/json/ruby_events.rb | 20 + .../lib/ruby/3.1.0/psych/json/stream.rb | 17 + .../lib/ruby/3.1.0/psych/json/tree_builder.rb | 13 + .../lib/ruby/3.1.0/psych/json/yaml_events.rb | 30 + clangarm64/lib/ruby/3.1.0/psych/nodes.rb | 78 + .../lib/ruby/3.1.0/psych/nodes/alias.rb | 21 + .../lib/ruby/3.1.0/psych/nodes/document.rb | 63 + .../lib/ruby/3.1.0/psych/nodes/mapping.rb | 59 + clangarm64/lib/ruby/3.1.0/psych/nodes/node.rb | 75 + .../lib/ruby/3.1.0/psych/nodes/scalar.rb | 70 + .../lib/ruby/3.1.0/psych/nodes/sequence.rb | 84 + .../lib/ruby/3.1.0/psych/nodes/stream.rb | 40 + clangarm64/lib/ruby/3.1.0/psych/omap.rb | 5 + clangarm64/lib/ruby/3.1.0/psych/parser.rb | 52 + .../lib/ruby/3.1.0/psych/scalar_scanner.rb | 142 + clangarm64/lib/ruby/3.1.0/psych/set.rb | 5 + clangarm64/lib/ruby/3.1.0/psych/stream.rb | 38 + clangarm64/lib/ruby/3.1.0/psych/streaming.rb | 28 + .../lib/ruby/3.1.0/psych/syntax_error.rb | 22 + .../lib/ruby/3.1.0/psych/tree_builder.rb | 137 + clangarm64/lib/ruby/3.1.0/psych/versions.rb | 10 + clangarm64/lib/ruby/3.1.0/psych/visitors.rb | 7 + .../ruby/3.1.0/psych/visitors/depth_first.rb | 27 + .../lib/ruby/3.1.0/psych/visitors/emitter.rb | 52 + .../ruby/3.1.0/psych/visitors/json_tree.rb | 25 + .../lib/ruby/3.1.0/psych/visitors/to_ruby.rb | 434 + .../lib/ruby/3.1.0/psych/visitors/visitor.rb | 34 + .../ruby/3.1.0/psych/visitors/yaml_tree.rb | 587 + clangarm64/lib/ruby/3.1.0/psych/y.rb | 10 + clangarm64/lib/ruby/3.1.0/racc.rb | 6 + clangarm64/lib/ruby/3.1.0/racc/compat.rb | 33 + clangarm64/lib/ruby/3.1.0/racc/debugflags.rb | 60 + clangarm64/lib/ruby/3.1.0/racc/exception.rb | 16 + clangarm64/lib/ruby/3.1.0/racc/grammar.rb | 1118 + .../lib/ruby/3.1.0/racc/grammarfileparser.rb | 561 + clangarm64/lib/ruby/3.1.0/racc/info.rb | 17 + clangarm64/lib/ruby/3.1.0/racc/iset.rb | 92 + .../lib/ruby/3.1.0/racc/logfilegenerator.rb | 212 + clangarm64/lib/ruby/3.1.0/racc/parser-text.rb | 637 + clangarm64/lib/ruby/3.1.0/racc/parser.rb | 632 + .../ruby/3.1.0/racc/parserfilegenerator.rb | 468 + clangarm64/lib/ruby/3.1.0/racc/sourcetext.rb | 35 + clangarm64/lib/ruby/3.1.0/racc/state.rb | 972 + .../ruby/3.1.0/racc/statetransitiontable.rb | 311 + clangarm64/lib/ruby/3.1.0/racc/static.rb | 5 + clangarm64/lib/ruby/3.1.0/random/formatter.rb | 217 + clangarm64/lib/ruby/3.1.0/rdoc.rb | 201 + clangarm64/lib/ruby/3.1.0/rdoc/alias.rb | 112 + clangarm64/lib/ruby/3.1.0/rdoc/anon_class.rb | 11 + clangarm64/lib/ruby/3.1.0/rdoc/any_method.rb | 364 + clangarm64/lib/ruby/3.1.0/rdoc/attr.rb | 176 + .../lib/ruby/3.1.0/rdoc/class_module.rb | 802 + clangarm64/lib/ruby/3.1.0/rdoc/code_object.rb | 421 + .../lib/ruby/3.1.0/rdoc/code_objects.rb | 6 + clangarm64/lib/ruby/3.1.0/rdoc/comment.rb | 250 + clangarm64/lib/ruby/3.1.0/rdoc/constant.rb | 187 + clangarm64/lib/ruby/3.1.0/rdoc/context.rb | 1266 + .../lib/ruby/3.1.0/rdoc/context/section.rb | 232 + .../lib/ruby/3.1.0/rdoc/cross_reference.rb | 210 + clangarm64/lib/ruby/3.1.0/rdoc/encoding.rb | 136 + clangarm64/lib/ruby/3.1.0/rdoc/erb_partial.rb | 19 + clangarm64/lib/ruby/3.1.0/rdoc/erbio.rb | 42 + clangarm64/lib/ruby/3.1.0/rdoc/extend.rb | 10 + clangarm64/lib/ruby/3.1.0/rdoc/generator.rb | 51 + .../lib/ruby/3.1.0/rdoc/generator/darkfish.rb | 790 + .../ruby/3.1.0/rdoc/generator/json_index.rb | 300 + .../lib/ruby/3.1.0/rdoc/generator/markup.rb | 160 + .../lib/ruby/3.1.0/rdoc/generator/pot.rb | 98 + .../rdoc/generator/pot/message_extractor.rb | 68 + .../lib/ruby/3.1.0/rdoc/generator/pot/po.rb | 84 + .../ruby/3.1.0/rdoc/generator/pot/po_entry.rb | 141 + .../lib/ruby/3.1.0/rdoc/generator/ri.rb | 31 + .../generator/template/darkfish/_footer.rhtml | 5 + .../generator/template/darkfish/_head.rhtml | 20 + .../template/darkfish/_sidebar_VCS_info.rhtml | 19 + .../template/darkfish/_sidebar_classes.rhtml | 9 + .../template/darkfish/_sidebar_extends.rhtml | 15 + .../template/darkfish/_sidebar_in_files.rhtml | 9 + .../template/darkfish/_sidebar_includes.rhtml | 15 + .../darkfish/_sidebar_installed.rhtml | 15 + .../template/darkfish/_sidebar_methods.rhtml | 12 + .../darkfish/_sidebar_navigation.rhtml | 11 + .../template/darkfish/_sidebar_pages.rhtml | 12 + .../template/darkfish/_sidebar_parent.rhtml | 11 + .../template/darkfish/_sidebar_search.rhtml | 14 + .../template/darkfish/_sidebar_sections.rhtml | 11 + .../darkfish/_sidebar_table_of_contents.rhtml | 18 + .../generator/template/darkfish/class.rhtml | 172 + .../generator/template/darkfish/css/fonts.css | 167 + .../generator/template/darkfish/css/rdoc.css | 639 + .../template/darkfish/fonts/Lato-Light.ttf | Bin 0 -> 94668 bytes .../darkfish/fonts/Lato-LightItalic.ttf | Bin 0 -> 94196 bytes .../template/darkfish/fonts/Lato-Regular.ttf | Bin 0 -> 96184 bytes .../darkfish/fonts/Lato-RegularItalic.ttf | Bin 0 -> 95316 bytes .../darkfish/fonts/SourceCodePro-Bold.ttf | Bin 0 -> 138268 bytes .../darkfish/fonts/SourceCodePro-Regular.ttf | Bin 0 -> 138680 bytes .../template/darkfish/images/add.png | Bin 0 -> 733 bytes .../template/darkfish/images/arrow_up.png | Bin 0 -> 372 bytes .../template/darkfish/images/brick.png | Bin 0 -> 452 bytes .../template/darkfish/images/brick_link.png | Bin 0 -> 764 bytes .../template/darkfish/images/bug.png | Bin 0 -> 774 bytes .../template/darkfish/images/bullet_black.png | Bin 0 -> 211 bytes .../darkfish/images/bullet_toggle_minus.png | Bin 0 -> 207 bytes .../darkfish/images/bullet_toggle_plus.png | Bin 0 -> 209 bytes .../template/darkfish/images/date.png | Bin 0 -> 626 bytes .../template/darkfish/images/delete.png | Bin 0 -> 715 bytes .../template/darkfish/images/find.png | Bin 0 -> 659 bytes .../darkfish/images/loadingAnimation.gif | Bin 0 -> 5886 bytes .../template/darkfish/images/macFFBgHack.png | Bin 0 -> 207 bytes .../template/darkfish/images/package.png | Bin 0 -> 853 bytes .../template/darkfish/images/page_green.png | Bin 0 -> 621 bytes .../darkfish/images/page_white_text.png | Bin 0 -> 342 bytes .../darkfish/images/page_white_width.png | Bin 0 -> 309 bytes .../template/darkfish/images/plugin.png | Bin 0 -> 591 bytes .../template/darkfish/images/ruby.png | Bin 0 -> 592 bytes .../template/darkfish/images/tag_blue.png | Bin 0 -> 1880 bytes .../template/darkfish/images/tag_green.png | Bin 0 -> 613 bytes .../template/darkfish/images/transparent.png | Bin 0 -> 97 bytes .../template/darkfish/images/wrench.png | Bin 0 -> 610 bytes .../darkfish/images/wrench_orange.png | Bin 0 -> 584 bytes .../template/darkfish/images/zoom.png | Bin 0 -> 692 bytes .../generator/template/darkfish/index.rhtml | 22 + .../template/darkfish/js/darkfish.js | 84 + .../generator/template/darkfish/js/search.js | 110 + .../generator/template/darkfish/page.rhtml | 18 + .../template/darkfish/servlet_not_found.rhtml | 18 + .../template/darkfish/servlet_root.rhtml | 62 + .../template/darkfish/table_of_contents.rhtml | 58 + .../template/json_index/js/navigation.js | 105 + .../template/json_index/js/searcher.js | 229 + .../lib/ruby/3.1.0/rdoc/ghost_method.rb | 7 + clangarm64/lib/ruby/3.1.0/rdoc/i18n.rb | 10 + clangarm64/lib/ruby/3.1.0/rdoc/i18n/locale.rb | 102 + clangarm64/lib/ruby/3.1.0/rdoc/i18n/text.rb | 126 + clangarm64/lib/ruby/3.1.0/rdoc/include.rb | 10 + .../lib/ruby/3.1.0/rdoc/known_classes.rb | 73 + clangarm64/lib/ruby/3.1.0/rdoc/markdown.rb | 16684 +++ .../lib/ruby/3.1.0/rdoc/markdown/entities.rb | 2132 + .../lib/ruby/3.1.0/rdoc/markdown/literals.rb | 416 + clangarm64/lib/ruby/3.1.0/rdoc/markup.rb | 867 + .../ruby/3.1.0/rdoc/markup/attr_changer.rb | 23 + .../lib/ruby/3.1.0/rdoc/markup/attr_span.rb | 36 + .../3.1.0/rdoc/markup/attribute_manager.rb | 409 + .../lib/ruby/3.1.0/rdoc/markup/attributes.rb | 71 + .../lib/ruby/3.1.0/rdoc/markup/blank_line.rb | 28 + .../lib/ruby/3.1.0/rdoc/markup/block_quote.rb | 15 + .../lib/ruby/3.1.0/rdoc/markup/document.rb | 165 + .../lib/ruby/3.1.0/rdoc/markup/formatter.rb | 266 + .../lib/ruby/3.1.0/rdoc/markup/hard_break.rb | 32 + .../lib/ruby/3.1.0/rdoc/markup/heading.rb | 79 + .../lib/ruby/3.1.0/rdoc/markup/include.rb | 43 + .../3.1.0/rdoc/markup/indented_paragraph.rb | 48 + clangarm64/lib/ruby/3.1.0/rdoc/markup/list.rb | 102 + .../lib/ruby/3.1.0/rdoc/markup/list_item.rb | 100 + .../lib/ruby/3.1.0/rdoc/markup/paragraph.rb | 29 + .../lib/ruby/3.1.0/rdoc/markup/parser.rb | 575 + .../lib/ruby/3.1.0/rdoc/markup/pre_process.rb | 298 + clangarm64/lib/ruby/3.1.0/rdoc/markup/raw.rb | 70 + .../ruby/3.1.0/rdoc/markup/regexp_handling.rb | 41 + clangarm64/lib/ruby/3.1.0/rdoc/markup/rule.rb | 21 + .../lib/ruby/3.1.0/rdoc/markup/table.rb | 47 + .../lib/ruby/3.1.0/rdoc/markup/to_ansi.rb | 94 + .../lib/ruby/3.1.0/rdoc/markup/to_bs.rb | 77 + .../lib/ruby/3.1.0/rdoc/markup/to_html.rb | 444 + .../3.1.0/rdoc/markup/to_html_crossref.rb | 176 + .../ruby/3.1.0/rdoc/markup/to_html_snippet.rb | 285 + .../3.1.0/rdoc/markup/to_joined_paragraph.rb | 47 + .../lib/ruby/3.1.0/rdoc/markup/to_label.rb | 75 + .../lib/ruby/3.1.0/rdoc/markup/to_markdown.rb | 192 + .../lib/ruby/3.1.0/rdoc/markup/to_rdoc.rb | 362 + .../3.1.0/rdoc/markup/to_table_of_contents.rb | 89 + .../lib/ruby/3.1.0/rdoc/markup/to_test.rb | 70 + .../lib/ruby/3.1.0/rdoc/markup/to_tt_only.rb | 121 + .../lib/ruby/3.1.0/rdoc/markup/verbatim.rb | 84 + clangarm64/lib/ruby/3.1.0/rdoc/meta_method.rb | 7 + clangarm64/lib/ruby/3.1.0/rdoc/method_attr.rb | 419 + clangarm64/lib/ruby/3.1.0/rdoc/mixin.rb | 121 + .../lib/ruby/3.1.0/rdoc/normal_class.rb | 93 + .../lib/ruby/3.1.0/rdoc/normal_module.rb | 74 + clangarm64/lib/ruby/3.1.0/rdoc/options.rb | 1314 + clangarm64/lib/ruby/3.1.0/rdoc/parser.rb | 277 + clangarm64/lib/ruby/3.1.0/rdoc/parser/c.rb | 1237 + .../lib/ruby/3.1.0/rdoc/parser/changelog.rb | 335 + .../lib/ruby/3.1.0/rdoc/parser/markdown.rb | 24 + clangarm64/lib/ruby/3.1.0/rdoc/parser/rd.rb | 23 + .../3.1.0/rdoc/parser/ripper_state_lex.rb | 590 + clangarm64/lib/ruby/3.1.0/rdoc/parser/ruby.rb | 2345 + .../lib/ruby/3.1.0/rdoc/parser/ruby_tools.rb | 167 + .../lib/ruby/3.1.0/rdoc/parser/simple.rb | 61 + clangarm64/lib/ruby/3.1.0/rdoc/parser/text.rb | 12 + clangarm64/lib/ruby/3.1.0/rdoc/rd.rb | 100 + .../lib/ruby/3.1.0/rdoc/rd/block_parser.rb | 1056 + clangarm64/lib/ruby/3.1.0/rdoc/rd/inline.rb | 72 + .../lib/ruby/3.1.0/rdoc/rd/inline_parser.rb | 1208 + clangarm64/lib/ruby/3.1.0/rdoc/rdoc.rb | 551 + clangarm64/lib/ruby/3.1.0/rdoc/require.rb | 52 + clangarm64/lib/ruby/3.1.0/rdoc/ri.rb | 21 + clangarm64/lib/ruby/3.1.0/rdoc/ri/driver.rb | 1579 + .../lib/ruby/3.1.0/rdoc/ri/formatter.rb | 6 + clangarm64/lib/ruby/3.1.0/rdoc/ri/paths.rb | 171 + clangarm64/lib/ruby/3.1.0/rdoc/ri/store.rb | 7 + clangarm64/lib/ruby/3.1.0/rdoc/ri/task.rb | 71 + .../lib/ruby/3.1.0/rdoc/rubygems_hook.rb | 248 + clangarm64/lib/ruby/3.1.0/rdoc/servlet.rb | 451 + .../lib/ruby/3.1.0/rdoc/single_class.rb | 26 + clangarm64/lib/ruby/3.1.0/rdoc/stats.rb | 462 + .../lib/ruby/3.1.0/rdoc/stats/normal.rb | 58 + clangarm64/lib/ruby/3.1.0/rdoc/stats/quiet.rb | 60 + .../lib/ruby/3.1.0/rdoc/stats/verbose.rb | 46 + clangarm64/lib/ruby/3.1.0/rdoc/store.rb | 986 + clangarm64/lib/ruby/3.1.0/rdoc/task.rb | 329 + clangarm64/lib/ruby/3.1.0/rdoc/text.rb | 312 + .../lib/ruby/3.1.0/rdoc/token_stream.rb | 119 + clangarm64/lib/ruby/3.1.0/rdoc/tom_doc.rb | 263 + clangarm64/lib/ruby/3.1.0/rdoc/top_level.rb | 289 + clangarm64/lib/ruby/3.1.0/rdoc/version.rb | 8 + clangarm64/lib/ruby/3.1.0/readline.rb | 7 + clangarm64/lib/ruby/3.1.0/reline.rb | 586 + clangarm64/lib/ruby/3.1.0/reline/ansi.rb | 350 + clangarm64/lib/ruby/3.1.0/reline/config.rb | 395 + .../lib/ruby/3.1.0/reline/general_io.rb | 103 + clangarm64/lib/ruby/3.1.0/reline/history.rb | 76 + clangarm64/lib/ruby/3.1.0/reline/key_actor.rb | 7 + .../lib/ruby/3.1.0/reline/key_actor/base.rb | 19 + .../lib/ruby/3.1.0/reline/key_actor/emacs.rb | 517 + .../ruby/3.1.0/reline/key_actor/vi_command.rb | 518 + .../ruby/3.1.0/reline/key_actor/vi_insert.rb | 517 + .../lib/ruby/3.1.0/reline/key_stroke.rb | 105 + clangarm64/lib/ruby/3.1.0/reline/kill_ring.rb | 125 + .../lib/ruby/3.1.0/reline/line_editor.rb | 3345 + clangarm64/lib/ruby/3.1.0/reline/terminfo.rb | 171 + clangarm64/lib/ruby/3.1.0/reline/unicode.rb | 665 + .../3.1.0/reline/unicode/east_asian_width.rb | 1164 + clangarm64/lib/ruby/3.1.0/reline/version.rb | 3 + clangarm64/lib/ruby/3.1.0/reline/windows.rb | 497 + clangarm64/lib/ruby/3.1.0/resolv-replace.rb | 76 + clangarm64/lib/ruby/3.1.0/resolv.rb | 2910 + clangarm64/lib/ruby/3.1.0/rinda/rinda.rb | 327 + clangarm64/lib/ruby/3.1.0/rinda/ring.rb | 484 + clangarm64/lib/ruby/3.1.0/rinda/tuplespace.rb | 641 + clangarm64/lib/ruby/3.1.0/ripper.rb | 74 + clangarm64/lib/ruby/3.1.0/ripper/core.rb | 74 + clangarm64/lib/ruby/3.1.0/ripper/filter.rb | 86 + clangarm64/lib/ruby/3.1.0/ripper/lexer.rb | 372 + clangarm64/lib/ruby/3.1.0/ripper/sexp.rb | 187 + clangarm64/lib/ruby/3.1.0/rubygems.rb | 1350 + .../lib/ruby/3.1.0/rubygems/available_set.rb | 164 + .../3.1.0/rubygems/basic_specification.rb | 345 + .../3.1.0/rubygems/bundler_version_finder.rb | 77 + clangarm64/lib/ruby/3.1.0/rubygems/command.rb | 663 + .../ruby/3.1.0/rubygems/command_manager.rb | 240 + .../3.1.0/rubygems/commands/build_command.rb | 132 + .../3.1.0/rubygems/commands/cert_command.rb | 325 + .../3.1.0/rubygems/commands/check_command.rb | 92 + .../rubygems/commands/cleanup_command.rb | 189 + .../rubygems/commands/contents_command.rb | 188 + .../rubygems/commands/dependency_command.rb | 207 + .../rubygems/commands/environment_command.rb | 177 + .../3.1.0/rubygems/commands/fetch_command.rb | 94 + .../commands/generate_index_command.rb | 85 + .../3.1.0/rubygems/commands/help_command.rb | 374 + .../3.1.0/rubygems/commands/info_command.rb | 38 + .../rubygems/commands/install_command.rb | 276 + .../3.1.0/rubygems/commands/list_command.rb | 41 + .../3.1.0/rubygems/commands/lock_command.rb | 108 + .../3.1.0/rubygems/commands/mirror_command.rb | 25 + .../3.1.0/rubygems/commands/open_command.rb | 84 + .../rubygems/commands/outdated_command.rb | 32 + .../3.1.0/rubygems/commands/owner_command.rb | 123 + .../rubygems/commands/pristine_command.rb | 196 + .../3.1.0/rubygems/commands/push_command.rb | 109 + .../3.1.0/rubygems/commands/query_command.rb | 43 + .../3.1.0/rubygems/commands/rdoc_command.rb | 95 + .../3.1.0/rubygems/commands/search_command.rb | 40 + .../3.1.0/rubygems/commands/server_command.rb | 25 + .../3.1.0/rubygems/commands/setup_command.rb | 670 + .../3.1.0/rubygems/commands/signin_command.rb | 33 + .../rubygems/commands/signout_command.rb | 31 + .../rubygems/commands/sources_command.rb | 226 + .../commands/specification_command.rb | 151 + .../3.1.0/rubygems/commands/stale_command.rb | 39 + .../rubygems/commands/uninstall_command.rb | 197 + .../3.1.0/rubygems/commands/unpack_command.rb | 175 + .../3.1.0/rubygems/commands/update_command.rb | 342 + .../3.1.0/rubygems/commands/which_command.rb | 87 + .../3.1.0/rubygems/commands/yank_command.rb | 98 + .../lib/ruby/3.1.0/rubygems/compatibility.rb | 42 + .../lib/ruby/3.1.0/rubygems/config_file.rb | 508 + .../3.1.0/rubygems/core_ext/kernel_gem.rb | 75 + .../3.1.0/rubygems/core_ext/kernel_require.rb | 175 + .../3.1.0/rubygems/core_ext/kernel_warn.rb | 54 + .../3.1.0/rubygems/core_ext/tcpsocket_init.rb | 52 + .../lib/ruby/3.1.0/rubygems/defaults.rb | 277 + .../lib/ruby/3.1.0/rubygems/dependency.rb | 350 + .../3.1.0/rubygems/dependency_installer.rb | 339 + .../ruby/3.1.0/rubygems/dependency_list.rb | 242 + .../lib/ruby/3.1.0/rubygems/deprecate.rb | 164 + clangarm64/lib/ruby/3.1.0/rubygems/doctor.rb | 131 + clangarm64/lib/ruby/3.1.0/rubygems/errors.rb | 179 + .../lib/ruby/3.1.0/rubygems/exceptions.rb | 291 + clangarm64/lib/ruby/3.1.0/rubygems/ext.rb | 19 + .../ruby/3.1.0/rubygems/ext/build_error.rb | 8 + .../lib/ruby/3.1.0/rubygems/ext/builder.rb | 225 + .../ruby/3.1.0/rubygems/ext/cargo_builder.rb | 325 + .../ext/cargo_builder/link_flag_converter.rb | 23 + .../ruby/3.1.0/rubygems/ext/cmake_builder.rb | 16 + .../3.1.0/rubygems/ext/configure_builder.rb | 20 + .../3.1.0/rubygems/ext/ext_conf_builder.rb | 73 + .../ruby/3.1.0/rubygems/ext/rake_builder.rb | 32 + .../lib/ruby/3.1.0/rubygems/gem_runner.rb | 75 + .../3.1.0/rubygems/gemcutter_utilities.rb | 326 + clangarm64/lib/ruby/3.1.0/rubygems/indexer.rb | 427 + .../3.1.0/rubygems/install_default_message.rb | 12 + .../ruby/3.1.0/rubygems/install_message.rb | 12 + .../3.1.0/rubygems/install_update_options.rb | 199 + .../lib/ruby/3.1.0/rubygems/installer.rb | 1005 + .../rubygems/installer_uninstaller_utils.rb | 29 + .../3.1.0/rubygems/local_remote_options.rb | 148 + .../lib/ruby/3.1.0/rubygems/mock_gem_ui.rb | 85 + .../lib/ruby/3.1.0/rubygems/name_tuple.rb | 120 + clangarm64/lib/ruby/3.1.0/rubygems/openssl.rb | 7 + .../lib/ruby/3.1.0/rubygems/optparse.rb | 3 + .../rubygems/optparse/lib/optionparser.rb | 2 + .../3.1.0/rubygems/optparse/lib/optparse.rb | 2303 + .../rubygems/optparse/lib/optparse/ac.rb | 54 + .../rubygems/optparse/lib/optparse/date.rb | 18 + .../rubygems/optparse/lib/optparse/kwargs.rb | 22 + .../optparse/lib/optparse/shellwords.rb | 7 + .../rubygems/optparse/lib/optparse/time.rb | 11 + .../rubygems/optparse/lib/optparse/uri.rb | 7 + .../rubygems/optparse/lib/optparse/version.rb | 71 + clangarm64/lib/ruby/3.1.0/rubygems/package.rb | 720 + .../ruby/3.1.0/rubygems/package/digest_io.rb | 62 + .../3.1.0/rubygems/package/file_source.rb | 31 + .../ruby/3.1.0/rubygems/package/io_source.rb | 47 + .../lib/ruby/3.1.0/rubygems/package/old.rb | 168 + .../lib/ruby/3.1.0/rubygems/package/source.rb | 3 + .../ruby/3.1.0/rubygems/package/tar_header.rb | 243 + .../ruby/3.1.0/rubygems/package/tar_reader.rb | 124 + .../rubygems/package/tar_reader/entry.rb | 167 + .../ruby/3.1.0/rubygems/package/tar_writer.rb | 328 + .../lib/ruby/3.1.0/rubygems/package_task.rb | 122 + .../lib/ruby/3.1.0/rubygems/path_support.rb | 85 + .../lib/ruby/3.1.0/rubygems/platform.rb | 247 + .../lib/ruby/3.1.0/rubygems/psych_tree.rb | 32 + .../lib/ruby/3.1.0/rubygems/query_utils.rb | 351 + clangarm64/lib/ruby/3.1.0/rubygems/rdoc.rb | 12 + .../lib/ruby/3.1.0/rubygems/remote_fetcher.rb | 333 + clangarm64/lib/ruby/3.1.0/rubygems/request.rb | 294 + .../rubygems/request/connection_pools.rb | 95 + .../ruby/3.1.0/rubygems/request/http_pool.rb | 46 + .../ruby/3.1.0/rubygems/request/https_pool.rb | 9 + .../lib/ruby/3.1.0/rubygems/request_set.rb | 466 + .../request_set/gem_dependency_api.rb | 844 + .../3.1.0/rubygems/request_set/lockfile.rb | 239 + .../rubygems/request_set/lockfile/parser.rb | 343 + .../request_set/lockfile/tokenizer.rb | 112 + .../lib/ruby/3.1.0/rubygems/requirement.rb | 293 + .../lib/ruby/3.1.0/rubygems/resolver.rb | 347 + .../rubygems/resolver/activation_request.rb | 162 + .../ruby/3.1.0/rubygems/resolver/api_set.rb | 132 + .../rubygems/resolver/api_set/gem_parser.rb | 20 + .../rubygems/resolver/api_specification.rb | 104 + .../ruby/3.1.0/rubygems/resolver/best_set.rb | 76 + .../3.1.0/rubygems/resolver/composed_set.rb | 64 + .../ruby/3.1.0/rubygems/resolver/conflict.rb | 153 + .../3.1.0/rubygems/resolver/current_set.rb | 11 + .../rubygems/resolver/dependency_request.rb | 118 + .../ruby/3.1.0/rubygems/resolver/git_set.rb | 120 + .../rubygems/resolver/git_specification.rb | 56 + .../ruby/3.1.0/rubygems/resolver/index_set.rb | 78 + .../rubygems/resolver/index_specification.rb | 100 + .../resolver/installed_specification.rb | 56 + .../3.1.0/rubygems/resolver/installer_set.rb | 269 + .../rubygems/resolver/local_specification.rb | 39 + .../ruby/3.1.0/rubygems/resolver/lock_set.rb | 80 + .../rubygems/resolver/lock_specification.rb | 85 + .../ruby/3.1.0/rubygems/resolver/molinillo.rb | 2 + .../resolver/molinillo/lib/molinillo.rb | 11 + .../molinillo/delegates/resolution_state.rb | 57 + .../delegates/specification_provider.rb | 88 + .../lib/molinillo/dependency_graph.rb | 255 + .../lib/molinillo/dependency_graph/action.rb | 36 + .../dependency_graph/add_edge_no_circular.rb | 66 + .../molinillo/dependency_graph/add_vertex.rb | 62 + .../molinillo/dependency_graph/delete_edge.rb | 63 + .../dependency_graph/detach_vertex_named.rb | 61 + .../lib/molinillo/dependency_graph/log.rb | 126 + .../molinillo/dependency_graph/set_payload.rb | 46 + .../lib/molinillo/dependency_graph/tag.rb | 36 + .../lib/molinillo/dependency_graph/vertex.rb | 164 + .../molinillo/lib/molinillo/errors.rb | 143 + .../molinillo/lib/molinillo/gem_metadata.rb | 6 + .../modules/specification_provider.rb | 112 + .../molinillo/lib/molinillo/modules/ui.rb | 67 + .../molinillo/lib/molinillo/resolution.rb | 839 + .../molinillo/lib/molinillo/resolver.rb | 46 + .../resolver/molinillo/lib/molinillo/state.rb | 58 + .../rubygems/resolver/requirement_list.rb | 81 + .../lib/ruby/3.1.0/rubygems/resolver/set.rb | 54 + .../3.1.0/rubygems/resolver/source_set.rb | 45 + .../rubygems/resolver/spec_specification.rb | 68 + .../3.1.0/rubygems/resolver/specification.rb | 125 + .../lib/ruby/3.1.0/rubygems/resolver/stats.rb | 45 + .../3.1.0/rubygems/resolver/vendor_set.rb | 85 + .../rubygems/resolver/vendor_specification.rb | 22 + .../lib/ruby/3.1.0/rubygems/s3_uri_signer.rb | 175 + .../lib/ruby/3.1.0/rubygems/safe_yaml.rb | 57 + .../lib/ruby/3.1.0/rubygems/security.rb | 641 + .../ruby/3.1.0/rubygems/security/policies.rb | 115 + .../ruby/3.1.0/rubygems/security/policy.rb | 291 + .../ruby/3.1.0/rubygems/security/signer.rb | 203 + .../ruby/3.1.0/rubygems/security/trust_dir.rb | 118 + .../ruby/3.1.0/rubygems/security_option.rb | 42 + clangarm64/lib/ruby/3.1.0/rubygems/source.rb | 241 + .../lib/ruby/3.1.0/rubygems/source/git.rb | 241 + .../ruby/3.1.0/rubygems/source/installed.rb | 38 + .../lib/ruby/3.1.0/rubygems/source/local.rb | 131 + .../lib/ruby/3.1.0/rubygems/source/lock.rb | 50 + .../3.1.0/rubygems/source/specific_file.rb | 71 + .../lib/ruby/3.1.0/rubygems/source/vendor.rb | 25 + .../lib/ruby/3.1.0/rubygems/source_list.rb | 146 + .../lib/ruby/3.1.0/rubygems/spec_fetcher.rb | 261 + .../lib/ruby/3.1.0/rubygems/specification.rb | 2731 + .../3.1.0/rubygems/specification_policy.rb | 486 + .../rubygems.org/GlobalSignRootCA.pem | 21 + .../rubygems.org/GlobalSignRootCA_R3.pem | 21 + .../ruby/3.1.0/rubygems/stub_specification.rb | 209 + clangarm64/lib/ruby/3.1.0/rubygems/text.rb | 86 + clangarm64/lib/ruby/3.1.0/rubygems/tsort.rb | 3 + .../ruby/3.1.0/rubygems/tsort/lib/tsort.rb | 454 + .../lib/ruby/3.1.0/rubygems/uninstaller.rb | 410 + .../rubygems/unknown_command_spell_checker.rb | 21 + clangarm64/lib/ruby/3.1.0/rubygems/uri.rb | 126 + .../lib/ruby/3.1.0/rubygems/uri_formatter.rb | 47 + .../ruby/3.1.0/rubygems/user_interaction.rb | 654 + clangarm64/lib/ruby/3.1.0/rubygems/util.rb | 119 + .../lib/ruby/3.1.0/rubygems/util/licenses.rb | 544 + .../lib/ruby/3.1.0/rubygems/util/list.rb | 37 + .../lib/ruby/3.1.0/rubygems/validator.rb | 143 + clangarm64/lib/ruby/3.1.0/rubygems/version.rb | 417 + .../lib/ruby/3.1.0/rubygems/version_option.rb | 82 + clangarm64/lib/ruby/3.1.0/securerandom.rb | 92 + clangarm64/lib/ruby/3.1.0/set.rb | 860 + clangarm64/lib/ruby/3.1.0/set/sorted_set.rb | 6 + clangarm64/lib/ruby/3.1.0/shellwords.rb | 240 + clangarm64/lib/ruby/3.1.0/singleton.rb | 177 + clangarm64/lib/ruby/3.1.0/socket.rb | 1357 + clangarm64/lib/ruby/3.1.0/tempfile.rb | 376 + clangarm64/lib/ruby/3.1.0/time.rb | 724 + clangarm64/lib/ruby/3.1.0/timeout.rb | 133 + clangarm64/lib/ruby/3.1.0/tmpdir.rb | 154 + clangarm64/lib/ruby/3.1.0/tsort.rb | 452 + clangarm64/lib/ruby/3.1.0/un.rb | 437 + .../ruby/3.1.0/unicode_normalize/normalize.rb | 175 + .../ruby/3.1.0/unicode_normalize/tables.rb | 9075 ++ clangarm64/lib/ruby/3.1.0/uri.rb | 104 + clangarm64/lib/ruby/3.1.0/uri/common.rb | 729 + clangarm64/lib/ruby/3.1.0/uri/file.rb | 100 + clangarm64/lib/ruby/3.1.0/uri/ftp.rb | 267 + clangarm64/lib/ruby/3.1.0/uri/generic.rb | 1587 + clangarm64/lib/ruby/3.1.0/uri/http.rb | 125 + clangarm64/lib/ruby/3.1.0/uri/https.rb | 23 + clangarm64/lib/ruby/3.1.0/uri/ldap.rb | 261 + clangarm64/lib/ruby/3.1.0/uri/ldaps.rb | 22 + clangarm64/lib/ruby/3.1.0/uri/mailto.rb | 293 + .../lib/ruby/3.1.0/uri/rfc2396_parser.rb | 539 + .../lib/ruby/3.1.0/uri/rfc3986_parser.rb | 119 + clangarm64/lib/ruby/3.1.0/uri/version.rb | 6 + clangarm64/lib/ruby/3.1.0/uri/ws.rb | 83 + clangarm64/lib/ruby/3.1.0/uri/wss.rb | 23 + clangarm64/lib/ruby/3.1.0/weakref.rb | 61 + clangarm64/lib/ruby/3.1.0/win32/registry.rb | 913 + clangarm64/lib/ruby/3.1.0/win32/resolv.rb | 135 + clangarm64/lib/ruby/3.1.0/win32/sspi.rb | 338 + clangarm64/lib/ruby/3.1.0/win32ole.rb | 33 + .../lib/ruby/3.1.0/win32ole/property.rb | 17 + clangarm64/lib/ruby/3.1.0/yaml.rb | 61 + clangarm64/lib/ruby/3.1.0/yaml/dbm.rb | 280 + clangarm64/lib/ruby/3.1.0/yaml/store.rb | 86 + .../lib/ruby/gems/3.1.0/cache/debug-1.6.3.gem | Bin 0 -> 88064 bytes .../ruby/gems/3.1.0/cache/matrix-0.4.2.gem | Bin 0 -> 27136 bytes .../ruby/gems/3.1.0/cache/minitest-5.15.0.gem | Bin 0 -> 87040 bytes .../ruby/gems/3.1.0/cache/net-ftp-0.1.4.gem | Bin 0 -> 18432 bytes .../ruby/gems/3.1.0/cache/net-imap-0.2.4.gem | Bin 0 -> 39936 bytes .../ruby/gems/3.1.0/cache/net-pop-0.1.1.gem | Bin 0 -> 13824 bytes .../gems/3.1.0/cache/net-smtp-0.3.1.1.gem | Bin 0 -> 15360 bytes .../gems/3.1.0/cache/power_assert-2.0.1.gem | Bin 0 -> 15360 bytes .../lib/ruby/gems/3.1.0/cache/prime-0.1.2.gem | Bin 0 -> 11264 bytes .../lib/ruby/gems/3.1.0/cache/rake-13.0.6.gem | Bin 0 -> 84992 bytes .../lib/ruby/gems/3.1.0/cache/rbs-2.7.0.gem | Bin 0 -> 892416 bytes .../lib/ruby/gems/3.1.0/cache/rexml-3.2.5.gem | Bin 0 -> 93184 bytes .../lib/ruby/gems/3.1.0/cache/rss-0.2.9.gem | Bin 0 -> 106496 bytes .../ruby/gems/3.1.0/cache/test-unit-3.5.3.gem | Bin 0 -> 91648 bytes .../ruby/gems/3.1.0/cache/typeprof-0.21.3.gem | Bin 0 -> 73728 bytes .../ri/Array/cdesc-Array.ri | Bin 0 -> 375 bytes .../ri/Asciidoctor/AbstractBlock/%3c%3c-i.ri | Bin 0 -> 917 bytes .../ri/Asciidoctor/AbstractBlock/alt-i.ri | Bin 0 -> 527 bytes .../ri/Asciidoctor/AbstractBlock/append-i.ri | Bin 0 -> 413 bytes .../AbstractBlock/assign_caption-i.ri | Bin 0 -> 1340 bytes .../AbstractBlock/assign_numeral-i.ri | Bin 0 -> 837 bytes .../Asciidoctor/AbstractBlock/block%3f-i.ri | Bin 0 -> 273 bytes .../Asciidoctor/AbstractBlock/blocks%3f-i.ri | Bin 0 -> 479 bytes .../ri/Asciidoctor/AbstractBlock/blocks-i.ri | 2 + .../ri/Asciidoctor/AbstractBlock/caption-i.ri | 2 + .../AbstractBlock/captioned_title-i.ri | Bin 0 -> 872 bytes .../AbstractBlock/cdesc-AbstractBlock.ri | Bin 0 -> 1316 bytes .../ri/Asciidoctor/AbstractBlock/content-i.ri | Bin 0 -> 454 bytes .../AbstractBlock/content_model-i.ri | 9 + .../Asciidoctor/AbstractBlock/context%3d-i.ri | Bin 0 -> 624 bytes .../ri/Asciidoctor/AbstractBlock/convert-i.ri | 3 + .../ri/Asciidoctor/AbstractBlock/file-i.ri | Bin 0 -> 359 bytes .../ri/Asciidoctor/AbstractBlock/find_by-i.ri | Bin 0 -> 1852 bytes .../AbstractBlock/find_by_internal-i.ri | Bin 0 -> 447 bytes .../Asciidoctor/AbstractBlock/inline%3f-i.ri | Bin 0 -> 275 bytes .../ri/Asciidoctor/AbstractBlock/level-i.ri | 3 + .../ri/Asciidoctor/AbstractBlock/lineno-i.ri | Bin 0 -> 370 bytes .../AbstractBlock/list_marker_keyword-i.ri | Bin 0 -> 700 bytes .../ri/Asciidoctor/AbstractBlock/new-c.ri | Bin 0 -> 294 bytes .../AbstractBlock/next_adjacent_block-i.ri | Bin 0 -> 508 bytes .../Asciidoctor/AbstractBlock/number%3d-i.ri | Bin 0 -> 413 bytes .../ri/Asciidoctor/AbstractBlock/number-i.ri | Bin 0 -> 392 bytes .../ri/Asciidoctor/AbstractBlock/numeral-i.ri | 2 + .../ri/Asciidoctor/AbstractBlock/query-i.ri | Bin 0 -> 333 bytes .../AbstractBlock/reindex_sections-i.ri | Bin 0 -> 750 bytes .../Asciidoctor/AbstractBlock/remove_sub-i.ri | Bin 0 -> 476 bytes .../ri/Asciidoctor/AbstractBlock/render-i.ri | Bin 0 -> 408 bytes .../AbstractBlock/sections%3f-i.ri | Bin 0 -> 636 bytes .../Asciidoctor/AbstractBlock/sections-i.ri | Bin 0 -> 1084 bytes .../AbstractBlock/source_location-i.ri | 2 + .../ri/Asciidoctor/AbstractBlock/style-i.ri | 3 + .../ri/Asciidoctor/AbstractBlock/sub%3f-i.ri | Bin 0 -> 610 bytes .../ri/Asciidoctor/AbstractBlock/subs-i.ri | 2 + .../Asciidoctor/AbstractBlock/title%3d-i.ri | Bin 0 -> 425 bytes .../Asciidoctor/AbstractBlock/title%3f-i.ri | Bin 0 -> 499 bytes .../ri/Asciidoctor/AbstractBlock/title-i.ri | Bin 0 -> 868 bytes .../Asciidoctor/AbstractBlock/xreftext-i.ri | Bin 0 -> 1312 bytes .../ri/Asciidoctor/AbstractNode/add_role-i.ri | Bin 0 -> 466 bytes .../ri/Asciidoctor/AbstractNode/attr%3f-i.ri | Bin 0 -> 1532 bytes .../ri/Asciidoctor/AbstractNode/attr-i.ri | Bin 0 -> 1486 bytes .../Asciidoctor/AbstractNode/attributes-i.ri | 2 + .../ri/Asciidoctor/AbstractNode/block%3f-i.ri | Bin 0 -> 436 bytes .../AbstractNode/cdesc-AbstractNode.ri | Bin 0 -> 1626 bytes .../ri/Asciidoctor/AbstractNode/context-i.ri | 2 + .../Asciidoctor/AbstractNode/converter-i.ri | Bin 0 -> 425 bytes .../ri/Asciidoctor/AbstractNode/document-i.ri | 2 + .../AbstractNode/enabled_options-i.ri | Bin 0 -> 469 bytes .../AbstractNode/generate_data_uri-i.ri | Bin 0 -> 1155 bytes .../generate_data_uri_from_uri-i.ri | Bin 0 -> 1152 bytes .../Asciidoctor/AbstractNode/has_role%3f-i.ri | Bin 0 -> 575 bytes .../ri/Asciidoctor/AbstractNode/icon_uri-i.ri | Bin 0 -> 1198 bytes .../ri/Asciidoctor/AbstractNode/id-i.ri | 2 + .../Asciidoctor/AbstractNode/image_uri-i.ri | Bin 0 -> 1383 bytes .../Asciidoctor/AbstractNode/inline%3f-i.ri | Bin 0 -> 439 bytes .../Asciidoctor/AbstractNode/is_uri%3f-i.ri | Bin 0 -> 556 bytes .../Asciidoctor/AbstractNode/media_uri-i.ri | Bin 0 -> 1039 bytes .../ri/Asciidoctor/AbstractNode/new-c.ri | Bin 0 -> 291 bytes .../Asciidoctor/AbstractNode/node_name-i.ri | 2 + .../AbstractNode/normalize_asset_path-i.ri | Bin 0 -> 640 bytes .../AbstractNode/normalize_system_path-i.ri | Bin 0 -> 1781 bytes .../AbstractNode/normalize_web_path-i.ri | Bin 0 -> 871 bytes .../Asciidoctor/AbstractNode/option%3f-i.ri | Bin 0 -> 748 bytes .../Asciidoctor/AbstractNode/parent%3d-i.ri | Bin 0 -> 518 bytes .../ri/Asciidoctor/AbstractNode/parent-i.ri | 2 + .../Asciidoctor/AbstractNode/read_asset-i.ri | Bin 0 -> 1101 bytes .../AbstractNode/read_contents-i.ri | Bin 0 -> 1805 bytes .../Asciidoctor/AbstractNode/reftext%3f-i.ri | Bin 0 -> 389 bytes .../ri/Asciidoctor/AbstractNode/reftext-i.ri | Bin 0 -> 414 bytes .../Asciidoctor/AbstractNode/remove_attr-i.ri | Bin 0 -> 556 bytes .../Asciidoctor/AbstractNode/remove_role-i.ri | Bin 0 -> 479 bytes .../ri/Asciidoctor/AbstractNode/role%3d-i.ri | Bin 0 -> 582 bytes .../ri/Asciidoctor/AbstractNode/role%3f-i.ri | Bin 0 -> 789 bytes .../ri/Asciidoctor/AbstractNode/role-i.ri | Bin 0 -> 457 bytes .../ri/Asciidoctor/AbstractNode/roles-i.ri | Bin 0 -> 518 bytes .../ri/Asciidoctor/AbstractNode/set_attr-i.ri | Bin 0 -> 841 bytes .../Asciidoctor/AbstractNode/set_option-i.ri | Bin 0 -> 583 bytes .../AbstractNode/update_attributes-i.ri | Bin 0 -> 728 bytes .../AttributeList/cdesc-AttributeList.ri | Bin 0 -> 2839 bytes .../ri/Asciidoctor/AttributeList/new-c.ri | Bin 0 -> 304 bytes .../ri/Asciidoctor/AttributeList/parse-i.ri | Bin 0 -> 292 bytes .../AttributeList/parse_attribute-i.ri | Bin 0 -> 315 bytes .../AttributeList/parse_attribute_value-i.ri | Bin 0 -> 309 bytes .../Asciidoctor/AttributeList/parse_into-i.ri | Bin 0 -> 314 bytes .../ri/Asciidoctor/AttributeList/rekey-c.ri | Bin 0 -> 300 bytes .../ri/Asciidoctor/AttributeList/rekey-i.ri | Bin 0 -> 287 bytes .../Asciidoctor/AttributeList/scan_name-i.ri | Bin 0 -> 280 bytes .../AttributeList/scan_to_delimiter-i.ri | Bin 0 -> 296 bytes .../AttributeList/scan_to_quote-i.ri | Bin 0 -> 293 bytes .../Asciidoctor/AttributeList/skip_blank-i.ri | Bin 0 -> 282 bytes .../AttributeList/skip_delimiter-i.ri | Bin 0 -> 290 bytes .../ri/Asciidoctor/Block/cdesc-Block.ri | Bin 0 -> 1017 bytes .../ri/Asciidoctor/Block/content-i.ri | Bin 0 -> 818 bytes .../ri/Asciidoctor/Block/lines-i.ri | 3 + .../ri/Asciidoctor/Block/new-c.ri | Bin 0 -> 1583 bytes .../ri/Asciidoctor/Block/source-i.ri | Bin 0 -> 483 bytes .../ri/Asciidoctor/Block/to_s-i.ri | Bin 0 -> 244 bytes .../ri/Asciidoctor/Callouts/callout_ids-i.ri | Bin 0 -> 677 bytes .../ri/Asciidoctor/Callouts/cdesc-Callouts.ri | Bin 0 -> 747 bytes .../ri/Asciidoctor/Callouts/current_list-i.ri | Bin 0 -> 483 bytes .../Callouts/generate_callout_id-i.ri | Bin 0 -> 691 bytes .../Callouts/generate_next_callout_id-i.ri | Bin 0 -> 493 bytes .../ri/Asciidoctor/Callouts/new-c.ri | Bin 0 -> 252 bytes .../ri/Asciidoctor/Callouts/next_list-i.ri | Bin 0 -> 414 bytes .../ri/Asciidoctor/Callouts/read_next_id-i.ri | Bin 0 -> 678 bytes .../ri/Asciidoctor/Callouts/register-i.ri | Bin 0 -> 1022 bytes .../ri/Asciidoctor/Callouts/rewind-i.ri | Bin 0 -> 470 bytes .../Asciidoctor/Cli/Invoker/cdesc-Invoker.ri | Bin 0 -> 803 bytes .../ri/Asciidoctor/Cli/Invoker/code-i.ri | Bin 0 -> 265 bytes .../ri/Asciidoctor/Cli/Invoker/document-i.ri | Bin 0 -> 267 bytes .../ri/Asciidoctor/Cli/Invoker/documents-i.ri | Bin 0 -> 275 bytes .../ri/Asciidoctor/Cli/Invoker/invoke%21-i.ri | Bin 0 -> 271 bytes .../ri/Asciidoctor/Cli/Invoker/new-c.ri | Bin 0 -> 266 bytes .../ri/Asciidoctor/Cli/Invoker/options-i.ri | Bin 0 -> 271 bytes .../Asciidoctor/Cli/Invoker/read_error-i.ri | Bin 0 -> 271 bytes .../Asciidoctor/Cli/Invoker/read_output-i.ri | Bin 0 -> 273 bytes .../Cli/Invoker/redirect_streams-i.ri | Bin 0 -> 297 bytes .../Cli/Invoker/reset_streams-i.ri | Bin 0 -> 277 bytes .../Asciidoctor/Cli/Options/cdesc-Options.ri | Bin 0 -> 630 bytes .../ri/Asciidoctor/Cli/Options/new-c.ri | Bin 0 -> 270 bytes .../ri/Asciidoctor/Cli/Options/parse%21-c.ri | Bin 0 -> 268 bytes .../ri/Asciidoctor/Cli/Options/parse%21-i.ri | Bin 0 -> 267 bytes .../Cli/Options/print_version-i.ri | Bin 0 -> 289 bytes .../ri/Asciidoctor/Cli/cdesc-Cli.ri | Bin 0 -> 595 bytes .../Compliance/cdesc-Compliance.ri | Bin 0 -> 556 bytes .../ri/Asciidoctor/Compliance/define-c.ri | Bin 0 -> 360 bytes .../ri/Asciidoctor/Compliance/keys-c.ri | Bin 0 -> 251 bytes .../Converter/BackendTraits/backend_info-i.ri | Bin 0 -> 376 bytes .../BackendTraits/backend_traits-i.ri | Bin 0 -> 349 bytes .../Converter/BackendTraits/basebackend-i.ri | Bin 0 -> 301 bytes .../BackendTraits/cdesc-BackendTraits.ri | Bin 0 -> 721 bytes .../BackendTraits/derive_backend_traits-c.ri | Bin 0 -> 433 bytes .../Converter/BackendTraits/filetype-i.ri | Bin 0 -> 295 bytes .../Converter/BackendTraits/htmlsyntax-i.ri | Bin 0 -> 299 bytes .../BackendTraits/init_backend_traits-i.ri | Bin 0 -> 317 bytes .../BackendTraits/outfilesuffix-i.ri | Bin 0 -> 305 bytes .../BackendTraits/supports_templates%3f-i.ri | Bin 0 -> 306 bytes .../BackendTraits/supports_templates-i.ri | Bin 0 -> 316 bytes .../Asciidoctor/Converter/Base/cdesc-Base.ri | Bin 0 -> 819 bytes .../Converter/Base/content_only-i.ri | Bin 0 -> 465 bytes .../Asciidoctor/Converter/Base/convert-i.ri | Bin 0 -> 1088 bytes .../Converter/Base/handles%3f-i.ri | Bin 0 -> 274 bytes .../ri/Asciidoctor/Converter/Base/skip-i.ri | Bin 0 -> 405 bytes .../cdesc-CompositeConverter.ri | Bin 0 -> 880 bytes .../Converter/CompositeConverter/convert-i.ri | Bin 0 -> 1010 bytes .../CompositeConverter/converter_for-i.ri | Bin 0 -> 500 bytes .../CompositeConverter/converters-i.ri | 2 + .../CompositeConverter/find_converter-i.ri | Bin 0 -> 550 bytes .../Converter/CompositeConverter/new-c.ri | Bin 0 -> 342 bytes .../Converter/Config/cdesc-Config.ri | Bin 0 -> 619 bytes .../Converter/Config/register_for-i.ri | Bin 0 -> 598 bytes .../CustomFactory/cdesc-CustomFactory.ri | Bin 0 -> 579 bytes .../Converter/CustomFactory/new-c.ri | Bin 0 -> 293 bytes .../Converter/CustomFactory/registry-i.ri | Bin 0 -> 296 bytes .../CustomFactory/unregister_all-i.ri | Bin 0 -> 497 bytes .../Converter/DefaultFactory/catch_all-i.ri | Bin 0 -> 289 bytes .../DefaultFactory/cdesc-DefaultFactory.ri | Bin 0 -> 1242 bytes .../Converter/DefaultFactory/for-i.ri | Bin 0 -> 284 bytes .../Converter/DefaultFactory/register-i.ri | Bin 0 -> 307 bytes .../Converter/DefaultFactory/registry-i.ri | Bin 0 -> 287 bytes .../DefaultFactory/unregister_all-i.ri | Bin 0 -> 299 bytes .../DefaultFactoryProxy/catch_all-i.ri | Bin 0 -> 297 bytes .../cdesc-DefaultFactoryProxy.ri | Bin 0 -> 579 bytes .../Converter/DefaultFactoryProxy/for-i.ri | Bin 0 -> 292 bytes .../DefaultFactoryProxy/unregister_all-i.ri | Bin 0 -> 307 bytes .../asciimath_available%3f-i.ri | Bin 0 -> 325 bytes .../DocBook5Converter/author_tag-i.ri | Bin 0 -> 316 bytes .../DocBook5Converter/blockquote_tag-i.ri | Bin 0 -> 339 bytes .../cdesc-DocBook5Converter.ri | Bin 0 -> 2830 bytes .../DocBook5Converter/common_attributes-i.ri | Bin 0 -> 348 bytes .../DocBook5Converter/convert_admonition-i.ri | Bin 0 -> 324 bytes .../DocBook5Converter/convert_colist-i.ri | Bin 0 -> 316 bytes .../DocBook5Converter/convert_dlist-i.ri | Bin 0 -> 314 bytes .../DocBook5Converter/convert_document-i.ri | Bin 0 -> 320 bytes .../DocBook5Converter/convert_embedded-i.ri | Bin 0 -> 320 bytes .../DocBook5Converter/convert_example-i.ri | Bin 0 -> 318 bytes .../convert_floating_title-i.ri | Bin 0 -> 332 bytes .../DocBook5Converter/convert_image-i.ri | Bin 0 -> 314 bytes .../convert_inline_anchor-i.ri | Bin 0 -> 330 bytes .../convert_inline_break-i.ri | Bin 0 -> 328 bytes .../convert_inline_button-i.ri | Bin 0 -> 330 bytes .../convert_inline_callout-i.ri | Bin 0 -> 332 bytes .../convert_inline_footnote-i.ri | Bin 0 -> 334 bytes .../convert_inline_image-i.ri | Bin 0 -> 328 bytes .../convert_inline_indexterm-i.ri | Bin 0 -> 336 bytes .../DocBook5Converter/convert_inline_kbd-i.ri | Bin 0 -> 324 bytes .../convert_inline_menu-i.ri | Bin 0 -> 326 bytes .../convert_inline_quoted-i.ri | Bin 0 -> 330 bytes .../DocBook5Converter/convert_listing-i.ri | Bin 0 -> 318 bytes .../DocBook5Converter/convert_literal-i.ri | Bin 0 -> 318 bytes .../DocBook5Converter/convert_olist-i.ri | Bin 0 -> 314 bytes .../DocBook5Converter/convert_open-i.ri | Bin 0 -> 312 bytes .../DocBook5Converter/convert_page_break-i.ri | Bin 0 -> 324 bytes .../DocBook5Converter/convert_paragraph-i.ri | Bin 0 -> 322 bytes .../DocBook5Converter/convert_preamble-i.ri | Bin 0 -> 320 bytes .../DocBook5Converter/convert_quote-i.ri | Bin 0 -> 314 bytes .../DocBook5Converter/convert_section-i.ri | Bin 0 -> 318 bytes .../DocBook5Converter/convert_sidebar-i.ri | Bin 0 -> 318 bytes .../DocBook5Converter/convert_stem-i.ri | Bin 0 -> 312 bytes .../DocBook5Converter/convert_table-i.ri | Bin 0 -> 314 bytes .../convert_thematic_break-i.ri | Bin 0 -> 332 bytes .../DocBook5Converter/convert_ulist-i.ri | Bin 0 -> 314 bytes .../DocBook5Converter/convert_verse-i.ri | Bin 0 -> 314 bytes .../DocBook5Converter/cover_tag-i.ri | Bin 0 -> 337 bytes .../DocBook5Converter/document_info_tag-i.ri | Bin 0 -> 332 bytes .../DocBook5Converter/enclose_content-i.ri | Bin 0 -> 414 bytes .../DocBook5Converter/extract_abstract-i.ri | Bin 0 -> 335 bytes .../DocBook5Converter/find_root_abstract-i.ri | Bin 0 -> 324 bytes .../generate_document_id-i.ri | Bin 0 -> 328 bytes .../DocBook5Converter/get_root_document-i.ri | Bin 0 -> 323 bytes .../image_size_attributes-i.ri | Bin 0 -> 337 bytes .../DocBook5Converter/load_asciimath-i.ri | Bin 0 -> 313 bytes .../Converter/DocBook5Converter/new-c.ri | Bin 0 -> 309 bytes .../DocBook5Converter/restore_abstract-i.ri | Bin 0 -> 325 bytes .../DocBook5Converter/title_tag-i.ri | Bin 0 -> 324 bytes .../Converter/Factory/cdesc-Factory.ri | Bin 0 -> 1468 bytes .../Converter/Factory/converters-i.ri | Bin 0 -> 405 bytes .../Asciidoctor/Converter/Factory/create-c.ri | Bin 0 -> 427 bytes .../Asciidoctor/Converter/Factory/create-i.ri | Bin 0 -> 1593 bytes .../Converter/Factory/default-c.ri | Bin 0 -> 395 bytes .../ri/Asciidoctor/Converter/Factory/for-i.ri | Bin 0 -> 599 bytes .../ri/Asciidoctor/Converter/Factory/new-c.ri | Bin 0 -> 1185 bytes .../Converter/Factory/register-i.ri | Bin 0 -> 783 bytes .../Converter/Factory/registry-i.ri | Bin 0 -> 273 bytes .../append_boolean_attribute-i.ri | Bin 0 -> 333 bytes .../append_link_constraint_attrs-i.ri | Bin 0 -> 348 bytes .../Html5Converter/cdesc-Html5Converter.ri | Bin 0 -> 2767 bytes .../Converter/Html5Converter/convert-i.ri | Bin 0 -> 333 bytes .../Html5Converter/convert_admonition-i.ri | Bin 0 -> 315 bytes .../Html5Converter/convert_audio-i.ri | Bin 0 -> 305 bytes .../Html5Converter/convert_colist-i.ri | Bin 0 -> 307 bytes .../Html5Converter/convert_dlist-i.ri | Bin 0 -> 305 bytes .../Html5Converter/convert_document-i.ri | Bin 0 -> 311 bytes .../Html5Converter/convert_embedded-i.ri | Bin 0 -> 311 bytes .../Html5Converter/convert_example-i.ri | Bin 0 -> 309 bytes .../convert_floating_title-i.ri | Bin 0 -> 323 bytes .../Html5Converter/convert_image-i.ri | Bin 0 -> 305 bytes .../Html5Converter/convert_inline_anchor-i.ri | Bin 0 -> 321 bytes .../Html5Converter/convert_inline_break-i.ri | Bin 0 -> 319 bytes .../Html5Converter/convert_inline_button-i.ri | Bin 0 -> 321 bytes .../convert_inline_callout-i.ri | Bin 0 -> 323 bytes .../convert_inline_footnote-i.ri | Bin 0 -> 325 bytes .../Html5Converter/convert_inline_image-i.ri | Bin 0 -> 319 bytes .../convert_inline_indexterm-i.ri | Bin 0 -> 327 bytes .../Html5Converter/convert_inline_kbd-i.ri | Bin 0 -> 315 bytes .../Html5Converter/convert_inline_menu-i.ri | Bin 0 -> 317 bytes .../Html5Converter/convert_inline_quoted-i.ri | Bin 0 -> 321 bytes .../Html5Converter/convert_listing-i.ri | Bin 0 -> 309 bytes .../Html5Converter/convert_literal-i.ri | Bin 0 -> 309 bytes .../Html5Converter/convert_olist-i.ri | Bin 0 -> 305 bytes .../Html5Converter/convert_open-i.ri | Bin 0 -> 303 bytes .../Html5Converter/convert_outline-i.ri | Bin 0 -> 320 bytes .../Html5Converter/convert_page_break-i.ri | Bin 0 -> 315 bytes .../Html5Converter/convert_paragraph-i.ri | Bin 0 -> 313 bytes .../Html5Converter/convert_preamble-i.ri | Bin 0 -> 311 bytes .../Html5Converter/convert_quote-i.ri | Bin 0 -> 305 bytes .../Html5Converter/convert_section-i.ri | Bin 0 -> 309 bytes .../Html5Converter/convert_sidebar-i.ri | Bin 0 -> 309 bytes .../Html5Converter/convert_stem-i.ri | Bin 0 -> 303 bytes .../Html5Converter/convert_table-i.ri | Bin 0 -> 305 bytes .../convert_thematic_break-i.ri | Bin 0 -> 323 bytes .../Converter/Html5Converter/convert_toc-i.ri | Bin 0 -> 301 bytes .../Html5Converter/convert_ulist-i.ri | Bin 0 -> 305 bytes .../Html5Converter/convert_verse-i.ri | Bin 0 -> 305 bytes .../Html5Converter/convert_video-i.ri | Bin 0 -> 305 bytes .../encode_attribute_value-i.ri | Bin 0 -> 323 bytes .../generate_manname_section-i.ri | Bin 0 -> 328 bytes .../Html5Converter/get_root_document-i.ri | Bin 0 -> 314 bytes .../Html5Converter/method_missing-i.ri | Bin 0 -> 420 bytes .../Converter/Html5Converter/new-c.ri | Bin 0 -> 300 bytes .../Html5Converter/read_svg_contents-i.ri | Bin 0 -> 410 bytes .../Html5Converter/respond_to_missing%3f-i.ri | Bin 0 -> 326 bytes .../ManPageConverter/append_footnotes-i.ri | Bin 0 -> 326 bytes .../cdesc-ManPageConverter.ri | Bin 0 -> 4080 bytes .../ManPageConverter/convert_admonition-i.ri | Bin 0 -> 321 bytes .../ManPageConverter/convert_colist-i.ri | Bin 0 -> 313 bytes .../ManPageConverter/convert_dlist-i.ri | Bin 0 -> 394 bytes .../ManPageConverter/convert_document-i.ri | Bin 0 -> 317 bytes .../ManPageConverter/convert_embedded-i.ri | Bin 0 -> 417 bytes .../ManPageConverter/convert_example-i.ri | Bin 0 -> 315 bytes .../convert_floating_title-i.ri | Bin 0 -> 329 bytes .../ManPageConverter/convert_image-i.ri | Bin 0 -> 311 bytes .../convert_inline_anchor-i.ri | Bin 0 -> 327 bytes .../convert_inline_break-i.ri | Bin 0 -> 325 bytes .../convert_inline_button-i.ri | Bin 0 -> 327 bytes .../convert_inline_callout-i.ri | Bin 0 -> 329 bytes .../convert_inline_footnote-i.ri | Bin 0 -> 331 bytes .../convert_inline_image-i.ri | Bin 0 -> 325 bytes .../convert_inline_indexterm-i.ri | Bin 0 -> 333 bytes .../ManPageConverter/convert_inline_kbd-i.ri | Bin 0 -> 321 bytes .../ManPageConverter/convert_inline_menu-i.ri | Bin 0 -> 323 bytes .../convert_inline_quoted-i.ri | Bin 0 -> 438 bytes .../ManPageConverter/convert_listing-i.ri | Bin 0 -> 315 bytes .../ManPageConverter/convert_literal-i.ri | Bin 0 -> 315 bytes .../ManPageConverter/convert_olist-i.ri | Bin 0 -> 311 bytes .../ManPageConverter/convert_open-i.ri | Bin 0 -> 309 bytes .../ManPageConverter/convert_page_break-i.ri | Bin 0 -> 321 bytes .../ManPageConverter/convert_paragraph-i.ri | Bin 0 -> 319 bytes .../ManPageConverter/convert_quote-i.ri | Bin 0 -> 311 bytes .../ManPageConverter/convert_section-i.ri | Bin 0 -> 315 bytes .../ManPageConverter/convert_sidebar-i.ri | Bin 0 -> 315 bytes .../ManPageConverter/convert_stem-i.ri | Bin 0 -> 309 bytes .../ManPageConverter/convert_table-i.ri | Bin 0 -> 762 bytes .../convert_thematic_break-i.ri | Bin 0 -> 329 bytes .../ManPageConverter/convert_ulist-i.ri | Bin 0 -> 311 bytes .../ManPageConverter/convert_verse-i.ri | Bin 0 -> 311 bytes .../ManPageConverter/convert_video-i.ri | Bin 0 -> 311 bytes .../ManPageConverter/enclose_content-i.ri | Bin 0 -> 316 bytes .../ManPageConverter/get_root_document-i.ri | Bin 0 -> 320 bytes .../Converter/ManPageConverter/manify-i.ri | Bin 0 -> 1156 bytes .../Converter/ManPageConverter/new-c.ri | Bin 0 -> 306 bytes .../ManPageConverter/uppercase_pcdata-i.ri | Bin 0 -> 320 bytes .../write_alternate_pages-c.ri | Bin 0 -> 351 bytes .../Converter/TemplateConverter/caches-c.ri | Bin 0 -> 309 bytes .../cdesc-TemplateConverter.ri | Bin 0 -> 2462 bytes .../TemplateConverter/clear_caches-c.ri | Bin 0 -> 309 bytes .../Converter/TemplateConverter/convert-i.ri | Bin 0 -> 1163 bytes .../TemplateConverter/handles%3f-i.ri | Bin 0 -> 627 bytes .../TemplateConverter/load_eruby-i.ri | Bin 0 -> 644 bytes .../Converter/TemplateConverter/new-c.ri | Bin 0 -> 324 bytes .../Converter/TemplateConverter/register-i.ri | Bin 0 -> 587 bytes .../Converter/TemplateConverter/scan-i.ri | Bin 0 -> 611 bytes .../Converter/TemplateConverter/scan_dir-i.ri | Bin 0 -> 595 bytes .../TemplateConverter/templates-i.ri | Bin 0 -> 507 bytes .../ri/Asciidoctor/Converter/backend-i.ri | 2 + .../Asciidoctor/Converter/cdesc-Converter.ri | Bin 0 -> 2773 bytes .../ri/Asciidoctor/Converter/convert-i.ri | Bin 0 -> 1049 bytes .../Converter/derive_backend_traits-c.ri | Bin 0 -> 758 bytes .../ri/Asciidoctor/Converter/handles%3f-i.ri | Bin 0 -> 762 bytes .../ri/Asciidoctor/Converter/included-c.ri | Bin 0 -> 625 bytes .../ri/Asciidoctor/Converter/new-c.ri | Bin 0 -> 594 bytes .../ri/Asciidoctor/Document/%3c%3c-i.ri | Bin 0 -> 549 bytes .../AttributeEntry/cdesc-AttributeEntry.ri | Bin 0 -> 575 bytes .../Document/AttributeEntry/name-i.ri | Bin 0 -> 286 bytes .../Document/AttributeEntry/negate-i.ri | Bin 0 -> 290 bytes .../Document/AttributeEntry/new-c.ri | Bin 0 -> 299 bytes .../Document/AttributeEntry/save_to-i.ri | Bin 0 -> 297 bytes .../Document/AttributeEntry/value-i.ri | Bin 0 -> 288 bytes .../Asciidoctor/Document/Title/cdesc-Title.ri | Bin 0 -> 729 bytes .../Asciidoctor/Document/Title/combined-i.ri | Bin 0 -> 276 bytes .../ri/Asciidoctor/Document/Title/main-i.ri | Bin 0 -> 268 bytes .../ri/Asciidoctor/Document/Title/new-c.ri | Bin 0 -> 270 bytes .../Document/Title/sanitized%3f-i.ri | Bin 0 -> 269 bytes .../Document/Title/subtitle%3f-i.ri | Bin 0 -> 267 bytes .../Asciidoctor/Document/Title/subtitle-i.ri | Bin 0 -> 276 bytes .../ri/Asciidoctor/Document/Title/title-i.ri | Bin 0 -> 270 bytes .../ri/Asciidoctor/Document/Title/to_s-i.ri | Bin 0 -> 257 bytes .../Document/apply_attribute_value_subs-i.ri | Bin 0 -> 894 bytes .../Document/attribute_locked%3f-i.ri | Bin 0 -> 556 bytes .../ri/Asciidoctor/Document/author-i.ri | Bin 0 -> 454 bytes .../ri/Asciidoctor/Document/authors-i.ri | Bin 0 -> 573 bytes .../ri/Asciidoctor/Document/backend-i.ri | 2 + .../ri/Asciidoctor/Document/base_dir-i.ri | Bin 0 -> 519 bytes .../Asciidoctor/Document/basebackend%3f-i.ri | Bin 0 -> 273 bytes .../ri/Asciidoctor/Document/callouts-i.ri | Bin 0 -> 261 bytes .../ri/Asciidoctor/Document/catalog-i.ri | 2 + .../ri/Asciidoctor/Document/cdesc-Document.ri | Bin 0 -> 6153 bytes .../Document/clear_playback_attributes-i.ri | Bin 0 -> 395 bytes .../ri/Asciidoctor/Document/compat_mode-i.ri | Bin 0 -> 788 bytes .../ri/Asciidoctor/Document/content-i.ri | Bin 0 -> 259 bytes .../ri/Asciidoctor/Document/convert-i.ri | 3 + .../ri/Asciidoctor/Document/converter-i.ri | 2 + .../ri/Asciidoctor/Document/counter-i.ri | Bin 0 -> 602 bytes .../Document/counter_increment-i.ri | Bin 0 -> 493 bytes .../ri/Asciidoctor/Document/counters-i.ri | 2 + .../Document/create_converter-i.ri | Bin 0 -> 419 bytes .../Document/delete_attribute-i.ri | Bin 0 -> 675 bytes .../ri/Asciidoctor/Document/docinfo-i.ri | Bin 0 -> 1073 bytes .../Document/docinfo_processors%3f-i.ri | Bin 0 -> 299 bytes .../ri/Asciidoctor/Document/doctitle-i.ri | Bin 0 -> 1286 bytes .../ri/Asciidoctor/Document/doctype-i.ri | 2 + .../ri/Asciidoctor/Document/embedded%3f-i.ri | Bin 0 -> 263 bytes .../Asciidoctor/Document/extensions%3f-i.ri | Bin 0 -> 267 bytes .../ri/Asciidoctor/Document/extensions-i.ri | 2 + .../Document/fill_datetime_attributes-i.ri | Bin 0 -> 582 bytes .../Asciidoctor/Document/finalize_header-i.ri | Bin 0 -> 472 bytes .../Asciidoctor/Document/first_section-i.ri | Bin 0 -> 271 bytes .../ri/Asciidoctor/Document/footnotes%3f-i.ri | Bin 0 -> 265 bytes .../ri/Asciidoctor/Document/footnotes-i.ri | Bin 0 -> 263 bytes .../Asciidoctor/Document/has_header%3f-i.ri | Bin 0 -> 311 bytes .../ri/Asciidoctor/Document/header%3f-i.ri | Bin 0 -> 294 bytes .../ri/Asciidoctor/Document/header-i.ri | 2 + .../Document/increment_and_store_counter-i.ri | Bin 0 -> 823 bytes .../Asciidoctor/Document/limit_bytesize-i.ri | Bin 0 -> 680 bytes .../ri/Asciidoctor/Document/name-i.ri | Bin 0 -> 307 bytes .../ri/Asciidoctor/Document/nested%3f-i.ri | Bin 0 -> 259 bytes .../ri/Asciidoctor/Document/new-c.ri | Bin 0 -> 930 bytes .../ri/Asciidoctor/Document/nofooter-i.ri | Bin 0 -> 261 bytes .../ri/Asciidoctor/Document/noheader-i.ri | Bin 0 -> 261 bytes .../ri/Asciidoctor/Document/notitle-i.ri | Bin 0 -> 259 bytes .../ri/Asciidoctor/Document/options-i.ri | 2 + .../Asciidoctor/Document/outfilesuffix-i.ri | 2 + .../Asciidoctor/Document/parent_document-i.ri | 2 + .../ri/Asciidoctor/Document/parse-i.ri | Bin 0 -> 990 bytes .../ri/Asciidoctor/Document/parsed%3f-i.ri | Bin 0 -> 371 bytes .../Asciidoctor/Document/path_resolver-i.ri | 2 + .../Document/playback_attributes-i.ri | Bin 0 -> 392 bytes .../ri/Asciidoctor/Document/reader-i.ri | 2 + .../ri/Asciidoctor/Document/references-i.ri | 2 + .../ri/Asciidoctor/Document/register-i.ri | Bin 0 -> 362 bytes .../ri/Asciidoctor/Document/render-i.ri | Bin 0 -> 391 bytes .../Document/resolve_docinfo_subs-i.ri | Bin 0 -> 681 bytes .../ri/Asciidoctor/Document/resolve_id-i.ri | Bin 0 -> 699 bytes .../Document/restore_attributes-i.ri | Bin 0 -> 402 bytes .../ri/Asciidoctor/Document/revdate-i.ri | Bin 0 -> 472 bytes .../ri/Asciidoctor/Document/safe-i.ri | Bin 0 -> 2399 bytes .../Asciidoctor/Document/save_attributes-i.ri | Bin 0 -> 518 bytes .../ri/Asciidoctor/Document/sections%3f-i.ri | Bin 0 -> 488 bytes .../Asciidoctor/Document/set_attribute-i.ri | Bin 0 -> 980 bytes .../Document/set_header_attribute-i.ri | Bin 0 -> 1020 bytes .../ri/Asciidoctor/Document/source-i.ri | Bin 0 -> 342 bytes .../ri/Asciidoctor/Document/source_lines-i.ri | Bin 0 -> 360 bytes .../ri/Asciidoctor/Document/sourcemap-i.ri | 2 + .../Document/syntax_highlighter-i.ri | 2 + .../ri/Asciidoctor/Document/title%3d-i.ri | Bin 0 -> 644 bytes .../ri/Asciidoctor/Document/title-i.ri | Bin 0 -> 457 bytes .../ri/Asciidoctor/Document/to_s-i.ri | Bin 0 -> 253 bytes .../Document/update_backend_attributes-i.ri | Bin 0 -> 707 bytes .../Document/update_doctype_attributes-i.ri | Bin 0 -> 538 bytes .../ri/Asciidoctor/Document/write-i.ri | Bin 0 -> 980 bytes .../ri/Asciidoctor/Document/xreftext-i.ri | Bin 0 -> 276 bytes .../cdesc-BlockMacroProcessor.ri | Bin 0 -> 1214 bytes .../Extensions/BlockMacroProcessor/name-i.ri | Bin 0 -> 289 bytes .../BlockProcessor/cdesc-BlockProcessor.ri | Bin 0 -> 2716 bytes .../Extensions/BlockProcessor/name-i.ri | Bin 0 -> 293 bytes .../Extensions/BlockProcessor/new-c.ri | Bin 0 -> 301 bytes .../Extensions/BlockProcessor/process-i.ri | Bin 0 -> 311 bytes .../Extensions/BlockProcessorDsl/bind_to-i.ri | Bin 0 -> 364 bytes .../cdesc-BlockProcessorDsl.ri | Bin 0 -> 602 bytes .../BlockProcessorDsl/contexts-i.ri | Bin 0 -> 400 bytes .../BlockProcessorDsl/on_context-i.ri | Bin 0 -> 370 bytes .../BlockProcessorDsl/on_contexts-i.ri | Bin 0 -> 372 bytes .../Asciidoctor/Extensions/DSL/cdesc-DSL.ri | Bin 0 -> 606 bytes .../ri/Asciidoctor/Extensions/DSL/format-i.ri | Bin 0 -> 435 bytes .../ri/Asciidoctor/Extensions/DSL/match-i.ri | Bin 0 -> 286 bytes .../Extensions/DSL/match_format-i.ri | Bin 0 -> 350 bytes .../Extensions/DSL/using_format-i.ri | Bin 0 -> 425 bytes .../cdesc-DocinfoProcessor.ri | Bin 0 -> 1177 bytes .../Extensions/DocinfoProcessor/new-c.ri | Bin 0 -> 293 bytes .../Extensions/DocinfoProcessor/process-i.ri | Bin 0 -> 297 bytes .../DocinfoProcessorDsl/at_location-i.ri | Bin 0 -> 309 bytes .../cdesc-DocinfoProcessorDsl.ri | Bin 0 -> 550 bytes .../cdesc-DocumentProcessorDsl.ri | Bin 0 -> 539 bytes .../DocumentProcessorDsl/prefer-i.ri | Bin 0 -> 296 bytes .../Extensions/Extension/cdesc-Extension.ri | Bin 0 -> 1121 bytes .../Extensions/Extension/config-i.ri | Bin 0 -> 286 bytes .../Extensions/Extension/instance-i.ri | Bin 0 -> 290 bytes .../Extensions/Extension/kind-i.ri | Bin 0 -> 282 bytes .../Asciidoctor/Extensions/Extension/new-c.ri | Bin 0 -> 290 bytes .../Extensions/Group/activate-i.ri | Bin 0 -> 277 bytes .../Extensions/Group/cdesc-Group.ri | Bin 0 -> 932 bytes .../Extensions/Group/register-c.ri | Bin 0 -> 280 bytes .../cdesc-IncludeProcessor.ri | Bin 0 -> 1274 bytes .../IncludeProcessor/handles%3f-i.ri | Bin 0 -> 297 bytes .../Extensions/IncludeProcessor/process-i.ri | Bin 0 -> 325 bytes .../cdesc-IncludeProcessorDsl.ri | Bin 0 -> 547 bytes .../IncludeProcessorDsl/handles%3f-i.ri | Bin 0 -> 311 bytes .../cdesc-InlineMacroProcessor.ri | Bin 0 -> 997 bytes .../InlineMacroProcessor/regexp-i.ri | Bin 0 -> 459 bytes .../InlineMacroProcessor/resolve_regexp-i.ri | Bin 0 -> 323 bytes .../cdesc-InlineMacroProcessorDsl.ri | Bin 0 -> 612 bytes .../InlineMacroProcessorDsl/format-i.ri | Bin 0 -> 454 bytes .../InlineMacroProcessorDsl/match-i.ri | Bin 0 -> 305 bytes .../InlineMacroProcessorDsl/match_format-i.ri | Bin 0 -> 389 bytes .../InlineMacroProcessorDsl/using_format-i.ri | Bin 0 -> 464 bytes .../MacroProcessor/cdesc-MacroProcessor.ri | Bin 0 -> 570 bytes .../Extensions/MacroProcessor/name-i.ri | Bin 0 -> 293 bytes .../Extensions/MacroProcessor/new-c.ri | Bin 0 -> 301 bytes .../Extensions/MacroProcessor/process-i.ri | Bin 0 -> 311 bytes .../cdesc-MacroProcessorDsl.ri | Bin 0 -> 581 bytes .../MacroProcessorDsl/resolve_attributes-i.ri | Bin 0 -> 444 bytes .../resolves_attributes-i.ri | Bin 0 -> 479 bytes .../Postprocessor/cdesc-Postprocessor.ri | Bin 0 -> 1561 bytes .../Extensions/Postprocessor/process-i.ri | Bin 0 -> 299 bytes .../Preprocessor/cdesc-Preprocessor.ri | Bin 0 -> 1516 bytes .../Extensions/Preprocessor/process-i.ri | Bin 0 -> 297 bytes .../Extensions/Processor/cdesc-Processor.ri | Bin 0 -> 1617 bytes .../Extensions/Processor/config-c.ri | Bin 0 -> 446 bytes .../Extensions/Processor/config-i.ri | 2 + .../Extensions/Processor/create_block-i.ri | Bin 0 -> 326 bytes .../Processor/create_image_block-i.ri | Bin 0 -> 957 bytes .../Extensions/Processor/create_inline-i.ri | Bin 0 -> 319 bytes .../Extensions/Processor/create_list-i.ri | Bin 0 -> 752 bytes .../Processor/create_list_item-i.ri | Bin 0 -> 641 bytes .../Extensions/Processor/create_section-i.ri | Bin 0 -> 1437 bytes .../Extensions/Processor/enable_dsl-c.ri | Bin 0 -> 719 bytes .../Asciidoctor/Extensions/Processor/new-c.ri | Bin 0 -> 279 bytes .../Extensions/Processor/option-c.ri | Bin 0 -> 614 bytes .../Processor/parse_attributes-i.ri | Bin 0 -> 1015 bytes .../Extensions/Processor/parse_content-i.ri | Bin 0 -> 531 bytes .../Extensions/Processor/process-i.ri | Bin 0 -> 280 bytes .../Extensions/Processor/update_config-i.ri | Bin 0 -> 293 bytes .../Extensions/Processor/use_dsl-c.ri | Bin 0 -> 336 bytes .../ProcessorDsl/cdesc-ProcessorDsl.ri | Bin 0 -> 762 bytes .../Extensions/ProcessorDsl/option-i.ri | Bin 0 -> 290 bytes .../Extensions/ProcessorDsl/process-i.ri | Bin 0 -> 295 bytes .../ProcessorDsl/process_block_given%3f-i.ri | Bin 0 -> 308 bytes .../cdesc-ProcessorExtension.ri | Bin 0 -> 846 bytes .../Extensions/ProcessorExtension/new-c.ri | Bin 0 -> 322 bytes .../ProcessorExtension/process_method-i.ri | Bin 0 -> 320 bytes .../Extensions/Registry/activate-i.ri | Bin 0 -> 614 bytes .../Registry/add_document_processor-i.ri | Bin 0 -> 337 bytes .../Registry/add_syntax_processor-i.ri | Bin 0 -> 333 bytes .../Extensions/Registry/as_symbol-i.ri | Bin 0 -> 282 bytes .../Extensions/Registry/block-i.ri | Bin 0 -> 2616 bytes .../Extensions/Registry/block_macro-i.ri | Bin 0 -> 2629 bytes .../Extensions/Registry/block_macros%3f-i.ri | Bin 0 -> 535 bytes .../Extensions/Registry/blocks%3f-i.ri | Bin 0 -> 513 bytes .../Extensions/Registry/cdesc-Registry.ri | Bin 0 -> 1875 bytes .../Registry/docinfo_processor-i.ri | Bin 0 -> 1771 bytes .../Registry/docinfo_processors%3f-i.ri | Bin 0 -> 678 bytes .../Registry/docinfo_processors-i.ri | Bin 0 -> 676 bytes .../Extensions/Registry/document-i.ri | 2 + .../Registry/find_block_extension-i.ri | Bin 0 -> 849 bytes .../Registry/find_block_macro_extension-i.ri | Bin 0 -> 893 bytes .../Registry/find_inline_macro_extension-i.ri | Bin 0 -> 901 bytes .../Extensions/Registry/groups-i.ri | 2 + .../Registry/include_processor-i.ri | Bin 0 -> 1679 bytes .../Registry/include_processors%3f-i.ri | Bin 0 -> 541 bytes .../Registry/include_processors-i.ri | Bin 0 -> 539 bytes .../Extensions/Registry/inline_macro-i.ri | Bin 0 -> 2693 bytes .../Extensions/Registry/inline_macros%3f-i.ri | Bin 0 -> 540 bytes .../Extensions/Registry/inline_macros-i.ri | Bin 0 -> 661 bytes .../Asciidoctor/Extensions/Registry/new-c.ri | Bin 0 -> 277 bytes .../Extensions/Registry/postprocessor-i.ri | Bin 0 -> 1637 bytes .../Registry/postprocessors%3f-i.ri | Bin 0 -> 527 bytes .../Extensions/Registry/postprocessors-i.ri | Bin 0 -> 517 bytes .../Extensions/Registry/prefer-i.ri | Bin 0 -> 784 bytes .../Extensions/Registry/preprocessor-i.ri | Bin 0 -> 1620 bytes .../Extensions/Registry/preprocessors%3f-i.ri | Bin 0 -> 523 bytes .../Extensions/Registry/preprocessors-i.ri | Bin 0 -> 514 bytes .../Registry/registered_for_block%3f-i.ri | Bin 0 -> 803 bytes .../registered_for_block_macro%3f-i.ri | Bin 0 -> 873 bytes .../registered_for_inline_macro%3f-i.ri | Bin 0 -> 880 bytes .../Extensions/Registry/reset-i.ri | Bin 0 -> 270 bytes .../Extensions/Registry/resolve_args-i.ri | Bin 0 -> 296 bytes .../Extensions/Registry/tree_processor-i.ri | Bin 0 -> 1733 bytes .../Registry/tree_processors%3f-i.ri | Bin 0 -> 568 bytes .../Extensions/Registry/tree_processors-i.ri | Bin 0 -> 557 bytes .../Extensions/Registry/treeprocessor-i.ri | Bin 0 -> 451 bytes .../Registry/treeprocessors%3f-i.ri | Bin 0 -> 354 bytes .../Extensions/Registry/treeprocessors-i.ri | Bin 0 -> 351 bytes .../cdesc-SyntaxProcessorDsl.ri | Bin 0 -> 793 bytes .../SyntaxProcessorDsl/content_model-i.ri | Bin 0 -> 351 bytes .../default_attributes-i.ri | Bin 0 -> 434 bytes .../SyntaxProcessorDsl/default_attrs-i.ri | Bin 0 -> 464 bytes .../name_positional_attributes-i.ri | Bin 0 -> 418 bytes .../Extensions/SyntaxProcessorDsl/named-i.ri | Bin 0 -> 295 bytes .../SyntaxProcessorDsl/parse_content_as-i.ri | Bin 0 -> 389 bytes .../positional_attributes-i.ri | Bin 0 -> 497 bytes .../SyntaxProcessorDsl/positional_attrs-i.ri | Bin 0 -> 477 bytes .../resolve_attributes-i.ri | Bin 0 -> 446 bytes .../resolves_attributes-i.ri | Bin 0 -> 482 bytes .../TreeProcessor/cdesc-TreeProcessor.ri | Bin 0 -> 1228 bytes .../Extensions/TreeProcessor/process-i.ri | Bin 0 -> 292 bytes .../Extensions/cdesc-Extensions.ri | Bin 0 -> 2671 bytes .../ri/Asciidoctor/Extensions/create-c.ri | Bin 0 -> 283 bytes .../Asciidoctor/Extensions/generate_name-c.ri | Bin 0 -> 279 bytes .../ri/Asciidoctor/Extensions/groups-c.ri | Bin 0 -> 265 bytes .../Asciidoctor/Extensions/next_auto_id-c.ri | Bin 0 -> 277 bytes .../ri/Asciidoctor/Extensions/register-c.ri | Bin 0 -> 1794 bytes .../ri/Asciidoctor/Extensions/unregister-c.ri | Bin 0 -> 519 bytes .../Extensions/unregister_all-c.ri | Bin 0 -> 438 bytes .../ri/Asciidoctor/Helpers/basename-i.ri | Bin 0 -> 976 bytes .../ri/Asciidoctor/Helpers/cdesc-Helpers.ri | Bin 0 -> 1081 bytes .../Asciidoctor/Helpers/class_for_name-i.ri | Bin 0 -> 450 bytes .../Helpers/encode_spaces_in_uri-i.ri | Bin 0 -> 570 bytes .../Helpers/encode_uri_component-i.ri | Bin 0 -> 286 bytes .../ri/Asciidoctor/Helpers/extname%3f-i.ri | Bin 0 -> 530 bytes .../ri/Asciidoctor/Helpers/extname-i.ri | Bin 0 -> 276 bytes .../ri/Asciidoctor/Helpers/int_to_roman-i.ri | Bin 0 -> 503 bytes .../ri/Asciidoctor/Helpers/mkdir_p-i.ri | Bin 0 -> 364 bytes .../ri/Asciidoctor/Helpers/nextval-i.ri | Bin 0 -> 599 bytes .../Helpers/prepare_source_array-i.ri | Bin 0 -> 1029 bytes .../Helpers/prepare_source_string-i.ri | Bin 0 -> 1033 bytes .../Asciidoctor/Helpers/require_library-i.ri | Bin 0 -> 1689 bytes .../ri/Asciidoctor/Helpers/resolve_class-i.ri | Bin 0 -> 591 bytes .../ri/Asciidoctor/Helpers/rootname-i.ri | Bin 0 -> 705 bytes .../ri/Asciidoctor/Helpers/uriish%3f-i.ri | Bin 0 -> 260 bytes .../ri/Asciidoctor/Inline/alt-i.ri | Bin 0 -> 434 bytes .../ri/Asciidoctor/Inline/block%3f-i.ri | Bin 0 -> 251 bytes .../ri/Asciidoctor/Inline/cdesc-Inline.ri | Bin 0 -> 783 bytes .../ri/Asciidoctor/Inline/convert-i.ri | Bin 0 -> 362 bytes .../ri/Asciidoctor/Inline/inline%3f-i.ri | Bin 0 -> 253 bytes .../ri/Asciidoctor/Inline/new-c.ri | Bin 0 -> 284 bytes .../ri/Asciidoctor/Inline/reftext%3f-i.ri | Bin 0 -> 465 bytes .../ri/Asciidoctor/Inline/reftext-i.ri | Bin 0 -> 462 bytes .../ri/Asciidoctor/Inline/render-i.ri | Bin 0 -> 372 bytes .../ri/Asciidoctor/Inline/target-i.ri | 2 + .../ri/Asciidoctor/Inline/text-i.ri | 2 + .../ri/Asciidoctor/Inline/type-i.ri | 2 + .../ri/Asciidoctor/Inline/xreftext-i.ri | Bin 0 -> 765 bytes .../ri/Asciidoctor/List/cdesc-List.ri | Bin 0 -> 654 bytes .../ri/Asciidoctor/List/convert-i.ri | Bin 0 -> 354 bytes .../ri/Asciidoctor/List/new-c.ri | Bin 0 -> 266 bytes .../ri/Asciidoctor/List/outline%3f-i.ri | Bin 0 -> 464 bytes .../ri/Asciidoctor/List/render-i.ri | Bin 0 -> 362 bytes .../ri/Asciidoctor/List/to_s-i.ri | Bin 0 -> 241 bytes .../ri/Asciidoctor/ListItem/cdesc-ListItem.ri | Bin 0 -> 1024 bytes .../ri/Asciidoctor/ListItem/compound%3f-i.ri | Bin 0 -> 586 bytes .../ri/Asciidoctor/ListItem/fold_first-i.ri | Bin 0 -> 423 bytes .../ri/Asciidoctor/ListItem/marker-i.ri | 2 + .../ri/Asciidoctor/ListItem/new-c.ri | Bin 0 -> 490 bytes .../ri/Asciidoctor/ListItem/simple%3f-i.ri | Bin 0 -> 590 bytes .../ri/Asciidoctor/ListItem/text%3f-i.ri | Bin 0 -> 417 bytes .../ri/Asciidoctor/ListItem/text-i.ri | 2 + .../ri/Asciidoctor/ListItem/to_s-i.ri | Bin 0 -> 249 bytes .../cdesc-AutoFormattingMessage.ri | Bin 0 -> 489 bytes .../Logger/AutoFormattingMessage/inspect-i.ri | Bin 0 -> 293 bytes .../Logger/BasicFormatter/call-i.ri | Bin 0 -> 298 bytes .../BasicFormatter/cdesc-BasicFormatter.ri | Bin 0 -> 635 bytes .../ri/Asciidoctor/Logger/add-i.ri | Bin 0 -> 285 bytes .../ri/Asciidoctor/Logger/cdesc-Logger.ri | Bin 0 -> 499 bytes .../ri/Asciidoctor/Logger/max_severity-i.ri | Bin 0 -> 265 bytes .../ri/Asciidoctor/Logger/new-c.ri | Bin 0 -> 252 bytes .../LoggerManager/cdesc-LoggerManager.ri | Bin 0 -> 535 bytes .../Asciidoctor/LoggerManager/logger%3d-c.ri | Bin 0 -> 346 bytes .../ri/Asciidoctor/LoggerManager/logger-c.ri | Bin 0 -> 432 bytes .../LoggerManager/logger_class-c.ri | Bin 0 -> 282 bytes .../LoggerManager/memoize_logger-c.ri | Bin 0 -> 285 bytes .../ri/Asciidoctor/Logging/cdesc-Logging.ri | Bin 0 -> 583 bytes .../ri/Asciidoctor/Logging/included-c.ri | Bin 0 -> 532 bytes .../ri/Asciidoctor/Logging/logger-i.ri | Bin 0 -> 255 bytes .../Logging/message_with_context-i.ri | Bin 0 -> 301 bytes .../ri/Asciidoctor/MemoryLogger/add-i.ri | Bin 0 -> 313 bytes .../MemoryLogger/cdesc-MemoryLogger.ri | Bin 0 -> 715 bytes .../ri/Asciidoctor/MemoryLogger/clear-i.ri | Bin 0 -> 262 bytes .../ri/Asciidoctor/MemoryLogger/empty%3f-i.ri | Bin 0 -> 264 bytes .../MemoryLogger/max_severity-i.ri | Bin 0 -> 276 bytes .../ri/Asciidoctor/MemoryLogger/messages-i.ri | Bin 0 -> 269 bytes .../ri/Asciidoctor/MemoryLogger/new-c.ri | Bin 0 -> 259 bytes .../ri/Asciidoctor/NullLogger/add-i.ri | Bin 0 -> 293 bytes .../NullLogger/cdesc-NullLogger.ri | Bin 0 -> 507 bytes .../Asciidoctor/NullLogger/max_severity-i.ri | Bin 0 -> 273 bytes .../ri/Asciidoctor/NullLogger/new-c.ri | Bin 0 -> 255 bytes .../Parser/adjust_indentation%21-c.ri | Bin 0 -> 1631 bytes .../Parser/atx_section_title%3f-c.ri | Bin 0 -> 656 bytes .../ri/Asciidoctor/Parser/build_block-c.ri | Bin 0 -> 607 bytes .../Asciidoctor/Parser/catalog_callouts-c.ri | Bin 0 -> 642 bytes .../Parser/catalog_inline_anchor-c.ri | Bin 0 -> 830 bytes .../Parser/catalog_inline_anchors-c.ri | Bin 0 -> 706 bytes .../Parser/catalog_inline_biblio_anchor-c.ri | Bin 0 -> 802 bytes .../ri/Asciidoctor/Parser/cdesc-Parser.ri | Bin 0 -> 4972 bytes .../Parser/initialize_section-c.ri | Bin 0 -> 814 bytes .../Parser/is_delimited_block%3f-c.ri | Bin 0 -> 635 bytes .../Parser/is_next_line_doctitle%3f-c.ri | Bin 0 -> 785 bytes .../Parser/is_next_line_section%3f-c.ri | Bin 0 -> 664 bytes .../Parser/is_section_title%3f-c.ri | Bin 0 -> 646 bytes .../Parser/is_sibling_list_item%3f-c.ri | Bin 0 -> 841 bytes .../ri/Asciidoctor/Parser/next_block-c.ri | Bin 0 -> 1651 bytes .../ri/Asciidoctor/Parser/next_section-c.ri | Bin 0 -> 1955 bytes .../ri/Asciidoctor/Parser/parse-c.ri | Bin 0 -> 964 bytes .../Parser/parse_block_metadata_line-c.ri | Bin 0 -> 1459 bytes .../Parser/parse_block_metadata_lines-c.ri | Bin 0 -> 1095 bytes .../ri/Asciidoctor/Parser/parse_blocks-c.ri | Bin 0 -> 829 bytes .../Parser/parse_callout_list-c.ri | Bin 0 -> 869 bytes .../ri/Asciidoctor/Parser/parse_cellspec-c.ri | Bin 0 -> 850 bytes .../ri/Asciidoctor/Parser/parse_colspecs-c.ri | Bin 0 -> 790 bytes .../Parser/parse_description_list-c.ri | Bin 0 -> 757 bytes .../Parser/parse_document_header-c.ri | Bin 0 -> 1054 bytes .../Parser/parse_header_metadata-c.ri | Bin 0 -> 1247 bytes .../ri/Asciidoctor/Parser/parse_list-c.ri | Bin 0 -> 850 bytes .../Asciidoctor/Parser/parse_list_item-c.ri | Bin 0 -> 1772 bytes .../Parser/parse_manpage_header-c.ri | Bin 0 -> 507 bytes .../Parser/parse_section_title-c.ri | Bin 0 -> 1639 bytes .../Parser/parse_style_attribute-c.ri | Bin 0 -> 1261 bytes .../ri/Asciidoctor/Parser/parse_table-c.ri | Bin 0 -> 724 bytes .../Parser/process_attribute_entries-c.ri | Bin 0 -> 513 bytes .../Parser/process_attribute_entry-c.ri | Bin 0 -> 333 bytes .../Asciidoctor/Parser/process_authors-c.ri | Bin 0 -> 888 bytes .../Parser/read_lines_for_list_item-c.ri | Bin 0 -> 1350 bytes .../Parser/read_paragraph_lines-c.ri | Bin 0 -> 312 bytes .../Parser/resolve_list_marker-c.ri | Bin 0 -> 1098 bytes .../Parser/resolve_ordered_list_marker-c.ri | Bin 0 -> 1526 bytes .../Parser/sanitize_attribute_name-c.ri | Bin 0 -> 804 bytes .../Parser/setext_section_title%3f-c.ri | Bin 0 -> 624 bytes .../Asciidoctor/Parser/store_attribute-c.ri | Bin 0 -> 929 bytes .../ri/Asciidoctor/Parser/uniform%3f-c.ri | Bin 0 -> 269 bytes .../Parser/yield_buffered_attribute-c.ri | Bin 0 -> 454 bytes .../PathResolver/absolute_path%3f-i.ri | Bin 0 -> 906 bytes .../PathResolver/cdesc-PathResolver.ri | Bin 0 -> 5157 bytes .../PathResolver/descends_from%3f-i.ri | Bin 0 -> 712 bytes .../Asciidoctor/PathResolver/expand_path-i.ri | Bin 0 -> 756 bytes .../PathResolver/extract_uri_prefix-i.ri | Bin 0 -> 789 bytes .../PathResolver/file_separator-i.ri | Bin 0 -> 288 bytes .../Asciidoctor/PathResolver/join_path-i.ri | Bin 0 -> 889 bytes .../ri/Asciidoctor/PathResolver/new-c.ri | Bin 0 -> 947 bytes .../PathResolver/partition_path-i.ri | Bin 0 -> 1146 bytes .../ri/Asciidoctor/PathResolver/posixfy-i.ri | Bin 0 -> 325 bytes .../ri/Asciidoctor/PathResolver/posixify-i.ri | Bin 0 -> 584 bytes .../PathResolver/relative_path-i.ri | Bin 0 -> 873 bytes .../ri/Asciidoctor/PathResolver/root%3f-i.ri | Bin 0 -> 272 bytes .../Asciidoctor/PathResolver/system_path-i.ri | Bin 0 -> 1967 bytes .../ri/Asciidoctor/PathResolver/unc%3f-i.ri | Bin 0 -> 507 bytes .../ri/Asciidoctor/PathResolver/web_path-i.ri | Bin 0 -> 933 bytes .../Asciidoctor/PathResolver/web_root%3f-i.ri | Bin 0 -> 544 bytes .../Asciidoctor/PathResolver/working_dir-i.ri | Bin 0 -> 282 bytes .../cdesc-PreprocessorReader.ri | Bin 0 -> 1257 bytes .../create_include_cursor-i.ri | Bin 0 -> 323 bytes .../PreprocessorReader/empty%3f-i.ri | Bin 0 -> 360 bytes .../PreprocessorReader/eof%3f-i.ri | Bin 0 -> 324 bytes .../exceeded_max_depth%3f-i.ri | Bin 0 -> 366 bytes .../exceeds_max_depth%3f-i.ri | Bin 0 -> 735 bytes .../PreprocessorReader/has_more_lines%3f-i.ri | Bin 0 -> 359 bytes .../PreprocessorReader/include_depth-i.ri | Bin 0 -> 289 bytes .../include_processors%3f-i.ri | Bin 0 -> 301 bytes .../PreprocessorReader/include_stack-i.ri | Bin 0 -> 290 bytes .../Asciidoctor/PreprocessorReader/new-c.ri | Bin 0 -> 401 bytes .../PreprocessorReader/peek_line-i.ri | Bin 0 -> 779 bytes .../PreprocessorReader/pop_include-i.ri | Bin 0 -> 286 bytes .../PreprocessorReader/prepare_lines-i.ri | Bin 0 -> 305 bytes .../preprocess_conditional_directive-i.ri | Bin 0 -> 1790 bytes .../preprocess_include_directive-i.ri | Bin 0 -> 1670 bytes .../PreprocessorReader/process_line-i.ri | Bin 0 -> 292 bytes .../PreprocessorReader/push_include-i.ri | Bin 0 -> 924 bytes .../PreprocessorReader/resolve_expr_val-i.ri | Bin 0 -> 1083 bytes .../resolve_include_path-i.ri | Bin 0 -> 1659 bytes .../Asciidoctor/PreprocessorReader/shift-i.ri | Bin 0 -> 443 bytes .../skip_front_matter%21-i.ri | Bin 0 -> 437 bytes .../split_delimited_value-i.ri | Bin 0 -> 419 bytes .../Asciidoctor/PreprocessorReader/to_s-i.ri | Bin 0 -> 271 bytes .../ri/Asciidoctor/Reader/Cursor/advance-i.ri | Bin 0 -> 264 bytes .../Asciidoctor/Reader/Cursor/cdesc-Cursor.ri | Bin 0 -> 604 bytes .../ri/Asciidoctor/Reader/Cursor/dir-i.ri | Bin 0 -> 262 bytes .../ri/Asciidoctor/Reader/Cursor/file-i.ri | Bin 0 -> 264 bytes .../Asciidoctor/Reader/Cursor/line_info-i.ri | Bin 0 -> 293 bytes .../ri/Asciidoctor/Reader/Cursor/lineno-i.ri | Bin 0 -> 268 bytes .../ri/Asciidoctor/Reader/Cursor/new-c.ri | Bin 0 -> 293 bytes .../ri/Asciidoctor/Reader/Cursor/path-i.ri | Bin 0 -> 264 bytes .../ri/Asciidoctor/Reader/Cursor/to_s-i.ri | Bin 0 -> 307 bytes .../ri/Asciidoctor/Reader/advance-i.ri | Bin 0 -> 479 bytes .../ri/Asciidoctor/Reader/cdesc-Reader.ri | Bin 0 -> 1680 bytes .../ri/Asciidoctor/Reader/cursor-i.ri | Bin 0 -> 251 bytes .../ri/Asciidoctor/Reader/cursor_at_line-i.ri | Bin 0 -> 273 bytes .../ri/Asciidoctor/Reader/cursor_at_mark-i.ri | Bin 0 -> 267 bytes .../Reader/cursor_at_prev_line-i.ri | Bin 0 -> 277 bytes .../Reader/cursor_before_mark-i.ri | Bin 0 -> 275 bytes .../ri/Asciidoctor/Reader/dir-i.ri | Bin 0 -> 246 bytes .../ri/Asciidoctor/Reader/discard_save-i.ri | Bin 0 -> 341 bytes .../ri/Asciidoctor/Reader/empty%3f-i.ri | Bin 0 -> 486 bytes .../ri/Asciidoctor/Reader/eof%3f-i.ri | Bin 0 -> 288 bytes .../ri/Asciidoctor/Reader/file-i.ri | Bin 0 -> 248 bytes .../Asciidoctor/Reader/has_more_lines%3f-i.ri | Bin 0 -> 679 bytes .../ri/Asciidoctor/Reader/line_info-i.ri | Bin 0 -> 469 bytes .../ri/Asciidoctor/Reader/lineno-i.ri | 2 + .../ri/Asciidoctor/Reader/lines-i.ri | Bin 0 -> 477 bytes .../ri/Asciidoctor/Reader/mark-i.ri | Bin 0 -> 247 bytes .../ri/Asciidoctor/Reader/new-c.ri | Bin 0 -> 355 bytes .../Reader/next_line_empty%3f-i.ri | Bin 0 -> 570 bytes .../ri/Asciidoctor/Reader/path-i.ri | Bin 0 -> 248 bytes .../ri/Asciidoctor/Reader/peek_line-i.ri | Bin 0 -> 1441 bytes .../ri/Asciidoctor/Reader/peek_lines-i.ri | Bin 0 -> 1161 bytes .../ri/Asciidoctor/Reader/prepare_lines-i.ri | Bin 0 -> 1285 bytes .../ri/Asciidoctor/Reader/process_line-i.ri | Bin 0 -> 746 bytes .../ri/Asciidoctor/Reader/process_lines-i.ri | 2 + .../ri/Asciidoctor/Reader/read-i.ri | Bin 0 -> 505 bytes .../ri/Asciidoctor/Reader/read_line-i.ri | Bin 0 -> 529 bytes .../ri/Asciidoctor/Reader/read_lines-i.ri | Bin 0 -> 753 bytes .../Asciidoctor/Reader/read_lines_until-i.ri | Bin 0 -> 2016 bytes .../ri/Asciidoctor/Reader/readlines-i.ri | Bin 0 -> 302 bytes .../ri/Asciidoctor/Reader/replace_line-i.ri | Bin 0 -> 374 bytes .../Asciidoctor/Reader/replace_next_line-i.ri | Bin 0 -> 765 bytes .../ri/Asciidoctor/Reader/restore_line-i.ri | Bin 0 -> 325 bytes .../ri/Asciidoctor/Reader/restore_lines-i.ri | Bin 0 -> 329 bytes .../ri/Asciidoctor/Reader/restore_save-i.ri | Bin 0 -> 352 bytes .../ri/Asciidoctor/Reader/save-i.ri | Bin 0 -> 333 bytes .../ri/Asciidoctor/Reader/shift-i.ri | Bin 0 -> 685 bytes .../Asciidoctor/Reader/skip_blank_lines-i.ri | Bin 0 -> 744 bytes .../Reader/skip_comment_lines-i.ri | Bin 0 -> 637 bytes .../Reader/skip_line_comments-i.ri | Bin 0 -> 480 bytes .../ri/Asciidoctor/Reader/source-i.ri | Bin 0 -> 352 bytes .../ri/Asciidoctor/Reader/source_lines-i.ri | 2 + .../ri/Asciidoctor/Reader/string-i.ri | Bin 0 -> 372 bytes .../ri/Asciidoctor/Reader/terminate-i.ri | Bin 0 -> 424 bytes .../ri/Asciidoctor/Reader/to_s-i.ri | Bin 0 -> 247 bytes .../ri/Asciidoctor/Reader/unshift-i.ri | Bin 0 -> 359 bytes .../ri/Asciidoctor/Reader/unshift_all-i.ri | Bin 0 -> 380 bytes .../ri/Asciidoctor/Reader/unshift_line-i.ri | Bin 0 -> 836 bytes .../ri/Asciidoctor/Reader/unshift_lines-i.ri | Bin 0 -> 772 bytes .../ri/Asciidoctor/Reader/unterminated-i.ri | 2 + .../cdesc-HTMLLineHighlighter.ri | Bin 0 -> 552 bytes .../Formatters/HTMLLineHighlighter/new-c.ri | Bin 0 -> 311 bytes .../HTMLLineHighlighter/stream-i.ri | Bin 0 -> 334 bytes .../Formatters/HTMLTable/cdesc-HTMLTable.ri | Bin 0 -> 532 bytes .../RougeExt/Formatters/HTMLTable/new-c.ri | Bin 0 -> 291 bytes .../RougeExt/Formatters/HTMLTable/stream-i.ri | Bin 0 -> 481 bytes .../RougeExt/Formatters/cdesc-Formatters.ri | Bin 0 -> 693 bytes .../ri/Asciidoctor/RougeExt/cdesc-RougeExt.ri | Bin 0 -> 451 bytes .../ri/Asciidoctor/Rx/cdesc-Rx.ri | Bin 0 -> 1037 bytes .../ri/Asciidoctor/SafeMode/cdesc-SafeMode.ri | Bin 0 -> 2621 bytes .../Asciidoctor/SafeMode/name_for_value-c.ri | Bin 0 -> 271 bytes .../ri/Asciidoctor/SafeMode/names-c.ri | Bin 0 -> 248 bytes .../Asciidoctor/SafeMode/value_for_name-c.ri | Bin 0 -> 270 bytes .../ri/Asciidoctor/Section/%3c%3c-i.ri | Bin 0 -> 560 bytes .../ri/Asciidoctor/Section/caption-i.ri | 2 + .../ri/Asciidoctor/Section/cdesc-Section.ri | Bin 0 -> 1311 bytes .../ri/Asciidoctor/Section/generate_id-c.ri | Bin 0 -> 1121 bytes .../ri/Asciidoctor/Section/generate_id-i.ri | Bin 0 -> 440 bytes .../ri/Asciidoctor/Section/index-i.ri | 3 + .../ri/Asciidoctor/Section/new-c.ri | Bin 0 -> 806 bytes .../ri/Asciidoctor/Section/numbered-i.ri | 2 + .../ri/Asciidoctor/Section/sections%3f-i.ri | Bin 0 -> 483 bytes .../ri/Asciidoctor/Section/sectname-i.ri | 2 + .../ri/Asciidoctor/Section/sectnum-i.ri | Bin 0 -> 1872 bytes .../ri/Asciidoctor/Section/special-i.ri | 2 + .../ri/Asciidoctor/Section/to_s-i.ri | Bin 0 -> 250 bytes .../ri/Asciidoctor/Section/xreftext-i.ri | Bin 0 -> 339 bytes .../Stylesheets/cdesc-Stylesheets.ri | Bin 0 -> 1291 bytes .../Stylesheets/coderay_stylesheet_data-i.ri | Bin 0 -> 483 bytes .../Stylesheets/coderay_stylesheet_name-i.ri | Bin 0 -> 300 bytes .../Stylesheets/embed_coderay_stylesheet-i.ri | Bin 0 -> 508 bytes .../Stylesheets/embed_primary_stylesheet-i.ri | Bin 0 -> 508 bytes .../embed_pygments_stylesheet-i.ri | Bin 0 -> 547 bytes .../ri/Asciidoctor/Stylesheets/instance-c.ri | Bin 0 -> 271 bytes .../Stylesheets/primary_stylesheet_data-i.ri | Bin 0 -> 491 bytes .../Stylesheets/primary_stylesheet_name-i.ri | Bin 0 -> 300 bytes .../Stylesheets/pygments_stylesheet_data-i.ri | Bin 0 -> 504 bytes .../Stylesheets/pygments_stylesheet_name-i.ri | Bin 0 -> 313 bytes .../Stylesheets/write_coderay_stylesheet-i.ri | Bin 0 -> 318 bytes .../Stylesheets/write_primary_stylesheet-i.ri | Bin 0 -> 318 bytes .../write_pygments_stylesheet-i.ri | Bin 0 -> 333 bytes .../Substitutors/apply_header_subs-i.ri | Bin 0 -> 562 bytes .../Substitutors/apply_normal_subs-i.ri | Bin 0 -> 617 bytes .../Substitutors/apply_reftext_subs-i.ri | Bin 0 -> 546 bytes .../Asciidoctor/Substitutors/apply_subs-i.ri | Bin 0 -> 937 bytes .../Substitutors/apply_title_subs-i.ri | Bin 0 -> 588 bytes .../Substitutors/cdesc-Substitutors.ri | Bin 0 -> 4024 bytes .../Asciidoctor/Substitutors/commit_subs-i.ri | Bin 0 -> 806 bytes .../Substitutors/convert_quoted_text-i.ri | Bin 0 -> 716 bytes .../Substitutors/do_replacement-i.ri | Bin 0 -> 515 bytes .../Asciidoctor/Substitutors/expand_subs-i.ri | Bin 0 -> 793 bytes .../extract_attributes_from_text-i.ri | Bin 0 -> 642 bytes .../Substitutors/extract_callouts-i.ri | Bin 0 -> 427 bytes .../Substitutors/extract_passthroughs-i.ri | Bin 0 -> 626 bytes .../Substitutors/highlight_source-i.ri | Bin 0 -> 1254 bytes .../Substitutors/normalize_text-i.ri | Bin 0 -> 717 bytes .../Substitutors/parse_attributes-i.ri | Bin 0 -> 1440 bytes .../parse_quoted_text_attributes-i.ri | Bin 0 -> 729 bytes .../Substitutors/resolve_block_subs-i.ri | Bin 0 -> 401 bytes .../resolve_lines_to_highlight-i.ri | Bin 0 -> 822 bytes .../Substitutors/resolve_pass_subs-i.ri | Bin 0 -> 423 bytes .../Substitutors/resolve_subs-i.ri | Bin 0 -> 1030 bytes .../Substitutors/restore_callouts-i.ri | Bin 0 -> 435 bytes .../Substitutors/restore_passthroughs-i.ri | Bin 0 -> 605 bytes .../Substitutors/split_simple_csv-i.ri | Bin 0 -> 444 bytes .../Substitutors/sub_attributes-i.ri | Bin 0 -> 1153 bytes .../Substitutors/sub_callouts-i.ri | Bin 0 -> 493 bytes .../Asciidoctor/Substitutors/sub_macros-i.ri | Bin 0 -> 597 bytes .../Substitutors/sub_post_replacements-i.ri | Bin 0 -> 503 bytes .../Asciidoctor/Substitutors/sub_quotes-i.ri | Bin 0 -> 523 bytes .../Substitutors/sub_replacements-i.ri | Bin 0 -> 569 bytes .../Asciidoctor/Substitutors/sub_source-i.ri | Bin 0 -> 684 bytes .../Substitutors/sub_specialcharacters-i.ri | Bin 0 -> 361 bytes .../Substitutors/sub_specialchars-i.ri | Bin 0 -> 339 bytes .../SyntaxHighlighter/Base/cdesc-Base.ri | Bin 0 -> 553 bytes .../SyntaxHighlighter/Base/format-i.ri | Bin 0 -> 294 bytes .../CodeRayAdapter/Loader/cdesc-Loader.ri | Bin 0 -> 585 bytes .../Loader/library_available%3f-i.ri | Bin 0 -> 332 bytes .../CodeRayAdapter/Loader/load_library-i.ri | Bin 0 -> 320 bytes .../CodeRayAdapter/Styles/cdesc-Styles.ri | Bin 0 -> 621 bytes .../Styles/read_stylesheet-i.ri | Bin 0 -> 325 bytes .../Styles/stylesheet_basename-i.ri | Bin 0 -> 333 bytes .../CodeRayAdapter/cdesc-CodeRayAdapter.ri | Bin 0 -> 848 bytes .../CodeRayAdapter/docinfo%3f-i.ri | Bin 0 -> 318 bytes .../CodeRayAdapter/docinfo-i.ri | Bin 0 -> 327 bytes .../CodeRayAdapter/highlight%3f-i.ri | Bin 0 -> 314 bytes .../CodeRayAdapter/highlight-i.ri | Bin 0 -> 336 bytes .../SyntaxHighlighter/CodeRayAdapter/new-c.ri | Bin 0 -> 306 bytes .../CodeRayAdapter/write_stylesheet%3f-i.ri | Bin 0 -> 331 bytes .../CodeRayAdapter/write_stylesheet-i.ri | Bin 0 -> 337 bytes .../SyntaxHighlighter/Config/cdesc-Config.ri | Bin 0 -> 509 bytes .../Config/register_for-i.ri | Bin 0 -> 709 bytes .../CustomFactory/cdesc-CustomFactory.ri | Bin 0 -> 588 bytes .../SyntaxHighlighter/CustomFactory/new-c.ri | Bin 0 -> 310 bytes .../CustomFactory/registry-i.ri | Bin 0 -> 321 bytes .../DefaultFactory/cdesc-DefaultFactory.ri | Bin 0 -> 711 bytes .../SyntaxHighlighter/DefaultFactory/for-i.ri | Bin 0 -> 532 bytes .../DefaultFactory/register-i.ri | Bin 0 -> 330 bytes .../DefaultFactory/registry-i.ri | Bin 0 -> 304 bytes .../cdesc-DefaultFactoryProxy.ri | Bin 0 -> 576 bytes .../DefaultFactoryProxy/for-i.ri | Bin 0 -> 306 bytes .../Factory/cdesc-Factory.ri | Bin 0 -> 557 bytes .../SyntaxHighlighter/Factory/create-i.ri | Bin 0 -> 975 bytes .../SyntaxHighlighter/Factory/for-i.ri | Bin 0 -> 612 bytes .../SyntaxHighlighter/Factory/register-i.ri | Bin 0 -> 697 bytes .../SyntaxHighlighter/Factory/registry-i.ri | Bin 0 -> 290 bytes .../cdesc-HighlightJsAdapter.ri | Bin 0 -> 624 bytes .../HighlightJsAdapter/docinfo%3f-i.ri | Bin 0 -> 330 bytes .../HighlightJsAdapter/docinfo-i.ri | Bin 0 -> 339 bytes .../HighlightJsAdapter/format-i.ri | Bin 0 -> 334 bytes .../HighlightJsAdapter/new-c.ri | Bin 0 -> 318 bytes .../cdesc-HtmlPipelineAdapter.ri | Bin 0 -> 579 bytes .../HtmlPipelineAdapter/format-i.ri | Bin 0 -> 338 bytes .../PrettifyAdapter/cdesc-PrettifyAdapter.ri | Bin 0 -> 612 bytes .../PrettifyAdapter/docinfo%3f-i.ri | Bin 0 -> 321 bytes .../PrettifyAdapter/docinfo-i.ri | Bin 0 -> 330 bytes .../PrettifyAdapter/format-i.ri | Bin 0 -> 325 bytes .../PrettifyAdapter/new-c.ri | Bin 0 -> 309 bytes .../PygmentsAdapter/Loader/cdesc-Loader.ri | Bin 0 -> 589 bytes .../Loader/library_available%3f-i.ri | Bin 0 -> 334 bytes .../PygmentsAdapter/Loader/load_library-i.ri | Bin 0 -> 322 bytes .../PygmentsAdapter/Styles/base_style-i.ri | Bin 0 -> 323 bytes .../PygmentsAdapter/Styles/cdesc-Styles.ri | Bin 0 -> 1227 bytes .../Styles/read_stylesheet-i.ri | Bin 0 -> 332 bytes .../Styles/style_available%3f-i.ri | Bin 0 -> 335 bytes .../Styles/stylesheet_basename-i.ri | Bin 0 -> 340 bytes .../PygmentsAdapter/cdesc-PygmentsAdapter.ri | Bin 0 -> 2228 bytes .../PygmentsAdapter/docinfo%3f-i.ri | Bin 0 -> 321 bytes .../PygmentsAdapter/docinfo-i.ri | Bin 0 -> 330 bytes .../PygmentsAdapter/format-i.ri | Bin 0 -> 325 bytes .../PygmentsAdapter/highlight%3f-i.ri | Bin 0 -> 317 bytes .../PygmentsAdapter/highlight-i.ri | Bin 0 -> 339 bytes .../PygmentsAdapter/new-c.ri | Bin 0 -> 309 bytes .../PygmentsAdapter/write_stylesheet%3f-i.ri | Bin 0 -> 334 bytes .../PygmentsAdapter/write_stylesheet-i.ri | Bin 0 -> 340 bytes .../RougeAdapter/Loader/cdesc-Loader.ri | Bin 0 -> 577 bytes .../Loader/library_available%3f-i.ri | Bin 0 -> 328 bytes .../RougeAdapter/Loader/load_library-i.ri | Bin 0 -> 316 bytes .../RougeAdapter/Styles/base_style-i.ri | Bin 0 -> 317 bytes .../RougeAdapter/Styles/cdesc-Styles.ri | Bin 0 -> 945 bytes .../RougeAdapter/Styles/read_stylesheet-i.ri | Bin 0 -> 326 bytes .../Styles/style_available%3f-i.ri | Bin 0 -> 329 bytes .../Styles/stylesheet_basename-i.ri | Bin 0 -> 334 bytes .../RougeAdapter/cdesc-RougeAdapter.ri | Bin 0 -> 905 bytes .../RougeAdapter/create_formatter-i.ri | Bin 0 -> 344 bytes .../RougeAdapter/create_lexer-i.ri | Bin 0 -> 336 bytes .../RougeAdapter/docinfo%3f-i.ri | Bin 0 -> 312 bytes .../RougeAdapter/docinfo-i.ri | Bin 0 -> 321 bytes .../RougeAdapter/format-i.ri | Bin 0 -> 316 bytes .../RougeAdapter/highlight%3f-i.ri | Bin 0 -> 308 bytes .../RougeAdapter/highlight-i.ri | Bin 0 -> 330 bytes .../SyntaxHighlighter/RougeAdapter/new-c.ri | Bin 0 -> 300 bytes .../RougeAdapter/write_stylesheet%3f-i.ri | Bin 0 -> 325 bytes .../RougeAdapter/write_stylesheet-i.ri | Bin 0 -> 331 bytes .../cdesc-SyntaxHighlighter.ri | Bin 0 -> 2134 bytes .../SyntaxHighlighter/docinfo%3f-i.ri | Bin 0 -> 775 bytes .../SyntaxHighlighter/docinfo-i.ri | Bin 0 -> 1198 bytes .../Asciidoctor/SyntaxHighlighter/format-i.ri | Bin 0 -> 870 bytes .../SyntaxHighlighter/highlight%3f-i.ri | Bin 0 -> 584 bytes .../SyntaxHighlighter/highlight-i.ri | Bin 0 -> 1849 bytes .../SyntaxHighlighter/included-c.ri | Bin 0 -> 296 bytes .../Asciidoctor/SyntaxHighlighter/name-i.ri | 2 + .../ri/Asciidoctor/SyntaxHighlighter/new-c.ri | Bin 0 -> 315 bytes .../write_stylesheet%3f-i.ri | Bin 0 -> 732 bytes .../SyntaxHighlighter/write_stylesheet-i.ri | Bin 0 -> 651 bytes .../Table/Cell/catalog_inline_anchor-i.ri | Bin 0 -> 314 bytes .../ri/Asciidoctor/Table/Cell/cdesc-Cell.ri | Bin 0 -> 973 bytes .../ri/Asciidoctor/Table/Cell/colspan-i.ri | 2 + .../ri/Asciidoctor/Table/Cell/content-i.ri | Bin 0 -> 576 bytes .../ri/Asciidoctor/Table/Cell/file-i.ri | Bin 0 -> 339 bytes .../Table/Cell/inner_document-i.ri | 2 + .../ri/Asciidoctor/Table/Cell/lineno-i.ri | Bin 0 -> 350 bytes .../ri/Asciidoctor/Table/Cell/lines-i.ri | Bin 0 -> 251 bytes .../ri/Asciidoctor/Table/Cell/new-c.ri | Bin 0 -> 282 bytes .../Asciidoctor/Table/Cell/reinitialize-i.ri | Bin 0 -> 275 bytes .../ri/Asciidoctor/Table/Cell/rowspan-i.ri | 2 + .../ri/Asciidoctor/Table/Cell/source-i.ri | Bin 0 -> 253 bytes .../ri/Asciidoctor/Table/Cell/text-i.ri | Bin 0 -> 448 bytes .../ri/Asciidoctor/Table/Cell/to_s-i.ri | Bin 0 -> 249 bytes .../Table/Column/assign_width-i.ri | Bin 0 -> 582 bytes .../ri/Asciidoctor/Table/Column/block%3f-i.ri | Bin 0 -> 257 bytes .../Asciidoctor/Table/Column/cdesc-Column.ri | Bin 0 -> 713 bytes .../Asciidoctor/Table/Column/inline%3f-i.ri | Bin 0 -> 259 bytes .../ri/Asciidoctor/Table/Column/new-c.ri | Bin 0 -> 281 bytes .../ri/Asciidoctor/Table/Column/style-i.ri | 3 + .../Table/ParserContext/activate_rowspan-i.ri | Bin 0 -> 537 bytes .../Table/ParserContext/advance-i.ri | Bin 0 -> 457 bytes .../Table/ParserContext/buffer-i.ri | 2 + .../buffer_has_unclosed_quotes%3f-i.ri | Bin 0 -> 589 bytes .../ParserContext/cdesc-ParserContext.ri | Bin 0 -> 2078 bytes .../Table/ParserContext/cell_closed%3f-i.ri | Bin 0 -> 489 bytes .../Table/ParserContext/cell_open%3f-i.ri | Bin 0 -> 471 bytes .../Table/ParserContext/close_cell-i.ri | Bin 0 -> 595 bytes .../Table/ParserContext/close_open_cell-i.ri | Bin 0 -> 572 bytes .../Table/ParserContext/close_row-i.ri | Bin 0 -> 492 bytes .../Table/ParserContext/close_table-i.ri | Bin 0 -> 281 bytes .../Table/ParserContext/colcount-i.ri | Bin 0 -> 565 bytes .../Table/ParserContext/delimiter-i.ri | 2 + .../Table/ParserContext/delimiter_re-i.ri | 2 + .../effective_column_visits-i.ri | Bin 0 -> 463 bytes .../Table/ParserContext/end_of_row%3f-i.ri | Bin 0 -> 537 bytes .../Table/ParserContext/format-i.ri | 2 + .../Table/ParserContext/keep_cell_open-i.ri | Bin 0 -> 520 bytes .../Table/ParserContext/mark_cell_closed-i.ri | Bin 0 -> 516 bytes .../Table/ParserContext/match_delimiter-i.ri | Bin 0 -> 544 bytes .../Asciidoctor/Table/ParserContext/new-c.ri | Bin 0 -> 296 bytes .../Table/ParserContext/push_cellspec-i.ri | Bin 0 -> 534 bytes .../ParserContext/skip_past_delimiter-i.ri | Bin 0 -> 467 bytes .../skip_past_escaped_delimiter-i.ri | Bin 0 -> 472 bytes .../starts_with_delimiter%3f-i.ri | Bin 0 -> 552 bytes .../Table/ParserContext/table-i.ri | 3 + .../Table/ParserContext/take_cellspec-i.ri | Bin 0 -> 636 bytes .../ri/Asciidoctor/Table/Rows/body-i.ri | Bin 0 -> 258 bytes .../ri/Asciidoctor/Table/Rows/by_section-i.ri | Bin 0 -> 707 bytes .../ri/Asciidoctor/Table/Rows/cdesc-Rows.ri | Bin 0 -> 690 bytes .../ri/Asciidoctor/Table/Rows/foot-i.ri | Bin 0 -> 258 bytes .../ri/Asciidoctor/Table/Rows/head-i.ri | Bin 0 -> 258 bytes .../ri/Asciidoctor/Table/Rows/new-c.ri | Bin 0 -> 279 bytes .../ri/Asciidoctor/Table/Rows/to_h-i.ri | Bin 0 -> 580 bytes .../Table/assign_column_widths-i.ri | Bin 0 -> 794 bytes .../ri/Asciidoctor/Table/caption-i.ri | 2 + .../ri/Asciidoctor/Table/cdesc-Table.ri | Bin 0 -> 1055 bytes .../ri/Asciidoctor/Table/columns-i.ri | 2 + .../ri/Asciidoctor/Table/create_columns-i.ri | Bin 0 -> 424 bytes .../Asciidoctor/Table/has_header_option-i.ri | 2 + .../ri/Asciidoctor/Table/header_row%3f-i.ri | Bin 0 -> 461 bytes .../ri/Asciidoctor/Table/new-c.ri | Bin 0 -> 261 bytes .../Table/partition_header_footer-i.ri | Bin 0 -> 488 bytes .../ri/Asciidoctor/Table/rows-i.ri | 2 + .../ri/Asciidoctor/Timings/cdesc-Timings.ri | Bin 0 -> 784 bytes .../ri/Asciidoctor/Timings/convert-i.ri | Bin 0 -> 256 bytes .../ri/Asciidoctor/Timings/new-c.ri | Bin 0 -> 249 bytes .../ri/Asciidoctor/Timings/now-i.ri | Bin 0 -> 249 bytes .../ri/Asciidoctor/Timings/parse-i.ri | Bin 0 -> 252 bytes .../ri/Asciidoctor/Timings/print_report-i.ri | Bin 0 -> 293 bytes .../ri/Asciidoctor/Timings/read-i.ri | Bin 0 -> 250 bytes .../ri/Asciidoctor/Timings/read_parse-i.ri | Bin 0 -> 262 bytes .../Timings/read_parse_convert-i.ri | Bin 0 -> 278 bytes .../ri/Asciidoctor/Timings/record-i.ri | Bin 0 -> 257 bytes .../ri/Asciidoctor/Timings/start-i.ri | Bin 0 -> 255 bytes .../ri/Asciidoctor/Timings/time-i.ri | Bin 0 -> 255 bytes .../ri/Asciidoctor/Timings/total-i.ri | Bin 0 -> 252 bytes .../ri/Asciidoctor/Timings/write-i.ri | Bin 0 -> 252 bytes .../VoidWriter/cdesc-VoidWriter.ri | Bin 0 -> 480 bytes .../ri/Asciidoctor/VoidWriter/write-i.ri | Bin 0 -> 340 bytes .../ri/Asciidoctor/Writer/cdesc-Writer.ri | Bin 0 -> 640 bytes .../ri/Asciidoctor/Writer/write-i.ri | Bin 0 -> 574 bytes .../ri/Asciidoctor/cdesc-Asciidoctor.ri | Bin 0 -> 33885 bytes .../ri/Asciidoctor/const_missing-c.ri | Bin 0 -> 803 bytes .../ri/Asciidoctor/convert-c.ri | Bin 0 -> 2351 bytes .../ri/Asciidoctor/convert_file-c.ri | Bin 0 -> 1033 bytes .../ri/Asciidoctor/load-c.ri | Bin 0 -> 1076 bytes .../ri/Asciidoctor/load_file-c.ri | Bin 0 -> 790 bytes .../ri/Asciidoctor/render-c.ri | Bin 0 -> 372 bytes .../ri/Asciidoctor/render_file-c.ri | Bin 0 -> 395 bytes .../asciidoctor-2.0.23/ri/Hash/cdesc-Hash.ri | Bin 0 -> 374 bytes .../ri/MatchData/cdesc-MatchData.ri | Bin 0 -> 568 bytes .../ri/MatchData/names-i.ri | Bin 0 -> 261 bytes .../ri/NilClass/cdesc-NilClass.ri | Bin 0 -> 617 bytes .../ri/Numeric/cdesc-Numeric.ri | Bin 0 -> 377 bytes .../ri/Object/cdesc-Object.ri | Bin 0 -> 538 bytes .../asciidoctor-2.0.23/ri/Object/merge-i.ri | Bin 0 -> 254 bytes .../ri/Object/truncate-i.ri | Bin 0 -> 264 bytes .../ri/Regexp/cdesc-Regexp.ri | Bin 0 -> 479 bytes .../ri/String/cdesc-String.ri | Bin 0 -> 376 bytes .../3.1.0/doc/asciidoctor-2.0.23/ri/cache.ri | 56 + .../3.1.0/debug-1.6.3/debug/debug.so | Bin 0 -> 26624 bytes .../3.1.0/debug-1.6.3/gem.build_complete | 0 .../3.1.0/rbs-2.7.0/gem.build_complete | 0 .../3.1.0/rbs-2.7.0/rbs_extension.so | Bin 0 -> 126464 bytes .../3.1.0/gems/asciidoctor-2.0.23/.yardopts | 11 + .../gems/asciidoctor-2.0.23/CHANGELOG.adoc | 2210 + .../3.1.0/gems/asciidoctor-2.0.23/LICENSE | 22 + .../gems/asciidoctor-2.0.23/README-de.adoc | 472 + .../gems/asciidoctor-2.0.23/README-fr.adoc | 438 + .../gems/asciidoctor-2.0.23/README-jp.adoc | 472 + .../gems/asciidoctor-2.0.23/README-zh_CN.adoc | 426 + .../3.1.0/gems/asciidoctor-2.0.23/README.adoc | 508 + .../asciidoctor-2.0.23/asciidoctor.gemspec | 47 + .../gems/asciidoctor-2.0.23/bin/asciidoctor | 16 + .../data/locale/attributes-ar.adoc | 23 + .../data/locale/attributes-be.adoc | 23 + .../data/locale/attributes-bg.adoc | 23 + .../data/locale/attributes-ca.adoc | 23 + .../data/locale/attributes-cs.adoc | 23 + .../data/locale/attributes-da.adoc | 23 + .../data/locale/attributes-de.adoc | 23 + .../data/locale/attributes-en.adoc | 23 + .../data/locale/attributes-es.adoc | 23 + .../data/locale/attributes-fa.adoc | 23 + .../data/locale/attributes-fi.adoc | 23 + .../data/locale/attributes-fr.adoc | 23 + .../data/locale/attributes-hu.adoc | 23 + .../data/locale/attributes-id.adoc | 23 + .../data/locale/attributes-it.adoc | 23 + .../data/locale/attributes-ja.adoc | 23 + .../data/locale/attributes-ko.adoc | 23 + .../data/locale/attributes-nb.adoc | 23 + .../data/locale/attributes-nl.adoc | 23 + .../data/locale/attributes-nn.adoc | 23 + .../data/locale/attributes-pl.adoc | 23 + .../data/locale/attributes-pt.adoc | 23 + .../data/locale/attributes-pt_BR.adoc | 23 + .../data/locale/attributes-ro.adoc | 23 + .../data/locale/attributes-ru.adoc | 23 + .../data/locale/attributes-sr.adoc | 23 + .../data/locale/attributes-sr_Latn.adoc | 23 + .../data/locale/attributes-sv.adoc | 23 + .../data/locale/attributes-sw.adoc | 23 + .../data/locale/attributes-th.adoc | 23 + .../data/locale/attributes-tr.adoc | 23 + .../data/locale/attributes-uk.adoc | 23 + .../data/locale/attributes-vi.adoc | 23 + .../data/locale/attributes-zh_CN.adoc | 23 + .../data/locale/attributes-zh_TW.adoc | 23 + .../data/locale/attributes.adoc | 11 + .../data/reference/syntax.adoc | 296 + .../data/stylesheets/asciidoctor-default.css | 424 + .../data/stylesheets/coderay-asciidoctor.css | 87 + .../asciidoctor-2.0.23/lib/asciidoctor.rb | 583 + .../lib/asciidoctor/abstract_block.rb | 518 + .../lib/asciidoctor/abstract_node.rb | 567 + .../lib/asciidoctor/attribute_list.rb | 220 + .../lib/asciidoctor/block.rb | 144 + .../lib/asciidoctor/callouts.rb | 115 + .../asciidoctor-2.0.23/lib/asciidoctor/cli.rb | 4 + .../lib/asciidoctor/cli/invoker.rb | 181 + .../lib/asciidoctor/cli/options.rb | 316 + .../lib/asciidoctor/convert.rb | 199 + .../lib/asciidoctor/converter.rb | 417 + .../lib/asciidoctor/converter/composite.rb | 47 + .../lib/asciidoctor/converter/docbook5.rb | 832 + .../lib/asciidoctor/converter/html5.rb | 1350 + .../lib/asciidoctor/converter/manpage.rb | 758 + .../lib/asciidoctor/converter/template.rb | 271 + .../lib/asciidoctor/core_ext.rb | 9 + .../asciidoctor/core_ext/float/truncate.rb | 20 + .../lib/asciidoctor/core_ext/hash/merge.rb | 8 + .../asciidoctor/core_ext/match_data/names.rb | 7 + .../lib/asciidoctor/core_ext/nil_or_empty.rb | 24 + .../asciidoctor/core_ext/regexp/is_match.rb | 5 + .../lib/asciidoctor/document.rb | 1394 + .../lib/asciidoctor/extensions.rb | 1569 + .../lib/asciidoctor/helpers.rb | 313 + .../lib/asciidoctor/inline.rb | 73 + .../lib/asciidoctor/list.rb | 114 + .../lib/asciidoctor/load.rb | 119 + .../lib/asciidoctor/logging.rb | 129 + .../lib/asciidoctor/parser.rb | 2774 + .../lib/asciidoctor/path_resolver.rb | 544 + .../lib/asciidoctor/reader.rb | 1378 + .../lib/asciidoctor/rouge_ext.rb | 39 + .../asciidoctor-2.0.23/lib/asciidoctor/rx.rb | 727 + .../lib/asciidoctor/section.rb | 228 + .../lib/asciidoctor/stylesheets.rb | 89 + .../lib/asciidoctor/substitutors.rb | 1548 + .../lib/asciidoctor/syntax_highlighter.rb | 253 + .../asciidoctor/syntax_highlighter/coderay.rb | 88 + .../syntax_highlighter/highlightjs.rb | 34 + .../syntax_highlighter/html_pipeline.rb | 10 + .../syntax_highlighter/prettify.rb | 30 + .../syntax_highlighter/pygments.rb | 157 + .../asciidoctor/syntax_highlighter/rouge.rb | 143 + .../lib/asciidoctor/table.rb | 737 + .../lib/asciidoctor/timings.rb | 70 + .../lib/asciidoctor/version.rb | 4 + .../lib/asciidoctor/writer.rb | 30 + .../gems/asciidoctor-2.0.23/man/asciidoctor.1 | 267 + .../asciidoctor-2.0.23/man/asciidoctor.adoc | 203 + .../3.1.0/gems/bundler-2.3.27/libexec/bundle | 49 + .../3.1.0/gems/bundler-2.3.27/libexec/bundler | 4 + .../3.1.0/gems/debug-1.6.3/CONTRIBUTING.md | 561 + .../ruby/gems/3.1.0/gems/debug-1.6.3/Gemfile | 9 + .../gems/3.1.0/gems/debug-1.6.3/LICENSE.txt | 22 + .../gems/3.1.0/gems/debug-1.6.3/README.md | 913 + .../ruby/gems/3.1.0/gems/debug-1.6.3/Rakefile | 52 + .../ruby/gems/3.1.0/gems/debug-1.6.3/TODO.md | 23 + .../ruby/gems/3.1.0/gems/debug-1.6.3/exe/rdbg | 53 + .../3.1.0/gems/debug-1.6.3/ext/debug/debug.c | 200 + .../gems/debug-1.6.3/ext/debug/extconf.rb | 26 + .../debug-1.6.3/ext/debug/iseq_collector.c | 91 + .../gems/3.1.0/gems/debug-1.6.3/lib/debug.rb | 5 + .../gems/debug-1.6.3/lib/debug/breakpoint.rb | 552 + .../gems/debug-1.6.3/lib/debug/client.rb | 245 + .../3.1.0/gems/debug-1.6.3/lib/debug/color.rb | 123 + .../gems/debug-1.6.3/lib/debug/config.rb | 524 + .../gems/debug-1.6.3/lib/debug/console.rb | 234 + .../gems/debug-1.6.3/lib/debug/frame_info.rb | 179 + .../3.1.0/gems/debug-1.6.3/lib/debug/local.rb | 109 + .../3.1.0/gems/debug-1.6.3/lib/debug/open.rb | 13 + .../debug-1.6.3/lib/debug/open_nonstop.rb | 15 + .../gems/debug-1.6.3/lib/debug/prelude.rb | 50 + .../gems/debug-1.6.3/lib/debug/server.rb | 520 + .../gems/debug-1.6.3/lib/debug/server_cdp.rb | 1144 + .../gems/debug-1.6.3/lib/debug/server_dap.rb | 975 + .../gems/debug-1.6.3/lib/debug/session.rb | 2424 + .../lib/debug/source_repository.rb | 130 + .../3.1.0/gems/debug-1.6.3/lib/debug/start.rb | 5 + .../debug-1.6.3/lib/debug/thread_client.rb | 1299 + .../gems/debug-1.6.3/lib/debug/tracer.rb | 242 + .../gems/debug-1.6.3/lib/debug/version.rb | 5 + .../3.1.0/gems/debug-1.6.3/misc/README.md.erb | 604 + .../gems/3.1.0/gems/erb-2.2.3/libexec/erb | 174 + .../ruby/gems/3.1.0/gems/irb-1.4.1/exe/irb | 11 + .../gems/3.1.0/gems/matrix-0.4.2/LICENSE.txt | 22 + .../3.1.0/gems/matrix-0.4.2/lib/matrix.rb | 2493 + .../lib/matrix/eigenvalue_decomposition.rb | 882 + .../lib/matrix/lup_decomposition.rb | 219 + .../gems/matrix-0.4.2/lib/matrix/version.rb | 5 + .../3.1.0/gems/minitest-5.15.0/History.rdoc | 1430 + .../3.1.0/gems/minitest-5.15.0/Manifest.txt | 27 + .../3.1.0/gems/minitest-5.15.0/README.rdoc | 803 + .../gems/3.1.0/gems/minitest-5.15.0/Rakefile | 74 + .../gems/minitest-5.15.0/design_rationale.rb | 52 + .../gems/minitest-5.15.0/lib/hoe/minitest.rb | 28 + .../gems/minitest-5.15.0/lib/minitest.rb | 1069 + .../lib/minitest/assertions.rb | 806 + .../minitest-5.15.0/lib/minitest/autorun.rb | 13 + .../minitest-5.15.0/lib/minitest/benchmark.rb | 455 + .../lib/minitest/expectations.rb | 303 + .../gems/minitest-5.15.0/lib/minitest/hell.rb | 11 + .../gems/minitest-5.15.0/lib/minitest/mock.rb | 244 + .../minitest-5.15.0/lib/minitest/parallel.rb | 70 + .../minitest-5.15.0/lib/minitest/pride.rb | 4 + .../lib/minitest/pride_plugin.rb | 142 + .../gems/minitest-5.15.0/lib/minitest/spec.rb | 343 + .../gems/minitest-5.15.0/lib/minitest/test.rb | 230 + .../gems/minitest-5.15.0/lib/minitest/unit.rb | 45 + .../test/minitest/metametameta.rb | 136 + .../test/minitest/test_minitest_assertions.rb | 1588 + .../test/minitest/test_minitest_benchmark.rb | 137 + .../test/minitest/test_minitest_mock.rb | 885 + .../test/minitest/test_minitest_reporter.rb | 311 + .../test/minitest/test_minitest_spec.rb | 1062 + .../test/minitest/test_minitest_test.rb | 1109 + .../gems/3.1.0/gems/net-ftp-0.1.4/Gemfile | 6 + .../gems/3.1.0/gems/net-ftp-0.1.4/LICENSE.txt | 22 + .../gems/3.1.0/gems/net-ftp-0.1.4/README.md | 56 + .../gems/3.1.0/gems/net-ftp-0.1.4/Rakefile | 10 + .../gems/3.1.0/gems/net-ftp-0.1.4/bin/console | 14 + .../gems/3.1.0/gems/net-ftp-0.1.4/bin/setup | 8 + .../3.1.0/gems/net-ftp-0.1.4/lib/net/ftp.rb | 1557 + .../gems/3.1.0/gems/net-imap-0.2.4/Gemfile | 6 + .../3.1.0/gems/net-imap-0.2.4/LICENSE.txt | 22 + .../gems/3.1.0/gems/net-imap-0.2.4/README.md | 61 + .../gems/3.1.0/gems/net-imap-0.2.4/Rakefile | 17 + .../3.1.0/gems/net-imap-0.2.4/lib/net/imap.rb | 1467 + .../lib/net/imap/authenticators.rb | 44 + .../lib/net/imap/authenticators/cram_md5.rb | 49 + .../lib/net/imap/authenticators/digest_md5.rb | 111 + .../lib/net/imap/authenticators/login.rb | 43 + .../lib/net/imap/authenticators/plain.rb | 41 + .../lib/net/imap/command_data.rb | 303 + .../lib/net/imap/data_encoding.rb | 106 + .../net-imap-0.2.4/lib/net/imap/errors.rb | 59 + .../gems/net-imap-0.2.4/lib/net/imap/flags.rb | 234 + .../lib/net/imap/response_data.rb | 527 + .../lib/net/imap/response_parser.rb | 1526 + .../gems/3.1.0/gems/net-pop-0.1.1/Gemfile | 7 + .../gems/3.1.0/gems/net-pop-0.1.1/LICENSE.txt | 22 + .../gems/3.1.0/gems/net-pop-0.1.1/README.md | 66 + .../gems/3.1.0/gems/net-pop-0.1.1/Rakefile | 10 + .../gems/3.1.0/gems/net-pop-0.1.1/bin/console | 14 + .../gems/3.1.0/gems/net-pop-0.1.1/bin/setup | 8 + .../3.1.0/gems/net-pop-0.1.1/lib/net/pop.rb | 1022 + .../3.1.0/gems/net-smtp-0.3.1.1/LICENSE.txt | 22 + .../gems/net-smtp-0.3.1.1/lib/net/smtp.rb | 1195 + .../gems/3.1.0/gems/power_assert-2.0.1/BSDL | 22 + .../3.1.0/gems/power_assert-2.0.1/COPYING | 57 + .../3.1.0/gems/power_assert-2.0.1/Gemfile | 9 + .../gems/3.1.0/gems/power_assert-2.0.1/LEGAL | 4 + .../3.1.0/gems/power_assert-2.0.1/README.md | 98 + .../3.1.0/gems/power_assert-2.0.1/Rakefile | 59 + .../power_assert-2.0.1/lib/power_assert.rb | 91 + .../lib/power_assert/colorize.rb | 7 + .../lib/power_assert/configuration.rb | 46 + .../lib/power_assert/context.rb | 233 + .../power_assert/enable_tracepoint_events.rb | 58 + .../lib/power_assert/inspector.rb | 62 + .../lib/power_assert/parser.rb | 251 + .../lib/power_assert/version.rb | 3 + .../ruby/gems/3.1.0/gems/prime-0.1.2/Gemfile | 10 + .../gems/3.1.0/gems/prime-0.1.2/LICENSE.txt | 22 + .../gems/3.1.0/gems/prime-0.1.2/README.md | 47 + .../ruby/gems/3.1.0/gems/prime-0.1.2/Rakefile | 10 + .../gems/3.1.0/gems/prime-0.1.2/bin/console | 14 + .../gems/3.1.0/gems/prime-0.1.2/bin/setup | 8 + .../gems/3.1.0/gems/prime-0.1.2/lib/prime.rb | 561 + .../ruby/gems/3.1.0/gems/racc-1.6.0/bin/racc | 320 + .../gems/3.1.0/gems/rake-13.0.6/History.rdoc | 2403 + .../gems/3.1.0/gems/rake-13.0.6/MIT-LICENSE | 21 + .../gems/3.1.0/gems/rake-13.0.6/README.rdoc | 155 + .../rake-13.0.6/doc/command_line_usage.rdoc | 158 + .../gems/rake-13.0.6/doc/example/Rakefile1 | 38 + .../gems/rake-13.0.6/doc/example/Rakefile2 | 35 + .../3.1.0/gems/rake-13.0.6/doc/example/a.c | 6 + .../3.1.0/gems/rake-13.0.6/doc/example/b.c | 6 + .../3.1.0/gems/rake-13.0.6/doc/example/main.c | 11 + .../3.1.0/gems/rake-13.0.6/doc/glossary.rdoc | 42 + .../gems/3.1.0/gems/rake-13.0.6/doc/jamis.rb | 592 + .../gems/rake-13.0.6/doc/proto_rake.rdoc | 127 + .../gems/3.1.0/gems/rake-13.0.6/doc/rake.1 | 156 + .../3.1.0/gems/rake-13.0.6/doc/rakefile.rdoc | 622 + .../3.1.0/gems/rake-13.0.6/doc/rational.rdoc | 151 + .../ruby/gems/3.1.0/gems/rake-13.0.6/exe/rake | 27 + .../gems/3.1.0/gems/rake-13.0.6/lib/rake.rb | 71 + .../gems/rake-13.0.6/lib/rake/application.rb | 831 + .../gems/rake-13.0.6/lib/rake/backtrace.rb | 24 + .../3.1.0/gems/rake-13.0.6/lib/rake/clean.rb | 78 + .../gems/rake-13.0.6/lib/rake/cloneable.rb | 17 + .../gems/rake-13.0.6/lib/rake/cpu_counter.rb | 107 + .../rake-13.0.6/lib/rake/default_loader.rb | 15 + .../rake-13.0.6/lib/rake/dsl_definition.rb | 195 + .../gems/rake-13.0.6/lib/rake/early_time.rb | 22 + .../gems/rake-13.0.6/lib/rake/ext/core.rb | 26 + .../gems/rake-13.0.6/lib/rake/ext/string.rb | 176 + .../lib/rake/file_creation_task.rb | 25 + .../gems/rake-13.0.6/lib/rake/file_list.rb | 435 + .../gems/rake-13.0.6/lib/rake/file_task.rb | 54 + .../gems/rake-13.0.6/lib/rake/file_utils.rb | 134 + .../rake-13.0.6/lib/rake/file_utils_ext.rb | 134 + .../rake-13.0.6/lib/rake/invocation_chain.rb | 57 + .../lib/rake/invocation_exception_mixin.rb | 17 + .../gems/rake-13.0.6/lib/rake/late_time.rb | 18 + .../gems/rake-13.0.6/lib/rake/linked_list.rb | 112 + .../rake-13.0.6/lib/rake/loaders/makefile.rb | 54 + .../gems/rake-13.0.6/lib/rake/multi_task.rb | 14 + .../gems/rake-13.0.6/lib/rake/name_space.rb | 38 + .../gems/rake-13.0.6/lib/rake/packagetask.rb | 222 + .../3.1.0/gems/rake-13.0.6/lib/rake/phony.rb | 16 + .../rake-13.0.6/lib/rake/private_reader.rb | 21 + .../gems/rake-13.0.6/lib/rake/promise.rb | 100 + .../rake-13.0.6/lib/rake/pseudo_status.rb | 30 + .../gems/rake-13.0.6/lib/rake/rake_module.rb | 67 + .../rake-13.0.6/lib/rake/rake_test_loader.rb | 27 + .../lib/rake/rule_recursion_overflow_error.rb | 20 + .../3.1.0/gems/rake-13.0.6/lib/rake/scope.rb | 43 + .../3.1.0/gems/rake-13.0.6/lib/rake/task.rb | 434 + .../lib/rake/task_argument_error.rb | 8 + .../rake-13.0.6/lib/rake/task_arguments.rb | 109 + .../gems/rake-13.0.6/lib/rake/task_manager.rb | 331 + .../gems/rake-13.0.6/lib/rake/tasklib.rb | 12 + .../gems/rake-13.0.6/lib/rake/testtask.rb | 189 + .../lib/rake/thread_history_display.rb | 49 + .../gems/rake-13.0.6/lib/rake/thread_pool.rb | 163 + .../gems/rake-13.0.6/lib/rake/trace_output.rb | 23 + .../gems/rake-13.0.6/lib/rake/version.rb | 10 + .../3.1.0/gems/rake-13.0.6/lib/rake/win32.rb | 51 + .../lib/ruby/gems/3.1.0/gems/rbs-2.7.0/BSDL | 22 + .../gems/3.1.0/gems/rbs-2.7.0/CHANGELOG.md | 936 + .../ruby/gems/3.1.0/gems/rbs-2.7.0/COPYING | 56 + .../ruby/gems/3.1.0/gems/rbs-2.7.0/Gemfile | 33 + .../gems/3.1.0/gems/rbs-2.7.0/Gemfile.lock | 118 + .../ruby/gems/3.1.0/gems/rbs-2.7.0/README.md | 143 + .../ruby/gems/3.1.0/gems/rbs-2.7.0/Rakefile | 227 + .../ruby/gems/3.1.0/gems/rbs-2.7.0/Steepfile | 46 + .../gems/3.1.0/gems/rbs-2.7.0/core/array.rbs | 3787 + .../gems/rbs-2.7.0/core/basic_object.rbs | 400 + .../3.1.0/gems/rbs-2.7.0/core/binding.rbs | 212 + .../3.1.0/gems/rbs-2.7.0/core/builtin.rbs | 78 + .../gems/3.1.0/gems/rbs-2.7.0/core/class.rbs | 183 + .../3.1.0/gems/rbs-2.7.0/core/comparable.rbs | 173 + .../3.1.0/gems/rbs-2.7.0/core/complex.rbs | 564 + .../3.1.0/gems/rbs-2.7.0/core/constants.rbs | 88 + .../3.1.0/gems/rbs-2.7.0/core/deprecated.rbs | 9 + .../gems/3.1.0/gems/rbs-2.7.0/core/dir.rbs | 698 + .../3.1.0/gems/rbs-2.7.0/core/encoding.rbs | 1746 + .../3.1.0/gems/rbs-2.7.0/core/enumerable.rbs | 2365 + .../3.1.0/gems/rbs-2.7.0/core/enumerator.rbs | 533 + .../gems/3.1.0/gems/rbs-2.7.0/core/env.rbs | 6 + .../gems/3.1.0/gems/rbs-2.7.0/core/errno.rbs | 772 + .../gems/3.1.0/gems/rbs-2.7.0/core/errors.rbs | 762 + .../3.1.0/gems/rbs-2.7.0/core/exception.rbs | 269 + .../3.1.0/gems/rbs-2.7.0/core/false_class.rbs | 69 + .../gems/3.1.0/gems/rbs-2.7.0/core/fiber.rbs | 443 + .../3.1.0/gems/rbs-2.7.0/core/fiber_error.rbs | 11 + .../gems/3.1.0/gems/rbs-2.7.0/core/file.rbs | 1994 + .../3.1.0/gems/rbs-2.7.0/core/file_test.rbs | 314 + .../gems/3.1.0/gems/rbs-2.7.0/core/float.rbs | 1172 + .../gems/3.1.0/gems/rbs-2.7.0/core/gc.rbs | 394 + .../gems/rbs-2.7.0/core/global_variables.rbs | 184 + .../gems/3.1.0/gems/rbs-2.7.0/core/hash.rbs | 1968 + .../3.1.0/gems/rbs-2.7.0/core/integer.rbs | 1475 + .../gems/3.1.0/gems/rbs-2.7.0/core/io.rbs | 3033 + .../3.1.0/gems/rbs-2.7.0/core/io/buffer.rbs | 710 + .../3.1.0/gems/rbs-2.7.0/core/io/wait.rbs | 58 + .../gems/3.1.0/gems/rbs-2.7.0/core/kernel.rbs | 2518 + .../3.1.0/gems/rbs-2.7.0/core/marshal.rbs | 197 + .../3.1.0/gems/rbs-2.7.0/core/match_data.rbs | 388 + .../gems/3.1.0/gems/rbs-2.7.0/core/math.rbs | 489 + .../gems/3.1.0/gems/rbs-2.7.0/core/method.rbs | 309 + .../gems/3.1.0/gems/rbs-2.7.0/core/module.rbs | 1540 + .../3.1.0/gems/rbs-2.7.0/core/nil_class.rbs | 150 + .../3.1.0/gems/rbs-2.7.0/core/numeric.rbs | 904 + .../gems/3.1.0/gems/rbs-2.7.0/core/object.rbs | 1205 + .../gems/rbs-2.7.0/core/object_space.rbs | 188 + .../gems/3.1.0/gems/rbs-2.7.0/core/proc.rbs | 627 + .../3.1.0/gems/rbs-2.7.0/core/process.rbs | 1636 + .../gems/3.1.0/gems/rbs-2.7.0/core/ractor.rbs | 1002 + .../gems/3.1.0/gems/rbs-2.7.0/core/random.rbs | 153 + .../gems/3.1.0/gems/rbs-2.7.0/core/range.rbs | 951 + .../3.1.0/gems/rbs-2.7.0/core/rational.rbs | 539 + .../3.1.0/gems/rbs-2.7.0/core/rb_config.rbs | 67 + .../gems/rbs-2.7.0/core/rbs/unnamed/argf.rbs | 965 + .../rbs-2.7.0/core/rbs/unnamed/env_class.rbs | 1325 + .../rbs-2.7.0/core/rbs/unnamed/random.rbs | 270 + .../3.1.0/gems/rbs-2.7.0/core/refinement.rbs | 44 + .../gems/3.1.0/gems/rbs-2.7.0/core/regexp.rbs | 1224 + .../3.1.0/gems/rbs-2.7.0/core/ruby_vm.rbs | 53 + .../core/rubygems/basic_specification.rbs | 6 + .../rbs-2.7.0/core/rubygems/config_file.rbs | 35 + .../core/rubygems/dependency_installer.rbs | 6 + .../gems/rbs-2.7.0/core/rubygems/errors.rbs | 113 + .../rbs-2.7.0/core/rubygems/installer.rbs | 15 + .../rbs-2.7.0/core/rubygems/path_support.rbs | 6 + .../gems/rbs-2.7.0/core/rubygems/platform.rbs | 7 + .../rbs-2.7.0/core/rubygems/request_set.rbs | 49 + .../rbs-2.7.0/core/rubygems/requirement.rbs | 148 + .../gems/rbs-2.7.0/core/rubygems/rubygems.rbs | 1117 + .../rbs-2.7.0/core/rubygems/source_list.rbs | 15 + .../rbs-2.7.0/core/rubygems/specification.rbs | 23 + .../rbs-2.7.0/core/rubygems/stream_ui.rbs | 5 + .../rbs-2.7.0/core/rubygems/uninstaller.rbs | 10 + .../gems/rbs-2.7.0/core/rubygems/version.rbs | 290 + .../gems/3.1.0/gems/rbs-2.7.0/core/signal.rbs | 94 + .../gems/3.1.0/gems/rbs-2.7.0/core/string.rbs | 3458 + .../3.1.0/gems/rbs-2.7.0/core/string_io.rbs | 486 + .../gems/3.1.0/gems/rbs-2.7.0/core/struct.rbs | 295 + .../gems/3.1.0/gems/rbs-2.7.0/core/symbol.rbs | 505 + .../gems/3.1.0/gems/rbs-2.7.0/core/thread.rbs | 1721 + .../gems/rbs-2.7.0/core/thread_group.rbs | 79 + .../gems/3.1.0/gems/rbs-2.7.0/core/time.rbs | 1462 + .../3.1.0/gems/rbs-2.7.0/core/trace_point.rbs | 417 + .../3.1.0/gems/rbs-2.7.0/core/true_class.rbs | 72 + .../gems/rbs-2.7.0/core/unbound_method.rbs | 248 + .../3.1.0/gems/rbs-2.7.0/core/warning.rbs | 42 + .../3.1.0/gems/rbs-2.7.0/docs/CONTRIBUTING.md | 106 + .../3.1.0/gems/rbs-2.7.0/docs/collection.md | 138 + .../gems/rbs-2.7.0/docs/rbs_by_example.md | 328 + .../gems/3.1.0/gems/rbs-2.7.0/docs/repo.md | 125 + .../gems/3.1.0/gems/rbs-2.7.0/docs/sigs.md | 167 + .../gems/3.1.0/gems/rbs-2.7.0/docs/stdlib.md | 89 + .../gems/3.1.0/gems/rbs-2.7.0/docs/syntax.md | 666 + .../ruby/gems/3.1.0/gems/rbs-2.7.0/exe/rbs | 7 + .../rbs-2.7.0/ext/rbs_extension/constants.c | 135 + .../rbs-2.7.0/ext/rbs_extension/constants.h | 71 + .../rbs-2.7.0/ext/rbs_extension/extconf.rb | 4 + .../gems/rbs-2.7.0/ext/rbs_extension/lexer.c | 2535 + .../gems/rbs-2.7.0/ext/rbs_extension/lexer.h | 167 + .../gems/rbs-2.7.0/ext/rbs_extension/lexer.re | 141 + .../rbs-2.7.0/ext/rbs_extension/lexstate.c | 146 + .../rbs-2.7.0/ext/rbs_extension/location.c | 295 + .../rbs-2.7.0/ext/rbs_extension/location.h | 59 + .../gems/rbs-2.7.0/ext/rbs_extension/main.c | 9 + .../gems/rbs-2.7.0/ext/rbs_extension/parser.c | 2542 + .../gems/rbs-2.7.0/ext/rbs_extension/parser.h | 18 + .../rbs-2.7.0/ext/rbs_extension/parserstate.c | 316 + .../rbs-2.7.0/ext/rbs_extension/parserstate.h | 151 + .../ext/rbs_extension/rbs_extension.h | 40 + .../rbs-2.7.0/ext/rbs_extension/ruby_objs.c | 525 + .../rbs-2.7.0/ext/rbs_extension/ruby_objs.h | 43 + .../rbs-2.7.0/ext/rbs_extension/unescape.c | 72 + .../gems/3.1.0/gems/rbs-2.7.0/goodcheck.yml | 91 + .../ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs.rb | 88 + .../gems/rbs-2.7.0/lib/rbs/ancestor_graph.rb | 92 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/annotate.rb | 8 + .../rbs-2.7.0/lib/rbs/annotate/annotations.rb | 199 + .../rbs-2.7.0/lib/rbs/annotate/formatter.rb | 82 + .../lib/rbs/annotate/rdoc_annotator.rb | 400 + .../rbs-2.7.0/lib/rbs/annotate/rdoc_source.rb | 122 + .../gems/rbs-2.7.0/lib/rbs/ast/annotation.rb | 29 + .../gems/rbs-2.7.0/lib/rbs/ast/comment.rb | 29 + .../rbs-2.7.0/lib/rbs/ast/declarations.rb | 384 + .../gems/rbs-2.7.0/lib/rbs/ast/members.rb | 415 + .../gems/rbs-2.7.0/lib/rbs/ast/type_param.rb | 136 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/buffer.rb | 62 + .../gems/rbs-2.7.0/lib/rbs/builtin_names.rb | 58 + .../gems/3.1.0/gems/rbs-2.7.0/lib/rbs/cli.rb | 1108 + .../gems/rbs-2.7.0/lib/rbs/collection.rb | 15 + .../rbs-2.7.0/lib/rbs/collection/cleaner.rb | 31 + .../rbs-2.7.0/lib/rbs/collection/config.rb | 87 + .../collection/config/lockfile_generator.rb | 108 + .../rbs-2.7.0/lib/rbs/collection/installer.rb | 33 + .../rbs-2.7.0/lib/rbs/collection/sources.rb | 25 + .../lib/rbs/collection/sources/base.rb | 14 + .../lib/rbs/collection/sources/git.rb | 181 + .../lib/rbs/collection/sources/rubygems.rb | 50 + .../lib/rbs/collection/sources/stdlib.rb | 49 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/constant.rb | 28 + .../gems/rbs-2.7.0/lib/rbs/constant_table.rb | 167 + .../gems/rbs-2.7.0/lib/rbs/definition.rb | 398 + .../rbs-2.7.0/lib/rbs/definition_builder.rb | 936 + .../definition_builder/ancestor_builder.rb | 538 + .../rbs/definition_builder/method_builder.rb | 254 + .../gems/rbs-2.7.0/lib/rbs/environment.rb | 517 + .../rbs-2.7.0/lib/rbs/environment_loader.rb | 169 + .../rbs-2.7.0/lib/rbs/environment_walker.rb | 155 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/errors.rb | 461 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/factory.rb | 18 + .../gems/rbs-2.7.0/lib/rbs/location_aux.rb | 137 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/locator.rb | 219 + .../gems/rbs-2.7.0/lib/rbs/method_type.rb | 118 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/namespace.rb | 124 + .../gems/rbs-2.7.0/lib/rbs/parser_aux.rb | 65 + .../lib/rbs/parser_compat/lexer_error.rb | 6 + .../lib/rbs/parser_compat/located_value.rb | 7 + .../lib/rbs/parser_compat/semantics_error.rb | 6 + .../lib/rbs/parser_compat/syntax_error.rb | 6 + .../rbs-2.7.0/lib/rbs/prototype/helpers.rb | 114 + .../gems/rbs-2.7.0/lib/rbs/prototype/rb.rb | 746 + .../gems/rbs-2.7.0/lib/rbs/prototype/rbi.rb | 628 + .../rbs-2.7.0/lib/rbs/prototype/runtime.rb | 553 + .../gems/rbs-2.7.0/lib/rbs/repository.rb | 127 + .../lib/rbs/resolver/constant_resolver.rb | 203 + .../lib/rbs/resolver/type_name_resolver.rb | 57 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/sorter.rb | 168 + .../gems/rbs-2.7.0/lib/rbs/substitution.rb | 64 + .../gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test.rb | 109 + .../gems/rbs-2.7.0/lib/rbs/test/errors.rb | 67 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/test/hook.rb | 207 + .../gems/rbs-2.7.0/lib/rbs/test/observer.rb | 19 + .../gems/rbs-2.7.0/lib/rbs/test/setup.rb | 84 + .../rbs-2.7.0/lib/rbs/test/setup_helper.rb | 50 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/test/spy.rb | 6 + .../gems/rbs-2.7.0/lib/rbs/test/tester.rb | 167 + .../gems/rbs-2.7.0/lib/rbs/test/type_check.rb | 336 + .../lib/rbs/type_alias_dependency.rb | 90 + .../lib/rbs/type_alias_regularity.rb | 119 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/type_name.rb | 104 + .../rbs-2.7.0/lib/rbs/type_name_resolver.rb | 67 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/types.rb | 1223 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/validator.rb | 157 + .../rbs-2.7.0/lib/rbs/variance_calculator.rb | 186 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/vendorer.rb | 71 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/version.rb | 5 + .../3.1.0/gems/rbs-2.7.0/lib/rbs/writer.rb | 372 + .../3.1.0/gems/rbs-2.7.0/lib/rdoc/discover.rb | 20 + .../gems/rbs-2.7.0/lib/rdoc_plugin/parser.rb | 163 + .../gems/rbs-2.7.0/schema/annotation.json | 14 + .../3.1.0/gems/rbs-2.7.0/schema/comment.json | 26 + .../3.1.0/gems/rbs-2.7.0/schema/decls.json | 326 + .../3.1.0/gems/rbs-2.7.0/schema/function.json | 87 + .../3.1.0/gems/rbs-2.7.0/schema/location.json | 56 + .../3.1.0/gems/rbs-2.7.0/schema/members.json | 261 + .../gems/rbs-2.7.0/schema/methodType.json | 50 + .../gems/rbs-2.7.0/schema/typeParam.json | 36 + .../3.1.0/gems/rbs-2.7.0/schema/types.json | 317 + .../gems/rbs-2.7.0/sig/ancestor_builder.rbs | 159 + .../gems/rbs-2.7.0/sig/ancestor_graph.rbs | 40 + .../rbs-2.7.0/sig/annotate/annotations.rbs | 102 + .../gems/rbs-2.7.0/sig/annotate/formatter.rbs | 24 + .../rbs-2.7.0/sig/annotate/rdoc_annotater.rbs | 82 + .../rbs-2.7.0/sig/annotate/rdoc_source.rbs | 30 + .../3.1.0/gems/rbs-2.7.0/sig/annotation.rbs | 27 + .../gems/3.1.0/gems/rbs-2.7.0/sig/buffer.rbs | 32 + .../gems/rbs-2.7.0/sig/builtin_names.rbs | 44 + .../gems/3.1.0/gems/rbs-2.7.0/sig/cli.rbs | 83 + .../3.1.0/gems/rbs-2.7.0/sig/collection.rbs | 4 + .../gems/rbs-2.7.0/sig/collection/cleaner.rbs | 13 + .../gems/rbs-2.7.0/sig/collection/config.rbs | 81 + .../rbs-2.7.0/sig/collection/installer.rbs | 17 + .../gems/rbs-2.7.0/sig/collection/sources.rbs | 142 + .../gems/3.1.0/gems/rbs-2.7.0/sig/comment.rbs | 26 + .../3.1.0/gems/rbs-2.7.0/sig/constant.rbs | 21 + .../gems/rbs-2.7.0/sig/constant_table.rbs | 30 + .../3.1.0/gems/rbs-2.7.0/sig/declarations.rbs | 228 + .../3.1.0/gems/rbs-2.7.0/sig/definition.rbs | 157 + .../gems/rbs-2.7.0/sig/definition_builder.rbs | 143 + .../3.1.0/gems/rbs-2.7.0/sig/environment.rbs | 131 + .../gems/rbs-2.7.0/sig/environment_loader.rbs | 109 + .../gems/rbs-2.7.0/sig/environment_walker.rbs | 65 + .../gems/3.1.0/gems/rbs-2.7.0/sig/errors.rbs | 248 + .../gems/3.1.0/gems/rbs-2.7.0/sig/factory.rbs | 5 + .../3.1.0/gems/rbs-2.7.0/sig/location.rbs | 113 + .../gems/3.1.0/gems/rbs-2.7.0/sig/locator.rbs | 46 + .../3.1.0/gems/rbs-2.7.0/sig/manifest.yaml | 9 + .../gems/3.1.0/gems/rbs-2.7.0/sig/members.rbs | 235 + .../gems/rbs-2.7.0/sig/method_builder.rbs | 84 + .../3.1.0/gems/rbs-2.7.0/sig/method_types.rbs | 52 + .../3.1.0/gems/rbs-2.7.0/sig/namespace.rbs | 147 + .../gems/3.1.0/gems/rbs-2.7.0/sig/parser.rbs | 27 + .../gems/rbs-2.7.0/sig/prototype/helpers.rbs | 23 + .../3.1.0/gems/rbs-2.7.0/sig/prototype/rb.rbs | 88 + .../gems/rbs-2.7.0/sig/prototype/rbi.rbs | 73 + .../gems/3.1.0/gems/rbs-2.7.0/sig/rbs.rbs | 21 + .../3.1.0/gems/rbs-2.7.0/sig/rdoc/rbs.rbs | 63 + .../3.1.0/gems/rbs-2.7.0/sig/repository.rbs | 83 + .../sig/resolver/constant_resolver.rbs | 93 + .../gems/rbs-2.7.0/sig/resolver/context.rbs | 34 + .../sig/resolver/type_name_resolver.rbs | 31 + .../gems/3.1.0/gems/rbs-2.7.0/sig/shims.rbs | 69 + .../sig/shims/abstract_syntax_tree.rbs | 25 + .../gems/rbs-2.7.0/sig/shims/enumerable.rbs | 5 + .../3.1.0/gems/rbs-2.7.0/sig/shims/pp.rbs | 3 + .../3.1.0/gems/rbs-2.7.0/sig/shims/ripper.rbs | 8 + .../gems/3.1.0/gems/rbs-2.7.0/sig/sorter.rbs | 23 + .../3.1.0/gems/rbs-2.7.0/sig/substitution.rbs | 42 + .../rbs-2.7.0/sig/type_alias_dependency.rbs | 22 + .../rbs-2.7.0/sig/type_alias_regularity.rbs | 92 + .../gems/rbs-2.7.0/sig/type_name_resolver.rbs | 26 + .../3.1.0/gems/rbs-2.7.0/sig/type_param.rbs | 74 + .../3.1.0/gems/rbs-2.7.0/sig/typename.rbs | 76 + .../gems/3.1.0/gems/rbs-2.7.0/sig/types.rbs | 469 + .../gems/3.1.0/gems/rbs-2.7.0/sig/util.rbs | 9 + .../3.1.0/gems/rbs-2.7.0/sig/validator.rbs | 52 + .../rbs-2.7.0/sig/variance_calculator.rbs | 85 + .../3.1.0/gems/rbs-2.7.0/sig/vendorer.rbs | 51 + .../gems/3.1.0/gems/rbs-2.7.0/sig/version.rbs | 3 + .../gems/3.1.0/gems/rbs-2.7.0/sig/writer.rbs | 123 + .../gems/rbs-2.7.0/stdlib/abbrev/0/abbrev.rbs | 66 + .../gems/rbs-2.7.0/stdlib/abbrev/0/array.rbs | 26 + .../gems/rbs-2.7.0/stdlib/base64/0/base64.rbs | 102 + .../stdlib/benchmark/0/benchmark.rbs | 443 + .../stdlib/bigdecimal-math/0/big_math.rbs | 119 + .../stdlib/bigdecimal-math/0/manifest.yaml | 2 + .../stdlib/bigdecimal/0/big_decimal.rbs | 1765 + .../gems/rbs-2.7.0/stdlib/cgi/0/core.rbs | 1223 + .../gems/rbs-2.7.0/stdlib/cgi/0/manifest.yaml | 2 + .../rbs-2.7.0/stdlib/coverage/0/coverage.rbs | 224 + .../3.1.0/gems/rbs-2.7.0/stdlib/csv/0/csv.rbs | 3284 + .../gems/rbs-2.7.0/stdlib/csv/0/manifest.yaml | 2 + .../gems/rbs-2.7.0/stdlib/date/0/date.rbs | 1514 + .../rbs-2.7.0/stdlib/date/0/date_time.rbs | 757 + .../gems/rbs-2.7.0/stdlib/date/0/time.rbs | 26 + .../3.1.0/gems/rbs-2.7.0/stdlib/dbm/0/dbm.rbs | 423 + .../stdlib/did_you_mean/0/did_you_mean.rbs | 348 + .../gems/rbs-2.7.0/stdlib/digest/0/digest.rbs | 564 + .../3.1.0/gems/rbs-2.7.0/stdlib/erb/0/erb.rbs | 556 + .../3.1.0/gems/rbs-2.7.0/stdlib/etc/0/etc.rbs | 745 + .../stdlib/fileutils/0/fileutils.rbs | 885 + .../gems/rbs-2.7.0/stdlib/find/0/find.rbs | 49 + .../stdlib/forwardable/0/forwardable.rbs | 268 + .../stdlib/io-console/0/io-console.rbs | 349 + .../gems/rbs-2.7.0/stdlib/ipaddr/0/ipaddr.rbs | 408 + .../gems/rbs-2.7.0/stdlib/json/0/json.rbs | 1631 + .../rbs-2.7.0/stdlib/logger/0/formatter.rbs | 47 + .../rbs-2.7.0/stdlib/logger/0/log_device.rbs | 102 + .../gems/rbs-2.7.0/stdlib/logger/0/logger.rbs | 659 + .../rbs-2.7.0/stdlib/logger/0/manifest.yaml | 2 + .../gems/rbs-2.7.0/stdlib/logger/0/period.rbs | 17 + .../rbs-2.7.0/stdlib/logger/0/severity.rbs | 34 + .../rbs-2.7.0/stdlib/minitest/0/kernel.rbs | 42 + .../rbs-2.7.0/stdlib/minitest/0/manifest.yaml | 2 + .../rbs-2.7.0/stdlib/minitest/0/minitest.rbs | 966 + .../minitest/0/minitest/abstract_reporter.rbs | 49 + .../stdlib/minitest/0/minitest/assertion.rbs | 16 + .../stdlib/minitest/0/minitest/assertions.rbs | 545 + .../minitest/0/minitest/backtrace_filter.rbs | 16 + .../stdlib/minitest/0/minitest/bench_spec.rbs | 102 + .../stdlib/minitest/0/minitest/benchmark.rbs | 258 + .../0/minitest/composite_reporter.rbs | 25 + .../minitest/0/minitest/expectation.rbs | 2 + .../minitest/0/minitest/expectations.rbs | 21 + .../stdlib/minitest/0/minitest/guard.rbs | 64 + .../stdlib/minitest/0/minitest/mock.rbs | 60 + .../stdlib/minitest/0/minitest/parallel.rbs | 2 + .../minitest/0/minitest/parallel/executor.rbs | 42 + .../minitest/0/minitest/parallel/test.rbs | 3 + .../minitest/parallel/test/class_methods.rbs | 6 + .../stdlib/minitest/0/minitest/pride_io.rbs | 54 + .../stdlib/minitest/0/minitest/pride_lol.rbs | 17 + .../minitest/0/minitest/progress_reporter.rbs | 11 + .../stdlib/minitest/0/minitest/reportable.rbs | 51 + .../stdlib/minitest/0/minitest/reporter.rbs | 5 + .../stdlib/minitest/0/minitest/result.rbs | 28 + .../stdlib/minitest/0/minitest/runnable.rbs | 131 + .../stdlib/minitest/0/minitest/skip.rbs | 6 + .../stdlib/minitest/0/minitest/spec.rbs | 11 + .../stdlib/minitest/0/minitest/spec/dsl.rbs | 125 + .../0/minitest/spec/dsl/instance_methods.rbs | 48 + .../0/minitest/statistics_reporter.rbs | 76 + .../minitest/0/minitest/summary_reporter.rbs | 25 + .../stdlib/minitest/0/minitest/test.rbs | 76 + .../0/minitest/test/lifecycle_hooks.rbs | 92 + .../minitest/0/minitest/unexpected_error.rbs | 10 + .../stdlib/minitest/0/minitest/unit.rbs | 5 + .../minitest/0/minitest/unit/test_case.rbs | 3 + .../rbs-2.7.0/stdlib/monitor/0/monitor.rbs | 282 + .../rbs-2.7.0/stdlib/mutex_m/0/mutex_m.rbs | 106 + .../rbs-2.7.0/stdlib/net-http/0/manifest.yaml | 3 + .../rbs-2.7.0/stdlib/net-http/0/net-http.rbs | 2677 + .../3.1.0/gems/rbs-2.7.0/stdlib/nkf/0/nkf.rbs | 372 + .../rbs-2.7.0/stdlib/objspace/0/objspace.rbs | 465 + .../rbs-2.7.0/stdlib/openssl/0/manifest.yaml | 2 + .../rbs-2.7.0/stdlib/openssl/0/openssl.rbs | 11748 ++ .../rbs-2.7.0/stdlib/optparse/0/optparse.rbs | 1690 + .../rbs-2.7.0/stdlib/pathname/0/pathname.rbs | 1397 + .../stdlib/prettyprint/0/prettyprint.rbs | 387 + .../stdlib/prime/0/integer-extension.rbs | 41 + .../rbs-2.7.0/stdlib/prime/0/manifest.yaml | 2 + .../gems/rbs-2.7.0/stdlib/prime/0/prime.rbs | 372 + .../gems/rbs-2.7.0/stdlib/pstore/0/pstore.rbs | 389 + .../3.1.0/gems/rbs-2.7.0/stdlib/pty/0/pty.rbs | 185 + .../gems/rbs-2.7.0/stdlib/rdoc/0/rdoc.rbs | 758 + .../rbs-2.7.0/stdlib/resolv/0/manifest.yaml | 3 + .../gems/rbs-2.7.0/stdlib/resolv/0/resolv.rbs | 1893 + .../stdlib/securerandom/0/securerandom.rbs | 57 + .../3.1.0/gems/rbs-2.7.0/stdlib/set/0/set.rbs | 632 + .../stdlib/shellwords/0/shellwords.rbs | 230 + .../stdlib/singleton/0/singleton.rbs | 134 + .../rbs-2.7.0/stdlib/socket/0/addrinfo.rbs | 670 + .../stdlib/socket/0/basic_socket.rbs | 595 + .../rbs-2.7.0/stdlib/socket/0/ip_socket.rbs | 94 + .../gems/rbs-2.7.0/stdlib/socket/0/socket.rbs | 3235 + .../rbs-2.7.0/stdlib/socket/0/tcp_server.rbs | 197 + .../rbs-2.7.0/stdlib/socket/0/tcp_socket.rbs | 46 + .../rbs-2.7.0/stdlib/socket/0/udp_socket.rbs | 134 + .../rbs-2.7.0/stdlib/socket/0/unix_server.rbs | 174 + .../rbs-2.7.0/stdlib/socket/0/unix_socket.rbs | 172 + .../stdlib/strscan/0/string_scanner.rbs | 783 + .../rbs-2.7.0/stdlib/tempfile/0/tempfile.rbs | 316 + .../gems/rbs-2.7.0/stdlib/time/0/time.rbs | 419 + .../rbs-2.7.0/stdlib/timeout/0/timeout.rbs | 72 + .../gems/rbs-2.7.0/stdlib/tmpdir/0/tmpdir.rbs | 62 + .../gems/rbs-2.7.0/stdlib/tsort/0/cyclic.rbs | 5 + .../rbs-2.7.0/stdlib/tsort/0/interfaces.rbs | 20 + .../gems/rbs-2.7.0/stdlib/tsort/0/tsort.rbs | 413 + .../gems/rbs-2.7.0/stdlib/uri/0/common.rbs | 455 + .../gems/rbs-2.7.0/stdlib/uri/0/file.rbs | 113 + .../3.1.0/gems/rbs-2.7.0/stdlib/uri/0/ftp.rbs | 13 + .../gems/rbs-2.7.0/stdlib/uri/0/generic.rbs | 1104 + .../gems/rbs-2.7.0/stdlib/uri/0/http.rbs | 104 + .../gems/rbs-2.7.0/stdlib/uri/0/https.rbs | 14 + .../gems/rbs-2.7.0/stdlib/uri/0/ldap.rbs | 230 + .../gems/rbs-2.7.0/stdlib/uri/0/ldaps.rbs | 14 + .../gems/rbs-2.7.0/stdlib/uri/0/mailto.rbs | 8 + .../rbs-2.7.0/stdlib/uri/0/rfc2396_parser.rbs | 186 + .../rbs-2.7.0/stdlib/uri/0/rfc3986_parser.rbs | 2 + .../3.1.0/gems/rbs-2.7.0/stdlib/uri/0/ws.rbs | 13 + .../3.1.0/gems/rbs-2.7.0/stdlib/uri/0/wss.rbs | 9 + .../gems/rbs-2.7.0/stdlib/yaml/0/dbm.rbs | 285 + .../rbs-2.7.0/stdlib/yaml/0/manifest.yaml | 3 + .../gems/rbs-2.7.0/stdlib/yaml/0/store.rbs | 59 + .../gems/rbs-2.7.0/stdlib/zlib/0/zlib.rbs | 451 + .../gems/3.1.0/gems/rbs-2.7.0/steep/Gemfile | 3 + .../3.1.0/gems/rbs-2.7.0/steep/Gemfile.lock | 49 + .../gems/3.1.0/gems/rdoc-6.4.1.1/exe/rdoc | 44 + .../ruby/gems/3.1.0/gems/rdoc-6.4.1.1/exe/ri | 12 + .../gems/3.1.0/gems/rexml-3.2.5/LICENSE.txt | 22 + .../ruby/gems/3.1.0/gems/rexml-3.2.5/NEWS.md | 178 + .../gems/3.1.0/gems/rexml-3.2.5/README.md | 48 + .../gems/rexml-3.2.5/doc/rexml/context.rdoc | 143 + .../doc/rexml/tasks/rdoc/child.rdoc | 87 + .../doc/rexml/tasks/rdoc/document.rdoc | 276 + .../doc/rexml/tasks/rdoc/element.rdoc | 602 + .../doc/rexml/tasks/rdoc/node.rdoc | 97 + .../doc/rexml/tasks/rdoc/parent.rdoc | 267 + .../doc/rexml/tasks/tocs/child_toc.rdoc | 12 + .../doc/rexml/tasks/tocs/document_toc.rdoc | 30 + .../doc/rexml/tasks/tocs/element_toc.rdoc | 55 + .../doc/rexml/tasks/tocs/master_toc.rdoc | 135 + .../doc/rexml/tasks/tocs/node_toc.rdoc | 16 + .../doc/rexml/tasks/tocs/parent_toc.rdoc | 25 + .../gems/3.1.0/gems/rexml-3.2.5/lib/rexml.rb | 3 + .../gems/rexml-3.2.5/lib/rexml/attlistdecl.rb | 63 + .../gems/rexml-3.2.5/lib/rexml/attribute.rb | 205 + .../3.1.0/gems/rexml-3.2.5/lib/rexml/cdata.rb | 68 + .../3.1.0/gems/rexml-3.2.5/lib/rexml/child.rb | 97 + .../gems/rexml-3.2.5/lib/rexml/comment.rb | 80 + .../gems/rexml-3.2.5/lib/rexml/doctype.rb | 311 + .../gems/rexml-3.2.5/lib/rexml/document.rb | 451 + .../rexml-3.2.5/lib/rexml/dtd/attlistdecl.rb | 11 + .../gems/rexml-3.2.5/lib/rexml/dtd/dtd.rb | 47 + .../rexml-3.2.5/lib/rexml/dtd/elementdecl.rb | 18 + .../rexml-3.2.5/lib/rexml/dtd/entitydecl.rb | 57 + .../rexml-3.2.5/lib/rexml/dtd/notationdecl.rb | 40 + .../gems/rexml-3.2.5/lib/rexml/element.rb | 2599 + .../gems/rexml-3.2.5/lib/rexml/encoding.rb | 51 + .../gems/rexml-3.2.5/lib/rexml/entity.rb | 171 + .../lib/rexml/formatters/default.rb | 116 + .../lib/rexml/formatters/pretty.rb | 142 + .../lib/rexml/formatters/transitive.rb | 58 + .../gems/rexml-3.2.5/lib/rexml/functions.rb | 447 + .../gems/rexml-3.2.5/lib/rexml/instruction.rb | 79 + .../gems/rexml-3.2.5/lib/rexml/light/node.rb | 188 + .../gems/rexml-3.2.5/lib/rexml/namespace.rb | 59 + .../3.1.0/gems/rexml-3.2.5/lib/rexml/node.rb | 76 + .../gems/rexml-3.2.5/lib/rexml/output.rb | 30 + .../gems/rexml-3.2.5/lib/rexml/parent.rb | 166 + .../rexml-3.2.5/lib/rexml/parseexception.rb | 52 + .../lib/rexml/parsers/baseparser.rb | 694 + .../lib/rexml/parsers/lightparser.rb | 59 + .../lib/rexml/parsers/pullparser.rb | 197 + .../lib/rexml/parsers/sax2parser.rb | 273 + .../lib/rexml/parsers/streamparser.rb | 61 + .../lib/rexml/parsers/treeparser.rb | 101 + .../lib/rexml/parsers/ultralightparser.rb | 57 + .../lib/rexml/parsers/xpathparser.rb | 689 + .../gems/rexml-3.2.5/lib/rexml/quickpath.rb | 266 + .../3.1.0/gems/rexml-3.2.5/lib/rexml/rexml.rb | 37 + .../rexml-3.2.5/lib/rexml/sax2listener.rb | 98 + .../gems/rexml-3.2.5/lib/rexml/security.rb | 28 + .../gems/rexml-3.2.5/lib/rexml/source.rb | 298 + .../rexml-3.2.5/lib/rexml/streamlistener.rb | 93 + .../3.1.0/gems/rexml-3.2.5/lib/rexml/text.rb | 424 + .../lib/rexml/undefinednamespaceexception.rb | 9 + .../lib/rexml/validation/relaxng.rb | 539 + .../lib/rexml/validation/validation.rb | 144 + .../rexml/validation/validationexception.rb | 10 + .../gems/rexml-3.2.5/lib/rexml/xmldecl.rb | 130 + .../gems/rexml-3.2.5/lib/rexml/xmltokens.rb | 85 + .../3.1.0/gems/rexml-3.2.5/lib/rexml/xpath.rb | 81 + .../rexml-3.2.5/lib/rexml/xpath_parser.rb | 974 + .../ruby/gems/3.1.0/gems/rss-0.2.9/Gemfile | 6 + .../gems/3.1.0/gems/rss-0.2.9/LICENSE.txt | 22 + .../ruby/gems/3.1.0/gems/rss-0.2.9/NEWS.md | 33 + .../ruby/gems/3.1.0/gems/rss-0.2.9/README.md | 88 + .../ruby/gems/3.1.0/gems/rss-0.2.9/Rakefile | 15 + .../ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss.rb | 94 + .../gems/3.1.0/gems/rss-0.2.9/lib/rss/0.9.rb | 462 + .../gems/3.1.0/gems/rss-0.2.9/lib/rss/1.0.rb | 485 + .../gems/3.1.0/gems/rss-0.2.9/lib/rss/2.0.rb | 143 + .../gems/3.1.0/gems/rss-0.2.9/lib/rss/atom.rb | 1025 + .../3.1.0/gems/rss-0.2.9/lib/rss/content.rb | 34 + .../gems/rss-0.2.9/lib/rss/content/1.0.rb | 10 + .../gems/rss-0.2.9/lib/rss/content/2.0.rb | 12 + .../3.1.0/gems/rss-0.2.9/lib/rss/converter.rb | 171 + .../gems/rss-0.2.9/lib/rss/dublincore.rb | 164 + .../gems/rss-0.2.9/lib/rss/dublincore/1.0.rb | 13 + .../gems/rss-0.2.9/lib/rss/dublincore/2.0.rb | 13 + .../gems/rss-0.2.9/lib/rss/dublincore/atom.rb | 17 + .../3.1.0/gems/rss-0.2.9/lib/rss/image.rb | 198 + .../3.1.0/gems/rss-0.2.9/lib/rss/itunes.rb | 473 + .../3.1.0/gems/rss-0.2.9/lib/rss/maker.rb | 79 + .../3.1.0/gems/rss-0.2.9/lib/rss/maker/0.9.rb | 509 + .../3.1.0/gems/rss-0.2.9/lib/rss/maker/1.0.rb | 436 + .../3.1.0/gems/rss-0.2.9/lib/rss/maker/2.0.rb | 224 + .../gems/rss-0.2.9/lib/rss/maker/atom.rb | 173 + .../gems/rss-0.2.9/lib/rss/maker/base.rb | 945 + .../gems/rss-0.2.9/lib/rss/maker/content.rb | 22 + .../rss-0.2.9/lib/rss/maker/dublincore.rb | 122 + .../gems/rss-0.2.9/lib/rss/maker/entry.rb | 164 + .../gems/rss-0.2.9/lib/rss/maker/feed.rb | 427 + .../gems/rss-0.2.9/lib/rss/maker/image.rb | 112 + .../gems/rss-0.2.9/lib/rss/maker/itunes.rb | 256 + .../gems/rss-0.2.9/lib/rss/maker/slash.rb | 34 + .../rss-0.2.9/lib/rss/maker/syndication.rb | 19 + .../gems/rss-0.2.9/lib/rss/maker/taxonomy.rb | 119 + .../gems/rss-0.2.9/lib/rss/maker/trackback.rb | 62 + .../3.1.0/gems/rss-0.2.9/lib/rss/parser.rb | 589 + .../gems/rss-0.2.9/lib/rss/rexmlparser.rb | 50 + .../gems/3.1.0/gems/rss-0.2.9/lib/rss/rss.rb | 1342 + .../3.1.0/gems/rss-0.2.9/lib/rss/slash.rb | 52 + .../gems/rss-0.2.9/lib/rss/syndication.rb | 69 + .../3.1.0/gems/rss-0.2.9/lib/rss/taxonomy.rb | 148 + .../3.1.0/gems/rss-0.2.9/lib/rss/trackback.rb | 291 + .../3.1.0/gems/rss-0.2.9/lib/rss/utils.rb | 200 + .../3.1.0/gems/rss-0.2.9/lib/rss/version.rb | 4 + .../gems/rss-0.2.9/lib/rss/xml-stylesheet.rb | 106 + .../gems/3.1.0/gems/rss-0.2.9/lib/rss/xml.rb | 72 + .../3.1.0/gems/rss-0.2.9/lib/rss/xmlparser.rb | 95 + .../gems/rss-0.2.9/lib/rss/xmlscanner.rb | 122 + .../gems/3.1.0/gems/rss-0.2.9/test/dot.png | Bin 0 -> 111 bytes .../gems/rss-0.2.9/test/rss-assertions.rb | 2116 + .../3.1.0/gems/rss-0.2.9/test/rss-testcase.rb | 479 + .../3.1.0/gems/rss-0.2.9/test/run-test.rb | 15 + .../3.1.0/gems/rss-0.2.9/test/test_1.0.rb | 308 + .../3.1.0/gems/rss-0.2.9/test/test_2.0.rb | 412 + .../gems/rss-0.2.9/test/test_accessor.rb | 104 + .../3.1.0/gems/rss-0.2.9/test/test_atom.rb | 684 + .../3.1.0/gems/rss-0.2.9/test/test_content.rb | 105 + .../gems/rss-0.2.9/test/test_dublincore.rb | 270 + .../3.1.0/gems/rss-0.2.9/test/test_image.rb | 215 + .../3.1.0/gems/rss-0.2.9/test/test_inherit.rb | 41 + .../3.1.0/gems/rss-0.2.9/test/test_itunes.rb | 360 + .../gems/rss-0.2.9/test/test_maker_0.9.rb | 477 + .../gems/rss-0.2.9/test/test_maker_1.0.rb | 519 + .../gems/rss-0.2.9/test/test_maker_2.0.rb | 758 + .../rss-0.2.9/test/test_maker_atom_entry.rb | 394 + .../rss-0.2.9/test/test_maker_atom_feed.rb | 455 + .../gems/rss-0.2.9/test/test_maker_content.rb | 48 + .../gems/rss-0.2.9/test/test_maker_dc.rb | 150 + .../gems/rss-0.2.9/test/test_maker_image.rb | 63 + .../gems/rss-0.2.9/test/test_maker_itunes.rb | 488 + .../gems/rss-0.2.9/test/test_maker_slash.rb | 38 + .../gems/rss-0.2.9/test/test_maker_sy.rb | 45 + .../gems/rss-0.2.9/test/test_maker_taxo.rb | 82 + .../rss-0.2.9/test/test_maker_trackback.rb | 42 + .../test/test_maker_xml-stylesheet.rb | 84 + .../3.1.0/gems/rss-0.2.9/test/test_parser.rb | 122 + .../gems/rss-0.2.9/test/test_parser_1.0.rb | 529 + .../gems/rss-0.2.9/test/test_parser_2.0.rb | 123 + .../rss-0.2.9/test/test_parser_atom_entry.rb | 164 + .../rss-0.2.9/test/test_parser_atom_feed.rb | 277 + .../rss-0.2.9/test/test_setup_maker_0.9.rb | 247 + .../rss-0.2.9/test/test_setup_maker_1.0.rb | 551 + .../rss-0.2.9/test/test_setup_maker_2.0.rb | 309 + .../test/test_setup_maker_atom_entry.rb | 410 + .../test/test_setup_maker_atom_feed.rb | 446 + .../rss-0.2.9/test/test_setup_maker_itunes.rb | 146 + .../rss-0.2.9/test/test_setup_maker_slash.rb | 39 + .../3.1.0/gems/rss-0.2.9/test/test_slash.rb | 65 + .../gems/rss-0.2.9/test/test_syndication.rb | 126 + .../gems/rss-0.2.9/test/test_taxonomy.rb | 173 + .../3.1.0/gems/rss-0.2.9/test/test_to_s.rb | 701 + .../gems/rss-0.2.9/test/test_trackback.rb | 136 + .../rss-0.2.9/test/test_xml-stylesheet.rb | 109 + .../ruby/gems/3.1.0/gems/test-unit-3.5.3/BSDL | 24 + .../gems/3.1.0/gems/test-unit-3.5.3/COPYING | 64 + .../ruby/gems/3.1.0/gems/test-unit-3.5.3/PSFL | 271 + .../gems/3.1.0/gems/test-unit-3.5.3/README.md | 98 + .../gems/3.1.0/gems/test-unit-3.5.3/Rakefile | 57 + .../doc/text/getting-started.md | 246 + .../gems/test-unit-3.5.3/doc/text/how-to.md | 90 + .../gems/test-unit-3.5.3/doc/text/news.md | 1675 + .../gems/test-unit-3.5.3/lib/test-unit.rb | 19 + .../gems/test-unit-3.5.3/lib/test/unit.rb | 521 + .../lib/test/unit/assertion-failed-error.rb | 60 + .../lib/test/unit/assertions.rb | 2449 + .../lib/test/unit/attribute-matcher.rb | 26 + .../lib/test/unit/attribute.rb | 227 + .../lib/test/unit/auto-runner-loader.rb | 17 + .../lib/test/unit/autorunner.rb | 581 + .../lib/test/unit/code-snippet-fetcher.rb | 58 + .../lib/test/unit/collector.rb | 104 + .../lib/test/unit/collector/descendant.rb | 20 + .../lib/test/unit/collector/dir.rb | 110 + .../lib/test/unit/collector/load.rb | 199 + .../lib/test/unit/collector/objectspace.rb | 35 + .../lib/test/unit/collector/xml.rb | 249 + .../lib/test/unit/color-scheme.rb | 216 + .../test-unit-3.5.3/lib/test/unit/color.rb | 134 + .../lib/test/unit/data-sets.rb | 127 + .../test-unit-3.5.3/lib/test/unit/data.rb | 371 + .../test-unit-3.5.3/lib/test/unit/diff.rb | 745 + .../test-unit-3.5.3/lib/test/unit/error.rb | 158 + .../lib/test/unit/exception-handler.rb | 82 + .../test-unit-3.5.3/lib/test/unit/failure.rb | 169 + .../lib/test/unit/fault-location-detector.rb | 100 + .../test-unit-3.5.3/lib/test/unit/fixture.rb | 304 + .../lib/test/unit/notification.rb | 138 + .../test-unit-3.5.3/lib/test/unit/omission.rb | 198 + .../test-unit-3.5.3/lib/test/unit/pending.rb | 155 + .../test-unit-3.5.3/lib/test/unit/priority.rb | 194 + .../lib/test/unit/runner/console.rb | 67 + .../lib/test/unit/runner/emacs.rb | 8 + .../lib/test/unit/runner/xml.rb | 15 + .../lib/test/unit/test-suite-creator.rb | 103 + .../test-unit-3.5.3/lib/test/unit/testcase.rb | 938 + .../lib/test/unit/testresult.rb | 132 + .../lib/test/unit/testsuite.rb | 175 + .../lib/test/unit/ui/console/outputlevel.rb | 15 + .../lib/test/unit/ui/console/testrunner.rb | 759 + .../lib/test/unit/ui/emacs/testrunner.rb | 49 + .../lib/test/unit/ui/testrunner.rb | 53 + .../lib/test/unit/ui/testrunnermediator.rb | 114 + .../lib/test/unit/ui/testrunnerutilities.rb | 41 + .../lib/test/unit/ui/xml/testrunner.rb | 224 + .../lib/test/unit/util/backtracefilter.rb | 59 + .../lib/test/unit/util/memory-usage.rb | 47 + .../lib/test/unit/util/method-owner-finder.rb | 28 + .../lib/test/unit/util/observable.rb | 90 + .../lib/test/unit/util/output.rb | 32 + .../lib/test/unit/util/procwrapper.rb | 48 + .../test-unit-3.5.3/lib/test/unit/version.rb | 5 + .../test-unit-3.5.3/lib/test/unit/warning.rb | 3 + .../gems/test-unit-3.5.3/sample/adder.rb | 13 + .../gems/test-unit-3.5.3/sample/subtracter.rb | 12 + .../gems/test-unit-3.5.3/sample/test_adder.rb | 20 + .../test-unit-3.5.3/sample/test_subtracter.rb | 20 + .../gems/test-unit-3.5.3/sample/test_user.rb | 23 + .../gems/3.1.0/gems/typeprof-0.21.3/Gemfile | 13 + .../3.1.0/gems/typeprof-0.21.3/Gemfile.lock | 39 + .../gems/3.1.0/gems/typeprof-0.21.3/LICENSE | 21 + .../gems/3.1.0/gems/typeprof-0.21.3/README.md | 41 + .../gems/3.1.0/gems/typeprof-0.21.3/Rakefile | 10 + .../3.1.0/gems/typeprof-0.21.3/exe/typeprof | 10 + .../gems/typeprof-0.21.3/lib/typeprof.rb | 20 + .../typeprof-0.21.3/lib/typeprof/analyzer.rb | 2563 + .../typeprof-0.21.3/lib/typeprof/arguments.rb | 414 + .../typeprof-0.21.3/lib/typeprof/block.rb | 176 + .../typeprof-0.21.3/lib/typeprof/builtin.rb | 893 + .../gems/typeprof-0.21.3/lib/typeprof/cli.rb | 126 + .../lib/typeprof/code-range.rb | 177 + .../typeprof-0.21.3/lib/typeprof/config.rb | 158 + .../lib/typeprof/container-type.rb | 912 + .../typeprof-0.21.3/lib/typeprof/export.rb | 589 + .../typeprof-0.21.3/lib/typeprof/import.rb | 815 + .../typeprof-0.21.3/lib/typeprof/insns-def.rb | 63 + .../gems/typeprof-0.21.3/lib/typeprof/iseq.rb | 831 + .../gems/typeprof-0.21.3/lib/typeprof/lsp.rb | 888 + .../typeprof-0.21.3/lib/typeprof/method.rb | 344 + .../gems/typeprof-0.21.3/lib/typeprof/type.rb | 1130 + .../typeprof-0.21.3/lib/typeprof/utils.rb | 212 + .../typeprof-0.21.3/lib/typeprof/version.rb | 3 + .../gems/typeprof-0.21.3/tools/coverage.rb | 14 + .../typeprof-0.21.3/tools/setup-insns-def.rb | 30 + .../3.1.0/gems/typeprof-0.21.3/typeprof-lsp | 3 + .../specifications/asciidoctor-2.0.23.gemspec | 49 + .../3.1.0/specifications/debug-1.6.3.gemspec | 39 + .../default/abbrev-0.1.0.gemspec | 22 + .../default/base64-0.1.1.gemspec | 22 + .../default/benchmark-0.2.0.gemspec | 21 + .../default/bigdecimal-3.1.1.gemspec | 22 + .../default/bundler-2.3.27.gemspec | 23 + .../specifications/default/cgi-0.3.6.gemspec | 23 + .../specifications/default/csv-3.2.5.gemspec | 38 + .../specifications/default/date-3.2.2.gemspec | 22 + .../default/delegate-0.2.0.gemspec | 21 + .../default/did_you_mean-1.6.1.gemspec | 30 + .../default/digest-3.1.0.gemspec | 22 + .../specifications/default/drb-2.1.0.gemspec | 31 + .../default/english-0.7.1.gemspec | 21 + .../specifications/default/erb-2.2.3.gemspec | 33 + .../default/error_highlight-0.3.0.gemspec | 20 + .../specifications/default/etc-1.3.0.gemspec | 39 + .../default/fcntl-1.0.1.gemspec | 23 + .../default/fiddle-1.1.0.gemspec | 23 + .../default/fileutils-1.6.0.gemspec | 21 + .../specifications/default/find-0.1.1.gemspec | 22 + .../default/forwardable-1.3.2.gemspec | 21 + .../default/getoptlong-0.1.1.gemspec | 20 + .../default/io-console-0.5.11.gemspec | 23 + .../default/io-nonblock-0.1.0.gemspec | 24 + .../default/io-wait-0.2.1.gemspec | 24 + .../default/ipaddr-1.2.4.gemspec | 20 + .../specifications/default/irb-1.4.1.gemspec | 32 + .../specifications/default/json-2.6.1.gemspec | Bin 0 -> 2241 bytes .../default/logger-1.5.0.gemspec | 36 + .../default/mutex_m-0.1.1.gemspec | 34 + .../default/net-http-0.3.0.1.gemspec | 32 + .../default/net-protocol-0.1.2.gemspec | 34 + .../specifications/default/nkf-0.1.1.gemspec | 22 + .../default/observer-0.1.1.gemspec | 21 + .../default/open-uri-0.2.0.gemspec | 35 + .../default/open3-0.1.1.gemspec | 22 + .../default/openssl-3.0.1.gemspec | 24 + .../default/optparse-0.2.0.gemspec | 22 + .../default/ostruct-0.5.2.gemspec | 33 + .../default/pathname-0.2.0.gemspec | 24 + .../specifications/default/pp-0.3.0.gemspec | 32 + .../default/prettyprint-0.1.1.gemspec | 22 + .../default/pstore-0.1.1.gemspec | 21 + .../default/psych-4.0.4.gemspec | 34 + .../specifications/default/racc-1.6.0.gemspec | 25 + .../default/rdoc-6.4.1.1.gemspec | 34 + .../default/readline-0.0.3.gemspec | 29 + .../default/readline-ext-0.1.4.gemspec | 37 + .../default/reline-0.3.1.gemspec | 30 + .../default/resolv-0.2.1.gemspec | 22 + .../default/resolv-replace-0.1.0.gemspec | 31 + .../default/rinda-0.1.1.gemspec | 36 + .../default/ruby2_keywords-0.0.5.gemspec | 20 + .../default/securerandom-0.2.0.gemspec | 22 + .../specifications/default/set-1.0.2.gemspec | 21 + .../default/shellwords-0.1.0.gemspec | 22 + .../default/singleton-0.1.1.gemspec | 21 + .../default/stringio-3.0.1.2.gemspec | 22 + .../default/strscan-3.0.1.gemspec | 22 + .../default/tempfile-0.1.2.gemspec | 22 + .../specifications/default/time-0.2.2.gemspec | 32 + .../default/timeout-0.2.0.gemspec | 21 + .../default/tmpdir-0.1.2.gemspec | 32 + .../default/tsort-0.1.0.gemspec | 22 + .../specifications/default/un-0.2.0.gemspec | 22 + .../specifications/default/uri-0.12.2.gemspec | 22 + .../default/weakref-0.1.1.gemspec | 31 + .../default/win32ole-1.8.8.gemspec | 22 + .../specifications/default/yaml-0.2.0.gemspec | 21 + .../specifications/default/zlib-2.1.1.gemspec | 23 + .../3.1.0/specifications/matrix-0.4.2.gemspec | 22 + .../specifications/minitest-5.15.0.gemspec | 38 + .../specifications/net-ftp-0.1.4.gemspec | 35 + .../specifications/net-imap-0.2.4.gemspec | 37 + .../specifications/net-pop-0.1.1.gemspec | 36 + .../specifications/net-smtp-0.3.1.1.gemspec | 36 + .../specifications/power_assert-2.0.1.gemspec | 46 + .../3.1.0/specifications/prime-0.1.2.gemspec | 34 + .../3.1.0/specifications/rake-13.0.6.gemspec | 26 + .../3.1.0/specifications/rbs-2.7.0.gemspec | 27 + .../3.1.0/specifications/rexml-3.2.5.gemspec | 38 + .../3.1.0/specifications/rss-0.2.9.gemspec | 36 + .../specifications/test-unit-3.5.3.gemspec | 41 + .../specifications/typeprof-0.21.3.gemspec | 35 + clangarm64/share/info/gdbm.info.gz | Bin 0 -> 39006 bytes clangarm64/share/licenses/asciidoctor/LICENSE | 22 + clangarm64/share/licenses/gdbm/COPYING | 674 + clangarm64/share/licenses/ruby/BSDL | 22 + clangarm64/share/licenses/ruby/LICENSE | 56 + .../share/locale/da/LC_MESSAGES/gdbm.mo | Bin 0 -> 14387 bytes .../share/locale/de/LC_MESSAGES/gdbm.mo | Bin 0 -> 16763 bytes .../share/locale/eo/LC_MESSAGES/gdbm.mo | Bin 0 -> 16039 bytes .../share/locale/es/LC_MESSAGES/gdbm.mo | Bin 0 -> 14847 bytes .../share/locale/fi/LC_MESSAGES/gdbm.mo | Bin 0 -> 12299 bytes .../share/locale/fr/LC_MESSAGES/gdbm.mo | Bin 0 -> 17153 bytes .../share/locale/ja/LC_MESSAGES/gdbm.mo | Bin 0 -> 6164 bytes .../share/locale/pl/LC_MESSAGES/gdbm.mo | Bin 0 -> 16737 bytes .../share/locale/pt_BR/LC_MESSAGES/gdbm.mo | Bin 0 -> 16594 bytes .../share/locale/ru/LC_MESSAGES/gdbm.mo | Bin 0 -> 21254 bytes .../share/locale/sr/LC_MESSAGES/gdbm.mo | Bin 0 -> 21057 bytes .../share/locale/sv/LC_MESSAGES/gdbm.mo | Bin 0 -> 16096 bytes .../share/locale/uk/LC_MESSAGES/gdbm.mo | Bin 0 -> 21800 bytes .../share/locale/vi/LC_MESSAGES/gdbm.mo | Bin 0 -> 18101 bytes clangarm64/share/man/man1/asciidoctor.1.gz | Bin 0 -> 3668 bytes clangarm64/share/man/man1/erb.1.gz | Bin 0 -> 1427 bytes clangarm64/share/man/man1/gdbm_dump.1.gz | Bin 0 -> 1413 bytes clangarm64/share/man/man1/gdbm_load.1.gz | Bin 0 -> 1521 bytes clangarm64/share/man/man1/gdbmtool.1.gz | Bin 0 -> 5384 bytes clangarm64/share/man/man1/irb.1.gz | Bin 0 -> 1630 bytes clangarm64/share/man/man1/ri.1.gz | Bin 0 -> 1983 bytes clangarm64/share/man/man1/ruby.1.gz | Bin 0 -> 6739 bytes clangarm64/share/man/man3/gdbm.3.gz | Bin 0 -> 5761 bytes .../desc | 43 + .../files | 1303 + .../mtree | Bin 0 -> 62236 bytes .../mingw-w64-clang-aarch64-gdbm-1.19-3/desc | 46 + .../mingw-w64-clang-aarch64-gdbm-1.19-3/files | 74 + .../mingw-w64-clang-aarch64-gdbm-1.19-3/mtree | Bin 0 -> 2878 bytes .../desc | 40 + .../files | 12 + .../mtree | Bin 0 -> 710 bytes .../desc | 46 + .../files | 20 + .../mtree | Bin 0 -> 1145 bytes .../mingw-w64-clang-aarch64-ruby-3.1.5-1/desc | 137 + .../files | 2787 + .../mtree | Bin 0 -> 171191 bytes 3479 files changed, 642581 insertions(+) create mode 100644 clangarm64/bin/asciidoctor create mode 100644 clangarm64/bin/asciidoctor.bat create mode 100644 clangarm64/bin/bundle create mode 100644 clangarm64/bin/bundle.bat create mode 100644 clangarm64/bin/bundler create mode 100644 clangarm64/bin/bundler.bat create mode 100644 clangarm64/bin/erb create mode 100644 clangarm64/bin/erb.bat create mode 100644 clangarm64/bin/gdbm_dump.exe create mode 100644 clangarm64/bin/gdbm_load.exe create mode 100644 clangarm64/bin/gdbmtool.exe create mode 100644 clangarm64/bin/gem create mode 100644 clangarm64/bin/gem.cmd create mode 100644 clangarm64/bin/irb create mode 100644 clangarm64/bin/irb.bat create mode 100644 clangarm64/bin/libgdbm-6.dll create mode 100644 clangarm64/bin/libgdbm_compat-4.dll create mode 100644 clangarm64/bin/libpdcurses.dll create mode 100644 clangarm64/bin/libpdcurses_vt.dll create mode 100644 clangarm64/bin/libpdcurses_wincon.dll create mode 100644 clangarm64/bin/libpdcurses_wingui.dll create mode 100644 clangarm64/bin/libyaml-0-2.dll create mode 100644 clangarm64/bin/racc create mode 100644 clangarm64/bin/racc.bat create mode 100644 clangarm64/bin/rake create mode 100644 clangarm64/bin/rake.bat create mode 100644 clangarm64/bin/rbs create mode 100644 clangarm64/bin/rbs.bat create mode 100644 clangarm64/bin/rdbg create mode 100644 clangarm64/bin/rdbg.bat create mode 100644 clangarm64/bin/rdoc create mode 100644 clangarm64/bin/rdoc.bat create mode 100644 clangarm64/bin/ri create mode 100644 clangarm64/bin/ri.bat create mode 100644 clangarm64/bin/ruby.exe create mode 100644 clangarm64/bin/ruby310.dll create mode 100644 clangarm64/bin/rubyw.exe create mode 100644 clangarm64/bin/typeprof create mode 100644 clangarm64/bin/typeprof.bat create mode 100644 clangarm64/include/dbm.h create mode 100644 clangarm64/include/gdbm.h create mode 100644 clangarm64/include/ndbm.h create mode 100644 clangarm64/include/pdcurses.h create mode 100644 clangarm64/include/pdcurses/curses.h create mode 100644 clangarm64/include/pdcurses/panel.h create mode 100644 clangarm64/include/pdcurses/term.h create mode 100644 clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/rb_mjit_min_header-3.1.5.h create mode 100644 clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/ruby/config.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/assert.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/atomic.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/assume.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/attributes.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/bool.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/gcc_version_since.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/inttypes.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/limits.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/long_long.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/r_cast.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/rmodule.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/stdalign.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/2/stdarg.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/backward/cxxanyargs.hpp create mode 100644 clangarm64/include/ruby-3.1.0/ruby/debug.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/defines.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/digest.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/encoding.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/fiber/scheduler.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/intern.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/anyargs.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/char.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/double.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/fixnum.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/gid_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/int.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/intptr_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long_long.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/mode_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/off_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/pid_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/short.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/size_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/st_data_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/uid_t.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/assume.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/alloc_size.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/artificial.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/cold.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/const.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/constexpr.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/deprecated.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/diagnose_if.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/enum_extensibility.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/error.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/flag_enum.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/forceinline.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/format.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/maybe_unused.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/noalias.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/nodiscard.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/noexcept.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/noinline.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/nonnull.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/noreturn.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/pure.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/restrict.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/returns_nonnull.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/warning.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/attr/weakref.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/cast.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/apple.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/clang.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/gcc.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/intel.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/msvc.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/sunpro.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/compiler_since.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/config.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/constant_p.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rarray.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rbasic.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rbignum.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rclass.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rdata.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rfile.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rhash.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rmatch.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/robject.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rregexp.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rstring.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rstruct.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/core/rtypeddata.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/ctype.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/dllexport.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/dosish.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/coderange.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/ctype.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/encoding.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/pathname.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/re.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/sprintf.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/string.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/symbol.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/encoding/transcode.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/error.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/eval.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/event.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/fl_type.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/gc.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/glob.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/globals.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/attribute.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/builtin.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/c_attribute.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/cpp_attribute.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/declspec_attribute.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/extension.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/feature.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/has/warning.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/array.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/bignum.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/class.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/compar.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/complex.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/cont.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/dir.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/enum.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/enumerator.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/error.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/eval.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/file.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/gc.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/hash.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/io.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/load.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/marshal.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/numeric.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/object.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/parse.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/proc.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/process.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/random.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/range.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/rational.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/re.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/ruby.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/select.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/largesize.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/posix.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/win32.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/signal.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/sprintf.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/string.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/struct.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/thread.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/time.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/variable.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/intern/vm.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/interpreter.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/iterator.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/memory.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/method.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/module.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/newobj.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/rgengc.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/scan_args.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/special_consts.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/static_assert.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/stdalign.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/stdbool.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/symbol.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/value.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/value_type.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/variable.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/warning_push.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/internal/xmalloc.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/io.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/io/buffer.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/memory_view.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/missing.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/onigmo.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/oniguruma.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/ractor.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/random.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/re.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/regex.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/ruby.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/st.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/subst.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/thread.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/thread_native.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/util.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/version.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/vm.h create mode 100644 clangarm64/include/ruby-3.1.0/ruby/win32.h create mode 100644 clangarm64/include/yaml.h create mode 100644 clangarm64/lib/libgdbm.a create mode 100644 clangarm64/lib/libgdbm.dll.a create mode 100644 clangarm64/lib/libgdbm_compat.a create mode 100644 clangarm64/lib/libgdbm_compat.dll.a create mode 100644 clangarm64/lib/libpdcurses.a create mode 100644 clangarm64/lib/libpdcurses.dll.a create mode 100644 clangarm64/lib/libpdcurses_vt.a create mode 100644 clangarm64/lib/libpdcurses_wincon.a create mode 100644 clangarm64/lib/libpdcurses_wingui.a create mode 100644 clangarm64/lib/libruby310.dll.a create mode 100644 clangarm64/lib/libyaml.a create mode 100644 clangarm64/lib/libyaml.dll.a create mode 100644 clangarm64/lib/pkgconfig/ruby-3.1.pc create mode 100644 clangarm64/lib/pkgconfig/yaml-0.1.pc create mode 100644 clangarm64/lib/ruby/3.1.0/English.rb create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/bigdecimal.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/cgi/escape.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/continuation.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/coverage.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/date_core.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/digest.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/digest/bubblebabble.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/digest/md5.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/digest/rmd160.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/digest/sha1.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/digest/sha2.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/big5.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/cesu_8.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/cp949.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/emacs_mule.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/encdb.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/euc_jp.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/euc_kr.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/euc_tw.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/gb18030.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/gb2312.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/gbk.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_1.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_10.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_11.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_13.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_14.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_15.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_16.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_2.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_3.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_4.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_5.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_6.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_7.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_8.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/iso_8859_9.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/koi8_r.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/koi8_u.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/shift_jis.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/big5.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/cesu_8.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/chinese.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/ebcdic.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/emoji.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/emoji_iso2022_kddi.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/emoji_sjis_docomo.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/emoji_sjis_kddi.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/emoji_sjis_softbank.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/escape.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/gb18030.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/gbk.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/iso2022.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/japanese.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/japanese_euc.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/japanese_sjis.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/korean.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/single_byte.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/transdb.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/utf8_mac.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/trans/utf_16_32.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/utf_16be.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/utf_16le.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/utf_32be.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/utf_32le.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/windows_1250.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/windows_1251.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/windows_1252.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/windows_1253.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/windows_1254.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/windows_1257.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/enc/windows_31j.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/etc.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/fcntl.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/fiddle.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/io/console.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/io/nonblock.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/io/wait.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/json/ext/generator.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/json/ext/parser.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/monitor.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/nkf.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/objspace.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/openssl.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/pathname.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/psych.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/racc/cparse.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/rbconfig.rb create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/rbconfig/sizeof.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/readline.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/ripper.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/socket.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/stringio.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/strscan.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/win32/resolv.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/win32ole.so create mode 100644 clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/zlib.so create mode 100644 clangarm64/lib/ruby/3.1.0/abbrev.rb create mode 100644 clangarm64/lib/ruby/3.1.0/base64.rb create mode 100644 clangarm64/lib/ruby/3.1.0/benchmark.rb create mode 100644 clangarm64/lib/ruby/3.1.0/benchmark/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bigdecimal.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bigdecimal/jacobian.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bigdecimal/ludcmp.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bigdecimal/math.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bigdecimal/newton.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bigdecimal/util.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/build_metadata.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/capistrano.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/add.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/binstubs.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/cache.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/check.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/clean.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/common.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/config.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/console.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/doctor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/exec.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/fund.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/gem.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/info.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/init.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/inject.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/install.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/issue.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/lock.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/open.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/outdated.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/platform.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/plugin.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/pristine.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/remove.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/show.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/update.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/cli/viz.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/compact_index_client.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/compact_index_client/cache.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/compact_index_client/gem_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/compact_index_client/updater.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/constants.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/current_ruby.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/definition.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/dependency.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/deployment.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/deprecate.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/digest.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/dsl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/endpoint_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/env.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/environment_preserver.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/errors.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/feature_flag.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/fetcher.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/fetcher/base.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/fetcher/compact_index.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/fetcher/dependency.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/fetcher/downloader.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/fetcher/index.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/friendly_errors.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/gem_helper.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/gem_helpers.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/gem_tasks.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/gem_version_promoter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/graph.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/index.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/injector.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/inline.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/installer/gem_installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/installer/parallel_installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/installer/standalone.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/lazy_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/lockfile_generator.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/lockfile_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-add.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-add.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-binstubs.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-binstubs.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-cache.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-cache.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-check.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-check.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-clean.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-clean.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-config.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-config.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-console.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-console.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-doctor.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-doctor.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-exec.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-exec.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-gem.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-gem.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-help.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-help.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-info.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-info.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-init.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-init.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-inject.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-inject.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-install.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-install.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-list.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-list.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-lock.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-lock.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-open.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-open.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-outdated.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-outdated.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-platform.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-platform.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-plugin.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-plugin.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-pristine.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-pristine.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-remove.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-remove.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-show.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-show.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-update.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-update.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-version.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-version.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-viz.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle-viz.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle.1 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/bundle.1.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/gemfile.5 create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/man/gemfile.5.ronn create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/match_metadata.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/match_platform.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/match_remote_metadata.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/mirror.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/api.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/api/source.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/dsl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/events.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/index.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/installer/git.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/installer/rubygems.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/plugin/source_list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/process_lock.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/remote_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/resolver.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/resolver/base.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/resolver/spec_group.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/retry.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/ruby_dsl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/ruby_version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/rubygems_ext.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/rubygems_gem_installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/rubygems_integration.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/runtime.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/self_manager.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/settings.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/settings/validator.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/setup.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/shared_helpers.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/similarity_detector.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/gemspec.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/git.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/git/git_proxy.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/metadata.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/path.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/path/installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/rubygems.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/rubygems/remote.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source/rubygems_aggregate.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source_list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/source_map.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/spec_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/stub_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/Executable create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/Executable.bundler create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/Executable.standalone create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/Gemfile create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/gems.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/CHANGELOG.md.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/Gemfile.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/LICENSE.txt.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/README.md.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/Rakefile.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/bin/console.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/bin/setup.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/circleci/config.yml.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/exe/newgem.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/ext/newgem/extconf.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/ext/newgem/newgem.c.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/ext/newgem/newgem.h.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/github/workflows/main.yml.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/gitignore.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/gitlab-ci.yml.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/lib/newgem.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/lib/newgem/version.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/newgem.gemspec.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/rspec.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/rubocop.yml.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/sig/newgem.rbs.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/spec/newgem_spec.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/spec/spec_helper.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/standard.yml.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/test/minitest/test_helper.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/test/minitest/test_newgem.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/test/test-unit/test_helper.rb.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/templates/newgem/travis.yml.tt create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/ui.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/ui/rg_proxy.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/ui/shell.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/ui/silent.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/uri_credentials_filter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/connection_pool/lib/connection_pool.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/connection_pool/lib/connection_pool/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/fileutils/lib/fileutils.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/errors.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/resolution.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/resolver.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/molinillo/lib/molinillo/state.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/actions.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/actions/create_file.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/actions/create_link.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/actions/directory.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/actions/empty_directory.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/base.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/error.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/group.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/invocation.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/line_editor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/line_editor/basic.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/line_editor/readline.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/nested_context.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/parser/argument.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/parser/arguments.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/parser/option.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/parser/options.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/rake_compat.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/runner.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/shell.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/shell/basic.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/shell/color.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/shell/html.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/util.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/tmpdir/lib/tmpdir.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/tsort/lib/tsort.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/common.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/file.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/ftp.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/generic.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/http.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/https.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/ldap.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/ldaps.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/mailto.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/rfc2396_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/rfc3986_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/ws.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendor/uri/lib/uri/wss.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendored_fileutils.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendored_molinillo.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendored_persistent.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendored_thor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendored_tmpdir.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendored_tsort.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vendored_uri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/version_ranges.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/vlad.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/worker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/bundler/yaml_serializer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/cgi.rb create mode 100644 clangarm64/lib/ruby/3.1.0/cgi/cookie.rb create mode 100644 clangarm64/lib/ruby/3.1.0/cgi/core.rb create mode 100644 clangarm64/lib/ruby/3.1.0/cgi/html.rb create mode 100644 clangarm64/lib/ruby/3.1.0/cgi/session.rb create mode 100644 clangarm64/lib/ruby/3.1.0/cgi/session/pstore.rb create mode 100644 clangarm64/lib/ruby/3.1.0/cgi/util.rb create mode 100644 clangarm64/lib/ruby/3.1.0/coverage.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/core_ext/array.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/core_ext/string.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/delete_suffix.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/fields_converter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/input_record_separator.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/match_p.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/row.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/table.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/csv/writer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/date.rb create mode 100644 clangarm64/lib/ruby/3.1.0/delegate.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/core_ext/name_error.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/experimental.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/formatters/plain_formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/formatters/verbose_formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/jaro_winkler.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/levenshtein.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/key_error_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/method_name_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/name_error_checkers.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/null_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/pattern_key_name_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/spell_checkers/require_path_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/tree_spell_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/verbose.rb create mode 100644 clangarm64/lib/ruby/3.1.0/did_you_mean/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/digest.rb create mode 100644 clangarm64/lib/ruby/3.1.0/digest/loader.rb create mode 100644 clangarm64/lib/ruby/3.1.0/digest/sha2.rb create mode 100644 clangarm64/lib/ruby/3.1.0/digest/sha2/loader.rb create mode 100644 clangarm64/lib/ruby/3.1.0/digest/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/acl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/drb.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/eq.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/extserv.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/extservm.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/gw.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/invokemethod.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/observer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/ssl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/timeridconv.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/unix.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/drb/weakidconv.rb create mode 100644 clangarm64/lib/ruby/3.1.0/erb.rb create mode 100644 clangarm64/lib/ruby/3.1.0/erb/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/error_highlight.rb create mode 100644 clangarm64/lib/ruby/3.1.0/error_highlight/base.rb create mode 100644 clangarm64/lib/ruby/3.1.0/error_highlight/core_ext.rb create mode 100644 clangarm64/lib/ruby/3.1.0/error_highlight/formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/error_highlight/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/closure.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/cparser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/function.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/import.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/pack.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/struct.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/types.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/value.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fiddle/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/fileutils.rb create mode 100644 clangarm64/lib/ruby/3.1.0/find.rb create mode 100644 clangarm64/lib/ruby/3.1.0/forwardable.rb create mode 100644 clangarm64/lib/ruby/3.1.0/forwardable/impl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/getoptlong.rb create mode 100644 clangarm64/lib/ruby/3.1.0/io/console/size.rb create mode 100644 clangarm64/lib/ruby/3.1.0/ipaddr.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/chws.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/fork.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/help.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/info.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/load.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/ls.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/measure.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/nop.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/pushws.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/show_source.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/subirb.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/cmd/whereami.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/color.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/color_printer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/completion.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/context.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/easter-egg.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/change-ws.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/history.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/loader.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/multi-irb.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/save-history.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/tracer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/use-loader.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ext/workspaces.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/extend-command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/frame.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/help.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/init.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/input-method.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/inspector.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/lc/error.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/lc/help-message create mode 100644 clangarm64/lib/ruby/3.1.0/irb/lc/ja/encoding_aliases.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/lc/ja/error.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/lc/ja/help-message create mode 100644 clangarm64/lib/ruby/3.1.0/irb/locale.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/magic-file.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/notifier.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/output-method.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ruby-lex.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ruby_logo.aa create mode 100644 clangarm64/lib/ruby/3.1.0/irb/src_encoding.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/workspace.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/ws-for-case-2.rb create mode 100644 clangarm64/lib/ruby/3.1.0/irb/xmp.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/bigdecimal.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/complex.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/core.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/date.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/date_time.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/exception.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/ostruct.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/range.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/rational.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/regexp.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/struct.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/symbol.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/add/time.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/common.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/ext.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/generic_object.rb create mode 100644 clangarm64/lib/ruby/3.1.0/json/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/kconv.rb create mode 100644 clangarm64/lib/ruby/3.1.0/logger.rb create mode 100644 clangarm64/lib/ruby/3.1.0/logger/errors.rb create mode 100644 clangarm64/lib/ruby/3.1.0/logger/formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/logger/log_device.rb create mode 100644 clangarm64/lib/ruby/3.1.0/logger/period.rb create mode 100644 clangarm64/lib/ruby/3.1.0/logger/severity.rb create mode 100644 clangarm64/lib/ruby/3.1.0/logger/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/mkmf.rb create mode 100644 clangarm64/lib/ruby/3.1.0/monitor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/mutex_m.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/backward.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/exceptions.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/generic_request.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/header.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/proxy_delta.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/request.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/requests.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/response.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/responses.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/http/status.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/https.rb create mode 100644 clangarm64/lib/ruby/3.1.0/net/protocol.rb create mode 100644 clangarm64/lib/ruby/3.1.0/objspace.rb create mode 100644 clangarm64/lib/ruby/3.1.0/objspace/trace.rb create mode 100644 clangarm64/lib/ruby/3.1.0/observer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/open-uri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/open3.rb create mode 100644 clangarm64/lib/ruby/3.1.0/open3/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/bn.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/buffering.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/cipher.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/digest.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/hmac.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/marshal.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/pkcs5.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/pkey.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/ssl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/openssl/x509.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optionparser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse/ac.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse/date.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse/kwargs.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse/shellwords.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse/time.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse/uri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/optparse/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/ostruct.rb create mode 100644 clangarm64/lib/ruby/3.1.0/pathname.rb create mode 100644 clangarm64/lib/ruby/3.1.0/pp.rb create mode 100644 clangarm64/lib/ruby/3.1.0/prettyprint.rb create mode 100644 clangarm64/lib/ruby/3.1.0/pstore.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/class_loader.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/coder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/core_ext.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/exception.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/handler.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/handlers/document_stream.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/handlers/recorder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/json/ruby_events.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/json/stream.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/json/tree_builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/json/yaml_events.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes/alias.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes/document.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes/mapping.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes/node.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes/scalar.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes/sequence.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/nodes/stream.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/omap.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/scalar_scanner.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/stream.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/streaming.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/syntax_error.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/tree_builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/versions.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/visitors.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/visitors/depth_first.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/visitors/emitter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/visitors/json_tree.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/visitors/to_ruby.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/visitors/visitor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/visitors/yaml_tree.rb create mode 100644 clangarm64/lib/ruby/3.1.0/psych/y.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/compat.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/debugflags.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/exception.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/grammar.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/grammarfileparser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/info.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/iset.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/logfilegenerator.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/parser-text.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/parserfilegenerator.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/sourcetext.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/state.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/statetransitiontable.rb create mode 100644 clangarm64/lib/ruby/3.1.0/racc/static.rb create mode 100644 clangarm64/lib/ruby/3.1.0/random/formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/alias.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/anon_class.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/any_method.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/attr.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/class_module.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/code_object.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/code_objects.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/comment.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/constant.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/context.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/context/section.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/cross_reference.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/encoding.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/erb_partial.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/erbio.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/extend.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/darkfish.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/json_index.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/markup.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/pot.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/pot/message_extractor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/pot/po.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/pot/po_entry.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/ri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_footer.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_head.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_classes.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_extends.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_includes.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_installed.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_methods.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_pages.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_parent.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_search.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_sections.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/class.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/css/fonts.css create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/css/rdoc.css create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/add.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/arrow_up.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/brick.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/brick_link.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/bug.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/bullet_black.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/date.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/delete.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/find.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/loadingAnimation.gif create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/macFFBgHack.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/package.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/page_green.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/page_white_text.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/page_white_width.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/plugin.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/ruby.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/tag_blue.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/tag_green.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/transparent.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/wrench.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/wrench_orange.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/images/zoom.png create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/index.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/js/darkfish.js create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/js/search.js create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/page.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/servlet_not_found.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/servlet_root.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/darkfish/table_of_contents.rhtml create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/json_index/js/navigation.js create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/generator/template/json_index/js/searcher.js create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/ghost_method.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/i18n.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/i18n/locale.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/i18n/text.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/include.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/known_classes.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markdown.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markdown/entities.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markdown/literals.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/attr_changer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/attr_span.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/attribute_manager.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/attributes.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/blank_line.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/block_quote.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/document.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/hard_break.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/heading.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/include.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/indented_paragraph.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/list_item.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/paragraph.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/pre_process.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/raw.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/regexp_handling.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/rule.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/table.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_ansi.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_bs.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_html.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_html_crossref.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_html_snippet.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_joined_paragraph.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_label.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_markdown.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_rdoc.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_table_of_contents.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_test.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/to_tt_only.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/markup/verbatim.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/meta_method.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/method_attr.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/mixin.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/normal_class.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/normal_module.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/options.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/c.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/changelog.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/markdown.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/rd.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/ripper_state_lex.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/ruby.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/ruby_tools.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/simple.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/parser/text.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/rd.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/rd/block_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/rd/inline.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/rd/inline_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/rdoc.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/require.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/ri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/ri/driver.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/ri/formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/ri/paths.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/ri/store.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/ri/task.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/rubygems_hook.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/servlet.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/single_class.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/stats.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/stats/normal.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/stats/quiet.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/stats/verbose.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/store.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/task.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/text.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/token_stream.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/tom_doc.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/top_level.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rdoc/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/readline.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/ansi.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/config.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/general_io.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/history.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/key_actor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/key_actor/base.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/key_actor/emacs.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/key_actor/vi_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/key_actor/vi_insert.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/key_stroke.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/kill_ring.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/line_editor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/terminfo.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/unicode.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/unicode/east_asian_width.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/reline/windows.rb create mode 100644 clangarm64/lib/ruby/3.1.0/resolv-replace.rb create mode 100644 clangarm64/lib/ruby/3.1.0/resolv.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rinda/rinda.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rinda/ring.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rinda/tuplespace.rb create mode 100644 clangarm64/lib/ruby/3.1.0/ripper.rb create mode 100644 clangarm64/lib/ruby/3.1.0/ripper/core.rb create mode 100644 clangarm64/lib/ruby/3.1.0/ripper/filter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/ripper/lexer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/ripper/sexp.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/available_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/basic_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/bundler_version_finder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/command_manager.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/build_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/cert_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/check_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/cleanup_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/contents_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/dependency_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/environment_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/fetch_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/generate_index_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/help_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/info_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/install_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/list_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/lock_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/mirror_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/open_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/outdated_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/owner_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/pristine_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/push_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/query_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/rdoc_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/search_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/server_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/setup_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/signin_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/signout_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/sources_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/specification_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/stale_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/uninstall_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/unpack_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/update_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/which_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/commands/yank_command.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/compatibility.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/config_file.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/core_ext/kernel_gem.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/core_ext/kernel_warn.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/core_ext/tcpsocket_init.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/defaults.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/dependency.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/dependency_installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/dependency_list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/deprecate.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/doctor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/errors.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/exceptions.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/build_error.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/cargo_builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/cargo_builder/link_flag_converter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/cmake_builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/configure_builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ext/rake_builder.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/gem_runner.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/gemcutter_utilities.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/indexer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/install_default_message.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/install_message.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/install_update_options.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/installer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/installer_uninstaller_utils.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/local_remote_options.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/mock_gem_ui.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/name_tuple.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/openssl.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optionparser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse/ac.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse/date.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse/kwargs.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse/shellwords.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse/time.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse/uri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/optparse/lib/optparse/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/digest_io.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/file_source.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/io_source.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/old.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/source.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/tar_header.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/tar_reader.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/tar_reader/entry.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package/tar_writer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/package_task.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/path_support.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/platform.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/psych_tree.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/query_utils.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/rdoc.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/remote_fetcher.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request/connection_pools.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request/http_pool.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request/https_pool.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request_set/gem_dependency_api.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request_set/lockfile.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request_set/lockfile/parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/request_set/lockfile/tokenizer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/requirement.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/activation_request.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/api_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/api_set/gem_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/api_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/best_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/composed_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/conflict.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/current_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/dependency_request.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/git_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/git_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/index_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/index_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/installed_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/installer_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/local_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/lock_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/lock_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/errors.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/resolver.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/state.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/requirement_list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/source_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/spec_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/stats.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/vendor_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/resolver/vendor_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/s3_uri_signer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/safe_yaml.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/security.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/security/policies.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/security/policy.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/security/signer.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/security/trust_dir.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/security_option.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source/git.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source/installed.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source/local.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source/lock.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source/specific_file.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source/vendor.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/source_list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/spec_fetcher.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/specification_policy.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/stub_specification.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/text.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/tsort.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/tsort/lib/tsort.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/uninstaller.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/unknown_command_spell_checker.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/uri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/uri_formatter.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/user_interaction.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/util.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/util/licenses.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/util/list.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/validator.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/rubygems/version_option.rb create mode 100644 clangarm64/lib/ruby/3.1.0/securerandom.rb create mode 100644 clangarm64/lib/ruby/3.1.0/set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/set/sorted_set.rb create mode 100644 clangarm64/lib/ruby/3.1.0/shellwords.rb create mode 100644 clangarm64/lib/ruby/3.1.0/singleton.rb create mode 100644 clangarm64/lib/ruby/3.1.0/socket.rb create mode 100644 clangarm64/lib/ruby/3.1.0/tempfile.rb create mode 100644 clangarm64/lib/ruby/3.1.0/time.rb create mode 100644 clangarm64/lib/ruby/3.1.0/timeout.rb create mode 100644 clangarm64/lib/ruby/3.1.0/tmpdir.rb create mode 100644 clangarm64/lib/ruby/3.1.0/tsort.rb create mode 100644 clangarm64/lib/ruby/3.1.0/un.rb create mode 100644 clangarm64/lib/ruby/3.1.0/unicode_normalize/normalize.rb create mode 100644 clangarm64/lib/ruby/3.1.0/unicode_normalize/tables.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/common.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/file.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/ftp.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/generic.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/http.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/https.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/ldap.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/ldaps.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/mailto.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/rfc2396_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/rfc3986_parser.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/version.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/ws.rb create mode 100644 clangarm64/lib/ruby/3.1.0/uri/wss.rb create mode 100644 clangarm64/lib/ruby/3.1.0/weakref.rb create mode 100644 clangarm64/lib/ruby/3.1.0/win32/registry.rb create mode 100644 clangarm64/lib/ruby/3.1.0/win32/resolv.rb create mode 100644 clangarm64/lib/ruby/3.1.0/win32/sspi.rb create mode 100644 clangarm64/lib/ruby/3.1.0/win32ole.rb create mode 100644 clangarm64/lib/ruby/3.1.0/win32ole/property.rb create mode 100644 clangarm64/lib/ruby/3.1.0/yaml.rb create mode 100644 clangarm64/lib/ruby/3.1.0/yaml/dbm.rb create mode 100644 clangarm64/lib/ruby/3.1.0/yaml/store.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/debug-1.6.3.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/matrix-0.4.2.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/minitest-5.15.0.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/net-ftp-0.1.4.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/net-imap-0.2.4.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/net-pop-0.1.1.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/net-smtp-0.3.1.1.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/power_assert-2.0.1.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/prime-0.1.2.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/rake-13.0.6.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/rbs-2.7.0.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/rexml-3.2.5.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/rss-0.2.9.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/test-unit-3.5.3.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/cache/typeprof-0.21.3.gem create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Array/cdesc-Array.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/%3c%3c-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/alt-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/append-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/assign_caption-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/assign_numeral-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/block%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/blocks%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/blocks-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/caption-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/captioned_title-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/cdesc-AbstractBlock.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/content-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/content_model-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/context%3d-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/file-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/find_by-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/find_by_internal-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/inline%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/level-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/lineno-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/list_marker_keyword-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/next_adjacent_block-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/number%3d-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/number-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/numeral-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/query-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/reindex_sections-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/remove_sub-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/render-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/sections%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/sections-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/source_location-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/style-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/sub%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/title%3d-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/title%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/title-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractBlock/xreftext-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/add_role-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/attr%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/attr-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/block%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/cdesc-AbstractNode.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/context-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/converter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/enabled_options-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/generate_data_uri-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/generate_data_uri_from_uri-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/has_role%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/icon_uri-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/id-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/image_uri-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/inline%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/is_uri%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/media_uri-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/node_name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/normalize_asset_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/normalize_system_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/normalize_web_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/option%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/parent%3d-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/parent-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/read_asset-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/read_contents-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/reftext%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/reftext-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/remove_attr-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/remove_role-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/role%3d-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/role%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/role-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/roles-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/set_attr-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/set_option-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AbstractNode/update_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/cdesc-AttributeList.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/parse-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/parse_attribute-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/parse_attribute_value-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/parse_into-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/rekey-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/rekey-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/scan_name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/scan_to_delimiter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/scan_to_quote-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/skip_blank-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/AttributeList/skip_delimiter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Block/cdesc-Block.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Block/content-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Block/lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Block/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Block/source-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Block/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/callout_ids-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/cdesc-Callouts.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/current_list-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/generate_callout_id-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/generate_next_callout_id-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/next_list-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/read_next_id-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/register-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Callouts/rewind-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/cdesc-Invoker.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/code-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/documents-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/invoke%21-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/options-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/read_error-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/read_output-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/redirect_streams-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Invoker/reset_streams-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Options/cdesc-Options.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Options/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Options/parse%21-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Options/parse%21-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/Options/print_version-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Cli/cdesc-Cli.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Compliance/cdesc-Compliance.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Compliance/define-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Compliance/keys-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/backend_info-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/backend_traits-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/basebackend-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/cdesc-BackendTraits.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/derive_backend_traits-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/filetype-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/htmlsyntax-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/init_backend_traits-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/outfilesuffix-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/supports_templates%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/BackendTraits/supports_templates-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Base/cdesc-Base.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Base/content_only-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Base/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Base/handles%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Base/skip-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CompositeConverter/cdesc-CompositeConverter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CompositeConverter/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CompositeConverter/converter_for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CompositeConverter/converters-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CompositeConverter/find_converter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CompositeConverter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Config/cdesc-Config.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Config/register_for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CustomFactory/cdesc-CustomFactory.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CustomFactory/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CustomFactory/registry-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/CustomFactory/unregister_all-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactory/catch_all-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactory/cdesc-DefaultFactory.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactory/for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactory/register-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactory/registry-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactory/unregister_all-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactoryProxy/catch_all-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactoryProxy/cdesc-DefaultFactoryProxy.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactoryProxy/for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DefaultFactoryProxy/unregister_all-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/asciimath_available%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/author_tag-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/blockquote_tag-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/cdesc-DocBook5Converter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/common_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_admonition-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_colist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_dlist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_embedded-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_example-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_floating_title-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_image-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_anchor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_button-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_callout-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_footnote-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_image-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_indexterm-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_kbd-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_menu-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_inline_quoted-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_listing-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_literal-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_olist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_open-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_page_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_paragraph-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_preamble-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_quote-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_section-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_sidebar-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_stem-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_table-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_thematic_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_ulist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/convert_verse-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/cover_tag-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/document_info_tag-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/enclose_content-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/extract_abstract-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/find_root_abstract-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/generate_document_id-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/get_root_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/image_size_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/load_asciimath-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/restore_abstract-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/DocBook5Converter/title_tag-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/cdesc-Factory.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/converters-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/create-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/create-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/default-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/register-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Factory/registry-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/append_boolean_attribute-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/append_link_constraint_attrs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/cdesc-Html5Converter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_admonition-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_audio-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_colist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_dlist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_embedded-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_example-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_floating_title-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_image-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_anchor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_button-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_callout-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_footnote-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_image-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_indexterm-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_kbd-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_menu-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_inline_quoted-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_listing-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_literal-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_olist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_open-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_outline-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_page_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_paragraph-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_preamble-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_quote-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_section-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_sidebar-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_stem-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_table-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_thematic_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_toc-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_ulist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_verse-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/convert_video-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/encode_attribute_value-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/generate_manname_section-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/get_root_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/method_missing-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/read_svg_contents-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/Html5Converter/respond_to_missing%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/append_footnotes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/cdesc-ManPageConverter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_admonition-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_colist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_dlist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_embedded-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_example-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_floating_title-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_image-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_anchor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_button-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_callout-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_footnote-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_image-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_indexterm-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_kbd-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_menu-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_inline_quoted-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_listing-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_literal-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_olist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_open-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_page_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_paragraph-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_quote-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_section-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_sidebar-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_stem-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_table-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_thematic_break-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_ulist-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_verse-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/convert_video-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/enclose_content-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/get_root_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/manify-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/uppercase_pcdata-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/ManPageConverter/write_alternate_pages-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/caches-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/cdesc-TemplateConverter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/clear_caches-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/handles%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/load_eruby-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/register-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/scan-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/scan_dir-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/TemplateConverter/templates-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/backend-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/cdesc-Converter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/derive_backend_traits-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/handles%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/included-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Converter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/%3c%3c-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/AttributeEntry/cdesc-AttributeEntry.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/AttributeEntry/name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/AttributeEntry/negate-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/AttributeEntry/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/AttributeEntry/save_to-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/AttributeEntry/value-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/cdesc-Title.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/combined-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/main-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/sanitized%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/subtitle%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/subtitle-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/title-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/Title/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/apply_attribute_value_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/attribute_locked%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/author-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/authors-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/backend-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/base_dir-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/basebackend%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/callouts-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/catalog-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/cdesc-Document.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/clear_playback_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/compat_mode-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/content-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/converter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/counter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/counter_increment-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/counters-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/create_converter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/delete_attribute-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/docinfo-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/docinfo_processors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/doctitle-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/doctype-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/embedded%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/extensions%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/extensions-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/fill_datetime_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/finalize_header-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/first_section-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/footnotes%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/footnotes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/has_header%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/header%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/header-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/increment_and_store_counter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/limit_bytesize-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/nested%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/nofooter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/noheader-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/notitle-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/options-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/outfilesuffix-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/parent_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/parse-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/parsed%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/path_resolver-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/playback_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/reader-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/references-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/register-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/render-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/resolve_docinfo_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/resolve_id-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/restore_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/revdate-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/safe-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/save_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/sections%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/set_attribute-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/set_header_attribute-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/source-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/source_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/sourcemap-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/syntax_highlighter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/title%3d-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/title-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/update_backend_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/update_doctype_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/write-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Document/xreftext-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockMacroProcessor/cdesc-BlockMacroProcessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockMacroProcessor/name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessor/cdesc-BlockProcessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessor/name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessor/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessorDsl/bind_to-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessorDsl/cdesc-BlockProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessorDsl/contexts-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessorDsl/on_context-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/BlockProcessorDsl/on_contexts-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DSL/cdesc-DSL.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DSL/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DSL/match-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DSL/match_format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DSL/using_format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DocinfoProcessor/cdesc-DocinfoProcessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DocinfoProcessor/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DocinfoProcessor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DocinfoProcessorDsl/at_location-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DocinfoProcessorDsl/cdesc-DocinfoProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DocumentProcessorDsl/cdesc-DocumentProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/DocumentProcessorDsl/prefer-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Extension/cdesc-Extension.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Extension/config-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Extension/instance-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Extension/kind-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Extension/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Group/activate-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Group/cdesc-Group.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Group/register-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/IncludeProcessor/cdesc-IncludeProcessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/IncludeProcessor/handles%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/IncludeProcessor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/IncludeProcessorDsl/cdesc-IncludeProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/IncludeProcessorDsl/handles%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessor/cdesc-InlineMacroProcessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessor/regexp-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessor/resolve_regexp-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessorDsl/cdesc-InlineMacroProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessorDsl/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessorDsl/match-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessorDsl/match_format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/InlineMacroProcessorDsl/using_format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/MacroProcessor/cdesc-MacroProcessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/MacroProcessor/name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/MacroProcessor/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/MacroProcessor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/MacroProcessorDsl/cdesc-MacroProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/MacroProcessorDsl/resolve_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/MacroProcessorDsl/resolves_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Postprocessor/cdesc-Postprocessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Postprocessor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Preprocessor/cdesc-Preprocessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Preprocessor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/cdesc-Processor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/config-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/config-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/create_block-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/create_image_block-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/create_inline-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/create_list-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/create_list_item-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/create_section-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/enable_dsl-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/option-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/parse_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/parse_content-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/update_config-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Processor/use_dsl-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/ProcessorDsl/cdesc-ProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/ProcessorDsl/option-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/ProcessorDsl/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/ProcessorDsl/process_block_given%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/ProcessorExtension/cdesc-ProcessorExtension.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/ProcessorExtension/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/ProcessorExtension/process_method-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/activate-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/add_document_processor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/add_syntax_processor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/as_symbol-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/block-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/block_macro-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/block_macros%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/blocks%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/cdesc-Registry.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/docinfo_processor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/docinfo_processors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/docinfo_processors-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/find_block_extension-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/find_block_macro_extension-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/find_inline_macro_extension-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/groups-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/include_processor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/include_processors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/include_processors-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/inline_macro-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/inline_macros%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/inline_macros-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/postprocessor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/postprocessors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/postprocessors-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/prefer-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/preprocessor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/preprocessors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/preprocessors-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/registered_for_block%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/registered_for_block_macro%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/registered_for_inline_macro%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/reset-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/resolve_args-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/tree_processor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/tree_processors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/tree_processors-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/treeprocessor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/treeprocessors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/Registry/treeprocessors-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/cdesc-SyntaxProcessorDsl.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/content_model-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/default_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/default_attrs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/name_positional_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/named-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/parse_content_as-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/positional_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/positional_attrs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/resolve_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/SyntaxProcessorDsl/resolves_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/TreeProcessor/cdesc-TreeProcessor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/TreeProcessor/process-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/cdesc-Extensions.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/create-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/generate_name-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/groups-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/next_auto_id-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/register-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/unregister-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Extensions/unregister_all-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/basename-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/cdesc-Helpers.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/class_for_name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/encode_spaces_in_uri-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/encode_uri_component-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/extname%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/extname-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/int_to_roman-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/mkdir_p-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/nextval-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/prepare_source_array-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/prepare_source_string-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/require_library-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/resolve_class-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/rootname-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Helpers/uriish%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/alt-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/block%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/cdesc-Inline.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/inline%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/reftext%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/reftext-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/render-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/target-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/text-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/type-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Inline/xreftext-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/List/cdesc-List.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/List/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/List/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/List/outline%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/List/render-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/List/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/cdesc-ListItem.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/compound%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/fold_first-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/marker-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/simple%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/text%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/text-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/ListItem/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/AutoFormattingMessage/cdesc-AutoFormattingMessage.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/AutoFormattingMessage/inspect-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/BasicFormatter/call-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/BasicFormatter/cdesc-BasicFormatter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/add-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/cdesc-Logger.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/max_severity-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logger/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/LoggerManager/cdesc-LoggerManager.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/LoggerManager/logger%3d-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/LoggerManager/logger-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/LoggerManager/logger_class-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/LoggerManager/memoize_logger-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logging/cdesc-Logging.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logging/included-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logging/logger-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Logging/message_with_context-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/MemoryLogger/add-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/MemoryLogger/cdesc-MemoryLogger.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/MemoryLogger/clear-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/MemoryLogger/empty%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/MemoryLogger/max_severity-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/MemoryLogger/messages-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/MemoryLogger/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/NullLogger/add-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/NullLogger/cdesc-NullLogger.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/NullLogger/max_severity-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/NullLogger/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/adjust_indentation%21-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/atx_section_title%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/build_block-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/catalog_callouts-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/catalog_inline_anchor-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/catalog_inline_anchors-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/catalog_inline_biblio_anchor-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/cdesc-Parser.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/initialize_section-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/is_delimited_block%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/is_next_line_doctitle%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/is_next_line_section%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/is_section_title%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/is_sibling_list_item%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/next_block-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/next_section-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_block_metadata_line-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_block_metadata_lines-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_blocks-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_callout_list-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_cellspec-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_colspecs-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_description_list-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_document_header-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_header_metadata-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_list-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_list_item-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_manpage_header-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_section_title-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_style_attribute-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/parse_table-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/process_attribute_entries-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/process_attribute_entry-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/process_authors-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/read_lines_for_list_item-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/read_paragraph_lines-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/resolve_list_marker-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/resolve_ordered_list_marker-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/sanitize_attribute_name-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/setext_section_title%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/store_attribute-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/uniform%3f-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Parser/yield_buffered_attribute-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/absolute_path%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/cdesc-PathResolver.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/descends_from%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/expand_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/extract_uri_prefix-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/file_separator-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/join_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/partition_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/posixfy-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/posixify-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/relative_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/root%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/system_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/unc%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/web_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/web_root%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PathResolver/working_dir-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/cdesc-PreprocessorReader.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/create_include_cursor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/empty%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/eof%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/exceeded_max_depth%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/exceeds_max_depth%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/has_more_lines%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/include_depth-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/include_processors%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/include_stack-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/peek_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/pop_include-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/prepare_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/preprocess_conditional_directive-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/preprocess_include_directive-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/process_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/push_include-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/resolve_expr_val-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/resolve_include_path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/shift-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/skip_front_matter%21-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/split_delimited_value-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/PreprocessorReader/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/advance-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/cdesc-Cursor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/dir-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/file-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/line_info-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/lineno-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/Cursor/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/advance-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/cdesc-Reader.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/cursor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/cursor_at_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/cursor_at_mark-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/cursor_at_prev_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/cursor_before_mark-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/dir-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/discard_save-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/empty%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/eof%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/file-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/has_more_lines%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/line_info-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/lineno-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/mark-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/next_line_empty%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/path-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/peek_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/peek_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/prepare_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/process_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/process_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/read-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/read_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/read_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/read_lines_until-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/readlines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/replace_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/replace_next_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/restore_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/restore_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/restore_save-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/save-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/shift-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/skip_blank_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/skip_comment_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/skip_line_comments-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/source-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/source_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/string-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/terminate-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/unshift-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/unshift_all-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/unshift_line-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/unshift_lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Reader/unterminated-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/Formatters/HTMLLineHighlighter/cdesc-HTMLLineHighlighter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/Formatters/HTMLLineHighlighter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/Formatters/HTMLLineHighlighter/stream-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/Formatters/HTMLTable/cdesc-HTMLTable.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/Formatters/HTMLTable/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/Formatters/HTMLTable/stream-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/Formatters/cdesc-Formatters.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/RougeExt/cdesc-RougeExt.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Rx/cdesc-Rx.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SafeMode/cdesc-SafeMode.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SafeMode/name_for_value-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SafeMode/names-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SafeMode/value_for_name-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/%3c%3c-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/caption-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/cdesc-Section.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/generate_id-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/generate_id-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/index-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/numbered-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/sections%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/sectname-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/sectnum-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/special-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Section/xreftext-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/cdesc-Stylesheets.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/coderay_stylesheet_data-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/coderay_stylesheet_name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/embed_coderay_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/embed_primary_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/embed_pygments_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/instance-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/primary_stylesheet_data-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/primary_stylesheet_name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/pygments_stylesheet_data-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/pygments_stylesheet_name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/write_coderay_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/write_primary_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Stylesheets/write_pygments_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/apply_header_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/apply_normal_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/apply_reftext_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/apply_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/apply_title_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/cdesc-Substitutors.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/commit_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/convert_quoted_text-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/do_replacement-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/expand_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/extract_attributes_from_text-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/extract_callouts-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/extract_passthroughs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/highlight_source-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/normalize_text-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/parse_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/parse_quoted_text_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/resolve_block_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/resolve_lines_to_highlight-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/resolve_pass_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/resolve_subs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/restore_callouts-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/restore_passthroughs-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/split_simple_csv-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_attributes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_callouts-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_macros-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_post_replacements-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_quotes-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_replacements-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_source-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_specialcharacters-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Substitutors/sub_specialchars-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Base/cdesc-Base.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Base/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/Loader/cdesc-Loader.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/Loader/library_available%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/Loader/load_library-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/Styles/cdesc-Styles.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/Styles/read_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/Styles/stylesheet_basename-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/cdesc-CodeRayAdapter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/docinfo%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/docinfo-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/highlight%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/highlight-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/write_stylesheet%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CodeRayAdapter/write_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Config/cdesc-Config.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Config/register_for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CustomFactory/cdesc-CustomFactory.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CustomFactory/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/CustomFactory/registry-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/DefaultFactory/cdesc-DefaultFactory.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/DefaultFactory/for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/DefaultFactory/register-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/DefaultFactory/registry-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/DefaultFactoryProxy/cdesc-DefaultFactoryProxy.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/DefaultFactoryProxy/for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Factory/cdesc-Factory.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Factory/create-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Factory/for-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Factory/register-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/Factory/registry-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/HighlightJsAdapter/cdesc-HighlightJsAdapter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/HighlightJsAdapter/docinfo%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/HighlightJsAdapter/docinfo-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/HighlightJsAdapter/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/HighlightJsAdapter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/HtmlPipelineAdapter/cdesc-HtmlPipelineAdapter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/HtmlPipelineAdapter/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PrettifyAdapter/cdesc-PrettifyAdapter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PrettifyAdapter/docinfo%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PrettifyAdapter/docinfo-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PrettifyAdapter/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PrettifyAdapter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Loader/cdesc-Loader.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Loader/library_available%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Loader/load_library-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Styles/base_style-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Styles/cdesc-Styles.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Styles/read_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Styles/style_available%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/Styles/stylesheet_basename-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/cdesc-PygmentsAdapter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/docinfo%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/docinfo-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/highlight%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/highlight-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/write_stylesheet%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/PygmentsAdapter/write_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Loader/cdesc-Loader.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Loader/library_available%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Loader/load_library-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Styles/base_style-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Styles/cdesc-Styles.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Styles/read_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Styles/style_available%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/Styles/stylesheet_basename-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/cdesc-RougeAdapter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/create_formatter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/create_lexer-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/docinfo%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/docinfo-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/highlight%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/highlight-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/write_stylesheet%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/RougeAdapter/write_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/cdesc-SyntaxHighlighter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/docinfo%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/docinfo-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/highlight%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/highlight-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/included-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/name-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/write_stylesheet%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/SyntaxHighlighter/write_stylesheet-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/catalog_inline_anchor-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/cdesc-Cell.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/colspan-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/content-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/file-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/inner_document-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/lineno-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/lines-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/reinitialize-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/rowspan-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/source-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/text-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Cell/to_s-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Column/assign_width-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Column/block%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Column/cdesc-Column.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Column/inline%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Column/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Column/style-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/activate_rowspan-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/advance-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/buffer-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/buffer_has_unclosed_quotes%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/cdesc-ParserContext.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/cell_closed%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/cell_open%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/close_cell-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/close_open_cell-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/close_row-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/close_table-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/colcount-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/delimiter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/delimiter_re-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/effective_column_visits-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/end_of_row%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/format-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/keep_cell_open-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/mark_cell_closed-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/match_delimiter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/push_cellspec-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/skip_past_delimiter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/skip_past_escaped_delimiter-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/starts_with_delimiter%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/table-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/ParserContext/take_cellspec-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Rows/body-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Rows/by_section-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Rows/cdesc-Rows.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Rows/foot-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Rows/head-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Rows/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/Rows/to_h-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/assign_column_widths-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/caption-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/cdesc-Table.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/columns-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/create_columns-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/has_header_option-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/header_row%3f-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/partition_header_footer-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Table/rows-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/cdesc-Timings.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/new-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/now-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/parse-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/print_report-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/read-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/read_parse-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/read_parse_convert-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/record-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/start-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/time-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/total-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Timings/write-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/VoidWriter/cdesc-VoidWriter.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/VoidWriter/write-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Writer/cdesc-Writer.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/Writer/write-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/cdesc-Asciidoctor.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/const_missing-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/convert-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/convert_file-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/load-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/load_file-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/render-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Asciidoctor/render_file-c.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Hash/cdesc-Hash.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/MatchData/cdesc-MatchData.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/MatchData/names-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/NilClass/cdesc-NilClass.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Numeric/cdesc-Numeric.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Object/cdesc-Object.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Object/merge-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Object/truncate-i.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/Regexp/cdesc-Regexp.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/String/cdesc-String.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/doc/asciidoctor-2.0.23/ri/cache.ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/extensions/aarch64-mingw-ucrt/3.1.0/debug-1.6.3/debug/debug.so create mode 100644 clangarm64/lib/ruby/gems/3.1.0/extensions/aarch64-mingw-ucrt/3.1.0/debug-1.6.3/gem.build_complete create mode 100644 clangarm64/lib/ruby/gems/3.1.0/extensions/aarch64-mingw-ucrt/3.1.0/rbs-2.7.0/gem.build_complete create mode 100644 clangarm64/lib/ruby/gems/3.1.0/extensions/aarch64-mingw-ucrt/3.1.0/rbs-2.7.0/rbs_extension.so create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/.yardopts create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/CHANGELOG.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/LICENSE create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/README-de.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/README-fr.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/README-jp.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/README-zh_CN.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/README.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/asciidoctor.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/bin/asciidoctor create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-ar.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-be.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-bg.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-ca.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-cs.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-da.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-de.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-en.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-es.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-fa.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-fi.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-fr.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-hu.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-id.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-it.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-ja.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-ko.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-nb.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-nl.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-nn.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-pl.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-pt.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-pt_BR.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-ro.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-ru.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-sr.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-sr_Latn.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-sv.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-sw.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-th.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-tr.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-uk.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-vi.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-zh_CN.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes-zh_TW.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/locale/attributes.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/reference/syntax.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/stylesheets/asciidoctor-default.css create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/data/stylesheets/coderay-asciidoctor.css create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/abstract_block.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/abstract_node.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/attribute_list.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/block.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/callouts.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/cli.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/cli/invoker.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/cli/options.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/convert.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/converter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/converter/composite.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/converter/docbook5.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/converter/html5.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/converter/manpage.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/converter/template.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/core_ext.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/core_ext/float/truncate.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/core_ext/hash/merge.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/core_ext/match_data/names.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/core_ext/nil_or_empty.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/core_ext/regexp/is_match.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/document.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/extensions.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/helpers.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/inline.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/list.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/load.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/logging.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/path_resolver.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/reader.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/rouge_ext.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/rx.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/section.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/stylesheets.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/substitutors.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/syntax_highlighter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/syntax_highlighter/coderay.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/syntax_highlighter/highlightjs.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/syntax_highlighter/html_pipeline.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/syntax_highlighter/prettify.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/syntax_highlighter/pygments.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/syntax_highlighter/rouge.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/table.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/timings.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/lib/asciidoctor/writer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/man/asciidoctor.1 create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/asciidoctor-2.0.23/man/asciidoctor.adoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/bundler-2.3.27/libexec/bundle create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/bundler-2.3.27/libexec/bundler create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/CONTRIBUTING.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/TODO.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/exe/rdbg create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/ext/debug/debug.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/ext/debug/extconf.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/ext/debug/iseq_collector.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/breakpoint.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/client.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/color.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/config.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/console.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/frame_info.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/local.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/open.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/open_nonstop.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/prelude.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/server.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/server_cdp.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/server_dap.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/session.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/source_repository.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/start.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/thread_client.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/tracer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/debug-1.6.3/misc/README.md.erb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/erb-2.2.3/libexec/erb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/irb-1.4.1/exe/irb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/matrix-0.4.2/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/matrix-0.4.2/lib/matrix.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/matrix-0.4.2/lib/matrix/eigenvalue_decomposition.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/matrix-0.4.2/lib/matrix/lup_decomposition.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/matrix-0.4.2/lib/matrix/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/History.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/Manifest.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/README.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/design_rationale.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/hoe/minitest.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/assertions.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/autorun.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/benchmark.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/expectations.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/hell.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/mock.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/parallel.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/pride.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/pride_plugin.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/spec.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/test.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/lib/minitest/unit.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/test/minitest/metametameta.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/test/minitest/test_minitest_assertions.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/test/minitest/test_minitest_benchmark.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/test/minitest/test_minitest_mock.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/test/minitest/test_minitest_reporter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/test/minitest/test_minitest_spec.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/minitest-5.15.0/test/minitest/test_minitest_test.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-ftp-0.1.4/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-ftp-0.1.4/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-ftp-0.1.4/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-ftp-0.1.4/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-ftp-0.1.4/bin/console create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-ftp-0.1.4/bin/setup create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-ftp-0.1.4/lib/net/ftp.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/authenticators.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/authenticators/cram_md5.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/authenticators/digest_md5.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/authenticators/login.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/authenticators/plain.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/command_data.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/data_encoding.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/errors.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/flags.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/response_data.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-imap-0.2.4/lib/net/imap/response_parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-pop-0.1.1/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-pop-0.1.1/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-pop-0.1.1/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-pop-0.1.1/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-pop-0.1.1/bin/console create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-pop-0.1.1/bin/setup create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-pop-0.1.1/lib/net/pop.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-smtp-0.3.1.1/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/net-smtp-0.3.1.1/lib/net/smtp.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/BSDL create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/COPYING create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/LEGAL create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert/colorize.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert/configuration.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert/context.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert/enable_tracepoint_events.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert/inspector.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert/parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/power_assert-2.0.1/lib/power_assert/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/prime-0.1.2/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/prime-0.1.2/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/prime-0.1.2/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/prime-0.1.2/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/prime-0.1.2/bin/console create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/prime-0.1.2/bin/setup create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/prime-0.1.2/lib/prime.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/racc-1.6.0/bin/racc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/History.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/MIT-LICENSE create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/README.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/command_line_usage.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/example/Rakefile1 create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/example/Rakefile2 create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/example/a.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/example/b.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/example/main.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/glossary.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/jamis.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/proto_rake.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/rake.1 create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/rakefile.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/doc/rational.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/exe/rake create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/backtrace.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/clean.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/cloneable.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/cpu_counter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/default_loader.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/early_time.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/ext/core.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/ext/string.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/file_creation_task.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/file_list.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/file_task.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/file_utils.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/file_utils_ext.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/invocation_chain.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/invocation_exception_mixin.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/late_time.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/linked_list.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/loaders/makefile.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/multi_task.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/name_space.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/packagetask.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/phony.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/private_reader.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/promise.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/pseudo_status.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/rake_module.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/rule_recursion_overflow_error.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/scope.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task_argument_error.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task_arguments.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task_manager.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/tasklib.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/testtask.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/thread_history_display.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/thread_pool.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/trace_output.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/win32.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/BSDL create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/CHANGELOG.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/COPYING create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/Gemfile.lock create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/Steepfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/array.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/basic_object.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/binding.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/builtin.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/class.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/comparable.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/complex.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/constants.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/deprecated.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/dir.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/encoding.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/enumerable.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/enumerator.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/env.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/errno.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/errors.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/exception.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/false_class.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/fiber.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/fiber_error.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/file.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/file_test.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/float.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/gc.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/global_variables.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/hash.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/integer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/io.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/io/buffer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/io/wait.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/kernel.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/marshal.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/match_data.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/math.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/method.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/module.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/nil_class.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/numeric.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/object.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/object_space.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/proc.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/process.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/ractor.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/random.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/range.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rational.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rb_config.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rbs/unnamed/argf.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rbs/unnamed/env_class.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rbs/unnamed/random.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/refinement.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/regexp.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/ruby_vm.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/basic_specification.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/config_file.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/dependency_installer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/errors.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/installer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/path_support.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/platform.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/request_set.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/requirement.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/rubygems.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/source_list.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/specification.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/stream_ui.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/uninstaller.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/rubygems/version.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/signal.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/string.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/string_io.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/struct.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/symbol.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/thread.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/thread_group.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/time.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/trace_point.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/true_class.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/unbound_method.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/core/warning.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/docs/CONTRIBUTING.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/docs/collection.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/docs/rbs_by_example.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/docs/repo.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/docs/sigs.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/docs/stdlib.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/docs/syntax.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/exe/rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/constants.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/constants.h create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/extconf.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/lexer.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/lexer.h create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/lexer.re create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/lexstate.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/location.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/location.h create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/main.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/parser.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/parser.h create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/parserstate.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/parserstate.h create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/rbs_extension.h create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/ruby_objs.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/ruby_objs.h create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension/unescape.c create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/goodcheck.yml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/ancestor_graph.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/annotate.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/annotate/annotations.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/annotate/formatter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/annotate/rdoc_annotator.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/annotate/rdoc_source.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/ast/annotation.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/ast/comment.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/ast/declarations.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/ast/members.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/ast/type_param.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/buffer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/builtin_names.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/cli.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/cleaner.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/config.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/config/lockfile_generator.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/installer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/sources.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/sources/base.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/sources/git.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/sources/rubygems.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/collection/sources/stdlib.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/constant.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/constant_table.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/definition.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/definition_builder.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/definition_builder/ancestor_builder.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/definition_builder/method_builder.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/environment.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/environment_loader.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/environment_walker.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/errors.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/factory.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/location_aux.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/locator.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/method_type.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/namespace.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/parser_aux.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/parser_compat/lexer_error.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/parser_compat/located_value.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/parser_compat/semantics_error.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/parser_compat/syntax_error.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/prototype/helpers.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/prototype/rb.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/prototype/rbi.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/prototype/runtime.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/repository.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/resolver/constant_resolver.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/resolver/type_name_resolver.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/sorter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/substitution.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/errors.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/hook.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/observer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/setup.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/setup_helper.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/spy.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/tester.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/test/type_check.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/type_alias_dependency.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/type_alias_regularity.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/type_name.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/type_name_resolver.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/types.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/validator.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/variance_calculator.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/vendorer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs/writer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rdoc/discover.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rdoc_plugin/parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/annotation.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/comment.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/decls.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/function.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/location.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/members.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/methodType.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/typeParam.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/schema/types.json create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/ancestor_builder.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/ancestor_graph.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/annotate/annotations.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/annotate/formatter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/annotate/rdoc_annotater.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/annotate/rdoc_source.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/annotation.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/buffer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/builtin_names.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/cli.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/collection.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/collection/cleaner.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/collection/config.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/collection/installer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/collection/sources.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/comment.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/constant.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/constant_table.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/declarations.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/definition.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/definition_builder.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/environment.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/environment_loader.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/environment_walker.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/errors.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/factory.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/location.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/locator.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/members.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/method_builder.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/method_types.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/namespace.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/parser.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/prototype/helpers.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/prototype/rb.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/prototype/rbi.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/rbs.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/rdoc/rbs.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/repository.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/resolver/constant_resolver.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/resolver/context.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/resolver/type_name_resolver.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/shims.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/shims/abstract_syntax_tree.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/shims/enumerable.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/shims/pp.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/shims/ripper.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/sorter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/substitution.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/type_alias_dependency.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/type_alias_regularity.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/type_name_resolver.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/type_param.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/typename.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/types.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/util.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/validator.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/variance_calculator.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/vendorer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/version.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/sig/writer.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/abbrev/0/abbrev.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/abbrev/0/array.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/base64/0/base64.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/benchmark/0/benchmark.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/bigdecimal-math/0/big_math.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/bigdecimal-math/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/bigdecimal/0/big_decimal.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/cgi/0/core.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/cgi/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/coverage/0/coverage.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/csv/0/csv.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/csv/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/date/0/date.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/date/0/date_time.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/date/0/time.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/dbm/0/dbm.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/did_you_mean/0/did_you_mean.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/digest/0/digest.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/erb/0/erb.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/etc/0/etc.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/fileutils/0/fileutils.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/find/0/find.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/forwardable/0/forwardable.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/io-console/0/io-console.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/ipaddr/0/ipaddr.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/json/0/json.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/logger/0/formatter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/logger/0/log_device.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/logger/0/logger.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/logger/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/logger/0/period.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/logger/0/severity.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/kernel.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/abstract_reporter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/assertion.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/assertions.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/backtrace_filter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/bench_spec.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/benchmark.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/composite_reporter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/expectation.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/expectations.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/guard.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/mock.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/parallel.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/parallel/executor.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/parallel/test.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/pride_io.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/pride_lol.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/progress_reporter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/reportable.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/reporter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/result.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/runnable.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/skip.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/spec.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/spec/dsl.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/statistics_reporter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/summary_reporter.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/test.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/unexpected_error.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/unit.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/minitest/0/minitest/unit/test_case.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/monitor/0/monitor.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/mutex_m/0/mutex_m.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/net-http/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/net-http/0/net-http.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/nkf/0/nkf.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/objspace/0/objspace.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/openssl/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/openssl/0/openssl.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/optparse/0/optparse.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/pathname/0/pathname.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/prettyprint/0/prettyprint.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/prime/0/integer-extension.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/prime/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/prime/0/prime.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/pstore/0/pstore.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/pty/0/pty.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/rdoc/0/rdoc.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/resolv/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/resolv/0/resolv.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/securerandom/0/securerandom.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/set/0/set.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/shellwords/0/shellwords.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/singleton/0/singleton.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/addrinfo.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/basic_socket.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/ip_socket.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/socket.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/tcp_server.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/tcp_socket.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/udp_socket.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/unix_server.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/socket/0/unix_socket.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/strscan/0/string_scanner.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/tempfile/0/tempfile.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/time/0/time.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/timeout/0/timeout.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/tmpdir/0/tmpdir.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/tsort/0/cyclic.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/tsort/0/interfaces.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/tsort/0/tsort.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/common.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/file.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/ftp.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/generic.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/http.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/https.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/ldap.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/ldaps.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/mailto.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/rfc2396_parser.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/rfc3986_parser.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/ws.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/uri/0/wss.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/yaml/0/dbm.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/yaml/0/manifest.yaml create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/yaml/0/store.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/stdlib/zlib/0/zlib.rbs create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/steep/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/steep/Gemfile.lock create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rdoc-6.4.1.1/exe/rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rdoc-6.4.1.1/exe/ri create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/NEWS.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/context.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/child.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/document.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/element.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/node.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/parent.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/child_toc.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/document_toc.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/element_toc.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/master_toc.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/node_toc.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/parent_toc.rdoc create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/attlistdecl.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/attribute.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/cdata.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/child.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/comment.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/doctype.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/document.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/dtd/attlistdecl.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/dtd/dtd.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/dtd/elementdecl.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/dtd/entitydecl.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/dtd/notationdecl.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/element.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/encoding.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/entity.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/formatters/default.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/formatters/pretty.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/formatters/transitive.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/functions.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/instruction.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/light/node.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/namespace.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/node.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/output.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parent.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parseexception.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/baseparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/lightparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/pullparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/sax2parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/streamparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/treeparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/ultralightparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/parsers/xpathparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/quickpath.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/rexml.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/sax2listener.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/security.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/source.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/streamlistener.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/text.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/undefinednamespaceexception.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/validation/relaxng.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/validation/validation.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/validation/validationexception.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/xmldecl.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/xmltokens.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/xpath.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rexml-3.2.5/lib/rexml/xpath_parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/LICENSE.txt create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/NEWS.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/0.9.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/atom.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/content.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/content/1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/content/2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/converter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/dublincore.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/dublincore/1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/dublincore/2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/dublincore/atom.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/image.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/itunes.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/0.9.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/atom.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/base.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/content.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/dublincore.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/entry.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/feed.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/image.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/itunes.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/slash.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/syndication.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/taxonomy.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/maker/trackback.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/rexmlparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/rss.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/slash.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/syndication.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/taxonomy.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/trackback.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/utils.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/xml-stylesheet.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/xml.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/xmlparser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/lib/rss/xmlscanner.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/dot.png create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/rss-assertions.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/rss-testcase.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/run-test.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_accessor.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_atom.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_content.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_dublincore.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_image.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_inherit.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_itunes.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_0.9.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_atom_entry.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_atom_feed.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_content.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_dc.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_image.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_itunes.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_slash.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_sy.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_taxo.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_trackback.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_maker_xml-stylesheet.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_parser.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_parser_1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_parser_2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_parser_atom_entry.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_parser_atom_feed.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_setup_maker_0.9.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_setup_maker_1.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_setup_maker_2.0.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_setup_maker_atom_entry.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_setup_maker_atom_feed.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_setup_maker_itunes.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_setup_maker_slash.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_slash.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_syndication.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_taxonomy.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_to_s.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_trackback.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/rss-0.2.9/test/test_xml-stylesheet.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/BSDL create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/COPYING create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/PSFL create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/doc/text/getting-started.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/doc/text/how-to.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/doc/text/news.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test-unit.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/assertion-failed-error.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/assertions.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/attribute-matcher.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/attribute.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/auto-runner-loader.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/autorunner.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/code-snippet-fetcher.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/collector.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/collector/descendant.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/collector/dir.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/collector/load.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/collector/objectspace.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/collector/xml.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/color-scheme.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/color.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/data-sets.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/data.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/diff.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/error.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/exception-handler.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/failure.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/fault-location-detector.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/fixture.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/notification.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/omission.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/pending.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/priority.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/runner/console.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/runner/emacs.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/runner/xml.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/test-suite-creator.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/testcase.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/testresult.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/testsuite.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/ui/console/outputlevel.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/ui/console/testrunner.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/ui/emacs/testrunner.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/ui/testrunner.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/ui/testrunnermediator.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/ui/testrunnerutilities.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/ui/xml/testrunner.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/util/backtracefilter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/util/memory-usage.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/util/method-owner-finder.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/util/observable.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/util/output.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/util/procwrapper.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/lib/test/unit/warning.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/sample/adder.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/sample/subtracter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/sample/test_adder.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/sample/test_subtracter.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/test-unit-3.5.3/sample/test_user.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/Gemfile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/Gemfile.lock create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/LICENSE create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/README.md create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/Rakefile create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/exe/typeprof create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/analyzer.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/arguments.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/block.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/builtin.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/cli.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/code-range.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/config.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/container-type.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/export.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/import.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/insns-def.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/iseq.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/lsp.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/method.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/type.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/utils.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/lib/typeprof/version.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/tools/coverage.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/tools/setup-insns-def.rb create mode 100644 clangarm64/lib/ruby/gems/3.1.0/gems/typeprof-0.21.3/typeprof-lsp create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/asciidoctor-2.0.23.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/debug-1.6.3.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/abbrev-0.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/base64-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/benchmark-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/bigdecimal-3.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/bundler-2.3.27.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/cgi-0.3.6.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/csv-3.2.5.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/date-3.2.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/delegate-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/did_you_mean-1.6.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/digest-3.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/drb-2.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/english-0.7.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/erb-2.2.3.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/error_highlight-0.3.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/etc-1.3.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/fcntl-1.0.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/fiddle-1.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/fileutils-1.6.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/find-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/forwardable-1.3.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/getoptlong-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/io-console-0.5.11.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/io-nonblock-0.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/io-wait-0.2.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/ipaddr-1.2.4.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/irb-1.4.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/json-2.6.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/logger-1.5.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/mutex_m-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/net-http-0.3.0.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/net-protocol-0.1.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/nkf-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/observer-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/open-uri-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/open3-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/openssl-3.0.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/optparse-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/ostruct-0.5.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/pathname-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/pp-0.3.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/prettyprint-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/pstore-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/psych-4.0.4.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/racc-1.6.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/rdoc-6.4.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/readline-0.0.3.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/readline-ext-0.1.4.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/reline-0.3.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/resolv-0.2.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/resolv-replace-0.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/rinda-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/ruby2_keywords-0.0.5.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/securerandom-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/set-1.0.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/shellwords-0.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/singleton-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/stringio-3.0.1.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/strscan-3.0.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/tempfile-0.1.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/time-0.2.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/timeout-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/tmpdir-0.1.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/tsort-0.1.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/un-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/uri-0.12.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/weakref-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/win32ole-1.8.8.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/yaml-0.2.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/default/zlib-2.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/matrix-0.4.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/minitest-5.15.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/net-ftp-0.1.4.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/net-imap-0.2.4.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/net-pop-0.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/net-smtp-0.3.1.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/power_assert-2.0.1.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/prime-0.1.2.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/rake-13.0.6.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/rbs-2.7.0.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/rexml-3.2.5.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/rss-0.2.9.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/test-unit-3.5.3.gemspec create mode 100644 clangarm64/lib/ruby/gems/3.1.0/specifications/typeprof-0.21.3.gemspec create mode 100644 clangarm64/share/info/gdbm.info.gz create mode 100644 clangarm64/share/licenses/asciidoctor/LICENSE create mode 100644 clangarm64/share/licenses/gdbm/COPYING create mode 100644 clangarm64/share/licenses/ruby/BSDL create mode 100644 clangarm64/share/licenses/ruby/LICENSE create mode 100644 clangarm64/share/locale/da/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/de/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/eo/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/es/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/fi/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/fr/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/ja/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/pl/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/pt_BR/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/ru/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/sr/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/sv/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/uk/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/locale/vi/LC_MESSAGES/gdbm.mo create mode 100644 clangarm64/share/man/man1/asciidoctor.1.gz create mode 100644 clangarm64/share/man/man1/erb.1.gz create mode 100644 clangarm64/share/man/man1/gdbm_dump.1.gz create mode 100644 clangarm64/share/man/man1/gdbm_load.1.gz create mode 100644 clangarm64/share/man/man1/gdbmtool.1.gz create mode 100644 clangarm64/share/man/man1/irb.1.gz create mode 100644 clangarm64/share/man/man1/ri.1.gz create mode 100644 clangarm64/share/man/man1/ruby.1.gz create mode 100644 clangarm64/share/man/man3/gdbm.3.gz create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-asciidoctor-2.0.23-1/desc create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-asciidoctor-2.0.23-1/files create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-asciidoctor-2.0.23-1/mtree create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-gdbm-1.19-3/desc create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-gdbm-1.19-3/files create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-gdbm-1.19-3/mtree create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-libyaml-0.2.5-2/desc create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-libyaml-0.2.5-2/files create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-libyaml-0.2.5-2/mtree create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-pdcurses-4.4.0-1/desc create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-pdcurses-4.4.0-1/files create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-pdcurses-4.4.0-1/mtree create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-ruby-3.1.5-1/desc create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-ruby-3.1.5-1/files create mode 100644 var/lib/pacman/local/mingw-w64-clang-aarch64-ruby-3.1.5-1/mtree diff --git a/clangarm64/bin/asciidoctor b/clangarm64/bin/asciidoctor new file mode 100644 index 00000000000..02cbbc350e2 --- /dev/null +++ b/clangarm64/bin/asciidoctor @@ -0,0 +1,36 @@ +#!/bin/sh +# -*- ruby -*- +_=_\ +=begin +bindir="${0%/*}" +exec "$bindir/ruby" "-x" "$0" "$@" +=end +#!/clangarm64/bin/ruby +# +# This file was generated by RubyGems. +# +# The application 'asciidoctor' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('asciidoctor', 'asciidoctor', version) +else +gem "asciidoctor", version +load Gem.bin_path("asciidoctor", "asciidoctor", version) +end diff --git a/clangarm64/bin/asciidoctor.bat b/clangarm64/bin/asciidoctor.bat new file mode 100644 index 00000000000..9390d9339d6 --- /dev/null +++ b/clangarm64/bin/asciidoctor.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@ruby.exe "%~dpn0" %* diff --git a/clangarm64/bin/bundle b/clangarm64/bin/bundle new file mode 100644 index 00000000000..7837ff68c20 --- /dev/null +++ b/clangarm64/bin/bundle @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'bundler' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ENV['BUNDLER_VERSION'] = str + + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('bundler', 'bundle', version) +else +gem "bundler", version +load Gem.bin_path("bundler", "bundle", version) +end diff --git a/clangarm64/bin/bundle.bat b/clangarm64/bin/bundle.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/bundle.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/bundler b/clangarm64/bin/bundler new file mode 100644 index 00000000000..cf7e9b839e8 --- /dev/null +++ b/clangarm64/bin/bundler @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'bundler' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ENV['BUNDLER_VERSION'] = str + + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('bundler', 'bundler', version) +else +gem "bundler", version +load Gem.bin_path("bundler", "bundler", version) +end diff --git a/clangarm64/bin/bundler.bat b/clangarm64/bin/bundler.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/bundler.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/erb b/clangarm64/bin/erb new file mode 100644 index 00000000000..45505664161 --- /dev/null +++ b/clangarm64/bin/erb @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'erb' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('erb', 'erb', version) +else +gem "erb", version +load Gem.bin_path("erb", "erb", version) +end diff --git a/clangarm64/bin/erb.bat b/clangarm64/bin/erb.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/erb.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/gdbm_dump.exe b/clangarm64/bin/gdbm_dump.exe new file mode 100644 index 0000000000000000000000000000000000000000..a46db98d3342ad98e3f9b4528667c7fc835879ee GIT binary patch literal 37888 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 literal 0 HcmV?d00001 diff --git a/clangarm64/bin/gdbm_load.exe b/clangarm64/bin/gdbm_load.exe new file mode 100644 index 0000000000000000000000000000000000000000..5fdfa403c16bd86f114d20a51a434722e52b3f6a GIT binary patch literal 38912 zcmeIb4SbZOMn0oUot__Bm$x$1Vx#IfC(UA2x_(MWJm@wB;;)-ya^iA zc0*%rrlzYaZ3$T0B-Ji$p_|wjq3ycyrCYSh+SYCZQX8PQp{QhhA;0f=US^&rfV=zu z{rCU*|9;!F;%EKySqm4)Zvs9#%C=x>gt+^cXiNP-%#xhReKATuk^03DG$!LLa7xCl`8La ztJ!b=D5&a{x)mn+)fAQD9IaFVgmd&p`^S@}YI&dVspXwY4c9=4RP_QdI^j~K+s#Tw zU87ZR8z<#r80 zwiIVXf}0|gYxDV!^i%q7^n;xC=T)k7Mtyl85>Tq|VnC(*go#3amOr0Tz8R|b zS9!3PpWszVA@S!Eyhv48AktNJfS=%1^RxWpRZW>8^FuroyjlwqS)Wq*cF5mK z|5XW`9+NR}c7%#C-S%elyPDs0ep#xqc<}^ZEPI$QR(X*xHqGJN{LH1kSfN98cNR4l zSCH;mC) zJil4h{Yk`3_Zge8jHFzZ)E!B<+cO3gGD>-^i#>X3dI`QFop%mPbCb zbYwKU$QMH)Tk;!6MqSj;;@1QZ)gx8fS>&wKXe@TqCl7KPrc`T&*Y&#m&Khl>Uirh0 z_wI3YoGEj5#424KAKshPaXsz!xyE%)U@XE{`eGGl{XIQO?Qb~i>FF38ykQn&wNI(p z6OrS)^u<5l^?Jmq<~-+gpY$>|vz0n@cu`(VZEGw(;GBQ>LiMq!iTX;fA2>TG_4lr# zUx#yiu^wkahP|%F;s-~n)=|_Gc#~4IL~q*njGXHRCV4M)Gx_y6Rkxbui)H2_BgV$0 z<3Jxw95s#SGkvied0t3esnZJ0`|0ofXWczL^fe1wZjUyWu`Gw$S47|b;&OK~UNNs@ z{$a+lGmpAQNfqTxef-6O98!D7FNMl)!49Qb!oeq-W-ZubZ^ zR&Cq%=m_AaU8?g=;29%ST?#UdJ(3suz%{<}LsxpI*X4_4fs>Y`qP?!P&JRbcR^Q*L zfy}@24IHKXG39$ls8a`#C1xyb0N(E3k~?tv5l5_PxM~%>Duj0SC|@i&nio4j+tQyL zcsoKnPGD2e6~S4_&pm2Ecj*jQH*;`S`<|t9D;TRk(njfw1>GOsTY%myK!5Vlqr8sO zEC0D&bowOEy~_KVsfVJ28R%g7;NW9Jbx?3VPC+-7I@LRV*WIRW3Z20P&R0&abU{0b zHipsG@Qx3|BRW35*WGd2<>-9RrE+AvGh0R=i;SGXNh&rtMs; zx-&0!4{7?heX-e$|J~$e-h@{>qb$E^ty|K^eaWd>-Lo9GXM9D~Wery)p~1n_b?Yi} zvpvbpUPs2^M#k|s$XWXE5V-F#?>EeMiG6GREBQOFcXi)K{x9SO_m|-I(zngPP5@J` z`G=8N_mKrED$kvc#^QSV)t92_>)a-Xy5S781<$Q~-EPWRa~5e=QH2(%4N~(DhVq2Y#nZ zw{2C_m$BFCSGl8klrM!wDRK%L&oV}#*T!5_?e1tUaEXbUvev#35WTf%j;)$jK7a8=r#^)S`{$%(cLtUY_GD+^dJ3G(9`I=?1|!Dwq{e;OW&^){*X)G7;Lpu%{qF$LN~E#{Qg8;Q@&c= z)a2-CVDHl2o1}Oj-EWiXJf(HMfG$+bU(ntAq>5%UrpLl6nt%O*?jx>Aoy@bk3TR&L zXqtS8I;Be8Aa?o+_c~6P{9NZ(w?F2ZiJ82sH-Q=ji{s2tYklsnYSg%v< zdz5iG`k;y)L4RHRI;hK-Xtr0Y_jF3sjb0ob@6&YSTRiV2|14>oc4#2$?A#IEN& z0gXO%5xlu>r^r&}2%g9h`RQu}bdIy83#|-?=VYEsl}P*V-J6e1%I9{c?0jpQNr2 z*@|u4{~NtO(qB#Iy`wZaI^l6Q^#xDbIl_1zg_m767<3qm_wE&&{?qoIqnL9mf2{io z$Z!sAy&rGO)%mW=i7j??o}tZNXr8alhYb4iT=d{5I`jarca_>Fya-(5bJnP+tYe#a zcKW=}#&_1)Xz9G3LDu>j^t1LF_#OP2LmTt6*aqR}tw)nOjx@VEj=!a%vn=EPhn>SZ z{y0a)ga=a>j=NN>mA*7ypf9%@?aT9{(37!TZh^@>75Uu;OxhMbv+BogY}r|KSl11Q zrW>z#RO{dZcurBVvtx9gkB)J69Dh(nWjuw(u}Q9uw=+A*F9YedU5wxYX`+aHm6J%x16H`vsw)f+YiJm@3D!TVwQv8cUZq?YGJrzG?b43?x z%`A91>+qJ^}mocSk}_h=;FJ`OJOsF zAAzf<@?zgH^7wEqiv{-Gyx9B>N6i0>Bla!JGvOm+zauuk+Y!UIF;Bqt4U49b7nz#% z-N*A|H*9uwmmG9xzKuCoqV(zX%4hYtV*1tLBz%@(_$-Qfk^z4iogRD+@mWWJ&mJbW zf4GYJ9qLr;@YW~X!?5eSRW!%p@5;ds&DriBIB|Axe-7&(<^6ZSlkjmDzZaj+i(UPC z9(yHsbA}`3+2d|jPv*t)PHp>D*6WVgIP8Ra(h2N@($ukCw|n6xGJ#OGP;N^73`4C{YKUM%u0+HhRd zJYRWEvd0jc*Xcl}?=vofFFH~BEl2Dk@O$7hd01ny2foCo`hd1Cp`VvdP2QQFk{A0S z?GhG93-3|UuZ~dBA3v$075Mq>tSc46*@v(PsTj?kV3^uhI^6fno6kF972~jRBh)kP z%<%?r8(3GL`@m6G!MY~?oVIoW%YvSac_Cx{m34D-L&@xkTx#Fk6csHR(OCQ`;5*i3 z4w(l6LNf9{aUZg$~8qv1_v5qhd=gQr#as>xdP4 zRQE5bA7h^&bqg7{mnf@as-}YayJ%lI)H5I7yAWS?sQ>)D=0A&1TnN7+ci|hm-y%MS z+Pt7U^I%>qAAK%Ef00vbhFe|R%eZCS<*3urHa#`{=w|#6k?TkJc{1PLL63V`*PQ6Q ztRWZDRX1ZLzOFX^x4L)cGH&k5iY^%sc~-I7z0-|8y2q-0!m9_^I`k^V)A;JU%pvzb z=P@smPp+Hc+3ES*qffN*Y!`dPpTg@BbbDmwy4(}4l+LAtW9A57@47slak|@ma|=hQ zIUm61W6tp>JKU;7eDR9p@y(Z_)3Og@y=&P&d`$GK=+12Nhd&q{mA#?(gI{MqF(XRvOY-#1TE_V|C(0h)$!ok6kM)7wB2WS1}!9N!m+#H}mx*WBFBh@(?=^e({4}oy2pEpNV6l+pcu)H2D$VNch=8-AQ(S1{&i0 zOiKADbda&scq)abipp&RO@o8`Zak~=aM0l4Inq1f;m`0OZJP2@>`|$=FN?5dHqSkI zqvw`^E9-(6*{G~BtWlG4?gA$L_us4PzRftu8r2C*~uC|8Go6t+OxJXtRc+VU*yGPf6u<))GSBS6Tbr&JXtF{-S6bHU-8A>0Cvo*H&1j$ zeBU&Di3y!A8Tdz#m;02C{{(BajMc^Pj^6j}!T#_bSWpQ*Z!yVbrE z)SHA3jHk`;_pXU9**0mX;HHEsyPB~jOEM?zti+BqV~-_2;7aZkzdjusTZx?z*(>Hm z74fYq*1{@qr?CcBp?`lmJGf75#{lEuaV5WWlDegtb9QEK^F8XM&9~^s0Q_tGK+lhF z?)qr3WHNQMcA-)E(cr!%jQ;?(Xg=#_HfzUXjgOSh#STZ*p7amw*5GSMp-Nf*xbHSM?3 zC3D)i=oHd?-?-@6i+!;~+~())wyIlCp!ygt{GDF}CQQ>$^@DUHQ1FqVBI@CAOQ22R|m=5pSUwu5&1z?J9o zZ+6rr7tPAeI}e@H_)0>j!$RXU^|FSkv1fp%qsK9LVve=69vv6$q`Yo%c5X6lWZ&xR z%3(~zeq?X!+PN4R6@@}wp~YEZ=f=ufl0n-N3lzS^P6_XaX|tX7&cO2-c$W1<@Xp8I zOW+=d55YeU{&Dcrpe5P>&f1XrP*4(krIVYX$ zfG6cjj8m2|PQ8qin|*dWb6UpePGgKt!P|KEg~v!S4j;nDNAP$l_H+~c`~VqslcJNc ziO8u5dOMQU*lkN@<$htb8Y^*Ff2GojXhM5kCjM#EG6G?IQ+&U)-F15q2!k zaq4Fu>f>PQ(*2cLxnc13A={6T?MKM=b^0r`KR^}}@S#?XRQqI%<(#6ApN#S1OkJ+5 zTVus8J?Hdje*Y5eP$hmt3h<(Pvby?QDLH3^o~Gk&UB^?W+jM*{?O#kkK0<~+COwU= z$^4SON}oHB;|}RFKA7;ed6BOx9Uf+v{cz`j(Rl-n*d%;jtD z0c7z{njM_fxrH)*Q&jL|{nh2e`s+w<&K{-9XaV{mx@yX37c$DBp2$e%i8;@b8EbP~ zE8+1A#@IH)Yb)dWHO91&G5s22nTag7Lc>e?Dbg3j9x$fI2L|^^KSdt|w*x;+`dSB$ zjQuiF!TT{XH2D$UWL{@5pOZAa$(@r(kxh%X&%Y)S2g;-`AK$wK8@d=yWd|=fY4$m)GH5A~7Tx1Hr$VpXi_H zUN*W{!OuI47#Y7yJ^C4tX@fQ1e?C#S{j33EgD)3*_wK}~)edK3hkuDJ*YMqwqOXz{ zA4V(p8*4}Ur0Da&we_EVYtP!pN3S9;FxhuZpnYq+Xu<&%ZFl-}_wP}!^x*H$rrbmM zuu=a01O6`Nyyk=VA+tHyefHrwXR!CZ*l-^{(`(=`-WpC1YbCZUN1l~(W>e}+TOx6^ zHpaCVT{}q1db-aV6MDm~(v)f(C%Px=r}df0RpJO|iM<@r=78#apFYZ>l(BO^Swx zH$EY;fz{NF@H?eHuaoiE;oS8^2tU&EYe(!Xu@#A#S!rGmPQ^HV%`C)EFQI=s;8D(! zyu_&`RvqGb))##Pp>d8FHgW$@Iuhf9PD}WM{8$Bc3ZLQH-N?b?QDeo{hwcsya6Y#m z`m^3;ZCgbf6Z3g``c?L2Ux%iDpS~m-d?K$yeDZeMkoK+m!Mf1tF1Yx0U1mdK zPnWCM#~%`Zy4(>RT%cY-F8!W^%jcpubF{tU!7+2?9MUbeWNX$=_suFg=Hr52Jp=4` z_?nl9b42mOT10lpR`c}_-&YXZzoj4+I_rq-awc`RJ14%Baj81Bo^!5@Yt^Z%k!cS) zT0tDYXSkeAlP3GRU$_pt$@#==$KOApJx6Bpyq!JS?-`3d)SE;bXNa4;Fy&y@?&}?| zh##gLlbS__Sq^tf`+|$RHn3L|{I~FHnw$mNIeRl>jNM>glhOG;ztGvd*qP$InD`%u z*-v77qQC!X*2%@RF(uT{wVFMCmSaNmlM7T-ea_b*wnXX(y>}V+=Pq}=^6`fS9Uorq zi`maO^%%`T`Xjn`#G^_M(=UyG)_37QT{V7r^Vr5>_8I+mKX_^MV$yqmHU%HZr^UET z{3#y{mb?g^!m*c*b7!jCi$*n#pMR;UV~k6BuJdK5(C;RGWvuHDbB*P;%24jZo>9$> zj*P=2Igj|_rE2^mzuWXZ(Pzq=zj!m{AJ=~GIb{6ucOQO2VvE4LzqqaRd%J)=4NUAG zuvoJr<)yq!eP1qjxSHpGr0Twb?PHuuk}p5_#0ghU=Ps3e@@2|7#72@YfAI+^FQF{_ zx#2tKsuw1|7#lHr^>0H1yOCipwhX_w^#x>yZRuC38N~73osGb}#F_FgRpT^x#bwcZ z4VYGLyEMAdC=a^MJ?}kxlZr8}oNef53^I?{>mM4Bap!#eYQ{Zl5MPv-kbAq*<~DxO zDK~ymsq}}~sUI6qfuETo{*lMW{f?AofxUqKKwCQ_7u!CaxpjaTgV6J&q&MG4tVzx} z+>Xi3oX%@;-YwwtjP`NX#$Extp^DXOtGVZ*i~E&;8YKwXg3gY&9|)1uq$y z+$q6#%y2mB4#0PY!&%ozDmp4>oo(2KjIr1=aGmbPVi_yZe~lmJXD|MX>++7B%;A>O zB-Sco`2n|zxo_9oYjY{~ItBO=>^+#5(kD5q6T5-`-Fo&W(d9+>Aq(+C3h+Y~;Dfjq`%d=F>_4<|6<*xe>g^*FTvf)tEmM3v?fKw? zi8BouyS^utX5Zd=)Wvy>v*QmtlREy$K2rR;x8PCsiyDo2Q=$Q4O;hN961GTe;%|9= zlyf%W@nQ0p02kdFbU9v;xCp!)at~vD)bDDv$ofj$uKNhOoz2+y{+(m}(MjrKS#x_Y zXWo;_KA8HN45Ypq=8UmV#DCHK0er2P@SWWI!*P`rO~ohO->A=GP9-~%ljYt~Ky3L~ z-`pJ|6=t$=+zxp5sIGd>0V~%t);s>ZtN8ffx9U9(Ps;pk?g9)WZitNBjw?8a!f$0> zr-VYei#;jLKIXNY)hhfbi2anun;}b)qWAU}XJ1l+JO`DC-5`LbiO)qD*CO-k_ z$}J)m&@=1Z8);YeDMR7Xme7&0FzLv;C_g!Ck~sPwpy{BlZf~5-1s8K72_JnJzWQ+D z9V0rX zZ$Wo9=MG|*v*5GPo77z~&)H4CTQuFCc?I(_!kC+*3ZLenB=_YRkD z?)?3#PIPRdE8{x!CQa7Q3T(j@j>0Vy@68z3<9vMb{AY9=V#wOw>V5n_k+JYGm6S<& z=*%BgN5%wa?4vO%_5%D~gnU@1#(k>D+1P^`LnM~{=ju<=PF`sDb#VhCa0u3F5>v3ah$Z-1+9yqDQ6`5 zo;9g+3w;l<*5kj;4UJVd_+1lD`jLs3wKKA1%RuC6?j|{jztY$3*uKYx`{q8DtZwMV zzU`*3A0d0O%_1M^&oS2}+PIW@)c$hnZW!gB^Mgy&Y}SKo(a)0kq(0KCUFk~-T^B70 zjp~`4{fztKiPr6c;OuOIr=;BeonEVcOWV~5>h*^$0={qx6;un0@of(di z&3|zv=k&Wq=hSVf9>{QBRH?q(Jozs?Pi6Y6`?ftASXVkwx6V5d*fL|_6gqZU!ilGF|P#Mw+9Rx^&J$f(zqo^!-?QO>)}4~em!#nw07lHct?)-pcg zr#0Q;>=ykJok*t*(Ti>H(GER{=Na?iP#QYP`ky9!5*{;0aaW2mv4PHaQ+zQFt@ed} zvt>Z;Rmj+i4t<1PY*49lWNz$+pG^Fq_t25~eXOsk*yBsoIC*x2zOxoane#c)ulu1Z zbteF8pp4C#n@-(~OQFRXTLbDJ*IGcW+7=bT)^8>O@;}0iSX5H-U zesLVnyHK5#}PsT8E2bWqF;H=?g3&qe_+0d ztcDrm<7HfA4}T1MI#j0jAy2t;)d)>uR5_v#5_=OHCw)1F-?V|UjHfn^w4aG?Oyil@ z(_QGT@Ld6ag*WGSe}yuBQ<}hJj0*?2KMGv>BjfuMXnEY|0I>PcVvQ_0jvmN!@f8Ze zIRP)B-&73jfR?~3;Yr~CNL}ftlrJa~_f$)H_bzgFHp% z$C0VXJ>9Wm@+0stm3e#p*}+LqkzPw$s2od(SHmvY zgN}8|{Zx7OL5kWp-=*q4=02yoIPZh^mvaZ3I}Gewb3Wwv;|GYBPuewkJo86%`6lH3 z?1=mU_OWA$Y44M^j}WIl%ARLAw7slfa&9q&e1=Lt*@*pq?Cgj+_Yc?C!;1TSk9I!z z*{+U>?&ho6|7d>e$AcxEF8@Hb#}|`xu_K&|we!5=L1Ob4vA1=&EAxOIW!z7@Cg${# z?v%R}$VYUkX#{%>?&F9J6&;cFNt>H3x*p1&L-u*s!T+Cr&pk3|Am61j=ay`Py+`!RK z!^qq&_Ot?j{$KH9<@spl?R;R3=qu}Bn#d7bus4f3!mBx-6!S@*3$FOkJ5toxb-!Le zz+BoJf-ly%?sW#O0JJn7C*;T6+?CYwhFuhz(*HQWtygON($9F`Lz=&yk;CRYZ7F*C zC^54RWSWIsyzo~63|qurF#|hYh@HL_J3VBNxIo_{N`FGk1?=Bm{G8hh>6h>;dw#h` zBJtBt+~eVUuH&AtoX`J=l$cHoKm1T;?N!>@l-y11#}54po_y%MADpA?7iGVfN?u@h zlOCbI4?n+wyzb*C?#*cQ9=a+jxDRN)BlFYQSo|cojf}m(OVur}dD%C*Wgo_zmi>a{ zGq*PuJJ`Fqi*%UanESx%>2t+oiM^`*Y2fy9=eBiqo_0qN{hQVIyT@K_fBlDl?fc!o z{k8q|5C00iv_9^|3SPxzr-mo>j|0ov&fOqj*8Pb!UVa*%0^ce}Y|Z=FA~{cb0RDG5 z*+0U+yqB__@`L;&F4pH%-4%MCcP3P<(a5)x4TdA@eT)U&o* zPdTX5*V?Vq^IE%R-r8;{&(GT~u~T^$Nc3e5II{mKC5~==HwGCVa!**O*_aAsEOf+% zf5yfBJW)SK#`HDrH)&&^n?>Ade9mXlquz|h;#JU=aWv~n%vR_!FZe z`gpuq5d(H>cRc^F)7kOI4B{HlK0BgdK;$C4G%_z9K^9V1(NA?CD|+*LgO7Qs|2g0y z3&C4Yz7*Xs`yutPTef=F81*(<>d8DDTCaXcy-cGXwkO`+u=CU_A5w3;QSTm0J?V$= z{vNQQ?UoFw?=tEyG3uK-qOi}RXLkcvtkW|{572k9D;vmLbx!1P3oxtv-g#G--wnV` zn_!$v>~$9rZzJv|aRIrzAiO$=pS%Dr^4y26^7FWg)3^hK z?Gas*yyxcp*o2$${ixHCtYYq)bvq=w>%^WY)-CHfgxNo-FMJfTkCVFe6+X~k-`J?M zW4587FFbj$8S@?ED+8=^azDod?c*Y6)`Ui6mBRBA+^G@R{orvIr3BwKwhoyUd6f1J zh6g@>%^Z{V;%!;@waRqp{UtdwakD2v$2r<%F8(4b`UT=(SBEO%aj;qN-?SLna&~QN z!_uD#^rwM+*F<=j#E*NW{fCzk_rESryYIE1^Y{khxoz0L1H|`52YTf^5r64=&U@O4 z$9r6fxo?h#ynmzFd)n_|Ut(+j22-BwVHYQL--7JgVuO!yKQS%K7>6u;BU>E{&uQ@7 z${p4T@G5-I;kO^24;wtU!gDKrP9r?G89WQ`CeKaqeB5%TXXV+}rZE;G!wmcki5*Ix zN^i-JwK0wp7|)Q{NcK7VIX9HL_ut}-?V?Zd@yyiEPtHeI^nB&JJ>yIh~5Eyih9E9X|+!>G$-4ocgCW3>S?e}so@c*ueW zi6?A_hb-eA*&JvWB0KJeS003iLPK`qR~EuU7IInw4<6-tNzO%l=aE&iCadI=Wpajs ztkyY_kyY}^qsU6^l8mj$>U{FpF0ww4JPtCBraZ(Bai4UvZ7lx_vdy!|_K36xtqx?H zOuyt_yxZuLoC)E#)*Ya|g zOa8Bx{AkujQ-%{Q`TThPQ0gK}es;X>q145e{QH(XcYq9d4;2&7>pS9rRTj1QO ziPv>n@();WCR^a#7l`BEVac;L$KlUg>aMfE|J4GYVS(Rgfj?r&-)OMOCJ9yE{EBc{1i+6Z3~@0>-m@e_V@oQ3EcH%<#Vt&@~5TVHG0}> z!22H6%WoLzn?~Aer0K2t^B$voz({K=b$FwZK5nG#MtaP^n`yL@YS1}kz*XLP{yb@M z;6RtLgC@0$9W^#Ip|s)A}!(b9$9dkXUXlKG6P57t%% z%J|@ro_gzpWi|EXVfi>wq$21IZVH7Xq3X49T1q}wq;6YYuuz4A5sjqw1tZlE4%Vw> zdABXxx~iz)o*T8?twjZ&NubqitOljJX8QUd-|Z={@yfT50+C2?eQm@WsqrT0@qD^4 zuhy>*)Cy(q`r!JS`psU7wQ!@#0%aA!>EY0ppjx)-HmwQaRs(xA@M^x5Q>kMJU3sd3 z^rvcV`ReuRnzE`u_1ZxF`q{It30DN_gV#_gfQ+VwRj7JHpej`EttpEHs=U<=>sP~j zLv>{}z3|r5MnW~!DpFGeN7b9Xf%>%#>x0#i@J-$bT$WA^d#6`i@gb<1+F-Sp#)KQcR#+2YjLLNYeAAFu2i+)m!TNeg)(69pntB-& z5v0gT9(uE;hO^bw@QqWe8ch0{GH8QuHe#bG*xs`GU?37KheC3^(|UKcCQUgcKpL3I zG1Jh`EF+y~=2#wQ6l>Ly&Rcb68UJR-ssGL$E$9lB}gWk@#n_OlU(m zur{dI3wXm7HT4m%2BP0#?a{o|4Qr>1@O*2l8)nqhuf0W0^Q!4n%hdGg^muBS{3lG; zy!T8Ee`dyv8Cow_N!=UO@)adT%a^I!0@a96lnc@71IvKNM^qHEss>r>kHS0&dIMEq zZRF2WQN~sne7iPYYB%{3c0Zk%EC@|tkXn#e}cS51xe9zq~lEvTv8TpwCn5rL-se^Grf=v`@G zdl%I-NM8~7G;dLLnOYhu3sy6^Ze6i-!}V9+=)HB>D#?2d`FpPykyN1__1<{~7bXW) zde!hXYip}!R7BQS-IA<*>5S1`BW;=--ss(2)1b*r1Jl{E3g#RltS(29%Ta>*(CUT= zb0jhY5-VAdaXNcrP_vvr4 zx^~93b5+)YY<1ntYpVOV+8|iC?9(S3~ zHEf@nIYYrLsEUYi#cYMw2db(>va97uEf0|`GR<1GtiWu2m0|5Pwv>N; zfKjNg&&t-U4IP~t&YHS*ns@5jY_B(~J{ZAZ-b^7GIq{y^V9Ma&;8py-#IK6qt^70* zCQVD8Hf`D%uh(p#HXLkVIncgurm3e`f=EqSO;ubKrm)P((BBUJY|9+5zBP z!U1MRt+%EjBI4Afj(#!OgW4iDwRW0!b12By;+V6db9AX8NDUg#D=$Y%%&J;%MIg-D z%AjXA880w-QEzynCMnpTLOfc&5M-Rgt<&EmfaVezkydG5=dgP67x+Rz&ag>0XSlZs!=! zx`q%kW3I>Tseut#zdE$Gp{4J;RxPgyhO4h)*$z~SsjyeK;9anZ@cB5C z#eg*_Cnv`njs(goWfp`hWUR}BG6Lv7&u;W$@YaW_WmQa8rqK1dITc81*sv4vbxtYo z)zfX?IMhV=-~AsV=jK@ccQ^I_1^ukC|H=NOo*&P&%ZCj6Z1RlR(f;=3+v}Nd6EAhW znNzBC6W_k9<(r%qST(S_fIV)3Z3Wf_Y_A3ObzohV^dtj+`O0`>H zj?K^l=B`QLWdcjB=Np<9SUxZxu)P-8a$sG+dMvOyV26OcVS%*(>jl7@ zdBZw%hLIK+>D@-U#z-SZ`jC;Dw7zVV+l=&CBYoLO|J_LcYNW#>dd*9W)TA@hDBm~) zUSO0uA!$ZB#YpEF>0L&;+DO+K zX}ytdHPX);sY(A4qx`s$?lID*jr0dbYT_R-%5NBHzmX3v4} zRU`d|k#-sB^G5oHk(%xH8Rh;V@DGNRM>F5#?=mCROG?c!%JYnLv60>}1n+P2K$qCx z=7BDU|Ecpp>CuTYb{s*GgciKOJ*uwpOZY@{h7G91AN&%3@N1zb11fl-iYlQlZJ1s4zB_^z~Bo2HF$ zPl95&I$kl}%K2N^kZ3}&hmF)!N&8x^L9%|x`>TT+{aUgulvaS);WU$|^J%ZPn{pq~rJd*~Mt|<0Z}h>Lr2& zYo+KfBcP|PSN^h^>NWV_^+A7ifUwd=sjt^aJlPm34_e^$5q}`!$Eh!?^e5yD_iJ*Iaa2!p<404pb3+1Hy=x zt;dVhb8&sB(x#I%*Rds}|Xc?Pa zS^%~%F-~_7wg{}Q3f`$dSsDmO7D_Bqcqxhx@VTUm!Un~f`bC5p(Y6(OsDXM*gMkg_ zVN$IOMpjkpx?jFjrUva=#{PMlTqVNVXB|5G+j-44sUZHzojne|cbYl?2`Nr?N-iQd6ysv)>=t zQjJn-Pa<0&uGtzfnbT*_D6gtAt<3aXtrVyYO|;Lx!`R<`0*0o~pZHv2(N=^d3yYU6TzdU==VQ1b5~?BsW#eukD%JgZ;MiMBm+LWT-m5)!@DJA@V3%n?K^Vw$| zzVuZD0`Ab-9ywClo~9a8Gr^Je4nOqvl>*}(Rjy$u#oYvTIRA=c|EPTF#pI8Aie8m2 z(#%^8!0rO}>c0Z$8Sa*P@R%w*4yQ0qdEKu*pTyRu(Jf1Ho#6iTieoRs!`<+(OyeO* zt9KY$|H5;tOfseZPp2K5fas(z9{OmG$4F_%7@INRy}tI?TZFhYywUXE1udy_p*&#$ zt$%_u5gAE%%%qoNX~(3^;|u<2{{{z7C8j20bV(z>a;1t_7OY(M=NVIiKRo*K(xnC7 z6$SY-{%?xG(AEF(e?KYJ<3ztVQf-k#Dt|W0rhwibQZ~aq83Dci6-JtEq-H&H8$ZW@ z&oj~$L-5S7kbek#?U3?q2H}T?z@tOTnsW&5Hw^ec8tM0k;H@_3JwF8Rl_7X$fBv7Q z#bx$*T!lesw`*n|9`LqkPE%oldKfE;ZX z;-#$j>7;3_^%to&HIp=#@}_kD*&)&r7K)I%-0>sQ@2aO9Rg;Mq1NUAGEz-wHHwoS) zN__>qKGG)2SsA{^541x(TxC+PpELws`8D*5=icj-`iS)1>sfg3h1XfE zairq^TtV70n~RL34{>?Cko3(wr9Mqsn$JIR`pWew^*s&JpbQS+O4zyhwK0Ut^og5|8ElbKUo5$*e2n>&E1yTmfq%V%W9k1 zmfPlQD{NcQc2`?zTSZ%K+orb0wx+h0wyY;-KAHQZ@5w_?z427Dx1~M?Fb9dzE5OML*;}fBXBdNZ==d|_|P!?u?#Dn;XG`#wY6MYw^1$gI&wVzWjqscmZ{0k(xXXr<5BL3XI(~*HRLxlMNdR3MdYO4a zZ*_=ya#3!hQ-KV*H)2TDjPbYHa2mi7AD+aJ*mvlAzssadd{jFVNlUav^j1J4ZKLyB z2(+bG>AVPJlMV9E^j!i~GDy;%QqN;a?joCj%wy(y;Xt12IFFI*wc#9MUi8`MJcEY6 zVT1GodD8~@C6HblWG3yT({!Ts%V@pFh7+Q#196Dozp0FfgQ|`9OM|daXtY8?g7df? z0#17ZVw|1u#ePfcSED~O<305o=P9Xi4&}s5&R7oFYI&%Y1tcM{3VJcq2AKm+t_^Yv zy!dR8lR%Pey731fo8o#X<8?J7_$PKeiCH-nNU05{5J;+xPCk$(8_u;*{wg~>oesC$ z0;{18ibWdNV^>NTvqW3Td~jq%TvyH0Ch1pV1m(r+SvCm&lA@XyhnP3|MLvmIQ)!ET zk>eG@L+c<2dF4S`|8!=mlQ{RJklQI>bD+dehd{ zFGVxsRzf8IeMWF^yzk}-*&$o4d*HA)jw7`WV*R|xI??)iaDHUtc`cBcah|2t%hVF> zP1LHSUp=;3K_I!dT4SN}4I54h5U&mA`%r$(hVu*%pAAQ5(q0=5|MrT?isK+LO|WgY zzJDD$ZMMFT#kTa?=%k3XiPJGpnrGSQT#Lr_#BoF#pJ((Qx6x??k{-v=w55ub(MD%4 zeQ%572%X;oDZS1r)vq(A@|V!V3bLSCAY;K1JFnx&OsQXsG^`NL`O)yW-KgcC)0R`U zy*3ShiyDP-emFPN&L>N-6p2xuO20<>tdI;K74cfaE8pr@={B4XpwSY?G0$wTu;Hwx z7k#$Tc@2IJF=h#?RSM({8|3e))oX)X2F?mJkA#|Bhu5wK9Js;C^Fs(Q)i!rF!r_7G zRvf+zr`kAXN%Wm#E>(506;h4ekbg2#$1zWy=h^zz#ylN}_scw|F0|p?ip2WkI5eY{ zqtB1WN5?#8EwR2nztx_B19{_2LkC)gV zIV-QS;Xp!pZLP}(BYuR~6XPZS`uT}C#5|ARWTW#XIFxS&>$T8c^bWg0Q6E8C*KTP% zWUDp6n5($Nz|l_bTWmOQBKetd%HS*c#Av@wTlmhF>W{B7f-{n4bK`!LKrW$HALEhe z*L6S+*&x@T3A|%(@GP|^0hwlle1}@H4@uBDL3ZY4rv6ARnQa4etdN`Fx5tJP2Jbc7 zD9g#A{Lv)T{rr3A{$O>vSP28--&7_3#@;y3_#{<+{EePCMCvbMHi=|)4mF%IbS#de zLCTpa3CM!t68~)_s^8YrZsm`=#Y2Sh&OlYsQl z)83m*I$SWRs0>FcOKr9{fNa`q3Jp{flT4oZmT7hrZf&Quc&N| zw`JapIpDL>Sq6tqam^IU)$}6a4GN_29LQAKy6Xxn9sb1%^|H?j84cu6oFDTZ&KowI zKOwEhTRUz&a>k50;!GjEI2RGuN5{3 zUzt`dHpq8i_J9p??wMymYlDi+9a9v0a6k%y%=o}Z)s3L8#0keN1| zUoulZZNqs1NU9Adz$C7);oJkH*Vc>2Sgj&9oG6g4_;}HI&J zZbM@9{Y`QY+i(s8$+h7;1LScV&bNSgZ8*2V^EYfbw*u+2^A$ke!Nj!U*1rwYU2=**jj96j}7t#biU9wg8vL;lMQk! zwN}`CfE&<_$89)IQLDlR=>_7mL5?EByKKF96G)G3l*dAOz$U{e5buphPeKyE%kk2&RdYXp)`N#%&7~N>S*-DvzbxSG6RoAHVuLUchEdLA|Olm*oy38H^ zxtzVvl^SyI$TF=4RXv5)pm6}l>TvHpVpMk#= z!ppK0%P9K&q4l+X>&uP?$Z)jv=SJL5yZq`mUMTk0R99_Q`l`-d@#?iYKy&!m;srMu zg#3OkKyp*IdV{5HX%x~1TyMmBx!HguE-zcJHJ|e^akJS;}almy->;D4U;mli6wd`Hlb=VGV3;>nTwWF1Y*oYJlH(jX2(=#3(PSsW;wK zHtOkzqYDob)d>$&Ib{~5J*7EG)P?4%Y$nIyiU$XE989-LDlEy zM!F!uduCDsXoZPXWz^88!J4XoR$m{mAlKi8KDV{~%**;f{bt@J;3E)5v&Q{x za}M!o5MEG_tM65uYeeefMg(SMcW$zv&p-VY6LXlDj@IknX1C4(>x|V0LgAo!wgfYg zs`}tsksWzIuWaiI7pbWC*Yo|74MBfpaI+@cbDlGxmWQ>$(Dk{q{l?vFDr+y+XkN*L{o4zRoL$` zOrrVLicau9ctOL@_avCPW%?!mp>@yqGK@~vj8%!Mv4vkLRu%W<&QSGjc1XNi@@7Q5 zpha6O8pzv3e(f72I)?s^fu1+sXz`1N<|lZ@j`!o-WM$NN9TV-#J`AD zc*R2Vg%KT9QzG=q`g)iC#9ShWyoP0eXnA`|f1n5UEwr^)Ve~S(CwYp7CkfYMME^oPQJdDTK*&Ec(o3A*^@8ww^R{f!_^^n4GXGO?bE zO86^kYAP*+4K>i#@rGJ?GU@Y{k+c;;;S{mBKh1#KA*F)j79<`j?RjOiE^SDUH0*p#tde# z=!qA}bXfew9RtNb1Yo?%6Mw3|*&~F^1Bp0iae&3h=&QH(HjsUyLp0~m4lI%m6zeS$6;d1Ijqv$ zN*oDt+F0tl62vJG%~jG*k@UQ=(bo&+CSNZZ+j+CY=crRTZ;&X8@+(FD0cwj6y)Pv^6IVMUr@5V*uS)BWeFvdC*D~-FSK~ovXY|P7W!AL zT)3)WxxaYf(&Y=zt$Sgth06-GHbqsL+zZe5He#FyBaR<0-&VBj);s-0%T|`;EnVs_ YSeU=+R{w2zC4~!%i}juLh5!4%0Gkxh;s5{u literal 0 HcmV?d00001 diff --git a/clangarm64/bin/gdbmtool.exe b/clangarm64/bin/gdbmtool.exe new file mode 100644 index 0000000000000000000000000000000000000000..8e124dc83f3f246168b153b7fb519f9ce6d4ef0c GIT binary patch literal 135168 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 Tc~%$omwHLuum1k1B=G+O-=bBn literal 0 HcmV?d00001 diff --git a/clangarm64/bin/gem b/clangarm64/bin/gem new file mode 100644 index 00000000000..a4ec754abbc --- /dev/null +++ b/clangarm64/bin/gem @@ -0,0 +1,25 @@ +#!/usr/bin/env ruby +#-- +# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. +# All rights reserved. +# See LICENSE.txt for permissions. +#++ + +require 'rubygems' +require 'rubygems/gem_runner' +require 'rubygems/exceptions' + +required_version = Gem::Requirement.new ">= 1.8.7" + +unless required_version.satisfied_by? Gem.ruby_version then + abort "Expected Ruby Version #{required_version}, is #{Gem.ruby_version}" +end + +args = ARGV.clone + +begin + Gem::GemRunner.new.run args +rescue Gem::SystemExitException => e + exit e.exit_code +end + diff --git a/clangarm64/bin/gem.cmd b/clangarm64/bin/gem.cmd new file mode 100644 index 00000000000..3c87ad04151 --- /dev/null +++ b/clangarm64/bin/gem.cmd @@ -0,0 +1,33 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +#-- +# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. +# All rights reserved. +# See LICENSE.txt for permissions. +#++ + +require 'rubygems' +require 'rubygems/gem_runner' +require 'rubygems/exceptions' + +required_version = Gem::Requirement.new ">= 1.8.7" + +unless required_version.satisfied_by? Gem.ruby_version then + abort "Expected Ruby Version #{required_version}, is #{Gem.ruby_version}" +end + +args = ARGV.clone + +begin + Gem::GemRunner.new.run args +rescue Gem::SystemExitException => e + exit e.exit_code +end + diff --git a/clangarm64/bin/irb b/clangarm64/bin/irb new file mode 100644 index 00000000000..aa9da9e4b46 --- /dev/null +++ b/clangarm64/bin/irb @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'irb' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('irb', 'irb', version) +else +gem "irb", version +load Gem.bin_path("irb", "irb", version) +end diff --git a/clangarm64/bin/irb.bat b/clangarm64/bin/irb.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/irb.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/libgdbm-6.dll b/clangarm64/bin/libgdbm-6.dll new file mode 100644 index 0000000000000000000000000000000000000000..12c7c4fce72e16251a2c2122566d8269a5f4433e GIT binary patch literal 62464 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­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%0Dee3w?FLQey;5 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%0A#)pGqhh^aPA#+E_yKS+ z8S^|iuFb7I=HpsFL8GyTO$Do`)MC%AP4?UDmZ@#SI63<(Q_7)t;M>HX{@6 zLeou>kX~h5+?rCSnEGlcEkc z+UnFo4Zg^zW5-hL$-9jgD%=bWOsOVl+@S2<6z=KG@Q|RV2bHuH-l!JJ(jgLhb^h+vxTQc6RWLaQ)rP(b`wsY zSZlS(I_N7%FRMMyR+T2W($kx}@CB_oYzVuO@5*skk#_6)_?S7T+y0`{=#Nw7)@&wk zo+Uc%4GHr>b4aNXicDPjD?9Urtt*nKV)AYl^yhNsabc0voNP~BjRzN=cra({xsY5g z_o_y{lI}9iD3fi|qEU-+T0rZn_^~33OI+C;RUJPVOBn`HQxaV?L*VM3x94(vb*)HP zV3-jm_Gxf&UZvaF(#=}k^c3xt#$Cr`B)P(4sPiuDCH2JuM4qnAR9 zO;=NsQ={4<%`_I$E;94ry(P&I-d5f>Or>fY?_Qg#U%jp|mGUmGxFEas-n$xCuUVOD zShw=t+PhP0SJvOX;{33`UTWoCwWJbPc0HPBpVr@RskP~i>Itj^R`z*Ze1jUWF?GMW zT?k~&`v7Jo6wp-GIi$AQ=sWf3USn<<4}x8S%kpHQP4}vfA#j|MHo+XZvd`>^-QAlo zE6h_&ZCX2-IG18pceQ1@nf=@qN^15#R%ChD;K-GXd~4G^xn2f0&7sK!+EhueNf){^ ztqH3NWKLkvb`c2qrFG_6zisl`bbFi`J>R*%sDSqEQ}Y(;>bq7q zCRglfz6Mea%T}*l=U*y%;xn|J@?*QeIi1mhSPLmage1{{R0SYT$nWHI1m# literal 0 HcmV?d00001 diff --git a/clangarm64/bin/libpdcurses_vt.dll b/clangarm64/bin/libpdcurses_vt.dll new file mode 100644 index 0000000000000000000000000000000000000000..f4cf2234a2408d7d7b4831a0b7353235d87ab957 GIT binary patch literal 165376 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

rSHdADGfn&7# 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 aQ%7wgrU-4q9u8~z`}_LLm%snlzyAl-{0gH0 literal 0 HcmV?d00001 diff --git a/clangarm64/bin/libpdcurses_wincon.dll b/clangarm64/bin/libpdcurses_wincon.dll new file mode 100644 index 0000000000000000000000000000000000000000..1ffe19a5068678d57d50af3c81659f9cfe3ada00 GIT binary patch literal 181760 zcmeFa4SbZz0=C^`lomC#WVe=p+b%EFLaA=;Zfk&A6QWf_G*Kb{?|EJ(PloWK zvbEh``52#Pp6A|k&pr2?bI(2Z-1A)br4>q3N~Q4U{1uT<_ny;v@y43w{rQTAx**;ggQd`03X|vHQ2XY-?+(!gYV!*`QPiwtUrzsRJ{k6*rqc41y6jSyN--L+0N1(HH~U-na@p@v)4)-cxzxpu$M$W< zdzu1_Dtlj3S3BUW2v9GXxOOG3W0rqq#d5B7-?vbfz9*H>2JD!nx6E5U54x?Ta5H7r zac$)4_!m+tG-m$o6^m}ExMhMo2Uo>^>RS0<_rH*oGr_6xSMdBc-U~seomQ@S%xz{t zgBEqX7qZSetz2l#l~*qK>OUx@^IC1?y%hQTUdku>SJz<5M78Q~Om*X6%uLD)ac&(tUvEmSIK{Y$9n@qovp4=lfRFu ztX8U|#T}XR&_Ag4Uh2qmT~iaJKh2cg$zQ8WHK~h3ojKW|&RGl9db_TssS>-4%H;j9 zQ0KM0pGIA&^9`lO@1TD>PU*XMLkIf#mac_5Afs+is`b zdfNRZ?XIWKHPUB~s>}gzd%QEjcO$s2q|QnUPehG2B6Fre6KVg{@KEP_3yR>0!iM8> z|D(RyUHX#I7se1iXhQqIGyk68na;4g;nYagDYQlh?tjl4>O4dn`nYSF@{}GdS89Tc zEn=N%@`M&V0bkts6}7&mubM66vKt&*+=JtX+?he4$KQ5!Jz93EYrON>KYmrMM<0ye z*jH5+GLG-uqSia#*Yf^dw+b5X`>B$N{nP~Wz2AUY&3otXyZJ3RdT8JGL08Gk;4geI zxqqnBGpt$g<9`-tEK|#6i{AxY-75r3_*+a z@UW8>Q!QFJpY?^Nex)kkb$=sESCN4&?jb?p+fyS$ot@z+$iF@2KQYE!c;Y$WNE_P8 zu9DWSuAv{72MZlMxQu?-JSco2d?3`hj-6a(&lZj@0D`Tv{ z-(RgNql~lXq&B4E5?KB20`TBs^|jmmhEzc<{z;6^Pid>DM&-D$xsTB>i$z1rOG-Fx4`SrtoG zyrSu0y{oHarY9{ba``azpF~#W`AGE5Fvi+w zwbXDCJlEz<4X)9AzBRP*5N%vnv3SJ}tBo0+)aYXBMu9KSrT}01aeVHxrtIDAY7m{F z7Y>dccWZ{O9ioMr6mt3seA-SQPPqMXeSnJf0WUpA#kTcTu~%G!+c70dJUdIb7igK` zLi*#OUV%0!e26wg*HABL!2aSjOXO*}&qwCyeXi*g z{hY0`f7$h%cHsD24f?x~7k5KvIHlo(Wqle>-rcuB^vC3XpVAq0hdNgWRpW7Zw=7>Z zc03V&`UK0uXb?bFhHue;NOOK58!ZAHW36)UZ_9`dC}rH`U#zYmP(Y0qv;>;rix?bR|LjWgQz z1p|GVv)$@gJb1^tHg`137x~tlQq9*cIJYtNN=uDYeVTlWc%3-4co{0X1`&^2uJ0C*05JI1_UvZG5oR!yI| zRz_O8O6o^4?+;d$t-RZZEQE8k7~?WvVMY1X0gpGDt@&Sa%0;dv7tQIaWSdKiiCipv zt!vv|MqhjCs^$*nWaf_gQ;QB_du%Jm78U>f2#Qoaf_7L>+YxXG~H*l9Y5jLgRh)2bwruKM-PY|)8XTKY^fJdbxjxz+&t(b zb#!zAdav>XbNSCl@_U5(sK$4&({lQnwwvfB7jsxCI&mL5 z@%FxvCJ)a<$LreQ8Gg+bo?18kuA$nhtRG?n+~JBe$y_k3>W&Vvx8Fn0ug^7YZjp%^ z=wD7>Ja^yTQK0GV3cFk6{17(vVeH_0XRscojDGioj$_7J$RF%&EuNrV_6X61`*W@w z5!>bINxMXuHQi+nCzVO|``F_tWBEvm&;t7vn%vGDb0>Z7at#iP-6H*LVD2;Ly*oOF zrFo)aU$M5x7&cPHq|Z{eN1vIGq|Ytbea=3I>^{3y=Uab-K1&}DyS1P_2iWp_FKs8& zqt2j#7O#c|gHu9H!hb_k|99wcs@NL)KN201`zmwaGn1_OA6v!dg-m#1IdoVC4ZaQ^ zJnGbvM=={tU? zIDV*LV(z!}sJnpug*d9)C<7^qc9Qz7AS9 z@zc{mkJ0~6QwPnp`hG4Q^ou0BEm?-_b;#E&cz-M%bls;wzhoUW-R|=lbkP0K&Z&dC z+}-{>+50l|&#T6Iyt9=xVFX)HY{Gf{RO1P^D=0R=d{@UL@we2whJ@3YE30=+j0RL_ za)Voqcj5nN8LncJW*U54=|leyQA2!(`iH8-?s@Bd(>~6@4q}Vj@UvF$nt(qiG`U`5 z%}m{0ti`Xe>oXq>R)Z7uTdexBx5cg~YiNJa#<`94q1ZFxGty{RY{$ep+MQTOTQ${#)rY{sfwBW$Hala1jWSuB@2>r%!J?J)VNzrBE zSMII9?bw0%9x8oF{r&cN_Lu#pk`wrmO`n0XeFhh#uO~{?dg)(pI{P;4#$-AO4eb6S zdj|jPr0>EzXX^hGXXyVee**pAM*oxhDE6YWpO;QB^>z#6VDKY6AhzQ#>Hk4%+~@Ve z=ZkyocV_(Z^X&H~4!csl(|JJCtQ zEQ^K_Xm~EV`OiSNUv--LK8rx*Q@C}ZjeqfD}X5V|Gn z=ED~4#2;bpOZKo2A4{?iZ5UaSohM;Byilb>h7HQ^MJ{SzoqrZov*X8*TsPQ^NBE>s=ey z@AZOfZ!}%@N5<9IKNmma0BkU94zUpfTF&Y~LwH@_)sl6djPCvMgsux&y6y&lY*$84 zeJJp3JtuZep1{rsbq2KT)duWO05==?5j=w*E;=ZCa>4rWx?*q?yz@^kIw5I@^;GGLj(Xeyi%|3<)m8`bBQ{5)&8r^= z7iEk1K=Q7sQm9cN$=tVY!4#De6p7A>98u*+Vlt-*r zZ*YtJr^AJ&#yq1Vb2-9G=Ya3|i0~D%S52RF`m7g**X1eIxyt^HTuf7{>VC)Xa;2K2 zUuUDwuAH;?L#Iulv!Op|(?gqrgYla-1GH)201b5$hmY0fd`)eWabdnTU<=;o)Peup ztpjr}>)DT1+b%wbo@B3T+iu6WO|#lRFJ0+qzv%Lh*S_?5KJ*k`%z^)GJ!kNvL)VGE z6U$Ye(P1ZBt2LILI{|wjpeIrfP_?If!XPKci-%4T_E1s&&n#W#C zsq%#Lu|J9N&s<1mw3G4Sj)4!KxNqI{X|Cw=nk)Kdp^ClbPLHcJeO6AoKI`y9E4K_7sE!p~ zoHNUH@#a|zxVkTXoaY5w-mF$JS%YoV(%WUNT%48`4QpxpW}?f&ebliv#Mz{3sqvW) zs*ZV-8%a!+tmA%5yog*U;Y&1ijTv*{jC0t7e6_M36hG5A;5`oA7CPt`NzhN7k$%O0 zX7m%<2@TIhzlSaQy*8~E`Z?l8-*xwizvs61Zd}2}E6w#ynMaBLX05%Z{Qfd3~)ib>`X}Y|CWc6j&y2>S5u{)p3(I z#Re4K6gd{&^qnVfW`7Lc?2Wdg9K7kacyp3P+qD*LljByMak=lh`$FG7_>5BU`N?`r z#W!0tR?zq_bnPm!>3XQhl=;t|fv%Q5Hh5BOp=t1>*bCkt?fAt}Vhu%49PR3Q8#{e< zl6`#||Mj-EDHC|uKsG#?Qv{xAGkiRlwhRfrt(JXb!uyA(&xK=eYZqBd^jyz^l&vH|i!^Uzl;z#06UV*ZfT%Oj(;{_qjuJ2HC9R62JI8=A}2?sqvk)E4RGK+?8{2 z_L3t0cGebbd4YLI;@gQKj&EdNg!rM7Eote|FWeLn-vRZHVghc^M;g`VM|Sfu1{deaX`; z#Mo-s5^pl+4@SeSU<(35l)Uk0RvS;1-@R21GM&!&IJ0f@1BNzX0 z$)ty0TT;UF8+rCk-ervV;gUJL+cx5|C4a-a^%rknvTek7XFW6GnOOsQcl(H^W*y+& zSe}g?(a7J^v%dHr1zU^u`PVJVNCF{O|ow!ly z?F)#byhVFp!%Ee^{X5FD*X_E0!?#sRe1S@h->=;9q7-#(G~%BI#m8Fu z@LghVWjvj6fC)LQv&M64c5GGB-dr8}CeIoxow3q0Rj1fbwjQ-(pA`HL&p&FmVaoY# zctqxY(OdPRw}9hk%mZ3vgJ*CzoCxpa44h*vX!4l@uiPO$`Aph}2aQ<11xf8D`t@OV zzlw&QUO$A+vT=0AV_yF;;I)8@;KSZ)r$?iovqNv^X*CIYIolF?&@S}AS4G(Z%1+m6 zd(cGS9TJ@iU4*82tZmOmAJ_1n{p*bexk+X0F_ba#fRl&zWWH+Q8W?Q0%d-pKu2)lU zO`CU3Q)r%?+0lcBJ)RUlS(ZcJDYppylA2Pt^bO7g)IO$SZ!kyus9W=O#W^JvU#Y33 z9%xsf)UiDH)62RvT}xZNkXZeN#Olw|(&M)hqraEu;+K;c{jK=?bkQHK{;PG~>)HU| zj98j}vvxq&9^Oz2tbn#^!tsz(pHxNrwlj))PT6+*;sUjiBs@BB;GE>^LzuE>T|*BXASr4icLLH$%+#nxyKZdePxF$WDY zTp95zX-C#vLW8%!cN4JIfNze4?;1^u$7o{>uwDVyfy~H;T>d3emq?pyg+H_lA~c@XYt==M&mLZt$maMu$0lF>}x+_T;jO zyC}$3$G*?GkS)m80@lEXS$CC2)G;^rx$oS!?(uml7E+<7f5-Jz)+Zt6sGa8?46a?A&rC(;2UG+) zW^6=3G)nmupyf6LS!4WIACd!!_&5d0Kz) z2>VBk1vWf6w`)H8zV+$ve!Ly6t*(m!N>7p~ycZ+#1I&KGb-#``u+Cv+j zum0lXfR>8R^P%(bX~DZY&<{HLvsBR@HgN^KQ_T8!CiX`=^a!wC79S3Nk&=h--;BY3 z^925z7YfBrPBZ*B&DHp5C?oc<@E>Ph+ncee18Ke}do25~xsT<+n>%?YW4^)~(*sk@ zF?GQwiaqWm+hl7Uep1DlZsMB5n9fh~m)G;Ww>X;b8u8aXV{-oy+gtX@v+0M_J5x;V zqttbtW3bmD&e+uFELbgPh&}ikFr0RCa!g%>_%9iI0^Lh8@iobq>w2iE*5zW{_3%Xe zAbKkL1HGd&?lR_Ld&#)_7*{W29%jtLjQK+5n>5bRg&Fgi)|hW(%wIRge9eX@jWPEz z=HA4ZZ)D7eGUgkJIXenHYS0yO9$^?dpq%kHJ+k`Id5J$z#~Ne4aLzxk*0pGmYg_y^Q6>=Q);}&toiaILBDVlE%`O{X*uX%6an;c+qGNV(2IWlpr4`-OhHg2E z9JZq)BKZHsPK|P%PyN+gr*N(1dMQ^ME{4Nf#ptukc-}zy5brMMelPb|aBb%*=dTZ; ztM;Aj+9vCsykF(6=Lt)6fps>|h~K&^-_$7~WQd#zRvTuVe>LlQSrgg1q&g{v>wIwUP4|4; zYE#i>32jO{68|LU3v8Y9)uh;`^Jy!Yz6Z}hlg;BkI(?hZ6IL>Pb3X!o|MfiRn~ZyJ z^qqMg^p$g-Hmzmt(i?qGYs>PBL^%7xJRi`R??vzD+!K1FRO#WkJ@@jPc{eEY?wB-h z^r$;GC})gQHLvd|`z0IGRONGw{Th52;-7w~>b`X|RGLrb;=TCvWnPx~Smt7xlkNE! zIVtgJz8UP7R8F_%V%ulB{`02Y^@iaqIL$|3%2>pbv9&p|U1#w5h>Y33emUba&l?Je zPySD#kAG|R5oO(*ALQJ9v|@S-KUcRtA5W=^V%mXi?jJ@p4u_1cR=1bAX4=4F{Y@3|95PQdO?5)fQntDBA*mr~C)rmT%?;i?myROaq zVi$cj2?nv!+H93$3qqG+ot@a$~puzlsJ!xR~(Wb*7=y2R> z)3o)>zL)P(lT(x0Ec&=@T65(y&}Z4dP3bIWp3<>>MG2Hy)kq{OGbO&i{m z`1k#Vs*;=%CHlSka2uDrKB`G<7~5`>^JqQhffh?wzMd1yy(DQY=KfocTvs0~OKCWj zuR4DKE-yi+|DyjN{yNn3;W)GZ@Ip}U!=3?oY8Ha&|iVo3aples?)Ds9Nr6kysYiktPDLOcHJ7yyU#bk8y&+~ z-1>ZI`(ow}*&i98d3@h1^l#7D|Cwn0vju?x=(qsSxA6W=x0jqop7txfs_8azd|=m< zeE4hCBse^DC2Lve{sB1DaQ>u~aU^DC{El=rww877i6PBZ!si{>DphmGMah3P_7FHp zo+Bw!&%D+OFZ6iNGqF|MRuxSyV4tUz{3%klfibB)*)?9qMCwd{Kb-Z-c)!D|#?Ir~ z3ctORMcZZ`tg#v}C3lPDq>%B>gs<#(A?Qesj_^+El@A&gHEEw2e!t(wEE#jj2h*1O z_W|9b`@CsJ{-8?Pw=VG1glCffW}}b29cj~jad2b4s$4}|&^j2TUas_md&$+2OovVH zca^*ZPkQ>O173VJ`JT|*#l+Esr)V+tJ9R65#eEvrAmfmmqHbNJX$Nlegl2{{S1gc2 zj0N`#)@)vq^6=&*3vS9@@&JG8fybBRJn-!$;)}_Cpl+7h{?sgwx_ks{!F>w{dCA37 zxP7HZjScjv%_0}lG4x!CwB7bDd6pRG;wt~#8RQEo@I=F_W$k_k{PebJLZ%ucH(LDl zHoOXtDfp_IKHkZ5p+U^L3%WNuV?rcWZ;R>-r?cV(c;CI_=?G6HG7NZ^QQi4 z@%BaV!6JD0;S6$T^-)V7);4BgA7yOO(tTTutIwNGxpeY^wLoLysK?vmjqj|ajkcx_ zRpS>j-cNulygpmM*EhT!oQr99T8?kHKDwq@zeF#_-{NhB4yiAPw{IlJRUPBYx+pj* zQ;naQp=PspwR8>bBS#rwE!Bs;#nt1r%gegC0vdS1*IO0X-ioYv-n{3a@ahD&YGQ34 zt#EsyGe;K&#-nG#lugUf#xfc#Gkc+1Ej%Ht@}VdGYp@*nUy)eI0zG;JOi9!xpWc(0m52i#4y;D2uGU4z6+9 zr_T6sRl)563t z%G*gUn7(Sladg?>>q`zwo`lxiNYgU%lC31?<7)Ea)KFKa-mt1=9VAj{Y`fgtBi;ut zqBkzWpW&rmkz1d^To~L(T!o=G-C02?3y+c`%o8qVE^z-mFS?NRXYq9<#P|+w*Wgnh z?^B^sf#wU#`uGt08TtJF>`!X40{v5?Vy8c(d80ctU;9z^`9`zn3~$7?0AmL*vVoC> zZ7+OzDnHcu!Lq63t#Rhh`>8#*tVQnjD}AK+!}jMew`@-Gp`ho?GW#z}l*zra=lqi> zQ*wEt%&MflwM3bz-EFPPKLea$-ED0?Q<+=3%ecmz0ZwCX0-wW|o}tW|?lQZQ%Am)$ zG8b$m9;PX$qEA!uo>J%C?uKp9Z5wlJJv`ybLFUl|%)9$vg2(pqj8wvnGvJjl*J5~U zA-q)pujRvQVv~^@D=s|d$%!=K3yW=ZdDA!t73OmwqSEO_FhkewQ537dN^aZehAF>;JH@DI}hHFoT8zW zj!D9=hMlPm2|v&L$2k!3DH*n%exkrD zSfpPvmJ2waDLF8(Q8=G#?4>k1`zkpYUz?%UmuYIEg)_dZ%s4p5PvI*y^Ta+^e`tn@ zAL+9*UvXWsR3~Sz=Zld!d%fFb)yzSJPG!M*pc_ImEE^_FY8H_o~me`r%V ze@=MPw>`kr!LiQWF=-Y2H;+Hj83FhW+cNxy(AU8Oo|moX@ReSH&Nz@A4Uk){1$$EF zLG*A*4YZdvM4nPjq8q%d-2>d~%+ns=${aJD-}XMY$bsxbtfsEe%jPSgk+qi*H2K06 zp0>O2vniWGcdbb(>%>tib6sP%W2{*$xv*tYXdpZ!_z3?8 zkT2mIZ?$`}`i*L8(BN0vskhqEDCgqu`H$J2tpoPpize20!mF>6mY8qWbfGUDjh1#Suw#22Ktc54$vA&tlIz#wC`XY3- z*R4YLYUpLszuO1UE3Vh}#5GZ7RQH^{d1}ux_8On{_I_D!S0MY-p>H;Pn=Spi-HdgF zPVpFhD(Ai8o&RKd19rtW=iXZZ&+Ok{n~P1=3q4nTp=bMvG8cE-44ae6*!*UXe*<{w z#7+y}$sEv*`~~4NWO%%x=aCq6ygBSfE&t)DG{owx`u_#ZOI-(h#6&+E{Rb;D{KZ!l_evb7Iy1{Gd z26RPLF@LsxINRJ&ma@W_HwJ-^sUukTqfg(p=8fe%Ut3Jx702AMi}>kj-!|ux1<-L5 zzw@l$N5H!oJzSrdLk2N-WS(>G7&G(Z&mCP;Bu9n|ABdUfyMeZCJ0KwW9+1Pf{;IQ_ zz6$+^d|nL_eN@mrPhy9;h=bPRU!<=xj~tq-Vuz;?vo}t~WKNmGbJ4LO`r9_LC~%Y< zq~e!No=5Vnd8C~A1K)@-msBv1uxIV9cd07ok*bCK34P>jeH*#FMK7`*Xczy$DPmJj z{OuI-L=-j9FC#YK-s{!+WIhib3pMQ}r)EC<@&xM}S!2F#tS!}S>AUY9-|+lVsm9ti z%-VJ)?dKz}WiKz)JJ}Z)Kf}AIB?YL*xvh--g}U z|Mhzgj)5nCUUBR8E@UVNTlD7{D*6_D=XYu0P1uTUIfVfoTXJuP9-WTe+{XHHPX_s5 zS&QvvZMKK!T{&8yncu`LG}-!A*o|)s9kW%L>j|TbYgSMF z(Y+U=VF#(;_whTD2P!DzSjbwJG1zL`W*++GeL2z;M2^0Q-{%B0LSL*EyODKSxR9|C ze~{dJWZv3ac-N&3p}W{WEz!{O0XZC$=&weG!tnV&!cuvnU7QZC=*NWbjJ~nWb@r)wlrmj)p z(Q<#!JqH673%84YY38@g&8^HoIgE?=uwNtJg>#;Fj#mPoUv}fOxuhpPi87g&%9_mR z*RC^_Y3wfJ!aj5Q-tGN7*6~}{GbhzB=hR~Z%e*7G0Cjkrwi;zldL7^IBfKxeA5zA% zR_nKOK3;h$y+P*W-||l8cae0#r#cJA$6L%am#`wxBVn-+=IXy?9!=y~x0xfo!Kgl_(q z89UYV9Waz}*Q_+u8(2p)dKMLN4F4$_=GFx+gba`yP-jkN2W|1T2 ze$9y261YbmaYG+hL)+sjc8EWr*{k15X?X23%FxHHW3Y#M6 zobL(EX+vjzvfCX=yYkH0uJ}C$frE4Z&ejhC7ktNm%N{>#4ekS`Q+L?#eZa3tf-kV` zSPP-I(~hdc&ScNFLgy@q$c!g7()8%t_a2;xuU)UWvqPl~j_!61o}p!{n2YZWym$k2 zJ1q|C&W3c;Zw{p`5L&jZ(gws1Z1*$ac~k8-X3QRbeHi}yX}f%g&%@Bh3& zc+1%T(!xC(+&>DPZ#WNpi!6MXuaGw{H>T1lvBJpR4GoC)x=4vM2+ zC0@YX!_|X)OCT0V)1$#Ya;|{5eR3qtyD@?fVo3ZIm)8CSHefmYBx^0%)5JF!|N6o} zM<9oNn6%pVC-E1SyTm@y44<07eFGTfz>s#vSLJmWc7?-FW9v3UkNnQ!^>^U)B%N-{ zqx8$kGvnxEIp>iD{yg%@OaE?1#?GgIKfM6`+xEZEzjty>`M}2MAs-SG^Kttc{RDko z%vj5~$^M&+=?Y-UZ|Ars`^t9P`s+N$RAlR<)o(?=KS^J2xPX2A`~~Z4_jk=?FClw? znLmtNV!;AzbRXx_B#)!yt`-{mY4;`e%_UYg#NKz6*Wz*HE3cnAaHqxNSHth(SC~L- zefOM0+-=%LQIA&I;i>j_qzXN(dI6t0K+dn(o!HDle2wfIw9iDYMSdiP=jy7U`2Q=9 zGUmU_ zcT~qD;kjP-A>5fWB$uJ+C9$0{UtIqs(FNi!p|5=ZA~T#Vy35iNLc593tv4MpEJ+7G zOI{^Y2M&w--M#C;|2l&X9L0W}jOCNSuw_N|_a>qTe@&lylabA**-zcyS88ToX{hed z=L-KYXGLs%E`8bpF9;uSPUV2KE$dG`jc>JByihCsffri6>cD&0>N385cwmu(2PQgr zKw=JT9z+6zW`-Qyd1P2dD zU%mwH!UMh7O8cp^R++kHZH~+zN#{4LHS*d+*otB&DeR=-*oy+s_C?rp%zNYzWsWh< z9uA`1Gtm7`hx`f6?K$RrXg=!CnC2(1`uH?=(v!1HhEJ^yU3MX9`y%-Lx$^UOFA!~I z?i^#$SLTXO%CC_>W17zX1T+;L;lEf_x|p~0d+s~fh7A)KOPq8?`SzTOyzRE0KyRD+ zCK8af+1i|xV9YhB=i1DMwF_O=3LG6c>gKYu!kC|=vm{TeW$&&v{4)40#J|(p-^vaB znCT0MgF~y2JSgI09vP}?$Io0$Ihjv)(!N)|S9+OuxY%gGH2f$>$Z4ZT9vi4D-RD2q zud?Nejag!g3*IGuQ&yX)Ys;$WOXSaSUv7MkhQCGh_C4OY{+IdQCgUT1 zrkOl9p8dxBuBa#Sz#KhqkdN<@EgeJ*;!5HJ#b>+H<*J;*Rr*`*GW#pG$?^WG>NvP9 zJ3Kgch+Nk)$A}-Li*=ZvZ&UJ3tIjv9wtm7~AvpAg>rSJLoS*2K^LY^d)E&EAvR+wh z`2U^#W4>L*7}$O!k>SrF_Cis7IlJC}@Z*8A@4gMtc^oX?4!0pIAS zjIZQ&oi@VK7ubb^Ec~6g&p!k1fA^{5ZhkAI)WW|E{GWkGgx(X*fb(ZQC7f+J@W2mF zna5AlL+0gMvS*U}#QwqGrtn?6KEw(3-JtaO`W1g}04{H9#T&tGd zg#69soGJTdtMMgIyw^MY4!&Pm@j~-te4(=|=7%QlQQ4C!e#(`-MA2ct8H@dxq9)a& zQ#^Z&ShevIAL~UodC)B-FIQ|gWQrKMY2SWq&PL9VXxE$m2071Az;^;mcy9Dx<_O3B zKx7u@=3FZCjxU9pCVtp8LDsAISDO}cCdN0I_&nsb0KF)3TrrU6tb6nf`?(%gtYrnq zr>`*m%?5rSbWI?i)8tydVeIjQCQs+;z3guS5??24Vu`2o-W=-mJ==|YA+gv0g-%4L zti3o=H)k00Z71`}m+;rV_b=CU-u?JvbDs50?Tqx-XZgRZkmtzfWgZRj{?;t$vw*pW zZ)dj-4>h$-2~`D`UDK3#*|6cI>?6uNxtMc6Wqs7dRa|91Gs4{ASHr`HcqeoXrx4pT zSmJFY-pF^9??jaNUgo={eTPjf?yDv)@~EY1h$>0nHZ$-9F}NG~*5&faX~XLV6K~F% z`4D+*Jl~;iA2qfGeoAW)IB8+_C`y7)J(QKV^Pw#E+1JiY+m{s}E-V`!Oygd@O*}fl z86=B-nFlfhoFf=Iep#QUS42SRCe^CYq_|6;==)8mO4jvq&36r(=;c}1qXw?z+v1xj z{|<13U;HXFTsFYe(}s=H*{`y;znp(C_k^pt-%NY$#HoATYNF5!It{E)`Xr%AHuge= z8Zc=iaGQZ!p@vP8vvXy}efA{Iv{x$QK5vrHQ|4@e1)V0zbrEtgLsN5n)x>1G^@*wA zTcE9YdyH1KZVl~3JVkfCL0q7;)$9qqFMWMTQfdJIA2IG%IN(McaBCcJ%PhDf47jN&)xTJ* zT{35;s(X8lYJR&wOFjBJIIl@7Uid^tG^;di_|l`CYbem>zum_3#fygyEY>^=8+bPp zIut84(L?_|ZC&HF>Y0IpF=~AXy&ycRLvKH^2-$ppRj+35#16H`ZQk2moNH%{%`sV8 zc$7R@*m@HgFPl#z1F>rjKJ|v@aW8xBnGKvRc(tqKo762s=E{E^nrzJRuXY)2+I2(Z zg|d0P1;1MynaH>JycWJ(l(yHw=X(u4UnJ|+P2Sx@YWp$hQ{Yld`)B-PmfzJs97l%xko-jMT3mC2CQPA7N6N$%*zG%?90$`8SGVY1}EkR_MwW(jvV#XUmU6!+cAT3@@-oC zz4P5uZv6bNjP`uW?4?YN$Sblh>wvFbZtBaH*ZSSMaUyb1=>1TG$B0*)JiU(^FZ#2X zy<%b_D;v0$Xti0MG|p`i|L4JOs&%24S#unLm#gW&=-}%Pi7#eQ{CW$vp@V;pE*2du z*QQ9*#$0q2b-d4te)5K|d#S5L<`PenYWhBBY70*Et9+98_!={O=x8s`mvcr!a14z= z*9FlLzw9b`ld)<9FTtr6eJ^>|gm?Z07^BIV5!|^t>wD<8+5EktWrW{=M{NF5^i%GG zPpwBUuFn#km~QC8^za+#8z-GErZ2U?tl#7_`KG~lR=#O|vFraF-~0?2d48L3_`~o| zFzy?ECF4C7pX~KKZ*ix_Ux24xfTu)$6zf4`BwY87%x|gfn~P!vf{nw-VV9`MHH$IS(pVG?%<+ zMIjaYy*niydcc&QpE~3xM7|u!rzY}qnA|QaRf-`$Q^=Q71ng2^Us}GP;{oL7((;iB z`LW+S-#w1}lqz>Zes()}0Gs`-RG|xh=!}dv(H~*x5Vq*>CVGS%JK?%Fx=OmxBU_=v zZ0OLXrL{{eIcw9U12Wd4PX-utxD7gtg{}kcx|RJkH8ERc9r{IHjBQXVW1rumg9aTA zyPH3st1_Y)=^4?nmM+OgmpJuEHhN?%dPL&?Nj4PsD^rhTqemD!#wfL2TUci35p7|1 zf)4h3=es)Sz?dfJkjdJ}kdY)?PGYoVkN@P|)38aufNgp$HtIFR`Spzd5ZRx}{O&=% z^Iu-LeWjMl=eoP?#b9Bi&;@Lx?k0p_z} zkL08DgfAk`a@Nk;tS=HTKB@nUS#7S1d^d5`-B~`?p@vN>@q<0j`uxN=>r;b#se4yG z5+{eL?1#u&vgVEv6=zW}}B&$N^%@{|>SHn6v!K+pZb1pW2?QeLaiZRpHgxy9?m;E0B4S`=8R6 zdC2}$)o>L? zkLWA6yjMh?FLmFR`NLMtdUZhImh54yD25fyIx_4(p4>F-fmsWNeQnmfVTH4r(F;FC zFU&*dY*c-W@2}^ix}!zPz3+%SJ$~r}p^hc!2Xw@-TkaaULY~b-b`H7IgD>3su-A2M zPBe!-z9+zM%I`{7tc41iaFKr!`iLy%Kp$i@4E=eY+P)V&$I$=z(5kQKNB({StwJj*J4UL$`&K4s)rYea zeGOXO0b>mdK#8V&oXHAbCpga|ALV`bJ@P-)mG^3%;j?UP0e%~LD)V{O z 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%0Dee3w?FLQey;5 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%0A#)pGqhh^aPA#+E_yKS+ z8S^|iuFb7I=HpsFL8GyTO$Do`)MC%AP4?UDmZ@#SI63<(Q_7)t;M>HX{@6 zLeou>kX~h5+?rCSnEGlcEkc z+UnFo4Zg^zW5-hL$-9jgD%=bWOsOVl+@S2<6z=KG@Q|RV2bHuH-l!JJ(jgLhb^h+vxTQc6RWLaQ)rP(b`wsY zSZlS(I_N7%FRMMyR+T2W($kx}@CB_oYzVuO@5*skk#_6)_?S7T+y0`{=#Nw7)@&wk zo+Uc%4GHr>b4aNXicDPjD?9Urtt*nKV)AYl^yhNsabc0voNP~BjRzN=cra({xsY5g z_o_y{lI}9iD3fi|qEU-+T0rZn_^~33OI+C;RUJPVOBn`HQxaV?L*VM3x94(vb*)HP zV3-jm_Gxf&UZvaF(#=}k^c3xt#$Cr`B)P(4sPiuDCH2JuM4qnAR9 zO;=NsQ={4<%`_I$E;94ry(P&I-d5f>Or>fY?_Qg#U%jp|mGUmGxFEas-n$xCuUVOD zShw=t+PhP0SJvOX;{33`UTWoCwWJbPc0HPBpVr@RskP~i>Itj^R`z*Ze1jUWF?GMW zT?k~&`v7Jo6wp-GIi$AQ=sWf3USn<<4}x8S%kpHQP4}vfA#j|MHo+XZvd`>^-QAlo zE6h_&ZCX2-IG18pceQ1@nf=@qN^15#R%ChD;K-GXd~4G^xn2f0&7sK!+EhueNf){^ ztqH3NWKLkvb`c2qrFG_6zisl`bbFi`J>R*%sDSqEQ}Y(;>bq7q zCRglfz6Mea%T}*l=U*y%;xn|J@?*QeIi1mhSPLmage1{{R0SYT$nWHI1m# literal 0 HcmV?d00001 diff --git a/clangarm64/bin/libyaml-0-2.dll b/clangarm64/bin/libyaml-0-2.dll new file mode 100644 index 0000000000000000000000000000000000000000..bb8cedb908dd972b72f3419f40b37941796a0f91 GIT binary patch literal 141824 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 literal 0 HcmV?d00001 diff --git a/clangarm64/bin/racc b/clangarm64/bin/racc new file mode 100644 index 00000000000..38e450c858c --- /dev/null +++ b/clangarm64/bin/racc @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'racc' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('racc', 'racc', version) +else +gem "racc", version +load Gem.bin_path("racc", "racc", version) +end diff --git a/clangarm64/bin/racc.bat b/clangarm64/bin/racc.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/racc.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/rake b/clangarm64/bin/rake new file mode 100644 index 00000000000..96252d9efea --- /dev/null +++ b/clangarm64/bin/rake @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'rake' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('rake', 'rake', version) +else +gem "rake", version +load Gem.bin_path("rake", "rake", version) +end diff --git a/clangarm64/bin/rake.bat b/clangarm64/bin/rake.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/rake.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/rbs b/clangarm64/bin/rbs new file mode 100644 index 00000000000..a3e3afad493 --- /dev/null +++ b/clangarm64/bin/rbs @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'rbs' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('rbs', 'rbs', version) +else +gem "rbs", version +load Gem.bin_path("rbs", "rbs", version) +end diff --git a/clangarm64/bin/rbs.bat b/clangarm64/bin/rbs.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/rbs.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/rdbg b/clangarm64/bin/rdbg new file mode 100644 index 00000000000..ade93e8b558 --- /dev/null +++ b/clangarm64/bin/rdbg @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'debug' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('debug', 'rdbg', version) +else +gem "debug", version +load Gem.bin_path("debug", "rdbg", version) +end diff --git a/clangarm64/bin/rdbg.bat b/clangarm64/bin/rdbg.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/rdbg.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/rdoc b/clangarm64/bin/rdoc new file mode 100644 index 00000000000..e7cd61a786f --- /dev/null +++ b/clangarm64/bin/rdoc @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'rdoc' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('rdoc', 'rdoc', version) +else +gem "rdoc", version +load Gem.bin_path("rdoc", "rdoc", version) +end diff --git a/clangarm64/bin/rdoc.bat b/clangarm64/bin/rdoc.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/rdoc.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/ri b/clangarm64/bin/ri new file mode 100644 index 00000000000..0a0002a7484 --- /dev/null +++ b/clangarm64/bin/ri @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'rdoc' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('rdoc', 'ri', version) +else +gem "rdoc", version +load Gem.bin_path("rdoc", "ri", version) +end diff --git a/clangarm64/bin/ri.bat b/clangarm64/bin/ri.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/ri.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/bin/ruby.exe b/clangarm64/bin/ruby.exe new file mode 100644 index 0000000000000000000000000000000000000000..fbdbc32659401adce2cbccf8a09e8359a8c35706 GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/clangarm64/bin/ruby310.dll b/clangarm64/bin/ruby310.dll new file mode 100644 index 0000000000000000000000000000000000000000..781c33d4ecefeb8d29a8876d0b8e84ac946a1075 GIT binary patch literal 3620352 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

N=^Wq-c|lnTBhJbEj8L+`Bl%h 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⁣P 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%0DU6! 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ð#pN8g7Y;lF&C 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

udbcTcr-vAFTd)%dkie1z9xB1-wY!&M} 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≫uMhN5 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


3T;XMwM=!HHdI@=Lotr{0@ktlE@x|ciYwBYR zu7vjuydS%E)E~JNAJ&>tU&5Q#jPM_;adGF+pVp0VXJUSK3wN`UozUPPuH}4v%_#0f z`#$b2r#}~WvIE@wvBGVoH`X!_ckX!ejC_ct;BV|&%VNA*8=~DF=A@i<^jB+d-nI4S zY`Df*_8#LbfWM1&HO{d-LgPh_PWQ*Uj5bu?zh_NniZ!+c9_$fdKfsvsX-hPx^(=Zz zUC$T(=kSg%A0BGv!X3l+7a#G?RHFMYXK%g|y*69%SLBJ3EFY`K^t2C`uZyDRczQr# zid>ft@oC_bO#c<%@8J0f<(o>08x6IrY?J-kjXY5Pa^|2jqwAFNE{fii{vlwd z-7t1zK5`10XCGkHS1R2OebvC~0IPC{RRgQ$Oy94gfB*XeYy>Al4i5U1-cqJ^Jv}6% zSYi4q15Wu-TKPK?Q=a0F&J=ue&_&QAyYZ#n>sUJkdt@T8({?D|)%n@KFLwqimYDXj zha7z6aW9t~KGCS|n3GR5-!6GxW00P!He<+W!G6=O(U_$kV&Q(g^RV=iMeET^Y+zUJ zqAv82I5IxOT^c1<@GX5dSQneP%RryqWb|HSp5L|u{WLsI?iAr0KXeFq9Xot_h;hpw zZh=3Y)pS~b6?y+0^KawZc5TkgWCr^+t;l-u9r_u_b)MvzGjefk3@1OWZKEAuT#YRtd)i@tCbeE4{*yTNM;9=t?#?4$Dk{VV33V1W zW{^Kh=lnwX6WTI<6X48)@?;+!+X)YO%ITATMtF6SulLwZYG1I*53==k`o|XOW}ea0 zHe=^)PL0$0QQ`RUPKr6I1b4ETT%5RPCFR%tD!9o9UiBf|oP9)gmu#fbGrF>mR32b% zXQsI{I?TN4T#SLCQu&?S{Q5uZlMGT@;b?M?iJ39a-!sqQ=w4tS4hFfmW+JxFB=%7q za$$zZdz4PTpA7Q-1QHsXXu$V-^?rmi4i4w}nEM;h0ekTQH+;t`(%P=Rk~#mdHMoyC z**`bd{!U)3efZ>HTlsfyEUIRW%Z|-o5GYSykUnDDY&$J5V%y|uEfwM8IXh5ZzB9LI z5V)`X{Z)&v=T6VEo5C}cEA?~s>=~c7E%u9MpZ;fbxm)JXOe_ZX&+j<_d&6$O`N5TK z`+}k9jqJ@UHuGlS>4-q<*i;P>rznn1CEifLyNmE0-N4%Z48En3Lw0Q!@0=sU({|o` z(~V9j)F`?r1pk&DeqK6@#^BtPH=`Jzlw;3{mdqo^C4KJAbK9407`EqJ9pM{?yKUi1 zH3b_f3#@DlrCCpF{K_+UquL2tyYY<<%x_Svsg-1dAPXAD_a5rE(0$YGj$-^BwUs=t zF1F6A$hH;)cwUr-O~hDkVtmSz=gO5?QTbfv{o>B^x4tvnd;@b4rw_qiz0PVM4mkbR ztuBmRw~XST>K1Yzv!@{b+NU^D_@nBTu)|w-e4t!*7x%M0T|@bL_;Vq!U(OtDh2M3; zCnn=>+{!mqJnL?HwG-*%oM@r7U`2kQJkGaazN;pG!wo$ZOMb){ zmJYq1@VIbw;5XeWJOEGF za{9-@bscb39vWWwt8}-H=C0)`ckbd>jn19TJI$TuSmWsy>=AI(OWbcA^Y=BoJiHJ) ziogEa+w;i)@r|y$s^__veJ20=)8Pg1kB19l^AeBK=8HSvJ(qE|Jeadv^CMc_eKmbv z8Cw!!j!T|%_l~2iz11(yO=zuVuy(Y^ToanySjn0J|A{wgH-~c+iZjk(&-gX{&9V~W zJvoz!so}44ypWPJAy@eNC|E2g#*e_rK@2>Q({E zr|Ewq&*Jr*ea07_X>wQHz+Gj%Cs>(|NAr*Kz2U(t-Fr|kJ22cVKbRkz1WmoE+)_7S z1Fu`{#*;h_{+2gPO&pjP8abzNU|xFRnqD_XiTSVTq}|bT8a6Q*Inigyqai-f1rMl# z7YL^1!1%;tcb@;i{^90o=vufVhPAyK9!Q?JXgj)@S?fIi#M9HX9`K_z$37BRbTi+K z<%t{rNd8g!iKACt3V%l@j&4J*DLaKcoai0=zo;zO;pUe*h)sX+V3Es{W~1xQiq6tF zXjlD9Hr!9Yh4k6Wz5}rj-|uE@eSujS_?Xs|u$Q&_IrtsrmvK(xRQ@V2Kt=^;0Fb%E z#N@nwkzJ^L)w};Nsi-8#e%3#+-l)?@Ux%R6$WOQCMT5?oSAe1L(U;aC11esJpRo4l)9+o=I-aR1*tKPHUC&$V?a6!D|100i zx%S@R?4*2EejSyop1!TICvUp!8?kpw;WtP3_wkRm(uevJkDp9iPcXjET+ICvH zse7SI`qsWGiFIM<(3GxV9o6 z9;e;tBx|~Gp*$vo$U(I$eDO^!XA}}YEEm2zic7?|_}1_(Pqq{u&pA6_DBz6$OVIkN z3#^4}wC}Q!oLlsL3An0Yj#jg#4g$wIaJbjD7HRDtz-By$exj6VPo^)J9$n3N_53<; znf)8~;4Jzy?eUkrfb-HRmoKm)#a%@e?9owLz|PJ-QD!5Z-rC8KkbW{Zv>yl=go`%t>)zbuxLIMPcD4v z`|4i~d$>y{C+_Usky~T;_FyOIo}~{PJ@B~X8^mgTtlMttBW5XrzqJ=%bAG9n&|bQ` z9%m;5uh>ocoj(PC;%VdpB1WzUI^Fzr;sN;1Aun7v?R4?&8yVyWV9)g>#<~}r9pF2A za%@oV>p3H@_iH#e-*sE;9_3NFRO^$q_agPerK7(a`MqmO?4J3=9Ea@m-LJ9#rZL?` zof_b?rdj3NUbWAuOuV$zzN_HMQ&%0r{&Ppdp*O!<`2@&T1k9aBDiw0we9eCpE7G3D8#M!pW>BI9WA%5;?ee}d*zv<<-}=>mS=nAIiuy%Q_E+0<+Df2XSwD6m<6B4diI;% z_zJAz_3)19Wb%SSKWoVuv?~OiSfNH@85>0_HB+p_UAD8^&`W{!NKFCs;uw0FTKROv zVd&w*hF*dmy_oriUV?^Rrn=?Oi(hW$8+tja9D4D~&3r>IUOBLTc*;`f#V=>Rr$8@1 zJTz&s&cmAdI_!xa3*?WjDRSn%91T z)^Pfs;qpW90kdxro5wxnHu89OaxF2`E#$LzePr_z4tZ`IVth=!&&@OO)~fdz>WPmW z!j>GV|9REFbO|!mtzW15vy-3l>h9+rh>^PWZrxVxA)w<}FSvDAcy&kWz3A3+{CZ12 zWZFE0J-mdvR>)eklkW?ceJBwD)&|E~)CYew@b}C$_k^oo^Si1bVd|F7Gk1iKyzlhh z1HbkZP2GaIZe8G%3^4ENy?4N*J|vf&5O>7|^VY~u;_5Z>;pIl9`{0L*cC#Oj9Ab|v zH~KVl(8q7_X@@vh@o9&)T|TXx4Y|=~Y;T`e$MEF@$las75hs$rU2Tb1-$KND%)eLnF`KeAkE0(u=-( z0QthcasPwFJ@n1&Si<_4ev}S_4xm{07aePH1U*JFHrxjcz$lxpgZLEXRFu6Xn@YO6 zvG)pH`<2|gi3*it=l9KJ(anJTHy_2(}vJ34{ ze;Yb>fZuyL@6eB(Rso!G?p0Z3Z_LX(?D|;MULWnXY#41%u%+6A+x}&^{O7=m?)NnD zF-AsVBI*XXW&=sl;RSAoCP_&io$VV_q~Z7rC~?*QW=M^7>G~%LPe09>ndho@Sl6OUT*l@DWnCp%*^dQ#E4U8FI z&Sv>?JLeIzTo`>Kk?p+G&cweyXwuY2ibV>nk$ zUHsB<=vHQ)$;W^`7a@;=@Av7%hv4IVFLnIFt-RN>WV}DWUuHf!o*kVJ&4u63YtXjzKYzWw@E5JaaPsHS z`KnW)mylJvRxq51zKuNeX+b^^#RL=v+?W7kE8xT0#{7*P%Wt7`jpY=+F?Y1Er>`-! z@ctU$_2K+1aMt~9d^lyF$oAHlg>Q|y{x`PCSzlx5GoyblePEcCepFZS$i&ao z)bq{79?m*;+2*dAbbLYbqbt6q?^0+=G7Xxp=Q$leQpFL*)S+wI)NBXjbgUB3Fk(1;(iXPZ6Z$CQ02 z`0J=Mu8scC9p~@h+>7kf#D^^i8R^eRp2Os@1+F4n{11Y9IL!3+bL51yc~QI2QJJ@JUY>u zF1b`0oYSZ{rBm)rBL>c@?PYFz&m%^Hm|{;b;OS=Qpdx7Z_cGUtd$fVIlXF=9 z`##YoGA1yU*#9==DSrdyJey=@d(w=gHHV1mfr{OC01Vla{g975NnTu zuYTm0{QdLE!B=8)?){OCd4=TQD-yGVoyf*#75`_-l93%ZbueJh%IkGUz6Sv znG;*$5L*@=(V|0{0O{zje~=E8^9&^Nd(eHDEJ+*{# zoy%Ciz%HIr#j_s+X7j9ZS?rmgo56VlXrhjP(v?IPb3MB7Y3Gw~;Ol}$Z1zWMh)1h7 zx>0)n26#@K_QS8^vtr%CvuXuLI6=%AcrCO$ihEfb@*C&#K01Vcbd$Yc&x<^xJ5{g; z@-nd0!PgacJC=Uy7L3yG*{2^%zcV~In-(}lTcH#6rTr-JLGiS1@U#xzQjx-+LhQYY z_r)${4mQ=bN8xYlSTF0qMS6ANlIpqV6>3i^1K#J5^G54Q>qU8Qgq!_Ox@*RdMQpjj zlQB1>$Qa%+4<;7TmoXi;+vPun)~7H|@q_isec|J;@F5?E%#HW} z0n{UX*Rj{HzE^R!-(QbC(Aijgs^0$v|9^Xf_@ec9t3z-wmm*j@{(^x$B>~n1% z=(v9mbGyo0)6yY*{;wFjHrn|Xe}BT?cK(L1Vm*Q<^203X=rOJ~?FoV>SrR^Pq<^8Z*n^Z2N$yZ_&ru*@VbELi}RNx&sDYFjA~ zcxszTpf&-!7-OqlB#|yz)HW)JTbV#=6R<5~gIK$eNS9<>9;;xbk1YYT4O%T~wYAGb z0zPd3?IW8KA?Ek~+t=9UbO#<(DaLw*=Gx$q<3pS%Q{hMbYna6 zOZh;HeiPeR#D3lh{C(n5bJl(GTw3KSl=8lrF|WRQL|FN!tFIXu?%-aqW0M;qhN7#6wn@eAtT%zW$yw%z23zeAsW?wkb4rItqb2#xJ~4OyWjA?6_}X` z&D2e{`op(O9@pq^cr?oYPA;Q!p09F^wKnz5RZdQ>@GhJS_w}sP3GY?Vhw?y#|0VqW zbAEdK@8tb^#eX{7-)7@}(q8dLJM`Y1qQ}0r)s@w*4Rp%$gO%(3ftjK2IQE@amu*oF zf~(7-_d2?)?M_FR^)@@YOnS`sd*l;5D;>Lz@A$#l(!X7IQ6HMTlK*x7wDQaYzOmD! zvtwyw_ipIL$Zqkmk=@a)gX|jyuh2{f^Bnl3Gsi8vhR<;ebG(8%UU`x^UXf;wBh0bp zQn3Q@bW3>Ru=UY(e_LL03H=Z0Z}fUQFq(1id`dQG7kTZz2I=l*{x2pj64iTR5nOM?e8&A}$q5eOpW9-LF za#vKJyr@X=h>16FzLG6lJKQ`MKlvRCpJ=N1J9jDs_$@lr`gYY1t;$V)Uqkix!P%Ht z1&31(wRwoO@X$eU(g?l3$sWLEPMh9!bJ;*!f8JEFopuZPZQxPc|D*conApqIr=86& zQ6E``90Iq|3J@%zS1uv)R3owEr%_P%dc(%#4S zKB3J&d4laT9MeYc4ATZ@9Gt*s_%k-Ka4fik;81v;p0jq6!7=+8B3pmjRPilvVelY* zw$9+;n+_hL-{5%|e}|_jcb{9P3LFVn)h{@>3Xe_Vs^*u&akcJeO%>0L1g0q;58Lz) zJT=!_8@sMbw%g>k+w&dTy~)>5@NL?KUt~*B=Q5Sw=E;K)oh*N$sp9i4of!BupABXl ze{o>kjJ+OZE6?tgwv$SpKH}occ z=Y#0f>R3gg70B#;Uj$eKbchy1ndNZ|uIH(`9@x7>5xmawK$)BTfm)jh~$VyEcL z%uq>wL(h&RuEX>x{u9mTx6{sB%;Q>T9(S{!z|ef*gTv=BV_Q?j=a|Q|^j%Lqh~XkbN+|y{ZPqMChC)xZ$lt zFLtkRE4fipP^83#rr=Vrha`F^kLQ>I4@&+ z>Al(U?}j+LfpOOYkLbRDGbLTxA1m6IUI||0!p1l0l^;2=g=6GId$ySiY);mrP9!Vl zjZNZt9e56{=M3hH;2UTox`gMw#E=#{G&yX};FGNnHdWlNIpepXXW=}qb|g_dGXJTjipyOXW6a+i4_$r5h0|K-z-d+S?7&8;r52HzQ8>ArjTc;>8bs#wK%M7QE=Yj(2Da<|_e#uBo8cHYZ-_Kj0`$d-rCp_5!5 zc(QD*J0eGOgkZSQ#H+SzAnMSk=f_6PWhgRh8fti|8K7qnw5 z(>*bP^I6|X7gt&9!ucw8{09G+X@BH-cusWVVc+4IeIJW%%<<(!UgVvj?}G=3qj9!q zEjCsvyzThgLFn{#_HMsTUG@*xzv6G5w1xUAtDIeA*uT72QsaS!r)x}g@_V$8`>*-& zdVC+9p?2*&Xp}K_l4}rV|9hD)YyQF&+yP6zVl%(LNWFvPD=y`n)(+*&Ur|6l@A!nD zb8aVT?+$IOO`F4*9l8I1*{d^o!sWaDIgvVSszP5NQsz^9ckb-6Y{#FD!k4l?zJNVt z!}fuI-F^mbD<1Y4-Y=7!d~&4ye&Lp;ipD?EFE+M(LD}Bb$iq%#tX*#XXuI5U%H6DT zDZEk&ZLQna+PUd(V5g+`4(|u3G#nFdceS9+n64iW|!}5s+dgq0A(d_E$r^o433tJ z)P4p#e|66GrivmDZ0r+=_|P4~)oz2UqYkbXQuYEDK9%cB)z5tQ(WkyiNACjW{jz!S*X0o4K%VxNMmEa8t#6^l5P*bc6M2>Y*cgd2YeCvGqIS^xCU}L3WC0 zO*ZQs?6jUef+5G2$D$d@&{Wx3&O76q_99b^Zz?}ka-oa4-U9r3cJWl->cggs_T?3d z@%)B<3|;;rwaooanO{-H#DX5C%%*pUt7C7-p6cak`w$*`s-t>1K9+B6su&GEY?=?` z+BCb9z7^kmF`F~6emFQ?HmOBiDKIiLO}1z&{YV!^u`@)M?Tpo{5A*q7`mjo4W4y)= z4Y4*=Mjgv)o+N&#DaMw-)(A6~vU3BnDX=l_L3Z2lmpJg(dg1@vaQLS_-c+Hp){Pw| znY{};>}K#Hn?QD#=reX9^7b8Kd1vwjHzns=m0kD?)r=*2eym~v&s4p=3tjdlw;i?7 z1@B!!Ij>Kzxs^|^n2q8Y_uKRC#_V0+KF|q1@a?-gpb30?m9_o*>#U2KKgJl5jdr|j z1#u+NF6RfGEQWseCP!}>JrvzSJK!|1C8>wnHz)N_1U;m+VwHQZvir3uR{Vd6fB$`J zG6pXHk@H9*U(Y4>4G$Hd$JBqHFECR+yZm&WDQnB>heC0!KO@_>hd-Kc)0pA{kHgD~ z^OzV9Yl{6^Pf(mP#5#hB_w5WhG0UG!wCuA%O`dxlIzur;#n2WLJImwT#4GtL_?U^A zIcGH~9-uu?IlS-ib6*NE%eBNTA17v+kKFGjZrR~SUU=e`9d6u`Gr;zgW^eOO7k6ushDxzveoXXH`|zl~gqUCw!! z^jF20egJ%-50Im7^DZz(msbP|x+cl*Xutc|Hg{Ji+ic{wX|sUel65iUz&B}gExuyg zDu)kC*jr&?i#PHfUG|94tIM}GRXp(WarNpWrLJCGN4a*DgXX$DdP4GZE8lKrPuh@P z1k{Z(`jD^3T7O;@vg8xA{hsvzw5#}M7tfFI6kU{irhALIV+GIks7(P4e8ASyyli z>k;@j#Jz3bvJD?B*Z`cs70L+K74U!d67mDiu`Vm7jdeGpN68bY;#o}T0@i_o#QZHNufSz+7JkCb9d$}ZYUouB-{ zBNtp7vix$loNGhwqTKg^amZJ{X}E0?yV0>t3?Foy>+r#r21kDx9+w@l{1@ndV3Zv( z6!U_9Q)&8Sa~FVjH1DAdY$a^6)*5TN>36DZwPjXA&sS1#pMOgH{osDse9SsE9??76 z`XD$B{eZlwPbs&?viFa2_vMS>g6{hwzOMc7@gCX5{|>A+oGEhRnqmh(-nkZzGJexk zai)u-C^GC6;8KnPFeQ|y;GdezQ&>*kuw?Cse}n#IAIqjpoww499k`?ygUI5U!(z<2 zk*UN24*mmLWDa`3+hS-;Qrx zg~~k*?6QRgcL}to@5(WG6`$6QZ;gg`iH|oDPv{{Q^bqiD+VAAln6l4PRy3mWT@lI? zKk|ja8+;r@Z$ZD#`hrJ~+VuYuc#i%>|83X>oE4cZKIloq11FPzF=*pX>g(CWGnFn+ zRzC`yi>asQO*{>s`jJfw(Z#oEj`{rsa+Wm*L*MaFGk)1raihNT+hRRvA@zskLsg1= zSa2NqfNb=(EBq|{ucnGGxcK?M%7->1AMgiSKbEA+sr+xthf7lF^3?cwsdR~an8G`? zbv|R%{MMd8PS1I|sp3N6B_H`jxwEK~Ixi=aZQR>X)JEOY)6_lLoW`)reALr(5SykT ze@u~Z+-yxKszR4dkHIIrw|Ro!3twrn-&w${?<4qjLR;>`){rf??z@APe@|mKoeai& z=et>=_rkmrx#%g){u8?OAZ z@vKx>XN`-G;@vysHc3Wxk#{ky&ieD?yO2c#69(33jlS1%^I>==pZw`>I&1VXca8pC z(F5}@oe5vrxeYbQg6Y%?@=drfu{c{tN*?g-D0lKH9+z(2>Ly~TTDR(?9XlVwUANjr zd$LKF$yYHpCheW_;;}YnEp=s|zCs?G-jRS zXXgN+oBG@_7#xc8~5-&jIU_t;USZ>{K-zD5cgV)O3%Gi?huP#B-oqFdliRk97}hp&+q&JnHuBtNZW|ZfsQm=po}8Z;!jLuS3eTA1Ws^xMPa z-m22iUl?Bqjcv*sI3_+NxwY=`ri$Owj_hh}p-^XwI zaB}hYJNdCAz@f^DXP1RIb#<>iIsN zM!x*zdG-h+C&-i6S#AB{&g*BE97=wFiSLpl=KHq){_4#CC5~y}x=wIK2ZyZ7UA zN1R-2&HMcyK6c*wh?#25G!u9vQ(JFZJaa9y;+;#A*WK8dq&L>!hUT)G-SN4osV2Ub1n6h%e|lePrrUds~O)6#@E)t zSxX-JGInt9&yu<3%lJJ+U;H*aFq3{wTT^JO>e)1Hq33$L*$>E`(Hh^FqD8FpE+R*# z=7#9T!VK=cVQrr~Md~**)+hX*nwgJW`IT}xQ)JIF$qdfi+OmtBUw&6n?ooHHru_+C z9vGbNvAb549y~2RH+Mky9yJtFwpQ{AJ^54Ww1JBs^E5m@g?!UY_*UbR4-@pY+^1aA zKK25OhqSI<%bq+tevbUtJ(M-Mx{ttGFF9XsvEGDE(!M?L*Z&N9DagLPT4-($dWmy; zZM_s^-`+OPant)c^immTf9X8?h5X$NsQq9XJj0DzZf_+L*M1-eeENt=C{uE zm%pVPSm_nk@9njeXFM`mvUOo=Q^gYSB-twYUZXL)IyV>k5S%(^M6il4o;mW>naYzm z(Y?mt=FMSe)3Ik>=RsyhiAj+IGJ`zreD;QE-ulKS*WVhkzYA0IKq#km$hHigk25yb zLCij?s`0MvG~Q!7QQpYEY;dDok{G_$fzJB@pfBOhaZjqy#-M6R%pGoo|9YT;r1PHn${`l9otz@$ANb*`T- z*(p6Gd#8u`3Fzd%d75=aYz6!LEbrZZ_&}>l3k#3A=lnLUL8Z+-aqjrbAXcHZ^Vb-M z@`p5M!k6Yt_YFTxzxw|{&p7q}sf?3Y=X8}Z;sySq=sWjEdK1id7B}0wvEE#I* z7c$;T@dINXwattO~)75@Guo#*42Jd5&ocB6s#k8}YHUytd>+Eg11$gA+xAQ*# zz=Bz2`1m@rB8E;AjbzZ5c(LXbncAHpt^9ULghUx|!yWC1XW zHbkSl-M#3=&`=}eQOw~czT0vF*`RWQr8(%F8y4fv55Z#K$UizbqnUTo89Ea$aL4G& zyN?XcDE8psQQ?5|Kcov%+ZPRqZxrX)0^PUh3t+6K+PSNrF%&nil-b0Ql+dRB9KsXd-hWFAk}J^O7N{lUrh+KGQ;wEqRxPE@v( z?>8~d+9}9z&T3Fy$zSzh=%yF`X#S_;bBR|Z12j%Qb@f~Fq#s_aITsn2k&`vg7s&b# zWZ(k!aI}l}$?p>H7(TLjr>ihdx%uQ?%@>UwJl_{S$lZnyXiet?{PRKGR}B8Yh}@Pu z*Et4ePmN$-zud9c0~Tl7kHMGleeKbJ<>;*mU$bWC-DJ%U^!dX&Pfqi@`0L}tHRun? zbld09St#fN;XpC;6WufJwH1sk-i)7Ubg3U&G`529Af0M>t`$9$uD*|R=uG`m=D^g~ z9C+*hi2CBaW$sgZz5Y@^g8MXloU59=Q)1w@5!@r^i&J;|Fr77;G1rjC7bNeAe#Bd~ zIp$o?fPJp#@{bYk7yZDG!bkKxr(E#7q@HL$H;tYkt|h+KS;2}?6nOZri#?h(_m|98 zUUDP4ZteRx{{nfx_FVMTsXQaZ0QBU2Bl{<}p2oRdf&rSSA|J%;!zNF1XdgD`D;<-g zS@k${z&>o@Sg-{4?U=PQgY$d*huyPFvm@ikXHrb0gtIfn3)j<6GyX=5Kdq@K*K@jQ z=iA_lJ>S2B&r{oM9vCc=e9>4XYb5X1e%;p)WzOuwe7>{^Q(Tvd+2jmewA{obe?;MAKn}l z?Pu*|Y#ry{camSF+^Ws=uiUEUq5YuQiBD_a7xKv)e<_7Vr+$*0+a4!&)OB90;tuq# zbe*kdJi0FTCCBDk?6GIQ#TvDP=j_Os@s1quasK4H$WhM7w(~nB1O8Lxu)FLw%fgQS zq&>-tYt$b+t3BYUwzBU}NjdIMp>wYs*LkRte-BmfV zv#-b+7+9E;9+zmi7p)Y9h``c!TLbr-=G(px?3=d=BrFDL7l@Gf=Es;IA={7}%> z5JOgn#`>IlGOOA9l}nq*PWgA%b^I1RUYqpos;^D@cE+DkZd*BLG8F4PtI7PY0+hgulb3U-jX+1;h4azT7U!VM{ zb0^fnMb^x{|~u$K5+Rq<|k-f zw2<;fc4r}zbnZgLv&W*2dct9lI_YHiTxeF`WpkJu+#YyJuy)|Hn7ts9$*HiG;D;E0 zO}^(A_F81RzN!8%;r~Kx$9epgjr+Vuj_Dr9JLOY;-r2XIob+Sb#|P2*C$dTM=|A*g z@Blv>y*7{fvV&qvbUy%jA-7YG-_43AL%Z8<=JyR}jSGRx-U0^?YD>7he}aQc={~zW zw6UBx^V}bhZ`Dz9H@0G#NdGN`dwvlPzBfrM+|Fl;vwe14%xtltgZ$ndCdIxQq(wV|TJP&@n zJio37+mU=`?RoikXzT$GKHe*hne#FfqZLh+rqI}C&RFu&*fSoSh{oQ~n(`&br?JhP zjV2oN;$+GW2PZb4Ne+rO{`>!igS!6%4*suv_8>UuDn33AxG&bmfsxC^aO`_m&Hry; zx4+js0?~?zwP>$d@wUQQ{*NSOyE5}#vQxZ>o7#sgK{res7)LzpDUgF(a;+IGddx8LOL1X4 zjzwI!mRP7A$09ClWK14%Y7o200!M?`QEGP(->(Zom52IMT~h_ zm~(yod6Dih$#Kel(m2acNsf~<#)r;3GVziw%C)%TY9Z#l82KoA-bO!yZ$jXWVg#ZbU;Go8puBthOvSbM~+5oW|FaHa}}X!*ovj-r+jusucOUnl*6o zqvEd7J;T?I46Yh?JMzWo?YH60Zz`W)qR~}(L%Pb)Q7^IJMJavVN}bp=QzttDPuOQr z4fVtMOp0+Xz;^cI3kTixAnDFb--`PbgRhOu?JV=eXXVS==WPIpJy574DelY!1^INh}u?Qn0|IS#`)eC#z z+e|&p`Fz%smJ%~AV{Q6R)YCiNA#UJKm3JqLS7=^je{UFPwIX{TNsT8~Pm}Fr4f&Sb z?T{xt3tr*o8gz0huD!P2Da;#w`*hK&=wvJP4K0l1TN^T3@8!dMll4gXrbe!qx%I6{ z(r9T$QhxU$BV`k*?Mm0qe1P`Twb6S|vW;cn)#!i%eya^rUvPX0IMk+WuQjx%r`|8{ zte3vR+Inm<@h|vZ`@OurP4(Kr%E{;sGtOrzYlYI6jZLvC6VQSw+eO(f&htyxZaZTj z2isnQxrjRAy>#VDRudCA(f9kfkNgDRd&vK~e@t@S#?gn2lXwdHZ+pRO?~5xoE||q5 z*TIxAAF`Zr|{f! zyVm}5?Yo;rpUw24a?Y9pd*&*+|IoIRauaiZlAfQdkc~g0zmAdIrCd@qxrca{>ZF6Q z5xp-MuK`B+O8TuaC%j{}=gaZczvzy+mGk<0ID1xQU;S}`C=Q3%;K8 zbEoh-;^qel{|nFs$`N{kx{5ukt^Xe}mFk_gzCK2VmoVp=yA#>X zPjNnK+A(}}_!x|j-^h3hk(<(SH!=PMw0{Fn*^<@IAzv7iv28UEZ-U>dFA*zTuC*RF zRyb90Le_ew+A+dMhOPCGpP>B>IX^}Z*XZodKwTek;R42zMb73tUsmRVl6*S{VH4|` z`R+Q;?sJp2Tcc;4$K>kt6k3%#-XhK%!5$@++ezL5I`WuYIoY7=KFgk#za;mLC=SW} zHQ9E51+Gn;@98f;X%n0N@+sHt#v}@nPu=Jd`}~aSoO^h7`27t!N23bbvt#jY{IJJu zzq26OehKeVbz{~0oi!1&j-xdlt>yGdZqg>aGF`TT)?;Ls1h`wz*d^t%lU$poH>kU7 zockM1{(m*Pwuid}lw)AlXI4Jxtj%1&w=!tAFf&%M1Bf1N$ z4*es&6JVVkdv|;3gb&2o-)XPKYD@usA3V=llfC4*r2gr}_gcu>tL_TtH}*ny_JJrZQTQ|7nC%NTKuKJ%Te+@Ckb^LkZK%P~G zuJSdUA~?>Wf95*$QTk`TO#d2p=nKAvsJ{KgXP?2ZZ$4kM4cp*t4s4e4V}WfG<#%yU z39>HX?dvY$4>}jwZr82*rdzki9oHk&^?vVjzqh&HJKXPz8w)Qzd{+#!ihjN8Fa9yh zDi&VFp7cK}|8<$2|0Fy5-^K8+kq-qsl6Gk+JZkLHUT6W{9m*Y4UZZ!7M}E`{+Ldjsyi474 zr!}23J^fzD_cqpYWnaHdeeshimkLMqA3bm|??Z4P=e=;qM^Y~0v$UsYO&w<#0z;5< z6T>{Wu@_bQsTb0Q%|F;nJ6QkirG2ft?s(pb!PZz+GZ(Yws(be2bB9JwydjhMt0V`% zoHJE~JNMpR^oY(_&yFnoTvNrPugYG@;s3md+E-3`8-2Z3zo!kkU&2{F+EZD^8CZRs zSJdt9qg@VP3+5-?XZ##v!!k3*rCCH#hO3S9j7xPZ-X?(VWaoSze|&D{Y$<*(evvuR<9zGZE0;I@&S z19NPBYu{BX91FI9XH72q?C3DQDTRhJuHpPIa9_r6+2bwBy8-uhZY8pOD96FGKKCu~ zr?t06{-jT9Sf4xZVR!A#)pMJfyCukBm5cEweo?s$Q_kctutsNM8?g&5Cr)!=QaAQq zU{&T~BQHh|7{9THa?N)VPg~?`=;Q3O-ONMy=TqY=ENjg9x6~||7tC52^>JS<{+sMX zd>K35zk<2cI!et+Vp9hnIyN?CVmQJP>u&Wc*=MG;7meS^cxec#fZpBNX{SfQ5@~1SXfsxi_ z`Lr$EpZAu(wJ$HqUJz?W;P$gF$Cn<;IktKE!RfZYcy5;VDG>u+;n*MY?PPn@&x>yC zC4Q?s0{LX-eB;MwAd`46-G(1y>kysQlHh%Zn@iAhUaUfAwJ4V$hw(0Yy|~EaDEOdz zodI(*?M}dle#IZ0-%ee84tp<` zgC;umJNcLS*q(v@!J?yGgdV*7NaMoV)Jacw~ZHN9{%1;BUE4I{FZH zyZFk~QytY+y+Zgo{WXHZUShNW^x?X{gQ})7yd1q{e z&Ex@^^^|IU*U(-kddSF#ATb}|ri$DY*(5q!0J}TE9Wle?cJ+%+EO!Tfopjwca9r%d zo9o8vB~H!ng2laNfgRd8sne$af=S!98m`x{fvdI{B>+4sgzEw!Kd7 z&|OX>=QPeZWE_$cwcyL1druy}bmpAvn=0;PKbfIR=}y5Yy?Lbv#}@W>A2=3n&JU$W13 zZ%g*qhJMg`vzhx9td)tL^O3old+whb`nH^JRm6dFc>jLh%g<+BW0*{6#7+^}j~EzSd7sakpS^B4At~>*pU;fj_&{ygNZIH|@z5qeXP|)hdC>P2oDrsTNVLBC z2W0qL*!=0rczrz4^{yM6Dmq>nTqFNL=kX}!sd}Qnj?DBrh1~h+cASRw{wdIx!{@n? zGst0#5eq*EpQqCyU96iXsz$V?+OL-zT)6h@UF?(i9<-!KL32CHiJco>3qzCV zLz7F9bK+IA&Qr~A?uT~v4IvvO7j$>xN_>y{mZG@ktjx_vR}ALRRA0E6Z-L8Z#eKe& z_Z>RVAI|XbrP>~n19mJVC$bWM*eeHwtH9{wnO%})Q*UmnmGt z&w<-Ek(19It@+XZb-*8lR$JV=)`Dk6XJJ=Nk8s!80`{H92C)gaYc0%OYs3QVyVlCN zuRHTo(T!QY;7Ve*^*=^#ub@u7OY`8QQtO(%JUPeGKFb*!X>8`Ux>@oQ3V5$IgE|x84DKXL`rQ+2l(yM>wsWYAwW0Y-){H@${Cq5>!`akGfYmOroYv&C5DDQNB zRHKOrvlpX$)U2WVCAZLqy)M!3Ylsm;ThQ;U=Px(}Jt6PRTJ`<3Qx0y5`CcNOkmC0z z@VC5rjtl53-vN$A=pN;a82rnJ75x{}ej~pHTNSv|ntp1VGd%g2E0`m-x0?2*sw{Kz zUVYv})cp@+mwfMZIi0`n|kG)!GUZj8|S-+*)2!25Qs1Ni4Qv@<7-Bcnx&@y)tf(+mdDdtqx| zA9H}cdD+eQZ7a}O^S&`9PF`!nHS{%~G0KnGof(~7URyisS${BVH#T3NKd>^eZ^5if zc~@3jGpo*bO4jFmfvly^vVIGGYnI;e(hq3s2g@hKo9p|Qbo?K5)#F1FqQPJlynDjE*(&bgC0HzK&! zxHxE`U*TZJ$gW$IlcVv8p5z{|&C3_Ol~8k8*jesbVjCJaneGV0zpg2WR!otmb@5 z;#;dqPnm7|Y73VFOP2#n&CZh9Wq$aYG23NJ-LkWsvdbxZc#~V!Upl+kI^%}j=v?g9 zxas_R9 z^?0Be-v%A7IBjOLwXp!%8q9a@X`Bx|1&Ol;_%6LVh5ieO`33KSSFjmcI*!%ngLC|> zMQ1=iBcP*^(9e1gF?mevejBf|~4XgBIzhMkM(i%lO{}baJdpdpUz4%J- zWbr?D-*PqsISM~-o)qBT-vIaiim#bF`<~to?&%fncW~FU;}i**P^M!3TtCNG}S@eA30m!mvKg9FTQ|sQrjpano=CO zM0;@rR49g6BmW z$QEcJ*FINO`N%eH9mr9_hMo}@?XSL@1sxoFBkAM?e@`b>|@r9Cuuiz4o+cjrFclT^i}=| zMH4v(Ua-H~`~I2YN&T+v9V}XKKCzlo<~41!i{OI}29P3iul~mgYh1a&)+CFO`|?w~m>k)ILpYCUu_5!Lw*pc+fu0t23n?zU-oKf&23;(hrY;{7xJ^zZThAD>F{{$|FW%KHoO-_?Ex{;hb} z8B=cLS>otg3(!0j{9&*XzksvExT^-Alzpi~dHLMcFvJHI@88QD82p_E{#bL0^dOJg zfyLIZ*XG5i-p+njmoD}$Em-$G?;|a?2p)17;=#Kt% zl=~ib8Tawv>*hwf#$9=9A2x;bOdGjl&CiW45}q58Db~Bt0x`3Qor@jVt9}yjLilO+ zL8CK6@V(x(a|Vz(W6z#{{_mumeov-9wJm+s_RL^qx4X`t@hA8lIVl)=wh^Z}I%w-a z>Aoud-yy!GUL!Q9x^FY*`I**qFTIp|c(#{veHmvaf&fAD>mg(V+z zp%vB&R<`(Zvx_Y#Ys8mhX&+-q$|?&%X~{iB8uX z&f)1pCUco@t9bUm>>O&zph=OI0iEf5M&xncbt2E; z^C9L@ZAw2ZCKn;fJ{8IFbhw*?zOwBk)~|N#^w}{4$>270ui;O_n?{D7jK>cDWH^5c z$GPyP;gR#-POl^PP)|7hIrOCYECK%On8)4Vx|2QQ9gKk->Xo7s?NgAw)akL864*%9 z%DW~9PPx|C=v;%tXT@bNmGS>uQ%8hXY(25e9QU&Lh;yUpvjf|t_H=7~0{WR5w8qYZ zZa53LUiQziG?ST@W;QUU1T0I%=`0Xv|RJP(`-Zw+13rz0_UX8?GbANAAJb)ZA#U)n7Vz+u)7cK0BiIz~#T{Jd~weTwmt^`s^Tn z&LRAq1LW&HzRA~mD1$StIio@6Gc+U})xz65@oJ2SIQ+f{k+K0X8ybJl} zHdx^QyPV~~JL=>lLcZ+1)!@2i*t_w26=%s#m@^!562JRTomoM9M@oPVpYHOlwts)j zSp)UtGu<|-bAWYwjqxCGzlDFMoF-zd_-^F3ySYsn>DGdogMTI0r~k*t=K6GEv;Hf2 z5PPUw1%H^c#qKAMvQRP(zodlU^1TbsOs)@ZW<9JBzpw`SE27*Wa*MNF@n16cE(HHI z%xf+3!O)9xVr`jFHX*JxL(z@q=OAlAI-h9y7H8dr^~n0o(CF~>pX^8$v{DF-BlF|x zL;db#K7yPlQjF~sMQ5B(EPpAn{GH_T6d&?66wpqqz5YEu(N11(?onj9;R(;)&1!sH z!6KP`ymN{E_(u~f$-!sH=1!(igtZW@uiNKYX-w(bZnV!!xdc8-$>G@Q;%90vPd)l^fp5azN$eZD z06lmua`9%)E~v)_lMXeuTNUMu{Z@k>{hB+^PF%(r%T&pFjb*>?AY)C(#c2%uM!@L; zaJrnBk76Oi@c$;~(`5uB!JMvH>E?j4FUaT98mH_IjdL;Md}T#md#ufXg z*0U6g5=^0pU@8Nqt~Um!*8x+x2c|+`3IS6F^IQW=^Pq_Zs&d1%7V z@7I8Z{X6@f@vpIQ+5?>u!?>u8c+LV}?%ve?^T6$Sz|gk)1bAURB^57I`p7Xk4h+JH zY_@rO2iMnvi*QSxy+^GJ7~qvR3!3w=rI1_DlW6?6+u;kwFZ%j8_4G}2xjKmXTFDn^9}SQD|K9A&`@l5ADQs3td?9={Ivabo3B8j#I44XW2hp z-+pfVE^-{NyQOZ)UBOdV#(d;BqF)4$cYJ)v8*qZvTJobFXCcoW6KfcW~#{Y-(KhFa^)m909>mT`D>)Lod?tbFV zah}*U?~aLG6PqoVXcaBk0G!AX(WBsxQC2u9qrS7&3OPVr%4F ztk0cQq_thGztus1Yrl^Ffc$D&R%Wkt^l(VrD3{eZ2AyvgpN-nV%gxM|zAe*(TUriETc zUa()Iz_O-^4?aCOxJG%8edA*lF@GRa^*aU!XMBn0Az}tLKAt=y{ugUt&D$>TC_i2N z^Bw&2D&iZW73Juqqt$KjWIb)!?aVzhzKwRY55WGvc~bmo{_o{~;mPnAyfKuwCLR+F zM#0flwA04(Gdu;mf#W*h$RF+K5Wz8QKA49B_8I>u1@xnd2&o&%zX*++zZ-^B2e~*E+e+7qV&SX?%CfnmBDAIL2m-eA~xb4>=B-@VT4)*0|l^aYQ(J ztKqjFk1M~m8e4|_BHIIJoe@WdZx6RjicevWT?zC+UKn=4#A$z{J+(21wGh3t*Ua&~ zEZ@XwT6Z}S%~V1sqMJc{N#%JB@ciXxMzjW3S-S5jk`MhB@7BIPPmbLWVlQUK+V^L6 z_3SU^PO2z;qj3iI5nBqv*B@9rN&g>5wjZ;vEpR30)kmWnv&l)wIUE1@Y{zEP92Hu@ z`8FRD8`oTApJbkX@PhK{Z2Rb#`PmGd>E`F_j5pQhKLGCrn&x);ueJBGCMMs?f-9}PH1l2aESpGcFZQ|%c2VShC;o#yA8E!8 zZicRMxC1%p%URh1>=wRWbL6scz?YK+uh%!berSyLPJzzn(Ka@S?T6}Ji5t6ELEGbL zyBR;Ug*IcfO&jwId^ykRoH?tjaOEV<%MQ>+Gr2l8UhTbD*$F>!iC?jj(|=QhaBO$$r*#CRrUGjGqje8F{&PnfpcgA<2fHt-7e1s<4v$gfnG|AAeW4#p~Q zQ$fGPyQa55FJWIE@vhAJ7U*RKv@Y7%laZH@ukX-|6Yol;nLFDD*0ew~qQgDlMs!14 z^Gn@Wm*N(8T{oijgUnkxI11nghi206-wBZyFdw=87QFELhmYEO0GR(o^9bVO#6hBr zqXnN|IJ0Rods2KQ`dV|Y{fwf`8lI0K%ToDHYchuKvXrj_Z)kktIl-&-sb=`%QhmT-a(h&+47zfneMQZ07=7H~8;z`BnbtPIQtFewA%D zaGP1v-`Y`Sh3vhop$inJ4Mi@1CPU}&TTkp)TYp~Ytb2Chk4p}RF5DIaN`>*L8sQeUa~1)q@x6RZaCoOl3O7v)-)HT!c`2GRY+ zvKx43)5sUki6fKa%Yf^C_S9pK&CouQrMZ*=u0`Xl%kH6GH#ssP>dBt4>n%Aa&VGsb zHPmaRo<**O{k}Q*{@c9oL1rC74oXIQ@h_M;W4@sT`0aZ4o`X+-{6u%gs8{vw;PlnB zy*~}@1i+&sD}9MFUtv)hu|LjcN`zMX8eZ4DOk_P4UI<;rlmEkvC-!C5hT#KS<~?~% zd>3@#h3EV49?c7V&)1NTe;Im#y@Wh%xT5C*S5D&dD}Aj!#G+P{Pjk<$oa1R(8w$4% ztSS1+pnX{hK8jZe%h^S4f%=O^Dsw4IAzOsvU6ceg(`kY~4B>9l(Z?Lte_1)E^B z;k))+8@|_4>fQj1{{*MlB=rOqQ#Mnef!iD@k&AsSp9rPsLk)NsmnJXv93VIhU ziKg=P{1)_#4C-L613B0rKVhv`_9FA3yEBV@*8URklKg+-e$j*e*E(>>m$yIW;O&tD zY;WQ1G#76*Q^-kKG;!R8z`^(*DY*D_`}-(;=R8*PT|UFvPMPfmvGeRQ11o&3%!@-` z-OjtiytDKUyve6Z;!XRchR65L25-jivde83ezS+g0MDRI5{60k+3fcJBhQ#tGsU+t zRgb6IIif-GFNtqDu|d(|@4&lFi=s(rv5Wu5GB(j!RPUg(A%3#yEIYA9;{qQ6a^qDt zNh{fj|KeMf`0SW5=P>5sFL7EfdG#TXXi!=;hr${zGNivl zcQcK1V!jFRF`h97N>0CAG2krZP0k&6yhKiX;*Z?lG@5T#?M;V!kspUTkFIIuuJuj+ zY&)jAZ4^0s=;Yww`_*3mTkt|Uom7n+I9|T>hEePp!UnPqpBmjyxvtFaGL*@9a8%I6Hnd?g4*6JCyb8W}_@aR| z>psAJ=vMw899!^M%%8h}YP3`h)j7ImT|B*=yftmN{{Jum2VL)roztpXuxz zcMru*aBb@X@^c&ctvEwD`{K+wY`x^Vr24hh(5#6sC^i*Amn=Y6wlk09UfOp?$S$?x zJlG+1*ddMNzG@HRBK9EWVtW+v7dvlojowRd6O*;~HHy}5;(aqTvih?l!mFze@b>jxlmy%G*0;tmKBWH_`q(rV@%-Mjxl-8K@~hE zmSN)*`vTckSyo=Z|#mr&6p@XV296R!q`dCj7ICbgpL=aPMYKqudwF43Fg8 z-Y;1V+o)GZ{0};D_YY?7ZQ-4XI~DNT?Aw!_B>z~sw+^m2-vvL#s~cq#2<9WUUi&q+ zBKG1O<=Oiq*Kn6=DRUN}zL87S;NXvU+vkFV|7`cXAAGLcl()I1!$;Wzm;YBXXWkPV zHFA0(cl0Q4Uh(^U+7s`uTyT_qc~)XQ{h1hu=(P@8+Pk0jD&ii`o$JuD^t_>E*|nQ_ zFM0Pz_S0_4jPC#Am!18zI`6wXg`T%T&$-aEaMUsEyziXEXO}oY=tuFTF|4=P`(Cwvodzn! z3-Ec++P4)uDiS3Be3Z3*5As8}4)gy!?tj`%E+cCg`|`opJY@R<%Fh9Y`N8PMrRc%E z^m{4qzx9pi;Y~i@-Y&}3Q@#-!&2Ah1J>M-`&+iL7WyPnatkzD7JN)~0(Ox*P^lowj zHiVDPeJT8{jLVA8u^QNKQyKWN6PF=Q0}na-U>d^o!@0oS{AtDO~{mZVoN>5BNRUlGAD%vmaX5z;69)~+U>w+ zrXL$l^&`Bhf5tTg>-oIDmj2h$zv#xms&TCYb~CQ|{AQhIs4PCzP}yC;AUq0A&BauW zk-6xT|G-=Xm<#!x$TyqTQpZ#N{p^yG8z)k$pp&w!^dor>T2G3b8O^AL@ z0Ukp?ZP22j35|0(Fc|tdpWhc!_I32|!?#>}cn4#RVe{XGudvj2%HC>dPV+0;-AkFs z(ZThCL+fGQ_uE{Wj>+#zGw)t_Kr3m@WrkH71~(hbrJU74{D@Ak(w)}a>)H#a<1 zP8{?Z^g%86KuAxd(+Mvx);SWA*YYoA_m_6QJznR%Nbfz>QM5tv78ic@iVfVxdf-+o zUSwI%=CS8={gu(q-i*A6;1bNrLnrq+@oK5R)#5xM`EB~HcjwOaw+_C~Y7p$#LKnN) zXTuuF3&cq5eKy4P8tSm2wZ}#@JfAkD<2%@2qkS}4#L_zOCp-PYm0^2-P0cLryV3p{ zY>BMmZB|1E^bp4Gx7%r)5HGLYy(H*AToh)1js1@OHI!W`+emR-*%i=qoLqtUXKP2a zwh^;%Y*j=e?ET%$epZn4!C3htF4wJ6{{1LB`vEGi?WF2QH6Pvxa&WId|ahan6m>+_$-N zuK8x{#E+x>oBh^?7%-_`2{DFW(5IfxIUSCTtT}jq_lABn|Au~!2aoU~8eH%YI#vBk zhu!Ag-}01gBNTtj*RUBG+wS5`bH5A!>d9ZQfAln~Ut@X!zB_PvQs3FK^_ElaXneWx5l2hwEa&tbvp~wFEeRsU1I}_PA zX6uO<@5AVurNmhzJB4q_A&ntbw*TXoM{M12Ke=Dc{7Em7V>2YX((!P0fPH6-Te!@j z{H9FgC%zi|)*k}Kh1$0?|67o8xNNuHt@*F?XEC zo~rMY4+)%Y@P_O+;ZF9s?H^ZNOiXBe;)~GD@o0GnZywog)>DMH2tK*vLzvu^+{k_G z0gn<}K^{aT|5kqQ=$ecXE-hDm#O_mPgIz+u*AQ=72)%BeY>iXdixT9A=Ue+WGxy@r zakO9XU}MGCtqgM9goo_JS-b=ORRvcnE@s~go%oyYO~}ew(lH)7@=+(1j;46%NOYYIU5lOtpV~QyEhT?N zu?hBI0%uNQQ#v?195|;;6P($J$AA-GVqf7ga1M{bo%LJRS%5L-@<=L-&Cq)PeXKJ= z>oI6uFy;Vb3oxeo8OK=zw$BJryhyUczWYcr5xh&bEn|Lyysyi!HfV3D>^A+sm;2%j ztsoPCh^EY5@_91pql`Wzho&MkWHZY5slhM6 zCeNr%K7z)y3;Xa=x9m!O zf80|xpR<}wS>=2n18w`>j5U=n&Zm#1u5EAl$nFCf$~bI4WF^1L>BIOTF%J*TU`)kL zv-Y(^2Rg%|=BJJyg3QH!3M9U|@rd$MBWv%RwNElEip<5wR=(GC+b^S@e1Q)5O8(2K z#r{@g(E7lL=w)i0T%ttzXT%JZt64{U0{x*p?ng>r z8#R=hA$g-U|2**~s$+v6-x9QgWjei+o90_!A z1fOOe@?il!jbxEuZ<3wm>tf@V@&5zVO@R z5(2Yem0ZgP-fgzL@Y(VHN9PR5wp9g=Y6J^> z%#-pg6cdvkE<_KvAe%(PFMQ9DPlDaZD9I-ua>~fj_3yA2MY}i9ZcC&jEL%_O=OwhO z^;+51YFBHuYWGRnY(eJ18+Mx!2;4!qqv2iJqI;@twCh4=H*WWu)B4>Y!|#63cG797qO3$JsQ=cu&+i-HfCb)xD->3*oTynS8$r_P?fo5!SY^%f4U7Sy+v1~6GT%+IE1H*i~r+D9n zeg6#Y$Sx0@QL?cU-!6;sMX>d|@$0hA@G}S z;@hXP#tw`vlrv>i2j2@{JoaL9E@x5Y5(B3%?705IiAx@vkg<3&QMtItj;#2K*eJaVXbUuse&&*5R z(7a?1o0qFS{b^oK)YoEYL28urdF9SZkKk>F3Pqpc8A9@me2OEfypK3Ks z{SRpH5c`9s^3?et=zzgd&rhspSN* zg2&mHco<(^>-2ZQd!dI|*F{H%eoih8|L6brJN8<&`W5a2zD19ALo)&Dg*KAcN}gs2 z_+!%@7&q(eL3mL9ao}%r`&DlO^fN~A+OdrZLw>U6eS`~dA8p%n0P3<4|5Y3t9lt#$$#&>i$r&i73CEAT;Uqv%@qXR=pq zZ#%Fb%9xb+AYkiR_+t)_fKn_h(|XbGR>cD>~?lF)Kcj zJ#(Tt69c&e8G-G*K04a!FFwM3?dT`vCFr+!2-%g;?>6j_`~mz-=)n z;seUn?|^4(i0draG_dALi-gO2B87-&*VTyK^o2TB~x*Zxy;#x>Nl` z*>|ykr}kf{uidn%b1{}tPTvcNH^lj0IUjIufl*auK}`1ZTe#T$M~9ktsthr358D_JdlCte>9KRP_GxR4W%l5acO<bZxhwwh&YJBH z`C7$m8iR22OvvD9;xHWjn)lI+Ef*X7%*$Bz#LM79{+{roSa0Vj)>Xil@YBh+cHk9` zYQTruzY-h;z(+svl``HHaHi-q!THJe0OuN?HFF90vc7sr ze--kVxY{Fc*9lK~iE8k)4m??3b?}r04ccXIyu`+-UG|qw+0F3#y()WS5~tFywoV17 z9{?t2j&q0X9O=xnU09_vg>$1b>)=VzhQVznx>7VJ9eS3=?b;qrjBbLxPBGSPtDE^z z%v^R;>Ku93Dbm?z$HtVbLaN8CuB&yDo^UBzdx z>&3UWKK&?m4RJ>N`iAG=e{xRjI^@9O>yQ^s47%pqC5O9_6^c3a42s6A^_$o~mSe5H zPkUm0$n-vR`;FMMFX3B`Csu363d)_c0B*IrK z{z2cNUy+B0oglcY{HyQN8lvsXt;&R!vJ>a5A6%oo3h8KFxa~d5#vAs2Gc;}`g2vvb zuN#5wz?sf>txx3MQT9?;urLPjR=J4pt8M({z#AEyOXQDS%l-=8wIljyBStEo6@E&U zKThm{Sl+6It4@#mi0!{|fIHHeGgChIj=<&JldN&Xpc^jm%rkW=gNK~?+bSCsU0k5O zSm=pRFuH#?>$f_~D9pVLyHBx-GU3sAW21MI%f7FgGi_GWKe3PP1=BwgS8P`@f?SK% zSPth6VPCfqH`~)>uYWz#aP|RH=)!J*76?^eJYJVj5gJ>a$?SY>2!YNtv7VQhx z2Z5Egrpp&lj{G37_VP5a;`3!M2w=y6vjyyFC_#@6qsdR562BW<-$XeBzw)UB|EJrF*oVC*AWh^;F*RVU=g;tmAIueUIy#86S4H+m>lZ@=@);SN*c} zQsJHg+@h)Q=-7+Ke?OkDI}8`(&VH4;hrBYtv)0j$+$^#bcT47@{!n|S;A`1*Hs8Rv zHarKVbH*peJVw6Kao6E;6ZbyF-ib*|?heMjS)tfSHL|2*N_2KJXEz$(q7?db@@j{# zN55j9uMtX!UKV@!R(fSm^@!GdSEiJD<;kUEfGam4newOoN7sC2jP+(ug`+EpcdUA4 zi}SsNKA*z|?5RlVN{vx8Ap7G>h8}3kv0HPIYgXba-p81~KJahrRgZr2>dHN?9n!}f zR;aBsai2@vwz_Fcy40&Hy={5*WifS(-d#RcKEDIk2R(4fZs_sAW$4NaQ|j8kbdvXM zyB@`p@keFD2F{Q{@|niCHT*t#Ax}`5nH_GU%}e`b&*BMaB$| zHx-;pe2coZz^xdt$_sAAo5I;nyh&r!yAsRE@i1jdQp$uZpG~JKt2!ZU>t4ncz^>L< zz>6cFt|PXLJt5n>fT!&b@x9RVy_$L!`Dkh_WHMpkb{%EIk#`*ZSvyiV7`MZg- ztt)cliYr*yev9C-nfOZmv-~VM0C(9#dZ5T zO8I~#DDBuxn|Hfy?gH1Q%}=;( z8o1^y7#McWrD)6=L;U7i&JDq*o2Vyyr1JFS?8qEF>)>lW!O2)X(Tk_+xtQ~w^t_*V zoSy7~3F^t7z|nesJ=#A~&t=j63_ZcOksX8ez>#tmj19}DoH@w{?wgq3gT#uo$8I%p zL~}HW_Xn|+a-gjkawZCm=I~BA99k2rxxwlm%l}n3V2>hqY~6Vzx!*FA@dxjUZB)KQ ze#yvqGwo}x0?3qZ+6sbmtH+AB@H>2JY@>BbaAiMj+j_C7|S9P|FP z!$-+e=R6f?K^0H|iYV&<*;g{=D*7;~vaoe-nEa41OL2KRd1-$g|K{ zc6m>ZO<;l}8*Dq?^>=nb&+>r+$O++j&ke%U_(W`!@33g$@BAM_U#X8>{H_{DoYj*z zV~@`Y$9?qoglByAy5EI!@JFK?3r}aSwD99AekBIq_~1v4v;4~$+9$EfYMT|m1D`0L zbs2MpJNDg0++$g}l;?%;PanR>ZfxFO#yqt#BN0O%>_jKahEiLnR1M_O=XM*f`H^^_ zQTjdF|J0jKyF=fea=u}oNA&$k_j@W$?Ue6BU+QPq(yB+*&jIM84BJ6?H}k4J9X@xB zVoCMDnjGe>mN6+8I)BlY4=*JzuVWH>2cW%8@A^BfZ!N#L<9Vx7x}%2tZ0Qc=!fH2Y|C2qd&>uEjBp({&+=umf z(4Z5O%uB2om(d#K9lGdl%>(?f5Bs)K_K9>_^JM%Ee35oy1A;+w9`cRf>jU4KuT;C~ z)eOZxbD4v@#I;2kt(zuWH?&D_NVj8mux7sZP{!&>jsK6dGmnqDI`{u~G6|Wm3Ctv6 zHHo++iP26sfE+8NoLdfs^Ip_PGd^1Gb-uuVAX6EeYInQ~{vz_OBe9wB7bLD|(dON3n zAsE>R{s>oUTwJMPPkM3?df!Dg&@zod<8e4ge!MhTC!7msI>~CrD;%58+2`TdmF^nl z0>5&_3xNiS)`>o~RrJ=2?uge?ztJN0?l|mroM-dF$KoRFxW2K-hONDDmT42aTAJ^u z=nt~oF75BHAY*8Mvp&sb@-raLv*4&b_@{r^Ji)ezzO}y4(fpL3%GLOs-pTs}!9ZN~ zrF)YcCcgsR=a6hDf0fQPPLueo8t#R?fgPj9X)BeDCc>RCe&dsqmpFU-0dtq4k}}(& zX&K~iM^7WX5x#68&81n*DVk;AXJaKyJ1T&3}z?I!naDpB;>%Lhb`@)-Jq2|ck-#*IOjlP%peRG4gvxcL;aObIc zbY(M7%@;kX=A^lJ^U|D_XihzY-#Pc@mEq1Si+O$08fz}vpWa-gi_pDp`5=1hJ=i=P z=CPG|Ja6U^VIJtbz;Ebx^!|Ti9{+4@UW4})KEE-KIlSP!wg-56vFWrHonh_<03S0} zU>0UyX`iw0>XxnMzF{`;Ah<6Ct(m%sJte;s;twv5@w+2f7*!jpzXLd{4avzWCtt2T z!(vJLG;vHe)4!i5&>0WiGIz-(lQ^TP@20`m$e;cuU}VnxnCL^M?uSxFyfC)-(Yi(H4z0XYW1h zyCyg-9ngouK*I)IZ)Uew=Rr}J^{wEFFW91=zHy!^(Vy_LWfpdb3(i< z6F)}AJ_i}A41UqjS>`$?kh^m$e0v!@A^xIRZiWA~D{2yRaBL7(6QUt6ctWBM7ZBnr0jP&54dCQj501elg zb@JW6W|5tpg0H()=l&nYr7=0!F%E;PPqr594~pjt5|449jAM8M;epPl3Ur~`s~0Re zR9}g%r4#-vbRzrdai=K;PR8DZ=XLoBKkcXnpTx88;l3Arm~+L!UOZUYR`%D!XF)48 zmWBQIz*N?Qt7wIX_Zpjca)WomDPVa$u$0W?ho|;{2hV-*h5r}a*I6bUm5o!lZPto$ z=zif^;;n?qTWIW&ylM0au-f-VKdk&d%N4-tO6DJCO~Uwu_~GO)*9n|tzc#VvT$m0f zr%K<$nnjTcue$ZI2d~PeU+faZ26hr%56pvp5z7<*h)ba(TfTQZGFon832XV?S=c8Y zu=a`d=upAWgm|qo>PsdPjoivu&E0QwU5&_#@OA6wpqCas&cRPlJ|T@xMQJ0lVi(vl_RpId>P#GAJ_RkI&fWOUEEjIp(@w>A?qrf2M!s_DCmF}1F@WBQVB zOcNQCVoG%er$^Q97VvN|c{yFLH629$*ZucMM7HL`H2TeG_T&fm(0I5>9+=dPZGw^lPs#BSuQ)PntjKdg8T@ zisOeq3f5O@)+qM+fqEm`Us2kv zvXbp<-1XC0cMWA#?sUp+qt3nzXPRV=Y5bQwAGurF)>=Hnc5p^A{;-Ne z^=o37vWpL3$!+PAXJ1fY>x*EZn>Twm z#@;OnRG`Bkp2+IzOS(VGsFQpb8nJ3UGTrX5^WcUYU?6@=bkM-N>O}6f68q0Q!cMj85#A zn8 zwcDm;pqugRV)9MTPrNop@1_%@D1_Y&c=*qUO|0)H=|{|1kC~hN8DllSbLS?X2)I*KRCGwX!U z$eEUxSQucx4miWj`f04@+y*x6*<|+Dd)&K?PJ9?^xDl9E;G0o{O(jx-9+Uqa_+W_U zi3ibM(Hf1K6|D2%x`VT!%fN?sLy+0p*gNz2&hhx#6X8LDnM8KfgUXv zoOr-nFUC`qS})$FW=+1vdUbI3N9*KYqkCDqk!kBRBDGG|KT7vCzQ{UN;ahhkeM%2j zBm9FmpKtIG-57j#0pn@~XYH7z)5Y$|xa^$|>6LQ9!vcecaoRKMpf&gDZ493UPq6Q5 zc&&wHO&+iH4s$g7^p%r{6BSON12TJX4(m0LJ{Y}M;)mbWeia=HC-U62J)G|jMm=8* z)*!l?J>0>$uJL=i^JxeA>O~vH%LmzS;Bi#zra8SARLqwYn<1-SVS6Mx}MNM zjy`d;Q-}VuRysoISU&`pq#Km3)p4q>GWTtu<+8)kp5fb{DuXvqYumq{=gvenmtCFq zQ+qF$Jtv+JxCc0Y3&H)_ltY%@G8i5QSR;R*8oT(^0OQqIHAanZu(~n$;MjR1`_bok=bCJL=Q6Jd^U_)SdJlR$WE8>K@-F#_ahxeJ%KUF-TImMx=Skj% z9_RbRf_0*wg_C0~TAORv_12%t@0r+> z#|1;{I=PQgenqd56Z_!D#uxIIWH#@&phMUSoVrqSfr;6YxbO>-Cv?w2Hp;w&&I;MV zv3*6yU2&*hd$$3<)-q^_@I(8y%aupwP**y>FCP_alAo~d@9PXQvJw6Q4)i#{Iy`Y@ zZ+$-NEVxQW*_&bG)bz_J_RKw=_BH|EIrP~%bl{x^@nMt6e~f7N9T-ePSRs&4-TT&F}y41xYgs}_m`7X zFh;tuO{}--!}|@&wvD_j0gFp!`miO)(!5Q- z%hl1fOMj{}Kw~g6w@){zalrc-9o-VX{W_&0pH8Vl^LO>Bf`R(<#u8v2Ui;~JF=&X! zBpn^H%1o6DGY(IGbn|Bi*R_42{Xl)=Aa~w5dl$VlXQ2LQuyTXxk9=#|T!c({eA=4o zo)&hm=J(;d(6O3(DMfcw;~!HHwfkTDg7<|l48qF|d`An%#a-ZYvvc~Cc-?jLlGV`C zm1}zHFXiq@!>vP-A59C^HQYK+@@{j{MN{I?@Y?blPbLOh)tHCw@2OW_QKH(5zZpH6 zJ@Dpl4cTgmS5| z*12PCokD!xg6N`kcC2O|o87#2n|Faf?-e)CnQrRM^XI)cCH~kDbUO`mOx_%S-d?ZX zOp|wto5z{jykh873%80{hR@e{rugeloXUH_;lwvwc$zVuPFi1Ib9uWR$I<@s9mUGq zRSsXPwkG-WKI`_?KFh38oi5&pa?lh<5c7%+JuH!tik{`FaLGp76P zI91p2*L|oz{lI-bIRC)Rp}l;{EHlnM{=C1s{k4Zo-e3KBW2XsT&E*ZlOy2wCK@-~z zJ}sIS4}JG+-YtkFf491)UObB#TkW*?im#T5$7n9E7-{NNaF%SRZiUqwH5WbSwp(lS ze@9-I*X~=id(%0l-4@zqKeg*DuSS*(tu2FJb1XhjoE|?NIZQHt3^+(`yJH#tL)t?( zPLBuZzo>O2>sb)ZU_DLxy>7a5gh@XL?6l8JUc>bGx9HF8w|j;p^Vn~V_uyZ|y_HQ< z;BS+6tzR|;UKqQNcs(;$_Mzt0KsmEM*Ni!AeI9c2O?lt?toNr|oNX@e7-!(M&Yx%Z z0r)V%{pl7ro68-=NUj=lgFnyWCTo6-!M{p> zo`;*Q#U^iwKM(ri^>wvB-R^PbcDxz?A~(;#>z60m@w@v@d+2$t-MlF_?@#2V_SO9}OTlLi;$=K9jUCmeRzUs`g`>HAL@O`CuRZ;Gf z_SG-xL;30Z>N$UU+P>Q2&r91^Kl10L;q3R_yidZ}jsChmoPF4zo`!qt{dsA)x6YrJ zhI{w=^In{3@$#amS(Cf{d2hLSQ!I~gt3NLdFK_VYrQv0zKQ9e0m-zG2@bW5uUK(C5 z^yj7F<@w}o^YGG{6<=|ckykmpPBC-T88VkLsk08WSm?kbNBOV#ts%IB=@$(KIN+<}9iEGR;6 zfnI~Nu~vGE+qoN6?B*A``9;3`d7jUJeVNbU<|IZ=n0L|QMuf8Hynr|WW^#ILUi8XK78O6P83SbzjU$;QMGkp@U1d$!90@WoLSER>+-StZ7endADF3K&~t< zlwL>7MsJD&7DW%R%IcTUr#eBTJnWViLVznC_vSQ|4(;FB9D7?XnQuKYpZ8ZmJF zp9S!^j9V}id<9#Lb-~Ib$1DisMg?El%;fXB6*vtREAHddGR1S(I@g{NU&7myZ+)BC zB=GXuN7D7HJ;}UpGRE!s){dF3<4}3wqi{rHVQ#fW26n{NqrUuCj_rqCtz>WQt)dj{ z`0c`OH#W)&-bhP_-BG~pT-p_k6tl7fTthFm>t5g!X5Jp&71JO5Cc48=Vk7VoTq+0R zU3&`efQ`nN@(E7!H~DcIY~r5)n+KT3*In3r0v%4QxxkBc%$*>96GvcYHM(+Qj3qTE zt=%v_#Q0jUILoz_WpmI?Ek?&vp?!ic&nCWQ|IoaRpE>`lkj*$RBZK*)rTb*NxMB3*T5Geu*-r8Z zXnzAVwKEuN8G}!d$|>K!w>5`!x-Qyj?E>LM!`^@G{5V8kgSB6XuWdPN=BLxrBW?xG z(y7*P2Rnq0FXhKWdROp@QsY|%ZP~&3EC00|>8XI>edtwWA-F6NGuXKT#g!x?|Xk=?yLPE#**h57H2y%74^67t;(D`1brlJCr6}FnAysHKNlLjJ&%s9n4qo5$)~b?GyPy%HMR^ zG}6F3;Slt1k&(e88CD*w&4_>F{e$%ye-SiK_fR}oz5kK%Yc_Y)UjM+(-|U$IelLc1 z5sh?d1$J8OjSa*Qmu`D2cx3e2%&i9B2jQUnA_A=EGS2pwNMA;}@LYSl6MJ`mTamN5W#z+6I1{q_=mD`u7-Z@qPR z1)G!33kO^~^*myG0Q=*C`CB*qbABmhNB8kWUc0itZK3Vw!3VY9Ma+`t58U-pJ~2y5 zi3Ri~u`!-!jSBIO9sqlaFmE zJ-6p5!;acqx2p`UHFuz6n=^H;3-!-7_Gr%44$eD2Eqr6Qecw;( zm51HsB+3l*iI)EmF}!{IV$**0)9({4y8J#ovv@x7t&)|9nb3T1?Md;XyR6P%bj9N( z?w^nElwEIl%5XwFb`IxtNx+$w1E1x|36b7`{dhd3!B3Z;d>0#(%SWc@+kcY=9W_2U z9xwDG+3T@0YpmYb43F)OPh)!@{1d)j%lJg6HMYUVHJ5Su`Ml3RIyj$qHGAi?xt7oK z!)vg4JUPfbelW;9?)o?8G3}qsV@cXPPWXg*lrWE|I}g73n_>g|j7RWZ>f+#9t}1Y5&qJY?MQqdRAm(mk)6V z)0~xN{bi4?p?}E*^3UmBkn;6xcDgg-KUf;5`zCu`^z1Th*x!UMysh(&v$>7)u8qCg z2CXq?_D!5ijB7h(YS`bpCl-ZASbz@}ahh&gB09slEt{om$(PbzE;fJBOSRYNwkO)< zZ%^;?sn2To1@(zO!}RI#Qmv|M{3`Q|U*%(68Fe)}uU>=3PPaaO--YkBG&7v|^Oiu} z@r=QnOEqV@X_vECb4j&Je~lUP*R<{4PrIU5g8cw~#r5BeF^=uPN@GlgorR3&;BnTs(X?A(+r5A`)rR;>=!~_c7TNoTrd*XRSI$|Vvq}E5`H44( z`85lkN@rZ#H~W3t7eOEDjBk6y__qH&iXZtmt-s0sY$y506Ef;bsVCont_=g~HP`)C z{n&aP)a%$_>%B^yQ>bI^!EQ{e^WV14R&akCb)1d1PODp|gP4S&$J6Q@=I^VZ-zUS6aJk!t<1L`!_4b3$3>7>pNRObm>=V7-_ zkLvt5txnX|*+iX*IBPRPun`HsM9eFUk>5W33d&oe|V@N zP}hwvqNUu4_hmaRI=jYZJEOJF+PFhqjNDWZ3@yJ8|C&bdLU)DC8=Rzd;cxOX{xqRK z+}=%mjM+OBhaUWj+!SkC8@&6eIp{Bix09$7xoK-Et%yCfQ8*0_Zp_HvS!KS*yZ>m8GF`M=nHH7D=@?JS+Z^#^kPnX@gi*e|Osut=0Kc$(y=rBjmP$4}5H)o zobu0;X4ZU0Kc4?L+kaEi?=inRc`97uVu%^3rFvVMbp0dU6{i*=_B=i;eaEA>XhhAjk zw$z|E5wFsSTvP4JFq;mOVZw=;t9$FKT^VN6VKNMQGUdB6%%;O+m~i5D@+H6j?N}?r zG>jQch6yMBgK`FEuqo_g|LuD#(#V7FOt}g&Lw?ZUSDP}cIaY`n$z{0+@D{xh`H+R$W5$gCGTmd zZW+I4uxF~CvG@MWelq-8*zjws;UTM@vHZgg@DejAYxd7i2k;!Vbyr!QL+9}=)M@ys zt#b`^{C+f}erx?N# z3io>2*kE<4@OA&~OwV3p@7nBN+V9t_IvzdLS_o#|UY)^u=b#7O z5p>X_5#tbilzcUxwI9ZQUC!QI1-@-!Tru`0XVPZv(EvDJh~6~Co4fngp)GiwtxWzGJZbBJfmxu=|(#?#H+>F4E71zoCOR_Bdn<=}1em zZd^a7EXKXojj6b4>2*2=)@j)hEQ!v^y78k=tFvuj9otX!z<#VPZs3}Fd)}_8;*VH6 zQsbH4tnEXM`sqM;#hco$uoKwG5K0J}hA9HyBzb4;X z)220_PsJhjfESIgVjyX86B6EEogc)xC;_s$_ry=wxp3p7h_29J1?;Ai#&^4JB$ zDwYmM_lmy!)mZn1V^VrGY<)Hs*rC7n)l1$JKbCLt%*1j+za$$&DvlHM*2Jv!_MY&0 z%Mj<{%UPR^$lb#EPR^?u$==vpYM_}pz(;zjBKFRs#qc@&7mwCJx%Bn4`y-NgW{6YQ z4culi);@H#A%5=&)^B*J+)38pGws1FgSFd%T%oy2KVHrG`+?EjTc3A(-zki)Y;0m8 zbE{)a(&KkP!=%Sw!Wd|)UA`aNIhWMeSoonX`Vu_a=r5Nsc>VeNDuSl^`?7ZhbiYdd z<-@0@@ux2Y;&V?8MofRMj^6xsb@4N-?z9MR&DUby!=9 zY~DH_GVlv5=B>j*?BI9LAfB%&cWV3=x7;V#z?-#CI@nVw+(9ny%yyE0DdD_<)`^B{ zpS{E0%Z2v~fhVGE+M`{=oaEcAt-WI!POO0s)IGEJUHYawrW-PS^v!2~ErY%dW}nu+ zQTs#C`D!i;n9ILA_8{B@2CE z|K8PoZ`L3x_*>r{>B3##4%PylLS5xZWZx0a)N^_Nt&OwA$T6&$c+?flbrtajw2p$Q z)=KzL%13s%EcUp$d&63-;J#8R`$4)w_Hw(m%jYFNChydD!6$qe_Cp)CVb>x6oYBGU z_)O5mukE6J@pvAeDq5xem(HINH^jtre^>cA$ieWHm8w^ydyQ6i{wC*h<57wmZhdc7 zGuF%;XUy-5@NeMWQt?o|0~twFtm-lJT=~-POMhs_ZS?ASi4lysVwf{SbA3?npMg7< zzrwwC##(wHyYww&g*@oa@A>Y_i0qV|u1`8m=s=frn&5X5c%B+2X8IAxsifO6)!vFf^rddZuYhdQ|y|glX&Bf3|$6 zfk$z+k>Q_lVUdEdNHeXA-?O}R@&?wZ@;=vx7Ce$~dXr*r zxxVQJr}0fcnYFH#MmFyYg!wGGX52xsza6spH>YU_^ z)j4U>Ib)^cLbj>Jj@>-e^~01M`v;`m&zb7kv*Ar{uHmh0*|O8^lh9OiP9DV?mvaYC z_#fb`lP>9{^Lp!V5uJg?>8!MTer{sfg~7T_q>BgKdKeEFNt}H-{KX})mD;Cm+-ZB| z=EMCN$DP%0WBxVytDs#=m~$nxs~A{FN9fs28i0x4pYbp6d;X05cha@D)Ax|(rg0B8 zxAn~J8_dDur*-CQZ%p&et@^OJg%cxvbF0yPy+QOay>}u5ykPuVY8AuJ<3AeL6m+kH zP8U1SD$;ev1$3@~cRBDLtkd!xoQpxy^gjemRQ&e&
GL$VMesRCb4WlgXro;b|!U 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

j8V?50E$3g8(E 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 z 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ℜ=oZZ&-60BEPOT>&4b}S&f<6 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

u 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

36CQ-Hj|i`eEwQz;Zb`^ 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 }_j<}vHIPE!=NgHb@`B7n){K6OqDTaYA$5?N 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

y~6 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 z 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 bt6;+ht*~hA_19<{3tYuTWo2@;JvR71PvR$B literal 0 HcmV?d00001 diff --git a/clangarm64/bin/typeprof b/clangarm64/bin/typeprof new file mode 100644 index 00000000000..827fd38b372 --- /dev/null +++ b/clangarm64/bin/typeprof @@ -0,0 +1,37 @@ +:""||{ ""=> %q<-*- ruby -*- +@"%~dp0ruby" -x "%~f0" %* +@exit /b %ERRORLEVEL% +};{ # +bindir="${0%/*}" # +exec "$bindir/ruby" "-x" "$0" "$@" # +>, +} +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'typeprof' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +Gem.use_gemdeps + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('typeprof', 'typeprof', version) +else +gem "typeprof", version +load Gem.bin_path("typeprof", "typeprof", version) +end diff --git a/clangarm64/bin/typeprof.bat b/clangarm64/bin/typeprof.bat new file mode 100644 index 00000000000..ebb3480b5eb --- /dev/null +++ b/clangarm64/bin/typeprof.bat @@ -0,0 +1,2 @@ +@ECHO OFF +@"%~dp0ruby.exe" "%~dpn0" %* diff --git a/clangarm64/include/dbm.h b/clangarm64/include/dbm.h new file mode 100644 index 00000000000..002e4d4ebe0 --- /dev/null +++ b/clangarm64/include/dbm.h @@ -0,0 +1,38 @@ +/* dbm.h - The include file for dbm users. */ + +/* This file is part of GDBM, the GNU data base manager, by Philip A. Nelson. + Copyright (C) 1990-2011, 2017-2020 Free Software Foundation, Inc. + + GDBM is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GDBM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GDBM. If not, see . + + You may contact the author by: + e-mail: phil@cs.wwu.edu + us-mail: Philip A. Nelson + Computer Science Department + Western Washington University + Bellingham, WA 98226 + +*************************************************************************/ + +#include + +/* These are the routines in dbm. */ + +extern int dbminit (char *file); +extern datum fetch (datum key); +extern int store (datum key, datum content); +extern int delete (datum key); +extern datum firstkey (void); +extern datum nextkey (datum key); +extern int dbmclose (void); diff --git a/clangarm64/include/gdbm.h b/clangarm64/include/gdbm.h new file mode 100644 index 00000000000..c933c1fa4ed --- /dev/null +++ b/clangarm64/include/gdbm.h @@ -0,0 +1,285 @@ +/* gdbm.h - The include file for dbm users. -*- c -*- */ + +/* This file is part of GDBM, the GNU data base manager, by Philip A. Nelson. + Copyright (C) 1990-1991, 1993, 2011, 2016-2020 Free Software + Foundation, Inc. + + GDBM is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GDBM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GDBM. If not, see . + + You may contact the author by: + e-mail: phil@cs.wwu.edu + us-mail: Philip A. Nelson + Computer Science Department + Western Washington University + Bellingham, WA 98226 + +*************************************************************************/ + +/* Protection for multiple includes. */ +#ifndef _GDBM_H_ +# define _GDBM_H_ + +# include + +/* GDBM C++ support */ +# if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +# endif + +/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who + can create the database. */ +# define GDBM_READER 0 /* A reader. */ +# define GDBM_WRITER 1 /* A writer. */ +# define GDBM_WRCREAT 2 /* A writer. Create the db if needed. */ +# define GDBM_NEWDB 3 /* A writer. Always create a new db. */ +# define GDBM_OPENMASK 7 /* Mask for the above. */ + +# define GDBM_FAST 0x010 /* Write fast! => No fsyncs. OBSOLETE. */ +# define GDBM_SYNC 0x020 /* Sync operations to the disk. */ +# define GDBM_NOLOCK 0x040 /* Don't do file locking operations. */ +# define GDBM_NOMMAP 0x080 /* Don't use mmap(). */ +# define GDBM_CLOEXEC 0x100 /* Close the underlying fd on exec(3) */ +# define GDBM_BSEXACT 0x200 /* Don't adjust block_size. Bail out with + GDBM_BLOCK_SIZE_ERROR error if unable to + set it. */ +# define GDBM_CLOERROR 0x400 /* Only for gdbm_fd_open: close fd on error. */ + +/* Parameters to gdbm_store for simple insertion or replacement in the + case that the key is already in the database. */ +# define GDBM_INSERT 0 /* Never replace old data with new. */ +# define GDBM_REPLACE 1 /* Always replace old data with new. */ + +/* Parameters to gdbm_setopt, specifing the type of operation to perform. */ +# define GDBM_SETCACHESIZE 1 /* Set the cache size. */ +# define GDBM_FASTMODE 2 /* Toggle fast mode. OBSOLETE. */ +# define GDBM_SETSYNCMODE 3 /* Turn on or off sync operations. */ +# define GDBM_SETCENTFREE 4 /* Keep all free blocks in the header. */ +# define GDBM_SETCOALESCEBLKS 5 /* Attempt to coalesce free blocks. */ +# define GDBM_SETMAXMAPSIZE 6 /* Set maximum mapped memory size */ +# define GDBM_SETMMAP 7 /* Toggle mmap mode */ + +/* Compatibility defines: */ +# define GDBM_CACHESIZE GDBM_SETCACHESIZE +# define GDBM_SYNCMODE GDBM_SETSYNCMODE +# define GDBM_CENTFREE GDBM_SETCENTFREE +# define GDBM_COALESCEBLKS GDBM_SETCOALESCEBLKS + +# define GDBM_GETFLAGS 8 /* Get gdbm_open flags */ +# define GDBM_GETMMAP 9 /* Get mmap status */ +# define GDBM_GETCACHESIZE 10 /* Get current cache side */ +# define GDBM_GETSYNCMODE 11 /* Get synch mode */ +# define GDBM_GETCENTFREE 12 /* Get "centfree" status */ +# define GDBM_GETCOALESCEBLKS 13 /* Get free block coalesce status */ +# define GDBM_GETMAXMAPSIZE 14 /* Get maximum mapped memory size */ +# define GDBM_GETDBNAME 15 /* Return database file name */ +# define GDBM_GETBLOCKSIZE 16 /* Return block size */ + +typedef unsigned long long int gdbm_count_t; + +/* The data and key structure. */ +typedef struct +{ + char *dptr; + int dsize; +} datum; + + +/* A pointer to the GDBM file. */ +typedef struct gdbm_file_info *GDBM_FILE; + +/* External variable, the gdbm build release string. */ +extern const char *gdbm_version; + +# define GDBM_VERSION_MAJOR 1 +# define GDBM_VERSION_MINOR 19 +# define GDBM_VERSION_PATCH 0 + +extern int const gdbm_version_number[3]; + +/* GDBM external functions. */ + +extern GDBM_FILE gdbm_fd_open (int fd, const char *file_name, int block_size, + int flags, void (*fatal_func) (const char *)); +extern GDBM_FILE gdbm_open (const char *, int, int, int, + void (*)(const char *)); +extern int gdbm_close (GDBM_FILE); +extern int gdbm_store (GDBM_FILE, datum, datum, int); +extern datum gdbm_fetch (GDBM_FILE, datum); +extern int gdbm_delete (GDBM_FILE, datum); +extern datum gdbm_firstkey (GDBM_FILE); +extern datum gdbm_nextkey (GDBM_FILE, datum); +extern int gdbm_reorganize (GDBM_FILE); + +extern int gdbm_sync (GDBM_FILE); +extern int gdbm_exists (GDBM_FILE, datum); +extern int gdbm_setopt (GDBM_FILE, int, void *, int); +extern int gdbm_fdesc (GDBM_FILE); + +extern int gdbm_export (GDBM_FILE, const char *, int, int); +extern int gdbm_export_to_file (GDBM_FILE dbf, FILE *fp); + +extern int gdbm_import (GDBM_FILE, const char *, int); +extern int gdbm_import_from_file (GDBM_FILE dbf, FILE *fp, int flag); + +extern int gdbm_count (GDBM_FILE dbf, gdbm_count_t *pcount); + +typedef struct gdbm_recovery_s +{ + /* Input members. + These are initialized before call to gdbm_recover. The flags argument + specifies which of them are initialized. */ + void (*errfun) (void *data, char const *fmt, ...); + void *data; + + size_t max_failed_keys; + size_t max_failed_buckets; + size_t max_failures; + + /* Output members. + The gdbm_recover function fills these before returning. */ + size_t recovered_keys; + size_t recovered_buckets; + size_t failed_keys; + size_t failed_buckets; + size_t duplicate_keys; + char *backup_name; +} gdbm_recovery; + +#define GDBM_RCVR_DEFAULT 0x00 /* Default settings */ +#define GDBM_RCVR_ERRFUN 0x01 /* errfun is initialized */ +#define GDBM_RCVR_MAX_FAILED_KEYS 0x02 /* max_failed_keys is initialized */ +#define GDBM_RCVR_MAX_FAILED_BUCKETS 0x04 /* max_failed_buckets is initialized */ +#define GDBM_RCVR_MAX_FAILURES 0x08 /* max_failures is initialized */ +#define GDBM_RCVR_BACKUP 0x10 /* Keep backup copy of the + original database on success */ +#define GDBM_RCVR_FORCE 0x20 /* Force recovery by skipping the + check pass */ + +extern int gdbm_recover (GDBM_FILE dbf, gdbm_recovery *rcvr, int flags); + + +#define GDBM_DUMP_FMT_BINARY 0 +#define GDBM_DUMP_FMT_ASCII 1 + +#define GDBM_META_MASK_MODE 0x01 +#define GDBM_META_MASK_OWNER 0x02 + +extern int gdbm_dump (GDBM_FILE, const char *, int fmt, int open_flags, + int mode); +extern int gdbm_dump_to_file (GDBM_FILE, FILE *, int fmt); + +extern int gdbm_load (GDBM_FILE *, const char *, int replace, + int meta_flags, + unsigned long *line); +extern int gdbm_load_from_file (GDBM_FILE *, FILE *, int replace, + int meta_flags, + unsigned long *line); + +extern int gdbm_copy_meta (GDBM_FILE dst, GDBM_FILE src); + +# define GDBM_NO_ERROR 0 +# define GDBM_MALLOC_ERROR 1 +# define GDBM_BLOCK_SIZE_ERROR 2 +# define GDBM_FILE_OPEN_ERROR 3 +# define GDBM_FILE_WRITE_ERROR 4 +# define GDBM_FILE_SEEK_ERROR 5 +# define GDBM_FILE_READ_ERROR 6 +# define GDBM_BAD_MAGIC_NUMBER 7 +# define GDBM_EMPTY_DATABASE 8 +# define GDBM_CANT_BE_READER 9 +# define GDBM_CANT_BE_WRITER 10 +# define GDBM_READER_CANT_DELETE 11 +# define GDBM_READER_CANT_STORE 12 +# define GDBM_READER_CANT_REORGANIZE 13 +# define GDBM_UNKNOWN_ERROR 14 +# define GDBM_ITEM_NOT_FOUND 15 +# define GDBM_REORGANIZE_FAILED 16 +# define GDBM_CANNOT_REPLACE 17 +# define GDBM_ILLEGAL_DATA 18 +# define GDBM_OPT_ALREADY_SET 19 +# define GDBM_OPT_ILLEGAL 20 +# define GDBM_BYTE_SWAPPED 21 +# define GDBM_BAD_FILE_OFFSET 22 +# define GDBM_BAD_OPEN_FLAGS 23 +# define GDBM_FILE_STAT_ERROR 24 +# define GDBM_FILE_EOF 25 +# define GDBM_NO_DBNAME 26 +# define GDBM_ERR_FILE_OWNER 27 +# define GDBM_ERR_FILE_MODE 28 +# define GDBM_NEED_RECOVERY 29 +# define GDBM_BACKUP_FAILED 30 +# define GDBM_DIR_OVERFLOW 31 +# define GDBM_BAD_BUCKET 32 +# define GDBM_BAD_HEADER 33 +# define GDBM_BAD_AVAIL 34 +# define GDBM_BAD_HASH_TABLE 35 +# define GDBM_BAD_DIR_ENTRY 36 +# define GDBM_FILE_CLOSE_ERROR 37 +# define GDBM_FILE_SYNC_ERROR 38 +# define GDBM_FILE_TRUNCATE_ERROR 39 + +# define _GDBM_MIN_ERRNO 0 +# define _GDBM_MAX_ERRNO GDBM_FILE_TRUNCATE_ERROR + +/* This one was never used and will be removed in the future */ +# define GDBM_UNKNOWN_UPDATE GDBM_UNKNOWN_ERROR + +typedef int gdbm_error; +extern int *gdbm_errno_location (void); +#define gdbm_errno (*gdbm_errno_location ()) +extern const char * const gdbm_errlist[]; +extern int const gdbm_syserr[]; + +extern gdbm_error gdbm_last_errno (GDBM_FILE dbf); +extern int gdbm_last_syserr (GDBM_FILE dbf); +extern void gdbm_set_errno (GDBM_FILE dbf, gdbm_error ec, int fatal); +extern void gdbm_clear_error (GDBM_FILE dbf); +extern int gdbm_needs_recovery (GDBM_FILE dbf); +extern int gdbm_check_syserr (gdbm_error n); + +/* extra prototypes */ + +extern const char *gdbm_strerror (gdbm_error); +extern const char *gdbm_db_strerror (GDBM_FILE dbf); + +extern int gdbm_version_cmp (int const a[], int const b[]); + +#if 0 +# define GDBM_DEBUG_ENABLE 1 + +typedef void (*gdbm_debug_printer_t) (char const *, ...); +extern gdbm_debug_printer_t gdbm_debug_printer; +extern int gdbm_debug_flags; + +# define GDBM_DEBUG_ERR 0x00000001 +# define GDBM_DEBUG_OPEN 0x00000002 +# define GDBM_DEBUG_READ 0x00000004 +# define GDBM_DEBUG_STORE 0x00000008 +# define GDBM_DEBUG_LOOKUP 0x00000010 + +# define GDBM_DEBUG_ALL 0xffffffff + +extern int gdbm_debug_token (char const *tok); +extern void gdbm_debug_parse_state (int (*f) (void *, int, char const *), + void *d); + +extern void gdbm_debug_datum (datum dat, char const *pfx); + +#endif + +# if defined(__cplusplus) || defined(c_plusplus) +} +# endif + +#endif diff --git a/clangarm64/include/ndbm.h b/clangarm64/include/ndbm.h new file mode 100644 index 00000000000..2d316e4e575 --- /dev/null +++ b/clangarm64/include/ndbm.h @@ -0,0 +1,66 @@ +/* ndbm.h - The include file for ndbm users. */ + +/* This file is part of GDBM, the GNU data base manager, by Philip A. Nelson. + Copyright (C) 1990-2011, 2017-2020 Free Software Foundation, Inc. + + GDBM is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GDBM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GDBM. If not, see . + + You may contact the author by: + e-mail: phil@cs.wwu.edu + us-mail: Philip A. Nelson + Computer Science Department + Western Washington University + Bellingham, WA 98226 + +*************************************************************************/ + +#include + +/* Parameters to dbm_store for simple insertion or replacement. */ +#define DBM_INSERT GDBM_INSERT +#define DBM_REPLACE GDBM_REPLACE + +/* The file information header. */ +typedef struct +{ + GDBM_FILE file; /* Actual gdbm file (held in the .pag file */ + int dirfd; /* Descriptor of the .dir file */ + datum _dbm_memory; /* Keeps the last returned key */ + char *_dbm_fetch_val; /* Keeps the dptr of the last fetched datum */ + gdbm_error _dbm_errno; /* Error code from the last failed call */ +} DBM; + +/* Used internally by the library */ +#define __gdbm_error_to_ndbm(dbm) \ + do \ + { \ + if (gdbm_errno && gdbm_errno != GDBM_ITEM_NOT_FOUND) \ + (dbm)->_dbm_errno = gdbm_errno; \ + } \ + while (0) + +/* These are the routines */ + +extern DBM *dbm_open (char *file, int flags, int mode); +extern void dbm_close (DBM *dbf); +extern datum dbm_fetch (DBM *dbf, datum key); +extern int dbm_store (DBM *dbf, datum key, datum content, int flags); +extern int dbm_delete (DBM *dbf, datum key); +extern datum dbm_firstkey (DBM *dbf); +extern datum dbm_nextkey (DBM *dbf); +extern int dbm_error (DBM *dbf); +extern void dbm_clearerr (DBM *dbf); +extern int dbm_dirfno (DBM *dbf); +extern int dbm_pagfno (DBM *dbf); +extern int dbm_rdonly (DBM *dbf); diff --git a/clangarm64/include/pdcurses.h b/clangarm64/include/pdcurses.h new file mode 100644 index 00000000000..328e49f6938 --- /dev/null +++ b/clangarm64/include/pdcurses.h @@ -0,0 +1,5 @@ +/* if you want to use the DLL one: #define PDC_DLL_BUILD 1 */ +/* if you want to use ncurses compatible mouse: #define PDC_NCMOUSE 1 */ +#define PDC_WIDE 1 +#define PDC_FORCE_UTF8 1 +#include "pdcurses/curses.h" diff --git a/clangarm64/include/pdcurses/curses.h b/clangarm64/include/pdcurses/curses.h new file mode 100644 index 00000000000..b0750865039 --- /dev/null +++ b/clangarm64/include/pdcurses/curses.h @@ -0,0 +1,1902 @@ +/*----------------------------------------------------------------------* + * PDCursesMod * + *----------------------------------------------------------------------*/ + +#ifndef __PDCURSES__ +#define __PDCURSES__ 1 +#define __PDCURSESMOD__ 1 + +/*man-start************************************************************** + +Define before inclusion (only those needed): + + XCURSES if building / built for X11 + PDC_RGB if you want to use RGB color definitions + (Red = 1, Green = 2, Blue = 4) instead of BGR + PDC_WIDE if building / built with wide-character support + PDC_FORCE_UTF8 if forcing use of UTF8 (implies PDC_WIDE) + PDC_DLL_BUILD if building / built as a Windows DLL + PDC_NCMOUSE to use the ncurses mouse API instead + of PDCurses' traditional mouse API + +Defined by this header: + + PDCURSES PDCurses-only features are available + PDC_BUILD API build version + PDC_VER_MAJOR major version number + PDC_VER_MINOR minor version number + PDC_VER_CHANGE version change number + PDC_VER_YEAR year of version + PDC_VER_MONTH month of version + PDC_VER_DAY day of month of version + PDC_VERDOT version string + +**man-end****************************************************************/ + +#define PDCURSES 1 +#define PDC_BUILD (PDC_VER_MAJOR*1000 + PDC_VER_MINOR *100 + PDC_VER_CHANGE) + /* NOTE : For version changes that are not backward compatible, */ + /* the 'endwin_*' #defines below should be updated. */ +#define PDC_VER_MAJOR 4 +#define PDC_VER_MINOR 4 +#define PDC_VER_CHANGE 0 +#define PDC_VER_YEAR 2023 +#define PDC_VER_MONTH 11 +#define PDC_VER_DAY 30 + +#define PDC_STRINGIZE( x) #x +#define PDC_stringize( x) PDC_STRINGIZE( x) + +#define PDC_VERDOT PDC_stringize( PDC_VER_MAJOR) "." \ + PDC_stringize( PDC_VER_MINOR) "." \ + PDC_stringize( PDC_VER_CHANGE) + +#if PDC_VER_MONTH < 10 +#define PDC_VER_YMD PDC_stringize( PDC_VER_YEAR) "-" \ + "0" PDC_stringize( PDC_VER_MONTH) "-" \ + PDC_stringize( PDC_VER_DAY) +#else +#define PDC_VER_YMD PDC_stringize( PDC_VER_YEAR) "-" \ + PDC_stringize( PDC_VER_MONTH) "-" \ + PDC_stringize( PDC_VER_DAY) +#endif + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +# define PDC_99 1 +#endif + +#if defined(__cplusplus) && __cplusplus >= 199711L +# define PDC_PP98 1 +#endif + +/*----------------------------------------------------------------------*/ + +#include +#include +#include + +#if defined( PDC_FORCE_UTF8) && !defined( PDC_WIDE) + #define PDC_WIDE 1 +#endif + +#ifdef PDC_WIDE +# include +#endif + +#if defined(PDC_99) && !defined(__bool_true_false_are_defined) +# include +#endif + +#ifdef __cplusplus +extern "C" +{ +# ifndef PDC_PP98 +# define bool _bool +# endif +#endif + +#ifdef NO_STDINT_H + #define uint64_t unsigned __int64 + #define uint32_t unsigned long + #define uint16_t unsigned short + #define int32_t long + #define int16_t short +#else + #include + #ifdef __DMC__ + #define uint64_t unsigned long long + #endif +#endif + +/*---------------------------------------------------------------------- + * + * Constants and Types + * + */ + +#undef FALSE +#define FALSE 0 + +#undef TRUE +#define TRUE 1 + +#undef ERR +#define ERR (-1) + +#undef OK +#define OK 0 + +#if !defined(PDC_PP98) && !defined(__bool_true_false_are_defined) +typedef unsigned char bool; +#endif + +#if defined( CHTYPE_32) + typedef uint32_t chtype; /* chtypes will be 32 bits */ + typedef uint32_t mmask_t; +#else + typedef uint64_t chtype; /* chtypes will be 64 bits */ + typedef uint64_t mmask_t; + #define PDC_LONG_MMASK + #ifdef PDC_WIDE + #define USING_COMBINING_CHARACTER_SCHEME + #endif +#endif + +#ifdef PDC_WIDE +typedef chtype cchar_t; +#endif + +typedef chtype attr_t; + +/*---------------------------------------------------------------------- + * + * Version Info + * + */ + +enum PDC_port +{ + PDC_PORT_X11 = 0, + PDC_PORT_WINCON = 1, + PDC_PORT_WINGUI = 2, + PDC_PORT_DOS = 3, + PDC_PORT_OS2 = 4, + PDC_PORT_SDL1 = 5, + PDC_PORT_SDL2 = 6, + PDC_PORT_VT = 7, + PDC_PORT_DOSVGA = 8, + PDC_PORT_PLAN9 = 9, + PDC_PORT_LINUX_FB = 10, + PDC_PORT_OPENGL = 11 +}; + +/* Use this structure with PDC_get_version() for run-time info about the + way the library was built, in case it doesn't match the header. */ + +typedef struct +{ + short flags; /* flags OR'd together (see below) */ + short build; /* PDC_BUILD at compile time */ + unsigned char major; /* PDC_VER_MAJOR */ + unsigned char minor; /* PDC_VER_MINOR */ + unsigned char change; /* PDC_VER_CHANGE */ + unsigned char csize; /* sizeof chtype */ + unsigned char bsize; /* sizeof bool */ + enum PDC_port port; +} PDC_VERSION; + +enum +{ + PDC_VFLAG_DEBUG = 1, /* set if built with -DPDCDEBUG */ + PDC_VFLAG_WIDE = 2, /* -DPDC_WIDE */ + PDC_VFLAG_UTF8 = 4, /* -DPDC_FORCE_UTF8 */ + PDC_VFLAG_DLL = 8, /* -DPDC_DLL_BUILD */ + PDC_VFLAG_RGB = 16 /* -DPDC_RGB */ +}; + +/*---------------------------------------------------------------------- + * + * Mouse Interface -- SYSVR4, with extensions + * + */ + +#define PDC_MAX_MOUSE_BUTTONS 9 + +typedef struct +{ + int x; /* absolute column, 0 based, measured in characters */ + int y; /* absolute row, 0 based, measured in characters */ + short button[PDC_MAX_MOUSE_BUTTONS]; /* state of each button */ + int changes; /* flags indicating what has changed with the mouse */ +} MOUSE_STATUS; + +#define BUTTON_RELEASED 0x0000 +#define BUTTON_PRESSED 0x0001 +#define BUTTON_CLICKED 0x0002 +#define BUTTON_DOUBLE_CLICKED 0x0003 +#define BUTTON_TRIPLE_CLICKED 0x0004 +#define BUTTON_MOVED 0x0005 /* PDCurses */ +#define WHEEL_SCROLLED 0x0006 /* PDCurses */ +#define BUTTON_ACTION_MASK 0x0007 /* PDCurses */ + +#define PDC_BUTTON_SHIFT 0x0008 /* PDCurses */ +#define PDC_BUTTON_CONTROL 0x0010 /* PDCurses */ +#define PDC_BUTTON_ALT 0x0020 /* PDCurses */ +#define BUTTON_MODIFIER_MASK 0x0038 /* PDCurses */ + +#define MOUSE_X_POS (Mouse_status.x) +#define MOUSE_Y_POS (Mouse_status.y) + +/* + * Bits associated with the .changes field: + * 3 2 1 0 + * 210987654321098765432109876543210 + * 1 <- button 1 has changed 0 + * 10 <- button 2 has changed 1 + * 100 <- button 3 has changed 2 + * 1000 <- mouse has moved 3 + * (Not actually used!) 10000 <- mouse position report 4 + * 100000 <- mouse wheel up 5 + * 1000000 <- mouse wheel down 6 + * 10000000 <- mouse wheel left 7 + * 100000000 <- mouse wheel right 8 + * (Buttons 4 and up are 1000000000 <- button 4 has changed 9 + * PDCursesMod-only, 10000000000 <- button 5 has changed 10 + * and only 4 & 5 are 100000000000 <- button 6 has changed 11 + * currently used) 1000000000000 <- button 7 has changed 12 + * 10000000000000 <- button 8 has changed 13 + * 100000000000000 <- button 9 has changed 14 + */ + +#define PDC_MOUSE_MOVED 0x0008 +#define PDC_MOUSE_UNUSED_BIT 0x0010 +#define PDC_MOUSE_WHEEL_UP 0x0020 +#define PDC_MOUSE_WHEEL_DOWN 0x0040 +#define PDC_MOUSE_WHEEL_LEFT 0x0080 +#define PDC_MOUSE_WHEEL_RIGHT 0x0100 + +#define A_BUTTON_CHANGED (Mouse_status.changes & 7) +#define MOUSE_MOVED (Mouse_status.changes & PDC_MOUSE_MOVED) +#define BUTTON_CHANGED(x) (Mouse_status.changes & (1 << ((x) - ((x)<4 ? 1 : -5)))) +#define BUTTON_STATUS(x) (Mouse_status.button[(x) - 1]) +#define MOUSE_WHEEL_UP (Mouse_status.changes & PDC_MOUSE_WHEEL_UP) +#define MOUSE_WHEEL_DOWN (Mouse_status.changes & PDC_MOUSE_WHEEL_DOWN) +#define MOUSE_WHEEL_LEFT (Mouse_status.changes & PDC_MOUSE_WHEEL_LEFT) +#define MOUSE_WHEEL_RIGHT (Mouse_status.changes & PDC_MOUSE_WHEEL_RIGHT) + +/* mouse bit-masks */ + +#define BUTTON1_RELEASED (mmask_t)0x01 +#define BUTTON1_PRESSED (mmask_t)0x02 +#define BUTTON1_CLICKED (mmask_t)0x04 +#define BUTTON1_DOUBLE_CLICKED (mmask_t)0x08 +#define BUTTON1_TRIPLE_CLICKED (mmask_t)0x10 + +/* With the "traditional" 32-bit mmask_t, mouse move and triple-clicks +share the same bit and can't be distinguished. 64-bit mmask_ts allow us +to make the distinction, and will allow other events to be added later. */ + +#ifdef PDC_LONG_MMASK + #define BUTTON1_MOVED (mmask_t)0x20 /* PDCurses */ + #define PDC_BITS_PER_BUTTON 6 +#else + #define BUTTON1_MOVED (mmask_t)0x10 /* PDCurses */ + #define PDC_BITS_PER_BUTTON 5 +#endif + +#define PDC_SHIFTED_BUTTON( button, n) ((mmask_t)(button) << (((n) - 1) * PDC_BITS_PER_BUTTON)) + +#define BUTTON2_RELEASED PDC_SHIFTED_BUTTON( BUTTON1_RELEASED, 2) +#define BUTTON2_PRESSED PDC_SHIFTED_BUTTON( BUTTON1_PRESSED, 2) +#define BUTTON2_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_CLICKED, 2) +#define BUTTON2_DOUBLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_DOUBLE_CLICKED, 2) +#define BUTTON2_TRIPLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_TRIPLE_CLICKED, 2) +#define BUTTON2_MOVED PDC_SHIFTED_BUTTON( BUTTON1_MOVED, 2) + +#define BUTTON3_RELEASED PDC_SHIFTED_BUTTON( BUTTON1_RELEASED, 3) +#define BUTTON3_PRESSED PDC_SHIFTED_BUTTON( BUTTON1_PRESSED, 3) +#define BUTTON3_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_CLICKED, 3) +#define BUTTON3_DOUBLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_DOUBLE_CLICKED, 3) +#define BUTTON3_TRIPLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_TRIPLE_CLICKED, 3) +#define BUTTON3_MOVED PDC_SHIFTED_BUTTON( BUTTON1_MOVED, 3) + +/* For the ncurses-compatible functions only, BUTTON4_PRESSED and + BUTTON5_PRESSED are returned for mouse scroll wheel up and down; + otherwise PDCurses doesn't support buttons 4 and 5... except + as described above for WinGUI, and perhaps to be extended to + other PDCurses flavors */ + +#define BUTTON4_RELEASED PDC_SHIFTED_BUTTON( BUTTON1_RELEASED, 4) +#define BUTTON4_PRESSED PDC_SHIFTED_BUTTON( BUTTON1_PRESSED, 4) +#define BUTTON4_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_CLICKED, 4) +#define BUTTON4_DOUBLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_DOUBLE_CLICKED, 4) +#define BUTTON4_TRIPLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_TRIPLE_CLICKED, 4) +#define BUTTON4_MOVED PDC_SHIFTED_BUTTON( BUTTON1_MOVED, 4) + +#define BUTTON5_RELEASED PDC_SHIFTED_BUTTON( BUTTON1_RELEASED, 5) +#define BUTTON5_PRESSED PDC_SHIFTED_BUTTON( BUTTON1_PRESSED, 5) +#define BUTTON5_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_CLICKED, 5) +#define BUTTON5_DOUBLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_DOUBLE_CLICKED, 5) +#define BUTTON5_TRIPLE_CLICKED PDC_SHIFTED_BUTTON( BUTTON1_TRIPLE_CLICKED, 5) +#define BUTTON5_MOVED PDC_SHIFTED_BUTTON( BUTTON1_MOVED, 5) + +#define MOUSE_WHEEL_SCROLL PDC_SHIFTED_BUTTON( BUTTON1_RELEASED, 6) +#define BUTTON_MODIFIER_SHIFT (MOUSE_WHEEL_SCROLL << 1) +#define BUTTON_MODIFIER_CONTROL (MOUSE_WHEEL_SCROLL << 2) +#define BUTTON_MODIFIER_ALT (MOUSE_WHEEL_SCROLL << 3) +#define REPORT_MOUSE_POSITION (MOUSE_WHEEL_SCROLL << 4) + +#define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1) + +/* ncurses mouse interface */ + +typedef struct +{ + short id; /* unused, always 0 */ + int x, y, z; /* x, y same as MOUSE_STATUS; z unused */ + mmask_t bstate; /* equivalent to changes + button[], but + in the same format as used for mousemask() */ +} MEVENT; + +#if defined(PDC_NCMOUSE) && !defined(NCURSES_MOUSE_VERSION) +# define NCURSES_MOUSE_VERSION 2 +#endif + +#ifdef NCURSES_MOUSE_VERSION +# define BUTTON_SHIFT BUTTON_MODIFIER_SHIFT +# define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL +# define BUTTON_CTRL BUTTON_MODIFIER_CONTROL +# define BUTTON_ALT BUTTON_MODIFIER_ALT +#else +# define BUTTON_SHIFT PDC_BUTTON_SHIFT +# define BUTTON_CONTROL PDC_BUTTON_CONTROL +# define BUTTON_ALT PDC_BUTTON_ALT +#endif + +/*---------------------------------------------------------------------- + * + * Window and Screen Structures + * + */ + +typedef struct _win WINDOW; +typedef struct _screen SCREEN; + +/*---------------------------------------------------------------------- + * + * External Variables + * + */ + +#ifdef PDC_DLL_BUILD +# ifdef CURSES_LIBRARY +# define PDCEX __declspec(dllexport) extern +# else +# define PDCEX __declspec(dllimport) extern +# endif +#else +# define PDCEX extern +#endif + +PDCEX int LINES; /* terminal height */ +PDCEX int COLS; /* terminal width */ +PDCEX WINDOW *stdscr; /* the default screen window */ +PDCEX WINDOW *curscr; /* the current screen image */ +PDCEX MOUSE_STATUS Mouse_status; +PDCEX int COLORS; +PDCEX int COLOR_PAIRS; +PDCEX int TABSIZE; +PDCEX chtype acs_map[]; /* alternate character set map */ +PDCEX char ttytype[]; /* terminal name/description */ + +/*man-start************************************************************** + +Text Attributes +=============== + +By default, PDCurses uses 64-bit integers for its chtype. All chtypes +have bits devoted to character data, attribute data, and color pair data. +There are three configurations supported : + +Default, 64-bit chtype, both wide- and 8-bit character builds: +------------------------------------------------------------------------------- +|63|62|..|45|44|43|..|38|37|36|35|34|33|..|22|21|20|19|18|17|16|..| 3| 2| 1| 0| +------------------------------------------------------------------------------- +| color pair | unused | modifiers | character eg 'a' + + 21 character bits (0-20), enough for full Unicode coverage + 17 attribute bits (21-37) + 6 currently unused bits (38-43) + 20 color pair bits (44-63), enough for 1048576 color pairs + +32-bit chtypes with wide characters (CHTYPE_32 and PDC_WIDE are #defined): + +--------------------------------------------------------------------+ + |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|..| 2| 1| 0| + +--------------------------------------------------------------------+ + color pair | modifiers | character eg 'a' + 16 character bits (0-16), enough for BMP (Unicode below 64K) + 8 attribute bits (16-23) + 8 color pair bits (24-31), for 256 color pairs + +32-bit chtypes with narrow characters (CHTYPE_32 #defined, PDC_WIDE is not): + +--------------------------------------------------------------------+ + |31|30|29|28|..|22|21|20|19|18|17|16|..|12|11|10| 9| 8| 7| 6|..| 1| 0| + +--------------------------------------------------------------------+ + color pair | modifiers |character + 8 character bits (0-7); only 8-bit charsets will work + 12 attribute bits (8-19) + 12 color pair bits (20-31), for 4096 pairs + +All attribute modifier schemes include eight "basic" bits: bold, underline, +right-line, left-line, italic, reverse and blink attributes, plus the +alternate character set indicator. For 32-bit narrow builds, three more +bits are used for overlined, dimmed, and strikeout attributes; a fourth +bit is reserved. + +Default chtypes have enough character bits to support the full range of +Unicode, all attributes, and 2^20 = 1048576 color pairs. Note, though, +that as of 2022 Jun 17, only WinGUI, VT, X11, Linux framebuffer, OpenGL, +and SDLn have COLOR_PAIRS = 1048576. Other platforms (DOSVGA, Plan9, WinCon) +may join them. Some (DOS, OS/2) simply do not have full-color +capability. + +**man-end****************************************************************/ + +/*** Video attribute macros ***/ + +#define WA_NORMAL (chtype)0 + +#ifndef CHTYPE_32 + /* 64-bit chtypes, both wide- and narrow */ + # define PDC_CHARTEXT_BITS 21 + # define PDC_ATTRIBUTE_BITS 17 + # define PDC_UNUSED_BITS 6 + # define PDC_COLOR_BITS 20 +# else +#ifdef PDC_WIDE + /* 32-bit chtypes, wide character */ + # define PDC_CHARTEXT_BITS 16 + # define PDC_ATTRIBUTE_BITS 8 + # define PDC_UNUSED_BITS 0 + # define PDC_COLOR_BITS 8 +#else + /* 32-bit chtypes, narrow (8-bit) characters */ + # define PDC_CHARTEXT_BITS 8 + # define PDC_ATTRIBUTE_BITS 12 + # define PDC_UNUSED_BITS 0 + # define PDC_COLOR_BITS 12 +#endif +#endif + +# define PDC_COLOR_SHIFT (PDC_CHARTEXT_BITS + PDC_ATTRIBUTE_BITS + PDC_UNUSED_BITS) +# define A_COLOR ((((chtype)1 << PDC_COLOR_BITS) - 1) << PDC_COLOR_SHIFT) +# define A_ATTRIBUTES (((((chtype)1 << PDC_ATTRIBUTE_BITS) - 1) << PDC_CHARTEXT_BITS) | A_COLOR) +# define A_CHARTEXT (((chtype)1 << PDC_CHARTEXT_BITS) - 1) + +#define PDC_ATTRIBUTE_BIT( N) ((chtype)1 << (N)) +# define WA_ALTCHARSET PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS) +# define WA_RIGHT PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 1) +# define WA_LEFT PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 2) +# define WA_ITALIC PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 3) +# define WA_UNDERLINE PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 4) +# define WA_REVERSE PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 5) +# define WA_BLINK PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 6) +# define WA_BOLD PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 7) +#if PDC_COLOR_BITS >= 11 + # define WA_TOP PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 8) + # define WA_STRIKEOUT PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 9) + # define WA_DIM PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 10) +/* Reserved bit : PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 11) */ +#else + # define WA_DIM WA_NORMAL + # define WA_TOP WA_NORMAL + # define WA_STRIKEOUT WA_NORMAL +#endif +#if PDC_COLOR_BITS >= 17 + # define WA_HORIZONTAL PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 11) + # define WA_VERTICAL PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 12) + # define WA_INVIS PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 13) + # define WA_LOW PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 14) + # define WA_PROTECT PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 15) + # define WA_STANDOUT PDC_ATTRIBUTE_BIT( PDC_CHARTEXT_BITS + 16) +#else + # define WA_HORIZONTAL 0 + # define WA_VERTICAL 0 + # define WA_INVIS 0 + # define WA_LOW WA_UNDERLINE + # define WA_PROTECT (WA_UNDERLINE | WA_LEFT | WA_RIGHT | WA_TOP) + # define WA_STANDOUT (WA_REVERSE | WA_BOLD) /* X/Open */ +#endif + +#define CHR_MSK A_CHARTEXT /* Obsolete */ +#define ATR_MSK A_ATTRIBUTES /* Obsolete */ +#define ATR_NRM A_NORMAL /* Obsolete */ + +/* X/Open A_ defines. */ + +#define A_ALTCHARSET WA_ALTCHARSET +#define A_BLINK WA_BLINK +#define A_BOLD WA_BOLD +#define A_DIM WA_DIM +#define A_INVIS WA_INVIS +#define A_REVERSE WA_REVERSE +#define A_PROTECT WA_PROTECT +#define A_STANDOUT WA_STANDOUT +#define A_UNDERLINE WA_UNDERLINE + +/* ncurses and PDCurses extension A_ defines. */ + +#define A_NORMAL WA_NORMAL +#define A_LEFT WA_LEFT +#define A_RIGHT WA_RIGHT +#define A_LOW WA_LOW +#define A_TOP WA_TOP +#define A_HORIZONTAL WA_HORIZONTAL +#define A_VERTICAL WA_VERTICAL + +/* A_ITALIC and WA_ITALIC are PDCurses and ncurses extensions. + A_STRIKEOUT and WA_STRIKEOUT are PDCursesMod extensions. */ + +#define A_ITALIC WA_ITALIC +#define A_STRIKEOUT WA_STRIKEOUT + +/*** Alternate character set macros ***/ + +#define PDC_ACS(w) ((chtype)w | A_ALTCHARSET) + +/* VT100-compatible symbols -- box chars */ + +#define ACS_LRCORNER PDC_ACS('V') +#define ACS_URCORNER PDC_ACS('W') +#define ACS_ULCORNER PDC_ACS('X') +#define ACS_LLCORNER PDC_ACS('Y') +#define ACS_PLUS PDC_ACS('Z') +#define ACS_LTEE PDC_ACS('[') +#define ACS_RTEE PDC_ACS('\\') +#define ACS_BTEE PDC_ACS(']') +#define ACS_TTEE PDC_ACS('^') +#define ACS_HLINE PDC_ACS('_') +#define ACS_VLINE PDC_ACS('`') + +/* Box char aliases. The four characters tell you if a Single +line points up, right, down, and/or left from the center; +or if it's Blank; or if it's Thick or Double. */ + +#define ACS_BSSB ACS_ULCORNER +#define ACS_SSBB ACS_LLCORNER +#define ACS_BBSS ACS_URCORNER +#define ACS_SBBS ACS_LRCORNER +#define ACS_SBSS ACS_RTEE +#define ACS_SSSB ACS_LTEE +#define ACS_SSBS ACS_BTEE +#define ACS_BSSS ACS_TTEE +#define ACS_BSBS ACS_HLINE +#define ACS_SBSB ACS_VLINE +#define ACS_SSSS ACS_PLUS + +/* The following Single/Double, Double, and Double/Single box +characters and their aliases are PDCursesMod extensions. ncurses +does have the wide-character versions of the Double-line box +characters (and adds Thick box characters). Aside from that, +consider these to be completely non-portable. */ + +#define ACS_SD_LRCORNER PDC_ACS(';') +#define ACS_SD_URCORNER PDC_ACS('<') +#define ACS_SD_ULCORNER PDC_ACS('=') +#define ACS_SD_LLCORNER PDC_ACS('>') +#define ACS_SD_LTEE PDC_ACS('@') +#define ACS_SD_RTEE PDC_ACS('A') +#define ACS_SD_BTEE PDC_ACS('B') +#define ACS_SD_TTEE PDC_ACS('C') +#define ACS_SD_PLUS PDC_ACS('?') + +#define ACS_SBBD ACS_SD_LRCORNER +#define ACS_BBSD ACS_SD_URCORNER +#define ACS_BDSB ACS_SD_ULCORNER +#define ACS_SDBB ACS_SD_LLCORNER +#define ACS_SDSB ACS_SD_LTEE +#define ACS_SBSD ACS_SD_RTEE +#define ACS_SDBD ACS_SD_BTEE +#define ACS_BDSD ACS_SD_TTEE +#define ACS_SDSD ACS_SD_PLUS + +#define ACS_D_LRCORNER PDC_ACS('D') +#define ACS_D_URCORNER PDC_ACS('E') +#define ACS_D_ULCORNER PDC_ACS('F') +#define ACS_D_LLCORNER PDC_ACS('G') +#define ACS_D_LTEE PDC_ACS('I') +#define ACS_D_RTEE PDC_ACS('J') +#define ACS_D_BTEE PDC_ACS('K') +#define ACS_D_TTEE PDC_ACS('L') +#define ACS_D_HLINE PDC_ACS('a') +#define ACS_D_VLINE PDC_ACS('b') +#define ACS_D_PLUS PDC_ACS('H') + +#define ACS_DBBD ACS_D_LRCORNER +#define ACS_BBDD ACS_D_URCORNER +#define ACS_BDDB ACS_D_ULCORNER +#define ACS_DDBB ACS_D_LLCORNER +#define ACS_DDDB ACS_D_LTEE +#define ACS_DBDD ACS_D_RTEE +#define ACS_DDBD ACS_D_BTEE +#define ACS_BDDD ACS_D_TTEE +#define ACS_BDBD ACS_D_HLINE +#define ACS_DBDB ACS_D_VLINE +#define ACS_DDDD ACS_D_PLUS + +#define ACS_DS_LRCORNER PDC_ACS('M') +#define ACS_DS_URCORNER PDC_ACS('N') +#define ACS_DS_ULCORNER PDC_ACS('O') +#define ACS_DS_LLCORNER PDC_ACS('P') +#define ACS_DS_LTEE PDC_ACS('R') +#define ACS_DS_RTEE PDC_ACS('S') +#define ACS_DS_BTEE PDC_ACS('T') +#define ACS_DS_TTEE PDC_ACS('U') +#define ACS_DS_PLUS PDC_ACS('Q') + +#define ACS_DBBS ACS_DS_LRCORNER +#define ACS_BBDS ACS_DS_URCORNER +#define ACS_BSDB ACS_DS_ULCORNER +#define ACS_DSBB ACS_DS_LLCORNER +#define ACS_DSDB ACS_DS_LTEE +#define ACS_DBDS ACS_DS_RTEE +#define ACS_DSBS ACS_DS_BTEE +#define ACS_BSDS ACS_DS_TTEE +#define ACS_DSDS ACS_DS_PLUS + +/* PDCurses-only ACS chars. Don't use if ncurses compatibility matters. +Some won't work in non-wide X11 builds (see 'acs_defs.h' for details). */ + +#define ACS_CENT PDC_ACS('{') +#define ACS_YEN PDC_ACS('|') +#define ACS_PESETA PDC_ACS('}') +#define ACS_HALF PDC_ACS('&') +#define ACS_QUARTER PDC_ACS('\'') +#define ACS_LEFT_ANG_QU PDC_ACS(')') +#define ACS_RIGHT_ANG_QU PDC_ACS('*') +#define ACS_CLUB PDC_ACS( 11) +#define ACS_HEART PDC_ACS( 12) +#define ACS_SPADE PDC_ACS( 13) +#define ACS_SMILE PDC_ACS( 14) +#define ACS_REV_SMILE PDC_ACS( 15) +#define ACS_MED_BULLET PDC_ACS( 16) +#define ACS_WHITE_BULLET PDC_ACS( 17) +#define ACS_PILCROW PDC_ACS( 18) +#define ACS_SECTION PDC_ACS( 19) + +#define ACS_SUP2 PDC_ACS(',') +#define ACS_ALPHA PDC_ACS('.') +#define ACS_BETA PDC_ACS('/') +#define ACS_GAMMA PDC_ACS('0') +#define ACS_UP_SIGMA PDC_ACS('1') +#define ACS_LO_SIGMA PDC_ACS('2') +#define ACS_MU PDC_ACS('4') +#define ACS_TAU PDC_ACS('5') +#define ACS_UP_PHI PDC_ACS('6') +#define ACS_THETA PDC_ACS('7') +#define ACS_OMEGA PDC_ACS('8') +#define ACS_DELTA PDC_ACS('9') +#define ACS_INFINITY PDC_ACS('-') +#define ACS_LO_PHI PDC_ACS( 22) +#define ACS_EPSILON PDC_ACS(':') +#define ACS_INTERSECT PDC_ACS('e') +#define ACS_TRIPLE_BAR PDC_ACS('f') +#define ACS_DIVISION PDC_ACS('c') +#define ACS_APPROX_EQ PDC_ACS('d') +#define ACS_SM_BULLET PDC_ACS('g') +#define ACS_SQUARE_ROOT PDC_ACS('i') +#define ACS_UBLOCK PDC_ACS('p') +#define ACS_BBLOCK PDC_ACS('q') +#define ACS_LBLOCK PDC_ACS('r') +#define ACS_RBLOCK PDC_ACS('s') + +#define ACS_A_ORDINAL PDC_ACS(20) +#define ACS_O_ORDINAL PDC_ACS(21) +#define ACS_INV_QUERY PDC_ACS(24) +#define ACS_REV_NOT PDC_ACS(25) +#define ACS_NOT PDC_ACS(26) +#define ACS_INV_BANG PDC_ACS(23) +#define ACS_UP_INTEGRAL PDC_ACS(27) +#define ACS_LO_INTEGRAL PDC_ACS(28) +#define ACS_SUP_N PDC_ACS(29) +#define ACS_CENTER_SQU PDC_ACS(30) +#define ACS_F_WITH_HOOK PDC_ACS(31) + +/* VT100-compatible symbols -- other */ + +#define ACS_S1 PDC_ACS('l') +#define ACS_S9 PDC_ACS('o') +#define ACS_DIAMOND PDC_ACS('j') +#define ACS_CKBOARD PDC_ACS('k') +#define ACS_DEGREE PDC_ACS('w') +#define ACS_PLMINUS PDC_ACS('x') +#define ACS_BULLET PDC_ACS('h') + +/* Teletype 5410v1 symbols -- these are defined in SysV curses, but + are not well-supported by most terminals. Stick to VT100 characters + for optimum portability. */ + +#define ACS_LARROW PDC_ACS('!') +#define ACS_RARROW PDC_ACS(' ') +#define ACS_DARROW PDC_ACS('#') +#define ACS_UARROW PDC_ACS('"') +#define ACS_BOARD PDC_ACS('+') +#define ACS_LTBOARD PDC_ACS('y') +#define ACS_LANTERN PDC_ACS('z') +#define ACS_BLOCK PDC_ACS('t') + +/* That goes double for these -- undocumented SysV symbols. Don't use + them. */ + +#define ACS_S3 PDC_ACS('m') +#define ACS_S7 PDC_ACS('n') +#define ACS_LEQUAL PDC_ACS('u') +#define ACS_GEQUAL PDC_ACS('v') +#define ACS_PI PDC_ACS('$') +#define ACS_NEQUAL PDC_ACS('%') +#define ACS_STERLING PDC_ACS('~') + +/* cchar_t aliases */ + +#ifdef PDC_WIDE + +# define WACS_CENT (&(acs_map['{'])) +# define WACS_YEN (&(acs_map['|'])) +# define WACS_PESETA (&(acs_map['}'])) +# define WACS_HALF (&(acs_map['&'])) +# define WACS_QUARTER (&(acs_map['\''])) +# define WACS_LEFT_ANG_QU (&(acs_map[')'])) +# define WACS_RIGHT_ANG_QU (&(acs_map['*'])) +# define WACS_D_HLINE (&(acs_map['a'])) +# define WACS_D_VLINE (&(acs_map['b'])) +# define WACS_CLUB (&(acs_map[ 11])) +# define WACS_HEART (&(acs_map[ 12])) +# define WACS_SPADE (&(acs_map[ 13])) +# define WACS_SMILE (&(acs_map[ 14])) +# define WACS_REV_SMILE (&(acs_map[ 15])) +# define WACS_MED_BULLET (&(acs_map[ 16])) +# define WACS_WHITE_BULLET (&(acs_map[ 17])) +# define WACS_PILCROW (&(acs_map[ 18])) +# define WACS_SECTION (&(acs_map[ 19])) + +# define WACS_SUP2 (&(acs_map[','])) +# define WACS_ALPHA (&(acs_map['.'])) +# define WACS_BETA (&(acs_map['/'])) +# define WACS_GAMMA (&(acs_map['0'])) +# define WACS_UP_SIGMA (&(acs_map['1'])) +# define WACS_LO_SIGMA (&(acs_map['2'])) +# define WACS_MU (&(acs_map['4'])) +# define WACS_TAU (&(acs_map['5'])) +# define WACS_UP_PHI (&(acs_map['6'])) +# define WACS_THETA (&(acs_map['7'])) +# define WACS_OMEGA (&(acs_map['8'])) +# define WACS_DELTA (&(acs_map['9'])) +# define WACS_INFINITY (&(acs_map['-'])) +# define WACS_LO_PHI (&(acs_map[ 22])) +# define WACS_EPSILON (&(acs_map[':'])) +# define WACS_INTERSECT (&(acs_map['e'])) +# define WACS_TRIPLE_BAR (&(acs_map['f'])) +# define WACS_DIVISION (&(acs_map['c'])) +# define WACS_APPROX_EQ (&(acs_map['d'])) +# define WACS_SM_BULLET (&(acs_map['g'])) +# define WACS_SQUARE_ROOT (&(acs_map['i'])) +# define WACS_UBLOCK (&(acs_map['p'])) +# define WACS_BBLOCK (&(acs_map['q'])) +# define WACS_LBLOCK (&(acs_map['r'])) +# define WACS_RBLOCK (&(acs_map['s'])) + +# define WACS_A_ORDINAL (&(acs_map[20])) +# define WACS_O_ORDINAL (&(acs_map[21])) +# define WACS_INV_QUERY (&(acs_map[24])) +# define WACS_REV_NOT (&(acs_map[25])) +# define WACS_NOT (&(acs_map[26])) +# define WACS_INV_BANG (&(acs_map[23])) +# define WACS_UP_INTEGRAL (&(acs_map[27])) +# define WACS_LO_INTEGRAL (&(acs_map[28])) +# define WACS_SUP_N (&(acs_map[29])) +# define WACS_CENTER_SQU (&(acs_map[30])) +# define WACS_F_WITH_HOOK (&(acs_map[31])) + +/* See above comments about box characters and their aliases. The +following eleven characters, for single-line boxes, are the only +portable ones. The thick and double-line characters are ncurses +extensions. The 'mixed' single-double and double-single +characters are PDCursesMod extensions and totally non-portable. */ + +# define WACS_LRCORNER (&(acs_map['V'])) +# define WACS_URCORNER (&(acs_map['W'])) +# define WACS_ULCORNER (&(acs_map['X'])) +# define WACS_LLCORNER (&(acs_map['Y'])) +# define WACS_PLUS (&(acs_map['Z'])) +# define WACS_LTEE (&(acs_map['['])) +# define WACS_RTEE (&(acs_map['\\'])) +# define WACS_BTEE (&(acs_map[']'])) +# define WACS_TTEE (&(acs_map['^'])) +# define WACS_HLINE (&(acs_map['_'])) +# define WACS_VLINE (&(acs_map['`'])) + +# define WACS_SBBS WACS_LRCORNER +# define WACS_BBSS WACS_URCORNER +# define WACS_BSSB WACS_ULCORNER +# define WACS_SSBB WACS_LLCORNER +# define WACS_SSSS WACS_PLUS +# define WACS_SSSB WACS_LTEE +# define WACS_SBSS WACS_RTEE +# define WACS_SSBS WACS_BTEE +# define WACS_BSSS WACS_TTEE +# define WACS_BSBS WACS_HLINE +# define WACS_SBSB WACS_VLINE + +# define WACS_SD_LRCORNER (&(acs_map[';'])) +# define WACS_SD_URCORNER (&(acs_map['<'])) +# define WACS_SD_ULCORNER (&(acs_map['='])) +# define WACS_SD_LLCORNER (&(acs_map['>'])) +# define WACS_SD_PLUS (&(acs_map['?'])) +# define WACS_SD_LTEE (&(acs_map['@'])) +# define WACS_SD_RTEE (&(acs_map['A'])) +# define WACS_SD_BTEE (&(acs_map['B'])) +# define WACS_SD_TTEE (&(acs_map['C'])) + +# define WACS_SBBD WACS_SD_LRCORNER +# define WACS_BBSD WACS_SD_URCORNER +# define WACS_BDSB WACS_SD_ULCORNER +# define WACS_SDBB WACS_SD_LLCORNER +# define WACS_SDSD WACS_SD_PLUS +# define WACS_SDSB WACS_SD_LTEE +# define WACS_SBSD WACS_SD_RTEE +# define WACS_SDBD WACS_SD_BTEE +# define WACS_BDSD WACS_SD_TTEE + +# define WACS_D_LRCORNER (&(acs_map['D'])) +# define WACS_D_URCORNER (&(acs_map['E'])) +# define WACS_D_ULCORNER (&(acs_map['F'])) +# define WACS_D_LLCORNER (&(acs_map['G'])) +# define WACS_D_PLUS (&(acs_map['H'])) +# define WACS_D_LTEE (&(acs_map['I'])) +# define WACS_D_RTEE (&(acs_map['J'])) +# define WACS_D_BTEE (&(acs_map['K'])) +# define WACS_D_TTEE (&(acs_map['L'])) + +# define WACS_DBBD WACS_D_LRCORNER +# define WACS_BBDD WACS_D_URCORNER +# define WACS_BDDB WACS_D_ULCORNER +# define WACS_DDBB WACS_D_LLCORNER +# define WACS_DDDD WACS_D_PLUS +# define WACS_DDDB WACS_D_LTEE +# define WACS_DBDD WACS_D_RTEE +# define WACS_DDBD WACS_D_BTEE +# define WACS_BDDD WACS_D_TTEE +# define WACS_BDBD WACS_D_HLINE +# define WACS_DBDB WACS_D_VLINE + +# define WACS_T_LRCORNER (&(acs_map[0])) +# define WACS_T_URCORNER (&(acs_map[1])) +# define WACS_T_ULCORNER (&(acs_map[2])) +# define WACS_T_LLCORNER (&(acs_map[3])) +# define WACS_T_PLUS (&(acs_map[4])) +# define WACS_T_LTEE (&(acs_map[5])) +# define WACS_T_RTEE (&(acs_map[6])) +# define WACS_T_BTEE (&(acs_map[7])) +# define WACS_T_TTEE (&(acs_map[8])) +# define WACS_T_HLINE (&(acs_map[9])) +# define WACS_T_VLINE (&(acs_map[10])) + +# define WACS_TBBT WACS_T_LRCORNER +# define WACS_BBTT WACS_T_URCORNER +# define WACS_BTTB WACS_T_ULCORNER +# define WACS_TTBB WACS_T_LLCORNER +# define WACS_TTTT WACS_T_PLUS +# define WACS_TTTB WACS_T_LTEE +# define WACS_TBTT WACS_T_RTEE +# define WACS_TTBT WACS_T_BTEE +# define WACS_BTTS WACS_T_TTEE +# define WACS_BTBT WACS_T_HLINE +# define WACS_TBTB WACS_T_VLINE + +# define WACS_DS_LRCORNER (&(acs_map['M'])) +# define WACS_DS_URCORNER (&(acs_map['N'])) +# define WACS_DS_ULCORNER (&(acs_map['O'])) +# define WACS_DS_LLCORNER (&(acs_map['P'])) +# define WACS_DS_PLUS (&(acs_map['Q'])) +# define WACS_DS_LTEE (&(acs_map['R'])) +# define WACS_DS_RTEE (&(acs_map['S'])) +# define WACS_DS_BTEE (&(acs_map['T'])) +# define WACS_DS_TTEE (&(acs_map['U'])) + +# define WACS_DBBS WACS_DS_LRCORNER +# define WACS_BBDS WACS_DS_URCORNER +# define WACS_BSDB WACS_DS_ULCORNER +# define WACS_DSBB WACS_DS_LLCORNER +# define WACS_DSDS WACS_DS_PLUS +# define WACS_DSDB WACS_DS_LTEE +# define WACS_DBDS WACS_DS_RTEE +# define WACS_DSBS WACS_DS_BTEE +# define WACS_BSDS WACS_DS_TTEE + +# define WACS_S1 (&(acs_map['l'])) +# define WACS_S9 (&(acs_map['o'])) +# define WACS_DIAMOND (&(acs_map['j'])) +# define WACS_CKBOARD (&(acs_map['k'])) +# define WACS_DEGREE (&(acs_map['w'])) +# define WACS_PLMINUS (&(acs_map['x'])) +# define WACS_BULLET (&(acs_map['h'])) + +# define WACS_LARROW (&(acs_map['!'])) +# define WACS_RARROW (&(acs_map[' '])) +# define WACS_DARROW (&(acs_map['#'])) +# define WACS_UARROW (&(acs_map['"'])) +# define WACS_BOARD (&(acs_map['+'])) +# define WACS_LTBOARD (&(acs_map['y'])) +# define WACS_LANTERN (&(acs_map['z'])) +# define WACS_BLOCK (&(acs_map['t'])) + +# define WACS_S3 (&(acs_map['m'])) +# define WACS_S7 (&(acs_map['n'])) +# define WACS_LEQUAL (&(acs_map['u'])) +# define WACS_GEQUAL (&(acs_map['v'])) +# define WACS_PI (&(acs_map['$'])) +# define WACS_NEQUAL (&(acs_map['%'])) +# define WACS_STERLING (&(acs_map['~'])) +#endif + +/*** Color macros ***/ + +#define COLOR_BLACK 0 + +#ifdef PDC_RGB /* RGB */ +# define COLOR_RED 1 +# define COLOR_GREEN 2 +# define COLOR_BLUE 4 +#else /* BGR */ +# define COLOR_BLUE 1 +# define COLOR_GREEN 2 +# define COLOR_RED 4 +#endif + +#define COLOR_CYAN (COLOR_BLUE | COLOR_GREEN) +#define COLOR_MAGENTA (COLOR_RED | COLOR_BLUE) +#define COLOR_YELLOW (COLOR_RED | COLOR_GREEN) + +#define COLOR_WHITE 7 + +/*---------------------------------------------------------------------- + * + * Function and Keypad Key Definitions + * Many are just for compatibility + * + */ + +#ifdef PDC_WIDE + #define KEY_OFFSET 0xec00 +#else + #define KEY_OFFSET 0x100 +#endif + +#define KEY_CODE_YES (KEY_OFFSET + 0x00) /* If get_wch() gives a key code */ + +#define KEY_BREAK (KEY_OFFSET + 0x01) /* Not on PC KBD */ +#define KEY_DOWN (KEY_OFFSET + 0x02) /* Down arrow key */ +#define KEY_UP (KEY_OFFSET + 0x03) /* Up arrow key */ +#define KEY_LEFT (KEY_OFFSET + 0x04) /* Left arrow key */ +#define KEY_RIGHT (KEY_OFFSET + 0x05) /* Right arrow key */ +#define KEY_HOME (KEY_OFFSET + 0x06) /* home key */ +#define KEY_BACKSPACE (KEY_OFFSET + 0x07) /* not on pc */ +#define KEY_F0 (KEY_OFFSET + 0x08) /* function keys; 64 reserved */ + +#define KEY_DL (KEY_OFFSET + 0x48) /* delete line */ +#define KEY_IL (KEY_OFFSET + 0x49) /* insert line */ +#define KEY_DC (KEY_OFFSET + 0x4a) /* delete character */ +#define KEY_IC (KEY_OFFSET + 0x4b) /* insert char or enter ins mode */ +#define KEY_EIC (KEY_OFFSET + 0x4c) /* exit insert char mode */ +#define KEY_CLEAR (KEY_OFFSET + 0x4d) /* clear screen */ +#define KEY_EOS (KEY_OFFSET + 0x4e) /* clear to end of screen */ +#define KEY_EOL (KEY_OFFSET + 0x4f) /* clear to end of line */ +#define KEY_SF (KEY_OFFSET + 0x50) /* scroll 1 line forward */ +#define KEY_SR (KEY_OFFSET + 0x51) /* scroll 1 line back (reverse) */ +#define KEY_NPAGE (KEY_OFFSET + 0x52) /* next page */ +#define KEY_PPAGE (KEY_OFFSET + 0x53) /* previous page */ +#define KEY_STAB (KEY_OFFSET + 0x54) /* set tab */ +#define KEY_CTAB (KEY_OFFSET + 0x55) /* clear tab */ +#define KEY_CATAB (KEY_OFFSET + 0x56) /* clear all tabs */ +#define KEY_ENTER (KEY_OFFSET + 0x57) /* enter or send (unreliable) */ +#define KEY_SRESET (KEY_OFFSET + 0x58) /* soft/reset (partial/unreliable) */ +#define KEY_RESET (KEY_OFFSET + 0x59) /* reset/hard reset (unreliable) */ +#define KEY_PRINT (KEY_OFFSET + 0x5a) /* print/copy */ +#define KEY_LL (KEY_OFFSET + 0x5b) /* home down/bottom (lower left) */ +#define KEY_ABORT (KEY_OFFSET + 0x5c) /* abort/terminate key (any) */ +#define KEY_SHELP (KEY_OFFSET + 0x5d) /* short help */ +#define KEY_LHELP (KEY_OFFSET + 0x5e) /* long help */ +#define KEY_BTAB (KEY_OFFSET + 0x5f) /* Back tab key */ +#define KEY_BEG (KEY_OFFSET + 0x60) /* beg(inning) key */ +#define KEY_CANCEL (KEY_OFFSET + 0x61) /* cancel key */ +#define KEY_CLOSE (KEY_OFFSET + 0x62) /* close key */ +#define KEY_COMMAND (KEY_OFFSET + 0x63) /* cmd (command) key */ +#define KEY_COPY (KEY_OFFSET + 0x64) /* copy key */ +#define KEY_CREATE (KEY_OFFSET + 0x65) /* create key */ +#define KEY_END (KEY_OFFSET + 0x66) /* end key */ +#define KEY_EXIT (KEY_OFFSET + 0x67) /* exit key */ +#define KEY_FIND (KEY_OFFSET + 0x68) /* find key */ +#define KEY_HELP (KEY_OFFSET + 0x69) /* help key */ +#define KEY_MARK (KEY_OFFSET + 0x6a) /* mark key */ +#define KEY_MESSAGE (KEY_OFFSET + 0x6b) /* message key */ +#define KEY_MOVE (KEY_OFFSET + 0x6c) /* move key */ +#define KEY_NEXT (KEY_OFFSET + 0x6d) /* next object key */ +#define KEY_OPEN (KEY_OFFSET + 0x6e) /* open key */ +#define KEY_OPTIONS (KEY_OFFSET + 0x6f) /* options key */ +#define KEY_PREVIOUS (KEY_OFFSET + 0x70) /* previous object key */ +#define KEY_REDO (KEY_OFFSET + 0x71) /* redo key */ +#define KEY_REFERENCE (KEY_OFFSET + 0x72) /* ref(erence) key */ +#define KEY_REFRESH (KEY_OFFSET + 0x73) /* refresh key */ +#define KEY_REPLACE (KEY_OFFSET + 0x74) /* replace key */ +#define KEY_RESTART (KEY_OFFSET + 0x75) /* restart key */ +#define KEY_RESUME (KEY_OFFSET + 0x76) /* resume key */ +#define KEY_SAVE (KEY_OFFSET + 0x77) /* save key */ +#define KEY_SBEG (KEY_OFFSET + 0x78) /* shifted beginning key */ +#define KEY_SCANCEL (KEY_OFFSET + 0x79) /* shifted cancel key */ +#define KEY_SCOMMAND (KEY_OFFSET + 0x7a) /* shifted command key */ +#define KEY_SCOPY (KEY_OFFSET + 0x7b) /* shifted copy key */ +#define KEY_SCREATE (KEY_OFFSET + 0x7c) /* shifted create key */ +#define KEY_SDC (KEY_OFFSET + 0x7d) /* shifted delete char key */ +#define KEY_SDL (KEY_OFFSET + 0x7e) /* shifted delete line key */ +#define KEY_SELECT (KEY_OFFSET + 0x7f) /* select key */ +#define KEY_SEND (KEY_OFFSET + 0x80) /* shifted end key */ +#define KEY_SEOL (KEY_OFFSET + 0x81) /* shifted clear line key */ +#define KEY_SEXIT (KEY_OFFSET + 0x82) /* shifted exit key */ +#define KEY_SFIND (KEY_OFFSET + 0x83) /* shifted find key */ +#define KEY_SHOME (KEY_OFFSET + 0x84) /* shifted home key */ +#define KEY_SIC (KEY_OFFSET + 0x85) /* shifted input key */ + +#define KEY_SLEFT (KEY_OFFSET + 0x87) /* shifted left arrow key */ +#define KEY_SMESSAGE (KEY_OFFSET + 0x88) /* shifted message key */ +#define KEY_SMOVE (KEY_OFFSET + 0x89) /* shifted move key */ +#define KEY_SNEXT (KEY_OFFSET + 0x8a) /* shifted next key */ +#define KEY_SOPTIONS (KEY_OFFSET + 0x8b) /* shifted options key */ +#define KEY_SPREVIOUS (KEY_OFFSET + 0x8c) /* shifted prev key */ +#define KEY_SPRINT (KEY_OFFSET + 0x8d) /* shifted print key */ +#define KEY_SREDO (KEY_OFFSET + 0x8e) /* shifted redo key */ +#define KEY_SREPLACE (KEY_OFFSET + 0x8f) /* shifted replace key */ +#define KEY_SRIGHT (KEY_OFFSET + 0x90) /* shifted right arrow */ +#define KEY_SRSUME (KEY_OFFSET + 0x91) /* shifted resume key */ +#define KEY_SSAVE (KEY_OFFSET + 0x92) /* shifted save key */ +#define KEY_SSUSPEND (KEY_OFFSET + 0x93) /* shifted suspend key */ +#define KEY_SUNDO (KEY_OFFSET + 0x94) /* shifted undo key */ +#define KEY_SUSPEND (KEY_OFFSET + 0x95) /* suspend key */ +#define KEY_UNDO (KEY_OFFSET + 0x96) /* undo key */ + +/* PDCurses-specific key definitions -- PC only */ + +#define ALT_0 (KEY_OFFSET + 0x97) +#define ALT_1 (KEY_OFFSET + 0x98) +#define ALT_2 (KEY_OFFSET + 0x99) +#define ALT_3 (KEY_OFFSET + 0x9a) +#define ALT_4 (KEY_OFFSET + 0x9b) +#define ALT_5 (KEY_OFFSET + 0x9c) +#define ALT_6 (KEY_OFFSET + 0x9d) +#define ALT_7 (KEY_OFFSET + 0x9e) +#define ALT_8 (KEY_OFFSET + 0x9f) +#define ALT_9 (KEY_OFFSET + 0xa0) +#define ALT_A (KEY_OFFSET + 0xa1) +#define ALT_B (KEY_OFFSET + 0xa2) +#define ALT_C (KEY_OFFSET + 0xa3) +#define ALT_D (KEY_OFFSET + 0xa4) +#define ALT_E (KEY_OFFSET + 0xa5) +#define ALT_F (KEY_OFFSET + 0xa6) +#define ALT_G (KEY_OFFSET + 0xa7) +#define ALT_H (KEY_OFFSET + 0xa8) +#define ALT_I (KEY_OFFSET + 0xa9) +#define ALT_J (KEY_OFFSET + 0xaa) +#define ALT_K (KEY_OFFSET + 0xab) +#define ALT_L (KEY_OFFSET + 0xac) +#define ALT_M (KEY_OFFSET + 0xad) +#define ALT_N (KEY_OFFSET + 0xae) +#define ALT_O (KEY_OFFSET + 0xaf) +#define ALT_P (KEY_OFFSET + 0xb0) +#define ALT_Q (KEY_OFFSET + 0xb1) +#define ALT_R (KEY_OFFSET + 0xb2) +#define ALT_S (KEY_OFFSET + 0xb3) +#define ALT_T (KEY_OFFSET + 0xb4) +#define ALT_U (KEY_OFFSET + 0xb5) +#define ALT_V (KEY_OFFSET + 0xb6) +#define ALT_W (KEY_OFFSET + 0xb7) +#define ALT_X (KEY_OFFSET + 0xb8) +#define ALT_Y (KEY_OFFSET + 0xb9) +#define ALT_Z (KEY_OFFSET + 0xba) + +#define CTL_LEFT (KEY_OFFSET + 0xbb) /* Control-Left-Arrow */ +#define CTL_RIGHT (KEY_OFFSET + 0xbc) +#define CTL_PGUP (KEY_OFFSET + 0xbd) +#define CTL_PGDN (KEY_OFFSET + 0xbe) +#define CTL_HOME (KEY_OFFSET + 0xbf) +#define CTL_END (KEY_OFFSET + 0xc0) + +#define KEY_A1 (KEY_OFFSET + 0xc1) /* upper left on Virtual keypad */ +#define KEY_A2 (KEY_OFFSET + 0xc2) /* upper middle on Virt. keypad */ +#define KEY_A3 (KEY_OFFSET + 0xc3) /* upper right on Vir. keypad */ +#define KEY_B1 (KEY_OFFSET + 0xc4) /* middle left on Virt. keypad */ +#define KEY_B2 (KEY_OFFSET + 0xc5) /* center on Virt. keypad */ +#define KEY_B3 (KEY_OFFSET + 0xc6) /* middle right on Vir. keypad */ +#define KEY_C1 (KEY_OFFSET + 0xc7) /* lower left on Virt. keypad */ +#define KEY_C2 (KEY_OFFSET + 0xc8) /* lower middle on Virt. keypad */ +#define KEY_C3 (KEY_OFFSET + 0xc9) /* lower right on Vir. keypad */ + +#define PADSLASH (KEY_OFFSET + 0xca) /* slash on keypad */ +#define PADENTER (KEY_OFFSET + 0xcb) /* enter on keypad */ +#define CTL_PADENTER (KEY_OFFSET + 0xcc) /* ctl-enter on keypad */ +#define ALT_PADENTER (KEY_OFFSET + 0xcd) /* alt-enter on keypad */ +#define PADSTOP (KEY_OFFSET + 0xce) /* stop on keypad */ +#define PADSTAR (KEY_OFFSET + 0xcf) /* star on keypad */ +#define PADMINUS (KEY_OFFSET + 0xd0) /* minus on keypad */ +#define PADPLUS (KEY_OFFSET + 0xd1) /* plus on keypad */ +#define CTL_PADSTOP (KEY_OFFSET + 0xd2) /* ctl-stop on keypad */ +#define CTL_PADCENTER (KEY_OFFSET + 0xd3) /* ctl-enter on keypad */ +#define CTL_PADPLUS (KEY_OFFSET + 0xd4) /* ctl-plus on keypad */ +#define CTL_PADMINUS (KEY_OFFSET + 0xd5) /* ctl-minus on keypad */ +#define CTL_PADSLASH (KEY_OFFSET + 0xd6) /* ctl-slash on keypad */ +#define CTL_PADSTAR (KEY_OFFSET + 0xd7) /* ctl-star on keypad */ +#define ALT_PADPLUS (KEY_OFFSET + 0xd8) /* alt-plus on keypad */ +#define ALT_PADMINUS (KEY_OFFSET + 0xd9) /* alt-minus on keypad */ +#define ALT_PADSLASH (KEY_OFFSET + 0xda) /* alt-slash on keypad */ +#define ALT_PADSTAR (KEY_OFFSET + 0xdb) /* alt-star on keypad */ +#define ALT_PADSTOP (KEY_OFFSET + 0xdc) /* alt-stop on keypad */ +#define CTL_INS (KEY_OFFSET + 0xdd) /* ctl-insert */ +#define ALT_DEL (KEY_OFFSET + 0xde) /* alt-delete */ +#define ALT_INS (KEY_OFFSET + 0xdf) /* alt-insert */ +#define CTL_UP (KEY_OFFSET + 0xe0) /* ctl-up arrow */ +#define CTL_DOWN (KEY_OFFSET + 0xe1) /* ctl-down arrow: orig PDCurses def */ +#define CTL_DN (KEY_OFFSET + 0xe1) /* ctl-down arrow: ncurses def */ +#define CTL_TAB (KEY_OFFSET + 0xe2) /* ctl-tab */ +#define ALT_TAB (KEY_OFFSET + 0xe3) +#define ALT_MINUS (KEY_OFFSET + 0xe4) +#define ALT_EQUAL (KEY_OFFSET + 0xe5) +#define ALT_HOME (KEY_OFFSET + 0xe6) +#define ALT_PGUP (KEY_OFFSET + 0xe7) +#define ALT_PGDN (KEY_OFFSET + 0xe8) +#define ALT_END (KEY_OFFSET + 0xe9) +#define ALT_UP (KEY_OFFSET + 0xea) /* alt-up arrow */ +#define ALT_DOWN (KEY_OFFSET + 0xeb) /* alt-down arrow */ +#define ALT_RIGHT (KEY_OFFSET + 0xec) /* alt-right arrow */ +#define ALT_LEFT (KEY_OFFSET + 0xed) /* alt-left arrow */ +#define ALT_ENTER (KEY_OFFSET + 0xee) /* alt-enter */ +#define ALT_ESC (KEY_OFFSET + 0xef) /* alt-escape */ +#define ALT_BQUOTE (KEY_OFFSET + 0xf0) /* alt-back quote */ +#define ALT_LBRACKET (KEY_OFFSET + 0xf1) /* alt-left bracket */ +#define ALT_RBRACKET (KEY_OFFSET + 0xf2) /* alt-right bracket */ +#define ALT_SEMICOLON (KEY_OFFSET + 0xf3) /* alt-semi-colon */ +#define ALT_FQUOTE (KEY_OFFSET + 0xf4) /* alt-forward quote */ +#define ALT_COMMA (KEY_OFFSET + 0xf5) /* alt-comma */ +#define ALT_STOP (KEY_OFFSET + 0xf6) /* alt-stop */ +#define ALT_FSLASH (KEY_OFFSET + 0xf7) /* alt-forward slash */ +#define ALT_BKSP (KEY_OFFSET + 0xf8) /* alt-backspace */ +#define CTL_BKSP (KEY_OFFSET + 0xf9) /* ctl-backspace */ +#define PAD0 (KEY_OFFSET + 0xfa) /* keypad 0 */ + +#define CTL_PAD0 (KEY_OFFSET + 0xfb) /* ctl-keypad 0 */ +#define CTL_PAD1 (KEY_OFFSET + 0xfc) +#define CTL_PAD2 (KEY_OFFSET + 0xfd) +#define CTL_PAD3 (KEY_OFFSET + 0xfe) +#define CTL_PAD4 (KEY_OFFSET + 0xff) +#define CTL_PAD5 (KEY_OFFSET + 0x100) +#define CTL_PAD6 (KEY_OFFSET + 0x101) +#define CTL_PAD7 (KEY_OFFSET + 0x102) +#define CTL_PAD8 (KEY_OFFSET + 0x103) +#define CTL_PAD9 (KEY_OFFSET + 0x104) + +#define ALT_PAD0 (KEY_OFFSET + 0x105) /* alt-keypad 0 */ +#define ALT_PAD1 (KEY_OFFSET + 0x106) +#define ALT_PAD2 (KEY_OFFSET + 0x107) +#define ALT_PAD3 (KEY_OFFSET + 0x108) +#define ALT_PAD4 (KEY_OFFSET + 0x109) +#define ALT_PAD5 (KEY_OFFSET + 0x10a) +#define ALT_PAD6 (KEY_OFFSET + 0x10b) +#define ALT_PAD7 (KEY_OFFSET + 0x10c) +#define ALT_PAD8 (KEY_OFFSET + 0x10d) +#define ALT_PAD9 (KEY_OFFSET + 0x10e) + +#define CTL_DEL (KEY_OFFSET + 0x10f) /* clt-delete */ +#define ALT_BSLASH (KEY_OFFSET + 0x110) /* alt-back slash */ +#define CTL_ENTER (KEY_OFFSET + 0x111) /* ctl-enter */ + +#define SHF_PADENTER (KEY_OFFSET + 0x112) /* shift-enter on keypad */ +#define SHF_PADSLASH (KEY_OFFSET + 0x113) /* shift-slash on keypad */ +#define SHF_PADSTAR (KEY_OFFSET + 0x114) /* shift-star on keypad */ +#define SHF_PADPLUS (KEY_OFFSET + 0x115) /* shift-plus on keypad */ +#define SHF_PADMINUS (KEY_OFFSET + 0x116) /* shift-minus on keypad */ +#define SHF_UP (KEY_OFFSET + 0x117) /* shift-up on keypad */ +#define SHF_DOWN (KEY_OFFSET + 0x118) /* shift-down on keypad */ +#define SHF_IC (KEY_OFFSET + 0x119) /* shift-insert on keypad */ +#define SHF_DC (KEY_OFFSET + 0x11a) /* shift-delete on keypad */ + +#define KEY_MOUSE (KEY_OFFSET + 0x11b) /* "mouse" key */ +#define KEY_SHIFT_L (KEY_OFFSET + 0x11c) /* Left-shift */ +#define KEY_SHIFT_R (KEY_OFFSET + 0x11d) /* Right-shift */ +#define KEY_CONTROL_L (KEY_OFFSET + 0x11e) /* Left-control */ +#define KEY_CONTROL_R (KEY_OFFSET + 0x11f) /* Right-control */ +#define KEY_ALT_L (KEY_OFFSET + 0x120) /* Left-alt */ +#define KEY_ALT_R (KEY_OFFSET + 0x121) /* Right-alt */ +#define KEY_RESIZE (KEY_OFFSET + 0x122) /* Window resize */ +#define KEY_SUP (KEY_OFFSET + 0x123) /* Shifted up arrow */ +#define KEY_SDOWN (KEY_OFFSET + 0x124) /* Shifted down arrow */ + + /* The following are PDCursesMod extensions. Even there, not all + platforms support them. */ + +#define KEY_APPS (KEY_OFFSET + 0x125) + +#define KEY_PAUSE (KEY_OFFSET + 0x126) + +#define KEY_PRINTSCREEN (KEY_OFFSET + 0x127) +#define KEY_SCROLLLOCK (KEY_OFFSET + 0x128) + +#define KEY_BROWSER_BACK (KEY_OFFSET + 0x129) +#define KEY_BROWSER_FWD (KEY_OFFSET + 0x12a) +#define KEY_BROWSER_REF (KEY_OFFSET + 0x12b) +#define KEY_BROWSER_STOP (KEY_OFFSET + 0x12c) +#define KEY_SEARCH (KEY_OFFSET + 0x12d) +#define KEY_FAVORITES (KEY_OFFSET + 0x12e) +#define KEY_BROWSER_HOME (KEY_OFFSET + 0x12f) +#define KEY_VOLUME_MUTE (KEY_OFFSET + 0x130) +#define KEY_VOLUME_DOWN (KEY_OFFSET + 0x131) +#define KEY_VOLUME_UP (KEY_OFFSET + 0x132) +#define KEY_NEXT_TRACK (KEY_OFFSET + 0x133) +#define KEY_PREV_TRACK (KEY_OFFSET + 0x134) +#define KEY_MEDIA_STOP (KEY_OFFSET + 0x135) +#define KEY_PLAY_PAUSE (KEY_OFFSET + 0x136) +#define KEY_LAUNCH_MAIL (KEY_OFFSET + 0x137) +#define KEY_MEDIA_SELECT (KEY_OFFSET + 0x138) +#define KEY_LAUNCH_APP1 (KEY_OFFSET + 0x139) +#define KEY_LAUNCH_APP2 (KEY_OFFSET + 0x13a) +#define KEY_LAUNCH_APP3 (KEY_OFFSET + 0x13b) +#define KEY_LAUNCH_APP4 (KEY_OFFSET + 0x13c) +#define KEY_LAUNCH_APP5 (KEY_OFFSET + 0x13d) +#define KEY_LAUNCH_APP6 (KEY_OFFSET + 0x13e) +#define KEY_LAUNCH_APP7 (KEY_OFFSET + 0x13f) +#define KEY_LAUNCH_APP8 (KEY_OFFSET + 0x140) +#define KEY_LAUNCH_APP9 (KEY_OFFSET + 0x141) +#define KEY_LAUNCH_APP10 (KEY_OFFSET + 0x142) + /* 0x200 - 0x142 = 0xbe = 190(decimal) keys are currently reserved */ + +#define KEY_MIN KEY_BREAK /* Minimum curses key value */ +#define KEY_MAX (KEY_OFFSET + 0x200) /* Maximum curses key */ + +#define KEY_F(n) (KEY_F0 + (n)) + +/*---------------------------------------------------------------------- + * + * PDCurses Function Declarations + * + */ + +/* Standard */ + +PDCEX int addch(const chtype); +PDCEX int addchnstr(const chtype *, int); +PDCEX int addchstr(const chtype *); +PDCEX int addnstr(const char *, int); +PDCEX int addstr(const char *); +PDCEX int attroff(chtype); +PDCEX int attron(chtype); +PDCEX int attrset(chtype); +PDCEX int attr_get(attr_t *, short *, void *); +PDCEX int attr_off(attr_t, void *); +PDCEX int attr_on(attr_t, void *); +PDCEX int attr_set(attr_t, short, void *); +PDCEX int baudrate(void); +PDCEX int beep(void); +PDCEX int bkgd(chtype); +PDCEX void bkgdset(chtype); +PDCEX int border(chtype, chtype, chtype, chtype, + chtype, chtype, chtype, chtype); +PDCEX int box(WINDOW *, chtype, chtype); +PDCEX bool can_change_color(void); +PDCEX int cbreak(void); +PDCEX int chgat(int, attr_t, short, const void *); +PDCEX int clearok(WINDOW *, bool); +PDCEX int clear(void); +PDCEX int clrtobot(void); +PDCEX int clrtoeol(void); +PDCEX int color_content(short, short *, short *, short *); +PDCEX int color_set(short, void *); +PDCEX int copywin(const WINDOW *, WINDOW *, int, int, int, + int, int, int, int); +PDCEX int curs_set(int); +PDCEX int def_prog_mode(void); +PDCEX int def_shell_mode(void); +PDCEX int delay_output(int); +PDCEX int delch(void); +PDCEX int deleteln(void); +PDCEX void delscreen(SCREEN *); +PDCEX int delwin(WINDOW *); +PDCEX WINDOW *derwin(WINDOW *, int, int, int, int); +PDCEX int doupdate(void); +PDCEX WINDOW *dupwin(WINDOW *); +PDCEX int echochar(const chtype); +PDCEX int echo(void); + +#ifdef PDC_WIDE + #ifdef PDC_FORCE_UTF8 + #ifdef CHTYPE_32 + #define endwin endwin_u32_4400 + #else + #define endwin endwin_u64_4400 + #endif + #else + #ifdef CHTYPE_32 + #define endwin endwin_w32_4400 + #else + #define endwin endwin_w64_4400 + #endif + #endif +#else /* 8-bit chtypes */ + #ifdef CHTYPE_32 + #define endwin endwin_x32_4400 + #else + #define endwin endwin_x64_4400 + #endif +#endif + +PDCEX int endwin(void); +PDCEX char erasechar(void); +PDCEX int erase(void); +PDCEX int extended_color_content(int, int *, int *, int *); +PDCEX int extended_pair_content(int, int *, int *); +PDCEX void filter(void); +PDCEX int flash(void); +PDCEX int flushinp(void); +PDCEX chtype getbkgd(WINDOW *); +PDCEX int getnstr(char *, int); +PDCEX int getstr(char *); +PDCEX WINDOW *getwin(FILE *); +PDCEX int halfdelay(int); +PDCEX bool has_colors(void); +PDCEX bool has_ic(void); +PDCEX bool has_il(void); +PDCEX int hline(chtype, int); +PDCEX void idcok(WINDOW *, bool); +PDCEX int idlok(WINDOW *, bool); +PDCEX void immedok(WINDOW *, bool); +PDCEX int inchnstr(chtype *, int); +PDCEX int inchstr(chtype *); +PDCEX chtype inch(void); +PDCEX int init_color(short, short, short, short); +PDCEX int init_extended_color(int, int, int, int); +PDCEX int init_extended_pair(int, int, int); +PDCEX int init_pair(short, short, short); +PDCEX WINDOW *initscr(void); +PDCEX int innstr(char *, int); +PDCEX int insch(chtype); +PDCEX int insdelln(int); +PDCEX int insertln(void); +PDCEX int insnstr(const char *, int); +PDCEX int insstr(const char *); +PDCEX int instr(char *); +PDCEX int intrflush(WINDOW *, bool); +PDCEX bool isendwin(void); +PDCEX bool is_linetouched(WINDOW *, int); +PDCEX bool is_wintouched(WINDOW *); +PDCEX char *keyname(int); +PDCEX int keypad(WINDOW *, bool); +PDCEX char killchar(void); +PDCEX int leaveok(WINDOW *, bool); +PDCEX char *longname(void); +PDCEX int meta(WINDOW *, bool); +PDCEX int move(int, int); +PDCEX int mvaddch(int, int, const chtype); +PDCEX int mvaddchnstr(int, int, const chtype *, int); +PDCEX int mvaddchstr(int, int, const chtype *); +PDCEX int mvaddnstr(int, int, const char *, int); +PDCEX int mvaddstr(int, int, const char *); +PDCEX int mvchgat(int, int, int, attr_t, short, const void *); +PDCEX int mvcur(int, int, int, int); +PDCEX int mvdelch(int, int); +PDCEX int mvderwin(WINDOW *, int, int); +PDCEX int mvgetch(int, int); +PDCEX int mvgetnstr(int, int, char *, int); +PDCEX int mvgetstr(int, int, char *); +PDCEX int mvhline(int, int, chtype, int); +PDCEX chtype mvinch(int, int); +PDCEX int mvinchnstr(int, int, chtype *, int); +PDCEX int mvinchstr(int, int, chtype *); +PDCEX int mvinnstr(int, int, char *, int); +PDCEX int mvinsch(int, int, chtype); +PDCEX int mvinsnstr(int, int, const char *, int); +PDCEX int mvinsstr(int, int, const char *); +PDCEX int mvinstr(int, int, char *); +PDCEX int mvprintw(int, int, const char *, ...); +PDCEX int mvscanw(int, int, const char *, ...); +PDCEX int mvvline(int, int, chtype, int); +PDCEX int mvwaddchnstr(WINDOW *, int, int, const chtype *, int); +PDCEX int mvwaddchstr(WINDOW *, int, int, const chtype *); +PDCEX int mvwaddch(WINDOW *, int, int, const chtype); +PDCEX int mvwaddnstr(WINDOW *, int, int, const char *, int); +PDCEX int mvwaddstr(WINDOW *, int, int, const char *); +PDCEX int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *); +PDCEX int mvwdelch(WINDOW *, int, int); +PDCEX int mvwgetch(WINDOW *, int, int); +PDCEX int mvwgetnstr(WINDOW *, int, int, char *, int); +PDCEX int mvwgetstr(WINDOW *, int, int, char *); +PDCEX int mvwhline(WINDOW *, int, int, chtype, int); +PDCEX int mvwinchnstr(WINDOW *, int, int, chtype *, int); +PDCEX int mvwinchstr(WINDOW *, int, int, chtype *); +PDCEX chtype mvwinch(WINDOW *, int, int); +PDCEX int mvwinnstr(WINDOW *, int, int, char *, int); +PDCEX int mvwinsch(WINDOW *, int, int, chtype); +PDCEX int mvwinsnstr(WINDOW *, int, int, const char *, int); +PDCEX int mvwinsstr(WINDOW *, int, int, const char *); +PDCEX int mvwinstr(WINDOW *, int, int, char *); +PDCEX int mvwin(WINDOW *, int, int); +PDCEX int mvwprintw(WINDOW *, int, int, const char *, ...); +PDCEX int mvwscanw(WINDOW *, int, int, const char *, ...); +PDCEX int mvwvline(WINDOW *, int, int, chtype, int); +PDCEX int napms(int); +PDCEX WINDOW *newpad(int, int); +PDCEX SCREEN *newterm(const char *, FILE *, FILE *); +PDCEX WINDOW *newwin(int, int, int, int); +PDCEX int nl(void); +PDCEX int nocbreak(void); +PDCEX int nodelay(WINDOW *, bool); +PDCEX int noecho(void); +PDCEX int nonl(void); +PDCEX void noqiflush(void); +PDCEX int noraw(void); +PDCEX int notimeout(WINDOW *, bool); +PDCEX int overlay(const WINDOW *, WINDOW *); +PDCEX int overwrite(const WINDOW *, WINDOW *); +PDCEX int pair_content(short, short *, short *); +PDCEX int pechochar(WINDOW *, chtype); +PDCEX int pnoutrefresh(WINDOW *, int, int, int, int, int, int); +PDCEX int prefresh(WINDOW *, int, int, int, int, int, int); +PDCEX int printw(const char *, ...); +PDCEX int putwin(WINDOW *, FILE *); +PDCEX void qiflush(void); +PDCEX int raw(void); +PDCEX int redrawwin(WINDOW *); +PDCEX int refresh(void); +PDCEX int reset_prog_mode(void); +PDCEX int reset_shell_mode(void); +PDCEX int resetty(void); +PDCEX int ripoffline(int, int (*)(WINDOW *, int)); +PDCEX int savetty(void); +PDCEX int scanw(const char *, ...); +PDCEX int scr_dump(const char *); +PDCEX int scr_init(const char *); +PDCEX int scr_restore(const char *); +PDCEX int scr_set(const char *); +PDCEX int scrl(int); +PDCEX int scroll(WINDOW *); +PDCEX int scrollok(WINDOW *, bool); +PDCEX SCREEN *set_term(SCREEN *); +PDCEX int setscrreg(int, int); +PDCEX attr_t slk_attr(void); +PDCEX int slk_attroff(const chtype); +PDCEX int slk_attr_off(const attr_t, void *); +PDCEX int slk_attron(const chtype); +PDCEX int slk_attr_on(const attr_t, void *); +PDCEX int slk_attrset(const chtype); +PDCEX int slk_attr_set(const attr_t, short, void *); +PDCEX int slk_clear(void); +PDCEX int extended_slk_color(int); +PDCEX int slk_color(short); +PDCEX int slk_init(int); +PDCEX char *slk_label(int); +PDCEX int slk_noutrefresh(void); +PDCEX int slk_refresh(void); +PDCEX int slk_restore(void); +PDCEX int slk_set(int, const char *, int); +PDCEX int slk_touch(void); +PDCEX int standend(void); +PDCEX int standout(void); +PDCEX int start_color(void); +PDCEX WINDOW *subpad(WINDOW *, int, int, int, int); +PDCEX WINDOW *subwin(WINDOW *, int, int, int, int); +PDCEX int syncok(WINDOW *, bool); +PDCEX chtype termattrs(void); +PDCEX attr_t term_attrs(void); +PDCEX char *termname(void); +PDCEX void timeout(int); +PDCEX int touchline(WINDOW *, int, int); +PDCEX int touchwin(WINDOW *); +PDCEX int typeahead(int); +PDCEX int untouchwin(WINDOW *); +PDCEX void use_env(bool); +PDCEX int vidattr(chtype); +PDCEX int vid_attr(attr_t, short, void *); +PDCEX int vidputs(chtype, int (*)(int)); +PDCEX int vid_puts(attr_t, short, void *, int (*)(int)); +PDCEX int vline(chtype, int); +PDCEX int vw_printw(WINDOW *, const char *, va_list); +PDCEX int vwprintw(WINDOW *, const char *, va_list); +PDCEX int vw_scanw(WINDOW *, const char *, va_list); +PDCEX int vwscanw(WINDOW *, const char *, va_list); +PDCEX int waddchnstr(WINDOW *, const chtype *, int); +PDCEX int waddchstr(WINDOW *, const chtype *); +PDCEX int waddch(WINDOW *, const chtype); +PDCEX int waddnstr(WINDOW *, const char *, int); +PDCEX int waddstr(WINDOW *, const char *); +PDCEX int wattroff(WINDOW *, chtype); +PDCEX int wattron(WINDOW *, chtype); +PDCEX int wattrset(WINDOW *, chtype); +PDCEX int wattr_get(WINDOW *, attr_t *, short *, void *); +PDCEX int wattr_off(WINDOW *, attr_t, void *); +PDCEX int wattr_on(WINDOW *, attr_t, void *); +PDCEX int wattr_set(WINDOW *, attr_t, short, void *); +PDCEX void wbkgdset(WINDOW *, chtype); +PDCEX int wbkgd(WINDOW *, chtype); +PDCEX int wborder(WINDOW *, chtype, chtype, chtype, chtype, + chtype, chtype, chtype, chtype); +PDCEX int wchgat(WINDOW *, int, attr_t, short, const void *); +PDCEX int wclear(WINDOW *); +PDCEX int wclrtobot(WINDOW *); +PDCEX int wclrtoeol(WINDOW *); +PDCEX int wcolor_set(WINDOW *, short, void *); +PDCEX void wcursyncup(WINDOW *); +PDCEX int wdelch(WINDOW *); +PDCEX int wdeleteln(WINDOW *); +PDCEX int wechochar(WINDOW *, const chtype); +PDCEX int werase(WINDOW *); +PDCEX int wgetch(WINDOW *); +PDCEX int wgetnstr(WINDOW *, char *, int); +PDCEX int wgetstr(WINDOW *, char *); +PDCEX int whline(WINDOW *, chtype, int); +PDCEX int winchnstr(WINDOW *, chtype *, int); +PDCEX int winchstr(WINDOW *, chtype *); +PDCEX chtype winch(WINDOW *); +PDCEX int winnstr(WINDOW *, char *, int); +PDCEX int winsch(WINDOW *, chtype); +PDCEX int winsdelln(WINDOW *, int); +PDCEX int winsertln(WINDOW *); +PDCEX int winsnstr(WINDOW *, const char *, int); +PDCEX int winsstr(WINDOW *, const char *); +PDCEX int winstr(WINDOW *, char *); +PDCEX int wmove(WINDOW *, int, int); +PDCEX int wnoutrefresh(WINDOW *); +PDCEX int wprintw(WINDOW *, const char *, ...); +PDCEX int wredrawln(WINDOW *, int, int); +PDCEX int wrefresh(WINDOW *); +PDCEX int wscanw(WINDOW *, const char *, ...); +PDCEX int wscrl(WINDOW *, int); +PDCEX int wsetscrreg(WINDOW *, int, int); +PDCEX int wstandend(WINDOW *); +PDCEX int wstandout(WINDOW *); +PDCEX void wsyncdown(WINDOW *); +PDCEX void wsyncup(WINDOW *); +PDCEX void wtimeout(WINDOW *, int); +PDCEX int wtouchln(WINDOW *, int, int, int); +PDCEX int wvline(WINDOW *, chtype, int); + +/* Wide-character functions */ + +#ifdef PDC_WIDE +PDCEX int addnwstr(const wchar_t *, int); +PDCEX int addwstr(const wchar_t *); +PDCEX int add_wch(const cchar_t *); +PDCEX int add_wchnstr(const cchar_t *, int); +PDCEX int add_wchstr(const cchar_t *); +PDCEX int bkgrnd(const cchar_t *); +PDCEX void bkgrndset(const cchar_t *); +PDCEX int border_set(const cchar_t *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *); +PDCEX int box_set(WINDOW *, const cchar_t *, const cchar_t *); +PDCEX int echo_wchar(const cchar_t *); +PDCEX int erasewchar(wchar_t *); +PDCEX int getbkgrnd(cchar_t *); +PDCEX int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *); +PDCEX int getn_wstr(wint_t *, int); +PDCEX int get_wch(wint_t *); +PDCEX int get_wstr(wint_t *); +PDCEX int hline_set(const cchar_t *, int); +PDCEX int innwstr(wchar_t *, int); +PDCEX int ins_nwstr(const wchar_t *, int); +PDCEX int ins_wch(const cchar_t *); +PDCEX int ins_wstr(const wchar_t *); +PDCEX int inwstr(wchar_t *); +PDCEX int in_wch(cchar_t *); +PDCEX int in_wchnstr(cchar_t *, int); +PDCEX int in_wchstr(cchar_t *); +PDCEX char *key_name(wchar_t); +PDCEX int killwchar(wchar_t *); +PDCEX int mvaddnwstr(int, int, const wchar_t *, int); +PDCEX int mvaddwstr(int, int, const wchar_t *); +PDCEX int mvadd_wch(int, int, const cchar_t *); +PDCEX int mvadd_wchnstr(int, int, const cchar_t *, int); +PDCEX int mvadd_wchstr(int, int, const cchar_t *); +PDCEX int mvgetn_wstr(int, int, wint_t *, int); +PDCEX int mvget_wch(int, int, wint_t *); +PDCEX int mvget_wstr(int, int, wint_t *); +PDCEX int mvhline_set(int, int, const cchar_t *, int); +PDCEX int mvinnwstr(int, int, wchar_t *, int); +PDCEX int mvins_nwstr(int, int, const wchar_t *, int); +PDCEX int mvins_wch(int, int, const cchar_t *); +PDCEX int mvins_wstr(int, int, const wchar_t *); +PDCEX int mvinwstr(int, int, wchar_t *); +PDCEX int mvin_wch(int, int, cchar_t *); +PDCEX int mvin_wchnstr(int, int, cchar_t *, int); +PDCEX int mvin_wchstr(int, int, cchar_t *); +PDCEX int mvvline_set(int, int, const cchar_t *, int); +PDCEX int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int); +PDCEX int mvwaddwstr(WINDOW *, int, int, const wchar_t *); +PDCEX int mvwadd_wch(WINDOW *, int, int, const cchar_t *); +PDCEX int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int); +PDCEX int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *); +PDCEX int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int); +PDCEX int mvwget_wch(WINDOW *, int, int, wint_t *); +PDCEX int mvwget_wstr(WINDOW *, int, int, wint_t *); +PDCEX int mvwhline_set(WINDOW *, int, int, const cchar_t *, int); +PDCEX int mvwinnwstr(WINDOW *, int, int, wchar_t *, int); +PDCEX int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int); +PDCEX int mvwins_wch(WINDOW *, int, int, const cchar_t *); +PDCEX int mvwins_wstr(WINDOW *, int, int, const wchar_t *); +PDCEX int mvwin_wch(WINDOW *, int, int, cchar_t *); +PDCEX int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int); +PDCEX int mvwin_wchstr(WINDOW *, int, int, cchar_t *); +PDCEX int mvwinwstr(WINDOW *, int, int, wchar_t *); +PDCEX int mvwvline_set(WINDOW *, int, int, const cchar_t *, int); +PDCEX int pecho_wchar(WINDOW *, const cchar_t*); +PDCEX int setcchar(cchar_t*, const wchar_t*, const attr_t, + short, const void*); +PDCEX int slk_wset(int, const wchar_t *, int); +PDCEX int unget_wch(const wchar_t); +PDCEX int vline_set(const cchar_t *, int); +PDCEX int waddnwstr(WINDOW *, const wchar_t *, int); +PDCEX int waddwstr(WINDOW *, const wchar_t *); +PDCEX int wadd_wch(WINDOW *, const cchar_t *); +PDCEX int wadd_wchnstr(WINDOW *, const cchar_t *, int); +PDCEX int wadd_wchstr(WINDOW *, const cchar_t *); +PDCEX int wbkgrnd(WINDOW *, const cchar_t *); +PDCEX void wbkgrndset(WINDOW *, const cchar_t *); +PDCEX int wborder_set(WINDOW *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *, const cchar_t *); +PDCEX int wecho_wchar(WINDOW *, const cchar_t *); +PDCEX int wgetbkgrnd(WINDOW *, cchar_t *); +PDCEX int wgetn_wstr(WINDOW *, wint_t *, int); +PDCEX int wget_wch(WINDOW *, wint_t *); +PDCEX int wget_wstr(WINDOW *, wint_t *); +PDCEX int whline_set(WINDOW *, const cchar_t *, int); +PDCEX int winnwstr(WINDOW *, wchar_t *, int); +PDCEX int wins_nwstr(WINDOW *, const wchar_t *, int); +PDCEX int wins_wch(WINDOW *, const cchar_t *); +PDCEX int wins_wstr(WINDOW *, const wchar_t *); +PDCEX int winwstr(WINDOW *, wchar_t *); +PDCEX int win_wch(WINDOW *, cchar_t *); +PDCEX int win_wchnstr(WINDOW *, cchar_t *, int); +PDCEX int win_wchstr(WINDOW *, cchar_t *); +PDCEX wchar_t *wunctrl(cchar_t *); +PDCEX int wvline_set(WINDOW *, const cchar_t *, int); +#endif + +/* Quasi-standard */ + +PDCEX chtype getattrs( const WINDOW *); +PDCEX int getbegx( const WINDOW *); +PDCEX int getbegy( const WINDOW *); +PDCEX int getmaxx( const WINDOW *); +PDCEX int getmaxy( const WINDOW *); +PDCEX int getparx( const WINDOW *); +PDCEX int getpary( const WINDOW *); +PDCEX int getcurx( const WINDOW *); +PDCEX int getcury( const WINDOW *); +PDCEX void traceoff(void); +PDCEX void traceon(void); +PDCEX void trace( const unsigned); +PDCEX unsigned curses_trace( const unsigned); +PDCEX char *unctrl(chtype); + +PDCEX int crmode(void); +PDCEX int nocrmode(void); +PDCEX int draino(int); +PDCEX int resetterm(void); +PDCEX int fixterm(void); +PDCEX int saveterm(void); +PDCEX void setsyx(int, int); + +PDCEX int mouse_set(mmask_t); +PDCEX int mouse_on(mmask_t); +PDCEX int mouse_off(mmask_t); +PDCEX int request_mouse_pos(void); +PDCEX void wmouse_position(WINDOW *, int *, int *); +PDCEX mmask_t getmouse(void); + +/* ncurses */ + +PDCEX int alloc_pair(int, int); +PDCEX int assume_default_colors(int, int); +PDCEX const char *curses_version(void); +PDCEX int find_pair(int, int); +PDCEX int free_pair( int); +PDCEX bool has_key(int); +PDCEX bool is_cleared(const WINDOW *); +PDCEX bool is_idcok(const WINDOW *); +PDCEX bool is_idlok(const WINDOW *); +PDCEX bool is_immedok(const WINDOW *); +PDCEX bool is_keypad(const WINDOW *); +PDCEX bool is_leaveok(const WINDOW *); +PDCEX bool is_nodelay(const WINDOW *); +PDCEX bool is_notimeout(const WINDOW *); +PDCEX bool is_pad(const WINDOW *); +PDCEX void reset_color_pairs( void); +PDCEX bool is_scrollok(const WINDOW *); +PDCEX bool is_subwin(const WINDOW *); +PDCEX bool is_syncok(const WINDOW *); +PDCEX int set_tabsize(int); +PDCEX int use_default_colors(void); +PDCEX int wgetdelay(const WINDOW *); +PDCEX WINDOW *wgetparent(const WINDOW *); +PDCEX int wgetscrreg(const WINDOW *, int *, int *); +PDCEX int wresize(WINDOW *, int, int); + +PDCEX bool has_mouse(void); +PDCEX int mouseinterval(int); +PDCEX mmask_t mousemask(mmask_t, mmask_t *); +PDCEX bool mouse_trafo(int *, int *, bool); +PDCEX int nc_getmouse(MEVENT *); +PDCEX int ungetmouse(MEVENT *); +PDCEX bool wenclose(const WINDOW *, int, int); +PDCEX bool wmouse_trafo(const WINDOW *, int *, int *, bool); + +/* PDCurses */ + +PDCEX int addrawch(chtype); +PDCEX int insrawch(chtype); +PDCEX bool is_termresized(void); +PDCEX int mvaddrawch(int, int, chtype); +PDCEX int mvdeleteln(int, int); +PDCEX int mvinsertln(int, int); +PDCEX int mvinsrawch(int, int, chtype); +PDCEX int mvwaddrawch(WINDOW *, int, int, chtype); +PDCEX int mvwdeleteln(WINDOW *, int, int); +PDCEX int mvwinsertln(WINDOW *, int, int); +PDCEX int mvwinsrawch(WINDOW *, int, int, chtype); +PDCEX int raw_output(bool); +PDCEX int resize_term(int, int); +PDCEX WINDOW *resize_window(WINDOW *, int, int); +PDCEX int waddrawch(WINDOW *, chtype); +PDCEX int winsrawch(WINDOW *, chtype); +PDCEX char wordchar(void); + +#ifdef PDC_WIDE +PDCEX wchar_t *slk_wlabel(int); +#endif + +PDCEX bool PDC_getcbreak(void); +PDCEX bool PDC_getecho(void); +PDCEX void PDC_debug(const char *, ...); +PDCEX void _tracef(const char *, ...); +PDCEX void PDC_get_version(PDC_VERSION *); +PDCEX int PDC_ungetch(int); +PDCEX int PDC_set_blink(bool); +PDCEX int PDC_set_bold(bool); +PDCEX int PDC_set_line_color(short); +PDCEX void PDC_set_title(const char *); +PDCEX int PDC_set_box_type( const int box_type); + +PDCEX int PDC_clearclipboard(void); +PDCEX int PDC_freeclipboard(char *); +PDCEX int PDC_getclipboard(char **, long *); +PDCEX int PDC_setclipboard(const char *, long); + +PDCEX unsigned long PDC_get_key_modifiers(void); +PDCEX int PDC_return_key_modifiers(bool); +PDCEX void PDC_set_resize_limits( const int new_min_lines, + const int new_max_lines, + const int new_min_cols, + const int new_max_cols); + +#define FUNCTION_KEY_SHUT_DOWN 0 +#define FUNCTION_KEY_PASTE 1 +#define FUNCTION_KEY_ENLARGE_FONT 2 +#define FUNCTION_KEY_SHRINK_FONT 3 +#define FUNCTION_KEY_CHOOSE_FONT 4 +#define FUNCTION_KEY_ABORT 5 +#define FUNCTION_KEY_COPY 6 +#define PDC_MAX_FUNCTION_KEYS 7 + +PDCEX int PDC_set_function_key( const unsigned function, + const int new_key); +PDCEX int PDC_get_function_key( const unsigned function); + +PDCEX void PDC_set_window_resized_callback(void (*callback)(void)); + +PDCEX WINDOW *Xinitscr(int, char **); +#ifdef XCURSES +PDCEX void XCursesExit(void); +PDCEX int sb_init(void); +PDCEX int sb_set_horz(int, int, int); +PDCEX int sb_set_vert(int, int, int); +PDCEX int sb_get_horz(int *, int *, int *); +PDCEX int sb_get_vert(int *, int *, int *); +PDCEX int sb_refresh(void); +#endif + +/* NetBSD */ + +PDCEX int touchoverlap(const WINDOW *, WINDOW *); +PDCEX int underend(void); +PDCEX int underscore(void); +PDCEX int wunderend(WINDOW *); +PDCEX int wunderscore(WINDOW *); + +/*** Functions defined as macros ***/ + +/* getch() and ungetch() conflict with some DOS libraries */ + +#define getch() wgetch(stdscr) +#define ungetch(ch) PDC_ungetch(ch) + +#define COLOR_PAIR(n) (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR) +#define PAIR_NUMBER(n) (((n) & A_COLOR) >> PDC_COLOR_SHIFT) + +/* These will _only_ work as macros */ + +#define getbegyx(w, y, x) (y = getbegy(w), x = getbegx(w)) +#define getmaxyx(w, y, x) (y = getmaxy(w), x = getmaxx(w)) +#define getparyx(w, y, x) (y = getpary(w), x = getparx(w)) +#define getyx(w, y, x) (y = getcury(w), x = getcurx(w)) + +#define getsyx(y, x) { if (is_leaveok( curscr)) (y)=(x)=-1; \ + else getyx(curscr,(y),(x)); } + +#ifdef NCURSES_MOUSE_VERSION +# define getmouse(x) nc_getmouse(x) +#endif + +/* Deprecated */ + +#define PDC_save_key_modifiers(x) (OK) +#define PDC_get_input_fd() 0 + +/* masks for PDC_set_box_type() */ + +#define PDC_BOX_DOUBLED_V 1 +#define PDC_BOX_DOUBLED_H 2 +#ifdef PDC_WIDE + #define PDC_BOX_THICK 4 +#endif + +/* return codes from PDC_getclipboard() and PDC_setclipboard() calls */ + +#define PDC_CLIP_SUCCESS 0 +#define PDC_CLIP_ACCESS_ERROR 1 +#define PDC_CLIP_EMPTY 2 +#define PDC_CLIP_MEMORY_ERROR 3 + +/* PDCurses key modifier masks */ + +#define PDC_KEY_MODIFIER_SHIFT 1 +#define PDC_KEY_MODIFIER_CONTROL 2 +#define PDC_KEY_MODIFIER_ALT 4 +#define PDC_KEY_MODIFIER_NUMLOCK 8 +#define PDC_KEY_MODIFIER_REPEAT 16 + +/* Bitflags for trace(), curses_trace(), for ncurses compatibility. +Values were copied from ncurses. Note that those involving terminfo, +termcap, and TTY control bits are meaningless in PDCurses and will be +ignored. */ + +#define TRACE_DISABLE 0x0000 /* turn off tracing */ +#define TRACE_TIMES 0x0001 /* trace user and system times of updates */ +#define TRACE_TPUTS 0x0002 /* trace tputs calls */ +#define TRACE_UPDATE 0x0004 /* trace update actions, old & new screens */ +#define TRACE_MOVE 0x0008 /* trace cursor moves and scrolls */ +#define TRACE_CHARPUT 0x0010 /* trace all character outputs */ +#define TRACE_ORDINARY 0x001F /* trace all update actions */ +#define TRACE_CALLS 0x0020 /* trace all curses calls */ +#define TRACE_VIRTPUT 0x0040 /* trace virtual character puts */ +#define TRACE_IEVENT 0x0080 /* trace low-level input processing */ +#define TRACE_BITS 0x0100 /* trace state of TTY control bits */ +#define TRACE_ICALLS 0x0200 /* trace internal/nested calls */ +#define TRACE_CCALLS 0x0400 /* trace per-character calls */ +#define TRACE_DATABASE 0x0800 /* trace read/write of terminfo/termcap data */ +#define TRACE_ATTRS 0x1000 /* trace attribute updates */ + +#define TRACE_SHIFT 13 /* number of bits in the trace masks */ +#define TRACE_MAXIMUM ((1u << TRACE_SHIFT) - 1u) /* max tracing */ + +#ifdef __cplusplus +# ifndef PDC_PP98 +# undef bool +# endif +} +#endif + +#endif /* __PDCURSES__ */ diff --git a/clangarm64/include/pdcurses/panel.h b/clangarm64/include/pdcurses/panel.h new file mode 100644 index 00000000000..5bbc34f6863 --- /dev/null +++ b/clangarm64/include/pdcurses/panel.h @@ -0,0 +1,41 @@ +/* Public Domain Curses */ + +/*----------------------------------------------------------------------* + * Panels for PDCurses * + *----------------------------------------------------------------------*/ + +#ifndef __PDCURSES_PANEL_H__ +#define __PDCURSES_PANEL_H__ 1 + +#include + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +extern "C" +{ +#endif + +typedef struct panel PANEL; + +PDCEX int bottom_panel(PANEL *pan); +PDCEX int del_panel(PANEL *pan); +PDCEX int hide_panel(PANEL *pan); +PDCEX int move_panel(PANEL *pan, int starty, int startx); +PDCEX PANEL *new_panel(WINDOW *win); +PDCEX PANEL *panel_above(const PANEL *pan); +PDCEX PANEL *panel_below(const PANEL *pan); +PDCEX PANEL *ground_panel(SCREEN *sp); +PDCEX PANEL *ceiling_panel(SCREEN *sp); +PDCEX int panel_hidden(const PANEL *pan); +PDCEX const void *panel_userptr(const PANEL *pan); +PDCEX WINDOW *panel_window(const PANEL *pan); +PDCEX int replace_panel(PANEL *pan, WINDOW *win); +PDCEX int set_panel_userptr(PANEL *pan, const void *uptr); +PDCEX int show_panel(PANEL *pan); +PDCEX int top_panel(PANEL *pan); +PDCEX void update_panels(void); + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +} +#endif + +#endif /* __PDCURSES_PANEL_H__ */ diff --git a/clangarm64/include/pdcurses/term.h b/clangarm64/include/pdcurses/term.h new file mode 100644 index 00000000000..323244feab7 --- /dev/null +++ b/clangarm64/include/pdcurses/term.h @@ -0,0 +1,48 @@ +/* Public Domain Curses */ + +/* PDCurses doesn't operate with terminfo, but we need these functions for + compatibility, to allow some things (notably, interface libraries for + other languages) to be compiled. Anyone who tries to actually _use_ + them will be disappointed, since they only return ERR. */ + +#ifndef __PDCURSES_TERM_H__ +#define __PDCURSES_TERM_H__ 1 + +#include + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +extern "C" +{ +#endif + +typedef struct +{ + const char *_termname; +} TERMINAL; + +/* PDCEX is defined in curses.h */ +PDCEX TERMINAL *cur_term; + +PDCEX int del_curterm(TERMINAL *); +PDCEX int putp(const char *); +PDCEX int restartterm(const char *, int, int *); +PDCEX TERMINAL *set_curterm(TERMINAL *); +PDCEX int setterm(const char *); +PDCEX int setupterm(const char *, int, int *); +PDCEX int tgetent(char *, const char *); +PDCEX int tgetflag(const char *); +PDCEX int tgetnum(const char *); +PDCEX char *tgetstr(const char *, char **); +PDCEX char *tgoto(const char *, int, int); +PDCEX int tigetflag(const char *); +PDCEX int tigetnum(const char *); +PDCEX char *tigetstr(const char *); +PDCEX char *tparm(const char *, long, long, long, long, long, + long, long, long, long); +PDCEX int tputs(const char *, int, int (*)(int)); + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +} +#endif + +#endif /* __PDCURSES_TERM_H__ */ diff --git a/clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/rb_mjit_min_header-3.1.5.h b/clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/rb_mjit_min_header-3.1.5.h new file mode 100644 index 00000000000..9cecf76afce --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/rb_mjit_min_header-3.1.5.h @@ -0,0 +1,97042 @@ +#define MJIT_HEADER 1 +#define RUBY_EXPORT 1 +#define __USE_MINGW_ANSI_STDIO 1 +#define FD_SETSIZE 2048 +#define _WIN32_WINNT 0x0600 +#define __MINGW_USE_VC2005_COMPAT 1 +#define _FORTIFY_SOURCE 2 +#define vm_exec rb_vm_exec + +#define RUBY_EVAL_INTERN_H + +#define RUBY_RUBY_H 1 + +#define RBIMPL_CONFIG_H + +#define INCLUDE_RUBY_CONFIG_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_WCHAR_H 1 +#define STDC_HEADERS 1 +#define _ALL_SOURCE 1 +#define _DARWIN_C_SOURCE 1 +#define _GNU_SOURCE 1 +#define _HPUX_ALT_XOPEN_SOCKET_API 1 +#define _NETBSD_SOURCE 1 +#define _OPENBSD_SOURCE 1 +#define _POSIX_PTHREAD_SEMANTICS 1 +#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1 +#define __STDC_WANT_IEC_60559_BFP_EXT__ 1 +#define __STDC_WANT_IEC_60559_DFP_EXT__ 1 +#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1 +#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1 +#define __STDC_WANT_LIB_EXT2__ 1 +#define __STDC_WANT_MATH_SPEC_FUNCS__ 1 +#define _TANDEM_SOURCE 1 +#define __EXTENSIONS__ 1 +#define RUBY_MSVCRT_VERSION 140 +#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)") +#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop") +#define HAVE_STMT_AND_DECL_IN_EXPR 1 +#define HAVE_TYPE_NET_LUID 1 +#define HAVE__GMTIME64_S 1 +#define HAVE__WFREOPEN_S 1 +#define HAVE_DIRENT_H 1 +#define HAVE__BOOL 1 +#define HAVE_STDBOOL_H 1 +#define HAVE_DIRECT_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_IEEEFP_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_LOCALE_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_PROCESS_H 1 +#define HAVE_SETJMPEX_H 1 +#define HAVE_STDALIGN_H 1 +#define HAVE_SYS_FCNTL_H 1 +#define HAVE_SYS_FILE_H 1 +#define HAVE_SYS_UTIME_H 1 +#define HAVE_TIME_H 1 +#define HAVE_GMP_H 1 +#define HAVE_LIBGMP 1 +#define _FILE_OFFSET_BITS 64 +#define HAVE_TYPEOF 1 +#define restrict __restrict__ +#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 +#define SIZEOF___INT128 16 +#define SIZEOF_OFF_T 8 +#define SIZEOF_VOIDP 8 +#define SIZEOF_FLOAT 4 +#define SIZEOF_DOUBLE 8 +#define SIZEOF_TIME_T 8 +#define SIZEOF_CLOCK_T 4 +#define PACKED_STRUCT(x) x __attribute__((packed)) +#define USE_UNALIGNED_MEMBER_ACCESS 1 +#define PRI_LL_PREFIX "ll" +#define HAVE_PID_T 1 +#define rb_pid_t pid_t +#define SIGNEDNESS_OF_PID_T -1 +#define PIDT2NUM(v) LL2NUM(v) +#define NUM2PIDT(v) NUM2LL(v) +#define PRI_PIDT_PREFIX PRI_LL_PREFIX +#define rb_uid_t int +#define SIGNEDNESS_OF_UID_T -1 +#define UIDT2NUM(v) INT2NUM(v) +#define NUM2UIDT(v) NUM2INT(v) +#define PRI_UIDT_PREFIX PRI_INT_PREFIX +#define rb_gid_t int +#define SIGNEDNESS_OF_GID_T -1 +#define GIDT2NUM(v) INT2NUM(v) +#define NUM2GIDT(v) NUM2INT(v) +#define PRI_GIDT_PREFIX PRI_INT_PREFIX +#define HAVE_TIME_T 1 +#define rb_time_t time_t +#define SIGNEDNESS_OF_TIME_T -1 +#define TIMET2NUM(v) LL2NUM(v) +#define NUM2TIMET(v) NUM2LL(v) +#define PRI_TIMET_PREFIX PRI_LL_PREFIX +#define HAVE_DEV_T 1 +#define rb_dev_t dev_t +#define SIGNEDNESS_OF_DEV_T +1 +#define DEVT2NUM(v) UINT2NUM(v) +#define NUM2DEVT(v) NUM2UINT(v) +#define PRI_DEVT_PREFIX PRI_INT_PREFIX +#define HAVE_MODE_T 1 +#define rb_mode_t mode_t +#define SIGNEDNESS_OF_MODE_T +1 +#define MODET2NUM(v) USHORT2NUM(v) +#define NUM2MODET(v) NUM2USHORT(v) +#define PRI_MODET_PREFIX PRI_SHORT_PREFIX +#define rb_rlim_t long +#define SIGNEDNESS_OF_RLIM_T -1 +#define RLIM2NUM(v) LONG2NUM(v) +#define NUM2RLIM(v) NUM2LONG(v) +#define PRI_RLIM_PREFIX PRI_LONG_PREFIX +#define HAVE_OFF_T 1 +#define rb_off_t off_t +#define SIGNEDNESS_OF_OFF_T -1 +#define OFFT2NUM(v) LL2NUM(v) +#define NUM2OFFT(v) NUM2LL(v) +#define PRI_OFFT_PREFIX PRI_LL_PREFIX +#define HAVE_CLOCKID_T 1 +#define rb_clockid_t clockid_t +#define SIGNEDNESS_OF_CLOCKID_T -1 +#define CLOCKID2NUM(v) INT2NUM(v) +#define NUM2CLOCKID(v) NUM2INT(v) +#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX +#define HAVE_VA_ARGS_MACRO 1 +#define HAVE__ALIGNOF 1 +#define CONSTFUNC(x) __attribute__ ((__const__)) x +#define PUREFUNC(x) __attribute__ ((__pure__)) x +#define NORETURN(x) __attribute__ ((__noreturn__)) x +#define DEPRECATED(x) __attribute__ ((__deprecated__)) x +#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x +#define NOINLINE(x) __attribute__ ((__noinline__)) x +#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x +#define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x +#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x +#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x +#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x +#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x +#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x +#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x +#define WEAK(x) __attribute__ ((__weak__)) x +#define HAVE_FUNC_WEAK 1 +#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg))) +#define HAVE_NULLPTR 1 +#define FUNC_STDCALL(x) __attribute__ ((__stdcall__)) x +#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x +#define FUNC_FASTCALL(x) __attribute__ ((__fastcall__)) x +#define FUNC_UNOPTIMIZED(x) __attribute__ ((__optimize__("O0"))) x +#define FUNC_MINIMIZED(x) __attribute__ ((__optimize__("-Os","-fomit-frame-pointer"))) x +#define HAVE_ATTRIBUTE_FUNCTION_ALIAS 1 +#define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) type prot __attribute__((alias(#name))); +#define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args) +#define HAVE_GCC_ATOMIC_BUILTINS 1 +#define HAVE_GCC_SYNC_BUILTINS 1 +#define UNREACHABLE __builtin_unreachable() +#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern +#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x +#define RUBY_FUNCTION_NAME_STRING __func__ +#define ENUM_OVER_INT 1 +#define HAVE_DECL_SYS_NERR 1 +#define HAVE_DECL_GETENV 1 +#define SIZEOF_SIZE_T 8 +#define SIZEOF_PTRDIFF_T 8 +#define SIZEOF_DEV_T 4 +#define PRI_SIZE_PREFIX "z" +#define PRI_PTRDIFF_PREFIX "t" +#define HAVE_STRUCT_STAT_ST_RDEV 1 +#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T +#define SIZEOF_STRUCT_STAT_ST_INO 2 +#define SIZEOF_STRUCT_STAT_ST_DEV SIZEOF_DEV_T +#define SIZEOF_STRUCT_STAT_ST_RDEV SIZEOF_DEV_T +#define HAVE_STRUCT_TIMEVAL 1 +#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_LONG +#define TYPEOF_TIMEVAL_TV_SEC long +#define HAVE_STRUCT_TIMESPEC 1 +#define HAVE_STRUCT_TIMEZONE 1 +#define HAVE_RB_FD_INIT 1 +#define HAVE_INT8_T 1 +#define SIZEOF_INT8_T 1 +#define HAVE_UINT8_T 1 +#define SIZEOF_UINT8_T 1 +#define HAVE_INT16_T 1 +#define SIZEOF_INT16_T 2 +#define HAVE_UINT16_T 1 +#define SIZEOF_UINT16_T 2 +#define HAVE_INT32_T 1 +#define SIZEOF_INT32_T 4 +#define HAVE_UINT32_T 1 +#define SIZEOF_UINT32_T 4 +#define HAVE_INT64_T 1 +#define SIZEOF_INT64_T 8 +#define HAVE_UINT64_T 1 +#define SIZEOF_UINT64_T 8 +#define HAVE_INT128_T 1 +#define int128_t __int128 +#define SIZEOF_INT128_T SIZEOF___INT128 +#define HAVE_UINT128_T 1 +#define uint128_t unsigned __int128 +#define SIZEOF_UINT128_T SIZEOF___INT128 +#define HAVE_INTPTR_T 1 +#define SIZEOF_INTPTR_T 8 +#define HAVE_UINTPTR_T 1 +#define SIZEOF_UINTPTR_T 8 +#define PRI_PTR_PREFIX "ll" +#define HAVE_SSIZE_T 1 +#define SIZEOF_SSIZE_T 8 +#define uid_t int +#define gid_t int +#define GETGROUPS_T int +#define HAVE_ALLOCA 1 +#define HAVE_DUP 1 +#define HAVE_DUP2 1 +#define HAVE_ACOSH 1 +#define HAVE_CBRT 1 +#define HAVE_ERF 1 +#define HAVE_FLOCK 1 +#define HAVE_HYPOT 1 +#define HAVE_MEMMOVE 1 +#define HAVE_NAN 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_STRCHR 1 +#define HAVE_STRERROR 1 +#define HAVE_STRSTR 1 +#define HAVE_ISFINITE 1 +#define HAVE_SIGNBIT 1 +#define vfork fork +#define HAVE_ATAN2L 1 +#define HAVE_ATAN2F 1 +#define HAVE_CHSIZE 1 +#define HAVE_CLOCK_GETTIME 1 +#define HAVE_COSH 1 +#define HAVE_FCNTL 1 +#define HAVE_FMOD 1 +#define HAVE_FSYNC 1 +#define HAVE_FTRUNCATE 1 +#define HAVE_FTRUNCATE64 1 +#define HAVE_GETCWD 1 +#define HAVE_GETLOGIN 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_GMTIME_R 1 +#define HAVE_LCHOWN 1 +#define HAVE_LINK 1 +#define HAVE_LLABS 1 +#define HAVE_LOG2 1 +#define HAVE_LSTAT 1 +#define HAVE_MBLEN 1 +#define HAVE_MKTIME 1 +#define HAVE_QSORT_S 1 +#define HAVE_READLINK 1 +#define HAVE_ROUND 1 +#define HAVE_SEEKDIR 1 +#define HAVE_SHUTDOWN 1 +#define HAVE_SINH 1 +#define HAVE_SPAWNV 1 +#define HAVE_SYMLINK 1 +#define HAVE_TANH 1 +#define HAVE_TELLDIR 1 +#define HAVE_TIMES 1 +#define HAVE_TRUNCATE 1 +#define HAVE_TRUNCATE64 1 +#define HAVE_WAITPID 1 +#define __STDC_WANT_LIB_EXT1__ 1 +#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1 +#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1 +#define HAVE_BUILTIN___BUILTIN_BSWAP16 1 +#define HAVE_BUILTIN___BUILTIN_BSWAP32 1 +#define HAVE_BUILTIN___BUILTIN_BSWAP64 1 +#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1 +#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1 +#define HAVE_BUILTIN___BUILTIN_CLZ 1 +#define HAVE_BUILTIN___BUILTIN_CLZL 1 +#define HAVE_BUILTIN___BUILTIN_CLZLL 1 +#define HAVE_BUILTIN___BUILTIN_CTZ 1 +#define HAVE_BUILTIN___BUILTIN_CTZLL 1 +#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1 +#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1 +#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1 +#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1 +#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1 +#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1 +#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1 +#define HAVE_BUILTIN___BUILTIN_TRAP 1 +#define HAVE_BUILTIN___BUILTIN_EXPECT 1 +#define ATAN2_INF_C99 1 +#define HAVE_CLOCK_GETRES 1 +#define VOID_UNSETENV 1 +#define HAVE_DECL_TZNAME 1 +#define HAVE_TZNAME 1 +#define HAVE_DAYLIGHT 1 +#define NEGATIVE_TIME_T 1 +#define RSHIFT(x,y) ((x)>>(int)(y)) +#define STACK_GROW_DIRECTION -1 +#define COROUTINE_H "coroutine/arm64/Context.h" +#define HAVE_CONST_PAGE_SIZE 0 +#define DLEXT_MAXLEN 3 +#define DLEXT ".so" +#define LIBDIR_BASENAME "lib" +#define EXECUTABLE_EXTS ".exe",".com",".cmd",".bat" +#define RUBY_SETJMP(env) setjmp((env)) +#define RUBY_LONGJMP(env,val) longjmp((env),val) +#define RUBY_JMP_BUF jmp_buf +#define USE_MJIT 1 +#define THREAD_IMPL_H "thread_win32.h" +#define THREAD_IMPL_SRC "thread_win32.c" +#define LOAD_RELATIVE 1 +#define RUBY_PLATFORM "aarch64-mingw-ucrt" + +#define RBIMPL_COMPILER_SINCE_H + +#define RBIMPL_COMPILER_IS_H +#define RBIMPL_COMPILER_IS(cc) RBIMPL_COMPILER_IS_ ## cc + +#define RBIMPL_COMPILER_IS_APPLE_H +#define RBIMPL_COMPILER_IS_Apple 0 + +#define RBIMPL_COMPILER_IS_CLANG_H +#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__ + +#define RBIMPL_COMPILER_IS_GCC_H + +#define RBIMPL_COMPILER_IS_INTEL_H +#define RBIMPL_COMPILER_IS_Intel 0 +#define RBIMPL_COMPILER_IS_GCC 0 + + +#define RBIMPL_COMPILER_IS_MSVC_H +#define RBIMPL_COMPILER_IS_MSVC 0 + +#define RBIMPL_COMPILER_IS_SUNPRO_H +#define RBIMPL_COMPILER_IS_SunPro 0 +#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))))))) +#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))))))) + +#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 +#define STRINGIZE(expr) STRINGIZE0(expr) +#define STRINGIZE0(expr) #expr +#define UNALIGNED_WORD_ACCESS 1 +#define RBIMPL_TEST3(q,w,e,...) e +#define RBIMPL_TEST2(...) RBIMPL_TEST3(__VA_OPT__(,),1,0,0) +#define RBIMPL_TEST1() RBIMPL_TEST2("ruby") +#define HAVE___VA_OPT__ +#undef RBIMPL_TEST1 +#undef RBIMPL_TEST2 +#undef RBIMPL_TEST3 +#define USE_RVARGC 0 +#define __STDARG_H +#define __need___va_list +#define __need_va_list +#define __need_va_arg +#define __need___va_copy +#define __need_va_copy +#define __GNUC_VA_LIST +typedef __builtin_va_list __gnuc_va_list; +#undef __need___va_list +#define _VA_LIST +typedef __builtin_va_list va_list; +#undef __need_va_list +#define va_start(ap,param) __builtin_va_start(ap, param) +#define va_end(ap) __builtin_va_end(ap) +#define va_arg(ap,type) __builtin_va_arg(ap, type) +#undef __need_va_arg +#define __va_copy(d,s) __builtin_va_copy(d, s) +#undef __need___va_copy +#define va_copy(dest,src) __builtin_va_copy(dest, src) +#undef __need_va_copy + + +#define RUBY_DEFINES_H 1 +#define _INC_STDIO +#define _STDIO_CONFIG_DEFINED +#define _INC_CORECRT +#define _INC__MINGW_H +#define _INC_CRTDEFS_MACRO +#define __STRINGIFY(x) #x +#define __MINGW64_STRINGIFY(x) __STRINGIFY(x) +#define __MINGW64_VERSION_MAJOR 12 +#define __MINGW64_VERSION_MINOR 0 +#define __MINGW64_VERSION_BUGFIX 0 +#define __MINGW64_VERSION_RC 0 +#define __MINGW64_VERSION_STR __MINGW64_STRINGIFY(__MINGW64_VERSION_MAJOR) "." __MINGW64_STRINGIFY(__MINGW64_VERSION_MINOR) "." __MINGW64_STRINGIFY(__MINGW64_VERSION_BUGFIX) +#define __MINGW64_VERSION_STATE "alpha" +#define __MINGW32_MAJOR_VERSION 3 +#define __MINGW32_MINOR_VERSION 11 +#define _M_ARM64 1 +#define _ARM64_ 1 +#undef _ +#define _ 1 +#define __MINGW_USE_UNDERSCORE_PREFIX 0 +#undef _ +#define __MINGW_IMP_SYMBOL(sym) __imp_##sym +#define __MINGW_IMP_LSYMBOL(sym) __imp_##sym +#define __MINGW_USYMBOL(sym) sym +#define __MINGW_LSYMBOL(sym) _##sym +#define __MINGW_ASM_CALL(func) __asm__(__MINGW64_STRINGIFY(__MINGW_USYMBOL(func))) +#define __MINGW_ASM_CRT_CALL(func) __asm__(__STRINGIFY(func)) +#undef __MINGW_EXTENSION +#define __MINGW_EXTENSION __extension__ +#define __C89_NAMELESS __MINGW_EXTENSION +#define __C89_NAMELESSSTRUCTNAME +#define __C89_NAMELESSSTRUCTNAME1 +#define __C89_NAMELESSSTRUCTNAME2 +#define __C89_NAMELESSSTRUCTNAME3 +#define __C89_NAMELESSSTRUCTNAME4 +#define __C89_NAMELESSSTRUCTNAME5 +#define __C89_NAMELESSUNIONNAME +#define __C89_NAMELESSUNIONNAME1 +#define __C89_NAMELESSUNIONNAME2 +#define __C89_NAMELESSUNIONNAME3 +#define __C89_NAMELESSUNIONNAME4 +#define __C89_NAMELESSUNIONNAME5 +#define __C89_NAMELESSUNIONNAME6 +#define __C89_NAMELESSUNIONNAME7 +#define __C89_NAMELESSUNIONNAME8 +#define __GNU_EXTENSION __MINGW_EXTENSION +#define __MINGW_HAVE_ANSI_C99_PRINTF 1 +#define __MINGW_HAVE_WIDE_C99_PRINTF 1 +#define __MINGW_HAVE_ANSI_C99_SCANF 1 +#define __MINGW_HAVE_WIDE_C99_SCANF 1 +#define __MINGW_POISON_NAME(__IFACE) __IFACE##_layout_has_not_been_verified_and_its_declaration_is_most_likely_incorrect +#define __MSABI_LONG(x) x ## l +#define __MINGW_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#define __MINGW_GNUC_PREREQ(major,minor) (__GNUC__ > (major) || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor))) +#define __MINGW_MSC_PREREQ(major,minor) 0 +#define __MINGW_ATTRIB_DEPRECATED_STR(X) +#define __MINGW_SEC_WARN_STR "This function or variable may be unsafe, use _CRT_SECURE_NO_WARNINGS to disable deprecation" +#define __MINGW_MSVC2005_DEPREC_STR "This POSIX function is deprecated beginning in Visual C++ 2005, use _CRT_NONSTDC_NO_DEPRECATE to disable deprecation" +#define __MINGW_ATTRIB_DEPRECATED_MSVC2005 __MINGW_ATTRIB_DEPRECATED_STR(__MINGW_MSVC2005_DEPREC_STR) +#define __MINGW_ATTRIB_DEPRECATED_SEC_WARN __MINGW_ATTRIB_DEPRECATED_STR(__MINGW_SEC_WARN_STR) +#define __MINGW_MS_PRINTF(__format,__args) __attribute__((__format__(ms_printf, __format,__args))) +#define __MINGW_MS_SCANF(__format,__args) __attribute__((__format__(ms_scanf, __format,__args))) +#define __MINGW_GNU_PRINTF(__format,__args) __attribute__((__format__(gnu_printf,__format,__args))) +#define __MINGW_GNU_SCANF(__format,__args) __attribute__((__format__(gnu_scanf, __format,__args))) +#undef __mingw_ovr +#define __mingw_ovr static __attribute__ ((__unused__)) __inline__ __cdecl +#define __mingw_attribute_artificial __attribute__((__artificial__)) +#define __MINGW_SELECTANY __attribute__((__selectany__)) +#define __MINGW_FORTIFY_LEVEL 2 +#define __mingw_bos_declare void __cdecl __chk_fail(void) __attribute__((__noreturn__)); void __cdecl __mingw_chk_fail_warn(void) __MINGW_ASM_CALL(__chk_fail) __attribute__((__noreturn__)) __attribute__((__warning__("Buffer overflow detected"))) +#define __mingw_bos(p,maxtype) __builtin_object_size((p), ((maxtype) > 0) && (__MINGW_FORTIFY_LEVEL > 1)) +#define __mingw_bos_known(p) (__mingw_bos(p, 0) != (size_t)-1) +#define __mingw_bos_cond_chk(c) (__builtin_expect((c), 1) ? (void)0 : __chk_fail()) +#define __mingw_bos_ptr_chk(p,n,maxtype) __mingw_bos_cond_chk(!__mingw_bos_known(p) || __mingw_bos(p, maxtype) >= (size_t)(n)) +#define __mingw_bos_ptr_chk_warn(p,n,maxtype) ((__mingw_bos_known(p) && __builtin_constant_p(__mingw_bos(p, maxtype) < (size_t)(n)) && __mingw_bos(p, maxtype) < (size_t)(n)) ? __mingw_chk_fail_warn() : __mingw_bos_ptr_chk(p, n, maxtype)) +#define __mingw_bos_ovr __mingw_ovr __attribute__((__always_inline__)) __mingw_attribute_artificial +#define __mingw_bos_extern_ovr extern __inline__ __cdecl __attribute__((__always_inline__, __gnu_inline__)) __mingw_attribute_artificial +#define __MINGW_FORTIFY_VA_ARG 0 +#define _INC_MINGW_SECAPI +#undef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES +#undef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY +#undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES +#undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT +#undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY +#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 0 +#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY 0 +#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 0 +#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 0 +#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY 0 +#define __MINGW_CRT_NAME_CONCAT2(sym) ::sym##_s +#define __CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY_0_3_(__ret,__func,__type1,__attrib1,__arg1,__type2,__attrib2,__arg2,__type3,__attrib3,__arg3) _CRTIMP __ret __cdecl __func(__type1 * __attrib1 __arg1, __type2 __attrib2 __arg2, __type3 __attrib3 __arg3) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; +#define __LONG32 long +#define __MINGW_IMPORT extern __attribute__ ((__dllimport__)) +#undef __USE_CRTIMP +#define __USE_CRTIMP 1 +#define _CRTIMP __attribute__ ((__dllimport__)) +#define __DECLSPEC_SUPPORTED +#define USE___UUIDOF 0 +#define _inline __inline +#define __CRT_INLINE extern inline __attribute__((__gnu_inline__)) +#define __MINGW_INTRIN_INLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +#define __UNUSED_PARAM(x) x __attribute__ ((__unused__)) +#define __restrict_arr __restrict +#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__)) +#define __MINGW_ATTRIB_CONST __attribute__ ((__const__)) +#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__)) +#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__)) +#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg))) +#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__)) +#define __MINGW_ATTRIB_USED __attribute__ ((__used__)) +#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__)) +#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __attribute__ ((__deprecated__(x))) +#define __MINGW_NOTHROW __attribute__ ((__nothrow__)) +#define __MINGW_ATTRIB_NO_OPTIMIZE +#define __MINGW_PRAGMA_PARAM(x) +#define __MINGW_BROKEN_INTERFACE(x) __MINGW_PRAGMA_PARAM(message ("Interface " _CRT_STRINGIZE(x) " has unverified layout.")) +#define __MSVCRT_VERSION__ 0xE00 +#define _UCRT +#define _INT128_DEFINED +#define __int8 char +#define __int16 short +#define __int32 int +#define __int64 long long +#define __ptr32 +#define __ptr64 +#define __unaligned +#define __w64 +#define __forceinline extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +#define __nothrow +#define _INC_VADEFS +#define MINGW_SDK_INIT +#define MINGW_HAS_SECURE_API 1 +#define __STDC_SECURE_LIB__ 200411L +#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__ + +#define MINGW_DDK_H +#define MINGW_HAS_DDK_H 1 +#undef _CRT_PACKING +#define _CRT_PACKING 8 +#pragma pack(push,_CRT_PACKING) +#define _VA_LIST_DEFINED + typedef __gnuc_va_list va_list; +#define _ADDRESSOF(v) (&(v)) +#define _crt_va_start(v,l) __builtin_va_start(v,l) +#define _crt_va_arg(v,l) __builtin_va_arg(v,l) +#define _crt_va_end(v) __builtin_va_end(v) +#define _crt_va_copy(d,s) __builtin_va_copy(d,s) +#pragma pack(pop) +#define __CRT_STRINGIZE(_Value) #_Value +#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value) +#define __CRT_WIDE(_String) L ## _String +#define _CRT_WIDE(_String) __CRT_WIDE(_String) +#define _W64 +#define _CRTIMP_NOIA64 _CRTIMP +#define _CRTIMP2 _CRTIMP +#define _CRTIMP_ALTERNATIVE _CRTIMP +#define _CRT_ALTERNATIVE_IMPORTED +#define _MRTIMP2 _CRTIMP +#define _DLL +#define _MT +#define _MCRTIMP _CRTIMP +#define _CRTIMP_PURE _CRTIMP +#define _PGLOBAL +#define _AGLOBAL +#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD +#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated) +#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement) +#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement) +#define _CRT_MANAGED_HEAP_DEPRECATE +#define _CRT_OBSOLETE(_NewItem) +#define _CONST_RETURN +#define UNALIGNED +#define _CRT_ALIGN(x) __attribute__ ((__aligned__ (x))) +#define __CRTDECL __cdecl +#define _ARGMAX 100 +#define _TRUNCATE ((size_t)-1) +#define _CRT_UNUSED(x) (void)x +#define __USE_MINGW_ANSI_STDIO 1 +#undef _CRT_glob +#define _CRT_glob _dowildcard +#define __ANONYMOUS_DEFINED +#define _ANONYMOUS_UNION __MINGW_EXTENSION +#define _ANONYMOUS_STRUCT __MINGW_EXTENSION +#define _UNION_NAME(x) +#define _STRUCT_NAME(x) +#define DUMMYUNIONNAME +#define DUMMYUNIONNAME1 +#define DUMMYUNIONNAME2 +#define DUMMYUNIONNAME3 +#define DUMMYUNIONNAME4 +#define DUMMYUNIONNAME5 +#define DUMMYUNIONNAME6 +#define DUMMYUNIONNAME7 +#define DUMMYUNIONNAME8 +#define DUMMYUNIONNAME9 +#define DUMMYSTRUCTNAME +#define DUMMYSTRUCTNAME1 +#define DUMMYSTRUCTNAME2 +#define DUMMYSTRUCTNAME3 +#define DUMMYSTRUCTNAME4 +#define DUMMYSTRUCTNAME5 +#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) +#define __MINGW_DEBUGBREAK_IMPL !__has_builtin(__debugbreak) +void __attribute__((__cdecl__)) __debugbreak(void); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void __attribute__((__cdecl__)) __debugbreak(void) +{ + __asm__ __volatile__("brk #0xf000"); +} +#define __MINGW_FASTFAIL_IMPL !__has_builtin(__fastfail) +void __attribute__((__cdecl__)) __attribute__ ((__noreturn__)) __fastfail(unsigned int code); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void __attribute__((__cdecl__)) __attribute__ ((__noreturn__)) __fastfail(unsigned int code) +{ + register unsigned int w0 __asm__("w0") = code; + __asm__ __volatile__("brk #0xf003"::"r"(w0)); + __builtin_unreachable(); +} +#define __MINGW_PREFETCH_IMPL !__has_builtin(__prefetch) +void __attribute__((__cdecl__)) __prefetch(const void *addr); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void __attribute__((__cdecl__)) __prefetch(const void *addr) +{ + __asm__ __volatile__("prfm pldl1keep, [%0]"::"r"(addr)); +} +const char *__mingw_get_crt_info (void); +#undef _CRT_PACKING +#define _CRT_PACKING 8 +#pragma pack(push,_CRT_PACKING) +#define _CRTNOALIAS +#define _CRTRESTRICT +#define _SIZE_T_DEFINED +#undef size_t +__extension__ typedef unsigned long long size_t; +#define _SSIZE_T_DEFINED +#undef ssize_t +__extension__ typedef long long ssize_t; +typedef size_t rsize_t; +#define _RSIZE_T_DEFINED +#define _INTPTR_T_DEFINED +#define __intptr_t_defined +#undef intptr_t +__extension__ typedef long long intptr_t; +#define _UINTPTR_T_DEFINED +#define __uintptr_t_defined +#undef uintptr_t +__extension__ typedef unsigned long long uintptr_t; +#define _PTRDIFF_T_DEFINED +#define _PTRDIFF_T_ +#undef ptrdiff_t +__extension__ typedef long long ptrdiff_t; +#define _WCHAR_T_DEFINED +typedef unsigned short wchar_t; +#define _WCTYPE_T_DEFINED +#define _WINT_T +typedef unsigned short wint_t; +typedef unsigned short wctype_t; +#define _ERRCODE_DEFINED +typedef int errno_t; +#define _TIME32_T_DEFINED +typedef long __time32_t; +#define _TIME64_T_DEFINED +__extension__ typedef long long __time64_t; +#define _TIME_T_DEFINED +typedef __time64_t time_t; +#define _CRT_SECURE_CPP_NOTHROW throw() +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2) +#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3,__arg4_type,__arg4) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3, __arg4_type, __arg4) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3) +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3,__arg4_type,__arg4) +struct threadlocaleinfostruct; +struct threadmbcinfostruct; +typedef struct threadlocaleinfostruct *pthreadlocinfo; +typedef struct threadmbcinfostruct *pthreadmbcinfo; +struct __lc_time_data; +typedef struct localeinfo_struct { + pthreadlocinfo locinfo; + pthreadmbcinfo mbcinfo; +} _locale_tstruct,*_locale_t; +#define _TAGLC_ID_DEFINED +typedef struct tagLC_ID { + unsigned short wLanguage; + unsigned short wCountry; + unsigned short wCodePage; +} LC_ID,*LPLC_ID; +#define _THREADLOCALEINFO +typedef struct threadlocaleinfostruct { + const unsigned short *_locale_pctype; + int _locale_mb_cur_max; + unsigned int _locale_lc_codepage; +} threadlocinfo; +#define __crt_typefix(ctype) +#define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP +#pragma pack(pop) + +#define _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION 0x0001ULL +#define _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR 0x0002ULL +#define _CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS 0x0004ULL +#define _CRT_INTERNAL_PRINTF_LEGACY_MSVCRT_COMPATIBILITY 0x0008ULL +#define _CRT_INTERNAL_PRINTF_LEGACY_THREE_DIGIT_EXPONENTS 0x0010ULL +#define _CRT_INTERNAL_SCANF_SECURECRT 0x0001ULL +#define _CRT_INTERNAL_SCANF_LEGACY_WIDE_SPECIFIERS 0x0002ULL +#define _CRT_INTERNAL_SCANF_LEGACY_MSVCRT_COMPATIBILITY 0x0004ULL +#define _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS _CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS +#define _CRT_INTERNAL_LOCAL_SCANF_OPTIONS _CRT_INTERNAL_SCANF_LEGACY_WIDE_SPECIFIERS + +#pragma pack(push,_CRT_PACKING) +#undef snprintf +#undef vsnprintf +#undef snwprintf +#undef vsnwprintf +#define BUFSIZ 512 +#define _NFILE _NSTREAM_ +#define _NSTREAM_ 512 +#define _IOB_ENTRIES 20 +#define EOF (-1) + struct _iobuf { + void *_Placeholder; + }; + typedef struct _iobuf FILE; +#define _FILE_DEFINED +#define _P_tmpdir "\\" +#define _wP_tmpdir L"\\" +#define L_tmpnam 260 +#define SEEK_CUR 1 +#define SEEK_END 2 +#define SEEK_SET 0 +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 +#define FILENAME_MAX 260 +#define FOPEN_MAX 20 +#define _SYS_OPEN 20 +#define TMP_MAX 2147483647 +#define NULL ((void *)0) + +#define _OFF_T_DEFINED +#define _OFF_T_ + typedef long _off_t; + typedef long off32_t; +#define _OFF64_T_DEFINED + __extension__ typedef long long _off64_t; + __extension__ typedef long long off64_t; +#define _FILE_OFFSET_BITS_SET_OFFT +typedef off64_t off_t; + +__attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) __acrt_iob_func(unsigned index); + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) __iob_func(void); +#define _iob __iob_func() +#define _FPOS_T_DEFINED +#undef _FPOSOFF + __extension__ typedef long long fpos_t; +#define _FPOSOFF(fp) ((long)(fp)) +#define _STDSTREAM_DEFINED +#define stdin (__acrt_iob_func(0)) +#define stdout (__acrt_iob_func(1)) +#define stderr (__acrt_iob_func(2)) +#define _IOFBF 0x0000 +#define _IOLBF 0x0040 +#define _IONBF 0x0004 +void __attribute__((__cdecl__)) __chk_fail(void) __attribute__((__noreturn__)); void __attribute__((__cdecl__)) __mingw_chk_fail_warn(void) __asm__("__chk_fail") __attribute__((__noreturn__)) __attribute__((__warning__("Buffer overflow detected"))); +extern + __attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...); +extern + __attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vsscanf (const char * __restrict__ _Str,const char * __restrict__ Format,va_list argp); +extern + __attribute__((__format__ (gnu_scanf, 1, 2))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_scanf(const char * __restrict__ _Format,...); +extern + __attribute__((__format__ (gnu_scanf, 1, 0))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_vscanf(const char * __restrict__ Format, va_list argp); +extern + __attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...); +extern + __attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vfscanf (FILE * __restrict__ fp, const char * __restrict__ Format,va_list argp); +extern + __attribute__((__format__ (gnu_printf, 3, 0))) __attribute__ ((__nonnull__ (3))) + int __attribute__((__cdecl__)) __mingw_vsnprintf(char * __restrict__ _DstBuf,size_t _MaxCount,const char * __restrict__ _Format, + va_list _ArgList); +extern + __attribute__((__format__ (gnu_printf, 3, 4))) __attribute__ ((__nonnull__ (3))) + int __attribute__((__cdecl__)) __mingw_snprintf(char * __restrict__ s, size_t n, const char * __restrict__ format, ...); +extern + __attribute__((__format__ (gnu_printf, 1, 2))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_printf(const char * __restrict__ , ... ) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (gnu_printf, 1, 0))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_vprintf (const char * __restrict__ , va_list) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_fprintf (FILE * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vfprintf (FILE * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_sprintf (char * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vsprintf (char * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (gnu_printf, 2, 3))) __attribute__((nonnull (1,2))) + int __attribute__((__cdecl__)) __mingw_asprintf(char ** __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (gnu_printf, 2, 0))) __attribute__((nonnull (1,2))) + int __attribute__((__cdecl__)) __mingw_vasprintf(char ** __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (ms_scanf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...); +extern + __attribute__((__format__ (ms_scanf, 1, 2))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __ms_scanf(const char * __restrict__ _Format,...); +extern + __attribute__((__format__ (ms_scanf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...); +extern + __attribute__((__format__ (ms_printf, 1, 2))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __ms_printf(const char * __restrict__ , ... ) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (ms_printf, 1, 0))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __ms_vprintf (const char * __restrict__ , va_list) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (ms_printf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_fprintf (FILE * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (ms_printf, 2, 0))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_vfprintf (FILE * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (ms_printf, 2, 3))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_sprintf (char * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__)); +extern + __attribute__((__format__ (ms_printf, 2, 0))) __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_vsprintf (char * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__)); + int __attribute__((__cdecl__)) __stdio_common_vsprintf(unsigned long long options, char *str, size_t len, const char *format, _locale_t locale, va_list valist); + int __attribute__((__cdecl__)) __stdio_common_vfprintf(unsigned long long options, FILE *file, const char *format, _locale_t locale, va_list valist); + int __attribute__((__cdecl__)) __stdio_common_vsscanf(unsigned long long options, const char *input, size_t length, const char *format, _locale_t locale, va_list valist); + int __attribute__((__cdecl__)) __stdio_common_vfscanf(unsigned long long options, FILE *file, const char *format, _locale_t locale, va_list valist); +#undef __MINGW_PRINTF_FORMAT +#undef __MINGW_SCANF_FORMAT +#define __MINGW_PRINTF_FORMAT printf +#define __MINGW_SCANF_FORMAT scanf +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__ ((__format__ (gnu_printf, 2, 3))) __attribute__((nonnull (1,2))) +int asprintf(char **__ret, const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vasprintf( __ret, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__ ((__format__ (gnu_printf, 2, 0))) __attribute__((nonnull (1,2))) +int vasprintf(char **__ret, const char *__format, __builtin_va_list __local_argv) +{ + return __mingw_vasprintf( __ret, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2))) +int sscanf(const char *__source, const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vsscanf( __source, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_scanf, 1, 2))) __attribute__ ((__nonnull__ (1))) +int scanf(const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfscanf( (__acrt_iob_func(0)), __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2))) +int fscanf(FILE *__stream, const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfscanf( __stream, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wshadow" +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2))) +int vsscanf (const char *__source, const char *__format, __builtin_va_list __local_argv) +{ + return __mingw_vsscanf( __source, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_scanf, 1, 0))) __attribute__ ((__nonnull__ (1))) +int vscanf(const char *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfscanf( (__acrt_iob_func(0)), __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2))) +int vfscanf (FILE *__stream, const char *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfscanf( __stream, __format, __local_argv ); +} +#pragma GCC diagnostic pop +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2))) +int fprintf (FILE *__stream, const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfprintf( __stream, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_printf, 1, 2))) __attribute__ ((__nonnull__ (1))) +int printf (const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfprintf( (__acrt_iob_func(1)), __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2))) +int sprintf (char *__stream, const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vsprintf( __stream, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2))) +int vfprintf (FILE *__stream, const char *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfprintf( __stream, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_printf, 1, 0))) __attribute__ ((__nonnull__ (1))) +int vprintf (const char *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfprintf( (__acrt_iob_func(1)), __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__)) __attribute__((__artificial__)) +__attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2))) +int vsprintf (char *__stream, const char *__format, __builtin_va_list __local_argv) +{ + if ((__builtin_object_size((__stream), ((0) > 0) && (2 > 1)) != (size_t)-1)) { + int __retval = __mingw_vsnprintf( __stream, __builtin_object_size((__stream), ((1) > 0) && (2 > 1)), __format, __local_argv ); + if (__retval >= 0) + (__builtin_expect((!(__builtin_object_size((__stream), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__stream), ((1) > 0) && (2 > 1)) >= (size_t)((size_t)__retval + 1)), 1) ? (void)0 : __chk_fail()); + return __retval; + } + return __mingw_vsprintf( __stream, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +__attribute__((__format__ (gnu_printf, 3, 4))) __attribute__ ((__nonnull__ (3))) +int snprintf (char *__stream, size_t __n, const char *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vsnprintf( __stream, __n, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__)) __attribute__((__artificial__)) +__attribute__((__format__ (gnu_printf, 3, 0))) __attribute__ ((__nonnull__ (3))) +int vsnprintf (char *__stream, size_t __n, const char *__format, __builtin_va_list __local_argv) +{ + (((__builtin_object_size((__stream), ((0) > 0) && (2 > 1)) != (size_t)-1) && __builtin_constant_p(__builtin_object_size((__stream), ((1) > 0) && (2 > 1)) < (size_t)(__n)) && __builtin_object_size((__stream), ((1) > 0) && (2 > 1)) < (size_t)(__n)) ? __mingw_chk_fail_warn() : (__builtin_expect((!(__builtin_object_size((__stream), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__stream), ((1) > 0) && (2 > 1)) >= (size_t)(__n)), 1) ? (void)0 : __chk_fail())); + return __mingw_vsnprintf( __stream, __n, __format, __local_argv ); +} +#define __builtin_vsnprintf __mingw_vsnprintf +#define __builtin_vsprintf __mingw_vsprintf + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _filbuf(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _flsbuf(int _Ch,FILE *_File); + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _fsopen(const char *_Filename,const char *_Mode,int _ShFlag); + void __attribute__((__cdecl__)) clearerr(FILE *_File); + int __attribute__((__cdecl__)) fclose(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fcloseall(void); + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _fdopen(int _FileHandle,const char *_Mode); + int __attribute__((__cdecl__)) feof(FILE *_File); + int __attribute__((__cdecl__)) ferror(FILE *_File); + int __attribute__((__cdecl__)) fflush(FILE *_File); + int __attribute__((__cdecl__)) fgetc(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fgetchar(void); + int __attribute__((__cdecl__)) fgetpos(FILE * __restrict__ _File ,fpos_t * __restrict__ _Pos); + int __attribute__((__cdecl__)) fgetpos64(FILE * __restrict__ _File ,fpos_t * __restrict__ _Pos); + char *__attribute__((__cdecl__)) fgets(char * __restrict__ _Buf,int _MaxCount,FILE * __restrict__ _File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fileno(FILE *_File); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _tempnam(const char *_DirName,const char *_FilePrefix); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _flushall(void); + FILE *__attribute__((__cdecl__)) fopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode) ; + FILE *fopen64(const char * __restrict__ filename,const char * __restrict__ mode); + int __attribute__((__cdecl__)) fputc(int _Ch,FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fputchar(int _Ch); + int __attribute__((__cdecl__)) fputs(const char * __restrict__ _Str,FILE * __restrict__ _File); + size_t __attribute__((__cdecl__)) fread(void * __restrict__ _DstBuf,size_t _ElementSize,size_t _Count,FILE * __restrict__ _File); + FILE *__attribute__((__cdecl__)) freopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode,FILE * __restrict__ _File) ; + int __attribute__((__cdecl__)) fsetpos(FILE *_File,const fpos_t *_Pos); + int __attribute__((__cdecl__)) fsetpos64(FILE *_File,const fpos_t *_Pos); + int __attribute__((__cdecl__)) fseek(FILE *_File,long _Offset,int _Origin); + long __attribute__((__cdecl__)) ftell(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fseeki64(FILE *_File,long long _Offset,int _Origin); + __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _ftelli64(FILE *_File); + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int fseeko(FILE *_File, _off_t _Offset, int _Origin) { + return fseek(_File, _Offset, _Origin); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int fseeko64(FILE *_File, _off64_t _Offset, int _Origin) { + return _fseeki64(_File, _Offset, _Origin); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) _off_t ftello(FILE *_File) { + return ftell(_File); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) _off64_t ftello64(FILE *_File) { + return _ftelli64(_File); + } +#define _FILE_OFFSET_BITS_SET_FSEEKO +#define fseeko fseeko64 +#define _FILE_OFFSET_BITS_SET_FTELLO +#define ftello ftello64 + size_t __attribute__((__cdecl__)) fwrite(const void * __restrict__ _Str,size_t _Size,size_t _Count,FILE * __restrict__ _File); + int __attribute__((__cdecl__)) getc(FILE *_File); + int __attribute__((__cdecl__)) getchar(void); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _getmaxstdio(void); + char *__attribute__((__cdecl__)) gets(char *_Buffer) + __attribute__((__warning__("Using gets() is always unsafe - use fgets() instead"))); + int __attribute__((__cdecl__)) _getw(FILE *_File); +#define _CRT_PERROR_DEFINED + void __attribute__((__cdecl__)) perror(const char *_ErrMsg); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _pclose(FILE *_File); + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _popen(const char *_Command,const char *_Mode); +#define popen _popen +#define pclose _pclose + int __attribute__((__cdecl__)) putc(int _Ch,FILE *_File); + int __attribute__((__cdecl__)) putchar(int _Ch); + int __attribute__((__cdecl__)) puts(const char *_Str); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _putw(int _Word,FILE *_File); +#define _CRT_DIRECTORY_DEFINED + int __attribute__((__cdecl__)) remove(const char *_Filename); + int __attribute__((__cdecl__)) rename(const char *_OldFilename,const char *_NewFilename); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _unlink(const char *_Filename); + int __attribute__((__cdecl__)) unlink(const char *_Filename) ; + void __attribute__((__cdecl__)) rewind(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _rmtmp(void); + void __attribute__((__cdecl__)) setbuf(FILE * __restrict__ _File,char * __restrict__ _Buffer) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _setmaxstdio(int _Max); + __attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) _set_output_format(unsigned int _Format); + __attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) _get_output_format(void); + int __attribute__((__cdecl__)) setvbuf(FILE * __restrict__ _File,char * __restrict__ _Buf,int _Mode,size_t _Size); + __attribute__ ((__pure__)) + __attribute__((__format__ (printf, 1, 2))) __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) _scprintf(const char * __restrict__ _Format,...); + __attribute__((__format__ (scanf, 3, 4))) __attribute__ ((__nonnull__ (3))) + int __attribute__((__cdecl__)) _snscanf(const char * __restrict__ _Src,size_t _MaxCount,const char * __restrict__ _Format,...) ; + __attribute__ ((__pure__)) + __attribute__((__format__ (ms_printf, 1, 0))) __attribute__ ((__nonnull__ (1))) + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vscprintf(const char * __restrict__ _Format,va_list _ArgList); + FILE *__attribute__((__cdecl__)) tmpfile(void) ; + char *__attribute__((__cdecl__)) tmpnam(char *_Buffer); + int __attribute__((__cdecl__)) ungetc(int _Ch,FILE *_File); + __attribute__((__format__ (printf, 3, 0))) __attribute__ ((__nonnull__ (3))) + int __attribute__((__cdecl__)) _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) ; + __attribute__((__format__ (printf, 3, 4))) __attribute__ ((__nonnull__ (3))) + int __attribute__((__cdecl__)) _snprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,...) ; +char * __attribute__((__cdecl__)) __gets_chk(char *, size_t); +char * __attribute__((__cdecl__)) __mingw_call_gets_warn(char *) __asm__("gets") + __attribute__((__warning__("Using gets() is always unsafe - use fgets() instead"))); +char * __attribute__((__cdecl__)) __mingw_call_fgets(char * __restrict__, int, FILE * __restrict__) __asm__("fgets"); +size_t __attribute__((__cdecl__)) __mingw_call_fread(void * __restrict__, size_t, size_t, FILE * __restrict__) __asm__("fread"); +char * __attribute__((__cdecl__)) __mingw_call_tmpnam(char *) __asm__("tmpnam"); +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +char * gets(char * __dst) +{ + if ((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1)) + return __gets_chk(__dst, __builtin_object_size((__dst), ((1) > 0) && (2 > 1))); + return __mingw_call_gets_warn(__dst); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +char * fgets(char * __restrict__ __dst, int __n, FILE * __restrict__ __f) +{ + (((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) && __builtin_constant_p(__builtin_object_size((__dst), ((1) > 0) && (2 > 1)) < (size_t)(__n)) && __builtin_object_size((__dst), ((1) > 0) && (2 > 1)) < (size_t)(__n)) ? __mingw_chk_fail_warn() : (__builtin_expect((!(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__dst), ((1) > 0) && (2 > 1)) >= (size_t)(__n)), 1) ? (void)0 : __chk_fail())); + return __mingw_call_fgets(__dst, __n, __f); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +size_t fread(void * __restrict__ __dst, size_t __sz, size_t __n, FILE * __restrict__ __f) +{ + (((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) && __builtin_constant_p(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) < (size_t)(__sz * __n)) && __builtin_object_size((__dst), ((0) > 0) && (2 > 1)) < (size_t)(__sz * __n)) ? __mingw_chk_fail_warn() : (__builtin_expect((!(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__dst), ((0) > 0) && (2 > 1)) >= (size_t)(__sz * __n)), 1) ? (void)0 : __chk_fail())); + return __mingw_call_fread(__dst, __sz, __n, __f); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +char * tmpnam(char * __dst) +{ + (((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) && __builtin_constant_p(__builtin_object_size((__dst), ((1) > 0) && (2 > 1)) < (size_t)(260)) && __builtin_object_size((__dst), ((1) > 0) && (2 > 1)) < (size_t)(260)) ? __mingw_chk_fail_warn() : (__builtin_expect((!(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__dst), ((1) > 0) && (2 > 1)) >= (size_t)(260)), 1) ? (void)0 : __chk_fail())); + return __mingw_call_tmpnam(__dst); +} + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _set_printf_count_output(int _Value); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _get_printf_count_output(void); +#define _WSTDIO_DEFINED + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vswscanf (const wchar_t * __restrict__ _Str,const wchar_t * __restrict__ Format,va_list argp); + __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_wscanf(const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list argp); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * __restrict__ Format,va_list argp); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_wprintf(const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList); + __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __mingw_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList); + __attribute__ ((__nonnull__ (3))) + int __attribute__((__cdecl__)) __mingw_snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...); + __attribute__ ((__nonnull__ (3))) + int __attribute__((__cdecl__)) __mingw_vsnwprintf (wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , va_list); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_swprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , ...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __mingw_vswprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ ,va_list); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __ms_wscanf(const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __ms_wprintf(const wchar_t * __restrict__ _Format,...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList); + __attribute__ ((__nonnull__ (1))) + int __attribute__((__cdecl__)) __ms_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_swprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , ...); + __attribute__ ((__nonnull__ (2))) + int __attribute__((__cdecl__)) __ms_vswprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ ,va_list); + int __attribute__((__cdecl__)) __stdio_common_vswprintf(unsigned long long options, wchar_t *str, size_t len, const wchar_t *format, _locale_t locale, va_list valist); + int __attribute__((__cdecl__)) __stdio_common_vfwprintf(unsigned long long options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist); + int __attribute__((__cdecl__)) __stdio_common_vswscanf(unsigned long long options, const wchar_t *input, size_t length, const wchar_t *format, _locale_t locale, va_list valist); + int __attribute__((__cdecl__)) __stdio_common_vfwscanf(unsigned long long options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist); +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (2))) +int swscanf(const wchar_t *__source, const wchar_t *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vswscanf( __source, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (1))) +int wscanf(const wchar_t *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfwscanf( (__acrt_iob_func(0)), __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (2))) +int fwscanf(FILE *__stream, const wchar_t *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfwscanf( __stream, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (2))) +int vswscanf (const wchar_t * __restrict__ __source, const wchar_t * __restrict__ __format, __builtin_va_list __local_argv) +{ + return __mingw_vswscanf( __source, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (1))) +int vwscanf(const wchar_t *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfwscanf( (__acrt_iob_func(0)), __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (2))) +int vfwscanf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfwscanf( __stream, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (2))) +int fwprintf (FILE *__stream, const wchar_t *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfwprintf( __stream, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (1))) +int wprintf (const wchar_t *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vfwprintf( (__acrt_iob_func(1)), __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (2))) +int vfwprintf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfwprintf( __stream, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (1))) +int vwprintf (const wchar_t *__format, __builtin_va_list __local_argv) +{ + return __mingw_vfwprintf( (__acrt_iob_func(1)), __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (3))) +int snwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format ); + __retval = __mingw_vsnwprintf( __stream, __n, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__)) __attribute__((__artificial__)) + __attribute__ ((__nonnull__ (3))) +int vsnwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, __builtin_va_list __local_argv) +{ + (((__builtin_object_size((__stream), ((0) > 0) && (2 > 1)) != (size_t)-1) && __builtin_constant_p(__builtin_object_size((__stream), ((1) > 0) && (2 > 1)) < (size_t)(__n * sizeof(wchar_t))) && __builtin_object_size((__stream), ((1) > 0) && (2 > 1)) < (size_t)(__n * sizeof(wchar_t))) ? __mingw_chk_fail_warn() : (__builtin_expect((!(__builtin_object_size((__stream), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__stream), ((1) > 0) && (2 > 1)) >= (size_t)(__n * sizeof(wchar_t))), 1) ? (void)0 : __chk_fail())); + return __mingw_vsnwprintf( __stream, __n, __format, __local_argv ); +} +#define WEOF (wint_t)(0xFFFF) + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode,int _ShFlag); + wint_t __attribute__((__cdecl__)) fgetwc(FILE *_File); + __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _fgetwchar(void); + wint_t __attribute__((__cdecl__)) fputwc(wchar_t _Ch,FILE *_File); + __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _fputwchar(wchar_t _Ch); + wint_t __attribute__((__cdecl__)) getwc(FILE *_File); + wint_t __attribute__((__cdecl__)) getwchar(void); + wint_t __attribute__((__cdecl__)) putwc(wchar_t _Ch,FILE *_File); + wint_t __attribute__((__cdecl__)) putwchar(wchar_t _Ch); + wint_t __attribute__((__cdecl__)) ungetwc(wint_t _Ch,FILE *_File); + wchar_t *__attribute__((__cdecl__)) fgetws(wchar_t * __restrict__ _Dst,int _SizeInWords,FILE * __restrict__ _File); + int __attribute__((__cdecl__)) fputws(const wchar_t * __restrict__ _Str,FILE * __restrict__ _File); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _getws(wchar_t *_String) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _putws(const wchar_t *_Str); + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + int __attribute__((__cdecl__)) _scwprintf(const wchar_t * __restrict__ _Format,...) + { + __builtin_va_list __ap; + int __ret; + __builtin_va_start(__ap, _Format); + __ret = __stdio_common_vswprintf(0x0004ULL | 0x0002ULL, ((void *)0), 0, _Format, ((void *)0), __ap); + __builtin_va_end(__ap); + return __ret; + } + int __attribute__((__cdecl__)) _snwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...) ; + int __attribute__((__cdecl__)) _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args) ; + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + int __attribute__((__cdecl__)) _swprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,...) + { + __builtin_va_list __ap; + int __ret; + __builtin_va_start(__ap, _Format); + __ret = __stdio_common_vswprintf(0x0004ULL, _Dest, (size_t)-1, _Format, ((void *)0), __ap); + __builtin_va_end(__ap); + return __ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + int __attribute__((__cdecl__)) _vswprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,va_list _Args) + { + return __stdio_common_vswprintf(0x0004ULL, _Dest, (size_t)-1, _Format, ((void *)0), _Args); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + int __attribute__((__cdecl__)) _vscwprintf(const wchar_t * __restrict__ _Format, va_list _ArgList) + { + int _Result = __stdio_common_vswprintf(0x0002ULL, ((void *)0), 0, _Format, ((void *)0), _ArgList); + return _Result < 0 ? -1 : _Result; + } +#define _INC_SWPRINTF_INL + +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (3))) +int vswprintf (wchar_t *__stream, size_t __count, const wchar_t *__format, __builtin_va_list __local_argv) +{ + return vsnwprintf( __stream, __count, __format, __local_argv ); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) + __attribute__ ((__nonnull__ (3))) +int swprintf (wchar_t *__stream, size_t __count, const wchar_t *__format, ...) +{ + int __retval; + __builtin_va_list __local_argv; + __builtin_va_start( __local_argv, __format ); + __retval = vswprintf( __stream, __count, __format, __local_argv ); + __builtin_va_end( __local_argv ); + return __retval; +} + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wtempnam(const wchar_t *_Directory,const wchar_t *_FilePrefix); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwscanf(const wchar_t * __restrict__ _Src,size_t _MaxCount,const wchar_t * __restrict__ _Format,...); + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfdopen(int _FileHandle ,const wchar_t *_Mode); + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfopen(const wchar_t * __restrict__ _Filename,const wchar_t *__restrict__ _Mode) ; + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfreopen(const wchar_t * __restrict__ _Filename,const wchar_t * __restrict__ _Mode,FILE * __restrict__ _OldFile) ; +#define _CRT_WPERROR_DEFINED + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wperror(const wchar_t *_ErrMsg); + __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wpopen(const wchar_t *_Command,const wchar_t *_Mode); +#define wpopen _wpopen + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wremove(const wchar_t *_Filename); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wtmpnam(wchar_t *_Buffer); + __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _fgetwc_nolock(FILE *_File); + __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _fputwc_nolock(wchar_t _Ch,FILE *_File); + __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _ungetwc_nolock(wint_t _Ch,FILE *_File); +#undef _CRT_GETPUTWCHAR_NOINLINE +#define getwchar() fgetwc(stdin) +#define putwchar(_c) fputwc((_c),stdout) +#define getwc(_stm) fgetwc(_stm) +#define putwc(_c,_stm) fputwc(_c,_stm) +#define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm) +#define _getwc_nolock(_c) _fgetwc_nolock(_c) +#define _STDIO_DEFINED + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fgetc_nolock(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fputc_nolock(int _Char, FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _getc_nolock(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _putc_nolock(int _Char, FILE *_File); +#define _getchar_nolock() _getc_nolock(stdin) +#define _putchar_nolock(_c) _putc_nolock((_c),stdout) +#define _getwchar_nolock() _getwc_nolock(stdin) +#define _putwchar_nolock(_c) _putwc_nolock((_c),stdout) + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _lock_file(FILE *_File); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _unlock_file(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fclose_nolock(FILE *_File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fflush_nolock(FILE *_File); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _fread_nolock(void * __restrict__ _DstBuf,size_t _ElementSize,size_t _Count,FILE * __restrict__ _File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fseek_nolock(FILE *_File,long _Offset,int _Origin); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _ftell_nolock(FILE *_File); + __extension__ __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fseeki64_nolock(FILE *_File,long long _Offset,int _Origin); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _ftelli64_nolock(FILE *_File); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _fwrite_nolock(const void * __restrict__ _DstBuf,size_t _Size,size_t _Count,FILE * __restrict__ _File); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _ungetc_nolock(int _Ch,FILE *_File); +#define P_tmpdir _P_tmpdir +#define SYS_OPEN _SYS_OPEN + char *__attribute__((__cdecl__)) tempnam(const char *_Directory,const char *_FilePrefix) ; + int __attribute__((__cdecl__)) fcloseall(void) ; + FILE *__attribute__((__cdecl__)) fdopen(int _FileHandle,const char *_Format) ; + int __attribute__((__cdecl__)) fgetchar(void) ; + int __attribute__((__cdecl__)) fileno(FILE *_File) ; + int __attribute__((__cdecl__)) flushall(void) ; + int __attribute__((__cdecl__)) fputchar(int _Ch) ; + int __attribute__((__cdecl__)) getw(FILE *_File) ; + int __attribute__((__cdecl__)) putw(int _Ch,FILE *_File) ; + int __attribute__((__cdecl__)) rmtmp(void) ; +#define __MINGW_MBWC_CONVERT_DEFINED +int __attribute__((__cdecl__)) __mingw_str_wide_utf8 (const wchar_t * const wptr, char **mbptr, size_t * buflen); +int __attribute__((__cdecl__)) __mingw_str_utf8_wide (const char *const mbptr, wchar_t ** wptr, size_t * buflen); +void __attribute__((__cdecl__)) __mingw_str_free(void *ptr); +#define _WSPAWN_DEFINED + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); +#define _P_WAIT 0 +#define _P_NOWAIT 1 +#define _OLD_P_OVERLAY 2 +#define _P_NOWAITO 3 +#define _P_DETACH 4 +#define _P_OVERLAY 2 +#define _WAIT_CHILD 0 +#define _WAIT_GRANDCHILD 1 +#define _SPAWNV_DEFINED + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnv(int _Mode,const char *_Filename,const char *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnve(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnvp(int _Mode,const char *_Filename,const char *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnvpe(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env); +#pragma pack(pop) +#define _INC_STDIO_S +#define _SECIMP __declspec(dllimport) +#define _STDIO_S_DEFINED +#define L_tmpnam_s L_tmpnam +#define TMP_MAX_S TMP_MAX + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) clearerr_s(FILE *_File); + size_t __attribute__((__cdecl__)) fread_s(void *_DstBuf,size_t _DstSize,size_t _ElementSize,size_t _Count,FILE *_File); + int __attribute__((__cdecl__)) __stdio_common_vsprintf_s(unsigned long long _Options, char *_Str, size_t _Len, const char *_Format, _locale_t _Locale, va_list _ArgList); + int __attribute__((__cdecl__)) __stdio_common_vsprintf_p(unsigned long long _Options, char *_Str, size_t _Len, const char *_Format, _locale_t _Locale, va_list _ArgList); + int __attribute__((__cdecl__)) __stdio_common_vsnprintf_s(unsigned long long _Options, char *_Str, size_t _Len, size_t _MaxCount, const char *_Format, _locale_t _Locale, va_list _ArgList); + int __attribute__((__cdecl__)) __stdio_common_vfprintf_s(unsigned long long _Options, FILE *_File, const char *_Format, _locale_t _Locale, va_list _ArgList); + int __attribute__((__cdecl__)) __stdio_common_vfprintf_p(unsigned long long _Options, FILE *_File, const char *_Format, _locale_t _Locale, va_list _ArgList); + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfscanf_s_l(FILE *_File, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vfscanf(0x0001ULL, _File, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vfscanf_s(FILE *_File, const char *_Format, va_list _ArgList) + { + return _vfscanf_s_l(_File, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vscanf_s_l(const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vscanf_s(const char *_Format, va_list _ArgList) + { + return _vfscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fscanf_s_l(FILE *_File, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfscanf_s_l(_File, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) fscanf_s(FILE *_File, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfscanf_s_l(_File, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _scanf_s_l(const char *_Format, _locale_t _Locale ,...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) scanf_s(const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfscanf_l(FILE *_File, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vfscanf(0, _File, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vscanf_l(const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fscanf_l(FILE *_File, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfscanf_l(_File, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _scanf_l(const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsscanf_s_l(const char *_Src, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsscanf(0x0001ULL, _Src, (size_t)-1, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vsscanf_s(const char *_Src, const char *_Format, va_list _ArgList) + { + return _vsscanf_s_l(_Src, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _sscanf_s_l(const char *_Src, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsscanf_s_l(_Src, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) sscanf_s(const char *_Src, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vsscanf_s_l(_Src, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsscanf_l(const char *_Src, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsscanf(0, _Src, (size_t)-1, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _sscanf_l(const char *_Src, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsscanf_l(_Src, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snscanf_s_l(const char *_Src, size_t _MaxCount, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = __stdio_common_vsscanf(0x0001ULL, _Src, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snscanf_s(const char *_Src, size_t _MaxCount, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = __stdio_common_vsscanf(0x0001ULL, _Src, _MaxCount, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snscanf_l(const char *_Src, size_t _MaxCount, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = __stdio_common_vsscanf(0, _Src, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfprintf_s_l(FILE *_File, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vfprintf_s(0, _File, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vfprintf_s(FILE *_File, const char *_Format, va_list _ArgList) + { + return _vfprintf_s_l(_File, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vprintf_s_l(const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vprintf_s(const char *_Format, va_list _ArgList) + { + return _vfprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fprintf_s_l(FILE *_File, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfprintf_s_l(_File, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _printf_s_l(const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) fprintf_s(FILE *_File, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfprintf_s_l(_File, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) printf_s(const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnprintf_c_l(char *_DstBuf, size_t _MaxCount, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsprintf(0, _DstBuf, _MaxCount, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnprintf_c(char *_DstBuf, size_t _MaxCount, const char *_Format, va_list _ArgList) + { + return _vsnprintf_c_l(_DstBuf, _MaxCount, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snprintf_c_l(char *_DstBuf, size_t _MaxCount, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsnprintf_c_l(_DstBuf, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snprintf_c(char *_DstBuf, size_t _MaxCount, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vsnprintf_c_l(_DstBuf, _MaxCount, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnprintf_s_l(char *_DstBuf, size_t _DstSize, size_t _MaxCount, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsnprintf_s(0, _DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vsnprintf_s(char *_DstBuf, size_t _DstSize, size_t _MaxCount, const char *_Format, va_list _ArgList) + { + return _vsnprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnprintf_s(char *_DstBuf, size_t _DstSize, size_t _MaxCount, const char *_Format, va_list _ArgList) + { + return _vsnprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snprintf_s_l(char *_DstBuf, size_t _DstSize, size_t _MaxCount, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsnprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snprintf_s(char *_DstBuf, size_t _DstSize, size_t _MaxCount, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vsnprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsprintf_s_l(char *_DstBuf, size_t _DstSize, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsprintf_s(0, _DstBuf, _DstSize, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vsprintf_s(char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList) + { + return _vsprintf_s_l(_DstBuf, _Size, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _sprintf_s_l(char *_DstBuf, size_t _DstSize, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsprintf_s_l(_DstBuf, _DstSize, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) sprintf_s(char *_DstBuf, size_t _DstSize, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vsprintf_s_l(_DstBuf, _DstSize, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfprintf_p_l(FILE *_File, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vfprintf_p(0, _File, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfprintf_p(FILE *_File, const char *_Format, va_list _ArgList) + { + return _vfprintf_p_l(_File, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vprintf_p_l(const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vprintf_p(const char *_Format, va_list _ArgList) + { + return _vfprintf_p_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fprintf_p_l(FILE *_File, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = __stdio_common_vfprintf_p(0, _File, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fprintf_p(FILE *_File, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfprintf_p_l(_File, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _printf_p_l(const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _printf_p(const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfprintf_p_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsprintf_p_l(char *_DstBuf, size_t _MaxCount, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsprintf_p(0, _DstBuf, _MaxCount, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsprintf_p(char *_Dst, size_t _MaxCount, const char *_Format, va_list _ArgList) + { + return _vsprintf_p_l(_Dst, _MaxCount, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _sprintf_p_l(char *_DstBuf, size_t _MaxCount, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsprintf_p_l(_DstBuf, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _sprintf_p(char *_Dst, size_t _MaxCount, const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vsprintf_p_l(_Dst, _MaxCount, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vscprintf_p_l(const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsprintf_p(0x0002ULL, ((void *)0), 0, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vscprintf_p(const char *_Format, va_list _ArgList) + { + return _vscprintf_p_l(_Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _scprintf_p_l(const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vscprintf_p_l(_Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _scprintf_p(const char *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vscprintf_p_l(_Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfprintf_l(FILE *_File, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vfprintf(0, _File, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vprintf_l(const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fprintf_l(FILE *_File, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfprintf_l(_File, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _printf_l(const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnprintf_l(char *_DstBuf, size_t _MaxCount, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsprintf(0x0001ULL, _DstBuf, _MaxCount, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snprintf_l(char *_DstBuf, size_t _MaxCount, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsnprintf_l(_DstBuf, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsprintf_l(char *_DstBuf, const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vsnprintf_l(_DstBuf, (size_t)-1, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _sprintf_l(char *_DstBuf, const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsprintf_l(_DstBuf, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vscprintf_l(const char *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsprintf(0x0002ULL, ((void *)0), 0, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _scprintf_l(const char *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vscprintf_l(_Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) fopen_s(FILE **_File,const char *_Filename,const char *_Mode); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) freopen_s(FILE** _File, const char *_Filename, const char *_Mode, FILE *_Stream); + __attribute__ ((__dllimport__)) char* __attribute__((__cdecl__)) gets_s(char*,rsize_t); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) tmpfile_s(FILE **_File); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) tmpnam_s(char*,rsize_t); +#define _WSTDIO_S_DEFINED + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _getws_s(wchar_t *_Str,size_t _SizeInWords); + int __attribute__((__cdecl__)) __stdio_common_vswprintf_s(unsigned long long _Options, wchar_t *_Str, size_t _Len, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList); + int __attribute__((__cdecl__)) __stdio_common_vsnwprintf_s(unsigned long long _Options, wchar_t *_Str, size_t _Len, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList); + int __attribute__((__cdecl__)) __stdio_common_vfwprintf_s(unsigned long long _Options, FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList); + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfwscanf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vfwscanf(0x0002ULL | 0x0001ULL, _File, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vfwscanf_s(FILE* _File, const wchar_t *_Format, va_list _ArgList) + { + return _vfwscanf_s_l(_File, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vwscanf_s_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vfwscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vwscanf_s(const wchar_t *_Format, va_list _ArgList) + { + return _vfwscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fwscanf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfwscanf_s_l(_File, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) fwscanf_s(FILE *_File, const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfwscanf_s_l(_File, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _wscanf_s_l(const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfwscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) wscanf_s(const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfwscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vswscanf_s_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vswscanf(0x0002ULL | 0x0001ULL, _Src, (size_t)-1, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vswscanf_s(const wchar_t *_Src, const wchar_t *_Format, va_list _ArgList) + { + return _vswscanf_s_l(_Src, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _swscanf_s_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vswscanf_s_l(_Src, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) swscanf_s(const wchar_t *_Src, const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vswscanf_s_l(_Src, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnwscanf_s_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vswscanf(0x0002ULL | 0x0001ULL, _Src, _MaxCount, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snwscanf_s_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snwscanf_s(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vfwprintf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vfwprintf_s(0x0004ULL, _File, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vwprintf_s_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return _vfwprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vfwprintf_s(FILE *_File, const wchar_t *_Format, va_list _ArgList) + { + return _vfwprintf_s_l(_File, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vwprintf_s(const wchar_t *_Format, va_list _ArgList) + { + return _vfwprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _fwprintf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfwprintf_s_l(_File, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _wprintf_s_l(const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vfwprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) fwprintf_s(FILE *_File, const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfwprintf_s_l(_File, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) wprintf_s(const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vfwprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vswprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vswprintf_s(0x0004ULL, _DstBuf, _DstSize, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) vswprintf_s(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, va_list _ArgList) + { + return _vswprintf_s_l(_DstBuf, _DstSize, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _swprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) swprintf_s(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList) + { + return __stdio_common_vsnwprintf_s(0x0004ULL, _DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _vsnwprintf_s(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, va_list _ArgList) + { + return _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, ((void *)0), _ArgList); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Locale); + _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) _snwprintf_s(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, ...) + { + __builtin_va_list _ArgList; + int _Ret; + __builtin_va_start(_ArgList, _Format); + _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, ((void *)0), _ArgList); + __builtin_va_end(_ArgList); + return _Ret; + } + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wfopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wfreopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _fread_nolock_s(void *_DstBuf,size_t _DstSize,size_t _ElementSize,size_t _Count,FILE *_File); +#define _INC_TYPES +#define _INC_CRTDEFS +#define _INO_T_DEFINED +typedef unsigned short _ino_t; +typedef unsigned short ino_t; +#define _DEV_T_DEFINED +typedef unsigned int _dev_t; +typedef unsigned int dev_t; +#define _PID_T_ +__extension__ +typedef long long _pid_t; +#undef pid_t +typedef _pid_t pid_t; +#define _MODE_T_ +typedef unsigned short _mode_t; +typedef _mode_t mode_t; +typedef unsigned int useconds_t; +#define _TIMESPEC_DEFINED +struct timespec { + time_t tv_sec; + long tv_nsec; +}; +struct itimerspec { + struct timespec it_interval; + struct timespec it_value; +}; +#define _SIGSET_T_ +__extension__ +typedef unsigned long long _sigset_t; +#define _INC_STAT +#define _IO_H_ +#define _INC_STRING +#define _NLSCMP_DEFINED +#define _NLSCMPERROR 2147483647 +#define _WConst_return _CONST_RETURN +#define _CRT_MEMORY_DEFINED + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _memccpy(void *_Dst,const void *_Src,int _Val,size_t _MaxCount); + void *__attribute__((__cdecl__)) memchr(const void *_Buf ,int _Val,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _memicmp(const void *_Buf1,const void *_Buf2,size_t _Size); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _memicmp_l(const void *_Buf1,const void *_Buf2,size_t _Size,_locale_t _Locale); + int __attribute__((__cdecl__)) memcmp(const void *_Buf1,const void *_Buf2,size_t _Size); + void * __attribute__((__cdecl__)) memcpy(void * __restrict__ _Dst,const void * __restrict__ _Src,size_t _Size) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) memcpy_s (void *_dest,size_t _numberOfElements,const void *_src,size_t _count); + void * __attribute__((__cdecl__)) mempcpy (void *_Dst, const void *_Src, size_t _Size); + void * __attribute__((__cdecl__)) memset(void *_Dst,int _Val,size_t _Size); + void * __attribute__((__cdecl__)) memccpy(void *_Dst,const void *_Src,int _Val,size_t _Size) ; + int __attribute__((__cdecl__)) memicmp(const void *_Buf1,const void *_Buf2,size_t _Size) ; + char * __attribute__((__cdecl__)) _strset(char *_Str,int _Val) ; + char * __attribute__((__cdecl__)) _strset_l(char *_Str,int _Val,_locale_t _Locale) ; + char * __attribute__((__cdecl__)) strcpy(char * __restrict__ _Dest,const char * __restrict__ _Source); + char * __attribute__((__cdecl__)) strcat(char * __restrict__ _Dest,const char * __restrict__ _Source); + int __attribute__((__cdecl__)) strcmp(const char *_Str1,const char *_Str2); + size_t __attribute__((__cdecl__)) strlen(const char *_Str); + size_t __attribute__((__cdecl__)) strnlen(const char *_Str,size_t _MaxCount); + void *__attribute__((__cdecl__)) memmove(void *_Dst,const void *_Src,size_t _Size) ; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strdup(const char *_Src); + char *__attribute__((__cdecl__)) strchr(const char *_Str,int _Val); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricmp(const char *_Str1,const char *_Str2); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strcmpi(const char *_Str1,const char *_Str2); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricmp_l(const char *_Str1,const char *_Str2,_locale_t _Locale); + int __attribute__((__cdecl__)) strcoll(const char *_Str1,const char *_Str2); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strcoll_l(const char *_Str1,const char *_Str2,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricoll(const char *_Str1,const char *_Str2); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricoll_l(const char *_Str1,const char *_Str2,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strncoll (const char *_Str1,const char *_Str2,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strncoll_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicoll (const char *_Str1,const char *_Str2,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicoll_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale); + size_t __attribute__((__cdecl__)) strcspn(const char *_Str,const char *_Control); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strerror(const char *_ErrMsg) ; + char *__attribute__((__cdecl__)) strerror(int) ; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strlwr(char *_String) ; + char *strlwr_l(char *_String,_locale_t _Locale) ; + char *__attribute__((__cdecl__)) strncat(char * __restrict__ _Dest,const char * __restrict__ _Source,size_t _Count) ; + int __attribute__((__cdecl__)) strncmp(const char *_Str1,const char *_Str2,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicmp(const char *_Str1,const char *_Str2,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicmp_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale); + char *strncpy(char * __restrict__ _Dest,const char * __restrict__ _Source,size_t _Count) ; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strnset(char *_Str,int _Val,size_t _MaxCount) ; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strnset_l(char *str,int c,size_t count,_locale_t _Locale) ; + char *__attribute__((__cdecl__)) strpbrk(const char *_Str,const char *_Control); + char *__attribute__((__cdecl__)) strrchr(const char *_Str,int _Ch); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strrev(char *_Str); + size_t __attribute__((__cdecl__)) strspn(const char *_Str,const char *_Control); + char *__attribute__((__cdecl__)) strstr(const char *_Str,const char *_SubStr); + char *__attribute__((__cdecl__)) strtok(char * __restrict__ _Str,const char * __restrict__ _Delim) ; +#undef strtok_r + char *strtok_r(char * __restrict__ _Str, const char * __restrict__ _Delim, char ** __restrict__ __last); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strupr(char *_String) ; + __attribute__ ((__dllimport__)) char *_strupr_l(char *_String,_locale_t _Locale) ; + size_t __attribute__((__cdecl__)) strxfrm(char * __restrict__ _Dst,const char * __restrict__ _Src,size_t _MaxCount); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _strxfrm_l(char * __restrict__ _Dst,const char * __restrict__ _Src,size_t _MaxCount,_locale_t _Locale); + char *__attribute__((__cdecl__)) strdup(const char *_Src) ; + int __attribute__((__cdecl__)) strcmpi(const char *_Str1,const char *_Str2) ; + int __attribute__((__cdecl__)) stricmp(const char *_Str1,const char *_Str2) ; + char *__attribute__((__cdecl__)) strlwr(char *_Str) ; + int __attribute__((__cdecl__)) strnicmp(const char *_Str1,const char *_Str,size_t _MaxCount) ; + int __attribute__((__cdecl__)) strncasecmp (const char *, const char *, size_t); + int __attribute__((__cdecl__)) strcasecmp (const char *, const char *); + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) strncasecmp (const char *__sz1, const char *__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, __sizeMaxCompare); } + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) strcasecmp (const char *__sz1, const char *__sz2) { return _stricmp (__sz1, __sz2); } + char *__attribute__((__cdecl__)) strnset(char *_Str,int _Val,size_t _MaxCount) ; + char *__attribute__((__cdecl__)) strrev(char *_Str) ; + char *__attribute__((__cdecl__)) strset(char *_Str,int _Val) ; + char *__attribute__((__cdecl__)) strupr(char *_Str) ; +#define _WSTRING_DEFINED + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsdup(const wchar_t *_Str); + wchar_t *__attribute__((__cdecl__)) wcscat(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source) ; + wchar_t *__attribute__((__cdecl__)) wcschr(const wchar_t *_Str,wchar_t _Ch); + int __attribute__((__cdecl__)) wcscmp(const wchar_t *_Str1,const wchar_t *_Str2); + wchar_t *__attribute__((__cdecl__)) wcscpy(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source) ; + size_t __attribute__((__cdecl__)) wcscspn(const wchar_t *_Str,const wchar_t *_Control); + size_t __attribute__((__cdecl__)) wcslen(const wchar_t *_Str); + size_t __attribute__((__cdecl__)) wcsnlen(const wchar_t *_Src,size_t _MaxCount); + wchar_t *wcsncat(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count) ; + int __attribute__((__cdecl__)) wcsncmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount); + wchar_t *wcsncpy(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count) ; + wchar_t *__attribute__((__cdecl__)) _wcsncpy_l(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count,_locale_t _Locale) ; + wchar_t *__attribute__((__cdecl__)) wcspbrk(const wchar_t *_Str,const wchar_t *_Control); + wchar_t *__attribute__((__cdecl__)) wcsrchr(const wchar_t *_Str,wchar_t _Ch); + size_t __attribute__((__cdecl__)) wcsspn(const wchar_t *_Str,const wchar_t *_Control); + wchar_t *__attribute__((__cdecl__)) wcsstr(const wchar_t *_Str,const wchar_t *_SubStr); + wchar_t *__attribute__((__cdecl__)) wcstok(wchar_t * __restrict__ _Str,const wchar_t * __restrict__ _Delim,wchar_t **_Ptr) ; + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcserror(int _ErrNum) ; + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) __wcserror(const wchar_t *_Str) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount) ; + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsrev(wchar_t *_Str); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsset(wchar_t *_Str,wchar_t _Val) ; + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcslwr(wchar_t *_String) ; + __attribute__ ((__dllimport__)) wchar_t *_wcslwr_l(wchar_t *_String,_locale_t _Locale) ; + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsupr(wchar_t *_String) ; + __attribute__ ((__dllimport__)) wchar_t *_wcsupr_l(wchar_t *_String,_locale_t _Locale) ; + size_t __attribute__((__cdecl__)) wcsxfrm(wchar_t * __restrict__ _Dst,const wchar_t * __restrict__ _Src,size_t _MaxCount); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _wcsxfrm_l(wchar_t * __restrict__ _Dst,const wchar_t * __restrict__ _Src,size_t _MaxCount,_locale_t _Locale); + int __attribute__((__cdecl__)) wcscoll(const wchar_t *_Str1,const wchar_t *_Str2); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcscoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsncoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsncoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale); + wchar_t *__attribute__((__cdecl__)) wcsdup(const wchar_t *_Str) ; +#define wcswcs wcsstr + int __attribute__((__cdecl__)) wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2) ; + int __attribute__((__cdecl__)) wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount) ; + wchar_t *__attribute__((__cdecl__)) wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount) ; + wchar_t *__attribute__((__cdecl__)) wcsrev(wchar_t *_Str) ; + wchar_t *__attribute__((__cdecl__)) wcsset(wchar_t *_Str,wchar_t _Val) ; + wchar_t *__attribute__((__cdecl__)) wcslwr(wchar_t *_Str) ; + wchar_t *__attribute__((__cdecl__)) wcsupr(wchar_t *_Str) ; + int __attribute__((__cdecl__)) wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2) ; +#define _INC_STRING_S + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strset_s(char *_Dst,size_t _DstSize,int _Value); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strerror_s(char *_Buf,size_t _SizeInBytes,const char *_ErrMsg); + __declspec(dllimport) errno_t __attribute__((__cdecl__)) strerror_s(char *_Buf,size_t _SizeInBytes,int _ErrNum); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strlwr_s(char *_Str,size_t _Size); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strlwr_s_l(char *_Str,size_t _Size,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strnset_s(char *_Str,size_t _Size,int _Val,size_t _MaxCount); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strupr_s(char *_Str,size_t _Size); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strupr_s_l(char *_Str,size_t _Size,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strncat_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strncat_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strcpy_s(char *_Dst, rsize_t _SizeInBytes, const char *_Src); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strncpy_s(char *_Dst, size_t _DstSizeInChars, const char *_Src, size_t _MaxCount); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strncpy_s_l(char *_Dst, size_t _DstSizeInChars, const char *_Src, size_t _MaxCount, _locale_t _Locale); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) strtok_s(char *_Str,const char *_Delim,char **_Context); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strtok_s_l(char *_Str,const char *_Delim,char **_Context,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strcat_s(char *_Dst, rsize_t _SizeInBytes, const char * _Src); + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) size_t __attribute__((__cdecl__)) strnlen_s(const char * _src, size_t _count) { + return _src ? strnlen(_src, _count) : 0; + } + __declspec(dllimport) errno_t __attribute__((__cdecl__)) memmove_s(void *_dest,size_t _numberOfElements,const void *_src,size_t _count); +#define _WSTRING_S_DEFINED + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcslwr_s(wchar_t *_Str,size_t _SizeInWords); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsupr_s(wchar_t *_Str,size_t _Size); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcscpy_s(wchar_t *_Dst, rsize_t _SizeInWords, const wchar_t *_Src); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcscat_s(wchar_t * _Dst, rsize_t _SizeInWords, const wchar_t *_Src); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcsncat_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsncat_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcsncpy_s(wchar_t *_Dst, size_t _DstSizeInChars, const wchar_t *_Src, size_t _MaxCount); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsncpy_s_l(wchar_t *_Dst, size_t _DstSizeInChars, const wchar_t *_Src, size_t _MaxCount, _locale_t _Locale); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcstok_s_l(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsset_s_l(wchar_t *_Str,size_t _SizeInChars,wchar_t _Val,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsnset_s_l(wchar_t *_Str,size_t _SizeInChars,wchar_t _Val, size_t _Count,_locale_t _Locale); + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) size_t __attribute__((__cdecl__)) wcsnlen_s(const wchar_t * _src, size_t _count) { + return _src ? wcsnlen(_src, _count) : 0; + } +void __attribute__((__cdecl__)) __chk_fail(void) __attribute__((__noreturn__)); void __attribute__((__cdecl__)) __mingw_chk_fail_warn(void) __asm__("__chk_fail") __attribute__((__noreturn__)) __attribute__((__warning__("Buffer overflow detected"))); +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +void * memcpy(void * __restrict__ __dst, const void * __restrict__ __src, size_t __n) +{ + return __builtin___memcpy_chk(__dst, __src, __n, __builtin_object_size((__dst), ((0) > 0) && (2 > 1))); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +void * memset(void * __dst, int __val, size_t __n) +{ + return __builtin___memset_chk(__dst, __val, __n, __builtin_object_size((__dst), ((0) > 0) && (2 > 1))); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +void * memmove(void * __dst, const void * __src, size_t __n) +{ + return __builtin___memmove_chk(__dst, __src, __n, __builtin_object_size((__dst), ((0) > 0) && (2 > 1))); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +void * mempcpy(void * __dst, const void * __src, size_t __n) +{ + return __builtin___mempcpy_chk(__dst, __src, __n, __builtin_object_size((__dst), ((0) > 0) && (2 > 1))); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +char * strcpy(char * __restrict__ __dst, const char * __restrict__ __src) +{ + return __builtin___strcpy_chk(__dst, __src, __builtin_object_size((__dst), ((1) > 0) && (2 > 1))); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +char * strcat(char * __restrict__ __dst, const char * __restrict__ __src) +{ + return __builtin___strcat_chk(__dst, __src, __builtin_object_size((__dst), ((1) > 0) && (2 > 1))); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +char * strncpy(char * __restrict__ __dst, const char * __restrict__ __src, size_t __n) +{ + return __builtin___strncpy_chk(__dst, __src, __n, __builtin_object_size((__dst), ((1) > 0) && (2 > 1))); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +char * strncat(char * __restrict__ __dst, const char * __restrict__ __src, size_t __n) +{ + return __builtin___strncat_chk(__dst, __src, __n, __builtin_object_size((__dst), ((1) > 0) && (2 > 1))); +} +__declspec(dllimport) errno_t __attribute__((__cdecl__)) __mingw_call_memcpy_s(void *, size_t, const void *, size_t) __asm__("memcpy_s"); +wchar_t * __attribute__((__cdecl__)) __mingw_call_wcscpy(wchar_t * __restrict__, const wchar_t * __restrict__) __asm__("wcscpy"); +wchar_t * __attribute__((__cdecl__)) __mingw_call_wcscat(wchar_t * __restrict__, const wchar_t * __restrict__) __asm__("wcscat"); +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +errno_t memcpy_s(void * __dst, size_t __os, const void * __src, size_t __n) +{ + (((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) && __builtin_constant_p(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) < (size_t)(__os)) && __builtin_object_size((__dst), ((0) > 0) && (2 > 1)) < (size_t)(__os)) ? __mingw_chk_fail_warn() : (__builtin_expect((!(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__dst), ((0) > 0) && (2 > 1)) >= (size_t)(__os)), 1) ? (void)0 : __chk_fail())); + return __mingw_call_memcpy_s(__dst, __os, __src, __n); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +wchar_t * wcscpy(wchar_t * __restrict__ __dst, const wchar_t * __restrict__ __src) +{ + if ((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1)) { + (__builtin_expect((!wcscpy_s(__dst, __builtin_object_size((__dst), ((1) > 0) && (2 > 1)) / sizeof(wchar_t), __src)), 1) ? (void)0 : __chk_fail()); + return __dst; + } + return __mingw_call_wcscpy(__dst, __src); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +wchar_t * wcscat(wchar_t * __restrict__ __dst, const wchar_t * __restrict__ __src) +{ + if ((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1)) { + (__builtin_expect((!wcscat_s(__dst, __builtin_object_size((__dst), ((1) > 0) && (2 > 1)) / sizeof(wchar_t), __src)), 1) ? (void)0 : __chk_fail()); + return __dst; + } + return __mingw_call_wcscat(__dst, __src); +} +#pragma pack(push,_CRT_PACKING) +__attribute__ ((__dllimport__)) char* __attribute__((__cdecl__)) _getcwd (char*, int); + typedef unsigned long _fsize_t; +#define _FSIZE_T_DEFINED + struct _finddata32_t { + unsigned attrib; + __time32_t time_create; + __time32_t time_access; + __time32_t time_write; + _fsize_t size; + char name[260]; + }; + struct _finddata32i64_t { + unsigned attrib; + __time32_t time_create; + __time32_t time_access; + __time32_t time_write; + __extension__ long long size; + char name[260]; + }; + struct _finddata64i32_t { + unsigned attrib; + __time64_t time_create; + __time64_t time_access; + __time64_t time_write; + _fsize_t size; + char name[260]; + }; + struct __finddata64_t { + unsigned attrib; + __time64_t time_create; + __time64_t time_access; + __time64_t time_write; + __extension__ long long size; + char name[260]; + }; +#define _finddata_t _finddata64i32_t +#define _finddatai64_t __finddata64_t +#define _findfirst _findfirst64i32 +#define _findnext _findnext64i32 +#define _findfirsti64 _findfirst64 +#define _findnexti64 _findnext64 +#define _FINDDATA_T_DEFINED + struct _wfinddata32_t { + unsigned attrib; + __time32_t time_create; + __time32_t time_access; + __time32_t time_write; + _fsize_t size; + wchar_t name[260]; + }; + struct _wfinddata32i64_t { + unsigned attrib; + __time32_t time_create; + __time32_t time_access; + __time32_t time_write; + __extension__ long long size; + wchar_t name[260]; + }; + struct _wfinddata64i32_t { + unsigned attrib; + __time64_t time_create; + __time64_t time_access; + __time64_t time_write; + _fsize_t size; + wchar_t name[260]; + }; + struct _wfinddata64_t { + unsigned attrib; + __time64_t time_create; + __time64_t time_access; + __time64_t time_write; + __extension__ long long size; + wchar_t name[260]; + }; +#define _wfinddata_t _wfinddata64i32_t +#define _wfinddatai64_t _wfinddata64_t +#define _wfindfirst _wfindfirst64i32 +#define _wfindnext _wfindnext64i32 +#define _wfindfirsti64 _wfindfirst64 +#define _wfindnexti64 _wfindnext64 +#define _WFINDDATA_T_DEFINED +#define _A_NORMAL 0x00 +#define _A_RDONLY 0x01 +#define _A_HIDDEN 0x02 +#define _A_SYSTEM 0x04 +#define _A_SUBDIR 0x10 +#define _A_ARCH 0x20 +#define F_OK 0 +#define X_OK 1 +#define W_OK 2 +#define R_OK 4 + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _access(const char *_Filename,int _AccessMode); + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _access_s(const char *_Filename,int _AccessMode); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chmod(const char *_Filename,int _Mode); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chsize(int _FileHandle,long _Size) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _chsize_s (int _FileHandle,long long _Size); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _close(int _FileHandle); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _commit(int _FileHandle); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _creat(const char *_Filename,int _PermissionMode) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _dup(int _FileHandle); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _dup2(int _FileHandleSrc,int _FileHandleDst); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _eof(int _FileHandle); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _filelength(int _FileHandle); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _findfirst32(const char *_Filename,struct _finddata32_t *_FindData); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findnext32(intptr_t _FindHandle,struct _finddata32_t *_FindData); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findclose(intptr_t _FindHandle); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isatty(int _FileHandle); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _locking(int _FileHandle,int _LockMode,long _NumOfBytes); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _lseek(int _FileHandle,long _Offset,int _Origin); + _off64_t lseek64(int fd,_off64_t offset, int whence); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _mktemp(char *_TemplateName) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _mktemp_s (char *_TemplateName,size_t _Size); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _pipe(int *_PtHandles,unsigned int _PipeSize,int _TextMode); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _setmode(int _FileHandle,int _Mode); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _tell(int _FileHandle); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _umask(int _Mode) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _umask_s (int _NewMode,int *_OldMode); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _write(int _FileHandle,const void *_Buf,unsigned int _MaxCharCount); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _filelengthi64(int _FileHandle); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _findfirst32i64(const char *_Filename,struct _finddata32i64_t *_FindData); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _findfirst64(const char *_Filename,struct __finddata64_t *_FindData); + intptr_t __attribute__((__cdecl__)) _findfirst64i32(const char *_Filename,struct _finddata64i32_t *_FindData); + extern inline __attribute__((__gnu_inline__)) intptr_t __attribute__((__cdecl__)) _findfirst64i32(const char *_Filename,struct _finddata64i32_t *_FindData) + { + struct __finddata64_t fd; + intptr_t ret = _findfirst64(_Filename,&fd); + if (ret == -1) { + memset(_FindData,0,sizeof(struct _finddata64i32_t)); + return -1; + } + _FindData->attrib=fd.attrib; + _FindData->time_create=fd.time_create; + _FindData->time_access=fd.time_access; + _FindData->time_write=fd.time_write; + _FindData->size=(_fsize_t) fd.size; + strncpy(_FindData->name,fd.name,260); + return ret; + } + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findnext32i64(intptr_t _FindHandle,struct _finddata32i64_t *_FindData); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findnext64(intptr_t _FindHandle,struct __finddata64_t *_FindData); + int __attribute__((__cdecl__)) _findnext64i32(intptr_t _FindHandle,struct _finddata64i32_t *_FindData); + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _findnext64i32(intptr_t _FindHandle,struct _finddata64i32_t *_FindData) + { + struct __finddata64_t fd; + int __ret = _findnext64(_FindHandle,&fd); + if (__ret == -1) { + memset(_FindData,0,sizeof(struct _finddata64i32_t)); + return -1; + } + _FindData->attrib=fd.attrib; + _FindData->time_create=fd.time_create; + _FindData->time_access=fd.time_access; + _FindData->time_write=fd.time_write; + _FindData->size=(_fsize_t) fd.size; + strncpy(_FindData->name,fd.name,260); + return __ret; + } + __extension__ long long __attribute__((__cdecl__)) _lseeki64(int _FileHandle,long long _Offset,int _Origin); + __extension__ long long __attribute__((__cdecl__)) _telli64(int _FileHandle); + int __attribute__((__cdecl__)) chdir (const char *) ; + char *__attribute__((__cdecl__)) getcwd (char *, int) ; + int __attribute__((__cdecl__)) mkdir (const char *) ; + char *__attribute__((__cdecl__)) mktemp(char *) ; + int __attribute__((__cdecl__)) rmdir (const char*) ; + int __attribute__((__cdecl__)) chmod (const char *, int) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _sopen_s(int *_FileHandle,const char *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionMode); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _open(const char *_Filename,int _OpenFlag,...) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sopen(const char *_Filename,int _OpenFlag,int _ShareFlag,...) ; +#define _WIO_DEFINED + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _waccess(const wchar_t *_Filename,int _AccessMode); + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _waccess_s (const wchar_t *_Filename,int _AccessMode); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wchmod(const wchar_t *_Filename,int _Mode); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcreat(const wchar_t *_Filename,int _PermissionMode) ; + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wfindfirst32(const wchar_t *_Filename,struct _wfinddata32_t *_FindData); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wfindnext32(intptr_t _FindHandle,struct _wfinddata32_t *_FindData); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wunlink(const wchar_t *_Filename); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wrename(const wchar_t *_OldFilename,const wchar_t *_NewFilename); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wmktemp(wchar_t *_TemplateName) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _wmktemp_s (wchar_t *_TemplateName, size_t _SizeInWords); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wfindfirst32i64(const wchar_t *_Filename,struct _wfinddata32i64_t *_FindData); + intptr_t __attribute__((__cdecl__)) _wfindfirst64i32(const wchar_t *_Filename,struct _wfinddata64i32_t *_FindData); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wfindfirst64(const wchar_t *_Filename,struct _wfinddata64_t *_FindData); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wfindnext32i64(intptr_t _FindHandle,struct _wfinddata32i64_t *_FindData); + int __attribute__((__cdecl__)) _wfindnext64i32(intptr_t _FindHandle,struct _wfinddata64i32_t *_FindData); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wfindnext64(intptr_t _FindHandle,struct _wfinddata64_t *_FindData); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wsopen_s(int *_FileHandle,const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionFlag); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wopen(const wchar_t *_Filename,int _OpenFlag,...) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wsopen(const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,...) ; + int __attribute__((__cdecl__)) __lock_fhandle(int _Filehandle); + void __attribute__((__cdecl__)) _unlock_fhandle(int _Filehandle); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _get_osfhandle(int _FileHandle); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _open_osfhandle(intptr_t _OSFileHandle,int _Flags); + int __attribute__((__cdecl__)) access(const char *_Filename,int _AccessMode) ; + int __attribute__((__cdecl__)) chmod(const char *_Filename,int _AccessMode) ; + int __attribute__((__cdecl__)) chsize(int _FileHandle,long _Size) ; + int __attribute__((__cdecl__)) close(int _FileHandle) ; + int __attribute__((__cdecl__)) creat(const char *_Filename,int _PermissionMode) ; + int __attribute__((__cdecl__)) dup(int _FileHandle) ; + int __attribute__((__cdecl__)) dup2(int _FileHandleSrc,int _FileHandleDst) ; + int __attribute__((__cdecl__)) eof(int _FileHandle) ; + long __attribute__((__cdecl__)) filelength(int _FileHandle) ; + int __attribute__((__cdecl__)) isatty(int _FileHandle) ; + int __attribute__((__cdecl__)) locking(int _FileHandle,int _LockMode,long _NumOfBytes) ; + long __attribute__((__cdecl__)) lseek(int _FileHandle,long _Offset,int _Origin) ; + char *__attribute__((__cdecl__)) mktemp(char *_TemplateName) ; + int __attribute__((__cdecl__)) open(const char *_Filename,int _OpenFlag,...) ; + int __attribute__((__cdecl__)) read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount) ; + int __attribute__((__cdecl__)) setmode(int _FileHandle,int _Mode) ; + int __attribute__((__cdecl__)) sopen(const char *_Filename,int _OpenFlag,int _ShareFlag,...) ; + long __attribute__((__cdecl__)) tell(int _FileHandle) ; + int __attribute__((__cdecl__)) umask(int _Mode) ; + int __attribute__((__cdecl__)) write(int _Filehandle,const void *_Buf,unsigned int _MaxCharCount) ; +#define _FILE_OFFSET_BITS_SET_LSEEK +#define lseek lseek64 +__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __mingw_call__read(int, void *, unsigned int) __asm__("_read"); +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +int _read(int __fh, void * __dst, unsigned int __n) +{ + (((__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) && __builtin_constant_p(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) < (size_t)(__n)) && __builtin_object_size((__dst), ((0) > 0) && (2 > 1)) < (size_t)(__n)) ? __mingw_chk_fail_warn() : (__builtin_expect((!(__builtin_object_size((__dst), ((0) > 0) && (2 > 1)) != (size_t)-1) || __builtin_object_size((__dst), ((0) > 0) && (2 > 1)) >= (size_t)(__n)), 1) ? (void)0 : __chk_fail())); + return __mingw_call__read(__fh, __dst, __n); +} +extern __inline__ __attribute__((__cdecl__)) __attribute__((__always_inline__, __gnu_inline__)) __attribute__((__artificial__)) +int read(int __fh, void * __dst, unsigned int __n) +{ + return _read(__fh, __dst, __n); +} +#pragma pack(pop) + +#pragma pack(push,_CRT_PACKING) +#define _fstat _fstat64i32 +#define _fstati64 _fstat64 +#define _stat _stat64i32 +#define _stati64 _stat64 +#define _wstat _wstat64i32 +#define _wstati64 _wstat64 + struct _stat32 { + _dev_t st_dev; + _ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + _dev_t st_rdev; + _off_t st_size; + __time32_t st_atime; + __time32_t st_mtime; + __time32_t st_ctime; + }; + struct stat { + _dev_t st_dev; + _ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + _dev_t st_rdev; + _off_t st_size; + time_t st_atime; + time_t st_mtime; + time_t st_ctime; + }; + struct _stat32i64 { + _dev_t st_dev; + _ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + _dev_t st_rdev; + __extension__ long long st_size; + __time32_t st_atime; + __time32_t st_mtime; + __time32_t st_ctime; + }; + struct _stat64i32 { + _dev_t st_dev; + _ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + _dev_t st_rdev; + _off_t st_size; + __time64_t st_atime; + __time64_t st_mtime; + __time64_t st_ctime; + }; + struct _stat64 { + _dev_t st_dev; + _ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + _dev_t st_rdev; + __extension__ long long st_size; + __time64_t st_atime; + __time64_t st_mtime; + __time64_t st_ctime; + }; +#define __stat64 _stat64 +#define stat64 _stat64 +#define fstat64 _fstat64 +#define _STAT_DEFINED + +#define _S_IFMT 0xF000 +#define _S_IFDIR 0x4000 +#define _S_IFCHR 0x2000 +#define _S_IFIFO 0x1000 +#define _S_IFREG 0x8000 +#define _S_IREAD 0x0100 +#define _S_IWRITE 0x0080 +#define _S_IEXEC 0x0040 + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fstat32(int _FileDes,struct _stat32 *_Stat); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stat32(const char *_Name,struct _stat32 *_Stat); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fstat64(int _FileDes,struct _stat64 *_Stat); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fstat32i64(int _FileDes,struct _stat32i64 *_Stat); + int __attribute__((__cdecl__)) _fstat64i32(int _FileDes,struct _stat64i32 *_Stat); + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _fstat64i32(int _FileDes,struct _stat64i32 *_Stat) + { + struct _stat64 st; + int __ret=_fstat64(_FileDes,&st); + if (__ret == -1) { + memset(_Stat,0,sizeof(struct _stat64i32)); + return -1; + } + _Stat->st_dev=st.st_dev; + _Stat->st_ino=st.st_ino; + _Stat->st_mode=st.st_mode; + _Stat->st_nlink=st.st_nlink; + _Stat->st_uid=st.st_uid; + _Stat->st_gid=st.st_gid; + _Stat->st_rdev=st.st_rdev; + _Stat->st_size=(_off_t) st.st_size; + _Stat->st_atime=st.st_atime; + _Stat->st_mtime=st.st_mtime; + _Stat->st_ctime=st.st_ctime; + return __ret; + } + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stat64(const char *_Name,struct _stat64 *_Stat); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stat32i64(const char *_Name,struct _stat32i64 *_Stat); + int __attribute__((__cdecl__)) _stat64i32(const char *_Name,struct _stat64i32 *_Stat); + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _stat64i32(const char *_Name,struct _stat64i32 *_Stat) + { + struct _stat64 st; + int __ret=_stat64(_Name,&st); + if (__ret == -1) { + memset(_Stat,0,sizeof(struct _stat64i32)); + return -1; + } + _Stat->st_dev=st.st_dev; + _Stat->st_ino=st.st_ino; + _Stat->st_mode=st.st_mode; + _Stat->st_nlink=st.st_nlink; + _Stat->st_uid=st.st_uid; + _Stat->st_gid=st.st_gid; + _Stat->st_rdev=st.st_rdev; + _Stat->st_size=(_off_t) st.st_size; + _Stat->st_atime=st.st_atime; + _Stat->st_mtime=st.st_mtime; + _Stat->st_ctime=st.st_ctime; + return __ret; + } +#define _WSTAT_DEFINED + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wstat32(const wchar_t *_Name,struct _stat32 *_Stat); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wstat32i64(const wchar_t *_Name,struct _stat32i64 *_Stat); + int __attribute__((__cdecl__)) _wstat64i32(const wchar_t *_Name,struct _stat64i32 *_Stat); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wstat64(const wchar_t *_Name,struct _stat64 *_Stat); +#define _S_IFBLK 0x3000 +#define S_IFMT _S_IFMT +#define S_IFDIR _S_IFDIR +#define S_IFCHR _S_IFCHR +#define S_IFREG _S_IFREG +#define S_IREAD _S_IREAD +#define S_IWRITE _S_IWRITE +#define S_IEXEC _S_IEXEC +#define S_IFIFO _S_IFIFO +#define S_IFBLK _S_IFBLK +#define _S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC) +#define _S_IXUSR _S_IEXEC +#define _S_IWUSR _S_IWRITE +#define S_IRWXU _S_IRWXU +#define S_IXUSR _S_IXUSR +#define S_IWUSR _S_IWUSR +#define S_IRUSR _S_IRUSR +#define _S_IRUSR _S_IREAD +#define S_IRGRP (S_IRUSR >> 3) +#define S_IWGRP (S_IWUSR >> 3) +#define S_IXGRP (S_IXUSR >> 3) +#define S_IRWXG (S_IRWXU >> 3) +#define S_IROTH (S_IRGRP >> 3) +#define S_IWOTH (S_IWGRP >> 3) +#define S_IXOTH (S_IXGRP >> 3) +#define S_IRWXO (S_IRWXG >> 3) +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) +#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) +#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +int __attribute__((__cdecl__)) fstat(int _Desc,struct stat *_Stat); + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) stat(const char *_Filename,struct stat *_Stat) + { + return _stat64i32(_Filename, (struct _stat64i32 *)_Stat); + } + static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) wstat(const wchar_t *_Filename,struct stat *_Stat) + { + return _wstat64i32(_Filename, (struct _stat64i32 *)_Stat); + } +extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) + fstat(int _Desc,struct stat *_Stat) { + struct _stat64 st; + int __ret=_fstat64(_Desc,&st); + if (__ret == -1) { + memset(_Stat,0,sizeof(struct stat)); + return -1; + } + _Stat->st_dev=st.st_dev; + _Stat->st_ino=st.st_ino; + _Stat->st_mode=st.st_mode; + _Stat->st_nlink=st.st_nlink; + _Stat->st_uid=st.st_uid; + _Stat->st_gid=st.st_gid; + _Stat->st_rdev=st.st_rdev; + _Stat->st_size=(_off_t) st.st_size; + _Stat->st_atime=st.st_atime; + _Stat->st_mtime=st.st_mtime; + _Stat->st_ctime=st.st_ctime; + return __ret; +} +#define stat _stat64 +#define fstat _fstat64 +#pragma pack(pop) +#define _INC_STDLIB +#define _INC_CORECRT_WSTDLIB + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _itow_s (int _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ltow_s (long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ultow_s (unsigned long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wgetenv_s(size_t *_ReturnSize,wchar_t *_DstBuf,size_t _DstSizeInWords,const wchar_t *_VarName); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wdupenv_s(wchar_t **_Buffer,size_t *_BufferSizeInWords,const wchar_t *_VarName); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _i64tow_s(long long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ui64tow_s(unsigned long long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wmakepath_s(wchar_t *_PathResult,size_t _SizeInWords,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wputenv_s(const wchar_t *_Name,const wchar_t *_Value); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wsearchenv_s(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath,size_t _SizeInWords); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wsplitpath_s(const wchar_t *_FullPath,wchar_t *_Drive,size_t _DriveSizeInWords,wchar_t *_Dir,size_t _DirSizeInWords,wchar_t *_Filename,size_t _FilenameSizeInWords,wchar_t *_Ext,size_t _ExtSizeInWords); +#define __CLANG_LIMITS_H +#define _GCC_LIMITS_H_ +#define _INC_LIMITS +#define PATH_MAX 260 +#define CHAR_BIT 8 +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 0xff +#define CHAR_MIN SCHAR_MIN +#define CHAR_MAX SCHAR_MAX +#define MB_LEN_MAX 5 +#define SHRT_MIN (-32768) +#define SHRT_MAX 32767 +#define USHRT_MAX 0xffffU +#define INT_MIN (-2147483647 - 1) +#define INT_MAX 2147483647 +#define UINT_MAX 0xffffffffU +#define LONG_MIN (-2147483647L - 1) +#define LONG_MAX 2147483647L +#define ULONG_MAX 0xffffffffUL +#define LLONG_MAX 9223372036854775807ll +#define LLONG_MIN (-9223372036854775807ll - 1) +#define ULLONG_MAX 0xffffffffffffffffull +#define _I8_MIN (-127 - 1) +#define _I8_MAX 127 +#define _UI8_MAX 0xffu +#define _I16_MIN (-32767 - 1) +#define _I16_MAX 32767 +#define _UI16_MAX 0xffffu +#define _I32_MIN (-2147483647 - 1) +#define _I32_MAX 2147483647 +#define _UI32_MAX 0xffffffffu +#undef LONG_LONG_MAX +#define LONG_LONG_MAX 9223372036854775807ll +#undef LONG_LONG_MIN +#define LONG_LONG_MIN (-LONG_LONG_MAX-1) +#undef ULONG_LONG_MAX +#define ULONG_LONG_MAX (2ull * LONG_LONG_MAX + 1ull) +#define _I64_MIN (-9223372036854775807ll - 1) +#define _I64_MAX 9223372036854775807ll +#define _UI64_MAX 0xffffffffffffffffull +#define SIZE_MAX _UI64_MAX +#define SSIZE_MAX _I64_MAX +#undef SCHAR_MIN +#undef SCHAR_MAX +#undef UCHAR_MAX +#undef SHRT_MIN +#undef SHRT_MAX +#undef USHRT_MAX +#undef INT_MIN +#undef INT_MAX +#undef UINT_MAX +#undef LONG_MIN +#undef LONG_MAX +#undef ULONG_MAX +#undef CHAR_BIT +#undef CHAR_MIN +#undef CHAR_MAX +#define SCHAR_MAX __SCHAR_MAX__ +#define SHRT_MAX __SHRT_MAX__ +#define INT_MAX __INT_MAX__ +#define LONG_MAX __LONG_MAX__ +#define SCHAR_MIN (-__SCHAR_MAX__-1) +#define SHRT_MIN (-__SHRT_MAX__ -1) +#define INT_MIN (-__INT_MAX__ -1) +#define LONG_MIN (-__LONG_MAX__ -1L) +#define UCHAR_MAX (__SCHAR_MAX__*2 +1) +#define USHRT_MAX (__SHRT_MAX__ * 2 + 1) +#define UINT_MAX (__INT_MAX__ *2U +1U) +#define ULONG_MAX (__LONG_MAX__ *2UL+1UL) +#define CHAR_BIT __CHAR_BIT__ +#define CHAR_MIN SCHAR_MIN +#define CHAR_MAX __SCHAR_MAX__ +#undef LLONG_MIN +#undef LLONG_MAX +#undef ULLONG_MAX +#define LLONG_MAX __LONG_LONG_MAX__ +#define LLONG_MIN (-__LONG_LONG_MAX__-1LL) +#define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL) +#undef LONG_LONG_MIN +#undef LONG_LONG_MAX +#undef ULONG_LONG_MAX +#define LONG_LONG_MAX __LONG_LONG_MAX__ +#define LONG_LONG_MIN (-__LONG_LONG_MAX__-1LL) +#define ULONG_LONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL) +#define __USE_MINGW_STRTOX 1 +#pragma pack(push,_CRT_PACKING) +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 +#define _ONEXIT_T_DEFINED + typedef int (__attribute__((__cdecl__)) *_onexit_t)(void); +#define onexit_t _onexit_t +#define _DIV_T_DEFINED + typedef struct _div_t { + int quot; + int rem; + } div_t; + typedef struct _ldiv_t { + long quot; + long rem; + } ldiv_t; +#define _CRT_DOUBLE_DEC +#pragma pack(4) + typedef struct { + unsigned char ld[10]; + } _LDOUBLE; +#pragma pack() +#define _PTR_LD(x) ((unsigned char *)(&(x)->ld)) + typedef struct { + double x; + } _CRT_DOUBLE; + typedef struct { + float f; + } _CRT_FLOAT; +#undef long + typedef struct { + long double x; + } _LONGDOUBLE; +#pragma pack(4) + typedef struct { + unsigned char ld12[12]; + } _LDBL12; +#pragma pack() +#define RAND_MAX 0x7fff +#define MB_CUR_MAX ___mb_cur_max_func() +#define __mb_cur_max (___mb_cur_max_func()) +__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) ___mb_cur_max_func(void); +#define __max(a,b) (((a) > (b)) ? (a) : (b)) +#define __min(a,b) (((a) < (b)) ? (a) : (b)) +#define _MAX_PATH 260 +#define _MAX_DRIVE 3 +#define _MAX_DIR 256 +#define _MAX_FNAME 256 +#define _MAX_EXT 256 +#define _OUT_TO_DEFAULT 0 +#define _OUT_TO_STDERR 1 +#define _OUT_TO_MSGBOX 2 +#define _REPORT_ERRMODE 3 +#define _WRITE_ABORT_MSG 0x1 +#define _CALL_REPORTFAULT 0x2 +#define _MAX_ENV 32767 + typedef void (__attribute__((__cdecl__)) *_purecall_handler)(void); + __attribute__ ((__dllimport__)) _purecall_handler __attribute__((__cdecl__)) _set_purecall_handler(_purecall_handler _Handler); + __attribute__ ((__dllimport__)) _purecall_handler __attribute__((__cdecl__)) _get_purecall_handler(void); + typedef void (__attribute__((__cdecl__)) *_invalid_parameter_handler)(const wchar_t *,const wchar_t *,const wchar_t *,unsigned int,uintptr_t); + __attribute__ ((__dllimport__)) _invalid_parameter_handler __attribute__((__cdecl__)) _set_invalid_parameter_handler(_invalid_parameter_handler _Handler); + __attribute__ ((__dllimport__)) _invalid_parameter_handler __attribute__((__cdecl__)) _get_invalid_parameter_handler(void); +#define _CRT_ERRNO_DEFINED + __attribute__ ((__dllimport__)) extern int *__attribute__((__cdecl__)) _errno(void); +#define errno (*_errno()) + errno_t __attribute__((__cdecl__)) _set_errno(int _Value); + errno_t __attribute__((__cdecl__)) _get_errno(int *_Value); + __attribute__ ((__dllimport__)) unsigned long *__attribute__((__cdecl__)) __doserrno(void); +#define _doserrno (*__doserrno()) + errno_t __attribute__((__cdecl__)) _set_doserrno(unsigned long _Value); + errno_t __attribute__((__cdecl__)) _get_doserrno(unsigned long *_Value); + __attribute__ ((__dllimport__)) char **__attribute__((__cdecl__)) __sys_errlist(void); + __attribute__ ((__dllimport__)) int *__attribute__((__cdecl__)) __sys_nerr(void); +#define _sys_nerr (*__sys_nerr()) +#define _sys_errlist (__sys_errlist()) + __attribute__ ((__dllimport__)) char ***__attribute__((__cdecl__)) __p___argv(void); + __attribute__ ((__dllimport__)) int *__attribute__((__cdecl__)) __p__fmode(void); + __attribute__ ((__dllimport__)) int *__attribute__((__cdecl__)) __p___argc(void); + __attribute__ ((__dllimport__)) wchar_t ***__attribute__((__cdecl__)) __p___wargv(void); + __attribute__ ((__dllimport__)) char ***__attribute__((__cdecl__)) __p__environ(void); + __attribute__ ((__dllimport__)) wchar_t ***__attribute__((__cdecl__)) __p__wenviron(void); + __attribute__ ((__dllimport__)) char **__attribute__((__cdecl__)) __p__pgmptr(void); + __attribute__ ((__dllimport__)) wchar_t **__attribute__((__cdecl__)) __p__wpgmptr(void); + errno_t __attribute__((__cdecl__)) _get_pgmptr(char **_Value); + errno_t __attribute__((__cdecl__)) _get_wpgmptr(wchar_t **_Value); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _set_fmode(int _Mode); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_fmode(int *_PMode); +#define _fmode (* __p__fmode()) +#define __argc (* __p___argc()) +#define __argv (* __p___argv()) +#define __wargv (* __p___wargv()) +#define _environ (* __p__environ()) +#define _wenviron (* __p__wenviron()) +#define _pgmptr (* __p__pgmptr()) +#define _wpgmptr (* __p__wpgmptr()) + errno_t __attribute__((__cdecl__)) _get_osplatform(unsigned int *_Value); + errno_t __attribute__((__cdecl__)) _get_osver(unsigned int *_Value); + errno_t __attribute__((__cdecl__)) _get_winver(unsigned int *_Value); + errno_t __attribute__((__cdecl__)) _get_winmajor(unsigned int *_Value); + errno_t __attribute__((__cdecl__)) _get_winminor(unsigned int *_Value); +#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0])) +#define _CRT_TERMINATE_DEFINED + void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) exit(int _Code) __attribute__ ((__noreturn__)); + void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _exit(int _Code) __attribute__ ((__noreturn__)); + void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) quick_exit(int _Code) __attribute__ ((__noreturn__)); + void __attribute__((__cdecl__)) _Exit(int) __attribute__ ((__noreturn__)); + extern inline __attribute__((__gnu_inline__)) __attribute__ ((__noreturn__)) void __attribute__((__cdecl__)) _Exit(int status) + { _exit(status); } +#undef abort + void __attribute__((__cdecl__)) __attribute__ ((__noreturn__)) abort(void); + __attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) _set_abort_behavior(unsigned int _Flags,unsigned int _Mask); +#define _CRT_ABS_DEFINED + int __attribute__((__cdecl__)) abs(int _X); + long __attribute__((__cdecl__)) labs(long _X); + __extension__ long long __attribute__((__cdecl__)) _abs64(long long); + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) long long __attribute__((__cdecl__)) _abs64(long long x) { + return __builtin_llabs(x); + } + int __attribute__((__cdecl__)) atexit(void (__attribute__((__cdecl__)) *)(void)); + int __attribute__((__cdecl__)) at_quick_exit(void (__attribute__((__cdecl__)) *)(void)); +#define _CRT_ATOF_DEFINED + double __attribute__((__cdecl__)) atof(const char *_String); + double __attribute__((__cdecl__)) _atof_l(const char *_String,_locale_t _Locale); + int __attribute__((__cdecl__)) atoi(const char *_Str); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoi_l(const char *_Str,_locale_t _Locale); + long __attribute__((__cdecl__)) atol(const char *_Str); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _atol_l(const char *_Str,_locale_t _Locale); +#define _CRT_ALGO_DEFINED + void *__attribute__((__cdecl__)) bsearch(const void *_Key,const void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__attribute__((__cdecl__)) *_PtFuncCompare)(const void *,const void *)); + void __attribute__((__cdecl__)) qsort(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__attribute__((__cdecl__)) *_PtFuncCompare)(const void *,const void *)); + unsigned short __attribute__((__cdecl__)) _byteswap_ushort(unsigned short _Short); + unsigned long __attribute__((__cdecl__)) _byteswap_ulong (unsigned long _Long); + __extension__ unsigned long long __attribute__((__cdecl__)) _byteswap_uint64(unsigned long long _Int64); + div_t __attribute__((__cdecl__)) div(int _Numerator,int _Denominator); + char *__attribute__((__cdecl__)) getenv(const char *_VarName) ; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _itoa(int _Value,char *_Dest,int _Radix); + __extension__ __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _i64toa(long long _Val,char *_DstBuf,int _Radix) ; + __extension__ __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ui64toa(unsigned long long _Val,char *_DstBuf,int _Radix) ; + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _atoi64(const char *_String); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _atoi64_l(const char *_String,_locale_t _Locale); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _strtoi64(const char *_String,char **_EndPtr,int _Radix); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _strtoi64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale); + __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _strtoui64(const char *_String,char **_EndPtr,int _Radix); + __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _strtoui64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale); + ldiv_t __attribute__((__cdecl__)) ldiv(long _Numerator,long _Denominator); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ltoa(long _Value,char *_Dest,int _Radix) ; + int __attribute__((__cdecl__)) mblen(const char *_Ch,size_t _MaxCount); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _mblen_l(const char *_Ch,size_t _MaxCount,_locale_t _Locale); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrlen(const char *_Str); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrlen_l(const char *_Str,_locale_t _Locale); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrnlen(const char *_Str,size_t _MaxCount); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrnlen_l(const char *_Str,size_t _MaxCount,_locale_t _Locale); + int __attribute__((__cdecl__)) mbtowc(wchar_t * __restrict__ _DstCh,const char * __restrict__ _SrcCh,size_t _SrcSizeInBytes); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _mbtowc_l(wchar_t * __restrict__ _DstCh,const char * __restrict__ _SrcCh,size_t _SrcSizeInBytes,_locale_t _Locale); + size_t __attribute__((__cdecl__)) mbstowcs(wchar_t * __restrict__ _Dest,const char * __restrict__ _Source,size_t _MaxCount); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstowcs_l(wchar_t * __restrict__ _Dest,const char * __restrict__ _Source,size_t _MaxCount,_locale_t _Locale); + int __attribute__((__cdecl__)) mkstemp(char *template_name); + int __attribute__((__cdecl__)) rand(void); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _set_error_mode(int _Mode); + void __attribute__((__cdecl__)) srand(unsigned int _Seed); +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +double __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) strtod(const char * __restrict__ _Str,char ** __restrict__ _EndPtr) +{ + double __attribute__((__cdecl__)) __mingw_strtod (const char * __restrict__, char ** __restrict__); + return __mingw_strtod( _Str, _EndPtr); +} +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) +float __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) strtof(const char * __restrict__ _Str,char ** __restrict__ _EndPtr) +{ + float __attribute__((__cdecl__)) __mingw_strtof (const char * __restrict__, char ** __restrict__); + return __mingw_strtof( _Str, _EndPtr); +} + long double __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) strtold(const char * __restrict__ , char ** __restrict__ ); + extern double __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) + __strtod (const char * __restrict__ , char ** __restrict__); + float __attribute__((__cdecl__)) __mingw_strtof (const char * __restrict__, char ** __restrict__); + double __attribute__((__cdecl__)) __mingw_strtod (const char * __restrict__, char ** __restrict__); + long double __attribute__((__cdecl__)) __mingw_strtold(const char * __restrict__, char ** __restrict__); + __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _strtof_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,_locale_t _Locale); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _strtod_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,_locale_t _Locale); + long __attribute__((__cdecl__)) strtol(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _strtol_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); + unsigned long __attribute__((__cdecl__)) strtoul(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix); + __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _strtoul_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); +#define _CRT_SYSTEM_DEFINED + int __attribute__((__cdecl__)) system(const char *_Command); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ultoa(unsigned long _Value,char *_Dest,int _Radix) ; + int __attribute__((__cdecl__)) wctomb(char *_MbCh,wchar_t _WCh) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wctomb_l(char *_MbCh,wchar_t _WCh,_locale_t _Locale) ; + size_t __attribute__((__cdecl__)) wcstombs(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount) ; + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _wcstombs_l(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount,_locale_t _Locale) ; +#define _CRT_ALLOCATION_DEFINED + void *__attribute__((__cdecl__)) calloc(size_t _NumOfElements,size_t _SizeOfElements); + void __attribute__((__cdecl__)) free(void *_Memory); + void *__attribute__((__cdecl__)) malloc(size_t _Size); + void *__attribute__((__cdecl__)) realloc(void *_Memory,size_t _NewSize); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _aligned_free(void *_Memory); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_malloc(size_t _Size,size_t _Alignment); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _recalloc(void *_Memory,size_t _Count,size_t _Size); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_offset_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment,size_t _Offset); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _aligned_msize(void *_Memory,size_t _Alignment,size_t _Offset); +#define _WSTDLIB_DEFINED + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _itow(int _Value,wchar_t *_Dest,int _Radix) ; + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _ltow(long _Value,wchar_t *_Dest,int _Radix) ; + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix) ; + double __attribute__((__cdecl__)) __mingw_wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); + float __attribute__((__cdecl__)) __mingw_wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); + long double __attribute__((__cdecl__)) __mingw_wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__); + double __attribute__((__cdecl__)) wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); + float __attribute__((__cdecl__)) wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); + long double __attribute__((__cdecl__)) wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _wcstod_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,_locale_t _Locale); + __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _wcstof_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,_locale_t _Locale); + long __attribute__((__cdecl__)) wcstol(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _wcstol_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); + unsigned long __attribute__((__cdecl__)) wcstoul(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix); + __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _wcstoul_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wgetenv(const wchar_t *_VarName) ; +#define _CRT_WSYSTEM_DEFINED + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wsystem(const wchar_t *_Command); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _wtof(const wchar_t *_Str); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _wtof_l(const wchar_t *_Str,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wtoi(const wchar_t *_Str); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wtoi_l(const wchar_t *_Str,_locale_t _Locale); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _wtol(const wchar_t *_Str); + __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _wtol_l(const wchar_t *_Str,_locale_t _Locale); + __extension__ __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _i64tow(long long _Val,wchar_t *_DstBuf,int _Radix) ; + __extension__ __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _ui64tow(unsigned long long _Val,wchar_t *_DstBuf,int _Radix) ; + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wtoi64(const wchar_t *_Str); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wtoi64_l(const wchar_t *_Str,_locale_t _Locale); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix); + __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale); + __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix); + __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _wcstoui64_l(const wchar_t *_Str ,wchar_t **_EndPtr,int _Radix,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _putenv(const char *_EnvString); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wputenv(const wchar_t *_EnvString); +#define _CVTBUFSIZE (309+40) + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _fullpath(char *_FullPath,const char *_Path,size_t _SizeInBytes); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign) ; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign) ; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _gcvt(double _Val,int _NumOfDigits,char *_DstBuf) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atodbl(_CRT_DOUBLE *_Result,char *_Str); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoldbl(_LDOUBLE *_Result,char *_Str); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoflt(_CRT_FLOAT *_Result,char *_Str); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atodbl_l(_CRT_DOUBLE *_Result,char *_Str,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoldbl_l(_LDOUBLE *_Result,char *_Str,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoflt_l(_CRT_FLOAT *_Result,char *_Str,_locale_t _Locale); +#undef _lrotr +#undef _lrotl +unsigned long __attribute__((__cdecl__)) _lrotl(unsigned long,int); +unsigned long __attribute__((__cdecl__)) _lrotr(unsigned long,int); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _makepath(char *_Path,const char *_Drive,const char *_Dir,const char *_Filename,const char *_Ext); + _onexit_t __attribute__((__cdecl__)) _onexit(_onexit_t _Func); +#undef _rotl64 +#undef _rotr64 + __extension__ unsigned long long __attribute__((__cdecl__)) _rotl64(unsigned long long _Val,int _Shift); + __extension__ unsigned long long __attribute__((__cdecl__)) _rotr64(unsigned long long Value,int Shift); +#undef _rotr +#undef _rotl + unsigned int __attribute__((__cdecl__)) _rotr(unsigned int _Val,int _Shift); + unsigned int __attribute__((__cdecl__)) _rotl(unsigned int _Val,int _Shift); + __extension__ unsigned long long __attribute__((__cdecl__)) _rotr64(unsigned long long _Val,int _Shift); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _searchenv(const char *_Filename,const char *_EnvVar,char *_ResultPath) ; + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _splitpath(const char *_FullPath,char *_Drive,char *_Dir,char *_Filename,char *_Ext) ; + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _swab(char *_Buf1,char *_Buf2,int _SizeInBytes); +#define _WSTDLIBP_DEFINED + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wfullpath(wchar_t *_FullPath,const wchar_t *_Path,size_t _SizeInWords); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wmakepath(wchar_t *_ResultPath,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wsearchenv(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath) ; + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wsplitpath(const wchar_t *_FullPath,wchar_t *_Drive,wchar_t *_Dir,wchar_t *_Filename,wchar_t *_Ext) ; + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _beep(unsigned _Frequency,unsigned _Duration) __attribute__ ((__deprecated__)); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _seterrormode(int _Mode) __attribute__ ((__deprecated__)); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _sleep(unsigned long _Duration) __attribute__ ((__deprecated__)); +#define sys_errlist _sys_errlist +#define sys_nerr _sys_nerr +#define environ _environ + char *__attribute__((__cdecl__)) ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign) ; + char *__attribute__((__cdecl__)) fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign) ; + char *__attribute__((__cdecl__)) gcvt(double _Val,int _NumOfDigits,char *_DstBuf) ; + char *__attribute__((__cdecl__)) itoa(int _Val,char *_DstBuf,int _Radix) ; + char *__attribute__((__cdecl__)) ltoa(long _Val,char *_DstBuf,int _Radix) ; + int __attribute__((__cdecl__)) putenv(const char *_EnvString) ; +#define _CRT_SWAB_DEFINED + void __attribute__((__cdecl__)) swab(char *_Buf1,char *_Buf2,int _SizeInBytes) ; + char *__attribute__((__cdecl__)) ultoa(unsigned long _Val,char *_Dstbuf,int _Radix) ; + _onexit_t __attribute__((__cdecl__)) onexit(_onexit_t _Func); + typedef struct { __extension__ long long quot, rem; } lldiv_t; + __extension__ lldiv_t __attribute__((__cdecl__)) lldiv(long long, long long); + __extension__ long long __attribute__((__cdecl__)) llabs(long long); + __extension__ extern inline __attribute__((__gnu_inline__)) long long __attribute__((__cdecl__)) llabs(long long _j) { return (_j >= 0 ? _j : -_j); } + __extension__ long long __attribute__((__cdecl__)) strtoll(const char * __restrict__, char ** __restrict, int); + __extension__ unsigned long long __attribute__((__cdecl__)) strtoull(const char * __restrict__, char ** __restrict__, int); + __extension__ long long __attribute__((__cdecl__)) atoll (const char *); + __extension__ long long __attribute__((__cdecl__)) wtoll (const wchar_t *); + __extension__ char *__attribute__((__cdecl__)) lltoa (long long, char *, int); + __extension__ char *__attribute__((__cdecl__)) ulltoa (unsigned long long , char *, int); + __extension__ wchar_t *__attribute__((__cdecl__)) lltow (long long, wchar_t *, int); + __extension__ wchar_t *__attribute__((__cdecl__)) ulltow (unsigned long long, wchar_t *, int); + __extension__ extern inline __attribute__((__gnu_inline__)) char *__attribute__((__cdecl__)) lltoa (long long _n, char * _c, int _i) { return _i64toa (_n, _c, _i); } + __extension__ extern inline __attribute__((__gnu_inline__)) char *__attribute__((__cdecl__)) ulltoa (unsigned long long _n, char * _c, int _i) { return _ui64toa (_n, _c, _i); } + __extension__ extern inline __attribute__((__gnu_inline__)) long long __attribute__((__cdecl__)) wtoll (const wchar_t * _w) { return _wtoi64 (_w); } + __extension__ extern inline __attribute__((__gnu_inline__)) wchar_t *__attribute__((__cdecl__)) lltow (long long _n, wchar_t * _w, int _i) { return _i64tow (_n, _w, _i); } + __extension__ extern inline __attribute__((__gnu_inline__)) wchar_t *__attribute__((__cdecl__)) ulltow (unsigned long long _n, wchar_t * _w, int _i) { return _ui64tow (_n, _w, _i); } +#pragma pack(pop) +#define _INC_STDLIB_S + __attribute__ ((__dllimport__)) void * __attribute__((__cdecl__)) bsearch_s(const void *_Key,const void *_Base,rsize_t _NumOfElements,rsize_t _SizeOfElements,int (__attribute__((__cdecl__)) * _PtFuncCompare)(void *, const void *, const void *), void *_Context); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _dupenv_s(char **_PBuffer,size_t *_PBufferSizeInBytes,const char *_VarName); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) getenv_s(size_t *_ReturnSize,char *_DstBuf,rsize_t _DstSize,const char *_VarName); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _itoa_s(int _Value,char *_DstBuf,size_t _Size,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _i64toa_s(long long _Val,char *_DstBuf,size_t _Size,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ui64toa_s(unsigned long long _Val,char *_DstBuf,size_t _Size,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ltoa_s(long _Val,char *_DstBuf,size_t _Size,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) mbstowcs_s(size_t *_PtNumOfCharConverted,wchar_t *_DstBuf,size_t _SizeInWords,const char *_SrcBuf,size_t _MaxCount); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _mbstowcs_s_l(size_t *_PtNumOfCharConverted,wchar_t *_DstBuf,size_t _SizeInWords,const char *_SrcBuf,size_t _MaxCount,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ultoa_s(unsigned long _Val,char *_DstBuf,size_t _Size,int _Radix); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wctomb_s(int *_SizeConverted,char *_MbCh,rsize_t _SizeInBytes,wchar_t _WCh); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wctomb_s_l(int *_SizeConverted,char *_MbCh,size_t _SizeInBytes,wchar_t _WCh,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcstombs_s(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,const wchar_t *_Src,size_t _MaxCountInBytes); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcstombs_s_l(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,const wchar_t *_Src,size_t _MaxCountInBytes,_locale_t _Locale); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ecvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDights,int *_PtDec,int *_PtSign); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _fcvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDec,int *_PtDec,int *_PtSign); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _gcvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDigits); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _makepath_s(char *_PathResult,size_t _Size,const char *_Drive,const char *_Dir,const char *_Filename,const char *_Ext); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _putenv_s(const char *_Name,const char *_Value); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _searchenv_s(const char *_Filename,const char *_EnvVar,char *_ResultPath,size_t _SizeInBytes); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _splitpath_s(const char *_FullPath,char *_Drive,size_t _DriveSize,char *_Dir,size_t _DirSize,char *_Filename,size_t _FilenameSize,char *_Ext,size_t _ExtSize); +#define _QSORT_S_DEFINED + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) qsort_s(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__attribute__((__cdecl__)) *_PtFuncCompare)(void *,const void *,const void *),void *_Context); +#define _MALLOC_H_ +#pragma pack(push,_CRT_PACKING) +#define _HEAP_MAXREQ 0xFFFFFFFFFFFFFFE0 +#define _STATIC_ASSERT(expr) extern void __static_assert_t(int [(expr)?1:-1]) +#define _HEAPEMPTY (-1) +#define _HEAPOK (-2) +#define _HEAPBADBEGIN (-3) +#define _HEAPBADNODE (-4) +#define _HEAPEND (-5) +#define _HEAPBADPTR (-6) +#define _FREEENTRY 0 +#define _USEDENTRY 1 +#define _HEAPINFO_DEFINED + typedef struct _heapinfo { + int *_pentry; + size_t _size; + int _useflag; + } _HEAPINFO; + extern unsigned int _amblksiz; +void * __mingw_aligned_malloc (size_t _Size, size_t _Alignment); +void __mingw_aligned_free (void *_Memory); +void * __mingw_aligned_offset_realloc (void *_Memory, size_t _Size, size_t _Alignment, size_t _Offset); +void * __mingw_aligned_realloc (void *_Memory, size_t _Size, size_t _Offset); +#define _MAX_WAIT_MALLOC_CRT 60000 + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _resetstkoflw (void); + __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _set_malloc_crt_max_wait(unsigned long _NewValue); + __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _expand(void *_Memory,size_t _NewSize); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _msize(void *_Memory); +#undef _alloca +#define _alloca(x) __builtin_alloca((x)) + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _get_sbh_threshold(void); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _set_sbh_threshold(size_t _NewValue); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _set_amblksiz(size_t _Value); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_amblksiz(size_t *_Value); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapadd(void *_Memory,size_t _Size); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapchk(void); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapmin(void); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapset(unsigned int _Fill); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapwalk(_HEAPINFO *_EntryInfo); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _heapused(size_t *_Used,size_t *_Commit); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _get_heap_handle(void); +#define _ALLOCA_S_THRESHOLD 1024 +#define _ALLOCA_S_STACK_MARKER 0xCCCC +#define _ALLOCA_S_HEAP_MARKER 0xDDDD +#define _ALLOCA_S_MARKER_SIZE 16 + static __inline void *_MarkAllocaS(void *_Ptr,unsigned int _Marker) { + if(_Ptr) { + *((unsigned int*)_Ptr) = _Marker; + _Ptr = (char*)_Ptr + 16; + } + return _Ptr; + } +#undef _malloca +#define _malloca(size) ((((size) + _ALLOCA_S_MARKER_SIZE) <= _ALLOCA_S_THRESHOLD) ? _MarkAllocaS(_alloca((size) + _ALLOCA_S_MARKER_SIZE),_ALLOCA_S_STACK_MARKER) : _MarkAllocaS(malloc((size) + _ALLOCA_S_MARKER_SIZE),_ALLOCA_S_HEAP_MARKER)) +#undef _FREEA_INLINE +#define _FREEA_INLINE +#undef _freea + static __inline void __attribute__((__cdecl__)) _freea(void *_Memory) { + unsigned int _Marker; + if(_Memory) { + _Memory = (char*)_Memory - 16; + _Marker = *(unsigned int *)_Memory; + if(_Marker==0xDDDD) { + free(_Memory); + } + } + } +#undef alloca +#define alloca(x) __builtin_alloca((x)) +#pragma pack(pop) +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#define _PTRDIFF_T +typedef long long int ptrdiff_t; +#undef __need_ptrdiff_t +#define _SIZE_T +typedef long long unsigned int size_t; +#undef __need_size_t +#define _RSIZE_T +typedef long long unsigned int rsize_t; +#undef __need_rsize_t +#define _WCHAR_T +typedef unsigned short wchar_t; +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#define offsetof(t,d) __builtin_offsetof(t, d) +#undef __need_offsetof +#define _STRINGS_H_ 1 +#define __CLANG_INTTYPES_H +#define _INTTYPES_H_ +#define __CLANG_STDINT_H +#define _STDINT_H +#define __need_wint_t +#define __need_wchar_t +#undef __need_wchar_t +#undef __need_wint_t +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned uint32_t; +__extension__ typedef long long int64_t; +__extension__ typedef unsigned long long uint64_t; +typedef signed char int_least8_t; +typedef unsigned char uint_least8_t; +typedef short int_least16_t; +typedef unsigned short uint_least16_t; +typedef int int_least32_t; +typedef unsigned uint_least32_t; +__extension__ typedef long long int_least64_t; +__extension__ typedef unsigned long long uint_least64_t; +typedef signed char int_fast8_t; +typedef unsigned char uint_fast8_t; +typedef short int_fast16_t; +typedef unsigned short uint_fast16_t; +typedef int int_fast32_t; +typedef unsigned int uint_fast32_t; +__extension__ typedef long long int_fast64_t; +__extension__ typedef unsigned long long uint_fast64_t; +__extension__ typedef long long intmax_t; +__extension__ typedef unsigned long long uintmax_t; +#define INT8_MIN (-128) +#define INT16_MIN (-32768) +#define INT32_MIN (-2147483647 - 1) +#define INT64_MIN (-9223372036854775807LL - 1) +#define INT8_MAX 127 +#define INT16_MAX 32767 +#define INT32_MAX 2147483647 +#define INT64_MAX 9223372036854775807LL +#define UINT8_MAX 255 +#define UINT16_MAX 65535 +#define UINT32_MAX 0xffffffffU +#define UINT64_MAX 0xffffffffffffffffULL +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIG_ATOMIC_MIN INT32_MIN +#define SIG_ATOMIC_MAX INT32_MAX +#define WCHAR_MIN 0U +#define WCHAR_MAX 0xffffU +#define WINT_MIN 0U +#define WINT_MAX 0xffffU +#define INT8_C(val) (INT_LEAST8_MAX-INT_LEAST8_MAX+(val)) +#define INT16_C(val) (INT_LEAST16_MAX-INT_LEAST16_MAX+(val)) +#define INT32_C(val) (INT_LEAST32_MAX-INT_LEAST32_MAX+(val)) +#define INT64_C(val) val##LL +#define UINT8_C(val) (val) +#define UINT16_C(val) (val) +#define UINT32_C(val) (val##U) +#define UINT64_C(val) val##ULL +#define INTMAX_C(val) val##LL +#define UINTMAX_C(val) val##ULL +#define __need_wchar_t +#undef __need_wchar_t +typedef struct { + intmax_t quot; + intmax_t rem; + } imaxdiv_t; +#define PRId64 "lld" +#define PRIi64 "lli" +#define PRIo64 "llo" +#define PRIu64 "llu" +#define PRIx64 "llx" +#define PRIX64 "llX" +#define PRId8 "d" +#define PRId16 "d" +#define PRId32 "d" +#define PRIdLEAST8 "d" +#define PRIdLEAST16 "d" +#define PRIdLEAST32 "d" +#define PRIdLEAST64 PRId64 +#define PRIdFAST8 "d" +#define PRIdFAST16 "d" +#define PRIdFAST32 "d" +#define PRIdFAST64 PRId64 +#define PRIdMAX PRId64 +#define PRIi8 "i" +#define PRIi16 "i" +#define PRIi32 "i" +#define PRIiLEAST8 "i" +#define PRIiLEAST16 "i" +#define PRIiLEAST32 "i" +#define PRIiLEAST64 PRIi64 +#define PRIiFAST8 "i" +#define PRIiFAST16 "i" +#define PRIiFAST32 "i" +#define PRIiFAST64 PRIi64 +#define PRIiMAX PRIi64 +#define PRIo8 "o" +#define PRIo16 "o" +#define PRIo32 "o" +#define PRIoLEAST8 "o" +#define PRIoLEAST16 "o" +#define PRIoLEAST32 "o" +#define PRIoLEAST64 PRIo64 +#define PRIoFAST8 "o" +#define PRIoFAST16 "o" +#define PRIoFAST32 "o" +#define PRIoFAST64 PRIo64 +#define PRIoMAX PRIo64 +#define PRIu8 "u" +#define PRIu16 "u" +#define PRIu32 "u" +#define PRIuLEAST8 "u" +#define PRIuLEAST16 "u" +#define PRIuLEAST32 "u" +#define PRIuLEAST64 PRIu64 +#define PRIuFAST8 "u" +#define PRIuFAST16 "u" +#define PRIuFAST32 "u" +#define PRIuFAST64 PRIu64 +#define PRIuMAX PRIu64 +#define PRIx8 "x" +#define PRIx16 "x" +#define PRIx32 "x" +#define PRIxLEAST8 "x" +#define PRIxLEAST16 "x" +#define PRIxLEAST32 "x" +#define PRIxLEAST64 PRIx64 +#define PRIxFAST8 "x" +#define PRIxFAST16 "x" +#define PRIxFAST32 "x" +#define PRIxFAST64 PRIx64 +#define PRIxMAX PRIx64 +#define PRIX8 "X" +#define PRIX16 "X" +#define PRIX32 "X" +#define PRIXLEAST8 "X" +#define PRIXLEAST16 "X" +#define PRIXLEAST32 "X" +#define PRIXLEAST64 PRIX64 +#define PRIXFAST8 "X" +#define PRIXFAST16 "X" +#define PRIXFAST32 "X" +#define PRIXFAST64 PRIX64 +#define PRIXMAX PRIX64 +#define SCNd16 "hd" +#define SCNd32 "d" +#define SCNd64 PRId64 +#define SCNdLEAST16 "hd" +#define SCNdLEAST32 "d" +#define SCNdLEAST64 PRId64 +#define SCNdFAST16 "hd" +#define SCNdFAST32 "d" +#define SCNdFAST64 PRId64 +#define SCNdMAX PRId64 +#define SCNi16 "hi" +#define SCNi32 "i" +#define SCNi64 PRIi64 +#define SCNiLEAST16 "hi" +#define SCNiLEAST32 "i" +#define SCNiLEAST64 PRIi64 +#define SCNiFAST16 "hi" +#define SCNiFAST32 "i" +#define SCNiFAST64 PRIi64 +#define SCNiMAX PRIi64 +#define SCNo16 "ho" +#define SCNo32 "o" +#define SCNo64 PRIo64 +#define SCNoLEAST16 "ho" +#define SCNoLEAST32 "o" +#define SCNoLEAST64 PRIo64 +#define SCNoFAST16 "ho" +#define SCNoFAST32 "o" +#define SCNoFAST64 PRIo64 +#define SCNoMAX PRIo64 +#define SCNx16 "hx" +#define SCNx32 "x" +#define SCNx64 PRIx64 +#define SCNxLEAST16 "hx" +#define SCNxLEAST32 "x" +#define SCNxLEAST64 PRIx64 +#define SCNxFAST16 "hx" +#define SCNxFAST32 "x" +#define SCNxFAST64 PRIx64 +#define SCNxMAX PRIx64 +#define SCNu16 "hu" +#define SCNu32 "u" +#define SCNu64 PRIu64 +#define SCNuLEAST16 "hu" +#define SCNuLEAST32 "u" +#define SCNuLEAST64 PRIu64 +#define SCNuFAST16 "hu" +#define SCNuFAST32 "u" +#define SCNuFAST64 PRIu64 +#define SCNuMAX PRIu64 +#define PRIdPTR PRId64 +#define PRIiPTR PRIi64 +#define PRIoPTR PRIo64 +#define PRIuPTR PRIu64 +#define PRIxPTR PRIx64 +#define PRIXPTR PRIX64 +#define SCNdPTR PRId64 +#define SCNiPTR PRIi64 +#define SCNoPTR PRIo64 +#define SCNxPTR PRIx64 +#define SCNuPTR PRIu64 +#define SCNd8 "hhd" +#define SCNdLEAST8 "hhd" +#define SCNdFAST8 "hhd" +#define SCNi8 "hhi" +#define SCNiLEAST8 "hhi" +#define SCNiFAST8 "hhi" +#define SCNo8 "hho" +#define SCNoLEAST8 "hho" +#define SCNoFAST8 "hho" +#define SCNx8 "hhx" +#define SCNxLEAST8 "hhx" +#define SCNxFAST8 "hhx" +#define SCNu8 "hhu" +#define SCNuLEAST8 "hhu" +#define SCNuFAST8 "hhu" +intmax_t __attribute__((__cdecl__)) imaxabs (intmax_t j); +extern inline __attribute__((__gnu_inline__)) intmax_t __attribute__((__cdecl__)) imaxabs (intmax_t j) + {return (j >= 0 ? j : -j);} +imaxdiv_t __attribute__((__cdecl__)) imaxdiv (intmax_t numer, intmax_t denom); +intmax_t __attribute__((__cdecl__)) strtoimax (const char* __restrict__ nptr, + char** __restrict__ endptr, int base); +uintmax_t __attribute__((__cdecl__)) strtoumax (const char* __restrict__ nptr, + char** __restrict__ endptr, int base); +intmax_t __attribute__((__cdecl__)) wcstoimax (const wchar_t* __restrict__ nptr, + wchar_t** __restrict__ endptr, int base); +uintmax_t __attribute__((__cdecl__)) wcstoumax (const wchar_t* __restrict__ nptr, + wchar_t** __restrict__ endptr, int base); +#define __STDALIGN_H +#define alignas _Alignas +#define alignof _Alignof +#define __alignas_is_defined 1 +#define __alignof_is_defined 1 +#define _UNISTD_H +#define __UNISTD_H_SOURCED__ 1 +#define _INC_PROCESS +#define _INC_CORECRT_STARTUP +__attribute__ ((__dllimport__)) char **__attribute__((__cdecl__)) __p__acmdln(void); +#define _acmdln (*__p__acmdln()) +__attribute__ ((__dllimport__)) wchar_t **__attribute__((__cdecl__)) __p__wcmdln(void); +#define _wcmdln (*__p__wcmdln()) +typedef void (__attribute__((__cdecl__)) *_PVFV)(void); +typedef int (__attribute__((__cdecl__)) *_PIFV)(void); +typedef void (__attribute__((__cdecl__)) *_PVFI)(int); +typedef struct _onexit_table_t { + _PVFV* _first; + _PVFV* _last; + _PVFV* _end; +} _onexit_table_t; +typedef int (__attribute__((__cdecl__)) *_onexit_t)(void); +__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _initialize_onexit_table(_onexit_table_t*); +__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _register_onexit_function(_onexit_table_t*,_onexit_t); +__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _execute_onexit_table(_onexit_table_t*); +__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _crt_atexit(_PVFV func); +__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _crt_at_quick_exit(_PVFV func); + typedef void (__attribute__((__cdecl__)) *_beginthread_proc_type)(void *); + typedef unsigned (__attribute__((__stdcall__)) *_beginthreadex_proc_type)(void *); + __attribute__ ((__dllimport__)) uintptr_t __attribute__((__cdecl__)) _beginthread(_beginthread_proc_type _StartAddress,unsigned _StackSize,void *_ArgList); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _endthread(void) __attribute__ ((__noreturn__)); + __attribute__ ((__dllimport__)) uintptr_t __attribute__((__cdecl__)) _beginthreadex(void *_Security,unsigned _StackSize,_beginthreadex_proc_type _StartAddress,void *_ArgList,unsigned _InitFlag,unsigned *_ThrdAddr); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _endthreadex(unsigned _Retval) __attribute__ ((__noreturn__)); + typedef void (__attribute__((__stdcall__)) *_tls_callback_type)(void*,unsigned long,void*); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _register_thread_local_exe_atexit_callback(_tls_callback_type callback); + void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _cexit(void); + void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _c_exit(void); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _getpid(void); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _cwait(int *_TermStat,intptr_t _ProcHandle,int _Action); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execl(const char *_Filename,const char *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execle(const char *_Filename,const char *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execlp(const char *_Filename,const char *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execlpe(const char *_Filename,const char *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execv(const char *_Filename,const char *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execve(const char *_Filename,const char *const *_ArgList,const char *const *_Env); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execvp(const char *_Filename,const char *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execvpe(const char *_Filename,const char *const *_ArgList,const char *const *_Env); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnl(int _Mode,const char *_Filename,const char *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnle(int _Mode,const char *_Filename,const char *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnlp(int _Mode,const char *_Filename,const char *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnlpe(int _Mode,const char *_Filename,const char *_ArgList,...); +#define _WEXEC_DEFINED + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecl(const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecle(const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexeclp(const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexeclpe(const wchar_t *_Filename,const wchar_t *_ArgList,...); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecv(const wchar_t *_Filename,const wchar_t *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecve(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecvp(const wchar_t *_Filename,const wchar_t *const *_ArgList); + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecvpe(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); + intptr_t __attribute__((__cdecl__)) _loaddll(char *_Filename); + int __attribute__((__cdecl__)) _unloaddll(intptr_t _Handle); + int (__attribute__((__cdecl__)) *__attribute__((__cdecl__)) _getdllprocaddr(intptr_t _Handle,char *_ProcedureName,intptr_t _Ordinal))(void); +#define P_WAIT _P_WAIT +#define P_NOWAIT _P_NOWAIT +#define P_OVERLAY _P_OVERLAY +#define OLD_P_OVERLAY _OLD_P_OVERLAY +#define P_NOWAITO _P_NOWAITO +#define P_DETACH _P_DETACH +#define WAIT_CHILD _WAIT_CHILD +#define WAIT_GRANDCHILD _WAIT_GRANDCHILD +#define _CRT_GETPID_DEFINED + int __attribute__((__cdecl__)) getpid(void) ; + intptr_t __attribute__((__cdecl__)) cwait(int *_TermStat,intptr_t _ProcHandle,int _Action) ; + int __attribute__((__cdecl__)) execl(const char *_Filename,const char *_ArgList,...) ; + int __attribute__((__cdecl__)) execle(const char *_Filename,const char *_ArgList,...) ; + int __attribute__((__cdecl__)) execlp(const char *_Filename,const char *_ArgList,...) ; + int __attribute__((__cdecl__)) execlpe(const char *_Filename,const char *_ArgList,...) ; + intptr_t __attribute__((__cdecl__)) spawnl(int,const char *_Filename,const char *_ArgList,...) ; + intptr_t __attribute__((__cdecl__)) spawnle(int,const char *_Filename,const char *_ArgList,...) ; + intptr_t __attribute__((__cdecl__)) spawnlp(int,const char *_Filename,const char *_ArgList,...) ; + intptr_t __attribute__((__cdecl__)) spawnlpe(int,const char *_Filename,const char *_ArgList,...) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execv(const char *_Filename,char *const _ArgList[]) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execve(const char *_Filename,char *const _ArgList[],char *const _Env[]) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execvp(const char *_Filename,char *const _ArgList[]) ; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]) ; + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnv(int,const char *_Filename,char *const _ArgList[]) ; + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnve(int,const char *_Filename,char *const _ArgList[],char *const _Env[]) ; + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnvp(int,const char *_Filename,char *const _ArgList[]) ; + __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnvpe(int,const char *_Filename,char *const _ArgList[],char *const _Env[]) ; +#define __GETOPT_H__ +extern int optind; +extern int optopt; +extern int opterr; +extern char *optarg; +extern int getopt(int nargc, char * const *nargv, const char *options); +#undef sleep +unsigned int __attribute__((__cdecl__)) sleep (unsigned int); +int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) usleep(useconds_t); +#define FTRUNCATE_DEFINED +int ftruncate(int, off32_t); +int ftruncate64(int, off64_t); +int truncate(const char *, off32_t); +int truncate64(const char *, off64_t); +extern inline __attribute__((__gnu_inline__)) int ftruncate(int __fd, off32_t __length) +{ + return _chsize (__fd, __length); +} +#define _FILE_OFFSET_BITS_SET_FTRUNCATE +#define ftruncate ftruncate64 +#define WIN_PTHREADS_UNISTD_H +#undef _POSIX_THREADS +#define _POSIX_THREADS 200112L +#undef _POSIX_READER_WRITER_LOCKS +#define _POSIX_READER_WRITER_LOCKS 200112L +#undef _POSIX_SPIN_LOCKS +#define _POSIX_SPIN_LOCKS 200112L +#undef _POSIX_BARRIERS +#define _POSIX_BARRIERS 200112L +#undef _POSIX_TIMEOUTS +#define _POSIX_TIMEOUTS 200112L +#undef _POSIX_CLOCK_SELECTION +#define _POSIX_CLOCK_SELECTION 200112 +#undef _POSIX_SEMAPHORES +#define _POSIX_SEMAPHORES 200112 + +#undef __UNISTD_H_SOURCED__ + +#define RBIMPL_DLLEXPORT_H +#undef RUBY_EXTERN +#define RUBY_EXTERN extern __declspec(dllimport) +#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED +#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN +#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END +#define MJIT_STATIC static +#define RBIMPL_SYMBOL_EXPORT_BEGIN() RUBY_SYMBOL_EXPORT_BEGIN +#define RBIMPL_SYMBOL_EXPORT_END() RUBY_SYMBOL_EXPORT_END + +#define RBIMPL_XMALLOC_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof + +#define RBIMPL_ATTR_ALLOC_SIZE_H + +#define RBIMPL_HAS_ATTRIBUTE_H +#define RBIMPL_HAVE___HAS_ATTRIBUTE 1 +#define RBIMPL_HAS_ATTRIBUTE(_) __has_attribute(_) +#define RBIMPL_ATTR_ALLOC_SIZE(tuple) __attribute__((__alloc_size__ tuple)) + +#define RBIMPL_ATTR_NODISCARD_H + +#define RBIMPL_HAS_C_ATTRIBUTE_H +#define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_) + +#define RBIMPL_HAS_CPP_ATTRIBUTE_H +#define RBIMPL_HAS_CPP_ATTRIBUTE0(_) 0 +#define RBIMPL_HAS_CPP_ATTRIBUTE(_) 0 +#define RBIMPL_ATTR_NODISCARD() [[nodiscard]] + +#define RBIMPL_ATTR_NOEXCEPT_H + +#define RBIMPL_HAS_FEATURE_H +#define RBIMPL_HAS_FEATURE(_) __has_feature(_) +#define RBIMPL_ATTR_NOEXCEPT(_) + +#define RBIMPL_ATTR_RESTRICT_H +#define RBIMPL_ATTR_RESTRICT() __attribute__((__malloc__)) + +#define RBIMPL_ATTR_RETURNS_NONNULL_H +#define RBIMPL_ATTR_RETURNS_NONNULL() __attribute__((__returns_nonnull__)) +#define USE_GC_MALLOC_OBJ_INFO_DETAILS 0 +#define xmalloc ruby_xmalloc +#define xmalloc2 ruby_xmalloc2 +#define xcalloc ruby_xcalloc +#define xrealloc ruby_xrealloc +#define xrealloc2 ruby_xrealloc2 +#define xfree ruby_xfree +#pragma GCC visibility push(default) +[[nodiscard]] +__attribute__((__malloc__)) +__attribute__((__returns_nonnull__)) +__attribute__((__alloc_size__ (1))) +void *ruby_xmalloc(size_t size) +; +[[nodiscard]] +__attribute__((__malloc__)) +__attribute__((__returns_nonnull__)) +__attribute__((__alloc_size__ (1,2))) +void *ruby_xmalloc2(size_t nelems, size_t elemsiz) +; +[[nodiscard]] +__attribute__((__malloc__)) +__attribute__((__returns_nonnull__)) +__attribute__((__alloc_size__ (1,2))) +void *ruby_xcalloc(size_t nelems, size_t elemsiz) +; +[[nodiscard]] +__attribute__((__returns_nonnull__)) +__attribute__((__alloc_size__ (2))) +void *ruby_xrealloc(void *ptr, size_t newsiz) +; +[[nodiscard]] +__attribute__((__returns_nonnull__)) +__attribute__((__alloc_size__ (2,3))) +void *ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz) +; +void ruby_xfree(void *ptr) +; +#pragma GCC visibility pop + +#define RUBY_BACKWARD2_ASSUME_H + +#define RBIMPL_ASSUME_H + +#define RBIMPL_CAST_H + +#define RBIMPL_HAS_WARNING_H +#define RBIMPL_HAS_WARNING(_) __has_warning(_) + +#define RBIMPL_WARNING_PUSH_H +#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) +#define RBIMPL_CAST(expr) (expr) + + +#define RBIMPL_HAS_BUILTIN_H +#define RBIMPL_HAVE___HAS_BUILTIN 1 +#define RBIMPL_HAS_BUILTIN(_) __has_builtin(_) +#define RBIMPL_UNREACHABLE_RETURN(_) __builtin_unreachable() +#define RBIMPL_UNREACHABLE __builtin_unreachable +#define RBIMPL_ASSUME __builtin_assume +#undef ASSUME +#undef UNREACHABLE +#define ASSUME RBIMPL_ASSUME +#define UNREACHABLE RBIMPL_UNREACHABLE() +#define UNREACHABLE_RETURN RBIMPL_UNREACHABLE_RETURN +#define RB_LIKELY(x) (__builtin_expect(!!(x), 1)) +#define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0)) + +#define RUBY_BACKWARD2_ATTRIBUTES_H + +#define RBIMPL_ATTR_COLD_H +#define RBIMPL_ATTR_COLD() __attribute__((__cold__)) + +#define RBIMPL_ATTR_CONST_H + +#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_H +#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE(_) __has_declspec_attribute(_) +#define RBIMPL_ATTR_CONST() __attribute__((__const__)) +#define RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONST() + +#define RBIMPL_ATTR_DEPRECATED_H + +#define RBIMPL_HAS_EXTENSION_H +#define RBIMPL_HAS_EXTENSION(_) __has_extension(_) +#define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg)) +#define RBIMPL_ATTR_DEPRECATED_EXT(msg) + +#define RBIMPL_ATTR_ERROR_H +#define RBIMPL_ATTR_ERROR(msg) __attribute__((__error__ msg)) + +#define RBIMPL_ATTR_FORCEINLINE_H +#define RBIMPL_ATTR_FORCEINLINE() __attribute__((__always_inline__)) inline + +#define RBIMPL_ATTR_FORMAT_H +#define RBIMPL_ATTR_FORMAT(x,y,z) __attribute__((__format__(x, y, z))) +#define RBIMPL_PRINTF_FORMAT __MINGW_PRINTF_FORMAT + +#define RBIMPL_ATTR_MAYBE_UNUSED_H +#define RBIMPL_ATTR_MAYBE_UNUSED() [[maybe_unused]] + +#define RBIMPL_ATTR_NOINLINE_H +#define RBIMPL_ATTR_NOINLINE() __declspec(noinline) + +#define RBIMPL_ATTR_NONNULL_H +#define RBIMPL_ATTR_NONNULL(list) __attribute__((__nonnull__ list)) +#define RBIMPL_NONNULL_ARG(arg) RBIMPL_ASSERT_NOTHING + +#define RBIMPL_ATTR_NORETURN_H +#define RBIMPL_ATTR_NORETURN() __declspec(noreturn) + +#define RBIMPL_ATTR_PURE_H + +#define RUBY_ASSERT_H +#define RBIMPL_RUBY_DEBUG 0 +#define RBIMPL_NDEBUG 0 +#undef RUBY_DEBUG +#undef RUBY_NDEBUG +#undef NDEBUG +#define RUBY_DEBUG 0 +#define RUBY_NDEBUG 1 +#define NDEBUG +#undef RBIMPL_NDEBUG +#undef RBIMPL_RUBY_DEBUG +#define RBIMPL_ASSERT_NOTHING RBIMPL_CAST((void)0) +#pragma GCC visibility push(default) +__declspec(noreturn) +__attribute__((__cold__)) +void rb_assert_failure(const char *file, int line, const char *name, const char *expr); +#pragma GCC visibility pop +#define RBIMPL_ASSERT_FUNC RUBY_FUNCTION_NAME_STRING +#define RUBY_ASSERT_FAIL(mesg) rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg) +#define RUBY_ASSERT_MESG(expr,mesg) (RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(mesg)) +#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr) +#define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING +#define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING +#define RUBY_ASSERT_MESG_WHEN(cond,expr,mesg) ((cond) ? RUBY_ASSERT_MESG((expr), (mesg)) : RBIMPL_ASSERT_NOTHING) +#define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr) +#define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING +#define RBIMPL_ATTR_PURE() __attribute__((__pure__)) +#define RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_PURE() + +#define RBIMPL_ATTR_WARNING_H +#define RBIMPL_ATTR_WARNING(msg) __attribute__((__warning__ msg)) +#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 +#define DEPRECATED_TYPE(mesg,decl) _Pragma("message \"DEPRECATED_TYPE is deprecated\""); decl RBIMPL_ATTR_DEPRECATED(mseg) +#undef RUBY_CXX_DEPRECATED +#define RUBY_CXX_DEPRECATED(mseg) RBIMPL_ATTR_DEPRECATED((mseg)) +#undef NOINLINE +#define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x +#undef ERRORFUNC +#define ERRORFUNC(mesg,x) RBIMPL_ATTR_ERROR(mesg) x +#define HAVE_ATTRIBUTE_ERRORFUNC 1 +#undef WARNINGFUNC +#define WARNINGFUNC(mesg,x) RBIMPL_ATTR_WARNING(mesg) x +#define HAVE_ATTRIBUTE_WARNINGFUNC 1 +#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() +#define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args) +#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 +#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x) +#undef RB_UNUSED_VAR +#define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED() + +#define RUBY_BACKWARD2_BOOL_H + +#define RBIMPL_STDBOOL_H +#define __STDBOOL_H +#define __bool_true_false_are_defined 1 +#define bool _Bool +#define true 1 +#define false 0 +#define FALSE false +#define TRUE true + +#define RUBY_BACKWARD2_LONG_LONG_H +#define HAVE_TRUE_LONG_LONG 1 +#define LONG_LONG RBIMPL_WARNING_PUSH() RBIMPL_WARNING_IGNORED(-Wc++11-long-long) long long RBIMPL_WARNING_POP() + +#define RUBY_BACKWARD2_STDALIGN_H + +#define RBIMPL_STDALIGN_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define RBIMPL_ALIGNAS(_) __declspec(align(_)) +#define RBIMPL_ALIGNOF(T) RB_GNUC_EXTENSION(_Alignof(T)) + +#undef RUBY_ALIGNAS +#undef RUBY_ALIGNOF +#define RUBY_ALIGNAS RBIMPL_ALIGNAS +#define RUBY_ALIGNOF RBIMPL_ALIGNOF + +#define RUBY_BACKWARD2_STDARG_H +#undef _ +#define _(args) args +#undef __ +#define __(args) args +#define ANYARGS + +#define RBIMPL_DOSISH_H +#define DOSISH 1 +#define DOSISH_DRIVE_LETTER + +#define RUBY_WIN32_H 1 +#pragma GCC visibility push(default) +#define _WINSOCK2API_ +#define _INC_CRT_UNICODE_MACROS 2 +#define __MINGW_NAME_AW(func) func##A +#define __MINGW_NAME_AW_EXT(func,ext) func##A##ext +#define __MINGW_NAME_UAW(func) func##_A +#define __MINGW_NAME_UAW_EXT(func,ext) func##_A_##ext +#define __MINGW_STRING_AW(str) str +#define __MINGW_PROCNAMEEXT_AW "A" +#define __MINGW_TYPEDEF_AW(type) typedef __MINGW_NAME_AW(type) type; +#define __MINGW_TYPEDEF_UAW(type) typedef __MINGW_NAME_UAW(type) type; +#define _WINSOCKAPI_ +#define INCL_WINSOCK_API_TYPEDEFS 0 +#define _WINDOWS_ +#define _INC_SDKDDKVER +#define _WIN32_WINNT_NT4 0x0400 +#define _WIN32_WINNT_WIN2K 0x0500 +#define _WIN32_WINNT_WINXP 0x0501 +#define _WIN32_WINNT_WS03 0x0502 +#define _WIN32_WINNT_WIN6 0x0600 +#define _WIN32_WINNT_VISTA 0x0600 +#define _WIN32_WINNT_WS08 0x0600 +#define _WIN32_WINNT_LONGHORN 0x0600 +#define _WIN32_WINNT_WIN7 0x0601 +#define _WIN32_WINNT_WIN8 0x0602 +#define _WIN32_WINNT_WINBLUE 0x0603 +#define _WIN32_WINNT_WINTHRESHOLD 0x0A00 +#define _WIN32_WINNT_WIN10 0x0A00 +#define _WIN32_IE_IE20 0x0200 +#define _WIN32_IE_IE30 0x0300 +#define _WIN32_IE_IE302 0x0302 +#define _WIN32_IE_IE40 0x0400 +#define _WIN32_IE_IE401 0x0401 +#define _WIN32_IE_IE50 0x0500 +#define _WIN32_IE_IE501 0x0501 +#define _WIN32_IE_IE55 0x0550 +#define _WIN32_IE_IE60 0x0600 +#define _WIN32_IE_IE60SP1 0x0601 +#define _WIN32_IE_IE60SP2 0x0603 +#define _WIN32_IE_IE70 0x0700 +#define _WIN32_IE_IE80 0x0800 +#define _WIN32_IE_IE90 0x0900 +#define _WIN32_IE_IE100 0x0a00 +#define _WIN32_IE_IE110 0x0A00 +#define _WIN32_IE_NT4 _WIN32_IE_IE20 +#define _WIN32_IE_NT4SP1 _WIN32_IE_IE20 +#define _WIN32_IE_NT4SP2 _WIN32_IE_IE20 +#define _WIN32_IE_NT4SP3 _WIN32_IE_IE302 +#define _WIN32_IE_NT4SP4 _WIN32_IE_IE401 +#define _WIN32_IE_NT4SP5 _WIN32_IE_IE401 +#define _WIN32_IE_NT4SP6 _WIN32_IE_IE50 +#define _WIN32_IE_WIN98 _WIN32_IE_IE401 +#define _WIN32_IE_WIN98SE _WIN32_IE_IE50 +#define _WIN32_IE_WINME _WIN32_IE_IE55 +#define _WIN32_IE_WIN2K _WIN32_IE_IE501 +#define _WIN32_IE_WIN2KSP1 _WIN32_IE_IE501 +#define _WIN32_IE_WIN2KSP2 _WIN32_IE_IE501 +#define _WIN32_IE_WIN2KSP3 _WIN32_IE_IE501 +#define _WIN32_IE_WIN2KSP4 _WIN32_IE_IE501 +#define _WIN32_IE_XP _WIN32_IE_IE60 +#define _WIN32_IE_XPSP1 _WIN32_IE_IE60SP1 +#define _WIN32_IE_XPSP2 _WIN32_IE_IE60SP2 +#define _WIN32_IE_WS03 0x0602 +#define _WIN32_IE_WS03SP1 _WIN32_IE_IE60SP2 +#define _WIN32_IE_WIN6 _WIN32_IE_IE70 +#define _WIN32_IE_LONGHORN _WIN32_IE_IE70 +#define _WIN32_IE_WIN7 _WIN32_IE_IE80 +#define _WIN32_IE_WIN8 _WIN32_IE_IE100 +#define _WIN32_IE_WINBLUE _WIN32_IE_IE100 +#define _WIN32_IE_WINTHRESHOLD _WIN32_IE_IE110 +#define _WIN32_IE_WIN10 _WIN32_IE_IE110 +#define NTDDI_WIN2K 0x05000000 +#define NTDDI_WIN2KSP1 0x05000100 +#define NTDDI_WIN2KSP2 0x05000200 +#define NTDDI_WIN2KSP3 0x05000300 +#define NTDDI_WIN2KSP4 0x05000400 +#define NTDDI_WINXP 0x05010000 +#define NTDDI_WINXPSP1 0x05010100 +#define NTDDI_WINXPSP2 0x05010200 +#define NTDDI_WINXPSP3 0x05010300 +#define NTDDI_WINXPSP4 0x05010400 +#define NTDDI_WS03 0x05020000 +#define NTDDI_WS03SP1 0x05020100 +#define NTDDI_WS03SP2 0x05020200 +#define NTDDI_WS03SP3 0x05020300 +#define NTDDI_WS03SP4 0x05020400 +#define NTDDI_WIN6 0x06000000 +#define NTDDI_WIN6SP1 0x06000100 +#define NTDDI_WIN6SP2 0x06000200 +#define NTDDI_WIN6SP3 0x06000300 +#define NTDDI_WIN6SP4 0x06000400 +#define NTDDI_VISTA NTDDI_WIN6 +#define NTDDI_VISTASP1 NTDDI_WIN6SP1 +#define NTDDI_VISTASP2 NTDDI_WIN6SP2 +#define NTDDI_VISTASP3 NTDDI_WIN6SP3 +#define NTDDI_VISTASP4 NTDDI_WIN6SP4 +#define NTDDI_LONGHORN NTDDI_VISTA +#define NTDDI_WS08 NTDDI_WIN6SP1 +#define NTDDI_WS08SP2 NTDDI_WIN6SP2 +#define NTDDI_WS08SP3 NTDDI_WIN6SP3 +#define NTDDI_WS08SP4 NTDDI_WIN6SP4 +#define NTDDI_WIN7 0x06010000 +#define NTDDI_WIN8 0x06020000 +#define NTDDI_WINBLUE 0x06030000 +#define NTDDI_WINTHRESHOLD 0x0A000000 +#define NTDDI_WIN10 0x0A000000 +#define NTDDI_WIN10_TH2 0x0A000001 +#define NTDDI_WIN10_RS1 0x0A000002 +#define NTDDI_WIN10_RS2 0x0A000003 +#define NTDDI_WIN10_RS3 0x0A000004 +#define NTDDI_WIN10_RS4 0x0A000005 +#define NTDDI_WIN10_RS5 0x0A000006 +#define NTDDI_WIN10_19H1 0x0A000007 +#define NTDDI_WIN10_VB 0x0A000008 +#define NTDDI_WIN10_MN 0x0A000009 +#define NTDDI_WIN10_FE 0x0A00000A +#define NTDDI_WIN10_CO 0x0A00000B +#define NTDDI_WIN10_NI 0x0A00000C +#define WDK_NTDDI_VERSION NTDDI_WIN10_NI +#define OSVERSION_MASK 0xFFFF0000U +#define SPVERSION_MASK 0x0000FF00 +#define SUBVERSION_MASK 0x000000FF +#define OSVER(Version) ((Version) & OSVERSION_MASK) +#define SPVER(Version) (((Version) & SPVERSION_MASK) >> 8) +#define SUBVER(Version) (((Version) & SUBVERSION_MASK)) +#define NTDDI_VERSION_FROM_WIN32_WINNT2(Version) Version##0000 +#define NTDDI_VERSION_FROM_WIN32_WINNT(Version) NTDDI_VERSION_FROM_WIN32_WINNT2(Version) +#define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT) +#define WINVER _WIN32_WINNT +#define _WIN32_IE _WIN32_IE_LONGHORN +#define _INC_WINDOWS +#define _INC_EXCPT +#pragma pack(push,_CRT_PACKING) + struct _EXCEPTION_POINTERS; +#define EXCEPTION_DISPOSITION int +#define ExceptionContinueExecution 0 +#define ExceptionContinueSearch 1 +#define ExceptionNestedException 2 +#define ExceptionCollidedUnwind 3 +#define ExceptionExecuteHandler 4 + struct _EXCEPTION_RECORD; + struct _CONTEXT; + struct _DISPATCHER_CONTEXT; + __extension__ __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord, void *_EstablisherFrame, struct _CONTEXT *_ContextRecord, struct _DISPATCHER_CONTEXT *_DispatcherContext); +#define GetExceptionCode _exception_code +#define exception_code _exception_code +#define GetExceptionInformation() ((struct _EXCEPTION_POINTERS *)_exception_info()) +#define exception_info() ((struct _EXCEPTION_POINTERS *)_exception_info()) +#define AbnormalTermination _abnormal_termination +#define abnormal_termination _abnormal_termination + unsigned long __attribute__((__cdecl__)) _exception_code(void); + void *__attribute__((__cdecl__)) _exception_info(void); + int __attribute__((__cdecl__)) _abnormal_termination(void); +#define EXCEPTION_EXECUTE_HANDLER 1 +#define EXCEPTION_CONTINUE_SEARCH 0 +#define EXCEPTION_CONTINUE_EXECUTION -1 + typedef void (__attribute__((__cdecl__)) * _PHNDLR)(int); + struct _XCPT_ACTION { + unsigned long XcptNum; + int SigNum; + _PHNDLR XcptAction; + }; + extern struct _XCPT_ACTION _XcptActTab[]; + extern int _XcptActTabCount; + extern int _XcptActTabSize; + extern int _First_FPE_Indx; + extern int _Num_FPE; + int __attribute__((__cdecl__)) __CppXcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr); + int __attribute__((__cdecl__)) _XcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr); + typedef int (*PEXCEPTION_HANDLER)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*); +#define __try1(pHandler) +#define __except1 +#pragma pack(pop) +#define _WINDEF_ +#define _INC_WINAPIFAMILY +#define WINAPI_PARTITION_DESKTOP 0x1 +#define WINAPI_PARTITION_APP 0x2 +#define WINAPI_FAMILY_APP WINAPI_PARTITION_APP +#define WINAPI_FAMILY_DESKTOP_APP (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_APP) +#define WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP +#define WINAPI_FAMILY_PARTITION(v) ((WINAPI_FAMILY & v) == v) +#define WINAPI_FAMILY_ONE_PARTITION(vset,v) ((WINAPI_FAMILY & vset) == v) + +#define _MINWINDEF_ + +#define SPECSTRINGS_H +#define __specstrings +#define SAL_HXX +#define CONCURRENCYSAL_HXX +#define _Benign_race_begin_ +#define _Benign_race_end_ +#define _No_competing_thread_begin_ +#define _No_competing_thread_end_ +#define _Acquires_exclusive_lock_(lock) +#define _Acquires_lock_(lock) +#define _Acquires_nonreentrant_lock_(lock) +#define _Acquires_shared_lock_(lock) +#define _Analysis_assume_lock_acquired_(lock) +#define _Analysis_assume_lock_released_(lock) +#define _Analysis_assume_lock_held_(lock) +#define _Analysis_assume_lock_not_held_(lock) +#define _Analysis_assume_same_lock_(lock1,lock2) +#define _Analysis_suppress_lock_checking_(lock) +#define _Create_lock_level_(level) +#define _Csalcat1_(x,y) +#define _Csalcat2_(x,y) +#define _Function_ignore_lock_checking_(lock) +#define _Guarded_by_(lock) +#define _Has_lock_kind_(kind) +#define _Has_lock_level_(level) +#define _Interlocked_ +#define _Internal_lock_level_order_(a,b) +#define _Lock_level_order_(a,b) +#define _No_competing_thread_ +#define _Post_same_lock_(lock1,lock2) +#define _Releases_exclusive_lock_(lock) +#define _Releases_lock_(lock) +#define _Releases_nonreentrant_lock_(lock) +#define _Releases_shared_lock_(lock) +#define _Requires_exclusive_lock_held_(lock) +#define _Requires_shared_lock_held_(lock) +#define _Requires_lock_held_(lock) +#define _Requires_lock_not_held_(lock) +#define _Requires_no_locks_held_ +#define _Write_guarded_by_(lock) +#define __inner_checkReturn __attribute__((warn_unused_result)) +#define __checkReturn __inner_checkReturn +#define _In_ +#define _In_opt_ +#define _In_z_ +#define _In_opt_z_ +#define _In_reads_(s) +#define _In_reads_opt_(s) +#define _In_reads_bytes_(s) +#define _In_reads_bytes_opt_(s) +#define _In_reads_z_(s) +#define _In_reads_opt_z_(s) +#define _In_reads_or_z_(s) +#define _In_reads_or_z_opt_(s) +#define _In_reads_to_ptr_(p) +#define _In_reads_to_ptr_opt_(p) +#define _In_reads_to_ptr_z_(p) +#define _In_reads_to_ptr_opt_z_(p) +#define _In_count_(s) +#define _In_opt_count_(s) +#define _In_bytecount_(s) +#define _In_opt_bytecount_(s) +#define _In_count_c_(s) +#define _In_opt_count_c_(s) +#define _In_bytecount_c_(s) +#define _In_opt_bytecount_c_(s) +#define _In_z_count_(s) +#define _In_opt_z_count_(s) +#define _In_z_bytecount_(s) +#define _In_opt_z_bytecount_(s) +#define _In_z_count_c_(s) +#define _In_opt_z_count_c_(s) +#define _In_z_bytecount_c_(s) +#define _In_opt_z_bytecount_c_(s) +#define _In_ptrdiff_count_(s) +#define _In_opt_ptrdiff_count_(s) +#define _In_count_x_(s) +#define _In_opt_count_x_(s) +#define _In_bytecount_x_(s) +#define _In_opt_bytecount_x_(s) +#define _Out_ +#define _Out_opt_ +#define _Out_writes_(s) +#define _Out_writes_opt_(s) +#define _Out_writes_bytes_(s) +#define _Out_writes_bytes_opt_(s) +#define _Out_writes_z_(s) +#define _Out_writes_opt_z_(s) +#define _Out_writes_to_(s,c) +#define _Out_writes_to_opt_(s,c) +#define _Out_writes_all_(s) +#define _Out_writes_all_opt_(s) +#define _Out_writes_bytes_to_(s,c) +#define _Out_writes_bytes_to_opt_(s,c) +#define _Out_writes_bytes_all_(s) +#define _Out_writes_bytes_all_opt_(s) +#define _Out_writes_to_ptr_(p) +#define _Out_writes_to_ptr_opt_(p) +#define _Out_writes_to_ptr_z_(p) +#define _Out_writes_to_ptr_opt_z_(p) +#define _Out_cap_(s) +#define _Out_opt_cap_(s) +#define _Out_bytecap_(s) +#define _Out_opt_bytecap_(s) +#define _Out_cap_c_(s) +#define _Out_opt_cap_c_(s) +#define _Out_bytecap_c_(s) +#define _Out_opt_bytecap_c_(s) +#define _Out_cap_m_(m,s) +#define _Out_opt_cap_m_(m,s) +#define _Out_z_cap_m_(m,s) +#define _Out_opt_z_cap_m_(m,s) +#define _Out_ptrdiff_cap_(s) +#define _Out_opt_ptrdiff_cap_(s) +#define _Out_cap_x_(s) +#define _Out_opt_cap_x_(s) +#define _Out_bytecap_x_(s) +#define _Out_opt_bytecap_x_(s) +#define _Out_z_cap_(s) +#define _Out_opt_z_cap_(s) +#define _Out_z_bytecap_(s) +#define _Out_opt_z_bytecap_(s) +#define _Out_z_cap_c_(s) +#define _Out_opt_z_cap_c_(s) +#define _Out_z_bytecap_c_(s) +#define _Out_opt_z_bytecap_c_(s) +#define _Out_z_cap_x_(s) +#define _Out_opt_z_cap_x_(s) +#define _Out_z_bytecap_x_(s) +#define _Out_opt_z_bytecap_x_(s) +#define _Out_cap_post_count_(a,o) +#define _Out_opt_cap_post_count_(a,o) +#define _Out_bytecap_post_bytecount_(a,o) +#define _Out_opt_bytecap_post_bytecount_(a,o) +#define _Out_z_cap_post_count_(a,o) +#define _Out_opt_z_cap_post_count_(a,o) +#define _Out_z_bytecap_post_bytecount_(a,o) +#define _Out_opt_z_bytecap_post_bytecount_(a,o) +#define _Out_capcount_(c) +#define _Out_opt_capcount_(c) +#define _Out_bytecapcount_(c) +#define _Out_opt_bytecapcount_(c) +#define _Out_capcount_x_(c) +#define _Out_opt_capcount_x_(c) +#define _Out_bytecapcount_x_(c) +#define _Out_opt_bytecapcount_x_(c) +#define _Out_z_capcount_(c) +#define _Out_opt_z_capcount_(c) +#define _Out_z_bytecapcount_(c) +#define _Out_opt_z_bytecapcount_(c) +#define _Inout_ +#define _Inout_opt_ +#define _Inout_z_ +#define _Inout_opt_z_ +#define _Inout_updates_(s) +#define _Inout_updates_opt_(s) +#define _Inout_updates_z_(s) +#define _Inout_updates_opt_z_(s) +#define _Inout_updates_to_(s,c) +#define _Inout_updates_to_opt_(s,c) +#define _Inout_updates_all_(s) +#define _Inout_updates_all_opt_(s) +#define _Inout_updates_bytes_(s) +#define _Inout_updates_bytes_opt_(s) +#define _Inout_updates_bytes_to_(s,c) +#define _Inout_updates_bytes_to_opt_(s,c) +#define _Inout_updates_bytes_all_(s) +#define _Inout_updates_bytes_all_opt_(s) +#define _Inout_count_(s) +#define _Inout_opt_count_(s) +#define _Inout_bytecount_(s) +#define _Inout_opt_bytecount_(s) +#define _Inout_count_c_(s) +#define _Inout_opt_count_c_(s) +#define _Inout_bytecount_c_(s) +#define _Inout_opt_bytecount_c_(s) +#define _Inout_z_count_(s) +#define _Inout_opt_z_count_(s) +#define _Inout_z_bytecount_(s) +#define _Inout_opt_z_bytecount_(s) +#define _Inout_z_count_c_(s) +#define _Inout_opt_z_count_c_(s) +#define _Inout_z_bytecount_c_(s) +#define _Inout_opt_z_bytecount_c_(s) +#define _Inout_ptrdiff_count_(s) +#define _Inout_opt_ptrdiff_count_(s) +#define _Inout_count_x_(s) +#define _Inout_opt_count_x_(s) +#define _Inout_bytecount_x_(s) +#define _Inout_opt_bytecount_x_(s) +#define _Inout_cap_(s) +#define _Inout_opt_cap_(s) +#define _Inout_bytecap_(s) +#define _Inout_opt_bytecap_(s) +#define _Inout_cap_c_(s) +#define _Inout_opt_cap_c_(s) +#define _Inout_bytecap_c_(s) +#define _Inout_opt_bytecap_c_(s) +#define _Inout_cap_x_(s) +#define _Inout_opt_cap_x_(s) +#define _Inout_bytecap_x_(s) +#define _Inout_opt_bytecap_x_(s) +#define _Inout_z_cap_(s) +#define _Inout_opt_z_cap_(s) +#define _Inout_z_bytecap_(s) +#define _Inout_opt_z_bytecap_(s) +#define _Inout_z_cap_c_(s) +#define _Inout_opt_z_cap_c_(s) +#define _Inout_z_bytecap_c_(s) +#define _Inout_opt_z_bytecap_c_(s) +#define _Inout_z_cap_x_(s) +#define _Inout_opt_z_cap_x_(s) +#define _Inout_z_bytecap_x_(s) +#define _Inout_opt_z_bytecap_x_(s) +#define _Outptr_ +#define _Outptr_result_maybenull_ +#define _Outptr_opt_ +#define _Outptr_opt_result_maybenull_ +#define _Outptr_result_z_ +#define _Outptr_opt_result_z_ +#define _Outptr_result_maybenull_z_ +#define _Outptr_opt_result_maybenull_z_ +#define _Outptr_result_nullonfailure_ +#define _Outptr_opt_result_nullonfailure_ +#define _COM_Outptr_ +#define _COM_Outptr_result_maybenull_ +#define _COM_Outptr_opt_ +#define _COM_Outptr_opt_result_maybenull_ +#define _Outptr_result_buffer_(s) +#define _Outptr_opt_result_buffer_(s) +#define _Outptr_result_buffer_to_(s,c) +#define _Outptr_opt_result_buffer_to_(s,c) +#define _Outptr_result_buffer_all_(s) +#define _Outptr_opt_result_buffer_all_(s) +#define _Outptr_result_buffer_maybenull_(s) +#define _Outptr_opt_result_buffer_maybenull_(s) +#define _Outptr_result_buffer_to_maybenull_(s,c) +#define _Outptr_opt_result_buffer_to_maybenull_(s,c) +#define _Outptr_result_buffer_all_maybenull_(s) +#define _Outptr_opt_result_buffer_all_maybenull_(s) +#define _Outptr_result_bytebuffer_(s) +#define _Outptr_opt_result_bytebuffer_(s) +#define _Outptr_result_bytebuffer_to_(s,c) +#define _Outptr_opt_result_bytebuffer_to_(s,c) +#define _Outptr_result_bytebuffer_all_(s) +#define _Outptr_opt_result_bytebuffer_all_(s) +#define _Outptr_result_bytebuffer_maybenull_(s) +#define _Outptr_opt_result_bytebuffer_maybenull_(s) +#define _Outptr_result_bytebuffer_to_maybenull_(s,c) +#define _Outptr_opt_result_bytebuffer_to_maybenull_(s,c) +#define _Outptr_result_bytebuffer_all_maybenull_(s) +#define _Outptr_opt_result_bytebuffer_all_maybenull_(s) +#define _Outref_ +#define _Outref_result_maybenull_ +#define _Outref_result_buffer_(s) +#define _Outref_result_bytebuffer_(s) +#define _Outref_result_buffer_to_(s,c) +#define _Outref_result_bytebuffer_to_(s,c) +#define _Outref_result_buffer_all_(s) +#define _Outref_result_bytebuffer_all_(s) +#define _Outref_result_buffer_maybenull_(s) +#define _Outref_result_bytebuffer_maybenull_(s) +#define _Outref_result_buffer_to_maybenull_(s,c) +#define _Outref_result_bytebuffer_to_maybenull_(s,c) +#define _Outref_result_buffer_all_maybenull_(s) +#define _Outref_result_bytebuffer_all_maybenull_(s) +#define _Outref_result_nullonfailure_ +#define _Result_nullonfailure_ +#define _Result_zeroonfailure_ +#define _Ret_z_ +#define _Ret_maybenull_z_ +#define _Ret_notnull_ +#define _Ret_maybenull_ +#define _Ret_null_ +#define _Ret_valid_ +#define _Ret_writes_(s) +#define _Ret_writes_z_(s) +#define _Ret_writes_bytes_(s) +#define _Ret_writes_maybenull_(s) +#define _Ret_writes_maybenull_z_(s) +#define _Ret_writes_bytes_maybenull_(s) +#define _Ret_writes_to_(s,c) +#define _Ret_writes_bytes_to_(s,c) +#define _Ret_writes_to_maybenull_(s,c) +#define _Ret_writes_bytes_to_maybenull_(s,c) +#define _Points_to_data_ +#define _Literal_ +#define _Notliteral_ +#define _Deref_ret_range_(l,u) +#define _Unchanged_(e) +#define __in_opt +#define __out_opt +#define __inout_opt +#define _In_range_(low,hi) +#define _Out_range_(low,hi) +#define _Ret_range_(low,hi) +#define _Deref_in_range_(low,hi) +#define _Deref_out_range_(low,hi) +#define _Deref_inout_range_(low,hi) +#define _Struct_size_bytes_(size) +#define _Deref_out_ +#define _Deref_out_opt_ +#define _Deref_opt_out_ +#define _Deref_opt_out_opt_ +#define _Called_from_function_class_(name) +#define _Check_return_ __checkReturn +#define _Function_class_(name) +#define _Raises_SEH_exception_ +#define _Maybe_raises_SEH_exception_ +#define _Must_inspect_result_ +#define _Use_decl_annotations_ +#define _Always_(anno_list) +#define _On_failure_(anno_list) +#define _Return_type_success_(expr) +#define _Success_(expr) +#define _Reserved_ +#define _Const_ +#define _Readable_bytes_(s) +#define _Readable_elements_(s) +#define _Writable_bytes_(s) +#define _Writable_elements_(s) +#define _Null_terminated_ +#define _NullNull_terminated_ +#define _Field_size_(s) +#define _Field_size_full_(s) +#define _Field_size_full_opt_(s) +#define _Field_size_opt_(s) +#define _Field_size_part_(s,c) +#define _Field_size_part_opt_(s,c) +#define _Field_size_bytes_(size) +#define _Field_size_bytes_full_(size) +#define _Field_size_bytes_full_opt_(s) +#define _Field_size_bytes_opt_(s) +#define _Field_size_bytes_part_(s,c) +#define _Field_size_bytes_part_opt_(s,c) +#define _Field_z_ +#define _Field_range_(min,max) +#define _At_(e,a) +#define _At_buffer_(e,i,c,a) +#define _Group_(a) +#define _When_(e,a) +#define _Printf_format_string_ +#define _Scanf_format_string_ +#define _Scanf_s_format_string_ +#define _Format_string_impl_(kind,where) +#define _Printf_format_string_params_(x) +#define _Scanf_format_string_params_(x) +#define _Scanf_s_format_string_params_(x) +#define _Analysis_mode_(x) +#define _Analysis_assume_(expr) +#define _Analysis_assume_nullterminated_(expr) +#define _Post_ +#define _Post_equal_to_(expr) +#define _Post_readable_byte_size_(s) +#define _Post_readable_size_(s) +#define _Post_satisfies_(c) +#define _Post_writable_byte_size_(s) +#define _Post_writable_size_(s) +#define _Pre_equal_to_(expr) +#define _Pre_notnull_ +#define _Pre_readable_byte_size_(s) +#define _Pre_readable_size_(s) +#define _Pre_satisfies_(c) +#define _Pre_writable_byte_size_(s) +#define _Pre_writable_size_(s) +#define _Strict_type_match_ +#define __in +#define __out +#define __bcount(size) +#define __ecount(size) +#define __in_bcount(size) +#define __in_bcount_nz(size) +#define __in_bcount_z(size) +#define __in_ecount(size) +#define __in_ecount_nz(size) +#define __in_ecount_z(size) +#define __out_bcount(size) +#define __out_bcount_nz(size) +#define __out_bcount_z(size) +#define __out_bcount_full(size) +#define __out_bcount_full_z(size) +#define __out_bcount_part(size,length) +#define __out_bcount_part_z(size,length) +#define __out_ecount(size) +#define __out_ecount_nz(size) +#define __out_ecount_z(size) +#define __out_ecount_full(size) +#define __out_ecount_full_z(size) +#define __out_ecount_part(size,length) +#define __out_ecount_part_z(size,length) +#define __inout +#define __inout_bcount(size) +#define __inout_bcount_nz(size) +#define __inout_bcount_z(size) +#define __inout_bcount_full(size) +#define __inout_bcount_part(size,length) +#define __inout_ecount(size) +#define __inout_ecount_nz(size) +#define __inout_ecount_z(size) +#define __inout_ecount_full(size) +#define __inout_ecount_part(size,length) +#define __deref +#define __deref_opt_out +#define __deref_opt_out_bcount(x) +#define __deref_out +#define __deref_out_ecount(size) +#define __deref_out_opt +#define __range(x,y) +#define SAL__deref_in +#define SAL__deref_in_ecount(size) +#define SAL__deref_in_bcount(size) +#define SAL__deref_in_opt +#define SAL__deref_in_ecount_opt(size) +#define SAL__deref_in_bcount_opt(size) +#define SAL__deref_opt_in +#define SAL__deref_opt_in_ecount(size) +#define SAL__deref_opt_in_bcount(size) +#define SAL__deref_opt_in_opt +#define SAL__deref_opt_in_ecount_opt(size) +#define SAL__deref_opt_in_bcount_opt(size) +#define SAL__out_awcount(expr,size) +#define SAL__in_awcount(expr,size) +#define SAL__null +#define SAL__notnull +#define SAL__maybenull +#define SAL__readonly +#define SAL__notreadonly +#define SAL__maybereadonly +#define SAL__valid +#define SAL__notvalid +#define SAL__maybevalid +#define SAL__readableTo(extent) +#define SAL__elem_readableTo(size) +#define SAL__byte_readableTo(size) +#define SAL__writableTo(size) +#define SAL__elem_writableTo(size) +#define SAL__byte_writableTo(size) +#define SAL__deref +#define SAL__pre +#define SAL__post +#define SAL__precond(expr) +#define SAL__postcond(expr) +#define SAL__exceptthat +#define SAL__execeptthat +#define SAL__inner_success(expr) +#define SAL__inner_checkReturn +#define SAL__inner_typefix(ctype) +#define SAL__inner_override +#define SAL__inner_callback +#define SAL__inner_blocksOn(resource) +#define SAL__inner_fallthrough_dec +#define SAL__inner_fallthrough +#define __refparam +#define SAL__inner_control_entrypoint(category) +#define SAL__inner_data_entrypoint(category) +#define SAL__ecount(size) +#define SAL__bcount(size) +#define SAL__in +#define SAL__in_opt +#define SAL__in_nz +#define SAL__in_nz_opt +#define SAL__in_z +#define SAL__in_z_opt +#define SAL__in_ecount(size) +#define SAL__in_ecount_nz(size) +#define SAL__in_ecount_z(size) +#define SAL__in_bcount(size) +#define SAL__in_bcount_z(size) +#define SAL__in_bcount_nz(size) +#define SAL__in_ecount_opt(size) +#define SAL__in_bcount_opt(size) +#define SAL__in_ecount_z_opt(size) +#define SAL__in_bcount_z_opt(size) +#define SAL__in_ecount_nz_opt(size) +#define SAL__in_bcount_nz_opt(size) +#define SAL__out +#define SAL__out_ecount(size) +#define SAL__out_z +#define SAL__out_nz +#define SAL__out_nz_opt +#define SAL__out_z_opt +#define SAL__out_ecount_part(size,length) +#define SAL__out_ecount_full(size) +#define SAL__out_ecount_nz(size) +#define SAL__out_ecount_z(size) +#define SAL__out_ecount_part_z(size,length) +#define SAL__out_ecount_full_z(size) +#define SAL__out_bcount(size) +#define SAL__out_bcount_part(size,length) +#define SAL__out_bcount_full(size) +#define SAL__out_bcount_z(size) +#define SAL__out_bcount_part_z(size,length) +#define SAL__out_bcount_full_z(size) +#define SAL__out_bcount_nz(size) +#define SAL__inout +#define SAL__inout_ecount(size) +#define SAL__inout_bcount(size) +#define SAL__inout_ecount_part(size,length) +#define SAL__inout_bcount_part(size,length) +#define SAL__inout_ecount_full(size) +#define SAL__inout_bcount_full(size) +#define SAL__inout_z +#define SAL__inout_ecount_z(size) +#define SAL__inout_bcount_z(size) +#define SAL__inout_nz +#define SAL__inout_ecount_nz(size) +#define SAL__inout_bcount_nz(size) +#define SAL__ecount_opt(size) +#define SAL__bcount_opt(size) +#define SAL__out_opt +#define SAL__out_ecount_opt(size) +#define SAL__out_bcount_opt(size) +#define SAL__out_ecount_part_opt(size,length) +#define SAL__out_bcount_part_opt(size,length) +#define SAL__out_ecount_full_opt(size) +#define SAL__out_bcount_full_opt(size) +#define SAL__out_ecount_z_opt(size) +#define SAL__out_bcount_z_opt(size) +#define SAL__out_ecount_part_z_opt(size,length) +#define SAL__out_bcount_part_z_opt(size,length) +#define SAL__out_ecount_full_z_opt(size) +#define SAL__out_bcount_full_z_opt(size) +#define SAL__out_ecount_nz_opt(size) +#define SAL__out_bcount_nz_opt(size) +#define SAL__inout_opt +#define SAL__inout_ecount_opt(size) +#define SAL__inout_bcount_opt(size) +#define SAL__inout_ecount_part_opt(size,length) +#define SAL__inout_bcount_part_opt(size,length) +#define SAL__inout_ecount_full_opt(size) +#define SAL__inout_bcount_full_opt(size) +#define SAL__inout_z_opt +#define SAL__inout_ecount_z_opt(size) +#define SAL__inout_bcount_z_opt(size) +#define SAL__inout_nz_opt +#define SAL__inout_ecount_nz_opt(size) +#define SAL__inout_bcount_nz_opt(size) +#define SAL__deref_ecount(size) +#define SAL__deref_bcount(size) +#define SAL__deref_out +#define SAL__deref_out_ecount(size) +#define SAL__deref_out_bcount(size) +#define SAL__deref_out_ecount_part(size,length) +#define SAL__deref_out_bcount_part(size,length) +#define SAL__deref_out_ecount_full(size) +#define SAL__deref_out_bcount_full(size) +#define SAL__deref_out_z +#define SAL__deref_out_ecount_z(size) +#define SAL__deref_out_bcount_z(size) +#define SAL__deref_out_nz +#define SAL__deref_out_ecount_nz(size) +#define SAL__deref_out_bcount_nz(size) +#define SAL__deref_inout +#define SAL__deref_inout_ecount(size) +#define SAL__deref_inout_bcount(size) +#define SAL__deref_inout_ecount_part(size,length) +#define SAL__deref_inout_bcount_part(size,length) +#define SAL__deref_inout_ecount_full(size) +#define SAL__deref_inout_bcount_full(size) +#define SAL__deref_inout_z +#define SAL__deref_inout_ecount_z(size) +#define SAL__deref_inout_bcount_z(size) +#define SAL__deref_inout_nz +#define SAL__deref_inout_ecount_nz(size) +#define SAL__deref_inout_bcount_nz(size) +#define SAL__deref_ecount_opt(size) +#define SAL__deref_bcount_opt(size) +#define SAL__deref_out_opt +#define SAL__deref_out_ecount_opt(size) +#define SAL__deref_out_bcount_opt(size) +#define SAL__deref_out_ecount_part_opt(size,length) +#define SAL__deref_out_bcount_part_opt(size,length) +#define SAL__deref_out_ecount_full_opt(size) +#define SAL__deref_out_bcount_full_opt(size) +#define SAL__deref_out_z_opt +#define SAL__deref_out_ecount_z_opt(size) +#define SAL__deref_out_bcount_z_opt(size) +#define SAL__deref_out_nz_opt +#define SAL__deref_out_ecount_nz_opt(size) +#define SAL__deref_out_bcount_nz_opt(size) +#define SAL__deref_inout_opt +#define SAL__deref_inout_ecount_opt(size) +#define SAL__deref_inout_bcount_opt(size) +#define SAL__deref_inout_ecount_part_opt(size,length) +#define SAL__deref_inout_bcount_part_opt(size,length) +#define SAL__deref_inout_ecount_full_opt(size) +#define SAL__deref_inout_bcount_full_opt(size) +#define SAL__deref_inout_z_opt +#define SAL__deref_inout_ecount_z_opt(size) +#define SAL__deref_inout_bcount_z_opt(size) +#define SAL__deref_inout_nz_opt +#define SAL__deref_inout_ecount_nz_opt(size) +#define SAL__deref_inout_bcount_nz_opt(size) +#define SAL__deref_opt_ecount(size) +#define SAL__deref_opt_bcount(size) +#define SAL__deref_opt_out +#define SAL__deref_opt_out_z +#define SAL__deref_opt_out_ecount(size) +#define SAL__deref_opt_out_bcount(size) +#define SAL__deref_opt_out_ecount_part(size,length) +#define SAL__deref_opt_out_bcount_part(size,length) +#define SAL__deref_opt_out_ecount_full(size) +#define SAL__deref_opt_out_bcount_full(size) +#define SAL__deref_opt_inout +#define SAL__deref_opt_inout_ecount(size) +#define SAL__deref_opt_inout_bcount(size) +#define SAL__deref_opt_inout_ecount_part(size,length) +#define SAL__deref_opt_inout_bcount_part(size,length) +#define SAL__deref_opt_inout_ecount_full(size) +#define SAL__deref_opt_inout_bcount_full(size) +#define SAL__deref_opt_inout_z +#define SAL__deref_opt_inout_ecount_z(size) +#define SAL__deref_opt_inout_bcount_z(size) +#define SAL__deref_opt_inout_nz +#define SAL__deref_opt_inout_ecount_nz(size) +#define SAL__deref_opt_inout_bcount_nz(size) +#define SAL__deref_opt_ecount_opt(size) +#define SAL__deref_opt_bcount_opt(size) +#define SAL__deref_opt_out_opt +#define SAL__deref_opt_out_ecount_opt(size) +#define SAL__deref_opt_out_bcount_opt(size) +#define SAL__deref_opt_out_ecount_part_opt(size,length) +#define SAL__deref_opt_out_bcount_part_opt(size,length) +#define SAL__deref_opt_out_ecount_full_opt(size) +#define SAL__deref_opt_out_bcount_full_opt(size) +#define SAL__deref_opt_out_z_opt +#define SAL__deref_opt_out_ecount_z_opt(size) +#define SAL__deref_opt_out_bcount_z_opt(size) +#define SAL__deref_opt_out_nz_opt +#define SAL__deref_opt_out_ecount_nz_opt(size) +#define SAL__deref_opt_out_bcount_nz_opt(size) +#define SAL__deref_opt_inout_opt +#define SAL__deref_opt_inout_ecount_opt(size) +#define SAL__deref_opt_inout_bcount_opt(size) +#define SAL__deref_opt_inout_ecount_part_opt(size,length) +#define SAL__deref_opt_inout_bcount_part_opt(size,length) +#define SAL__deref_opt_inout_ecount_full_opt(size) +#define SAL__deref_opt_inout_bcount_full_opt(size) +#define SAL__deref_opt_inout_z_opt +#define SAL__deref_opt_inout_ecount_z_opt(size) +#define SAL__deref_opt_inout_bcount_z_opt(size) +#define SAL__deref_opt_inout_nz_opt +#define SAL__deref_opt_inout_ecount_nz_opt(size) +#define SAL__deref_opt_inout_bcount_nz_opt(size) +#define SAL__success(expr) +#define SAL__nullterminated +#define SAL__nullnullterminated +#define SAL__reserved +#define SAL__checkReturn +#define SAL__typefix(ctype) +#define SAL__override +#define SAL__callback +#define SAL__format_string +#define SAL__blocksOn(resource) +#define SAL__control_entrypoint(category) +#define SAL__data_entrypoint(category) +#define __encoded_pointer +#define _Post_equals_last_error_ +#define __fallthrough +#define __analysis_assume(expr) +#define __CLR_OR_THIS_CALL +#define __CLRCALL_OR_CDECL __cdecl +#define __STDC_WANT_SECURE_LIB__ 0 +#define _CRT_SECURE_NO_DEPRECATE +#define DECLSPEC_ADDRSAFE +#define DRIVERSPECS_H +#define _IRQL_raises_(x) +#define _IRQL_requires_(x) +#define _IRQL_requires_max_(x) +#define _IRQL_requires_min_(x) +#define _IRQL_requires_same_ +#define _IRQL_restores_ +#define _IRQL_saves_ +#define __drv_aliasesMem +#define __drv_allocatesMem(kind) +#define __drv_arg(x,y) +#define __drv_at(x,y) +#define __drv_deref(x) +#define __drv_dispatchType(x) +#define __drv_dispatchType_other +#define __drv_formatString(x) +#define __drv_freesMem(kind) +#define __drv_in(x) +#define __drv_in_deref(x) +#define __drv_maxIRQL(x) +#define __drv_nonConstant +#define __drv_out(x) +#define __drv_out_deref(x) +#define __drv_raisesIRQL(x) +#define __drv_requiresIRQL(x) +#define __drv_restoresIRQL +#define __drv_restoresIRQLGlobal(x,y) +#define __drv_savesIRQL +#define __drv_savesIRQLGlobal(x,y) +#define __drv_setsIRQL(x) +#define __drv_useCancelIRQL +#define __drv_valueIs(x) +#define __drv_when(x,y) +#define __internal_kernel_driver +#define __kernel_code +#define __kernel_driver +#define __user_code +#define __user_driver +#define STRICT 1 +#define BASETYPES + typedef unsigned long ULONG; + typedef ULONG *PULONG; + typedef unsigned short USHORT; + typedef USHORT *PUSHORT; + typedef unsigned char UCHAR; + typedef UCHAR *PUCHAR; + typedef char *PSZ; +#define MAX_PATH 260 +#define IN +#define OUT +#define OPTIONAL +#undef far +#undef near +#undef pascal +#define far +#define near +#define pascal __stdcall +#define cdecl +#define CDECL +#define CALLBACK __stdcall +#define WINAPI __stdcall +#define WINAPIV __cdecl +#define APIENTRY WINAPI +#define APIPRIVATE __stdcall +#define PASCAL __stdcall +#define WINAPI_INLINE WINAPI +#undef FAR +#undef NEAR +#define FAR +#define NEAR +#define CONST const +#define _DEF_WINBOOL_ +typedef int WINBOOL; +#undef BOOL + typedef int BOOL; +#define BOOL WINBOOL +typedef WINBOOL *PBOOL; +typedef WINBOOL *LPBOOL; + typedef unsigned char BYTE; + typedef unsigned short WORD; + typedef unsigned long DWORD; + typedef float FLOAT; + typedef FLOAT *PFLOAT; + typedef BYTE *PBYTE; + typedef BYTE *LPBYTE; + typedef int *PINT; + typedef int *LPINT; + typedef WORD *PWORD; + typedef WORD *LPWORD; + typedef long *LPLONG; + typedef DWORD *PDWORD; + typedef DWORD *LPDWORD; + typedef void *LPVOID; +#define _LPCVOID_DEFINED + typedef const void *LPCVOID; + typedef int INT; + typedef unsigned int UINT; + typedef unsigned int *PUINT; +#define _WINNT_ +#define _INC_CTYPE +#define _CRT_CTYPEDATA_DEFINED +#define __PCTYPE_FUNC __pctype_func() + __attribute__ ((__dllimport__)) unsigned short* __pctype_func(void); +#define _pctype (__pctype_func()) +#define _CRT_WCTYPEDATA_DEFINED + extern unsigned short ** __imp__wctype; +#define _wctype (* __MINGW_IMP_SYMBOL(_wctype)) +#define __pwctype_func() (* __MINGW_IMP_SYMBOL(_pwctype)) + extern unsigned short ** __imp__pwctype; +#define _pwctype (* __MINGW_IMP_SYMBOL(_pwctype)) + extern const unsigned char __newclmap[]; + extern const unsigned char __newcumap[]; + extern pthreadlocinfo __ptlocinfo; + extern pthreadmbcinfo __ptmbcinfo; + extern int __globallocalestatus; + extern int __locale_changed; + extern struct threadlocaleinfostruct __initiallocinfo; + extern _locale_tstruct __initiallocalestructinfo; + pthreadlocinfo __attribute__((__cdecl__)) __updatetlocinfo(void); + pthreadmbcinfo __attribute__((__cdecl__)) __updatetmbcinfo(void); +#define _UPPER 0x1 +#define _LOWER 0x2 +#define _DIGIT 0x4 +#define _SPACE 0x8 +#define _PUNCT 0x10 +#define _CONTROL 0x20 +#define _BLANK 0x40 +#define _HEX 0x80 +#define _LEADBYTE 0x8000 +#define _ALPHA (0x0100|_UPPER|_LOWER) +#define _CTYPE_DEFINED + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isctype(int _C,int _Type); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isctype_l(int _C,int _Type,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isalpha(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isalpha_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isupper(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isupper_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) islower(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _islower_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isdigit(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isdigit_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isxdigit(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isxdigit_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isspace(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isspace_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) ispunct(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _ispunct_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isalnum(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isalnum_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isprint(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isprint_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isgraph(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isgraph_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) iscntrl(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iscntrl_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) toupper(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) tolower(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _tolower(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _tolower_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _toupper(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _toupper_l(int _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __isascii(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __toascii(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __iscsymf(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __iscsym(int _C); +int __attribute__((__cdecl__)) isblank(int _C); +#define _WCTYPE_DEFINED + int __attribute__((__cdecl__)) iswalpha(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswalpha_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswupper(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswupper_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswlower(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswlower_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswdigit(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswdigit_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswxdigit(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswxdigit_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswspace(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswspace_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswpunct(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswpunct_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswalnum(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswalnum_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswprint(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswprint_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswgraph(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswgraph_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswcntrl(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswcntrl_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswascii(wint_t _C); + int __attribute__((__cdecl__)) isleadbyte(int _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isleadbyte_l(int _C,_locale_t _Locale); + wint_t __attribute__((__cdecl__)) towupper(wint_t _C); + __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _towupper_l(wint_t _C,_locale_t _Locale); + wint_t __attribute__((__cdecl__)) towlower(wint_t _C); + __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _towlower_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) iswctype(wint_t _C,wctype_t _Type); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __iswcsymf(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswcsymf_l(wint_t _C,_locale_t _Locale); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __iswcsym(wint_t _C); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswcsym_l(wint_t _C,_locale_t _Locale); + int __attribute__((__cdecl__)) is_wctype(wint_t _C,wctype_t _Type); +int __attribute__((__cdecl__)) iswblank(wint_t _C); +#define __chvalidchk(a,b) (__PCTYPE_FUNC[(unsigned char)(a)] & (b)) +#define _chvalidchk_l(_Char,_Flag,_Locale) (!_Locale ? __chvalidchk(_Char,_Flag) : ((_locale_t)_Locale)->locinfo->_locale_pctype[(unsigned char)(_Char)] & (_Flag)) +#define _ischartype_l(_Char,_Flag,_Locale) (((_Locale)!=NULL && (((_locale_t)(_Locale))->locinfo->_locale_mb_cur_max) > 1) ? _isctype_l(_Char,(_Flag),_Locale) : _chvalidchk_l(_Char,_Flag,_Locale)) +#define _isalpha_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA,_Locale) +#define _isupper_l(_Char,_Locale) _ischartype_l(_Char,_UPPER,_Locale) +#define _islower_l(_Char,_Locale) _ischartype_l(_Char,_LOWER,_Locale) +#define _isdigit_l(_Char,_Locale) _ischartype_l(_Char,_DIGIT,_Locale) +#define _isxdigit_l(_Char,_Locale) _ischartype_l(_Char,_HEX,_Locale) +#define _isspace_l(_Char,_Locale) _ischartype_l(_Char,_SPACE,_Locale) +#define _ispunct_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT,_Locale) +#define _isalnum_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA|_DIGIT,_Locale) +#define _isprint_l(_Char,_Locale) _ischartype_l(_Char,_BLANK|_PUNCT|_ALPHA|_DIGIT,_Locale) +#define _isgraph_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT|_ALPHA|_DIGIT,_Locale) +#define _iscntrl_l(_Char,_Locale) _ischartype_l(_Char,_CONTROL,_Locale) +#define _tolower(_Char) ((_Char)-'A'+'a') +#define _toupper(_Char) ((_Char)-'a'+'A') +#define __isascii(_Char) ((unsigned)(_Char) < 0x80) +#define __toascii(_Char) ((_Char) & 0x7f) +#define _WCTYPE_INLINE_DEFINED +#undef _CRT_WCTYPE_NOINLINE +#define iswalpha(_c) (iswctype(_c,_ALPHA)) +#define iswupper(_c) (iswctype(_c,_UPPER)) +#define iswlower(_c) (iswctype(_c,_LOWER)) +#define iswdigit(_c) (iswctype(_c,_DIGIT)) +#define iswxdigit(_c) (iswctype(_c,_HEX)) +#define iswspace(_c) (iswctype(_c,_SPACE)) +#define iswpunct(_c) (iswctype(_c,_PUNCT)) +#define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT)) +#define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT)) +#define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT)) +#define iswcntrl(_c) (iswctype(_c,_CONTROL)) +#define iswascii(_c) ((unsigned)(_c) < 0x80) +#define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p)) +#define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p)) +#define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p)) +#define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p)) +#define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p)) +#define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p)) +#define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p)) +#define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p)) +#define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p)) +#define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p)) +#define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p)) +#define __iscsymf(_c) (isalpha(_c) || ((_c)=='_')) +#define __iscsym(_c) (isalnum(_c) || ((_c)=='_')) +#define __iswcsymf(_c) (iswalpha(_c) || ((_c)=='_')) +#define __iswcsym(_c) (iswalnum(_c) || ((_c)=='_')) +#define _iscsymf_l(_c,_p) (_isalpha_l(_c,_p) || ((_c)=='_')) +#define _iscsym_l(_c,_p) (_isalnum_l(_c,_p) || ((_c)=='_')) +#define _iswcsymf_l(_c,_p) (_iswalpha_l(_c,_p) || ((_c)=='_')) +#define _iswcsym_l(_c,_p) (_iswalnum_l(_c,_p) || ((_c)=='_')) +#define isascii __isascii +#define toascii __toascii +#define iscsymf __iscsymf +#define iscsym __iscsym +#define _API_SET_H_ +#define API_SET_PREFIX_NAME_A "API-" +#define API_SET_PREFIX_NAME_U L"API-" +#define API_SET_EXTENSION_NAME_A "EXT-" +#define API_SET_EXTENSION_NAME_U L"EXT-" +#define API_SET_SCHEMA_NAME ApiSetSchema +#define API_SET_SECTION_NAME ".apiset" +#define API_SET_SCHEMA_SUFFIX L".sys" +#define API_SET_SCHEMA_VERSION __MSABI_LONG(2U) +#define API_SET_HELPER_NAME ApiSetHelp +#define API_SET_LOAD_SCHEMA_ORDINAL 1 +#define API_SET_LOOKUP_ORDINAL 2 +#define API_SET_RELEASE_SCHEMA_ORDINAL 3 +#define API_SET_STRING_X(s) #s +#define API_SET_STRING(s) API_SET_STRING_X(s) +#define API_SET_STRING_U_Y(s) L ## s +#define API_SET_STRING_U_X(s) API_SET_STRING_U_Y(s) +#define API_SET_STRING_U(s) API_SET_STRING_U_X(API_SET_STRING(s)) +#define API_SET_OVERRIDE(X) X##Implementation +#define API_SET_LEGACY_OVERRIDE_DEF(X) X = API_SET_OVERRIDE(X) +#define API_SET_OVERRIDE_DEF(X) API_SET_LEGACY_OVERRIDE_DEF(X) PRIVATE +#define API_SET_PRIVATE(X) X PRIVATE +#undef API_SET +#undef API_SET_LIBRARY +#define API_SET_LIBRARY(X) LIBRARY X +#define API_SET(X) X + +#define ANYSIZE_ARRAY 1 +#define __INTRINSIC_GROUP_WINNT +#define _INTRIN_MAC_ +#define __FLAGCONSTRAINT "=@ccc" +#define __FLAGSET +#define __FLAGCLOBBER1 +#define __FLAGCLOBBER2 +#define __buildstos(x,y,z) void x(y *Dest, y Data, size_t Count) { __asm__ __volatile__ ("rep stos{" z "}" : "+D" (Dest), "+c" (Count) : [Data] "a" (Data) : "memory"); } +#define __buildlogicali(x,y,o) y x(volatile y *Destination, y Value) { return __sync_fetch_and_ ## o(Destination, Value); } +#define __buildbittesti(x,y,z,a) unsigned char x(y volatile *Base, y Offset) { unsigned int old, tmp1, tmp2; unsigned int bit = 1 << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %w[old], %[Base]\n\t" "mov %w[tmp1], %w[old]\n\t" z " %w[tmp1], %w[tmp1], %w[bit]\n\t" "stxr %w[tmp2], %w[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] a "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __buildbittesti64(x,y,z,a) unsigned char x(y volatile *Base, y Offset) { unsigned __int64 old, tmp1; unsigned int tmp2; unsigned __int64 bit = 1ULL << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %[old], %[Base]\n\t" "mov %[tmp1], %[old]\n\t" z " %[tmp1], %[tmp1], %[bit]\n\t" "stxr %w[tmp2], %[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] a "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __buildpause() __asm__ __volatile__("rep nop") +#define __buildint(a) __asm__ __volatile__("int {$}" #a :) +#define __buildmemorybarrier() { unsigned char Barrier; __asm__ __volatile__("xchg{b %%| }al, %0" :"=m" (Barrier) : : "eax", "memory"); } +#define __buildreadseg(x,y,z,a) y x(unsigned __LONG32 Offset) { y ret; __asm__ ("mov{" a " %%" z ":%[offset], %[ret] | %[ret], %%" z ":%[offset]}" : [ret] "=r" (ret) : [offset] "m" ((*(y *) (size_t) Offset))); return ret; } +#define __buildwriteseg(x,y,z,a) void x(unsigned __LONG32 Offset, y Data) { __asm__ ("mov{" a " %[Data], %%" z ":%[offset] | %%" z ":%[offset], %[Data]}" : [offset] "=m" ((*(y *) (size_t) Offset)) : [Data] "ri" (Data)); } +#define __buildbitscan(x,y,z) unsigned char x(unsigned __LONG32 *Index, y Mask) { y n; unsigned char old; __asm__ (z : "=@ccnz" (old), [Index] "=r" (n) : [Mask] "r" (Mask)); *Index = n; return old; } +#define __buildbittest(x,y,z,a) unsigned char x(const y *Base, y Offset) { unsigned char old; __asm__ ("bt{" z " %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET : [old] __FLAGCONSTRAINT (old) : [Offset] a "r" (Offset), [Base] "rm" (*Base) : __FLAGCLOBBER2); return old; } +#define __buildbittestand(x,y,z,a,b) unsigned char x(y *Base, y Offset) { unsigned char old; __asm__ (z "{" b " %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET : [old] __FLAGCONSTRAINT (old), [Base] "+rm" (*Base) : [Offset] a "r" (Offset) : __FLAGCLOBBER2); return old; } +#define __build_inport(x,y,z) y x(unsigned short Port) { y value; __asm__ __volatile__ ("in{" z " %w[port],%[value]| %[value],%w[port]}" : [value] "=a" (value) : [port] "Nd" (Port)); return value; } +#define __build_outport(x,y,z) void x(unsigned short Port, y Data) { __asm__ __volatile__ ("out{" z " %[data],%w[port]| %w[port],%[data]}" : : [data] "a" (Data), [port] "Nd" (Port)); } +#define __build_inportstring(x,y,z,a) void x(unsigned short Port, y *Buffer, unsigned __LONG32 Count) { __asm__ __volatile__ ("cld ; rep ins{" z "|" a "}" : "=D" (Buffer), "=c" (Count) : "d"(Port), "0"(Buffer), "1" (Count) : "memory"); } +#define __build_outportstring(x,y,z,a) void x(unsigned short Port, y *Buffer, unsigned __LONG32 Count) { __asm__ __volatile__ ("cld ; rep outs{" z "|" a "}" : "=S" (Buffer), "=c" (Count) : "d"(Port), "0"(Buffer), "1" (Count) : "memory"); } +#define __build_readcr(x,y,z) y x(void) { y value; __asm__ __volatile__ ("mov {%%cr" z ", %[value] | %[value], %%cr" z "}" : [value] "=q" (value)); return value; } +#define __build_writecr(x,y,z) void x(y Data) { __asm__ __volatile__ ("mov {%[Data], %%cr" z "|%%cr" z ", %[Data]}" : : [Data] "q" (Data) : "memory"); } +#define __buildmov(x,y,z,a) void x(y *Destination, y const *Source, size_t Count) { __asm__ __volatile__ ( "rep movs{" z "|" a "}" : "=D" (Destination), "=S" (Source), "=c" (Count) : "0" (Destination), "1" (Source), "2" (Count) : "memory"); } +#define _ReadWriteBarrier() __asm__ __volatile__ ("" ::: "memory") +#define _ReadBarrier _ReadWriteBarrier +#define _WriteBarrier _ReadWriteBarrier +#define __INTRINSIC_PROLOG(name) (!defined(__INTRINSIC_DEFINED_ ## name)) && ((!defined (__INTRINSIC_ONLYSPECIAL)) || (defined (__INTRINSIC_ONLYSPECIAL) && defined(__INTRINSIC_SPECIAL_ ## name))) +#define __INTRINSICS_USEINLINE __MINGW_INTRIN_INLINE +#undef __INTRINSIC_GROUP_WINNT +#define __INTRINSIC_ONLYSPECIAL +#define __INTRINSIC_SPECIAL___faststorefence +#define __INTRINSIC_SPECIAL___int2c +#define __INTRINSIC_SPECIAL___stosb +#define __INTRINSIC_SPECIAL___stosd +#define __INTRINSIC_SPECIAL___stosq +#define __INTRINSIC_SPECIAL___stosw +#define __INTRINSIC_SPECIAL__InterlockedAnd +#define __INTRINSIC_SPECIAL__InterlockedAnd64 +#define __INTRINSIC_SPECIAL__interlockedbittestandcomplement +#define __INTRINSIC_SPECIAL__interlockedbittestandcomplement64 +#define __INTRINSIC_SPECIAL__interlockedbittestandreset +#define __INTRINSIC_SPECIAL__interlockedbittestandreset64 +#define __INTRINSIC_SPECIAL__interlockedbittestandset +#define __INTRINSIC_SPECIAL__interlockedbittestandset64 +#define __INTRINSIC_SPECIAL__InterlockedOr +#define __INTRINSIC_SPECIAL__InterlockedOr64 +#define __INTRINSIC_SPECIAL__InterlockedXor +#define __INTRINSIC_SPECIAL__InterlockedXor64 +#define __INTRINSIC_SPECIAL_InterlockedBitTestAndComplement +#define __INTRINSIC_SPECIAL_InterlockedBitTestAndComplement64 +#define __INTRINSIC_SPECIAL_InterlockedBitTestAndReset +#define __INTRINSIC_SPECIAL_InterlockedBitTestAndReset64 +#define __INTRINSIC_SPECIAL_InterlockedBitTestAndSet +#define __INTRINSIC_SPECIAL_InterlockedBitTestAndSet64 +#define __INTRINSIC_SPECIAL__InterlockedIncrement16 +#define __INTRINSIC_SPECIAL__InterlockedDecrement16 +#define __INTRINSIC_SPECIAL__InterlockedCompareExchange16 +#define __INTRINSIC_SPECIAL__InterlockedIncrement +#define __INTRINSIC_SPECIAL__InterlockedDecrement +#define __INTRINSIC_SPECIAL__InterlockedAdd +#define __INTRINSIC_SPECIAL__InterlockedExchange +#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd +#define __INTRINSIC_SPECIAL__InterlockedCompareExchange +#define __INTRINSIC_SPECIAL__InterlockedIncrement64 +#define __INTRINSIC_SPECIAL__InterlockedDecrement64 +#define __INTRINSIC_SPECIAL__InterlockedAdd64 +#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd64 +#define __INTRINSIC_SPECIAL__InterlockedExchange64 +#define __INTRINSIC_SPECIAL__InterlockedCompareExchange64 +#define __INTRINSIC_SPECIAL__InterlockedExchangePointer +#define __INTRINSIC_SPECIAL__InterlockedCompareExchangePointer +#define __INTRINSIC_SPECIAL___readgsbyte +#define __INTRINSIC_SPECIAL___readgsword +#define __INTRINSIC_SPECIAL___readgsdword +#define __INTRINSIC_SPECIAL___readgsqword +#define __INTRINSIC_SPECIAL___writegsbyte +#define __INTRINSIC_SPECIAL___writegsword +#define __INTRINSIC_SPECIAL___writegsdword +#define __INTRINSIC_SPECIAL___writegsqword +#define __INTRINSIC_SPECIAL___readfsbyte +#define __INTRINSIC_SPECIAL___readfsword +#define __INTRINSIC_SPECIAL___readfsdword +#define __INTRINSIC_SPECIAL___writefsbyte +#define __INTRINSIC_SPECIAL___writefsword +#define __INTRINSIC_SPECIAL___writefsdword +#define __INTRINSIC_SPECIAL__BitScanForward +#define __INTRINSIC_SPECIAL__BitScanForward64 +#define __INTRINSIC_SPECIAL__BitScanReverse +#define __INTRINSIC_SPECIAL__BitScanReverse64 +#define __INTRINSIC_SPECIAL__bittest +#define __INTRINSIC_SPECIAL__bittestandset +#define __INTRINSIC_SPECIAL__bittestandreset +#define __INTRINSIC_SPECIAL__bittestandcomplement +#define __INTRINSIC_SPECIAL__bittest64 +#define __INTRINSIC_SPECIAL__bittestandset64 +#define __INTRINSIC_SPECIAL__bittestandreset64 +#define __INTRINSIC_SPECIAL__bittestandcomplement64 +#define __INTRINSIC_SPECIAL___movsb +#define __INTRINSIC_SPECIAL___movsw +#define __INTRINSIC_SPECIAL___movsd +#define __INTRINSIC_SPECIAL___movsq +#undef _lrotl +#undef _lrotr +unsigned char _interlockedbittestandset(long volatile *a, long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _interlockedbittestandset(long volatile *Base, long Offset) { unsigned int old, tmp1, tmp2; unsigned int bit = 1 << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %w[old], %[Base]\n\t" "mov %w[tmp1], %w[old]\n\t" "orr" " %w[tmp1], %w[tmp1], %w[bit]\n\t" "stxr %w[tmp2], %w[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED__interlockedbittestandset +unsigned char _interlockedbittestandreset(long volatile *a, long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _interlockedbittestandreset(long volatile *Base, long Offset) { unsigned int old, tmp1, tmp2; unsigned int bit = 1 << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %w[old], %[Base]\n\t" "mov %w[tmp1], %w[old]\n\t" "bic" " %w[tmp1], %w[tmp1], %w[bit]\n\t" "stxr %w[tmp2], %w[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED__interlockedbittestandreset +unsigned char _interlockedbittestandcomplement(long volatile *a, long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _interlockedbittestandcomplement(long volatile *Base, long Offset) { unsigned int old, tmp1, tmp2; unsigned int bit = 1 << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %w[old], %[Base]\n\t" "mov %w[tmp1], %w[old]\n\t" "eor" " %w[tmp1], %w[tmp1], %w[bit]\n\t" "stxr %w[tmp2], %w[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED__interlockedbittestandcomplement +unsigned char InterlockedBitTestAndSet(volatile long *a, long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char InterlockedBitTestAndSet(long volatile *Base, long Offset) { unsigned int old, tmp1, tmp2; unsigned int bit = 1 << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %w[old], %[Base]\n\t" "mov %w[tmp1], %w[old]\n\t" "orr" " %w[tmp1], %w[tmp1], %w[bit]\n\t" "stxr %w[tmp2], %w[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED_InterlockedBitTestAndSet +unsigned char InterlockedBitTestAndReset(volatile long *a, long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char InterlockedBitTestAndReset(long volatile *Base, long Offset) { unsigned int old, tmp1, tmp2; unsigned int bit = 1 << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %w[old], %[Base]\n\t" "mov %w[tmp1], %w[old]\n\t" "bic" " %w[tmp1], %w[tmp1], %w[bit]\n\t" "stxr %w[tmp2], %w[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED_InterlockedBitTestAndReset +unsigned char InterlockedBitTestAndComplement(volatile long *a, long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char InterlockedBitTestAndComplement(long volatile *Base, long Offset) { unsigned int old, tmp1, tmp2; unsigned int bit = 1 << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %w[old], %[Base]\n\t" "mov %w[tmp1], %w[old]\n\t" "eor" " %w[tmp1], %w[tmp1], %w[bit]\n\t" "stxr %w[tmp2], %w[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED_InterlockedBitTestAndComplement +unsigned char _interlockedbittestandset64(long long volatile *a, long long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _interlockedbittestandset64(long long volatile *Base, long long Offset) { unsigned long long old, tmp1; unsigned int tmp2; unsigned long long bit = 1ULL << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %[old], %[Base]\n\t" "mov %[tmp1], %[old]\n\t" "orr" " %[tmp1], %[tmp1], %[bit]\n\t" "stxr %w[tmp2], %[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED__interlockedbittestandset64 +unsigned char _interlockedbittestandreset64(long long volatile *a, long long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _interlockedbittestandreset64(long long volatile *Base, long long Offset) { unsigned long long old, tmp1; unsigned int tmp2; unsigned long long bit = 1ULL << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %[old], %[Base]\n\t" "mov %[tmp1], %[old]\n\t" "bic" " %[tmp1], %[tmp1], %[bit]\n\t" "stxr %w[tmp2], %[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED__interlockedbittestandreset64 +unsigned char _interlockedbittestandcomplement64(long long volatile *a, long long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _interlockedbittestandcomplement64(long long volatile *Base, long long Offset) { unsigned long long old, tmp1; unsigned int tmp2; unsigned long long bit = 1ULL << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %[old], %[Base]\n\t" "mov %[tmp1], %[old]\n\t" "eor" " %[tmp1], %[tmp1], %[bit]\n\t" "stxr %w[tmp2], %[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED__interlockedbittestandcomplement64 +unsigned char InterlockedBitTestAndSet64(volatile long long *a, long long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char InterlockedBitTestAndSet64(long long volatile *Base, long long Offset) { unsigned long long old, tmp1; unsigned int tmp2; unsigned long long bit = 1ULL << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %[old], %[Base]\n\t" "mov %[tmp1], %[old]\n\t" "orr" " %[tmp1], %[tmp1], %[bit]\n\t" "stxr %w[tmp2], %[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED_InterlockedBitTestAndSet64 +unsigned char InterlockedBitTestAndReset64(volatile long long *a, long long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char InterlockedBitTestAndReset64(long long volatile *Base, long long Offset) { unsigned long long old, tmp1; unsigned int tmp2; unsigned long long bit = 1ULL << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %[old], %[Base]\n\t" "mov %[tmp1], %[old]\n\t" "bic" " %[tmp1], %[tmp1], %[bit]\n\t" "stxr %w[tmp2], %[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED_InterlockedBitTestAndReset64 +unsigned char InterlockedBitTestAndComplement64(volatile long long *a, long long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char InterlockedBitTestAndComplement64(long long volatile *Base, long long Offset) { unsigned long long old, tmp1; unsigned int tmp2; unsigned long long bit = 1ULL << Offset; __asm__ __volatile__ ("dmb sy\n\t" "1: ldxr %[old], %[Base]\n\t" "mov %[tmp1], %[old]\n\t" "eor" " %[tmp1], %[tmp1], %[bit]\n\t" "stxr %w[tmp2], %[tmp1], %[Base]\n\t" "cmp %w[tmp2], #0\n\t" "b.ne 1b\n\t" "dmb sy" : [old] "=&r" (old), [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [Base] "+m" (*Base) : [bit] "r" (bit) : "memory", "cc"); return (old >> Offset) & 1; } +#define __INTRINSIC_DEFINED_InterlockedBitTestAndComplement64 +__extension__ long long _InterlockedAnd64(long long volatile *, long long); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedAnd64(volatile long long *Destination, long long Value) { return __sync_fetch_and_and(Destination, Value); } +#define __INTRINSIC_DEFINED__InterlockedAnd64 +__extension__ long long _InterlockedOr64(long long volatile *, long long); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedOr64(volatile long long *Destination, long long Value) { return __sync_fetch_and_or(Destination, Value); } +#define __INTRINSIC_DEFINED__InterlockedOr64 +__extension__ long long _InterlockedXor64(long long volatile *, long long); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedXor64(volatile long long *Destination, long long Value) { return __sync_fetch_and_xor(Destination, Value); } +#define __INTRINSIC_DEFINED__InterlockedXor64 +__extension__ long long _InterlockedIncrement64(long long volatile *Addend); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedIncrement64(long long volatile *Addend) { + return __sync_add_and_fetch(Addend, 1); +} +#define __INTRINSIC_DEFINED__InterlockedIncrement64 +__extension__ long long _InterlockedDecrement64(long long volatile *Addend); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedDecrement64(long long volatile *Addend) { + return __sync_sub_and_fetch(Addend, 1); +} +#define __INTRINSIC_DEFINED__InterlockedDecrement64 +__extension__ long long _InterlockedExchange64(long long volatile *Target, long long Value); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedExchange64(long long volatile *Target, long long Value) { + return __sync_lock_test_and_set(Target, Value); +} +#define __INTRINSIC_DEFINED__InterlockedExchange64 +__extension__ long long _InterlockedExchangeAdd64(long long volatile *Addend, long long Value); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedExchangeAdd64(long long volatile *Addend, long long Value) { + return __sync_fetch_and_add(Addend, Value); +} +#define __INTRINSIC_DEFINED__InterlockedExchangeAdd64 +__extension__ unsigned char _BitScanForward(unsigned long *Index, unsigned long Mask); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _BitScanForward(unsigned long *Index, unsigned long Mask) +{ + if (Mask == 0) + return 0; + *Index = __builtin_ctz(Mask); + return 1; +} +#define __INTRINSIC_DEFINED__BitScanForward +__extension__ unsigned char _BitScanReverse(unsigned long *Index, unsigned long Mask); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _BitScanReverse(unsigned long *Index, unsigned long Mask) +{ + if (Mask == 0) + return 0; + *Index = 31 - __builtin_clz(Mask); + return 1; +} +#define __INTRINSIC_DEFINED__BitScanReverse +__extension__ unsigned char _BitScanForward64(unsigned long *Index, unsigned long long Mask); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _BitScanForward64(unsigned long *Index, unsigned long long Mask) +{ + if (Mask == 0) + return 0; + *Index = __builtin_ctzll(Mask); + return 1; +} +#define __INTRINSIC_DEFINED__BitScanForward64 +__extension__ unsigned char _BitScanReverse64(unsigned long *Index, unsigned long long Mask); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _BitScanReverse64(unsigned long *Index, unsigned long long Mask) +{ + if (Mask == 0) + return 0; + *Index = 63 - __builtin_clzll(Mask); + return 1; +} +#define __INTRINSIC_DEFINED__BitScanReverse64 +unsigned char _bittest(const long *__a, long __b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittest(const long *__a, long __b) +{ + return (*__a >> __b) & 1; +} +#define __INTRINSIC_DEFINED__bittest +unsigned char _bittestandset(long *__a, long __b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittestandset(long *__a, long __b) +{ + unsigned char __v = (*__a >> __b) & 1; + *__a |= 1UL << __b; + return __v; +} +#define __INTRINSIC_DEFINED__bittestandset +unsigned char _bittestandreset(long *__a, long __b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittestandreset(long *__a, long __b) +{ + unsigned char __v = (*__a >> __b) & 1; + *__a &= ~(1UL << __b); + return __v; +} +#define __INTRINSIC_DEFINED__bittestandreset +unsigned char _bittestandcomplement(long *a, long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittestandcomplement(long *__a, long __b) +{ + unsigned char __v = (*__a >> __b) & 1; + *__a ^= 1UL << __b; + return __v; +} +#define __INTRINSIC_DEFINED__bittestandcomplement +unsigned char _bittest64(const long long *__a, long long __b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittest64(const long long *__a, long long __b) +{ + return (*__a >> __b) & 1; +} +#define __INTRINSIC_DEFINED__bittest64 +unsigned char _bittestandset64(long long *__a, long long __b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittestandset64(long long *__a, long long __b) +{ + unsigned char __v = (*__a >> __b) & 1; + *__a |= 1ULL << __b; + return __v; +} +#define __INTRINSIC_DEFINED__bittestandset64 +unsigned char _bittestandreset64(long long *__a, long long __b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittestandreset64(long long *__a, long long __b) +{ + unsigned char __v = (*__a >> __b) & 1; + *__a &= ~(1ULL << __b); + return __v; +} +#define __INTRINSIC_DEFINED__bittestandreset64 +unsigned char _bittestandcomplement64(long long *a, long long b); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +unsigned char _bittestandcomplement64(long long *__a, long long __b) +{ + unsigned char __v = (*__a >> __b) & 1; + *__a ^= 1ULL << __b; + return __v; +} +#define __INTRINSIC_DEFINED__bittestandcomplement64 +long _InterlockedAnd(long volatile *, long); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedAnd(volatile long *Destination, long Value) { return __sync_fetch_and_and(Destination, Value); } +#define __INTRINSIC_DEFINED__InterlockedAnd +long _InterlockedOr(long volatile *, long); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedOr(volatile long *Destination, long Value) { return __sync_fetch_and_or(Destination, Value); } +#define __INTRINSIC_DEFINED__InterlockedOr +long _InterlockedXor(long volatile *, long); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedXor(volatile long *Destination, long Value) { return __sync_fetch_and_xor(Destination, Value); } +#define __INTRINSIC_DEFINED__InterlockedXor +short _InterlockedIncrement16(short volatile *Addend); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +short _InterlockedIncrement16(short volatile *Addend) { + return __sync_add_and_fetch(Addend, 1); +} +#define __INTRINSIC_DEFINED__InterlockedIncrement16 +short _InterlockedDecrement16(short volatile *Addend); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +short _InterlockedDecrement16(short volatile *Addend) { + return __sync_sub_and_fetch(Addend, 1); +} +#define __INTRINSIC_DEFINED__InterlockedDecrement16 +short _InterlockedCompareExchange16(short volatile *Destination, short ExChange, short Comperand); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +short _InterlockedCompareExchange16(short volatile *Destination, short ExChange, short Comperand) { + return __sync_val_compare_and_swap(Destination, Comperand, ExChange); +} +#define __INTRINSIC_DEFINED__InterlockedCompareExchange16 +long _InterlockedExchangeAdd(long volatile *Addend, long Value); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedExchangeAdd(long volatile *Addend, long Value) { + return __sync_fetch_and_add(Addend, Value); +} +#define __INTRINSIC_DEFINED__InterlockedExchangeAdd +long _InterlockedCompareExchange(long volatile *Destination, long ExChange, long Comperand); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedCompareExchange(long volatile *Destination, long ExChange, long Comperand) { + return __sync_val_compare_and_swap(Destination, Comperand, ExChange); +} +#define __INTRINSIC_DEFINED__InterlockedCompareExchange +long _InterlockedIncrement(long volatile *Addend); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedIncrement(long volatile *Addend) { + return __sync_add_and_fetch(Addend, 1); +} +#define __INTRINSIC_DEFINED__InterlockedIncrement +long _InterlockedDecrement(long volatile *Addend); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedDecrement(long volatile *Addend) { + return __sync_sub_and_fetch(Addend, 1); +} +#define __INTRINSIC_DEFINED__InterlockedDecrement +long _InterlockedAdd(long volatile *Addend, long Value); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedAdd(long volatile *Addend, long Value) { + return __sync_add_and_fetch(Addend, Value); +} +#define __INTRINSIC_DEFINED__InterlockedAdd +__extension__ long long _InterlockedAdd64(long long volatile *Addend, long long Value); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedAdd64(long long volatile *Addend, long long Value) { + return __sync_add_and_fetch(Addend, Value); +} +#define __INTRINSIC_DEFINED__InterlockedAdd64 +long _InterlockedExchange(long volatile *Target, long Value); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long _InterlockedExchange(long volatile *Target, long Value) { + return __sync_lock_test_and_set(Target, Value); +} +#define __INTRINSIC_DEFINED__InterlockedExchange +__extension__ long long _InterlockedCompareExchange64(long long volatile *Destination, long long ExChange, long long Comperand); +__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +long long _InterlockedCompareExchange64(long long volatile *Destination, long long ExChange, long long Comperand) { + return __sync_val_compare_and_swap(Destination, Comperand, ExChange); +} +#define __INTRINSIC_DEFINED__InterlockedCompareExchange64 +void *_InterlockedCompareExchangePointer(void * volatile *Destination, void *ExChange, void *Comperand); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +void *_InterlockedCompareExchangePointer(void *volatile *Destination, void *ExChange, void *Comperand) { + return __sync_val_compare_and_swap(Destination, Comperand, ExChange); +} +#define __INTRINSIC_DEFINED__InterlockedCompareExchangePointer +void *_InterlockedExchangePointer(void *volatile *Target,void *Value); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) +void *_InterlockedExchangePointer(void *volatile *Target,void *Value) { + return __sync_lock_test_and_set(Target, Value); +} +#define __INTRINSIC_DEFINED__InterlockedExchangePointer +#undef __INTRINSIC_ONLYSPECIAL +#undef __INTRINSIC_PROLOG +#undef __INTRINSIC_EPILOG +#undef __INTRINSICS_USEINLINE +#undef __FLAGCONSTRAINT +#undef __FLAGSET +#undef __FLAGCLOBBER1 +#undef __FLAGCLOBBER2 +#define RESTRICTED_POINTER +#undef UNALIGNED +#undef UNALIGNED64 +#define ALIGNMENT_MACHINE +#define UNALIGNED __unaligned +#define UNALIGNED64 __unaligned +#define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG) +#define MEMORY_ALLOCATION_ALIGNMENT 16 +#define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test) +#define PROBE_ALIGNMENT(_s) (TYPE_ALIGNMENT (_s) > TYPE_ALIGNMENT (DWORD) ? TYPE_ALIGNMENT (_s) : TYPE_ALIGNMENT (DWORD)) +#define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT (DWORD) +#define C_ASSERT(e) extern void __C_ASSERT__(int [(e)?1:-1]) +#define _BASETSD_H_ +typedef unsigned long POINTER_64_INT; +#define POINTER_32 +#define POINTER_64 +#define FIRMWARE_PTR +#define POINTER_SIGNED +#define POINTER_UNSIGNED +#define SPOINTER_32 POINTER_SIGNED POINTER_32 +#define UPOINTER_32 POINTER_UNSIGNED POINTER_32 + typedef signed char INT8,*PINT8; + typedef signed short INT16,*PINT16; + typedef signed int INT32,*PINT32; + __extension__ typedef signed long long INT64,*PINT64; + typedef unsigned char UINT8,*PUINT8; + typedef unsigned short UINT16,*PUINT16; + typedef unsigned int UINT32,*PUINT32; + __extension__ typedef unsigned long long UINT64,*PUINT64; + typedef signed int LONG32,*PLONG32; + typedef unsigned int ULONG32,*PULONG32; + typedef unsigned int DWORD32,*PDWORD32; + __extension__ typedef long long INT_PTR,*PINT_PTR; + __extension__ typedef unsigned long long UINT_PTR,*PUINT_PTR; + __extension__ typedef long long LONG_PTR,*PLONG_PTR; + __extension__ typedef unsigned long long ULONG_PTR,*PULONG_PTR; +#define __int3264 __int64 +#define ADDRESS_TAG_BIT 0x40000000000ULL + __extension__ typedef long long SHANDLE_PTR; + __extension__ typedef unsigned long long HANDLE_PTR; + typedef unsigned int UHALF_PTR,*PUHALF_PTR; + typedef int HALF_PTR,*PHALF_PTR; + static __inline unsigned long HandleToULong (const void *h) { return ((unsigned long) (ULONG_PTR) h); } + static __inline long HandleToLong (const void *h) { return ((long) (LONG_PTR) h); } + static __inline void *ULongToHandle (const unsigned long h) { return ((void *) (UINT_PTR) h); } + static __inline void *LongToHandle (const long h) { return ((void *) (INT_PTR) h); } + static __inline unsigned long PtrToUlong (const void *p) { return ((unsigned long) (ULONG_PTR) p); } + static __inline unsigned int PtrToUint (const void *p) { return ((unsigned int) (UINT_PTR) p); } + static __inline unsigned short PtrToUshort (const void *p) { return ((unsigned short) (unsigned long) (ULONG_PTR) p); } + static __inline long PtrToLong (const void *p) { return ((long) (LONG_PTR) p); } + static __inline int PtrToInt (const void *p) { return ((int) (INT_PTR) p); } + static __inline short PtrToShort (const void *p) { return ((short) (long) (LONG_PTR) p); } + static __inline void *IntToPtr (const int i) { return ((void *) (INT_PTR)i); } + static __inline void *UIntToPtr (const unsigned int ui) { return ((void *) (UINT_PTR)ui); } + static __inline void *LongToPtr (const long l) { return ((void *) (LONG_PTR)l); } + static __inline void *ULongToPtr (const unsigned long ul) { return ((void *) (ULONG_PTR)ul); } +#define PtrToPtr64(p) ((void *POINTER_64) p) +#define Ptr64ToPtr(p) ((void *) p) +#define HandleToHandle64(h) (PtrToPtr64 (h)) +#define Handle64ToHandle(h) (Ptr64ToPtr (h)) + static __inline void *Ptr32ToPtr (const void * p) { return ((void *) (ULONG_PTR) (unsigned long) (ULONG_PTR) p); } + static __inline void *Handle32ToHandle (const void * h) { return ((void *) (LONG_PTR) (long) (ULONG_PTR) h); } + static __inline void * PtrToPtr32 (const void *p) { return ((void *) (ULONG_PTR) (unsigned long) (ULONG_PTR) p); } +#define HandleToHandle32(h) (PtrToPtr32 (h)) +#define HandleToUlong(h) HandleToULong (h) +#define UlongToHandle(ul) ULongToHandle (ul) +#define UlongToPtr(ul) ULongToPtr (ul) +#define UintToPtr(ui) UIntToPtr (ui) +#define MAXUINT_PTR (~ ((UINT_PTR)0)) +#define MAXINT_PTR ((INT_PTR) (MAXUINT_PTR >> 1)) +#define MININT_PTR (~MAXINT_PTR) +#define MAXULONG_PTR (~ ((ULONG_PTR)0)) +#define MAXLONG_PTR ((LONG_PTR) (MAXULONG_PTR >> 1)) +#define MINLONG_PTR (~MAXLONG_PTR) +#define MAXUHALF_PTR ((UHALF_PTR)~0) +#define MAXHALF_PTR ((HALF_PTR) (MAXUHALF_PTR >> 1)) +#define MINHALF_PTR (~MAXHALF_PTR) + __extension__ typedef ULONG_PTR SIZE_T,*PSIZE_T; + __extension__ typedef LONG_PTR SSIZE_T,*PSSIZE_T; +#define MAXUINT8 ((UINT8)~ ((UINT8)0)) +#define MAXINT8 ((INT8) (MAXUINT8 >> 1)) +#define MININT8 ((INT8)~MAXINT8) +#define MAXUINT16 ((UINT16)~ ((UINT16)0)) +#define MAXINT16 ((INT16) (MAXUINT16 >> 1)) +#define MININT16 ((INT16)~MAXINT16) +#define MAXUINT32 ((UINT32)~ ((UINT32)0)) +#define MAXINT32 ((INT32) (MAXUINT32 >> 1)) +#define MININT32 ((INT32)~MAXINT32) +#define MAXUINT64 ((UINT64)~ ((UINT64)0)) +#define MAXINT64 ((INT64) (MAXUINT64 >> 1)) +#define MININT64 ((INT64)~MAXINT64) +#define MAXULONG32 ((ULONG32)~ ((ULONG32)0)) +#define MAXLONG32 ((LONG32) (MAXULONG32 >> 1)) +#define MINLONG32 ((LONG32)~MAXLONG32) +#define MAXULONG64 ((ULONG64)~ ((ULONG64)0)) +#define MAXLONG64 ((LONG64) (MAXULONG64 >> 1)) +#define MINLONG64 ((LONG64)~MAXLONG64) +#define MAXULONGLONG ((ULONGLONG)~ ((ULONGLONG)0)) +#define MINLONGLONG ((LONGLONG)~MAXLONGLONG) +#define MAXSIZE_T ((SIZE_T)~ ((SIZE_T)0)) +#define MAXSSIZE_T ((SSIZE_T) (MAXSIZE_T >> 1)) +#define MINSSIZE_T ((SSIZE_T)~MAXSSIZE_T) +#define MAXUINT ((UINT)~ ((UINT)0)) +#define MAXINT ((INT) (MAXUINT >> 1)) +#define MININT ((INT)~MAXINT) +#define MAXDWORD32 ((DWORD32)~ ((DWORD32)0)) +#define MAXDWORD64 ((DWORD64)~ ((DWORD64)0)) + __extension__ typedef ULONG_PTR DWORD_PTR,*PDWORD_PTR; + __extension__ typedef long long LONG64,*PLONG64; + __extension__ typedef unsigned long long ULONG64,*PULONG64; + __extension__ typedef unsigned long long DWORD64,*PDWORD64; + __extension__ typedef ULONG_PTR KAFFINITY; + __extension__ typedef KAFFINITY *PKAFFINITY; +#define DECLSPEC_IMPORT __declspec (dllimport) +#define DECLSPEC_NORETURN __declspec (noreturn) +#define DECLSPEC_NOTHROW __declspec (nothrow) +#define DECLSPEC_ALIGN(x) __attribute__ ((__aligned__ (x))) +#define X86_CACHE_ALIGNMENT_SIZE 64 +#define ARM_CACHE_ALIGNMENT_SIZE 128 +#define SYSTEM_CACHE_ALIGNMENT_SIZE ARM_CACHE_ALIGNMENT_SIZE +#define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(SYSTEM_CACHE_ALIGNMENT_SIZE) +#define DECLSPEC_UUID(x) +#define DECLSPEC_NOVTABLE +#define DECLSPEC_SELECTANY __declspec(selectany) +#define NOP_FUNCTION (void)0 +#define DECLSPEC_NOINLINE __attribute__((noinline)) +#define FORCEINLINE __forceinline +#define DECLSPEC_DEPRECATED __declspec(deprecated) +#define DEPRECATE_SUPPORTED +#define DECLSPEC_DEPRECATED_DDK +#define PRAGMA_DEPRECATED_DDK 0 + typedef void *PVOID; + typedef void *PVOID64; +#define FASTCALL +#define NTAPI +#define NTAPI_INLINE NTAPI +#define NTSYSAPI DECLSPEC_IMPORT +#define NTSYSCALLAPI DECLSPEC_IMPORT +#define VOID void + typedef char CHAR; + typedef short SHORT; + typedef long LONG; + typedef int INT; +#define __WCHAR_DEFINED + typedef wchar_t WCHAR; + typedef WCHAR *PWCHAR,*LPWCH,*PWCH; + typedef const WCHAR *LPCWCH,*PCWCH; + typedef WCHAR *NWPSTR,*LPWSTR,*PWSTR; + typedef PWSTR *PZPWSTR; + typedef const PWSTR *PCZPWSTR; + typedef WCHAR *LPUWSTR,*PUWSTR; + typedef const WCHAR *LPCWSTR,*PCWSTR; + typedef PCWSTR *PZPCWSTR; + typedef const WCHAR *LPCUWSTR,*PCUWSTR; + typedef WCHAR *PZZWSTR; + typedef const WCHAR *PCZZWSTR; + typedef WCHAR *PUZZWSTR; + typedef const WCHAR *PCUZZWSTR; + typedef WCHAR *PNZWCH; + typedef const WCHAR *PCNZWCH; + typedef WCHAR *PUNZWCH; + typedef const WCHAR *PCUNZWCH; + typedef const WCHAR *LPCWCHAR,*PCWCHAR; + typedef const WCHAR *LPCUWCHAR,*PCUWCHAR; + typedef unsigned long UCSCHAR; +#define UCSCHAR_INVALID_CHARACTER (0xffffffff) +#define MIN_UCSCHAR (0) +#define MAX_UCSCHAR (0x0010ffff) + typedef UCSCHAR *PUCSCHAR; + typedef const UCSCHAR *PCUCSCHAR; + typedef UCSCHAR *PUCSSTR; + typedef UCSCHAR *PUUCSSTR; + typedef const UCSCHAR *PCUCSSTR; + typedef const UCSCHAR *PCUUCSSTR; + typedef UCSCHAR *PUUCSCHAR; + typedef const UCSCHAR *PCUUCSCHAR; + typedef CHAR *PCHAR,*LPCH,*PCH; + typedef const CHAR *LPCCH,*PCCH; + typedef CHAR *NPSTR,*LPSTR,*PSTR; + typedef PSTR *PZPSTR; + typedef const PSTR *PCZPSTR; + typedef const CHAR *LPCSTR,*PCSTR; + typedef PCSTR *PZPCSTR; + typedef CHAR *PZZSTR; + typedef const CHAR *PCZZSTR; + typedef CHAR *PNZCH; + typedef const CHAR *PCNZCH; +#define _TCHAR_DEFINED + typedef char TCHAR, *PTCHAR; + typedef unsigned char TBYTE, *PTBYTE; + typedef LPSTR LPTCH,PTCH; + typedef LPCCH LPCTCH,PCTCH; + typedef LPSTR PTSTR,LPTSTR,PUTSTR,LPUTSTR; + typedef LPCSTR PCTSTR,LPCTSTR,PCUTSTR,LPCUTSTR; + typedef PZZSTR PZZTSTR, PUZZTSTR; + typedef PCZZSTR PCZZTSTR, PCUZZTSTR; + typedef PZPSTR PZPTSTR; + typedef PNZCH PNZTCH, PUNZTCH; + typedef PCNZCH PCNZTCH, PCUNZTCH; +#define __TEXT(quote) quote +#define TEXT(quote) __TEXT(quote) + typedef SHORT *PSHORT; + typedef LONG *PLONG; +#define ___GROUP_AFFINITY_DEFINED +typedef struct _GROUP_AFFINITY { + KAFFINITY Mask; + WORD Group; + WORD Reserved[3]; +} GROUP_AFFINITY, *PGROUP_AFFINITY; + typedef void *HANDLE; +#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name + typedef HANDLE *PHANDLE; + typedef BYTE FCHAR; + typedef WORD FSHORT; + typedef DWORD FLONG; +#define _HRESULT_DEFINED + typedef LONG HRESULT; +#define EXTERN_C extern +#define STDMETHODCALLTYPE WINAPI +#define STDMETHODVCALLTYPE __cdecl +#define STDAPICALLTYPE WINAPI +#define STDAPIVCALLTYPE __cdecl +#define STDAPI EXTERN_C HRESULT WINAPI +#define STDAPI_(type) EXTERN_C type WINAPI +#define STDMETHODIMP HRESULT WINAPI +#define STDMETHODIMP_(type) type WINAPI +#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE +#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +#define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE +#define IFACEMETHODIMP STDMETHODIMP +#define IFACEMETHODIMP_(type) STDMETHODIMP_(type) +#define IFACEMETHODIMPV STDMETHODIMPV +#define IFACEMETHODIMPV_(type) STDMETHODIMPV_(type) + typedef char CCHAR; +#define _LCID_DEFINED +typedef DWORD LCID; + typedef PDWORD PLCID; +#define _LANGID_DEFINED + typedef WORD LANGID; +#define __COMPARTMENT_ID_DEFINED__ +typedef enum { + UNSPECIFIED_COMPARTMENT_ID = 0, + DEFAULT_COMPARTMENT_ID +} COMPARTMENT_ID,*PCOMPARTMENT_ID; +#define APPLICATION_ERROR_MASK 0x20000000 +#define ERROR_SEVERITY_SUCCESS 0x00000000 +#define ERROR_SEVERITY_INFORMATIONAL 0x40000000 +#define ERROR_SEVERITY_WARNING 0x80000000 +#define ERROR_SEVERITY_ERROR 0xC0000000 + typedef struct _FLOAT128 { + __extension__ long long LowPart; + __extension__ long long HighPart; + } FLOAT128; + typedef FLOAT128 *PFLOAT128; +#define _ULONGLONG_ + __extension__ typedef long long LONGLONG; + __extension__ typedef unsigned long long ULONGLONG; +#define MAXLONGLONG (0x7fffffffffffffffll) + typedef LONGLONG *PLONGLONG; + typedef ULONGLONG *PULONGLONG; + typedef LONGLONG USN; +#define _LARGE_INTEGER_DEFINED + typedef union _LARGE_INTEGER { + __extension__ struct { + DWORD LowPart; + LONG HighPart; + } ; + struct { + DWORD LowPart; + LONG HighPart; + } u; + LONGLONG QuadPart; + } LARGE_INTEGER; + typedef LARGE_INTEGER *PLARGE_INTEGER; + typedef union _ULARGE_INTEGER { + __extension__ struct { + DWORD LowPart; + DWORD HighPart; + } ; + struct { + DWORD LowPart; + DWORD HighPart; + } u; + ULONGLONG QuadPart; + } ULARGE_INTEGER; + typedef ULARGE_INTEGER *PULARGE_INTEGER; +typedef LONG_PTR RTL_REFERENCE_COUNT, *PRTL_REFERENCE_COUNT; +typedef LONG RTL_REFERENCE_COUNT32, *PRTL_REFERENCE_COUNT32; + typedef struct _LUID { + DWORD LowPart; + LONG HighPart; + } LUID,*PLUID; +#define _DWORDLONG_ + typedef ULONGLONG DWORDLONG; + typedef DWORDLONG *PDWORDLONG; +#define Int32x32To64(a,b) (((LONGLONG) ((LONG) (a))) * ((LONGLONG) ((LONG) (b)))) +#define UInt32x32To64(a,b) (((ULONGLONG) ((unsigned int) (a))) *((ULONGLONG) ((unsigned int) (b)))) +#define Int64ShllMod32(a,b) (((ULONGLONG) (a)) << (b)) +#define Int64ShraMod32(a,b) (((LONGLONG) (a)) >> (b)) +#define Int64ShrlMod32(a,b) (((ULONGLONG) (a)) >> (b)) +#define RotateLeft32 _rotl +#define RotateLeft64 _rotl64 +#define RotateRight32 _rotr +#define RotateRight64 _rotr64 +#undef _rotl +#undef _rotr + unsigned int __attribute__((__cdecl__)) _rotl(unsigned int Value,int Shift); + unsigned int __attribute__((__cdecl__)) _rotr(unsigned int Value,int Shift); +#undef _rotl64 +#undef _rotr64 + __extension__ unsigned long long __attribute__((__cdecl__)) _rotl64(unsigned long long Value,int Shift); + __extension__ unsigned long long __attribute__((__cdecl__)) _rotr64(unsigned long long Value,int Shift); +#define ANSI_NULL ((CHAR)0) +#define UNICODE_NULL ((WCHAR)0) +#define UNICODE_STRING_MAX_BYTES ((WORD) 65534) +#define UNICODE_STRING_MAX_CHARS (32767) +#define _BOOLEAN_ + typedef BYTE BOOLEAN; + typedef BOOLEAN *PBOOLEAN; +#define _LIST_ENTRY_DEFINED + typedef struct _LIST_ENTRY { + struct _LIST_ENTRY *Flink; + struct _LIST_ENTRY *Blink; + } LIST_ENTRY,*PLIST_ENTRY,* PRLIST_ENTRY; + typedef struct _SINGLE_LIST_ENTRY { + struct _SINGLE_LIST_ENTRY *Next; + } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY; + typedef struct LIST_ENTRY32 { + DWORD Flink; + DWORD Blink; + } LIST_ENTRY32; + typedef LIST_ENTRY32 *PLIST_ENTRY32; + typedef struct LIST_ENTRY64 { + ULONGLONG Flink; + ULONGLONG Blink; + } LIST_ENTRY64; + typedef LIST_ENTRY64 *PLIST_ENTRY64; +#define GUID_DEFINED +typedef struct _GUID { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name +#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) +#define _GUIDDEF_H_ +#define __LPGUID_DEFINED__ +typedef GUID *LPGUID; +#define __LPCGUID_DEFINED__ +typedef const GUID *LPCGUID; +#define __IID_DEFINED__ +typedef GUID IID; +typedef IID *LPIID; +#define IID_NULL GUID_NULL +#define IsEqualIID(riid1,riid2) IsEqualGUID (riid1, riid2) +#define CLSID_DEFINED +typedef GUID CLSID; +typedef CLSID *LPCLSID; +#define CLSID_NULL GUID_NULL +#define IsEqualCLSID(rclsid1,rclsid2) IsEqualGUID (rclsid1, rclsid2) +typedef GUID FMTID; +typedef FMTID *LPFMTID; +#define FMTID_NULL GUID_NULL +#define IsEqualFMTID(rfmtid1,rfmtid2) IsEqualGUID (rfmtid1, rfmtid2) +#define __MIDL_CONST const +#define _REFGUID_DEFINED +#define REFGUID const GUID *__MIDL_CONST +#define _REFIID_DEFINED +#define REFIID const IID *__MIDL_CONST +#define _REFCLSID_DEFINED +#define REFCLSID const IID *__MIDL_CONST +#define _REFFMTID_DEFINED +#define REFFMTID const IID *__MIDL_CONST +#define _SYS_GUID_OPERATORS_ +#define InlineIsEqualGUID(rguid1,rguid2) ((&(rguid1)->Data1)[0] == (&(rguid2)->Data1)[0] && (&(rguid1)->Data1)[1] == (&(rguid2)->Data1)[1] && (&(rguid1)->Data1)[2] == (&(rguid2)->Data1)[2] && (&(rguid1)->Data1)[3] == (&(rguid2)->Data1)[3]) +#define IsEqualGUID(rguid1,rguid2) (!memcmp (rguid1, rguid2, sizeof (GUID))) +#define IsEqualIID(riid1,riid2) IsEqualGUID (riid1, riid2) +#define IsEqualCLSID(rclsid1,rclsid2) IsEqualGUID (rclsid1, rclsid2) +#define _SYS_GUID_OPERATOR_EQ_ +#define __OBJECTID_DEFINED + typedef struct _OBJECTID { + GUID Lineage; + DWORD Uniquifier; + } OBJECTID; +#define MINCHAR 0x80 +#define MAXCHAR 0x7f +#define MINSHORT 0x8000 +#define MAXSHORT 0x7fff +#define MINLONG 0x80000000 +#define MAXLONG 0x7fffffff +#define MAXBYTE 0xff +#define MAXWORD 0xffff +#define MAXDWORD 0xffffffff +#define FIELD_OFFSET(Type,Field) ((LONG) __builtin_offsetof(Type, Field)) +#define RTL_FIELD_SIZE(type,field) (sizeof(((type *)0)->field)) +#define RTL_SIZEOF_THROUGH_FIELD(type,field) (FIELD_OFFSET(type,field) + RTL_FIELD_SIZE(type,field)) +#define RTL_CONTAINS_FIELD(Struct,Size,Field) ((((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size))) +#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0])) +#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A) +#define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A) +#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) +#define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A) +#define RTL_FIELD_TYPE(type,field) (((type*)0)->field) +#define RTL_NUMBER_OF_FIELD(type,field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type,field))) +#define RTL_PADDING_BETWEEN_FIELDS(T,F1,F2) ((FIELD_OFFSET(T,F2) > FIELD_OFFSET(T,F1)) ? (FIELD_OFFSET(T,F2) - FIELD_OFFSET(T,F1) - RTL_FIELD_SIZE(T,F1)) : (FIELD_OFFSET(T,F1) - FIELD_OFFSET(T,F2) - RTL_FIELD_SIZE(T,F2))) +#define RTL_CONST_CAST(type) (type) +#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) +#define COMPILETIME_OR_2FLAGS(a,b) ((UINT) (a) | (UINT) (b)) +#define COMPILETIME_OR_3FLAGS(a,b,c) ((UINT) (a) | (UINT) (b) | (UINT) (c)) +#define COMPILETIME_OR_4FLAGS(a,b,c,d) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d)) +#define COMPILETIME_OR_5FLAGS(a,b,c,d,e) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d) | (UINT) (e)) +#define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8) +#define RTL_BITS_OF_FIELD(type,field) (RTL_BITS_OF(RTL_FIELD_TYPE(type,field))) +#define CONTAINING_RECORD(address,type,field) ((type *)((PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field))) + typedef int EXCEPTION_ROUTINE (struct _EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, struct _CONTEXT *ContextRecord, PVOID DispatcherContext); +#define __PEXCEPTION_ROUTINE_DEFINED + typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE; +#define ENCLAVE_SHORT_ID_LENGTH 16 +#define ENCLAVE_LONG_ID_LENGTH 32 +#define VER_WORKSTATION_NT 0x40000000 +#define VER_SERVER_NT 0x80000000 +#define VER_SUITE_SMALLBUSINESS 0x00000001 +#define VER_SUITE_ENTERPRISE 0x00000002 +#define VER_SUITE_BACKOFFICE 0x00000004 +#define VER_SUITE_COMMUNICATIONS 0x00000008 +#define VER_SUITE_TERMINAL 0x00000010 +#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 +#define VER_SUITE_EMBEDDEDNT 0x00000040 +#define VER_SUITE_DATACENTER 0x00000080 +#define VER_SUITE_SINGLEUSERTS 0x00000100 +#define VER_SUITE_PERSONAL 0x00000200 +#define VER_SUITE_BLADE 0x00000400 +#define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800 +#define VER_SUITE_SECURITY_APPLIANCE 0x00001000 +#define VER_SUITE_STORAGE_SERVER 0x00002000 +#define VER_SUITE_COMPUTE_SERVER 0x00004000 +#define VER_SUITE_WH_SERVER 0x00008000 +#define VER_SUITE_MULTIUSERTS 0x00020000 +#define PRODUCT_UNDEFINED 0x0 +#define PRODUCT_ULTIMATE 0x1 +#define PRODUCT_HOME_BASIC 0x2 +#define PRODUCT_HOME_PREMIUM 0x3 +#define PRODUCT_ENTERPRISE 0x4 +#define PRODUCT_HOME_BASIC_N 0x5 +#define PRODUCT_BUSINESS 0x6 +#define PRODUCT_STANDARD_SERVER 0x7 +#define PRODUCT_DATACENTER_SERVER 0x8 +#define PRODUCT_SMALLBUSINESS_SERVER 0x9 +#define PRODUCT_ENTERPRISE_SERVER 0xa +#define PRODUCT_STARTER 0xb +#define PRODUCT_DATACENTER_SERVER_CORE 0xc +#define PRODUCT_STANDARD_SERVER_CORE 0xd +#define PRODUCT_ENTERPRISE_SERVER_CORE 0xe +#define PRODUCT_ENTERPRISE_SERVER_IA64 0xf +#define PRODUCT_BUSINESS_N 0x10 +#define PRODUCT_WEB_SERVER 0x11 +#define PRODUCT_CLUSTER_SERVER 0x12 +#define PRODUCT_HOME_SERVER 0x13 +#define PRODUCT_STORAGE_EXPRESS_SERVER 0x14 +#define PRODUCT_STORAGE_STANDARD_SERVER 0x15 +#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x16 +#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x17 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x18 +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19 +#define PRODUCT_HOME_PREMIUM_N 0x1a +#define PRODUCT_ENTERPRISE_N 0x1b +#define PRODUCT_ULTIMATE_N 0x1c +#define PRODUCT_WEB_SERVER_CORE 0x1d +#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x1e +#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x1f +#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x20 +#define PRODUCT_SERVER_FOUNDATION 0x21 +#define PRODUCT_HOME_PREMIUM_SERVER 0x22 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x23 +#define PRODUCT_STANDARD_SERVER_V 0x24 +#define PRODUCT_DATACENTER_SERVER_V 0x25 +#define PRODUCT_SERVER_V 0x25 +#define PRODUCT_ENTERPRISE_SERVER_V 0x26 +#define PRODUCT_DATACENTER_SERVER_CORE_V 0x27 +#define PRODUCT_STANDARD_SERVER_CORE_V 0x28 +#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x29 +#define PRODUCT_HYPERV 0x2a +#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x2b +#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x2c +#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x2d +#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x2e +#define PRODUCT_STARTER_N 0x2f +#define PRODUCT_PROFESSIONAL 0x30 +#define PRODUCT_PROFESSIONAL_N 0x31 +#define PRODUCT_SB_SOLUTION_SERVER 0x32 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x33 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x34 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x35 +#define PRODUCT_SB_SOLUTION_SERVER_EM 0x36 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x37 +#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x38 +#define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x39 +#define PRODUCT_PROFESSIONAL_EMBEDDED 0x3A +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x3B +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x3C +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x3D +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x3E +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x3f +#define PRODUCT_CLUSTER_SERVER_V 0x40 +#define PRODUCT_EMBEDDED 0x41 +#define PRODUCT_STARTER_E 0x42 +#define PRODUCT_HOME_BASIC_E 0x43 +#define PRODUCT_HOME_PREMIUM_E 0x44 +#define PRODUCT_PROFESSIONAL_E 0x45 +#define PRODUCT_ENTERPRISE_E 0x46 +#define PRODUCT_ULTIMATE_E 0x47 +#define PRODUCT_ENTERPRISE_EVALUATION 0x48 +#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x4C +#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x4D +#define PRODUCT_STANDARD_EVALUATION_SERVER 0x4F +#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x50 +#define PRODUCT_ENTERPRISE_N_EVALUATION 0x54 +#define PRODUCT_EMBEDDED_AUTOMOTIVE 0x55 +#define PRODUCT_EMBEDDED_INDUSTRY_A 0x56 +#define PRODUCT_THINPC 0x57 +#define PRODUCT_EMBEDDED_A 0x58 +#define PRODUCT_EMBEDDED_INDUSTRY 0x59 +#define PRODUCT_EMBEDDED_E 0x5A +#define PRODUCT_EMBEDDED_INDUSTRY_E 0x5B +#define PRODUCT_EMBEDDED_INDUSTRY_A_E 0x5C +#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x5F +#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x60 +#define PRODUCT_CORE_ARM 0x61 +#define PRODUCT_CORE_N 0x62 +#define PRODUCT_CORE_COUNTRYSPECIFIC 0x63 +#define PRODUCT_CORE_SINGLELANGUAGE 0x64 +#define PRODUCT_CORE_LANGUAGESPECIFIC 0x64 +#define PRODUCT_CORE 0x65 +#define PRODUCT_PROFESSIONAL_WMC 0x67 +#define PRODUCT_MOBILE_CORE 0x68 +#define PRODUCT_EMBEDDED_INDUSTRY_EVAL 0x69 +#define PRODUCT_EMBEDDED_INDUSTRY_E_EVAL 0x6A +#define PRODUCT_EMBEDDED_EVAL 0x6B +#define PRODUCT_EMBEDDED_E_EVAL 0x6C +#define PRODUCT_NANO_SERVER 0x6D +#define PRODUCT_CLOUD_STORAGE_SERVER 0x6E +#define PRODUCT_CORE_CONNECTED 0x6F +#define PRODUCT_PROFESSIONAL_STUDENT 0x70 +#define PRODUCT_CORE_CONNECTED_N 0x71 +#define PRODUCT_PROFESSIONAL_STUDENT_N 0x72 +#define PRODUCT_CORE_CONNECTED_SINGLELANGUAGE 0x73 +#define PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC 0x74 +#define PRODUCT_CONNECTED_CAR 0x75 +#define PRODUCT_INDUSTRY_HANDHELD 0x76 +#define PRODUCT_PPI_PRO 0x77 +#define PRODUCT_ARM64_SERVER 0x78 +#define PRODUCT_EDUCATION 0x79 +#define PRODUCT_EDUCATION_N 0x7a +#define PRODUCT_IOTUAP 0x7B +#define PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER 0x7C +#define PRODUCT_ENTERPRISE_S 0x7D +#define PRODUCT_ENTERPRISE_S_N 0x7E +#define PRODUCT_PROFESSIONAL_S 0x7F +#define PRODUCT_PROFESSIONAL_S_N 0x80 +#define PRODUCT_ENTERPRISE_S_EVALUATION 0x81 +#define PRODUCT_ENTERPRISE_S_N_EVALUATION 0x82 +#define PRODUCT_MOBILE_ENTERPRISE 0x85 +#define PRODUCT_HOLOGRAPHIC 0x87 +#define PRODUCT_HOLOGRAPHIC_BUSINESS 0x88 +#define PRODUCT_PRO_SINGLE_LANGUAGE 0x8A +#define PRODUCT_PRO_CHINA 0x8B +#define PRODUCT_ENTERPRISE_SUBSCRIPTION 0x8C +#define PRODUCT_ENTERPRISE_SUBSCRIPTION_N 0x8D +#define PRODUCT_DATACENTER_NANO_SERVER 0x8F +#define PRODUCT_STANDARD_NANO_SERVER 0x90 +#define PRODUCT_DATACENTER_A_SERVER_CORE 0x91 +#define PRODUCT_STANDARD_A_SERVER_CORE 0x92 +#define PRODUCT_DATACENTER_WS_SERVER_CORE 0x93 +#define PRODUCT_STANDARD_WS_SERVER_CORE 0x94 +#define PRODUCT_UTILITY_VM 0x95 +#define PRODUCT_DATACENTER_EVALUATION_SERVER_CORE 0x9F +#define PRODUCT_STANDARD_EVALUATION_SERVER_CORE 0xA0 +#define PRODUCT_PRO_WORKSTATION 0xA1 +#define PRODUCT_PRO_WORKSTATION_N 0xA2 +#define PRODUCT_PRO_FOR_EDUCATION 0xA4 +#define PRODUCT_PRO_FOR_EDUCATION_N 0xA5 +#define PRODUCT_AZURE_SERVER_CORE 0xA8 +#define PRODUCT_AZURE_NANO_SERVER 0xA9 +#define PRODUCT_ENTERPRISEG 0xAB +#define PRODUCT_ENTERPRISEGN 0xAC +#define PRODUCT_SERVERRDSH 0xAF +#define PRODUCT_CLOUD 0xB2 +#define PRODUCT_CLOUDN 0xB3 +#define PRODUCT_HUBOS 0xB4 +#define PRODUCT_ONECOREUPDATEOS 0xB6 +#define PRODUCT_CLOUDE 0xB7 +#define PRODUCT_IOTOS 0xB9 +#define PRODUCT_CLOUDEN 0xBA +#define PRODUCT_IOTEDGEOS 0xBB +#define PRODUCT_IOTENTERPRISE 0xBC +#define PRODUCT_LITE 0xBD +#define PRODUCT_IOTENTERPRISES 0xBF +#define PRODUCT_XBOX_SYSTEMOS 0xC0 +#define PRODUCT_XBOX_NATIVEOS 0xC1 +#define PRODUCT_XBOX_GAMEOS 0xC2 +#define PRODUCT_XBOX_ERAOS 0xC3 +#define PRODUCT_XBOX_DURANGOHOSTOS 0xC4 +#define PRODUCT_XBOX_SCARLETTHOSTOS 0xC5 +#define PRODUCT_XBOX_KEYSTONE 0xC6 +#define PRODUCT_AZURE_SERVER_CLOUDHOST 0xC7 +#define PRODUCT_AZURE_SERVER_CLOUDMOS 0xC8 +#define PRODUCT_CLOUDEDITIONN 0xCA +#define PRODUCT_CLOUDEDITION 0xCB +#define PRODUCT_AZURESTACKHCI_SERVER_CORE 0x196 +#define PRODUCT_DATACENTER_SERVER_AZURE_EDITION 0x197 +#define PRODUCT_DATACENTER_SERVER_CORE_AZURE_EDITION 0x198 +#define PRODUCT_UNLICENSED 0xabcdabcd +#define LANG_NEUTRAL 0x00 +#define LANG_INVARIANT 0x7f +#define LANG_AFRIKAANS 0x36 +#define LANG_ALBANIAN 0x1c +#define LANG_ALSATIAN 0x84 +#define LANG_AMHARIC 0x5e +#define LANG_ARABIC 0x01 +#define LANG_ARMENIAN 0x2b +#define LANG_ASSAMESE 0x4d +#define LANG_AZERI 0x2c +#define LANG_AZERBAIJANI 0x2c +#define LANG_BANGLA 0x45 +#define LANG_BASHKIR 0x6d +#define LANG_BASQUE 0x2d +#define LANG_BELARUSIAN 0x23 +#define LANG_BENGALI 0x45 +#define LANG_BRETON 0x7e +#define LANG_BOSNIAN 0x1a +#define LANG_BOSNIAN_NEUTRAL 0x781a +#define LANG_BULGARIAN 0x02 +#define LANG_CATALAN 0x03 +#define LANG_CENTRAL_KURDISH 0x92 +#define LANG_CHEROKEE 0x5c +#define LANG_CHINESE 0x04 +#define LANG_CHINESE_SIMPLIFIED 0x04 +#define LANG_CHINESE_TRADITIONAL 0x7c04 +#define LANG_CORSICAN 0x83 +#define LANG_CROATIAN 0x1a +#define LANG_CZECH 0x05 +#define LANG_DANISH 0x06 +#define LANG_DARI 0x8c +#define LANG_DIVEHI 0x65 +#define LANG_DUTCH 0x13 +#define LANG_ENGLISH 0x09 +#define LANG_ESTONIAN 0x25 +#define LANG_FAEROESE 0x38 +#define LANG_FARSI 0x29 +#define LANG_FILIPINO 0x64 +#define LANG_FINNISH 0x0b +#define LANG_FRENCH 0x0c +#define LANG_FRISIAN 0x62 +#define LANG_FULAH 0x67 +#define LANG_GALICIAN 0x56 +#define LANG_GEORGIAN 0x37 +#define LANG_GERMAN 0x07 +#define LANG_GREEK 0x08 +#define LANG_GREENLANDIC 0x6f +#define LANG_GUJARATI 0x47 +#define LANG_HAUSA 0x68 +#define LANG_HAWAIIAN 0x75 +#define LANG_HEBREW 0x0d +#define LANG_HINDI 0x39 +#define LANG_HUNGARIAN 0x0e +#define LANG_ICELANDIC 0x0f +#define LANG_IGBO 0x70 +#define LANG_INDONESIAN 0x21 +#define LANG_INUKTITUT 0x5d +#define LANG_IRISH 0x3c +#define LANG_ITALIAN 0x10 +#define LANG_JAPANESE 0x11 +#define LANG_KANNADA 0x4b +#define LANG_KASHMIRI 0x60 +#define LANG_KAZAK 0x3f +#define LANG_KHMER 0x53 +#define LANG_KICHE 0x86 +#define LANG_KINYARWANDA 0x87 +#define LANG_KONKANI 0x57 +#define LANG_KOREAN 0x12 +#define LANG_KYRGYZ 0x40 +#define LANG_LAO 0x54 +#define LANG_LATVIAN 0x26 +#define LANG_LITHUANIAN 0x27 +#define LANG_LOWER_SORBIAN 0x2e +#define LANG_LUXEMBOURGISH 0x6e +#define LANG_MACEDONIAN 0x2f +#define LANG_MALAY 0x3e +#define LANG_MALAYALAM 0x4c +#define LANG_MALTESE 0x3a +#define LANG_MANIPURI 0x58 +#define LANG_MAORI 0x81 +#define LANG_MAPUDUNGUN 0x7a +#define LANG_MARATHI 0x4e +#define LANG_MOHAWK 0x7c +#define LANG_MONGOLIAN 0x50 +#define LANG_NEPALI 0x61 +#define LANG_NORWEGIAN 0x14 +#define LANG_OCCITAN 0x82 +#define LANG_ODIA 0x48 +#define LANG_ORIYA 0x48 +#define LANG_PASHTO 0x63 +#define LANG_PERSIAN 0x29 +#define LANG_POLISH 0x15 +#define LANG_PORTUGUESE 0x16 +#define LANG_PULAR 0x67 +#define LANG_PUNJABI 0x46 +#define LANG_QUECHUA 0x6b +#define LANG_ROMANIAN 0x18 +#define LANG_ROMANSH 0x17 +#define LANG_RUSSIAN 0x19 +#define LANG_SAKHA 0x85 +#define LANG_SAMI 0x3b +#define LANG_SANSKRIT 0x4f +#define LANG_SCOTTISH_GAELIC 0x91 +#define LANG_SERBIAN 0x1a +#define LANG_SERBIAN_NEUTRAL 0x7c1a +#define LANG_SINDHI 0x59 +#define LANG_SINHALESE 0x5b +#define LANG_SLOVAK 0x1b +#define LANG_SLOVENIAN 0x24 +#define LANG_SOTHO 0x6c +#define LANG_SPANISH 0x0a +#define LANG_SWAHILI 0x41 +#define LANG_SWEDISH 0x1d +#define LANG_SYRIAC 0x5a +#define LANG_TAJIK 0x28 +#define LANG_TAMAZIGHT 0x5f +#define LANG_TAMIL 0x49 +#define LANG_TATAR 0x44 +#define LANG_TELUGU 0x4a +#define LANG_THAI 0x1e +#define LANG_TIBETAN 0x51 +#define LANG_TIGRIGNA 0x73 +#define LANG_TIGRINYA 0x73 +#define LANG_TSWANA 0x32 +#define LANG_TURKISH 0x1f +#define LANG_TURKMEN 0x42 +#define LANG_UIGHUR 0x80 +#define LANG_UKRAINIAN 0x22 +#define LANG_UPPER_SORBIAN 0x2e +#define LANG_URDU 0x20 +#define LANG_UZBEK 0x43 +#define LANG_VALENCIAN 0x03 +#define LANG_VIETNAMESE 0x2a +#define LANG_WELSH 0x52 +#define LANG_WOLOF 0x88 +#define LANG_XHOSA 0x34 +#define LANG_YAKUT 0x85 +#define LANG_YI 0x78 +#define LANG_YORUBA 0x6a +#define LANG_ZULU 0x35 +#define SUBLANG_NEUTRAL 0x00 +#define SUBLANG_DEFAULT 0x01 +#define SUBLANG_SYS_DEFAULT 0x02 +#define SUBLANG_CUSTOM_DEFAULT 0x03 +#define SUBLANG_CUSTOM_UNSPECIFIED 0x04 +#define SUBLANG_UI_CUSTOM_DEFAULT 0x05 +#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01 +#define SUBLANG_ALBANIAN_ALBANIA 0x01 +#define SUBLANG_ALSATIAN_FRANCE 0x01 +#define SUBLANG_AMHARIC_ETHIOPIA 0x01 +#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +#define SUBLANG_ARABIC_IRAQ 0x02 +#define SUBLANG_ARABIC_EGYPT 0x03 +#define SUBLANG_ARABIC_LIBYA 0x04 +#define SUBLANG_ARABIC_ALGERIA 0x05 +#define SUBLANG_ARABIC_MOROCCO 0x06 +#define SUBLANG_ARABIC_TUNISIA 0x07 +#define SUBLANG_ARABIC_OMAN 0x08 +#define SUBLANG_ARABIC_YEMEN 0x09 +#define SUBLANG_ARABIC_SYRIA 0x0a +#define SUBLANG_ARABIC_JORDAN 0x0b +#define SUBLANG_ARABIC_LEBANON 0x0c +#define SUBLANG_ARABIC_KUWAIT 0x0d +#define SUBLANG_ARABIC_UAE 0x0e +#define SUBLANG_ARABIC_BAHRAIN 0x0f +#define SUBLANG_ARABIC_QATAR 0x10 +#define SUBLANG_ARMENIAN_ARMENIA 0x01 +#define SUBLANG_ASSAMESE_INDIA 0x01 +#define SUBLANG_AZERI_LATIN 0x01 +#define SUBLANG_AZERI_CYRILLIC 0x02 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02 +#define SUBLANG_BANGLA_INDIA 0x01 +#define SUBLANG_BANGLA_BANGLADESH 0x02 +#define SUBLANG_BASHKIR_RUSSIA 0x01 +#define SUBLANG_BASQUE_BASQUE 0x01 +#define SUBLANG_BELARUSIAN_BELARUS 0x01 +#define SUBLANG_BENGALI_INDIA 0x01 +#define SUBLANG_BENGALI_BANGLADESH 0x02 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08 +#define SUBLANG_BRETON_FRANCE 0x01 +#define SUBLANG_BULGARIAN_BULGARIA 0x01 +#define SUBLANG_CATALAN_CATALAN 0x01 +#define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01 +#define SUBLANG_CHEROKEE_CHEROKEE 0x01 +#define SUBLANG_CHINESE_TRADITIONAL 0x01 +#define SUBLANG_CHINESE_SIMPLIFIED 0x02 +#define SUBLANG_CHINESE_HONGKONG 0x03 +#define SUBLANG_CHINESE_SINGAPORE 0x04 +#define SUBLANG_CHINESE_MACAU 0x05 +#define SUBLANG_CORSICAN_FRANCE 0x01 +#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01 +#define SUBLANG_CROATIAN_CROATIA 0x01 +#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04 +#define SUBLANG_DANISH_DENMARK 0x01 +#define SUBLANG_DARI_AFGHANISTAN 0x01 +#define SUBLANG_DIVEHI_MALDIVES 0x01 +#define SUBLANG_DUTCH 0x01 +#define SUBLANG_DUTCH_BELGIAN 0x02 +#define SUBLANG_ENGLISH_US 0x01 +#define SUBLANG_ENGLISH_UK 0x02 +#define SUBLANG_ENGLISH_AUS 0x03 +#define SUBLANG_ENGLISH_CAN 0x04 +#define SUBLANG_ENGLISH_NZ 0x05 +#define SUBLANG_ENGLISH_IRELAND 0x06 +#define SUBLANG_ENGLISH_EIRE 0x06 +#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +#define SUBLANG_ENGLISH_JAMAICA 0x08 +#define SUBLANG_ENGLISH_CARIBBEAN 0x09 +#define SUBLANG_ENGLISH_BELIZE 0x0a +#define SUBLANG_ENGLISH_TRINIDAD 0x0b +#define SUBLANG_ENGLISH_ZIMBABWE 0x0c +#define SUBLANG_ENGLISH_PHILIPPINES 0x0d +#define SUBLANG_ENGLISH_INDIA 0x10 +#define SUBLANG_ENGLISH_MALAYSIA 0x11 +#define SUBLANG_ENGLISH_SINGAPORE 0x12 +#define SUBLANG_ESTONIAN_ESTONIA 0x01 +#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01 +#define SUBLANG_FILIPINO_PHILIPPINES 0x01 +#define SUBLANG_FINNISH_FINLAND 0x01 +#define SUBLANG_FRENCH 0x01 +#define SUBLANG_FRENCH_BELGIAN 0x02 +#define SUBLANG_FRENCH_CANADIAN 0x03 +#define SUBLANG_FRENCH_SWISS 0x04 +#define SUBLANG_FRENCH_LUXEMBOURG 0x05 +#define SUBLANG_FRENCH_MONACO 0x06 +#define SUBLANG_FRISIAN_NETHERLANDS 0x01 +#define SUBLANG_FULAH_SENEGAL 0x02 +#define SUBLANG_GALICIAN_GALICIAN 0x01 +#define SUBLANG_GEORGIAN_GEORGIA 0x01 +#define SUBLANG_GERMAN 0x01 +#define SUBLANG_GERMAN_SWISS 0x02 +#define SUBLANG_GERMAN_AUSTRIAN 0x03 +#define SUBLANG_GERMAN_LUXEMBOURG 0x04 +#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +#define SUBLANG_GREEK_GREECE 0x01 +#define SUBLANG_GREENLANDIC_GREENLAND 0x01 +#define SUBLANG_GUJARATI_INDIA 0x01 +#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01 +#define SUBLANG_HAUSA_NIGERIA SUBLANG_HAUSA_NIGERIA_LATIN +#define SUBLANG_HAWAIIAN_US 0x01 +#define SUBLANG_HEBREW_ISRAEL 0x01 +#define SUBLANG_HINDI_INDIA 0x01 +#define SUBLANG_HUNGARIAN_HUNGARY 0x01 +#define SUBLANG_ICELANDIC_ICELAND 0x01 +#define SUBLANG_IGBO_NIGERIA 0x01 +#define SUBLANG_INDONESIAN_INDONESIA 0x01 +#define SUBLANG_INUKTITUT_CANADA 0x01 +#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02 +#define SUBLANG_IRISH_IRELAND 0x02 +#define SUBLANG_ITALIAN 0x01 +#define SUBLANG_ITALIAN_SWISS 0x02 +#define SUBLANG_JAPANESE_JAPAN 0x01 +#define SUBLANG_KANNADA_INDIA 0x01 +#define SUBLANG_KASHMIRI_INDIA 0x02 +#define SUBLANG_KASHMIRI_SASIA 0x02 +#define SUBLANG_KAZAK_KAZAKHSTAN 0x01 +#define SUBLANG_KHMER_CAMBODIA 0x01 +#define SUBLANG_KICHE_GUATEMALA 0x01 +#define SUBLANG_KINYARWANDA_RWANDA 0x01 +#define SUBLANG_KONKANI_INDIA 0x01 +#define SUBLANG_KOREAN 0x01 +#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01 +#define SUBLANG_LAO_LAO 0x01 +#define SUBLANG_LAO_LAO_PDR SUBLANG_LAO_LAO +#define SUBLANG_LATVIAN_LATVIA 0x01 +#define SUBLANG_LITHUANIAN_LITHUANIA 0x01 +#define SUBLANG_LITHUANIAN 0x01 +#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02 +#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01 +#define SUBLANG_MACEDONIAN_MACEDONIA 0x01 +#define SUBLANG_MALAY_MALAYSIA 0x01 +#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +#define SUBLANG_MALAYALAM_INDIA 0x01 +#define SUBLANG_MALTESE_MALTA 0x01 +#define SUBLANG_MAORI_NEW_ZEALAND 0x01 +#define SUBLANG_MAPUDUNGUN_CHILE 0x01 +#define SUBLANG_MARATHI_INDIA 0x01 +#define SUBLANG_MOHAWK_MOHAWK 0x01 +#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01 +#define SUBLANG_MONGOLIAN_PRC 0x02 +#define SUBLANG_NEPALI_NEPAL 0x01 +#define SUBLANG_NEPALI_INDIA 0x02 +#define SUBLANG_NORWEGIAN_BOKMAL 0x01 +#define SUBLANG_NORWEGIAN_NYNORSK 0x02 +#define SUBLANG_OCCITAN_FRANCE 0x01 +#define SUBLANG_ODIA_INDIA 0x01 +#define SUBLANG_ORIYA_INDIA 0x01 +#define SUBLANG_PASHTO_AFGHANISTAN 0x01 +#define SUBLANG_PERSIAN_IRAN 0x01 +#define SUBLANG_POLISH_POLAND 0x01 +#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 +#define SUBLANG_PORTUGUESE_PORTUGAL 0x02 +#define SUBLANG_PORTUGUESE 0x02 +#define SUBLANG_PULAR_SENEGAL 0x02 +#define SUBLANG_PUNJABI_INDIA 0x01 +#define SUBLANG_PUNJABI_PAKISTAN 0x02 +#define SUBLANG_QUECHUA_BOLIVIA 0x01 +#define SUBLANG_QUECHUA_ECUADOR 0x02 +#define SUBLANG_QUECHUA_PERU 0x03 +#define SUBLANG_ROMANIAN_ROMANIA 0x01 +#define SUBLANG_ROMANSH_SWITZERLAND 0x01 +#define SUBLANG_RUSSIAN_RUSSIA 0x01 +#define SUBLANG_SAKHA_RUSSIA 0x01 +#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01 +#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02 +#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03 +#define SUBLANG_SAMI_LULE_NORWAY 0x04 +#define SUBLANG_SAMI_LULE_SWEDEN 0x05 +#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06 +#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07 +#define SUBLANG_SAMI_SKOLT_FINLAND 0x08 +#define SUBLANG_SAMI_INARI_FINLAND 0x09 +#define SUBLANG_SANSKRIT_INDIA 0x01 +#define SUBLANG_SCOTTISH_GAELIC 0x01 +#define SUBLANG_SERBIAN_LATIN 0x02 +#define SUBLANG_SERBIAN_CYRILLIC 0x03 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07 +#define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0b +#define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0c +#define SUBLANG_SERBIAN_SERBIA_LATIN 0x09 +#define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0a +#define SUBLANG_SERBIAN_CROATIA 0x01 +#define SUBLANG_SINDHI_INDIA 0x01 +#define SUBLANG_SINDHI_AFGHANISTAN 0x02 +#define SUBLANG_SINDHI_PAKISTAN 0x02 +#define SUBLANG_SINHALESE_SRI_LANKA 0x01 +#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01 +#define SUBLANG_SLOVAK_SLOVAKIA 0x01 +#define SUBLANG_SLOVENIAN_SLOVENIA 0x01 +#define SUBLANG_SPANISH 0x01 +#define SUBLANG_SPANISH_MEXICAN 0x02 +#define SUBLANG_SPANISH_MODERN 0x03 +#define SUBLANG_SPANISH_GUATEMALA 0x04 +#define SUBLANG_SPANISH_COSTA_RICA 0x05 +#define SUBLANG_SPANISH_PANAMA 0x06 +#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +#define SUBLANG_SPANISH_VENEZUELA 0x08 +#define SUBLANG_SPANISH_COLOMBIA 0x09 +#define SUBLANG_SPANISH_PERU 0x0a +#define SUBLANG_SPANISH_ARGENTINA 0x0b +#define SUBLANG_SPANISH_ECUADOR 0x0c +#define SUBLANG_SPANISH_CHILE 0x0d +#define SUBLANG_SPANISH_URUGUAY 0x0e +#define SUBLANG_SPANISH_PARAGUAY 0x0f +#define SUBLANG_SPANISH_BOLIVIA 0x10 +#define SUBLANG_SPANISH_EL_SALVADOR 0x11 +#define SUBLANG_SPANISH_HONDURAS 0x12 +#define SUBLANG_SPANISH_NICARAGUA 0x13 +#define SUBLANG_SPANISH_PUERTO_RICO 0x14 +#define SUBLANG_SPANISH_US 0x15 +#define SUBLANG_SWAHILI_KENYA 0x01 +#define SUBLANG_SWEDISH_SWEDEN 0x01 +#define SUBLANG_SWEDISH 0x01 +#define SUBLANG_SWEDISH_FINLAND 0x02 +#define SUBLANG_SYRIAC 0x01 +#define SUBLANG_SYRIAC_SYRIA SUBLANG_SYRIAC +#define SUBLANG_TAJIK_TAJIKISTAN 0x01 +#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 +#define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04 +#define SUBLANG_TAMIL_INDIA 0x01 +#define SUBLANG_TAMIL_SRI_LANKA 0x02 +#define SUBLANG_TATAR_RUSSIA 0x01 +#define SUBLANG_TELUGU_INDIA 0x01 +#define SUBLANG_THAI_THAILAND 0x01 +#define SUBLANG_TIBETAN_PRC 0x01 +#define SUBLANG_TIBETAN_BHUTAN 0x02 +#define SUBLANG_TIGRIGNA_ERITREA 0x02 +#define SUBLANG_TIGRINYA_ERITREA 0x02 +#define SUBLANG_TIGRINYA_ETHIOPIA 0x01 +#define SUBLANG_TSWANA_BOTSWANA 0x02 +#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01 +#define SUBLANG_TURKISH_TURKEY 0x01 +#define SUBLANG_TURKMEN_TURKMENISTAN 0x01 +#define SUBLANG_UIGHUR_PRC 0x01 +#define SUBLANG_UKRAINIAN_UKRAINE 0x01 +#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01 +#define SUBLANG_URDU_PAKISTAN 0x01 +#define SUBLANG_URDU_INDIA 0x02 +#define SUBLANG_UZBEK_LATIN 0x01 +#define SUBLANG_UZBEK_CYRILLIC 0x02 +#define SUBLANG_VALENCIAN_VALENCIA 0x02 +#define SUBLANG_VIETNAMESE_VIETNAM 0x01 +#define SUBLANG_WELSH_UNITED_KINGDOM 0x01 +#define SUBLANG_WOLOF_SENEGAL 0x01 +#define SUBLANG_YORUBA_NIGERIA 0x01 +#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01 +#define SUBLANG_YAKUT_RUSSIA 0x01 +#define SUBLANG_YI_PRC 0x01 +#define SUBLANG_ZULU_SOUTH_AFRICA 0x01 +#define SORT_DEFAULT 0x0 +#define SORT_INVARIANT_MATH 0x1 +#define SORT_JAPANESE_XJIS 0x0 +#define SORT_JAPANESE_UNICODE 0x1 +#define SORT_JAPANESE_RADICALSTROKE 0x4 +#define SORT_CHINESE_BIG5 0x0 +#define SORT_CHINESE_PRCP 0x0 +#define SORT_CHINESE_UNICODE 0x1 +#define SORT_CHINESE_PRC 0x2 +#define SORT_CHINESE_BOPOMOFO 0x3 +#define SORT_CHINESE_RADICALSTROKE 0x4 +#define SORT_KOREAN_KSC 0x0 +#define SORT_KOREAN_UNICODE 0x1 +#define SORT_GERMAN_PHONE_BOOK 0x1 +#define SORT_HUNGARIAN_DEFAULT 0x0 +#define SORT_HUNGARIAN_TECHNICAL 0x1 +#define SORT_GEORGIAN_TRADITIONAL 0x0 +#define SORT_GEORGIAN_MODERN 0x1 +#define MAKELANGID(p,s) ((((WORD)(s)) << 10) | (WORD)(p)) +#define PRIMARYLANGID(lgid) ((WORD)(lgid) & 0x3ff) +#define SUBLANGID(lgid) ((WORD)(lgid) >> 10) +#define NLS_VALID_LOCALE_MASK 0x000fffff +#define MAKELCID(lgid,srtid) ((DWORD)((((DWORD)((WORD)(srtid))) << 16) | ((DWORD)((WORD)(lgid))))) +#define MAKESORTLCID(lgid,srtid,ver) ((DWORD)((MAKELCID(lgid,srtid)) | (((DWORD)((WORD)(ver))) << 20))) +#define LANGIDFROMLCID(lcid) ((WORD)(lcid)) +#define SORTIDFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 16) & 0xf)) +#define SORTVERSIONFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 20) & 0xf)) +#define LOCALE_NAME_MAX_LENGTH 85 +#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)) +#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)) +#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT,SORT_DEFAULT)) +#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT,SORT_DEFAULT)) +#define LOCALE_NEUTRAL (MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)) +#define LOCALE_CUSTOM_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT)) +#define LOCALE_CUSTOM_UNSPECIFIED (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT)) +#define LOCALE_CUSTOM_UI_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT)) +#define LOCALE_INVARIANT (MAKELCID(MAKELANGID(LANG_INVARIANT,SUBLANG_NEUTRAL),SORT_DEFAULT)) +#define LOCALE_TRANSIENT_KEYBOARD1 0x2000 +#define LOCALE_TRANSIENT_KEYBOARD2 0x2400 +#define LOCALE_TRANSIENT_KEYBOARD3 0x2800 +#define LOCALE_TRANSIENT_KEYBOARD4 0x2c00 +#define LOCALE_UNASSIGNED_LCID LOCALE_CUSTOM_UNSPECIFIED +#define UNREFERENCED_PARAMETER(P) {(P) = (P);} +#define UNREFERENCED_LOCAL_VARIABLE(V) {(V) = (V);} +#define DBG_UNREFERENCED_PARAMETER(P) (P) +#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V) +#define DEFAULT_UNREACHABLE +#define STATUS_WAIT_0 ((DWORD)0x00000000) +#define STATUS_ABANDONED_WAIT_0 ((DWORD)0x00000080) +#define STATUS_USER_APC ((DWORD)0x000000C0) +#define STATUS_TIMEOUT ((DWORD)0x00000102) +#define STATUS_PENDING ((DWORD)0x00000103) +#define DBG_EXCEPTION_HANDLED ((DWORD)0x00010001) +#define DBG_CONTINUE ((DWORD)0x00010002) +#define STATUS_SEGMENT_NOTIFICATION ((DWORD)0x40000005) +#define STATUS_FATAL_APP_EXIT ((DWORD)0x40000015) +#define DBG_REPLY_LATER ((DWORD)0x40010001) +#define DBG_TERMINATE_THREAD ((DWORD)0x40010003) +#define DBG_TERMINATE_PROCESS ((DWORD)0x40010004) +#define DBG_CONTROL_C ((DWORD)0x40010005) +#define DBG_PRINTEXCEPTION_C ((DWORD)0x40010006) +#define DBG_RIPEXCEPTION ((DWORD)0x40010007) +#define DBG_CONTROL_BREAK ((DWORD)0x40010008) +#define DBG_COMMAND_EXCEPTION ((DWORD)0x40010009) +#define DBG_PRINTEXCEPTION_WIDE_C ((DWORD)0x4001000A) +#define STATUS_GUARD_PAGE_VIOLATION ((DWORD)0x80000001) +#define STATUS_DATATYPE_MISALIGNMENT ((DWORD)0x80000002) +#define STATUS_BREAKPOINT ((DWORD)0x80000003) +#define STATUS_SINGLE_STEP ((DWORD)0x80000004) +#define STATUS_LONGJUMP ((DWORD)0x80000026) +#define STATUS_UNWIND_CONSOLIDATE ((DWORD)0x80000029) +#define DBG_EXCEPTION_NOT_HANDLED ((DWORD)0x80010001) +#define STATUS_ACCESS_VIOLATION ((DWORD)0xC0000005) +#define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006) +#define STATUS_INVALID_HANDLE ((DWORD)0xC0000008) +#define STATUS_INVALID_PARAMETER ((DWORD)0xC000000D) +#define STATUS_NO_MEMORY ((DWORD)0xC0000017) +#define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001D) +#define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD)0xC0000025) +#define STATUS_INVALID_DISPOSITION ((DWORD)0xC0000026) +#define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008C) +#define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008D) +#define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008E) +#define STATUS_FLOAT_INEXACT_RESULT ((DWORD)0xC000008F) +#define STATUS_FLOAT_INVALID_OPERATION ((DWORD)0xC0000090) +#define STATUS_FLOAT_OVERFLOW ((DWORD)0xC0000091) +#define STATUS_FLOAT_STACK_CHECK ((DWORD)0xC0000092) +#define STATUS_FLOAT_UNDERFLOW ((DWORD)0xC0000093) +#define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD)0xC0000094) +#define STATUS_INTEGER_OVERFLOW ((DWORD)0xC0000095) +#define STATUS_PRIVILEGED_INSTRUCTION ((DWORD)0xC0000096) +#define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FD) +#define STATUS_DLL_NOT_FOUND ((DWORD)0xC0000135) +#define STATUS_ORDINAL_NOT_FOUND ((DWORD)0xC0000138) +#define STATUS_ENTRYPOINT_NOT_FOUND ((DWORD)0xC0000139) +#define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013A) +#define STATUS_DLL_INIT_FAILED ((DWORD)0xC0000142) +#define STATUS_CONTROL_STACK_VIOLATION ((DWORD)0xC00001B2) +#define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD)0xC00002B4) +#define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD)0xC00002B5) +#define STATUS_REG_NAT_CONSUMPTION ((DWORD)0xC00002C9) +#define STATUS_HEAP_CORRUPTION ((DWORD)0xC0000374) +#define STATUS_STACK_BUFFER_OVERRUN ((DWORD)0xC0000409) +#define STATUS_INVALID_CRUNTIME_PARAMETER ((DWORD)0xC0000417) +#define STATUS_ASSERTION_FAILURE ((DWORD)0xC0000420) +#define STATUS_ENCLAVE_VIOLATION ((DWORD)0xC00004A2) +#define STATUS_INTERRUPTED ((DWORD)0xC0000515) +#define STATUS_THREAD_NOT_RUNNING ((DWORD)0xC0000516) +#define STATUS_ALREADY_REGISTERED ((DWORD)0xC0000718) +#define STATUS_SXS_EARLY_DEACTIVATION ((DWORD)0xC015000F) +#define STATUS_SXS_INVALID_DEACTIVATION ((DWORD)0xC0150010) +#define MAXIMUM_WAIT_OBJECTS 64 +#define MAXIMUM_SUSPEND_COUNT MAXCHAR + typedef ULONG_PTR KSPIN_LOCK; + typedef KSPIN_LOCK *PKSPIN_LOCK; + typedef struct __attribute__ ((__aligned__ (16))) _M128A { + ULONGLONG Low; + LONGLONG High; + } M128A,*PM128A; + typedef struct __attribute__ ((__aligned__ (16))) _XSAVE_FORMAT { + WORD ControlWord; + WORD StatusWord; + BYTE TagWord; + BYTE Reserved1; + WORD ErrorOpcode; + DWORD ErrorOffset; + WORD ErrorSelector; + WORD Reserved2; + DWORD DataOffset; + WORD DataSelector; + WORD Reserved3; + DWORD MxCsr; + DWORD MxCsr_Mask; + M128A FloatRegisters[8]; + M128A XmmRegisters[16]; + BYTE Reserved4[96]; + } XSAVE_FORMAT,*PXSAVE_FORMAT; + typedef struct _XSAVE_CET_U_FORMAT { + DWORD64 Ia32CetUMsr; + DWORD64 Ia32Pl3SspMsr; + } XSAVE_CET_U_FORMAT, *PXSAVE_CET_U_FORMAT; + typedef struct __attribute__ ((__aligned__ (8))) _XSAVE_AREA_HEADER { + DWORD64 Mask; + DWORD64 Reserved[7]; + } XSAVE_AREA_HEADER,*PXSAVE_AREA_HEADER; + typedef struct __attribute__ ((__aligned__ (16))) _XSAVE_AREA { + XSAVE_FORMAT LegacyState; + XSAVE_AREA_HEADER Header; + } XSAVE_AREA,*PXSAVE_AREA; + typedef struct _XSTATE_CONTEXT { + DWORD64 Mask; + DWORD Length; + DWORD Reserved1; + PXSAVE_AREA Area; + PVOID Buffer; + } XSTATE_CONTEXT,*PXSTATE_CONTEXT; + typedef struct _KERNEL_CET_CONTEXT { + DWORD64 Ssp; + DWORD64 Rip; + WORD SegCs; + __extension__ union { + WORD AllFlags; + __extension__ struct { + WORD UseWrss : 1; + WORD PopShadowStackOne : 1; + WORD Unused : 14; + }; + }; + WORD Fill[2]; + } KERNEL_CET_CONTEXT, *PKERNEL_CET_CONTEXT; + typedef struct _SCOPE_TABLE_AMD64 { + DWORD Count; + struct { + DWORD BeginAddress; + DWORD EndAddress; + DWORD HandlerAddress; + DWORD JumpTarget; + } ScopeRecord[1]; + } SCOPE_TABLE_AMD64,*PSCOPE_TABLE_AMD64; +#define BitTest _bittest +#define BitTestAndComplement _bittestandcomplement +#define BitTestAndSet _bittestandset +#define BitTestAndReset _bittestandreset +#define BitScanForward _BitScanForward +#define BitScanReverse _BitScanReverse +#define BitScanForward64 _BitScanForward64 +#define BitScanReverse64 _BitScanReverse64 +#define InterlockedIncrement16 _InterlockedIncrement16 +#define InterlockedDecrement16 _InterlockedDecrement16 +#define InterlockedCompareExchange16 _InterlockedCompareExchange16 +#define InterlockedAnd _InterlockedAnd +#define InterlockedOr _InterlockedOr +#define InterlockedXor _InterlockedXor +#define InterlockedIncrement _InterlockedIncrement +#define InterlockedIncrementAcquire InterlockedIncrement +#define InterlockedIncrementRelease InterlockedIncrement +#define InterlockedDecrement _InterlockedDecrement +#define InterlockedDecrementAcquire InterlockedDecrement +#define InterlockedDecrementRelease InterlockedDecrement +#define InterlockedAdd _InterlockedAdd +#define InterlockedExchange _InterlockedExchange +#define InterlockedExchangeAdd _InterlockedExchangeAdd +#define InterlockedCompareExchange _InterlockedCompareExchange +#define InterlockedCompareExchangeAcquire InterlockedCompareExchange +#define InterlockedCompareExchangeRelease InterlockedCompareExchange +#define InterlockedAnd64 _InterlockedAnd64 +#define InterlockedAndAffinity InterlockedAnd64 +#define InterlockedOr64 _InterlockedOr64 +#define InterlockedOrAffinity InterlockedOr64 +#define InterlockedXor64 _InterlockedXor64 +#define InterlockedIncrement64 _InterlockedIncrement64 +#define InterlockedDecrement64 _InterlockedDecrement64 +#define InterlockedAdd64 _InterlockedAdd64 +#define InterlockedExchange64 _InterlockedExchange64 +#define InterlockedExchangeAcquire64 InterlockedExchange64 +#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 +#define InterlockedCompareExchange64 _InterlockedCompareExchange64 +#define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 +#define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 +#define InterlockedExchangePointer _InterlockedExchangePointer +#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer +#define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer +#define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer +#define YieldProcessor() __asm__ __volatile__("dmb ishst\n\tyield":::"memory") +#define MemoryBarrier() __asm__ __volatile__("dmb sy":::"memory") +#define PreFetchCacheLine(l,a) __prefetch((const void *) (a)) +#define PrefetchForWrite(p) __prefetch((const void *) (p)) +#define ReadForWriteAccess(p) (*(p)) +#define PF_TEMPORAL_LEVEL_1 0 +#define PF_TEMPORAL_LEVEL_2 1 +#define PF_TEMPORAL_LEVEL_3 2 +#define PF_NON_TEMPORAL_LEVEL_ALL 3 +#define EXCEPTION_READ_FAULT 0 +#define EXCEPTION_WRITE_FAULT 1 +#define EXCEPTION_EXECUTE_FAULT 8 +#define CONTEXT_ARM64 0x400000 +#define CONTEXT_CONTROL (CONTEXT_ARM64 | 0x00000001) +#define CONTEXT_INTEGER (CONTEXT_ARM64 | 0x00000002) +#define CONTEXT_FLOATING_POINT (CONTEXT_ARM64 | 0x00000004) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM64 | 0x00000008) +#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER) +#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) +#define EXCEPTION_READ_FAULT 0 +#define EXCEPTION_WRITE_FAULT 1 +#define EXCEPTION_EXECUTE_FAULT 8 +#define ARM64_MAX_BREAKPOINTS 8 +#define ARM64_MAX_WATCHPOINTS 2 + typedef union _NEON128 { + struct + { + ULONGLONG Low; + LONGLONG High; + } ; + double D[2]; + float S[4]; + WORD H[8]; + BYTE B[16]; + } NEON128, *PNEON128; + typedef struct __attribute__ ((__aligned__ (16))) _CONTEXT { + ULONG ContextFlags; + ULONG Cpsr; + union + { + struct + { + DWORD64 X0; + DWORD64 X1; + DWORD64 X2; + DWORD64 X3; + DWORD64 X4; + DWORD64 X5; + DWORD64 X6; + DWORD64 X7; + DWORD64 X8; + DWORD64 X9; + DWORD64 X10; + DWORD64 X11; + DWORD64 X12; + DWORD64 X13; + DWORD64 X14; + DWORD64 X15; + DWORD64 X16; + DWORD64 X17; + DWORD64 X18; + DWORD64 X19; + DWORD64 X20; + DWORD64 X21; + DWORD64 X22; + DWORD64 X23; + DWORD64 X24; + DWORD64 X25; + DWORD64 X26; + DWORD64 X27; + DWORD64 X28; + DWORD64 Fp; + DWORD64 Lr; + } ; + DWORD64 X[31]; + } ; + DWORD64 Sp; + DWORD64 Pc; + NEON128 V[32]; + DWORD Fpcr; + DWORD Fpsr; + DWORD Bcr[8]; + DWORD64 Bvr[8]; + DWORD Wcr[2]; + DWORD64 Wvr[2]; + } CONTEXT, *PCONTEXT; + typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; + typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context); +#define UNW_FLAG_NHANDLER 0x0 +#define UNW_FLAG_EHANDLER 0x1 +#define UNW_FLAG_UHANDLER 0x2 +#define UNWIND_HISTORY_TABLE_SIZE 12 + typedef struct _UNWIND_HISTORY_TABLE_ENTRY { + DWORD64 ImageBase; + PRUNTIME_FUNCTION FunctionEntry; + } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; + typedef struct _UNWIND_HISTORY_TABLE { + DWORD Count; + BYTE LocalHint; + BYTE GlobalHint; + BYTE Search; + BYTE Once; + DWORD64 LowAddress; + DWORD64 HighAddress; + UNWIND_HISTORY_TABLE_ENTRY Entry[12]; + } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; + struct _DISPATCHER_CONTEXT; + typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT; + typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT; + struct _DISPATCHER_CONTEXT { + ULONG_PTR ControlPc; + ULONG_PTR ImageBase; + PRUNTIME_FUNCTION FunctionEntry; + ULONG_PTR EstablisherFrame; + ULONG_PTR TargetPc; + PCONTEXT ContextRecord; + PEXCEPTION_ROUTINE LanguageHandler; + PVOID HandlerData; + PUNWIND_HISTORY_TABLE HistoryTable; + ULONG ScopeIndex; + BOOLEAN ControlPcIsUnwound; + PBYTE NonVolatileRegisters; + }; + typedef struct _KNONVOLATILE_CONTEXT_POINTERS { + PDWORD64 X19; + PDWORD64 X20; + PDWORD64 X21; + PDWORD64 X22; + PDWORD64 X23; + PDWORD64 X24; + PDWORD64 X25; + PDWORD64 X26; + PDWORD64 X27; + PDWORD64 X28; + PDWORD64 Fp; + PDWORD64 Lr; + PDWORD64 D8; + PDWORD64 D9; + PDWORD64 D10; + PDWORD64 D11; + PDWORD64 D12; + PDWORD64 D13; + PDWORD64 D14; + PDWORD64 D15; + } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; +#define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" +#define _LDT_ENTRY_DEFINED + typedef struct _LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; + union { + struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + } Bytes; + struct { + DWORD BaseMid : 8; + DWORD Type : 5; + DWORD Dpl : 2; + DWORD Pres : 1; + DWORD LimitHi : 4; + DWORD Sys : 1; + DWORD Reserved_0 : 1; + DWORD Default_Big : 1; + DWORD Granularity : 1; + DWORD BaseHi : 8; + } Bits; + } HighWord; + } LDT_ENTRY,*PLDT_ENTRY; +#define EXCEPTION_NONCONTINUABLE 0x1 +#define EXCEPTION_UNWINDING 0x2 +#define EXCEPTION_EXIT_UNWIND 0x4 +#define EXCEPTION_STACK_INVALID 0x8 +#define EXCEPTION_NESTED_CALL 0x10 +#define EXCEPTION_TARGET_UNWIND 0x20 +#define EXCEPTION_COLLIDED_UNWIND 0x40 +#define EXCEPTION_UNWIND 0x66 +#define IS_UNWINDING(f) ((f & EXCEPTION_UNWIND) != 0) +#define IS_DISPATCHING(f) ((f & EXCEPTION_UNWIND) == 0) +#define IS_TARGET_UNWIND(f) ((f & EXCEPTION_TARGET_UNWIND) != 0) +#define EXCEPTION_MAXIMUM_PARAMETERS 15 + typedef struct _EXCEPTION_RECORD { + DWORD ExceptionCode; + DWORD ExceptionFlags; + struct _EXCEPTION_RECORD *ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + ULONG_PTR ExceptionInformation[15]; + } EXCEPTION_RECORD; + typedef EXCEPTION_RECORD *PEXCEPTION_RECORD; + typedef struct _EXCEPTION_RECORD32 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD ExceptionRecord; + DWORD ExceptionAddress; + DWORD NumberParameters; + DWORD ExceptionInformation[15]; + } EXCEPTION_RECORD32,*PEXCEPTION_RECORD32; + typedef struct _EXCEPTION_RECORD64 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD64 ExceptionRecord; + DWORD64 ExceptionAddress; + DWORD NumberParameters; + DWORD __unusedAlignment; + DWORD64 ExceptionInformation[15]; + } EXCEPTION_RECORD64,*PEXCEPTION_RECORD64; + typedef struct _EXCEPTION_POINTERS { + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; + } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS; + typedef PVOID PACCESS_TOKEN; + typedef PVOID PSECURITY_DESCRIPTOR; + typedef PVOID PSID; + typedef PVOID PCLAIMS_BLOB; + typedef DWORD ACCESS_MASK; + typedef ACCESS_MASK *PACCESS_MASK; +#define DELETE (__MSABI_LONG(0x00010000)) +#define READ_CONTROL (__MSABI_LONG(0x00020000)) +#define WRITE_DAC (__MSABI_LONG(0x00040000)) +#define WRITE_OWNER (__MSABI_LONG(0x00080000)) +#define SYNCHRONIZE (__MSABI_LONG(0x00100000)) +#define STANDARD_RIGHTS_REQUIRED (__MSABI_LONG(0x000F0000)) +#define STANDARD_RIGHTS_READ (READ_CONTROL) +#define STANDARD_RIGHTS_WRITE (READ_CONTROL) +#define STANDARD_RIGHTS_EXECUTE (READ_CONTROL) +#define STANDARD_RIGHTS_ALL (__MSABI_LONG(0x001F0000)) +#define SPECIFIC_RIGHTS_ALL (__MSABI_LONG(0x0000FFFF)) +#define ACCESS_SYSTEM_SECURITY (__MSABI_LONG(0x01000000)) +#define MAXIMUM_ALLOWED (__MSABI_LONG(0x02000000)) +#define GENERIC_READ (__MSABI_LONG(0x80000000)) +#define GENERIC_WRITE (__MSABI_LONG(0x40000000)) +#define GENERIC_EXECUTE (__MSABI_LONG(0x20000000)) +#define GENERIC_ALL (__MSABI_LONG(0x10000000)) + typedef struct _GENERIC_MAPPING { + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; + } GENERIC_MAPPING; + typedef GENERIC_MAPPING *PGENERIC_MAPPING; +#pragma pack(push,4) + typedef struct _LUID_AND_ATTRIBUTES { + LUID Luid; + DWORD Attributes; + } LUID_AND_ATTRIBUTES,*PLUID_AND_ATTRIBUTES; + typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[1]; + typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; +#pragma pack(pop) +#define SID_IDENTIFIER_AUTHORITY_DEFINED + typedef struct _SID_IDENTIFIER_AUTHORITY { + BYTE Value[6]; + } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY; +#define SID_DEFINED + typedef struct _SID { + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; + DWORD SubAuthority[1]; + } SID,*PISID; +#define SID_REVISION (1) +#define SID_MAX_SUB_AUTHORITIES (15) +#define SID_RECOMMENDED_SUB_AUTHORITIES (1) +#define SECURITY_MAX_SID_SIZE (sizeof (SID) - sizeof (DWORD) + (SID_MAX_SUB_AUTHORITIES *sizeof (DWORD))) +#define SID_HASH_SIZE 32 + typedef enum _SID_NAME_USE { + SidTypeUser = 1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown,SidTypeComputer,SidTypeLabel,SidTypeLogonSession + } SID_NAME_USE,*PSID_NAME_USE; + typedef struct _SID_AND_ATTRIBUTES { + PSID Sid; + DWORD Attributes; + } SID_AND_ATTRIBUTES,*PSID_AND_ATTRIBUTES; + typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[1]; + typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY; + typedef ULONG_PTR SID_HASH_ENTRY, *PSID_HASH_ENTRY; + typedef struct _SID_AND_ATTRIBUTES_HASH { + DWORD SidCount; + PSID_AND_ATTRIBUTES SidAttr; + SID_HASH_ENTRY Hash[32]; + } SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH; +#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} +#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} +#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} +#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} +#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} +#define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9} +#define SECURITY_NULL_RID (__MSABI_LONG(0x00000000)) +#define SECURITY_WORLD_RID (__MSABI_LONG(0x00000000)) +#define SECURITY_LOCAL_RID (__MSABI_LONG(0x00000000)) +#define SECURITY_LOCAL_LOGON_RID (__MSABI_LONG(0x00000001)) +#define SECURITY_CREATOR_OWNER_RID (__MSABI_LONG(0x00000000)) +#define SECURITY_CREATOR_GROUP_RID (__MSABI_LONG(0x00000001)) +#define SECURITY_CREATOR_OWNER_SERVER_RID (__MSABI_LONG(0x00000002)) +#define SECURITY_CREATOR_GROUP_SERVER_RID (__MSABI_LONG(0x00000003)) +#define SECURITY_CREATOR_OWNER_RIGHTS_RID (__MSABI_LONG(0x00000004)) +#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} +#define SECURITY_DIALUP_RID (__MSABI_LONG(0x00000001)) +#define SECURITY_NETWORK_RID (__MSABI_LONG(0x00000002)) +#define SECURITY_BATCH_RID (__MSABI_LONG(0x00000003)) +#define SECURITY_INTERACTIVE_RID (__MSABI_LONG(0x00000004)) +#define SECURITY_LOGON_IDS_RID (__MSABI_LONG(0x00000005)) +#define SECURITY_LOGON_IDS_RID_COUNT (__MSABI_LONG(3)) +#define SECURITY_SERVICE_RID (__MSABI_LONG(0x00000006)) +#define SECURITY_ANONYMOUS_LOGON_RID (__MSABI_LONG(0x00000007)) +#define SECURITY_PROXY_RID (__MSABI_LONG(0x00000008)) +#define SECURITY_ENTERPRISE_CONTROLLERS_RID (__MSABI_LONG(0x00000009)) +#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID +#define SECURITY_PRINCIPAL_SELF_RID (__MSABI_LONG(0x0000000A)) +#define SECURITY_AUTHENTICATED_USER_RID (__MSABI_LONG(0x0000000B)) +#define SECURITY_RESTRICTED_CODE_RID (__MSABI_LONG(0x0000000C)) +#define SECURITY_TERMINAL_SERVER_RID (__MSABI_LONG(0x0000000D)) +#define SECURITY_REMOTE_LOGON_RID (__MSABI_LONG(0x0000000E)) +#define SECURITY_THIS_ORGANIZATION_RID (__MSABI_LONG(0x0000000F)) +#define SECURITY_IUSER_RID (__MSABI_LONG(0x00000011)) +#define SECURITY_LOCAL_SYSTEM_RID (__MSABI_LONG(0x00000012)) +#define SECURITY_LOCAL_SERVICE_RID (__MSABI_LONG(0x00000013)) +#define SECURITY_NETWORK_SERVICE_RID (__MSABI_LONG(0x00000014)) +#define SECURITY_NT_NON_UNIQUE (__MSABI_LONG(0x00000015)) +#define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT (__MSABI_LONG(3)) +#define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID (__MSABI_LONG(0x00000016)) +#define SECURITY_BUILTIN_DOMAIN_RID (__MSABI_LONG(0x00000020)) +#define SECURITY_WRITE_RESTRICTED_CODE_RID (__MSABI_LONG(0x00000021)) +#define SECURITY_PACKAGE_BASE_RID (__MSABI_LONG(0x00000040)) +#define SECURITY_PACKAGE_RID_COUNT (__MSABI_LONG(2)) +#define SECURITY_PACKAGE_NTLM_RID (__MSABI_LONG(0x0000000A)) +#define SECURITY_PACKAGE_SCHANNEL_RID (__MSABI_LONG(0x0000000E)) +#define SECURITY_PACKAGE_DIGEST_RID (__MSABI_LONG(0x00000015)) +#define SECURITY_CRED_TYPE_BASE_RID (__MSABI_LONG(0x00000041)) +#define SECURITY_CRED_TYPE_RID_COUNT (__MSABI_LONG(2)) +#define SECURITY_CRED_TYPE_THIS_ORG_CERT_RID (__MSABI_LONG(0x00000001)) +#define SECURITY_MIN_BASE_RID (__MSABI_LONG(0x00000050)) +#define SECURITY_SERVICE_ID_BASE_RID (__MSABI_LONG(0x00000050)) +#define SECURITY_SERVICE_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_RESERVED_ID_BASE_RID (__MSABI_LONG(0x00000051)) +#define SECURITY_APPPOOL_ID_BASE_RID (__MSABI_LONG(0x00000052)) +#define SECURITY_APPPOOL_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_VIRTUALSERVER_ID_BASE_RID (__MSABI_LONG(0x00000053)) +#define SECURITY_VIRTUALSERVER_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_USERMODEDRIVERHOST_ID_BASE_RID (__MSABI_LONG(0x00000054)) +#define SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID (__MSABI_LONG(0x00000055)) +#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_WMIHOST_ID_BASE_RID (__MSABI_LONG(0x00000056)) +#define SECURITY_WMIHOST_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_TASK_ID_BASE_RID (__MSABI_LONG(0x00000057)) +#define SECURITY_NFS_ID_BASE_RID (__MSABI_LONG(0x00000058)) +#define SECURITY_COM_ID_BASE_RID (__MSABI_LONG(0x00000059)) +#define SECURITY_WINDOW_MANAGER_BASE_RID (__MSABI_LONG(0x0000005a)) +#define SECURITY_RDV_GFX_BASE_RID (__MSABI_LONG(0x0000005b)) +#define SECURITY_DASHOST_ID_BASE_RID (__MSABI_LONG(0x0000005c)) +#define SECURITY_DASHOST_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_USERMANAGER_ID_BASE_RID (__MSABI_LONG(0x0000005d)) +#define SECURITY_USERMANAGER_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_WINRM_ID_BASE_RID (__MSABI_LONG(0x0000005e)) +#define SECURITY_WINRM_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_CCG_ID_BASE_RID (__MSABI_LONG(0x0000005f)) +#define SECURITY_UMFD_BASE_RID (__MSABI_LONG(0x00000060)) +#define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (__MSABI_LONG(6)) +#define SECURITY_MAX_BASE_RID (__MSABI_LONG(0x0000006f)) +#define SECURITY_MAX_ALWAYS_FILTERED (__MSABI_LONG(0x000003E7)) +#define SECURITY_MIN_NEVER_FILTERED (__MSABI_LONG(0x000003E8)) +#define SECURITY_OTHER_ORGANIZATION_RID (__MSABI_LONG(0x000003E8)) +#define SECURITY_WINDOWSMOBILE_ID_BASE_RID (__MSABI_LONG(0x00000070)) +#define SECURITY_INSTALLER_GROUP_CAPABILITY_BASE (0x20) +#define SECURITY_INSTALLER_GROUP_CAPABILITY_RID_COUNT (9) +#define SECURITY_INSTALLER_CAPABILITY_RID_COUNT (10) +#define SECURITY_LOCAL_ACCOUNT_RID (__MSABI_LONG(0x00000071)) +#define SECURITY_LOCAL_ACCOUNT_AND_ADMIN_RID (__MSABI_LONG(0x00000072)) +#define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED (__MSABI_LONG(0x000001f0)) +#define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS (__MSABI_LONG(0x000001f1)) +#define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS (__MSABI_LONG(0x000001f2)) +#define FOREST_USER_RID_MAX (__MSABI_LONG(0x000001F3)) +#define DOMAIN_USER_RID_ADMIN (__MSABI_LONG(0x000001F4)) +#define DOMAIN_USER_RID_GUEST (__MSABI_LONG(0x000001F5)) +#define DOMAIN_USER_RID_KRBTGT (__MSABI_LONG(0x000001F6)) +#define DOMAIN_USER_RID_DEFAULT_ACCOUNT (__MSABI_LONG(0x000001F7)) +#define DOMAIN_USER_RID_WDAG_ACCOUNT (__MSABI_LONG(0x000001F8)) +#define DOMAIN_USER_RID_MAX (__MSABI_LONG(0x000003E7)) +#define DOMAIN_GROUP_RID_ADMINS (__MSABI_LONG(0x00000200)) +#define DOMAIN_GROUP_RID_USERS (__MSABI_LONG(0x00000201)) +#define DOMAIN_GROUP_RID_GUESTS (__MSABI_LONG(0x00000202)) +#define DOMAIN_GROUP_RID_COMPUTERS (__MSABI_LONG(0x00000203)) +#define DOMAIN_GROUP_RID_CONTROLLERS (__MSABI_LONG(0x00000204)) +#define DOMAIN_GROUP_RID_CERT_ADMINS (__MSABI_LONG(0x00000205)) +#define DOMAIN_GROUP_RID_SCHEMA_ADMINS (__MSABI_LONG(0x00000206)) +#define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (__MSABI_LONG(0x00000207)) +#define DOMAIN_GROUP_RID_POLICY_ADMINS (__MSABI_LONG(0x00000208)) +#define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (__MSABI_LONG(0x00000209)) +#define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS (__MSABI_LONG(0x0000020a)) +#define DOMAIN_GROUP_RID_CDC_RESERVED (__MSABI_LONG(0x0000020c)) +#define DOMAIN_GROUP_RID_PROTECTED_USERS (__MSABI_LONG(0x0000020d)) +#define DOMAIN_GROUP_RID_KEY_ADMINS (__MSABI_LONG(0x0000020e)) +#define DOMAIN_GROUP_RID_ENTERPRISE_KEY_ADMINS (__MSABI_LONG(0x0000020f)) +#define DOMAIN_ALIAS_RID_ADMINS (__MSABI_LONG(0x00000220)) +#define DOMAIN_ALIAS_RID_USERS (__MSABI_LONG(0x00000221)) +#define DOMAIN_ALIAS_RID_GUESTS (__MSABI_LONG(0x00000222)) +#define DOMAIN_ALIAS_RID_POWER_USERS (__MSABI_LONG(0x00000223)) +#define DOMAIN_ALIAS_RID_ACCOUNT_OPS (__MSABI_LONG(0x00000224)) +#define DOMAIN_ALIAS_RID_SYSTEM_OPS (__MSABI_LONG(0x00000225)) +#define DOMAIN_ALIAS_RID_PRINT_OPS (__MSABI_LONG(0x00000226)) +#define DOMAIN_ALIAS_RID_BACKUP_OPS (__MSABI_LONG(0x00000227)) +#define DOMAIN_ALIAS_RID_REPLICATOR (__MSABI_LONG(0x00000228)) +#define DOMAIN_ALIAS_RID_RAS_SERVERS (__MSABI_LONG(0x00000229)) +#define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS (__MSABI_LONG(0x0000022A)) +#define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS (__MSABI_LONG(0x0000022B)) +#define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS (__MSABI_LONG(0x0000022C)) +#define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS (__MSABI_LONG(0x0000022D)) +#define DOMAIN_ALIAS_RID_MONITORING_USERS (__MSABI_LONG(0x0000022E)) +#define DOMAIN_ALIAS_RID_LOGGING_USERS (__MSABI_LONG(0x0000022F)) +#define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS (__MSABI_LONG(0x00000230)) +#define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS (__MSABI_LONG(0x00000231)) +#define DOMAIN_ALIAS_RID_DCOM_USERS (__MSABI_LONG(0x00000232)) +#define DOMAIN_ALIAS_RID_IUSERS (__MSABI_LONG(0x00000238)) +#define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS (__MSABI_LONG(0x00000239)) +#define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023B)) +#define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023C)) +#define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (__MSABI_LONG(0x0000023D)) +#define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP (__MSABI_LONG(0x0000023e)) +#define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS (__MSABI_LONG(0x0000023f)) +#define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS (__MSABI_LONG(0x00000240)) +#define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS (__MSABI_LONG(0x00000241)) +#define DOMAIN_ALIAS_RID_HYPER_V_ADMINS (__MSABI_LONG(0x00000242)) +#define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS (__MSABI_LONG(0x00000243)) +#define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS (__MSABI_LONG(0x00000244)) +#define DOMAIN_ALIAS_RID_DEFAULT_ACCOUNT (__MSABI_LONG(0x00000245)) +#define DOMAIN_ALIAS_RID_STORAGE_REPLICA_ADMINS (__MSABI_LONG(0x00000246)) +#define DOMAIN_ALIAS_RID_DEVICE_OWNERS (__MSABI_LONG(0x00000247)) +#define SECURITY_APP_PACKAGE_AUTHORITY {0, 0, 0, 0, 0, 15} +#define SECURITY_APP_PACKAGE_BASE_RID (__MSABI_LONG(0x00000002)) +#define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (__MSABI_LONG(2)) +#define SECURITY_APP_PACKAGE_RID_COUNT (__MSABI_LONG(8)) +#define SECURITY_CAPABILITY_BASE_RID (__MSABI_LONG(0x00000003)) +#define SECURITY_CAPABILITY_APP_RID (__MSABI_LONG(0x000000400)) +#define SECURITY_CAPABILITY_APP_SILO_RID (__MSABI_LONG(0x00010000)) +#define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (__MSABI_LONG(2)) +#define SECURITY_CAPABILITY_RID_COUNT (__MSABI_LONG(5)) +#define SECURITY_PARENT_PACKAGE_RID_COUNT (SECURITY_APP_PACKAGE_RID_COUNT) +#define SECURITY_CHILD_PACKAGE_RID_COUNT (__MSABI_LONG(12)) +#define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (__MSABI_LONG(0x00000001)) +#define SECURITY_BUILTIN_PACKAGE_ANY_RESTRICTED_PACKAGE (__MSABI_LONG(0x00000002)) +#define SECURITY_CAPABILITY_INTERNET_CLIENT (__MSABI_LONG(0x00000001)) +#define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (__MSABI_LONG(0x00000002)) +#define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (__MSABI_LONG(0x00000003)) +#define SECURITY_CAPABILITY_PICTURES_LIBRARY (__MSABI_LONG(0x00000004)) +#define SECURITY_CAPABILITY_VIDEOS_LIBRARY (__MSABI_LONG(0x00000005)) +#define SECURITY_CAPABILITY_MUSIC_LIBRARY (__MSABI_LONG(0x00000006)) +#define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (__MSABI_LONG(0x00000007)) +#define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (__MSABI_LONG(0x00000008)) +#define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (__MSABI_LONG(0x00000009)) +#define SECURITY_CAPABILITY_REMOVABLE_STORAGE (__MSABI_LONG(0x0000000a)) +#define SECURITY_CAPABILITY_APPOINTMENTS (__MSABI_LONG(0x0000000b)) +#define SECURITY_CAPABILITY_CONTACTS (__MSABI_LONG(0x0000000c)) +#define SECURITY_CAPABILITY_INTERNET_EXPLORER (__MSABI_LONG(0x00001000)) +#define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} +#define SECURITY_MANDATORY_UNTRUSTED_RID (__MSABI_LONG(0x00000000)) +#define SECURITY_MANDATORY_LOW_RID (__MSABI_LONG(0x00001000)) +#define SECURITY_MANDATORY_MEDIUM_RID (__MSABI_LONG(0x00002000)) +#define SECURITY_MANDATORY_MEDIUM_PLUS_RID (SECURITY_MANDATORY_MEDIUM_RID + 0x100) +#define SECURITY_MANDATORY_HIGH_RID (__MSABI_LONG(0x00003000)) +#define SECURITY_MANDATORY_SYSTEM_RID (__MSABI_LONG(0x00004000)) +#define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (__MSABI_LONG(0x00005000)) +#define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID +#define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000) +#define SECURITY_SCOPED_POLICY_ID_AUTHORITY {0, 0, 0, 0, 0, 17} +#define SECURITY_AUTHENTICATION_AUTHORITY {0, 0, 0, 0, 0, 18} +#define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (__MSABI_LONG(1)) +#define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (__MSABI_LONG(0x00000001)) +#define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (__MSABI_LONG(0x00000002)) +#define SECURITY_AUTHENTICATION_FRESH_KEY_AUTH_RID (__MSABI_LONG(0x00000003)) +#define SECURITY_AUTHENTICATION_KEY_TRUST_RID (__MSABI_LONG(0x00000004)) +#define SECURITY_AUTHENTICATION_KEY_PROPERTY_MFA_RID (__MSABI_LONG(0x00000005)) +#define SECURITY_AUTHENTICATION_KEY_PROPERTY_ATTESTATION_RID (__MSABI_LONG(0x00000006)) +#define SECURITY_PROCESS_TRUST_AUTHORITY {0,0,0,0,0,19} +#define SECURITY_PROCESS_TRUST_AUTHORITY_RID_COUNT (__MSABI_LONG(2)) +#define SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID (__MSABI_LONG(0x00000400)) +#define SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID (__MSABI_LONG(0x00000200)) +#define SECURITY_PROCESS_PROTECTION_TYPE_NONE_RID (__MSABI_LONG(0x00000000)) +#define SECURITY_PROCESS_PROTECTION_LEVEL_WINTCB_RID (__MSABI_LONG(0x00002000)) +#define SECURITY_PROCESS_PROTECTION_LEVEL_WINDOWS_RID (__MSABI_LONG(0x00001000)) +#define SECURITY_PROCESS_PROTECTION_LEVEL_APP_RID (__MSABI_LONG(0x00000800)) +#define SECURITY_PROCESS_PROTECTION_LEVEL_ANTIMALWARE_RID (__MSABI_LONG(0x00000600)) +#define SECURITY_PROCESS_PROTECTION_LEVEL_AUTHENTICODE_RID (__MSABI_LONG(0x00000400)) +#define SECURITY_PROCESS_PROTECTION_LEVEL_NONE_RID (__MSABI_LONG(0x00000000)) +#define SECURITY_TRUSTED_INSTALLER_RID1 956008885 +#define SECURITY_TRUSTED_INSTALLER_RID2 3418522649 +#define SECURITY_TRUSTED_INSTALLER_RID3 1831038044 +#define SECURITY_TRUSTED_INSTALLER_RID4 1853292631 +#define SECURITY_TRUSTED_INSTALLER_RID5 2271478464 + typedef enum { + WinNullSid = 0,WinWorldSid = 1,WinLocalSid = 2,WinCreatorOwnerSid = 3, + WinCreatorGroupSid = 4,WinCreatorOwnerServerSid = 5, + WinCreatorGroupServerSid = 6,WinNtAuthoritySid = 7,WinDialupSid = 8, + WinNetworkSid = 9,WinBatchSid = 10,WinInteractiveSid = 11, + WinServiceSid = 12,WinAnonymousSid = 13,WinProxySid = 14, + WinEnterpriseControllersSid = 15,WinSelfSid = 16, + WinAuthenticatedUserSid = 17,WinRestrictedCodeSid = 18, + WinTerminalServerSid = 19,WinRemoteLogonIdSid = 20,WinLogonIdsSid = 21, + WinLocalSystemSid = 22,WinLocalServiceSid = 23,WinNetworkServiceSid = 24, + WinBuiltinDomainSid = 25,WinBuiltinAdministratorsSid = 26, + WinBuiltinUsersSid = 27,WinBuiltinGuestsSid = 28, + WinBuiltinPowerUsersSid = 29,WinBuiltinAccountOperatorsSid = 30, + WinBuiltinSystemOperatorsSid = 31,WinBuiltinPrintOperatorsSid = 32, + WinBuiltinBackupOperatorsSid = 33,WinBuiltinReplicatorSid = 34, + WinBuiltinPreWindows2000CompatibleAccessSid = 35, + WinBuiltinRemoteDesktopUsersSid = 36, + WinBuiltinNetworkConfigurationOperatorsSid = 37, + WinAccountAdministratorSid = 38,WinAccountGuestSid = 39, + WinAccountKrbtgtSid = 40,WinAccountDomainAdminsSid = 41, + WinAccountDomainUsersSid = 42,WinAccountDomainGuestsSid = 43, + WinAccountComputersSid = 44,WinAccountControllersSid = 45, + WinAccountCertAdminsSid = 46,WinAccountSchemaAdminsSid = 47, + WinAccountEnterpriseAdminsSid = 48,WinAccountPolicyAdminsSid = 49, + WinAccountRasAndIasServersSid = 50,WinNTLMAuthenticationSid = 51, + WinDigestAuthenticationSid = 52,WinSChannelAuthenticationSid = 53, + WinThisOrganizationSid = 54,WinOtherOrganizationSid = 55, + WinBuiltinIncomingForestTrustBuildersSid = 56, + WinBuiltinPerfMonitoringUsersSid = 57,WinBuiltinPerfLoggingUsersSid = 58, + WinBuiltinAuthorizationAccessSid = 59, + WinBuiltinTerminalServerLicenseServersSid = 60, + WinBuiltinDCOMUsersSid = 61,WinBuiltinIUsersSid = 62, + WinIUserSid = 63, WinBuiltinCryptoOperatorsSid = 64, + WinUntrustedLabelSid = 65, WinLowLabelSid = 66, WinMediumLabelSid = 67, + WinHighLabelSid = 68, WinSystemLabelSid = 69, WinWriteRestrictedCodeSid = 70, + WinCreatorOwnerRightsSid = 71, WinCacheablePrincipalsGroupSid = 72, + WinNonCacheablePrincipalsGroupSid = 73, WinEnterpriseReadonlyControllersSid = 74, + WinAccountReadonlyControllersSid = 75, WinBuiltinEventLogReadersGroup = 76, + WinNewEnterpriseReadonlyControllersSid = 77, WinBuiltinCertSvcDComAccessGroup = 78, + WinMediumPlusLabelSid = 79, WinLocalLogonSid = 80, WinConsoleLogonSid = 81, + WinThisOrganizationCertificateSid = 82, WinApplicationPackageAuthoritySid = 83, + WinBuiltinAnyPackageSid = 84, WinCapabilityInternetClientSid = 85, + WinCapabilityInternetClientServerSid = 86, + WinCapabilityPrivateNetworkClientServerSid = 87, + WinCapabilityPicturesLibrarySid = 88, WinCapabilityVideosLibrarySid = 89, + WinCapabilityMusicLibrarySid = 90, WinCapabilityDocumentsLibrarySid = 91, + WinCapabilitySharedUserCertificatesSid = 92, WinCapabilityEnterpriseAuthenticationSid = 93, + WinCapabilityRemovableStorageSid = 94, WinBuiltinRDSRemoteAccessServersSid = 95, + WinBuiltinRDSEndpointServersSid = 96, WinBuiltinRDSManagementServersSid = 97, + WinUserModeDriversSid = 98, WinBuiltinHyperVAdminsSid = 99, + WinAccountCloneableControllersSid = 100, + WinBuiltinAccessControlAssistanceOperatorsSid = 101, + WinBuiltinRemoteManagementUsersSid = 102, WinAuthenticationAuthorityAssertedSid = 103, + WinAuthenticationServiceAssertedSid = 104, + WinLocalAccountSid = 105, + WinLocalAccountAndAdministratorSid = 106, + WinAccountProtectedUsersSid = 107, + WinCapabilityAppointmentsSid = 108, + WinCapabilityContactsSid = 109, + WinAccountDefaultSystemManagedSid = 110, + WinBuiltinDefaultSystemManagedGroupSid = 111, + WinBuiltinStorageReplicaAdminsSid = 112, + WinAccountKeyAdminsSid = 113, + WinAccountEnterpriseKeyAdminsSid = 114, + WinAuthenticationKeyTrustSid = 115, + WinAuthenticationKeyPropertyMFASid = 116, + WinAuthenticationKeyPropertyAttestationSid = 117, + WinAuthenticationFreshKeyAuthSid = 118, + WinBuiltinDeviceOwnersSid = 119 +} WELL_KNOWN_SID_TYPE; +#define SYSTEM_LUID { 0x3e7, 0x0 } +#define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 } +#define LOCALSERVICE_LUID { 0x3e5, 0x0 } +#define NETWORKSERVICE_LUID { 0x3e4, 0x0 } +#define IUSER_LUID { 0x3e3, 0x0 } +#define PROTECTED_TO_SYSTEM_LUID { 0x3e2, 0x0 } +#define SE_GROUP_MANDATORY (__MSABI_LONG(0x00000001)) +#define SE_GROUP_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000002)) +#define SE_GROUP_ENABLED (__MSABI_LONG(0x00000004)) +#define SE_GROUP_OWNER (__MSABI_LONG(0x00000008)) +#define SE_GROUP_USE_FOR_DENY_ONLY (__MSABI_LONG(0x00000010)) +#define SE_GROUP_INTEGRITY (__MSABI_LONG(0x00000020)) +#define SE_GROUP_INTEGRITY_ENABLED (__MSABI_LONG(0x00000040)) +#define SE_GROUP_LOGON_ID (__MSABI_LONG(0xC0000000)) +#define SE_GROUP_RESOURCE (__MSABI_LONG(0x20000000)) +#define SE_GROUP_VALID_ATTRIBUTES (SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED) +#define ACL_REVISION (2) +#define ACL_REVISION_DS (4) +#define ACL_REVISION1 (1) +#define MIN_ACL_REVISION ACL_REVISION2 +#define ACL_REVISION2 (2) +#define ACL_REVISION3 (3) +#define ACL_REVISION4 (4) +#define MAX_ACL_REVISION ACL_REVISION4 + typedef struct _ACL { + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; + } ACL; + typedef ACL *PACL; + typedef struct _ACE_HEADER { + BYTE AceType; + BYTE AceFlags; + WORD AceSize; + } ACE_HEADER; + typedef ACE_HEADER *PACE_HEADER; +#define ACCESS_MIN_MS_ACE_TYPE (0x0) +#define ACCESS_ALLOWED_ACE_TYPE (0x0) +#define ACCESS_DENIED_ACE_TYPE (0x1) +#define SYSTEM_AUDIT_ACE_TYPE (0x2) +#define SYSTEM_ALARM_ACE_TYPE (0x3) +#define ACCESS_MAX_MS_V2_ACE_TYPE (0x3) +#define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4) +#define ACCESS_MAX_MS_V3_ACE_TYPE (0x4) +#define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5) +#define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5) +#define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6) +#define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7) +#define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8) +#define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8) +#define ACCESS_MAX_MS_V4_ACE_TYPE (0x8) +#define ACCESS_MAX_MS_ACE_TYPE (0x8) +#define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9) +#define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA) +#define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB) +#define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC) +#define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD) +#define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE) +#define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF) +#define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10) +#define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11) +#define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE (0x12) +#define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE (0x13) +#define SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE (0x14) +#define SYSTEM_ACCESS_FILTER_ACE_TYPE (0x15) +#define ACCESS_MAX_MS_V5_ACE_TYPE (0x15) +#define OBJECT_INHERIT_ACE (0x1) +#define CONTAINER_INHERIT_ACE (0x2) +#define NO_PROPAGATE_INHERIT_ACE (0x4) +#define INHERIT_ONLY_ACE (0x8) +#define INHERITED_ACE (0x10) +#define VALID_INHERIT_FLAGS (0x1F) +#define CRITICAL_ACE_FLAG (0x20) +#define SUCCESSFUL_ACCESS_ACE_FLAG (0x40) +#define FAILED_ACCESS_ACE_FLAG (0x80) +#define TRUST_PROTECTED_FILTER_ACE_FLAG (0x40) + typedef struct _ACCESS_ALLOWED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } ACCESS_ALLOWED_ACE; + typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE; + typedef struct _ACCESS_DENIED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } ACCESS_DENIED_ACE; + typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE; + typedef struct _SYSTEM_AUDIT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_AUDIT_ACE; + typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; + typedef struct _SYSTEM_ALARM_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_ALARM_ACE; + typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE; + typedef struct _SYSTEM_RESOURCE_ATTRIBUTE_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_RESOURCE_ATTRIBUTE_ACE,*PSYSTEM_RESOURCE_ATTRIBUTE_ACE; + typedef struct _SYSTEM_SCOPED_POLICY_ID_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_SCOPED_POLICY_ID_ACE,*PSYSTEM_SCOPED_POLICY_ID_ACE; + typedef struct _SYSTEM_MANDATORY_LABEL_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE; + typedef struct _SYSTEM_PROCESS_TRUST_LABEL_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_PROCESS_TRUST_LABEL_ACE, *PSYSTEM_PROCESS_TRUST_LABEL_ACE; + typedef struct _SYSTEM_ACCESS_FILTER_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_ACCESS_FILTER_ACE, *PSYSTEM_ACCESS_FILTER_ACE; +#define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1 +#define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2 +#define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4 +#define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP | SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP) +#define SYSTEM_PROCESS_TRUST_LABEL_VALID_MASK 0x00ffffff +#define SYSTEM_PROCESS_TRUST_NOCONSTRAINT_MASK 0xffffffff +#define SYSTEM_ACCESS_FILTER_VALID_MASK 0x00ffffff +#define SYSTEM_ACCESS_FILTER_NOCONSTRAINT_MASK 0xffffffff + typedef struct _ACCESS_ALLOWED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; + typedef struct _ACCESS_DENIED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; + typedef struct _SYSTEM_AUDIT_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; + typedef struct _SYSTEM_ALARM_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; + typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } ACCESS_ALLOWED_CALLBACK_ACE,*PACCESS_ALLOWED_CALLBACK_ACE; + typedef struct _ACCESS_DENIED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } ACCESS_DENIED_CALLBACK_ACE,*PACCESS_DENIED_CALLBACK_ACE; + typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_AUDIT_CALLBACK_ACE,*PSYSTEM_AUDIT_CALLBACK_ACE; + typedef struct _SYSTEM_ALARM_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; + } SYSTEM_ALARM_CALLBACK_ACE,*PSYSTEM_ALARM_CALLBACK_ACE; + typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE,*PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; + typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } ACCESS_DENIED_CALLBACK_OBJECT_ACE,*PACCESS_DENIED_CALLBACK_OBJECT_ACE; + typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE,*PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; + typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; + } SYSTEM_ALARM_CALLBACK_OBJECT_ACE,*PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; +#define ACE_OBJECT_TYPE_PRESENT 0x1 +#define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2 + typedef enum _ACL_INFORMATION_CLASS { + AclRevisionInformation = 1,AclSizeInformation + } ACL_INFORMATION_CLASS; + typedef struct _ACL_REVISION_INFORMATION { + DWORD AclRevision; + } ACL_REVISION_INFORMATION; + typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION; + typedef struct _ACL_SIZE_INFORMATION { + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; + } ACL_SIZE_INFORMATION; + typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION; +#define SECURITY_DESCRIPTOR_REVISION (1) +#define SECURITY_DESCRIPTOR_REVISION1 (1) +#define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR)) + typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL; +#define SE_OWNER_DEFAULTED (0x0001) +#define SE_GROUP_DEFAULTED (0x0002) +#define SE_DACL_PRESENT (0x0004) +#define SE_DACL_DEFAULTED (0x0008) +#define SE_SACL_PRESENT (0x0010) +#define SE_SACL_DEFAULTED (0x0020) +#define SE_DACL_AUTO_INHERIT_REQ (0x0100) +#define SE_SACL_AUTO_INHERIT_REQ (0x0200) +#define SE_DACL_AUTO_INHERITED (0x0400) +#define SE_SACL_AUTO_INHERITED (0x0800) +#define SE_DACL_PROTECTED (0x1000) +#define SE_SACL_PROTECTED (0x2000) +#define SE_RM_CONTROL_VALID (0x4000) +#define SE_SELF_RELATIVE (0x8000) + typedef struct _SECURITY_DESCRIPTOR_RELATIVE { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + DWORD Owner; + DWORD Group; + DWORD Sacl; + DWORD Dacl; + } SECURITY_DESCRIPTOR_RELATIVE,*PISECURITY_DESCRIPTOR_RELATIVE; + typedef struct _SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; + } SECURITY_DESCRIPTOR,*PISECURITY_DESCRIPTOR; + typedef struct _SECURITY_OBJECT_AI_PARAMS { + DWORD Size; + DWORD ConstraintMask; + } SECURITY_OBJECT_AI_PARAMS, *PSECURITY_OBJECT_AI_PARAMS; + typedef struct _OBJECT_TYPE_LIST { + WORD Level; + WORD Sbz; + GUID *ObjectType; + } OBJECT_TYPE_LIST,*POBJECT_TYPE_LIST; +#define ACCESS_OBJECT_GUID 0 +#define ACCESS_PROPERTY_SET_GUID 1 +#define ACCESS_PROPERTY_GUID 2 +#define ACCESS_MAX_LEVEL 4 + typedef enum _AUDIT_EVENT_TYPE { + AuditEventObjectAccess,AuditEventDirectoryServiceAccess + } AUDIT_EVENT_TYPE,*PAUDIT_EVENT_TYPE; +#define AUDIT_ALLOW_NO_PRIVILEGE 0x1 +#define ACCESS_DS_SOURCE_A "DS" +#define ACCESS_DS_SOURCE_W L"DS" +#define ACCESS_DS_OBJECT_TYPE_NAME_A "Directory Service Object" +#define ACCESS_DS_OBJECT_TYPE_NAME_W L"Directory Service Object" +#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000001)) +#define SE_PRIVILEGE_ENABLED (__MSABI_LONG(0x00000002)) +#define SE_PRIVILEGE_REMOVED (0X00000004L) +#define SE_PRIVILEGE_USED_FOR_ACCESS (__MSABI_LONG(0x80000000)) +#define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS) +#define PRIVILEGE_SET_ALL_NECESSARY (1) + typedef struct _PRIVILEGE_SET { + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES Privilege[1]; + } PRIVILEGE_SET,*PPRIVILEGE_SET; +#define ACCESS_REASON_TYPE_MASK 0x00ff0000 +#define ACCESS_REASON_DATA_MASK 0x0000ffff +#define ACCESS_REASON_STAGING_MASK 0x80000000 +#define ACCESS_REASON_EXDATA_MASK 0x7f000000 + typedef enum _ACCESS_REASON_TYPE { + AccessReasonNone = 0x00000000, + AccessReasonAllowedAce = 0x00010000, + AccessReasonDeniedAce = 0x00020000, + AccessReasonAllowedParentAce = 0x00030000, + AccessReasonDeniedParentAce = 0x00040000, + AccessReasonNotGrantedByCape = 0x00050000, + AccessReasonNotGrantedByParentCape = 0x00060000, + AccessReasonNotGrantedToAppContainer = 0x00070000, + AccessReasonMissingPrivilege = 0x00100000, + AccessReasonFromPrivilege = 0x00200000, + AccessReasonIntegrityLevel = 0x00300000, + AccessReasonOwnership = 0x00400000, + AccessReasonNullDacl = 0x00500000, + AccessReasonEmptyDacl = 0x00600000, + AccessReasonNoSD = 0x00700000, + AccessReasonNoGrant = 0x00800000, + AccessReasonTrustLabel = 0x00900000, + AccessReasonFilterAce = 0x00a00000 + } ACCESS_REASON_TYPE; + typedef DWORD ACCESS_REASON; + typedef struct _ACCESS_REASONS { + ACCESS_REASON Data[32]; + } ACCESS_REASONS,*PACCESS_REASONS; +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_ACCESS_FILTER_ACE 0x00000004 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000007 +#define SE_ACCESS_CHECK_FLAG_NO_LEARNING_MODE_LOGGING 0x00000008 +#define SE_ACCESS_CHECK_VALID_FLAGS 0x00000008 + typedef struct _SE_SECURITY_DESCRIPTOR { + DWORD Size; + DWORD Flags; + PSECURITY_DESCRIPTOR SecurityDescriptor; + } SE_SECURITY_DESCRIPTOR,*PSE_SECURITY_DESCRIPTOR; + typedef struct _SE_ACCESS_REQUEST { + DWORD Size; + PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; + ACCESS_MASK DesiredAccess; + ACCESS_MASK PreviouslyGrantedAccess; + PSID PrincipalSelfSid; + PGENERIC_MAPPING GenericMapping; + DWORD ObjectTypeListCount; + POBJECT_TYPE_LIST ObjectTypeList; + } SE_ACCESS_REQUEST,*PSE_ACCESS_REQUEST; + typedef struct _SE_ACCESS_REPLY { + DWORD Size; + DWORD ResultListCount; + PACCESS_MASK GrantedAccess; + PDWORD AccessStatus; + PACCESS_REASONS AccessReason; + PPRIVILEGE_SET *Privileges; + } SE_ACCESS_REPLY,*PSE_ACCESS_REPLY; +#define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") +#define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") +#define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") +#define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") +#define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") +#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") +#define SE_TCB_NAME TEXT("SeTcbPrivilege") +#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") +#define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") +#define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") +#define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") +#define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") +#define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") +#define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") +#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") +#define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") +#define SE_BACKUP_NAME TEXT("SeBackupPrivilege") +#define SE_RESTORE_NAME TEXT("SeRestorePrivilege") +#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") +#define SE_DEBUG_NAME TEXT("SeDebugPrivilege") +#define SE_AUDIT_NAME TEXT("SeAuditPrivilege") +#define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") +#define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") +#define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") +#define SE_UNDOCK_NAME TEXT("SeUndockPrivilege") +#define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege") +#define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") +#define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") +#define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") +#define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") +#define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege") +#define SE_RELABEL_NAME TEXT("SeRelabelPrivilege") +#define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege") +#define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") +#define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege") +#define SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME TEXT("SeDelegateSessionUserImpersonatePrivilege") +#define SE_ACTIVATE_AS_USER_CAPABILITY L"activateAsUser" +#define SE_CONSTRAINED_IMPERSONATION_CAPABILITY L"constrainedImpersonation" +#define SE_SESSION_IMPERSONATION_CAPABILITY L"sessionImpersonation" +#define SE_MUMA_CAPABILITY L"muma" +#define SE_DEVELOPMENT_MODE_NETWORK_CAPABILITY L"developmentModeNetwork" +#define SE_LEARNING_MODE_LOGGING_CAPABILITY L"learningModeLogging" +#define SE_PERMISSIVE_LEARNING_MODE_CAPABILITY L"permissiveLearningMode" +#define SE_APP_SILO_VOLUME_ROOT_MINIMAL_CAPABILITY L"isolatedWin32-volumeRootMinimal" +#define SE_APP_SILO_PROFILES_ROOT_MINIMAL_CAPABILITY L"isolatedWin32-profilesRootMinimal" +#define SE_APP_SILO_USER_PROFILE_MINIMAL_CAPABILITY L"isolatedWin32-userProfileMinimal" +#define SE_APP_SILO_PRINT_CAPABILITY L"isolatedWin32-print" + typedef enum _SECURITY_IMPERSONATION_LEVEL { + SecurityAnonymous,SecurityIdentification,SecurityImpersonation,SecurityDelegation + } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; +#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation +#define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous +#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation +#define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL)) +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define TOKEN_ADJUST_SESSIONID (0x0100) +#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) +#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT) +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) +#define TOKEN_TRUST_CONSTRAINT_MASK (STANDARD_RIGHTS_READ | TOKEN_QUERY | TOKEN_QUERY_SOURCE) + typedef enum _TOKEN_TYPE { + TokenPrimary = 1,TokenImpersonation + } TOKEN_TYPE; + typedef TOKEN_TYPE *PTOKEN_TYPE; + typedef enum _TOKEN_ELEVATION_TYPE { + TokenElevationTypeDefault = 1, + TokenElevationTypeFull, + TokenElevationTypeLimited + } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; + typedef enum _TOKEN_INFORMATION_CLASS { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, + TokenAuditPolicy, + TokenOrigin, + TokenElevationType, + TokenLinkedToken, + TokenElevation, + TokenHasRestrictions, + TokenAccessInformation, + TokenVirtualizationAllowed, + TokenVirtualizationEnabled, + TokenIntegrityLevel, + TokenUIAccess, + TokenMandatoryPolicy, + TokenLogonSid, + TokenIsAppContainer, + TokenCapabilities, + TokenAppContainerSid, + TokenAppContainerNumber, + TokenUserClaimAttributes, + TokenDeviceClaimAttributes, + TokenRestrictedUserClaimAttributes, + TokenRestrictedDeviceClaimAttributes, + TokenDeviceGroups, + TokenRestrictedDeviceGroups, + TokenSecurityAttributes, + TokenIsRestricted, + TokenProcessTrustLevel, + TokenPrivateNameSpace, + TokenSingletonAttributes, + TokenBnoIsolation, + TokenChildProcessFlags, + TokenIsLessPrivilegedAppContainer, + TokenIsSandboxed, + TokenIsAppSilo, + MaxTokenInfoClass + } TOKEN_INFORMATION_CLASS,*PTOKEN_INFORMATION_CLASS; + typedef struct _TOKEN_USER { + SID_AND_ATTRIBUTES User; + } TOKEN_USER,*PTOKEN_USER; + typedef struct _SE_TOKEN_USER { + __extension__ union { + TOKEN_USER TokenUser; + SID_AND_ATTRIBUTES User; + }; + __extension__ union { + SID Sid; + BYTE Buffer[(sizeof (SID) - sizeof (DWORD) + ((15) *sizeof (DWORD)))]; + }; + } SE_TOKEN_USER,*PSE_TOKEN_USER; +#define TOKEN_USER_MAX_SIZE (sizeof(TOKEN_USER) + SECURITY_MAX_SID_SIZE) + typedef struct _TOKEN_GROUPS { + DWORD GroupCount; + SID_AND_ATTRIBUTES Groups[1]; + } TOKEN_GROUPS,*PTOKEN_GROUPS; + typedef struct _TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES Privileges[1]; + } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES; + typedef struct _TOKEN_OWNER { + PSID Owner; + } TOKEN_OWNER,*PTOKEN_OWNER; +#define TOKEN_OWNER_MAX_SIZE (sizeof(TOKEN_OWNER) + SECURITY_MAX_SID_SIZE) + typedef struct _TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; + } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; + typedef struct _TOKEN_DEFAULT_DACL { + PACL DefaultDacl; + } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; + typedef struct _TOKEN_USER_CLAIMS { + PCLAIMS_BLOB UserClaims; + } TOKEN_USER_CLAIMS,*PTOKEN_USER_CLAIMS; + typedef struct _TOKEN_DEVICE_CLAIMS { + PCLAIMS_BLOB DeviceClaims; + } TOKEN_DEVICE_CLAIMS,*PTOKEN_DEVICE_CLAIMS; + typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { + DWORD SidCount; + DWORD SidLength; + PSID_AND_ATTRIBUTES Sids; + DWORD RestrictedSidCount; + DWORD RestrictedSidLength; + PSID_AND_ATTRIBUTES RestrictedSids; + DWORD PrivilegeCount; + DWORD PrivilegeLength; + PLUID_AND_ATTRIBUTES Privileges; + LUID AuthenticationId; + } TOKEN_GROUPS_AND_PRIVILEGES,*PTOKEN_GROUPS_AND_PRIVILEGES; + typedef struct _TOKEN_LINKED_TOKEN { + HANDLE LinkedToken; + } TOKEN_LINKED_TOKEN,*PTOKEN_LINKED_TOKEN; + typedef struct _TOKEN_ELEVATION { + DWORD TokenIsElevated; + } TOKEN_ELEVATION,*PTOKEN_ELEVATION; + typedef struct _TOKEN_MANDATORY_LABEL { + SID_AND_ATTRIBUTES Label; + } TOKEN_MANDATORY_LABEL,*PTOKEN_MANDATORY_LABEL; +#define TOKEN_MANDATORY_POLICY_OFF 0x0 +#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 +#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 +#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) +#define TOKEN_INTEGRITY_LEVEL_MAX_SIZE ((((DWORD)(sizeof(TOKEN_MANDATORY_LABEL)) + sizeof(PVOID) - 1) & ~(sizeof(PVOID)-1)) + SECURITY_MAX_SID_SIZE) + typedef struct _TOKEN_MANDATORY_POLICY { + DWORD Policy; + } TOKEN_MANDATORY_POLICY,*PTOKEN_MANDATORY_POLICY; + typedef PVOID PSECURITY_ATTRIBUTES_OPAQUE; + typedef struct _TOKEN_ACCESS_INFORMATION { + PSID_AND_ATTRIBUTES_HASH SidHash; + PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; + PTOKEN_PRIVILEGES Privileges; + LUID AuthenticationId; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + TOKEN_MANDATORY_POLICY MandatoryPolicy; + DWORD Flags; + DWORD AppContainerNumber; + PSID PackageSid; + PSID_AND_ATTRIBUTES_HASH CapabilitiesHash; + } TOKEN_ACCESS_INFORMATION,*PTOKEN_ACCESS_INFORMATION; +#define POLICY_AUDIT_SUBCATEGORY_COUNT (56) + typedef struct _TOKEN_AUDIT_POLICY { + UCHAR PerUserPolicy[(((56)) >> 1) + 1]; + } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; +#define TOKEN_SOURCE_LENGTH 8 + typedef struct _TOKEN_SOURCE { + CHAR SourceName[8]; + LUID SourceIdentifier; + } TOKEN_SOURCE,*PTOKEN_SOURCE; + typedef struct _TOKEN_STATISTICS { + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; + } TOKEN_STATISTICS,*PTOKEN_STATISTICS; + typedef struct _TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; + } TOKEN_CONTROL,*PTOKEN_CONTROL; + typedef struct _TOKEN_ORIGIN { + LUID OriginatingLogonSession; + } TOKEN_ORIGIN,*PTOKEN_ORIGIN; + typedef enum _MANDATORY_LEVEL { + MandatoryLevelUntrusted = 0, + MandatoryLevelLow, + MandatoryLevelMedium, + MandatoryLevelHigh, + MandatoryLevelSystem, + MandatoryLevelSecureProcess, + MandatoryLevelCount + } MANDATORY_LEVEL,*PMANDATORY_LEVEL; + typedef struct _TOKEN_APPCONTAINER_INFORMATION { + PSID TokenAppContainer; + } TOKEN_APPCONTAINER_INFORMATION,*PTOKEN_APPCONTAINER_INFORMATION; +#define TOKEN_APPCONTAINER_SID_MAX_SIZE (sizeof(TOKEN_APPCONTAINER_INFORMATION) + SECURITY_MAX_SID_SIZE) + typedef struct _TOKEN_SID_INFORMATION { + PSID Sid; + } TOKEN_SID_INFORMATION,*PTOKEN_SID_INFORMATION; + typedef struct _TOKEN_BNO_ISOLATION_INFORMATION { + PWSTR IsolationPrefix; + BOOLEAN IsolationEnabled; + } TOKEN_BNO_ISOLATION_INFORMATION,*PTOKEN_BNO_ISOLATION_INFORMATION; +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID 0x00 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 0x01 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 0x02 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING 0x03 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN 0x04 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID 0x05 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x06 + typedef struct _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE { + DWORD64 Version; + PWSTR Name; + } CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE,*PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE; + typedef struct _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE { + PVOID pValue; + DWORD ValueLength; + } CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE, *PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE; +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10 +#define CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x0001 +#define CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x0002 +#define CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY 0x0004 +#define CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x0008 +#define CLAIM_SECURITY_ATTRIBUTE_DISABLED 0x0010 +#define CLAIM_SECURITY_ATTRIBUTE_MANDATORY 0x0020 +#define CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS (CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE | CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY | CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | CLAIM_SECURITY_ATTRIBUTE_DISABLED | CLAIM_SECURITY_ATTRIBUTE_MANDATORY) +#define CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS 0xffff0000 + typedef struct _CLAIM_SECURITY_ATTRIBUTE_V1 { + PWSTR Name; + WORD ValueType; + WORD Reserved; + DWORD Flags; + DWORD ValueCount; + union { + PLONG64 pInt64; + PDWORD64 pUint64; + PWSTR *ppString; + PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE pFqbn; + PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE pOctetString; + } Values; + } CLAIM_SECURITY_ATTRIBUTE_V1,*PCLAIM_SECURITY_ATTRIBUTE_V1; + typedef struct _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 { + DWORD Name; + WORD ValueType; + WORD Reserved; + DWORD Flags; + DWORD ValueCount; + union { + DWORD pInt64[1]; + DWORD pUint64[1]; + DWORD ppString[1]; + DWORD pFqbn[1]; + DWORD pOctetString[1]; + } Values; + } CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1,*PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1; +#define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 1 +#define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 + typedef struct _CLAIM_SECURITY_ATTRIBUTES_INFORMATION { + WORD Version; + WORD Reserved; + DWORD AttributeCount; + union { + PCLAIM_SECURITY_ATTRIBUTE_V1 pAttributeV1; + } Attribute; + } CLAIM_SECURITY_ATTRIBUTES_INFORMATION,*PCLAIM_SECURITY_ATTRIBUTES_INFORMATION; +#define SECURITY_DYNAMIC_TRACKING (TRUE) +#define SECURITY_STATIC_TRACKING (FALSE) + typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; + typedef struct _SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; + } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; + typedef struct _SE_IMPERSONATION_STATE { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; + } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; +#define DISABLE_MAX_PRIVILEGE 0x1 +#define SANDBOX_INERT 0x2 +#define LUA_TOKEN 0x4 +#define WRITE_RESTRICTED 0x8 + typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION; +#define OWNER_SECURITY_INFORMATION (__MSABI_LONG(0x00000001)) +#define GROUP_SECURITY_INFORMATION (__MSABI_LONG(0x00000002)) +#define DACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000004)) +#define SACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000008)) +#define LABEL_SECURITY_INFORMATION (__MSABI_LONG(0x00000010)) +#define ATTRIBUTE_SECURITY_INFORMATION (__MSABI_LONG(0x00000020)) +#define SCOPE_SECURITY_INFORMATION (__MSABI_LONG(0x00000040)) +#define PROCESS_TRUST_LABEL_SECURITY_INFORMATION (__MSABI_LONG(0x00000080)) +#define ACCESS_FILTER_SECURITY_INFORMATION (__MSABI_LONG(0x00000100)) +#define BACKUP_SECURITY_INFORMATION (__MSABI_LONG(0x00010000)) +#define PROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x80000000)) +#define PROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x40000000)) +#define UNPROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x20000000)) +#define UNPROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x10000000)) +typedef BYTE SE_SIGNING_LEVEL, *PSE_SIGNING_LEVEL; +#define SE_SIGNING_LEVEL_UNCHECKED 0x00000000 +#define SE_SIGNING_LEVEL_UNSIGNED 0x00000001 +#define SE_SIGNING_LEVEL_ENTERPRISE 0x00000002 +#define SE_SIGNING_LEVEL_CUSTOM_1 0x00000003 +#define SE_SIGNING_LEVEL_DEVELOPER SE_SIGNING_LEVEL_CUSTOM_1 +#define SE_SIGNING_LEVEL_AUTHENTICODE 0x00000004 +#define SE_SIGNING_LEVEL_CUSTOM_2 0x00000005 +#define SE_SIGNING_LEVEL_STORE 0x00000006 +#define SE_SIGNING_LEVEL_CUSTOM_3 0x00000007 +#define SE_SIGNING_LEVEL_ANTIMALWARE SE_SIGNING_LEVEL_CUSTOM_3 +#define SE_SIGNING_LEVEL_MICROSOFT 0x00000008 +#define SE_SIGNING_LEVEL_CUSTOM_4 0x00000009 +#define SE_SIGNING_LEVEL_CUSTOM_5 0x0000000A +#define SE_SIGNING_LEVEL_DYNAMIC_CODEGEN 0x0000000B +#define SE_SIGNING_LEVEL_WINDOWS 0x0000000C +#define SE_SIGNING_LEVEL_CUSTOM_7 0x0000000D +#define SE_SIGNING_LEVEL_WINDOWS_TCB 0x0000000E +#define SE_SIGNING_LEVEL_CUSTOM_6 0x0000000F + typedef enum _SE_IMAGE_SIGNATURE_TYPE { + SeImageSignatureNone = 0, + SeImageSignatureEmbedded, + SeImageSignatureCache, + SeImageSignatureCatalogCached, + SeImageSignatureCatalogNotCached, + SeImageSignatureCatalogHint, + SeImageSignaturePackageCatalog, + SeImageSignaturePplMitigated + } SE_IMAGE_SIGNATURE_TYPE, *PSE_IMAGE_SIGNATURE_TYPE; + typedef enum _SE_LEARNING_MODE_DATA_TYPE { + SeLearningModeInvalidType = 0, + SeLearningModeSettings, + SeLearningModeMax + } SE_LEARNING_MODE_DATA_TYPE; +#define SE_LEARNING_MODE_FLAG_PERMISSIVE 0x00000001 + typedef struct _SECURITY_CAPABILITIES { + PSID AppContainerSid; + PSID_AND_ATTRIBUTES Capabilities; + DWORD CapabilityCount; + DWORD Reserved; + } SECURITY_CAPABILITIES,*PSECURITY_CAPABILITIES,*LPSECURITY_CAPABILITIES; +#define PROCESS_TERMINATE (0x0001) +#define PROCESS_CREATE_THREAD (0x0002) +#define PROCESS_SET_SESSIONID (0x0004) +#define PROCESS_VM_OPERATION (0x0008) +#define PROCESS_VM_READ (0x0010) +#define PROCESS_VM_WRITE (0x0020) +#define PROCESS_DUP_HANDLE (0x0040) +#define PROCESS_CREATE_PROCESS (0x0080) +#define PROCESS_SET_QUOTA (0x0100) +#define PROCESS_SET_INFORMATION (0x0200) +#define PROCESS_QUERY_INFORMATION (0x0400) +#define PROCESS_SUSPEND_RESUME (0x0800) +#define PROCESS_QUERY_LIMITED_INFORMATION (0x1000) +#define PROCESS_SET_LIMITED_INFORMATION (0x2000) +#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff) +#define MAXIMUM_PROC_PER_GROUP 64 +#define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP +#define THREAD_TERMINATE (0x0001) +#define THREAD_SUSPEND_RESUME (0x0002) +#define THREAD_GET_CONTEXT (0x0008) +#define THREAD_SET_CONTEXT (0x0010) +#define THREAD_SET_INFORMATION (0x0020) +#define THREAD_QUERY_INFORMATION (0x0040) +#define THREAD_SET_THREAD_TOKEN (0x0080) +#define THREAD_IMPERSONATE (0x0100) +#define THREAD_DIRECT_IMPERSONATION (0x0200) +#define THREAD_SET_LIMITED_INFORMATION (0x0400) +#define THREAD_QUERY_LIMITED_INFORMATION (0x0800) +#define THREAD_RESUME (0x1000) +#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff) +#define JOB_OBJECT_ASSIGN_PROCESS (0x0001) +#define JOB_OBJECT_SET_ATTRIBUTES (0x0002) +#define JOB_OBJECT_QUERY (0x0004) +#define JOB_OBJECT_TERMINATE (0x0008) +#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) +#define JOB_OBJECT_IMPERSONATE (0x0020) +#define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3F) + typedef struct _JOB_SET_ARRAY { + HANDLE JobHandle; + DWORD MemberLevel; + DWORD Flags; + } JOB_SET_ARRAY,*PJOB_SET_ARRAY; +#define FLS_MAXIMUM_AVAILABLE 128 +#define TLS_MINIMUM_AVAILABLE 64 + typedef struct _EXCEPTION_REGISTRATION_RECORD { + __extension__ union { + struct _EXCEPTION_REGISTRATION_RECORD *Next; + struct _EXCEPTION_REGISTRATION_RECORD *prev; + }; + __extension__ union { + PEXCEPTION_ROUTINE Handler; + PEXCEPTION_ROUTINE handler; + }; + } EXCEPTION_REGISTRATION_RECORD; + typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD; + typedef EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION; + typedef PEXCEPTION_REGISTRATION_RECORD PEXCEPTION_REGISTRATION; +#define _NT_TIB_DEFINED + __extension__ typedef struct _NT_TIB { + struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + __extension__ union { + PVOID FiberData; + DWORD Version; + }; + PVOID ArbitraryUserPointer; + struct _NT_TIB *Self; + } NT_TIB; + typedef NT_TIB *PNT_TIB; + __extension__ typedef struct _NT_TIB32 { + DWORD ExceptionList; + DWORD StackBase; + DWORD StackLimit; + DWORD SubSystemTib; + __extension__ union { + DWORD FiberData; + DWORD Version; + }; + DWORD ArbitraryUserPointer; + DWORD Self; + } NT_TIB32,*PNT_TIB32; + __extension__ typedef struct _NT_TIB64 { + DWORD64 ExceptionList; + DWORD64 StackBase; + DWORD64 StackLimit; + DWORD64 SubSystemTib; + __extension__ union { + DWORD64 FiberData; + DWORD Version; + }; + DWORD64 ArbitraryUserPointer; + DWORD64 Self; + } NT_TIB64,*PNT_TIB64; +#define WX86 +#define THREAD_DYNAMIC_CODE_ALLOW 1 +#define THREAD_BASE_PRIORITY_LOWRT 15 +#define THREAD_BASE_PRIORITY_MAX 2 +#define THREAD_BASE_PRIORITY_MIN (-2) +#define THREAD_BASE_PRIORITY_IDLE (-15) + typedef struct _UMS_CREATE_THREAD_ATTRIBUTES { + DWORD UmsVersion; + PVOID UmsContext; + PVOID UmsCompletionList; + } UMS_CREATE_THREAD_ATTRIBUTES,*PUMS_CREATE_THREAD_ATTRIBUTES; +#define COMPONENT_KTM 0x01 +#define COMPONENT_VALID_FLAGS COMPONENT_KTM + typedef struct _COMPONENT_FILTER { + DWORD ComponentFlags; + } COMPONENT_FILTER,*PCOMPONENT_FILTER; +#define DYNAMIC_EH_CONTINUATION_TARGET_ADD 0x00000001 +#define DYNAMIC_EH_CONTINUATION_TARGET_PROCESSED 0x00000002 + typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGET { + ULONG_PTR TargetAddress; + ULONG_PTR Flags; + } PROCESS_DYNAMIC_EH_CONTINUATION_TARGET,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET; + typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION { + WORD NumberOfTargets; + WORD Reserved; + DWORD Reserved2; + PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET Targets; + } PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION; +#define DYNAMIC_ENFORCED_ADDRESS_RANGE_ADD 0x00000001 +#define DYNAMIC_ENFORCED_ADDRESS_RANGE_PROCESSED 0x00000002 + typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE { + ULONG_PTR BaseAddress; + SIZE_T Size; + DWORD Flags; + } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE; + typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION { + WORD NumberOfRanges; + WORD Reserved; + DWORD Reserved2; + PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE Ranges; + } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION; + typedef struct _QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; + } QUOTA_LIMITS,*PQUOTA_LIMITS; +#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 +#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 +#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 +#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 +#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 + typedef union _RATE_QUOTA_LIMIT { + DWORD RateData; + __extension__ struct { + DWORD RatePercent : 7; + DWORD Reserved0 : 25; + } ; + } RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT; + typedef struct _QUOTA_LIMITS_EX { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; + SIZE_T WorkingSetLimit; + SIZE_T Reserved2; + SIZE_T Reserved3; + SIZE_T Reserved4; + DWORD Flags; + RATE_QUOTA_LIMIT CpuRateLimit; + } QUOTA_LIMITS_EX,*PQUOTA_LIMITS_EX; + typedef struct _IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; + } IO_COUNTERS; + typedef IO_COUNTERS *PIO_COUNTERS; +#define MAX_HW_COUNTERS 16 +#define THREAD_PROFILING_FLAG_DISPATCH 0x1 + typedef enum _HARDWARE_COUNTER_TYPE { + PMCCounter, + MaxHardwareCounterType + } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE; + typedef enum _PROCESS_MITIGATION_POLICY { + ProcessDEPPolicy, + ProcessASLRPolicy, + ProcessDynamicCodePolicy, + ProcessStrictHandleCheckPolicy, + ProcessSystemCallDisablePolicy, + ProcessMitigationOptionsMask, + ProcessExtensionPointDisablePolicy, + ProcessControlFlowGuardPolicy, + ProcessSignaturePolicy, + ProcessFontDisablePolicy, + ProcessImageLoadPolicy, + ProcessSystemCallFilterPolicy, + ProcessPayloadRestrictionPolicy, + ProcessChildProcessPolicy, + ProcessSideChannelIsolationPolicy, + ProcessUserShadowStackPolicy, + ProcessRedirectionTrustPolicy, + ProcessUserPointerAuthPolicy, + ProcessSEHOPPolicy, + MaxProcessMitigationPolicy + } PROCESS_MITIGATION_POLICY,*PPROCESS_MITIGATION_POLICY; + typedef struct _PROCESS_MITIGATION_ASLR_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD EnableBottomUpRandomization : 1; + DWORD EnableForceRelocateImages : 1; + DWORD EnableHighEntropy : 1; + DWORD DisallowStrippedImages : 1; + DWORD ReservedFlags : 28; + }; + }; + } PROCESS_MITIGATION_ASLR_POLICY,*PPROCESS_MITIGATION_ASLR_POLICY; + typedef struct _PROCESS_MITIGATION_DEP_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD Enable : 1; + DWORD DisableAtlThunkEmulation : 1; + DWORD ReservedFlags : 30; + }; + }; + BOOLEAN Permanent; + } PROCESS_MITIGATION_DEP_POLICY,*PPROCESS_MITIGATION_DEP_POLICY; + typedef struct _PROCESS_MITIGATION_SEHOP_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD EnableSehop : 1; + DWORD ReservedFlags : 31; + }; + }; + } PROCESS_MITIGATION_SEHOP_POLICY,*PPROCESS_MITIGATION_SEHOP_POLICY; + typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD RaiseExceptionOnInvalidHandleReference : 1; + DWORD HandleExceptionsPermanentlyEnabled : 1; + DWORD ReservedFlags : 30; + }; + }; + } PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY,*PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY; + typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD DisallowWin32kSystemCalls : 1; + DWORD ReservedFlags : 31; + }; + }; + } PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY,*PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY; + typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD DisableExtensionPoints : 1; + DWORD ReservedFlags : 31; + }; + }; + } PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY,*PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY; + typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD EnableControlFlowGuard :1; + DWORD EnableExportSuppression :1; + DWORD StrictMode :1; + DWORD ReservedFlags :29; + }; + }; + } PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY, *PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY; + typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD MicrosoftSignedOnly :1; + DWORD StoreSignedOnly :1; + DWORD MitigationOptIn :1; + DWORD ReservedFlags :29; + }; + }; + } PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY; + typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD ProhibitDynamicCode :1; + DWORD AllowThreadOptOut :1; + DWORD AllowRemoteDowngrade :1; + DWORD ReservedFlags :29; + }; + }; + } PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY; + typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD DisableNonSystemFonts :1; + DWORD AuditNonSystemFontLoading :1; + DWORD ReservedFlags :30; + }; + }; + } PROCESS_MITIGATION_FONT_DISABLE_POLICY, *PPROCESS_MITIGATION_FONT_DISABLE_POLICY; + typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD NoRemoteImages :1; + DWORD NoLowMandatoryLabelImages :1; + DWORD PreferSystem32Images :1; + DWORD ReservedFlags :29; + }; + }; + } PROCESS_MITIGATION_IMAGE_LOAD_POLICY, *PPROCESS_MITIGATION_IMAGE_LOAD_POLICY; + typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD FilterId :4; + DWORD ReservedFlags :28; + }; + }; + } PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY, *PPROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY; + typedef struct _PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD EnableExportAddressFilter :1; + DWORD AuditExportAddressFilter :1; + DWORD EnableExportAddressFilterPlus :1; + DWORD AuditExportAddressFilterPlus :1; + DWORD EnableImportAddressFilter :1; + DWORD AuditImportAddressFilter :1; + DWORD EnableRopStackPivot :1; + DWORD AuditRopStackPivot :1; + DWORD EnableRopCallerCheck :1; + DWORD AuditRopCallerCheck :1; + DWORD EnableRopSimExec :1; + DWORD AuditRopSimExec :1; + DWORD ReservedFlags :20; + }; + }; + } PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY, *PPROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY; + typedef struct _PROCESS_MITIGATION_CHILD_PROCESS_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD NoChildProcessCreation :1; + DWORD AuditNoChildProcessCreation :1; + DWORD AllowSecureProcessCreation :1; + DWORD ReservedFlags :29; + }; + }; + } PROCESS_MITIGATION_CHILD_PROCESS_POLICY, *PPROCESS_MITIGATION_CHILD_PROCESS_POLICY; + typedef struct _PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD SmtBranchTargetIsolation :1; + DWORD IsolateSecurityDomain :1; + DWORD DisablePageCombine :1; + DWORD SpeculativeStoreBypassDisable :1; + DWORD RestrictCoreSharing : 1; + DWORD ReservedFlags : 27; + }; + }; + } PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY, *PPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY; + typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD EnableUserShadowStack : 1; + DWORD AuditUserShadowStack : 1; + DWORD SetContextIpValidation : 1; + DWORD AuditSetContextIpValidation : 1; + DWORD EnableUserShadowStackStrictMode : 1; + DWORD BlockNonCetBinaries : 1; + DWORD BlockNonCetBinariesNonEhcont : 1; + DWORD AuditBlockNonCetBinaries : 1; + DWORD CetDynamicApisOutOfProcOnly : 1; + DWORD SetContextIpValidationRelaxedMode : 1; + DWORD ReservedFlags : 22; + }; + }; + } PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY; + typedef struct _PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD EnablePointerAuthUserIp : 1; + DWORD ReservedFlags : 31; + }; + }; + } PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY, *PPROCESS_MITIGATION_USER_POINTER_AUTH_POLICY; + typedef struct _PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY { + __extension__ union { + DWORD Flags; + __extension__ struct { + DWORD EnforceRedirectionTrust : 1; + DWORD AuditRedirectionTrust : 1; + DWORD ReservedFlags : 30; + }; + }; + } PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY, *PPROCESS_MITIGATION_REDIRECTION_TRUST_POLICY; + typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { + LARGE_INTEGER TotalUserTime; + LARGE_INTEGER TotalKernelTime; + LARGE_INTEGER ThisPeriodTotalUserTime; + LARGE_INTEGER ThisPeriodTotalKernelTime; + DWORD TotalPageFaultCount; + DWORD TotalProcesses; + DWORD ActiveProcesses; + DWORD TotalTerminatedProcesses; + } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; + typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION { + LARGE_INTEGER PerProcessUserTimeLimit; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD LimitFlags; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + DWORD ActiveProcessLimit; + ULONG_PTR Affinity; + DWORD PriorityClass; + DWORD SchedulingClass; + } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION; + typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION { + JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; + IO_COUNTERS IoInfo; + SIZE_T ProcessMemoryLimit; + SIZE_T JobMemoryLimit; + SIZE_T PeakProcessMemoryUsed; + SIZE_T PeakJobMemoryUsed; + } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; + typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR ProcessIdList[1]; + } JOBOBJECT_BASIC_PROCESS_ID_LIST,*PJOBOBJECT_BASIC_PROCESS_ID_LIST; + typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { + DWORD UIRestrictionsClass; + } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS; + typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { + DWORD SecurityLimitFlags; + HANDLE JobToken; + PTOKEN_GROUPS SidsToDisable; + PTOKEN_PRIVILEGES PrivilegesToDelete; + PTOKEN_GROUPS RestrictedSids; + } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION; + typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { + DWORD EndOfJobTimeAction; + } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; + typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { + PVOID CompletionKey; + HANDLE CompletionPort; + } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; + typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { + JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; + IO_COUNTERS IoInfo; + } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; + typedef struct _JOBOBJECT_JOBSET_INFORMATION { + DWORD MemberLevel; + } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION; + typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE { + ToleranceLow = 1, + ToleranceMedium, + ToleranceHigh + } JOBOBJECT_RATE_CONTROL_TOLERANCE; + typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL { + ToleranceIntervalShort = 1, + ToleranceIntervalMedium, + ToleranceIntervalLong + } JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL; + typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION { + DWORD64 IoReadBytesLimit; + DWORD64 IoWriteBytesLimit; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD64 JobMemoryLimit; + JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; + JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; + DWORD LimitFlags; + } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION,*PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION; + typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 { + DWORD64 IoReadBytesLimit; + DWORD64 IoWriteBytesLimit; + LARGE_INTEGER PerJobUserTimeLimit; + __extension__ union { + DWORD64 JobHighMemoryLimit; + DWORD64 JobMemoryLimit; + }; + __extension__ union { + JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; + JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance; + }; + __extension__ union { + JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; + JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL CpuRateControlToleranceInterval; + }; + DWORD LimitFlags; + JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance; + DWORD64 JobLowMemoryLimit; + JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval; + JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance; + JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL NetRateControlToleranceInterval; + } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2; + typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION { + DWORD LimitFlags; + DWORD ViolationLimitFlags; + DWORD64 IoReadBytes; + DWORD64 IoReadBytesLimit; + DWORD64 IoWriteBytes; + DWORD64 IoWriteBytesLimit; + LARGE_INTEGER PerJobUserTime; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD64 JobMemory; + DWORD64 JobMemoryLimit; + JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; + JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceLimit; + } JOBOBJECT_LIMIT_VIOLATION_INFORMATION,*PJOBOBJECT_LIMIT_VIOLATION_INFORMATION; + typedef struct JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 { + DWORD LimitFlags; + DWORD ViolationLimitFlags; + DWORD64 IoReadBytes; + DWORD64 IoReadBytesLimit; + DWORD64 IoWriteBytes; + DWORD64 IoWriteBytesLimit; + LARGE_INTEGER PerJobUserTime; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD64 JobMemory; + __extension__ union { + DWORD64 JobHighMemoryLimit; + DWORD64 JobMemoryLimit; + }; + __extension__ union { + JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; + JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance; + }; + __extension__ union { + JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlToleranceLimit; + JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlToleranceLimit; + }; + DWORD64 JobLowMemoryLimit; + JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance; + JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlToleranceLimit; + JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance; + JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlToleranceLimit; + } JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2; + typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { + DWORD ControlFlags; + __extension__ union { + DWORD CpuRate; + DWORD Weight; + }; + } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION,*PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION; + typedef enum JOB_OBJECT_NET_RATE_CONTROL_FLAGS { + JOB_OBJECT_NET_RATE_CONTROL_ENABLE = 0x1, + JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH = 0x2, + JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG = 0x4, + JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS = 0x7 + } JOB_OBJECT_NET_RATE_CONTROL_FLAGS; +extern void __C_ASSERT__(int [(JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS == (JOB_OBJECT_NET_RATE_CONTROL_ENABLE + JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH + JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG))?1:-1]); +#define JOB_OBJECT_NET_RATE_CONTROL_MAX_DSCP_TAG 64 + typedef struct JOBOBJECT_NET_RATE_CONTROL_INFORMATION { + DWORD64 MaxBandwidth; + JOB_OBJECT_NET_RATE_CONTROL_FLAGS ControlFlags; + BYTE DscpTag; + } JOBOBJECT_NET_RATE_CONTROL_INFORMATION; + typedef enum JOB_OBJECT_IO_RATE_CONTROL_FLAGS { + JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1, + JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME = 0x2, + JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL = 0x4, + JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP = 0x8, + JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS = JOB_OBJECT_IO_RATE_CONTROL_ENABLE | JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP + } JOB_OBJECT_IO_RATE_CONTROL_FLAGS; + typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE { + LONG64 MaxIops; + LONG64 MaxBandwidth; + LONG64 ReservationIops; + PWSTR VolumeName; + DWORD BaseIoSize; + JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags; + WORD VolumeNameLength; + } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE; + typedef JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V1; + typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 { + LONG64 MaxIops; + LONG64 MaxBandwidth; + LONG64 ReservationIops; + PWSTR VolumeName; + DWORD BaseIoSize; + JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags; + WORD VolumeNameLength; + LONG64 CriticalReservationIops; + LONG64 ReservationBandwidth; + LONG64 CriticalReservationBandwidth; + LONG64 MaxTimePercent; + LONG64 ReservationTimePercent; + LONG64 CriticalReservationTimePercent; + } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2; + typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 { + LONG64 MaxIops; + LONG64 MaxBandwidth; + LONG64 ReservationIops; + PWSTR VolumeName; + DWORD BaseIoSize; + JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags; + WORD VolumeNameLength; + LONG64 CriticalReservationIops; + LONG64 ReservationBandwidth; + LONG64 CriticalReservationBandwidth; + LONG64 MaxTimePercent; + LONG64 ReservationTimePercent; + LONG64 CriticalReservationTimePercent; + LONG64 SoftMaxIops; + LONG64 SoftMaxBandwidth; + LONG64 SoftMaxTimePercent; + LONG64 LimitExcessNotifyIops; + LONG64 LimitExcessNotifyBandwidth; + LONG64 LimitExcessNotifyTimePercent; + } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3; + typedef enum JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS { + JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE = 0x1, + JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE = 0x2, + JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS = 0x3 + } JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS; + typedef struct _JOBOBJECT_IO_ATTRIBUTION_STATS { + ULONG_PTR IoCount; + ULONGLONG TotalNonOverlappedQueueTime; + ULONGLONG TotalNonOverlappedServiceTime; + ULONGLONG TotalSize; + } JOBOBJECT_IO_ATTRIBUTION_STATS, *PJOBOBJECT_IO_ATTRIBUTION_STATS; + typedef struct _JOBOBJECT_IO_ATTRIBUTION_INFORMATION { + DWORD ControlFlags; + JOBOBJECT_IO_ATTRIBUTION_STATS ReadStats; + JOBOBJECT_IO_ATTRIBUTION_STATS WriteStats; + } JOBOBJECT_IO_ATTRIBUTION_INFORMATION, *PJOBOBJECT_IO_ATTRIBUTION_INFORMATION; +#define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 +#define JOB_OBJECT_POST_AT_END_OF_JOB 1 +#define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 +#define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 +#define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 +#define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 +#define JOB_OBJECT_MSG_NEW_PROCESS 6 +#define JOB_OBJECT_MSG_EXIT_PROCESS 7 +#define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 +#define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 +#define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 +#define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 11 +#define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 12 +#define JOB_OBJECT_MSG_SILO_TERMINATED 13 +#define JOB_OBJECT_MSG_MINIMUM 1 +#define JOB_OBJECT_MSG_MAXIMUM 12 +#define JOB_OBJECT_VALID_COMPLETION_FILTER (((__MSABI_LONG(1U) << (JOB_OBJECT_MSG_MAXIMUM + 1)) - 1) - ((__MSABI_LONG(1U) << JOB_OBJECT_MSG_MINIMUM) - 1)) +#define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001 +#define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002 +#define JOB_OBJECT_LIMIT_JOB_TIME 0x00000004 +#define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x00000008 +#define JOB_OBJECT_LIMIT_AFFINITY 0x00000010 +#define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020 +#define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040 +#define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080 +#define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100 +#define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200 +#define JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH JOB_OBJECT_LIMIT_JOB_MEMORY +#define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400 +#define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800 +#define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000 +#define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000 +#define JOB_OBJECT_LIMIT_SUBSET_AFFINITY 0x00004000 +#define JOB_OBJECT_LIMIT_JOB_MEMORY_LOW 0x00008000 +#define JOB_OBJECT_LIMIT_JOB_READ_BYTES 0x00010000 +#define JOB_OBJECT_LIMIT_JOB_WRITE_BYTES 0x00020000 +#define JOB_OBJECT_LIMIT_RATE_CONTROL 0x00040000 +#define JOB_OBJECT_LIMIT_CPU_RATE_CONTROL JOB_OBJECT_LIMIT_RATE_CONTROL +#define JOB_OBJECT_LIMIT_IO_RATE_CONTROL 0x00080000 +#define JOB_OBJECT_LIMIT_NET_RATE_CONTROL 0x00100000 +#define JOB_OBJECT_LIMIT_RESERVED3 0x00008000 +#define JOB_OBJECT_LIMIT_RESERVED4 0x00010000 +#define JOB_OBJECT_LIMIT_RESERVED5 0x00020000 +#define JOB_OBJECT_LIMIT_RESERVED6 0x00040000 +#define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff +#define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff +#define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00007fff +#define JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS 0x0007ffff +#define JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS 0x00070204 +#define JOB_OBJECT_UILIMIT_NONE 0x00000000 +#define JOB_OBJECT_UILIMIT_HANDLES 0x00000001 +#define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002 +#define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004 +#define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x00000008 +#define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x00000010 +#define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x00000020 +#define JOB_OBJECT_UILIMIT_DESKTOP 0x00000040 +#define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x00000080 +#define JOB_OBJECT_UILIMIT_ALL 0x000000FF +#define JOB_OBJECT_UI_VALID_FLAGS 0x000000FF +#define JOB_OBJECT_SECURITY_NO_ADMIN 0x00000001 +#define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x00000002 +#define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x00000004 +#define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x00000008 +#define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f +#define JOB_OBJECT_CPU_RATE_CONTROL_ENABLE 0x1 +#define JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 0x2 +#define JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 0x4 +#define JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY 0x8 +#define JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE 0x10 +#define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0x1f + typedef enum _JOBOBJECTINFOCLASS { + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + JobObjectGroupInformation, + JobObjectNotificationLimitInformation, + JobObjectLimitViolationInformation, + JobObjectGroupInformationEx, + JobObjectCpuRateControlInformation, + JobObjectCompletionFilter, + JobObjectCompletionCounter, + JobObjectReserved1Information = 18, + JobObjectReserved2Information, + JobObjectReserved3Information, + JobObjectReserved4Information, + JobObjectReserved5Information, + JobObjectReserved6Information, + JobObjectReserved7Information, + JobObjectReserved8Information, + JobObjectReserved9Information, + JobObjectReserved10Information, + JobObjectReserved11Information, + JobObjectReserved12Information, + JobObjectReserved13Information, + JobObjectReserved14Information = 31, + JobObjectNetRateControlInformation, + JobObjectNotificationLimitInformation2, + JobObjectLimitViolationInformation2, + JobObjectCreateSilo, + JobObjectSiloBasicInformation, + JobObjectReserved15Information = 37, + JobObjectReserved16Information = 38, + JobObjectReserved17Information = 39, + JobObjectReserved18Information = 40, + JobObjectReserved19Information = 41, + JobObjectReserved20Information = 42, + JobObjectReserved21Information = 43, + JobObjectReserved22Information = 44, + JobObjectReserved23Information = 45, + JobObjectReserved24Information = 46, + JobObjectReserved25Information = 47, + MaxJobObjectInfoClass + } JOBOBJECTINFOCLASS; + typedef struct _SILOOBJECT_BASIC_INFORMATION { + DWORD SiloId; + DWORD SiloParentId; + DWORD NumberOfProcesses; + BOOLEAN IsInServerSilo; + BYTE Reserved[3]; + } SILOOBJECT_BASIC_INFORMATION, *PSILOOBJECT_BASIC_INFORMATION; + typedef enum _SERVERSILO_STATE { + SERVERSILO_INITING = 0, + SERVERSILO_STARTED, + SERVERSILO_SHUTTING_DOWN, + SERVERSILO_TERMINATING, + SERVERSILO_TERMINATED, + } SERVERSILO_STATE, *PSERVERSILO_STATE; + typedef struct _SERVERSILO_BASIC_INFORMATION { + DWORD ServiceSessionId; + SERVERSILO_STATE State; + DWORD ExitStatus; + BOOLEAN IsDownlevelContainer; + PVOID ApiSetSchema; + PVOID HostApiSetSchema; + } SERVERSILO_BASIC_INFORMATION, *PSERVERSILO_BASIC_INFORMATION; +#define MEMORY_PARTITION_QUERY_ACCESS 0x0001 +#define MEMORY_PARTITION_MODIFY_ACCESS 0x0002 +#define MEMORY_PARTITION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MEMORY_PARTITION_QUERY_ACCESS | MEMORY_PARTITION_MODIFY_ACCESS) + typedef enum _FIRMWARE_TYPE { + FirmwareTypeUnknown, + FirmwareTypeBios, + FirmwareTypeUefi, + FirmwareTypeMax + } FIRMWARE_TYPE,*PFIRMWARE_TYPE; +#define EVENT_MODIFY_STATE 0x0002 +#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +#define MUTANT_QUERY_STATE 0x0001 +#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE) +#define SEMAPHORE_MODIFY_STATE 0x0002 +#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +#define TIMER_QUERY_STATE 0x0001 +#define TIMER_MODIFY_STATE 0x0002 +#define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE) +#define TIME_ZONE_ID_UNKNOWN 0 +#define TIME_ZONE_ID_STANDARD 1 +#define TIME_ZONE_ID_DAYLIGHT 2 + typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { + RelationProcessorCore, + RelationNumaNode, + RelationCache, + RelationProcessorPackage, + RelationGroup, + RelationProcessorDie, + RelationNumaNodeEx, + RelationProcessorModule, + RelationAll = 0xffff + } LOGICAL_PROCESSOR_RELATIONSHIP; +#define LTP_PC_SMT 0x1 + typedef enum _PROCESSOR_CACHE_TYPE { + CacheUnified,CacheInstruction,CacheData,CacheTrace + } PROCESSOR_CACHE_TYPE; +#define CACHE_FULLY_ASSOCIATIVE 0xFF + typedef struct _CACHE_DESCRIPTOR { + BYTE Level; + BYTE Associativity; + WORD LineSize; + DWORD Size; + PROCESSOR_CACHE_TYPE Type; + } CACHE_DESCRIPTOR,*PCACHE_DESCRIPTOR; + typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { + ULONG_PTR ProcessorMask; + LOGICAL_PROCESSOR_RELATIONSHIP Relationship; + __extension__ union { + struct { + BYTE Flags; + } ProcessorCore; + struct { + DWORD NodeNumber; + } NumaNode; + CACHE_DESCRIPTOR Cache; + ULONGLONG Reserved[2]; + } ; + } SYSTEM_LOGICAL_PROCESSOR_INFORMATION,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; + typedef struct _PROCESSOR_RELATIONSHIP { + BYTE Flags; + BYTE EfficiencyClass; + BYTE Reserved[20]; + WORD GroupCount; + GROUP_AFFINITY GroupMask[1]; + } PROCESSOR_RELATIONSHIP,*PPROCESSOR_RELATIONSHIP; + typedef struct _NUMA_NODE_RELATIONSHIP { + DWORD NodeNumber; + BYTE Reserved[20]; + GROUP_AFFINITY GroupMask; + } NUMA_NODE_RELATIONSHIP,*PNUMA_NODE_RELATIONSHIP; + typedef struct _CACHE_RELATIONSHIP { + BYTE Level; + BYTE Associativity; + WORD LineSize; + DWORD CacheSize; + PROCESSOR_CACHE_TYPE Type; + BYTE Reserved[20]; + GROUP_AFFINITY GroupMask; + } CACHE_RELATIONSHIP,*PCACHE_RELATIONSHIP; + typedef struct _PROCESSOR_GROUP_INFO { + BYTE MaximumProcessorCount; + BYTE ActiveProcessorCount; + BYTE Reserved[38]; + KAFFINITY ActiveProcessorMask; + } PROCESSOR_GROUP_INFO,*PPROCESSOR_GROUP_INFO; + typedef struct _GROUP_RELATIONSHIP { + WORD MaximumGroupCount; + WORD ActiveGroupCount; + BYTE Reserved[20]; + PROCESSOR_GROUP_INFO GroupInfo[1]; + } GROUP_RELATIONSHIP,*PGROUP_RELATIONSHIP; + struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { + LOGICAL_PROCESSOR_RELATIONSHIP Relationship; + DWORD Size; + __extension__ union { + PROCESSOR_RELATIONSHIP Processor; + NUMA_NODE_RELATIONSHIP NumaNode; + CACHE_RELATIONSHIP Cache; + GROUP_RELATIONSHIP Group; + }; + }; + typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; + typedef enum _CPU_SET_INFORMATION_TYPE { + CpuSetInformation + } CPU_SET_INFORMATION_TYPE, *PCPU_SET_INFORMATION_TYPE; +#define SYSTEM_CPU_SET_INFORMATION_PARKED 0x1 +#define SYSTEM_CPU_SET_INFORMATION_ALLOCATED 0x2 +#define SYSTEM_CPU_SET_INFORMATION_ALLOCATED_TO_TARGET_PROCESS 0x4 +#define SYSTEM_CPU_SET_INFORMATION_REALTIME 0x8 + struct _SYSTEM_CPU_SET_INFORMATION { + DWORD Size; + CPU_SET_INFORMATION_TYPE Type; + __extension__ union { + struct { + DWORD Id; + WORD Group; + BYTE LogicalProcessorIndex; + BYTE CoreIndex; + BYTE LastLevelCacheIndex; + BYTE NumaNodeIndex; + BYTE EfficiencyClass; + __extension__ union { + BYTE AllFlags; + __extension__ struct { + BYTE Parked : 1; + BYTE Allocated : 1; + BYTE AllocatedToTargetProcess : 1; + BYTE RealTime : 1; + BYTE ReservedFlags : 4; + }; + }; + __extension__ union { + DWORD Reserved; + BYTE SchedulingClass; + }; + DWORD64 AllocationTag; + } CpuSet; + }; + }; + typedef struct _SYSTEM_CPU_SET_INFORMATION SYSTEM_CPU_SET_INFORMATION, *PSYSTEM_CPU_SET_INFORMATION; + typedef struct _SYSTEM_POOL_ZEROING_INFORMATION { + BOOLEAN PoolZeroingSupportPresent; + } SYSTEM_POOL_ZEROING_INFORMATION, *PSYSTEM_POOL_ZEROING_INFORMATION; + typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION { + DWORD64 CycleTime; + } SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,*PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION; + typedef struct _SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION { + DWORD Machine : 16; + DWORD KernelMode : 1; + DWORD UserMode : 1; + DWORD Native : 1; + DWORD Process : 1; + DWORD WoW64Container : 1; + DWORD ReservedZero0 : 11; + } SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION,*PSYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION; +#define PROCESSOR_INTEL_386 386 +#define PROCESSOR_INTEL_486 486 +#define PROCESSOR_INTEL_PENTIUM 586 +#define PROCESSOR_INTEL_IA64 2200 +#define PROCESSOR_AMD_X8664 8664 +#define PROCESSOR_MIPS_R4000 4000 +#define PROCESSOR_ALPHA_21064 21064 +#define PROCESSOR_PPC_601 601 +#define PROCESSOR_PPC_603 603 +#define PROCESSOR_PPC_604 604 +#define PROCESSOR_PPC_620 620 +#define PROCESSOR_HITACHI_SH3 10003 +#define PROCESSOR_HITACHI_SH3E 10004 +#define PROCESSOR_HITACHI_SH4 10005 +#define PROCESSOR_MOTOROLA_821 821 +#define PROCESSOR_SHx_SH3 103 +#define PROCESSOR_SHx_SH4 104 +#define PROCESSOR_STRONGARM 2577 +#define PROCESSOR_ARM720 1824 +#define PROCESSOR_ARM820 2080 +#define PROCESSOR_ARM920 2336 +#define PROCESSOR_ARM_7TDMI 70001 +#define PROCESSOR_OPTIL 0x494f +#define PROCESSOR_ARCHITECTURE_INTEL 0 +#define PROCESSOR_ARCHITECTURE_MIPS 1 +#define PROCESSOR_ARCHITECTURE_ALPHA 2 +#define PROCESSOR_ARCHITECTURE_PPC 3 +#define PROCESSOR_ARCHITECTURE_SHX 4 +#define PROCESSOR_ARCHITECTURE_ARM 5 +#define PROCESSOR_ARCHITECTURE_IA64 6 +#define PROCESSOR_ARCHITECTURE_ALPHA64 7 +#define PROCESSOR_ARCHITECTURE_MSIL 8 +#define PROCESSOR_ARCHITECTURE_AMD64 9 +#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 +#define PROCESSOR_ARCHITECTURE_NEUTRAL 11 +#define PROCESSOR_ARCHITECTURE_ARM64 12 +#define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13 +#define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 14 +#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff +#define PF_FLOATING_POINT_PRECISION_ERRATA 0 +#define PF_FLOATING_POINT_EMULATED 1 +#define PF_COMPARE_EXCHANGE_DOUBLE 2 +#define PF_MMX_INSTRUCTIONS_AVAILABLE 3 +#define PF_PPC_MOVEMEM_64BIT_OK 4 +#define PF_ALPHA_BYTE_INSTRUCTIONS 5 +#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 +#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 +#define PF_RDTSC_INSTRUCTION_AVAILABLE 8 +#define PF_PAE_ENABLED 9 +#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 +#define PF_SSE_DAZ_MODE_AVAILABLE 11 +#define PF_NX_ENABLED 12 +#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 +#define PF_COMPARE_EXCHANGE128 14 +#define PF_COMPARE64_EXCHANGE128 15 +#define PF_CHANNELS_ENABLED 16 +#define PF_XSAVE_ENABLED 17 +#define PF_ARM_VFP_32_REGISTERS_AVAILABLE 18 +#define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 19 +#define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 20 +#define PF_VIRT_FIRMWARE_ENABLED 21 +#define PF_RDWRFSGSBASE_AVAILABLE 22 +#define PF_FASTFAIL_AVAILABLE 23 +#define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 24 +#define PF_ARM_64BIT_LOADSTORE_ATOMIC 25 +#define PF_ARM_EXTERNAL_CACHE_AVAILABLE 26 +#define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 27 +#define PF_RDRAND_INSTRUCTION_AVAILABLE 28 +#define PF_ARM_V8_INSTRUCTIONS_AVAILABLE 29 +#define PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE 30 +#define PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE 31 +#define PF_RDTSCP_INSTRUCTION_AVAILABLE 32 +#define PF_RDPID_INSTRUCTION_AVAILABLE 33 +#define PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE 34 +#define PF_MONITORX_INSTRUCTION_AVAILABLE 35 +#define PF_SSSE3_INSTRUCTIONS_AVAILABLE 36 +#define PF_SSE4_1_INSTRUCTIONS_AVAILABLE 37 +#define PF_SSE4_2_INSTRUCTIONS_AVAILABLE 38 +#define PF_AVX_INSTRUCTIONS_AVAILABLE 39 +#define PF_AVX2_INSTRUCTIONS_AVAILABLE 40 +#define PF_AVX512F_INSTRUCTIONS_AVAILABLE 41 +#define PF_ERMS_AVAILABLE 42 +#define PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE 43 +#define PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE 44 +#define PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE 45 +#define XSTATE_LEGACY_FLOATING_POINT (0) +#define XSTATE_LEGACY_SSE (1) +#define XSTATE_GSSE (2) +#define XSTATE_AVX (XSTATE_GSSE) +#define XSTATE_MPX_BNDREGS (3) +#define XSTATE_MPX_BNDCSR (4) +#define XSTATE_AVX512_KMASK (5) +#define XSTATE_AVX512_ZMM_H (6) +#define XSTATE_AVX512_ZMM (7) +#define XSTATE_IPT (8) +#define XSTATE_PASID (10) +#define XSTATE_CET_U (11) +#define XSTATE_CET_S (12) +#define XSTATE_AMX_TILE_CONFIG (17) +#define XSTATE_AMX_TILE_DATA (18) +#define XSTATE_LWP (62) +#define MAXIMUM_XSTATE_FEATURES (64) +#define XSTATE_MASK_LEGACY_FLOATING_POINT (1ULL << (XSTATE_LEGACY_FLOATING_POINT)) +#define XSTATE_MASK_LEGACY_SSE (1ULL << (XSTATE_LEGACY_SSE)) +#define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE) +#define XSTATE_MASK_GSSE (1LLU << (XSTATE_GSSE)) +#define XSTATE_MASK_AVX (XSTATE_MASK_GSSE) +#define XSTATE_MASK_MPX ((1LLU << (XSTATE_MPX_BNDREGS)) | (1LLU << (XSTATE_MPX_BNDCSR))) +#define XSTATE_MASK_AVX512 ((1LLU << (XSTATE_AVX512_KMASK)) | (1LLU << (XSTATE_AVX512_ZMM_H)) | (1LLU << (XSTATE_AVX512_ZMM))) +#define XSTATE_MASK_IPT (1LLU << (XSTATE_IPT)) +#define XSTATE_MASK_PASID (1LLU << (XSTATE_PASID)) +#define XSTATE_MASK_CET_U (1LLU << (XSTATE_CET_U)) +#define XSTATE_MASK_CET_S (1LLU << (XSTATE_CET_S)) +#define XSTATE_MASK_AMX_TILE_CONFIG (1LLU << (XSTATE_AMX_TILE_CONFIG)) +#define XSTATE_MASK_AMX_TILE_DATA (1LLU << (XSTATE_AMX_TILE_DATA)) +#define XSTATE_MASK_LWP (1LLU << (XSTATE_LWP)) +#define XSTATE_MASK_PERSISTENT ((1LLU << (XSTATE_MPX_BNDCSR)) | XSTATE_MASK_LWP) +#define XSTATE_MASK_USER_VISIBLE_SUPERVISOR (XSTATE_MASK_CET_U) +#define XSTATE_MASK_LARGE_FEATURES (XSTATE_MASK_AMX_TILE_DATA) +#define XSTATE_COMPACTION_ENABLE (63) +#define XSTATE_COMPACTION_ENABLE_MASK (1ULL << (XSTATE_COMPACTION_ENABLE)) +#define XSTATE_ALIGN_BIT (1) +#define XSTATE_ALIGN_MASK (1ULL << (XSTATE_ALIGN_BIT)) +#define XSTATE_XFD_BIT (2) +#define XSTATE_XFD_MASK (1ULL << (XSTATE_XFD_BIT)) +#define XSTATE_CONTROLFLAG_XSAVEOPT_MASK (1) +#define XSTATE_CONTROLFLAG_XSAVEC_MASK (2) +#define XSTATE_CONTROLFLAG_XFD_MASK (4) +#define XSTATE_CONTROLFLAG_VALID_MASK (XSTATE_CONTROLFLAG_XSAVEOPT_MASK | XSTATE_CONTROLFLAG_XSAVEC_MASK | XSTATE_CONTROLFLAG_XFD_MASK) + typedef struct _XSTATE_FEATURE { + DWORD Offset; + DWORD Size; + } XSTATE_FEATURE,*PXSTATE_FEATURE; + typedef struct _XSTATE_CONFIGURATION { + DWORD64 EnabledFeatures; + DWORD64 EnabledVolatileFeatures; + DWORD Size; + __extension__ union { + DWORD ControlFlags; + __extension__ struct { + DWORD OptimizedSave : 1; + DWORD CompactionEnabled : 1; + DWORD ExtendedFeatureDisable : 1; + }; + }; + XSTATE_FEATURE Features[(64)]; + DWORD64 EnabledSupervisorFeatures; + DWORD64 AlignedFeatures; + DWORD AllFeatureSize; + DWORD AllFeatures[(64)]; + DWORD64 EnabledUserVisibleSupervisorFeatures; + DWORD64 ExtendedFeatureDisableFeatures; + DWORD AllNonLargeFeatureSize; + DWORD Spare; + } XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION; + typedef struct _MEMORY_BASIC_INFORMATION { + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + WORD PartitionId; + SIZE_T RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; + } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION; + typedef struct _MEMORY_BASIC_INFORMATION32 { + DWORD BaseAddress; + DWORD AllocationBase; + DWORD AllocationProtect; + DWORD RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; + } MEMORY_BASIC_INFORMATION32,*PMEMORY_BASIC_INFORMATION32; + typedef struct __attribute__ ((__aligned__ (16))) _MEMORY_BASIC_INFORMATION64 { + ULONGLONG BaseAddress; + ULONGLONG AllocationBase; + DWORD AllocationProtect; + DWORD __alignment1; + ULONGLONG RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; + DWORD __alignment2; + } MEMORY_BASIC_INFORMATION64,*PMEMORY_BASIC_INFORMATION64; +#define CFG_CALL_TARGET_VALID 0x01 +#define CFG_CALL_TARGET_PROCESSED 0x02 +#define CFG_CALL_TARGET_CONVERT_EXPORT_SUPPRESSED_TO_VALID 0x04 +#define CFG_CALL_TARGET_VALID_XFG (0x08) +#define CFG_CALL_TARGET_CONVERT_XFG_TO_CFG (0x10) + typedef struct _CFG_CALL_TARGET_INFO { + ULONG_PTR Offset; + ULONG_PTR Flags; + } CFG_CALL_TARGET_INFO, *PCFG_CALL_TARGET_INFO; +#define SECTION_QUERY 0x0001 +#define SECTION_MAP_WRITE 0x0002 +#define SECTION_MAP_READ 0x0004 +#define SECTION_MAP_EXECUTE 0x0008 +#define SECTION_EXTEND_SIZE 0x0010 +#define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 +#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE) +#define SESSION_QUERY_ACCESS 0x1 +#define SESSION_MODIFY_ACCESS 0x2 +#define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SESSION_QUERY_ACCESS | SESSION_MODIFY_ACCESS) +#define PAGE_NOACCESS 0x01 +#define PAGE_READONLY 0x02 +#define PAGE_READWRITE 0x04 +#define PAGE_WRITECOPY 0x08 +#define PAGE_EXECUTE 0x10 +#define PAGE_EXECUTE_READ 0x20 +#define PAGE_EXECUTE_READWRITE 0x40 +#define PAGE_EXECUTE_WRITECOPY 0x80 +#define PAGE_GUARD 0x100 +#define PAGE_NOCACHE 0x200 +#define PAGE_WRITECOMBINE 0x400 +#define PAGE_GRAPHICS_NOACCESS 0x0800 +#define PAGE_GRAPHICS_READONLY 0x1000 +#define PAGE_GRAPHICS_READWRITE 0x2000 +#define PAGE_GRAPHICS_EXECUTE 0x4000 +#define PAGE_GRAPHICS_EXECUTE_READ 0x8000 +#define PAGE_GRAPHICS_EXECUTE_READWRITE 0x10000 +#define PAGE_GRAPHICS_COHERENT 0x20000 +#define PAGE_GRAPHICS_NOCACHE 0x40000 +#define PAGE_ENCLAVE_THREAD_CONTROL 0x80000000 +#define PAGE_REVERT_TO_FILE_MAP 0x80000000 +#define PAGE_TARGETS_NO_UPDATE 0x40000000 +#define PAGE_TARGETS_INVALID 0x40000000 +#define PAGE_ENCLAVE_UNVALIDATED 0x20000000 +#define PAGE_ENCLAVE_MASK 0x10000000 +#define PAGE_ENCLAVE_DECOMMIT (PAGE_ENCLAVE_MASK | 0) +#define PAGE_ENCLAVE_SS_FIRST (PAGE_ENCLAVE_MASK | 1) +#define PAGE_ENCLAVE_SS_REST (PAGE_ENCLAVE_MASK | 2) +#define MEM_COMMIT 0x1000 +#define MEM_RESERVE 0x2000 +#define MEM_REPLACE_PLACEHOLDER 0x4000 +#define MEM_DECOMMIT 0x4000 +#define MEM_RELEASE 0x8000 +#define MEM_FREE 0x10000 +#define MEM_PRIVATE 0x20000 +#define MEM_RESERVE_PLACEHOLDER 0x40000 +#define MEM_MAPPED 0x40000 +#define MEM_RESET 0x80000 +#define MEM_TOP_DOWN 0x100000 +#define MEM_WRITE_WATCH 0x200000 +#define MEM_PHYSICAL 0x400000 +#define MEM_ROTATE 0x800000 +#define MEM_DIFFERENT_IMAGE_BASE_OK 0x800000 +#define MEM_RESET_UNDO 0x1000000 +#define MEM_LARGE_PAGES 0x20000000 +#define MEM_4MB_PAGES 0x80000000 +#define MEM_64K_PAGES (MEM_LARGE_PAGES | MEM_PHYSICAL) +#define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x00000001 +#define MEM_COALESCE_PLACEHOLDERS 0x00000001 +#define MEM_PRESERVE_PLACEHOLDER 0x00000002 + typedef struct _MEM_ADDRESS_REQUIREMENTS { + PVOID LowestStartingAddress; + PVOID HighestEndingAddress; + SIZE_T Alignment; + } MEM_ADDRESS_REQUIREMENTS, *PMEM_ADDRESS_REQUIREMENTS; +#define MEM_EXTENDED_PARAMETER_GRAPHICS 0x01 +#define MEM_EXTENDED_PARAMETER_NONPAGED 0x02 +#define MEM_EXTENDED_PARAMETER_ZERO_PAGES_OPTIONAL 0x04 +#define MEM_EXTENDED_PARAMETER_NONPAGED_LARGE 0x08 +#define MEM_EXTENDED_PARAMETER_NONPAGED_HUGE 0x10 +#define MEM_EXTENDED_PARAMETER_SOFT_FAULT_PAGES 0x20 +#define MEM_EXTENDED_PARAMETER_EC_CODE 0x40 +#define MEM_EXTENDED_PARAMETER_IMAGE_NO_HPAT 0x80 +#define MEM_EXTENDED_PARAMETER_NUMA_NODE_MANDATORY MINLONG64 + typedef enum MEM_EXTENDED_PARAMETER_TYPE { + MemExtendedParameterInvalidType = 0, + MemExtendedParameterAddressRequirements, + MemExtendedParameterNumaNode, + MemExtendedParameterPartitionHandle, + MemExtendedParameterUserPhysicalHandle, + MemExtendedParameterAttributeFlags, + MemExtendedParameterImageMachine, + MemExtendedParameterMax + } MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE; +#define MEM_EXTENDED_PARAMETER_TYPE_BITS 8 + typedef struct __attribute__ ((__aligned__ (8))) MEM_EXTENDED_PARAMETER { + __extension__ struct { + DWORD64 Type : 8; + DWORD64 Reserved : 64 - 8; + }; + __extension__ union { + DWORD64 ULong64; + PVOID Pointer; + SIZE_T Size; + HANDLE Handle; + DWORD ULong; + }; + } MEM_EXTENDED_PARAMETER, *PMEM_EXTENDED_PARAMETER; +#define MEMORY_CURRENT_PARTITION_HANDLE ((HANDLE)(LONG_PTR)(-1)) +#define MEMORY_SYSTEM_PARTITION_HANDLE ((HANDLE)(LONG_PTR)(-2)) +#define MEMORY_EXISTING_VAD_PARTITION_HANDLE ((HANDLE)(LONG_PTR)(-3)) +#define MEM_DEDICATED_ATTRIBUTE_NOT_SPECIFIED ((DWORD64)(-1)) + typedef enum _MEM_DEDICATED_ATTRIBUTE_TYPE { + MemDedicatedAttributeReadBandwidth = 0, + MemDedicatedAttributeReadLatency, + MemDedicatedAttributeWriteBandwidth, + MemDedicatedAttributeWriteLatency, + MemDedicatedAttributeMax + } MEM_DEDICATED_ATTRIBUTE_TYPE, *PMEM_DEDICATED_ATTRIBUTE_TYPE; +#define SEC_HUGE_PAGES 0x20000 +#define SEC_PARTITION_OWNER_HANDLE 0x40000 +#define SEC_64K_PAGES 0x80000 +#define SEC_FILE 0x800000 +#define SEC_IMAGE 0x1000000 +#define SEC_PROTECTED_IMAGE 0x2000000 +#define SEC_RESERVE 0x4000000 +#define SEC_COMMIT 0x8000000 +#define SEC_NOCACHE 0x10000000 +#define SEC_WRITECOMBINE 0x40000000 +#define SEC_LARGE_PAGES 0x80000000 +#define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE) + typedef enum MEM_SECTION_EXTENDED_PARAMETER_TYPE { + MemSectionExtendedParameterInvalidType = 0, + MemSectionExtendedParameterUserPhysicalFlags, + MemSectionExtendedParameterNumaNode, + MemSectionExtendedParameterSigningLevel, + MemSectionExtendedParameterMax + } MEM_SECTION_EXTENDED_PARAMETER_TYPE, *PMEM_SECTION_EXTENDED_PARAMETER_TYPE; +#define MEM_IMAGE SEC_IMAGE +#define WRITE_WATCH_FLAG_RESET 0x01 +#define ENCLAVE_TYPE_SGX 0x00000001 +#define ENCLAVE_TYPE_SGX2 0x00000002 + typedef struct _ENCLAVE_CREATE_INFO_SGX { + BYTE Secs[4096]; + } ENCLAVE_CREATE_INFO_SGX, *PENCLAVE_CREATE_INFO_SGX; + typedef struct _ENCLAVE_INIT_INFO_SGX { + BYTE SigStruct[1808]; + BYTE Reserved1[240]; + BYTE EInitToken[304]; + BYTE Reserved2[1744]; + } ENCLAVE_INIT_INFO_SGX, *PENCLAVE_INIT_INFO_SGX; +#define ENCLAVE_TYPE_VBS 0x00000010 + typedef struct _ENCLAVE_CREATE_INFO_VBS { + DWORD Flags; + BYTE OwnerID[32]; + } ENCLAVE_CREATE_INFO_VBS, *PENCLAVE_CREATE_INFO_VBS; +#define ENCLAVE_VBS_FLAG_DEBUG 0x00000001 +#define ENCLAVE_TYPE_VBS_BASIC 0x00000011 + typedef struct _ENCLAVE_CREATE_INFO_VBS_BASIC { + DWORD Flags; + BYTE OwnerID[32]; + } ENCLAVE_CREATE_INFO_VBS_BASIC, *PENCLAVE_CREATE_INFO_VBS_BASIC; + typedef struct _ENCLAVE_LOAD_DATA_VBS_BASIC { + DWORD PageType; + } ENCLAVE_LOAD_DATA_VBS_BASIC, *PENCLAVE_LOAD_DATA_VBS_BASIC; +#define VBS_BASIC_PAGE_MEASURED_DATA 0x00000001 +#define VBS_BASIC_PAGE_UNMEASURED_DATA 0x00000002 +#define VBS_BASIC_PAGE_ZERO_FILL 0x00000003 +#define VBS_BASIC_PAGE_THREAD_DESCRIPTOR 0x00000004 +#define VBS_BASIC_PAGE_SYSTEM_CALL 0x00000005 + typedef struct _ENCLAVE_INIT_INFO_VBS_BASIC { + BYTE FamilyId[16]; + BYTE ImageId[16]; + ULONGLONG EnclaveSize; + DWORD EnclaveSvn; + DWORD Reserved; + __extension__ union { + HANDLE SignatureInfoHandle; + ULONGLONG Unused; + }; + } ENCLAVE_INIT_INFO_VBS_BASIC, *PENCLAVE_INIT_INFO_VBS_BASIC; + typedef struct _ENCLAVE_INIT_INFO_VBS { + DWORD Length; + DWORD ThreadCount; + } ENCLAVE_INIT_INFO_VBS, *PENCLAVE_INIT_INFO_VBS; + typedef PVOID (ENCLAVE_TARGET_FUNCTION)(PVOID); + typedef ENCLAVE_TARGET_FUNCTION (*PENCLAVE_TARGET_FUNCTION); + typedef PENCLAVE_TARGET_FUNCTION LPENCLAVE_TARGET_FUNCTION; +#define DEDICATED_MEMORY_CACHE_ELIGIBLE 0x1 + typedef struct __attribute__ ((__aligned__ (8))) _MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE { + MEM_DEDICATED_ATTRIBUTE_TYPE Type; + DWORD Reserved; + DWORD64 Value; + } MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE, *PMEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE; + typedef struct __attribute__ ((__aligned__ (8))) _MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION { + DWORD NextEntryOffset; + DWORD SizeOfInformation; + DWORD Flags; + DWORD AttributesOffset; + DWORD AttributeCount; + DWORD Reserved; + DWORD64 TypeId; + } MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION, *PMEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION; +#define FILE_READ_DATA (0x0001) +#define FILE_LIST_DIRECTORY (0x0001) +#define FILE_WRITE_DATA (0x0002) +#define FILE_ADD_FILE (0x0002) +#define FILE_APPEND_DATA (0x0004) +#define FILE_ADD_SUBDIRECTORY (0x0004) +#define FILE_CREATE_PIPE_INSTANCE (0x0004) +#define FILE_READ_EA (0x0008) +#define FILE_WRITE_EA (0x0010) +#define FILE_EXECUTE (0x0020) +#define FILE_TRAVERSE (0x0020) +#define FILE_DELETE_CHILD (0x0040) +#define FILE_READ_ATTRIBUTES (0x0080) +#define FILE_WRITE_ATTRIBUTES (0x0100) +#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF) +#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE) +#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE) +#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE) +#define FILE_SUPERSEDE 0x00000000 +#define FILE_OPEN 0x00000001 +#define FILE_CREATE 0x00000002 +#define FILE_OPEN_IF 0x00000003 +#define FILE_OVERWRITE 0x00000004 +#define FILE_OVERWRITE_IF 0x00000005 +#define FILE_MAXIMUM_DISPOSITION 0x00000005 +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_SEQUENTIAL_ONLY 0x00000004 +#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 +#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_CREATE_TREE_CONNECTION 0x00000080 +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_NO_EA_KNOWLEDGE 0x00000200 +#define FILE_OPEN_REMOTE_INSTANCE 0x00000400 +#define FILE_RANDOM_ACCESS 0x00000800 +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_BY_FILE_ID 0x00002000 +#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 +#define FILE_NO_COMPRESSION 0x00008000 +#define FILE_RESERVE_OPFILTER 0x00100000 +#define FILE_OPEN_REPARSE_POINT 0x00200000 +#define FILE_OPEN_NO_RECALL 0x00400000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 +#define FILE_SHARE_READ 0x00000001 +#define FILE_SHARE_WRITE 0x00000002 +#define FILE_SHARE_DELETE 0x00000004 +#define FILE_SHARE_VALID_FLAGS 0x00000007 +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#define FILE_ATTRIBUTE_HIDDEN 0x00000002 +#define FILE_ATTRIBUTE_SYSTEM 0x00000004 +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +#define FILE_ATTRIBUTE_DEVICE 0x00000040 +#define FILE_ATTRIBUTE_NORMAL 0x00000080 +#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 +#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 +#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 +#define FILE_ATTRIBUTE_OFFLINE 0x00001000 +#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 +#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 +#define FILE_ATTRIBUTE_INTEGRITY_STREAM 0x00008000 +#define FILE_ATTRIBUTE_VIRTUAL 0x00010000 +#define FILE_ATTRIBUTE_NO_SCRUB_DATA 0x00020000 +#define FILE_ATTRIBUTE_EA 0x00040000 +#define FILE_ATTRIBUTE_PINNED 0x00080000 +#define FILE_ATTRIBUTE_UNPINNED 0x00100000 +#define FILE_ATTRIBUTE_RECALL_ON_OPEN 0x00040000 +#define FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x00400000 +#define TREE_CONNECT_ATTRIBUTE_PRIVACY 0x00004000 +#define TREE_CONNECT_ATTRIBUTE_INTEGRITY 0x00008000 +#define TREE_CONNECT_ATTRIBUTE_GLOBAL 0x00000004 +#define TREE_CONNECT_ATTRIBUTE_PINNED 0x00000002 +#define FILE_ATTRIBUTE_STRICTLY_SEQUENTIAL 0x20000000 +#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 +#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 +#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 +#define FILE_NOTIFY_CHANGE_SIZE 0x00000008 +#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 +#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 +#define FILE_NOTIFY_CHANGE_CREATION 0x00000040 +#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 +#define FILE_ACTION_ADDED 0x00000001 +#define FILE_ACTION_REMOVED 0x00000002 +#define FILE_ACTION_MODIFIED 0x00000003 +#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 +#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 +#define MAILSLOT_NO_MESSAGE ((DWORD)-1) +#define MAILSLOT_WAIT_FOREVER ((DWORD)-1) +#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 +#define FILE_CASE_PRESERVED_NAMES 0x00000002 +#define FILE_UNICODE_ON_DISK 0x00000004 +#define FILE_PERSISTENT_ACLS 0x00000008 +#define FILE_FILE_COMPRESSION 0x00000010 +#define FILE_VOLUME_QUOTAS 0x00000020 +#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 +#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 +#define FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200 +#define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400 +#define FILE_SUPPORTS_BYPASS_IO 0x00000800 +#define FILE_SUPPORTS_STREAM_SNAPSHOTS 0x00001000 +#define FILE_SUPPORTS_CASE_SENSITIVE_DIRS 0x00002000 +#define FILE_VOLUME_IS_COMPRESSED 0x00008000 +#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 +#define FILE_SUPPORTS_ENCRYPTION 0x00020000 +#define FILE_NAMED_STREAMS 0x00040000 +#define FILE_READ_ONLY_VOLUME 0x00080000 +#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 +#define FILE_SUPPORTS_TRANSACTIONS 0x00200000 +#define FILE_SUPPORTS_HARD_LINKS 0x00400000 +#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 +#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 +#define FILE_SUPPORTS_USN_JOURNAL 0x02000000 +#define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 +#define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 +#define FILE_SUPPORTS_SPARSE_VDL 0x10000000 +#define FILE_DAX_VOLUME 0x20000000 +#define FILE_SUPPORTS_GHOSTING 0x40000000 +#define FILE_INVALID_FILE_ID ((LONGLONG)(-1LL)) + typedef struct _FILE_ID_128 { + BYTE Identifier[16]; + } FILE_ID_128, *PFILE_ID_128; + typedef struct _FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR FileName[1]; + } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION; + typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastModificationTime; + LARGE_INTEGER LastChangeTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER AllocatedLength; + LARGE_INTEGER FileSize; + DWORD FileAttributes; + __extension__ union { + DWORD ReparsePointTag; + DWORD EaSize; + }; + LARGE_INTEGER FileId; + LARGE_INTEGER ParentFileId; + DWORD FileNameLength; + WCHAR FileName[1]; + } FILE_NOTIFY_EXTENDED_INFORMATION,*PFILE_NOTIFY_EXTENDED_INFORMATION; +#define FILE_NAME_FLAG_HARDLINK 0 +#define FILE_NAME_FLAG_NTFS 0x01 +#define FILE_NAME_FLAG_DOS 0x02 +#define FILE_NAME_FLAG_BOTH 0x03 +#define FILE_NAME_FLAGS_UNSPECIFIED 0x80 + typedef struct _FILE_NOTIFY_FULL_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastModificationTime; + LARGE_INTEGER LastChangeTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER AllocatedLength; + LARGE_INTEGER FileSize; + DWORD FileAttributes; + __extension__ union { + DWORD ReparsePointTag; + DWORD EaSize; + }; + LARGE_INTEGER FileId; + LARGE_INTEGER ParentFileId; + WORD FileNameLength; + BYTE FileNameFlags; + BYTE Reserved; + WCHAR FileName[1]; + } FILE_NOTIFY_FULL_INFORMATION,*PFILE_NOTIFY_FULL_INFORMATION; +#define FILE_CS_FLAG_CASE_SENSITIVE_DIR 0x00000001 + typedef union _FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; + } FILE_SEGMENT_ELEMENT,*PFILE_SEGMENT_ELEMENT; + typedef struct _REPARSE_GUID_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; + struct { + BYTE DataBuffer[1]; + } GenericReparseBuffer; + } REPARSE_GUID_DATA_BUFFER,*PREPARSE_GUID_DATA_BUFFER; +#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER,GenericReparseBuffer) +#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 *1024) +#define SYMLINK_FLAG_RELATIVE 1 +#define IO_REPARSE_TAG_RESERVED_ZERO (0) +#define IO_REPARSE_TAG_RESERVED_ONE (1) +#define IO_REPARSE_TAG_RESERVED_TWO (2) +#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_TWO +#define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000)) +#define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000)) +#define IsReparseTagDirectory(_tag) (((_tag) & 0x10000000)) +#define IO_REPARSE_TAG_MOUNT_POINT (__MSABI_LONG(0xA0000003)) +#define IO_REPARSE_TAG_HSM (__MSABI_LONG(0xC0000004)) +#define IO_REPARSE_TAG_DRIVE_EXTENDER (__MSABI_LONG(0x80000005)) +#define IO_REPARSE_TAG_HSM2 (__MSABI_LONG(0x80000006)) +#define IO_REPARSE_TAG_SIS (__MSABI_LONG(0x80000007)) +#define IO_REPARSE_TAG_WIM (__MSABI_LONG(0x80000008)) +#define IO_REPARSE_TAG_CSV (__MSABI_LONG(0x80000009)) +#define IO_REPARSE_TAG_DFS (__MSABI_LONG(0x8000000A)) +#define IO_REPARSE_TAG_FILTER_MANAGER (__MSABI_LONG(0x8000000B)) +#define IO_REPARSE_TAG_SYMLINK (__MSABI_LONG(0xA000000C)) +#define IO_REPARSE_TAG_IIS_CACHE (__MSABI_LONG(0xA0000010)) +#define IO_REPARSE_TAG_DFSR (__MSABI_LONG(0x80000012)) +#define IO_REPARSE_TAG_DEDUP (__MSABI_LONG(0x80000013)) +#define IO_REPARSE_TAG_NFS (__MSABI_LONG(0x80000014)) +#define IO_REPARSE_TAG_FILE_PLACEHOLDER (__MSABI_LONG(0x80000015)) +#define IO_REPARSE_TAG_WOF (__MSABI_LONG(0x80000017)) +#define IO_REPARSE_TAG_WCI (__MSABI_LONG(0x80000018)) +#define IO_REPARSE_TAG_WCI_1 (__MSABI_LONG(0x90001018)) +#define IO_REPARSE_TAG_GLOBAL_REPARSE (__MSABI_LONG(0xA0000019)) +#define IO_REPARSE_TAG_CLOUD (__MSABI_LONG(0x9000001A)) +#define IO_REPARSE_TAG_CLOUD_1 (__MSABI_LONG(0x9000101A)) +#define IO_REPARSE_TAG_CLOUD_2 (__MSABI_LONG(0x9000201A)) +#define IO_REPARSE_TAG_CLOUD_3 (__MSABI_LONG(0x9000301A)) +#define IO_REPARSE_TAG_CLOUD_4 (__MSABI_LONG(0x9000401A)) +#define IO_REPARSE_TAG_CLOUD_5 (__MSABI_LONG(0x9000501A)) +#define IO_REPARSE_TAG_CLOUD_6 (__MSABI_LONG(0x9000601A)) +#define IO_REPARSE_TAG_CLOUD_7 (__MSABI_LONG(0x9000701A)) +#define IO_REPARSE_TAG_CLOUD_8 (__MSABI_LONG(0x9000801A)) +#define IO_REPARSE_TAG_CLOUD_9 (__MSABI_LONG(0x9000901A)) +#define IO_REPARSE_TAG_CLOUD_A (__MSABI_LONG(0x9000A01A)) +#define IO_REPARSE_TAG_CLOUD_B (__MSABI_LONG(0x9000B01A)) +#define IO_REPARSE_TAG_CLOUD_C (__MSABI_LONG(0x9000C01A)) +#define IO_REPARSE_TAG_CLOUD_D (__MSABI_LONG(0x9000D01A)) +#define IO_REPARSE_TAG_CLOUD_E (__MSABI_LONG(0x9000E01A)) +#define IO_REPARSE_TAG_CLOUD_F (__MSABI_LONG(0x9000F01A)) +#define IO_REPARSE_TAG_CLOUD_MASK (__MSABI_LONG(0x0000F000)) +#define IO_REPARSE_TAG_APPEXECLINK (__MSABI_LONG(0x8000001B)) +#define IO_REPARSE_TAG_PROJFS (__MSABI_LONG(0x9000001C)) +#define IO_REPARSE_TAG_STORAGE_SYNC (__MSABI_LONG(0x8000001E)) +#define IO_REPARSE_TAG_WCI_TOMBSTONE (__MSABI_LONG(0xA000001F)) +#define IO_REPARSE_TAG_UNHANDLED (__MSABI_LONG(0x80000020)) +#define IO_REPARSE_TAG_ONEDRIVE (__MSABI_LONG(0x80000021)) +#define IO_REPARSE_TAG_PROJFS_TOMBSTONE (__MSABI_LONG(0xA0000022)) +#define IO_REPARSE_TAG_AF_UNIX (__MSABI_LONG(0x80000023)) +#define IO_REPARSE_TAG_WCI_LINK (__MSABI_LONG(0xA0000027)) +#define IO_REPARSE_TAG_WCI_LINK_1 (__MSABI_LONG(0xA0001027)) +#define IO_REPARSE_TAG_DATALESS_CIM (__MSABI_LONG(0xA0000028)) +#define IO_COMPLETION_MODIFY_STATE 0x0002 +#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +#define DUPLICATE_CLOSE_SOURCE 0x00000001 +#define DUPLICATE_SAME_ACCESS 0x00000002 +#define POWERBUTTON_ACTION_INDEX_NOTHING 0 +#define POWERBUTTON_ACTION_INDEX_SLEEP 1 +#define POWERBUTTON_ACTION_INDEX_HIBERNATE 2 +#define POWERBUTTON_ACTION_INDEX_SHUTDOWN 3 +#define POWERBUTTON_ACTION_VALUE_NOTHING 0 +#define POWERBUTTON_ACTION_VALUE_SLEEP 2 +#define POWERBUTTON_ACTION_VALUE_HIBERNATE 3 +#define POWERBUTTON_ACTION_VALUE_SHUTDOWN 6 +#define PERFSTATE_POLICY_CHANGE_IDEAL 0 +#define PERFSTATE_POLICY_CHANGE_SINGLE 1 +#define PERFSTATE_POLICY_CHANGE_ROCKET 2 +#define PERFSTATE_POLICY_CHANGE_MAX PERFSTATE_POLICY_CHANGE_ROCKET +#define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0 +#define PROCESSOR_PERF_BOOST_POLICY_MAX 100 +#define PROCESSOR_PERF_BOOST_MODE_DISABLED 0 +#define PROCESSOR_PERF_BOOST_MODE_ENABLED 1 +#define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 2 +#define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 3 +#define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 4 +#define PROCESSOR_PERF_BOOST_MODE_MAX PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE +#define CORE_PARKING_POLICY_CHANGE_IDEAL 0 +#define CORE_PARKING_POLICY_CHANGE_SINGLE 1 +#define CORE_PARKING_POLICY_CHANGE_ROCKET 2 +#define CORE_PARKING_POLICY_CHANGE_MULTISTEP 3 +#define CORE_PARKING_POLICY_CHANGE_MAX CORE_PARKING_POLICY_CHANGE_MULTISTEP +#define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0 +#define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1 + extern const GUID GUID_MAX_POWER_SAVINGS; + extern const GUID GUID_MIN_POWER_SAVINGS; + extern const GUID GUID_TYPICAL_POWER_SAVINGS; + extern const GUID NO_SUBGROUP_GUID; + extern const GUID ALL_POWERSCHEMES_GUID; + extern const GUID GUID_POWERSCHEME_PERSONALITY; + extern const GUID GUID_ACTIVE_POWERSCHEME; + extern const GUID GUID_IDLE_RESILIENCY_SUBGROUP; + extern const GUID GUID_IDLE_RESILIENCY_PERIOD; + extern const GUID GUID_DISK_COALESCING_POWERDOWN_TIMEOUT; + extern const GUID GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT; + extern const GUID GUID_VIDEO_SUBGROUP; + extern const GUID GUID_VIDEO_POWERDOWN_TIMEOUT; + extern const GUID GUID_VIDEO_ANNOYANCE_TIMEOUT; + extern const GUID GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE; + extern const GUID GUID_VIDEO_DIM_TIMEOUT; + extern const GUID GUID_VIDEO_ADAPTIVE_POWERDOWN; + extern const GUID GUID_MONITOR_POWER_ON; + extern const GUID GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS; + extern const GUID GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS; + extern const GUID GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS; + extern const GUID GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS; + extern const GUID GUID_CONSOLE_DISPLAY_STATE; + extern const GUID GUID_ALLOW_DISPLAY_REQUIRED; + extern const GUID GUID_VIDEO_CONSOLE_LOCK_TIMEOUT; + extern const GUID GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP; + extern const GUID GUID_NON_ADAPTIVE_INPUT_TIMEOUT; + extern const GUID GUID_DISK_SUBGROUP; + extern const GUID GUID_DISK_POWERDOWN_TIMEOUT; + extern const GUID GUID_DISK_IDLE_TIMEOUT; + extern const GUID GUID_DISK_BURST_IGNORE_THRESHOLD; + extern const GUID GUID_DISK_ADAPTIVE_POWERDOWN; + extern const GUID GUID_SLEEP_SUBGROUP; + extern const GUID GUID_SLEEP_IDLE_THRESHOLD; + extern const GUID GUID_STANDBY_TIMEOUT; + extern const GUID GUID_UNATTEND_SLEEP_TIMEOUT; + extern const GUID GUID_HIBERNATE_TIMEOUT; + extern const GUID GUID_HIBERNATE_FASTS4_POLICY; + extern const GUID GUID_CRITICAL_POWER_TRANSITION; + extern const GUID GUID_SYSTEM_AWAYMODE; + extern const GUID GUID_ALLOW_AWAYMODE; + extern const GUID GUID_ALLOW_STANDBY_STATES; + extern const GUID GUID_ALLOW_RTC_WAKE; + extern const GUID GUID_ALLOW_SYSTEM_REQUIRED; + extern const GUID GUID_SYSTEM_BUTTON_SUBGROUP; + extern const GUID GUID_POWERBUTTON_ACTION; + extern const GUID GUID_SLEEPBUTTON_ACTION; + extern const GUID GUID_USERINTERFACEBUTTON_ACTION; + extern const GUID GUID_LIDCLOSE_ACTION; + extern const GUID GUID_LIDOPEN_POWERSTATE; + extern const GUID GUID_BATTERY_SUBGROUP; + extern const GUID GUID_BATTERY_DISCHARGE_ACTION_0; + extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_0; + extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_0; + extern const GUID GUID_BATTERY_DISCHARGE_ACTION_1; + extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_1; + extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_1; + extern const GUID GUID_BATTERY_DISCHARGE_ACTION_2; + extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_2; + extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_2; + extern const GUID GUID_BATTERY_DISCHARGE_ACTION_3; + extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_3; + extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_3; + extern const GUID GUID_PROCESSOR_SETTINGS_SUBGROUP; + extern const GUID GUID_PROCESSOR_THROTTLE_POLICY; + extern const GUID GUID_PROCESSOR_THROTTLE_MAXIMUM; + extern const GUID GUID_PROCESSOR_THROTTLE_MINIMUM; + extern const GUID GUID_PROCESSOR_ALLOW_THROTTLING; + extern const GUID GUID_PROCESSOR_IDLESTATE_POLICY; + extern const GUID GUID_PROCESSOR_PERFSTATE_POLICY; + extern const GUID GUID_PROCESSOR_PERF_INCREASE_THRESHOLD; + extern const GUID GUID_PROCESSOR_PERF_DECREASE_THRESHOLD; + extern const GUID GUID_PROCESSOR_PERF_INCREASE_POLICY; + extern const GUID GUID_PROCESSOR_PERF_DECREASE_POLICY; + extern const GUID GUID_PROCESSOR_PERF_INCREASE_TIME; + extern const GUID GUID_PROCESSOR_PERF_DECREASE_TIME; + extern const GUID GUID_PROCESSOR_PERF_TIME_CHECK; + extern const GUID GUID_PROCESSOR_PERF_BOOST_POLICY; + extern const GUID GUID_PROCESSOR_PERF_BOOST_MODE; + extern const GUID GUID_PROCESSOR_IDLE_ALLOW_SCALING; + extern const GUID GUID_PROCESSOR_IDLE_DISABLE; + extern const GUID GUID_PROCESSOR_IDLE_STATE_MAXIMUM; + extern const GUID GUID_PROCESSOR_IDLE_TIME_CHECK; + extern const GUID GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD; + extern const GUID GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD; + extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD; + extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD; + extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY; + extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY; + extern const GUID GUID_PROCESSOR_CORE_PARKING_MAX_CORES; + extern const GUID GUID_PROCESSOR_CORE_PARKING_MIN_CORES; + extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME; + extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME; + extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR; + extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD; + extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING; + extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR; + extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD; + extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING; + extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD; + extern const GUID GUID_PROCESSOR_PARKING_CORE_OVERRIDE; + extern const GUID GUID_PROCESSOR_PARKING_PERF_STATE; + extern const GUID GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD; + extern const GUID GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD; + extern const GUID GUID_PROCESSOR_PERF_HISTORY; + extern const GUID GUID_PROCESSOR_PERF_LATENCY_HINT; + extern const GUID GUID_PROCESSOR_DISTRIBUTE_UTILITY; + extern const GUID GUID_SYSTEM_COOLING_POLICY; + extern const GUID GUID_LOCK_CONSOLE_ON_WAKE; + extern const GUID GUID_DEVICE_IDLE_POLICY; + extern const GUID GUID_ACDC_POWER_SOURCE; + extern const GUID GUID_LIDSWITCH_STATE_CHANGE; + extern const GUID GUID_BATTERY_PERCENTAGE_REMAINING; + extern const GUID GUID_GLOBAL_USER_PRESENCE; + extern const GUID GUID_SESSION_DISPLAY_STATUS; + extern const GUID GUID_SESSION_USER_PRESENCE; + extern const GUID GUID_IDLE_BACKGROUND_TASK; + extern const GUID GUID_BACKGROUND_TASK_NOTIFICATION; + extern const GUID GUID_APPLAUNCH_BUTTON; + extern const GUID GUID_PCIEXPRESS_SETTINGS_SUBGROUP; + extern const GUID GUID_PCIEXPRESS_ASPM_POLICY; + extern const GUID GUID_ENABLE_SWITCH_FORCED_SHUTDOWN; + typedef enum _SYSTEM_POWER_STATE { + PowerSystemUnspecified = 0,PowerSystemWorking = 1,PowerSystemSleeping1 = 2,PowerSystemSleeping2 = 3,PowerSystemSleeping3 = 4,PowerSystemHibernate = 5,PowerSystemShutdown = 6,PowerSystemMaximum = 7 + } SYSTEM_POWER_STATE,*PSYSTEM_POWER_STATE; +#define POWER_SYSTEM_MAXIMUM 7 + typedef enum { + PowerActionNone = 0, PowerActionReserved, PowerActionSleep, PowerActionHibernate, + PowerActionShutdown, PowerActionShutdownReset, PowerActionShutdownOff, + PowerActionWarmEject + } POWER_ACTION,*PPOWER_ACTION; + typedef enum _DEVICE_POWER_STATE { + PowerDeviceUnspecified = 0, PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3, + PowerDeviceMaximum + } DEVICE_POWER_STATE,*PDEVICE_POWER_STATE; + typedef enum _MONITOR_DISPLAY_STATE { + PowerMonitorOff = 0, PowerMonitorOn, PowerMonitorDim + } MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE; + typedef enum _USER_ACTIVITY_PRESENCE { + PowerUserPresent = 0, + PowerUserNotPresent, + PowerUserInactive, + PowerUserMaximum, + PowerUserInvalid = PowerUserMaximum + } USER_ACTIVITY_PRESENCE,*PUSER_ACTIVITY_PRESENCE; +#define ES_SYSTEM_REQUIRED ((DWORD)0x00000001) +#define ES_DISPLAY_REQUIRED ((DWORD)0x00000002) +#define ES_USER_PRESENT ((DWORD)0x00000004) +#define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040) +#define ES_CONTINUOUS ((DWORD)0x80000000) + typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE; + typedef enum { + LT_DONT_CARE,LT_LOWEST_LATENCY + } LATENCY_TIME; +#define DIAGNOSTIC_REASON_VERSION 0 +#define POWER_REQUEST_CONTEXT_VERSION 0 +#define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001 +#define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002 +#define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 +#define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003) +#define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001 +#define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002 + typedef enum _POWER_REQUEST_TYPE { + PowerRequestDisplayRequired, + PowerRequestSystemRequired, + PowerRequestAwayModeRequired, + PowerRequestExecutionRequired + } POWER_REQUEST_TYPE,*PPOWER_REQUEST_TYPE; +#define PDCAP_D0_SUPPORTED 0x00000001 +#define PDCAP_D1_SUPPORTED 0x00000002 +#define PDCAP_D2_SUPPORTED 0x00000004 +#define PDCAP_D3_SUPPORTED 0x00000008 +#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 +#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 +#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 +#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 +#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 + typedef struct CM_Power_Data_s { + DWORD PD_Size; + DEVICE_POWER_STATE PD_MostRecentPowerState; + DWORD PD_Capabilities; + DWORD PD_D1Latency; + DWORD PD_D2Latency; + DWORD PD_D3Latency; + DEVICE_POWER_STATE PD_PowerStateMapping[7]; + SYSTEM_POWER_STATE PD_DeepestSystemWake; + } CM_POWER_DATA,*PCM_POWER_DATA; + typedef enum { + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent, + SystemPowerStateLogging, + SystemPowerLoggingEntry, + SetPowerSettingValue, + NotifyUserPowerSetting, + PowerInformationLevelUnused0, + SystemMonitorHiberBootPowerOff, + SystemVideoState, + TraceApplicationPowerMessage, + TraceApplicationPowerMessageEnd, + ProcessorPerfStates, + ProcessorIdleStates, + ProcessorCap, + SystemWakeSource, + SystemHiberFileInformation, + TraceServicePowerMessage, + ProcessorLoad, + PowerShutdownNotification, + MonitorCapabilities, + SessionPowerInit, + SessionDisplayState, + PowerRequestCreate, + PowerRequestAction, + GetPowerRequestList, + ProcessorInformationEx, + NotifyUserModeLegacyPowerEvent, + GroupPark, + ProcessorIdleDomains, + WakeTimerList, + SystemHiberFileSize, + ProcessorIdleStatesHv, + ProcessorPerfStatesHv, + ProcessorPerfCapHv, + ProcessorSetIdle, + LogicalProcessorIdling, + UserPresence, + PowerSettingNotificationName, + GetPowerSettingValue, + IdleResiliency, + SessionRITState, + SessionConnectNotification, + SessionPowerCleanup, + SessionLockState, + SystemHiberbootState, + PlatformInformation, + PdcInvocation, + MonitorInvocation, + FirmwareTableInformationRegistered, + SetShutdownSelectedTime, + SuspendResumeInvocation, + PlmPowerRequestCreate, + ScreenOff, + CsDeviceNotification, + PlatformRole, + LastResumePerformance, + DisplayBurst, + ExitLatencySamplingPercentage, + ApplyLowPowerScenarioSettings, + PowerInformationLevelMaximum + } POWER_INFORMATION_LEVEL; + typedef enum { + UserNotPresent = 0, + UserPresent = 1, + UserUnknown = 0xff + } POWER_USER_PRESENCE_TYPE,*PPOWER_USER_PRESENCE_TYPE; + typedef struct _POWER_USER_PRESENCE { + POWER_USER_PRESENCE_TYPE UserPresence; + } POWER_USER_PRESENCE,*PPOWER_USER_PRESENCE; + typedef struct _POWER_SESSION_CONNECT { + BOOLEAN Connected; + BOOLEAN Console; + } POWER_SESSION_CONNECT,*PPOWER_SESSION_CONNECT; + typedef struct _POWER_SESSION_TIMEOUTS { + DWORD InputTimeout; + DWORD DisplayTimeout; + } POWER_SESSION_TIMEOUTS,*PPOWER_SESSION_TIMEOUTS; + typedef struct _POWER_SESSION_RIT_STATE { + BOOLEAN Active; + DWORD LastInputTime; + } POWER_SESSION_RIT_STATE,*PPOWER_SESSION_RIT_STATE; + typedef struct _POWER_SESSION_WINLOGON { + DWORD SessionId; + BOOLEAN Console; + BOOLEAN Locked; + } POWER_SESSION_WINLOGON,*PPOWER_SESSION_WINLOGON; + typedef struct _POWER_IDLE_RESILIENCY { + DWORD CoalescingTimeout; + DWORD IdleResiliencyPeriod; + } POWER_IDLE_RESILIENCY,*PPOWER_IDLE_RESILIENCY; + typedef enum { + MonitorRequestReasonUnknown, + MonitorRequestReasonPowerButton, + MonitorRequestReasonRemoteConnection, + MonitorRequestReasonScMonitorpower, + MonitorRequestReasonUserInput, + MonitorRequestReasonAcDcDisplayBurst, + MonitorRequestReasonUserDisplayBurst, + MonitorRequestReasonPoSetSystemState, + MonitorRequestReasonSetThreadExecutionState, + MonitorRequestReasonFullWake, + MonitorRequestReasonSessionUnlock, + MonitorRequestReasonScreenOffRequest, + MonitorRequestReasonIdleTimeout, + MonitorRequestReasonPolicyChange, + MonitorRequestReasonMax + } POWER_MONITOR_REQUEST_REASON; + typedef struct _POWER_MONITOR_INVOCATION { + BOOLEAN On; + BOOLEAN Console; + POWER_MONITOR_REQUEST_REASON RequestReason; + } POWER_MONITOR_INVOCATION,*PPOWER_MONITOR_INVOCATION; + typedef struct _RESUME_PERFORMANCE { + DWORD PostTimeMs; + ULONGLONG TotalResumeTimeMs; + ULONGLONG ResumeCompleteTimestamp; + } RESUME_PERFORMANCE,*PRESUME_PERFORMANCE; + typedef enum { + PoAc, + PoDc, + PoHot, + PoConditionMaximum + } SYSTEM_POWER_CONDITION; + typedef struct { + DWORD Version; + GUID Guid; + SYSTEM_POWER_CONDITION PowerCondition; + DWORD DataLength; + BYTE Data[1]; + } SET_POWER_SETTING_VALUE,*PSET_POWER_SETTING_VALUE; +#define POWER_SETTING_VALUE_VERSION (0x1) + typedef struct { + GUID Guid; + } NOTIFY_USER_POWER_SETTING,*PNOTIFY_USER_POWER_SETTING; + typedef struct _APPLICATIONLAUNCH_SETTING_VALUE { + LARGE_INTEGER ActivationTime; + DWORD Flags; + DWORD ButtonInstanceID; + } APPLICATIONLAUNCH_SETTING_VALUE,*PAPPLICATIONLAUNCH_SETTING_VALUE; + typedef enum _POWER_PLATFORM_ROLE { + PlatformRoleUnspecified = 0, + PlatformRoleDesktop, + PlatformRoleMobile, + PlatformRoleWorkstation, + PlatformRoleEnterpriseServer, + PlatformRoleSOHOServer, + PlatformRoleAppliancePC, + PlatformRolePerformanceServer, + PlatformRoleSlate, + PlatformRoleMaximum + } POWER_PLATFORM_ROLE,*PPOWER_PLATFORM_ROLE; + typedef struct _POWER_PLATFORM_INFORMATION { + BOOLEAN AoAc; + } POWER_PLATFORM_INFORMATION,*PPOWER_PLATFORM_INFORMATION; +#define POWER_PLATFORM_ROLE_V1 (0x00000001) +#define POWER_PLATFORM_ROLE_V1_MAX (PlatformRolePerformanceServer + 1) +#define POWER_PLATFORM_ROLE_V2 (0x00000002) +#define POWER_PLATFORM_ROLE_V2_MAX (PlatformRoleSlate + 1) +#define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V1 +#define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V1_MAX + typedef struct { + DWORD Granularity; + DWORD Capacity; + } BATTERY_REPORTING_SCALE,*PBATTERY_REPORTING_SCALE; + typedef struct { + DWORD Frequency; + DWORD Flags; + DWORD PercentFrequency; + } PPM_WMI_LEGACY_PERFSTATE,*PPPM_WMI_LEGACY_PERFSTATE; + typedef struct { + DWORD Latency; + DWORD Power; + DWORD TimeCheck; + BYTE PromotePercent; + BYTE DemotePercent; + BYTE StateType; + BYTE Reserved; + DWORD StateFlags; + DWORD Context; + DWORD IdleHandler; + DWORD Reserved1; + } PPM_WMI_IDLE_STATE,*PPPM_WMI_IDLE_STATE; + typedef struct { + DWORD Type; + DWORD Count; + DWORD TargetState; + DWORD OldState; + DWORD64 TargetProcessors; + PPM_WMI_IDLE_STATE State[1]; + } PPM_WMI_IDLE_STATES,*PPPM_WMI_IDLE_STATES; + typedef struct { + DWORD Type; + DWORD Count; + DWORD TargetState; + DWORD OldState; + PVOID TargetProcessors; + PPM_WMI_IDLE_STATE State[1]; + } PPM_WMI_IDLE_STATES_EX,*PPPM_WMI_IDLE_STATES_EX; + typedef struct { + DWORD Frequency; + DWORD Power; + BYTE PercentFrequency; + BYTE IncreaseLevel; + BYTE DecreaseLevel; + BYTE Type; + DWORD IncreaseTime; + DWORD DecreaseTime; + DWORD64 Control; + DWORD64 Status; + DWORD HitCount; + DWORD Reserved1; + DWORD64 Reserved2; + DWORD64 Reserved3; + } PPM_WMI_PERF_STATE,*PPPM_WMI_PERF_STATE; + typedef struct { + DWORD Count; + DWORD MaxFrequency; + DWORD CurrentState; + DWORD MaxPerfState; + DWORD MinPerfState; + DWORD LowestPerfState; + DWORD ThermalConstraint; + BYTE BusyAdjThreshold; + BYTE PolicyType; + BYTE Type; + BYTE Reserved; + DWORD TimerInterval; + DWORD64 TargetProcessors; + DWORD PStateHandler; + DWORD PStateContext; + DWORD TStateHandler; + DWORD TStateContext; + DWORD FeedbackHandler; + DWORD Reserved1; + DWORD64 Reserved2; + PPM_WMI_PERF_STATE State[1]; + } PPM_WMI_PERF_STATES,*PPPM_WMI_PERF_STATES; + typedef struct { + DWORD Count; + DWORD MaxFrequency; + DWORD CurrentState; + DWORD MaxPerfState; + DWORD MinPerfState; + DWORD LowestPerfState; + DWORD ThermalConstraint; + BYTE BusyAdjThreshold; + BYTE PolicyType; + BYTE Type; + BYTE Reserved; + DWORD TimerInterval; + PVOID TargetProcessors; + DWORD PStateHandler; + DWORD PStateContext; + DWORD TStateHandler; + DWORD TStateContext; + DWORD FeedbackHandler; + DWORD Reserved1; + DWORD64 Reserved2; + PPM_WMI_PERF_STATE State[1]; + } PPM_WMI_PERF_STATES_EX,*PPPM_WMI_PERF_STATES_EX; +#define PROC_IDLE_BUCKET_COUNT 6 +#define PROC_IDLE_BUCKET_COUNT_EX 16 + typedef struct { + DWORD IdleTransitions; + DWORD FailedTransitions; + DWORD InvalidBucketIndex; + DWORD64 TotalTime; + DWORD IdleTimeBuckets[6]; + } PPM_IDLE_STATE_ACCOUNTING,*PPPM_IDLE_STATE_ACCOUNTING; + typedef struct { + DWORD StateCount; + DWORD TotalTransitions; + DWORD ResetCount; + DWORD64 StartTime; + PPM_IDLE_STATE_ACCOUNTING State[1]; + } PPM_IDLE_ACCOUNTING,*PPPM_IDLE_ACCOUNTING; + typedef struct { + DWORD64 TotalTimeUs; + DWORD MinTimeUs; + DWORD MaxTimeUs; + DWORD Count; + } PPM_IDLE_STATE_BUCKET_EX,*PPPM_IDLE_STATE_BUCKET_EX; + typedef struct { + DWORD64 TotalTime; + DWORD IdleTransitions; + DWORD FailedTransitions; + DWORD InvalidBucketIndex; + DWORD MinTimeUs; + DWORD MaxTimeUs; + DWORD CancelledTransitions; + PPM_IDLE_STATE_BUCKET_EX IdleTimeBuckets[16]; + } PPM_IDLE_STATE_ACCOUNTING_EX,*PPPM_IDLE_STATE_ACCOUNTING_EX; + typedef struct { + DWORD StateCount; + DWORD TotalTransitions; + DWORD ResetCount; + DWORD AbortCount; + DWORD64 StartTime; + PPM_IDLE_STATE_ACCOUNTING_EX State[1]; + } PPM_IDLE_ACCOUNTING_EX,*PPPM_IDLE_ACCOUNTING_EX; +#define ACPI_PPM_SOFTWARE_ALL 0xfc +#define ACPI_PPM_SOFTWARE_ANY 0xfd +#define ACPI_PPM_HARDWARE_ALL 0xfe +#define MS_PPM_SOFTWARE_ALL 0x1 +#define PPM_FIRMWARE_ACPI1C2 0x1 +#define PPM_FIRMWARE_ACPI1C3 0x2 +#define PPM_FIRMWARE_ACPI1TSTATES 0x4 +#define PPM_FIRMWARE_CST 0x8 +#define PPM_FIRMWARE_CSD 0x10 +#define PPM_FIRMWARE_PCT 0x20 +#define PPM_FIRMWARE_PSS 0x40 +#define PPM_FIRMWARE_XPSS 0x80 +#define PPM_FIRMWARE_PPC 0x100 +#define PPM_FIRMWARE_PSD 0x200 +#define PPM_FIRMWARE_PTC 0x400 +#define PPM_FIRMWARE_TSS 0x800 +#define PPM_FIRMWARE_TPC 0x1000 +#define PPM_FIRMWARE_TSD 0x2000 +#define PPM_FIRMWARE_PCCH 0x4000 +#define PPM_FIRMWARE_PCCP 0x8000 +#define PPM_FIRMWARE_OSC 0x10000 +#define PPM_FIRMWARE_PDC 0x20000 +#define PPM_FIRMWARE_CPC 0x40000 +#define PPM_PERFORMANCE_IMPLEMENTATION_NONE 0 +#define PPM_PERFORMANCE_IMPLEMENTATION_PSTATES 1 +#define PPM_PERFORMANCE_IMPLEMENTATION_PCCV1 2 +#define PPM_PERFORMANCE_IMPLEMENTATION_CPPC 3 +#define PPM_PERFORMANCE_IMPLEMENTATION_PEP 4 +#define PPM_IDLE_IMPLEMENTATION_NONE 0x0 +#define PPM_IDLE_IMPLEMENTATION_CSTATES 0x1 +#define PPM_IDLE_IMPLEMENTATION_PEP 0x2 + typedef struct { + DWORD State; + DWORD Status; + DWORD Latency; + DWORD Speed; + DWORD Processor; + } PPM_PERFSTATE_EVENT,*PPPM_PERFSTATE_EVENT; + typedef struct { + DWORD State; + DWORD Latency; + DWORD Speed; + DWORD64 Processors; + } PPM_PERFSTATE_DOMAIN_EVENT,*PPPM_PERFSTATE_DOMAIN_EVENT; + typedef struct { + DWORD NewState; + DWORD OldState; + DWORD64 Processors; + } PPM_IDLESTATE_EVENT,*PPPM_IDLESTATE_EVENT; + typedef struct { + DWORD ThermalConstraint; + DWORD64 Processors; + } PPM_THERMALCHANGE_EVENT,*PPPM_THERMALCHANGE_EVENT; + typedef struct { + BYTE Mode; + DWORD64 Processors; + } PPM_THERMAL_POLICY_EVENT,*PPPM_THERMAL_POLICY_EVENT; + extern const GUID PPM_PERFSTATE_CHANGE_GUID; + extern const GUID PPM_PERFSTATE_DOMAIN_CHANGE_GUID; + extern const GUID PPM_IDLESTATE_CHANGE_GUID; + extern const GUID PPM_PERFSTATES_DATA_GUID; + extern const GUID PPM_IDLESTATES_DATA_GUID; + extern const GUID PPM_IDLE_ACCOUNTING_GUID; + extern const GUID PPM_IDLE_ACCOUNTING_EX_GUID; + extern const GUID PPM_THERMALCONSTRAINT_GUID; + extern const GUID PPM_PERFMON_PERFSTATE_GUID; + extern const GUID PPM_THERMAL_POLICY_CHANGE_GUID; + typedef struct { + POWER_ACTION Action; + DWORD Flags; + DWORD EventCode; + } POWER_ACTION_POLICY,*PPOWER_ACTION_POLICY; +#define POWER_ACTION_QUERY_ALLOWED 0x00000001 +#define POWER_ACTION_UI_ALLOWED 0x00000002 +#define POWER_ACTION_OVERRIDE_APPS 0x00000004 +#define POWER_ACTION_HIBERBOOT 0x00000008 +#define POWER_ACTION_PSEUDO_TRANSITION 0x08000000 +#define POWER_ACTION_LIGHTEST_FIRST 0x10000000 +#define POWER_ACTION_LOCK_CONSOLE 0x20000000 +#define POWER_ACTION_DISABLE_WAKES 0x40000000 +#define POWER_ACTION_CRITICAL 0x80000000 +#define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001 +#define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002 +#define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004 +#define POWER_USER_NOTIFY_BUTTON 0x00000008 +#define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 +#define POWER_USER_NOTIFY_FORCED_SHUTDOWN 0x00000020 +#define POWER_FORCE_TRIGGER_RESET 0x80000000 +#define BATTERY_DISCHARGE_FLAGS_EVENTCODE_MASK 0x00000007 +#define BATTERY_DISCHARGE_FLAGS_ENABLE 0x80000000 +#define DISCHARGE_POLICY_CRITICAL 0 +#define DISCHARGE_POLICY_LOW 1 +#define NUM_DISCHARGE_POLICIES 4 +#define PROCESSOR_IDLESTATE_POLICY_COUNT 0x3 + typedef struct { + DWORD TimeCheck; + BYTE DemotePercent; + BYTE PromotePercent; + BYTE Spare[2]; + } PROCESSOR_IDLESTATE_INFO,*PPROCESSOR_IDLESTATE_INFO; + typedef struct { + BOOLEAN Enable; + BYTE Spare[3]; + DWORD BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; + } SYSTEM_POWER_LEVEL,*PSYSTEM_POWER_LEVEL; + typedef struct _SYSTEM_POWER_POLICY { + DWORD Revision; + POWER_ACTION_POLICY PowerButton; + POWER_ACTION_POLICY SleepButton; + POWER_ACTION_POLICY LidClose; + SYSTEM_POWER_STATE LidOpenWake; + DWORD Reserved; + POWER_ACTION_POLICY Idle; + DWORD IdleTimeout; + BYTE IdleSensitivity; + BYTE DynamicThrottle; + BYTE Spare2[2]; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + DWORD WinLogonFlags; + DWORD Spare3; + DWORD DozeS4Timeout; + DWORD BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL DischargePolicy[4]; + DWORD VideoTimeout; + BOOLEAN VideoDimDisplay; + DWORD VideoReserved[3]; + DWORD SpindownTimeout; + BOOLEAN OptimizeForPower; + BYTE FanThrottleTolerance; + BYTE ForcedThrottle; + BYTE MinThrottle; + POWER_ACTION_POLICY OverThrottled; + } SYSTEM_POWER_POLICY,*PSYSTEM_POWER_POLICY; +#define PO_THROTTLE_NONE 0 +#define PO_THROTTLE_CONSTANT 1 +#define PO_THROTTLE_DEGRADE 2 +#define PO_THROTTLE_ADAPTIVE 3 +#define PO_THROTTLE_MAXIMUM 4 + typedef struct { + WORD Revision; + union { + WORD AsWORD; + __extension__ struct { + WORD AllowScaling : 1; + WORD Disabled : 1; + WORD Reserved : 14; + } ; + } Flags; + DWORD PolicyCount; + PROCESSOR_IDLESTATE_INFO Policy[0x3]; + } PROCESSOR_IDLESTATE_POLICY,*PPROCESSOR_IDLESTATE_POLICY; + typedef struct _PROCESSOR_POWER_POLICY_INFO { + DWORD TimeCheck; + DWORD DemoteLimit; + DWORD PromoteLimit; + BYTE DemotePercent; + BYTE PromotePercent; + BYTE Spare[2]; + DWORD AllowDemotion:1; + DWORD AllowPromotion:1; + DWORD Reserved:30; + } PROCESSOR_POWER_POLICY_INFO,*PPROCESSOR_POWER_POLICY_INFO; + typedef struct _PROCESSOR_POWER_POLICY { + DWORD Revision; + BYTE DynamicThrottle; + BYTE Spare[3]; + DWORD DisableCStates:1; + DWORD Reserved:31; + DWORD PolicyCount; + PROCESSOR_POWER_POLICY_INFO Policy[3]; + } PROCESSOR_POWER_POLICY,*PPROCESSOR_POWER_POLICY; + typedef struct { + DWORD Revision; + BYTE MaxThrottle; + BYTE MinThrottle; + BYTE BusyAdjThreshold; + __extension__ union { + BYTE Spare; + union { + BYTE AsBYTE; + __extension__ struct { + BYTE NoDomainAccounting : 1; + BYTE IncreasePolicy: 2; + BYTE DecreasePolicy: 2; + BYTE Reserved : 3; + } ; + } Flags; + } ; + DWORD TimeCheck; + DWORD IncreaseTime; + DWORD DecreaseTime; + DWORD IncreasePercent; + DWORD DecreasePercent; + } PROCESSOR_PERFSTATE_POLICY,*PPROCESSOR_PERFSTATE_POLICY; + typedef struct _ADMINISTRATOR_POWER_POLICY { + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + DWORD MinVideoTimeout; + DWORD MaxVideoTimeout; + DWORD MinSpindownTimeout; + DWORD MaxSpindownTimeout; + } ADMINISTRATOR_POWER_POLICY,*PADMINISTRATOR_POWER_POLICY; + typedef struct { + BOOLEAN PowerButtonPresent; + BOOLEAN SleepButtonPresent; + BOOLEAN LidPresent; + BOOLEAN SystemS1; + BOOLEAN SystemS2; + BOOLEAN SystemS3; + BOOLEAN SystemS4; + BOOLEAN SystemS5; + BOOLEAN HiberFilePresent; + BOOLEAN FullWake; + BOOLEAN VideoDimPresent; + BOOLEAN ApmPresent; + BOOLEAN UpsPresent; + BOOLEAN ThermalControl; + BOOLEAN ProcessorThrottle; + BYTE ProcessorMinThrottle; + BYTE ProcessorMaxThrottle; + BOOLEAN FastSystemS4; + BYTE spare2[3]; + BOOLEAN DiskSpinDown; + BYTE spare3[8]; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE BatteryScale[3]; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; + } SYSTEM_POWER_CAPABILITIES,*PSYSTEM_POWER_CAPABILITIES; + typedef struct { + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN Spare1[4]; + DWORD MaxCapacity; + DWORD RemainingCapacity; + DWORD Rate; + DWORD EstimatedTime; + DWORD DefaultAlert1; + DWORD DefaultAlert2; + } SYSTEM_BATTERY_STATE,*PSYSTEM_BATTERY_STATE; +#pragma pack(push,4) + +#define IMAGE_DOS_SIGNATURE 0x5A4D +#define IMAGE_OS2_SIGNATURE 0x454E +#define IMAGE_OS2_SIGNATURE_LE 0x454C +#define IMAGE_VXD_SIGNATURE 0x454C +#define IMAGE_NT_SIGNATURE 0x00004550 +#pragma pack(push,2) + + typedef struct _IMAGE_DOS_HEADER { + WORD e_magic; + WORD e_cblp; + WORD e_cp; + WORD e_crlc; + WORD e_cparhdr; + WORD e_minalloc; + WORD e_maxalloc; + WORD e_ss; + WORD e_sp; + WORD e_csum; + WORD e_ip; + WORD e_cs; + WORD e_lfarlc; + WORD e_ovno; + WORD e_res[4]; + WORD e_oemid; + WORD e_oeminfo; + WORD e_res2[10]; + LONG e_lfanew; + } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER; + typedef struct _IMAGE_OS2_HEADER { + WORD ne_magic; + CHAR ne_ver; + CHAR ne_rev; + WORD ne_enttab; + WORD ne_cbenttab; + LONG ne_crc; + WORD ne_flags; + WORD ne_autodata; + WORD ne_heap; + WORD ne_stack; + LONG ne_csip; + LONG ne_sssp; + WORD ne_cseg; + WORD ne_cmod; + WORD ne_cbnrestab; + WORD ne_segtab; + WORD ne_rsrctab; + WORD ne_restab; + WORD ne_modtab; + WORD ne_imptab; + LONG ne_nrestab; + WORD ne_cmovent; + WORD ne_align; + WORD ne_cres; + BYTE ne_exetyp; + BYTE ne_flagsothers; + WORD ne_pretthunks; + WORD ne_psegrefbytes; + WORD ne_swaparea; + WORD ne_expver; + } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER; + typedef struct _IMAGE_VXD_HEADER { + WORD e32_magic; + BYTE e32_border; + BYTE e32_worder; + DWORD e32_level; + WORD e32_cpu; + WORD e32_os; + DWORD e32_ver; + DWORD e32_mflags; + DWORD e32_mpages; + DWORD e32_startobj; + DWORD e32_eip; + DWORD e32_stackobj; + DWORD e32_esp; + DWORD e32_pagesize; + DWORD e32_lastpagesize; + DWORD e32_fixupsize; + DWORD e32_fixupsum; + DWORD e32_ldrsize; + DWORD e32_ldrsum; + DWORD e32_objtab; + DWORD e32_objcnt; + DWORD e32_objmap; + DWORD e32_itermap; + DWORD e32_rsrctab; + DWORD e32_rsrccnt; + DWORD e32_restab; + DWORD e32_enttab; + DWORD e32_dirtab; + DWORD e32_dircnt; + DWORD e32_fpagetab; + DWORD e32_frectab; + DWORD e32_impmod; + DWORD e32_impmodcnt; + DWORD e32_impproc; + DWORD e32_pagesum; + DWORD e32_datapage; + DWORD e32_preload; + DWORD e32_nrestab; + DWORD e32_cbnrestab; + DWORD e32_nressum; + DWORD e32_autodata; + DWORD e32_debuginfo; + DWORD e32_debuglen; + DWORD e32_instpreload; + DWORD e32_instdemand; + DWORD e32_heapsize; + BYTE e32_res3[12]; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; + } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER; +#pragma pack(pop) + + typedef struct _IMAGE_FILE_HEADER { + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; + } IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER; +#define IMAGE_SIZEOF_FILE_HEADER 20 +#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 +#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 +#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 +#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 +#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 +#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 +#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 +#define IMAGE_FILE_32BIT_MACHINE 0x0100 +#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 +#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 +#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 +#define IMAGE_FILE_SYSTEM 0x1000 +#define IMAGE_FILE_DLL 0x2000 +#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 +#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 +#define IMAGE_FILE_MACHINE_UNKNOWN 0 +#define IMAGE_FILE_MACHINE_I386 0x014c +#define IMAGE_FILE_MACHINE_R3000 0x0162 +#define IMAGE_FILE_MACHINE_R4000 0x0166 +#define IMAGE_FILE_MACHINE_R10000 0x0168 +#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 +#define IMAGE_FILE_MACHINE_ALPHA 0x0184 +#define IMAGE_FILE_MACHINE_SH3 0x01a2 +#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 +#define IMAGE_FILE_MACHINE_SH3E 0x01a4 +#define IMAGE_FILE_MACHINE_SH4 0x01a6 +#define IMAGE_FILE_MACHINE_SH5 0x01a8 +#define IMAGE_FILE_MACHINE_ARM 0x01c0 +#define IMAGE_FILE_MACHINE_ARMV7 0x01c4 +#define IMAGE_FILE_MACHINE_ARMNT 0x01c4 +#define IMAGE_FILE_MACHINE_ARM64 0xaa64 +#define IMAGE_FILE_MACHINE_THUMB 0x01c2 +#define IMAGE_FILE_MACHINE_AM33 0x01d3 +#define IMAGE_FILE_MACHINE_POWERPC 0x01F0 +#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 +#define IMAGE_FILE_MACHINE_IA64 0x0200 +#define IMAGE_FILE_MACHINE_MIPS16 0x0266 +#define IMAGE_FILE_MACHINE_ALPHA64 0x0284 +#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 +#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 +#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 +#define IMAGE_FILE_MACHINE_TRICORE 0x0520 +#define IMAGE_FILE_MACHINE_CEF 0x0CEF +#define IMAGE_FILE_MACHINE_EBC 0x0EBC +#define IMAGE_FILE_MACHINE_AMD64 0x8664 +#define IMAGE_FILE_MACHINE_M32R 0x9041 +#define IMAGE_FILE_MACHINE_CEE 0xc0ee + typedef struct _IMAGE_DATA_DIRECTORY { + DWORD VirtualAddress; + DWORD Size; + } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; +#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 + typedef struct _IMAGE_OPTIONAL_HEADER { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + DWORD SizeOfStackReserve; + DWORD SizeOfStackCommit; + DWORD SizeOfHeapReserve; + DWORD SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY DataDirectory[16]; + } IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32; + typedef struct _IMAGE_ROM_OPTIONAL_HEADER { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD BaseOfBss; + DWORD GprMask; + DWORD CprMask[4]; + DWORD GpValue; + } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER; + typedef struct _IMAGE_OPTIONAL_HEADER64 { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + ULONGLONG ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + ULONGLONG SizeOfStackReserve; + ULONGLONG SizeOfStackCommit; + ULONGLONG SizeOfHeapReserve; + ULONGLONG SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY DataDirectory[16]; + } IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64; +#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 +#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 +#define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224 +#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240 +#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b +#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b +#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 + typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; + typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; +#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER +#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC + typedef struct _IMAGE_NT_HEADERS64 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER64 OptionalHeader; + } IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64; + typedef struct _IMAGE_NT_HEADERS { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER32 OptionalHeader; + } IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32; + typedef struct _IMAGE_ROM_HEADERS { + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; + } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS; + typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; + typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; +#define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader)) +#define IMAGE_SUBSYSTEM_UNKNOWN 0 +#define IMAGE_SUBSYSTEM_NATIVE 1 +#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 +#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 +#define IMAGE_SUBSYSTEM_OS2_CUI 5 +#define IMAGE_SUBSYSTEM_POSIX_CUI 7 +#define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 +#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 +#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 +#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 +#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 +#define IMAGE_SUBSYSTEM_EFI_ROM 13 +#define IMAGE_SUBSYSTEM_XBOX 14 +#define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16 +#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020 +#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 +#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 +#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 +#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 +#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 +#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 +#define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000 +#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 +#define IMAGE_DLLCHARACTERISTICS_GUARD_CF 0x4000 +#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 +#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 +#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 +#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 +#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 +#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 +#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 +#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 +#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 +#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 +#define IMAGE_DIRECTORY_ENTRY_TLS 9 +#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 +#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 +#define IMAGE_DIRECTORY_ENTRY_IAT 12 +#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 +#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 + typedef struct ANON_OBJECT_HEADER { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + CLSID ClassID; + DWORD SizeOfData; + } ANON_OBJECT_HEADER; + typedef struct ANON_OBJECT_HEADER_V2 { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + CLSID ClassID; + DWORD SizeOfData; + DWORD Flags; + DWORD MetaDataSize; + DWORD MetaDataOffset; + } ANON_OBJECT_HEADER_V2; + typedef struct ANON_OBJECT_HEADER_BIGOBJ { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + CLSID ClassID; + DWORD SizeOfData; + DWORD Flags; + DWORD MetaDataSize; + DWORD MetaDataOffset; + DWORD NumberOfSections; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + } ANON_OBJECT_HEADER_BIGOBJ; +#define IMAGE_SIZEOF_SHORT_NAME 8 + typedef struct _IMAGE_SECTION_HEADER { + BYTE Name[8]; + union { + DWORD PhysicalAddress; + DWORD VirtualSize; + } Misc; + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; + } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; +#define IMAGE_SIZEOF_SECTION_HEADER 40 +#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 +#define IMAGE_SCN_CNT_CODE 0x00000020 +#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 +#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 +#define IMAGE_SCN_LNK_OTHER 0x00000100 +#define IMAGE_SCN_LNK_INFO 0x00000200 +#define IMAGE_SCN_LNK_REMOVE 0x00000800 +#define IMAGE_SCN_LNK_COMDAT 0x00001000 +#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000 +#define IMAGE_SCN_GPREL 0x00008000 +#define IMAGE_SCN_MEM_FARDATA 0x00008000 +#define IMAGE_SCN_MEM_PURGEABLE 0x00020000 +#define IMAGE_SCN_MEM_16BIT 0x00020000 +#define IMAGE_SCN_MEM_LOCKED 0x00040000 +#define IMAGE_SCN_MEM_PRELOAD 0x00080000 +#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 +#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 +#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 +#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 +#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 +#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 +#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 +#define IMAGE_SCN_ALIGN_128BYTES 0x00800000 +#define IMAGE_SCN_ALIGN_256BYTES 0x00900000 +#define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 +#define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 +#define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 +#define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 +#define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 +#define IMAGE_SCN_ALIGN_MASK 0x00F00000 +#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 +#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 +#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 +#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 +#define IMAGE_SCN_MEM_SHARED 0x10000000 +#define IMAGE_SCN_MEM_EXECUTE 0x20000000 +#define IMAGE_SCN_MEM_READ 0x40000000 +#define IMAGE_SCN_MEM_WRITE 0x80000000 +#define IMAGE_SCN_SCALE_INDEX 0x00000001 +#pragma pack(push,2) + typedef struct _IMAGE_SYMBOL { + union { + BYTE ShortName[8]; + struct { + DWORD Short; + DWORD Long; + } Name; + DWORD LongName[2]; + } N; + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; + } IMAGE_SYMBOL; + typedef IMAGE_SYMBOL *PIMAGE_SYMBOL; +#define IMAGE_SIZEOF_SYMBOL 18 + typedef struct _IMAGE_SYMBOL_EX { + union { + BYTE ShortName[8]; + struct { + DWORD Short; + DWORD Long; + } Name; + DWORD LongName[2]; + } N; + DWORD Value; + LONG SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; + } IMAGE_SYMBOL_EX, *PIMAGE_SYMBOL_EX; +#define IMAGE_SYM_UNDEFINED (SHORT)0 +#define IMAGE_SYM_ABSOLUTE (SHORT)-1 +#define IMAGE_SYM_DEBUG (SHORT)-2 +#define IMAGE_SYM_SECTION_MAX 0xFEFF +#define IMAGE_SYM_SECTION_MAX_EX MAXLONG +#define IMAGE_SYM_TYPE_NULL 0x0000 +#define IMAGE_SYM_TYPE_VOID 0x0001 +#define IMAGE_SYM_TYPE_CHAR 0x0002 +#define IMAGE_SYM_TYPE_SHORT 0x0003 +#define IMAGE_SYM_TYPE_INT 0x0004 +#define IMAGE_SYM_TYPE_LONG 0x0005 +#define IMAGE_SYM_TYPE_FLOAT 0x0006 +#define IMAGE_SYM_TYPE_DOUBLE 0x0007 +#define IMAGE_SYM_TYPE_STRUCT 0x0008 +#define IMAGE_SYM_TYPE_UNION 0x0009 +#define IMAGE_SYM_TYPE_ENUM 0x000A +#define IMAGE_SYM_TYPE_MOE 0x000B +#define IMAGE_SYM_TYPE_BYTE 0x000C +#define IMAGE_SYM_TYPE_WORD 0x000D +#define IMAGE_SYM_TYPE_UINT 0x000E +#define IMAGE_SYM_TYPE_DWORD 0x000F +#define IMAGE_SYM_TYPE_PCODE 0x8000 +#define IMAGE_SYM_DTYPE_NULL 0 +#define IMAGE_SYM_DTYPE_POINTER 1 +#define IMAGE_SYM_DTYPE_FUNCTION 2 +#define IMAGE_SYM_DTYPE_ARRAY 3 +#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE)-1 +#define IMAGE_SYM_CLASS_NULL 0x0000 +#define IMAGE_SYM_CLASS_AUTOMATIC 0x0001 +#define IMAGE_SYM_CLASS_EXTERNAL 0x0002 +#define IMAGE_SYM_CLASS_STATIC 0x0003 +#define IMAGE_SYM_CLASS_REGISTER 0x0004 +#define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005 +#define IMAGE_SYM_CLASS_LABEL 0x0006 +#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007 +#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008 +#define IMAGE_SYM_CLASS_ARGUMENT 0x0009 +#define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A +#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B +#define IMAGE_SYM_CLASS_UNION_TAG 0x000C +#define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D +#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E +#define IMAGE_SYM_CLASS_ENUM_TAG 0x000F +#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010 +#define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011 +#define IMAGE_SYM_CLASS_BIT_FIELD 0x0012 +#define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044 +#define IMAGE_SYM_CLASS_BLOCK 0x0064 +#define IMAGE_SYM_CLASS_FUNCTION 0x0065 +#define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066 +#define IMAGE_SYM_CLASS_FILE 0x0067 +#define IMAGE_SYM_CLASS_SECTION 0x0068 +#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069 +#define IMAGE_SYM_CLASS_CLR_TOKEN 0x006B +#define N_BTMASK 0x000F +#define N_TMASK 0x0030 +#define N_TMASK1 0x00C0 +#define N_TMASK2 0x00F0 +#define N_BTSHFT 4 +#define N_TSHIFT 2 +#define BTYPE(x) ((x) & N_BTMASK) +#define ISPTR(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_POINTER << N_BTSHFT)) +#define ISFCN(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT)) +#define ISARY(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT)) +#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG) +#define INCREF(x) ((((x)&~N_BTMASK)<>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK)) +#pragma pack(push,2) + typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF { + BYTE bAuxType; + BYTE bReserved; + DWORD SymbolTableIndex; + BYTE rgbReserved[12]; + } IMAGE_AUX_SYMBOL_TOKEN_DEF, *PIMAGE_AUX_SYMBOL_TOKEN_DEF; +#pragma pack(pop) + + typedef union _IMAGE_AUX_SYMBOL { + struct { + DWORD TagIndex; + union { + struct { + WORD Linenumber; + WORD Size; + } LnSz; + DWORD TotalSize; + } Misc; + union { + struct { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; + } Function; + struct { + WORD Dimension[4]; + } Array; + } FcnAry; + WORD TvIndex; + } Sym; + struct { + BYTE Name[18]; + } File; + struct { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; + } Section; + IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; + struct { + DWORD crc; + BYTE rgbReserved[14]; + } CRC; + } IMAGE_AUX_SYMBOL, *PIMAGE_AUX_SYMBOL; + typedef union _IMAGE_AUX_SYMBOL_EX { + struct { + DWORD WeakDefaultSymIndex; + DWORD WeakSearchType; + BYTE rgbReserved[12]; + } Sym; + struct { + BYTE Name[sizeof (IMAGE_SYMBOL_EX)]; + } File; + struct { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; + BYTE bReserved; + SHORT HighNumber; + BYTE rgbReserved[2]; + } Section; + __extension__ struct { + IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; + BYTE rgbReserved[2]; + }; + struct { + DWORD crc; + BYTE rgbReserved[16]; + } CRC; + } IMAGE_AUX_SYMBOL_EX, *PIMAGE_AUX_SYMBOL_EX; +#define IMAGE_SIZEOF_AUX_SYMBOL 18 + typedef enum IMAGE_AUX_SYMBOL_TYPE { + IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1 + } IMAGE_AUX_SYMBOL_TYPE; +#define IMAGE_COMDAT_SELECT_NODUPLICATES 1 +#define IMAGE_COMDAT_SELECT_ANY 2 +#define IMAGE_COMDAT_SELECT_SAME_SIZE 3 +#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 +#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 +#define IMAGE_COMDAT_SELECT_LARGEST 6 +#define IMAGE_COMDAT_SELECT_NEWEST 7 +#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 +#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 +#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 + typedef struct _IMAGE_RELOCATION { + __extension__ union { + DWORD VirtualAddress; + DWORD RelocCount; + } ; + DWORD SymbolTableIndex; + WORD Type; + } IMAGE_RELOCATION; + typedef IMAGE_RELOCATION *PIMAGE_RELOCATION; +#define IMAGE_SIZEOF_RELOCATION 10 +#define IMAGE_REL_I386_ABSOLUTE 0x0000 +#define IMAGE_REL_I386_DIR16 0x0001 +#define IMAGE_REL_I386_REL16 0x0002 +#define IMAGE_REL_I386_DIR32 0x0006 +#define IMAGE_REL_I386_DIR32NB 0x0007 +#define IMAGE_REL_I386_SEG12 0x0009 +#define IMAGE_REL_I386_SECTION 0x000A +#define IMAGE_REL_I386_SECREL 0x000B +#define IMAGE_REL_I386_TOKEN 0x000C +#define IMAGE_REL_I386_SECREL7 0x000D +#define IMAGE_REL_I386_REL32 0x0014 +#define IMAGE_REL_MIPS_ABSOLUTE 0x0000 +#define IMAGE_REL_MIPS_REFHALF 0x0001 +#define IMAGE_REL_MIPS_REFWORD 0x0002 +#define IMAGE_REL_MIPS_JMPADDR 0x0003 +#define IMAGE_REL_MIPS_REFHI 0x0004 +#define IMAGE_REL_MIPS_REFLO 0x0005 +#define IMAGE_REL_MIPS_GPREL 0x0006 +#define IMAGE_REL_MIPS_LITERAL 0x0007 +#define IMAGE_REL_MIPS_SECTION 0x000A +#define IMAGE_REL_MIPS_SECREL 0x000B +#define IMAGE_REL_MIPS_SECRELLO 0x000C +#define IMAGE_REL_MIPS_SECRELHI 0x000D +#define IMAGE_REL_MIPS_TOKEN 0x000E +#define IMAGE_REL_MIPS_JMPADDR16 0x0010 +#define IMAGE_REL_MIPS_REFWORDNB 0x0022 +#define IMAGE_REL_MIPS_PAIR 0x0025 +#define IMAGE_REL_ALPHA_ABSOLUTE 0x0000 +#define IMAGE_REL_ALPHA_REFLONG 0x0001 +#define IMAGE_REL_ALPHA_REFQUAD 0x0002 +#define IMAGE_REL_ALPHA_GPREL32 0x0003 +#define IMAGE_REL_ALPHA_LITERAL 0x0004 +#define IMAGE_REL_ALPHA_LITUSE 0x0005 +#define IMAGE_REL_ALPHA_GPDISP 0x0006 +#define IMAGE_REL_ALPHA_BRADDR 0x0007 +#define IMAGE_REL_ALPHA_HINT 0x0008 +#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009 +#define IMAGE_REL_ALPHA_REFHI 0x000A +#define IMAGE_REL_ALPHA_REFLO 0x000B +#define IMAGE_REL_ALPHA_PAIR 0x000C +#define IMAGE_REL_ALPHA_MATCH 0x000D +#define IMAGE_REL_ALPHA_SECTION 0x000E +#define IMAGE_REL_ALPHA_SECREL 0x000F +#define IMAGE_REL_ALPHA_REFLONGNB 0x0010 +#define IMAGE_REL_ALPHA_SECRELLO 0x0011 +#define IMAGE_REL_ALPHA_SECRELHI 0x0012 +#define IMAGE_REL_ALPHA_REFQ3 0x0013 +#define IMAGE_REL_ALPHA_REFQ2 0x0014 +#define IMAGE_REL_ALPHA_REFQ1 0x0015 +#define IMAGE_REL_ALPHA_GPRELLO 0x0016 +#define IMAGE_REL_ALPHA_GPRELHI 0x0017 +#define IMAGE_REL_PPC_ABSOLUTE 0x0000 +#define IMAGE_REL_PPC_ADDR64 0x0001 +#define IMAGE_REL_PPC_ADDR32 0x0002 +#define IMAGE_REL_PPC_ADDR24 0x0003 +#define IMAGE_REL_PPC_ADDR16 0x0004 +#define IMAGE_REL_PPC_ADDR14 0x0005 +#define IMAGE_REL_PPC_REL24 0x0006 +#define IMAGE_REL_PPC_REL14 0x0007 +#define IMAGE_REL_PPC_TOCREL16 0x0008 +#define IMAGE_REL_PPC_TOCREL14 0x0009 +#define IMAGE_REL_PPC_ADDR32NB 0x000A +#define IMAGE_REL_PPC_SECREL 0x000B +#define IMAGE_REL_PPC_SECTION 0x000C +#define IMAGE_REL_PPC_IFGLUE 0x000D +#define IMAGE_REL_PPC_IMGLUE 0x000E +#define IMAGE_REL_PPC_SECREL16 0x000F +#define IMAGE_REL_PPC_REFHI 0x0010 +#define IMAGE_REL_PPC_REFLO 0x0011 +#define IMAGE_REL_PPC_PAIR 0x0012 +#define IMAGE_REL_PPC_SECRELLO 0x0013 +#define IMAGE_REL_PPC_SECRELHI 0x0014 +#define IMAGE_REL_PPC_GPREL 0x0015 +#define IMAGE_REL_PPC_TOKEN 0x0016 +#define IMAGE_REL_PPC_TYPEMASK 0x00FF +#define IMAGE_REL_PPC_NEG 0x0100 +#define IMAGE_REL_PPC_BRTAKEN 0x0200 +#define IMAGE_REL_PPC_BRNTAKEN 0x0400 +#define IMAGE_REL_PPC_TOCDEFN 0x0800 +#define IMAGE_REL_SH3_ABSOLUTE 0x0000 +#define IMAGE_REL_SH3_DIRECT16 0x0001 +#define IMAGE_REL_SH3_DIRECT32 0x0002 +#define IMAGE_REL_SH3_DIRECT8 0x0003 +#define IMAGE_REL_SH3_DIRECT8_WORD 0x0004 +#define IMAGE_REL_SH3_DIRECT8_LONG 0x0005 +#define IMAGE_REL_SH3_DIRECT4 0x0006 +#define IMAGE_REL_SH3_DIRECT4_WORD 0x0007 +#define IMAGE_REL_SH3_DIRECT4_LONG 0x0008 +#define IMAGE_REL_SH3_PCREL8_WORD 0x0009 +#define IMAGE_REL_SH3_PCREL8_LONG 0x000A +#define IMAGE_REL_SH3_PCREL12_WORD 0x000B +#define IMAGE_REL_SH3_STARTOF_SECTION 0x000C +#define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D +#define IMAGE_REL_SH3_SECTION 0x000E +#define IMAGE_REL_SH3_SECREL 0x000F +#define IMAGE_REL_SH3_DIRECT32_NB 0x0010 +#define IMAGE_REL_SH3_GPREL4_LONG 0x0011 +#define IMAGE_REL_SH3_TOKEN 0x0012 +#define IMAGE_REL_SHM_PCRELPT 0x0013 +#define IMAGE_REL_SHM_REFLO 0x0014 +#define IMAGE_REL_SHM_REFHALF 0x0015 +#define IMAGE_REL_SHM_RELLO 0x0016 +#define IMAGE_REL_SHM_RELHALF 0x0017 +#define IMAGE_REL_SHM_PAIR 0x0018 +#define IMAGE_REL_SH_NOMODE 0x8000 +#define IMAGE_REL_ARM_ABSOLUTE 0x0000 +#define IMAGE_REL_ARM_ADDR32 0x0001 +#define IMAGE_REL_ARM_ADDR32NB 0x0002 +#define IMAGE_REL_ARM_BRANCH24 0x0003 +#define IMAGE_REL_ARM_BRANCH11 0x0004 +#define IMAGE_REL_ARM_TOKEN 0x0005 +#define IMAGE_REL_ARM_GPREL12 0x0006 +#define IMAGE_REL_ARM_GPREL7 0x0007 +#define IMAGE_REL_ARM_BLX24 0x0008 +#define IMAGE_REL_ARM_BLX11 0x0009 +#define IMAGE_REL_ARM_SECTION 0x000E +#define IMAGE_REL_ARM_SECREL 0x000F +#define IMAGE_REL_ARM_MOV32A 0x0010 +#define IMAGE_REL_ARM_MOV32 0x0010 +#define IMAGE_REL_ARM_MOV32T 0x0011 +#define IMAGE_REL_THUMB_MOV32 0x0011 +#define IMAGE_REL_ARM_BRANCH20T 0x0012 +#define IMAGE_REL_THUMB_BRANCH20 0x0012 +#define IMAGE_REL_ARM_BRANCH24T 0x0014 +#define IMAGE_REL_THUMB_BRANCH24 0x0014 +#define IMAGE_REL_ARM_BLX23T 0x0015 +#define IMAGE_REL_THUMB_BLX23 0x0015 +#define IMAGE_REL_AM_ABSOLUTE 0x0000 +#define IMAGE_REL_AM_ADDR32 0x0001 +#define IMAGE_REL_AM_ADDR32NB 0x0002 +#define IMAGE_REL_AM_CALL32 0x0003 +#define IMAGE_REL_AM_FUNCINFO 0x0004 +#define IMAGE_REL_AM_REL32_1 0x0005 +#define IMAGE_REL_AM_REL32_2 0x0006 +#define IMAGE_REL_AM_SECREL 0x0007 +#define IMAGE_REL_AM_SECTION 0x0008 +#define IMAGE_REL_AM_TOKEN 0x0009 +#define IMAGE_REL_AMD64_ABSOLUTE 0x0000 +#define IMAGE_REL_AMD64_ADDR64 0x0001 +#define IMAGE_REL_AMD64_ADDR32 0x0002 +#define IMAGE_REL_AMD64_ADDR32NB 0x0003 +#define IMAGE_REL_AMD64_REL32 0x0004 +#define IMAGE_REL_AMD64_REL32_1 0x0005 +#define IMAGE_REL_AMD64_REL32_2 0x0006 +#define IMAGE_REL_AMD64_REL32_3 0x0007 +#define IMAGE_REL_AMD64_REL32_4 0x0008 +#define IMAGE_REL_AMD64_REL32_5 0x0009 +#define IMAGE_REL_AMD64_SECTION 0x000A +#define IMAGE_REL_AMD64_SECREL 0x000B +#define IMAGE_REL_AMD64_SECREL7 0x000C +#define IMAGE_REL_AMD64_TOKEN 0x000D +#define IMAGE_REL_AMD64_SREL32 0x000E +#define IMAGE_REL_AMD64_PAIR 0x000F +#define IMAGE_REL_AMD64_SSPAN32 0x0010 +#define IMAGE_REL_IA64_ABSOLUTE 0x0000 +#define IMAGE_REL_IA64_IMM14 0x0001 +#define IMAGE_REL_IA64_IMM22 0x0002 +#define IMAGE_REL_IA64_IMM64 0x0003 +#define IMAGE_REL_IA64_DIR32 0x0004 +#define IMAGE_REL_IA64_DIR64 0x0005 +#define IMAGE_REL_IA64_PCREL21B 0x0006 +#define IMAGE_REL_IA64_PCREL21M 0x0007 +#define IMAGE_REL_IA64_PCREL21F 0x0008 +#define IMAGE_REL_IA64_GPREL22 0x0009 +#define IMAGE_REL_IA64_LTOFF22 0x000A +#define IMAGE_REL_IA64_SECTION 0x000B +#define IMAGE_REL_IA64_SECREL22 0x000C +#define IMAGE_REL_IA64_SECREL64I 0x000D +#define IMAGE_REL_IA64_SECREL32 0x000E +#define IMAGE_REL_IA64_DIR32NB 0x0010 +#define IMAGE_REL_IA64_SREL14 0x0011 +#define IMAGE_REL_IA64_SREL22 0x0012 +#define IMAGE_REL_IA64_SREL32 0x0013 +#define IMAGE_REL_IA64_UREL32 0x0014 +#define IMAGE_REL_IA64_PCREL60X 0x0015 +#define IMAGE_REL_IA64_PCREL60B 0x0016 +#define IMAGE_REL_IA64_PCREL60F 0x0017 +#define IMAGE_REL_IA64_PCREL60I 0x0018 +#define IMAGE_REL_IA64_PCREL60M 0x0019 +#define IMAGE_REL_IA64_IMMGPREL64 0x001A +#define IMAGE_REL_IA64_TOKEN 0x001B +#define IMAGE_REL_IA64_GPREL32 0x001C +#define IMAGE_REL_IA64_ADDEND 0x001F +#define IMAGE_REL_CEF_ABSOLUTE 0x0000 +#define IMAGE_REL_CEF_ADDR32 0x0001 +#define IMAGE_REL_CEF_ADDR64 0x0002 +#define IMAGE_REL_CEF_ADDR32NB 0x0003 +#define IMAGE_REL_CEF_SECTION 0x0004 +#define IMAGE_REL_CEF_SECREL 0x0005 +#define IMAGE_REL_CEF_TOKEN 0x0006 +#define IMAGE_REL_CEE_ABSOLUTE 0x0000 +#define IMAGE_REL_CEE_ADDR32 0x0001 +#define IMAGE_REL_CEE_ADDR64 0x0002 +#define IMAGE_REL_CEE_ADDR32NB 0x0003 +#define IMAGE_REL_CEE_SECTION 0x0004 +#define IMAGE_REL_CEE_SECREL 0x0005 +#define IMAGE_REL_CEE_TOKEN 0x0006 +#define IMAGE_REL_M32R_ABSOLUTE 0x0000 +#define IMAGE_REL_M32R_ADDR32 0x0001 +#define IMAGE_REL_M32R_ADDR32NB 0x0002 +#define IMAGE_REL_M32R_ADDR24 0x0003 +#define IMAGE_REL_M32R_GPREL16 0x0004 +#define IMAGE_REL_M32R_PCREL24 0x0005 +#define IMAGE_REL_M32R_PCREL16 0x0006 +#define IMAGE_REL_M32R_PCREL8 0x0007 +#define IMAGE_REL_M32R_REFHALF 0x0008 +#define IMAGE_REL_M32R_REFHI 0x0009 +#define IMAGE_REL_M32R_REFLO 0x000A +#define IMAGE_REL_M32R_PAIR 0x000B +#define IMAGE_REL_M32R_SECTION 0x000C +#define IMAGE_REL_M32R_SECREL32 0x000D +#define IMAGE_REL_M32R_TOKEN 0x000E +#define IMAGE_REL_EBC_ABSOLUTE 0x0000 +#define IMAGE_REL_EBC_ADDR32NB 0x0001 +#define IMAGE_REL_EBC_REL32 0x0002 +#define IMAGE_REL_EBC_SECTION 0x0003 +#define IMAGE_REL_EBC_SECREL 0x0004 +#define EXT_IMM64(Value,Address,Size,InstPos,ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) +#define INS_IMM64(Value,Address,Size,InstPos,ValPos) *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos) +#define EMARCH_ENC_I17_IMM7B_INST_WORD_X 3 +#define EMARCH_ENC_I17_IMM7B_SIZE_X 7 +#define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 4 +#define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0 +#define EMARCH_ENC_I17_IMM9D_INST_WORD_X 3 +#define EMARCH_ENC_I17_IMM9D_SIZE_X 9 +#define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 18 +#define EMARCH_ENC_I17_IMM9D_VAL_POS_X 7 +#define EMARCH_ENC_I17_IMM5C_INST_WORD_X 3 +#define EMARCH_ENC_I17_IMM5C_SIZE_X 5 +#define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 13 +#define EMARCH_ENC_I17_IMM5C_VAL_POS_X 16 +#define EMARCH_ENC_I17_IC_INST_WORD_X 3 +#define EMARCH_ENC_I17_IC_SIZE_X 1 +#define EMARCH_ENC_I17_IC_INST_WORD_POS_X 12 +#define EMARCH_ENC_I17_IC_VAL_POS_X 21 +#define EMARCH_ENC_I17_IMM41a_INST_WORD_X 1 +#define EMARCH_ENC_I17_IMM41a_SIZE_X 10 +#define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 14 +#define EMARCH_ENC_I17_IMM41a_VAL_POS_X 22 +#define EMARCH_ENC_I17_IMM41b_INST_WORD_X 1 +#define EMARCH_ENC_I17_IMM41b_SIZE_X 8 +#define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 24 +#define EMARCH_ENC_I17_IMM41b_VAL_POS_X 32 +#define EMARCH_ENC_I17_IMM41c_INST_WORD_X 2 +#define EMARCH_ENC_I17_IMM41c_SIZE_X 23 +#define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0 +#define EMARCH_ENC_I17_IMM41c_VAL_POS_X 40 +#define EMARCH_ENC_I17_SIGN_INST_WORD_X 3 +#define EMARCH_ENC_I17_SIGN_SIZE_X 1 +#define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 27 +#define EMARCH_ENC_I17_SIGN_VAL_POS_X 63 +#define X3_OPCODE_INST_WORD_X 3 +#define X3_OPCODE_SIZE_X 4 +#define X3_OPCODE_INST_WORD_POS_X 28 +#define X3_OPCODE_SIGN_VAL_POS_X 0 +#define X3_I_INST_WORD_X 3 +#define X3_I_SIZE_X 1 +#define X3_I_INST_WORD_POS_X 27 +#define X3_I_SIGN_VAL_POS_X 59 +#define X3_D_WH_INST_WORD_X 3 +#define X3_D_WH_SIZE_X 3 +#define X3_D_WH_INST_WORD_POS_X 24 +#define X3_D_WH_SIGN_VAL_POS_X 0 +#define X3_IMM20_INST_WORD_X 3 +#define X3_IMM20_SIZE_X 20 +#define X3_IMM20_INST_WORD_POS_X 4 +#define X3_IMM20_SIGN_VAL_POS_X 0 +#define X3_IMM39_1_INST_WORD_X 2 +#define X3_IMM39_1_SIZE_X 23 +#define X3_IMM39_1_INST_WORD_POS_X 0 +#define X3_IMM39_1_SIGN_VAL_POS_X 36 +#define X3_IMM39_2_INST_WORD_X 1 +#define X3_IMM39_2_SIZE_X 16 +#define X3_IMM39_2_INST_WORD_POS_X 16 +#define X3_IMM39_2_SIGN_VAL_POS_X 20 +#define X3_P_INST_WORD_X 3 +#define X3_P_SIZE_X 4 +#define X3_P_INST_WORD_POS_X 0 +#define X3_P_SIGN_VAL_POS_X 0 +#define X3_TMPLT_INST_WORD_X 0 +#define X3_TMPLT_SIZE_X 4 +#define X3_TMPLT_INST_WORD_POS_X 0 +#define X3_TMPLT_SIGN_VAL_POS_X 0 +#define X3_BTYPE_QP_INST_WORD_X 2 +#define X3_BTYPE_QP_SIZE_X 9 +#define X3_BTYPE_QP_INST_WORD_POS_X 23 +#define X3_BTYPE_QP_INST_VAL_POS_X 0 +#define X3_EMPTY_INST_WORD_X 1 +#define X3_EMPTY_SIZE_X 2 +#define X3_EMPTY_INST_WORD_POS_X 14 +#define X3_EMPTY_INST_VAL_POS_X 0 + typedef struct _IMAGE_LINENUMBER { + union { + DWORD SymbolTableIndex; + DWORD VirtualAddress; + } Type; + WORD Linenumber; + } IMAGE_LINENUMBER; + typedef IMAGE_LINENUMBER *PIMAGE_LINENUMBER; +#define IMAGE_SIZEOF_LINENUMBER 6 +#pragma pack(pop) + + typedef struct _IMAGE_BASE_RELOCATION { + DWORD VirtualAddress; + DWORD SizeOfBlock; + } IMAGE_BASE_RELOCATION; + typedef IMAGE_BASE_RELOCATION *PIMAGE_BASE_RELOCATION; +#define IMAGE_SIZEOF_BASE_RELOCATION 8 +#define IMAGE_REL_BASED_ABSOLUTE 0 +#define IMAGE_REL_BASED_HIGH 1 +#define IMAGE_REL_BASED_LOW 2 +#define IMAGE_REL_BASED_HIGHLOW 3 +#define IMAGE_REL_BASED_HIGHADJ 4 +#define IMAGE_REL_BASED_MIPS_JMPADDR 5 +#define IMAGE_REL_BASED_ARM_MOV32 5 +#define IMAGE_REL_BASED_THUMB_MOV32 7 +#define IMAGE_REL_BASED_MIPS_JMPADDR16 9 +#define IMAGE_REL_BASED_IA64_IMM64 9 +#define IMAGE_REL_BASED_DIR64 10 +#define IMAGE_ARCHIVE_START_SIZE 8 +#define IMAGE_ARCHIVE_START "!\n" +#define IMAGE_ARCHIVE_END "`\n" +#define IMAGE_ARCHIVE_PAD "\n" +#define IMAGE_ARCHIVE_LINKER_MEMBER "/ " +#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " + typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { + BYTE Name[16]; + BYTE Date[12]; + BYTE UserID[6]; + BYTE GroupID[6]; + BYTE Mode[8]; + BYTE Size[10]; + BYTE EndHeader[2]; + } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER; +#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 + typedef struct _IMAGE_EXPORT_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Name; + DWORD Base; + DWORD NumberOfFunctions; + DWORD NumberOfNames; + DWORD AddressOfFunctions; + DWORD AddressOfNames; + DWORD AddressOfNameOrdinals; + } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY; + typedef struct _IMAGE_IMPORT_BY_NAME { + WORD Hint; + CHAR Name[1]; + } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME; +#pragma pack(push,8) + + typedef struct _IMAGE_THUNK_DATA64 { + union { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; + } u1; + } IMAGE_THUNK_DATA64; + typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64; +#pragma pack(pop) + + typedef struct _IMAGE_THUNK_DATA32 { + union { + DWORD ForwarderString; + DWORD Function; + DWORD Ordinal; + DWORD AddressOfData; + } u1; + } IMAGE_THUNK_DATA32; + typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32; +#define IMAGE_ORDINAL_FLAG64 0x8000000000000000ull +#define IMAGE_ORDINAL_FLAG32 0x80000000 +#define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffffull) +#define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) +#define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64)!=0) +#define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32)!=0) + typedef void ( *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved); + typedef struct _IMAGE_TLS_DIRECTORY64 { + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; + } IMAGE_TLS_DIRECTORY64; + typedef IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64; + typedef struct _IMAGE_TLS_DIRECTORY32 { + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + DWORD AddressOfIndex; + DWORD AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; + } IMAGE_TLS_DIRECTORY32; + typedef IMAGE_TLS_DIRECTORY32 *PIMAGE_TLS_DIRECTORY32; +#define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64 +#define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal) + typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; + typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; +#define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal) + typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; + typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY; + typedef struct _IMAGE_IMPORT_DESCRIPTOR { + __extension__ union { + DWORD Characteristics; + DWORD OriginalFirstThunk; + } ; + DWORD TimeDateStamp; + DWORD ForwarderChain; + DWORD Name; + DWORD FirstThunk; + } IMAGE_IMPORT_DESCRIPTOR; + typedef IMAGE_IMPORT_DESCRIPTOR *PIMAGE_IMPORT_DESCRIPTOR; + typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; + } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR; + typedef struct _IMAGE_BOUND_FORWARDER_REF { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD Reserved; + } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF; + typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR { + union { + DWORD AllAttributes; + __extension__ struct { + DWORD RvaBased : 1; + DWORD ReservedAttributes : 31; + }; + } Attributes; + DWORD DllNameRVA; + DWORD ModuleHandleRVA; + DWORD ImportAddressTableRVA; + DWORD ImportNameTableRVA; + DWORD BoundImportAddressTableRVA; + DWORD UnloadInformationTableRVA; + DWORD TimeDateStamp; + } IMAGE_DELAYLOAD_DESCRIPTOR,*PIMAGE_DELAYLOAD_DESCRIPTOR; + typedef const IMAGE_DELAYLOAD_DESCRIPTOR *PCIMAGE_DELAYLOAD_DESCRIPTOR; + typedef struct _IMAGE_RESOURCE_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; + } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY; +#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 +#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 + typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { + __extension__ union { + __extension__ struct { + DWORD NameOffset:31; + DWORD NameIsString:1; + } ; + DWORD Name; + WORD Id; + } ; + __extension__ union { + DWORD OffsetToData; + __extension__ struct { + DWORD OffsetToDirectory:31; + DWORD DataIsDirectory:1; + } ; + } ; + } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY; + typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { + WORD Length; + CHAR NameString[1]; + } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING; + typedef struct _IMAGE_RESOURCE_DIR_STRING_U { + WORD Length; + WCHAR NameString[1]; + } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U; + typedef struct _IMAGE_RESOURCE_DATA_ENTRY { + DWORD OffsetToData; + DWORD Size; + DWORD CodePage; + DWORD Reserved; + } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY; + typedef struct { + DWORD Size; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + DWORD DeCommitFreeBlockThreshold; + DWORD DeCommitTotalFreeThreshold; + DWORD LockPrefixTable; + DWORD MaximumAllocationSize; + DWORD VirtualMemoryThreshold; + DWORD ProcessHeapFlags; + DWORD ProcessAffinityMask; + WORD CSDVersion; + WORD Reserved1; + DWORD EditList; + DWORD SecurityCookie; + DWORD SEHandlerTable; + DWORD SEHandlerCount; + } IMAGE_LOAD_CONFIG_DIRECTORY32,*PIMAGE_LOAD_CONFIG_DIRECTORY32; + typedef struct { + DWORD Size; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + ULONGLONG DeCommitFreeBlockThreshold; + ULONGLONG DeCommitTotalFreeThreshold; + ULONGLONG LockPrefixTable; + ULONGLONG MaximumAllocationSize; + ULONGLONG VirtualMemoryThreshold; + ULONGLONG ProcessAffinityMask; + DWORD ProcessHeapFlags; + WORD CSDVersion; + WORD Reserved1; + ULONGLONG EditList; + ULONGLONG SecurityCookie; + ULONGLONG SEHandlerTable; + ULONGLONG SEHandlerCount; + } IMAGE_LOAD_CONFIG_DIRECTORY64,*PIMAGE_LOAD_CONFIG_DIRECTORY64; + typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; + typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; + typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { + DWORD FuncStart; + DWORD PrologLen : 8; + DWORD FuncLen : 22; + DWORD ThirtyTwoBit : 1; + DWORD ExceptionFlag : 1; + } IMAGE_CE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; + typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { + ULONGLONG BeginAddress; + ULONGLONG EndAddress; + ULONGLONG ExceptionHandler; + ULONGLONG HandlerData; + ULONGLONG PrologEndAddress; + } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; + typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + DWORD ExceptionHandler; + DWORD HandlerData; + DWORD PrologEndAddress; + } IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; + typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + __extension__ union { + DWORD UnwindData; + __extension__ struct { + DWORD Flag : 2; + DWORD FunctionLength : 11; + DWORD Ret : 2; + DWORD H : 1; + DWORD Reg : 3; + DWORD R : 1; + DWORD L : 1; + DWORD C : 1; + DWORD StackAdjust : 10; + } ; + } ; + } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY; + typedef enum ARM64_FNPDATA_FLAGS { + PdataRefToFullXdata = 0, + PdataPackedUnwindFunction = 1, + PdataPackedUnwindFragment = 2, + } ARM64_FNPDATA_FLAGS; + typedef enum ARM64_FNPDATA_CR { + PdataCrUnchained = 0, + PdataCrUnchainedSavedLr = 1, + PdataCrChainedWithPac = 2, + PdataCrChained = 3, + } ARM64_FNPDATA_CR; + typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + __extension__ union { + DWORD UnwindData; + __extension__ struct { + DWORD Flag : 2; + DWORD FunctionLength : 11; + DWORD RegF : 3; + DWORD RegI : 4; + DWORD H : 1; + DWORD CR : 2; + DWORD FrameSize : 9; + } ; + } ; + } IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY; + typedef union IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA { + DWORD HeaderData; + __extension__ struct { + DWORD FunctionLength : 18; + DWORD Version : 2; + DWORD ExceptionDataPresent : 1; + DWORD EpilogInHeader : 1; + DWORD EpilogCount : 5; + DWORD CodeWords : 5; + } ; + } IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA; + typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + __extension__ union { + DWORD UnwindInfoAddress; + DWORD UnwindData; + } ; + } _IMAGE_RUNTIME_FUNCTION_ENTRY,*_PIMAGE_RUNTIME_FUNCTION_ENTRY; + typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY; + typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY; + typedef IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; + typedef PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; + typedef struct _IMAGE_DEBUG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; + } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY; +#define IMAGE_DEBUG_TYPE_UNKNOWN 0 +#define IMAGE_DEBUG_TYPE_COFF 1 +#define IMAGE_DEBUG_TYPE_CODEVIEW 2 +#define IMAGE_DEBUG_TYPE_FPO 3 +#define IMAGE_DEBUG_TYPE_MISC 4 +#define IMAGE_DEBUG_TYPE_EXCEPTION 5 +#define IMAGE_DEBUG_TYPE_FIXUP 6 +#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 +#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 +#define IMAGE_DEBUG_TYPE_BORLAND 9 +#define IMAGE_DEBUG_TYPE_RESERVED10 10 +#define IMAGE_DEBUG_TYPE_CLSID 11 + typedef struct _IMAGE_COFF_SYMBOLS_HEADER { + DWORD NumberOfSymbols; + DWORD LvaToFirstSymbol; + DWORD NumberOfLinenumbers; + DWORD LvaToFirstLinenumber; + DWORD RvaToFirstByteOfCode; + DWORD RvaToLastByteOfCode; + DWORD RvaToFirstByteOfData; + DWORD RvaToLastByteOfData; + } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER; +#define FRAME_FPO 0 +#define FRAME_TRAP 1 +#define FRAME_TSS 2 +#define FRAME_NONFPO 3 + typedef struct _FPO_DATA { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; + WORD cbProlog : 8; + WORD cbRegs : 3; + WORD fHasSEH : 1; + WORD fUseBP : 1; + WORD reserved : 1; + WORD cbFrame : 2; + } FPO_DATA,*PFPO_DATA; +#define SIZEOF_RFPO_DATA 16 +#define IMAGE_DEBUG_MISC_EXENAME 1 + typedef struct _IMAGE_DEBUG_MISC { + DWORD DataType; + DWORD Length; + BOOLEAN Unicode; + BYTE Reserved[3]; + BYTE Data[1]; + } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC; + typedef struct _IMAGE_FUNCTION_ENTRY { + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; + } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY; + typedef struct _IMAGE_FUNCTION_ENTRY64 { + ULONGLONG StartingAddress; + ULONGLONG EndingAddress; + __extension__ union { + ULONGLONG EndOfPrologue; + ULONGLONG UnwindInfoAddress; + } ; + } IMAGE_FUNCTION_ENTRY64,*PIMAGE_FUNCTION_ENTRY64; + typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { + WORD Signature; + WORD Flags; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + DWORD ExportedNamesSize; + DWORD DebugDirectorySize; + DWORD SectionAlignment; + DWORD Reserved[2]; + } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER; + typedef struct _NON_PAGED_DEBUG_INFO { + WORD Signature; + WORD Flags; + DWORD Size; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD SizeOfImage; + ULONGLONG ImageBase; + } NON_PAGED_DEBUG_INFO,*PNON_PAGED_DEBUG_INFO; +#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 +#define NON_PAGED_DEBUG_SIGNATURE 0x494E +#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 +#define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 + typedef struct _ImageArchitectureHeader { + unsigned int AmaskValue: 1; + int Adummy1 : 7; + unsigned int AmaskShift : 8; + int Adummy2 : 16; + DWORD FirstEntryRVA; + } IMAGE_ARCHITECTURE_HEADER,*PIMAGE_ARCHITECTURE_HEADER; + typedef struct _ImageArchitectureEntry { + DWORD FixupInstRVA; + DWORD NewInst; + } IMAGE_ARCHITECTURE_ENTRY,*PIMAGE_ARCHITECTURE_ENTRY; +#pragma pack(pop) + +#define IMPORT_OBJECT_HDR_SIG2 0xffff + typedef struct IMPORT_OBJECT_HEADER { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + DWORD SizeOfData; + __extension__ union { + WORD Ordinal; + WORD Hint; + }; + WORD Type : 2; + WORD NameType : 3; + WORD Reserved : 11; + } IMPORT_OBJECT_HEADER; + typedef enum IMPORT_OBJECT_TYPE { + IMPORT_OBJECT_CODE = 0,IMPORT_OBJECT_DATA = 1,IMPORT_OBJECT_CONST = 2 + } IMPORT_OBJECT_TYPE; + typedef enum IMPORT_OBJECT_NAME_TYPE { + IMPORT_OBJECT_ORDINAL = 0,IMPORT_OBJECT_NAME = 1,IMPORT_OBJECT_NAME_NO_PREFIX = 2,IMPORT_OBJECT_NAME_UNDECORATE = 3 + } IMPORT_OBJECT_NAME_TYPE; +#define __IMAGE_COR20_HEADER_DEFINED__ + typedef enum ReplacesCorHdrNumericDefines { + COMIMAGE_FLAGS_ILONLY = 0x00000001,COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004, + COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,COR_VERSION_MAJOR_V2 = 2, + COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,COR_VERSION_MINOR = 0,COR_DELETED_NAME_LENGTH = 8,COR_VTABLEGAP_NAME_LENGTH = 8, + NATIVE_TYPE_MAX_CB = 1,COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE= 0xFF,IMAGE_COR_MIH_METHODRVA = 0x01,IMAGE_COR_MIH_EHRVA = 0x02, + IMAGE_COR_MIH_BASICBLOCK = 0x08,COR_VTABLE_32BIT =0x01,COR_VTABLE_64BIT =0x02,COR_VTABLE_FROM_UNMANAGED = 0x04, + COR_VTABLE_CALL_MOST_DERIVED = 0x10,IMAGE_COR_EATJ_THUNK_SIZE = 32,MAX_CLASS_NAME =1024,MAX_PACKAGE_NAME = 1024 + } ReplacesCorHdrNumericDefines; + typedef struct IMAGE_COR20_HEADER { + DWORD cb; + WORD MajorRuntimeVersion; + WORD MinorRuntimeVersion; + IMAGE_DATA_DIRECTORY MetaData; + DWORD Flags; + __extension__ union { + DWORD EntryPointToken; + DWORD EntryPointRVA; + } ; + IMAGE_DATA_DIRECTORY Resources; + IMAGE_DATA_DIRECTORY StrongNameSignature; + IMAGE_DATA_DIRECTORY CodeManagerTable; + IMAGE_DATA_DIRECTORY VTableFixups; + IMAGE_DATA_DIRECTORY ExportAddressTableJumps; + IMAGE_DATA_DIRECTORY ManagedNativeHeader; + } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER; + __declspec (dllimport) WORD RtlCaptureStackBackTrace (DWORD FramesToSkip, DWORD FramesToCapture, PVOID *BackTrace, PDWORD BackTraceHash); + __declspec (dllimport) void __attribute__((__returns_twice__)) RtlCaptureContext (PCONTEXT ContextRecord); + __declspec (dllimport) SIZE_T RtlCompareMemory (const void *Source1, const void *Source2, SIZE_T Length); + __declspec (dllimport) DWORD RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd); + __declspec (dllimport) void RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount); + __declspec (dllimport) void RtlDeleteGrowableFunctionTable (PVOID DynamicTable); + __declspec (dllimport) BOOLEAN __attribute__((__cdecl__)) RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, ULONG_PTR BaseAddress); + __declspec (dllimport) BOOLEAN __attribute__((__cdecl__)) RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); + __declspec (dllimport) BOOLEAN __attribute__((__cdecl__)) RtlInstallFunctionTableCallback (ULONG_PTR TableIdentifier, ULONG_PTR BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); + __declspec (dllimport) void __attribute__((__cdecl__)) RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); + __declspec (dllimport) void RtlUnwind (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue); + __declspec (dllimport) PVOID RtlPcToFileHeader (PVOID PcValue, PVOID *BaseOfImage); + __declspec (dllimport) PRUNTIME_FUNCTION RtlLookupFunctionEntry (ULONG_PTR ControlPc, PULONG_PTR ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); + __declspec (dllimport) void RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); + __declspec (dllimport) PEXCEPTION_ROUTINE RtlVirtualUnwind (DWORD HandlerType, ULONG_PTR ImageBase, ULONG_PTR ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PULONG_PTR EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); +#define _SLIST_HEADER_ + typedef struct __attribute__ ((__aligned__ (16))) _SLIST_ENTRY { + struct _SLIST_ENTRY *Next; + } SLIST_ENTRY,*PSLIST_ENTRY; + typedef union __attribute__ ((__aligned__ (16))) _SLIST_HEADER { + __extension__ struct { + ULONGLONG Alignment; + ULONGLONG Region; + } ; + struct { + ULONGLONG Depth:16; + ULONGLONG Sequence:9; + ULONGLONG NextEntry:39; + ULONGLONG HeaderType:1; + ULONGLONG Init:1; + ULONGLONG Reserved:59; + ULONGLONG Region:3; + } Header8; + struct { + ULONGLONG Depth:16; + ULONGLONG Sequence:48; + ULONGLONG HeaderType:1; + ULONGLONG Reserved:3; + ULONGLONG NextEntry:60; + } HeaderX64; + } SLIST_HEADER,*PSLIST_HEADER; + __declspec (dllimport) void RtlInitializeSListHead (PSLIST_HEADER ListHead); + __declspec (dllimport) PSLIST_ENTRY RtlFirstEntrySList (const SLIST_HEADER *ListHead); + __declspec (dllimport) PSLIST_ENTRY RtlInterlockedPopEntrySList (PSLIST_HEADER ListHead); + __declspec (dllimport) PSLIST_ENTRY RtlInterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry); + __declspec (dllimport) PSLIST_ENTRY RtlInterlockedPushListSListEx (PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, DWORD Count); + __declspec (dllimport) PSLIST_ENTRY RtlInterlockedFlushSList (PSLIST_HEADER ListHead); + __declspec (dllimport) WORD RtlQueryDepthSList (PSLIST_HEADER ListHead); +#define _RTL_RUN_ONCE_DEF 1 +typedef struct _RTL_RUN_ONCE { PVOID Ptr; } RTL_RUN_ONCE, *PRTL_RUN_ONCE; +typedef DWORD (__attribute__((__stdcall__)) *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *); +#define RTL_RUN_ONCE_INIT {0} +#define RTL_RUN_ONCE_CHECK_ONLY __MSABI_LONG(1U) +#define RTL_RUN_ONCE_ASYNC __MSABI_LONG(2U) +#define RTL_RUN_ONCE_INIT_FAILED __MSABI_LONG(4U) +#define RTL_RUN_ONCE_CTX_RESERVED_BITS 2 + typedef struct _RTL_BARRIER { + DWORD Reserved1; + DWORD Reserved2; + ULONG_PTR Reserved3[2]; + DWORD Reserved4; + DWORD Reserved5; + } RTL_BARRIER,*PRTL_BARRIER; +#define FAST_FAIL_LEGACY_GS_VIOLATION 0 +#define FAST_FAIL_VTGUARD_CHECK_FAILURE 1 +#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 +#define FAST_FAIL_CORRUPT_LIST_ENTRY 3 +#define FAST_FAIL_INCORRECT_STACK 4 +#define FAST_FAIL_INVALID_ARG 5 +#define FAST_FAIL_GS_COOKIE_INIT 6 +#define FAST_FAIL_FATAL_APP_EXIT 7 +#define FAST_FAIL_RANGE_CHECK_FAILURE 8 +#define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 +#define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xffffffff +#define HEAP_NO_SERIALIZE 0x00000001 +#define HEAP_GROWABLE 0x00000002 +#define HEAP_GENERATE_EXCEPTIONS 0x00000004 +#define HEAP_ZERO_MEMORY 0x00000008 +#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010 +#define HEAP_TAIL_CHECKING_ENABLED 0x00000020 +#define HEAP_FREE_CHECKING_ENABLED 0x00000040 +#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080 +#define HEAP_CREATE_ALIGN_16 0x00010000 +#define HEAP_CREATE_ENABLE_TRACING 0x00020000 +#define HEAP_CREATE_ENABLE_EXECUTE 0x00040000 +#define HEAP_MAXIMUM_TAG 0x0FFF +#define HEAP_PSEUDO_TAG_FLAG 0x8000 +#define HEAP_TAG_SHIFT 18 + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) PVOID RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt) { + volatile char *vptr =(volatile char *)ptr; + while(cnt) { + *vptr++ = 0; + cnt--; + } + return ptr; + } +#define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b) + ((o) << 18))) +#define IS_TEXT_UNICODE_ASCII16 0x0001 +#define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010 +#define IS_TEXT_UNICODE_STATISTICS 0x0002 +#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020 +#define IS_TEXT_UNICODE_CONTROLS 0x0004 +#define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040 +#define IS_TEXT_UNICODE_SIGNATURE 0x0008 +#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080 +#define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100 +#define IS_TEXT_UNICODE_ODD_LENGTH 0x0200 +#define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400 +#define IS_TEXT_UNICODE_NULL_BYTES 0x1000 +#define IS_TEXT_UNICODE_UNICODE_MASK 0x000F +#define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0 +#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00 +#define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000 +#define COMPRESSION_FORMAT_NONE (0x0000) +#define COMPRESSION_FORMAT_DEFAULT (0x0001) +#define COMPRESSION_FORMAT_LZNT1 (0x0002) +#define COMPRESSION_FORMAT_XPRESS (0x0003) +#define COMPRESSION_FORMAT_XPRESS_HUFF (0x0004) +#define COMPRESSION_ENGINE_STANDARD (0x0000) +#define COMPRESSION_ENGINE_MAXIMUM (0x0100) +#define COMPRESSION_ENGINE_HIBER (0x0200) +#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) +#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) +#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length)) +#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) +#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) + typedef struct _MESSAGE_RESOURCE_ENTRY { + WORD Length; + WORD Flags; + BYTE Text[1]; + } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY; +#define SEF_DACL_AUTO_INHERIT 0x01 +#define SEF_SACL_AUTO_INHERIT 0x02 +#define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04 +#define SEF_AVOID_PRIVILEGE_CHECK 0x08 +#define SEF_AVOID_OWNER_CHECK 0x10 +#define SEF_DEFAULT_OWNER_FROM_PARENT 0x20 +#define SEF_DEFAULT_GROUP_FROM_PARENT 0x40 +#define SEF_MACL_NO_WRITE_UP 0x100 +#define SEF_MACL_NO_READ_UP 0x200 +#define SEF_MACL_NO_EXECUTE_UP 0x400 +#define SEF_AVOID_OWNER_RESTRICTION 0x1000 +#define SEF_MACL_VALID_FLAGS (SEF_MACL_NO_WRITE_UP | SEF_MACL_NO_READ_UP | SEF_MACL_NO_EXECUTE_UP) +#define MESSAGE_RESOURCE_UNICODE 0x0001 + typedef struct _MESSAGE_RESOURCE_BLOCK { + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; + } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK; + typedef struct _MESSAGE_RESOURCE_DATA { + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK Blocks[1]; + } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA; + typedef struct _OSVERSIONINFOA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; + } OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA; + typedef struct _OSVERSIONINFOW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[128]; + } OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW,RTL_OSVERSIONINFOW,*PRTL_OSVERSIONINFOW; + typedef OSVERSIONINFOA OSVERSIONINFO; + typedef POSVERSIONINFOA POSVERSIONINFO; + typedef LPOSVERSIONINFOA LPOSVERSIONINFO; + typedef struct _OSVERSIONINFOEXA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; + } OSVERSIONINFOEXA,*POSVERSIONINFOEXA,*LPOSVERSIONINFOEXA; + typedef struct _OSVERSIONINFOEXW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; + } OSVERSIONINFOEXW,*POSVERSIONINFOEXW,*LPOSVERSIONINFOEXW,RTL_OSVERSIONINFOEXW,*PRTL_OSVERSIONINFOEXW; + typedef OSVERSIONINFOEXA OSVERSIONINFOEX; + typedef POSVERSIONINFOEXA POSVERSIONINFOEX; + typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; +#define VER_EQUAL 1 +#define VER_GREATER 2 +#define VER_GREATER_EQUAL 3 +#define VER_LESS 4 +#define VER_LESS_EQUAL 5 +#define VER_AND 6 +#define VER_OR 7 +#define VER_CONDITION_MASK 7 +#define VER_NUM_BITS_PER_CONDITION_MASK 3 +#define VER_MINORVERSION 0x0000001 +#define VER_MAJORVERSION 0x0000002 +#define VER_BUILDNUMBER 0x0000004 +#define VER_PLATFORMID 0x0000008 +#define VER_SERVICEPACKMINOR 0x0000010 +#define VER_SERVICEPACKMAJOR 0x0000020 +#define VER_SUITENAME 0x0000040 +#define VER_PRODUCT_TYPE 0x0000080 +#define VER_NT_WORKSTATION 0x0000001 +#define VER_NT_DOMAIN_CONTROLLER 0x0000002 +#define VER_NT_SERVER 0x0000003 +#define VER_PLATFORM_WIN32s 0 +#define VER_PLATFORM_WIN32_WINDOWS 1 +#define VER_PLATFORM_WIN32_NT 2 + __declspec (dllimport) ULONGLONG VerSetConditionMask (ULONGLONG ConditionMask, DWORD TypeMask, BYTE Condition); +#define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_) = VerSetConditionMask((_m_),(_t_),(_c_))) + __declspec (dllimport) BOOLEAN RtlGetProductInfo (DWORD OSMajorVersion, DWORD OSMinorVersion, DWORD SpMajorVersion, DWORD SpMinorVersion, PDWORD ReturnedProductType); +#define RTL_UMS_VERSION (0x0100) + typedef enum _RTL_UMS_THREAD_INFO_CLASS { + UmsThreadInvalidInfoClass = 0, + UmsThreadUserContext, + UmsThreadPriority, + UmsThreadAffinity, + UmsThreadTeb, + UmsThreadIsSuspended, + UmsThreadIsTerminated, + UmsThreadMaxInfoClass + } RTL_UMS_THREAD_INFO_CLASS,*PRTL_UMS_THREAD_INFO_CLASS; + typedef enum _RTL_UMS_SCHEDULER_REASON { + UmsSchedulerStartup = 0, + UmsSchedulerThreadBlocked, + UmsSchedulerThreadYield, + } RTL_UMS_SCHEDULER_REASON,*PRTL_UMS_SCHEDULER_REASON; + typedef void RTL_UMS_SCHEDULER_ENTRY_POINT (RTL_UMS_SCHEDULER_REASON Reason, ULONG_PTR ActivationPayload, PVOID SchedulerParam); + typedef RTL_UMS_SCHEDULER_ENTRY_POINT *PRTL_UMS_SCHEDULER_ENTRY_POINT; + typedef struct _RTL_CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + struct _RTL_CRITICAL_SECTION *CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD Flags; + WORD CreatorBackTraceIndexHigh; + WORD SpareWORD; + } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG,RTL_RESOURCE_DEBUG,*PRTL_RESOURCE_DEBUG; +#define RTL_CRITSECT_TYPE 0 +#define RTL_RESOURCE_TYPE 1 +#define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x01000000 +#define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x02000000 +#define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x04000000 +#define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x08000000 +#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000 +#define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xff000000 +#define RTL_CRITICAL_SECTION_FLAG_RESERVED (RTL_CRITICAL_SECTION_ALL_FLAG_BITS & (~(RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO | RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN | RTL_CRITICAL_SECTION_FLAG_STATIC_INIT | RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE | RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO))) +#define RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT 0x00000001 +#pragma pack(push,8) + typedef struct _RTL_CRITICAL_SECTION { + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + ULONG_PTR SpinCount; + } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION; +#pragma pack(pop) + + typedef struct _RTL_SRWLOCK { PVOID Ptr; } RTL_SRWLOCK,*PRTL_SRWLOCK; + typedef struct _RTL_CONDITION_VARIABLE { PVOID Ptr; } RTL_CONDITION_VARIABLE,*PRTL_CONDITION_VARIABLE; +#define RTL_SRWLOCK_INIT {0} +#define RTL_CONDITION_VARIABLE_INIT {0} +#define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 0x1 + typedef void ( *PAPCFUNC) (ULONG_PTR Parameter); + typedef LONG ( *PVECTORED_EXCEPTION_HANDLER) (struct _EXCEPTION_POINTERS *ExceptionInfo); + typedef enum _HEAP_INFORMATION_CLASS { + HeapCompatibilityInformation, + HeapEnableTerminationOnCorruption + } HEAP_INFORMATION_CLASS; + typedef void ( *WORKERCALLBACKFUNC) (PVOID); + typedef void ( *APC_CALLBACK_FUNCTION) (DWORD, PVOID, PVOID); + typedef void ( *WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN); + typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK; + typedef void ( *PFLS_CALLBACK_FUNCTION) (PVOID lpFlsData); + typedef BOOLEAN ( *PSECURE_MEMORY_CACHE_CALLBACK) (PVOID Addr, SIZE_T Range); +#define WT_EXECUTEDEFAULT 0x00000000 +#define WT_EXECUTEINIOTHREAD 0x00000001 +#define WT_EXECUTEINUITHREAD 0x00000002 +#define WT_EXECUTEINWAITTHREAD 0x00000004 +#define WT_EXECUTEONLYONCE 0x00000008 +#define WT_EXECUTEINTIMERTHREAD 0x00000020 +#define WT_EXECUTELONGFUNCTION 0x00000010 +#define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040 +#define WT_EXECUTEINPERSISTENTTHREAD 0x00000080 +#define WT_TRANSFER_IMPERSONATION 0x00000100 +#define WT_SET_MAX_THREADPOOL_THREADS(Flags,Limit) ((Flags) |= (Limit) << 16) +#define WT_EXECUTEDELETEWAIT 0x00000008 +#define WT_EXECUTEINLONGTHREAD 0x00000010 + typedef enum _ACTIVATION_CONTEXT_INFO_CLASS { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation = 2, + AssemblyDetailedInformationInActivationContext = 3, + FileInformationInAssemblyOfAssemblyInActivationContext = 4, + RunlevelInformationInActivationContext = 5, + CompatibilityInformationInActivationContext = 6, + ActivationContextManifestResourceName = 7, + MaxActivationContextInfoClass, + AssemblyDetailedInformationInActivationContxt = 3, + FileInformationInAssemblyOfAssemblyInActivationContxt = 4 + } ACTIVATION_CONTEXT_INFO_CLASS; + typedef enum { + ACTCTX_RUN_LEVEL_UNSPECIFIED = 0, + ACTCTX_RUN_LEVEL_AS_INVOKER, + ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE, + ACTCTX_RUN_LEVEL_REQUIRE_ADMIN, + ACTCTX_RUN_LEVEL_NUMBERS + } ACTCTX_REQUESTED_RUN_LEVEL; + typedef enum { + ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0, + ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS, + ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION + } ACTCTX_COMPATIBILITY_ELEMENT_TYPE; + typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX { + DWORD ulAssemblyIndex; + DWORD ulFileIndexInAssembly; + } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX; + typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; + } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION; + typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulEncodedAssemblyIdentityLength; + DWORD ulManifestPathType; + DWORD ulManifestPathLength; + LARGE_INTEGER liManifestLastWriteTime; + DWORD ulPolicyPathType; + DWORD ulPolicyPathLength; + LARGE_INTEGER liPolicyLastWriteTime; + DWORD ulMetadataSatelliteRosterIndex; + DWORD ulManifestVersionMajor; + DWORD ulManifestVersionMinor; + DWORD ulPolicyVersionMajor; + DWORD ulPolicyVersionMinor; + DWORD ulAssemblyDirectoryNameLength; + PCWSTR lpAssemblyEncodedAssemblyIdentity; + PCWSTR lpAssemblyManifestPath; + PCWSTR lpAssemblyPolicyPath; + PCWSTR lpAssemblyDirectoryName; + DWORD ulFileCount; + } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION { + DWORD ulFlags; + ACTCTX_REQUESTED_RUN_LEVEL RunLevel; + DWORD UiAccess; + } ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION,*PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; + typedef struct _COMPATIBILITY_CONTEXT_ELEMENT { + GUID Id; + ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type; + } COMPATIBILITY_CONTEXT_ELEMENT,*PCOMPATIBILITY_CONTEXT_ELEMENT; + typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION { + DWORD ElementCount; + COMPATIBILITY_CONTEXT_ELEMENT Elements[]; + } ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION,*PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION; +#define MAX_SUPPORTED_OS_NUM (4) + typedef struct _SUPPORTED_OS_INFO { + WORD OsCount; + WORD MitigationExist; + WORD OsList[(4)]; + } SUPPORTED_OS_INFO,*PSUPPORTED_OS_INFO; + typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION { + DWORD dwFlags; + DWORD ulFormatVersion; + DWORD ulAssemblyCount; + DWORD ulRootManifestPathType; + DWORD ulRootManifestPathChars; + DWORD ulRootConfigurationPathType; + DWORD ulRootConfigurationPathChars; + DWORD ulAppDirPathType; + DWORD ulAppDirPathChars; + PCWSTR lpRootManifestPath; + PCWSTR lpRootConfigurationPath; + PCWSTR lpAppDirPath; + } ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION; + typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX; + typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION; + typedef const struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + typedef const struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; + typedef const struct _COMPATIBILITY_CONTEXT_ELEMENT *PCCOMPATIBILITY_CONTEXT_ELEMENT; + typedef const struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION *PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION; + typedef const struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION; +#define ACTIVATIONCONTEXTINFOCLASS ACTIVATION_CONTEXT_INFO_CLASS +#define ACTIVATION_CONTEXT_PATH_TYPE_NONE (1) +#define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE (2) +#define ACTIVATION_CONTEXT_PATH_TYPE_URL (3) +#define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF (4) +#define _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION _ASSEMBLY_FILE_DETAILED_INFORMATION +#define ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION +#define PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PASSEMBLY_FILE_DETAILED_INFORMATION +#define PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PCASSEMBLY_FILE_DETAILED_INFORMATION +#define INVALID_OS_COUNT (0xffff) +#define CREATE_BOUNDARY_DESCRIPTOR_ADD_APPCONTAINER_SID 0x1 + typedef void ( *RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); + typedef void ( *RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); + typedef void ( *RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK)(PVOID AllocationBase,SIZE_T AllocationSize); + typedef struct _RTL_VERIFIER_THUNK_DESCRIPTOR { + PCHAR ThunkName; + PVOID ThunkOldAddress; + PVOID ThunkNewAddress; + } RTL_VERIFIER_THUNK_DESCRIPTOR,*PRTL_VERIFIER_THUNK_DESCRIPTOR; + typedef struct _RTL_VERIFIER_DLL_DESCRIPTOR { + PWCHAR DllName; + DWORD DllFlags; + PVOID DllAddress; + PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks; + } RTL_VERIFIER_DLL_DESCRIPTOR,*PRTL_VERIFIER_DLL_DESCRIPTOR; + typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR { + DWORD Length; + PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls; + RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback; + RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback; + PWSTR VerifierImage; + DWORD VerifierFlags; + DWORD VerifierDebug; + PVOID RtlpGetStackTraceAddress; + PVOID RtlpDebugPageHeapCreate; + PVOID RtlpDebugPageHeapDestroy; + RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback; + } RTL_VERIFIER_PROVIDER_DESCRIPTOR,*PRTL_VERIFIER_PROVIDER_DESCRIPTOR; +#define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001 +#define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002 +#define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004 +#define RTL_VRF_FLG_STACK_CHECKS 0x00000008 +#define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010 +#define RTL_VRF_FLG_TLS_CHECKS 0x00000020 +#define RTL_VRF_FLG_DIRTY_STACKS 0x00000040 +#define RTL_VRF_FLG_RPC_CHECKS 0x00000080 +#define RTL_VRF_FLG_COM_CHECKS 0x00000100 +#define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200 +#define RTL_VRF_FLG_RACE_CHECKS 0x00000400 +#define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800 +#define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000 +#define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000 +#define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000 +#define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000 +#define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000 +#define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000 +#define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000 +#define RTL_VRF_FLG_LOCK_CHECKS 0x00040000 +#define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000 +#define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000 +#define APPLICATION_VERIFIER_NO_BREAK 0x20000000 +#define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000 +#define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001 +#define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002 +#define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003 +#define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004 +#define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005 +#define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006 +#define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007 +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008 +#define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009 +#define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D +#define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010 +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011 +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012 +#define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013 +#define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014 +#define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100 +#define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101 +#define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102 +#define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200 +#define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201 +#define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202 +#define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203 +#define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204 +#define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205 +#define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206 +#define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207 +#define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208 +#define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209 +#define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210 +#define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211 +#define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212 +#define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213 +#define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214 +#define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300 +#define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301 +#define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302 +#define APPLICATION_VERIFIER_NULL_HANDLE 0x0303 +#define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304 +#define APPLICATION_VERIFIER_COM_ERROR 0x0400 +#define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401 +#define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402 +#define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403 +#define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404 +#define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405 +#define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406 +#define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407 +#define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408 +#define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409 +#define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A +#define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B +#define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C +#define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D +#define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E +#define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F +#define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410 +#define APPLICATION_VERIFIER_RPC_ERROR 0x0500 +#define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600 +#define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601 +#define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602 +#define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603 +#define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604 +#define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605 +#define APPLICATION_VERIFIER_PROBE_NULL 0x0606 +#define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607 +#define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618 +#define VERIFIER_STOP(Code,Msg,P1,S1,P2,S2,P3,S3,P4,S4) { RtlApplicationVerifierStop ((Code),(Msg),(ULONG_PTR)(P1),(S1),(ULONG_PTR)(P2),(S2),(ULONG_PTR)(P3),(S3),(ULONG_PTR)(P4),(S4)); } + void RtlApplicationVerifierStop(ULONG_PTR Code,PSTR Message,ULONG_PTR Param1,PSTR Description1,ULONG_PTR Param2,PSTR Description2,ULONG_PTR Param3,PSTR Description3,ULONG_PTR Param4,PSTR Description4); + __declspec (dllimport) DWORD RtlSetHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength); + __declspec (dllimport) DWORD RtlQueryHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength,PSIZE_T ReturnLength); + DWORD RtlMultipleAllocateHeap(PVOID HeapHandle,DWORD Flags,SIZE_T Size,DWORD Count,PVOID *Array); + DWORD RtlMultipleFreeHeap(PVOID HeapHandle,DWORD Flags,DWORD Count,PVOID *Array); + typedef struct _HARDWARE_COUNTER_DATA { + HARDWARE_COUNTER_TYPE Type; + DWORD Reserved; + DWORD64 Value; + } HARDWARE_COUNTER_DATA,*PHARDWARE_COUNTER_DATA; + typedef struct _PERFORMANCE_DATA { + WORD Size; + BYTE Version; + BYTE HwCountersCount; + DWORD ContextSwitchCount; + DWORD64 WaitReasonBitMap; + DWORD64 CycleTime; + DWORD RetryCount; + DWORD Reserved; + HARDWARE_COUNTER_DATA HwCounters[16]; + } PERFORMANCE_DATA,*PPERFORMANCE_DATA; +#define PERFORMANCE_DATA_VERSION 1 +#define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x00000001 +#define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x00000002 +#define DLL_PROCESS_ATTACH 1 +#define DLL_THREAD_ATTACH 2 +#define DLL_THREAD_DETACH 3 +#define DLL_PROCESS_DETACH 0 +#define DLL_PROCESS_VERIFIER 4 +#define EVENTLOG_SEQUENTIAL_READ 0x0001 +#define EVENTLOG_SEEK_READ 0x0002 +#define EVENTLOG_FORWARDS_READ 0x0004 +#define EVENTLOG_BACKWARDS_READ 0x0008 +#define EVENTLOG_SUCCESS 0x0000 +#define EVENTLOG_ERROR_TYPE 0x0001 +#define EVENTLOG_WARNING_TYPE 0x0002 +#define EVENTLOG_INFORMATION_TYPE 0x0004 +#define EVENTLOG_AUDIT_SUCCESS 0x0008 +#define EVENTLOG_AUDIT_FAILURE 0x0010 +#define EVENTLOG_START_PAIRED_EVENT 0x0001 +#define EVENTLOG_END_PAIRED_EVENT 0x0002 +#define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004 +#define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008 +#define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010 + typedef struct _EVENTLOGRECORD { + DWORD Length; + DWORD Reserved; + DWORD RecordNumber; + DWORD TimeGenerated; + DWORD TimeWritten; + DWORD EventID; + WORD EventType; + WORD NumStrings; + WORD EventCategory; + WORD ReservedFlags; + DWORD ClosingRecordNumber; + DWORD StringOffset; + DWORD UserSidLength; + DWORD UserSidOffset; + DWORD DataLength; + DWORD DataOffset; + } EVENTLOGRECORD,*PEVENTLOGRECORD; +#define MAXLOGICALLOGNAMESIZE 256 + typedef struct _EVENTSFORLOGFILE { + DWORD ulSize; + WCHAR szLogicalLogFile[256]; + DWORD ulNumRecords; + EVENTLOGRECORD pEventLogRecords[]; + } EVENTSFORLOGFILE,*PEVENTSFORLOGFILE; + typedef struct _PACKEDEVENTINFO { + DWORD ulSize; + DWORD ulNumEventsForLogFile; + DWORD ulOffsets[]; + } PACKEDEVENTINFO,*PPACKEDEVENTINFO; +#define KEY_QUERY_VALUE (0x0001) +#define KEY_SET_VALUE (0x0002) +#define KEY_CREATE_SUB_KEY (0x0004) +#define KEY_ENUMERATE_SUB_KEYS (0x0008) +#define KEY_NOTIFY (0x0010) +#define KEY_CREATE_LINK (0x0020) +#define KEY_WOW64_64KEY (0x0100) +#define KEY_WOW64_32KEY (0x0200) +#define KEY_WOW64_RES (0x0300) +#define KEY_READ ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE)) +#define KEY_WRITE ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)) +#define KEY_EXECUTE ((KEY_READ) & (~SYNCHRONIZE)) +#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE)) +#define REG_OPTION_RESERVED (__MSABI_LONG(0x00000000)) +#define REG_OPTION_NON_VOLATILE (__MSABI_LONG(0x00000000)) +#define REG_OPTION_VOLATILE (__MSABI_LONG(0x00000001)) +#define REG_OPTION_CREATE_LINK (__MSABI_LONG(0x00000002)) +#define REG_OPTION_BACKUP_RESTORE (__MSABI_LONG(0x00000004)) +#define REG_OPTION_OPEN_LINK (__MSABI_LONG(0x00000008)) +#define REG_LEGAL_OPTION (REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK) +#define REG_CREATED_NEW_KEY (__MSABI_LONG(0x00000001)) +#define REG_OPENED_EXISTING_KEY (__MSABI_LONG(0x00000002)) +#define REG_STANDARD_FORMAT 1 +#define REG_LATEST_FORMAT 2 +#define REG_NO_COMPRESSION 4 +#define REG_WHOLE_HIVE_VOLATILE (__MSABI_LONG(0x00000001)) +#define REG_REFRESH_HIVE (__MSABI_LONG(0x00000002)) +#define REG_NO_LAZY_FLUSH (__MSABI_LONG(0x00000004)) +#define REG_FORCE_RESTORE (__MSABI_LONG(0x00000008)) +#define REG_APP_HIVE (__MSABI_LONG(0x00000010)) +#define REG_PROCESS_PRIVATE (__MSABI_LONG(0x00000020)) +#define REG_START_JOURNAL (__MSABI_LONG(0x00000040)) +#define REG_HIVE_EXACT_FILE_GROWTH (__MSABI_LONG(0x00000080)) +#define REG_HIVE_NO_RM (__MSABI_LONG(0x00000100)) +#define REG_HIVE_SINGLE_LOG (__MSABI_LONG(0x00000200)) +#define REG_BOOT_HIVE (__MSABI_LONG(0x00000400)) +#define REG_FORCE_UNLOAD 1 +#define REG_NOTIFY_CHANGE_NAME (__MSABI_LONG(0x00000001)) +#define REG_NOTIFY_CHANGE_ATTRIBUTES (__MSABI_LONG(0x00000002)) +#define REG_NOTIFY_CHANGE_LAST_SET (__MSABI_LONG(0x00000004)) +#define REG_NOTIFY_CHANGE_SECURITY (__MSABI_LONG(0x00000008)) +#define REG_NOTIFY_THREAD_AGNOSTIC (__MSABI_LONG(0x10000000)) +#define REG_LEGAL_CHANGE_FILTER (REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY | REG_NOTIFY_THREAD_AGNOSTIC) +#define REG_NONE (0) +#define REG_SZ (1) +#define REG_EXPAND_SZ (2) +#define REG_BINARY (3) +#define REG_DWORD (4) +#define REG_DWORD_LITTLE_ENDIAN (4) +#define REG_DWORD_BIG_ENDIAN (5) +#define REG_LINK (6) +#define REG_MULTI_SZ (7) +#define REG_RESOURCE_LIST (8) +#define REG_FULL_RESOURCE_DESCRIPTOR (9) +#define REG_RESOURCE_REQUIREMENTS_LIST (10) +#define REG_QWORD (11) +#define REG_QWORD_LITTLE_ENDIAN (11) +#define SERVICE_KERNEL_DRIVER 0x00000001 +#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002 +#define SERVICE_ADAPTER 0x00000004 +#define SERVICE_RECOGNIZER_DRIVER 0x00000008 +#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER) +#define SERVICE_WIN32_OWN_PROCESS 0x00000010 +#define SERVICE_WIN32_SHARE_PROCESS 0x00000020 +#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS) +#define SERVICE_INTERACTIVE_PROCESS 0x00000100 +#define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS) +#define SERVICE_BOOT_START 0x00000000 +#define SERVICE_SYSTEM_START 0x00000001 +#define SERVICE_AUTO_START 0x00000002 +#define SERVICE_DEMAND_START 0x00000003 +#define SERVICE_DISABLED 0x00000004 +#define SERVICE_ERROR_IGNORE 0x00000000 +#define SERVICE_ERROR_NORMAL 0x00000001 +#define SERVICE_ERROR_SEVERE 0x00000002 +#define SERVICE_ERROR_CRITICAL 0x00000003 + typedef enum _CM_SERVICE_NODE_TYPE { + DriverType = 0x00000001,FileSystemType = 0x00000002,Win32ServiceOwnProcess = 0x00000010, + Win32ServiceShareProcess = 0x00000020,AdapterType = 0x00000004,RecognizerType = 0x00000008 + } SERVICE_NODE_TYPE; + typedef enum _CM_SERVICE_LOAD_TYPE { + BootLoad = 0x00000000,SystemLoad = 0x00000001,AutoLoad = 0x00000002,DemandLoad = 0x00000003, + DisableLoad = 0x00000004 + } SERVICE_LOAD_TYPE; + typedef enum _CM_ERROR_CONTROL_TYPE { + IgnoreError = 0x00000000,NormalError = 0x00000001,SevereError = 0x00000002,CriticalError = 0x00000003 + } SERVICE_ERROR_TYPE; +#define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001 +#define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002 +#define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004 +#define CM_SERVICE_SD_DISK_BOOT_LOAD 0x00000008 +#define CM_SERVICE_USB3_DISK_BOOT_LOAD 0x00000010 +#define CM_SERVICE_MEASURED_BOOT_LOAD 0x00000020 +#define CM_SERVICE_VERIFIER_BOOT_LOAD 0x00000040 +#define CM_SERVICE_WINPE_BOOT_LOAD 0x00000080 +#define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | CM_SERVICE_USB_DISK_BOOT_LOAD | CM_SERVICE_SD_DISK_BOOT_LOAD | CM_SERVICE_USB3_DISK_BOOT_LOAD | CM_SERVICE_MEASURED_BOOT_LOAD | CM_SERVICE_VERIFIER_BOOT_LOAD | CM_SERVICE_WINPE_BOOT_LOAD) +#define _NTDDTAPE_WINNT_ +#define TAPE_ERASE_SHORT __MSABI_LONG(0) +#define TAPE_ERASE_LONG __MSABI_LONG(1) + typedef struct _TAPE_ERASE { + DWORD Type; + BOOLEAN Immediate; + } TAPE_ERASE,*PTAPE_ERASE; +#define TAPE_LOAD __MSABI_LONG(0) +#define TAPE_UNLOAD __MSABI_LONG(1) +#define TAPE_TENSION __MSABI_LONG(2) +#define TAPE_LOCK __MSABI_LONG(3) +#define TAPE_UNLOCK __MSABI_LONG(4) +#define TAPE_FORMAT __MSABI_LONG(5) + typedef struct _TAPE_PREPARE { + DWORD Operation; + BOOLEAN Immediate; + } TAPE_PREPARE,*PTAPE_PREPARE; +#define TAPE_SETMARKS __MSABI_LONG(0) +#define TAPE_FILEMARKS __MSABI_LONG(1) +#define TAPE_SHORT_FILEMARKS __MSABI_LONG(2) +#define TAPE_LONG_FILEMARKS __MSABI_LONG(3) + typedef struct _TAPE_WRITE_MARKS { + DWORD Type; + DWORD Count; + BOOLEAN Immediate; + } TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS; +#define TAPE_ABSOLUTE_POSITION __MSABI_LONG(0) +#define TAPE_LOGICAL_POSITION __MSABI_LONG(1) +#define TAPE_PSEUDO_LOGICAL_POSITION __MSABI_LONG(2) + typedef struct _TAPE_GET_POSITION { + DWORD Type; + DWORD Partition; + LARGE_INTEGER Offset; + } TAPE_GET_POSITION,*PTAPE_GET_POSITION; +#define TAPE_REWIND __MSABI_LONG(0) +#define TAPE_ABSOLUTE_BLOCK __MSABI_LONG(1) +#define TAPE_LOGICAL_BLOCK __MSABI_LONG(2) +#define TAPE_PSEUDO_LOGICAL_BLOCK __MSABI_LONG(3) +#define TAPE_SPACE_END_OF_DATA __MSABI_LONG(4) +#define TAPE_SPACE_RELATIVE_BLOCKS __MSABI_LONG(5) +#define TAPE_SPACE_FILEMARKS __MSABI_LONG(6) +#define TAPE_SPACE_SEQUENTIAL_FMKS __MSABI_LONG(7) +#define TAPE_SPACE_SETMARKS __MSABI_LONG(8) +#define TAPE_SPACE_SEQUENTIAL_SMKS __MSABI_LONG(9) + typedef struct _TAPE_SET_POSITION { + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; + } TAPE_SET_POSITION,*PTAPE_SET_POSITION; +#define TAPE_DRIVE_FIXED 0x00000001 +#define TAPE_DRIVE_SELECT 0x00000002 +#define TAPE_DRIVE_INITIATOR 0x00000004 +#define TAPE_DRIVE_ERASE_SHORT 0x00000010 +#define TAPE_DRIVE_ERASE_LONG 0x00000020 +#define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040 +#define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080 +#define TAPE_DRIVE_TAPE_CAPACITY 0x00000100 +#define TAPE_DRIVE_TAPE_REMAINING 0x00000200 +#define TAPE_DRIVE_FIXED_BLOCK 0x00000400 +#define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800 +#define TAPE_DRIVE_WRITE_PROTECT 0x00001000 +#define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000 +#define TAPE_DRIVE_ECC 0x00010000 +#define TAPE_DRIVE_COMPRESSION 0x00020000 +#define TAPE_DRIVE_PADDING 0x00040000 +#define TAPE_DRIVE_REPORT_SMKS 0x00080000 +#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000 +#define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000 +#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000 +#define TAPE_DRIVE_EJECT_MEDIA 0x01000000 +#define TAPE_DRIVE_CLEAN_REQUESTS 0x02000000 +#define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x04000000 +#define TAPE_DRIVE_RESERVED_BIT 0x80000000 +#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001 +#define TAPE_DRIVE_TENSION 0x80000002 +#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004 +#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008 +#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010 +#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020 +#define TAPE_DRIVE_TENSION_IMMED 0x80000040 +#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080 +#define TAPE_DRIVE_SET_ECC 0x80000100 +#define TAPE_DRIVE_SET_COMPRESSION 0x80000200 +#define TAPE_DRIVE_SET_PADDING 0x80000400 +#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800 +#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000 +#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000 +#define TAPE_DRIVE_LOGICAL_BLK 0x80004000 +#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000 +#define TAPE_DRIVE_END_OF_DATA 0x80010000 +#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000 +#define TAPE_DRIVE_FILEMARKS 0x80040000 +#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000 +#define TAPE_DRIVE_SETMARKS 0x80100000 +#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000 +#define TAPE_DRIVE_REVERSE_POSITION 0x80400000 +#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000 +#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000 +#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000 +#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000 +#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 +#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 +#define TAPE_DRIVE_FORMAT 0xA0000000 +#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000 +#define TAPE_DRIVE_HIGH_FEATURES 0x80000000 + typedef struct _TAPE_GET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD DefaultBlockSize; + DWORD MaximumBlockSize; + DWORD MinimumBlockSize; + DWORD MaximumPartitionCount; + DWORD FeaturesLow; + DWORD FeaturesHigh; + DWORD EOTWarningZoneSize; + } TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS; + typedef struct _TAPE_SET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD EOTWarningZoneSize; + } TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS; + typedef struct _TAPE_GET_MEDIA_PARAMETERS { + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; + } TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS; + typedef struct _TAPE_SET_MEDIA_PARAMETERS { + DWORD BlockSize; + } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS; +#define TAPE_FIXED_PARTITIONS __MSABI_LONG(0) +#define TAPE_SELECT_PARTITIONS __MSABI_LONG(1) +#define TAPE_INITIATOR_PARTITIONS __MSABI_LONG(2) + typedef struct _TAPE_CREATE_PARTITION { + DWORD Method; + DWORD Count; + DWORD Size; + } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION; +#define TAPE_QUERY_DRIVE_PARAMETERS __MSABI_LONG(0) +#define TAPE_QUERY_MEDIA_CAPACITY __MSABI_LONG(1) +#define TAPE_CHECK_FOR_DRIVE_PROBLEM __MSABI_LONG(2) +#define TAPE_QUERY_IO_ERROR_DATA __MSABI_LONG(3) +#define TAPE_QUERY_DEVICE_ERROR_DATA __MSABI_LONG(4) + typedef struct _TAPE_WMI_OPERATIONS { + DWORD Method; + DWORD DataBufferSize; + PVOID DataBuffer; + } TAPE_WMI_OPERATIONS,*PTAPE_WMI_OPERATIONS; + typedef enum _TAPE_DRIVE_PROBLEM_TYPE { + TapeDriveProblemNone,TapeDriveReadWriteWarning,TapeDriveReadWriteError,TapeDriveReadWarning,TapeDriveWriteWarning,TapeDriveReadError,TapeDriveWriteError,TapeDriveHardwareError,TapeDriveUnsupportedMedia,TapeDriveScsiConnectionError,TapeDriveTimetoClean,TapeDriveCleanDriveNow,TapeDriveMediaLifeExpired,TapeDriveSnappedTape + } TAPE_DRIVE_PROBLEM_TYPE; + typedef DWORD TP_VERSION,*PTP_VERSION; + typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE,*PTP_CALLBACK_INSTANCE; + typedef void ( *PTP_SIMPLE_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context); + typedef struct _TP_POOL TP_POOL,*PTP_POOL; + typedef enum _TP_CALLBACK_PRIORITY { + TP_CALLBACK_PRIORITY_HIGH, + TP_CALLBACK_PRIORITY_NORMAL, + TP_CALLBACK_PRIORITY_LOW, + TP_CALLBACK_PRIORITY_INVALID, + TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID + } TP_CALLBACK_PRIORITY; + typedef struct _TP_POOL_STACK_INFORMATION { + SIZE_T StackReserve; + SIZE_T StackCommit; + } TP_POOL_STACK_INFORMATION, *PTP_POOL_STACK_INFORMATION; + typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP,*PTP_CLEANUP_GROUP; + typedef void ( *PTP_CLEANUP_GROUP_CANCEL_CALLBACK) (PVOID ObjectContext, PVOID CleanupContext); + typedef struct _TP_CALLBACK_ENVIRON_V1 { + TP_VERSION Version; + PTP_POOL Pool; + PTP_CLEANUP_GROUP CleanupGroup; + PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback; + PVOID RaceDll; + struct _ACTIVATION_CONTEXT *ActivationContext; + PTP_SIMPLE_CALLBACK FinalizationCallback; + union { + DWORD Flags; + struct { + DWORD LongFunction : 1; + DWORD Persistent : 1; + DWORD Private : 30; + } s; + } u; + } TP_CALLBACK_ENVIRON_V1; + typedef TP_CALLBACK_ENVIRON_V1 TP_CALLBACK_ENVIRON,*PTP_CALLBACK_ENVIRON; + typedef struct _TP_WORK TP_WORK,*PTP_WORK; + typedef void ( *PTP_WORK_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work); + typedef struct _TP_TIMER TP_TIMER,*PTP_TIMER; + typedef void ( *PTP_TIMER_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_TIMER Timer); + typedef DWORD TP_WAIT_RESULT; + typedef struct _TP_WAIT TP_WAIT,*PTP_WAIT; + typedef void ( *PTP_WAIT_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult); + typedef struct _TP_IO TP_IO,*PTP_IO; + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpInitializeCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { + cbe->Pool = ((void*)0); + cbe->CleanupGroup = ((void*)0); + cbe->CleanupGroupCancelCallback = ((void*)0); + cbe->RaceDll = ((void*)0); + cbe->ActivationContext = ((void*)0); + cbe->FinalizationCallback = ((void*)0); + cbe->u.Flags = 0; + cbe->Version = 1; + } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackThreadpool (PTP_CALLBACK_ENVIRON cbe, PTP_POOL pool) { cbe->Pool = pool; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackCleanupGroup (PTP_CALLBACK_ENVIRON cbe, PTP_CLEANUP_GROUP cleanup_group, PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb) { + cbe->CleanupGroup = cleanup_group; + cbe->CleanupGroupCancelCallback = cleanup_group_cb; + } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackActivationContext (PTP_CALLBACK_ENVIRON cbe, struct _ACTIVATION_CONTEXT *actx) { cbe->ActivationContext = actx; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackNoActivationContext (PTP_CALLBACK_ENVIRON cbe) { cbe->ActivationContext = (struct _ACTIVATION_CONTEXT *) (LONG_PTR) -1; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackLongFunction (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.LongFunction = 1; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackRaceWithDll (PTP_CALLBACK_ENVIRON cbe, PVOID h) { cbe->RaceDll = h; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackFinalizationCallback (PTP_CALLBACK_ENVIRON cbe, PTP_SIMPLE_CALLBACK fini_cb) { cbe->FinalizationCallback = fini_cb; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackPersistent (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.Persistent = 1; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpDestroyCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { {(cbe) = (cbe);}; } + struct _TEB *NtCurrentTeb (void); + PVOID GetCurrentFiber (void); + PVOID GetFiberData (void); + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) struct _TEB *NtCurrentTeb(void) { struct _TEB *teb; + __asm ("mov %0, x18" : "=r" (teb)); + return teb; } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) PVOID GetCurrentFiber(void) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); } + extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) PVOID GetFiberData (void) { return *(PVOID *)GetCurrentFiber (); } +#define _NTTMAPI_ +#define _KTMTYPES_ + typedef GUID CRM_PROTOCOL_ID,*PCRM_PROTOCOL_ID; +#define TRANSACTION_MANAGER_VOLATILE 0x00000001 +#define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x00000000 +#define TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 0x00000002 +#define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x00000004 +#define TRANSACTION_MANAGER_COMMIT_LOWEST 0x00000008 +#define TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 0x00000010 +#define TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 0x00000020 +#define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x0000003f +#define TRANSACTION_DO_NOT_PROMOTE 0x00000001 +#define TRANSACTION_MAXIMUM_OPTION 0x00000001 +#define RESOURCE_MANAGER_VOLATILE 0x00000001 +#define RESOURCE_MANAGER_COMMUNICATION 0x00000002 +#define RESOURCE_MANAGER_MAXIMUM_OPTION 0x00000003 +#define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x00000001 +#define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x00000002 +#define CRM_PROTOCOL_MAXIMUM_OPTION 0x00000003 +#define ENLISTMENT_SUPERIOR 0x00000001 +#define ENLISTMENT_MAXIMUM_OPTION 0x00000001 + typedef ULONG NOTIFICATION_MASK; +#define TRANSACTION_NOTIFY_MASK 0x3fffffff +#define TRANSACTION_NOTIFY_PREPREPARE 0x00000001 +#define TRANSACTION_NOTIFY_PREPARE 0x00000002 +#define TRANSACTION_NOTIFY_COMMIT 0x00000004 +#define TRANSACTION_NOTIFY_ROLLBACK 0x00000008 +#define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x00000010 +#define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x00000020 +#define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x00000040 +#define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x00000080 +#define TRANSACTION_NOTIFY_RECOVER 0x00000100 +#define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x00000200 +#define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x00000400 +#define TRANSACTION_NOTIFY_RECOVER_QUERY 0x00000800 +#define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x00001000 +#define TRANSACTION_NOTIFY_LAST_RECOVER 0x00002000 +#define TRANSACTION_NOTIFY_INDOUBT 0x00004000 +#define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x00008000 +#define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x00010000 +#define TRANSACTION_NOTIFY_MARSHAL 0x00020000 +#define TRANSACTION_NOTIFY_ENLIST_MASK 0x00040000 +#define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x01000000 +#define TRANSACTION_NOTIFY_TM_ONLINE 0x02000000 +#define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x04000000 +#define TRANSACTION_NOTIFY_PROMOTE 0x08000000 +#define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000 +#define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000 +#define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000 +#define TRANSACTIONMANAGER_OBJECT_PATH L"\\TransactionManager\\" +#define TRANSACTION_OBJECT_PATH L"\\Transaction\\" +#define ENLISTMENT_OBJECT_PATH L"\\Enlistment\\" +#define RESOURCE_MANAGER_OBJECT_PATH L"\\ResourceManager\\" +#define TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTIONMANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR))) +#define TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTION_OBJECT_PATH) + (38 * sizeof (WCHAR))) +#define ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (ENLISTMENT_OBJECT_PATH) + (38 * sizeof (WCHAR))) +#define RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (RESOURCE_MANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR))) + typedef struct _TRANSACTION_NOTIFICATION { + PVOID TransactionKey; + ULONG TransactionNotification; + LARGE_INTEGER TmVirtualClock; + ULONG ArgumentLength; + } TRANSACTION_NOTIFICATION,*PTRANSACTION_NOTIFICATION; + typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT { + GUID EnlistmentId; + GUID UOW; + } TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT,*PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT; +#define TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED 0x1 + typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT { + GUID TmIdentity; + ULONG Flags; + } TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT,*PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT; + typedef ULONG SAVEPOINT_ID,*PSAVEPOINT_ID; + typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT { + SAVEPOINT_ID SavepointId; + } TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT,*PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT; + typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT { + ULONG PropagationCookie; + GUID UOW; + GUID TmIdentity; + ULONG BufferLength; + } TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT; + typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT { + ULONG MarshalCookie; + GUID UOW; + } TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT,*PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT; + typedef TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT; +#define KTM_MARSHAL_BLOB_VERSION_MAJOR 1 +#define KTM_MARSHAL_BLOB_VERSION_MINOR 1 +#define MAX_TRANSACTION_DESCRIPTION_LENGTH 64 +#define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64 + typedef struct _KCRM_MARSHAL_HEADER { + ULONG VersionMajor; + ULONG VersionMinor; + ULONG NumProtocols; + ULONG Unused; + } KCRM_MARSHAL_HEADER,*PKCRM_MARSHAL_HEADER,* PRKCRM_MARSHAL_HEADER; + typedef struct _KCRM_TRANSACTION_BLOB { + GUID UOW; + GUID TmIdentity; + ULONG IsolationLevel; + ULONG IsolationFlags; + ULONG Timeout; + WCHAR Description[64]; + } KCRM_TRANSACTION_BLOB,*PKCRM_TRANSACTION_BLOB,* PRKCRM_TRANSACTION_BLOB; + typedef struct _KCRM_PROTOCOL_BLOB { + CRM_PROTOCOL_ID ProtocolId; + ULONG StaticInfoLength; + ULONG TransactionIdInfoLength; + ULONG Unused1; + ULONG Unused2; + } KCRM_PROTOCOL_BLOB,*PKCRM_PROTOCOL_BLOB,* PRKCRM_PROTOCOL_BLOB; + +#define TRANSACTIONMANAGER_QUERY_INFORMATION 0x00001 +#define TRANSACTIONMANAGER_SET_INFORMATION 0x00002 +#define TRANSACTIONMANAGER_RECOVER 0x00004 +#define TRANSACTIONMANAGER_RENAME 0x00008 +#define TRANSACTIONMANAGER_CREATE_RM 0x00010 +#define TRANSACTIONMANAGER_BIND_TRANSACTION 0x00020 +#define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTIONMANAGER_QUERY_INFORMATION) +#define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTIONMANAGER_SET_INFORMATION | TRANSACTIONMANAGER_RECOVER | TRANSACTIONMANAGER_RENAME | TRANSACTIONMANAGER_CREATE_RM) +#define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE) +#define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTIONMANAGER_GENERIC_READ | TRANSACTIONMANAGER_GENERIC_WRITE | TRANSACTIONMANAGER_GENERIC_EXECUTE | TRANSACTIONMANAGER_BIND_TRANSACTION) +#define TRANSACTION_QUERY_INFORMATION (0x0001) +#define TRANSACTION_SET_INFORMATION (0x0002) +#define TRANSACTION_ENLIST (0x0004) +#define TRANSACTION_COMMIT (0x0008) +#define TRANSACTION_ROLLBACK (0x0010) +#define TRANSACTION_PROPAGATE (0x0020) +#define TRANSACTION_RIGHT_RESERVED1 (0x0040) +#define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTION_QUERY_INFORMATION | SYNCHRONIZE) +#define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_COMMIT | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE) +#define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | TRANSACTION_COMMIT | TRANSACTION_ROLLBACK | SYNCHRONIZE) +#define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTION_GENERIC_READ | TRANSACTION_GENERIC_WRITE | TRANSACTION_GENERIC_EXECUTE) +#define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ | STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE) +#define RESOURCEMANAGER_QUERY_INFORMATION (0x0001) +#define RESOURCEMANAGER_SET_INFORMATION (0x0002) +#define RESOURCEMANAGER_RECOVER (0x0004) +#define RESOURCEMANAGER_ENLIST (0x0008) +#define RESOURCEMANAGER_GET_NOTIFICATION (0x0010) +#define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020) +#define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040) +#define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | RESOURCEMANAGER_QUERY_INFORMATION | SYNCHRONIZE) +#define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | RESOURCEMANAGER_SET_INFORMATION | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_REGISTER_PROTOCOL | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE) +#define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE) +#define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | RESOURCEMANAGER_GENERIC_READ | RESOURCEMANAGER_GENERIC_WRITE | RESOURCEMANAGER_GENERIC_EXECUTE) +#define ENLISTMENT_QUERY_INFORMATION 1 +#define ENLISTMENT_SET_INFORMATION 2 +#define ENLISTMENT_RECOVER 4 +#define ENLISTMENT_SUBORDINATE_RIGHTS 8 +#define ENLISTMENT_SUPERIOR_RIGHTS 0x10 +#define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ | ENLISTMENT_QUERY_INFORMATION) +#define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | ENLISTMENT_SET_INFORMATION | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS) +#define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS) +#define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | ENLISTMENT_GENERIC_READ | ENLISTMENT_GENERIC_WRITE | ENLISTMENT_GENERIC_EXECUTE) + typedef enum _TRANSACTION_OUTCOME { + TransactionOutcomeUndetermined = 1, + TransactionOutcomeCommitted, + TransactionOutcomeAborted, + } TRANSACTION_OUTCOME; + typedef enum _TRANSACTION_STATE { + TransactionStateNormal = 1, + TransactionStateIndoubt, + TransactionStateCommittedNotify, + } TRANSACTION_STATE; + typedef struct _TRANSACTION_BASIC_INFORMATION { + GUID TransactionId; + DWORD State; + DWORD Outcome; + } TRANSACTION_BASIC_INFORMATION,*PTRANSACTION_BASIC_INFORMATION; + typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION { + GUID TmIdentity; + LARGE_INTEGER VirtualClock; + } TRANSACTIONMANAGER_BASIC_INFORMATION,*PTRANSACTIONMANAGER_BASIC_INFORMATION; + typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION { + GUID LogIdentity; + } TRANSACTIONMANAGER_LOG_INFORMATION,*PTRANSACTIONMANAGER_LOG_INFORMATION; + typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION { + DWORD LogPathLength; + WCHAR LogPath[1]; + } TRANSACTIONMANAGER_LOGPATH_INFORMATION,*PTRANSACTIONMANAGER_LOGPATH_INFORMATION; + typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION { + ULONGLONG LastRecoveredLsn; + } TRANSACTIONMANAGER_RECOVERY_INFORMATION,*PTRANSACTIONMANAGER_RECOVERY_INFORMATION; + typedef struct _TRANSACTIONMANAGER_OLDEST_INFORMATION { + GUID OldestTransactionGuid; + } TRANSACTIONMANAGER_OLDEST_INFORMATION,*PTRANSACTIONMANAGER_OLDEST_INFORMATION; + typedef struct _TRANSACTION_PROPERTIES_INFORMATION { + DWORD IsolationLevel; + DWORD IsolationFlags; + LARGE_INTEGER Timeout; + DWORD Outcome; + DWORD DescriptionLength; + WCHAR Description[1]; + } TRANSACTION_PROPERTIES_INFORMATION,*PTRANSACTION_PROPERTIES_INFORMATION; + typedef struct _TRANSACTION_BIND_INFORMATION { + HANDLE TmHandle; + } TRANSACTION_BIND_INFORMATION,*PTRANSACTION_BIND_INFORMATION; + typedef struct _TRANSACTION_ENLISTMENT_PAIR { + GUID EnlistmentId; + GUID ResourceManagerId; + } TRANSACTION_ENLISTMENT_PAIR,*PTRANSACTION_ENLISTMENT_PAIR; + typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION { + DWORD NumberOfEnlistments; + TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1]; + } TRANSACTION_ENLISTMENTS_INFORMATION,*PTRANSACTION_ENLISTMENTS_INFORMATION; + typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION { + TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair; + } TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION,*PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION; + typedef struct _RESOURCEMANAGER_BASIC_INFORMATION { + GUID ResourceManagerId; + DWORD DescriptionLength; + WCHAR Description[1]; + } RESOURCEMANAGER_BASIC_INFORMATION,*PRESOURCEMANAGER_BASIC_INFORMATION; + typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION { + HANDLE IoCompletionPortHandle; + ULONG_PTR CompletionKey; + } RESOURCEMANAGER_COMPLETION_INFORMATION,*PRESOURCEMANAGER_COMPLETION_INFORMATION; + typedef enum _TRANSACTION_INFORMATION_CLASS { + TransactionBasicInformation, + TransactionPropertiesInformation, + TransactionEnlistmentInformation, + TransactionSuperiorEnlistmentInformation, + TransactionBindInformation, + TransactionDTCPrivateInformation + } TRANSACTION_INFORMATION_CLASS; + typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS { + TransactionManagerBasicInformation, + TransactionManagerLogInformation, + TransactionManagerLogPathInformation, + TransactionManagerOnlineProbeInformation = 3, + TransactionManagerRecoveryInformation = 4, + TransactionManagerOldestTransactionInformation = 5 + } TRANSACTIONMANAGER_INFORMATION_CLASS; + typedef enum _RESOURCEMANAGER_INFORMATION_CLASS { + ResourceManagerBasicInformation, + ResourceManagerCompletionInformation + } RESOURCEMANAGER_INFORMATION_CLASS; + typedef struct _ENLISTMENT_BASIC_INFORMATION { + GUID EnlistmentId; + GUID TransactionId; + GUID ResourceManagerId; + } ENLISTMENT_BASIC_INFORMATION,*PENLISTMENT_BASIC_INFORMATION; + typedef struct _ENLISTMENT_CRM_INFORMATION { + GUID CrmTransactionManagerId; + GUID CrmResourceManagerId; + GUID CrmEnlistmentId; + } ENLISTMENT_CRM_INFORMATION,*PENLISTMENT_CRM_INFORMATION; + typedef enum _ENLISTMENT_INFORMATION_CLASS { + EnlistmentBasicInformation, + EnlistmentRecoveryInformation, + EnlistmentCrmInformation + } ENLISTMENT_INFORMATION_CLASS; + typedef struct _TRANSACTION_LIST_ENTRY { + GUID UOW; + } TRANSACTION_LIST_ENTRY,*PTRANSACTION_LIST_ENTRY; + typedef struct _TRANSACTION_LIST_INFORMATION { + DWORD NumberOfTransactions; + TRANSACTION_LIST_ENTRY TransactionInformation[1]; + } TRANSACTION_LIST_INFORMATION,*PTRANSACTION_LIST_INFORMATION; + typedef enum _KTMOBJECT_TYPE { + KTMOBJECT_TRANSACTION, + KTMOBJECT_TRANSACTION_MANAGER, + KTMOBJECT_RESOURCE_MANAGER, + KTMOBJECT_ENLISTMENT, + KTMOBJECT_INVALID + } KTMOBJECT_TYPE,*PKTMOBJECT_TYPE; + typedef struct _KTMOBJECT_CURSOR { + GUID LastQuery; + DWORD ObjectIdCount; + GUID ObjectIds[1]; + } KTMOBJECT_CURSOR,*PKTMOBJECT_CURSOR; +#define WOW64_CONTEXT_i386 0x00010000 +#define WOW64_CONTEXT_i486 0x00010000 +#define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000001)) +#define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000002)) +#define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000004)) +#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008)) +#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010)) +#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020)) +#define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS) +#define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS | WOW64_CONTEXT_FLOATING_POINT | WOW64_CONTEXT_DEBUG_REGISTERS | WOW64_CONTEXT_EXTENDED_REGISTERS) +#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040)) +#define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000 +#define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000 +#define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000 +#define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000 +#define WOW64_SIZE_OF_80387_REGISTERS 80 +#define WOW64_MAXIMUM_SUPPORTED_EXTENSION 512 +typedef struct _WOW64_FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE RegisterArea[80]; + DWORD Cr0NpxState; +} WOW64_FLOATING_SAVE_AREA, *PWOW64_FLOATING_SAVE_AREA; +#pragma pack(push,4) +typedef struct _WOW64_CONTEXT { + DWORD ContextFlags; + DWORD Dr0; + DWORD Dr1; + DWORD Dr2; + DWORD Dr3; + DWORD Dr6; + DWORD Dr7; + WOW64_FLOATING_SAVE_AREA FloatSave; + DWORD SegGs; + DWORD SegFs; + DWORD SegEs; + DWORD SegDs; + DWORD Edi; + DWORD Esi; + DWORD Ebx; + DWORD Edx; + DWORD Ecx; + DWORD Eax; + DWORD Ebp; + DWORD Eip; + DWORD SegCs; + DWORD EFlags; + DWORD Esp; + DWORD SegSs; + BYTE ExtendedRegisters[512]; +} WOW64_CONTEXT, *PWOW64_CONTEXT; +#pragma pack(pop) + +typedef struct _WOW64_LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; + __extension__ union { + struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + } Bytes; + struct { + DWORD BaseMid :8; + DWORD Type :5; + DWORD Dpl :2; + DWORD Pres :1; + DWORD LimitHi :4; + DWORD Sys :1; + DWORD Reserved_0 :1; + DWORD Default_Big :1; + DWORD Granularity :1; + DWORD BaseHi :8; + } Bits; + } HighWord; +} WOW64_LDT_ENTRY, *PWOW64_LDT_ENTRY; + typedef struct _WOW64_DESCRIPTOR_TABLE_ENTRY { + DWORD Selector; + WOW64_LDT_ENTRY Descriptor; + } WOW64_DESCRIPTOR_TABLE_ENTRY,*PWOW64_DESCRIPTOR_TABLE_ENTRY; +#define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION (1) +#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION (2) +#define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION (3) +#define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION (4) +#define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION (5) +#define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION (6) +#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION (7) +#define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE (8) +#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES (9) +#define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS (10) +#define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11) +#define ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES (12) + typedef UINT_PTR WPARAM; + typedef LONG_PTR LPARAM; + typedef LONG_PTR LRESULT; +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#define MAKEWORD(a,b) ((WORD) (((BYTE) (((DWORD_PTR) (a)) & 0xff)) | ((WORD) ((BYTE) (((DWORD_PTR) (b)) & 0xff))) << 8)) +#define MAKELONG(a,b) ((LONG) (((WORD) (((DWORD_PTR) (a)) & 0xffff)) | ((DWORD) ((WORD) (((DWORD_PTR) (b)) & 0xffff))) << 16)) +#define LOWORD(l) ((WORD) (((DWORD_PTR) (l)) & 0xffff)) +#define HIWORD(l) ((WORD) ((((DWORD_PTR) (l)) >> 16) & 0xffff)) +#define LOBYTE(w) ((BYTE) (((DWORD_PTR) (w)) & 0xff)) +#define HIBYTE(w) ((BYTE) ((((DWORD_PTR) (w)) >> 8) & 0xff)) + typedef HANDLE *SPHANDLE; + typedef HANDLE *LPHANDLE; + typedef HANDLE HGLOBAL; + typedef HANDLE HLOCAL; + typedef HANDLE GLOBALHANDLE; + typedef HANDLE LOCALHANDLE; + typedef INT_PTR (__attribute__((__stdcall__)) *FARPROC) (); + typedef INT_PTR (__attribute__((__stdcall__)) *NEARPROC) (); + typedef INT_PTR (__attribute__((__stdcall__)) *PROC) (); + typedef WORD ATOM; + typedef int HFILE; + struct HINSTANCE__ { int unused; }; typedef struct HINSTANCE__ *HINSTANCE; + struct HKEY__ { int unused; }; typedef struct HKEY__ *HKEY; + typedef HKEY *PHKEY; + struct HKL__ { int unused; }; typedef struct HKL__ *HKL; + struct HLSURF__ { int unused; }; typedef struct HLSURF__ *HLSURF; + struct HMETAFILE__ { int unused; }; typedef struct HMETAFILE__ *HMETAFILE; + typedef HINSTANCE HMODULE; + struct HRGN__ { int unused; }; typedef struct HRGN__ *HRGN; + struct HRSRC__ { int unused; }; typedef struct HRSRC__ *HRSRC; + struct HSPRITE__ { int unused; }; typedef struct HSPRITE__ *HSPRITE; + struct HSTR__ { int unused; }; typedef struct HSTR__ *HSTR; + struct HTASK__ { int unused; }; typedef struct HTASK__ *HTASK; + struct HWINSTA__ { int unused; }; typedef struct HWINSTA__ *HWINSTA; + typedef struct _FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; + } FILETIME,*PFILETIME,*LPFILETIME; +#define _FILETIME_ +struct HWND__ { int unused; }; typedef struct HWND__ *HWND; +struct HHOOK__ { int unused; }; typedef struct HHOOK__ *HHOOK; + typedef void *HGDIOBJ; +struct HACCEL__ { int unused; }; typedef struct HACCEL__ *HACCEL; +struct HBITMAP__ { int unused; }; typedef struct HBITMAP__ *HBITMAP; +struct HBRUSH__ { int unused; }; typedef struct HBRUSH__ *HBRUSH; +struct HCOLORSPACE__ { int unused; }; typedef struct HCOLORSPACE__ *HCOLORSPACE; +struct HDC__ { int unused; }; typedef struct HDC__ *HDC; +struct HGLRC__ { int unused; }; typedef struct HGLRC__ *HGLRC; +struct HDESK__ { int unused; }; typedef struct HDESK__ *HDESK; +struct HENHMETAFILE__ { int unused; }; typedef struct HENHMETAFILE__ *HENHMETAFILE; +struct HFONT__ { int unused; }; typedef struct HFONT__ *HFONT; +struct HICON__ { int unused; }; typedef struct HICON__ *HICON; +struct HMENU__ { int unused; }; typedef struct HMENU__ *HMENU; +struct HPALETTE__ { int unused; }; typedef struct HPALETTE__ *HPALETTE; +struct HPEN__ { int unused; }; typedef struct HPEN__ *HPEN; +struct HMONITOR__ { int unused; }; typedef struct HMONITOR__ *HMONITOR; +#define HMONITOR_DECLARED 1 +struct HWINEVENTHOOK__ { int unused; }; typedef struct HWINEVENTHOOK__ *HWINEVENTHOOK; +typedef HICON HCURSOR; +typedef DWORD COLORREF; +struct HUMPD__ { int unused; }; typedef struct HUMPD__ *HUMPD; +typedef DWORD *LPCOLORREF; +#define HFILE_ERROR ((HFILE)-1) +typedef struct tagRECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECT,*PRECT,*NPRECT,*LPRECT; +typedef const RECT *LPCRECT; +typedef struct _RECTL { + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECTL,*PRECTL,*LPRECTL; +typedef const RECTL *LPCRECTL; +typedef struct tagPOINT { + LONG x; + LONG y; +} POINT,*PPOINT,*NPPOINT,*LPPOINT; +typedef struct _POINTL { + LONG x; + LONG y; +} POINTL,*PPOINTL; +typedef struct tagSIZE { + LONG cx; + LONG cy; +} SIZE,*PSIZE,*LPSIZE; +typedef SIZE SIZEL; +typedef SIZE *PSIZEL,*LPSIZEL; +typedef struct tagPOINTS { + SHORT x; + SHORT y; +} POINTS,*PPOINTS,*LPPOINTS; +#define APP_LOCAL_DEVICE_ID_SIZE 32 +typedef struct APP_LOCAL_DEVICE_ID { + BYTE value[32]; +} APP_LOCAL_DEVICE_ID; +#define DM_UPDATE 1 +#define DM_COPY 2 +#define DM_PROMPT 4 +#define DM_MODIFY 8 +#define DM_IN_BUFFER DM_MODIFY +#define DM_IN_PROMPT DM_PROMPT +#define DM_OUT_BUFFER DM_COPY +#define DM_OUT_DEFAULT DM_UPDATE +#define DC_FIELDS 1 +#define DC_PAPERS 2 +#define DC_PAPERSIZE 3 +#define DC_MINEXTENT 4 +#define DC_MAXEXTENT 5 +#define DC_BINS 6 +#define DC_DUPLEX 7 +#define DC_SIZE 8 +#define DC_EXTRA 9 +#define DC_VERSION 10 +#define DC_DRIVER 11 +#define DC_BINNAMES 12 +#define DC_ENUMRESOLUTIONS 13 +#define DC_FILEDEPENDENCIES 14 +#define DC_TRUETYPE 15 +#define DC_PAPERNAMES 16 +#define DC_ORIENTATION 17 +#define DC_COPIES 18 +#define _DPI_AWARENESS_CONTEXTS_ +struct DPI_AWARENESS_CONTEXT__ { int unused; }; typedef struct DPI_AWARENESS_CONTEXT__ *DPI_AWARENESS_CONTEXT; +typedef enum DPI_AWARENESS { + DPI_AWARENESS_INVALID = -1, + DPI_AWARENESS_UNAWARE = 0, + DPI_AWARENESS_SYSTEM_AWARE = 1, + DPI_AWARENESS_PER_MONITOR_AWARE = 2 +} DPI_AWARENESS; +#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1) +#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2) +#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3) +#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4) +#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5) +typedef enum DPI_HOSTING_BEHAVIOR { + DPI_HOSTING_BEHAVIOR_INVALID = -1, + DPI_HOSTING_BEHAVIOR_DEFAULT = 0, + DPI_HOSTING_BEHAVIOR_MIXED = 1 +} DPI_HOSTING_BEHAVIOR; +#define _WINBASE_ +#define _APISETCCONV_ +#define CMAPI DECLSPEC_IMPORT +#define CREDUIAPI DECLSPEC_IMPORT +#define WINABLEAPI DECLSPEC_IMPORT +#define WINADVAPI DECLSPEC_IMPORT +#define WINBASEAPI DECLSPEC_IMPORT +#define WINUSERAPI DECLSPEC_IMPORT +#define ZAWPROXYAPI DECLSPEC_IMPORT +#define WINCFGMGR32API DECLSPEC_IMPORT +#define WINDEVQUERYAPI DECLSPEC_IMPORT +#define WINSWDEVICEAPI DECLSPEC_IMPORT +#define WINPATHCCHAPI WINBASEAPI +#define WINSTORAGEAPI DECLSPEC_IMPORT + +#define _MINWINBASE_ +#define MoveMemory RtlMoveMemory +#define CopyMemory RtlCopyMemory +#define FillMemory RtlFillMemory +#define ZeroMemory RtlZeroMemory + typedef struct _SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + WINBOOL bInheritHandle; + } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; + typedef struct _OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; + __extension__ union { + struct { + DWORD Offset; + DWORD OffsetHigh; + } ; + PVOID Pointer; + } ; + HANDLE hEvent; + } OVERLAPPED, *LPOVERLAPPED; + typedef struct _OVERLAPPED_ENTRY { + ULONG_PTR lpCompletionKey; + LPOVERLAPPED lpOverlapped; + ULONG_PTR Internal; + DWORD dwNumberOfBytesTransferred; + } OVERLAPPED_ENTRY, *LPOVERLAPPED_ENTRY; +#define _SYSTEMTIME_ + typedef struct _SYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; + } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; + typedef struct _WIN32_FIND_DATAA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + CHAR cFileName[260]; + CHAR cAlternateFileName[14]; + } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; + typedef struct _WIN32_FIND_DATAW { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + WCHAR cFileName[260]; + WCHAR cAlternateFileName[14]; + } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW; + typedef WIN32_FIND_DATAA WIN32_FIND_DATA; + typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA; + typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA; + typedef enum _FINDEX_INFO_LEVELS { + FindExInfoStandard, + FindExInfoBasic, + FindExInfoMaxInfoLevel + } FINDEX_INFO_LEVELS; +#define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001 +#define FIND_FIRST_EX_LARGE_FETCH 0x00000002 + typedef enum _FINDEX_SEARCH_OPS { + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp + } FINDEX_SEARCH_OPS; + typedef enum _GET_FILEEX_INFO_LEVELS { + GetFileExInfoStandard, + GetFileExMaxInfoLevel + } GET_FILEEX_INFO_LEVELS; + typedef enum _FILE_INFO_BY_HANDLE_CLASS { + FileBasicInfo , + FileStandardInfo, + FileNameInfo, + FileRenameInfo, + FileDispositionInfo, + FileAllocationInfo, + FileEndOfFileInfo, + FileStreamInfo, + FileCompressionInfo, + FileAttributeTagInfo, + FileIdBothDirectoryInfo, + FileIdBothDirectoryRestartInfo, + FileIoPriorityHintInfo, + FileRemoteProtocolInfo, + FileFullDirectoryInfo, + FileFullDirectoryRestartInfo, + FileCaseSensitiveInfo, + FileNormalizedNameInfo, + MaximumFileInfoByHandleClass + } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS; + typedef RTL_CRITICAL_SECTION CRITICAL_SECTION; + typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION; + typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION; + typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG; + typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG; + typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG; + typedef void (__attribute__((__stdcall__)) *LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped); +#define LOCKFILE_FAIL_IMMEDIATELY 0x1 +#define LOCKFILE_EXCLUSIVE_LOCK 0x2 + typedef struct _PROCESS_HEAP_ENTRY { + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; + __extension__ union { + struct { + HANDLE hMem; + DWORD dwReserved[3]; + } Block; + struct { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; + } Region; + } ; + } PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY; +#define PROCESS_HEAP_REGION 0x1 +#define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2 +#define PROCESS_HEAP_ENTRY_BUSY 0x4 +#define PROCESS_HEAP_SEG_ALLOC 0x8 +#define PROCESS_HEAP_ENTRY_MOVEABLE 0x10 +#define PROCESS_HEAP_ENTRY_DDESHARE 0x20 + typedef struct _REASON_CONTEXT { + ULONG Version; + DWORD Flags; + union { + struct { + HMODULE LocalizedReasonModule; + ULONG LocalizedReasonId; + ULONG ReasonStringCount; + LPWSTR *ReasonStrings; + } Detailed; + LPWSTR SimpleReasonString; + } Reason; + } REASON_CONTEXT, *PREASON_CONTEXT; +#define EXCEPTION_DEBUG_EVENT 1 +#define CREATE_THREAD_DEBUG_EVENT 2 +#define CREATE_PROCESS_DEBUG_EVENT 3 +#define EXIT_THREAD_DEBUG_EVENT 4 +#define EXIT_PROCESS_DEBUG_EVENT 5 +#define LOAD_DLL_DEBUG_EVENT 6 +#define UNLOAD_DLL_DEBUG_EVENT 7 +#define OUTPUT_DEBUG_STRING_EVENT 8 +#define RIP_EVENT 9 + typedef DWORD (__attribute__((__stdcall__)) *PTHREAD_START_ROUTINE) (LPVOID lpThreadParameter); + typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; + typedef LPVOID (__attribute__((__stdcall__)) *PENCLAVE_ROUTINE) (LPVOID lpThreadParameter); + typedef PENCLAVE_ROUTINE LPENCLAVE_ROUTINE; + typedef struct _EXCEPTION_DEBUG_INFO { + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; + } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO; + typedef struct _CREATE_THREAD_DEBUG_INFO { + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; + } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO; + typedef struct _CREATE_PROCESS_DEBUG_INFO { + HANDLE hFile; + HANDLE hProcess; + HANDLE hThread; + LPVOID lpBaseOfImage; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; + LPVOID lpImageName; + WORD fUnicode; + } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO; + typedef struct _EXIT_THREAD_DEBUG_INFO { + DWORD dwExitCode; + } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO; + typedef struct _EXIT_PROCESS_DEBUG_INFO { + DWORD dwExitCode; + } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO; + typedef struct _LOAD_DLL_DEBUG_INFO { + HANDLE hFile; + LPVOID lpBaseOfDll; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpImageName; + WORD fUnicode; + } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO; + typedef struct _UNLOAD_DLL_DEBUG_INFO { + LPVOID lpBaseOfDll; + } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO; + typedef struct _OUTPUT_DEBUG_STRING_INFO { + LPSTR lpDebugStringData; + WORD fUnicode; + WORD nDebugStringLength; + } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO; + typedef struct _RIP_INFO { + DWORD dwError; + DWORD dwType; + } RIP_INFO, *LPRIP_INFO; + typedef struct _DEBUG_EVENT { + DWORD dwDebugEventCode; + DWORD dwProcessId; + DWORD dwThreadId; + union { + EXCEPTION_DEBUG_INFO Exception; + CREATE_THREAD_DEBUG_INFO CreateThread; + CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; + EXIT_THREAD_DEBUG_INFO ExitThread; + EXIT_PROCESS_DEBUG_INFO ExitProcess; + LOAD_DLL_DEBUG_INFO LoadDll; + UNLOAD_DLL_DEBUG_INFO UnloadDll; + OUTPUT_DEBUG_STRING_INFO DebugString; + RIP_INFO RipInfo; + } u; + } DEBUG_EVENT, *LPDEBUG_EVENT; + typedef PCONTEXT LPCONTEXT; +#define STILL_ACTIVE STATUS_PENDING +#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION +#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT +#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT +#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP +#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED +#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND +#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO +#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT +#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION +#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW +#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK +#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW +#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO +#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW +#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION +#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR +#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION +#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION +#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW +#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION +#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION +#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE +#define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK +#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT +#define LMEM_FIXED 0x0 +#define LMEM_MOVEABLE 0x2 +#define LMEM_NOCOMPACT 0x10 +#define LMEM_NODISCARD 0x20 +#define LMEM_ZEROINIT 0x40 +#define LMEM_MODIFY 0x80 +#define LMEM_DISCARDABLE 0xf00 +#define LMEM_VALID_FLAGS 0xf72 +#define LMEM_INVALID_HANDLE 0x8000 +#define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT) +#define LPTR (LMEM_FIXED | LMEM_ZEROINIT) +#define NONZEROLHND (LMEM_MOVEABLE) +#define NONZEROLPTR (LMEM_FIXED) +#define LocalDiscard(h) LocalReAlloc ((h), 0, LMEM_MOVEABLE) +#define LMEM_DISCARDED 0x4000 +#define LMEM_LOCKCOUNT 0xff +#define NUMA_NO_PREFERRED_NODE ((DWORD) -1) +#define _BEM_H_ + typedef struct _CONTRACT_DESCRIPTION CONTRACT_DESCRIPTION; + typedef struct _BEM_REFERENCE BEM_REFERENCE; + typedef void (__attribute__((__stdcall__)) *BEM_FREE_INTERFACE_CALLBACK) (void *interfaceInstance); + HRESULT __attribute__((__stdcall__)) BemCreateReference (const GUID *const iid, void *interfaceInstance, BEM_FREE_INTERFACE_CALLBACK freeCallback, BEM_REFERENCE **reference); + HRESULT __attribute__((__stdcall__)) BemCreateContractFrom (LPCWSTR dllPath, const GUID *const extensionId, const CONTRACT_DESCRIPTION *contractDescription, void *hostContract, void **contract); + HRESULT __attribute__((__stdcall__)) BemCopyReference (BEM_REFERENCE *reference, BEM_REFERENCE **copiedReference); + void __attribute__((__stdcall__)) BemFreeReference (BEM_REFERENCE *reference); + void __attribute__((__stdcall__)) BemFreeContract (void *contract); +#define _APISETDEBUG_ + __declspec (dllimport) void __attribute__((__stdcall__)) DebugBreak (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsDebuggerPresent (void); + __declspec (dllimport) void __attribute__((__stdcall__)) OutputDebugStringA (LPCSTR lpOutputString); + __declspec (dllimport) void __attribute__((__stdcall__)) OutputDebugStringW (LPCWSTR lpOutputString); +#define OutputDebugString __MINGW_NAME_AW(OutputDebugString) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ContinueDebugEvent (DWORD dwProcessId, DWORD dwThreadId, DWORD dwContinueStatus); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WaitForDebugEvent (LPDEBUG_EVENT lpDebugEvent, DWORD dwMilliseconds); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DebugActiveProcess (DWORD dwProcessId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DebugActiveProcessStop (DWORD dwProcessId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckRemoteDebuggerPresent (HANDLE hProcess, PBOOL pbDebuggerPresent); +#define _ERRHANDLING_H_ +typedef LONG (__attribute__((__stdcall__)) *PTOP_LEVEL_EXCEPTION_FILTER) (struct _EXCEPTION_POINTERS *ExceptionInfo); +typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; + __declspec (dllimport) LPTOP_LEVEL_EXCEPTION_FILTER __attribute__((__stdcall__)) SetUnhandledExceptionFilter (LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); + __declspec (dllimport) LONG __attribute__((__stdcall__)) UnhandledExceptionFilter (struct _EXCEPTION_POINTERS *ExceptionInfo); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) AddVectoredExceptionHandler (ULONG First, PVECTORED_EXCEPTION_HANDLER Handler); + __declspec (dllimport) ULONG __attribute__((__stdcall__)) RemoveVectoredExceptionHandler (PVOID Handle); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) AddVectoredContinueHandler (ULONG First, PVECTORED_EXCEPTION_HANDLER Handler); + __declspec (dllimport) ULONG __attribute__((__stdcall__)) RemoveVectoredContinueHandler (PVOID Handle); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetErrorMode (void); + __declspec (dllimport) void __attribute__((__stdcall__)) RaiseException (DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR *lpArguments); + __declspec (dllimport) UINT __attribute__((__stdcall__)) SetErrorMode (UINT uMode); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLastError (void); + __declspec (dllimport) void __attribute__((__stdcall__)) SetLastError (DWORD dwErrCode); +#define _FIBERS_H_ +#define FLS_OUT_OF_INDEXES ((DWORD)0xffffffff) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) FlsAlloc (PFLS_CALLBACK_FUNCTION lpCallback); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) FlsGetValue (DWORD dwFlsIndex); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlsSetValue (DWORD dwFlsIndex, PVOID lpFlsData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlsFree (DWORD dwFlsIndex); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsThreadAFiber (void); +#define _APISETFILE_ +#define CREATE_NEW 1 +#define CREATE_ALWAYS 2 +#define OPEN_EXISTING 3 +#define OPEN_ALWAYS 4 +#define TRUNCATE_EXISTING 5 +#define INVALID_FILE_SIZE ((DWORD)0xffffffff) +#define INVALID_SET_FILE_POINTER ((DWORD)-1) +#define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#define CreateFile __MINGW_NAME_AW(CreateFile) +__declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFileAttributesW (LPCWSTR lpFileName); +#define GetFileAttributes __MINGW_NAME_AW(GetFileAttributes) +__declspec (dllimport) DWORD __attribute__((__stdcall__)) SetFilePointer (HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); + typedef struct _BY_HANDLE_FILE_INFORMATION { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD dwVolumeSerialNumber; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD nNumberOfLinks; + DWORD nFileIndexHigh; + DWORD nFileIndexLow; + } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, + *LPBY_HANDLE_FILE_INFORMATION; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileInformationByHandle (HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileA (LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DefineDosDeviceW (DWORD dwFlags, LPCWSTR lpDeviceName, LPCWSTR lpTargetPath); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindCloseChangeNotification (HANDLE hChangeHandle); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstChangeNotificationA (LPCSTR lpPathName, WINBOOL bWatchSubtree, DWORD dwNotifyFilter); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstChangeNotificationW (LPCWSTR lpPathName, WINBOOL bWatchSubtree, DWORD dwNotifyFilter); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstVolumeW (LPWSTR lpszVolumeName, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextChangeNotification (HANDLE hChangeHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextVolumeW (HANDLE hFindVolume, LPWSTR lpszVolumeName, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindVolumeClose (HANDLE hFindVolume); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileW (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFileSize (HANDLE hFile, LPDWORD lpFileSizeHigh); + __declspec (dllimport) LONG __attribute__((__stdcall__)) CompareFileTime (const FILETIME *lpFileTime1, const FILETIME *lpFileTime2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteVolumeMountPointW (LPCWSTR lpszVolumeMountPoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FileTimeToLocalFileTime (const FILETIME *lpFileTime, LPFILETIME lpLocalFileTime); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileA (LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileW (LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceA (LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceW (LPCWSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetDriveTypeA (LPCSTR lpRootPathName); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetDriveTypeW (LPCWSTR lpRootPathName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFileAttributesA (LPCSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileSizeEx (HANDLE hFile, PLARGE_INTEGER lpFileSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileTime (HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFileType (HANDLE hFile); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFullPathNameA (LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFullPathNameW (LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLogicalDrives (void); +#define FindFirstFile __MINGW_NAME_AW(FindFirstFile) +#define GetDiskFreeSpace __MINGW_NAME_AW(GetDiskFreeSpace) +#define GetDriveType __MINGW_NAME_AW(GetDriveType) +#define GetFullPathName __MINGW_NAME_AW(GetFullPathName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumeNameForVolumeMountPointW (LPCWSTR lpszVolumeMountPoint, LPWSTR lpszVolumeName, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumePathNameW (LPCWSTR lpszFileName, LPWSTR lpszVolumePathName, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadFileScatter (HANDLE hFile, FILE_SEGMENT_ELEMENT aSegmentArray[], DWORD nNumberOfBytesToRead, LPDWORD lpReserved, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileValidData (HANDLE hFile, LONGLONG ValidDataLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteFileGather (HANDLE hFile, FILE_SEGMENT_ELEMENT aSegmentArray[], DWORD nNumberOfBytesToWrite, LPDWORD lpReserved, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLogicalDriveStringsW (DWORD nBufferLength, LPWSTR lpBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetShortPathNameW (LPCWSTR lpszLongPath, LPWSTR lpszShortPath, DWORD cchBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) QueryDosDeviceW (LPCWSTR lpDeviceName, LPWSTR lpTargetPath, DWORD ucchMax); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumePathNamesForVolumeNameW (LPCWSTR lpszVolumeName, LPWCH lpszVolumePathNames, DWORD cchBufferLength, PDWORD lpcchReturnLength); +#define FindFirstChangeNotification __MINGW_NAME_AW(FindFirstChangeNotification) +#define GetLongPathName __MINGW_NAME_AW(GetLongPathName) +#define GetTempFileName __MINGW_NAME_AW(GetTempFileName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumeInformationByHandleW (HANDLE hFile, LPWSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPWSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLongPathNameA (LPCSTR lpszShortPath, LPSTR lpszLongPath, DWORD cchBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLongPathNameW (LPCWSTR lpszShortPath, LPWSTR lpszLongPath, DWORD cchBuffer); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetTempFileNameA (LPCSTR lpPathName, LPCSTR lpPrefixString, UINT uUnique, LPSTR lpTempFileName); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetTempFileNameW (LPCWSTR lpPathName, LPCWSTR lpPrefixString, UINT uUnique, LPWSTR lpTempFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumeInformationW (LPCWSTR lpRootPathName, LPWSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPWSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LocalFileTimeToFileTime (const FILETIME *lpLocalFileTime, LPFILETIME lpFileTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LockFile (HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadFileEx (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileTime (HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnlockFile (HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteFileEx (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFinalPathNameByHandleA (HANDLE hFile, LPSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFinalPathNameByHandleW (HANDLE hFile, LPWSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags); +#define GetFinalPathNameByHandle __MINGW_NAME_AW(GetFinalPathNameByHandle) + typedef struct _WIN32_FILE_ATTRIBUTE_DATA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA; + typedef struct DISK_SPACE_INFORMATION { + ULONGLONG ActualTotalAllocationUnits; + ULONGLONG ActualAvailableAllocationUnits; + ULONGLONG ActualPoolUnavailableAllocationUnits; + ULONGLONG CallerTotalAllocationUnits; + ULONGLONG CallerAvailableAllocationUnits; + ULONGLONG CallerPoolUnavailableAllocationUnits; + ULONGLONG UsedAllocationUnits; + ULONGLONG TotalReservedAllocationUnits; + ULONGLONG VolumeStorageReserveAllocationUnits; + ULONGLONG AvailableCommittedAllocationUnits; + ULONGLONG PoolAvailableAllocationUnits; + DWORD SectorsPerAllocationUnit; + DWORD BytesPerSector; + } DISK_SPACE_INFORMATION; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateDirectoryA (LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateDirectoryW (LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteFileA (LPCSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteFileW (LPCWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindClose (HANDLE hFindFile); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileExA (LPCSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileExW (LPCWSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextFileA (HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextFileW (HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlushFileBuffers (HANDLE hFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceExA (LPCSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceExW (LPCWSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileAttributesExA (LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileAttributesExW (LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LockFileEx (HANDLE hFile, DWORD dwFlags, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadFile (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryA (LPCSTR lpPathName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryW (LPCWSTR lpPathName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetEndOfFile (HANDLE hFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileAttributesA (LPCSTR lpFileName, DWORD dwFileAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileAttributesW (LPCWSTR lpFileName, DWORD dwFileAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFilePointerEx (HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnlockFileEx (HANDLE hFile, DWORD dwReserved, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteFile (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTempPathA (DWORD nBufferLength, LPSTR lpBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTempPathW (DWORD nBufferLength, LPWSTR lpBuffer); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetDiskSpaceInformationA (LPCSTR rootPath, DISK_SPACE_INFORMATION *diskSpaceInfo); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetDiskSpaceInformationW (LPCWSTR rootPath, DISK_SPACE_INFORMATION *diskSpaceInfo); +#define CreateDirectory __MINGW_NAME_AW(CreateDirectory) +#define DeleteFile __MINGW_NAME_AW(DeleteFile) +#define FindFirstFileEx __MINGW_NAME_AW(FindFirstFileEx) +#define FindNextFile __MINGW_NAME_AW(FindNextFile) +#define GetDiskFreeSpaceEx __MINGW_NAME_AW(GetDiskFreeSpaceEx) +#define GetFileAttributesEx __MINGW_NAME_AW(GetFileAttributesEx) +#define RemoveDirectory __MINGW_NAME_AW(RemoveDirectory) +#define SetFileAttributes __MINGW_NAME_AW(SetFileAttributes) +#define GetTempPath __MINGW_NAME_AW(GetTempPath) +#define GetDiskSpaceInformation __MINGW_NAME_AW(GetDiskSpaceInformation) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileInformationByHandle (HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, LPVOID lpFileInformation, DWORD dwBufferSize); +#define _APISETHANDLE_ +#define INVALID_HANDLE_VALUE ((HANDLE) (LONG_PTR)-1) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseHandle (HANDLE hObject); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DuplicateHandle (HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwOptions); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetHandleInformation (HANDLE hObject, LPDWORD lpdwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetHandleInformation (HANDLE hObject, DWORD dwMask, DWORD dwFlags); +#define _HEAPAPI_H_ + typedef struct _HEAP_SUMMARY { + DWORD cb; + SIZE_T cbAllocated; + SIZE_T cbCommitted; + SIZE_T cbReserved; + SIZE_T cbMaxReserve; + } HEAP_SUMMARY,*PHEAP_SUMMARY; + typedef PHEAP_SUMMARY LPHEAP_SUMMARY; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapValidate (HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem); + WINBOOL __attribute__((__stdcall__)) HeapSummary (HANDLE hHeap, DWORD dwFlags, LPHEAP_SUMMARY lpSummary); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapWalk (HANDLE hHeap, LPPROCESS_HEAP_ENTRY lpEntry); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapQueryInformation (HANDLE HeapHandle, HEAP_INFORMATION_CLASS HeapInformationClass, PVOID HeapInformation, SIZE_T HeapInformationLength, PSIZE_T ReturnLength); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProcessHeaps (DWORD NumberOfHeaps, PHANDLE ProcessHeaps); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapLock (HANDLE hHeap); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapUnlock (HANDLE hHeap); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) HeapCreate (DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) HeapCompact (HANDLE hHeap, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapDestroy (HANDLE hHeap); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) HeapAlloc (HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) HeapReAlloc (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapFree (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) HeapSize (HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) GetProcessHeap (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HeapSetInformation (HANDLE HeapHandle, HEAP_INFORMATION_CLASS HeapInformationClass, PVOID HeapInformation, SIZE_T HeapInformationLength); +#define _IO_APISET_H_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetOverlappedResult (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, WINBOOL bWait); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateIoCompletionPort (HANDLE FileHandle, HANDLE ExistingCompletionPort, ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetQueuedCompletionStatus (HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred, PULONG_PTR lpCompletionKey, LPOVERLAPPED *lpOverlapped, DWORD dwMilliseconds); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PostQueuedCompletionStatus (HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred, ULONG_PTR dwCompletionKey, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeviceIoControl (HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelIo (HANDLE hFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetOverlappedResultEx (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, DWORD dwMilliseconds, WINBOOL bAlertable); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetQueuedCompletionStatusEx (HANDLE CompletionPort, LPOVERLAPPED_ENTRY lpCompletionPortEntries, ULONG ulCount, PULONG ulNumEntriesRemoved, DWORD dwMilliseconds, WINBOOL fAlertable); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelIoEx (HANDLE hFile, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelSynchronousIo (HANDLE hThread); +#define _INTERLOCKAPI_H_ + __declspec (dllimport) void __attribute__((__stdcall__)) InitializeSListHead (PSLIST_HEADER ListHead); + __declspec (dllimport) PSLIST_ENTRY __attribute__((__stdcall__)) InterlockedPopEntrySList (PSLIST_HEADER ListHead); + __declspec (dllimport) PSLIST_ENTRY __attribute__((__stdcall__)) InterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry); + __declspec (dllimport) PSLIST_ENTRY __attribute__((__stdcall__)) InterlockedFlushSList (PSLIST_HEADER ListHead); + __declspec (dllimport) USHORT __attribute__((__stdcall__)) QueryDepthSList (PSLIST_HEADER ListHead); +#define _JOBAPISET_H_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsProcessInJob (HANDLE ProcessHandle, HANDLE JobHandle, PBOOL Result); +#define _APISETLIBLOADER_ + typedef struct tagENUMUILANG { + ULONG NumOfEnumUILang; + ULONG SizeOfEnumUIBuffer; + LANGID *pEnumUIBuffer; + } ENUMUILANG, *PENUMUILANG; + typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESLANGPROCA) (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LONG_PTR lParam); + typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESLANGPROCW) (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LONG_PTR lParam); + typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESNAMEPROCA) (HMODULE hModule, LPCSTR lpType, LPSTR lpName, LONG_PTR lParam); + typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESNAMEPROCW) (HMODULE hModule, LPCWSTR lpType, LPWSTR lpName, LONG_PTR lParam); + typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESTYPEPROCA) (HMODULE hModule, LPSTR lpType, LONG_PTR lParam); + typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESTYPEPROCW) (HMODULE hModule, LPWSTR lpType, LONG_PTR lParam); + typedef PVOID DLL_DIRECTORY_COOKIE, *PDLL_DIRECTORY_COOKIE; +#define FIND_RESOURCE_DIRECTORY_TYPES (0x0100) +#define FIND_RESOURCE_DIRECTORY_NAMES (0x0200) +#define FIND_RESOURCE_DIRECTORY_LANGUAGES (0x0400) +#define RESOURCE_ENUM_LN (0x0001) +#define RESOURCE_ENUM_MUI (0x0002) +#define RESOURCE_ENUM_MUI_SYSTEM (0x0004) +#define RESOURCE_ENUM_VALIDATE (0x0008) +#define RESOURCE_ENUM_MODULE_EXACT (0x0010) +#define SUPPORT_LANG_NUMBER 32 +#define GET_MODULE_HANDLE_EX_FLAG_PIN (0x1) +#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT (0x2) +#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS (0x4) + __declspec (dllimport) HRSRC __attribute__((__stdcall__)) FindResourceW(HMODULE hModule, LPCWSTR lpName, LPCWSTR lpType); +#define ENUMRESLANGPROC __MINGW_NAME_AW(ENUMRESLANGPROC) +#define ENUMRESNAMEPROC __MINGW_NAME_AW(ENUMRESNAMEPROC) +#define ENUMRESTYPEPROC __MINGW_NAME_AW(ENUMRESTYPEPROC) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesW(HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FreeResource (HGLOBAL hResData); + __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) LoadResource (HMODULE hModule, HRSRC hResInfo); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) LockResource (HGLOBAL hResData); + __declspec (dllimport) DLL_DIRECTORY_COOKIE __attribute__((__stdcall__)) AddDllDirectory (PCWSTR NewDirectory); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveDllDirectory (DLL_DIRECTORY_COOKIE Cookie); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDefaultDllDirectories (DWORD DirectoryFlags); +#define EnumResourceLanguages __MINGW_NAME_AW(EnumResourceLanguages) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesA(HMODULE hModule,LPCSTR lpType,LPCSTR lpName,ENUMRESLANGPROCA lpEnumFunc,LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesW(HMODULE hModule,LPCWSTR lpType,LPCWSTR lpName,ENUMRESLANGPROCW lpEnumFunc,LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesExA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, ENUMRESLANGPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesExW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, ENUMRESLANGPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesExA (HMODULE hModule, LPCSTR lpType, ENUMRESNAMEPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesExW (HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesExA (HMODULE hModule, ENUMRESTYPEPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesExW (HMODULE hModule, ENUMRESTYPEPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryOptionalDelayLoadedAPI (HMODULE CallerModule, LPCSTR lpDllName, LPCSTR lpProcName, DWORD Reserved); +#define EnumResourceLanguagesEx __MINGW_NAME_AW(EnumResourceLanguagesEx) +#define EnumResourceNamesEx __MINGW_NAME_AW(EnumResourceNamesEx) +#define EnumResourceTypesEx __MINGW_NAME_AW(EnumResourceTypesEx) +__declspec (dllimport) HMODULE __attribute__((__stdcall__)) LoadLibraryA(LPCSTR lpLibFileName); +__declspec (dllimport) HMODULE __attribute__((__stdcall__)) LoadLibraryW(LPCWSTR lpLibFileName); +#define LoadLibrary __MINGW_NAME_AW(LoadLibrary) + __declspec (dllimport) __declspec (noreturn) void __attribute__((__stdcall__)) FreeLibraryAndExitThread (HMODULE hLibModule, DWORD dwExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DisableThreadLibraryCalls (HMODULE hLibModule); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FreeLibrary (HMODULE hLibModule); + __declspec (dllimport) FARPROC __attribute__((__stdcall__)) GetProcAddress (HMODULE hModule, LPCSTR lpProcName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetModuleFileNameA (HMODULE hModule, LPSTR lpFilename, DWORD nSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetModuleFileNameW (HMODULE hModule, LPWSTR lpFilename, DWORD nSize); +#define GetModuleFileName __MINGW_NAME_AW(GetModuleFileName) +#define CURRENT_IMPORT_REDIRECTION_VERSION 1 +typedef struct _REDIRECTION_FUNCTION_DESCRIPTOR { + PCSTR DllName; + PCSTR FunctionName; + PVOID RedirectionTarget; +} REDIRECTION_FUNCTION_DESCRIPTOR, *PREDIRECTION_FUNCTION_DESCRIPTOR; +typedef const REDIRECTION_FUNCTION_DESCRIPTOR *PCREDIRECTION_FUNCTION_DESCRIPTOR; +typedef struct _REDIRECTION_DESCRIPTOR { + ULONG Version; + ULONG FunctionCount; + PCREDIRECTION_FUNCTION_DESCRIPTOR Redirections; +} REDIRECTION_DESCRIPTOR, *PREDIRECTION_DESCRIPTOR; +typedef const REDIRECTION_DESCRIPTOR *PCREDIRECTION_DESCRIPTOR; +#define DONT_RESOLVE_DLL_REFERENCES 0x1 +#define LOAD_LIBRARY_AS_DATAFILE 0x2 +#define LOAD_WITH_ALTERED_SEARCH_PATH 0x8 +#define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x10 +#define LOAD_LIBRARY_AS_IMAGE_RESOURCE 0x20 +#define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 0x40 +#define LOAD_LIBRARY_REQUIRE_SIGNED_TARGET 0x80 +#define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x100 +#define LOAD_LIBRARY_SEARCH_APPLICATION_DIR 0x200 +#define LOAD_LIBRARY_SEARCH_USER_DIRS 0x400 +#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x800 +#define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x1000 +#define LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER LOAD_LIBRARY_SEARCH_SYSTEM32 + __declspec (dllimport) HRSRC __attribute__((__stdcall__)) FindResourceExW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage); + __declspec (dllimport) HMODULE __attribute__((__stdcall__)) GetModuleHandleA (LPCSTR lpModuleName); + __declspec (dllimport) HMODULE __attribute__((__stdcall__)) GetModuleHandleW (LPCWSTR lpModuleName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetModuleHandleExA (DWORD dwFlags, LPCSTR lpModuleName, HMODULE *phModule); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetModuleHandleExW (DWORD dwFlags, LPCWSTR lpModuleName, HMODULE *phModule); + __declspec (dllimport) HMODULE __attribute__((__stdcall__)) LoadLibraryExA (LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags); + __declspec (dllimport) HMODULE __attribute__((__stdcall__)) LoadLibraryExW (LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SizeofResource (HMODULE hModule, HRSRC hResInfo); +#define GetModuleHandle __MINGW_NAME_AW(GetModuleHandle) +#define GetModuleHandleEx __MINGW_NAME_AW(GetModuleHandleEx) +#define LoadLibraryEx __MINGW_NAME_AW(LoadLibraryEx) + typedef WINBOOL (__attribute__((__stdcall__)) *PGET_MODULE_HANDLE_EXA) (DWORD dwFlags, LPCSTR lpModuleName, HMODULE *phModule); + typedef WINBOOL (__attribute__((__stdcall__)) *PGET_MODULE_HANDLE_EXW) (DWORD dwFlags, LPCWSTR lpModuleName, HMODULE *phModule); +#define PGET_MODULE_HANDLE_EX __MINGW_NAME_AW(PGET_MODULE_HANDLE_EX) + __declspec (dllimport) int __attribute__((__stdcall__)) LoadStringA (HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax); + __declspec (dllimport) int __attribute__((__stdcall__)) LoadStringW (HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int cchBufferMax); +#define LoadString __MINGW_NAME_AW(LoadString) +#define _MEMORYAPI_H_ + typedef enum _MEMORY_RESOURCE_NOTIFICATION_TYPE { + LowMemoryResourceNotification, + HighMemoryResourceNotification + } MEMORY_RESOURCE_NOTIFICATION_TYPE; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VirtualFree (LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) VirtualAlloc (LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) VirtualAllocEx (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); +#define FILE_MAP_WRITE SECTION_MAP_WRITE +#define FILE_MAP_READ SECTION_MAP_READ +#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS +#define FILE_MAP_COPY 0x1 +#define FILE_MAP_RESERVE 0x80000000 +#define FILE_MAP_TARGETS_INVALID 0x40000000 +#define FILE_MAP_LARGE_PAGES 0x20000000 + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) VirtualQuery (LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlushViewOfFile (LPCVOID lpBaseAddress, SIZE_T dwNumberOfBytesToFlush); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnmapViewOfFile (LPCVOID lpBaseAddress); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnmapViewOfFile2(HANDLE Process, PVOID BaseAddress, ULONG UnmapFlags); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileMappingFromApp (HANDLE hFile, PSECURITY_ATTRIBUTES SecurityAttributes, ULONG PageProtection, ULONG64 MaximumSize, PCWSTR Name); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) MapViewOfFileFromApp (HANDLE hFileMappingObject, ULONG DesiredAccess, ULONG64 FileOffset, SIZE_T NumberOfBytesToMap); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VirtualUnlockEx(HANDLE Process, LPVOID Address, SIZE_T Size); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VirtualProtect (LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); +#define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT +#define FILE_CACHE_FLAGS_DEFINED +#define FILE_CACHE_MAX_HARD_ENABLE 0x00000001 +#define FILE_CACHE_MAX_HARD_DISABLE 0x00000002 +#define FILE_CACHE_MIN_HARD_ENABLE 0x00000004 +#define FILE_CACHE_MIN_HARD_DISABLE 0x00000008 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VirtualProtectEx (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) VirtualQueryEx (HANDLE hProcess, LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadProcessMemory (HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteProcessMemory (HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileMappingW (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenFileMappingW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) MapViewOfFile (HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) MapViewOfFileEx (HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap, LPVOID lpBaseAddress); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VirtualLock (LPVOID lpAddress, SIZE_T dwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VirtualUnlock (LPVOID lpAddress, SIZE_T dwSize); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateMemoryResourceNotification (MEMORY_RESOURCE_NOTIFICATION_TYPE NotificationType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryMemoryResourceNotification (HANDLE ResourceNotificationHandle, PBOOL ResourceState); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSystemFileCacheSize (PSIZE_T lpMinimumFileCacheSize, PSIZE_T lpMaximumFileCacheSize, PDWORD lpFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSystemFileCacheSize (SIZE_T MinimumFileCacheSize, SIZE_T MaximumFileCacheSize, DWORD Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPages(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FreeUserPhysicalPages(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MapUserPhysicalPages(PVOID VirtualAddress, ULONG_PTR NumberOfPages, PULONG_PTR PageArray); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPagesNuma(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray, DWORD nndPreferred); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileMappingNumaW (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName, DWORD nndPreferred); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) VirtualAllocExNuma(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) GetLargePageMinimum (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessWorkingSetSizeEx (HANDLE hProcess, PSIZE_T lpMinimumWorkingSetSize, PSIZE_T lpMaximumWorkingSetSize, PDWORD Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessWorkingSetSizeEx (HANDLE hProcess, SIZE_T dwMinimumWorkingSetSize, SIZE_T dwMaximumWorkingSetSize, DWORD Flags); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetWriteWatch (DWORD dwFlags, PVOID lpBaseAddress, SIZE_T dwRegionSize, PVOID *lpAddresses, ULONG_PTR *lpdwCount, LPDWORD lpdwGranularity); + __declspec (dllimport) UINT __attribute__((__stdcall__)) ResetWriteWatch (LPVOID lpBaseAddress, SIZE_T dwRegionSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VirtualFreeEx (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); +#define _NAMEDPIPE_H_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ImpersonateNamedPipeClient (HANDLE hNamedPipe); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreatePipe (PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ConnectNamedPipe (HANDLE hNamedPipe, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DisconnectNamedPipe (HANDLE hNamedPipe); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetNamedPipeHandleState (HANDLE hNamedPipe, LPDWORD lpMode, LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PeekNamedPipe (HANDLE hNamedPipe, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesRead, LPDWORD lpTotalBytesAvail, LPDWORD lpBytesLeftThisMessage); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TransactNamedPipe (HANDLE hNamedPipe, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesRead, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateNamedPipeW (LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WaitNamedPipeW (LPCWSTR lpNamedPipeName, DWORD nTimeOut); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientComputerNameW (HANDLE Pipe, LPWSTR ClientComputerName, ULONG ClientComputerNameLength); +#define _APISETNAMESPACE_ +#define PRIVATE_NAMESPACE_FLAG_DESTROY 0x1 + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreatePrivateNamespaceW (LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes, LPVOID lpBoundaryDescriptor, LPCWSTR lpAliasPrefix); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenPrivateNamespaceW (LPVOID lpBoundaryDescriptor, LPCWSTR lpAliasPrefix); + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) ClosePrivateNamespace (HANDLE Handle, ULONG Flags); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateBoundaryDescriptorW (LPCWSTR Name, ULONG Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddSIDToBoundaryDescriptor (HANDLE *BoundaryDescriptor, PSID RequiredSid); + __declspec (dllimport) void __attribute__((__stdcall__)) DeleteBoundaryDescriptor (HANDLE BoundaryDescriptor); +#define _PROCESSENV_ + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) GetCommandLineA (void); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) GetCommandLineW (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCurrentDirectoryA (LPCSTR lpPathName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCurrentDirectoryW (LPCWSTR lpPathName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCurrentDirectoryA (DWORD nBufferLength, LPSTR lpBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCurrentDirectoryW (DWORD nBufferLength, LPWSTR lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetEnvironmentStringsW (LPWCH NewEnvironment); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SearchPathW (LPCWSTR lpPath, LPCWSTR lpFileName, LPCWSTR lpExtension, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SearchPathA (LPCSTR lpPath, LPCSTR lpFileName, LPCSTR lpExtension, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) NeedCurrentDirectoryForExePathA (LPCSTR ExeName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) NeedCurrentDirectoryForExePathW (LPCWSTR ExeName); +#define GetCommandLine __MINGW_NAME_AW(GetCommandLine) +#define GetCurrentDirectory __MINGW_NAME_AW(GetCurrentDirectory) +#define NeedCurrentDirectoryForExePath __MINGW_NAME_AW(NeedCurrentDirectoryForExePath) +#define SearchPath __MINGW_NAME_AW(SearchPath) +#define SetCurrentDirectory __MINGW_NAME_AW(SetCurrentDirectory) + __declspec (dllimport) LPCH __attribute__((__stdcall__)) GetEnvironmentStrings (void); + __declspec (dllimport) LPWCH __attribute__((__stdcall__)) GetEnvironmentStringsW (void); +#define GetEnvironmentStringsA GetEnvironmentStrings + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) GetStdHandle (DWORD nStdHandle); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) ExpandEnvironmentStringsA (LPCSTR lpSrc, LPSTR lpDst, DWORD nSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) ExpandEnvironmentStringsW (LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FreeEnvironmentStringsA (LPCH penv); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FreeEnvironmentStringsW (LPWCH penv); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetEnvironmentVariableA (LPCSTR lpName, LPSTR lpBuffer, DWORD nSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetEnvironmentVariableW (LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetEnvironmentVariableA (LPCSTR lpName, LPCSTR lpValue); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetEnvironmentVariableW (LPCWSTR lpName, LPCWSTR lpValue); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetStdHandle (DWORD nStdHandle, HANDLE hHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetStdHandleEx (DWORD nStdHandle, HANDLE hHandle, PHANDLE phPrevValue); +#define ExpandEnvironmentStrings __MINGW_NAME_AW(ExpandEnvironmentStrings) +#define FreeEnvironmentStrings __MINGW_NAME_AW(FreeEnvironmentStrings) +#define GetEnvironmentVariable __MINGW_NAME_AW(GetEnvironmentVariable) +#define SetEnvironmentVariable __MINGW_NAME_AW(SetEnvironmentVariable) +#define _PROCESSTHREADSAPI_H_ +#define TLS_OUT_OF_INDEXES ((DWORD)0xffffffff) + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenProcess (DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwProcessId); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) QueueUserAPC (PAPCFUNC pfnAPC, HANDLE hThread, ULONG_PTR dwData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessTimes (HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); + __declspec (dllimport) __declspec (noreturn) void __attribute__((__stdcall__)) ExitProcess (UINT uExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetExitCodeProcess (HANDLE hProcess, LPDWORD lpExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SwitchToThread (void); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenThread (DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwThreadId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadPriorityBoost (HANDLE hThread, WINBOOL bDisablePriorityBoost); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetThreadPriorityBoost (HANDLE hThread, PBOOL pDisablePriorityBoost); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadToken (PHANDLE Thread, HANDLE Token); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OpenProcessToken (HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OpenThreadToken (HANDLE ThreadHandle, DWORD DesiredAccess, WINBOOL OpenAsSelf, PHANDLE TokenHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPriorityClass (HANDLE hProcess, DWORD dwPriorityClass); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetPriorityClass (HANDLE hProcess); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProcessId (HANDLE Process); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetThreadId (HANDLE Thread); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetThreadContext (HANDLE hThread, LPCONTEXT lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlushInstructionCache (HANDLE hProcess, LPCVOID lpBaseAddress, SIZE_T dwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetThreadTimes (HANDLE hThread, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCurrentProcessorNumber (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TerminateProcess (HANDLE hProcess, UINT uExitCode); + typedef struct _STARTUPINFOA { + DWORD cb; + LPSTR lpReserved; + LPSTR lpDesktop; + LPSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + LPBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; + } STARTUPINFOA, *LPSTARTUPINFOA; + typedef struct _STARTUPINFOW { + DWORD cb; + LPWSTR lpReserved; + LPWSTR lpDesktop; + LPWSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + LPBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; + } STARTUPINFOW, *LPSTARTUPINFOW; + typedef STARTUPINFOA STARTUPINFO; + typedef LPSTARTUPINFOA LPSTARTUPINFO; + typedef struct _PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; + } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION; + typedef enum _PROCESS_INFORMATION_CLASS { + ProcessMemoryPriority, + ProcessMemoryExhaustionInfo, + ProcessAppMemoryInfo, + ProcessInPrivateInfo, + ProcessPowerThrottling, + ProcessReservedValue1, + ProcessTelemetryCoverageInfo, + ProcessProtectionLevelInfo, + ProcessLeapSecondInfo, + ProcessMachineTypeInfo, + ProcessInformationClassMax + } PROCESS_INFORMATION_CLASS; + typedef struct _APP_MEMORY_INFORMATION { + ULONG64 AvailableCommit; + ULONG64 PrivateCommitUsage; + ULONG64 PeakPrivateCommitUsage; + ULONG64 TotalCommitUsage; + } APP_MEMORY_INFORMATION, *PAPP_MEMORY_INFORMATION; + typedef enum _MACHINE_ATTRIBUTES { + UserEnabled = 0x00000001, + KernelEnabled = 0x00000002, + Wow64Container = 0x00000004 + } MACHINE_ATTRIBUTES; + ; + typedef struct _PROCESS_MACHINE_INFORMATION { + USHORT ProcessMachine; + USHORT Res0; + MACHINE_ATTRIBUTES MachineAttributes; + } PROCESS_MACHINE_INFORMATION; +#define PME_CURRENT_VERSION 1 + typedef enum _PROCESS_MEMORY_EXHAUSTION_TYPE { + PMETypeFailFastOnCommitFailure, + PMETypeMax + } PROCESS_MEMORY_EXHAUSTION_TYPE, *PPROCESS_MEMORY_EXHAUSTION_TYPE; +#define PME_FAILFAST_ON_COMMIT_FAIL_DISABLE 0x0 +#define PME_FAILFAST_ON_COMMIT_FAIL_ENABLE 0x1 + typedef struct _PROCESS_MEMORY_EXHAUSTION_INFO { + USHORT Version; + USHORT Reserved; + PROCESS_MEMORY_EXHAUSTION_TYPE Type; + ULONG_PTR Value; + } PROCESS_MEMORY_EXHAUSTION_INFO, *PPROCESS_MEMORY_EXHAUSTION_INFO; +#define PROCESS_POWER_THROTTLING_CURRENT_VERSION 1 +#define PROCESS_POWER_THROTTLING_EXECUTION_SPEED 0x1 +#define PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION 0x4 +#define PROCESS_POWER_THROTTLING_VALID_FLAGS (PROCESS_POWER_THROTTLING_EXECUTION_SPEED | PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION) + typedef struct _PROCESS_POWER_THROTTLING_STATE { + ULONG Version; + ULONG ControlMask; + ULONG StateMask; + } PROCESS_POWER_THROTTLING_STATE, *PPROCESS_POWER_THROTTLING_STATE; + typedef struct PROCESS_PROTECTION_LEVEL_INFORMATION { + DWORD ProtectionLevel; + } PROCESS_PROTECTION_LEVEL_INFORMATION; +#define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND 0x1 +#define PROCESS_LEAP_SECOND_INFO_VALID_FLAGS PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND + typedef struct _PROCESS_LEAP_SECOND_INFO { + ULONG Flags; + ULONG Reserved; + } PROCESS_LEAP_SECOND_INFO, *PPROCESS_LEAP_SECOND_INFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessDefaultCpuSetMasks (HANDLE Process, PGROUP_AFFINITY CpuSetMasks, USHORT CpuSetMaskCount, PUSHORT RequiredMaskCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessDefaultCpuSetMasks (HANDLE Process, PGROUP_AFFINITY CpuSetMasks, USHORT CpuSetMaskCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetThreadSelectedCpuSetMasks (HANDLE Thread, PGROUP_AFFINITY CpuSetMasks, USHORT CpuSetMaskCount, PUSHORT RequiredMaskCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadSelectedCpuSetMasks (HANDLE Thread, PGROUP_AFFINITY CpuSetMasks, USHORT CpuSetMaskCount); + typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC_THREAD_ATTRIBUTE_LIST; + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateRemoteThread (HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TerminateThread (HANDLE hThread, DWORD dwExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessShutdownParameters (DWORD dwLevel, DWORD dwFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProcessVersion (DWORD ProcessId); + __declspec (dllimport) void __attribute__((__stdcall__)) GetStartupInfoW (LPSTARTUPINFOW lpStartupInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadStackGuarantee (PULONG StackSizeInBytes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ProcessIdToSessionId (DWORD dwProcessId, DWORD *pSessionId); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateRemoteThreadEx (HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, LPDWORD lpThreadId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadContext (HANDLE hThread, const CONTEXT *lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessHandleCount (HANDLE hProcess, PDWORD pdwHandleCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateProcessAsUserW (HANDLE hToken, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); +#define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE __MSABI_LONG(0x1U) +#define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x00000001 + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProcessIdOfThread (HANDLE Thread); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitializeProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwAttributeCount, DWORD dwFlags, PSIZE_T lpSize); + __declspec (dllimport) void __attribute__((__stdcall__)) DeleteProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessAffinityUpdateMode (HANDLE hProcess, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryProcessAffinityUpdateMode (HANDLE hProcess, LPDWORD lpdwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateProcThreadAttribute (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwFlags, DWORD_PTR Attribute, PVOID lpValue, SIZE_T cbSize, PVOID lpPreviousValue, PSIZE_T lpReturnSize); +#define MEMORY_PRIORITY_VERY_LOW 1 +#define MEMORY_PRIORITY_LOW 2 +#define MEMORY_PRIORITY_MEDIUM 3 +#define MEMORY_PRIORITY_BELOW_NORMAL 4 +#define MEMORY_PRIORITY_NORMAL 5 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateProcessA (LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateProcessW (LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); +#define CreateProcess __MINGW_NAME_AW(CreateProcess) + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) GetCurrentProcess (void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCurrentProcessId (void); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) GetCurrentThread (void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCurrentThreadId (void); + WINBOOL __attribute__((__stdcall__)) IsProcessorFeaturePresent (DWORD ProcessorFeature); + __declspec (dllimport) void __attribute__((__stdcall__)) FlushProcessWriteBuffers (void); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateThread (LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadPriority (HANDLE hThread, int nPriority); + __declspec (dllimport) int __attribute__((__stdcall__)) GetThreadPriority (HANDLE hThread); + __declspec (dllimport) __declspec (noreturn) void __attribute__((__stdcall__)) ExitThread (DWORD dwExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetExitCodeThread (HANDLE hThread, LPDWORD lpExitCode); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SuspendThread (HANDLE hThread); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) ResumeThread (HANDLE hThread); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) TlsAlloc (void); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) TlsGetValue (DWORD dwTlsIndex); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TlsSetValue (DWORD dwTlsIndex, LPVOID lpTlsValue); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TlsFree (DWORD dwTlsIndex); +#define THREAD_POWER_THROTTLING_CURRENT_VERSION 1 +#define THREAD_POWER_THROTTLING_EXECUTION_SPEED 0x1 +#define THREAD_POWER_THROTTLING_VALID_FLAGS (THREAD_POWER_THROTTLING_EXECUTION_SPEED) + typedef struct _THREAD_POWER_THROTTLING_STATE { + ULONG Version; + ULONG ControlMask; + ULONG StateMask; + } THREAD_POWER_THROTTLING_STATE; + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SetThreadDescription (HANDLE hThread, PCWSTR lpThreadDescription); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetThreadDescription (HANDLE hThread, PWSTR *ppszThreadDescription); +#define _PROCESSTOPOLOGYAPI_H_ +#define _PROFILEAPI_H_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryPerformanceCounter (LARGE_INTEGER *lpPerformanceCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryPerformanceFrequency (LARGE_INTEGER *lpFrequency); +#define _APISETREALTIME_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryThreadCycleTime (HANDLE ThreadHandle, PULONG64 CycleTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryProcessCycleTime (HANDLE ProcessHandle, PULONG64 CycleTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryIdleProcessorCycleTime (PULONG BufferLength, PULONG64 ProcessorIdleCycleTime); + __declspec (dllimport) void __attribute__((__stdcall__)) QueryInterruptTimePrecise (PULONGLONG lpInterruptTimePrecise); + __declspec (dllimport) void __attribute__((__stdcall__)) QueryUnbiasedInterruptTimePrecise (PULONGLONG lpUnbiasedInterruptTimePrecise); + __declspec (dllimport) void __attribute__((__stdcall__)) QueryInterruptTime (PULONGLONG lpInterruptTime); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) QueryAuxiliaryCounterFrequency (PULONGLONG lpAuxiliaryCounterFrequency); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) ConvertAuxiliaryCounterToPerformanceCounter (ULONGLONG ullAuxiliaryCounterValue, PULONGLONG lpPerformanceCounterValue, PULONGLONG lpConversionError); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) ConvertPerformanceCounterToAuxiliaryCounter (ULONGLONG ullPerformanceCounterValue, PULONGLONG lpAuxiliaryCounterValue, PULONGLONG lpConversionError); +#define _APIAPPCONTAINER_ +#define _APISECUREBASE_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheck (PSECURITY_DESCRIPTOR pSecurityDescriptor, HANDLE ClientToken, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, PPRIVILEGE_SET PrivilegeSet, LPDWORD PrivilegeSetLength, LPDWORD GrantedAccess, LPBOOL AccessStatus); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckAndAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPWSTR ObjectTypeName, LPWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByType (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID PrincipalSelfSid, HANDLE ClientToken, DWORD DesiredAccess, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, PPRIVILEGE_SET PrivilegeSet, LPDWORD PrivilegeSetLength, LPDWORD GrantedAccess, LPBOOL AccessStatus); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultList (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID PrincipalSelfSid, HANDLE ClientToken, DWORD DesiredAccess, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, PPRIVILEGE_SET PrivilegeSet, LPDWORD PrivilegeSetLength, LPDWORD GrantedAccessList, LPDWORD AccessStatusList); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeAndAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPCWSTR ObjectTypeName, LPCWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPCWSTR ObjectTypeName, LPCWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccessList, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmByHandleW (LPCWSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, LPCWSTR ObjectTypeName, LPCWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccessList, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAccessAllowedObjectAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, GUID *ObjectTypeGuid, GUID *InheritedObjectTypeGuid, PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAccessDeniedAce (PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAccessDeniedAceEx (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAccessDeniedObjectAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, GUID *ObjectTypeGuid, GUID *InheritedObjectTypeGuid, PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAuditAccessAce (PACL pAcl, DWORD dwAceRevision, DWORD dwAccessMask, PSID pSid, WINBOOL bAuditSuccess, WINBOOL bAuditFailure); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAuditAccessAceEx (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD dwAccessMask, PSID pSid, WINBOOL bAuditSuccess, WINBOOL bAuditFailure); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAuditAccessObjectAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, GUID *ObjectTypeGuid, GUID *InheritedObjectTypeGuid, PSID pSid, WINBOOL bAuditSuccess, WINBOOL bAuditFailure); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AreAllAccessesGranted (DWORD GrantedAccess, DWORD DesiredAccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AreAnyAccessesGranted (DWORD GrantedAccess, DWORD DesiredAccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ConvertToAutoInheritPrivateObjectSecurity (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CurrentSecurityDescriptor, PSECURITY_DESCRIPTOR *NewSecurityDescriptor, GUID *ObjectType, BOOLEAN IsDirectoryObject, PGENERIC_MAPPING GenericMapping); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreatePrivateObjectSecurity (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CreatorDescriptor, PSECURITY_DESCRIPTOR *NewDescriptor, WINBOOL IsDirectoryObject, HANDLE Token, PGENERIC_MAPPING GenericMapping); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreatePrivateObjectSecurityEx (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CreatorDescriptor, PSECURITY_DESCRIPTOR *NewDescriptor, GUID *ObjectType, WINBOOL IsContainerObject, ULONG AutoInheritFlags, HANDLE Token, PGENERIC_MAPPING GenericMapping); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreatePrivateObjectSecurityWithMultipleInheritance (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CreatorDescriptor, PSECURITY_DESCRIPTOR *NewDescriptor, GUID **ObjectTypes, ULONG GuidCount, WINBOOL IsContainerObject, ULONG AutoInheritFlags, HANDLE Token, PGENERIC_MAPPING GenericMapping); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateRestrictedToken (HANDLE ExistingTokenHandle, DWORD Flags, DWORD DisableSidCount, PSID_AND_ATTRIBUTES SidsToDisable, DWORD DeletePrivilegeCount, PLUID_AND_ATTRIBUTES PrivilegesToDelete, DWORD RestrictedSidCount, PSID_AND_ATTRIBUTES SidsToRestrict, PHANDLE NewTokenHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyPrivateObjectSecurity (PSECURITY_DESCRIPTOR *ObjectDescriptor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EqualPrefixSid (PSID pSid1, PSID pSid2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EqualSid (PSID pSid1, PSID pSid2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindFirstFreeAce (PACL pAcl, LPVOID *pAce); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileSecurityW (LPCWSTR lpFileName, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetPrivateObjectSecurity (PSECURITY_DESCRIPTOR ObjectDescriptor, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ResultantDescriptor, DWORD DescriptorLength, PDWORD ReturnLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ImpersonateAnonymousToken (HANDLE ThreadHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ImpersonateLoggedOnUser (HANDLE hToken); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ImpersonateSelf (SECURITY_IMPERSONATION_LEVEL ImpersonationLevel); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsTokenRestricted (HANDLE TokenHandle); + __declspec (dllimport) void __attribute__((__stdcall__)) MapGenericMask (PDWORD AccessMask, PGENERIC_MAPPING GenericMapping); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectCloseAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectDeleteAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectOpenAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPWSTR ObjectTypeName, LPWSTR ObjectName, PSECURITY_DESCRIPTOR pSecurityDescriptor, HANDLE ClientToken, DWORD DesiredAccess, DWORD GrantedAccess, PPRIVILEGE_SET Privileges, WINBOOL ObjectCreation, WINBOOL AccessGranted, LPBOOL GenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectPrivilegeAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, DWORD DesiredAccess, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PrivilegeCheck (HANDLE ClientToken, PPRIVILEGE_SET RequiredPrivileges, LPBOOL pfResult); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PrivilegedServiceAuditAlarmW (LPCWSTR SubsystemName, LPCWSTR ServiceName, HANDLE ClientToken, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted); + __declspec (dllimport) void __attribute__((__stdcall__)) QuerySecurityAccessMask (SECURITY_INFORMATION SecurityInformation, LPDWORD DesiredAccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RevertToSelf (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetAclInformation (PACL pAcl, LPVOID pAclInformation, DWORD nAclInformationLength, ACL_INFORMATION_CLASS dwAclInformationClass); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileSecurityW (LPCWSTR lpFileName, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPrivateObjectSecurity (SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ModificationDescriptor, PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, PGENERIC_MAPPING GenericMapping, HANDLE Token); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPrivateObjectSecurityEx (SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ModificationDescriptor, PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, ULONG AutoInheritFlags, PGENERIC_MAPPING GenericMapping, HANDLE Token); + __declspec (dllimport) void __attribute__((__stdcall__)) SetSecurityAccessMask (SECURITY_INFORMATION SecurityInformation, LPDWORD DesiredAccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckTokenMembership (HANDLE TokenHandle, PSID SidToCheck, PBOOL IsMember); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAce (PACL pAcl, DWORD dwAceRevision, DWORD dwStartingAceIndex, LPVOID pAceList, DWORD nAceListLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAccessAllowedAce (PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddAccessAllowedAceEx (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AdjustTokenGroups (HANDLE TokenHandle, WINBOOL ResetToDefault, PTOKEN_GROUPS NewState, DWORD BufferLength, PTOKEN_GROUPS PreviousState, PDWORD ReturnLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AdjustTokenPrivileges (HANDLE TokenHandle, WINBOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllocateAndInitializeSid (PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllocateLocallyUniqueId (PLUID Luid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopySid (DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateWellKnownSid (WELL_KNOWN_SID_TYPE WellKnownSidType, PSID DomainSid, PSID pSid, DWORD *cbSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteAce (PACL pAcl, DWORD dwAceIndex); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DuplicateToken (HANDLE ExistingTokenHandle, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, PHANDLE DuplicateTokenHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DuplicateTokenEx (HANDLE hExistingToken, DWORD dwDesiredAccess, LPSECURITY_ATTRIBUTES lpTokenAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, TOKEN_TYPE TokenType, PHANDLE phNewToken); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EqualDomainSid (PSID pSid1, PSID pSid2, WINBOOL *pfEqual); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) FreeSid (PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetAce (PACL pAcl, DWORD dwAceIndex, LPVOID *pAce); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetAclInformation (PACL pAcl, LPVOID pAclInformation, DWORD nAclInformationLength, ACL_INFORMATION_CLASS dwAclInformationClass); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetKernelObjectSecurity (HANDLE Handle, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLengthSid (PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorControl (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSECURITY_DESCRIPTOR_CONTROL pControl, LPDWORD lpdwRevision); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorDacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbDaclPresent, PACL *pDacl, LPBOOL lpbDaclDefaulted); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorGroup (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pGroup, LPBOOL lpbGroupDefaulted); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetSecurityDescriptorLength (PSECURITY_DESCRIPTOR pSecurityDescriptor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorOwner (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pOwner, LPBOOL lpbOwnerDefaulted); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetSecurityDescriptorRMControl (PSECURITY_DESCRIPTOR SecurityDescriptor, PUCHAR RMControl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorSacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbSaclPresent, PACL *pSacl, LPBOOL lpbSaclDefaulted); + __declspec (dllimport) PSID_IDENTIFIER_AUTHORITY __attribute__((__stdcall__)) GetSidIdentifierAuthority (PSID pSid); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetSidLengthRequired (UCHAR nSubAuthorityCount); + __declspec (dllimport) PDWORD __attribute__((__stdcall__)) GetSidSubAuthority (PSID pSid, DWORD nSubAuthority); + __declspec (dllimport) PUCHAR __attribute__((__stdcall__)) GetSidSubAuthorityCount (PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTokenInformation (HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetWindowsAccountDomainSid (PSID pSid, PSID pDomainSid, DWORD *cbDomainSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitializeAcl (PACL pAcl, DWORD nAclLength, DWORD dwAclRevision); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitializeSecurityDescriptor (PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitializeSid (PSID Sid, PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsValidAcl (PACL pAcl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsValidSecurityDescriptor (PSECURITY_DESCRIPTOR pSecurityDescriptor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsValidSid (PSID pSid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWellKnownSid (PSID pSid, WELL_KNOWN_SID_TYPE WellKnownSidType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MakeAbsoluteSD (PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, LPDWORD lpdwAbsoluteSecurityDescriptorSize, PACL pDacl, LPDWORD lpdwDaclSize, PACL pSacl, LPDWORD lpdwSaclSize, PSID pOwner, LPDWORD lpdwOwnerSize, PSID pPrimaryGroup, LPDWORD lpdwPrimaryGroupSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MakeSelfRelativeSD (PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, LPDWORD lpdwBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetKernelObjectSecurity (HANDLE Handle, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR SecurityDescriptor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorControl (PSECURITY_DESCRIPTOR pSecurityDescriptor, SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest, SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorDacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, WINBOOL bDaclPresent, PACL pDacl, WINBOOL bDaclDefaulted); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorGroup (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pGroup, WINBOOL bGroupDefaulted); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorOwner (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pOwner, WINBOOL bOwnerDefaulted); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetSecurityDescriptorRMControl (PSECURITY_DESCRIPTOR SecurityDescriptor, PUCHAR RMControl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorSacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, WINBOOL bSaclPresent, PACL pSacl, WINBOOL bSaclDefaulted); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetTokenInformation (HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddMandatoryAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD MandatoryPolicy, PSID pLabelSid); +#define _SYNCHAPI_H_ +#define SRWLOCK_INIT RTL_SRWLOCK_INIT +#define INIT_ONCE_STATIC_INIT RTL_RUN_ONCE_INIT +#define INIT_ONCE_CHECK_ONLY RTL_RUN_ONCE_CHECK_ONLY +#define INIT_ONCE_ASYNC RTL_RUN_ONCE_ASYNC +#define INIT_ONCE_INIT_FAILED RTL_RUN_ONCE_INIT_FAILED +#define INIT_ONCE_CTX_RESERVED_BITS RTL_RUN_ONCE_CTX_RESERVED_BITS +#define CONDITION_VARIABLE_INIT RTL_CONDITION_VARIABLE_INIT +#define CONDITION_VARIABLE_LOCKMODE_SHARED RTL_CONDITION_VARIABLE_LOCKMODE_SHARED +#define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE +#define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS + typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK; + typedef RTL_RUN_ONCE INIT_ONCE; + typedef PRTL_RUN_ONCE PINIT_ONCE; + typedef PRTL_RUN_ONCE LPINIT_ONCE; + typedef WINBOOL (__attribute__((__stdcall__)) *PINIT_ONCE_FN) (PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context); + typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE; + __declspec (dllimport) void __attribute__((__stdcall__)) EnterCriticalSection (LPCRITICAL_SECTION lpCriticalSection); + __declspec (dllimport) void __attribute__((__stdcall__)) LeaveCriticalSection (LPCRITICAL_SECTION lpCriticalSection); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TryEnterCriticalSection (LPCRITICAL_SECTION lpCriticalSection); + __declspec (dllimport) void __attribute__((__stdcall__)) DeleteCriticalSection (LPCRITICAL_SECTION lpCriticalSection); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetEvent (HANDLE hEvent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ResetEvent (HANDLE hEvent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReleaseSemaphore (HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReleaseMutex (HANDLE hMutex); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WaitForSingleObjectEx (HANDLE hHandle, DWORD dwMilliseconds, WINBOOL bAlertable); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WaitForMultipleObjectsEx (DWORD nCount, const HANDLE *lpHandles, WINBOOL bWaitAll, DWORD dwMilliseconds, WINBOOL bAlertable); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenMutexW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenEventA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenEventW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenSemaphoreW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName); + WINBOOL __attribute__((__stdcall__)) WaitOnAddress (volatile void *Address, PVOID CompareAddress, SIZE_T AddressSize, DWORD dwMilliseconds); + void __attribute__((__stdcall__)) WakeByAddressSingle (PVOID Address); + void __attribute__((__stdcall__)) WakeByAddressAll (PVOID Address); +#define CREATE_MUTEX_INITIAL_OWNER 0x1 +#define CREATE_EVENT_MANUAL_RESET 0x1 +#define CREATE_EVENT_INITIAL_SET 0x2 + __declspec (dllimport) void __attribute__((__stdcall__)) InitializeSRWLock (PSRWLOCK SRWLock); + void __attribute__((__stdcall__)) ReleaseSRWLockExclusive (PSRWLOCK SRWLock); + void __attribute__((__stdcall__)) ReleaseSRWLockShared (PSRWLOCK SRWLock); + void __attribute__((__stdcall__)) AcquireSRWLockExclusive (PSRWLOCK SRWLock); + void __attribute__((__stdcall__)) AcquireSRWLockShared (PSRWLOCK SRWLock); + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) TryAcquireSRWLockExclusive (PSRWLOCK SRWLock); + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) TryAcquireSRWLockShared (PSRWLOCK SRWLock); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitializeCriticalSectionEx (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags); + __declspec (dllimport) void __attribute__((__stdcall__)) InitOnceInitialize (PINIT_ONCE InitOnce); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitOnceExecuteOnce (PINIT_ONCE InitOnce, PINIT_ONCE_FN InitFn, PVOID Parameter, LPVOID *Context); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitOnceBeginInitialize (LPINIT_ONCE lpInitOnce, DWORD dwFlags, PBOOL fPending, LPVOID *lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitOnceComplete (LPINIT_ONCE lpInitOnce, DWORD dwFlags, LPVOID lpContext); + __declspec (dllimport) void __attribute__((__stdcall__)) InitializeConditionVariable (PCONDITION_VARIABLE ConditionVariable); + __declspec (dllimport) void __attribute__((__stdcall__)) WakeConditionVariable (PCONDITION_VARIABLE ConditionVariable); + __declspec (dllimport) void __attribute__((__stdcall__)) WakeAllConditionVariable (PCONDITION_VARIABLE ConditionVariable); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SleepConditionVariableCS (PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD dwMilliseconds); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SleepConditionVariableSRW (PCONDITION_VARIABLE ConditionVariable, PSRWLOCK SRWLock, DWORD dwMilliseconds, ULONG Flags); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateMutexExA (LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateMutexExW (LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateEventExA (LPSECURITY_ATTRIBUTES lpEventAttributes, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateEventExW (LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateSemaphoreExW (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess); +#define CreateMutexEx __MINGW_NAME_AW(CreateMutexEx) +#define CreateEventEx __MINGW_NAME_AW(CreateEventEx) +#define OpenEvent __MINGW_NAME_AW(OpenEvent) + typedef void (__attribute__((__stdcall__)) *PTIMERAPCROUTINE) (LPVOID lpArgToCompletionRoutine, DWORD dwTimerLowValue, DWORD dwTimerHighValue); + typedef RTL_BARRIER SYNCHRONIZATION_BARRIER; + typedef PRTL_BARRIER PSYNCHRONIZATION_BARRIER; + typedef PRTL_BARRIER LPSYNCHRONIZATION_BARRIER; +#define SYNCHRONIZATION_BARRIER_FLAGS_SPIN_ONLY 0x01 +#define SYNCHRONIZATION_BARRIER_FLAGS_BLOCK_ONLY 0x02 +#define SYNCHRONIZATION_BARRIER_FLAGS_NO_DELETE 0x04 + __declspec (dllimport) void __attribute__((__stdcall__)) InitializeCriticalSection (LPCRITICAL_SECTION lpCriticalSection); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitializeCriticalSectionAndSpinCount (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetCriticalSectionSpinCount (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WaitForSingleObject (HANDLE hHandle, DWORD dwMilliseconds); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SleepEx (DWORD dwMilliseconds, WINBOOL bAlertable); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateMutexA (LPSECURITY_ATTRIBUTES lpMutexAttributes, WINBOOL bInitialOwner, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateMutexW (LPSECURITY_ATTRIBUTES lpMutexAttributes, WINBOOL bInitialOwner, LPCWSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateEventA (LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualReset, WINBOOL bInitialState, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateEventW (LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualReset, WINBOOL bInitialState, LPCWSTR lpName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWaitableTimer (HANDLE hTimer, const LARGE_INTEGER *lpDueTime, LONG lPeriod, PTIMERAPCROUTINE pfnCompletionRoutine, LPVOID lpArgToCompletionRoutine, WINBOOL fResume); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelWaitableTimer (HANDLE hTimer); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenWaitableTimerW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpTimerName); + WINBOOL __attribute__((__stdcall__)) EnterSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier, DWORD dwFlags); + WINBOOL __attribute__((__stdcall__)) InitializeSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier, LONG lTotalThreads, LONG lSpinCount); + WINBOOL __attribute__((__stdcall__)) DeleteSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier); + __declspec (dllimport) void __attribute__((__stdcall__)) Sleep (DWORD dwMilliseconds); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SignalObjectAndWait (HANDLE hObjectToSignal, HANDLE hObjectToWaitOn, DWORD dwMilliseconds, WINBOOL bAlertable); +#define CREATE_WAITABLE_TIMER_MANUAL_RESET 0x1 +#define CREATE_WAITABLE_TIMER_HIGH_RESOLUTION 0x2 + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerExW (LPSECURITY_ATTRIBUTES lpTimerAttributes, LPCWSTR lpTimerName, DWORD dwFlags, DWORD dwDesiredAccess); +#define CreateMutex __MINGW_NAME_AW(CreateMutex) +#define CreateEvent __MINGW_NAME_AW(CreateEvent) +#define _SYSINFOAPI_H_ + typedef struct _SYSTEM_INFO { + __extension__ union { + DWORD dwOemId; + __extension__ struct { + WORD wProcessorArchitecture; + WORD wReserved; + } ; + } ; + DWORD dwPageSize; + LPVOID lpMinimumApplicationAddress; + LPVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; + } SYSTEM_INFO, *LPSYSTEM_INFO; + __declspec (dllimport) void __attribute__((__stdcall__)) GetSystemTime (LPSYSTEMTIME lpSystemTime); + __declspec (dllimport) void __attribute__((__stdcall__)) GetSystemTimeAsFileTime (LPFILETIME lpSystemTimeAsFileTime); + __declspec (dllimport) void __attribute__((__stdcall__)) GetLocalTime (LPSYSTEMTIME lpSystemTime); + __declspec (dllimport) void __attribute__((__stdcall__)) GetNativeSystemInfo (LPSYSTEM_INFO lpSystemInfo); + __declspec (dllimport) ULONGLONG __attribute__((__stdcall__)) GetTickCount64 (void); + typedef struct _MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; + } MEMORYSTATUSEX,*LPMEMORYSTATUSEX; + __declspec (dllimport) void __attribute__((__stdcall__)) GetSystemInfo (LPSYSTEM_INFO lpSystemInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GlobalMemoryStatusEx (LPMEMORYSTATUSEX lpBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTickCount (void); + __declspec (dllimport) void __attribute__((__stdcall__)) GetSystemTimePreciseAsFileTime (LPFILETIME lpSystemTimeAsFileTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVersionExA (LPOSVERSIONINFOA lpVersionInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVersionExW (LPOSVERSIONINFOW lpVersionInformation); + typedef enum _COMPUTER_NAME_FORMAT { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax + } COMPUTER_NAME_FORMAT; + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetVersion (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetLocalTime (const SYSTEMTIME *lpSystemTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSystemTimeAdjustment (PDWORD lpTimeAdjustment, PDWORD lpTimeIncrement, PBOOL lpTimeAdjustmentDisabled); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetWindowsDirectoryA (LPSTR lpBuffer, UINT uSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetWindowsDirectoryW (LPWSTR lpBuffer, UINT uSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemWindowsDirectoryA (LPSTR lpBuffer, UINT uSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemWindowsDirectoryW (LPWSTR lpBuffer, UINT uSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetComputerNameExA (COMPUTER_NAME_FORMAT NameType, LPSTR lpBuffer, LPDWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetComputerNameExW (COMPUTER_NAME_FORMAT NameType, LPWSTR lpBuffer, LPDWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetComputerNameExW (COMPUTER_NAME_FORMAT NameType, LPCWSTR lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSystemTime (const SYSTEMTIME *lpSystemTime); + __declspec (dllimport) ULONGLONG VerSetConditionMask (ULONGLONG ConditionMask, ULONG TypeMask, UCHAR Condition); +#define GetSystemDirectory __MINGW_NAME_AW(GetSystemDirectory) +#define GetWindowsDirectory __MINGW_NAME_AW(GetWindowsDirectory) +#define GetSystemWindowsDirectory __MINGW_NAME_AW(GetSystemWindowsDirectory) +#define GetComputerNameEx __MINGW_NAME_AW(GetComputerNameEx) +#define GetVersionEx __MINGW_NAME_AW(GetVersionEx) + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemDirectoryA (LPSTR lpBuffer, UINT uSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemDirectoryW (LPWSTR lpBuffer, UINT uSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetLogicalProcessorInformation (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, PDWORD ReturnedLength); + __declspec (dllimport) UINT __attribute__((__stdcall__)) EnumSystemFirmwareTables (DWORD FirmwareTableProviderSignature, PVOID pFirmwareTableEnumBuffer, DWORD BufferSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemFirmwareTable (DWORD FirmwareTableProviderSignature, DWORD FirmwareTableID, PVOID pFirmwareTableBuffer, DWORD BufferSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProductInfo (DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType); +#define _SYSTEMTOPOLOGY_H_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumaHighestNodeNumber (PULONG HighestNodeNumber); +#define _THREADPOOLAPISET_H_ + typedef void (__attribute__((__stdcall__)) *PTP_WIN32_IO_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PVOID Overlapped, ULONG IoResult, ULONG_PTR NumberOfBytesTransferred, PTP_IO Io); + __declspec (dllimport) PTP_POOL __attribute__((__stdcall__)) CreateThreadpool (PVOID reserved); + __declspec (dllimport) void __attribute__((__stdcall__)) SetThreadpoolThreadMaximum (PTP_POOL ptpp, DWORD cthrdMost); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadpoolThreadMinimum (PTP_POOL ptpp, DWORD cthrdMic); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadpoolStackInformation (PTP_POOL ptpp, PTP_POOL_STACK_INFORMATION ptpsi); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryThreadpoolStackInformation (PTP_POOL ptpp, PTP_POOL_STACK_INFORMATION ptpsi); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseThreadpool (PTP_POOL ptpp); + __declspec (dllimport) PTP_CLEANUP_GROUP __attribute__((__stdcall__)) CreateThreadpoolCleanupGroup (void); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseThreadpoolCleanupGroupMembers (PTP_CLEANUP_GROUP ptpcg, WINBOOL fCancelPendingCallbacks, PVOID pvCleanupContext); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseThreadpoolCleanupGroup (PTP_CLEANUP_GROUP ptpcg); + __declspec (dllimport) void __attribute__((__stdcall__)) SetEventWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE evt); + __declspec (dllimport) void __attribute__((__stdcall__)) ReleaseSemaphoreWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE sem, DWORD crel); + __declspec (dllimport) void __attribute__((__stdcall__)) ReleaseMutexWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE mut); + __declspec (dllimport) void __attribute__((__stdcall__)) LeaveCriticalSectionWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, PCRITICAL_SECTION pcs); + __declspec (dllimport) void __attribute__((__stdcall__)) FreeLibraryWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HMODULE mod); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CallbackMayRunLong (PTP_CALLBACK_INSTANCE pci); + __declspec (dllimport) void __attribute__((__stdcall__)) DisassociateCurrentThreadFromCallback (PTP_CALLBACK_INSTANCE pci); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TrySubmitThreadpoolCallback (PTP_SIMPLE_CALLBACK pfns, PVOID pv, PTP_CALLBACK_ENVIRON pcbe); + __declspec (dllimport) PTP_WORK __attribute__((__stdcall__)) CreateThreadpoolWork (PTP_WORK_CALLBACK pfnwk, PVOID pv, PTP_CALLBACK_ENVIRON pcbe); + __declspec (dllimport) void __attribute__((__stdcall__)) SubmitThreadpoolWork (PTP_WORK pwk); + __declspec (dllimport) void __attribute__((__stdcall__)) WaitForThreadpoolWorkCallbacks (PTP_WORK pwk, WINBOOL fCancelPendingCallbacks); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseThreadpoolWork (PTP_WORK pwk); + __declspec (dllimport) PTP_TIMER __attribute__((__stdcall__)) CreateThreadpoolTimer (PTP_TIMER_CALLBACK pfnti, PVOID pv, PTP_CALLBACK_ENVIRON pcbe); + __declspec (dllimport) void __attribute__((__stdcall__)) SetThreadpoolTimer (PTP_TIMER pti, PFILETIME pftDueTime, DWORD msPeriod, DWORD msWindowLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsThreadpoolTimerSet (PTP_TIMER pti); + __declspec (dllimport) void __attribute__((__stdcall__)) WaitForThreadpoolTimerCallbacks (PTP_TIMER pti, WINBOOL fCancelPendingCallbacks); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseThreadpoolTimer (PTP_TIMER pti); + __declspec (dllimport) PTP_WAIT __attribute__((__stdcall__)) CreateThreadpoolWait (PTP_WAIT_CALLBACK pfnwa, PVOID pv, PTP_CALLBACK_ENVIRON pcbe); + __declspec (dllimport) void __attribute__((__stdcall__)) SetThreadpoolWait (PTP_WAIT pwa, HANDLE h, PFILETIME pftTimeout); + __declspec (dllimport) void __attribute__((__stdcall__)) WaitForThreadpoolWaitCallbacks (PTP_WAIT pwa, WINBOOL fCancelPendingCallbacks); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseThreadpoolWait (PTP_WAIT pwa); + __declspec (dllimport) PTP_IO __attribute__((__stdcall__)) CreateThreadpoolIo (HANDLE fl, PTP_WIN32_IO_CALLBACK pfnio, PVOID pv, PTP_CALLBACK_ENVIRON pcbe); + __declspec (dllimport) void __attribute__((__stdcall__)) StartThreadpoolIo (PTP_IO pio); + __declspec (dllimport) void __attribute__((__stdcall__)) CancelThreadpoolIo (PTP_IO pio); + __declspec (dllimport) void __attribute__((__stdcall__)) WaitForThreadpoolIoCallbacks (PTP_IO pio, WINBOOL fCancelPendingCallbacks); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseThreadpoolIo (PTP_IO pio); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadpoolTimerEx (PTP_TIMER pti, PFILETIME pftDueTime, DWORD msPeriod, DWORD msWindowLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadpoolWaitEx (PTP_WAIT pwa, HANDLE h, PFILETIME pftTimeout, PVOID Reserved); +#define _THREADPOOLLEGACYAPISET_H_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateTimerQueueTimer (PHANDLE phNewTimer, HANDLE TimerQueue, WAITORTIMERCALLBACK Callback, PVOID Parameter, DWORD DueTime, DWORD Period, ULONG Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteTimerQueueTimer (HANDLE TimerQueue, HANDLE Timer, HANDLE CompletionEvent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueueUserWorkItem (LPTHREAD_START_ROUTINE Function, PVOID Context, ULONG Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterWaitEx (HANDLE WaitHandle, HANDLE CompletionEvent); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateTimerQueue (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeTimerQueueTimer (HANDLE TimerQueue, HANDLE Timer, ULONG DueTime, ULONG Period); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteTimerQueueEx (HANDLE TimerQueue, HANDLE CompletionEvent); +#define _APISETUTIL_ + __declspec (dllimport) PVOID __attribute__((__stdcall__)) EncodePointer (PVOID Ptr); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) DecodePointer (PVOID Ptr); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) EncodeSystemPointer (PVOID Ptr); + __declspec (dllimport) PVOID __attribute__((__stdcall__)) DecodeSystemPointer (PVOID Ptr); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Beep (DWORD dwFreq, DWORD dwDuration); +#define _WOW64APISET_H_ + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Wow64DisableWow64FsRedirection (PVOID *OldValue); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Wow64RevertWow64FsRedirection (PVOID OlValue); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryA (LPSTR lpBuffer, UINT uSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryW (LPWSTR lpBuffer, UINT uSize); +#define GetSystemWow64Directory __MINGW_NAME_AW(GetSystemWow64Directory) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Wow64GetThreadContext (HANDLE hThread, PWOW64_CONTEXT lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Wow64SetThreadContext (HANDLE hThread, const WOW64_CONTEXT *lpContext); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) Wow64SuspendThread (HANDLE hThread); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWow64Process (HANDLE hProcess, PBOOL Wow64Process); +#define __INTRINSIC_GROUP_WINBASE +#define __INTRINSIC_PROLOG(name) (!defined(__INTRINSIC_DEFINED_ ## name)) && ((!defined (__INTRINSIC_ONLYSPECIAL)) || (defined (__INTRINSIC_ONLYSPECIAL) && defined(__INTRINSIC_SPECIAL_ ## name))) +#define __INTRINSICS_USEINLINE __MINGW_INTRIN_INLINE +#undef __INTRINSIC_GROUP_WINBASE +#define __INTRINSIC_ONLYSPECIAL +#define __INTRINSIC_SPECIAL__InterlockedIncrement +#define __INTRINSIC_SPECIAL__InterlockedDecrement +#define __INTRINSIC_SPECIAL__InterlockedAdd +#define __INTRINSIC_SPECIAL__InterlockedExchange +#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd +#define __INTRINSIC_SPECIAL__InterlockedCompareExchange +#define __INTRINSIC_SPECIAL__InterlockedCompareExchangePointer +#define __INTRINSIC_SPECIAL__InterlockedExchangePointer +#define __INTRINSIC_SPECIAL__InterlockedAnd64 +#define __INTRINSIC_SPECIAL__InterlockedOr64 +#define __INTRINSIC_SPECIAL__InterlockedXor64 +#define __INTRINSIC_SPECIAL__InterlockedIncrement64 +#define __INTRINSIC_SPECIAL__InterlockedDecrement64 +#define __INTRINSIC_SPECIAL__InterlockedAdd64 +#define __INTRINSIC_SPECIAL__InterlockedExchange64 +#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd64 +#define __INTRINSIC_SPECIAL__InterlockedCompareExchange64 +#undef _lrotl +#undef _lrotr +#undef __INTRINSIC_ONLYSPECIAL +#undef __INTRINSIC_PROLOG +#undef __INTRINSIC_EPILOG +#undef __INTRINSICS_USEINLINE +#undef __FLAGCONSTRAINT +#undef __FLAGSET +#undef __FLAGCLOBBER1 +#undef __FLAGCLOBBER2 +#define GetCurrentTime() GetTickCount () +#define DefineHandleTable(w) ( { (VOID)(w); TRUE; } ) +#define LimitEmsPages(dw) +#define SetSwapAreaSize(w) (w) +#define LockSegment(w) GlobalFix((HANDLE)(w)) +#define UnlockSegment(w) GlobalUnfix((HANDLE)(w)) +#define Yield() +#define FILE_BEGIN 0 +#define FILE_CURRENT 1 +#define FILE_END 2 +#define WAIT_FAILED ((DWORD)0xffffffff) +#define WAIT_OBJECT_0 ((STATUS_WAIT_0) + 0) +#define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0) + 0) +#define WAIT_ABANDONED_0 ((STATUS_ABANDONED_WAIT_0) + 0) +#define WAIT_IO_COMPLETION STATUS_USER_APC +#define SecureZeroMemory RtlSecureZeroMemory +#define CaptureStackBackTrace RtlCaptureStackBackTrace +#define FILE_FLAG_WRITE_THROUGH 0x80000000 +#define FILE_FLAG_OVERLAPPED 0x40000000 +#define FILE_FLAG_NO_BUFFERING 0x20000000 +#define FILE_FLAG_RANDOM_ACCESS 0x10000000 +#define FILE_FLAG_SEQUENTIAL_SCAN 0x8000000 +#define FILE_FLAG_DELETE_ON_CLOSE 0x4000000 +#define FILE_FLAG_BACKUP_SEMANTICS 0x2000000 +#define FILE_FLAG_POSIX_SEMANTICS 0x1000000 +#define FILE_FLAG_SESSION_AWARE 0x800000 +#define FILE_FLAG_OPEN_REPARSE_POINT 0x200000 +#define FILE_FLAG_OPEN_NO_RECALL 0x100000 +#define FILE_FLAG_FIRST_PIPE_INSTANCE 0x80000 +#define PROGRESS_CONTINUE 0 +#define PROGRESS_CANCEL 1 +#define PROGRESS_STOP 2 +#define PROGRESS_QUIET 3 +#define CALLBACK_CHUNK_FINISHED 0x0 +#define CALLBACK_STREAM_SWITCH 0x1 +#define COPY_FILE_FAIL_IF_EXISTS 0x1 +#define COPY_FILE_RESTARTABLE 0x2 +#define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x4 +#define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x8 +#define COPY_FILE_COPY_SYMLINK 0x800 +#define COPY_FILE_NO_BUFFERING 0x1000 +#define REPLACEFILE_WRITE_THROUGH 0x1 +#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x2 +#define REPLACEFILE_IGNORE_ACL_ERRORS 0x4 +#define PIPE_ACCESS_INBOUND 0x1 +#define PIPE_ACCESS_OUTBOUND 0x2 +#define PIPE_ACCESS_DUPLEX 0x3 +#define PIPE_CLIENT_END 0x0 +#define PIPE_SERVER_END 0x1 +#define PIPE_WAIT 0x0 +#define PIPE_NOWAIT 0x1 +#define PIPE_READMODE_BYTE 0x0 +#define PIPE_READMODE_MESSAGE 0x2 +#define PIPE_TYPE_BYTE 0x0 +#define PIPE_TYPE_MESSAGE 0x4 +#define PIPE_ACCEPT_REMOTE_CLIENTS 0x0 +#define PIPE_REJECT_REMOTE_CLIENTS 0x8 +#define PIPE_UNLIMITED_INSTANCES 255 +#define SECURITY_ANONYMOUS (SecurityAnonymous << 16) +#define SECURITY_IDENTIFICATION (SecurityIdentification << 16) +#define SECURITY_IMPERSONATION (SecurityImpersonation << 16) +#define SECURITY_DELEGATION (SecurityDelegation << 16) +#define SECURITY_CONTEXT_TRACKING 0x40000 +#define SECURITY_EFFECTIVE_ONLY 0x80000 +#define SECURITY_SQOS_PRESENT 0x100000 +#define SECURITY_VALID_SQOS_FLAGS 0x1f0000 +#define FAIL_FAST_GENERATE_EXCEPTION_ADDRESS 0x1 +#define FAIL_FAST_NO_HARD_ERROR_DLG 0x2 + typedef void (__attribute__((__stdcall__)) *PFIBER_START_ROUTINE) (LPVOID lpFiberParameter); + typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE; + typedef LPVOID (__attribute__((__stdcall__)) *PFIBER_CALLOUT_ROUTINE) (LPVOID lpParameter); + typedef LPVOID LPLDT_ENTRY; +#define SP_SERIALCOMM ((DWORD)0x1) +#define PST_UNSPECIFIED ((DWORD)0x0) +#define PST_RS232 ((DWORD)0x1) +#define PST_PARALLELPORT ((DWORD)0x2) +#define PST_RS422 ((DWORD)0x3) +#define PST_RS423 ((DWORD)0x4) +#define PST_RS449 ((DWORD)0x5) +#define PST_MODEM ((DWORD)0x6) +#define PST_FAX ((DWORD)0x21) +#define PST_SCANNER ((DWORD)0x22) +#define PST_NETWORK_BRIDGE ((DWORD)0x100) +#define PST_LAT ((DWORD)0x101) +#define PST_TCPIP_TELNET ((DWORD)0x102) +#define PST_X25 ((DWORD)0x103) +#define PCF_DTRDSR ((DWORD)0x1) +#define PCF_RTSCTS ((DWORD)0x2) +#define PCF_RLSD ((DWORD)0x4) +#define PCF_PARITY_CHECK ((DWORD)0x8) +#define PCF_XONXOFF ((DWORD)0x10) +#define PCF_SETXCHAR ((DWORD)0x20) +#define PCF_TOTALTIMEOUTS ((DWORD)0x40) +#define PCF_INTTIMEOUTS ((DWORD)0x80) +#define PCF_SPECIALCHARS ((DWORD)0x100) +#define PCF_16BITMODE ((DWORD)0x200) +#define SP_PARITY ((DWORD)0x1) +#define SP_BAUD ((DWORD)0x2) +#define SP_DATABITS ((DWORD)0x4) +#define SP_STOPBITS ((DWORD)0x8) +#define SP_HANDSHAKING ((DWORD)0x10) +#define SP_PARITY_CHECK ((DWORD)0x20) +#define SP_RLSD ((DWORD)0x40) +#define BAUD_075 ((DWORD)0x1) +#define BAUD_110 ((DWORD)0x2) +#define BAUD_134_5 ((DWORD)0x4) +#define BAUD_150 ((DWORD)0x8) +#define BAUD_300 ((DWORD)0x10) +#define BAUD_600 ((DWORD)0x20) +#define BAUD_1200 ((DWORD)0x40) +#define BAUD_1800 ((DWORD)0x80) +#define BAUD_2400 ((DWORD)0x100) +#define BAUD_4800 ((DWORD)0x200) +#define BAUD_7200 ((DWORD)0x400) +#define BAUD_9600 ((DWORD)0x800) +#define BAUD_14400 ((DWORD)0x1000) +#define BAUD_19200 ((DWORD)0x2000) +#define BAUD_38400 ((DWORD)0x4000) +#define BAUD_56K ((DWORD)0x8000) +#define BAUD_128K ((DWORD)0x10000) +#define BAUD_115200 ((DWORD)0x20000) +#define BAUD_57600 ((DWORD)0x40000) +#define BAUD_USER ((DWORD)0x10000000) +#define DATABITS_5 ((WORD)0x1) +#define DATABITS_6 ((WORD)0x2) +#define DATABITS_7 ((WORD)0x4) +#define DATABITS_8 ((WORD)0x8) +#define DATABITS_16 ((WORD)0x10) +#define DATABITS_16X ((WORD)0x20) +#define STOPBITS_10 ((WORD)0x1) +#define STOPBITS_15 ((WORD)0x2) +#define STOPBITS_20 ((WORD)0x4) +#define PARITY_NONE ((WORD)0x100) +#define PARITY_ODD ((WORD)0x200) +#define PARITY_EVEN ((WORD)0x400) +#define PARITY_MARK ((WORD)0x800) +#define PARITY_SPACE ((WORD)0x1000) + typedef struct _COMMPROP { + WORD wPacketLength; + WORD wPacketVersion; + DWORD dwServiceMask; + DWORD dwReserved1; + DWORD dwMaxTxQueue; + DWORD dwMaxRxQueue; + DWORD dwMaxBaud; + DWORD dwProvSubType; + DWORD dwProvCapabilities; + DWORD dwSettableParams; + DWORD dwSettableBaud; + WORD wSettableData; + WORD wSettableStopParity; + DWORD dwCurrentTxQueue; + DWORD dwCurrentRxQueue; + DWORD dwProvSpec1; + DWORD dwProvSpec2; + WCHAR wcProvChar[1]; + } COMMPROP,*LPCOMMPROP; +#define COMMPROP_INITIALIZED ((DWORD)0xe73cf52e) + typedef struct _COMSTAT { + DWORD fCtsHold : 1; + DWORD fDsrHold : 1; + DWORD fRlsdHold : 1; + DWORD fXoffHold : 1; + DWORD fXoffSent : 1; + DWORD fEof : 1; + DWORD fTxim : 1; + DWORD fReserved : 25; + DWORD cbInQue; + DWORD cbOutQue; + } COMSTAT,*LPCOMSTAT; +#define DTR_CONTROL_DISABLE 0x0 +#define DTR_CONTROL_ENABLE 0x1 +#define DTR_CONTROL_HANDSHAKE 0x2 +#define RTS_CONTROL_DISABLE 0x0 +#define RTS_CONTROL_ENABLE 0x1 +#define RTS_CONTROL_HANDSHAKE 0x2 +#define RTS_CONTROL_TOGGLE 0x3 + typedef struct _DCB { + DWORD DCBlength; + DWORD BaudRate; + DWORD fBinary: 1; + DWORD fParity: 1; + DWORD fOutxCtsFlow:1; + DWORD fOutxDsrFlow:1; + DWORD fDtrControl:2; + DWORD fDsrSensitivity:1; + DWORD fTXContinueOnXoff: 1; + DWORD fOutX: 1; + DWORD fInX: 1; + DWORD fErrorChar: 1; + DWORD fNull: 1; + DWORD fRtsControl:2; + DWORD fAbortOnError:1; + DWORD fDummy2:17; + WORD wReserved; + WORD XonLim; + WORD XoffLim; + BYTE ByteSize; + BYTE Parity; + BYTE StopBits; + char XonChar; + char XoffChar; + char ErrorChar; + char EofChar; + char EvtChar; + WORD wReserved1; + } DCB,*LPDCB; + typedef struct _COMMTIMEOUTS { + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; + } COMMTIMEOUTS,*LPCOMMTIMEOUTS; + typedef struct _COMMCONFIG { + DWORD dwSize; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR wcProviderData[1]; + } COMMCONFIG,*LPCOMMCONFIG; +#define FreeModule(hLibModule) FreeLibrary((hLibModule)) +#define MakeProcInstance(lpProc,hInstance) (lpProc) +#define FreeProcInstance(lpProc) (lpProc) +#define GMEM_FIXED 0x0 +#define GMEM_MOVEABLE 0x2 +#define GMEM_NOCOMPACT 0x10 +#define GMEM_NODISCARD 0x20 +#define GMEM_ZEROINIT 0x40 +#define GMEM_MODIFY 0x80 +#define GMEM_DISCARDABLE 0x100 +#define GMEM_NOT_BANKED 0x1000 +#define GMEM_SHARE 0x2000 +#define GMEM_DDESHARE 0x2000 +#define GMEM_NOTIFY 0x4000 +#define GMEM_LOWER GMEM_NOT_BANKED +#define GMEM_VALID_FLAGS 0x7f72 +#define GMEM_INVALID_HANDLE 0x8000 +#define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT) +#define GPTR (GMEM_FIXED | GMEM_ZEROINIT) +#define GlobalLRUNewest(h) ((HANDLE)(h)) +#define GlobalLRUOldest(h) ((HANDLE)(h)) +#define GlobalDiscard(h) GlobalReAlloc ((h), 0, GMEM_MOVEABLE) +#define GMEM_DISCARDED 0x4000 +#define GMEM_LOCKCOUNT 0x00ff + typedef struct _MEMORYSTATUS { + DWORD dwLength; + DWORD dwMemoryLoad; + SIZE_T dwTotalPhys; + SIZE_T dwAvailPhys; + SIZE_T dwTotalPageFile; + SIZE_T dwAvailPageFile; + SIZE_T dwTotalVirtual; + SIZE_T dwAvailVirtual; + } MEMORYSTATUS,*LPMEMORYSTATUS; +#define NUMA_NO_PREFERRED_NODE ((DWORD) -1) +#define DEBUG_PROCESS 0x1 +#define DEBUG_ONLY_THIS_PROCESS 0x2 +#define CREATE_SUSPENDED 0x4 +#define DETACHED_PROCESS 0x8 +#define CREATE_NEW_CONSOLE 0x10 +#define NORMAL_PRIORITY_CLASS 0x20 +#define IDLE_PRIORITY_CLASS 0x40 +#define HIGH_PRIORITY_CLASS 0x80 +#define REALTIME_PRIORITY_CLASS 0x100 +#define CREATE_NEW_PROCESS_GROUP 0x200 +#define CREATE_UNICODE_ENVIRONMENT 0x400 +#define CREATE_SEPARATE_WOW_VDM 0x800 +#define CREATE_SHARED_WOW_VDM 0x1000 +#define CREATE_FORCEDOS 0x2000 +#define BELOW_NORMAL_PRIORITY_CLASS 0x4000 +#define ABOVE_NORMAL_PRIORITY_CLASS 0x8000 +#define INHERIT_PARENT_AFFINITY 0x10000 +#define INHERIT_CALLER_PRIORITY 0x20000 +#define CREATE_PROTECTED_PROCESS 0x40000 +#define EXTENDED_STARTUPINFO_PRESENT 0x80000 +#define PROCESS_MODE_BACKGROUND_BEGIN 0x100000 +#define PROCESS_MODE_BACKGROUND_END 0x200000 +#define CREATE_SECURE_PROCESS 0x400000 +#define CREATE_BREAKAWAY_FROM_JOB 0x1000000 +#define CREATE_PRESERVE_CODE_AUTHZ_LEVEL 0x2000000 +#define CREATE_DEFAULT_ERROR_MODE 0x4000000 +#define CREATE_NO_WINDOW 0x8000000 +#define PROFILE_USER 0x10000000 +#define PROFILE_KERNEL 0x20000000 +#define PROFILE_SERVER 0x40000000 +#define CREATE_IGNORE_SYSTEM_DEFAULT 0x80000000 +#define STACK_SIZE_PARAM_IS_A_RESERVATION 0x10000 +#define THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN +#define THREAD_PRIORITY_BELOW_NORMAL (THREAD_PRIORITY_LOWEST+1) +#define THREAD_PRIORITY_NORMAL 0 +#define THREAD_PRIORITY_HIGHEST THREAD_BASE_PRIORITY_MAX +#define THREAD_PRIORITY_ABOVE_NORMAL (THREAD_PRIORITY_HIGHEST-1) +#define THREAD_PRIORITY_ERROR_RETURN (MAXLONG) +#define THREAD_PRIORITY_TIME_CRITICAL THREAD_BASE_PRIORITY_LOWRT +#define THREAD_PRIORITY_IDLE THREAD_BASE_PRIORITY_IDLE +#define THREAD_MODE_BACKGROUND_BEGIN 0x00010000 +#define THREAD_MODE_BACKGROUND_END 0x00020000 +#define VOLUME_NAME_DOS 0x0 +#define VOLUME_NAME_GUID 0x1 +#define VOLUME_NAME_NT 0x2 +#define VOLUME_NAME_NONE 0x4 +#define FILE_NAME_NORMALIZED 0x0 +#define FILE_NAME_OPENED 0x8 + typedef struct _JIT_DEBUG_INFO { + DWORD dwSize; + DWORD dwProcessorArchitecture; + DWORD dwThreadID; + DWORD dwReserved0; + ULONG64 lpExceptionAddress; + ULONG64 lpExceptionRecord; + ULONG64 lpContextRecord; + } JIT_DEBUG_INFO,*LPJIT_DEBUG_INFO; + typedef JIT_DEBUG_INFO JIT_DEBUG_INFO32, *LPJIT_DEBUG_INFO32; + typedef JIT_DEBUG_INFO JIT_DEBUG_INFO64, *LPJIT_DEBUG_INFO64; + typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD; + typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS; +#define DRIVE_UNKNOWN 0 +#define DRIVE_NO_ROOT_DIR 1 +#define DRIVE_REMOVABLE 2 +#define DRIVE_FIXED 3 +#define DRIVE_REMOTE 4 +#define DRIVE_CDROM 5 +#define DRIVE_RAMDISK 6 +#define GetFreeSpace(w) (__MSABI_LONG(0x100000)) +#define FILE_TYPE_UNKNOWN 0x0 +#define FILE_TYPE_DISK 0x1 +#define FILE_TYPE_CHAR 0x2 +#define FILE_TYPE_PIPE 0x3 +#define FILE_TYPE_REMOTE 0x8000 +#define STD_INPUT_HANDLE ((DWORD)-10) +#define STD_OUTPUT_HANDLE ((DWORD)-11) +#define STD_ERROR_HANDLE ((DWORD)-12) +#define NOPARITY 0 +#define ODDPARITY 1 +#define EVENPARITY 2 +#define MARKPARITY 3 +#define SPACEPARITY 4 +#define ONESTOPBIT 0 +#define ONE5STOPBITS 1 +#define TWOSTOPBITS 2 +#define IGNORE 0 +#define INFINITE 0xffffffff +#define CBR_110 110 +#define CBR_300 300 +#define CBR_600 600 +#define CBR_1200 1200 +#define CBR_2400 2400 +#define CBR_4800 4800 +#define CBR_9600 9600 +#define CBR_14400 14400 +#define CBR_19200 19200 +#define CBR_38400 38400 +#define CBR_56000 56000 +#define CBR_57600 57600 +#define CBR_115200 115200 +#define CBR_128000 128000 +#define CBR_256000 256000 +#define CE_RXOVER 0x1 +#define CE_OVERRUN 0x2 +#define CE_RXPARITY 0x4 +#define CE_FRAME 0x8 +#define CE_BREAK 0x10 +#define CE_TXFULL 0x100 +#define CE_PTO 0x200 +#define CE_IOE 0x400 +#define CE_DNS 0x800 +#define CE_OOP 0x1000 +#define CE_MODE 0x8000 +#define IE_BADID (-1) +#define IE_OPEN (-2) +#define IE_NOPEN (-3) +#define IE_MEMORY (-4) +#define IE_DEFAULT (-5) +#define IE_HARDWARE (-10) +#define IE_BYTESIZE (-11) +#define IE_BAUDRATE (-12) +#define EV_RXCHAR 0x1 +#define EV_RXFLAG 0x2 +#define EV_TXEMPTY 0x4 +#define EV_CTS 0x8 +#define EV_DSR 0x10 +#define EV_RLSD 0x20 +#define EV_BREAK 0x40 +#define EV_ERR 0x80 +#define EV_RING 0x100 +#define EV_PERR 0x200 +#define EV_RX80FULL 0x400 +#define EV_EVENT1 0x800 +#define EV_EVENT2 0x1000 +#define SETXOFF 1 +#define SETXON 2 +#define SETRTS 3 +#define CLRRTS 4 +#define SETDTR 5 +#define CLRDTR 6 +#define RESETDEV 7 +#define SETBREAK 8 +#define CLRBREAK 9 +#define PURGE_TXABORT 0x1 +#define PURGE_RXABORT 0x2 +#define PURGE_TXCLEAR 0x4 +#define PURGE_RXCLEAR 0x8 +#define LPTx 0x80 +#define MS_CTS_ON ((DWORD)0x10) +#define MS_DSR_ON ((DWORD)0x20) +#define MS_RING_ON ((DWORD)0x40) +#define MS_RLSD_ON ((DWORD)0x80) +#define S_QUEUEEMPTY 0 +#define S_THRESHOLD 1 +#define S_ALLTHRESHOLD 2 +#define S_NORMAL 0 +#define S_LEGATO 1 +#define S_STACCATO 2 +#define S_PERIOD512 0 +#define S_PERIOD1024 1 +#define S_PERIOD2048 2 +#define S_PERIODVOICE 3 +#define S_WHITE512 4 +#define S_WHITE1024 5 +#define S_WHITE2048 6 +#define S_WHITEVOICE 7 +#define S_SERDVNA (-1) +#define S_SEROFM (-2) +#define S_SERMACT (-3) +#define S_SERQFUL (-4) +#define S_SERBDNT (-5) +#define S_SERDLN (-6) +#define S_SERDCC (-7) +#define S_SERDTP (-8) +#define S_SERDVL (-9) +#define S_SERDMD (-10) +#define S_SERDSH (-11) +#define S_SERDPT (-12) +#define S_SERDFQ (-13) +#define S_SERDDR (-14) +#define S_SERDSR (-15) +#define S_SERDST (-16) +#define NMPWAIT_WAIT_FOREVER 0xffffffff +#define NMPWAIT_NOWAIT 0x1 +#define NMPWAIT_USE_DEFAULT_WAIT 0x0 +#define FS_CASE_IS_PRESERVED FILE_CASE_PRESERVED_NAMES +#define FS_CASE_SENSITIVE FILE_CASE_SENSITIVE_SEARCH +#define FS_UNICODE_STORED_ON_DISK FILE_UNICODE_ON_DISK +#define FS_PERSISTENT_ACLS FILE_PERSISTENT_ACLS +#define FS_VOL_IS_COMPRESSED FILE_VOLUME_IS_COMPRESSED +#define FS_FILE_COMPRESSION FILE_FILE_COMPRESSION +#define FS_FILE_ENCRYPTION FILE_SUPPORTS_ENCRYPTION +#define OF_READ 0x0 +#define OF_WRITE 0x1 +#define OF_READWRITE 0x2 +#define OF_SHARE_COMPAT 0x0 +#define OF_SHARE_EXCLUSIVE 0x10 +#define OF_SHARE_DENY_WRITE 0x20 +#define OF_SHARE_DENY_READ 0x30 +#define OF_SHARE_DENY_NONE 0x40 +#define OF_PARSE 0x100 +#define OF_DELETE 0x200 +#define OF_VERIFY 0x400 +#define OF_CANCEL 0x800 +#define OF_CREATE 0x1000 +#define OF_PROMPT 0x2000 +#define OF_EXIST 0x4000 +#define OF_REOPEN 0x8000 +#define OFS_MAXPATHNAME 128 + typedef struct _OFSTRUCT { + BYTE cBytes; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR szPathName[128]; + } OFSTRUCT, *LPOFSTRUCT,*POFSTRUCT; +#define InterlockedAnd _InterlockedAnd +#define InterlockedOr _InterlockedOr +#define InterlockedXor _InterlockedXor +#define InterlockedIncrement _InterlockedIncrement +#define InterlockedDecrement _InterlockedDecrement +#define InterlockedExchange _InterlockedExchange +#define InterlockedExchangeAdd _InterlockedExchangeAdd +#define InterlockedExchangePointer _InterlockedExchangePointer +#define InterlockedCompareExchange _InterlockedCompareExchange +#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer +#define InterlockedAnd64 _InterlockedAnd64 +#define InterlockedOr64 _InterlockedOr64 +#define InterlockedXor64 _InterlockedXor64 +#define InterlockedIncrement64 _InterlockedIncrement64 +#define InterlockedDecrement64 _InterlockedDecrement64 +#define InterlockedExchange64 _InterlockedExchange64 +#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 +#define InterlockedCompareExchange64 _InterlockedCompareExchange64 + LONG _InterlockedIncrement (LONG volatile *Addend); + LONG _InterlockedDecrement (LONG volatile *Addend); + LONG _InterlockedExchange (LONG volatile *Target, LONG Value); + LONG _InterlockedExchangeAdd (LONG volatile *Addend, LONG Value); + LONG _InterlockedCompareExchange (LONG volatile *Destination, LONG ExChange, LONG Comperand); + PVOID _InterlockedCompareExchangePointer (PVOID volatile *Destination, PVOID Exchange, PVOID Comperand); + PVOID _InterlockedExchangePointer (PVOID volatile *Target, PVOID Value); + LONG64 _InterlockedAnd64 (LONG64 volatile *Destination, LONG64 Value); + LONG64 _InterlockedOr64 (LONG64 volatile *Destination, LONG64 Value); + LONG64 _InterlockedXor64 (LONG64 volatile *Destination, LONG64 Value); + LONG64 _InterlockedIncrement64 (LONG64 volatile *Addend); + LONG64 _InterlockedDecrement64 (LONG64 volatile *Addend); + LONG64 _InterlockedExchange64 (LONG64 volatile *Target, LONG64 Value); + LONG64 _InterlockedExchangeAdd64 (LONG64 volatile *Addend, LONG64 Value); + LONG64 _InterlockedCompareExchange64 (LONG64 volatile *Destination, LONG64 ExChange, LONG64 Comperand); +#define UnlockResource(hResData) ( { (VOID)(hResData); 0; } ) +#define MAXINTATOM 0xc000 +#define MAKEINTATOM(i) (LPTSTR) ((ULONG_PTR)((WORD)(i))) +#define INVALID_ATOM ((ATOM)0) + __declspec (dllimport) HLOCAL __attribute__((__stdcall__)) LocalAlloc (UINT uFlags, SIZE_T uBytes); + __declspec (dllimport) HLOCAL __attribute__((__stdcall__)) LocalFree (HLOCAL hMem); + int __attribute__((__stdcall__)) WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd); + int __attribute__((__stdcall__)) wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GlobalFlags (HGLOBAL hMem); + __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) GlobalHandle (LPCVOID pMem); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) GlobalCompact (DWORD dwMinFree); + __declspec (dllimport) void __attribute__((__stdcall__)) GlobalFix (HGLOBAL hMem); + __declspec (dllimport) void __attribute__((__stdcall__)) GlobalUnfix (HGLOBAL hMem); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) GlobalWire (HGLOBAL hMem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GlobalUnWire (HGLOBAL hMem); + __declspec (dllimport) void __attribute__((__stdcall__)) GlobalMemoryStatus (LPMEMORYSTATUS lpBuffer); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) LocalLock (HLOCAL hMem); + __declspec (dllimport) HLOCAL __attribute__((__stdcall__)) LocalHandle (LPCVOID pMem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LocalUnlock (HLOCAL hMem); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) LocalSize (HLOCAL hMem); + __declspec (dllimport) UINT __attribute__((__stdcall__)) LocalFlags (HLOCAL hMem); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) LocalShrink (HLOCAL hMem, UINT cbNewSize); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) LocalCompact (UINT uMinFree); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) VirtualAllocExNuma (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred); +#define SCS_32BIT_BINARY 0 +#define SCS_DOS_BINARY 1 +#define SCS_WOW_BINARY 2 +#define SCS_PIF_BINARY 3 +#define SCS_POSIX_BINARY 4 +#define SCS_OS216_BINARY 5 +#define SCS_64BIT_BINARY 6 +#define SCS_THIS_PLATFORM_BINARY SCS_64BIT_BINARY + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetBinaryTypeA (LPCSTR lpApplicationName, LPDWORD lpBinaryType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetBinaryTypeW (LPCWSTR lpApplicationName, LPDWORD lpBinaryType); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetShortPathNameA (LPCSTR lpszLongPath, LPSTR lpszShortPath, DWORD cchBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLongPathNameTransactedA (LPCSTR lpszShortPath, LPSTR lpszLongPath, DWORD cchBuffer, HANDLE hTransaction); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLongPathNameTransactedW (LPCWSTR lpszShortPath, LPWSTR lpszLongPath, DWORD cchBuffer, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessIoCounters (HANDLE hProcess, PIO_COUNTERS lpIoCounters); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessWorkingSetSize (HANDLE hProcess, PSIZE_T lpMinimumWorkingSetSize, PSIZE_T lpMaximumWorkingSetSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessWorkingSetSize (HANDLE hProcess, SIZE_T dwMinimumWorkingSetSize, SIZE_T dwMaximumWorkingSetSize); + __declspec (dllimport) void __attribute__((__stdcall__)) FatalExit (int ExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetEnvironmentStringsA (LPCH NewEnvironment); +#define SetEnvironmentStrings SetEnvironmentStringsA +#define GetShortPathName GetShortPathNameA +#define GetBinaryType __MINGW_NAME_AW(GetBinaryType) +#define GetLongPathNameTransacted __MINGW_NAME_AW(GetLongPathNameTransacted) + __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) GlobalAlloc (UINT uFlags, SIZE_T dwBytes); + __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) GlobalReAlloc (HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags); + __declspec (dllimport) SIZE_T __attribute__((__stdcall__)) GlobalSize (HGLOBAL hMem); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) GlobalLock (HGLOBAL hMem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GlobalUnlock (HGLOBAL hMem); + __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) GlobalFree (HGLOBAL hMem); + __declspec (dllimport) HLOCAL __attribute__((__stdcall__)) LocalReAlloc (HLOCAL hMem, SIZE_T uBytes, UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessAffinityMask (HANDLE hProcess, PDWORD_PTR lpProcessAffinityMask, PDWORD_PTR lpSystemAffinityMask); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessAffinityMask (HANDLE hProcess, DWORD_PTR dwProcessAffinityMask); + __declspec (dllimport) DWORD_PTR __attribute__((__stdcall__)) SetThreadAffinityMask (HANDLE hThread, DWORD_PTR dwThreadAffinityMask); + __declspec (dllimport) void __attribute__((__stdcall__)) RaiseFailFastException (PEXCEPTION_RECORD pExceptionRecord, PCONTEXT pContextRecord, DWORD dwFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetThreadIdealProcessor (HANDLE hThread, DWORD dwIdealProcessor); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) CreateFiberEx (SIZE_T dwStackCommitSize, SIZE_T dwStackReserveSize, DWORD dwFlags, LPFIBER_START_ROUTINE lpStartAddress, LPVOID lpParameter); + __declspec (dllimport) void __attribute__((__stdcall__)) DeleteFiber (LPVOID lpFiber); + __declspec (dllimport) void __attribute__((__stdcall__)) SwitchToFiber (LPVOID lpFiber); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ConvertFiberToThread (void); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) ConvertThreadToFiberEx (LPVOID lpParameter, DWORD dwFlags); + typedef enum _THREAD_INFORMATION_CLASS { + ThreadMemoryPriority, + ThreadAbsoluteCpuPriority, + ThreadDynamicCodePolicy, + ThreadPowerThrottling, + ThreadInformationClassMax + } THREAD_INFORMATION_CLASS; +#define FIBER_FLAG_FLOAT_SWITCH 0x1 + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) CreateFiber (SIZE_T dwStackSize, LPFIBER_START_ROUTINE lpStartAddress, LPVOID lpParameter); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) ConvertThreadToFiber (LPVOID lpParameter); +#define UMS_VERSION RTL_UMS_VERSION + typedef void *PUMS_CONTEXT; + typedef void *PUMS_COMPLETION_LIST; + typedef RTL_UMS_THREAD_INFO_CLASS UMS_THREAD_INFO_CLASS, *PUMS_THREAD_INFO_CLASS; + typedef RTL_UMS_SCHEDULER_REASON UMS_SCHEDULER_REASON; + typedef PRTL_UMS_SCHEDULER_ENTRY_POINT PUMS_SCHEDULER_ENTRY_POINT; + typedef struct _UMS_SCHEDULER_STARTUP_INFO { + ULONG UmsVersion; + PUMS_COMPLETION_LIST CompletionList; + PUMS_SCHEDULER_ENTRY_POINT SchedulerProc; + PVOID SchedulerParam; + } UMS_SCHEDULER_STARTUP_INFO, *PUMS_SCHEDULER_STARTUP_INFO; + typedef struct _UMS_SYSTEM_THREAD_INFORMATION { + ULONG UmsVersion; + __extension__ union { + __extension__ struct { + ULONG IsUmsSchedulerThread : 1; + ULONG IsUmsWorkerThread : 1; + }; + ULONG ThreadUmsFlags; + }; + } UMS_SYSTEM_THREAD_INFORMATION, *PUMS_SYSTEM_THREAD_INFORMATION; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateUmsCompletionList(PUMS_COMPLETION_LIST *UmsCompletionList); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DequeueUmsCompletionListItems(PUMS_COMPLETION_LIST UmsCompletionList, DWORD WaitTimeOut, PUMS_CONTEXT *UmsThreadList); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUmsCompletionListEvent(PUMS_COMPLETION_LIST UmsCompletionList, PHANDLE UmsCompletionEvent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ExecuteUmsThread(PUMS_CONTEXT UmsThread); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UmsThreadYield(PVOID SchedulerParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteUmsCompletionList(PUMS_COMPLETION_LIST UmsCompletionList); + __declspec (dllimport) PUMS_CONTEXT __attribute__((__stdcall__)) GetCurrentUmsThread(void); + __declspec (dllimport) PUMS_CONTEXT __attribute__((__stdcall__)) GetNextUmsListItem(PUMS_CONTEXT UmsContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryUmsThreadInformation(PUMS_CONTEXT UmsThread, UMS_THREAD_INFO_CLASS UmsThreadInfoClass, PVOID UmsThreadInformation, ULONG UmsThreadInformationLength, PULONG ReturnLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetUmsThreadInformation(PUMS_CONTEXT UmsThread, UMS_THREAD_INFO_CLASS UmsThreadInfoClass, PVOID UmsThreadInformation, ULONG UmsThreadInformationLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteUmsThreadContext(PUMS_CONTEXT UmsThread); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateUmsThreadContext(PUMS_CONTEXT *lpUmsThread); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnterUmsSchedulingMode(PUMS_SCHEDULER_STARTUP_INFO SchedulerStartupInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUmsSystemThreadInformation(HANDLE ThreadHandle, PUMS_SYSTEM_THREAD_INFORMATION SystemThreadInfo); +#define PROCESS_DEP_ENABLE 0x00000001 +#define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x00000002 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessDEPPolicy (DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessDEPPolicy (HANDLE hProcess, LPDWORD lpFlags, PBOOL lpPermanent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RequestWakeupLatency (LATENCY_TIME latency); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsSystemResumeAutomatic (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetThreadIOPendingFlag (HANDLE hThread, PBOOL lpIOIsPending); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetThreadSelectorEntry (HANDLE hThread, DWORD dwSelector, LPLDT_ENTRY lpSelectorEntry); + __declspec (dllimport) EXECUTION_STATE __attribute__((__stdcall__)) SetThreadExecutionState (EXECUTION_STATE esFlags); +#define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1 +#define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileCompletionNotificationModes (HANDLE FileHandle, UCHAR Flags); +#define HasOverlappedIoCompleted(lpOverlapped) (((DWORD) (lpOverlapped)->Internal) != STATUS_PENDING) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileIoOverlappedRange (HANDLE FileHandle, PUCHAR OverlappedRangeStart, ULONG Length); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Wow64GetThreadContext (HANDLE hThread, PWOW64_CONTEXT lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Wow64SetThreadContext (HANDLE hThread, const WOW64_CONTEXT *lpContext); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) Wow64SuspendThread (HANDLE hThread); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DebugSetProcessKillOnExit (WINBOOL KillOnExit); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DebugBreakProcess (HANDLE Process); +#define CRITICAL_SECTION_NO_DEBUG_INFO RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WaitForMultipleObjects (DWORD nCount, const HANDLE *lpHandles, WINBOOL bWaitAll, DWORD dwMilliseconds); +#define HANDLE_FLAG_INHERIT 0x1 +#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x2 + typedef enum _DEP_SYSTEM_POLICY_TYPE { + DEPPolicyAlwaysOff = 0, + DEPPolicyAlwaysOn, + DEPPolicyOptIn, + DEPPolicyOptOut, + DEPTotalPolicyCount + } DEP_SYSTEM_POLICY_TYPE; +#define HINSTANCE_ERROR 32 +#define GET_TAPE_MEDIA_INFORMATION 0 +#define GET_TAPE_DRIVE_INFORMATION 1 +#define SET_TAPE_MEDIA_INFORMATION 0 +#define SET_TAPE_DRIVE_INFORMATION 1 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PulseEvent (HANDLE hEvent); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) GlobalDeleteAtom (ATOM nAtom); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitAtomTable (DWORD nSize); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) DeleteAtom (ATOM nAtom); + __declspec (dllimport) UINT __attribute__((__stdcall__)) SetHandleCount (UINT uNumber); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RequestDeviceWakeup (HANDLE hDevice); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelDeviceWakeupRequest (HANDLE hDevice); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDevicePowerState (HANDLE hDevice, WINBOOL *pfOn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMessageWaitingIndicator (HANDLE hMsgIndicator, ULONG ulMsgCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileShortNameA (HANDLE hFile, LPCSTR lpShortName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileShortNameW (HANDLE hFile, LPCWSTR lpShortName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) LoadModule (LPCSTR lpModuleName, LPVOID lpParameterBlock); + __declspec (dllimport) UINT __attribute__((__stdcall__)) WinExec (LPCSTR lpCmdLine, UINT uCmdShow); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetTapePosition (HANDLE hDevice, DWORD dwPositionMethod, DWORD dwPartition, DWORD dwOffsetLow, DWORD dwOffsetHigh, WINBOOL bImmediate); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTapePosition (HANDLE hDevice, DWORD dwPositionType, LPDWORD lpdwPartition, LPDWORD lpdwOffsetLow, LPDWORD lpdwOffsetHigh); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) PrepareTape (HANDLE hDevice, DWORD dwOperation, WINBOOL bImmediate); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) EraseTape (HANDLE hDevice, DWORD dwEraseType, WINBOOL bImmediate); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CreateTapePartition (HANDLE hDevice, DWORD dwPartitionMethod, DWORD dwCount, DWORD dwSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WriteTapemark (HANDLE hDevice, DWORD dwTapemarkType, DWORD dwTapemarkCount, WINBOOL bImmediate); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTapeStatus (HANDLE hDevice); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTapeParameters (HANDLE hDevice, DWORD dwOperation, LPDWORD lpdwSize, LPVOID lpTapeInformation); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetTapeParameters (HANDLE hDevice, DWORD dwOperation, LPVOID lpTapeInformation); + __declspec (dllimport) DEP_SYSTEM_POLICY_TYPE __attribute__((__stdcall__)) GetSystemDEPPolicy (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSystemRegistryQuota (PDWORD pdwQuotaAllowed, PDWORD pdwQuotaUsed); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FileTimeToDosDateTime (const FILETIME *lpFileTime, LPWORD lpFatDate, LPWORD lpFatTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DosDateTimeToFileTime (WORD wFatDate, WORD wFatTime, LPFILETIME lpFileTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSystemTimeAdjustment (DWORD dwTimeAdjustment, WINBOOL bTimeAdjustmentDisabled); +#define SetFileShortName __MINGW_NAME_AW(SetFileShortName) +#define SEM_FAILCRITICALERRORS 0x0001 +#define SEM_NOGPFAULTERRORBOX 0x0002 +#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004 +#define SEM_NOOPENFILEERRORBOX 0x8000 + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetThreadErrorMode (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadErrorMode (DWORD dwNewMode, LPDWORD lpOldMode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ClearCommBreak (HANDLE hFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ClearCommError (HANDLE hFile, LPDWORD lpErrors, LPCOMSTAT lpStat); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetupComm (HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EscapeCommFunction (HANDLE hFile, DWORD dwFunc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCommConfig (HANDLE hCommDev, LPCOMMCONFIG lpCC, LPDWORD lpdwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCommMask (HANDLE hFile, LPDWORD lpEvtMask); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCommProperties (HANDLE hFile, LPCOMMPROP lpCommProp); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCommModemStatus (HANDLE hFile, LPDWORD lpModemStat); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCommState (HANDLE hFile, LPDCB lpDCB); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCommTimeouts (HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PurgeComm (HANDLE hFile, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCommBreak (HANDLE hFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCommConfig (HANDLE hCommDev, LPCOMMCONFIG lpCC, DWORD dwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCommMask (HANDLE hFile, DWORD dwEvtMask); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCommState (HANDLE hFile, LPDCB lpDCB); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCommTimeouts (HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TransmitCommChar (HANDLE hFile, char cChar); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WaitCommEvent (HANDLE hFile, LPDWORD lpEvtMask, LPOVERLAPPED lpOverlapped); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessPriorityBoost (HANDLE hProcess, PBOOL pDisablePriorityBoost); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessPriorityBoost (HANDLE hProcess, WINBOOL bDisablePriorityBoost); + __declspec (dllimport) int __attribute__((__stdcall__)) MulDiv (int nNumber, int nNumerator, int nDenominator); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) FormatMessageA (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) FormatMessageW (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, va_list *Arguments); +#define FormatMessage __MINGW_NAME_AW(FormatMessage) +#define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200 +#define FORMAT_MESSAGE_FROM_STRING 0x00000400 +#define FORMAT_MESSAGE_FROM_HMODULE 0x00000800 +#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000 +#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000 +#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000ff +#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100 + typedef DWORD (__attribute__((__stdcall__)) *PFE_EXPORT_FUNC) (PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength); + typedef DWORD (__attribute__((__stdcall__)) *PFE_IMPORT_FUNC) (PBYTE pbData, PVOID pvCallbackContext, PULONG ulLength); +#define FILE_ENCRYPTABLE 0 +#define FILE_IS_ENCRYPTED 1 +#define FILE_SYSTEM_ATTR 2 +#define FILE_ROOT_DIR 3 +#define FILE_SYSTEM_DIR 4 +#define FILE_UNKNOWN 5 +#define FILE_SYSTEM_NOT_SUPPORT 6 +#define FILE_USER_DISALLOWED 7 +#define FILE_READ_ONLY 8 +#define FILE_DIR_DISALLOWED 9 +#define EFS_USE_RECOVERY_KEYS (0x1) +#define CREATE_FOR_IMPORT (1) +#define CREATE_FOR_DIR (2) +#define OVERWRITE_HIDDEN (4) +#define EFSRPC_SECURE_ONLY (8) +#define EFS_DROP_ALTERNATE_STREAMS (0x10) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeInfo (HANDLE hNamedPipe, LPDWORD lpFlags, LPDWORD lpOutBufferSize, LPDWORD lpInBufferSize, LPDWORD lpMaxInstances); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateMailslotA (LPCSTR lpName, DWORD nMaxMessageSize, DWORD lReadTimeout, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateMailslotW (LPCWSTR lpName, DWORD nMaxMessageSize, DWORD lReadTimeout, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMailslotInfo (HANDLE hMailslot, LPDWORD lpMaxMessageSize, LPDWORD lpNextSize, LPDWORD lpMessageCount, LPDWORD lpReadTimeout); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMailslotInfo (HANDLE hMailslot, DWORD lReadTimeout); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EncryptFileA (LPCSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EncryptFileW (LPCWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DecryptFileA (LPCSTR lpFileName, DWORD dwReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DecryptFileW (LPCWSTR lpFileName, DWORD dwReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FileEncryptionStatusA (LPCSTR lpFileName, LPDWORD lpStatus); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FileEncryptionStatusW (LPCWSTR lpFileName, LPDWORD lpStatus); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) OpenEncryptedFileRawA (LPCSTR lpFileName, ULONG ulFlags, PVOID *pvContext); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) OpenEncryptedFileRawW (LPCWSTR lpFileName, ULONG ulFlags, PVOID *pvContext); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) ReadEncryptedFileRaw (PFE_EXPORT_FUNC pfExportCallback, PVOID pvCallbackContext, PVOID pvContext); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WriteEncryptedFileRaw (PFE_IMPORT_FUNC pfImportCallback, PVOID pvCallbackContext, PVOID pvContext); + __declspec (dllimport) void __attribute__((__stdcall__)) CloseEncryptedFileRaw (PVOID pvContext); + __declspec (dllimport) int __attribute__((__stdcall__)) lstrcmpA (LPCSTR lpString1, LPCSTR lpString2); + __declspec (dllimport) int __attribute__((__stdcall__)) lstrcmpW (LPCWSTR lpString1, LPCWSTR lpString2); + __declspec (dllimport) int __attribute__((__stdcall__)) lstrcmpiA (LPCSTR lpString1, LPCSTR lpString2); + __declspec (dllimport) int __attribute__((__stdcall__)) lstrcmpiW (LPCWSTR lpString1, LPCWSTR lpString2); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) lstrcpynA (LPSTR lpString1, LPCSTR lpString2, int iMaxLength); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) lstrcpynW (LPWSTR lpString1, LPCWSTR lpString2, int iMaxLength); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) lstrcpyA (LPSTR lpString1, LPCSTR lpString2); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) lstrcpyW (LPWSTR lpString1, LPCWSTR lpString2); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) lstrcatA (LPSTR lpString1, LPCSTR lpString2); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) lstrcatW (LPWSTR lpString1, LPCWSTR lpString2); + __declspec (dllimport) int __attribute__((__stdcall__)) lstrlenA (LPCSTR lpString); + __declspec (dllimport) int __attribute__((__stdcall__)) lstrlenW (LPCWSTR lpString); + __declspec (dllimport) HFILE __attribute__((__stdcall__)) OpenFile (LPCSTR lpFileName, LPOFSTRUCT lpReOpenBuff, UINT uStyle); + __declspec (dllimport) HFILE __attribute__((__stdcall__)) _lopen (LPCSTR lpPathName, int iReadWrite); + __declspec (dllimport) HFILE __attribute__((__stdcall__)) _lcreat (LPCSTR lpPathName, int iAttribute); + __declspec (dllimport) UINT __attribute__((__stdcall__)) _lread (HFILE hFile, LPVOID lpBuffer, UINT uBytes); + __declspec (dllimport) UINT __attribute__((__stdcall__)) _lwrite (HFILE hFile, LPCCH lpBuffer, UINT uBytes); + __declspec (dllimport) long __attribute__((__stdcall__)) _hread (HFILE hFile, LPVOID lpBuffer, long lBytes); + __declspec (dllimport) long __attribute__((__stdcall__)) _hwrite (HFILE hFile, LPCCH lpBuffer, long lBytes); + __declspec (dllimport) HFILE __attribute__((__stdcall__)) _lclose (HFILE hFile); + __declspec (dllimport) LONG __attribute__((__stdcall__)) _llseek (HFILE hFile, LONG lOffset, int iOrigin); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsTextUnicode (const void *lpv, int iSize, LPINT lpiResult); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SignalObjectAndWait (HANDLE hObjectToSignal, HANDLE hObjectToWaitOn, DWORD dwMilliseconds, WINBOOL bAlertable); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BackupRead (HANDLE hFile, LPBYTE lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, WINBOOL bAbort, WINBOOL bProcessSecurity, LPVOID *lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BackupSeek (HANDLE hFile, DWORD dwLowBytesToSeek, DWORD dwHighBytesToSeek, LPDWORD lpdwLowByteSeeked, LPDWORD lpdwHighByteSeeked, LPVOID *lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BackupWrite (HANDLE hFile, LPBYTE lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, WINBOOL bAbort, WINBOOL bProcessSecurity, LPVOID *lpContext); +#define CreateMailslot __MINGW_NAME_AW(CreateMailslot) +#define EncryptFile __MINGW_NAME_AW(EncryptFile) +#define DecryptFile __MINGW_NAME_AW(DecryptFile) +#define FileEncryptionStatus __MINGW_NAME_AW(FileEncryptionStatus) +#define OpenEncryptedFileRaw __MINGW_NAME_AW(OpenEncryptedFileRaw) +#define lstrcmp __MINGW_NAME_AW(lstrcmp) +#define lstrcmpi __MINGW_NAME_AW(lstrcmpi) +#define lstrcpyn __MINGW_NAME_AW(lstrcpyn) +#define lstrcpy __MINGW_NAME_AW(lstrcpy) +#define lstrcat __MINGW_NAME_AW(lstrcat) +#define lstrlen __MINGW_NAME_AW(lstrlen) + typedef struct _WIN32_STREAM_ID { + DWORD dwStreamId; + DWORD dwStreamAttributes; + LARGE_INTEGER Size; + DWORD dwStreamNameSize; + WCHAR cStreamName[1]; + } WIN32_STREAM_ID,*LPWIN32_STREAM_ID; +#define BACKUP_INVALID 0x00000000 +#define BACKUP_DATA 0x00000001 +#define BACKUP_EA_DATA 0x00000002 +#define BACKUP_SECURITY_DATA 0x00000003 +#define BACKUP_ALTERNATE_DATA 0x00000004 +#define BACKUP_LINK 0x00000005 +#define BACKUP_PROPERTY_DATA 0x00000006 +#define BACKUP_OBJECT_ID 0x00000007 +#define BACKUP_REPARSE_DATA 0x00000008 +#define BACKUP_SPARSE_BLOCK 0x00000009 +#define BACKUP_TXFS_DATA 0x0000000a +#define BACKUP_GHOSTED_FILE_EXTENTS 0x0000000b +#define STREAM_NORMAL_ATTRIBUTE 0x00000000 +#define STREAM_MODIFIED_WHEN_READ 0x00000001 +#define STREAM_CONTAINS_SECURITY 0x00000002 +#define STREAM_CONTAINS_PROPERTIES 0x00000004 +#define STREAM_SPARSE_ATTRIBUTE 0x00000008 +#define STREAM_CONTAINS_GHOSTED_FILE_EXTENTS 0x00000010 +#define STARTF_USESHOWWINDOW 0x00000001 +#define STARTF_USESIZE 0x00000002 +#define STARTF_USEPOSITION 0x00000004 +#define STARTF_USECOUNTCHARS 0x00000008 +#define STARTF_USEFILLATTRIBUTE 0x00000010 +#define STARTF_RUNFULLSCREEN 0x00000020 +#define STARTF_FORCEONFEEDBACK 0x00000040 +#define STARTF_FORCEOFFFEEDBACK 0x00000080 +#define STARTF_USESTDHANDLES 0x00000100 +#define STARTF_USEHOTKEY 0x00000200 +#define STARTF_TITLEISLINKNAME 0x00000800 +#define STARTF_TITLEISAPPID 0x00001000 +#define STARTF_PREVENTPINNING 0x00002000 +#define STARTF_UNTRUSTEDSOURCE 0x00008000 + typedef struct _STARTUPINFOEXA { + STARTUPINFOA StartupInfo; + LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; + } STARTUPINFOEXA,*LPSTARTUPINFOEXA; + typedef struct _STARTUPINFOEXW { + STARTUPINFOW StartupInfo; + LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; + } STARTUPINFOEXW,*LPSTARTUPINFOEXW; + typedef STARTUPINFOEXA STARTUPINFOEX; + typedef LPSTARTUPINFOEXA LPSTARTUPINFOEX; +#define SHUTDOWN_NORETRY 0x1 + WINBOOL __attribute__((__stdcall__)) GetSystemTimes (LPFILETIME lpIdleTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeInfo (HANDLE hNamedPipe, LPDWORD lpFlags, LPDWORD lpOutBufferSize, LPDWORD lpInBufferSize, LPDWORD lpMaxInstances); +#define CreateSemaphore __MINGW_NAME_AW(CreateSemaphore) + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateSemaphoreW (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerW (LPSECURITY_ATTRIBUTES lpTimerAttributes, WINBOOL bManualReset, LPCWSTR lpTimerName); +#define LoadLibrary __MINGW_NAME_AW(LoadLibrary) + __declspec (dllimport) HMODULE __attribute__((__stdcall__)) LoadLibraryW (LPCWSTR lpLibFileName); + __declspec (dllimport) HMODULE __attribute__((__stdcall__)) LoadLibraryA (LPCSTR lpLibFileName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenMutexA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenSemaphoreA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerA (LPSECURITY_ATTRIBUTES lpTimerAttributes, WINBOOL bManualReset, LPCSTR lpTimerName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenWaitableTimerA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpTimerName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileMappingA (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerExA (LPSECURITY_ATTRIBUTES lpTimerAttributes, LPCSTR lpTimerName, DWORD dwFlags, DWORD dwDesiredAccess); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileMappingNumaA (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName, DWORD nndPreferred); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenFileMappingA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLogicalDriveStringsA (DWORD nBufferLength, LPSTR lpBuffer); +#define OpenMutex OpenMutexA +#define OpenSemaphore OpenSemaphoreA +#define OpenWaitableTimer OpenWaitableTimerA +#define CreateFileMapping CreateFileMappingA +#define OpenFileMapping OpenFileMappingA +#define GetLogicalDriveStrings GetLogicalDriveStringsA +#define CreateWaitableTimer __MINGW_NAME_AW(CreateWaitableTimer) +#define CreateWaitableTimerEx CreateWaitableTimerExA +#define CreateFileMappingNuma CreateFileMappingNumaA + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateSemaphoreA (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateSemaphoreExA (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess); +#define CreateSemaphoreEx CreateSemaphoreExA +#define PROTECTION_LEVEL_WINTCB_LIGHT 0x00000000 +#define PROTECTION_LEVEL_WINDOWS 0x00000001 +#define PROTECTION_LEVEL_WINDOWS_LIGHT 0x00000002 +#define PROTECTION_LEVEL_ANTIMALWARE_LIGHT 0x00000003 +#define PROTECTION_LEVEL_LSA_LIGHT 0x00000004 +#define PROTECTION_LEVEL_WINTCB 0x00000005 +#define PROTECTION_LEVEL_CODEGEN_LIGHT 0x00000006 +#define PROTECTION_LEVEL_AUTHENTICODE 0x00000007 +#define PROTECTION_LEVEL_PPL_APP 0x00000008 +#define PROTECTION_LEVEL_SAME 0xffffffff +#define PROTECTION_LEVEL_NONE 0xfffffffe +#define PROCESS_NAME_NATIVE 0x00000001 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryFullProcessImageNameA (HANDLE hProcess, DWORD dwFlags, LPSTR lpExeName, PDWORD lpdwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryFullProcessImageNameW (HANDLE hProcess, DWORD dwFlags, LPWSTR lpExeName, PDWORD lpdwSize); +#define QueryFullProcessImageName __MINGW_NAME_AW(QueryFullProcessImageName) +#define PROC_THREAD_ATTRIBUTE_NUMBER 0x0000ffff +#define PROC_THREAD_ATTRIBUTE_THREAD 0x00010000 +#define PROC_THREAD_ATTRIBUTE_INPUT 0x00020000 +#define PROC_THREAD_ATTRIBUTE_ADDITIVE 0x00040000 + typedef enum _PROC_THREAD_ATTRIBUTE_NUM { + ProcThreadAttributeParentProcess = 0, + ProcThreadAttributeHandleList = 2 + ,ProcThreadAttributeProtectionLevel = 11 + } PROC_THREAD_ATTRIBUTE_NUM; +#define ProcThreadAttributeValue(Number,Thread,Input,Additive) (((Number) &PROC_THREAD_ATTRIBUTE_NUMBER) | ((Thread != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | ((Input != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | ((Additive != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0)) +#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS ProcThreadAttributeValue (ProcThreadAttributeParentProcess, FALSE, TRUE, FALSE) +#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST ProcThreadAttributeValue (ProcThreadAttributeHandleList, FALSE, TRUE, FALSE) +#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL ProcThreadAttributeValue (ProcThreadAttributeProtectionLevel, FALSE, TRUE, FALSE) +#define ATOM_FLAG_GLOBAL 0x2 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessShutdownParameters (LPDWORD lpdwLevel, LPDWORD lpdwFlags); + __declspec (dllimport) void __attribute__((__stdcall__)) FatalAppExitA (UINT uAction, LPCSTR lpMessageText); + __declspec (dllimport) void __attribute__((__stdcall__)) FatalAppExitW (UINT uAction, LPCWSTR lpMessageText); + __declspec (dllimport) void __attribute__((__stdcall__)) GetStartupInfoA (LPSTARTUPINFOA lpStartupInfo); + __declspec (dllimport) HRSRC __attribute__((__stdcall__)) FindResourceA (HMODULE hModule, LPCSTR lpName, LPCSTR lpType); + __declspec (dllimport) HRSRC __attribute__((__stdcall__)) FindResourceExA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesA (HMODULE hModule, ENUMRESTYPEPROCA lpEnumFunc, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesW (HMODULE hModule, ENUMRESTYPEPROCW lpEnumFunc, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesA (HMODULE hModule, LPCSTR lpType, ENUMRESNAMEPROCA lpEnumFunc, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesW (HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, ENUMRESLANGPROCA lpEnumFunc, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, ENUMRESLANGPROCW lpEnumFunc, LONG_PTR lParam); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) BeginUpdateResourceA (LPCSTR pFileName, WINBOOL bDeleteExistingResources); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) BeginUpdateResourceW (LPCWSTR pFileName, WINBOOL bDeleteExistingResources); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateResourceA (HANDLE hUpdate, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cb); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateResourceW (HANDLE hUpdate, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cb); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndUpdateResourceA (HANDLE hUpdate, WINBOOL fDiscard); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndUpdateResourceW (HANDLE hUpdate, WINBOOL fDiscard); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) GlobalAddAtomA (LPCSTR lpString); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) GlobalAddAtomW (LPCWSTR lpString); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) GlobalAddAtomExA (LPCSTR lpString, DWORD Flags); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) GlobalAddAtomExW (LPCWSTR lpString, DWORD Flags); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) GlobalFindAtomA (LPCSTR lpString); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) GlobalFindAtomW (LPCWSTR lpString); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GlobalGetAtomNameA (ATOM nAtom, LPSTR lpBuffer, int nSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GlobalGetAtomNameW (ATOM nAtom, LPWSTR lpBuffer, int nSize); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) AddAtomA (LPCSTR lpString); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) AddAtomW (LPCWSTR lpString); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) FindAtomA (LPCSTR lpString); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) FindAtomW (LPCWSTR lpString); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetAtomNameA (ATOM nAtom, LPSTR lpBuffer, int nSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetAtomNameW (ATOM nAtom, LPWSTR lpBuffer, int nSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetProfileIntA (LPCSTR lpAppName, LPCSTR lpKeyName, INT nDefault); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetProfileIntW (LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault, LPWSTR lpReturnedString, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpString); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProfileSectionA (LPCSTR lpAppName, LPSTR lpReturnedString, DWORD nSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetProfileSectionW (LPCWSTR lpAppName, LPWSTR lpReturnedString, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteProfileSectionA (LPCSTR lpAppName, LPCSTR lpString); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteProfileSectionW (LPCWSTR lpAppName, LPCWSTR lpString); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetPrivateProfileIntA (LPCSTR lpAppName, LPCSTR lpKeyName, INT nDefault, LPCSTR lpFileName); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetPrivateProfileIntW (LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault, LPCWSTR lpFileName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetPrivateProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetPrivateProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault, LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpString, LPCWSTR lpFileName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionA (LPCSTR lpAppName, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionW (LPCWSTR lpAppName, LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileSectionA (LPCSTR lpAppName, LPCSTR lpString, LPCSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileSectionW (LPCWSTR lpAppName, LPCWSTR lpString, LPCWSTR lpFileName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionNamesA (LPSTR lpszReturnBuffer, DWORD nSize, LPCSTR lpFileName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionNamesW (LPWSTR lpszReturnBuffer, DWORD nSize, LPCWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetPrivateProfileStructA (LPCSTR lpszSection, LPCSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCSTR szFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetPrivateProfileStructW (LPCWSTR lpszSection, LPCWSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCWSTR szFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStructA (LPCSTR lpszSection, LPCSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCSTR szFile); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStructW (LPCWSTR lpszSection, LPCWSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCWSTR szFile); +#define GetStartupInfo GetStartupInfoA +#define FindResourceEx FindResourceExA +#define FatalAppExit __MINGW_NAME_AW(FatalAppExit) +#define GetFirmwareEnvironmentVariable __MINGW_NAME_AW(GetFirmwareEnvironmentVariable) +#define SetFirmwareEnvironmentVariable __MINGW_NAME_AW(SetFirmwareEnvironmentVariable) +#define EnumResourceTypes __MINGW_NAME_AW(EnumResourceTypes) +#define EnumResourceNames __MINGW_NAME_AW(EnumResourceNames) +#define EnumResourceLanguages __MINGW_NAME_AW(EnumResourceLanguages) +#define BeginUpdateResource __MINGW_NAME_AW(BeginUpdateResource) +#define UpdateResource __MINGW_NAME_AW(UpdateResource) +#define EndUpdateResource __MINGW_NAME_AW(EndUpdateResource) +#define GlobalAddAtom __MINGW_NAME_AW(GlobalAddAtom) +#define GlobalAddAtomEx __MINGW_NAME_AW(GlobalAddAtomEx) +#define GlobalFindAtom __MINGW_NAME_AW(GlobalFindAtom) +#define GlobalGetAtomName __MINGW_NAME_AW(GlobalGetAtomName) +#define AddAtom __MINGW_NAME_AW(AddAtom) +#define FindAtom __MINGW_NAME_AW(FindAtom) +#define GetAtomName __MINGW_NAME_AW(GetAtomName) +#define GetProfileInt __MINGW_NAME_AW(GetProfileInt) +#define GetProfileString __MINGW_NAME_AW(GetProfileString) +#define WriteProfileString __MINGW_NAME_AW(WriteProfileString) +#define GetProfileSection __MINGW_NAME_AW(GetProfileSection) +#define WriteProfileSection __MINGW_NAME_AW(WriteProfileSection) +#define GetPrivateProfileInt __MINGW_NAME_AW(GetPrivateProfileInt) +#define GetPrivateProfileString __MINGW_NAME_AW(GetPrivateProfileString) +#define WritePrivateProfileString __MINGW_NAME_AW(WritePrivateProfileString) +#define GetPrivateProfileSection __MINGW_NAME_AW(GetPrivateProfileSection) +#define WritePrivateProfileSection __MINGW_NAME_AW(WritePrivateProfileSection) +#define GetPrivateProfileSectionNames __MINGW_NAME_AW(GetPrivateProfileSectionNames) +#define GetPrivateProfileStruct __MINGW_NAME_AW(GetPrivateProfileStruct) +#define WritePrivateProfileStruct __MINGW_NAME_AW(WritePrivateProfileStruct) + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryA (LPSTR lpBuffer, UINT uSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryW (LPWSTR lpBuffer, UINT uSize); +#define GetSystemWow64Directory __MINGW_NAME_AW(GetSystemWow64Directory) + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) Wow64EnableWow64FsRedirection (BOOLEAN Wow64FsEnableRedirection); + typedef UINT (__attribute__((__stdcall__)) *PGET_SYSTEM_WOW64_DIRECTORY_A) (LPSTR lpBuffer, UINT uSize); + typedef UINT (__attribute__((__stdcall__)) *PGET_SYSTEM_WOW64_DIRECTORY_W) (LPWSTR lpBuffer, UINT uSize); +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A "GetSystemWow64DirectoryA" +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W L"GetSystemWow64DirectoryA" +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T TEXT ("GetSystemWow64DirectoryA") +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A "GetSystemWow64DirectoryW" +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W L"GetSystemWow64DirectoryW" +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T TEXT ("GetSystemWow64DirectoryW") +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A __MINGW_NAME_UAW_EXT(GET_SYSTEM_WOW64_DIRECTORY_NAME,A) +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W __MINGW_NAME_UAW_EXT(GET_SYSTEM_WOW64_DIRECTORY_NAME,W) +#define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T __MINGW_NAME_UAW_EXT(GET_SYSTEM_WOW64_DIRECTORY_NAME,T) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetDllDirectoryA (DWORD nBufferLength, LPSTR lpBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetDllDirectoryW (DWORD nBufferLength, LPWSTR lpBuffer); +#define SetDllDirectory __MINGW_NAME_AW(SetDllDirectory) +#define GetDllDirectory __MINGW_NAME_AW(GetDllDirectory) +#define BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE 0x1 +#define BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE 0x10000 +#define BASE_SEARCH_PATH_PERMANENT 0x8000 +#define BASE_SEARCH_PATH_INVALID_FLAGS ~0x18001 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSearchPathMode (DWORD Flags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFirmwareEnvironmentVariableA (LPCSTR lpName, LPCSTR lpGuid, PVOID pBuffer, DWORD nSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFirmwareEnvironmentVariableW (LPCWSTR lpName, LPCWSTR lpGuid, PVOID pBuffer, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFirmwareEnvironmentVariableA (LPCSTR lpName, LPCSTR lpGuid, PVOID pValue, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFirmwareEnvironmentVariableW (LPCWSTR lpName, LPCWSTR lpGuid, PVOID pValue, DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDllDirectoryA (LPCSTR lpPathName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDllDirectoryW (LPCWSTR lpPathName); + __declspec (dllimport) HRSRC __attribute__((__stdcall__)) FindResourceW (HMODULE hModule, LPCWSTR lpName, LPCWSTR lpType); +#define FindResource __MINGW_NAME_AW(FindResource) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateDirectoryExA (LPCSTR lpTemplateDirectory, LPCSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateDirectoryExW (LPCWSTR lpTemplateDirectory, LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes); +#define CreateDirectoryEx __MINGW_NAME_AW(CreateDirectoryEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateDirectoryTransactedA (LPCSTR lpTemplateDirectory, LPCSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateDirectoryTransactedW (LPCWSTR lpTemplateDirectory, LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryTransactedA (LPCSTR lpPathName, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryTransactedW (LPCWSTR lpPathName, HANDLE hTransaction); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFullPathNameTransactedA (LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart, HANDLE hTransaction); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFullPathNameTransactedW (LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart, HANDLE hTransaction); +#define CreateDirectoryTransacted __MINGW_NAME_AW(CreateDirectoryTransacted) +#define RemoveDirectoryTransacted __MINGW_NAME_AW(RemoveDirectoryTransacted) +#define GetFullPathNameTransacted __MINGW_NAME_AW(GetFullPathNameTransacted) +#define DDD_RAW_TARGET_PATH 0x00000001 +#define DDD_REMOVE_DEFINITION 0x00000002 +#define DDD_EXACT_MATCH_ON_REMOVE 0x00000004 +#define DDD_NO_BROADCAST_SYSTEM 0x00000008 +#define DDD_LUID_BROADCAST_DRIVE 0x00000010 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DefineDosDeviceA (DWORD dwFlags, LPCSTR lpDeviceName, LPCSTR lpTargetPath); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) QueryDosDeviceA (LPCSTR lpDeviceName, LPSTR lpTargetPath, DWORD ucchMax); +#define DefineDosDevice DefineDosDeviceA +#define QueryDosDevice QueryDosDeviceA +#define EXPAND_LOCAL_DRIVES + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileTransactedA (LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile, HANDLE hTransaction, PUSHORT pusMiniVersion, PVOID lpExtendedParameter); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateFileTransactedW (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile, HANDLE hTransaction, PUSHORT pusMiniVersion, PVOID lpExtendedParameter); +#define CreateFileTransacted __MINGW_NAME_AW(CreateFileTransacted) + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) ReOpenFile (HANDLE hOriginalFile, DWORD dwDesiredAccess, DWORD dwShareMode, DWORD dwFlagsAndAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileAttributesTransactedA (LPCSTR lpFileName, DWORD dwFileAttributes, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileAttributesTransactedW (LPCWSTR lpFileName, DWORD dwFileAttributes, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileAttributesTransactedA (LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileAttributesTransactedW (LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation, HANDLE hTransaction); +#define SetFileAttributesTransacted __MINGW_NAME_AW(SetFileAttributesTransacted) +#define GetFileAttributesTransacted __MINGW_NAME_AW(GetFileAttributesTransacted) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeA (LPCSTR lpFileName, LPDWORD lpFileSizeHigh); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeW (LPCWSTR lpFileName, LPDWORD lpFileSizeHigh); +#define GetCompressedFileSize __MINGW_NAME_AW(GetCompressedFileSize) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeTransactedA (LPCSTR lpFileName, LPDWORD lpFileSizeHigh, HANDLE hTransaction); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeTransactedW (LPCWSTR lpFileName, LPDWORD lpFileSizeHigh, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteFileTransactedA (LPCSTR lpFileName, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteFileTransactedW (LPCWSTR lpFileName, HANDLE hTransaction); +#define DeleteFileTransacted __MINGW_NAME_AW(DeleteFileTransacted) +#define GetCompressedFileSizeTransacted __MINGW_NAME_AW(GetCompressedFileSizeTransacted) + typedef DWORD (__attribute__((__stdcall__)) *LPPROGRESS_ROUTINE) (LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyFileExA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags); +#define CopyFileEx __MINGW_NAME_AW(CopyFileEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckNameLegalDOS8Dot3A (LPCSTR lpName, LPSTR lpOemName, DWORD OemNameSize, PBOOL pbNameContainsSpaces, PBOOL pbNameLegal); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckNameLegalDOS8Dot3W (LPCWSTR lpName, LPSTR lpOemName, DWORD OemNameSize, PBOOL pbNameContainsSpaces, PBOOL pbNameLegal); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileTransactedA (LPCSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags, HANDLE hTransaction); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileTransactedW (LPCWSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyFileTransactedA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyFileTransactedW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags, HANDLE hTransaction); +#define FindFirstFileTransacted __MINGW_NAME_AW(FindFirstFileTransacted) +#define CopyFileTransacted __MINGW_NAME_AW(CopyFileTransacted) +#define CheckNameLegalDOS8Dot3 __MINGW_NAME_AW(CheckNameLegalDOS8Dot3) +#define CopyFile __MINGW_NAME_AW(CopyFile) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyFileA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, WINBOOL bFailIfExists); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyFileW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, WINBOOL bFailIfExists); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName); +#define MoveFile __MINGW_NAME_AW(MoveFile) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileExA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, DWORD dwFlags); +#define MoveFileEx __MINGW_NAME_AW(MoveFileEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileWithProgressA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileWithProgressW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags); +#define MoveFileWithProgress __MINGW_NAME_AW(MoveFileWithProgress) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileTransactedA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveFileTransactedW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags, HANDLE hTransaction); +#define MoveFileTransacted __MINGW_NAME_AW(MoveFileTransacted) +#define MOVEFILE_REPLACE_EXISTING 0x00000001 +#define MOVEFILE_COPY_ALLOWED 0x00000002 +#define MOVEFILE_DELAY_UNTIL_REBOOT 0x00000004 +#define MOVEFILE_WRITE_THROUGH 0x00000008 +#define MOVEFILE_CREATE_HARDLINK 0x00000010 +#define MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x00000020 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientComputerNameA (HANDLE Pipe, LPSTR ClientComputerName, ULONG ClientComputerNameLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WaitNamedPipeA (LPCSTR lpNamedPipeName, DWORD nTimeOut); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CallNamedPipeA (LPCSTR lpNamedPipeName, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesRead, DWORD nTimeOut); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CallNamedPipeW (LPCWSTR lpNamedPipeName, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesRead, DWORD nTimeOut); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateNamedPipeA (LPCSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes); +#define WaitNamedPipe WaitNamedPipeA +#define CreateNamedPipe CreateNamedPipeA +#define CallNamedPipe __MINGW_NAME_AW(CallNamedPipe) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeHandleStateA (HANDLE hNamedPipe, LPDWORD lpState, LPDWORD lpCurInstances, LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout, LPSTR lpUserName, DWORD nMaxUserNameSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeHandleStateW (HANDLE hNamedPipe, LPDWORD lpState, LPDWORD lpCurInstances, LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout, LPWSTR lpUserName, DWORD nMaxUserNameSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReplaceFileA (LPCSTR lpReplacedFileName, LPCSTR lpReplacementFileName, LPCSTR lpBackupFileName, DWORD dwReplaceFlags, LPVOID lpExclude, LPVOID lpReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReplaceFileW (LPCWSTR lpReplacedFileName, LPCWSTR lpReplacementFileName, LPCWSTR lpBackupFileName, DWORD dwReplaceFlags, LPVOID lpExclude, LPVOID lpReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateHardLinkW (LPCWSTR lpFileName, LPCWSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateHardLinkA (LPCSTR lpFileName, LPCSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); +#define ReplaceFile __MINGW_NAME_AW(ReplaceFile) +#define CreateHardLink __MINGW_NAME_AW(CreateHardLink) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateHardLinkTransactedA (LPCSTR lpFileName, LPCSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateHardLinkTransactedW (LPCWSTR lpFileName, LPCWSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction); +#define CreateHardLinkTransacted __MINGW_NAME_AW(CreateHardLinkTransacted) + typedef enum _STREAM_INFO_LEVELS { + FindStreamInfoStandard, + FindStreamInfoMaxInfoLevel + } STREAM_INFO_LEVELS; + typedef struct _WIN32_FIND_STREAM_DATA { + LARGE_INTEGER StreamSize; + WCHAR cStreamName[260 + 36]; + } WIN32_FIND_STREAM_DATA,*PWIN32_FIND_STREAM_DATA; + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstStreamW (LPCWSTR lpFileName, STREAM_INFO_LEVELS InfoLevel, LPVOID lpFindStreamData, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextStreamW (HANDLE hFindStream, LPVOID lpFindStreamData); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstStreamTransactedW (LPCWSTR lpFileName, STREAM_INFO_LEVELS InfoLevel, LPVOID lpFindStreamData, DWORD dwFlags, HANDLE hTransaction); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileNameW (LPCWSTR lpFileName, DWORD dwFlags, LPDWORD StringLength, PWSTR LinkName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextFileNameW (HANDLE hFindStream, LPDWORD StringLength, PWSTR LinkName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstFileNameTransactedW (LPCWSTR lpFileName, DWORD dwFlags, LPDWORD StringLength, PWSTR LinkName, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientProcessId (HANDLE Pipe, PULONG ClientProcessId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientSessionId (HANDLE Pipe, PULONG ClientSessionId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeServerProcessId (HANDLE Pipe, PULONG ServerProcessId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNamedPipeServerSessionId (HANDLE Pipe, PULONG ServerSessionId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileBandwidthReservation (HANDLE hFile, DWORD nPeriodMilliseconds, DWORD nBytesPerPeriod, WINBOOL bDiscardable, LPDWORD lpTransferSize, LPDWORD lpNumOutstandingRequests); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileBandwidthReservation (HANDLE hFile, LPDWORD lpPeriodMilliseconds, LPDWORD lpBytesPerPeriod, LPBOOL pDiscardable, LPDWORD lpTransferSize, LPDWORD lpNumOutstandingRequests); + __declspec (dllimport) void __attribute__((__stdcall__)) SetFileApisToOEM (void); + __declspec (dllimport) void __attribute__((__stdcall__)) SetFileApisToANSI (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AreFileApisANSI (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ClearEventLogA (HANDLE hEventLog, LPCSTR lpBackupFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ClearEventLogW (HANDLE hEventLog, LPCWSTR lpBackupFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BackupEventLogA (HANDLE hEventLog, LPCSTR lpBackupFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BackupEventLogW (HANDLE hEventLog, LPCWSTR lpBackupFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseEventLog (HANDLE hEventLog); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeregisterEventSource (HANDLE hEventLog); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) NotifyChangeEventLog (HANDLE hEventLog, HANDLE hEvent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumberOfEventLogRecords (HANDLE hEventLog, PDWORD NumberOfRecords); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetOldestEventLogRecord (HANDLE hEventLog, PDWORD OldestRecord); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenEventLogA (LPCSTR lpUNCServerName, LPCSTR lpSourceName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenEventLogW (LPCWSTR lpUNCServerName, LPCWSTR lpSourceName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) RegisterEventSourceA (LPCSTR lpUNCServerName, LPCSTR lpSourceName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) RegisterEventSourceW (LPCWSTR lpUNCServerName, LPCWSTR lpSourceName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenBackupEventLogA (LPCSTR lpUNCServerName, LPCSTR lpFileName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenBackupEventLogW (LPCWSTR lpUNCServerName, LPCWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadEventLogA (HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadEventLogW (HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReportEventA (HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID, PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCSTR *lpStrings, LPVOID lpRawData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReportEventW (HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID, PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCWSTR *lpStrings, LPVOID lpRawData); +#define GetVolumeInformation GetVolumeInformationA +#define GetNamedPipeHandleState __MINGW_NAME_AW(GetNamedPipeHandleState) +#define ClearEventLog __MINGW_NAME_AW(ClearEventLog) +#define BackupEventLog __MINGW_NAME_AW(BackupEventLog) +#define OpenEventLog __MINGW_NAME_AW(OpenEventLog) +#define RegisterEventSource __MINGW_NAME_AW(RegisterEventSource) +#define OpenBackupEventLog __MINGW_NAME_AW(OpenBackupEventLog) +#define ReadEventLog __MINGW_NAME_AW(ReadEventLog) +#define ReportEvent __MINGW_NAME_AW(ReportEvent) +#define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameA +#define EVENTLOG_FULL_INFO 0 + typedef struct _EVENTLOG_FULL_INFORMATION { + DWORD dwFull; + } EVENTLOG_FULL_INFORMATION,*LPEVENTLOG_FULL_INFORMATION; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetEventLogInformation (HANDLE hEventLog, DWORD dwInfoLevel, LPVOID lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumeInformationA (LPCSTR lpRootPathName, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadDirectoryChangesW (HANDLE hDirectory, LPVOID lpBuffer, DWORD nBufferLength, WINBOOL bWatchSubtree, DWORD dwNotifyFilter, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPSTR ObjectTypeName, LPSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmByHandleA (LPCSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectOpenAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPSTR ObjectTypeName, LPSTR ObjectName, PSECURITY_DESCRIPTOR pSecurityDescriptor, HANDLE ClientToken, DWORD DesiredAccess, DWORD GrantedAccess, PPRIVILEGE_SET Privileges, WINBOOL ObjectCreation, WINBOOL AccessGranted, LPBOOL GenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectPrivilegeAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, DWORD DesiredAccess, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectCloseAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ObjectDeleteAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PrivilegedServiceAuditAlarmA (LPCSTR SubsystemName, LPCSTR ServiceName, HANDLE ClientToken, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetFileSecurityA (LPCSTR lpFileName, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileSecurityA (LPCSTR lpFileName, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsBadReadPtr (const void *lp, UINT_PTR ucb); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsBadWritePtr (LPVOID lp, UINT_PTR ucb); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsBadHugeReadPtr (const void *lp, UINT_PTR ucb); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsBadHugeWritePtr (LPVOID lp, UINT_PTR ucb); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsBadCodePtr (FARPROC lpfn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsBadStringPtrA (LPCSTR lpsz, UINT_PTR ucchMax); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsBadStringPtrW (LPCWSTR lpsz, UINT_PTR ucchMax); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) MapViewOfFileExNuma (HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap, LPVOID lpBaseAddress, DWORD nndPreferred); +#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA +#define AccessCheckByTypeAndAuditAlarm AccessCheckByTypeAndAuditAlarmA +#define AccessCheckByTypeResultListAndAuditAlarm AccessCheckByTypeResultListAndAuditAlarmA +#define AccessCheckByTypeResultListAndAuditAlarmByHandle AccessCheckByTypeResultListAndAuditAlarmByHandleA +#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA +#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA +#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA +#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA +#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA +#define SetFileSecurity SetFileSecurityA +#define GetFileSecurity GetFileSecurityA +#define IsBadStringPtr __MINGW_NAME_AW(IsBadStringPtr) +#define LookupAccountNameLocalA(n,s,cs,d,cd,u) LookupAccountNameA (NULL, n, s, cs, d, cd, u) +#define LookupAccountNameLocalW(n,s,cs,d,cd,u) LookupAccountNameW (NULL, n, s, cs, d, cd, u) +#define LookupAccountNameLocal(n,s,cs,d,cd,u) __MINGW_NAME_AW(LookupAccountName) (NULL, n, s, cs, d, cd, u) +#define LookupAccountSidLocalA(s,n,cn,d,cd,u) LookupAccountSidA (NULL, s, n, cn, d, cd, u) +#define LookupAccountSidLocalW(s,n,cn,d,cd,u) LookupAccountSidW (NULL, s, n, cn, d, cd, u) +#define LookupAccountSidLocal(s,n,cn,d,cd,u) __MINGW_NAME_AW(LookupAccountSid) (NULL, s, n, cn, d, cd, u) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BuildCommDCBA (LPCSTR lpDef, LPDCB lpDCB); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BuildCommDCBW (LPCWSTR lpDef, LPDCB lpDCB); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BuildCommDCBAndTimeoutsA (LPCSTR lpDef, LPDCB lpDCB, LPCOMMTIMEOUTS lpCommTimeouts); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BuildCommDCBAndTimeoutsW (LPCWSTR lpDef, LPDCB lpDCB, LPCOMMTIMEOUTS lpCommTimeouts); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CommConfigDialogA (LPCSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CommConfigDialogW (LPCWSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDefaultCommConfigA (LPCSTR lpszName, LPCOMMCONFIG lpCC, LPDWORD lpdwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDefaultCommConfigW (LPCWSTR lpszName, LPCOMMCONFIG lpCC, LPDWORD lpdwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDefaultCommConfigA (LPCSTR lpszName, LPCOMMCONFIG lpCC, DWORD dwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDefaultCommConfigW (LPCWSTR lpszName, LPCOMMCONFIG lpCC, DWORD dwSize); +#define BuildCommDCB __MINGW_NAME_AW(BuildCommDCB) +#define BuildCommDCBAndTimeouts __MINGW_NAME_AW(BuildCommDCBAndTimeouts) +#define CommConfigDialog __MINGW_NAME_AW(CommConfigDialog) +#define GetDefaultCommConfig __MINGW_NAME_AW(GetDefaultCommConfig) +#define SetDefaultCommConfig __MINGW_NAME_AW(SetDefaultCommConfig) +#define MAX_COMPUTERNAME_LENGTH 15 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetComputerNameA (LPCSTR lpComputerName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetComputerNameW (LPCWSTR lpComputerName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetComputerNameExA (COMPUTER_NAME_FORMAT NameType, LPCTSTR lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DnsHostnameToComputerNameA (LPCSTR Hostname, LPSTR ComputerName, LPDWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DnsHostnameToComputerNameW (LPCWSTR Hostname, LPWSTR ComputerName, LPDWORD nSize); +#define SetComputerNameEx SetComputerNameExA +#define SetComputerName __MINGW_NAME_AW(SetComputerName) +#define DnsHostnameToComputerName __MINGW_NAME_AW(DnsHostnameToComputerName) +#define LOGON32_LOGON_INTERACTIVE 2 +#define LOGON32_LOGON_NETWORK 3 +#define LOGON32_LOGON_BATCH 4 +#define LOGON32_LOGON_SERVICE 5 +#define LOGON32_LOGON_UNLOCK 7 +#define LOGON32_LOGON_NETWORK_CLEARTEXT 8 +#define LOGON32_LOGON_NEW_CREDENTIALS 9 +#define LOGON32_PROVIDER_DEFAULT 0 +#define LOGON32_PROVIDER_WINNT35 1 +#define LOGON32_PROVIDER_WINNT40 2 +#define LOGON32_PROVIDER_WINNT50 3 +#define LOGON32_PROVIDER_VIRTUAL 4 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LogonUserA (LPCSTR lpszUsername, LPCSTR lpszDomain, LPCSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LogonUserW (LPCWSTR lpszUsername, LPCWSTR lpszDomain, LPCWSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LogonUserExA (LPCSTR lpszUsername, LPCSTR lpszDomain, LPCSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken, PSID *ppLogonSid, PVOID *ppProfileBuffer, LPDWORD pdwProfileLength, PQUOTA_LIMITS pQuotaLimits); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LogonUserExW (LPCWSTR lpszUsername, LPCWSTR lpszDomain, LPCWSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken, PSID *ppLogonSid, PVOID *ppProfileBuffer, LPDWORD pdwProfileLength, PQUOTA_LIMITS pQuotaLimits); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateProcessAsUserA (HANDLE hToken, LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); +#define CreateProcessAsUser CreateProcessAsUserA +#define LogonUser __MINGW_NAME_AW(LogonUser) +#define LogonUserEx __MINGW_NAME_AW(LogonUserEx) +#define LOGON_WITH_PROFILE 0x00000001 +#define LOGON_NETCREDENTIALS_ONLY 0x00000002 +#define LOGON_ZERO_PASSWORD_BUFFER 0x80000000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateProcessWithLogonW (LPCWSTR lpUsername, LPCWSTR lpDomain, LPCWSTR lpPassword, DWORD dwLogonFlags, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateProcessWithTokenW (HANDLE hToken, DWORD dwLogonFlags, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsTokenUntrusted (HANDLE TokenHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RegisterWaitForSingleObject (PHANDLE phNewWaitObject, HANDLE hObject, WAITORTIMERCALLBACK Callback, PVOID Context, ULONG dwMilliseconds, ULONG dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterWait (HANDLE WaitHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BindIoCompletionCallback (HANDLE FileHandle, LPOVERLAPPED_COMPLETION_ROUTINE Function, ULONG Flags); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) SetTimerQueueTimer (HANDLE TimerQueue, WAITORTIMERCALLBACK Callback, PVOID Parameter, DWORD DueTime, DWORD Period, WINBOOL PreferIo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelTimerQueueTimer (HANDLE TimerQueue, HANDLE Timer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteTimerQueue (HANDLE TimerQueue); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddIntegrityLabelToBoundaryDescriptor (HANDLE *BoundaryDescriptor, PSID IntegrityLabel); +#define HW_PROFILE_GUIDLEN 39 +#define MAX_PROFILE_LEN 80 +#define DOCKINFO_UNDOCKED (0x1) +#define DOCKINFO_DOCKED (0x2) +#define DOCKINFO_USER_SUPPLIED (0x4) +#define DOCKINFO_USER_UNDOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED) +#define DOCKINFO_USER_DOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED) + typedef struct tagHW_PROFILE_INFOA { + DWORD dwDockInfo; + CHAR szHwProfileGuid[39]; + CHAR szHwProfileName[80]; + } HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA; + typedef struct tagHW_PROFILE_INFOW { + DWORD dwDockInfo; + WCHAR szHwProfileGuid[39]; + WCHAR szHwProfileName[80]; + } HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW; + typedef HW_PROFILE_INFOA HW_PROFILE_INFO; + typedef LPHW_PROFILE_INFOA LPHW_PROFILE_INFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCurrentHwProfileA (LPHW_PROFILE_INFOA lpHwProfileInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCurrentHwProfileW (LPHW_PROFILE_INFOW lpHwProfileInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VerifyVersionInfoA (LPOSVERSIONINFOEXA lpVersionInformation, DWORD dwTypeMask, DWORDLONG dwlConditionMask); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VerifyVersionInfoW (LPOSVERSIONINFOEXW lpVersionInformation, DWORD dwTypeMask, DWORDLONG dwlConditionMask); +#define GetCurrentHwProfile __MINGW_NAME_AW(GetCurrentHwProfile) +#define VerifyVersionInfo __MINGW_NAME_AW(VerifyVersionInfo) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUserNameA (LPSTR lpBuffer, LPDWORD pcbBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUserNameW (LPWSTR lpBuffer, LPDWORD pcbBuffer); +#define GetUserName __MINGW_NAME_AW(GetUserName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupAccountNameA (LPCSTR lpSystemName, LPCSTR lpAccountName, PSID Sid, LPDWORD cbSid, LPSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupAccountNameW (LPCWSTR lpSystemName, LPCWSTR lpAccountName, PSID Sid, LPDWORD cbSid, LPWSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupAccountSidA (LPCSTR lpSystemName, PSID Sid, LPSTR Name, LPDWORD cchName, LPSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupAccountSidW (LPCWSTR lpSystemName, PSID Sid, LPWSTR Name, LPDWORD cchName, LPWSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeDisplayNameA (LPCSTR lpSystemName, LPCSTR lpName, LPSTR lpDisplayName, LPDWORD cchDisplayName, LPDWORD lpLanguageId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeDisplayNameW (LPCWSTR lpSystemName, LPCWSTR lpName, LPWSTR lpDisplayName, LPDWORD cchDisplayName, LPDWORD lpLanguageId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeNameA (LPCSTR lpSystemName, PLUID lpLuid, LPSTR lpName, LPDWORD cchName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeNameW (LPCWSTR lpSystemName, PLUID lpLuid, LPWSTR lpName, LPDWORD cchName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeValueA (LPCSTR lpSystemName, LPCSTR lpName, PLUID lpLuid); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeValueW (LPCWSTR lpSystemName, LPCWSTR lpName, PLUID lpLuid); +#define LookupAccountSid __MINGW_NAME_AW(LookupAccountSid) +#define LookupAccountName __MINGW_NAME_AW(LookupAccountName) +#define LookupPrivilegeValue __MINGW_NAME_AW(LookupPrivilegeValue) +#define LookupPrivilegeName __MINGW_NAME_AW(LookupPrivilegeName) +#define LookupPrivilegeDisplayName __MINGW_NAME_AW(LookupPrivilegeDisplayName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetVolumeLabelA (LPCSTR lpRootPathName, LPCSTR lpVolumeName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreatePrivateNamespaceA (LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes, LPVOID lpBoundaryDescriptor, LPCSTR lpAliasPrefix); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenPrivateNamespaceA (LPVOID lpBoundaryDescriptor, LPCSTR lpAliasPrefix); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateBoundaryDescriptorA (LPCSTR Name, ULONG Flags); +#define CreatePrivateNamespace __MINGW_NAME_AW(CreatePrivateNamespace) +#define OpenPrivateNamespace __MINGW_NAME_AW(OpenPrivateNamespace) +#define CreateBoundaryDescriptor __MINGW_NAME_AW(CreateBoundaryDescriptor) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetVolumeLabelW (LPCWSTR lpRootPathName, LPCWSTR lpVolumeName); +#define SetVolumeLabel __MINGW_NAME_AW(SetVolumeLabel) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetComputerNameA (LPSTR lpBuffer, LPDWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetComputerNameW (LPWSTR lpBuffer, LPDWORD nSize); +#define GetComputerName __MINGW_NAME_AW(GetComputerName) +#define _WINERROR_ +#define __IN__WINERROR_ 1 +#define FACILITY_NULL 0 +#define FACILITY_RPC 1 +#define FACILITY_DISPATCH 2 +#define FACILITY_STORAGE 3 +#define FACILITY_ITF 4 +#define FACILITY_WIN32 7 +#define FACILITY_WINDOWS 8 +#define FACILITY_SSPI 9 +#define FACILITY_SECURITY 9 +#define FACILITY_CONTROL 10 +#define FACILITY_CERT 11 +#define FACILITY_INTERNET 12 +#define FACILITY_MEDIASERVER 13 +#define FACILITY_MSMQ 14 +#define FACILITY_SETUPAPI 15 +#define FACILITY_SCARD 16 +#define FACILITY_COMPLUS 17 +#define FACILITY_AAF 18 +#define FACILITY_URT 19 +#define FACILITY_ACS 20 +#define FACILITY_DPLAY 21 +#define FACILITY_UMI 22 +#define FACILITY_SXS 23 +#define FACILITY_WINDOWS_CE 24 +#define FACILITY_HTTP 25 +#define FACILITY_USERMODE_COMMONLOG 26 +#define FACILITY_WER 27 +#define FACILITY_USERMODE_FILTER_MANAGER 31 +#define FACILITY_BACKGROUNDCOPY 32 +#define FACILITY_CONFIGURATION 33 +#define FACILITY_WIA 33 +#define FACILITY_STATE_MANAGEMENT 34 +#define FACILITY_METADIRECTORY 35 +#define FACILITY_WINDOWSUPDATE 36 +#define FACILITY_DIRECTORYSERVICE 37 +#define FACILITY_GRAPHICS 38 +#define FACILITY_SHELL 39 +#define FACILITY_NAP 39 +#define FACILITY_TPM_SERVICES 40 +#define FACILITY_TPM_SOFTWARE 41 +#define FACILITY_UI 42 +#define FACILITY_XAML 43 +#define FACILITY_ACTION_QUEUE 44 +#define FACILITY_PLA 48 +#define FACILITY_WINDOWS_SETUP 48 +#define FACILITY_FVE 49 +#define FACILITY_FWP 50 +#define FACILITY_WINRM 51 +#define FACILITY_NDIS 52 +#define FACILITY_USERMODE_HYPERVISOR 53 +#define FACILITY_CMI 54 +#define FACILITY_USERMODE_VIRTUALIZATION 55 +#define FACILITY_USERMODE_VOLMGR 56 +#define FACILITY_BCD 57 +#define FACILITY_USERMODE_VHD 58 +#define FACILITY_USERMODE_HNS 59 +#define FACILITY_SDIAG 60 +#define FACILITY_WEBSERVICES 61 +#define FACILITY_WINPE 61 +#define FACILITY_WPN 62 +#define FACILITY_WINDOWS_STORE 63 +#define FACILITY_INPUT 64 +#define FACILITY_QUIC 65 +#define FACILITY_EAP 66 +#define FACILITY_IORING 70 +#define FACILITY_WINDOWS_DEFENDER 80 +#define FACILITY_OPC 81 +#define FACILITY_XPS 82 +#define FACILITY_MBN 84 +#define FACILITY_POWERSHELL 84 +#define FACILITY_RAS 83 +#define FACILITY_P2P_INT 98 +#define FACILITY_P2P 99 +#define FACILITY_DAF 100 +#define FACILITY_BLUETOOTH_ATT 101 +#define FACILITY_AUDIO 102 +#define FACILITY_STATEREPOSITORY 103 +#define FACILITY_VISUALCPP 109 +#define FACILITY_SCRIPT 112 +#define FACILITY_PARSE 113 +#define FACILITY_BLB 120 +#define FACILITY_BLB_CLI 121 +#define FACILITY_WSBAPP 122 +#define FACILITY_BLBUI 128 +#define FACILITY_USN 129 +#define FACILITY_USERMODE_VOLSNAP 130 +#define FACILITY_TIERING 131 +#define FACILITY_WSB_ONLINE 133 +#define FACILITY_ONLINE_ID 134 +#define FACILITY_DEVICE_UPDATE_AGENT 135 +#define FACILITY_DRVSERVICING 136 +#define FACILITY_DLS 153 +#define FACILITY_DELIVERY_OPTIMIZATION 208 +#define FACILITY_USERMODE_SPACES 231 +#define FACILITY_USER_MODE_SECURITY_CORE 232 +#define FACILITY_USERMODE_LICENSING 234 +#define FACILITY_SOS 160 +#define FACILITY_OCP_UPDATE_AGENT 173 +#define FACILITY_DEBUGGERS 176 +#define FACILITY_SPP 256 +#define FACILITY_RESTORE 256 +#define FACILITY_DMSERVER 256 +#define FACILITY_DEPLOYMENT_SERVICES_SERVER 257 +#define FACILITY_DEPLOYMENT_SERVICES_IMAGING 258 +#define FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT 259 +#define FACILITY_DEPLOYMENT_SERVICES_UTIL 260 +#define FACILITY_DEPLOYMENT_SERVICES_BINLSVC 261 +#define FACILITY_DEPLOYMENT_SERVICES_PXE 263 +#define FACILITY_DEPLOYMENT_SERVICES_TFTP 264 +#define FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT 272 +#define FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING 278 +#define FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER 289 +#define FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT 290 +#define FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER 293 +#define FACILITY_HSP_SERVICES 296 +#define FACILITY_HSP_SOFTWARE 297 +#define FACILITY_LINGUISTIC_SERVICES 305 +#define FACILITY_AUDIOSTREAMING 1094 +#define FACILITY_TTD 1490 +#define FACILITY_ACCELERATOR 1536 +#define FACILITY_WMAAECMA 1996 +#define FACILITY_DIRECTMUSIC 2168 +#define FACILITY_DIRECT3D10 2169 +#define FACILITY_DXGI 2170 +#define FACILITY_DXGI_DDI 2171 +#define FACILITY_DIRECT3D11 2172 +#define FACILITY_DIRECT3D11_DEBUG 2173 +#define FACILITY_DIRECT3D12 2174 +#define FACILITY_DIRECT3D12_DEBUG 2175 +#define FACILITY_DXCORE 2176 +#define FACILITY_PRESENTATION 2177 +#define FACILITY_LEAP 2184 +#define FACILITY_AUDCLNT 2185 +#define FACILITY_WINCODEC_DWRITE_DWM 2200 +#define FACILITY_WINML 2192 +#define FACILITY_DIRECT2D 2201 +#define FACILITY_DEFRAG 2304 +#define FACILITY_USERMODE_SDBUS 2305 +#define FACILITY_JSCRIPT 2306 +#define FACILITY_PIDGENX 2561 +#define FACILITY_EAS 85 +#define FACILITY_WEB 885 +#define FACILITY_WEB_SOCKET 886 +#define FACILITY_MOBILE 1793 +#define FACILITY_SQLITE 1967 +#define FACILITY_SERVICE_FABRIC 1968 +#define FACILITY_UTC 1989 +#define FACILITY_WEP 2049 +#define FACILITY_SYNCENGINE 2050 +#define FACILITY_XBOX 2339 +#define FACILITY_GAME 2340 +#define FACILITY_PIX 2748 +#define ERROR_SUCCESS __MSABI_LONG(0) +#define NO_ERROR __MSABI_LONG(0) +#define SEC_E_OK ((HRESULT)0x00000000) +#define ERROR_INVALID_FUNCTION __MSABI_LONG(1) +#define ERROR_FILE_NOT_FOUND __MSABI_LONG(2) +#define ERROR_PATH_NOT_FOUND __MSABI_LONG(3) +#define ERROR_TOO_MANY_OPEN_FILES __MSABI_LONG(4) +#define ERROR_ACCESS_DENIED __MSABI_LONG(5) +#define ERROR_INVALID_HANDLE __MSABI_LONG(6) +#define ERROR_ARENA_TRASHED __MSABI_LONG(7) +#define ERROR_NOT_ENOUGH_MEMORY __MSABI_LONG(8) +#define ERROR_INVALID_BLOCK __MSABI_LONG(9) +#define ERROR_BAD_ENVIRONMENT __MSABI_LONG(10) +#define ERROR_BAD_FORMAT __MSABI_LONG(11) +#define ERROR_INVALID_ACCESS __MSABI_LONG(12) +#define ERROR_INVALID_DATA __MSABI_LONG(13) +#define ERROR_OUTOFMEMORY __MSABI_LONG(14) +#define ERROR_INVALID_DRIVE __MSABI_LONG(15) +#define ERROR_CURRENT_DIRECTORY __MSABI_LONG(16) +#define ERROR_NOT_SAME_DEVICE __MSABI_LONG(17) +#define ERROR_NO_MORE_FILES __MSABI_LONG(18) +#define ERROR_WRITE_PROTECT __MSABI_LONG(19) +#define ERROR_BAD_UNIT __MSABI_LONG(20) +#define ERROR_NOT_READY __MSABI_LONG(21) +#define ERROR_BAD_COMMAND __MSABI_LONG(22) +#define ERROR_CRC __MSABI_LONG(23) +#define ERROR_BAD_LENGTH __MSABI_LONG(24) +#define ERROR_SEEK __MSABI_LONG(25) +#define ERROR_NOT_DOS_DISK __MSABI_LONG(26) +#define ERROR_SECTOR_NOT_FOUND __MSABI_LONG(27) +#define ERROR_OUT_OF_PAPER __MSABI_LONG(28) +#define ERROR_WRITE_FAULT __MSABI_LONG(29) +#define ERROR_READ_FAULT __MSABI_LONG(30) +#define ERROR_GEN_FAILURE __MSABI_LONG(31) +#define ERROR_SHARING_VIOLATION __MSABI_LONG(32) +#define ERROR_LOCK_VIOLATION __MSABI_LONG(33) +#define ERROR_WRONG_DISK __MSABI_LONG(34) +#define ERROR_SHARING_BUFFER_EXCEEDED __MSABI_LONG(36) +#define ERROR_HANDLE_EOF __MSABI_LONG(38) +#define ERROR_HANDLE_DISK_FULL __MSABI_LONG(39) +#define ERROR_NOT_SUPPORTED __MSABI_LONG(50) +#define ERROR_REM_NOT_LIST __MSABI_LONG(51) +#define ERROR_DUP_NAME __MSABI_LONG(52) +#define ERROR_BAD_NETPATH __MSABI_LONG(53) +#define ERROR_NETWORK_BUSY __MSABI_LONG(54) +#define ERROR_DEV_NOT_EXIST __MSABI_LONG(55) +#define ERROR_TOO_MANY_CMDS __MSABI_LONG(56) +#define ERROR_ADAP_HDW_ERR __MSABI_LONG(57) +#define ERROR_BAD_NET_RESP __MSABI_LONG(58) +#define ERROR_UNEXP_NET_ERR __MSABI_LONG(59) +#define ERROR_BAD_REM_ADAP __MSABI_LONG(60) +#define ERROR_PRINTQ_FULL __MSABI_LONG(61) +#define ERROR_NO_SPOOL_SPACE __MSABI_LONG(62) +#define ERROR_PRINT_CANCELLED __MSABI_LONG(63) +#define ERROR_NETNAME_DELETED __MSABI_LONG(64) +#define ERROR_NETWORK_ACCESS_DENIED __MSABI_LONG(65) +#define ERROR_BAD_DEV_TYPE __MSABI_LONG(66) +#define ERROR_BAD_NET_NAME __MSABI_LONG(67) +#define ERROR_TOO_MANY_NAMES __MSABI_LONG(68) +#define ERROR_TOO_MANY_SESS __MSABI_LONG(69) +#define ERROR_SHARING_PAUSED __MSABI_LONG(70) +#define ERROR_REQ_NOT_ACCEP __MSABI_LONG(71) +#define ERROR_REDIR_PAUSED __MSABI_LONG(72) +#define ERROR_FILE_EXISTS __MSABI_LONG(80) +#define ERROR_CANNOT_MAKE __MSABI_LONG(82) +#define ERROR_FAIL_I24 __MSABI_LONG(83) +#define ERROR_OUT_OF_STRUCTURES __MSABI_LONG(84) +#define ERROR_ALREADY_ASSIGNED __MSABI_LONG(85) +#define ERROR_INVALID_PASSWORD __MSABI_LONG(86) +#define ERROR_INVALID_PARAMETER __MSABI_LONG(87) +#define ERROR_NET_WRITE_FAULT __MSABI_LONG(88) +#define ERROR_NO_PROC_SLOTS __MSABI_LONG(89) +#define ERROR_TOO_MANY_SEMAPHORES __MSABI_LONG(100) +#define ERROR_EXCL_SEM_ALREADY_OWNED __MSABI_LONG(101) +#define ERROR_SEM_IS_SET __MSABI_LONG(102) +#define ERROR_TOO_MANY_SEM_REQUESTS __MSABI_LONG(103) +#define ERROR_INVALID_AT_INTERRUPT_TIME __MSABI_LONG(104) +#define ERROR_SEM_OWNER_DIED __MSABI_LONG(105) +#define ERROR_SEM_USER_LIMIT __MSABI_LONG(106) +#define ERROR_DISK_CHANGE __MSABI_LONG(107) +#define ERROR_DRIVE_LOCKED __MSABI_LONG(108) +#define ERROR_BROKEN_PIPE __MSABI_LONG(109) +#define ERROR_OPEN_FAILED __MSABI_LONG(110) +#define ERROR_BUFFER_OVERFLOW __MSABI_LONG(111) +#define ERROR_DISK_FULL __MSABI_LONG(112) +#define ERROR_NO_MORE_SEARCH_HANDLES __MSABI_LONG(113) +#define ERROR_INVALID_TARGET_HANDLE __MSABI_LONG(114) +#define ERROR_INVALID_CATEGORY __MSABI_LONG(117) +#define ERROR_INVALID_VERIFY_SWITCH __MSABI_LONG(118) +#define ERROR_BAD_DRIVER_LEVEL __MSABI_LONG(119) +#define ERROR_CALL_NOT_IMPLEMENTED __MSABI_LONG(120) +#define ERROR_SEM_TIMEOUT __MSABI_LONG(121) +#define ERROR_INSUFFICIENT_BUFFER __MSABI_LONG(122) +#define ERROR_INVALID_NAME __MSABI_LONG(123) +#define ERROR_INVALID_LEVEL __MSABI_LONG(124) +#define ERROR_NO_VOLUME_LABEL __MSABI_LONG(125) +#define ERROR_MOD_NOT_FOUND __MSABI_LONG(126) +#define ERROR_PROC_NOT_FOUND __MSABI_LONG(127) +#define ERROR_WAIT_NO_CHILDREN __MSABI_LONG(128) +#define ERROR_CHILD_NOT_COMPLETE __MSABI_LONG(129) +#define ERROR_DIRECT_ACCESS_HANDLE __MSABI_LONG(130) +#define ERROR_NEGATIVE_SEEK __MSABI_LONG(131) +#define ERROR_SEEK_ON_DEVICE __MSABI_LONG(132) +#define ERROR_IS_JOIN_TARGET __MSABI_LONG(133) +#define ERROR_IS_JOINED __MSABI_LONG(134) +#define ERROR_IS_SUBSTED __MSABI_LONG(135) +#define ERROR_NOT_JOINED __MSABI_LONG(136) +#define ERROR_NOT_SUBSTED __MSABI_LONG(137) +#define ERROR_JOIN_TO_JOIN __MSABI_LONG(138) +#define ERROR_SUBST_TO_SUBST __MSABI_LONG(139) +#define ERROR_JOIN_TO_SUBST __MSABI_LONG(140) +#define ERROR_SUBST_TO_JOIN __MSABI_LONG(141) +#define ERROR_BUSY_DRIVE __MSABI_LONG(142) +#define ERROR_SAME_DRIVE __MSABI_LONG(143) +#define ERROR_DIR_NOT_ROOT __MSABI_LONG(144) +#define ERROR_DIR_NOT_EMPTY __MSABI_LONG(145) +#define ERROR_IS_SUBST_PATH __MSABI_LONG(146) +#define ERROR_IS_JOIN_PATH __MSABI_LONG(147) +#define ERROR_PATH_BUSY __MSABI_LONG(148) +#define ERROR_IS_SUBST_TARGET __MSABI_LONG(149) +#define ERROR_SYSTEM_TRACE __MSABI_LONG(150) +#define ERROR_INVALID_EVENT_COUNT __MSABI_LONG(151) +#define ERROR_TOO_MANY_MUXWAITERS __MSABI_LONG(152) +#define ERROR_INVALID_LIST_FORMAT __MSABI_LONG(153) +#define ERROR_LABEL_TOO_LONG __MSABI_LONG(154) +#define ERROR_TOO_MANY_TCBS __MSABI_LONG(155) +#define ERROR_SIGNAL_REFUSED __MSABI_LONG(156) +#define ERROR_DISCARDED __MSABI_LONG(157) +#define ERROR_NOT_LOCKED __MSABI_LONG(158) +#define ERROR_BAD_THREADID_ADDR __MSABI_LONG(159) +#define ERROR_BAD_ARGUMENTS __MSABI_LONG(160) +#define ERROR_BAD_PATHNAME __MSABI_LONG(161) +#define ERROR_SIGNAL_PENDING __MSABI_LONG(162) +#define ERROR_MAX_THRDS_REACHED __MSABI_LONG(164) +#define ERROR_LOCK_FAILED __MSABI_LONG(167) +#define ERROR_BUSY __MSABI_LONG(170) +#define ERROR_DEVICE_SUPPORT_IN_PROGRESS __MSABI_LONG(171) +#define ERROR_CANCEL_VIOLATION __MSABI_LONG(173) +#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED __MSABI_LONG(174) +#define ERROR_INVALID_SEGMENT_NUMBER __MSABI_LONG(180) +#define ERROR_INVALID_ORDINAL __MSABI_LONG(182) +#define ERROR_ALREADY_EXISTS __MSABI_LONG(183) +#define ERROR_INVALID_FLAG_NUMBER __MSABI_LONG(186) +#define ERROR_SEM_NOT_FOUND __MSABI_LONG(187) +#define ERROR_INVALID_STARTING_CODESEG __MSABI_LONG(188) +#define ERROR_INVALID_STACKSEG __MSABI_LONG(189) +#define ERROR_INVALID_MODULETYPE __MSABI_LONG(190) +#define ERROR_INVALID_EXE_SIGNATURE __MSABI_LONG(191) +#define ERROR_EXE_MARKED_INVALID __MSABI_LONG(192) +#define ERROR_BAD_EXE_FORMAT __MSABI_LONG(193) +#define ERROR_ITERATED_DATA_EXCEEDS_64k __MSABI_LONG(194) +#define ERROR_INVALID_MINALLOCSIZE __MSABI_LONG(195) +#define ERROR_DYNLINK_FROM_INVALID_RING __MSABI_LONG(196) +#define ERROR_IOPL_NOT_ENABLED __MSABI_LONG(197) +#define ERROR_INVALID_SEGDPL __MSABI_LONG(198) +#define ERROR_AUTODATASEG_EXCEEDS_64k __MSABI_LONG(199) +#define ERROR_RING2SEG_MUST_BE_MOVABLE __MSABI_LONG(200) +#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM __MSABI_LONG(201) +#define ERROR_INFLOOP_IN_RELOC_CHAIN __MSABI_LONG(202) +#define ERROR_ENVVAR_NOT_FOUND __MSABI_LONG(203) +#define ERROR_NO_SIGNAL_SENT __MSABI_LONG(205) +#define ERROR_FILENAME_EXCED_RANGE __MSABI_LONG(206) +#define ERROR_RING2_STACK_IN_USE __MSABI_LONG(207) +#define ERROR_META_EXPANSION_TOO_LONG __MSABI_LONG(208) +#define ERROR_INVALID_SIGNAL_NUMBER __MSABI_LONG(209) +#define ERROR_THREAD_1_INACTIVE __MSABI_LONG(210) +#define ERROR_LOCKED __MSABI_LONG(212) +#define ERROR_TOO_MANY_MODULES __MSABI_LONG(214) +#define ERROR_NESTING_NOT_ALLOWED __MSABI_LONG(215) +#define ERROR_EXE_MACHINE_TYPE_MISMATCH __MSABI_LONG(216) +#define ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY __MSABI_LONG(217) +#define ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY __MSABI_LONG(218) +#define ERROR_FILE_CHECKED_OUT __MSABI_LONG(220) +#define ERROR_CHECKOUT_REQUIRED __MSABI_LONG(221) +#define ERROR_BAD_FILE_TYPE __MSABI_LONG(222) +#define ERROR_FILE_TOO_LARGE __MSABI_LONG(223) +#define ERROR_FORMS_AUTH_REQUIRED __MSABI_LONG(224) +#define ERROR_VIRUS_INFECTED __MSABI_LONG(225) +#define ERROR_VIRUS_DELETED __MSABI_LONG(226) +#define ERROR_PIPE_LOCAL __MSABI_LONG(229) +#define ERROR_BAD_PIPE __MSABI_LONG(230) +#define ERROR_PIPE_BUSY __MSABI_LONG(231) +#define ERROR_NO_DATA __MSABI_LONG(232) +#define ERROR_PIPE_NOT_CONNECTED __MSABI_LONG(233) +#define ERROR_MORE_DATA __MSABI_LONG(234) +#define ERROR_NO_WORK_DONE __MSABI_LONG(235) +#define ERROR_VC_DISCONNECTED __MSABI_LONG(240) +#define ERROR_INVALID_EA_NAME __MSABI_LONG(254) +#define ERROR_EA_LIST_INCONSISTENT __MSABI_LONG(255) +#define WAIT_TIMEOUT __MSABI_LONG(258) +#define ERROR_NO_MORE_ITEMS __MSABI_LONG(259) +#define ERROR_CANNOT_COPY __MSABI_LONG(266) +#define ERROR_DIRECTORY __MSABI_LONG(267) +#define ERROR_EAS_DIDNT_FIT __MSABI_LONG(275) +#define ERROR_EA_FILE_CORRUPT __MSABI_LONG(276) +#define ERROR_EA_TABLE_FULL __MSABI_LONG(277) +#define ERROR_INVALID_EA_HANDLE __MSABI_LONG(278) +#define ERROR_EAS_NOT_SUPPORTED __MSABI_LONG(282) +#define ERROR_NOT_OWNER __MSABI_LONG(288) +#define ERROR_TOO_MANY_POSTS __MSABI_LONG(298) +#define ERROR_PARTIAL_COPY __MSABI_LONG(299) +#define ERROR_OPLOCK_NOT_GRANTED __MSABI_LONG(300) +#define ERROR_INVALID_OPLOCK_PROTOCOL __MSABI_LONG(301) +#define ERROR_DISK_TOO_FRAGMENTED __MSABI_LONG(302) +#define ERROR_DELETE_PENDING __MSABI_LONG(303) +#define ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING __MSABI_LONG(304) +#define ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME __MSABI_LONG(305) +#define ERROR_SECURITY_STREAM_IS_INCONSISTENT __MSABI_LONG(306) +#define ERROR_INVALID_LOCK_RANGE __MSABI_LONG(307) +#define ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT __MSABI_LONG(308) +#define ERROR_NOTIFICATION_GUID_ALREADY_DEFINED __MSABI_LONG(309) +#define ERROR_INVALID_EXCEPTION_HANDLER __MSABI_LONG(310) +#define ERROR_DUPLICATE_PRIVILEGES __MSABI_LONG(311) +#define ERROR_NO_RANGES_PROCESSED __MSABI_LONG(312) +#define ERROR_NOT_ALLOWED_ON_SYSTEM_FILE __MSABI_LONG(313) +#define ERROR_DISK_RESOURCES_EXHAUSTED __MSABI_LONG(314) +#define ERROR_INVALID_TOKEN __MSABI_LONG(315) +#define ERROR_DEVICE_FEATURE_NOT_SUPPORTED __MSABI_LONG(316) +#define ERROR_MR_MID_NOT_FOUND __MSABI_LONG(317) +#define ERROR_SCOPE_NOT_FOUND __MSABI_LONG(318) +#define ERROR_UNDEFINED_SCOPE __MSABI_LONG(319) +#define ERROR_INVALID_CAP __MSABI_LONG(320) +#define ERROR_DEVICE_UNREACHABLE __MSABI_LONG(321) +#define ERROR_DEVICE_NO_RESOURCES __MSABI_LONG(322) +#define ERROR_DATA_CHECKSUM_ERROR __MSABI_LONG(323) +#define ERROR_INTERMIXED_KERNEL_EA_OPERATION __MSABI_LONG(324) +#define ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED __MSABI_LONG(326) +#define ERROR_OFFSET_ALIGNMENT_VIOLATION __MSABI_LONG(327) +#define ERROR_INVALID_FIELD_IN_PARAMETER_LIST __MSABI_LONG(328) +#define ERROR_OPERATION_IN_PROGRESS __MSABI_LONG(329) +#define ERROR_BAD_DEVICE_PATH __MSABI_LONG(330) +#define ERROR_TOO_MANY_DESCRIPTORS __MSABI_LONG(331) +#define ERROR_SCRUB_DATA_DISABLED __MSABI_LONG(332) +#define ERROR_NOT_REDUNDANT_STORAGE __MSABI_LONG(333) +#define ERROR_RESIDENT_FILE_NOT_SUPPORTED __MSABI_LONG(334) +#define ERROR_COMPRESSED_FILE_NOT_SUPPORTED __MSABI_LONG(335) +#define ERROR_DIRECTORY_NOT_SUPPORTED __MSABI_LONG(336) +#define ERROR_NOT_READ_FROM_COPY __MSABI_LONG(337) +#define ERROR_FT_WRITE_FAILURE __MSABI_LONG(338) +#define ERROR_FT_DI_SCAN_REQUIRED __MSABI_LONG(339) +#define ERROR_INVALID_KERNEL_INFO_VERSION __MSABI_LONG(340) +#define ERROR_INVALID_PEP_INFO_VERSION __MSABI_LONG(341) +#define ERROR_OBJECT_NOT_EXTERNALLY_BACKED __MSABI_LONG(342) +#define ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN __MSABI_LONG(343) +#define ERROR_COMPRESSION_NOT_BENEFICIAL __MSABI_LONG(344) +#define ERROR_STORAGE_TOPOLOGY_ID_MISMATCH __MSABI_LONG(345) +#define ERROR_BLOCKED_BY_PARENTAL_CONTROLS __MSABI_LONG(346) +#define ERROR_BLOCK_TOO_MANY_REFERENCES __MSABI_LONG(347) +#define ERROR_MARKED_TO_DISALLOW_WRITES __MSABI_LONG(348) +#define ERROR_ENCLAVE_FAILURE __MSABI_LONG(349) +#define ERROR_FAIL_NOACTION_REBOOT __MSABI_LONG(350) +#define ERROR_FAIL_SHUTDOWN __MSABI_LONG(351) +#define ERROR_FAIL_RESTART __MSABI_LONG(352) +#define ERROR_MAX_SESSIONS_REACHED __MSABI_LONG(353) +#define ERROR_NETWORK_ACCESS_DENIED_EDP __MSABI_LONG(354) +#define ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL __MSABI_LONG(355) +#define ERROR_EDP_POLICY_DENIES_OPERATION __MSABI_LONG(356) +#define ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED __MSABI_LONG(357) +#define ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT __MSABI_LONG(358) +#define ERROR_DEVICE_IN_MAINTENANCE __MSABI_LONG(359) +#define ERROR_NOT_SUPPORTED_ON_DAX __MSABI_LONG(360) +#define ERROR_DAX_MAPPING_EXISTS __MSABI_LONG(361) +#define ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING __MSABI_LONG(362) +#define ERROR_CLOUD_FILE_METADATA_CORRUPT __MSABI_LONG(363) +#define ERROR_CLOUD_FILE_METADATA_TOO_LARGE __MSABI_LONG(364) +#define ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE __MSABI_LONG(365) +#define ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH __MSABI_LONG(366) +#define ERROR_CHILD_PROCESS_BLOCKED __MSABI_LONG(367) +#define ERROR_STORAGE_LOST_DATA_PERSISTENCE __MSABI_LONG(368) +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE __MSABI_LONG(369) +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT __MSABI_LONG(370) +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY __MSABI_LONG(371) +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN __MSABI_LONG(372) +#define ERROR_GDI_HANDLE_LEAK __MSABI_LONG(373) +#define ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS __MSABI_LONG(374) +#define ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED __MSABI_LONG(375) +#define ERROR_NOT_A_CLOUD_FILE __MSABI_LONG(376) +#define ERROR_CLOUD_FILE_NOT_IN_SYNC __MSABI_LONG(377) +#define ERROR_CLOUD_FILE_ALREADY_CONNECTED __MSABI_LONG(378) +#define ERROR_CLOUD_FILE_NOT_SUPPORTED __MSABI_LONG(379) +#define ERROR_CLOUD_FILE_INVALID_REQUEST __MSABI_LONG(380) +#define ERROR_CLOUD_FILE_READ_ONLY_VOLUME __MSABI_LONG(381) +#define ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY __MSABI_LONG(382) +#define ERROR_CLOUD_FILE_VALIDATION_FAILED __MSABI_LONG(383) +#define ERROR_SMB1_NOT_AVAILABLE __MSABI_LONG(384) +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION __MSABI_LONG(385) +#define ERROR_CLOUD_FILE_AUTHENTICATION_FAILED __MSABI_LONG(386) +#define ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES __MSABI_LONG(387) +#define ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE __MSABI_LONG(388) +#define ERROR_CLOUD_FILE_UNSUCCESSFUL __MSABI_LONG(389) +#define ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT __MSABI_LONG(390) +#define ERROR_CLOUD_FILE_IN_USE __MSABI_LONG(391) +#define ERROR_CLOUD_FILE_PINNED __MSABI_LONG(392) +#define ERROR_CLOUD_FILE_REQUEST_ABORTED __MSABI_LONG(393) +#define ERROR_CLOUD_FILE_PROPERTY_CORRUPT __MSABI_LONG(394) +#define ERROR_CLOUD_FILE_ACCESS_DENIED __MSABI_LONG(395) +#define ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS __MSABI_LONG(396) +#define ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT __MSABI_LONG(397) +#define ERROR_CLOUD_FILE_REQUEST_CANCELED __MSABI_LONG(398) +#define ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED __MSABI_LONG(399) +#define ERROR_THREAD_MODE_ALREADY_BACKGROUND __MSABI_LONG(400) +#define ERROR_THREAD_MODE_NOT_BACKGROUND __MSABI_LONG(401) +#define ERROR_PROCESS_MODE_ALREADY_BACKGROUND __MSABI_LONG(402) +#define ERROR_PROCESS_MODE_NOT_BACKGROUND __MSABI_LONG(403) +#define ERROR_CLOUD_FILE_PROVIDER_TERMINATED __MSABI_LONG(404) +#define ERROR_NOT_A_CLOUD_SYNC_ROOT __MSABI_LONG(405) +#define ERROR_FILE_PROTECTED_UNDER_DPL __MSABI_LONG(406) +#define ERROR_VOLUME_NOT_CLUSTER_ALIGNED __MSABI_LONG(407) +#define ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND __MSABI_LONG(408) +#define ERROR_APPX_FILE_NOT_ENCRYPTED __MSABI_LONG(409) +#define ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED __MSABI_LONG(410) +#define ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET __MSABI_LONG(411) +#define ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE __MSABI_LONG(412) +#define ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER __MSABI_LONG(413) +#define ERROR_LINUX_SUBSYSTEM_NOT_PRESENT __MSABI_LONG(414) +#define ERROR_FT_READ_FAILURE __MSABI_LONG(415) +#define ERROR_STORAGE_RESERVE_ID_INVALID __MSABI_LONG(416) +#define ERROR_STORAGE_RESERVE_DOES_NOT_EXIST __MSABI_LONG(417) +#define ERROR_STORAGE_RESERVE_ALREADY_EXISTS __MSABI_LONG(418) +#define ERROR_STORAGE_RESERVE_NOT_EMPTY __MSABI_LONG(419) +#define ERROR_NOT_A_DAX_VOLUME __MSABI_LONG(420) +#define ERROR_NOT_DAX_MAPPABLE __MSABI_LONG(421) +#define ERROR_TIME_SENSITIVE_THREAD __MSABI_LONG(422) +#define ERROR_DPL_NOT_SUPPORTED_FOR_USER __MSABI_LONG(423) +#define ERROR_CASE_DIFFERING_NAMES_IN_DIR __MSABI_LONG(424) +#define ERROR_FILE_NOT_SUPPORTED __MSABI_LONG(425) +#define ERROR_CLOUD_FILE_REQUEST_TIMEOUT __MSABI_LONG(426) +#define ERROR_NO_TASK_QUEUE __MSABI_LONG(427) +#define ERROR_SRC_SRV_DLL_LOAD_FAILED __MSABI_LONG(428) +#define ERROR_NOT_SUPPORTED_WITH_BTT __MSABI_LONG(429) +#define ERROR_ENCRYPTION_DISABLED __MSABI_LONG(430) +#define ERROR_ENCRYPTING_METADATA_DISALLOWED __MSABI_LONG(431) +#define ERROR_CANT_CLEAR_ENCRYPTION_FLAG __MSABI_LONG(432) +#define ERROR_NO_SUCH_DEVICE __MSABI_LONG(433) +#define ERROR_CLOUD_FILE_DEHYDRATION_DISALLOWED __MSABI_LONG(434) +#define ERROR_FILE_SNAP_IN_PROGRESS __MSABI_LONG(435) +#define ERROR_FILE_SNAP_USER_SECTION_NOT_SUPPORTED __MSABI_LONG(436) +#define ERROR_FILE_SNAP_MODIFY_NOT_SUPPORTED __MSABI_LONG(437) +#define ERROR_FILE_SNAP_IO_NOT_COORDINATED __MSABI_LONG(438) +#define ERROR_FILE_SNAP_UNEXPECTED_ERROR __MSABI_LONG(439) +#define ERROR_FILE_SNAP_INVALID_PARAMETER __MSABI_LONG(440) +#define ERROR_UNSATISFIED_DEPENDENCIES __MSABI_LONG(441) +#define ERROR_CASE_SENSITIVE_PATH __MSABI_LONG(442) +#define ERROR_UNEXPECTED_NTCACHEMANAGER_ERROR __MSABI_LONG(443) +#define ERROR_LINUX_SUBSYSTEM_UPDATE_REQUIRED __MSABI_LONG(444) +#define ERROR_DLP_POLICY_WARNS_AGAINST_OPERATION __MSABI_LONG(445) +#define ERROR_DLP_POLICY_DENIES_OPERATION __MSABI_LONG(446) +#define ERROR_SECURITY_DENIES_OPERATION __MSABI_LONG(447) +#define ERROR_UNTRUSTED_MOUNT_POINT __MSABI_LONG(448) +#define ERROR_DLP_POLICY_SILENTLY_FAIL __MSABI_LONG(449) +#define ERROR_CAPAUTHZ_NOT_DEVUNLOCKED __MSABI_LONG(450) +#define ERROR_CAPAUTHZ_CHANGE_TYPE __MSABI_LONG(451) +#define ERROR_CAPAUTHZ_NOT_PROVISIONED __MSABI_LONG(452) +#define ERROR_CAPAUTHZ_NOT_AUTHORIZED __MSABI_LONG(453) +#define ERROR_CAPAUTHZ_NO_POLICY __MSABI_LONG(454) +#define ERROR_CAPAUTHZ_DB_CORRUPTED __MSABI_LONG(455) +#define ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG __MSABI_LONG(456) +#define ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY __MSABI_LONG(457) +#define ERROR_CAPAUTHZ_SCCD_PARSE_ERROR __MSABI_LONG(458) +#define ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED __MSABI_LONG(459) +#define ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH __MSABI_LONG(460) +#define ERROR_CIMFS_IMAGE_CORRUPT __MSABI_LONG(470) +#define ERROR_CIMFS_IMAGE_VERSION_NOT_SUPPORTED __MSABI_LONG(471) +#define ERROR_STORAGE_STACK_ACCESS_DENIED __MSABI_LONG(472) +#define ERROR_INSUFFICIENT_VIRTUAL_ADDR_RESOURCES __MSABI_LONG(473) +#define ERROR_INDEX_OUT_OF_BOUNDS __MSABI_LONG(474) +#define ERROR_CLOUD_FILE_US_MESSAGE_TIMEOUT __MSABI_LONG(475) +#define ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT __MSABI_LONG(480) +#define ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT __MSABI_LONG(481) +#define ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT __MSABI_LONG(482) +#define ERROR_DEVICE_HARDWARE_ERROR __MSABI_LONG(483) +#define ERROR_INVALID_ADDRESS __MSABI_LONG(487) +#define ERROR_HAS_SYSTEM_CRITICAL_FILES __MSABI_LONG(488) +#define ERROR_ENCRYPTED_FILE_NOT_SUPPORTED __MSABI_LONG(489) +#define ERROR_SPARSE_FILE_NOT_SUPPORTED __MSABI_LONG(490) +#define ERROR_PAGEFILE_NOT_SUPPORTED __MSABI_LONG(491) +#define ERROR_VOLUME_NOT_SUPPORTED __MSABI_LONG(492) +#define ERROR_NOT_SUPPORTED_WITH_BYPASSIO __MSABI_LONG(493) +#define ERROR_NO_BYPASSIO_DRIVER_SUPPORT __MSABI_LONG(494) +#define ERROR_NOT_SUPPORTED_WITH_ENCRYPTION __MSABI_LONG(495) +#define ERROR_NOT_SUPPORTED_WITH_COMPRESSION __MSABI_LONG(496) +#define ERROR_NOT_SUPPORTED_WITH_REPLICATION __MSABI_LONG(497) +#define ERROR_NOT_SUPPORTED_WITH_DEDUPLICATION __MSABI_LONG(498) +#define ERROR_NOT_SUPPORTED_WITH_AUDITING __MSABI_LONG(499) +#define ERROR_USER_PROFILE_LOAD __MSABI_LONG(500) +#define ERROR_SESSION_KEY_TOO_SHORT __MSABI_LONG(501) +#define ERROR_ACCESS_DENIED_APPDATA __MSABI_LONG(502) +#define ERROR_NOT_SUPPORTED_WITH_MONITORING __MSABI_LONG(503) +#define ERROR_NOT_SUPPORTED_WITH_SNAPSHOT __MSABI_LONG(504) +#define ERROR_NOT_SUPPORTED_WITH_VIRTUALIZATION __MSABI_LONG(505) +#define ERROR_BYPASSIO_FLT_NOT_SUPPORTED __MSABI_LONG(506) +#define ERROR_DEVICE_RESET_REQUIRED __MSABI_LONG(507) +#define ERROR_VOLUME_WRITE_ACCESS_DENIED __MSABI_LONG(508) +#define ERROR_NOT_SUPPORTED_WITH_CACHED_HANDLE __MSABI_LONG(509) +#define ERROR_FS_METADATA_INCONSISTENT __MSABI_LONG(510) +#define ERROR_BLOCK_WEAK_REFERENCE_INVALID __MSABI_LONG(511) +#define ERROR_BLOCK_SOURCE_WEAK_REFERENCE_INVALID __MSABI_LONG(512) +#define ERROR_BLOCK_TARGET_WEAK_REFERENCE_INVALID __MSABI_LONG(513) +#define ERROR_BLOCK_SHARED __MSABI_LONG(514) +#define ERROR_ARITHMETIC_OVERFLOW __MSABI_LONG(534) +#define ERROR_PIPE_CONNECTED __MSABI_LONG(535) +#define ERROR_PIPE_LISTENING __MSABI_LONG(536) +#define ERROR_VERIFIER_STOP __MSABI_LONG(537) +#define ERROR_ABIOS_ERROR __MSABI_LONG(538) +#define ERROR_WX86_WARNING __MSABI_LONG(539) +#define ERROR_WX86_ERROR __MSABI_LONG(540) +#define ERROR_TIMER_NOT_CANCELED __MSABI_LONG(541) +#define ERROR_UNWIND __MSABI_LONG(542) +#define ERROR_BAD_STACK __MSABI_LONG(543) +#define ERROR_INVALID_UNWIND_TARGET __MSABI_LONG(544) +#define ERROR_INVALID_PORT_ATTRIBUTES __MSABI_LONG(545) +#define ERROR_PORT_MESSAGE_TOO_LONG __MSABI_LONG(546) +#define ERROR_INVALID_QUOTA_LOWER __MSABI_LONG(547) +#define ERROR_DEVICE_ALREADY_ATTACHED __MSABI_LONG(548) +#define ERROR_INSTRUCTION_MISALIGNMENT __MSABI_LONG(549) +#define ERROR_PROFILING_NOT_STARTED __MSABI_LONG(550) +#define ERROR_PROFILING_NOT_STOPPED __MSABI_LONG(551) +#define ERROR_COULD_NOT_INTERPRET __MSABI_LONG(552) +#define ERROR_PROFILING_AT_LIMIT __MSABI_LONG(553) +#define ERROR_CANT_WAIT __MSABI_LONG(554) +#define ERROR_CANT_TERMINATE_SELF __MSABI_LONG(555) +#define ERROR_UNEXPECTED_MM_CREATE_ERR __MSABI_LONG(556) +#define ERROR_UNEXPECTED_MM_MAP_ERROR __MSABI_LONG(557) +#define ERROR_UNEXPECTED_MM_EXTEND_ERR __MSABI_LONG(558) +#define ERROR_BAD_FUNCTION_TABLE __MSABI_LONG(559) +#define ERROR_NO_GUID_TRANSLATION __MSABI_LONG(560) +#define ERROR_INVALID_LDT_SIZE __MSABI_LONG(561) +#define ERROR_INVALID_LDT_OFFSET __MSABI_LONG(563) +#define ERROR_INVALID_LDT_DESCRIPTOR __MSABI_LONG(564) +#define ERROR_TOO_MANY_THREADS __MSABI_LONG(565) +#define ERROR_THREAD_NOT_IN_PROCESS __MSABI_LONG(566) +#define ERROR_PAGEFILE_QUOTA_EXCEEDED __MSABI_LONG(567) +#define ERROR_LOGON_SERVER_CONFLICT __MSABI_LONG(568) +#define ERROR_SYNCHRONIZATION_REQUIRED __MSABI_LONG(569) +#define ERROR_NET_OPEN_FAILED __MSABI_LONG(570) +#define ERROR_IO_PRIVILEGE_FAILED __MSABI_LONG(571) +#define ERROR_CONTROL_C_EXIT __MSABI_LONG(572) +#define ERROR_MISSING_SYSTEMFILE __MSABI_LONG(573) +#define ERROR_UNHANDLED_EXCEPTION __MSABI_LONG(574) +#define ERROR_APP_INIT_FAILURE __MSABI_LONG(575) +#define ERROR_PAGEFILE_CREATE_FAILED __MSABI_LONG(576) +#define ERROR_INVALID_IMAGE_HASH __MSABI_LONG(577) +#define ERROR_NO_PAGEFILE __MSABI_LONG(578) +#define ERROR_ILLEGAL_FLOAT_CONTEXT __MSABI_LONG(579) +#define ERROR_NO_EVENT_PAIR __MSABI_LONG(580) +#define ERROR_DOMAIN_CTRLR_CONFIG_ERROR __MSABI_LONG(581) +#define ERROR_ILLEGAL_CHARACTER __MSABI_LONG(582) +#define ERROR_UNDEFINED_CHARACTER __MSABI_LONG(583) +#define ERROR_FLOPPY_VOLUME __MSABI_LONG(584) +#define ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT __MSABI_LONG(585) +#define ERROR_BACKUP_CONTROLLER __MSABI_LONG(586) +#define ERROR_MUTANT_LIMIT_EXCEEDED __MSABI_LONG(587) +#define ERROR_FS_DRIVER_REQUIRED __MSABI_LONG(588) +#define ERROR_CANNOT_LOAD_REGISTRY_FILE __MSABI_LONG(589) +#define ERROR_DEBUG_ATTACH_FAILED __MSABI_LONG(590) +#define ERROR_SYSTEM_PROCESS_TERMINATED __MSABI_LONG(591) +#define ERROR_DATA_NOT_ACCEPTED __MSABI_LONG(592) +#define ERROR_VDM_HARD_ERROR __MSABI_LONG(593) +#define ERROR_DRIVER_CANCEL_TIMEOUT __MSABI_LONG(594) +#define ERROR_REPLY_MESSAGE_MISMATCH __MSABI_LONG(595) +#define ERROR_LOST_WRITEBEHIND_DATA __MSABI_LONG(596) +#define ERROR_CLIENT_SERVER_PARAMETERS_INVALID __MSABI_LONG(597) +#define ERROR_NOT_TINY_STREAM __MSABI_LONG(598) +#define ERROR_STACK_OVERFLOW_READ __MSABI_LONG(599) +#define ERROR_CONVERT_TO_LARGE __MSABI_LONG(600) +#define ERROR_FOUND_OUT_OF_SCOPE __MSABI_LONG(601) +#define ERROR_ALLOCATE_BUCKET __MSABI_LONG(602) +#define ERROR_MARSHALL_OVERFLOW __MSABI_LONG(603) +#define ERROR_INVALID_VARIANT __MSABI_LONG(604) +#define ERROR_BAD_COMPRESSION_BUFFER __MSABI_LONG(605) +#define ERROR_AUDIT_FAILED __MSABI_LONG(606) +#define ERROR_TIMER_RESOLUTION_NOT_SET __MSABI_LONG(607) +#define ERROR_INSUFFICIENT_LOGON_INFO __MSABI_LONG(608) +#define ERROR_BAD_DLL_ENTRYPOINT __MSABI_LONG(609) +#define ERROR_BAD_SERVICE_ENTRYPOINT __MSABI_LONG(610) +#define ERROR_IP_ADDRESS_CONFLICT1 __MSABI_LONG(611) +#define ERROR_IP_ADDRESS_CONFLICT2 __MSABI_LONG(612) +#define ERROR_REGISTRY_QUOTA_LIMIT __MSABI_LONG(613) +#define ERROR_NO_CALLBACK_ACTIVE __MSABI_LONG(614) +#define ERROR_PWD_TOO_SHORT __MSABI_LONG(615) +#define ERROR_PWD_TOO_RECENT __MSABI_LONG(616) +#define ERROR_PWD_HISTORY_CONFLICT __MSABI_LONG(617) +#define ERROR_UNSUPPORTED_COMPRESSION __MSABI_LONG(618) +#define ERROR_INVALID_HW_PROFILE __MSABI_LONG(619) +#define ERROR_INVALID_PLUGPLAY_DEVICE_PATH __MSABI_LONG(620) +#define ERROR_QUOTA_LIST_INCONSISTENT __MSABI_LONG(621) +#define ERROR_EVALUATION_EXPIRATION __MSABI_LONG(622) +#define ERROR_ILLEGAL_DLL_RELOCATION __MSABI_LONG(623) +#define ERROR_DLL_INIT_FAILED_LOGOFF __MSABI_LONG(624) +#define ERROR_VALIDATE_CONTINUE __MSABI_LONG(625) +#define ERROR_NO_MORE_MATCHES __MSABI_LONG(626) +#define ERROR_RANGE_LIST_CONFLICT __MSABI_LONG(627) +#define ERROR_SERVER_SID_MISMATCH __MSABI_LONG(628) +#define ERROR_CANT_ENABLE_DENY_ONLY __MSABI_LONG(629) +#define ERROR_FLOAT_MULTIPLE_FAULTS __MSABI_LONG(630) +#define ERROR_FLOAT_MULTIPLE_TRAPS __MSABI_LONG(631) +#define ERROR_NOINTERFACE __MSABI_LONG(632) +#define ERROR_DRIVER_FAILED_SLEEP __MSABI_LONG(633) +#define ERROR_CORRUPT_SYSTEM_FILE __MSABI_LONG(634) +#define ERROR_COMMITMENT_MINIMUM __MSABI_LONG(635) +#define ERROR_PNP_RESTART_ENUMERATION __MSABI_LONG(636) +#define ERROR_SYSTEM_IMAGE_BAD_SIGNATURE __MSABI_LONG(637) +#define ERROR_PNP_REBOOT_REQUIRED __MSABI_LONG(638) +#define ERROR_INSUFFICIENT_POWER __MSABI_LONG(639) +#define ERROR_MULTIPLE_FAULT_VIOLATION __MSABI_LONG(640) +#define ERROR_SYSTEM_SHUTDOWN __MSABI_LONG(641) +#define ERROR_PORT_NOT_SET __MSABI_LONG(642) +#define ERROR_DS_VERSION_CHECK_FAILURE __MSABI_LONG(643) +#define ERROR_RANGE_NOT_FOUND __MSABI_LONG(644) +#define ERROR_NOT_SAFE_MODE_DRIVER __MSABI_LONG(646) +#define ERROR_FAILED_DRIVER_ENTRY __MSABI_LONG(647) +#define ERROR_DEVICE_ENUMERATION_ERROR __MSABI_LONG(648) +#define ERROR_MOUNT_POINT_NOT_RESOLVED __MSABI_LONG(649) +#define ERROR_INVALID_DEVICE_OBJECT_PARAMETER __MSABI_LONG(650) +#define ERROR_MCA_OCCURED __MSABI_LONG(651) +#define ERROR_DRIVER_DATABASE_ERROR __MSABI_LONG(652) +#define ERROR_SYSTEM_HIVE_TOO_LARGE __MSABI_LONG(653) +#define ERROR_DRIVER_FAILED_PRIOR_UNLOAD __MSABI_LONG(654) +#define ERROR_VOLSNAP_PREPARE_HIBERNATE __MSABI_LONG(655) +#define ERROR_HIBERNATION_FAILURE __MSABI_LONG(656) +#define ERROR_PWD_TOO_LONG __MSABI_LONG(657) +#define ERROR_FILE_SYSTEM_LIMITATION __MSABI_LONG(665) +#define ERROR_ASSERTION_FAILURE __MSABI_LONG(668) +#define ERROR_ACPI_ERROR __MSABI_LONG(669) +#define ERROR_WOW_ASSERTION __MSABI_LONG(670) +#define ERROR_PNP_BAD_MPS_TABLE __MSABI_LONG(671) +#define ERROR_PNP_TRANSLATION_FAILED __MSABI_LONG(672) +#define ERROR_PNP_IRQ_TRANSLATION_FAILED __MSABI_LONG(673) +#define ERROR_PNP_INVALID_ID __MSABI_LONG(674) +#define ERROR_WAKE_SYSTEM_DEBUGGER __MSABI_LONG(675) +#define ERROR_HANDLES_CLOSED __MSABI_LONG(676) +#define ERROR_EXTRANEOUS_INFORMATION __MSABI_LONG(677) +#define ERROR_RXACT_COMMIT_NECESSARY __MSABI_LONG(678) +#define ERROR_MEDIA_CHECK __MSABI_LONG(679) +#define ERROR_GUID_SUBSTITUTION_MADE __MSABI_LONG(680) +#define ERROR_STOPPED_ON_SYMLINK __MSABI_LONG(681) +#define ERROR_LONGJUMP __MSABI_LONG(682) +#define ERROR_PLUGPLAY_QUERY_VETOED __MSABI_LONG(683) +#define ERROR_UNWIND_CONSOLIDATE __MSABI_LONG(684) +#define ERROR_REGISTRY_HIVE_RECOVERED __MSABI_LONG(685) +#define ERROR_DLL_MIGHT_BE_INSECURE __MSABI_LONG(686) +#define ERROR_DLL_MIGHT_BE_INCOMPATIBLE __MSABI_LONG(687) +#define ERROR_DBG_EXCEPTION_NOT_HANDLED __MSABI_LONG(688) +#define ERROR_DBG_REPLY_LATER __MSABI_LONG(689) +#define ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE __MSABI_LONG(690) +#define ERROR_DBG_TERMINATE_THREAD __MSABI_LONG(691) +#define ERROR_DBG_TERMINATE_PROCESS __MSABI_LONG(692) +#define ERROR_DBG_CONTROL_C __MSABI_LONG(693) +#define ERROR_DBG_PRINTEXCEPTION_C __MSABI_LONG(694) +#define ERROR_DBG_RIPEXCEPTION __MSABI_LONG(695) +#define ERROR_DBG_CONTROL_BREAK __MSABI_LONG(696) +#define ERROR_DBG_COMMAND_EXCEPTION __MSABI_LONG(697) +#define ERROR_OBJECT_NAME_EXISTS __MSABI_LONG(698) +#define ERROR_THREAD_WAS_SUSPENDED __MSABI_LONG(699) +#define ERROR_IMAGE_NOT_AT_BASE __MSABI_LONG(700) +#define ERROR_RXACT_STATE_CREATED __MSABI_LONG(701) +#define ERROR_SEGMENT_NOTIFICATION __MSABI_LONG(702) +#define ERROR_BAD_CURRENT_DIRECTORY __MSABI_LONG(703) +#define ERROR_FT_READ_RECOVERY_FROM_BACKUP __MSABI_LONG(704) +#define ERROR_FT_WRITE_RECOVERY __MSABI_LONG(705) +#define ERROR_IMAGE_MACHINE_TYPE_MISMATCH __MSABI_LONG(706) +#define ERROR_RECEIVE_PARTIAL __MSABI_LONG(707) +#define ERROR_RECEIVE_EXPEDITED __MSABI_LONG(708) +#define ERROR_RECEIVE_PARTIAL_EXPEDITED __MSABI_LONG(709) +#define ERROR_EVENT_DONE __MSABI_LONG(710) +#define ERROR_EVENT_PENDING __MSABI_LONG(711) +#define ERROR_CHECKING_FILE_SYSTEM __MSABI_LONG(712) +#define ERROR_FATAL_APP_EXIT __MSABI_LONG(713) +#define ERROR_PREDEFINED_HANDLE __MSABI_LONG(714) +#define ERROR_WAS_UNLOCKED __MSABI_LONG(715) +#define ERROR_SERVICE_NOTIFICATION __MSABI_LONG(716) +#define ERROR_WAS_LOCKED __MSABI_LONG(717) +#define ERROR_LOG_HARD_ERROR __MSABI_LONG(718) +#define ERROR_ALREADY_WIN32 __MSABI_LONG(719) +#define ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE __MSABI_LONG(720) +#define ERROR_NO_YIELD_PERFORMED __MSABI_LONG(721) +#define ERROR_TIMER_RESUME_IGNORED __MSABI_LONG(722) +#define ERROR_ARBITRATION_UNHANDLED __MSABI_LONG(723) +#define ERROR_CARDBUS_NOT_SUPPORTED __MSABI_LONG(724) +#define ERROR_MP_PROCESSOR_MISMATCH __MSABI_LONG(725) +#define ERROR_HIBERNATED __MSABI_LONG(726) +#define ERROR_RESUME_HIBERNATION __MSABI_LONG(727) +#define ERROR_FIRMWARE_UPDATED __MSABI_LONG(728) +#define ERROR_DRIVERS_LEAKING_LOCKED_PAGES __MSABI_LONG(729) +#define ERROR_WAKE_SYSTEM __MSABI_LONG(730) +#define ERROR_WAIT_1 __MSABI_LONG(731) +#define ERROR_WAIT_2 __MSABI_LONG(732) +#define ERROR_WAIT_3 __MSABI_LONG(733) +#define ERROR_WAIT_63 __MSABI_LONG(734) +#define ERROR_ABANDONED_WAIT_0 __MSABI_LONG(735) +#define ERROR_ABANDONED_WAIT_63 __MSABI_LONG(736) +#define ERROR_USER_APC __MSABI_LONG(737) +#define ERROR_KERNEL_APC __MSABI_LONG(738) +#define ERROR_ALERTED __MSABI_LONG(739) +#define ERROR_ELEVATION_REQUIRED __MSABI_LONG(740) +#define ERROR_REPARSE __MSABI_LONG(741) +#define ERROR_OPLOCK_BREAK_IN_PROGRESS __MSABI_LONG(742) +#define ERROR_VOLUME_MOUNTED __MSABI_LONG(743) +#define ERROR_RXACT_COMMITTED __MSABI_LONG(744) +#define ERROR_NOTIFY_CLEANUP __MSABI_LONG(745) +#define ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED __MSABI_LONG(746) +#define ERROR_PAGE_FAULT_TRANSITION __MSABI_LONG(747) +#define ERROR_PAGE_FAULT_DEMAND_ZERO __MSABI_LONG(748) +#define ERROR_PAGE_FAULT_COPY_ON_WRITE __MSABI_LONG(749) +#define ERROR_PAGE_FAULT_GUARD_PAGE __MSABI_LONG(750) +#define ERROR_PAGE_FAULT_PAGING_FILE __MSABI_LONG(751) +#define ERROR_CACHE_PAGE_LOCKED __MSABI_LONG(752) +#define ERROR_CRASH_DUMP __MSABI_LONG(753) +#define ERROR_BUFFER_ALL_ZEROS __MSABI_LONG(754) +#define ERROR_REPARSE_OBJECT __MSABI_LONG(755) +#define ERROR_RESOURCE_REQUIREMENTS_CHANGED __MSABI_LONG(756) +#define ERROR_TRANSLATION_COMPLETE __MSABI_LONG(757) +#define ERROR_NOTHING_TO_TERMINATE __MSABI_LONG(758) +#define ERROR_PROCESS_NOT_IN_JOB __MSABI_LONG(759) +#define ERROR_PROCESS_IN_JOB __MSABI_LONG(760) +#define ERROR_VOLSNAP_HIBERNATE_READY __MSABI_LONG(761) +#define ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY __MSABI_LONG(762) +#define ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED __MSABI_LONG(763) +#define ERROR_INTERRUPT_STILL_CONNECTED __MSABI_LONG(764) +#define ERROR_WAIT_FOR_OPLOCK __MSABI_LONG(765) +#define ERROR_DBG_EXCEPTION_HANDLED __MSABI_LONG(766) +#define ERROR_DBG_CONTINUE __MSABI_LONG(767) +#define ERROR_CALLBACK_POP_STACK __MSABI_LONG(768) +#define ERROR_COMPRESSION_DISABLED __MSABI_LONG(769) +#define ERROR_CANTFETCHBACKWARDS __MSABI_LONG(770) +#define ERROR_CANTSCROLLBACKWARDS __MSABI_LONG(771) +#define ERROR_ROWSNOTRELEASED __MSABI_LONG(772) +#define ERROR_BAD_ACCESSOR_FLAGS __MSABI_LONG(773) +#define ERROR_ERRORS_ENCOUNTERED __MSABI_LONG(774) +#define ERROR_NOT_CAPABLE __MSABI_LONG(775) +#define ERROR_REQUEST_OUT_OF_SEQUENCE __MSABI_LONG(776) +#define ERROR_VERSION_PARSE_ERROR __MSABI_LONG(777) +#define ERROR_BADSTARTPOSITION __MSABI_LONG(778) +#define ERROR_MEMORY_HARDWARE __MSABI_LONG(779) +#define ERROR_DISK_REPAIR_DISABLED __MSABI_LONG(780) +#define ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE __MSABI_LONG(781) +#define ERROR_SYSTEM_POWERSTATE_TRANSITION __MSABI_LONG(782) +#define ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION __MSABI_LONG(783) +#define ERROR_MCA_EXCEPTION __MSABI_LONG(784) +#define ERROR_ACCESS_AUDIT_BY_POLICY __MSABI_LONG(785) +#define ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY __MSABI_LONG(786) +#define ERROR_ABANDON_HIBERFILE __MSABI_LONG(787) +#define ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED __MSABI_LONG(788) +#define ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR __MSABI_LONG(789) +#define ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR __MSABI_LONG(790) +#define ERROR_BAD_MCFG_TABLE __MSABI_LONG(791) +#define ERROR_DISK_REPAIR_REDIRECTED __MSABI_LONG(792) +#define ERROR_DISK_REPAIR_UNSUCCESSFUL __MSABI_LONG(793) +#define ERROR_CORRUPT_LOG_OVERFULL __MSABI_LONG(794) +#define ERROR_CORRUPT_LOG_CORRUPTED __MSABI_LONG(795) +#define ERROR_CORRUPT_LOG_UNAVAILABLE __MSABI_LONG(796) +#define ERROR_CORRUPT_LOG_DELETED_FULL __MSABI_LONG(797) +#define ERROR_CORRUPT_LOG_CLEARED __MSABI_LONG(798) +#define ERROR_ORPHAN_NAME_EXHAUSTED __MSABI_LONG(799) +#define ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE __MSABI_LONG(800) +#define ERROR_CANNOT_GRANT_REQUESTED_OPLOCK __MSABI_LONG(801) +#define ERROR_CANNOT_BREAK_OPLOCK __MSABI_LONG(802) +#define ERROR_OPLOCK_HANDLE_CLOSED __MSABI_LONG(803) +#define ERROR_NO_ACE_CONDITION __MSABI_LONG(804) +#define ERROR_INVALID_ACE_CONDITION __MSABI_LONG(805) +#define ERROR_FILE_HANDLE_REVOKED __MSABI_LONG(806) +#define ERROR_IMAGE_AT_DIFFERENT_BASE __MSABI_LONG(807) +#define ERROR_ENCRYPTED_IO_NOT_POSSIBLE __MSABI_LONG(808) +#define ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS __MSABI_LONG(809) +#define ERROR_QUOTA_ACTIVITY __MSABI_LONG(810) +#define ERROR_HANDLE_REVOKED __MSABI_LONG(811) +#define ERROR_CALLBACK_INVOKE_INLINE __MSABI_LONG(812) +#define ERROR_CPU_SET_INVALID __MSABI_LONG(813) +#define ERROR_ENCLAVE_NOT_TERMINATED __MSABI_LONG(814) +#define ERROR_ENCLAVE_VIOLATION __MSABI_LONG(815) +#define ERROR_SERVER_TRANSPORT_CONFLICT __MSABI_LONG(816) +#define ERROR_CERTIFICATE_VALIDATION_PREFERENCE_CONFLICT __MSABI_LONG(817) +#define ERROR_FT_READ_FROM_COPY_FAILURE __MSABI_LONG(818) +#define ERROR_SECTION_DIRECT_MAP_ONLY __MSABI_LONG(819) +#define ERROR_EA_ACCESS_DENIED __MSABI_LONG(994) +#define ERROR_OPERATION_ABORTED __MSABI_LONG(995) +#define ERROR_IO_INCOMPLETE __MSABI_LONG(996) +#define ERROR_IO_PENDING __MSABI_LONG(997) +#define ERROR_NOACCESS __MSABI_LONG(998) +#define ERROR_SWAPERROR __MSABI_LONG(999) +#define ERROR_STACK_OVERFLOW __MSABI_LONG(1001) +#define ERROR_INVALID_MESSAGE __MSABI_LONG(1002) +#define ERROR_CAN_NOT_COMPLETE __MSABI_LONG(1003) +#define ERROR_INVALID_FLAGS __MSABI_LONG(1004) +#define ERROR_UNRECOGNIZED_VOLUME __MSABI_LONG(1005) +#define ERROR_FILE_INVALID __MSABI_LONG(1006) +#define ERROR_FULLSCREEN_MODE __MSABI_LONG(1007) +#define ERROR_NO_TOKEN __MSABI_LONG(1008) +#define ERROR_BADDB __MSABI_LONG(1009) +#define ERROR_BADKEY __MSABI_LONG(1010) +#define ERROR_CANTOPEN __MSABI_LONG(1011) +#define ERROR_CANTREAD __MSABI_LONG(1012) +#define ERROR_CANTWRITE __MSABI_LONG(1013) +#define ERROR_REGISTRY_RECOVERED __MSABI_LONG(1014) +#define ERROR_REGISTRY_CORRUPT __MSABI_LONG(1015) +#define ERROR_REGISTRY_IO_FAILED __MSABI_LONG(1016) +#define ERROR_NOT_REGISTRY_FILE __MSABI_LONG(1017) +#define ERROR_KEY_DELETED __MSABI_LONG(1018) +#define ERROR_NO_LOG_SPACE __MSABI_LONG(1019) +#define ERROR_KEY_HAS_CHILDREN __MSABI_LONG(1020) +#define ERROR_CHILD_MUST_BE_VOLATILE __MSABI_LONG(1021) +#define ERROR_NOTIFY_ENUM_DIR __MSABI_LONG(1022) +#define ERROR_DEPENDENT_SERVICES_RUNNING __MSABI_LONG(1051) +#define ERROR_INVALID_SERVICE_CONTROL __MSABI_LONG(1052) +#define ERROR_SERVICE_REQUEST_TIMEOUT __MSABI_LONG(1053) +#define ERROR_SERVICE_NO_THREAD __MSABI_LONG(1054) +#define ERROR_SERVICE_DATABASE_LOCKED __MSABI_LONG(1055) +#define ERROR_SERVICE_ALREADY_RUNNING __MSABI_LONG(1056) +#define ERROR_INVALID_SERVICE_ACCOUNT __MSABI_LONG(1057) +#define ERROR_SERVICE_DISABLED __MSABI_LONG(1058) +#define ERROR_CIRCULAR_DEPENDENCY __MSABI_LONG(1059) +#define ERROR_SERVICE_DOES_NOT_EXIST __MSABI_LONG(1060) +#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL __MSABI_LONG(1061) +#define ERROR_SERVICE_NOT_ACTIVE __MSABI_LONG(1062) +#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT __MSABI_LONG(1063) +#define ERROR_EXCEPTION_IN_SERVICE __MSABI_LONG(1064) +#define ERROR_DATABASE_DOES_NOT_EXIST __MSABI_LONG(1065) +#define ERROR_SERVICE_SPECIFIC_ERROR __MSABI_LONG(1066) +#define ERROR_PROCESS_ABORTED __MSABI_LONG(1067) +#define ERROR_SERVICE_DEPENDENCY_FAIL __MSABI_LONG(1068) +#define ERROR_SERVICE_LOGON_FAILED __MSABI_LONG(1069) +#define ERROR_SERVICE_START_HANG __MSABI_LONG(1070) +#define ERROR_INVALID_SERVICE_LOCK __MSABI_LONG(1071) +#define ERROR_SERVICE_MARKED_FOR_DELETE __MSABI_LONG(1072) +#define ERROR_SERVICE_EXISTS __MSABI_LONG(1073) +#define ERROR_ALREADY_RUNNING_LKG __MSABI_LONG(1074) +#define ERROR_SERVICE_DEPENDENCY_DELETED __MSABI_LONG(1075) +#define ERROR_BOOT_ALREADY_ACCEPTED __MSABI_LONG(1076) +#define ERROR_SERVICE_NEVER_STARTED __MSABI_LONG(1077) +#define ERROR_DUPLICATE_SERVICE_NAME __MSABI_LONG(1078) +#define ERROR_DIFFERENT_SERVICE_ACCOUNT __MSABI_LONG(1079) +#define ERROR_CANNOT_DETECT_DRIVER_FAILURE __MSABI_LONG(1080) +#define ERROR_CANNOT_DETECT_PROCESS_ABORT __MSABI_LONG(1081) +#define ERROR_NO_RECOVERY_PROGRAM __MSABI_LONG(1082) +#define ERROR_SERVICE_NOT_IN_EXE __MSABI_LONG(1083) +#define ERROR_NOT_SAFEBOOT_SERVICE __MSABI_LONG(1084) +#define ERROR_END_OF_MEDIA __MSABI_LONG(1100) +#define ERROR_FILEMARK_DETECTED __MSABI_LONG(1101) +#define ERROR_BEGINNING_OF_MEDIA __MSABI_LONG(1102) +#define ERROR_SETMARK_DETECTED __MSABI_LONG(1103) +#define ERROR_NO_DATA_DETECTED __MSABI_LONG(1104) +#define ERROR_PARTITION_FAILURE __MSABI_LONG(1105) +#define ERROR_INVALID_BLOCK_LENGTH __MSABI_LONG(1106) +#define ERROR_DEVICE_NOT_PARTITIONED __MSABI_LONG(1107) +#define ERROR_UNABLE_TO_LOCK_MEDIA __MSABI_LONG(1108) +#define ERROR_UNABLE_TO_UNLOAD_MEDIA __MSABI_LONG(1109) +#define ERROR_MEDIA_CHANGED __MSABI_LONG(1110) +#define ERROR_BUS_RESET __MSABI_LONG(1111) +#define ERROR_NO_MEDIA_IN_DRIVE __MSABI_LONG(1112) +#define ERROR_NO_UNICODE_TRANSLATION __MSABI_LONG(1113) +#define ERROR_DLL_INIT_FAILED __MSABI_LONG(1114) +#define ERROR_SHUTDOWN_IN_PROGRESS __MSABI_LONG(1115) +#define ERROR_NO_SHUTDOWN_IN_PROGRESS __MSABI_LONG(1116) +#define ERROR_IO_DEVICE __MSABI_LONG(1117) +#define ERROR_SERIAL_NO_DEVICE __MSABI_LONG(1118) +#define ERROR_IRQ_BUSY __MSABI_LONG(1119) +#define ERROR_MORE_WRITES __MSABI_LONG(1120) +#define ERROR_COUNTER_TIMEOUT __MSABI_LONG(1121) +#define ERROR_FLOPPY_ID_MARK_NOT_FOUND __MSABI_LONG(1122) +#define ERROR_FLOPPY_WRONG_CYLINDER __MSABI_LONG(1123) +#define ERROR_FLOPPY_UNKNOWN_ERROR __MSABI_LONG(1124) +#define ERROR_FLOPPY_BAD_REGISTERS __MSABI_LONG(1125) +#define ERROR_DISK_RECALIBRATE_FAILED __MSABI_LONG(1126) +#define ERROR_DISK_OPERATION_FAILED __MSABI_LONG(1127) +#define ERROR_DISK_RESET_FAILED __MSABI_LONG(1128) +#define ERROR_EOM_OVERFLOW __MSABI_LONG(1129) +#define ERROR_NOT_ENOUGH_SERVER_MEMORY __MSABI_LONG(1130) +#define ERROR_POSSIBLE_DEADLOCK __MSABI_LONG(1131) +#define ERROR_MAPPED_ALIGNMENT __MSABI_LONG(1132) +#define ERROR_SET_POWER_STATE_VETOED __MSABI_LONG(1140) +#define ERROR_SET_POWER_STATE_FAILED __MSABI_LONG(1141) +#define ERROR_TOO_MANY_LINKS __MSABI_LONG(1142) +#define ERROR_OLD_WIN_VERSION __MSABI_LONG(1150) +#define ERROR_APP_WRONG_OS __MSABI_LONG(1151) +#define ERROR_SINGLE_INSTANCE_APP __MSABI_LONG(1152) +#define ERROR_RMODE_APP __MSABI_LONG(1153) +#define ERROR_INVALID_DLL __MSABI_LONG(1154) +#define ERROR_NO_ASSOCIATION __MSABI_LONG(1155) +#define ERROR_DDE_FAIL __MSABI_LONG(1156) +#define ERROR_DLL_NOT_FOUND __MSABI_LONG(1157) +#define ERROR_NO_MORE_USER_HANDLES __MSABI_LONG(1158) +#define ERROR_MESSAGE_SYNC_ONLY __MSABI_LONG(1159) +#define ERROR_SOURCE_ELEMENT_EMPTY __MSABI_LONG(1160) +#define ERROR_DESTINATION_ELEMENT_FULL __MSABI_LONG(1161) +#define ERROR_ILLEGAL_ELEMENT_ADDRESS __MSABI_LONG(1162) +#define ERROR_MAGAZINE_NOT_PRESENT __MSABI_LONG(1163) +#define ERROR_DEVICE_REINITIALIZATION_NEEDED __MSABI_LONG(1164) +#define ERROR_DEVICE_REQUIRES_CLEANING __MSABI_LONG(1165) +#define ERROR_DEVICE_DOOR_OPEN __MSABI_LONG(1166) +#define ERROR_DEVICE_NOT_CONNECTED __MSABI_LONG(1167) +#define ERROR_NOT_FOUND __MSABI_LONG(1168) +#define ERROR_NO_MATCH __MSABI_LONG(1169) +#define ERROR_SET_NOT_FOUND __MSABI_LONG(1170) +#define ERROR_POINT_NOT_FOUND __MSABI_LONG(1171) +#define ERROR_NO_TRACKING_SERVICE __MSABI_LONG(1172) +#define ERROR_NO_VOLUME_ID __MSABI_LONG(1173) +#define ERROR_UNABLE_TO_REMOVE_REPLACED __MSABI_LONG(1175) +#define ERROR_UNABLE_TO_MOVE_REPLACEMENT __MSABI_LONG(1176) +#define ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 __MSABI_LONG(1177) +#define ERROR_JOURNAL_DELETE_IN_PROGRESS __MSABI_LONG(1178) +#define ERROR_JOURNAL_NOT_ACTIVE __MSABI_LONG(1179) +#define ERROR_POTENTIAL_FILE_FOUND __MSABI_LONG(1180) +#define ERROR_JOURNAL_ENTRY_DELETED __MSABI_LONG(1181) +#define ERROR_PARTITION_TERMINATING __MSABI_LONG(1184) +#define ERROR_SHUTDOWN_IS_SCHEDULED __MSABI_LONG(1190) +#define ERROR_SHUTDOWN_USERS_LOGGED_ON __MSABI_LONG(1191) +#define ERROR_SHUTDOWN_DISKS_NOT_IN_MAINTENANCE_MODE __MSABI_LONG(1192) +#define ERROR_BAD_DEVICE __MSABI_LONG(1200) +#define ERROR_CONNECTION_UNAVAIL __MSABI_LONG(1201) +#define ERROR_DEVICE_ALREADY_REMEMBERED __MSABI_LONG(1202) +#define ERROR_NO_NET_OR_BAD_PATH __MSABI_LONG(1203) +#define ERROR_BAD_PROVIDER __MSABI_LONG(1204) +#define ERROR_CANNOT_OPEN_PROFILE __MSABI_LONG(1205) +#define ERROR_BAD_PROFILE __MSABI_LONG(1206) +#define ERROR_NOT_CONTAINER __MSABI_LONG(1207) +#define ERROR_EXTENDED_ERROR __MSABI_LONG(1208) +#define ERROR_INVALID_GROUPNAME __MSABI_LONG(1209) +#define ERROR_INVALID_COMPUTERNAME __MSABI_LONG(1210) +#define ERROR_INVALID_EVENTNAME __MSABI_LONG(1211) +#define ERROR_INVALID_DOMAINNAME __MSABI_LONG(1212) +#define ERROR_INVALID_SERVICENAME __MSABI_LONG(1213) +#define ERROR_INVALID_NETNAME __MSABI_LONG(1214) +#define ERROR_INVALID_SHARENAME __MSABI_LONG(1215) +#define ERROR_INVALID_PASSWORDNAME __MSABI_LONG(1216) +#define ERROR_INVALID_MESSAGENAME __MSABI_LONG(1217) +#define ERROR_INVALID_MESSAGEDEST __MSABI_LONG(1218) +#define ERROR_SESSION_CREDENTIAL_CONFLICT __MSABI_LONG(1219) +#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED __MSABI_LONG(1220) +#define ERROR_DUP_DOMAINNAME __MSABI_LONG(1221) +#define ERROR_NO_NETWORK __MSABI_LONG(1222) +#define ERROR_CANCELLED __MSABI_LONG(1223) +#define ERROR_USER_MAPPED_FILE __MSABI_LONG(1224) +#define ERROR_CONNECTION_REFUSED __MSABI_LONG(1225) +#define ERROR_GRACEFUL_DISCONNECT __MSABI_LONG(1226) +#define ERROR_ADDRESS_ALREADY_ASSOCIATED __MSABI_LONG(1227) +#define ERROR_ADDRESS_NOT_ASSOCIATED __MSABI_LONG(1228) +#define ERROR_CONNECTION_INVALID __MSABI_LONG(1229) +#define ERROR_CONNECTION_ACTIVE __MSABI_LONG(1230) +#define ERROR_NETWORK_UNREACHABLE __MSABI_LONG(1231) +#define ERROR_HOST_UNREACHABLE __MSABI_LONG(1232) +#define ERROR_PROTOCOL_UNREACHABLE __MSABI_LONG(1233) +#define ERROR_PORT_UNREACHABLE __MSABI_LONG(1234) +#define ERROR_REQUEST_ABORTED __MSABI_LONG(1235) +#define ERROR_CONNECTION_ABORTED __MSABI_LONG(1236) +#define ERROR_RETRY __MSABI_LONG(1237) +#define ERROR_CONNECTION_COUNT_LIMIT __MSABI_LONG(1238) +#define ERROR_LOGIN_TIME_RESTRICTION __MSABI_LONG(1239) +#define ERROR_LOGIN_WKSTA_RESTRICTION __MSABI_LONG(1240) +#define ERROR_INCORRECT_ADDRESS __MSABI_LONG(1241) +#define ERROR_ALREADY_REGISTERED __MSABI_LONG(1242) +#define ERROR_SERVICE_NOT_FOUND __MSABI_LONG(1243) +#define ERROR_NOT_AUTHENTICATED __MSABI_LONG(1244) +#define ERROR_NOT_LOGGED_ON __MSABI_LONG(1245) +#define ERROR_CONTINUE __MSABI_LONG(1246) +#define ERROR_ALREADY_INITIALIZED __MSABI_LONG(1247) +#define ERROR_NO_MORE_DEVICES __MSABI_LONG(1248) +#define ERROR_NO_SUCH_SITE __MSABI_LONG(1249) +#define ERROR_DOMAIN_CONTROLLER_EXISTS __MSABI_LONG(1250) +#define ERROR_ONLY_IF_CONNECTED __MSABI_LONG(1251) +#define ERROR_OVERRIDE_NOCHANGES __MSABI_LONG(1252) +#define ERROR_BAD_USER_PROFILE __MSABI_LONG(1253) +#define ERROR_NOT_SUPPORTED_ON_SBS __MSABI_LONG(1254) +#define ERROR_SERVER_SHUTDOWN_IN_PROGRESS __MSABI_LONG(1255) +#define ERROR_HOST_DOWN __MSABI_LONG(1256) +#define ERROR_NON_ACCOUNT_SID __MSABI_LONG(1257) +#define ERROR_NON_DOMAIN_SID __MSABI_LONG(1258) +#define ERROR_APPHELP_BLOCK __MSABI_LONG(1259) +#define ERROR_ACCESS_DISABLED_BY_POLICY __MSABI_LONG(1260) +#define ERROR_REG_NAT_CONSUMPTION __MSABI_LONG(1261) +#define ERROR_CSCSHARE_OFFLINE __MSABI_LONG(1262) +#define ERROR_PKINIT_FAILURE __MSABI_LONG(1263) +#define ERROR_SMARTCARD_SUBSYSTEM_FAILURE __MSABI_LONG(1264) +#define ERROR_DOWNGRADE_DETECTED __MSABI_LONG(1265) +#define ERROR_MACHINE_LOCKED __MSABI_LONG(1271) +#define ERROR_CALLBACK_SUPPLIED_INVALID_DATA __MSABI_LONG(1273) +#define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED __MSABI_LONG(1274) +#define ERROR_DRIVER_BLOCKED __MSABI_LONG(1275) +#define ERROR_INVALID_IMPORT_OF_NON_DLL __MSABI_LONG(1276) +#define ERROR_ACCESS_DISABLED_WEBBLADE __MSABI_LONG(1277) +#define ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER __MSABI_LONG(1278) +#define ERROR_RECOVERY_FAILURE __MSABI_LONG(1279) +#define ERROR_ALREADY_FIBER __MSABI_LONG(1280) +#define ERROR_ALREADY_THREAD __MSABI_LONG(1281) +#define ERROR_STACK_BUFFER_OVERRUN __MSABI_LONG(1282) +#define ERROR_PARAMETER_QUOTA_EXCEEDED __MSABI_LONG(1283) +#define ERROR_DEBUGGER_INACTIVE __MSABI_LONG(1284) +#define ERROR_DELAY_LOAD_FAILED __MSABI_LONG(1285) +#define ERROR_VDM_DISALLOWED __MSABI_LONG(1286) +#define ERROR_UNIDENTIFIED_ERROR __MSABI_LONG(1287) +#define ERROR_INVALID_CRUNTIME_PARAMETER __MSABI_LONG(1288) +#define ERROR_BEYOND_VDL __MSABI_LONG(1289) +#define ERROR_INCOMPATIBLE_SERVICE_SID_TYPE __MSABI_LONG(1290) +#define ERROR_DRIVER_PROCESS_TERMINATED __MSABI_LONG(1291) +#define ERROR_IMPLEMENTATION_LIMIT __MSABI_LONG(1292) +#define ERROR_PROCESS_IS_PROTECTED __MSABI_LONG(1293) +#define ERROR_SERVICE_NOTIFY_CLIENT_LAGGING __MSABI_LONG(1294) +#define ERROR_DISK_QUOTA_EXCEEDED __MSABI_LONG(1295) +#define ERROR_CONTENT_BLOCKED __MSABI_LONG(1296) +#define ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE __MSABI_LONG(1297) +#define ERROR_APP_HANG __MSABI_LONG(1298) +#define ERROR_INVALID_LABEL __MSABI_LONG(1299) +#define ERROR_NOT_ALL_ASSIGNED __MSABI_LONG(1300) +#define ERROR_SOME_NOT_MAPPED __MSABI_LONG(1301) +#define ERROR_NO_QUOTAS_FOR_ACCOUNT __MSABI_LONG(1302) +#define ERROR_LOCAL_USER_SESSION_KEY __MSABI_LONG(1303) +#define ERROR_NULL_LM_PASSWORD __MSABI_LONG(1304) +#define ERROR_UNKNOWN_REVISION __MSABI_LONG(1305) +#define ERROR_REVISION_MISMATCH __MSABI_LONG(1306) +#define ERROR_INVALID_OWNER __MSABI_LONG(1307) +#define ERROR_INVALID_PRIMARY_GROUP __MSABI_LONG(1308) +#define ERROR_NO_IMPERSONATION_TOKEN __MSABI_LONG(1309) +#define ERROR_CANT_DISABLE_MANDATORY __MSABI_LONG(1310) +#define ERROR_NO_LOGON_SERVERS __MSABI_LONG(1311) +#define ERROR_NO_SUCH_LOGON_SESSION __MSABI_LONG(1312) +#define ERROR_NO_SUCH_PRIVILEGE __MSABI_LONG(1313) +#define ERROR_PRIVILEGE_NOT_HELD __MSABI_LONG(1314) +#define ERROR_INVALID_ACCOUNT_NAME __MSABI_LONG(1315) +#define ERROR_USER_EXISTS __MSABI_LONG(1316) +#define ERROR_NO_SUCH_USER __MSABI_LONG(1317) +#define ERROR_GROUP_EXISTS __MSABI_LONG(1318) +#define ERROR_NO_SUCH_GROUP __MSABI_LONG(1319) +#define ERROR_MEMBER_IN_GROUP __MSABI_LONG(1320) +#define ERROR_MEMBER_NOT_IN_GROUP __MSABI_LONG(1321) +#define ERROR_LAST_ADMIN __MSABI_LONG(1322) +#define ERROR_WRONG_PASSWORD __MSABI_LONG(1323) +#define ERROR_ILL_FORMED_PASSWORD __MSABI_LONG(1324) +#define ERROR_PASSWORD_RESTRICTION __MSABI_LONG(1325) +#define ERROR_LOGON_FAILURE __MSABI_LONG(1326) +#define ERROR_ACCOUNT_RESTRICTION __MSABI_LONG(1327) +#define ERROR_INVALID_LOGON_HOURS __MSABI_LONG(1328) +#define ERROR_INVALID_WORKSTATION __MSABI_LONG(1329) +#define ERROR_PASSWORD_EXPIRED __MSABI_LONG(1330) +#define ERROR_ACCOUNT_DISABLED __MSABI_LONG(1331) +#define ERROR_NONE_MAPPED __MSABI_LONG(1332) +#define ERROR_TOO_MANY_LUIDS_REQUESTED __MSABI_LONG(1333) +#define ERROR_LUIDS_EXHAUSTED __MSABI_LONG(1334) +#define ERROR_INVALID_SUB_AUTHORITY __MSABI_LONG(1335) +#define ERROR_INVALID_ACL __MSABI_LONG(1336) +#define ERROR_INVALID_SID __MSABI_LONG(1337) +#define ERROR_INVALID_SECURITY_DESCR __MSABI_LONG(1338) +#define ERROR_BAD_INHERITANCE_ACL __MSABI_LONG(1340) +#define ERROR_SERVER_DISABLED __MSABI_LONG(1341) +#define ERROR_SERVER_NOT_DISABLED __MSABI_LONG(1342) +#define ERROR_INVALID_ID_AUTHORITY __MSABI_LONG(1343) +#define ERROR_ALLOTTED_SPACE_EXCEEDED __MSABI_LONG(1344) +#define ERROR_INVALID_GROUP_ATTRIBUTES __MSABI_LONG(1345) +#define ERROR_BAD_IMPERSONATION_LEVEL __MSABI_LONG(1346) +#define ERROR_CANT_OPEN_ANONYMOUS __MSABI_LONG(1347) +#define ERROR_BAD_VALIDATION_CLASS __MSABI_LONG(1348) +#define ERROR_BAD_TOKEN_TYPE __MSABI_LONG(1349) +#define ERROR_NO_SECURITY_ON_OBJECT __MSABI_LONG(1350) +#define ERROR_CANT_ACCESS_DOMAIN_INFO __MSABI_LONG(1351) +#define ERROR_INVALID_SERVER_STATE __MSABI_LONG(1352) +#define ERROR_INVALID_DOMAIN_STATE __MSABI_LONG(1353) +#define ERROR_INVALID_DOMAIN_ROLE __MSABI_LONG(1354) +#define ERROR_NO_SUCH_DOMAIN __MSABI_LONG(1355) +#define ERROR_DOMAIN_EXISTS __MSABI_LONG(1356) +#define ERROR_DOMAIN_LIMIT_EXCEEDED __MSABI_LONG(1357) +#define ERROR_INTERNAL_DB_CORRUPTION __MSABI_LONG(1358) +#define ERROR_INTERNAL_ERROR __MSABI_LONG(1359) +#define ERROR_GENERIC_NOT_MAPPED __MSABI_LONG(1360) +#define ERROR_BAD_DESCRIPTOR_FORMAT __MSABI_LONG(1361) +#define ERROR_NOT_LOGON_PROCESS __MSABI_LONG(1362) +#define ERROR_LOGON_SESSION_EXISTS __MSABI_LONG(1363) +#define ERROR_NO_SUCH_PACKAGE __MSABI_LONG(1364) +#define ERROR_BAD_LOGON_SESSION_STATE __MSABI_LONG(1365) +#define ERROR_LOGON_SESSION_COLLISION __MSABI_LONG(1366) +#define ERROR_INVALID_LOGON_TYPE __MSABI_LONG(1367) +#define ERROR_CANNOT_IMPERSONATE __MSABI_LONG(1368) +#define ERROR_RXACT_INVALID_STATE __MSABI_LONG(1369) +#define ERROR_RXACT_COMMIT_FAILURE __MSABI_LONG(1370) +#define ERROR_SPECIAL_ACCOUNT __MSABI_LONG(1371) +#define ERROR_SPECIAL_GROUP __MSABI_LONG(1372) +#define ERROR_SPECIAL_USER __MSABI_LONG(1373) +#define ERROR_MEMBERS_PRIMARY_GROUP __MSABI_LONG(1374) +#define ERROR_TOKEN_ALREADY_IN_USE __MSABI_LONG(1375) +#define ERROR_NO_SUCH_ALIAS __MSABI_LONG(1376) +#define ERROR_MEMBER_NOT_IN_ALIAS __MSABI_LONG(1377) +#define ERROR_MEMBER_IN_ALIAS __MSABI_LONG(1378) +#define ERROR_ALIAS_EXISTS __MSABI_LONG(1379) +#define ERROR_LOGON_NOT_GRANTED __MSABI_LONG(1380) +#define ERROR_TOO_MANY_SECRETS __MSABI_LONG(1381) +#define ERROR_SECRET_TOO_LONG __MSABI_LONG(1382) +#define ERROR_INTERNAL_DB_ERROR __MSABI_LONG(1383) +#define ERROR_TOO_MANY_CONTEXT_IDS __MSABI_LONG(1384) +#define ERROR_LOGON_TYPE_NOT_GRANTED __MSABI_LONG(1385) +#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED __MSABI_LONG(1386) +#define ERROR_NO_SUCH_MEMBER __MSABI_LONG(1387) +#define ERROR_INVALID_MEMBER __MSABI_LONG(1388) +#define ERROR_TOO_MANY_SIDS __MSABI_LONG(1389) +#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED __MSABI_LONG(1390) +#define ERROR_NO_INHERITANCE __MSABI_LONG(1391) +#define ERROR_FILE_CORRUPT __MSABI_LONG(1392) +#define ERROR_DISK_CORRUPT __MSABI_LONG(1393) +#define ERROR_NO_USER_SESSION_KEY __MSABI_LONG(1394) +#define ERROR_LICENSE_QUOTA_EXCEEDED __MSABI_LONG(1395) +#define ERROR_WRONG_TARGET_NAME __MSABI_LONG(1396) +#define ERROR_MUTUAL_AUTH_FAILED __MSABI_LONG(1397) +#define ERROR_TIME_SKEW __MSABI_LONG(1398) +#define ERROR_CURRENT_DOMAIN_NOT_ALLOWED __MSABI_LONG(1399) +#define ERROR_INVALID_WINDOW_HANDLE __MSABI_LONG(1400) +#define ERROR_INVALID_MENU_HANDLE __MSABI_LONG(1401) +#define ERROR_INVALID_CURSOR_HANDLE __MSABI_LONG(1402) +#define ERROR_INVALID_ACCEL_HANDLE __MSABI_LONG(1403) +#define ERROR_INVALID_HOOK_HANDLE __MSABI_LONG(1404) +#define ERROR_INVALID_DWP_HANDLE __MSABI_LONG(1405) +#define ERROR_TLW_WITH_WSCHILD __MSABI_LONG(1406) +#define ERROR_CANNOT_FIND_WND_CLASS __MSABI_LONG(1407) +#define ERROR_WINDOW_OF_OTHER_THREAD __MSABI_LONG(1408) +#define ERROR_HOTKEY_ALREADY_REGISTERED __MSABI_LONG(1409) +#define ERROR_CLASS_ALREADY_EXISTS __MSABI_LONG(1410) +#define ERROR_CLASS_DOES_NOT_EXIST __MSABI_LONG(1411) +#define ERROR_CLASS_HAS_WINDOWS __MSABI_LONG(1412) +#define ERROR_INVALID_INDEX __MSABI_LONG(1413) +#define ERROR_INVALID_ICON_HANDLE __MSABI_LONG(1414) +#define ERROR_PRIVATE_DIALOG_INDEX __MSABI_LONG(1415) +#define ERROR_LISTBOX_ID_NOT_FOUND __MSABI_LONG(1416) +#define ERROR_NO_WILDCARD_CHARACTERS __MSABI_LONG(1417) +#define ERROR_CLIPBOARD_NOT_OPEN __MSABI_LONG(1418) +#define ERROR_HOTKEY_NOT_REGISTERED __MSABI_LONG(1419) +#define ERROR_WINDOW_NOT_DIALOG __MSABI_LONG(1420) +#define ERROR_CONTROL_ID_NOT_FOUND __MSABI_LONG(1421) +#define ERROR_INVALID_COMBOBOX_MESSAGE __MSABI_LONG(1422) +#define ERROR_WINDOW_NOT_COMBOBOX __MSABI_LONG(1423) +#define ERROR_INVALID_EDIT_HEIGHT __MSABI_LONG(1424) +#define ERROR_DC_NOT_FOUND __MSABI_LONG(1425) +#define ERROR_INVALID_HOOK_FILTER __MSABI_LONG(1426) +#define ERROR_INVALID_FILTER_PROC __MSABI_LONG(1427) +#define ERROR_HOOK_NEEDS_HMOD __MSABI_LONG(1428) +#define ERROR_GLOBAL_ONLY_HOOK __MSABI_LONG(1429) +#define ERROR_JOURNAL_HOOK_SET __MSABI_LONG(1430) +#define ERROR_HOOK_NOT_INSTALLED __MSABI_LONG(1431) +#define ERROR_INVALID_LB_MESSAGE __MSABI_LONG(1432) +#define ERROR_SETCOUNT_ON_BAD_LB __MSABI_LONG(1433) +#define ERROR_LB_WITHOUT_TABSTOPS __MSABI_LONG(1434) +#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD __MSABI_LONG(1435) +#define ERROR_CHILD_WINDOW_MENU __MSABI_LONG(1436) +#define ERROR_NO_SYSTEM_MENU __MSABI_LONG(1437) +#define ERROR_INVALID_MSGBOX_STYLE __MSABI_LONG(1438) +#define ERROR_INVALID_SPI_VALUE __MSABI_LONG(1439) +#define ERROR_SCREEN_ALREADY_LOCKED __MSABI_LONG(1440) +#define ERROR_HWNDS_HAVE_DIFF_PARENT __MSABI_LONG(1441) +#define ERROR_NOT_CHILD_WINDOW __MSABI_LONG(1442) +#define ERROR_INVALID_GW_COMMAND __MSABI_LONG(1443) +#define ERROR_INVALID_THREAD_ID __MSABI_LONG(1444) +#define ERROR_NON_MDICHILD_WINDOW __MSABI_LONG(1445) +#define ERROR_POPUP_ALREADY_ACTIVE __MSABI_LONG(1446) +#define ERROR_NO_SCROLLBARS __MSABI_LONG(1447) +#define ERROR_INVALID_SCROLLBAR_RANGE __MSABI_LONG(1448) +#define ERROR_INVALID_SHOWWIN_COMMAND __MSABI_LONG(1449) +#define ERROR_NO_SYSTEM_RESOURCES __MSABI_LONG(1450) +#define ERROR_NONPAGED_SYSTEM_RESOURCES __MSABI_LONG(1451) +#define ERROR_PAGED_SYSTEM_RESOURCES __MSABI_LONG(1452) +#define ERROR_WORKING_SET_QUOTA __MSABI_LONG(1453) +#define ERROR_PAGEFILE_QUOTA __MSABI_LONG(1454) +#define ERROR_COMMITMENT_LIMIT __MSABI_LONG(1455) +#define ERROR_MENU_ITEM_NOT_FOUND __MSABI_LONG(1456) +#define ERROR_INVALID_KEYBOARD_HANDLE __MSABI_LONG(1457) +#define ERROR_HOOK_TYPE_NOT_ALLOWED __MSABI_LONG(1458) +#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION __MSABI_LONG(1459) +#define ERROR_TIMEOUT __MSABI_LONG(1460) +#define ERROR_INVALID_MONITOR_HANDLE __MSABI_LONG(1461) +#define ERROR_INCORRECT_SIZE __MSABI_LONG(1462) +#define ERROR_SYMLINK_CLASS_DISABLED __MSABI_LONG(1463) +#define ERROR_SYMLINK_NOT_SUPPORTED __MSABI_LONG(1464) +#define ERROR_XML_PARSE_ERROR __MSABI_LONG(1465) +#define ERROR_XMLDSIG_ERROR __MSABI_LONG(1466) +#define ERROR_RESTART_APPLICATION __MSABI_LONG(1467) +#define ERROR_WRONG_COMPARTMENT __MSABI_LONG(1468) +#define ERROR_AUTHIP_FAILURE __MSABI_LONG(1469) +#define ERROR_NO_NVRAM_RESOURCES __MSABI_LONG(1470) +#define ERROR_NOT_GUI_PROCESS __MSABI_LONG(1471) +#define ERROR_EVENTLOG_FILE_CORRUPT __MSABI_LONG(1500) +#define ERROR_EVENTLOG_CANT_START __MSABI_LONG(1501) +#define ERROR_LOG_FILE_FULL __MSABI_LONG(1502) +#define ERROR_EVENTLOG_FILE_CHANGED __MSABI_LONG(1503) +#define ERROR_CONTAINER_ASSIGNED __MSABI_LONG(1504) +#define ERROR_JOB_NO_CONTAINER __MSABI_LONG(1505) +#define ERROR_INVALID_TASK_NAME __MSABI_LONG(1550) +#define ERROR_INVALID_TASK_INDEX __MSABI_LONG(1551) +#define ERROR_THREAD_ALREADY_IN_TASK __MSABI_LONG(1552) +#define ERROR_INSTALL_SERVICE_FAILURE __MSABI_LONG(1601) +#define ERROR_INSTALL_USEREXIT __MSABI_LONG(1602) +#define ERROR_INSTALL_FAILURE __MSABI_LONG(1603) +#define ERROR_INSTALL_SUSPEND __MSABI_LONG(1604) +#define ERROR_UNKNOWN_PRODUCT __MSABI_LONG(1605) +#define ERROR_UNKNOWN_FEATURE __MSABI_LONG(1606) +#define ERROR_UNKNOWN_COMPONENT __MSABI_LONG(1607) +#define ERROR_UNKNOWN_PROPERTY __MSABI_LONG(1608) +#define ERROR_INVALID_HANDLE_STATE __MSABI_LONG(1609) +#define ERROR_BAD_CONFIGURATION __MSABI_LONG(1610) +#define ERROR_INDEX_ABSENT __MSABI_LONG(1611) +#define ERROR_INSTALL_SOURCE_ABSENT __MSABI_LONG(1612) +#define ERROR_INSTALL_PACKAGE_VERSION __MSABI_LONG(1613) +#define ERROR_PRODUCT_UNINSTALLED __MSABI_LONG(1614) +#define ERROR_BAD_QUERY_SYNTAX __MSABI_LONG(1615) +#define ERROR_INVALID_FIELD __MSABI_LONG(1616) +#define ERROR_DEVICE_REMOVED __MSABI_LONG(1617) +#define ERROR_INSTALL_ALREADY_RUNNING __MSABI_LONG(1618) +#define ERROR_INSTALL_PACKAGE_OPEN_FAILED __MSABI_LONG(1619) +#define ERROR_INSTALL_PACKAGE_INVALID __MSABI_LONG(1620) +#define ERROR_INSTALL_UI_FAILURE __MSABI_LONG(1621) +#define ERROR_INSTALL_LOG_FAILURE __MSABI_LONG(1622) +#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED __MSABI_LONG(1623) +#define ERROR_INSTALL_TRANSFORM_FAILURE __MSABI_LONG(1624) +#define ERROR_INSTALL_PACKAGE_REJECTED __MSABI_LONG(1625) +#define ERROR_FUNCTION_NOT_CALLED __MSABI_LONG(1626) +#define ERROR_FUNCTION_FAILED __MSABI_LONG(1627) +#define ERROR_INVALID_TABLE __MSABI_LONG(1628) +#define ERROR_DATATYPE_MISMATCH __MSABI_LONG(1629) +#define ERROR_UNSUPPORTED_TYPE __MSABI_LONG(1630) +#define ERROR_CREATE_FAILED __MSABI_LONG(1631) +#define ERROR_INSTALL_TEMP_UNWRITABLE __MSABI_LONG(1632) +#define ERROR_INSTALL_PLATFORM_UNSUPPORTED __MSABI_LONG(1633) +#define ERROR_INSTALL_NOTUSED __MSABI_LONG(1634) +#define ERROR_PATCH_PACKAGE_OPEN_FAILED __MSABI_LONG(1635) +#define ERROR_PATCH_PACKAGE_INVALID __MSABI_LONG(1636) +#define ERROR_PATCH_PACKAGE_UNSUPPORTED __MSABI_LONG(1637) +#define ERROR_PRODUCT_VERSION __MSABI_LONG(1638) +#define ERROR_INVALID_COMMAND_LINE __MSABI_LONG(1639) +#define ERROR_INSTALL_REMOTE_DISALLOWED __MSABI_LONG(1640) +#define ERROR_SUCCESS_REBOOT_INITIATED __MSABI_LONG(1641) +#define ERROR_PATCH_TARGET_NOT_FOUND __MSABI_LONG(1642) +#define ERROR_PATCH_PACKAGE_REJECTED __MSABI_LONG(1643) +#define ERROR_INSTALL_TRANSFORM_REJECTED __MSABI_LONG(1644) +#define ERROR_INSTALL_REMOTE_PROHIBITED __MSABI_LONG(1645) +#define ERROR_PATCH_REMOVAL_UNSUPPORTED __MSABI_LONG(1646) +#define ERROR_UNKNOWN_PATCH __MSABI_LONG(1647) +#define ERROR_PATCH_NO_SEQUENCE __MSABI_LONG(1648) +#define ERROR_PATCH_REMOVAL_DISALLOWED __MSABI_LONG(1649) +#define ERROR_INVALID_PATCH_XML __MSABI_LONG(1650) +#define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT __MSABI_LONG(1651) +#define ERROR_INSTALL_SERVICE_SAFEBOOT __MSABI_LONG(1652) +#define ERROR_FAIL_FAST_EXCEPTION __MSABI_LONG(1653) +#define ERROR_INSTALL_REJECTED __MSABI_LONG(1654) +#define ERROR_DYNAMIC_CODE_BLOCKED __MSABI_LONG(1655) +#define ERROR_NOT_SAME_OBJECT __MSABI_LONG(1656) +#define ERROR_STRICT_CFG_VIOLATION __MSABI_LONG(1657) +#define ERROR_SET_CONTEXT_DENIED __MSABI_LONG(1660) +#define ERROR_CROSS_PARTITION_VIOLATION __MSABI_LONG(1661) +#define ERROR_RETURN_ADDRESS_HIJACK_ATTEMPT __MSABI_LONG(1662) +#define RPC_S_INVALID_STRING_BINDING __MSABI_LONG(1700) +#define RPC_S_WRONG_KIND_OF_BINDING __MSABI_LONG(1701) +#define RPC_S_INVALID_BINDING __MSABI_LONG(1702) +#define RPC_S_PROTSEQ_NOT_SUPPORTED __MSABI_LONG(1703) +#define RPC_S_INVALID_RPC_PROTSEQ __MSABI_LONG(1704) +#define RPC_S_INVALID_STRING_UUID __MSABI_LONG(1705) +#define RPC_S_INVALID_ENDPOINT_FORMAT __MSABI_LONG(1706) +#define RPC_S_INVALID_NET_ADDR __MSABI_LONG(1707) +#define RPC_S_NO_ENDPOINT_FOUND __MSABI_LONG(1708) +#define RPC_S_INVALID_TIMEOUT __MSABI_LONG(1709) +#define RPC_S_OBJECT_NOT_FOUND __MSABI_LONG(1710) +#define RPC_S_ALREADY_REGISTERED __MSABI_LONG(1711) +#define RPC_S_TYPE_ALREADY_REGISTERED __MSABI_LONG(1712) +#define RPC_S_ALREADY_LISTENING __MSABI_LONG(1713) +#define RPC_S_NO_PROTSEQS_REGISTERED __MSABI_LONG(1714) +#define RPC_S_NOT_LISTENING __MSABI_LONG(1715) +#define RPC_S_UNKNOWN_MGR_TYPE __MSABI_LONG(1716) +#define RPC_S_UNKNOWN_IF __MSABI_LONG(1717) +#define RPC_S_NO_BINDINGS __MSABI_LONG(1718) +#define RPC_S_NO_PROTSEQS __MSABI_LONG(1719) +#define RPC_S_CANT_CREATE_ENDPOINT __MSABI_LONG(1720) +#define RPC_S_OUT_OF_RESOURCES __MSABI_LONG(1721) +#define RPC_S_SERVER_UNAVAILABLE __MSABI_LONG(1722) +#define RPC_S_SERVER_TOO_BUSY __MSABI_LONG(1723) +#define RPC_S_INVALID_NETWORK_OPTIONS __MSABI_LONG(1724) +#define RPC_S_NO_CALL_ACTIVE __MSABI_LONG(1725) +#define RPC_S_CALL_FAILED __MSABI_LONG(1726) +#define RPC_S_CALL_FAILED_DNE __MSABI_LONG(1727) +#define RPC_S_PROTOCOL_ERROR __MSABI_LONG(1728) +#define RPC_S_PROXY_ACCESS_DENIED __MSABI_LONG(1729) +#define RPC_S_UNSUPPORTED_TRANS_SYN __MSABI_LONG(1730) +#define RPC_S_UNSUPPORTED_TYPE __MSABI_LONG(1732) +#define RPC_S_INVALID_TAG __MSABI_LONG(1733) +#define RPC_S_INVALID_BOUND __MSABI_LONG(1734) +#define RPC_S_NO_ENTRY_NAME __MSABI_LONG(1735) +#define RPC_S_INVALID_NAME_SYNTAX __MSABI_LONG(1736) +#define RPC_S_UNSUPPORTED_NAME_SYNTAX __MSABI_LONG(1737) +#define RPC_S_UUID_NO_ADDRESS __MSABI_LONG(1739) +#define RPC_S_DUPLICATE_ENDPOINT __MSABI_LONG(1740) +#define RPC_S_UNKNOWN_AUTHN_TYPE __MSABI_LONG(1741) +#define RPC_S_MAX_CALLS_TOO_SMALL __MSABI_LONG(1742) +#define RPC_S_STRING_TOO_LONG __MSABI_LONG(1743) +#define RPC_S_PROTSEQ_NOT_FOUND __MSABI_LONG(1744) +#define RPC_S_PROCNUM_OUT_OF_RANGE __MSABI_LONG(1745) +#define RPC_S_BINDING_HAS_NO_AUTH __MSABI_LONG(1746) +#define RPC_S_UNKNOWN_AUTHN_SERVICE __MSABI_LONG(1747) +#define RPC_S_UNKNOWN_AUTHN_LEVEL __MSABI_LONG(1748) +#define RPC_S_INVALID_AUTH_IDENTITY __MSABI_LONG(1749) +#define RPC_S_UNKNOWN_AUTHZ_SERVICE __MSABI_LONG(1750) +#define EPT_S_INVALID_ENTRY __MSABI_LONG(1751) +#define EPT_S_CANT_PERFORM_OP __MSABI_LONG(1752) +#define EPT_S_NOT_REGISTERED __MSABI_LONG(1753) +#define RPC_S_NOTHING_TO_EXPORT __MSABI_LONG(1754) +#define RPC_S_INCOMPLETE_NAME __MSABI_LONG(1755) +#define RPC_S_INVALID_VERS_OPTION __MSABI_LONG(1756) +#define RPC_S_NO_MORE_MEMBERS __MSABI_LONG(1757) +#define RPC_S_NOT_ALL_OBJS_UNEXPORTED __MSABI_LONG(1758) +#define RPC_S_INTERFACE_NOT_FOUND __MSABI_LONG(1759) +#define RPC_S_ENTRY_ALREADY_EXISTS __MSABI_LONG(1760) +#define RPC_S_ENTRY_NOT_FOUND __MSABI_LONG(1761) +#define RPC_S_NAME_SERVICE_UNAVAILABLE __MSABI_LONG(1762) +#define RPC_S_INVALID_NAF_ID __MSABI_LONG(1763) +#define RPC_S_CANNOT_SUPPORT __MSABI_LONG(1764) +#define RPC_S_NO_CONTEXT_AVAILABLE __MSABI_LONG(1765) +#define RPC_S_INTERNAL_ERROR __MSABI_LONG(1766) +#define RPC_S_ZERO_DIVIDE __MSABI_LONG(1767) +#define RPC_S_ADDRESS_ERROR __MSABI_LONG(1768) +#define RPC_S_FP_DIV_ZERO __MSABI_LONG(1769) +#define RPC_S_FP_UNDERFLOW __MSABI_LONG(1770) +#define RPC_S_FP_OVERFLOW __MSABI_LONG(1771) +#define RPC_X_NO_MORE_ENTRIES __MSABI_LONG(1772) +#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL __MSABI_LONG(1773) +#define RPC_X_SS_CHAR_TRANS_SHORT_FILE __MSABI_LONG(1774) +#define RPC_X_SS_IN_NULL_CONTEXT __MSABI_LONG(1775) +#define RPC_X_SS_CONTEXT_DAMAGED __MSABI_LONG(1777) +#define RPC_X_SS_HANDLES_MISMATCH __MSABI_LONG(1778) +#define RPC_X_SS_CANNOT_GET_CALL_HANDLE __MSABI_LONG(1779) +#define RPC_X_NULL_REF_POINTER __MSABI_LONG(1780) +#define RPC_X_ENUM_VALUE_OUT_OF_RANGE __MSABI_LONG(1781) +#define RPC_X_BYTE_COUNT_TOO_SMALL __MSABI_LONG(1782) +#define RPC_X_BAD_STUB_DATA __MSABI_LONG(1783) +#define ERROR_INVALID_USER_BUFFER __MSABI_LONG(1784) +#define ERROR_UNRECOGNIZED_MEDIA __MSABI_LONG(1785) +#define ERROR_NO_TRUST_LSA_SECRET __MSABI_LONG(1786) +#define ERROR_NO_TRUST_SAM_ACCOUNT __MSABI_LONG(1787) +#define ERROR_TRUSTED_DOMAIN_FAILURE __MSABI_LONG(1788) +#define ERROR_TRUSTED_RELATIONSHIP_FAILURE __MSABI_LONG(1789) +#define ERROR_TRUST_FAILURE __MSABI_LONG(1790) +#define RPC_S_CALL_IN_PROGRESS __MSABI_LONG(1791) +#define ERROR_NETLOGON_NOT_STARTED __MSABI_LONG(1792) +#define ERROR_ACCOUNT_EXPIRED __MSABI_LONG(1793) +#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES __MSABI_LONG(1794) +#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED __MSABI_LONG(1795) +#define ERROR_UNKNOWN_PORT __MSABI_LONG(1796) +#define ERROR_UNKNOWN_PRINTER_DRIVER __MSABI_LONG(1797) +#define ERROR_UNKNOWN_PRINTPROCESSOR __MSABI_LONG(1798) +#define ERROR_INVALID_SEPARATOR_FILE __MSABI_LONG(1799) +#define ERROR_INVALID_PRIORITY __MSABI_LONG(1800) +#define ERROR_INVALID_PRINTER_NAME __MSABI_LONG(1801) +#define ERROR_PRINTER_ALREADY_EXISTS __MSABI_LONG(1802) +#define ERROR_INVALID_PRINTER_COMMAND __MSABI_LONG(1803) +#define ERROR_INVALID_DATATYPE __MSABI_LONG(1804) +#define ERROR_INVALID_ENVIRONMENT __MSABI_LONG(1805) +#define RPC_S_NO_MORE_BINDINGS __MSABI_LONG(1806) +#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT __MSABI_LONG(1807) +#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT __MSABI_LONG(1808) +#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT __MSABI_LONG(1809) +#define ERROR_DOMAIN_TRUST_INCONSISTENT __MSABI_LONG(1810) +#define ERROR_SERVER_HAS_OPEN_HANDLES __MSABI_LONG(1811) +#define ERROR_RESOURCE_DATA_NOT_FOUND __MSABI_LONG(1812) +#define ERROR_RESOURCE_TYPE_NOT_FOUND __MSABI_LONG(1813) +#define ERROR_RESOURCE_NAME_NOT_FOUND __MSABI_LONG(1814) +#define ERROR_RESOURCE_LANG_NOT_FOUND __MSABI_LONG(1815) +#define ERROR_NOT_ENOUGH_QUOTA __MSABI_LONG(1816) +#define RPC_S_NO_INTERFACES __MSABI_LONG(1817) +#define RPC_S_CALL_CANCELLED __MSABI_LONG(1818) +#define RPC_S_BINDING_INCOMPLETE __MSABI_LONG(1819) +#define RPC_S_COMM_FAILURE __MSABI_LONG(1820) +#define RPC_S_UNSUPPORTED_AUTHN_LEVEL __MSABI_LONG(1821) +#define RPC_S_NO_PRINC_NAME __MSABI_LONG(1822) +#define RPC_S_NOT_RPC_ERROR __MSABI_LONG(1823) +#define RPC_S_UUID_LOCAL_ONLY __MSABI_LONG(1824) +#define RPC_S_SEC_PKG_ERROR __MSABI_LONG(1825) +#define RPC_S_NOT_CANCELLED __MSABI_LONG(1826) +#define RPC_X_INVALID_ES_ACTION __MSABI_LONG(1827) +#define RPC_X_WRONG_ES_VERSION __MSABI_LONG(1828) +#define RPC_X_WRONG_STUB_VERSION __MSABI_LONG(1829) +#define RPC_X_INVALID_PIPE_OBJECT __MSABI_LONG(1830) +#define RPC_X_WRONG_PIPE_ORDER __MSABI_LONG(1831) +#define RPC_X_WRONG_PIPE_VERSION __MSABI_LONG(1832) +#define RPC_S_COOKIE_AUTH_FAILED __MSABI_LONG(1833) +#define RPC_S_DO_NOT_DISTURB __MSABI_LONG(1834) +#define RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED __MSABI_LONG(1835) +#define RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH __MSABI_LONG(1836) +#define RPC_S_GROUP_MEMBER_NOT_FOUND __MSABI_LONG(1898) +#define EPT_S_CANT_CREATE __MSABI_LONG(1899) +#define RPC_S_INVALID_OBJECT __MSABI_LONG(1900) +#define ERROR_INVALID_TIME __MSABI_LONG(1901) +#define ERROR_INVALID_FORM_NAME __MSABI_LONG(1902) +#define ERROR_INVALID_FORM_SIZE __MSABI_LONG(1903) +#define ERROR_ALREADY_WAITING __MSABI_LONG(1904) +#define ERROR_PRINTER_DELETED __MSABI_LONG(1905) +#define ERROR_INVALID_PRINTER_STATE __MSABI_LONG(1906) +#define ERROR_PASSWORD_MUST_CHANGE __MSABI_LONG(1907) +#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND __MSABI_LONG(1908) +#define ERROR_ACCOUNT_LOCKED_OUT __MSABI_LONG(1909) +#define OR_INVALID_OXID __MSABI_LONG(1910) +#define OR_INVALID_OID __MSABI_LONG(1911) +#define OR_INVALID_SET __MSABI_LONG(1912) +#define RPC_S_SEND_INCOMPLETE __MSABI_LONG(1913) +#define RPC_S_INVALID_ASYNC_HANDLE __MSABI_LONG(1914) +#define RPC_S_INVALID_ASYNC_CALL __MSABI_LONG(1915) +#define RPC_X_PIPE_CLOSED __MSABI_LONG(1916) +#define RPC_X_PIPE_DISCIPLINE_ERROR __MSABI_LONG(1917) +#define RPC_X_PIPE_EMPTY __MSABI_LONG(1918) +#define ERROR_NO_SITENAME __MSABI_LONG(1919) +#define ERROR_CANT_ACCESS_FILE __MSABI_LONG(1920) +#define ERROR_CANT_RESOLVE_FILENAME __MSABI_LONG(1921) +#define RPC_S_ENTRY_TYPE_MISMATCH __MSABI_LONG(1922) +#define RPC_S_NOT_ALL_OBJS_EXPORTED __MSABI_LONG(1923) +#define RPC_S_INTERFACE_NOT_EXPORTED __MSABI_LONG(1924) +#define RPC_S_PROFILE_NOT_ADDED __MSABI_LONG(1925) +#define RPC_S_PRF_ELT_NOT_ADDED __MSABI_LONG(1926) +#define RPC_S_PRF_ELT_NOT_REMOVED __MSABI_LONG(1927) +#define RPC_S_GRP_ELT_NOT_ADDED __MSABI_LONG(1928) +#define RPC_S_GRP_ELT_NOT_REMOVED __MSABI_LONG(1929) +#define ERROR_KM_DRIVER_BLOCKED __MSABI_LONG(1930) +#define ERROR_CONTEXT_EXPIRED __MSABI_LONG(1931) +#define ERROR_PER_USER_TRUST_QUOTA_EXCEEDED __MSABI_LONG(1932) +#define ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED __MSABI_LONG(1933) +#define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED __MSABI_LONG(1934) +#define ERROR_AUTHENTICATION_FIREWALL_FAILED __MSABI_LONG(1935) +#define ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED __MSABI_LONG(1936) +#define ERROR_NTLM_BLOCKED __MSABI_LONG(1937) +#define ERROR_PASSWORD_CHANGE_REQUIRED __MSABI_LONG(1938) +#define ERROR_LOST_MODE_LOGON_RESTRICTION __MSABI_LONG(1939) +#define ERROR_INVALID_PIXEL_FORMAT __MSABI_LONG(2000) +#define ERROR_BAD_DRIVER __MSABI_LONG(2001) +#define ERROR_INVALID_WINDOW_STYLE __MSABI_LONG(2002) +#define ERROR_METAFILE_NOT_SUPPORTED __MSABI_LONG(2003) +#define ERROR_TRANSFORM_NOT_SUPPORTED __MSABI_LONG(2004) +#define ERROR_CLIPPING_NOT_SUPPORTED __MSABI_LONG(2005) +#define ERROR_INVALID_CMM __MSABI_LONG(2010) +#define ERROR_INVALID_PROFILE __MSABI_LONG(2011) +#define ERROR_TAG_NOT_FOUND __MSABI_LONG(2012) +#define ERROR_TAG_NOT_PRESENT __MSABI_LONG(2013) +#define ERROR_DUPLICATE_TAG __MSABI_LONG(2014) +#define ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE __MSABI_LONG(2015) +#define ERROR_PROFILE_NOT_FOUND __MSABI_LONG(2016) +#define ERROR_INVALID_COLORSPACE __MSABI_LONG(2017) +#define ERROR_ICM_NOT_ENABLED __MSABI_LONG(2018) +#define ERROR_DELETING_ICM_XFORM __MSABI_LONG(2019) +#define ERROR_INVALID_TRANSFORM __MSABI_LONG(2020) +#define ERROR_COLORSPACE_MISMATCH __MSABI_LONG(2021) +#define ERROR_INVALID_COLORINDEX __MSABI_LONG(2022) +#define ERROR_CONNECTED_OTHER_PASSWORD __MSABI_LONG(2108) +#define ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT __MSABI_LONG(2109) +#define ERROR_BAD_USERNAME __MSABI_LONG(2202) +#define ERROR_NOT_CONNECTED __MSABI_LONG(2250) +#define ERROR_OPEN_FILES __MSABI_LONG(2401) +#define ERROR_ACTIVE_CONNECTIONS __MSABI_LONG(2402) +#define ERROR_DEVICE_IN_USE __MSABI_LONG(2404) +#define ERROR_UNKNOWN_PRINT_MONITOR __MSABI_LONG(3000) +#define ERROR_PRINTER_DRIVER_IN_USE __MSABI_LONG(3001) +#define ERROR_SPOOL_FILE_NOT_FOUND __MSABI_LONG(3002) +#define ERROR_SPL_NO_STARTDOC __MSABI_LONG(3003) +#define ERROR_SPL_NO_ADDJOB __MSABI_LONG(3004) +#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED __MSABI_LONG(3005) +#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED __MSABI_LONG(3006) +#define ERROR_INVALID_PRINT_MONITOR __MSABI_LONG(3007) +#define ERROR_PRINT_MONITOR_IN_USE __MSABI_LONG(3008) +#define ERROR_PRINTER_HAS_JOBS_QUEUED __MSABI_LONG(3009) +#define ERROR_SUCCESS_REBOOT_REQUIRED __MSABI_LONG(3010) +#define ERROR_SUCCESS_RESTART_REQUIRED __MSABI_LONG(3011) +#define ERROR_PRINTER_NOT_FOUND __MSABI_LONG(3012) +#define ERROR_PRINTER_DRIVER_WARNED __MSABI_LONG(3013) +#define ERROR_PRINTER_DRIVER_BLOCKED __MSABI_LONG(3014) +#define ERROR_PRINTER_DRIVER_PACKAGE_IN_USE __MSABI_LONG(3015) +#define ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND __MSABI_LONG(3016) +#define ERROR_FAIL_REBOOT_REQUIRED __MSABI_LONG(3017) +#define ERROR_FAIL_REBOOT_INITIATED __MSABI_LONG(3018) +#define ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED __MSABI_LONG(3019) +#define ERROR_PRINT_JOB_RESTART_REQUIRED __MSABI_LONG(3020) +#define ERROR_INVALID_PRINTER_DRIVER_MANIFEST __MSABI_LONG(3021) +#define ERROR_PRINTER_NOT_SHAREABLE __MSABI_LONG(3022) +#define ERROR_SERVER_SERVICE_CALL_REQUIRES_SMB1 __MSABI_LONG(3023) +#define ERROR_NETWORK_AUTHENTICATION_PROMPT_CANCELED __MSABI_LONG(3024) +#define ERROR_REQUEST_PAUSED __MSABI_LONG(3050) +#define ERROR_APPEXEC_CONDITION_NOT_SATISFIED __MSABI_LONG(3060) +#define ERROR_APPEXEC_HANDLE_INVALIDATED __MSABI_LONG(3061) +#define ERROR_APPEXEC_INVALID_HOST_GENERATION __MSABI_LONG(3062) +#define ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION __MSABI_LONG(3063) +#define ERROR_APPEXEC_INVALID_HOST_STATE __MSABI_LONG(3064) +#define ERROR_APPEXEC_NO_DONOR __MSABI_LONG(3065) +#define ERROR_APPEXEC_HOST_ID_MISMATCH __MSABI_LONG(3066) +#define ERROR_APPEXEC_UNKNOWN_USER __MSABI_LONG(3067) +#define ERROR_APPEXEC_APP_COMPAT_BLOCK __MSABI_LONG(3068) +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT __MSABI_LONG(3069) +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_TERMINATION __MSABI_LONG(3070) +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_LICENSING __MSABI_LONG(3071) +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_RESOURCES __MSABI_LONG(3072) +#define ERROR_VRF_VOLATILE_CFG_AND_IO_ENABLED __MSABI_LONG(3080) +#define ERROR_VRF_VOLATILE_NOT_STOPPABLE __MSABI_LONG(3081) +#define ERROR_VRF_VOLATILE_SAFE_MODE __MSABI_LONG(3082) +#define ERROR_VRF_VOLATILE_NOT_RUNNABLE_SYSTEM __MSABI_LONG(3083) +#define ERROR_VRF_VOLATILE_NOT_SUPPORTED_RULECLASS __MSABI_LONG(3084) +#define ERROR_VRF_VOLATILE_PROTECTED_DRIVER __MSABI_LONG(3085) +#define ERROR_VRF_VOLATILE_NMI_REGISTERED __MSABI_LONG(3086) +#define ERROR_VRF_VOLATILE_SETTINGS_CONFLICT __MSABI_LONG(3087) +#define ERROR_DIF_IOCALLBACK_NOT_REPLACED __MSABI_LONG(3190) +#define ERROR_DIF_LIVEDUMP_LIMIT_EXCEEDED __MSABI_LONG(3191) +#define ERROR_DIF_VOLATILE_SECTION_NOT_LOCKED __MSABI_LONG(3192) +#define ERROR_DIF_VOLATILE_DRIVER_HOTPATCHED __MSABI_LONG(3193) +#define ERROR_DIF_VOLATILE_INVALID_INFO __MSABI_LONG(3194) +#define ERROR_DIF_VOLATILE_DRIVER_IS_NOT_RUNNING __MSABI_LONG(3195) +#define ERROR_DIF_VOLATILE_PLUGIN_IS_NOT_RUNNING __MSABI_LONG(3196) +#define ERROR_DIF_VOLATILE_PLUGIN_CHANGE_NOT_ALLOWED __MSABI_LONG(3197) +#define ERROR_DIF_VOLATILE_NOT_ALLOWED __MSABI_LONG(3198) +#define ERROR_DIF_BINDING_API_NOT_FOUND __MSABI_LONG(3199) +#define ERROR_IO_REISSUE_AS_CACHED __MSABI_LONG(3950) +#define ERROR_WINS_INTERNAL __MSABI_LONG(4000) +#define ERROR_CAN_NOT_DEL_LOCAL_WINS __MSABI_LONG(4001) +#define ERROR_STATIC_INIT __MSABI_LONG(4002) +#define ERROR_INC_BACKUP __MSABI_LONG(4003) +#define ERROR_FULL_BACKUP __MSABI_LONG(4004) +#define ERROR_REC_NON_EXISTENT __MSABI_LONG(4005) +#define ERROR_RPL_NOT_ALLOWED __MSABI_LONG(4006) +#define ERROR_DHCP_ADDRESS_CONFLICT __MSABI_LONG(4100) +#define ERROR_WMI_GUID_NOT_FOUND __MSABI_LONG(4200) +#define ERROR_WMI_INSTANCE_NOT_FOUND __MSABI_LONG(4201) +#define ERROR_WMI_ITEMID_NOT_FOUND __MSABI_LONG(4202) +#define ERROR_WMI_TRY_AGAIN __MSABI_LONG(4203) +#define ERROR_WMI_DP_NOT_FOUND __MSABI_LONG(4204) +#define ERROR_WMI_UNRESOLVED_INSTANCE_REF __MSABI_LONG(4205) +#define ERROR_WMI_ALREADY_ENABLED __MSABI_LONG(4206) +#define ERROR_WMI_GUID_DISCONNECTED __MSABI_LONG(4207) +#define ERROR_WMI_SERVER_UNAVAILABLE __MSABI_LONG(4208) +#define ERROR_WMI_DP_FAILED __MSABI_LONG(4209) +#define ERROR_WMI_INVALID_MOF __MSABI_LONG(4210) +#define ERROR_WMI_INVALID_REGINFO __MSABI_LONG(4211) +#define ERROR_WMI_ALREADY_DISABLED __MSABI_LONG(4212) +#define ERROR_WMI_READ_ONLY __MSABI_LONG(4213) +#define ERROR_WMI_SET_FAILURE __MSABI_LONG(4214) +#define ERROR_INVALID_MEDIA __MSABI_LONG(4300) +#define ERROR_INVALID_LIBRARY __MSABI_LONG(4301) +#define ERROR_INVALID_MEDIA_POOL __MSABI_LONG(4302) +#define ERROR_DRIVE_MEDIA_MISMATCH __MSABI_LONG(4303) +#define ERROR_MEDIA_OFFLINE __MSABI_LONG(4304) +#define ERROR_LIBRARY_OFFLINE __MSABI_LONG(4305) +#define ERROR_EMPTY __MSABI_LONG(4306) +#define ERROR_NOT_EMPTY __MSABI_LONG(4307) +#define ERROR_MEDIA_UNAVAILABLE __MSABI_LONG(4308) +#define ERROR_RESOURCE_DISABLED __MSABI_LONG(4309) +#define ERROR_INVALID_CLEANER __MSABI_LONG(4310) +#define ERROR_UNABLE_TO_CLEAN __MSABI_LONG(4311) +#define ERROR_OBJECT_NOT_FOUND __MSABI_LONG(4312) +#define ERROR_DATABASE_FAILURE __MSABI_LONG(4313) +#define ERROR_DATABASE_FULL __MSABI_LONG(4314) +#define ERROR_MEDIA_INCOMPATIBLE __MSABI_LONG(4315) +#define ERROR_RESOURCE_NOT_PRESENT __MSABI_LONG(4316) +#define ERROR_INVALID_OPERATION __MSABI_LONG(4317) +#define ERROR_MEDIA_NOT_AVAILABLE __MSABI_LONG(4318) +#define ERROR_DEVICE_NOT_AVAILABLE __MSABI_LONG(4319) +#define ERROR_REQUEST_REFUSED __MSABI_LONG(4320) +#define ERROR_INVALID_DRIVE_OBJECT __MSABI_LONG(4321) +#define ERROR_LIBRARY_FULL __MSABI_LONG(4322) +#define ERROR_MEDIUM_NOT_ACCESSIBLE __MSABI_LONG(4323) +#define ERROR_UNABLE_TO_LOAD_MEDIUM __MSABI_LONG(4324) +#define ERROR_UNABLE_TO_INVENTORY_DRIVE __MSABI_LONG(4325) +#define ERROR_UNABLE_TO_INVENTORY_SLOT __MSABI_LONG(4326) +#define ERROR_UNABLE_TO_INVENTORY_TRANSPORT __MSABI_LONG(4327) +#define ERROR_TRANSPORT_FULL __MSABI_LONG(4328) +#define ERROR_CONTROLLING_IEPORT __MSABI_LONG(4329) +#define ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA __MSABI_LONG(4330) +#define ERROR_CLEANER_SLOT_SET __MSABI_LONG(4331) +#define ERROR_CLEANER_SLOT_NOT_SET __MSABI_LONG(4332) +#define ERROR_CLEANER_CARTRIDGE_SPENT __MSABI_LONG(4333) +#define ERROR_UNEXPECTED_OMID __MSABI_LONG(4334) +#define ERROR_CANT_DELETE_LAST_ITEM __MSABI_LONG(4335) +#define ERROR_MESSAGE_EXCEEDS_MAX_SIZE __MSABI_LONG(4336) +#define ERROR_VOLUME_CONTAINS_SYS_FILES __MSABI_LONG(4337) +#define ERROR_INDIGENOUS_TYPE __MSABI_LONG(4338) +#define ERROR_NO_SUPPORTING_DRIVES __MSABI_LONG(4339) +#define ERROR_CLEANER_CARTRIDGE_INSTALLED __MSABI_LONG(4340) +#define ERROR_IEPORT_FULL __MSABI_LONG(4341) +#define ERROR_FILE_OFFLINE __MSABI_LONG(4350) +#define ERROR_REMOTE_STORAGE_NOT_ACTIVE __MSABI_LONG(4351) +#define ERROR_REMOTE_STORAGE_MEDIA_ERROR __MSABI_LONG(4352) +#define ERROR_NOT_A_REPARSE_POINT __MSABI_LONG(4390) +#define ERROR_REPARSE_ATTRIBUTE_CONFLICT __MSABI_LONG(4391) +#define ERROR_INVALID_REPARSE_DATA __MSABI_LONG(4392) +#define ERROR_REPARSE_TAG_INVALID __MSABI_LONG(4393) +#define ERROR_REPARSE_TAG_MISMATCH __MSABI_LONG(4394) +#define ERROR_REPARSE_POINT_ENCOUNTERED __MSABI_LONG(4395) +#define ERROR_APP_DATA_NOT_FOUND __MSABI_LONG(4400) +#define ERROR_APP_DATA_EXPIRED __MSABI_LONG(4401) +#define ERROR_APP_DATA_CORRUPT __MSABI_LONG(4402) +#define ERROR_APP_DATA_LIMIT_EXCEEDED __MSABI_LONG(4403) +#define ERROR_APP_DATA_REBOOT_REQUIRED __MSABI_LONG(4404) +#define ERROR_SECUREBOOT_ROLLBACK_DETECTED __MSABI_LONG(4420) +#define ERROR_SECUREBOOT_POLICY_VIOLATION __MSABI_LONG(4421) +#define ERROR_SECUREBOOT_INVALID_POLICY __MSABI_LONG(4422) +#define ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND __MSABI_LONG(4423) +#define ERROR_SECUREBOOT_POLICY_NOT_SIGNED __MSABI_LONG(4424) +#define ERROR_SECUREBOOT_NOT_ENABLED __MSABI_LONG(4425) +#define ERROR_SECUREBOOT_FILE_REPLACED __MSABI_LONG(4426) +#define ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED __MSABI_LONG(4427) +#define ERROR_SECUREBOOT_POLICY_UNKNOWN __MSABI_LONG(4428) +#define ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION __MSABI_LONG(4429) +#define ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH __MSABI_LONG(4430) +#define ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED __MSABI_LONG(4431) +#define ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH __MSABI_LONG(4432) +#define ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING __MSABI_LONG(4433) +#define ERROR_SECUREBOOT_NOT_BASE_POLICY __MSABI_LONG(4434) +#define ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY __MSABI_LONG(4435) +#define ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED __MSABI_LONG(4440) +#define ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED __MSABI_LONG(4441) +#define ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED __MSABI_LONG(4442) +#define ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED __MSABI_LONG(4443) +#define ERROR_ALREADY_HAS_STREAM_ID __MSABI_LONG(4444) +#define ERROR_SMR_GARBAGE_COLLECTION_REQUIRED __MSABI_LONG(4445) +#define ERROR_WOF_WIM_HEADER_CORRUPT __MSABI_LONG(4446) +#define ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT __MSABI_LONG(4447) +#define ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT __MSABI_LONG(4448) +#define ERROR_OBJECT_IS_IMMUTABLE __MSABI_LONG(4449) +#define ERROR_VOLUME_NOT_SIS_ENABLED __MSABI_LONG(4500) +#define ERROR_DEPENDENT_RESOURCE_EXISTS __MSABI_LONG(5001) +#define ERROR_DEPENDENCY_NOT_FOUND __MSABI_LONG(5002) +#define ERROR_DEPENDENCY_ALREADY_EXISTS __MSABI_LONG(5003) +#define ERROR_RESOURCE_NOT_ONLINE __MSABI_LONG(5004) +#define ERROR_HOST_NODE_NOT_AVAILABLE __MSABI_LONG(5005) +#define ERROR_RESOURCE_NOT_AVAILABLE __MSABI_LONG(5006) +#define ERROR_RESOURCE_NOT_FOUND __MSABI_LONG(5007) +#define ERROR_SHUTDOWN_CLUSTER __MSABI_LONG(5008) +#define ERROR_CANT_EVICT_ACTIVE_NODE __MSABI_LONG(5009) +#define ERROR_OBJECT_ALREADY_EXISTS __MSABI_LONG(5010) +#define ERROR_OBJECT_IN_LIST __MSABI_LONG(5011) +#define ERROR_GROUP_NOT_AVAILABLE __MSABI_LONG(5012) +#define ERROR_GROUP_NOT_FOUND __MSABI_LONG(5013) +#define ERROR_GROUP_NOT_ONLINE __MSABI_LONG(5014) +#define ERROR_HOST_NODE_NOT_RESOURCE_OWNER __MSABI_LONG(5015) +#define ERROR_HOST_NODE_NOT_GROUP_OWNER __MSABI_LONG(5016) +#define ERROR_RESMON_CREATE_FAILED __MSABI_LONG(5017) +#define ERROR_RESMON_ONLINE_FAILED __MSABI_LONG(5018) +#define ERROR_RESOURCE_ONLINE __MSABI_LONG(5019) +#define ERROR_QUORUM_RESOURCE __MSABI_LONG(5020) +#define ERROR_NOT_QUORUM_CAPABLE __MSABI_LONG(5021) +#define ERROR_CLUSTER_SHUTTING_DOWN __MSABI_LONG(5022) +#define ERROR_INVALID_STATE __MSABI_LONG(5023) +#define ERROR_RESOURCE_PROPERTIES_STORED __MSABI_LONG(5024) +#define ERROR_NOT_QUORUM_CLASS __MSABI_LONG(5025) +#define ERROR_CORE_RESOURCE __MSABI_LONG(5026) +#define ERROR_QUORUM_RESOURCE_ONLINE_FAILED __MSABI_LONG(5027) +#define ERROR_QUORUMLOG_OPEN_FAILED __MSABI_LONG(5028) +#define ERROR_CLUSTERLOG_CORRUPT __MSABI_LONG(5029) +#define ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE __MSABI_LONG(5030) +#define ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE __MSABI_LONG(5031) +#define ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND __MSABI_LONG(5032) +#define ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE __MSABI_LONG(5033) +#define ERROR_QUORUM_OWNER_ALIVE __MSABI_LONG(5034) +#define ERROR_NETWORK_NOT_AVAILABLE __MSABI_LONG(5035) +#define ERROR_NODE_NOT_AVAILABLE __MSABI_LONG(5036) +#define ERROR_ALL_NODES_NOT_AVAILABLE __MSABI_LONG(5037) +#define ERROR_RESOURCE_FAILED __MSABI_LONG(5038) +#define ERROR_CLUSTER_INVALID_NODE __MSABI_LONG(5039) +#define ERROR_CLUSTER_NODE_EXISTS __MSABI_LONG(5040) +#define ERROR_CLUSTER_JOIN_IN_PROGRESS __MSABI_LONG(5041) +#define ERROR_CLUSTER_NODE_NOT_FOUND __MSABI_LONG(5042) +#define ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND __MSABI_LONG(5043) +#define ERROR_CLUSTER_NETWORK_EXISTS __MSABI_LONG(5044) +#define ERROR_CLUSTER_NETWORK_NOT_FOUND __MSABI_LONG(5045) +#define ERROR_CLUSTER_NETINTERFACE_EXISTS __MSABI_LONG(5046) +#define ERROR_CLUSTER_NETINTERFACE_NOT_FOUND __MSABI_LONG(5047) +#define ERROR_CLUSTER_INVALID_REQUEST __MSABI_LONG(5048) +#define ERROR_CLUSTER_INVALID_NETWORK_PROVIDER __MSABI_LONG(5049) +#define ERROR_CLUSTER_NODE_DOWN __MSABI_LONG(5050) +#define ERROR_CLUSTER_NODE_UNREACHABLE __MSABI_LONG(5051) +#define ERROR_CLUSTER_NODE_NOT_MEMBER __MSABI_LONG(5052) +#define ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS __MSABI_LONG(5053) +#define ERROR_CLUSTER_INVALID_NETWORK __MSABI_LONG(5054) +#define ERROR_CLUSTER_NODE_UP __MSABI_LONG(5056) +#define ERROR_CLUSTER_IPADDR_IN_USE __MSABI_LONG(5057) +#define ERROR_CLUSTER_NODE_NOT_PAUSED __MSABI_LONG(5058) +#define ERROR_CLUSTER_NO_SECURITY_CONTEXT __MSABI_LONG(5059) +#define ERROR_CLUSTER_NETWORK_NOT_INTERNAL __MSABI_LONG(5060) +#define ERROR_CLUSTER_NODE_ALREADY_UP __MSABI_LONG(5061) +#define ERROR_CLUSTER_NODE_ALREADY_DOWN __MSABI_LONG(5062) +#define ERROR_CLUSTER_NETWORK_ALREADY_ONLINE __MSABI_LONG(5063) +#define ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE __MSABI_LONG(5064) +#define ERROR_CLUSTER_NODE_ALREADY_MEMBER __MSABI_LONG(5065) +#define ERROR_CLUSTER_LAST_INTERNAL_NETWORK __MSABI_LONG(5066) +#define ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS __MSABI_LONG(5067) +#define ERROR_INVALID_OPERATION_ON_QUORUM __MSABI_LONG(5068) +#define ERROR_DEPENDENCY_NOT_ALLOWED __MSABI_LONG(5069) +#define ERROR_CLUSTER_NODE_PAUSED __MSABI_LONG(5070) +#define ERROR_NODE_CANT_HOST_RESOURCE __MSABI_LONG(5071) +#define ERROR_CLUSTER_NODE_NOT_READY __MSABI_LONG(5072) +#define ERROR_CLUSTER_NODE_SHUTTING_DOWN __MSABI_LONG(5073) +#define ERROR_CLUSTER_JOIN_ABORTED __MSABI_LONG(5074) +#define ERROR_CLUSTER_INCOMPATIBLE_VERSIONS __MSABI_LONG(5075) +#define ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED __MSABI_LONG(5076) +#define ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED __MSABI_LONG(5077) +#define ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND __MSABI_LONG(5078) +#define ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED __MSABI_LONG(5079) +#define ERROR_CLUSTER_RESNAME_NOT_FOUND __MSABI_LONG(5080) +#define ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED __MSABI_LONG(5081) +#define ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST __MSABI_LONG(5082) +#define ERROR_CLUSTER_DATABASE_SEQMISMATCH __MSABI_LONG(5083) +#define ERROR_RESMON_INVALID_STATE __MSABI_LONG(5084) +#define ERROR_CLUSTER_GUM_NOT_LOCKER __MSABI_LONG(5085) +#define ERROR_QUORUM_DISK_NOT_FOUND __MSABI_LONG(5086) +#define ERROR_DATABASE_BACKUP_CORRUPT __MSABI_LONG(5087) +#define ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT __MSABI_LONG(5088) +#define ERROR_RESOURCE_PROPERTY_UNCHANGEABLE __MSABI_LONG(5089) +#define ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE __MSABI_LONG(5890) +#define ERROR_CLUSTER_QUORUMLOG_NOT_FOUND __MSABI_LONG(5891) +#define ERROR_CLUSTER_MEMBERSHIP_HALT __MSABI_LONG(5892) +#define ERROR_CLUSTER_INSTANCE_ID_MISMATCH __MSABI_LONG(5893) +#define ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP __MSABI_LONG(5894) +#define ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH __MSABI_LONG(5895) +#define ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP __MSABI_LONG(5896) +#define ERROR_CLUSTER_PARAMETER_MISMATCH __MSABI_LONG(5897) +#define ERROR_NODE_CANNOT_BE_CLUSTERED __MSABI_LONG(5898) +#define ERROR_CLUSTER_WRONG_OS_VERSION __MSABI_LONG(5899) +#define ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME __MSABI_LONG(5900) +#define ERROR_CLUSCFG_ALREADY_COMMITTED __MSABI_LONG(5901) +#define ERROR_CLUSCFG_ROLLBACK_FAILED __MSABI_LONG(5902) +#define ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT __MSABI_LONG(5903) +#define ERROR_CLUSTER_OLD_VERSION __MSABI_LONG(5904) +#define ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME __MSABI_LONG(5905) +#define ERROR_CLUSTER_NO_NET_ADAPTERS __MSABI_LONG(5906) +#define ERROR_CLUSTER_POISONED __MSABI_LONG(5907) +#define ERROR_CLUSTER_GROUP_MOVING __MSABI_LONG(5908) +#define ERROR_CLUSTER_RESOURCE_TYPE_BUSY __MSABI_LONG(5909) +#define ERROR_RESOURCE_CALL_TIMED_OUT __MSABI_LONG(5910) +#define ERROR_INVALID_CLUSTER_IPV6_ADDRESS __MSABI_LONG(5911) +#define ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION __MSABI_LONG(5912) +#define ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS __MSABI_LONG(5913) +#define ERROR_CLUSTER_PARTIAL_SEND __MSABI_LONG(5914) +#define ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION __MSABI_LONG(5915) +#define ERROR_CLUSTER_INVALID_STRING_TERMINATION __MSABI_LONG(5916) +#define ERROR_CLUSTER_INVALID_STRING_FORMAT __MSABI_LONG(5917) +#define ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS __MSABI_LONG(5918) +#define ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS __MSABI_LONG(5919) +#define ERROR_CLUSTER_NULL_DATA __MSABI_LONG(5920) +#define ERROR_CLUSTER_PARTIAL_READ __MSABI_LONG(5921) +#define ERROR_CLUSTER_PARTIAL_WRITE __MSABI_LONG(5922) +#define ERROR_CLUSTER_CANT_DESERIALIZE_DATA __MSABI_LONG(5923) +#define ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT __MSABI_LONG(5924) +#define ERROR_CLUSTER_NO_QUORUM __MSABI_LONG(5925) +#define ERROR_CLUSTER_INVALID_IPV6_NETWORK __MSABI_LONG(5926) +#define ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK __MSABI_LONG(5927) +#define ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP __MSABI_LONG(5928) +#define ERROR_DEPENDENCY_TREE_TOO_COMPLEX __MSABI_LONG(5929) +#define ERROR_EXCEPTION_IN_RESOURCE_CALL __MSABI_LONG(5930) +#define ERROR_CLUSTER_RHS_FAILED_INITIALIZATION __MSABI_LONG(5931) +#define ERROR_CLUSTER_NOT_INSTALLED __MSABI_LONG(5932) +#define ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE __MSABI_LONG(5933) +#define ERROR_CLUSTER_MAX_NODES_IN_CLUSTER __MSABI_LONG(5934) +#define ERROR_CLUSTER_TOO_MANY_NODES __MSABI_LONG(5935) +#define ERROR_CLUSTER_OBJECT_ALREADY_USED __MSABI_LONG(5936) +#define ERROR_NONCORE_GROUPS_FOUND __MSABI_LONG(5937) +#define ERROR_FILE_SHARE_RESOURCE_CONFLICT __MSABI_LONG(5938) +#define ERROR_CLUSTER_EVICT_INVALID_REQUEST __MSABI_LONG(5939) +#define ERROR_CLUSTER_SINGLETON_RESOURCE __MSABI_LONG(5940) +#define ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE __MSABI_LONG(5941) +#define ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED __MSABI_LONG(5942) +#define ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR __MSABI_LONG(5943) +#define ERROR_CLUSTER_GROUP_BUSY __MSABI_LONG(5944) +#define ERROR_CLUSTER_NOT_SHARED_VOLUME __MSABI_LONG(5945) +#define ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR __MSABI_LONG(5946) +#define ERROR_CLUSTER_SHARED_VOLUMES_IN_USE __MSABI_LONG(5947) +#define ERROR_CLUSTER_USE_SHARED_VOLUMES_API __MSABI_LONG(5948) +#define ERROR_CLUSTER_BACKUP_IN_PROGRESS __MSABI_LONG(5949) +#define ERROR_NON_CSV_PATH __MSABI_LONG(5950) +#define ERROR_CSV_VOLUME_NOT_LOCAL __MSABI_LONG(5951) +#define ERROR_CLUSTER_WATCHDOG_TERMINATING __MSABI_LONG(5952) +#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES __MSABI_LONG(5953) +#define ERROR_CLUSTER_INVALID_NODE_WEIGHT __MSABI_LONG(5954) +#define ERROR_CLUSTER_RESOURCE_VETOED_CALL __MSABI_LONG(5955) +#define ERROR_RESMON_SYSTEM_RESOURCES_LACKING __MSABI_LONG(5956) +#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION __MSABI_LONG(5957) +#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE __MSABI_LONG(5958) +#define ERROR_CLUSTER_GROUP_QUEUED __MSABI_LONG(5959) +#define ERROR_CLUSTER_RESOURCE_LOCKED_STATUS __MSABI_LONG(5960) +#define ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED __MSABI_LONG(5961) +#define ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS __MSABI_LONG(5962) +#define ERROR_CLUSTER_DISK_NOT_CONNECTED __MSABI_LONG(5963) +#define ERROR_DISK_NOT_CSV_CAPABLE __MSABI_LONG(5964) +#define ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE __MSABI_LONG(5965) +#define ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED __MSABI_LONG(5966) +#define ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED __MSABI_LONG(5967) +#define ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES __MSABI_LONG(5968) +#define ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES __MSABI_LONG(5969) +#define ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE __MSABI_LONG(5970) +#define ERROR_CLUSTER_AFFINITY_CONFLICT __MSABI_LONG(5971) +#define ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE __MSABI_LONG(5972) +#define ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS __MSABI_LONG(5973) +#define ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED __MSABI_LONG(5974) +#define ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED __MSABI_LONG(5975) +#define ERROR_CLUSTER_UPGRADE_IN_PROGRESS __MSABI_LONG(5976) +#define ERROR_CLUSTER_UPGRADE_INCOMPLETE __MSABI_LONG(5977) +#define ERROR_CLUSTER_NODE_IN_GRACE_PERIOD __MSABI_LONG(5978) +#define ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT __MSABI_LONG(5979) +#define ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER __MSABI_LONG(5980) +#define ERROR_CLUSTER_RESOURCE_NOT_MONITORED __MSABI_LONG(5981) +#define ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED __MSABI_LONG(5982) +#define ERROR_CLUSTER_RESOURCE_IS_REPLICATED __MSABI_LONG(5983) +#define ERROR_CLUSTER_NODE_ISOLATED __MSABI_LONG(5984) +#define ERROR_CLUSTER_NODE_QUARANTINED __MSABI_LONG(5985) +#define ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED __MSABI_LONG(5986) +#define ERROR_CLUSTER_SPACE_DEGRADED __MSABI_LONG(5987) +#define ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED __MSABI_LONG(5988) +#define ERROR_CLUSTER_CSV_INVALID_HANDLE __MSABI_LONG(5989) +#define ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR __MSABI_LONG(5990) +#define ERROR_GROUPSET_NOT_AVAILABLE __MSABI_LONG(5991) +#define ERROR_GROUPSET_NOT_FOUND __MSABI_LONG(5992) +#define ERROR_GROUPSET_CANT_PROVIDE __MSABI_LONG(5993) +#define ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND __MSABI_LONG(5994) +#define ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY __MSABI_LONG(5995) +#define ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION __MSABI_LONG(5996) +#define ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS __MSABI_LONG(5997) +#define ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME __MSABI_LONG(5998) +#define ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE __MSABI_LONG(5999) +#define ERROR_ENCRYPTION_FAILED __MSABI_LONG(6000) +#define ERROR_DECRYPTION_FAILED __MSABI_LONG(6001) +#define ERROR_FILE_ENCRYPTED __MSABI_LONG(6002) +#define ERROR_NO_RECOVERY_POLICY __MSABI_LONG(6003) +#define ERROR_NO_EFS __MSABI_LONG(6004) +#define ERROR_WRONG_EFS __MSABI_LONG(6005) +#define ERROR_NO_USER_KEYS __MSABI_LONG(6006) +#define ERROR_FILE_NOT_ENCRYPTED __MSABI_LONG(6007) +#define ERROR_NOT_EXPORT_FORMAT __MSABI_LONG(6008) +#define ERROR_FILE_READ_ONLY __MSABI_LONG(6009) +#define ERROR_DIR_EFS_DISALLOWED __MSABI_LONG(6010) +#define ERROR_EFS_SERVER_NOT_TRUSTED __MSABI_LONG(6011) +#define ERROR_BAD_RECOVERY_POLICY __MSABI_LONG(6012) +#define ERROR_EFS_ALG_BLOB_TOO_BIG __MSABI_LONG(6013) +#define ERROR_VOLUME_NOT_SUPPORT_EFS __MSABI_LONG(6014) +#define ERROR_EFS_DISABLED __MSABI_LONG(6015) +#define ERROR_EFS_VERSION_NOT_SUPPORT __MSABI_LONG(6016) +#define ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE __MSABI_LONG(6017) +#define ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER __MSABI_LONG(6018) +#define ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE __MSABI_LONG(6019) +#define ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE __MSABI_LONG(6020) +#define ERROR_CS_ENCRYPTION_FILE_NOT_CSE __MSABI_LONG(6021) +#define ERROR_ENCRYPTION_POLICY_DENIES_OPERATION __MSABI_LONG(6022) +#define ERROR_WIP_ENCRYPTION_FAILED __MSABI_LONG(6023) +#define ERROR_NO_BROWSER_SERVERS_FOUND __MSABI_LONG(6118) +#define SCHED_E_SERVICE_NOT_LOCALSYSTEM __MSABI_LONG(6200) +#define ERROR_CLUSTER_OBJECT_IS_CLUSTER_SET_VM __MSABI_LONG(6250) +#define ERROR_LOG_SECTOR_INVALID __MSABI_LONG(6600) +#define ERROR_LOG_SECTOR_PARITY_INVALID __MSABI_LONG(6601) +#define ERROR_LOG_SECTOR_REMAPPED __MSABI_LONG(6602) +#define ERROR_LOG_BLOCK_INCOMPLETE __MSABI_LONG(6603) +#define ERROR_LOG_INVALID_RANGE __MSABI_LONG(6604) +#define ERROR_LOG_BLOCKS_EXHAUSTED __MSABI_LONG(6605) +#define ERROR_LOG_READ_CONTEXT_INVALID __MSABI_LONG(6606) +#define ERROR_LOG_RESTART_INVALID __MSABI_LONG(6607) +#define ERROR_LOG_BLOCK_VERSION __MSABI_LONG(6608) +#define ERROR_LOG_BLOCK_INVALID __MSABI_LONG(6609) +#define ERROR_LOG_READ_MODE_INVALID __MSABI_LONG(6610) +#define ERROR_LOG_NO_RESTART __MSABI_LONG(6611) +#define ERROR_LOG_METADATA_CORRUPT __MSABI_LONG(6612) +#define ERROR_LOG_METADATA_INVALID __MSABI_LONG(6613) +#define ERROR_LOG_METADATA_INCONSISTENT __MSABI_LONG(6614) +#define ERROR_LOG_RESERVATION_INVALID __MSABI_LONG(6615) +#define ERROR_LOG_CANT_DELETE __MSABI_LONG(6616) +#define ERROR_LOG_CONTAINER_LIMIT_EXCEEDED __MSABI_LONG(6617) +#define ERROR_LOG_START_OF_LOG __MSABI_LONG(6618) +#define ERROR_LOG_POLICY_ALREADY_INSTALLED __MSABI_LONG(6619) +#define ERROR_LOG_POLICY_NOT_INSTALLED __MSABI_LONG(6620) +#define ERROR_LOG_POLICY_INVALID __MSABI_LONG(6621) +#define ERROR_LOG_POLICY_CONFLICT __MSABI_LONG(6622) +#define ERROR_LOG_PINNED_ARCHIVE_TAIL __MSABI_LONG(6623) +#define ERROR_LOG_RECORD_NONEXISTENT __MSABI_LONG(6624) +#define ERROR_LOG_RECORDS_RESERVED_INVALID __MSABI_LONG(6625) +#define ERROR_LOG_SPACE_RESERVED_INVALID __MSABI_LONG(6626) +#define ERROR_LOG_TAIL_INVALID __MSABI_LONG(6627) +#define ERROR_LOG_FULL __MSABI_LONG(6628) +#define ERROR_COULD_NOT_RESIZE_LOG __MSABI_LONG(6629) +#define ERROR_LOG_MULTIPLEXED __MSABI_LONG(6630) +#define ERROR_LOG_DEDICATED __MSABI_LONG(6631) +#define ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS __MSABI_LONG(6632) +#define ERROR_LOG_ARCHIVE_IN_PROGRESS __MSABI_LONG(6633) +#define ERROR_LOG_EPHEMERAL __MSABI_LONG(6634) +#define ERROR_LOG_NOT_ENOUGH_CONTAINERS __MSABI_LONG(6635) +#define ERROR_LOG_CLIENT_ALREADY_REGISTERED __MSABI_LONG(6636) +#define ERROR_LOG_CLIENT_NOT_REGISTERED __MSABI_LONG(6637) +#define ERROR_LOG_FULL_HANDLER_IN_PROGRESS __MSABI_LONG(6638) +#define ERROR_LOG_CONTAINER_READ_FAILED __MSABI_LONG(6639) +#define ERROR_LOG_CONTAINER_WRITE_FAILED __MSABI_LONG(6640) +#define ERROR_LOG_CONTAINER_OPEN_FAILED __MSABI_LONG(6641) +#define ERROR_LOG_CONTAINER_STATE_INVALID __MSABI_LONG(6642) +#define ERROR_LOG_STATE_INVALID __MSABI_LONG(6643) +#define ERROR_LOG_PINNED __MSABI_LONG(6644) +#define ERROR_LOG_METADATA_FLUSH_FAILED __MSABI_LONG(6645) +#define ERROR_LOG_INCONSISTENT_SECURITY __MSABI_LONG(6646) +#define ERROR_LOG_APPENDED_FLUSH_FAILED __MSABI_LONG(6647) +#define ERROR_LOG_PINNED_RESERVATION __MSABI_LONG(6648) +#define ERROR_INVALID_TRANSACTION __MSABI_LONG(6700) +#define ERROR_TRANSACTION_NOT_ACTIVE __MSABI_LONG(6701) +#define ERROR_TRANSACTION_REQUEST_NOT_VALID __MSABI_LONG(6702) +#define ERROR_TRANSACTION_NOT_REQUESTED __MSABI_LONG(6703) +#define ERROR_TRANSACTION_ALREADY_ABORTED __MSABI_LONG(6704) +#define ERROR_TRANSACTION_ALREADY_COMMITTED __MSABI_LONG(6705) +#define ERROR_TM_INITIALIZATION_FAILED __MSABI_LONG(6706) +#define ERROR_RESOURCEMANAGER_READ_ONLY __MSABI_LONG(6707) +#define ERROR_TRANSACTION_NOT_JOINED __MSABI_LONG(6708) +#define ERROR_TRANSACTION_SUPERIOR_EXISTS __MSABI_LONG(6709) +#define ERROR_CRM_PROTOCOL_ALREADY_EXISTS __MSABI_LONG(6710) +#define ERROR_TRANSACTION_PROPAGATION_FAILED __MSABI_LONG(6711) +#define ERROR_CRM_PROTOCOL_NOT_FOUND __MSABI_LONG(6712) +#define ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER __MSABI_LONG(6713) +#define ERROR_CURRENT_TRANSACTION_NOT_VALID __MSABI_LONG(6714) +#define ERROR_TRANSACTION_NOT_FOUND __MSABI_LONG(6715) +#define ERROR_RESOURCEMANAGER_NOT_FOUND __MSABI_LONG(6716) +#define ERROR_ENLISTMENT_NOT_FOUND __MSABI_LONG(6717) +#define ERROR_TRANSACTIONMANAGER_NOT_FOUND __MSABI_LONG(6718) +#define ERROR_TRANSACTIONMANAGER_NOT_ONLINE __MSABI_LONG(6719) +#define ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION __MSABI_LONG(6720) +#define ERROR_TRANSACTION_NOT_ROOT __MSABI_LONG(6721) +#define ERROR_TRANSACTION_OBJECT_EXPIRED __MSABI_LONG(6722) +#define ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED __MSABI_LONG(6723) +#define ERROR_TRANSACTION_RECORD_TOO_LONG __MSABI_LONG(6724) +#define ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED __MSABI_LONG(6725) +#define ERROR_TRANSACTION_INTEGRITY_VIOLATED __MSABI_LONG(6726) +#define ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH __MSABI_LONG(6727) +#define ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT __MSABI_LONG(6728) +#define ERROR_TRANSACTION_MUST_WRITETHROUGH __MSABI_LONG(6729) +#define ERROR_TRANSACTION_NO_SUPERIOR __MSABI_LONG(6730) +#define ERROR_HEURISTIC_DAMAGE_POSSIBLE __MSABI_LONG(6731) +#define ERROR_TRANSACTIONAL_CONFLICT __MSABI_LONG(6800) +#define ERROR_RM_NOT_ACTIVE __MSABI_LONG(6801) +#define ERROR_RM_METADATA_CORRUPT __MSABI_LONG(6802) +#define ERROR_DIRECTORY_NOT_RM __MSABI_LONG(6803) +#define ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE __MSABI_LONG(6805) +#define ERROR_LOG_RESIZE_INVALID_SIZE __MSABI_LONG(6806) +#define ERROR_OBJECT_NO_LONGER_EXISTS __MSABI_LONG(6807) +#define ERROR_STREAM_MINIVERSION_NOT_FOUND __MSABI_LONG(6808) +#define ERROR_STREAM_MINIVERSION_NOT_VALID __MSABI_LONG(6809) +#define ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION __MSABI_LONG(6810) +#define ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT __MSABI_LONG(6811) +#define ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS __MSABI_LONG(6812) +#define ERROR_REMOTE_FILE_VERSION_MISMATCH __MSABI_LONG(6814) +#define ERROR_HANDLE_NO_LONGER_VALID __MSABI_LONG(6815) +#define ERROR_NO_TXF_METADATA __MSABI_LONG(6816) +#define ERROR_LOG_CORRUPTION_DETECTED __MSABI_LONG(6817) +#define ERROR_CANT_RECOVER_WITH_HANDLE_OPEN __MSABI_LONG(6818) +#define ERROR_RM_DISCONNECTED __MSABI_LONG(6819) +#define ERROR_ENLISTMENT_NOT_SUPERIOR __MSABI_LONG(6820) +#define ERROR_RECOVERY_NOT_NEEDED __MSABI_LONG(6821) +#define ERROR_RM_ALREADY_STARTED __MSABI_LONG(6822) +#define ERROR_FILE_IDENTITY_NOT_PERSISTENT __MSABI_LONG(6823) +#define ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY __MSABI_LONG(6824) +#define ERROR_CANT_CROSS_RM_BOUNDARY __MSABI_LONG(6825) +#define ERROR_TXF_DIR_NOT_EMPTY __MSABI_LONG(6826) +#define ERROR_INDOUBT_TRANSACTIONS_EXIST __MSABI_LONG(6827) +#define ERROR_TM_VOLATILE __MSABI_LONG(6828) +#define ERROR_ROLLBACK_TIMER_EXPIRED __MSABI_LONG(6829) +#define ERROR_TXF_ATTRIBUTE_CORRUPT __MSABI_LONG(6830) +#define ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION __MSABI_LONG(6831) +#define ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED __MSABI_LONG(6832) +#define ERROR_LOG_GROWTH_FAILED __MSABI_LONG(6833) +#define ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE __MSABI_LONG(6834) +#define ERROR_TXF_METADATA_ALREADY_PRESENT __MSABI_LONG(6835) +#define ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET __MSABI_LONG(6836) +#define ERROR_TRANSACTION_REQUIRED_PROMOTION __MSABI_LONG(6837) +#define ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION __MSABI_LONG(6838) +#define ERROR_TRANSACTIONS_NOT_FROZEN __MSABI_LONG(6839) +#define ERROR_TRANSACTION_FREEZE_IN_PROGRESS __MSABI_LONG(6840) +#define ERROR_NOT_SNAPSHOT_VOLUME __MSABI_LONG(6841) +#define ERROR_NO_SAVEPOINT_WITH_OPEN_FILES __MSABI_LONG(6842) +#define ERROR_DATA_LOST_REPAIR __MSABI_LONG(6843) +#define ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION __MSABI_LONG(6844) +#define ERROR_TM_IDENTITY_MISMATCH __MSABI_LONG(6845) +#define ERROR_FLOATED_SECTION __MSABI_LONG(6846) +#define ERROR_CANNOT_ACCEPT_TRANSACTED_WORK __MSABI_LONG(6847) +#define ERROR_CANNOT_ABORT_TRANSACTIONS __MSABI_LONG(6848) +#define ERROR_BAD_CLUSTERS __MSABI_LONG(6849) +#define ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION __MSABI_LONG(6850) +#define ERROR_VOLUME_DIRTY __MSABI_LONG(6851) +#define ERROR_NO_LINK_TRACKING_IN_TRANSACTION __MSABI_LONG(6852) +#define ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION __MSABI_LONG(6853) +#define ERROR_EXPIRED_HANDLE __MSABI_LONG(6854) +#define ERROR_TRANSACTION_NOT_ENLISTED __MSABI_LONG(6855) +#define ERROR_CTX_WINSTATION_NAME_INVALID __MSABI_LONG(7001) +#define ERROR_CTX_INVALID_PD __MSABI_LONG(7002) +#define ERROR_CTX_PD_NOT_FOUND __MSABI_LONG(7003) +#define ERROR_CTX_WD_NOT_FOUND __MSABI_LONG(7004) +#define ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY __MSABI_LONG(7005) +#define ERROR_CTX_SERVICE_NAME_COLLISION __MSABI_LONG(7006) +#define ERROR_CTX_CLOSE_PENDING __MSABI_LONG(7007) +#define ERROR_CTX_NO_OUTBUF __MSABI_LONG(7008) +#define ERROR_CTX_MODEM_INF_NOT_FOUND __MSABI_LONG(7009) +#define ERROR_CTX_INVALID_MODEMNAME __MSABI_LONG(7010) +#define ERROR_CTX_MODEM_RESPONSE_ERROR __MSABI_LONG(7011) +#define ERROR_CTX_MODEM_RESPONSE_TIMEOUT __MSABI_LONG(7012) +#define ERROR_CTX_MODEM_RESPONSE_NO_CARRIER __MSABI_LONG(7013) +#define ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE __MSABI_LONG(7014) +#define ERROR_CTX_MODEM_RESPONSE_BUSY __MSABI_LONG(7015) +#define ERROR_CTX_MODEM_RESPONSE_VOICE __MSABI_LONG(7016) +#define ERROR_CTX_TD_ERROR __MSABI_LONG(7017) +#define ERROR_CTX_WINSTATION_NOT_FOUND __MSABI_LONG(7022) +#define ERROR_CTX_WINSTATION_ALREADY_EXISTS __MSABI_LONG(7023) +#define ERROR_CTX_WINSTATION_BUSY __MSABI_LONG(7024) +#define ERROR_CTX_BAD_VIDEO_MODE __MSABI_LONG(7025) +#define ERROR_CTX_GRAPHICS_INVALID __MSABI_LONG(7035) +#define ERROR_CTX_LOGON_DISABLED __MSABI_LONG(7037) +#define ERROR_CTX_NOT_CONSOLE __MSABI_LONG(7038) +#define ERROR_CTX_CLIENT_QUERY_TIMEOUT __MSABI_LONG(7040) +#define ERROR_CTX_CONSOLE_DISCONNECT __MSABI_LONG(7041) +#define ERROR_CTX_CONSOLE_CONNECT __MSABI_LONG(7042) +#define ERROR_CTX_SHADOW_DENIED __MSABI_LONG(7044) +#define ERROR_CTX_WINSTATION_ACCESS_DENIED __MSABI_LONG(7045) +#define ERROR_CTX_INVALID_WD __MSABI_LONG(7049) +#define ERROR_CTX_SHADOW_INVALID __MSABI_LONG(7050) +#define ERROR_CTX_SHADOW_DISABLED __MSABI_LONG(7051) +#define ERROR_CTX_CLIENT_LICENSE_IN_USE __MSABI_LONG(7052) +#define ERROR_CTX_CLIENT_LICENSE_NOT_SET __MSABI_LONG(7053) +#define ERROR_CTX_LICENSE_NOT_AVAILABLE __MSABI_LONG(7054) +#define ERROR_CTX_LICENSE_CLIENT_INVALID __MSABI_LONG(7055) +#define ERROR_CTX_LICENSE_EXPIRED __MSABI_LONG(7056) +#define ERROR_CTX_SHADOW_NOT_RUNNING __MSABI_LONG(7057) +#define ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE __MSABI_LONG(7058) +#define ERROR_ACTIVATION_COUNT_EXCEEDED __MSABI_LONG(7059) +#define ERROR_CTX_WINSTATIONS_DISABLED __MSABI_LONG(7060) +#define ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED __MSABI_LONG(7061) +#define ERROR_CTX_SESSION_IN_USE __MSABI_LONG(7062) +#define ERROR_CTX_NO_FORCE_LOGOFF __MSABI_LONG(7063) +#define ERROR_CTX_ACCOUNT_RESTRICTION __MSABI_LONG(7064) +#define ERROR_RDP_PROTOCOL_ERROR __MSABI_LONG(7065) +#define ERROR_CTX_CDM_CONNECT __MSABI_LONG(7066) +#define ERROR_CTX_CDM_DISCONNECT __MSABI_LONG(7067) +#define ERROR_CTX_SECURITY_LAYER_ERROR __MSABI_LONG(7068) +#define ERROR_TS_INCOMPATIBLE_SESSIONS __MSABI_LONG(7069) +#define ERROR_TS_VIDEO_SUBSYSTEM_ERROR __MSABI_LONG(7070) +#define FRS_ERR_INVALID_API_SEQUENCE __MSABI_LONG(8001) +#define FRS_ERR_STARTING_SERVICE __MSABI_LONG(8002) +#define FRS_ERR_STOPPING_SERVICE __MSABI_LONG(8003) +#define FRS_ERR_INTERNAL_API __MSABI_LONG(8004) +#define FRS_ERR_INTERNAL __MSABI_LONG(8005) +#define FRS_ERR_SERVICE_COMM __MSABI_LONG(8006) +#define FRS_ERR_INSUFFICIENT_PRIV __MSABI_LONG(8007) +#define FRS_ERR_AUTHENTICATION __MSABI_LONG(8008) +#define FRS_ERR_PARENT_INSUFFICIENT_PRIV __MSABI_LONG(8009) +#define FRS_ERR_PARENT_AUTHENTICATION __MSABI_LONG(8010) +#define FRS_ERR_CHILD_TO_PARENT_COMM __MSABI_LONG(8011) +#define FRS_ERR_PARENT_TO_CHILD_COMM __MSABI_LONG(8012) +#define FRS_ERR_SYSVOL_POPULATE __MSABI_LONG(8013) +#define FRS_ERR_SYSVOL_POPULATE_TIMEOUT __MSABI_LONG(8014) +#define FRS_ERR_SYSVOL_IS_BUSY __MSABI_LONG(8015) +#define FRS_ERR_SYSVOL_DEMOTE __MSABI_LONG(8016) +#define FRS_ERR_INVALID_SERVICE_PARAMETER __MSABI_LONG(8017) +#define DS_S_SUCCESS NO_ERROR +#define ERROR_DS_NOT_INSTALLED __MSABI_LONG(8200) +#define ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY __MSABI_LONG(8201) +#define ERROR_DS_NO_ATTRIBUTE_OR_VALUE __MSABI_LONG(8202) +#define ERROR_DS_INVALID_ATTRIBUTE_SYNTAX __MSABI_LONG(8203) +#define ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED __MSABI_LONG(8204) +#define ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS __MSABI_LONG(8205) +#define ERROR_DS_BUSY __MSABI_LONG(8206) +#define ERROR_DS_UNAVAILABLE __MSABI_LONG(8207) +#define ERROR_DS_NO_RIDS_ALLOCATED __MSABI_LONG(8208) +#define ERROR_DS_NO_MORE_RIDS __MSABI_LONG(8209) +#define ERROR_DS_INCORRECT_ROLE_OWNER __MSABI_LONG(8210) +#define ERROR_DS_RIDMGR_INIT_ERROR __MSABI_LONG(8211) +#define ERROR_DS_OBJ_CLASS_VIOLATION __MSABI_LONG(8212) +#define ERROR_DS_CANT_ON_NON_LEAF __MSABI_LONG(8213) +#define ERROR_DS_CANT_ON_RDN __MSABI_LONG(8214) +#define ERROR_DS_CANT_MOD_OBJ_CLASS __MSABI_LONG(8215) +#define ERROR_DS_CROSS_DOM_MOVE_ERROR __MSABI_LONG(8216) +#define ERROR_DS_GC_NOT_AVAILABLE __MSABI_LONG(8217) +#define ERROR_SHARED_POLICY __MSABI_LONG(8218) +#define ERROR_POLICY_OBJECT_NOT_FOUND __MSABI_LONG(8219) +#define ERROR_POLICY_ONLY_IN_DS __MSABI_LONG(8220) +#define ERROR_PROMOTION_ACTIVE __MSABI_LONG(8221) +#define ERROR_NO_PROMOTION_ACTIVE __MSABI_LONG(8222) +#define ERROR_DS_OPERATIONS_ERROR __MSABI_LONG(8224) +#define ERROR_DS_PROTOCOL_ERROR __MSABI_LONG(8225) +#define ERROR_DS_TIMELIMIT_EXCEEDED __MSABI_LONG(8226) +#define ERROR_DS_SIZELIMIT_EXCEEDED __MSABI_LONG(8227) +#define ERROR_DS_ADMIN_LIMIT_EXCEEDED __MSABI_LONG(8228) +#define ERROR_DS_COMPARE_FALSE __MSABI_LONG(8229) +#define ERROR_DS_COMPARE_TRUE __MSABI_LONG(8230) +#define ERROR_DS_AUTH_METHOD_NOT_SUPPORTED __MSABI_LONG(8231) +#define ERROR_DS_STRONG_AUTH_REQUIRED __MSABI_LONG(8232) +#define ERROR_DS_INAPPROPRIATE_AUTH __MSABI_LONG(8233) +#define ERROR_DS_AUTH_UNKNOWN __MSABI_LONG(8234) +#define ERROR_DS_REFERRAL __MSABI_LONG(8235) +#define ERROR_DS_UNAVAILABLE_CRIT_EXTENSION __MSABI_LONG(8236) +#define ERROR_DS_CONFIDENTIALITY_REQUIRED __MSABI_LONG(8237) +#define ERROR_DS_INAPPROPRIATE_MATCHING __MSABI_LONG(8238) +#define ERROR_DS_CONSTRAINT_VIOLATION __MSABI_LONG(8239) +#define ERROR_DS_NO_SUCH_OBJECT __MSABI_LONG(8240) +#define ERROR_DS_ALIAS_PROBLEM __MSABI_LONG(8241) +#define ERROR_DS_INVALID_DN_SYNTAX __MSABI_LONG(8242) +#define ERROR_DS_IS_LEAF __MSABI_LONG(8243) +#define ERROR_DS_ALIAS_DEREF_PROBLEM __MSABI_LONG(8244) +#define ERROR_DS_UNWILLING_TO_PERFORM __MSABI_LONG(8245) +#define ERROR_DS_LOOP_DETECT __MSABI_LONG(8246) +#define ERROR_DS_NAMING_VIOLATION __MSABI_LONG(8247) +#define ERROR_DS_OBJECT_RESULTS_TOO_LARGE __MSABI_LONG(8248) +#define ERROR_DS_AFFECTS_MULTIPLE_DSAS __MSABI_LONG(8249) +#define ERROR_DS_SERVER_DOWN __MSABI_LONG(8250) +#define ERROR_DS_LOCAL_ERROR __MSABI_LONG(8251) +#define ERROR_DS_ENCODING_ERROR __MSABI_LONG(8252) +#define ERROR_DS_DECODING_ERROR __MSABI_LONG(8253) +#define ERROR_DS_FILTER_UNKNOWN __MSABI_LONG(8254) +#define ERROR_DS_PARAM_ERROR __MSABI_LONG(8255) +#define ERROR_DS_NOT_SUPPORTED __MSABI_LONG(8256) +#define ERROR_DS_NO_RESULTS_RETURNED __MSABI_LONG(8257) +#define ERROR_DS_CONTROL_NOT_FOUND __MSABI_LONG(8258) +#define ERROR_DS_CLIENT_LOOP __MSABI_LONG(8259) +#define ERROR_DS_REFERRAL_LIMIT_EXCEEDED __MSABI_LONG(8260) +#define ERROR_DS_SORT_CONTROL_MISSING __MSABI_LONG(8261) +#define ERROR_DS_OFFSET_RANGE_ERROR __MSABI_LONG(8262) +#define ERROR_DS_ROOT_MUST_BE_NC __MSABI_LONG(8301) +#define ERROR_DS_ADD_REPLICA_INHIBITED __MSABI_LONG(8302) +#define ERROR_DS_ATT_NOT_DEF_IN_SCHEMA __MSABI_LONG(8303) +#define ERROR_DS_MAX_OBJ_SIZE_EXCEEDED __MSABI_LONG(8304) +#define ERROR_DS_OBJ_STRING_NAME_EXISTS __MSABI_LONG(8305) +#define ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA __MSABI_LONG(8306) +#define ERROR_DS_RDN_DOESNT_MATCH_SCHEMA __MSABI_LONG(8307) +#define ERROR_DS_NO_REQUESTED_ATTS_FOUND __MSABI_LONG(8308) +#define ERROR_DS_USER_BUFFER_TO_SMALL __MSABI_LONG(8309) +#define ERROR_DS_ATT_IS_NOT_ON_OBJ __MSABI_LONG(8310) +#define ERROR_DS_ILLEGAL_MOD_OPERATION __MSABI_LONG(8311) +#define ERROR_DS_OBJ_TOO_LARGE __MSABI_LONG(8312) +#define ERROR_DS_BAD_INSTANCE_TYPE __MSABI_LONG(8313) +#define ERROR_DS_MASTERDSA_REQUIRED __MSABI_LONG(8314) +#define ERROR_DS_OBJECT_CLASS_REQUIRED __MSABI_LONG(8315) +#define ERROR_DS_MISSING_REQUIRED_ATT __MSABI_LONG(8316) +#define ERROR_DS_ATT_NOT_DEF_FOR_CLASS __MSABI_LONG(8317) +#define ERROR_DS_ATT_ALREADY_EXISTS __MSABI_LONG(8318) +#define ERROR_DS_CANT_ADD_ATT_VALUES __MSABI_LONG(8320) +#define ERROR_DS_SINGLE_VALUE_CONSTRAINT __MSABI_LONG(8321) +#define ERROR_DS_RANGE_CONSTRAINT __MSABI_LONG(8322) +#define ERROR_DS_ATT_VAL_ALREADY_EXISTS __MSABI_LONG(8323) +#define ERROR_DS_CANT_REM_MISSING_ATT __MSABI_LONG(8324) +#define ERROR_DS_CANT_REM_MISSING_ATT_VAL __MSABI_LONG(8325) +#define ERROR_DS_ROOT_CANT_BE_SUBREF __MSABI_LONG(8326) +#define ERROR_DS_NO_CHAINING __MSABI_LONG(8327) +#define ERROR_DS_NO_CHAINED_EVAL __MSABI_LONG(8328) +#define ERROR_DS_NO_PARENT_OBJECT __MSABI_LONG(8329) +#define ERROR_DS_PARENT_IS_AN_ALIAS __MSABI_LONG(8330) +#define ERROR_DS_CANT_MIX_MASTER_AND_REPS __MSABI_LONG(8331) +#define ERROR_DS_CHILDREN_EXIST __MSABI_LONG(8332) +#define ERROR_DS_OBJ_NOT_FOUND __MSABI_LONG(8333) +#define ERROR_DS_ALIASED_OBJ_MISSING __MSABI_LONG(8334) +#define ERROR_DS_BAD_NAME_SYNTAX __MSABI_LONG(8335) +#define ERROR_DS_ALIAS_POINTS_TO_ALIAS __MSABI_LONG(8336) +#define ERROR_DS_CANT_DEREF_ALIAS __MSABI_LONG(8337) +#define ERROR_DS_OUT_OF_SCOPE __MSABI_LONG(8338) +#define ERROR_DS_OBJECT_BEING_REMOVED __MSABI_LONG(8339) +#define ERROR_DS_CANT_DELETE_DSA_OBJ __MSABI_LONG(8340) +#define ERROR_DS_GENERIC_ERROR __MSABI_LONG(8341) +#define ERROR_DS_DSA_MUST_BE_INT_MASTER __MSABI_LONG(8342) +#define ERROR_DS_CLASS_NOT_DSA __MSABI_LONG(8343) +#define ERROR_DS_INSUFF_ACCESS_RIGHTS __MSABI_LONG(8344) +#define ERROR_DS_ILLEGAL_SUPERIOR __MSABI_LONG(8345) +#define ERROR_DS_ATTRIBUTE_OWNED_BY_SAM __MSABI_LONG(8346) +#define ERROR_DS_NAME_TOO_MANY_PARTS __MSABI_LONG(8347) +#define ERROR_DS_NAME_TOO_LONG __MSABI_LONG(8348) +#define ERROR_DS_NAME_VALUE_TOO_LONG __MSABI_LONG(8349) +#define ERROR_DS_NAME_UNPARSEABLE __MSABI_LONG(8350) +#define ERROR_DS_NAME_TYPE_UNKNOWN __MSABI_LONG(8351) +#define ERROR_DS_NOT_AN_OBJECT __MSABI_LONG(8352) +#define ERROR_DS_SEC_DESC_TOO_SHORT __MSABI_LONG(8353) +#define ERROR_DS_SEC_DESC_INVALID __MSABI_LONG(8354) +#define ERROR_DS_NO_DELETED_NAME __MSABI_LONG(8355) +#define ERROR_DS_SUBREF_MUST_HAVE_PARENT __MSABI_LONG(8356) +#define ERROR_DS_NCNAME_MUST_BE_NC __MSABI_LONG(8357) +#define ERROR_DS_CANT_ADD_SYSTEM_ONLY __MSABI_LONG(8358) +#define ERROR_DS_CLASS_MUST_BE_CONCRETE __MSABI_LONG(8359) +#define ERROR_DS_INVALID_DMD __MSABI_LONG(8360) +#define ERROR_DS_OBJ_GUID_EXISTS __MSABI_LONG(8361) +#define ERROR_DS_NOT_ON_BACKLINK __MSABI_LONG(8362) +#define ERROR_DS_NO_CROSSREF_FOR_NC __MSABI_LONG(8363) +#define ERROR_DS_SHUTTING_DOWN __MSABI_LONG(8364) +#define ERROR_DS_UNKNOWN_OPERATION __MSABI_LONG(8365) +#define ERROR_DS_INVALID_ROLE_OWNER __MSABI_LONG(8366) +#define ERROR_DS_COULDNT_CONTACT_FSMO __MSABI_LONG(8367) +#define ERROR_DS_CROSS_NC_DN_RENAME __MSABI_LONG(8368) +#define ERROR_DS_CANT_MOD_SYSTEM_ONLY __MSABI_LONG(8369) +#define ERROR_DS_REPLICATOR_ONLY __MSABI_LONG(8370) +#define ERROR_DS_OBJ_CLASS_NOT_DEFINED __MSABI_LONG(8371) +#define ERROR_DS_OBJ_CLASS_NOT_SUBCLASS __MSABI_LONG(8372) +#define ERROR_DS_NAME_REFERENCE_INVALID __MSABI_LONG(8373) +#define ERROR_DS_CROSS_REF_EXISTS __MSABI_LONG(8374) +#define ERROR_DS_CANT_DEL_MASTER_CROSSREF __MSABI_LONG(8375) +#define ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD __MSABI_LONG(8376) +#define ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX __MSABI_LONG(8377) +#define ERROR_DS_DUP_RDN __MSABI_LONG(8378) +#define ERROR_DS_DUP_OID __MSABI_LONG(8379) +#define ERROR_DS_DUP_MAPI_ID __MSABI_LONG(8380) +#define ERROR_DS_DUP_SCHEMA_ID_GUID __MSABI_LONG(8381) +#define ERROR_DS_DUP_LDAP_DISPLAY_NAME __MSABI_LONG(8382) +#define ERROR_DS_SEMANTIC_ATT_TEST __MSABI_LONG(8383) +#define ERROR_DS_SYNTAX_MISMATCH __MSABI_LONG(8384) +#define ERROR_DS_EXISTS_IN_MUST_HAVE __MSABI_LONG(8385) +#define ERROR_DS_EXISTS_IN_MAY_HAVE __MSABI_LONG(8386) +#define ERROR_DS_NONEXISTENT_MAY_HAVE __MSABI_LONG(8387) +#define ERROR_DS_NONEXISTENT_MUST_HAVE __MSABI_LONG(8388) +#define ERROR_DS_AUX_CLS_TEST_FAIL __MSABI_LONG(8389) +#define ERROR_DS_NONEXISTENT_POSS_SUP __MSABI_LONG(8390) +#define ERROR_DS_SUB_CLS_TEST_FAIL __MSABI_LONG(8391) +#define ERROR_DS_BAD_RDN_ATT_ID_SYNTAX __MSABI_LONG(8392) +#define ERROR_DS_EXISTS_IN_AUX_CLS __MSABI_LONG(8393) +#define ERROR_DS_EXISTS_IN_SUB_CLS __MSABI_LONG(8394) +#define ERROR_DS_EXISTS_IN_POSS_SUP __MSABI_LONG(8395) +#define ERROR_DS_RECALCSCHEMA_FAILED __MSABI_LONG(8396) +#define ERROR_DS_TREE_DELETE_NOT_FINISHED __MSABI_LONG(8397) +#define ERROR_DS_CANT_DELETE __MSABI_LONG(8398) +#define ERROR_DS_ATT_SCHEMA_REQ_ID __MSABI_LONG(8399) +#define ERROR_DS_BAD_ATT_SCHEMA_SYNTAX __MSABI_LONG(8400) +#define ERROR_DS_CANT_CACHE_ATT __MSABI_LONG(8401) +#define ERROR_DS_CANT_CACHE_CLASS __MSABI_LONG(8402) +#define ERROR_DS_CANT_REMOVE_ATT_CACHE __MSABI_LONG(8403) +#define ERROR_DS_CANT_REMOVE_CLASS_CACHE __MSABI_LONG(8404) +#define ERROR_DS_CANT_RETRIEVE_DN __MSABI_LONG(8405) +#define ERROR_DS_MISSING_SUPREF __MSABI_LONG(8406) +#define ERROR_DS_CANT_RETRIEVE_INSTANCE __MSABI_LONG(8407) +#define ERROR_DS_CODE_INCONSISTENCY __MSABI_LONG(8408) +#define ERROR_DS_DATABASE_ERROR __MSABI_LONG(8409) +#define ERROR_DS_GOVERNSID_MISSING __MSABI_LONG(8410) +#define ERROR_DS_MISSING_EXPECTED_ATT __MSABI_LONG(8411) +#define ERROR_DS_NCNAME_MISSING_CR_REF __MSABI_LONG(8412) +#define ERROR_DS_SECURITY_CHECKING_ERROR __MSABI_LONG(8413) +#define ERROR_DS_SCHEMA_NOT_LOADED __MSABI_LONG(8414) +#define ERROR_DS_SCHEMA_ALLOC_FAILED __MSABI_LONG(8415) +#define ERROR_DS_ATT_SCHEMA_REQ_SYNTAX __MSABI_LONG(8416) +#define ERROR_DS_GCVERIFY_ERROR __MSABI_LONG(8417) +#define ERROR_DS_DRA_SCHEMA_MISMATCH __MSABI_LONG(8418) +#define ERROR_DS_CANT_FIND_DSA_OBJ __MSABI_LONG(8419) +#define ERROR_DS_CANT_FIND_EXPECTED_NC __MSABI_LONG(8420) +#define ERROR_DS_CANT_FIND_NC_IN_CACHE __MSABI_LONG(8421) +#define ERROR_DS_CANT_RETRIEVE_CHILD __MSABI_LONG(8422) +#define ERROR_DS_SECURITY_ILLEGAL_MODIFY __MSABI_LONG(8423) +#define ERROR_DS_CANT_REPLACE_HIDDEN_REC __MSABI_LONG(8424) +#define ERROR_DS_BAD_HIERARCHY_FILE __MSABI_LONG(8425) +#define ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED __MSABI_LONG(8426) +#define ERROR_DS_CONFIG_PARAM_MISSING __MSABI_LONG(8427) +#define ERROR_DS_COUNTING_AB_INDICES_FAILED __MSABI_LONG(8428) +#define ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED __MSABI_LONG(8429) +#define ERROR_DS_INTERNAL_FAILURE __MSABI_LONG(8430) +#define ERROR_DS_UNKNOWN_ERROR __MSABI_LONG(8431) +#define ERROR_DS_ROOT_REQUIRES_CLASS_TOP __MSABI_LONG(8432) +#define ERROR_DS_REFUSING_FSMO_ROLES __MSABI_LONG(8433) +#define ERROR_DS_MISSING_FSMO_SETTINGS __MSABI_LONG(8434) +#define ERROR_DS_UNABLE_TO_SURRENDER_ROLES __MSABI_LONG(8435) +#define ERROR_DS_DRA_GENERIC __MSABI_LONG(8436) +#define ERROR_DS_DRA_INVALID_PARAMETER __MSABI_LONG(8437) +#define ERROR_DS_DRA_BUSY __MSABI_LONG(8438) +#define ERROR_DS_DRA_BAD_DN __MSABI_LONG(8439) +#define ERROR_DS_DRA_BAD_NC __MSABI_LONG(8440) +#define ERROR_DS_DRA_DN_EXISTS __MSABI_LONG(8441) +#define ERROR_DS_DRA_INTERNAL_ERROR __MSABI_LONG(8442) +#define ERROR_DS_DRA_INCONSISTENT_DIT __MSABI_LONG(8443) +#define ERROR_DS_DRA_CONNECTION_FAILED __MSABI_LONG(8444) +#define ERROR_DS_DRA_BAD_INSTANCE_TYPE __MSABI_LONG(8445) +#define ERROR_DS_DRA_OUT_OF_MEM __MSABI_LONG(8446) +#define ERROR_DS_DRA_MAIL_PROBLEM __MSABI_LONG(8447) +#define ERROR_DS_DRA_REF_ALREADY_EXISTS __MSABI_LONG(8448) +#define ERROR_DS_DRA_REF_NOT_FOUND __MSABI_LONG(8449) +#define ERROR_DS_DRA_OBJ_IS_REP_SOURCE __MSABI_LONG(8450) +#define ERROR_DS_DRA_DB_ERROR __MSABI_LONG(8451) +#define ERROR_DS_DRA_NO_REPLICA __MSABI_LONG(8452) +#define ERROR_DS_DRA_ACCESS_DENIED __MSABI_LONG(8453) +#define ERROR_DS_DRA_NOT_SUPPORTED __MSABI_LONG(8454) +#define ERROR_DS_DRA_RPC_CANCELLED __MSABI_LONG(8455) +#define ERROR_DS_DRA_SOURCE_DISABLED __MSABI_LONG(8456) +#define ERROR_DS_DRA_SINK_DISABLED __MSABI_LONG(8457) +#define ERROR_DS_DRA_NAME_COLLISION __MSABI_LONG(8458) +#define ERROR_DS_DRA_SOURCE_REINSTALLED __MSABI_LONG(8459) +#define ERROR_DS_DRA_MISSING_PARENT __MSABI_LONG(8460) +#define ERROR_DS_DRA_PREEMPTED __MSABI_LONG(8461) +#define ERROR_DS_DRA_ABANDON_SYNC __MSABI_LONG(8462) +#define ERROR_DS_DRA_SHUTDOWN __MSABI_LONG(8463) +#define ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET __MSABI_LONG(8464) +#define ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA __MSABI_LONG(8465) +#define ERROR_DS_DRA_EXTN_CONNECTION_FAILED __MSABI_LONG(8466) +#define ERROR_DS_INSTALL_SCHEMA_MISMATCH __MSABI_LONG(8467) +#define ERROR_DS_DUP_LINK_ID __MSABI_LONG(8468) +#define ERROR_DS_NAME_ERROR_RESOLVING __MSABI_LONG(8469) +#define ERROR_DS_NAME_ERROR_NOT_FOUND __MSABI_LONG(8470) +#define ERROR_DS_NAME_ERROR_NOT_UNIQUE __MSABI_LONG(8471) +#define ERROR_DS_NAME_ERROR_NO_MAPPING __MSABI_LONG(8472) +#define ERROR_DS_NAME_ERROR_DOMAIN_ONLY __MSABI_LONG(8473) +#define ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING __MSABI_LONG(8474) +#define ERROR_DS_CONSTRUCTED_ATT_MOD __MSABI_LONG(8475) +#define ERROR_DS_WRONG_OM_OBJ_CLASS __MSABI_LONG(8476) +#define ERROR_DS_DRA_REPL_PENDING __MSABI_LONG(8477) +#define ERROR_DS_DS_REQUIRED __MSABI_LONG(8478) +#define ERROR_DS_INVALID_LDAP_DISPLAY_NAME __MSABI_LONG(8479) +#define ERROR_DS_NON_BASE_SEARCH __MSABI_LONG(8480) +#define ERROR_DS_CANT_RETRIEVE_ATTS __MSABI_LONG(8481) +#define ERROR_DS_BACKLINK_WITHOUT_LINK __MSABI_LONG(8482) +#define ERROR_DS_EPOCH_MISMATCH __MSABI_LONG(8483) +#define ERROR_DS_SRC_NAME_MISMATCH __MSABI_LONG(8484) +#define ERROR_DS_SRC_AND_DST_NC_IDENTICAL __MSABI_LONG(8485) +#define ERROR_DS_DST_NC_MISMATCH __MSABI_LONG(8486) +#define ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC __MSABI_LONG(8487) +#define ERROR_DS_SRC_GUID_MISMATCH __MSABI_LONG(8488) +#define ERROR_DS_CANT_MOVE_DELETED_OBJECT __MSABI_LONG(8489) +#define ERROR_DS_PDC_OPERATION_IN_PROGRESS __MSABI_LONG(8490) +#define ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD __MSABI_LONG(8491) +#define ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION __MSABI_LONG(8492) +#define ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS __MSABI_LONG(8493) +#define ERROR_DS_NC_MUST_HAVE_NC_PARENT __MSABI_LONG(8494) +#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE __MSABI_LONG(8495) +#define ERROR_DS_DST_DOMAIN_NOT_NATIVE __MSABI_LONG(8496) +#define ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER __MSABI_LONG(8497) +#define ERROR_DS_CANT_MOVE_ACCOUNT_GROUP __MSABI_LONG(8498) +#define ERROR_DS_CANT_MOVE_RESOURCE_GROUP __MSABI_LONG(8499) +#define ERROR_DS_INVALID_SEARCH_FLAG __MSABI_LONG(8500) +#define ERROR_DS_NO_TREE_DELETE_ABOVE_NC __MSABI_LONG(8501) +#define ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE __MSABI_LONG(8502) +#define ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE __MSABI_LONG(8503) +#define ERROR_DS_SAM_INIT_FAILURE __MSABI_LONG(8504) +#define ERROR_DS_SENSITIVE_GROUP_VIOLATION __MSABI_LONG(8505) +#define ERROR_DS_CANT_MOD_PRIMARYGROUPID __MSABI_LONG(8506) +#define ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD __MSABI_LONG(8507) +#define ERROR_DS_NONSAFE_SCHEMA_CHANGE __MSABI_LONG(8508) +#define ERROR_DS_SCHEMA_UPDATE_DISALLOWED __MSABI_LONG(8509) +#define ERROR_DS_CANT_CREATE_UNDER_SCHEMA __MSABI_LONG(8510) +#define ERROR_DS_INSTALL_NO_SRC_SCH_VERSION __MSABI_LONG(8511) +#define ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE __MSABI_LONG(8512) +#define ERROR_DS_INVALID_GROUP_TYPE __MSABI_LONG(8513) +#define ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN __MSABI_LONG(8514) +#define ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN __MSABI_LONG(8515) +#define ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER __MSABI_LONG(8516) +#define ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER __MSABI_LONG(8517) +#define ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER __MSABI_LONG(8518) +#define ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER __MSABI_LONG(8519) +#define ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER __MSABI_LONG(8520) +#define ERROR_DS_HAVE_PRIMARY_MEMBERS __MSABI_LONG(8521) +#define ERROR_DS_STRING_SD_CONVERSION_FAILED __MSABI_LONG(8522) +#define ERROR_DS_NAMING_MASTER_GC __MSABI_LONG(8523) +#define ERROR_DS_DNS_LOOKUP_FAILURE __MSABI_LONG(8524) +#define ERROR_DS_COULDNT_UPDATE_SPNS __MSABI_LONG(8525) +#define ERROR_DS_CANT_RETRIEVE_SD __MSABI_LONG(8526) +#define ERROR_DS_KEY_NOT_UNIQUE __MSABI_LONG(8527) +#define ERROR_DS_WRONG_LINKED_ATT_SYNTAX __MSABI_LONG(8528) +#define ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD __MSABI_LONG(8529) +#define ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY __MSABI_LONG(8530) +#define ERROR_DS_CANT_START __MSABI_LONG(8531) +#define ERROR_DS_INIT_FAILURE __MSABI_LONG(8532) +#define ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION __MSABI_LONG(8533) +#define ERROR_DS_SOURCE_DOMAIN_IN_FOREST __MSABI_LONG(8534) +#define ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST __MSABI_LONG(8535) +#define ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED __MSABI_LONG(8536) +#define ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN __MSABI_LONG(8537) +#define ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER __MSABI_LONG(8538) +#define ERROR_DS_SRC_SID_EXISTS_IN_FOREST __MSABI_LONG(8539) +#define ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH __MSABI_LONG(8540) +#define ERROR_SAM_INIT_FAILURE __MSABI_LONG(8541) +#define ERROR_DS_DRA_SCHEMA_INFO_SHIP __MSABI_LONG(8542) +#define ERROR_DS_DRA_SCHEMA_CONFLICT __MSABI_LONG(8543) +#define ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT __MSABI_LONG(8544) +#define ERROR_DS_DRA_OBJ_NC_MISMATCH __MSABI_LONG(8545) +#define ERROR_DS_NC_STILL_HAS_DSAS __MSABI_LONG(8546) +#define ERROR_DS_GC_REQUIRED __MSABI_LONG(8547) +#define ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY __MSABI_LONG(8548) +#define ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS __MSABI_LONG(8549) +#define ERROR_DS_CANT_ADD_TO_GC __MSABI_LONG(8550) +#define ERROR_DS_NO_CHECKPOINT_WITH_PDC __MSABI_LONG(8551) +#define ERROR_DS_SOURCE_AUDITING_NOT_ENABLED __MSABI_LONG(8552) +#define ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC __MSABI_LONG(8553) +#define ERROR_DS_INVALID_NAME_FOR_SPN __MSABI_LONG(8554) +#define ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS __MSABI_LONG(8555) +#define ERROR_DS_UNICODEPWD_NOT_IN_QUOTES __MSABI_LONG(8556) +#define ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED __MSABI_LONG(8557) +#define ERROR_DS_MUST_BE_RUN_ON_DST_DC __MSABI_LONG(8558) +#define ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER __MSABI_LONG(8559) +#define ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ __MSABI_LONG(8560) +#define ERROR_DS_INIT_FAILURE_CONSOLE __MSABI_LONG(8561) +#define ERROR_DS_SAM_INIT_FAILURE_CONSOLE __MSABI_LONG(8562) +#define ERROR_DS_FOREST_VERSION_TOO_HIGH __MSABI_LONG(8563) +#define ERROR_DS_DOMAIN_VERSION_TOO_HIGH __MSABI_LONG(8564) +#define ERROR_DS_FOREST_VERSION_TOO_LOW __MSABI_LONG(8565) +#define ERROR_DS_DOMAIN_VERSION_TOO_LOW __MSABI_LONG(8566) +#define ERROR_DS_INCOMPATIBLE_VERSION __MSABI_LONG(8567) +#define ERROR_DS_LOW_DSA_VERSION __MSABI_LONG(8568) +#define ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN __MSABI_LONG(8569) +#define ERROR_DS_NOT_SUPPORTED_SORT_ORDER __MSABI_LONG(8570) +#define ERROR_DS_NAME_NOT_UNIQUE __MSABI_LONG(8571) +#define ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 __MSABI_LONG(8572) +#define ERROR_DS_OUT_OF_VERSION_STORE __MSABI_LONG(8573) +#define ERROR_DS_INCOMPATIBLE_CONTROLS_USED __MSABI_LONG(8574) +#define ERROR_DS_NO_REF_DOMAIN __MSABI_LONG(8575) +#define ERROR_DS_RESERVED_LINK_ID __MSABI_LONG(8576) +#define ERROR_DS_LINK_ID_NOT_AVAILABLE __MSABI_LONG(8577) +#define ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER __MSABI_LONG(8578) +#define ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE __MSABI_LONG(8579) +#define ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC __MSABI_LONG(8580) +#define ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG __MSABI_LONG(8581) +#define ERROR_DS_MODIFYDN_WRONG_GRANDPARENT __MSABI_LONG(8582) +#define ERROR_DS_NAME_ERROR_TRUST_REFERRAL __MSABI_LONG(8583) +#define ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER __MSABI_LONG(8584) +#define ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD __MSABI_LONG(8585) +#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 __MSABI_LONG(8586) +#define ERROR_DS_THREAD_LIMIT_EXCEEDED __MSABI_LONG(8587) +#define ERROR_DS_NOT_CLOSEST __MSABI_LONG(8588) +#define ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF __MSABI_LONG(8589) +#define ERROR_DS_SINGLE_USER_MODE_FAILED __MSABI_LONG(8590) +#define ERROR_DS_NTDSCRIPT_SYNTAX_ERROR __MSABI_LONG(8591) +#define ERROR_DS_NTDSCRIPT_PROCESS_ERROR __MSABI_LONG(8592) +#define ERROR_DS_DIFFERENT_REPL_EPOCHS __MSABI_LONG(8593) +#define ERROR_DS_DRS_EXTENSIONS_CHANGED __MSABI_LONG(8594) +#define ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR __MSABI_LONG(8595) +#define ERROR_DS_NO_MSDS_INTID __MSABI_LONG(8596) +#define ERROR_DS_DUP_MSDS_INTID __MSABI_LONG(8597) +#define ERROR_DS_EXISTS_IN_RDNATTID __MSABI_LONG(8598) +#define ERROR_DS_AUTHORIZATION_FAILED __MSABI_LONG(8599) +#define ERROR_DS_INVALID_SCRIPT __MSABI_LONG(8600) +#define ERROR_DS_REMOTE_CROSSREF_OP_FAILED __MSABI_LONG(8601) +#define ERROR_DS_CROSS_REF_BUSY __MSABI_LONG(8602) +#define ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN __MSABI_LONG(8603) +#define ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC __MSABI_LONG(8604) +#define ERROR_DS_DUPLICATE_ID_FOUND __MSABI_LONG(8605) +#define ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT __MSABI_LONG(8606) +#define ERROR_DS_GROUP_CONVERSION_ERROR __MSABI_LONG(8607) +#define ERROR_DS_CANT_MOVE_APP_BASIC_GROUP __MSABI_LONG(8608) +#define ERROR_DS_CANT_MOVE_APP_QUERY_GROUP __MSABI_LONG(8609) +#define ERROR_DS_ROLE_NOT_VERIFIED __MSABI_LONG(8610) +#define ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL __MSABI_LONG(8611) +#define ERROR_DS_DOMAIN_RENAME_IN_PROGRESS __MSABI_LONG(8612) +#define ERROR_DS_EXISTING_AD_CHILD_NC __MSABI_LONG(8613) +#define ERROR_DS_REPL_LIFETIME_EXCEEDED __MSABI_LONG(8614) +#define ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER __MSABI_LONG(8615) +#define ERROR_DS_LDAP_SEND_QUEUE_FULL __MSABI_LONG(8616) +#define ERROR_DS_DRA_OUT_SCHEDULE_WINDOW __MSABI_LONG(8617) +#define ERROR_DS_POLICY_NOT_KNOWN __MSABI_LONG(8618) +#define ERROR_NO_SITE_SETTINGS_OBJECT __MSABI_LONG(8619) +#define ERROR_NO_SECRETS __MSABI_LONG(8620) +#define ERROR_NO_WRITABLE_DC_FOUND __MSABI_LONG(8621) +#define ERROR_DS_NO_SERVER_OBJECT __MSABI_LONG(8622) +#define ERROR_DS_NO_NTDSA_OBJECT __MSABI_LONG(8623) +#define ERROR_DS_NON_ASQ_SEARCH __MSABI_LONG(8624) +#define ERROR_DS_AUDIT_FAILURE __MSABI_LONG(8625) +#define ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE __MSABI_LONG(8626) +#define ERROR_DS_INVALID_SEARCH_FLAG_TUPLE __MSABI_LONG(8627) +#define ERROR_DS_HIERARCHY_TABLE_TOO_DEEP __MSABI_LONG(8628) +#define ERROR_DS_DRA_CORRUPT_UTD_VECTOR __MSABI_LONG(8629) +#define ERROR_DS_DRA_SECRETS_DENIED __MSABI_LONG(8630) +#define ERROR_DS_RESERVED_MAPI_ID __MSABI_LONG(8631) +#define ERROR_DS_MAPI_ID_NOT_AVAILABLE __MSABI_LONG(8632) +#define ERROR_DS_DRA_MISSING_KRBTGT_SECRET __MSABI_LONG(8633) +#define ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST __MSABI_LONG(8634) +#define ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST __MSABI_LONG(8635) +#define ERROR_INVALID_USER_PRINCIPAL_NAME __MSABI_LONG(8636) +#define ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS __MSABI_LONG(8637) +#define ERROR_DS_OID_NOT_FOUND __MSABI_LONG(8638) +#define ERROR_DS_DRA_RECYCLED_TARGET __MSABI_LONG(8639) +#define ERROR_DS_DISALLOWED_NC_REDIRECT __MSABI_LONG(8640) +#define ERROR_DS_HIGH_ADLDS_FFL __MSABI_LONG(8641) +#define ERROR_DS_HIGH_DSA_VERSION __MSABI_LONG(8642) +#define ERROR_DS_LOW_ADLDS_FFL __MSABI_LONG(8643) +#define ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION __MSABI_LONG(8644) +#define ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED __MSABI_LONG(8645) +#define ERROR_INCORRECT_ACCOUNT_TYPE __MSABI_LONG(8646) +#define ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST __MSABI_LONG(8647) +#define ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST __MSABI_LONG(8648) +#define ERROR_DS_MISSING_FOREST_TRUST __MSABI_LONG(8649) +#define ERROR_DS_VALUE_KEY_NOT_UNIQUE __MSABI_LONG(8650) +#define ERROR_WEAK_WHFBKEY_BLOCKED __MSABI_LONG(8651) +#define ERROR_DS_PER_ATTRIBUTE_AUTHZ_FAILED_DURING_ADD __MSABI_LONG(8652) +#define ERROR_LOCAL_POLICY_MODIFICATION_NOT_SUPPORTED __MSABI_LONG(8653) +#define DNS_ERROR_RESPONSE_CODES_BASE 9000 +#define DNS_ERROR_RCODE_NO_ERROR NO_ERROR +#define DNS_ERROR_MASK 0x00002328 +#define DNS_ERROR_RCODE_FORMAT_ERROR __MSABI_LONG(9001) +#define DNS_ERROR_RCODE_SERVER_FAILURE __MSABI_LONG(9002) +#define DNS_ERROR_RCODE_NAME_ERROR __MSABI_LONG(9003) +#define DNS_ERROR_RCODE_NOT_IMPLEMENTED __MSABI_LONG(9004) +#define DNS_ERROR_RCODE_REFUSED __MSABI_LONG(9005) +#define DNS_ERROR_RCODE_YXDOMAIN __MSABI_LONG(9006) +#define DNS_ERROR_RCODE_YXRRSET __MSABI_LONG(9007) +#define DNS_ERROR_RCODE_NXRRSET __MSABI_LONG(9008) +#define DNS_ERROR_RCODE_NOTAUTH __MSABI_LONG(9009) +#define DNS_ERROR_RCODE_NOTZONE __MSABI_LONG(9010) +#define DNS_ERROR_RCODE_BADSIG __MSABI_LONG(9016) +#define DNS_ERROR_RCODE_BADKEY __MSABI_LONG(9017) +#define DNS_ERROR_RCODE_BADTIME __MSABI_LONG(9018) +#define DNS_ERROR_RCODE_LAST DNS_ERROR_RCODE_BADTIME +#define DNS_ERROR_PACKET_FMT_BASE 9500 +#define DNS_INFO_NO_RECORDS __MSABI_LONG(9501) +#define DNS_ERROR_BAD_PACKET __MSABI_LONG(9502) +#define DNS_ERROR_NO_PACKET __MSABI_LONG(9503) +#define DNS_ERROR_RCODE __MSABI_LONG(9504) +#define DNS_ERROR_UNSECURE_PACKET __MSABI_LONG(9505) +#define DNS_STATUS_PACKET_UNSECURE DNS_ERROR_UNSECURE_PACKET +#define DNS_REQUEST_PENDING __MSABI_LONG(9506) +#define DNS_ERROR_NO_MEMORY ERROR_OUTOFMEMORY +#define DNS_ERROR_INVALID_NAME ERROR_INVALID_NAME +#define DNS_ERROR_INVALID_DATA ERROR_INVALID_DATA +#define DNS_ERROR_GENERAL_API_BASE 9550 +#define DNS_ERROR_INVALID_TYPE __MSABI_LONG(9551) +#define DNS_ERROR_INVALID_IP_ADDRESS __MSABI_LONG(9552) +#define DNS_ERROR_INVALID_PROPERTY __MSABI_LONG(9553) +#define DNS_ERROR_TRY_AGAIN_LATER __MSABI_LONG(9554) +#define DNS_ERROR_NOT_UNIQUE __MSABI_LONG(9555) +#define DNS_ERROR_NON_RFC_NAME __MSABI_LONG(9556) +#define DNS_STATUS_FQDN __MSABI_LONG(9557) +#define DNS_STATUS_DOTTED_NAME __MSABI_LONG(9558) +#define DNS_STATUS_SINGLE_PART_NAME __MSABI_LONG(9559) +#define DNS_ERROR_INVALID_NAME_CHAR __MSABI_LONG(9560) +#define DNS_ERROR_NUMERIC_NAME __MSABI_LONG(9561) +#define DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER __MSABI_LONG(9562) +#define DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION __MSABI_LONG(9563) +#define DNS_ERROR_CANNOT_FIND_ROOT_HINTS __MSABI_LONG(9564) +#define DNS_ERROR_INCONSISTENT_ROOT_HINTS __MSABI_LONG(9565) +#define DNS_ERROR_ZONE_BASE 9600 +#define DNS_ERROR_ZONE_DOES_NOT_EXIST __MSABI_LONG(9601) +#define DNS_ERROR_NO_ZONE_INFO __MSABI_LONG(9602) +#define DNS_ERROR_INVALID_ZONE_OPERATION __MSABI_LONG(9603) +#define DNS_ERROR_ZONE_CONFIGURATION_ERROR __MSABI_LONG(9604) +#define DNS_ERROR_ZONE_HAS_NO_SOA_RECORD __MSABI_LONG(9605) +#define DNS_ERROR_ZONE_HAS_NO_NS_RECORDS __MSABI_LONG(9606) +#define DNS_ERROR_ZONE_LOCKED __MSABI_LONG(9607) +#define DNS_ERROR_ZONE_CREATION_FAILED __MSABI_LONG(9608) +#define DNS_ERROR_ZONE_ALREADY_EXISTS __MSABI_LONG(9609) +#define DNS_ERROR_AUTOZONE_ALREADY_EXISTS __MSABI_LONG(9610) +#define DNS_ERROR_INVALID_ZONE_TYPE __MSABI_LONG(9611) +#define DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP __MSABI_LONG(9612) +#define DNS_ERROR_ZONE_NOT_SECONDARY __MSABI_LONG(9613) +#define DNS_ERROR_NEED_SECONDARY_ADDRESSES __MSABI_LONG(9614) +#define DNS_ERROR_WINS_INIT_FAILED __MSABI_LONG(9615) +#define DNS_ERROR_NEED_WINS_SERVERS __MSABI_LONG(9616) +#define DNS_ERROR_NBSTAT_INIT_FAILED __MSABI_LONG(9617) +#define DNS_ERROR_SOA_DELETE_INVALID __MSABI_LONG(9618) +#define DNS_ERROR_FORWARDER_ALREADY_EXISTS __MSABI_LONG(9619) +#define DNS_ERROR_ZONE_REQUIRES_MASTER_IP __MSABI_LONG(9620) +#define DNS_ERROR_ZONE_IS_SHUTDOWN __MSABI_LONG(9621) +#define DNS_ERROR_DATAFILE_BASE 9650 +#define DNS_ERROR_PRIMARY_REQUIRES_DATAFILE __MSABI_LONG(9651) +#define DNS_ERROR_INVALID_DATAFILE_NAME __MSABI_LONG(9652) +#define DNS_ERROR_DATAFILE_OPEN_FAILURE __MSABI_LONG(9653) +#define DNS_ERROR_FILE_WRITEBACK_FAILED __MSABI_LONG(9654) +#define DNS_ERROR_DATAFILE_PARSING __MSABI_LONG(9655) +#define DNS_ERROR_DATABASE_BASE 9700 +#define DNS_ERROR_RECORD_DOES_NOT_EXIST __MSABI_LONG(9701) +#define DNS_ERROR_RECORD_FORMAT __MSABI_LONG(9702) +#define DNS_ERROR_NODE_CREATION_FAILED __MSABI_LONG(9703) +#define DNS_ERROR_UNKNOWN_RECORD_TYPE __MSABI_LONG(9704) +#define DNS_ERROR_RECORD_TIMED_OUT __MSABI_LONG(9705) +#define DNS_ERROR_NAME_NOT_IN_ZONE __MSABI_LONG(9706) +#define DNS_ERROR_CNAME_LOOP __MSABI_LONG(9707) +#define DNS_ERROR_NODE_IS_CNAME __MSABI_LONG(9708) +#define DNS_ERROR_CNAME_COLLISION __MSABI_LONG(9709) +#define DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT __MSABI_LONG(9710) +#define DNS_ERROR_RECORD_ALREADY_EXISTS __MSABI_LONG(9711) +#define DNS_ERROR_SECONDARY_DATA __MSABI_LONG(9712) +#define DNS_ERROR_NO_CREATE_CACHE_DATA __MSABI_LONG(9713) +#define DNS_ERROR_NAME_DOES_NOT_EXIST __MSABI_LONG(9714) +#define DNS_WARNING_PTR_CREATE_FAILED __MSABI_LONG(9715) +#define DNS_WARNING_DOMAIN_UNDELETED __MSABI_LONG(9716) +#define DNS_ERROR_DS_UNAVAILABLE __MSABI_LONG(9717) +#define DNS_ERROR_DS_ZONE_ALREADY_EXISTS __MSABI_LONG(9718) +#define DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE __MSABI_LONG(9719) +#define DNS_ERROR_OPERATION_BASE 9750 +#define DNS_INFO_AXFR_COMPLETE __MSABI_LONG(9751) +#define DNS_ERROR_AXFR __MSABI_LONG(9752) +#define DNS_INFO_ADDED_LOCAL_WINS __MSABI_LONG(9753) +#define DNS_ERROR_SECURE_BASE 9800 +#define DNS_STATUS_CONTINUE_NEEDED __MSABI_LONG(9801) +#define DNS_ERROR_SETUP_BASE 9850 +#define DNS_ERROR_NO_TCPIP __MSABI_LONG(9851) +#define DNS_ERROR_NO_DNS_SERVERS __MSABI_LONG(9852) +#define DNS_ERROR_DP_BASE 9900 +#define DNS_ERROR_DP_DOES_NOT_EXIST __MSABI_LONG(9901) +#define DNS_ERROR_DP_ALREADY_EXISTS __MSABI_LONG(9902) +#define DNS_ERROR_DP_NOT_ENLISTED __MSABI_LONG(9903) +#define DNS_ERROR_DP_ALREADY_ENLISTED __MSABI_LONG(9904) +#define DNS_ERROR_DP_NOT_AVAILABLE __MSABI_LONG(9905) +#define DNS_ERROR_DP_FSMO_ERROR __MSABI_LONG(9906) +#define WSABASEERR 10000 +#define WSAEINTR (WSABASEERR + 4) +#define WSAEBADF (WSABASEERR + 9) +#define WSAEACCES (WSABASEERR + 13) +#define WSAEFAULT (WSABASEERR + 14) +#define WSAEINVAL (WSABASEERR + 22) +#define WSAEMFILE (WSABASEERR + 24) +#define WSAEWOULDBLOCK (WSABASEERR + 35) +#define WSAEINPROGRESS (WSABASEERR + 36) +#define WSAEALREADY (WSABASEERR + 37) +#define WSAENOTSOCK (WSABASEERR + 38) +#define WSAEDESTADDRREQ (WSABASEERR + 39) +#define WSAEMSGSIZE (WSABASEERR + 40) +#define WSAEPROTOTYPE (WSABASEERR + 41) +#define WSAENOPROTOOPT (WSABASEERR + 42) +#define WSAEPROTONOSUPPORT (WSABASEERR + 43) +#define WSAESOCKTNOSUPPORT (WSABASEERR + 44) +#define WSAEOPNOTSUPP (WSABASEERR + 45) +#define WSAEPFNOSUPPORT (WSABASEERR + 46) +#define WSAEAFNOSUPPORT (WSABASEERR + 47) +#define WSAEADDRINUSE (WSABASEERR + 48) +#define WSAEADDRNOTAVAIL (WSABASEERR + 49) +#define WSAENETDOWN (WSABASEERR + 50) +#define WSAENETUNREACH (WSABASEERR + 51) +#define WSAENETRESET (WSABASEERR + 52) +#define WSAECONNABORTED (WSABASEERR + 53) +#define WSAECONNRESET (WSABASEERR + 54) +#define WSAENOBUFS (WSABASEERR + 55) +#define WSAEISCONN (WSABASEERR + 56) +#define WSAENOTCONN (WSABASEERR + 57) +#define WSAESHUTDOWN (WSABASEERR + 58) +#define WSAETOOMANYREFS (WSABASEERR + 59) +#define WSAETIMEDOUT (WSABASEERR + 60) +#define WSAECONNREFUSED (WSABASEERR + 61) +#define WSAELOOP (WSABASEERR + 62) +#define WSAENAMETOOLONG (WSABASEERR + 63) +#define WSAEHOSTDOWN (WSABASEERR + 64) +#define WSAEHOSTUNREACH (WSABASEERR + 65) +#define WSAENOTEMPTY (WSABASEERR + 66) +#define WSAEPROCLIM (WSABASEERR + 67) +#define WSAEUSERS (WSABASEERR + 68) +#define WSAEDQUOT (WSABASEERR + 69) +#define WSAESTALE (WSABASEERR + 70) +#define WSAEREMOTE (WSABASEERR + 71) +#define WSASYSNOTREADY (WSABASEERR + 91) +#define WSAVERNOTSUPPORTED (WSABASEERR + 92) +#define WSANOTINITIALISED (WSABASEERR + 93) +#define WSAEDISCON (WSABASEERR + 101) +#define WSAENOMORE (WSABASEERR + 102) +#define WSAECANCELLED (WSABASEERR + 103) +#define WSAEINVALIDPROCTABLE (WSABASEERR + 104) +#define WSAEINVALIDPROVIDER (WSABASEERR + 105) +#define WSAEPROVIDERFAILEDINIT (WSABASEERR + 106) +#define WSASYSCALLFAILURE (WSABASEERR + 107) +#define WSASERVICE_NOT_FOUND (WSABASEERR + 108) +#define WSATYPE_NOT_FOUND (WSABASEERR + 109) +#define WSA_E_NO_MORE (WSABASEERR + 110) +#define WSA_E_CANCELLED (WSABASEERR + 111) +#define WSAEREFUSED (WSABASEERR + 112) +#define WSAHOST_NOT_FOUND (WSABASEERR + 1001) +#define WSATRY_AGAIN (WSABASEERR + 1002) +#define WSANO_RECOVERY (WSABASEERR + 1003) +#define WSANO_DATA (WSABASEERR + 1004) +#define WSA_QOS_RECEIVERS (WSABASEERR + 1005) +#define WSA_QOS_SENDERS (WSABASEERR + 1006) +#define WSA_QOS_NO_SENDERS (WSABASEERR + 1007) +#define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008) +#define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009) +#define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010) +#define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011) +#define WSA_QOS_BAD_STYLE (WSABASEERR + 1012) +#define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013) +#define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014) +#define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015) +#define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016) +#define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017) +#define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018) +#define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019) +#define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020) +#define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021) +#define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022) +#define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023) +#define WSA_QOS_EUNKNOWNPSOBJ (WSABASEERR + 1024) +#define WSA_QOS_EUNKOWNPSOBJ WSA_QOS_EUNKNOWNPSOBJ +#define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025) +#define WSA_QOS_EFLOWDESC (WSABASEERR + 1026) +#define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027) +#define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028) +#define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029) +#define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030) +#define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031) +#define ERROR_SXS_SECTION_NOT_FOUND __MSABI_LONG(14000) +#define ERROR_SXS_CANT_GEN_ACTCTX __MSABI_LONG(14001) +#define ERROR_SXS_INVALID_ACTCTXDATA_FORMAT __MSABI_LONG(14002) +#define ERROR_SXS_ASSEMBLY_NOT_FOUND __MSABI_LONG(14003) +#define ERROR_SXS_MANIFEST_FORMAT_ERROR __MSABI_LONG(14004) +#define ERROR_SXS_MANIFEST_PARSE_ERROR __MSABI_LONG(14005) +#define ERROR_SXS_ACTIVATION_CONTEXT_DISABLED __MSABI_LONG(14006) +#define ERROR_SXS_KEY_NOT_FOUND __MSABI_LONG(14007) +#define ERROR_SXS_VERSION_CONFLICT __MSABI_LONG(14008) +#define ERROR_SXS_WRONG_SECTION_TYPE __MSABI_LONG(14009) +#define ERROR_SXS_THREAD_QUERIES_DISABLED __MSABI_LONG(14010) +#define ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET __MSABI_LONG(14011) +#define ERROR_SXS_UNKNOWN_ENCODING_GROUP __MSABI_LONG(14012) +#define ERROR_SXS_UNKNOWN_ENCODING __MSABI_LONG(14013) +#define ERROR_SXS_INVALID_XML_NAMESPACE_URI __MSABI_LONG(14014) +#define ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED __MSABI_LONG(14015) +#define ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED __MSABI_LONG(14016) +#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE __MSABI_LONG(14017) +#define ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE __MSABI_LONG(14018) +#define ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE __MSABI_LONG(14019) +#define ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT __MSABI_LONG(14020) +#define ERROR_SXS_DUPLICATE_DLL_NAME __MSABI_LONG(14021) +#define ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME __MSABI_LONG(14022) +#define ERROR_SXS_DUPLICATE_CLSID __MSABI_LONG(14023) +#define ERROR_SXS_DUPLICATE_IID __MSABI_LONG(14024) +#define ERROR_SXS_DUPLICATE_TLBID __MSABI_LONG(14025) +#define ERROR_SXS_DUPLICATE_PROGID __MSABI_LONG(14026) +#define ERROR_SXS_DUPLICATE_ASSEMBLY_NAME __MSABI_LONG(14027) +#define ERROR_SXS_FILE_HASH_MISMATCH __MSABI_LONG(14028) +#define ERROR_SXS_POLICY_PARSE_ERROR __MSABI_LONG(14029) +#define ERROR_SXS_XML_E_MISSINGQUOTE __MSABI_LONG(14030) +#define ERROR_SXS_XML_E_COMMENTSYNTAX __MSABI_LONG(14031) +#define ERROR_SXS_XML_E_BADSTARTNAMECHAR __MSABI_LONG(14032) +#define ERROR_SXS_XML_E_BADNAMECHAR __MSABI_LONG(14033) +#define ERROR_SXS_XML_E_BADCHARINSTRING __MSABI_LONG(14034) +#define ERROR_SXS_XML_E_XMLDECLSYNTAX __MSABI_LONG(14035) +#define ERROR_SXS_XML_E_BADCHARDATA __MSABI_LONG(14036) +#define ERROR_SXS_XML_E_MISSINGWHITESPACE __MSABI_LONG(14037) +#define ERROR_SXS_XML_E_EXPECTINGTAGEND __MSABI_LONG(14038) +#define ERROR_SXS_XML_E_MISSINGSEMICOLON __MSABI_LONG(14039) +#define ERROR_SXS_XML_E_UNBALANCEDPAREN __MSABI_LONG(14040) +#define ERROR_SXS_XML_E_INTERNALERROR __MSABI_LONG(14041) +#define ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE __MSABI_LONG(14042) +#define ERROR_SXS_XML_E_INCOMPLETE_ENCODING __MSABI_LONG(14043) +#define ERROR_SXS_XML_E_MISSING_PAREN __MSABI_LONG(14044) +#define ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE __MSABI_LONG(14045) +#define ERROR_SXS_XML_E_MULTIPLE_COLONS __MSABI_LONG(14046) +#define ERROR_SXS_XML_E_INVALID_DECIMAL __MSABI_LONG(14047) +#define ERROR_SXS_XML_E_INVALID_HEXIDECIMAL __MSABI_LONG(14048) +#define ERROR_SXS_XML_E_INVALID_UNICODE __MSABI_LONG(14049) +#define ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK __MSABI_LONG(14050) +#define ERROR_SXS_XML_E_UNEXPECTEDENDTAG __MSABI_LONG(14051) +#define ERROR_SXS_XML_E_UNCLOSEDTAG __MSABI_LONG(14052) +#define ERROR_SXS_XML_E_DUPLICATEATTRIBUTE __MSABI_LONG(14053) +#define ERROR_SXS_XML_E_MULTIPLEROOTS __MSABI_LONG(14054) +#define ERROR_SXS_XML_E_INVALIDATROOTLEVEL __MSABI_LONG(14055) +#define ERROR_SXS_XML_E_BADXMLDECL __MSABI_LONG(14056) +#define ERROR_SXS_XML_E_MISSINGROOT __MSABI_LONG(14057) +#define ERROR_SXS_XML_E_UNEXPECTEDEOF __MSABI_LONG(14058) +#define ERROR_SXS_XML_E_BADPEREFINSUBSET __MSABI_LONG(14059) +#define ERROR_SXS_XML_E_UNCLOSEDSTARTTAG __MSABI_LONG(14060) +#define ERROR_SXS_XML_E_UNCLOSEDENDTAG __MSABI_LONG(14061) +#define ERROR_SXS_XML_E_UNCLOSEDSTRING __MSABI_LONG(14062) +#define ERROR_SXS_XML_E_UNCLOSEDCOMMENT __MSABI_LONG(14063) +#define ERROR_SXS_XML_E_UNCLOSEDDECL __MSABI_LONG(14064) +#define ERROR_SXS_XML_E_UNCLOSEDCDATA __MSABI_LONG(14065) +#define ERROR_SXS_XML_E_RESERVEDNAMESPACE __MSABI_LONG(14066) +#define ERROR_SXS_XML_E_INVALIDENCODING __MSABI_LONG(14067) +#define ERROR_SXS_XML_E_INVALIDSWITCH __MSABI_LONG(14068) +#define ERROR_SXS_XML_E_BADXMLCASE __MSABI_LONG(14069) +#define ERROR_SXS_XML_E_INVALID_STANDALONE __MSABI_LONG(14070) +#define ERROR_SXS_XML_E_UNEXPECTED_STANDALONE __MSABI_LONG(14071) +#define ERROR_SXS_XML_E_INVALID_VERSION __MSABI_LONG(14072) +#define ERROR_SXS_XML_E_MISSINGEQUALS __MSABI_LONG(14073) +#define ERROR_SXS_PROTECTION_RECOVERY_FAILED __MSABI_LONG(14074) +#define ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT __MSABI_LONG(14075) +#define ERROR_SXS_PROTECTION_CATALOG_NOT_VALID __MSABI_LONG(14076) +#define ERROR_SXS_UNTRANSLATABLE_HRESULT __MSABI_LONG(14077) +#define ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING __MSABI_LONG(14078) +#define ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE __MSABI_LONG(14079) +#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME __MSABI_LONG(14080) +#define ERROR_SXS_ASSEMBLY_MISSING __MSABI_LONG(14081) +#define ERROR_SXS_CORRUPT_ACTIVATION_STACK __MSABI_LONG(14082) +#define ERROR_SXS_CORRUPTION __MSABI_LONG(14083) +#define ERROR_SXS_EARLY_DEACTIVATION __MSABI_LONG(14084) +#define ERROR_SXS_INVALID_DEACTIVATION __MSABI_LONG(14085) +#define ERROR_SXS_MULTIPLE_DEACTIVATION __MSABI_LONG(14086) +#define ERROR_SXS_PROCESS_TERMINATION_REQUESTED __MSABI_LONG(14087) +#define ERROR_SXS_RELEASE_ACTIVATION_CONTEXT __MSABI_LONG(14088) +#define ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY __MSABI_LONG(14089) +#define ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE __MSABI_LONG(14090) +#define ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME __MSABI_LONG(14091) +#define ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE __MSABI_LONG(14092) +#define ERROR_SXS_IDENTITY_PARSE_ERROR __MSABI_LONG(14093) +#define ERROR_MALFORMED_SUBSTITUTION_STRING __MSABI_LONG(14094) +#define ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN __MSABI_LONG(14095) +#define ERROR_UNMAPPED_SUBSTITUTION_STRING __MSABI_LONG(14096) +#define ERROR_SXS_ASSEMBLY_NOT_LOCKED __MSABI_LONG(14097) +#define ERROR_SXS_COMPONENT_STORE_CORRUPT __MSABI_LONG(14098) +#define ERROR_ADVANCED_INSTALLER_FAILED __MSABI_LONG(14099) +#define ERROR_XML_ENCODING_MISMATCH __MSABI_LONG(14100) +#define ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT __MSABI_LONG(14101) +#define ERROR_SXS_IDENTITIES_DIFFERENT __MSABI_LONG(14102) +#define ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT __MSABI_LONG(14103) +#define ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY __MSABI_LONG(14104) +#define ERROR_SXS_MANIFEST_TOO_BIG __MSABI_LONG(14105) +#define ERROR_SXS_SETTING_NOT_REGISTERED __MSABI_LONG(14106) +#define ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE __MSABI_LONG(14107) +#define ERROR_SMI_PRIMITIVE_INSTALLER_FAILED __MSABI_LONG(14108) +#define ERROR_GENERIC_COMMAND_FAILED __MSABI_LONG(14109) +#define ERROR_SXS_FILE_HASH_MISSING __MSABI_LONG(14110) +#define ERROR_IPSEC_QM_POLICY_EXISTS __MSABI_LONG(13000) +#define ERROR_IPSEC_QM_POLICY_NOT_FOUND __MSABI_LONG(13001) +#define ERROR_IPSEC_QM_POLICY_IN_USE __MSABI_LONG(13002) +#define ERROR_IPSEC_MM_POLICY_EXISTS __MSABI_LONG(13003) +#define ERROR_IPSEC_MM_POLICY_NOT_FOUND __MSABI_LONG(13004) +#define ERROR_IPSEC_MM_POLICY_IN_USE __MSABI_LONG(13005) +#define ERROR_IPSEC_MM_FILTER_EXISTS __MSABI_LONG(13006) +#define ERROR_IPSEC_MM_FILTER_NOT_FOUND __MSABI_LONG(13007) +#define ERROR_IPSEC_TRANSPORT_FILTER_EXISTS __MSABI_LONG(13008) +#define ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND __MSABI_LONG(13009) +#define ERROR_IPSEC_MM_AUTH_EXISTS __MSABI_LONG(13010) +#define ERROR_IPSEC_MM_AUTH_NOT_FOUND __MSABI_LONG(13011) +#define ERROR_IPSEC_MM_AUTH_IN_USE __MSABI_LONG(13012) +#define ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND __MSABI_LONG(13013) +#define ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND __MSABI_LONG(13014) +#define ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND __MSABI_LONG(13015) +#define ERROR_IPSEC_TUNNEL_FILTER_EXISTS __MSABI_LONG(13016) +#define ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND __MSABI_LONG(13017) +#define ERROR_IPSEC_MM_FILTER_PENDING_DELETION __MSABI_LONG(13018) +#define ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION __MSABI_LONG(13019) +#define ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION __MSABI_LONG(13020) +#define ERROR_IPSEC_MM_POLICY_PENDING_DELETION __MSABI_LONG(13021) +#define ERROR_IPSEC_MM_AUTH_PENDING_DELETION __MSABI_LONG(13022) +#define ERROR_IPSEC_QM_POLICY_PENDING_DELETION __MSABI_LONG(13023) +#define WARNING_IPSEC_MM_POLICY_PRUNED __MSABI_LONG(13024) +#define WARNING_IPSEC_QM_POLICY_PRUNED __MSABI_LONG(13025) +#define ERROR_IPSEC_IKE_NEG_STATUS_BEGIN __MSABI_LONG(13800) +#define ERROR_IPSEC_IKE_AUTH_FAIL __MSABI_LONG(13801) +#define ERROR_IPSEC_IKE_ATTRIB_FAIL __MSABI_LONG(13802) +#define ERROR_IPSEC_IKE_NEGOTIATION_PENDING __MSABI_LONG(13803) +#define ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR __MSABI_LONG(13804) +#define ERROR_IPSEC_IKE_TIMED_OUT __MSABI_LONG(13805) +#define ERROR_IPSEC_IKE_NO_CERT __MSABI_LONG(13806) +#define ERROR_IPSEC_IKE_SA_DELETED __MSABI_LONG(13807) +#define ERROR_IPSEC_IKE_SA_REAPED __MSABI_LONG(13808) +#define ERROR_IPSEC_IKE_MM_ACQUIRE_DROP __MSABI_LONG(13809) +#define ERROR_IPSEC_IKE_QM_ACQUIRE_DROP __MSABI_LONG(13810) +#define ERROR_IPSEC_IKE_QUEUE_DROP_MM __MSABI_LONG(13811) +#define ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM __MSABI_LONG(13812) +#define ERROR_IPSEC_IKE_DROP_NO_RESPONSE __MSABI_LONG(13813) +#define ERROR_IPSEC_IKE_MM_DELAY_DROP __MSABI_LONG(13814) +#define ERROR_IPSEC_IKE_QM_DELAY_DROP __MSABI_LONG(13815) +#define ERROR_IPSEC_IKE_ERROR __MSABI_LONG(13816) +#define ERROR_IPSEC_IKE_CRL_FAILED __MSABI_LONG(13817) +#define ERROR_IPSEC_IKE_INVALID_KEY_USAGE __MSABI_LONG(13818) +#define ERROR_IPSEC_IKE_INVALID_CERT_TYPE __MSABI_LONG(13819) +#define ERROR_IPSEC_IKE_NO_PRIVATE_KEY __MSABI_LONG(13820) +#define ERROR_IPSEC_IKE_DH_FAIL __MSABI_LONG(13822) +#define ERROR_IPSEC_IKE_INVALID_HEADER __MSABI_LONG(13824) +#define ERROR_IPSEC_IKE_NO_POLICY __MSABI_LONG(13825) +#define ERROR_IPSEC_IKE_INVALID_SIGNATURE __MSABI_LONG(13826) +#define ERROR_IPSEC_IKE_KERBEROS_ERROR __MSABI_LONG(13827) +#define ERROR_IPSEC_IKE_NO_PUBLIC_KEY __MSABI_LONG(13828) +#define ERROR_IPSEC_IKE_PROCESS_ERR __MSABI_LONG(13829) +#define ERROR_IPSEC_IKE_PROCESS_ERR_SA __MSABI_LONG(13830) +#define ERROR_IPSEC_IKE_PROCESS_ERR_PROP __MSABI_LONG(13831) +#define ERROR_IPSEC_IKE_PROCESS_ERR_TRANS __MSABI_LONG(13832) +#define ERROR_IPSEC_IKE_PROCESS_ERR_KE __MSABI_LONG(13833) +#define ERROR_IPSEC_IKE_PROCESS_ERR_ID __MSABI_LONG(13834) +#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT __MSABI_LONG(13835) +#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ __MSABI_LONG(13836) +#define ERROR_IPSEC_IKE_PROCESS_ERR_HASH __MSABI_LONG(13837) +#define ERROR_IPSEC_IKE_PROCESS_ERR_SIG __MSABI_LONG(13838) +#define ERROR_IPSEC_IKE_PROCESS_ERR_NONCE __MSABI_LONG(13839) +#define ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY __MSABI_LONG(13840) +#define ERROR_IPSEC_IKE_PROCESS_ERR_DELETE __MSABI_LONG(13841) +#define ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR __MSABI_LONG(13842) +#define ERROR_IPSEC_IKE_INVALID_PAYLOAD __MSABI_LONG(13843) +#define ERROR_IPSEC_IKE_LOAD_SOFT_SA __MSABI_LONG(13844) +#define ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN __MSABI_LONG(13845) +#define ERROR_IPSEC_IKE_INVALID_COOKIE __MSABI_LONG(13846) +#define ERROR_IPSEC_IKE_NO_PEER_CERT __MSABI_LONG(13847) +#define ERROR_IPSEC_IKE_PEER_CRL_FAILED __MSABI_LONG(13848) +#define ERROR_IPSEC_IKE_POLICY_CHANGE __MSABI_LONG(13849) +#define ERROR_IPSEC_IKE_NO_MM_POLICY __MSABI_LONG(13850) +#define ERROR_IPSEC_IKE_NOTCBPRIV __MSABI_LONG(13851) +#define ERROR_IPSEC_IKE_SECLOADFAIL __MSABI_LONG(13852) +#define ERROR_IPSEC_IKE_FAILSSPINIT __MSABI_LONG(13853) +#define ERROR_IPSEC_IKE_FAILQUERYSSP __MSABI_LONG(13854) +#define ERROR_IPSEC_IKE_SRVACQFAIL __MSABI_LONG(13855) +#define ERROR_IPSEC_IKE_SRVQUERYCRED __MSABI_LONG(13856) +#define ERROR_IPSEC_IKE_GETSPIFAIL __MSABI_LONG(13857) +#define ERROR_IPSEC_IKE_INVALID_FILTER __MSABI_LONG(13858) +#define ERROR_IPSEC_IKE_OUT_OF_MEMORY __MSABI_LONG(13859) +#define ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED __MSABI_LONG(13860) +#define ERROR_IPSEC_IKE_INVALID_POLICY __MSABI_LONG(13861) +#define ERROR_IPSEC_IKE_UNKNOWN_DOI __MSABI_LONG(13862) +#define ERROR_IPSEC_IKE_INVALID_SITUATION __MSABI_LONG(13863) +#define ERROR_IPSEC_IKE_DH_FAILURE __MSABI_LONG(13864) +#define ERROR_IPSEC_IKE_INVALID_GROUP __MSABI_LONG(13865) +#define ERROR_IPSEC_IKE_ENCRYPT __MSABI_LONG(13866) +#define ERROR_IPSEC_IKE_DECRYPT __MSABI_LONG(13867) +#define ERROR_IPSEC_IKE_POLICY_MATCH __MSABI_LONG(13868) +#define ERROR_IPSEC_IKE_UNSUPPORTED_ID __MSABI_LONG(13869) +#define ERROR_IPSEC_IKE_INVALID_HASH __MSABI_LONG(13870) +#define ERROR_IPSEC_IKE_INVALID_HASH_ALG __MSABI_LONG(13871) +#define ERROR_IPSEC_IKE_INVALID_HASH_SIZE __MSABI_LONG(13872) +#define ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG __MSABI_LONG(13873) +#define ERROR_IPSEC_IKE_INVALID_AUTH_ALG __MSABI_LONG(13874) +#define ERROR_IPSEC_IKE_INVALID_SIG __MSABI_LONG(13875) +#define ERROR_IPSEC_IKE_LOAD_FAILED __MSABI_LONG(13876) +#define ERROR_IPSEC_IKE_RPC_DELETE __MSABI_LONG(13877) +#define ERROR_IPSEC_IKE_BENIGN_REINIT __MSABI_LONG(13878) +#define ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY __MSABI_LONG(13879) +#define ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN __MSABI_LONG(13881) +#define ERROR_IPSEC_IKE_MM_LIMIT __MSABI_LONG(13882) +#define ERROR_IPSEC_IKE_NEGOTIATION_DISABLED __MSABI_LONG(13883) +#define ERROR_IPSEC_IKE_QM_LIMIT __MSABI_LONG(13884) +#define ERROR_IPSEC_IKE_MM_EXPIRED __MSABI_LONG(13885) +#define ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID __MSABI_LONG(13886) +#define ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH __MSABI_LONG(13887) +#define ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID __MSABI_LONG(13888) +#define ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD __MSABI_LONG(13889) +#define ERROR_IPSEC_IKE_DOS_COOKIE_SENT __MSABI_LONG(13890) +#define ERROR_IPSEC_IKE_SHUTTING_DOWN __MSABI_LONG(13891) +#define ERROR_IPSEC_IKE_CGA_AUTH_FAILED __MSABI_LONG(13892) +#define ERROR_IPSEC_IKE_PROCESS_ERR_NATOA __MSABI_LONG(13893) +#define ERROR_IPSEC_IKE_INVALID_MM_FOR_QM __MSABI_LONG(13894) +#define ERROR_IPSEC_IKE_QM_EXPIRED __MSABI_LONG(13895) +#define ERROR_IPSEC_IKE_TOO_MANY_FILTERS __MSABI_LONG(13896) +#define ERROR_IPSEC_IKE_NEG_STATUS_END __MSABI_LONG(13897) +#define ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL __MSABI_LONG(13898) +#define ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE __MSABI_LONG(13899) +#define ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING __MSABI_LONG(13900) +#define ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING __MSABI_LONG(13901) +#define ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS __MSABI_LONG(13902) +#define ERROR_IPSEC_IKE_RATELIMIT_DROP __MSABI_LONG(13903) +#define ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE __MSABI_LONG(13904) +#define ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE __MSABI_LONG(13905) +#define ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE __MSABI_LONG(13906) +#define ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY __MSABI_LONG(13907) +#define ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE __MSABI_LONG(13908) +#define ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END __MSABI_LONG(13909) +#define ERROR_IPSEC_BAD_SPI __MSABI_LONG(13910) +#define ERROR_IPSEC_SA_LIFETIME_EXPIRED __MSABI_LONG(13911) +#define ERROR_IPSEC_WRONG_SA __MSABI_LONG(13912) +#define ERROR_IPSEC_REPLAY_CHECK_FAILED __MSABI_LONG(13913) +#define ERROR_IPSEC_INVALID_PACKET __MSABI_LONG(13914) +#define ERROR_IPSEC_INTEGRITY_CHECK_FAILED __MSABI_LONG(13915) +#define ERROR_IPSEC_CLEAR_TEXT_DROP __MSABI_LONG(13916) +#define ERROR_IPSEC_AUTH_FIREWALL_DROP __MSABI_LONG(13917) +#define ERROR_IPSEC_THROTTLE_DROP __MSABI_LONG(13918) +#define ERROR_IPSEC_DOSP_BLOCK __MSABI_LONG(13925) +#define ERROR_IPSEC_DOSP_RECEIVED_MULTICAST __MSABI_LONG(13926) +#define ERROR_IPSEC_DOSP_INVALID_PACKET __MSABI_LONG(13927) +#define ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED __MSABI_LONG(13928) +#define ERROR_IPSEC_DOSP_MAX_ENTRIES __MSABI_LONG(13929) +#define ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED __MSABI_LONG(13930) +#define ERROR_IPSEC_DOSP_NOT_INSTALLED __MSABI_LONG(13931) +#define ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES __MSABI_LONG(13932) +#define ERROR_EVT_INVALID_CHANNEL_PATH __MSABI_LONG(15000) +#define ERROR_EVT_INVALID_QUERY __MSABI_LONG(15001) +#define ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND __MSABI_LONG(15002) +#define ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND __MSABI_LONG(15003) +#define ERROR_EVT_INVALID_PUBLISHER_NAME __MSABI_LONG(15004) +#define ERROR_EVT_INVALID_EVENT_DATA __MSABI_LONG(15005) +#define ERROR_EVT_CHANNEL_NOT_FOUND __MSABI_LONG(15007) +#define ERROR_EVT_MALFORMED_XML_TEXT __MSABI_LONG(15008) +#define ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL __MSABI_LONG(15009) +#define ERROR_EVT_CONFIGURATION_ERROR __MSABI_LONG(15010) +#define ERROR_EVT_QUERY_RESULT_STALE __MSABI_LONG(15011) +#define ERROR_EVT_QUERY_RESULT_INVALID_POSITION __MSABI_LONG(15012) +#define ERROR_EVT_NON_VALIDATING_MSXML __MSABI_LONG(15013) +#define ERROR_EVT_FILTER_ALREADYSCOPED __MSABI_LONG(15014) +#define ERROR_EVT_FILTER_NOTELTSET __MSABI_LONG(15015) +#define ERROR_EVT_FILTER_INVARG __MSABI_LONG(15016) +#define ERROR_EVT_FILTER_INVTEST __MSABI_LONG(15017) +#define ERROR_EVT_FILTER_INVTYPE __MSABI_LONG(15018) +#define ERROR_EVT_FILTER_PARSEERR __MSABI_LONG(15019) +#define ERROR_EVT_FILTER_UNSUPPORTEDOP __MSABI_LONG(15020) +#define ERROR_EVT_FILTER_UNEXPECTEDTOKEN __MSABI_LONG(15021) +#define ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL __MSABI_LONG(15022) +#define ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE __MSABI_LONG(15023) +#define ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE __MSABI_LONG(15024) +#define ERROR_EVT_CHANNEL_CANNOT_ACTIVATE __MSABI_LONG(15025) +#define ERROR_EVT_FILTER_TOO_COMPLEX __MSABI_LONG(15026) +#define ERROR_EVT_MESSAGE_NOT_FOUND __MSABI_LONG(15027) +#define ERROR_EVT_MESSAGE_ID_NOT_FOUND __MSABI_LONG(15028) +#define ERROR_EVT_UNRESOLVED_VALUE_INSERT __MSABI_LONG(15029) +#define ERROR_EVT_UNRESOLVED_PARAMETER_INSERT __MSABI_LONG(15030) +#define ERROR_EVT_MAX_INSERTS_REACHED __MSABI_LONG(15031) +#define ERROR_EVT_EVENT_DEFINITION_NOT_FOUND __MSABI_LONG(15032) +#define ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND __MSABI_LONG(15033) +#define ERROR_EVT_VERSION_TOO_OLD __MSABI_LONG(15034) +#define ERROR_EVT_VERSION_TOO_NEW __MSABI_LONG(15035) +#define ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY __MSABI_LONG(15036) +#define ERROR_EVT_PUBLISHER_DISABLED __MSABI_LONG(15037) +#define ERROR_EVT_FILTER_OUT_OF_RANGE __MSABI_LONG(15038) +#define ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE __MSABI_LONG(15080) +#define ERROR_EC_LOG_DISABLED __MSABI_LONG(15081) +#define ERROR_EC_CIRCULAR_FORWARDING __MSABI_LONG(15082) +#define ERROR_EC_CREDSTORE_FULL __MSABI_LONG(15083) +#define ERROR_EC_CRED_NOT_FOUND __MSABI_LONG(15084) +#define ERROR_EC_NO_ACTIVE_CHANNEL __MSABI_LONG(15085) +#define ERROR_MUI_FILE_NOT_FOUND __MSABI_LONG(15100) +#define ERROR_MUI_INVALID_FILE __MSABI_LONG(15101) +#define ERROR_MUI_INVALID_RC_CONFIG __MSABI_LONG(15102) +#define ERROR_MUI_INVALID_LOCALE_NAME __MSABI_LONG(15103) +#define ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME __MSABI_LONG(15104) +#define ERROR_MUI_FILE_NOT_LOADED __MSABI_LONG(15105) +#define ERROR_RESOURCE_ENUM_USER_STOP __MSABI_LONG(15106) +#define ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED __MSABI_LONG(15107) +#define ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME __MSABI_LONG(15108) +#define ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE __MSABI_LONG(15110) +#define ERROR_MRM_INVALID_PRICONFIG __MSABI_LONG(15111) +#define ERROR_MRM_INVALID_FILE_TYPE __MSABI_LONG(15112) +#define ERROR_MRM_UNKNOWN_QUALIFIER __MSABI_LONG(15113) +#define ERROR_MRM_INVALID_QUALIFIER_VALUE __MSABI_LONG(15114) +#define ERROR_MRM_NO_CANDIDATE __MSABI_LONG(15115) +#define ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE __MSABI_LONG(15116) +#define ERROR_MRM_RESOURCE_TYPE_MISMATCH __MSABI_LONG(15117) +#define ERROR_MRM_DUPLICATE_MAP_NAME __MSABI_LONG(15118) +#define ERROR_MRM_DUPLICATE_ENTRY __MSABI_LONG(15119) +#define ERROR_MRM_INVALID_RESOURCE_IDENTIFIER __MSABI_LONG(15120) +#define ERROR_MRM_FILEPATH_TOO_LONG __MSABI_LONG(15121) +#define ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE __MSABI_LONG(15122) +#define ERROR_MRM_INVALID_PRI_FILE __MSABI_LONG(15126) +#define ERROR_MRM_NAMED_RESOURCE_NOT_FOUND __MSABI_LONG(15127) +#define ERROR_MRM_MAP_NOT_FOUND __MSABI_LONG(15135) +#define ERROR_MRM_UNSUPPORTED_PROFILE_TYPE __MSABI_LONG(15136) +#define ERROR_MRM_INVALID_QUALIFIER_OPERATOR __MSABI_LONG(15137) +#define ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE __MSABI_LONG(15138) +#define ERROR_MRM_AUTOMERGE_ENABLED __MSABI_LONG(15139) +#define ERROR_MRM_TOO_MANY_RESOURCES __MSABI_LONG(15140) +#define ERROR_MCA_INVALID_CAPABILITIES_STRING __MSABI_LONG(15200) +#define ERROR_MCA_INVALID_VCP_VERSION __MSABI_LONG(15201) +#define ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION __MSABI_LONG(15202) +#define ERROR_MCA_MCCS_VERSION_MISMATCH __MSABI_LONG(15203) +#define ERROR_MCA_UNSUPPORTED_MCCS_VERSION __MSABI_LONG(15204) +#define ERROR_MCA_INTERNAL_ERROR __MSABI_LONG(15205) +#define ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED __MSABI_LONG(15206) +#define ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE __MSABI_LONG(15207) +#define ERROR_AMBIGUOUS_SYSTEM_DEVICE __MSABI_LONG(15250) +#define ERROR_SYSTEM_DEVICE_NOT_FOUND __MSABI_LONG(15299) +#define ERROR_HASH_NOT_SUPPORTED __MSABI_LONG(15300) +#define ERROR_HASH_NOT_PRESENT __MSABI_LONG(15301) +#define ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED __MSABI_LONG(15321) +#define ERROR_GPIO_CLIENT_INFORMATION_INVALID __MSABI_LONG(15322) +#define ERROR_GPIO_VERSION_NOT_SUPPORTED __MSABI_LONG(15323) +#define ERROR_GPIO_INVALID_REGISTRATION_PACKET __MSABI_LONG(15324) +#define ERROR_GPIO_OPERATION_DENIED __MSABI_LONG(15325) +#define ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE __MSABI_LONG(15326) +#define ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED __MSABI_LONG(15327) +#define ERROR_CANNOT_SWITCH_RUNLEVEL __MSABI_LONG(15400) +#define ERROR_INVALID_RUNLEVEL_SETTING __MSABI_LONG(15401) +#define ERROR_RUNLEVEL_SWITCH_TIMEOUT __MSABI_LONG(15402) +#define ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT __MSABI_LONG(15403) +#define ERROR_RUNLEVEL_SWITCH_IN_PROGRESS __MSABI_LONG(15404) +#define ERROR_SERVICES_FAILED_AUTOSTART __MSABI_LONG(15405) +#define ERROR_COM_TASK_STOP_PENDING __MSABI_LONG(15501) +#define ERROR_INSTALL_OPEN_PACKAGE_FAILED __MSABI_LONG(15600) +#define ERROR_INSTALL_PACKAGE_NOT_FOUND __MSABI_LONG(15601) +#define ERROR_INSTALL_INVALID_PACKAGE __MSABI_LONG(15602) +#define ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED __MSABI_LONG(15603) +#define ERROR_INSTALL_OUT_OF_DISK_SPACE __MSABI_LONG(15604) +#define ERROR_INSTALL_NETWORK_FAILURE __MSABI_LONG(15605) +#define ERROR_INSTALL_REGISTRATION_FAILURE __MSABI_LONG(15606) +#define ERROR_INSTALL_DEREGISTRATION_FAILURE __MSABI_LONG(15607) +#define ERROR_INSTALL_CANCEL __MSABI_LONG(15608) +#define ERROR_INSTALL_FAILED __MSABI_LONG(15609) +#define ERROR_REMOVE_FAILED __MSABI_LONG(15610) +#define ERROR_PACKAGE_ALREADY_EXISTS __MSABI_LONG(15611) +#define ERROR_NEEDS_REMEDIATION __MSABI_LONG(15612) +#define ERROR_INSTALL_PREREQUISITE_FAILED __MSABI_LONG(15613) +#define ERROR_PACKAGE_REPOSITORY_CORRUPTED __MSABI_LONG(15614) +#define ERROR_INSTALL_POLICY_FAILURE __MSABI_LONG(15615) +#define ERROR_PACKAGE_UPDATING __MSABI_LONG(15616) +#define ERROR_DEPLOYMENT_BLOCKED_BY_POLICY __MSABI_LONG(15617) +#define ERROR_PACKAGES_IN_USE __MSABI_LONG(15618) +#define ERROR_RECOVERY_FILE_CORRUPT __MSABI_LONG(15619) +#define ERROR_INVALID_STAGED_SIGNATURE __MSABI_LONG(15620) +#define ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED __MSABI_LONG(15621) +#define ERROR_INSTALL_PACKAGE_DOWNGRADE __MSABI_LONG(15622) +#define ERROR_SYSTEM_NEEDS_REMEDIATION __MSABI_LONG(15623) +#define ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN __MSABI_LONG(15624) +#define ERROR_RESILIENCY_FILE_CORRUPT __MSABI_LONG(15625) +#define ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING __MSABI_LONG(15626) +#define APPMODEL_ERROR_NO_PACKAGE __MSABI_LONG(15700) +#define APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT __MSABI_LONG(15701) +#define APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT __MSABI_LONG(15702) +#define APPMODEL_ERROR_NO_APPLICATION __MSABI_LONG(15703) +#define ERROR_STATE_LOAD_STORE_FAILED __MSABI_LONG(15800) +#define ERROR_STATE_GET_VERSION_FAILED __MSABI_LONG(15801) +#define ERROR_STATE_SET_VERSION_FAILED __MSABI_LONG(15802) +#define ERROR_STATE_STRUCTURED_RESET_FAILED __MSABI_LONG(15803) +#define ERROR_STATE_OPEN_CONTAINER_FAILED __MSABI_LONG(15804) +#define ERROR_STATE_CREATE_CONTAINER_FAILED __MSABI_LONG(15805) +#define ERROR_STATE_DELETE_CONTAINER_FAILED __MSABI_LONG(15806) +#define ERROR_STATE_READ_SETTING_FAILED __MSABI_LONG(15807) +#define ERROR_STATE_WRITE_SETTING_FAILED __MSABI_LONG(15808) +#define ERROR_STATE_DELETE_SETTING_FAILED __MSABI_LONG(15809) +#define ERROR_STATE_QUERY_SETTING_FAILED __MSABI_LONG(15810) +#define ERROR_STATE_READ_COMPOSITE_SETTING_FAILED __MSABI_LONG(15811) +#define ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED __MSABI_LONG(15812) +#define ERROR_STATE_ENUMERATE_CONTAINER_FAILED __MSABI_LONG(15813) +#define ERROR_STATE_ENUMERATE_SETTINGS_FAILED __MSABI_LONG(15814) +#define ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15815) +#define ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15816) +#define ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15817) +#define ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15818) +#define ERROR_API_UNAVAILABLE __MSABI_LONG(15841) +#define SEVERITY_SUCCESS 0 +#define SEVERITY_ERROR 1 +#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) +#define FAILED(hr) ((HRESULT)(hr) < 0) +#define IS_ERROR(Status) ((unsigned __LONG32)(Status) >> 31==SEVERITY_ERROR) +#define HRESULT_CODE(hr) ((hr) & 0xFFFF) +#define SCODE_CODE(sc) ((sc) & 0xFFFF) +#define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff) +#define SCODE_FACILITY(sc) (((sc) >> 16) & 0x1fff) +#define HRESULT_SEVERITY(hr) (((hr) >> 31) & 0x1) +#define SCODE_SEVERITY(sc) (((sc) >> 31) & 0x1) +#define MAKE_HRESULT(sev,fac,code) ((HRESULT) (((unsigned __LONG32)(sev)<<31) | ((unsigned __LONG32)(fac)<<16) | ((unsigned __LONG32)(code)))) +#define MAKE_SCODE(sev,fac,code) ((SCODE) (((unsigned __LONG32)(sev)<<31) | ((unsigned __LONG32)(fac)<<16) | ((unsigned __LONG32)(code)))) +#define FACILITY_NT_BIT 0x10000000 +#define __HRESULT_FROM_WIN32(x) ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000))) +#define HRESULT_FROM_WIN32(x) __HRESULT_FROM_WIN32(x) +#define HRESULT_FROM_NT(x) ((HRESULT) ((x) | FACILITY_NT_BIT)) +#define GetScode(hr) ((SCODE) (hr)) +#define ResultFromScode(sc) ((HRESULT) (sc)) +#define PropagateResult(hrPrevious,scBase) ((HRESULT) scBase) +#define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc) +#define NOERROR 0 +#define E_UNEXPECTED _HRESULT_TYPEDEF_(0x8000FFFF) +#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001) +#define E_OUTOFMEMORY _HRESULT_TYPEDEF_(0x8007000E) +#define E_INVALIDARG _HRESULT_TYPEDEF_(0x80070057) +#define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80004002) +#define E_POINTER _HRESULT_TYPEDEF_(0x80004003) +#define E_HANDLE _HRESULT_TYPEDEF_(0x80070006) +#define E_ABORT _HRESULT_TYPEDEF_(0x80004004) +#define E_FAIL _HRESULT_TYPEDEF_(0x80004005) +#define E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80070005) +#define E_PENDING _HRESULT_TYPEDEF_(0x8000000A) +#define E_NOT_SUFFICIENT_BUFFER HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) +#define CO_E_INIT_TLS _HRESULT_TYPEDEF_(0x80004006) +#define CO_E_INIT_SHARED_ALLOCATOR _HRESULT_TYPEDEF_(0x80004007) +#define CO_E_INIT_MEMORY_ALLOCATOR _HRESULT_TYPEDEF_(0x80004008) +#define CO_E_INIT_CLASS_CACHE _HRESULT_TYPEDEF_(0x80004009) +#define CO_E_INIT_RPC_CHANNEL _HRESULT_TYPEDEF_(0x8000400A) +#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL _HRESULT_TYPEDEF_(0x8000400B) +#define CO_E_INIT_TLS_CHANNEL_CONTROL _HRESULT_TYPEDEF_(0x8000400C) +#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR _HRESULT_TYPEDEF_(0x8000400D) +#define CO_E_INIT_SCM_MUTEX_EXISTS _HRESULT_TYPEDEF_(0x8000400E) +#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS _HRESULT_TYPEDEF_(0x8000400F) +#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE _HRESULT_TYPEDEF_(0x80004010) +#define CO_E_INIT_SCM_EXEC_FAILURE _HRESULT_TYPEDEF_(0x80004011) +#define CO_E_INIT_ONLY_SINGLE_THREADED _HRESULT_TYPEDEF_(0x80004012) +#define CO_E_CANT_REMOTE _HRESULT_TYPEDEF_(0x80004013) +#define CO_E_BAD_SERVER_NAME _HRESULT_TYPEDEF_(0x80004014) +#define CO_E_WRONG_SERVER_IDENTITY _HRESULT_TYPEDEF_(0x80004015) +#define CO_E_OLE1DDE_DISABLED _HRESULT_TYPEDEF_(0x80004016) +#define CO_E_RUNAS_SYNTAX _HRESULT_TYPEDEF_(0x80004017) +#define CO_E_CREATEPROCESS_FAILURE _HRESULT_TYPEDEF_(0x80004018) +#define CO_E_RUNAS_CREATEPROCESS_FAILURE _HRESULT_TYPEDEF_(0x80004019) +#define CO_E_RUNAS_LOGON_FAILURE _HRESULT_TYPEDEF_(0x8000401A) +#define CO_E_LAUNCH_PERMSSION_DENIED _HRESULT_TYPEDEF_(0x8000401B) +#define CO_E_START_SERVICE_FAILURE _HRESULT_TYPEDEF_(0x8000401C) +#define CO_E_REMOTE_COMMUNICATION_FAILURE _HRESULT_TYPEDEF_(0x8000401D) +#define CO_E_SERVER_START_TIMEOUT _HRESULT_TYPEDEF_(0x8000401E) +#define CO_E_CLSREG_INCONSISTENT _HRESULT_TYPEDEF_(0x8000401F) +#define CO_E_IIDREG_INCONSISTENT _HRESULT_TYPEDEF_(0x80004020) +#define CO_E_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80004021) +#define CO_E_RELOAD_DLL _HRESULT_TYPEDEF_(0x80004022) +#define CO_E_MSI_ERROR _HRESULT_TYPEDEF_(0x80004023) +#define CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT _HRESULT_TYPEDEF_(0x80004024) +#define CO_E_SERVER_PAUSED _HRESULT_TYPEDEF_(0x80004025) +#define CO_E_SERVER_NOT_PAUSED _HRESULT_TYPEDEF_(0x80004026) +#define CO_E_CLASS_DISABLED _HRESULT_TYPEDEF_(0x80004027) +#define CO_E_CLRNOTAVAILABLE _HRESULT_TYPEDEF_(0x80004028) +#define CO_E_ASYNC_WORK_REJECTED _HRESULT_TYPEDEF_(0x80004029) +#define CO_E_SERVER_INIT_TIMEOUT _HRESULT_TYPEDEF_(0x8000402A) +#define CO_E_NO_SECCTX_IN_ACTIVATE _HRESULT_TYPEDEF_(0x8000402B) +#define CO_E_TRACKER_CONFIG _HRESULT_TYPEDEF_(0x80004030) +#define CO_E_THREADPOOL_CONFIG _HRESULT_TYPEDEF_(0x80004031) +#define CO_E_SXS_CONFIG _HRESULT_TYPEDEF_(0x80004032) +#define CO_E_MALFORMED_SPN _HRESULT_TYPEDEF_(0x80004033) +#define S_OK ((HRESULT)0x00000000) +#define S_FALSE ((HRESULT)0x00000001) +#define OLE_E_FIRST ((HRESULT)0x80040000) +#define OLE_E_LAST ((HRESULT)0x800400FF) +#define OLE_S_FIRST ((HRESULT)0x00040000) +#define OLE_S_LAST ((HRESULT)0x000400FF) +#define OLE_E_OLEVERB _HRESULT_TYPEDEF_(0x80040000) +#define OLE_E_ADVF _HRESULT_TYPEDEF_(0x80040001) +#define OLE_E_ENUM_NOMORE _HRESULT_TYPEDEF_(0x80040002) +#define OLE_E_ADVISENOTSUPPORTED _HRESULT_TYPEDEF_(0x80040003) +#define OLE_E_NOCONNECTION _HRESULT_TYPEDEF_(0x80040004) +#define OLE_E_NOTRUNNING _HRESULT_TYPEDEF_(0x80040005) +#define OLE_E_NOCACHE _HRESULT_TYPEDEF_(0x80040006) +#define OLE_E_BLANK _HRESULT_TYPEDEF_(0x80040007) +#define OLE_E_CLASSDIFF _HRESULT_TYPEDEF_(0x80040008) +#define OLE_E_CANT_GETMONIKER _HRESULT_TYPEDEF_(0x80040009) +#define OLE_E_CANT_BINDTOSOURCE _HRESULT_TYPEDEF_(0x8004000A) +#define OLE_E_STATIC _HRESULT_TYPEDEF_(0x8004000B) +#define OLE_E_PROMPTSAVECANCELLED _HRESULT_TYPEDEF_(0x8004000C) +#define OLE_E_INVALIDRECT _HRESULT_TYPEDEF_(0x8004000D) +#define OLE_E_WRONGCOMPOBJ _HRESULT_TYPEDEF_(0x8004000E) +#define OLE_E_INVALIDHWND _HRESULT_TYPEDEF_(0x8004000F) +#define OLE_E_NOT_INPLACEACTIVE _HRESULT_TYPEDEF_(0x80040010) +#define OLE_E_CANTCONVERT _HRESULT_TYPEDEF_(0x80040011) +#define OLE_E_NOSTORAGE _HRESULT_TYPEDEF_(0x80040012) +#define DV_E_FORMATETC _HRESULT_TYPEDEF_(0x80040064) +#define DV_E_DVTARGETDEVICE _HRESULT_TYPEDEF_(0x80040065) +#define DV_E_STGMEDIUM _HRESULT_TYPEDEF_(0x80040066) +#define DV_E_STATDATA _HRESULT_TYPEDEF_(0x80040067) +#define DV_E_LINDEX _HRESULT_TYPEDEF_(0x80040068) +#define DV_E_TYMED _HRESULT_TYPEDEF_(0x80040069) +#define DV_E_CLIPFORMAT _HRESULT_TYPEDEF_(0x8004006A) +#define DV_E_DVASPECT _HRESULT_TYPEDEF_(0x8004006B) +#define DV_E_DVTARGETDEVICE_SIZE _HRESULT_TYPEDEF_(0x8004006C) +#define DV_E_NOIVIEWOBJECT _HRESULT_TYPEDEF_(0x8004006D) +#define DRAGDROP_E_FIRST __MSABI_LONG(0x80040100) +#define DRAGDROP_E_LAST __MSABI_LONG(0x8004010F) +#define DRAGDROP_S_FIRST __MSABI_LONG(0x00040100) +#define DRAGDROP_S_LAST __MSABI_LONG(0x0004010F) +#define DRAGDROP_E_NOTREGISTERED _HRESULT_TYPEDEF_(0x80040100) +#define DRAGDROP_E_ALREADYREGISTERED _HRESULT_TYPEDEF_(0x80040101) +#define DRAGDROP_E_INVALIDHWND _HRESULT_TYPEDEF_(0x80040102) +#define CLASSFACTORY_E_FIRST __MSABI_LONG(0x80040110) +#define CLASSFACTORY_E_LAST __MSABI_LONG(0x8004011F) +#define CLASSFACTORY_S_FIRST __MSABI_LONG(0x00040110) +#define CLASSFACTORY_S_LAST __MSABI_LONG(0x0004011F) +#define CLASS_E_NOAGGREGATION _HRESULT_TYPEDEF_(0x80040110) +#define CLASS_E_CLASSNOTAVAILABLE _HRESULT_TYPEDEF_(0x80040111) +#define CLASS_E_NOTLICENSED _HRESULT_TYPEDEF_(0x80040112) +#define MARSHAL_E_FIRST __MSABI_LONG(0x80040120) +#define MARSHAL_E_LAST __MSABI_LONG(0x8004012F) +#define MARSHAL_S_FIRST __MSABI_LONG(0x00040120) +#define MARSHAL_S_LAST __MSABI_LONG(0x0004012F) +#define DATA_E_FIRST __MSABI_LONG(0x80040130) +#define DATA_E_LAST __MSABI_LONG(0x8004013F) +#define DATA_S_FIRST __MSABI_LONG(0x00040130) +#define DATA_S_LAST __MSABI_LONG(0x0004013F) +#define VIEW_E_FIRST __MSABI_LONG(0x80040140) +#define VIEW_E_LAST __MSABI_LONG(0x8004014F) +#define VIEW_S_FIRST __MSABI_LONG(0x00040140) +#define VIEW_S_LAST __MSABI_LONG(0x0004014F) +#define VIEW_E_DRAW _HRESULT_TYPEDEF_(0x80040140) +#define REGDB_E_FIRST __MSABI_LONG(0x80040150) +#define REGDB_E_LAST __MSABI_LONG(0x8004015F) +#define REGDB_S_FIRST __MSABI_LONG(0x00040150) +#define REGDB_S_LAST __MSABI_LONG(0x0004015F) +#define REGDB_E_READREGDB _HRESULT_TYPEDEF_(0x80040150) +#define REGDB_E_WRITEREGDB _HRESULT_TYPEDEF_(0x80040151) +#define REGDB_E_KEYMISSING _HRESULT_TYPEDEF_(0x80040152) +#define REGDB_E_INVALIDVALUE _HRESULT_TYPEDEF_(0x80040153) +#define REGDB_E_CLASSNOTREG _HRESULT_TYPEDEF_(0x80040154) +#define REGDB_E_IIDNOTREG _HRESULT_TYPEDEF_(0x80040155) +#define REGDB_E_BADTHREADINGMODEL _HRESULT_TYPEDEF_(0x80040156) +#define CAT_E_FIRST __MSABI_LONG(0x80040160) +#define CAT_E_LAST __MSABI_LONG(0x80040161) +#define CAT_E_CATIDNOEXIST _HRESULT_TYPEDEF_(0x80040160) +#define CAT_E_NODESCRIPTION _HRESULT_TYPEDEF_(0x80040161) +#define CS_E_FIRST __MSABI_LONG(0x80040164) +#define CS_E_LAST __MSABI_LONG(0x8004016F) +#define CS_E_PACKAGE_NOTFOUND _HRESULT_TYPEDEF_(0x80040164) +#define CS_E_NOT_DELETABLE _HRESULT_TYPEDEF_(0x80040165) +#define CS_E_CLASS_NOTFOUND _HRESULT_TYPEDEF_(0x80040166) +#define CS_E_INVALID_VERSION _HRESULT_TYPEDEF_(0x80040167) +#define CS_E_NO_CLASSSTORE _HRESULT_TYPEDEF_(0x80040168) +#define CS_E_OBJECT_NOTFOUND _HRESULT_TYPEDEF_(0x80040169) +#define CS_E_OBJECT_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x8004016A) +#define CS_E_INVALID_PATH _HRESULT_TYPEDEF_(0x8004016B) +#define CS_E_NETWORK_ERROR _HRESULT_TYPEDEF_(0x8004016C) +#define CS_E_ADMIN_LIMIT_EXCEEDED _HRESULT_TYPEDEF_(0x8004016D) +#define CS_E_SCHEMA_MISMATCH _HRESULT_TYPEDEF_(0x8004016E) +#define CS_E_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x8004016F) +#define CACHE_E_FIRST __MSABI_LONG(0x80040170) +#define CACHE_E_LAST __MSABI_LONG(0x8004017F) +#define CACHE_S_FIRST __MSABI_LONG(0x00040170) +#define CACHE_S_LAST __MSABI_LONG(0x0004017F) +#define CACHE_E_NOCACHE_UPDATED _HRESULT_TYPEDEF_(0x80040170) +#define OLEOBJ_E_FIRST __MSABI_LONG(0x80040180) +#define OLEOBJ_E_LAST __MSABI_LONG(0x8004018F) +#define OLEOBJ_S_FIRST __MSABI_LONG(0x00040180) +#define OLEOBJ_S_LAST __MSABI_LONG(0x0004018F) +#define OLEOBJ_E_NOVERBS _HRESULT_TYPEDEF_(0x80040180) +#define OLEOBJ_E_INVALIDVERB _HRESULT_TYPEDEF_(0x80040181) +#define CLIENTSITE_E_FIRST __MSABI_LONG(0x80040190) +#define CLIENTSITE_E_LAST __MSABI_LONG(0x8004019F) +#define CLIENTSITE_S_FIRST __MSABI_LONG(0x00040190) +#define CLIENTSITE_S_LAST __MSABI_LONG(0x0004019F) +#define INPLACE_E_NOTUNDOABLE _HRESULT_TYPEDEF_(0x800401A0) +#define INPLACE_E_NOTOOLSPACE _HRESULT_TYPEDEF_(0x800401A1) +#define INPLACE_E_FIRST __MSABI_LONG(0x800401A0) +#define INPLACE_E_LAST __MSABI_LONG(0x800401AF) +#define INPLACE_S_FIRST __MSABI_LONG(0x000401A0) +#define INPLACE_S_LAST __MSABI_LONG(0x000401AF) +#define ENUM_E_FIRST __MSABI_LONG(0x800401B0) +#define ENUM_E_LAST __MSABI_LONG(0x800401BF) +#define ENUM_S_FIRST __MSABI_LONG(0x000401B0) +#define ENUM_S_LAST __MSABI_LONG(0x000401BF) +#define CONVERT10_E_FIRST __MSABI_LONG(0x800401C0) +#define CONVERT10_E_LAST __MSABI_LONG(0x800401CF) +#define CONVERT10_S_FIRST __MSABI_LONG(0x000401C0) +#define CONVERT10_S_LAST __MSABI_LONG(0x000401CF) +#define CONVERT10_E_OLESTREAM_GET _HRESULT_TYPEDEF_(0x800401C0) +#define CONVERT10_E_OLESTREAM_PUT _HRESULT_TYPEDEF_(0x800401C1) +#define CONVERT10_E_OLESTREAM_FMT _HRESULT_TYPEDEF_(0x800401C2) +#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB _HRESULT_TYPEDEF_(0x800401C3) +#define CONVERT10_E_STG_FMT _HRESULT_TYPEDEF_(0x800401C4) +#define CONVERT10_E_STG_NO_STD_STREAM _HRESULT_TYPEDEF_(0x800401C5) +#define CONVERT10_E_STG_DIB_TO_BITMAP _HRESULT_TYPEDEF_(0x800401C6) +#define CLIPBRD_E_FIRST __MSABI_LONG(0x800401D0) +#define CLIPBRD_E_LAST __MSABI_LONG(0x800401DF) +#define CLIPBRD_S_FIRST __MSABI_LONG(0x000401D0) +#define CLIPBRD_S_LAST __MSABI_LONG(0x000401DF) +#define CLIPBRD_E_CANT_OPEN _HRESULT_TYPEDEF_(0x800401D0) +#define CLIPBRD_E_CANT_EMPTY _HRESULT_TYPEDEF_(0x800401D1) +#define CLIPBRD_E_CANT_SET _HRESULT_TYPEDEF_(0x800401D2) +#define CLIPBRD_E_BAD_DATA _HRESULT_TYPEDEF_(0x800401D3) +#define CLIPBRD_E_CANT_CLOSE _HRESULT_TYPEDEF_(0x800401D4) +#define MK_E_FIRST __MSABI_LONG(0x800401E0) +#define MK_E_LAST __MSABI_LONG(0x800401EF) +#define MK_S_FIRST __MSABI_LONG(0x000401E0) +#define MK_S_LAST __MSABI_LONG(0x000401EF) +#define MK_E_CONNECTMANUALLY _HRESULT_TYPEDEF_(0x800401E0) +#define MK_E_EXCEEDEDDEADLINE _HRESULT_TYPEDEF_(0x800401E1) +#define MK_E_NEEDGENERIC _HRESULT_TYPEDEF_(0x800401E2) +#define MK_E_UNAVAILABLE _HRESULT_TYPEDEF_(0x800401E3) +#define MK_E_SYNTAX _HRESULT_TYPEDEF_(0x800401E4) +#define MK_E_NOOBJECT _HRESULT_TYPEDEF_(0x800401E5) +#define MK_E_INVALIDEXTENSION _HRESULT_TYPEDEF_(0x800401E6) +#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED _HRESULT_TYPEDEF_(0x800401E7) +#define MK_E_NOTBINDABLE _HRESULT_TYPEDEF_(0x800401E8) +#define MK_E_NOTBOUND _HRESULT_TYPEDEF_(0x800401E9) +#define MK_E_CANTOPENFILE _HRESULT_TYPEDEF_(0x800401EA) +#define MK_E_MUSTBOTHERUSER _HRESULT_TYPEDEF_(0x800401EB) +#define MK_E_NOINVERSE _HRESULT_TYPEDEF_(0x800401EC) +#define MK_E_NOSTORAGE _HRESULT_TYPEDEF_(0x800401ED) +#define MK_E_NOPREFIX _HRESULT_TYPEDEF_(0x800401EE) +#define MK_E_ENUMERATION_FAILED _HRESULT_TYPEDEF_(0x800401EF) +#define CO_E_FIRST __MSABI_LONG(0x800401F0) +#define CO_E_LAST __MSABI_LONG(0x800401FF) +#define CO_S_FIRST __MSABI_LONG(0x000401F0) +#define CO_S_LAST __MSABI_LONG(0x000401FF) +#define CO_E_NOTINITIALIZED _HRESULT_TYPEDEF_(0x800401F0) +#define CO_E_ALREADYINITIALIZED _HRESULT_TYPEDEF_(0x800401F1) +#define CO_E_CANTDETERMINECLASS _HRESULT_TYPEDEF_(0x800401F2) +#define CO_E_CLASSSTRING _HRESULT_TYPEDEF_(0x800401F3) +#define CO_E_IIDSTRING _HRESULT_TYPEDEF_(0x800401F4) +#define CO_E_APPNOTFOUND _HRESULT_TYPEDEF_(0x800401F5) +#define CO_E_APPSINGLEUSE _HRESULT_TYPEDEF_(0x800401F6) +#define CO_E_ERRORINAPP _HRESULT_TYPEDEF_(0x800401F7) +#define CO_E_DLLNOTFOUND _HRESULT_TYPEDEF_(0x800401F8) +#define CO_E_ERRORINDLL _HRESULT_TYPEDEF_(0x800401F9) +#define CO_E_WRONGOSFORAPP _HRESULT_TYPEDEF_(0x800401FA) +#define CO_E_OBJNOTREG _HRESULT_TYPEDEF_(0x800401FB) +#define CO_E_OBJISREG _HRESULT_TYPEDEF_(0x800401FC) +#define CO_E_OBJNOTCONNECTED _HRESULT_TYPEDEF_(0x800401FD) +#define CO_E_APPDIDNTREG _HRESULT_TYPEDEF_(0x800401FE) +#define CO_E_RELEASED _HRESULT_TYPEDEF_(0x800401FF) +#define EVENT_E_FIRST __MSABI_LONG(0x80040200) +#define EVENT_E_LAST __MSABI_LONG(0x8004021F) +#define EVENT_S_FIRST __MSABI_LONG(0x00040200) +#define EVENT_S_LAST __MSABI_LONG(0x0004021F) +#define EVENT_S_SOME_SUBSCRIBERS_FAILED _HRESULT_TYPEDEF_(0x00040200) +#define EVENT_E_ALL_SUBSCRIBERS_FAILED _HRESULT_TYPEDEF_(0x80040201) +#define EVENT_S_NOSUBSCRIBERS _HRESULT_TYPEDEF_(0x00040202) +#define EVENT_E_QUERYSYNTAX _HRESULT_TYPEDEF_(0x80040203) +#define EVENT_E_QUERYFIELD _HRESULT_TYPEDEF_(0x80040204) +#define EVENT_E_INTERNALEXCEPTION _HRESULT_TYPEDEF_(0x80040205) +#define EVENT_E_INTERNALERROR _HRESULT_TYPEDEF_(0x80040206) +#define EVENT_E_INVALID_PER_USER_SID _HRESULT_TYPEDEF_(0x80040207) +#define EVENT_E_USER_EXCEPTION _HRESULT_TYPEDEF_(0x80040208) +#define EVENT_E_TOO_MANY_METHODS _HRESULT_TYPEDEF_(0x80040209) +#define EVENT_E_MISSING_EVENTCLASS _HRESULT_TYPEDEF_(0x8004020A) +#define EVENT_E_NOT_ALL_REMOVED _HRESULT_TYPEDEF_(0x8004020B) +#define EVENT_E_COMPLUS_NOT_INSTALLED _HRESULT_TYPEDEF_(0x8004020C) +#define EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT _HRESULT_TYPEDEF_(0x8004020D) +#define EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT _HRESULT_TYPEDEF_(0x8004020E) +#define EVENT_E_INVALID_EVENT_CLASS_PARTITION _HRESULT_TYPEDEF_(0x8004020F) +#define EVENT_E_PER_USER_SID_NOT_LOGGED_ON _HRESULT_TYPEDEF_(0x80040210) +#define XACT_E_FIRST 0x8004D000 +#define XACT_E_LAST 0x8004D029 +#define XACT_S_FIRST 0x0004D000 +#define XACT_S_LAST 0x0004D010 +#define XACT_E_ALREADYOTHERSINGLEPHASE _HRESULT_TYPEDEF_(0x8004D000) +#define XACT_E_CANTRETAIN _HRESULT_TYPEDEF_(0x8004D001) +#define XACT_E_COMMITFAILED _HRESULT_TYPEDEF_(0x8004D002) +#define XACT_E_COMMITPREVENTED _HRESULT_TYPEDEF_(0x8004D003) +#define XACT_E_HEURISTICABORT _HRESULT_TYPEDEF_(0x8004D004) +#define XACT_E_HEURISTICCOMMIT _HRESULT_TYPEDEF_(0x8004D005) +#define XACT_E_HEURISTICDAMAGE _HRESULT_TYPEDEF_(0x8004D006) +#define XACT_E_HEURISTICDANGER _HRESULT_TYPEDEF_(0x8004D007) +#define XACT_E_ISOLATIONLEVEL _HRESULT_TYPEDEF_(0x8004D008) +#define XACT_E_NOASYNC _HRESULT_TYPEDEF_(0x8004D009) +#define XACT_E_NOENLIST _HRESULT_TYPEDEF_(0x8004D00A) +#define XACT_E_NOISORETAIN _HRESULT_TYPEDEF_(0x8004D00B) +#define XACT_E_NORESOURCE _HRESULT_TYPEDEF_(0x8004D00C) +#define XACT_E_NOTCURRENT _HRESULT_TYPEDEF_(0x8004D00D) +#define XACT_E_NOTRANSACTION _HRESULT_TYPEDEF_(0x8004D00E) +#define XACT_E_NOTSUPPORTED _HRESULT_TYPEDEF_(0x8004D00F) +#define XACT_E_UNKNOWNRMGRID _HRESULT_TYPEDEF_(0x8004D010) +#define XACT_E_WRONGSTATE _HRESULT_TYPEDEF_(0x8004D011) +#define XACT_E_WRONGUOW _HRESULT_TYPEDEF_(0x8004D012) +#define XACT_E_XTIONEXISTS _HRESULT_TYPEDEF_(0x8004D013) +#define XACT_E_NOIMPORTOBJECT _HRESULT_TYPEDEF_(0x8004D014) +#define XACT_E_INVALIDCOOKIE _HRESULT_TYPEDEF_(0x8004D015) +#define XACT_E_INDOUBT _HRESULT_TYPEDEF_(0x8004D016) +#define XACT_E_NOTIMEOUT _HRESULT_TYPEDEF_(0x8004D017) +#define XACT_E_ALREADYINPROGRESS _HRESULT_TYPEDEF_(0x8004D018) +#define XACT_E_ABORTED _HRESULT_TYPEDEF_(0x8004D019) +#define XACT_E_LOGFULL _HRESULT_TYPEDEF_(0x8004D01A) +#define XACT_E_TMNOTAVAILABLE _HRESULT_TYPEDEF_(0x8004D01B) +#define XACT_E_CONNECTION_DOWN _HRESULT_TYPEDEF_(0x8004D01C) +#define XACT_E_CONNECTION_DENIED _HRESULT_TYPEDEF_(0x8004D01D) +#define XACT_E_REENLISTTIMEOUT _HRESULT_TYPEDEF_(0x8004D01E) +#define XACT_E_TIP_CONNECT_FAILED _HRESULT_TYPEDEF_(0x8004D01F) +#define XACT_E_TIP_PROTOCOL_ERROR _HRESULT_TYPEDEF_(0x8004D020) +#define XACT_E_TIP_PULL_FAILED _HRESULT_TYPEDEF_(0x8004D021) +#define XACT_E_DEST_TMNOTAVAILABLE _HRESULT_TYPEDEF_(0x8004D022) +#define XACT_E_TIP_DISABLED _HRESULT_TYPEDEF_(0x8004D023) +#define XACT_E_NETWORK_TX_DISABLED _HRESULT_TYPEDEF_(0x8004D024) +#define XACT_E_PARTNER_NETWORK_TX_DISABLED _HRESULT_TYPEDEF_(0x8004D025) +#define XACT_E_XA_TX_DISABLED _HRESULT_TYPEDEF_(0x8004D026) +#define XACT_E_UNABLE_TO_READ_DTC_CONFIG _HRESULT_TYPEDEF_(0x8004D027) +#define XACT_E_UNABLE_TO_LOAD_DTC_PROXY _HRESULT_TYPEDEF_(0x8004D028) +#define XACT_E_ABORTING _HRESULT_TYPEDEF_(0x8004D029) +#define XACT_E_CLERKNOTFOUND _HRESULT_TYPEDEF_(0x8004D080) +#define XACT_E_CLERKEXISTS _HRESULT_TYPEDEF_(0x8004D081) +#define XACT_E_RECOVERYINPROGRESS _HRESULT_TYPEDEF_(0x8004D082) +#define XACT_E_TRANSACTIONCLOSED _HRESULT_TYPEDEF_(0x8004D083) +#define XACT_E_INVALIDLSN _HRESULT_TYPEDEF_(0x8004D084) +#define XACT_E_REPLAYREQUEST _HRESULT_TYPEDEF_(0x8004D085) +#define XACT_S_ASYNC _HRESULT_TYPEDEF_(0x0004D000) +#define XACT_S_DEFECT _HRESULT_TYPEDEF_(0x0004D001) +#define XACT_S_READONLY _HRESULT_TYPEDEF_(0x0004D002) +#define XACT_S_SOMENORETAIN _HRESULT_TYPEDEF_(0x0004D003) +#define XACT_S_OKINFORM _HRESULT_TYPEDEF_(0x0004D004) +#define XACT_S_MADECHANGESCONTENT _HRESULT_TYPEDEF_(0x0004D005) +#define XACT_S_MADECHANGESINFORM _HRESULT_TYPEDEF_(0x0004D006) +#define XACT_S_ALLNORETAIN _HRESULT_TYPEDEF_(0x0004D007) +#define XACT_S_ABORTING _HRESULT_TYPEDEF_(0x0004D008) +#define XACT_S_SINGLEPHASE _HRESULT_TYPEDEF_(0x0004D009) +#define XACT_S_LOCALLY_OK _HRESULT_TYPEDEF_(0x0004D00A) +#define XACT_S_LASTRESOURCEMANAGER _HRESULT_TYPEDEF_(0x0004D010) +#define CONTEXT_E_FIRST __MSABI_LONG(0x8004E000) +#define CONTEXT_E_LAST __MSABI_LONG(0x8004E02F) +#define CONTEXT_S_FIRST __MSABI_LONG(0x0004E000) +#define CONTEXT_S_LAST __MSABI_LONG(0x0004E02F) +#define CONTEXT_E_ABORTED _HRESULT_TYPEDEF_(0x8004E002) +#define CONTEXT_E_ABORTING _HRESULT_TYPEDEF_(0x8004E003) +#define CONTEXT_E_NOCONTEXT _HRESULT_TYPEDEF_(0x8004E004) +#define CONTEXT_E_WOULD_DEADLOCK _HRESULT_TYPEDEF_(0x8004E005) +#define CONTEXT_E_SYNCH_TIMEOUT _HRESULT_TYPEDEF_(0x8004E006) +#define CONTEXT_E_OLDREF _HRESULT_TYPEDEF_(0x8004E007) +#define CONTEXT_E_ROLENOTFOUND _HRESULT_TYPEDEF_(0x8004E00C) +#define CONTEXT_E_TMNOTAVAILABLE _HRESULT_TYPEDEF_(0x8004E00F) +#define CO_E_ACTIVATIONFAILED _HRESULT_TYPEDEF_(0x8004E021) +#define CO_E_ACTIVATIONFAILED_EVENTLOGGED _HRESULT_TYPEDEF_(0x8004E022) +#define CO_E_ACTIVATIONFAILED_CATALOGERROR _HRESULT_TYPEDEF_(0x8004E023) +#define CO_E_ACTIVATIONFAILED_TIMEOUT _HRESULT_TYPEDEF_(0x8004E024) +#define CO_E_INITIALIZATIONFAILED _HRESULT_TYPEDEF_(0x8004E025) +#define CONTEXT_E_NOJIT _HRESULT_TYPEDEF_(0x8004E026) +#define CONTEXT_E_NOTRANSACTION _HRESULT_TYPEDEF_(0x8004E027) +#define CO_E_THREADINGMODEL_CHANGED _HRESULT_TYPEDEF_(0x8004E028) +#define CO_E_NOIISINTRINSICS _HRESULT_TYPEDEF_(0x8004E029) +#define CO_E_NOCOOKIES _HRESULT_TYPEDEF_(0x8004E02A) +#define CO_E_DBERROR _HRESULT_TYPEDEF_(0x8004E02B) +#define CO_E_NOTPOOLED _HRESULT_TYPEDEF_(0x8004E02C) +#define CO_E_NOTCONSTRUCTED _HRESULT_TYPEDEF_(0x8004E02D) +#define CO_E_NOSYNCHRONIZATION _HRESULT_TYPEDEF_(0x8004E02E) +#define CO_E_ISOLEVELMISMATCH _HRESULT_TYPEDEF_(0x8004E02F) +#define OLE_S_USEREG _HRESULT_TYPEDEF_(0x00040000) +#define OLE_S_STATIC _HRESULT_TYPEDEF_(0x00040001) +#define OLE_S_MAC_CLIPFORMAT _HRESULT_TYPEDEF_(0x00040002) +#define DRAGDROP_S_DROP _HRESULT_TYPEDEF_(0x00040100) +#define DRAGDROP_S_CANCEL _HRESULT_TYPEDEF_(0x00040101) +#define DRAGDROP_S_USEDEFAULTCURSORS _HRESULT_TYPEDEF_(0x00040102) +#define DATA_S_SAMEFORMATETC _HRESULT_TYPEDEF_(0x00040130) +#define VIEW_S_ALREADY_FROZEN _HRESULT_TYPEDEF_(0x00040140) +#define CACHE_S_FORMATETC_NOTSUPPORTED _HRESULT_TYPEDEF_(0x00040170) +#define CACHE_S_SAMECACHE _HRESULT_TYPEDEF_(0x00040171) +#define CACHE_S_SOMECACHES_NOTUPDATED _HRESULT_TYPEDEF_(0x00040172) +#define OLEOBJ_S_INVALIDVERB _HRESULT_TYPEDEF_(0x00040180) +#define OLEOBJ_S_CANNOT_DOVERB_NOW _HRESULT_TYPEDEF_(0x00040181) +#define OLEOBJ_S_INVALIDHWND _HRESULT_TYPEDEF_(0x00040182) +#define INPLACE_S_TRUNCATED _HRESULT_TYPEDEF_(0x000401A0) +#define CONVERT10_S_NO_PRESENTATION _HRESULT_TYPEDEF_(0x000401C0) +#define MK_S_REDUCED_TO_SELF _HRESULT_TYPEDEF_(0x000401E2) +#define MK_S_ME _HRESULT_TYPEDEF_(0x000401E4) +#define MK_S_HIM _HRESULT_TYPEDEF_(0x000401E5) +#define MK_S_US _HRESULT_TYPEDEF_(0x000401E6) +#define MK_S_MONIKERALREADYREGISTERED _HRESULT_TYPEDEF_(0x000401E7) +#define SCHED_S_TASK_READY _HRESULT_TYPEDEF_(0x00041300) +#define SCHED_S_TASK_RUNNING _HRESULT_TYPEDEF_(0x00041301) +#define SCHED_S_TASK_DISABLED _HRESULT_TYPEDEF_(0x00041302) +#define SCHED_S_TASK_HAS_NOT_RUN _HRESULT_TYPEDEF_(0x00041303) +#define SCHED_S_TASK_NO_MORE_RUNS _HRESULT_TYPEDEF_(0x00041304) +#define SCHED_S_TASK_NOT_SCHEDULED _HRESULT_TYPEDEF_(0x00041305) +#define SCHED_S_TASK_TERMINATED _HRESULT_TYPEDEF_(0x00041306) +#define SCHED_S_TASK_NO_VALID_TRIGGERS _HRESULT_TYPEDEF_(0x00041307) +#define SCHED_S_EVENT_TRIGGER _HRESULT_TYPEDEF_(0x00041308) +#define SCHED_E_TRIGGER_NOT_FOUND _HRESULT_TYPEDEF_(0x80041309) +#define SCHED_E_TASK_NOT_READY _HRESULT_TYPEDEF_(0x8004130A) +#define SCHED_E_TASK_NOT_RUNNING _HRESULT_TYPEDEF_(0x8004130B) +#define SCHED_E_SERVICE_NOT_INSTALLED _HRESULT_TYPEDEF_(0x8004130C) +#define SCHED_E_CANNOT_OPEN_TASK _HRESULT_TYPEDEF_(0x8004130D) +#define SCHED_E_INVALID_TASK _HRESULT_TYPEDEF_(0x8004130E) +#define SCHED_E_ACCOUNT_INFORMATION_NOT_SET _HRESULT_TYPEDEF_(0x8004130F) +#define SCHED_E_ACCOUNT_NAME_NOT_FOUND _HRESULT_TYPEDEF_(0x80041310) +#define SCHED_E_ACCOUNT_DBASE_CORRUPT _HRESULT_TYPEDEF_(0x80041311) +#define SCHED_E_NO_SECURITY_SERVICES _HRESULT_TYPEDEF_(0x80041312) +#define SCHED_E_UNKNOWN_OBJECT_VERSION _HRESULT_TYPEDEF_(0x80041313) +#define SCHED_E_UNSUPPORTED_ACCOUNT_OPTION _HRESULT_TYPEDEF_(0x80041314) +#define SCHED_E_SERVICE_NOT_RUNNING _HRESULT_TYPEDEF_(0x80041315) +#define CO_E_CLASS_CREATE_FAILED _HRESULT_TYPEDEF_(0x80080001) +#define CO_E_SCM_ERROR _HRESULT_TYPEDEF_(0x80080002) +#define CO_E_SCM_RPC_FAILURE _HRESULT_TYPEDEF_(0x80080003) +#define CO_E_BAD_PATH _HRESULT_TYPEDEF_(0x80080004) +#define CO_E_SERVER_EXEC_FAILURE _HRESULT_TYPEDEF_(0x80080005) +#define CO_E_OBJSRV_RPC_FAILURE _HRESULT_TYPEDEF_(0x80080006) +#define MK_E_NO_NORMALIZED _HRESULT_TYPEDEF_(0x80080007) +#define CO_E_SERVER_STOPPING _HRESULT_TYPEDEF_(0x80080008) +#define MEM_E_INVALID_ROOT _HRESULT_TYPEDEF_(0x80080009) +#define MEM_E_INVALID_LINK _HRESULT_TYPEDEF_(0x80080010) +#define MEM_E_INVALID_SIZE _HRESULT_TYPEDEF_(0x80080011) +#define CO_S_NOTALLINTERFACES _HRESULT_TYPEDEF_(0x00080012) +#define CO_S_MACHINENAMENOTFOUND _HRESULT_TYPEDEF_(0x00080013) +#define DISP_E_UNKNOWNINTERFACE _HRESULT_TYPEDEF_(0x80020001) +#define DISP_E_MEMBERNOTFOUND _HRESULT_TYPEDEF_(0x80020003) +#define DISP_E_PARAMNOTFOUND _HRESULT_TYPEDEF_(0x80020004) +#define DISP_E_TYPEMISMATCH _HRESULT_TYPEDEF_(0x80020005) +#define DISP_E_UNKNOWNNAME _HRESULT_TYPEDEF_(0x80020006) +#define DISP_E_NONAMEDARGS _HRESULT_TYPEDEF_(0x80020007) +#define DISP_E_BADVARTYPE _HRESULT_TYPEDEF_(0x80020008) +#define DISP_E_EXCEPTION _HRESULT_TYPEDEF_(0x80020009) +#define DISP_E_OVERFLOW _HRESULT_TYPEDEF_(0x8002000A) +#define DISP_E_BADINDEX _HRESULT_TYPEDEF_(0x8002000B) +#define DISP_E_UNKNOWNLCID _HRESULT_TYPEDEF_(0x8002000C) +#define DISP_E_ARRAYISLOCKED _HRESULT_TYPEDEF_(0x8002000D) +#define DISP_E_BADPARAMCOUNT _HRESULT_TYPEDEF_(0x8002000E) +#define DISP_E_PARAMNOTOPTIONAL _HRESULT_TYPEDEF_(0x8002000F) +#define DISP_E_BADCALLEE _HRESULT_TYPEDEF_(0x80020010) +#define DISP_E_NOTACOLLECTION _HRESULT_TYPEDEF_(0x80020011) +#define DISP_E_DIVBYZERO _HRESULT_TYPEDEF_(0x80020012) +#define DISP_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80020013) +#define TYPE_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80028016) +#define TYPE_E_FIELDNOTFOUND _HRESULT_TYPEDEF_(0x80028017) +#define TYPE_E_INVDATAREAD _HRESULT_TYPEDEF_(0x80028018) +#define TYPE_E_UNSUPFORMAT _HRESULT_TYPEDEF_(0x80028019) +#define TYPE_E_REGISTRYACCESS _HRESULT_TYPEDEF_(0x8002801C) +#define TYPE_E_LIBNOTREGISTERED _HRESULT_TYPEDEF_(0x8002801D) +#define TYPE_E_UNDEFINEDTYPE _HRESULT_TYPEDEF_(0x80028027) +#define TYPE_E_QUALIFIEDNAMEDISALLOWED _HRESULT_TYPEDEF_(0x80028028) +#define TYPE_E_INVALIDSTATE _HRESULT_TYPEDEF_(0x80028029) +#define TYPE_E_WRONGTYPEKIND _HRESULT_TYPEDEF_(0x8002802A) +#define TYPE_E_ELEMENTNOTFOUND _HRESULT_TYPEDEF_(0x8002802B) +#define TYPE_E_AMBIGUOUSNAME _HRESULT_TYPEDEF_(0x8002802C) +#define TYPE_E_NAMECONFLICT _HRESULT_TYPEDEF_(0x8002802D) +#define TYPE_E_UNKNOWNLCID _HRESULT_TYPEDEF_(0x8002802E) +#define TYPE_E_DLLFUNCTIONNOTFOUND _HRESULT_TYPEDEF_(0x8002802F) +#define TYPE_E_BADMODULEKIND _HRESULT_TYPEDEF_(0x800288BD) +#define TYPE_E_SIZETOOBIG _HRESULT_TYPEDEF_(0x800288C5) +#define TYPE_E_DUPLICATEID _HRESULT_TYPEDEF_(0x800288C6) +#define TYPE_E_INVALIDID _HRESULT_TYPEDEF_(0x800288CF) +#define TYPE_E_TYPEMISMATCH _HRESULT_TYPEDEF_(0x80028CA0) +#define TYPE_E_OUTOFBOUNDS _HRESULT_TYPEDEF_(0x80028CA1) +#define TYPE_E_IOERROR _HRESULT_TYPEDEF_(0x80028CA2) +#define TYPE_E_CANTCREATETMPFILE _HRESULT_TYPEDEF_(0x80028CA3) +#define TYPE_E_CANTLOADLIBRARY _HRESULT_TYPEDEF_(0x80029C4A) +#define TYPE_E_INCONSISTENTPROPFUNCS _HRESULT_TYPEDEF_(0x80029C83) +#define TYPE_E_CIRCULARTYPE _HRESULT_TYPEDEF_(0x80029C84) +#define STG_E_INVALIDFUNCTION _HRESULT_TYPEDEF_(0x80030001) +#define STG_E_FILENOTFOUND _HRESULT_TYPEDEF_(0x80030002) +#define STG_E_PATHNOTFOUND _HRESULT_TYPEDEF_(0x80030003) +#define STG_E_TOOMANYOPENFILES _HRESULT_TYPEDEF_(0x80030004) +#define STG_E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80030005) +#define STG_E_INVALIDHANDLE _HRESULT_TYPEDEF_(0x80030006) +#define STG_E_INSUFFICIENTMEMORY _HRESULT_TYPEDEF_(0x80030008) +#define STG_E_INVALIDPOINTER _HRESULT_TYPEDEF_(0x80030009) +#define STG_E_NOMOREFILES _HRESULT_TYPEDEF_(0x80030012) +#define STG_E_DISKISWRITEPROTECTED _HRESULT_TYPEDEF_(0x80030013) +#define STG_E_SEEKERROR _HRESULT_TYPEDEF_(0x80030019) +#define STG_E_WRITEFAULT _HRESULT_TYPEDEF_(0x8003001D) +#define STG_E_READFAULT _HRESULT_TYPEDEF_(0x8003001E) +#define STG_E_SHAREVIOLATION _HRESULT_TYPEDEF_(0x80030020) +#define STG_E_LOCKVIOLATION _HRESULT_TYPEDEF_(0x80030021) +#define STG_E_FILEALREADYEXISTS _HRESULT_TYPEDEF_(0x80030050) +#define STG_E_INVALIDPARAMETER _HRESULT_TYPEDEF_(0x80030057) +#define STG_E_MEDIUMFULL _HRESULT_TYPEDEF_(0x80030070) +#define STG_E_PROPSETMISMATCHED _HRESULT_TYPEDEF_(0x800300F0) +#define STG_E_ABNORMALAPIEXIT _HRESULT_TYPEDEF_(0x800300FA) +#define STG_E_INVALIDHEADER _HRESULT_TYPEDEF_(0x800300FB) +#define STG_E_INVALIDNAME _HRESULT_TYPEDEF_(0x800300FC) +#define STG_E_UNKNOWN _HRESULT_TYPEDEF_(0x800300FD) +#define STG_E_UNIMPLEMENTEDFUNCTION _HRESULT_TYPEDEF_(0x800300FE) +#define STG_E_INVALIDFLAG _HRESULT_TYPEDEF_(0x800300FF) +#define STG_E_INUSE _HRESULT_TYPEDEF_(0x80030100) +#define STG_E_NOTCURRENT _HRESULT_TYPEDEF_(0x80030101) +#define STG_E_REVERTED _HRESULT_TYPEDEF_(0x80030102) +#define STG_E_CANTSAVE _HRESULT_TYPEDEF_(0x80030103) +#define STG_E_OLDFORMAT _HRESULT_TYPEDEF_(0x80030104) +#define STG_E_OLDDLL _HRESULT_TYPEDEF_(0x80030105) +#define STG_E_SHAREREQUIRED _HRESULT_TYPEDEF_(0x80030106) +#define STG_E_NOTFILEBASEDSTORAGE _HRESULT_TYPEDEF_(0x80030107) +#define STG_E_EXTANTMARSHALLINGS _HRESULT_TYPEDEF_(0x80030108) +#define STG_E_DOCFILECORRUPT _HRESULT_TYPEDEF_(0x80030109) +#define STG_E_BADBASEADDRESS _HRESULT_TYPEDEF_(0x80030110) +#define STG_E_DOCFILETOOLARGE _HRESULT_TYPEDEF_(0x80030111) +#define STG_E_NOTSIMPLEFORMAT _HRESULT_TYPEDEF_(0x80030112) +#define STG_E_INCOMPLETE _HRESULT_TYPEDEF_(0x80030201) +#define STG_E_TERMINATED _HRESULT_TYPEDEF_(0x80030202) +#define STG_S_CONVERTED _HRESULT_TYPEDEF_(0x00030200) +#define STG_S_BLOCK _HRESULT_TYPEDEF_(0x00030201) +#define STG_S_RETRYNOW _HRESULT_TYPEDEF_(0x00030202) +#define STG_S_MONITORING _HRESULT_TYPEDEF_(0x00030203) +#define STG_S_MULTIPLEOPENS _HRESULT_TYPEDEF_(0x00030204) +#define STG_S_CONSOLIDATIONFAILED _HRESULT_TYPEDEF_(0x00030205) +#define STG_S_CANNOTCONSOLIDATE _HRESULT_TYPEDEF_(0x00030206) +#define STG_E_STATUS_COPY_PROTECTION_FAILURE _HRESULT_TYPEDEF_(0x80030305) +#define STG_E_CSS_AUTHENTICATION_FAILURE _HRESULT_TYPEDEF_(0x80030306) +#define STG_E_CSS_KEY_NOT_PRESENT _HRESULT_TYPEDEF_(0x80030307) +#define STG_E_CSS_KEY_NOT_ESTABLISHED _HRESULT_TYPEDEF_(0x80030308) +#define STG_E_CSS_SCRAMBLED_SECTOR _HRESULT_TYPEDEF_(0x80030309) +#define STG_E_CSS_REGION_MISMATCH _HRESULT_TYPEDEF_(0x8003030A) +#define STG_E_RESETS_EXHAUSTED _HRESULT_TYPEDEF_(0x8003030B) +#define RPC_E_CALL_REJECTED _HRESULT_TYPEDEF_(0x80010001) +#define RPC_E_CALL_CANCELED _HRESULT_TYPEDEF_(0x80010002) +#define RPC_E_CANTPOST_INSENDCALL _HRESULT_TYPEDEF_(0x80010003) +#define RPC_E_CANTCALLOUT_INASYNCCALL _HRESULT_TYPEDEF_(0x80010004) +#define RPC_E_CANTCALLOUT_INEXTERNALCALL _HRESULT_TYPEDEF_(0x80010005) +#define RPC_E_CONNECTION_TERMINATED _HRESULT_TYPEDEF_(0x80010006) +#define RPC_E_SERVER_DIED _HRESULT_TYPEDEF_(0x80010007) +#define RPC_E_CLIENT_DIED _HRESULT_TYPEDEF_(0x80010008) +#define RPC_E_INVALID_DATAPACKET _HRESULT_TYPEDEF_(0x80010009) +#define RPC_E_CANTTRANSMIT_CALL _HRESULT_TYPEDEF_(0x8001000A) +#define RPC_E_CLIENT_CANTMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000B) +#define RPC_E_CLIENT_CANTUNMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000C) +#define RPC_E_SERVER_CANTMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000D) +#define RPC_E_SERVER_CANTUNMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000E) +#define RPC_E_INVALID_DATA _HRESULT_TYPEDEF_(0x8001000F) +#define RPC_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80010010) +#define RPC_E_CANTCALLOUT_AGAIN _HRESULT_TYPEDEF_(0x80010011) +#define RPC_E_SERVER_DIED_DNE _HRESULT_TYPEDEF_(0x80010012) +#define RPC_E_SYS_CALL_FAILED _HRESULT_TYPEDEF_(0x80010100) +#define RPC_E_OUT_OF_RESOURCES _HRESULT_TYPEDEF_(0x80010101) +#define RPC_E_ATTEMPTED_MULTITHREAD _HRESULT_TYPEDEF_(0x80010102) +#define RPC_E_NOT_REGISTERED _HRESULT_TYPEDEF_(0x80010103) +#define RPC_E_FAULT _HRESULT_TYPEDEF_(0x80010104) +#define RPC_E_SERVERFAULT _HRESULT_TYPEDEF_(0x80010105) +#define RPC_E_CHANGED_MODE _HRESULT_TYPEDEF_(0x80010106) +#define RPC_E_INVALIDMETHOD _HRESULT_TYPEDEF_(0x80010107) +#define RPC_E_DISCONNECTED _HRESULT_TYPEDEF_(0x80010108) +#define RPC_E_RETRY _HRESULT_TYPEDEF_(0x80010109) +#define RPC_E_SERVERCALL_RETRYLATER _HRESULT_TYPEDEF_(0x8001010A) +#define RPC_E_SERVERCALL_REJECTED _HRESULT_TYPEDEF_(0x8001010B) +#define RPC_E_INVALID_CALLDATA _HRESULT_TYPEDEF_(0x8001010C) +#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL _HRESULT_TYPEDEF_(0x8001010D) +#define RPC_E_WRONG_THREAD _HRESULT_TYPEDEF_(0x8001010E) +#define RPC_E_THREAD_NOT_INIT _HRESULT_TYPEDEF_(0x8001010F) +#define RPC_E_VERSION_MISMATCH _HRESULT_TYPEDEF_(0x80010110) +#define RPC_E_INVALID_HEADER _HRESULT_TYPEDEF_(0x80010111) +#define RPC_E_INVALID_EXTENSION _HRESULT_TYPEDEF_(0x80010112) +#define RPC_E_INVALID_IPID _HRESULT_TYPEDEF_(0x80010113) +#define RPC_E_INVALID_OBJECT _HRESULT_TYPEDEF_(0x80010114) +#define RPC_S_CALLPENDING _HRESULT_TYPEDEF_(0x80010115) +#define RPC_S_WAITONTIMER _HRESULT_TYPEDEF_(0x80010116) +#define RPC_E_CALL_COMPLETE _HRESULT_TYPEDEF_(0x80010117) +#define RPC_E_UNSECURE_CALL _HRESULT_TYPEDEF_(0x80010118) +#define RPC_E_TOO_LATE _HRESULT_TYPEDEF_(0x80010119) +#define RPC_E_NO_GOOD_SECURITY_PACKAGES _HRESULT_TYPEDEF_(0x8001011A) +#define RPC_E_ACCESS_DENIED _HRESULT_TYPEDEF_(0x8001011B) +#define RPC_E_REMOTE_DISABLED _HRESULT_TYPEDEF_(0x8001011C) +#define RPC_E_INVALID_OBJREF _HRESULT_TYPEDEF_(0x8001011D) +#define RPC_E_NO_CONTEXT _HRESULT_TYPEDEF_(0x8001011E) +#define RPC_E_TIMEOUT _HRESULT_TYPEDEF_(0x8001011F) +#define RPC_E_NO_SYNC _HRESULT_TYPEDEF_(0x80010120) +#define RPC_E_FULLSIC_REQUIRED _HRESULT_TYPEDEF_(0x80010121) +#define RPC_E_INVALID_STD_NAME _HRESULT_TYPEDEF_(0x80010122) +#define CO_E_FAILEDTOIMPERSONATE _HRESULT_TYPEDEF_(0x80010123) +#define CO_E_FAILEDTOGETSECCTX _HRESULT_TYPEDEF_(0x80010124) +#define CO_E_FAILEDTOOPENTHREADTOKEN _HRESULT_TYPEDEF_(0x80010125) +#define CO_E_FAILEDTOGETTOKENINFO _HRESULT_TYPEDEF_(0x80010126) +#define CO_E_TRUSTEEDOESNTMATCHCLIENT _HRESULT_TYPEDEF_(0x80010127) +#define CO_E_FAILEDTOQUERYCLIENTBLANKET _HRESULT_TYPEDEF_(0x80010128) +#define CO_E_FAILEDTOSETDACL _HRESULT_TYPEDEF_(0x80010129) +#define CO_E_ACCESSCHECKFAILED _HRESULT_TYPEDEF_(0x8001012A) +#define CO_E_NETACCESSAPIFAILED _HRESULT_TYPEDEF_(0x8001012B) +#define CO_E_WRONGTRUSTEENAMESYNTAX _HRESULT_TYPEDEF_(0x8001012C) +#define CO_E_INVALIDSID _HRESULT_TYPEDEF_(0x8001012D) +#define CO_E_CONVERSIONFAILED _HRESULT_TYPEDEF_(0x8001012E) +#define CO_E_NOMATCHINGSIDFOUND _HRESULT_TYPEDEF_(0x8001012F) +#define CO_E_LOOKUPACCSIDFAILED _HRESULT_TYPEDEF_(0x80010130) +#define CO_E_NOMATCHINGNAMEFOUND _HRESULT_TYPEDEF_(0x80010131) +#define CO_E_LOOKUPACCNAMEFAILED _HRESULT_TYPEDEF_(0x80010132) +#define CO_E_SETSERLHNDLFAILED _HRESULT_TYPEDEF_(0x80010133) +#define CO_E_FAILEDTOGETWINDIR _HRESULT_TYPEDEF_(0x80010134) +#define CO_E_PATHTOOLONG _HRESULT_TYPEDEF_(0x80010135) +#define CO_E_FAILEDTOGENUUID _HRESULT_TYPEDEF_(0x80010136) +#define CO_E_FAILEDTOCREATEFILE _HRESULT_TYPEDEF_(0x80010137) +#define CO_E_FAILEDTOCLOSEHANDLE _HRESULT_TYPEDEF_(0x80010138) +#define CO_E_EXCEEDSYSACLLIMIT _HRESULT_TYPEDEF_(0x80010139) +#define CO_E_ACESINWRONGORDER _HRESULT_TYPEDEF_(0x8001013A) +#define CO_E_INCOMPATIBLESTREAMVERSION _HRESULT_TYPEDEF_(0x8001013B) +#define CO_E_FAILEDTOOPENPROCESSTOKEN _HRESULT_TYPEDEF_(0x8001013C) +#define CO_E_DECODEFAILED _HRESULT_TYPEDEF_(0x8001013D) +#define CO_E_ACNOTINITIALIZED _HRESULT_TYPEDEF_(0x8001013F) +#define CO_E_CANCEL_DISABLED _HRESULT_TYPEDEF_(0x80010140) +#define RPC_E_UNEXPECTED _HRESULT_TYPEDEF_(0x8001FFFF) +#define ERROR_AUDITING_DISABLED _HRESULT_TYPEDEF_(0xC0090001) +#define ERROR_ALL_SIDS_FILTERED _HRESULT_TYPEDEF_(0xC0090002) +#define NTE_BAD_UID _HRESULT_TYPEDEF_(0x80090001) +#define NTE_BAD_HASH _HRESULT_TYPEDEF_(0x80090002) +#define NTE_BAD_KEY _HRESULT_TYPEDEF_(0x80090003) +#define NTE_BAD_LEN _HRESULT_TYPEDEF_(0x80090004) +#define NTE_BAD_DATA _HRESULT_TYPEDEF_(0x80090005) +#define NTE_BAD_SIGNATURE _HRESULT_TYPEDEF_(0x80090006) +#define NTE_BAD_VER _HRESULT_TYPEDEF_(0x80090007) +#define NTE_BAD_ALGID _HRESULT_TYPEDEF_(0x80090008) +#define NTE_BAD_FLAGS _HRESULT_TYPEDEF_(0x80090009) +#define NTE_BAD_TYPE _HRESULT_TYPEDEF_(0x8009000A) +#define NTE_BAD_KEY_STATE _HRESULT_TYPEDEF_(0x8009000B) +#define NTE_BAD_HASH_STATE _HRESULT_TYPEDEF_(0x8009000C) +#define NTE_NO_KEY _HRESULT_TYPEDEF_(0x8009000D) +#define NTE_NO_MEMORY _HRESULT_TYPEDEF_(0x8009000E) +#define NTE_EXISTS _HRESULT_TYPEDEF_(0x8009000F) +#define NTE_PERM _HRESULT_TYPEDEF_(0x80090010) +#define NTE_NOT_FOUND _HRESULT_TYPEDEF_(0x80090011) +#define NTE_DOUBLE_ENCRYPT _HRESULT_TYPEDEF_(0x80090012) +#define NTE_BAD_PROVIDER _HRESULT_TYPEDEF_(0x80090013) +#define NTE_BAD_PROV_TYPE _HRESULT_TYPEDEF_(0x80090014) +#define NTE_BAD_PUBLIC_KEY _HRESULT_TYPEDEF_(0x80090015) +#define NTE_BAD_KEYSET _HRESULT_TYPEDEF_(0x80090016) +#define NTE_PROV_TYPE_NOT_DEF _HRESULT_TYPEDEF_(0x80090017) +#define NTE_PROV_TYPE_ENTRY_BAD _HRESULT_TYPEDEF_(0x80090018) +#define NTE_KEYSET_NOT_DEF _HRESULT_TYPEDEF_(0x80090019) +#define NTE_KEYSET_ENTRY_BAD _HRESULT_TYPEDEF_(0x8009001A) +#define NTE_PROV_TYPE_NO_MATCH _HRESULT_TYPEDEF_(0x8009001B) +#define NTE_SIGNATURE_FILE_BAD _HRESULT_TYPEDEF_(0x8009001C) +#define NTE_PROVIDER_DLL_FAIL _HRESULT_TYPEDEF_(0x8009001D) +#define NTE_PROV_DLL_NOT_FOUND _HRESULT_TYPEDEF_(0x8009001E) +#define NTE_BAD_KEYSET_PARAM _HRESULT_TYPEDEF_(0x8009001F) +#define NTE_FAIL _HRESULT_TYPEDEF_(0x80090020) +#define NTE_SYS_ERR _HRESULT_TYPEDEF_(0x80090021) +#define NTE_SILENT_CONTEXT _HRESULT_TYPEDEF_(0x80090022) +#define NTE_TOKEN_KEYSET_STORAGE_FULL _HRESULT_TYPEDEF_(0x80090023) +#define NTE_TEMPORARY_PROFILE _HRESULT_TYPEDEF_(0x80090024) +#define NTE_FIXEDPARAMETER _HRESULT_TYPEDEF_(0x80090025) +#define NTE_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80090026) +#define NTE_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80090027) +#define NTE_BUFFER_TOO_SMALL _HRESULT_TYPEDEF_(0x80090028) +#define NTE_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80090029) +#define NTE_NO_MORE_ITEMS _HRESULT_TYPEDEF_(0x8009002A) +#define NTE_BUFFERS_OVERLAP _HRESULT_TYPEDEF_(0x8009002B) +#define NTE_DECRYPTION_FAILURE _HRESULT_TYPEDEF_(0x8009002C) +#define NTE_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x8009002D) +#define NTE_UI_REQUIRED _HRESULT_TYPEDEF_(0x8009002E) +#define NTE_HMAC_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009002F) +#define NTE_DEVICE_NOT_READY _HRESULT_TYPEDEF_(0x80090030) +#define NTE_AUTHENTICATION_IGNORED _HRESULT_TYPEDEF_(0x80090031) +#define NTE_VALIDATION_FAILED _HRESULT_TYPEDEF_(0x80090032) +#define NTE_INCORRECT_PASSWORD _HRESULT_TYPEDEF_(0x80090033) +#define NTE_ENCRYPTION_FAILURE _HRESULT_TYPEDEF_(0x80090034) +#define NTE_DEVICE_NOT_FOUND _HRESULT_TYPEDEF_(0x80090035) +#define NTE_USER_CANCELLED _HRESULT_TYPEDEF_(0x80090036) +#define NTE_PASSWORD_CHANGE_REQUIRED _HRESULT_TYPEDEF_(0x80090037) +#define NTE_NOT_ACTIVE_CONSOLE _HRESULT_TYPEDEF_(0x80090038) +#define SEC_E_INSUFFICIENT_MEMORY _HRESULT_TYPEDEF_(0x80090300) +#define SEC_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80090301) +#define SEC_E_UNSUPPORTED_FUNCTION _HRESULT_TYPEDEF_(0x80090302) +#define SEC_E_TARGET_UNKNOWN _HRESULT_TYPEDEF_(0x80090303) +#define SEC_E_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x80090304) +#define SEC_E_SECPKG_NOT_FOUND _HRESULT_TYPEDEF_(0x80090305) +#define SEC_E_NOT_OWNER _HRESULT_TYPEDEF_(0x80090306) +#define SEC_E_CANNOT_INSTALL _HRESULT_TYPEDEF_(0x80090307) +#define SEC_E_INVALID_TOKEN _HRESULT_TYPEDEF_(0x80090308) +#define SEC_E_CANNOT_PACK _HRESULT_TYPEDEF_(0x80090309) +#define SEC_E_QOP_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009030A) +#define SEC_E_NO_IMPERSONATION _HRESULT_TYPEDEF_(0x8009030B) +#define SEC_E_LOGON_DENIED _HRESULT_TYPEDEF_(0x8009030C) +#define SEC_E_UNKNOWN_CREDENTIALS _HRESULT_TYPEDEF_(0x8009030D) +#define SEC_E_NO_CREDENTIALS _HRESULT_TYPEDEF_(0x8009030E) +#define SEC_E_MESSAGE_ALTERED _HRESULT_TYPEDEF_(0x8009030F) +#define SEC_E_OUT_OF_SEQUENCE _HRESULT_TYPEDEF_(0x80090310) +#define SEC_E_NO_AUTHENTICATING_AUTHORITY _HRESULT_TYPEDEF_(0x80090311) +#define SEC_I_CONTINUE_NEEDED _HRESULT_TYPEDEF_(0x00090312) +#define SEC_I_COMPLETE_NEEDED _HRESULT_TYPEDEF_(0x00090313) +#define SEC_I_COMPLETE_AND_CONTINUE _HRESULT_TYPEDEF_(0x00090314) +#define SEC_I_LOCAL_LOGON _HRESULT_TYPEDEF_(0x00090315) +#define SEC_I_GENERIC_EXTENSION_RECEIVED _HRESULT_TYPEDEF_(0x00090316) +#define SEC_E_BAD_PKGID _HRESULT_TYPEDEF_(0x80090316) +#define SEC_E_CONTEXT_EXPIRED _HRESULT_TYPEDEF_(0x80090317) +#define SEC_I_CONTEXT_EXPIRED _HRESULT_TYPEDEF_(0x00090317) +#define SEC_E_INCOMPLETE_MESSAGE _HRESULT_TYPEDEF_(0x80090318) +#define SEC_E_INCOMPLETE_CREDENTIALS _HRESULT_TYPEDEF_(0x80090320) +#define SEC_E_BUFFER_TOO_SMALL _HRESULT_TYPEDEF_(0x80090321) +#define SEC_I_INCOMPLETE_CREDENTIALS _HRESULT_TYPEDEF_(0x00090320) +#define SEC_I_RENEGOTIATE _HRESULT_TYPEDEF_(0x00090321) +#define SEC_E_WRONG_PRINCIPAL _HRESULT_TYPEDEF_(0x80090322) +#define SEC_I_NO_LSA_CONTEXT _HRESULT_TYPEDEF_(0x00090323) +#define SEC_E_TIME_SKEW _HRESULT_TYPEDEF_(0x80090324) +#define SEC_E_UNTRUSTED_ROOT _HRESULT_TYPEDEF_(0x80090325) +#define SEC_E_ILLEGAL_MESSAGE _HRESULT_TYPEDEF_(0x80090326) +#define SEC_E_CERT_UNKNOWN _HRESULT_TYPEDEF_(0x80090327) +#define SEC_E_CERT_EXPIRED _HRESULT_TYPEDEF_(0x80090328) +#define SEC_E_ENCRYPT_FAILURE _HRESULT_TYPEDEF_(0x80090329) +#define SEC_E_DECRYPT_FAILURE _HRESULT_TYPEDEF_(0x80090330) +#define SEC_E_ALGORITHM_MISMATCH _HRESULT_TYPEDEF_(0x80090331) +#define SEC_E_SECURITY_QOS_FAILED _HRESULT_TYPEDEF_(0x80090332) +#define SEC_E_UNFINISHED_CONTEXT_DELETED _HRESULT_TYPEDEF_(0x80090333) +#define SEC_E_NO_TGT_REPLY _HRESULT_TYPEDEF_(0x80090334) +#define SEC_E_NO_IP_ADDRESSES _HRESULT_TYPEDEF_(0x80090335) +#define SEC_E_WRONG_CREDENTIAL_HANDLE _HRESULT_TYPEDEF_(0x80090336) +#define SEC_E_CRYPTO_SYSTEM_INVALID _HRESULT_TYPEDEF_(0x80090337) +#define SEC_E_MAX_REFERRALS_EXCEEDED _HRESULT_TYPEDEF_(0x80090338) +#define SEC_E_MUST_BE_KDC _HRESULT_TYPEDEF_(0x80090339) +#define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009033A) +#define SEC_E_TOO_MANY_PRINCIPALS _HRESULT_TYPEDEF_(0x8009033B) +#define SEC_E_NO_PA_DATA _HRESULT_TYPEDEF_(0x8009033C) +#define SEC_E_PKINIT_NAME_MISMATCH _HRESULT_TYPEDEF_(0x8009033D) +#define SEC_E_SMARTCARD_LOGON_REQUIRED _HRESULT_TYPEDEF_(0x8009033E) +#define SEC_E_SHUTDOWN_IN_PROGRESS _HRESULT_TYPEDEF_(0x8009033F) +#define SEC_E_KDC_INVALID_REQUEST _HRESULT_TYPEDEF_(0x80090340) +#define SEC_E_KDC_UNABLE_TO_REFER _HRESULT_TYPEDEF_(0x80090341) +#define SEC_E_KDC_UNKNOWN_ETYPE _HRESULT_TYPEDEF_(0x80090342) +#define SEC_E_UNSUPPORTED_PREAUTH _HRESULT_TYPEDEF_(0x80090343) +#define SEC_E_DELEGATION_REQUIRED _HRESULT_TYPEDEF_(0x80090345) +#define SEC_E_BAD_BINDINGS _HRESULT_TYPEDEF_(0x80090346) +#define SEC_E_MULTIPLE_ACCOUNTS _HRESULT_TYPEDEF_(0x80090347) +#define SEC_E_NO_KERB_KEY _HRESULT_TYPEDEF_(0x80090348) +#define SEC_E_CERT_WRONG_USAGE _HRESULT_TYPEDEF_(0x80090349) +#define SEC_E_DOWNGRADE_DETECTED _HRESULT_TYPEDEF_(0x80090350) +#define SEC_E_SMARTCARD_CERT_REVOKED _HRESULT_TYPEDEF_(0x80090351) +#define SEC_E_ISSUING_CA_UNTRUSTED _HRESULT_TYPEDEF_(0x80090352) +#define SEC_E_REVOCATION_OFFLINE_C _HRESULT_TYPEDEF_(0x80090353) +#define SEC_E_PKINIT_CLIENT_FAILURE _HRESULT_TYPEDEF_(0x80090354) +#define SEC_E_SMARTCARD_CERT_EXPIRED _HRESULT_TYPEDEF_(0x80090355) +#define SEC_E_NO_S4U_PROT_SUPPORT _HRESULT_TYPEDEF_(0x80090356) +#define SEC_E_CROSSREALM_DELEGATION_FAILURE _HRESULT_TYPEDEF_(0x80090357) +#define SEC_E_REVOCATION_OFFLINE_KDC _HRESULT_TYPEDEF_(0x80090358) +#define SEC_E_ISSUING_CA_UNTRUSTED_KDC _HRESULT_TYPEDEF_(0x80090359) +#define SEC_E_KDC_CERT_EXPIRED _HRESULT_TYPEDEF_(0x8009035A) +#define SEC_E_KDC_CERT_REVOKED _HRESULT_TYPEDEF_(0x8009035B) +#define SEC_I_SIGNATURE_NEEDED _HRESULT_TYPEDEF_(0x0009035C) +#define SEC_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x8009035D) +#define SEC_E_DELEGATION_POLICY _HRESULT_TYPEDEF_(0x8009035E) +#define SEC_E_POLICY_NLTM_ONLY _HRESULT_TYPEDEF_(0x8009035F) +#define SEC_I_NO_RENEGOTIATION _HRESULT_TYPEDEF_(0x00090360) +#define SEC_E_NO_CONTEXT _HRESULT_TYPEDEF_(0x80090361) +#define SEC_E_PKU2U_CERT_FAILURE _HRESULT_TYPEDEF_(0x80090362) +#define SEC_E_MUTUAL_AUTH_FAILED _HRESULT_TYPEDEF_(0x80090363) +#define SEC_I_MESSAGE_FRAGMENT _HRESULT_TYPEDEF_(0x00090364) +#define SEC_E_ONLY_HTTPS_ALLOWED _HRESULT_TYPEDEF_(0x80090365) +#define SEC_I_CONTINUE_NEEDED_MESSAGE_OK _HRESULT_TYPEDEF_(0x00090366) +#define SEC_E_APPLICATION_PROTOCOL_MISMATCH _HRESULT_TYPEDEF_(0x80090367) +#define SEC_I_ASYNC_CALL_PENDING _HRESULT_TYPEDEF_(0x00090368) +#define SEC_E_INVALID_UPN_NAME _HRESULT_TYPEDEF_(0x80090369) +#define SEC_E_EXT_BUFFER_TOO_SMALL _HRESULT_TYPEDEF_(0x8009036A) +#define SEC_E_INSUFFICIENT_BUFFERS _HRESULT_TYPEDEF_(0x8009036B) +#define SEC_E_NO_SPM SEC_E_INTERNAL_ERROR +#define SEC_E_NOT_SUPPORTED SEC_E_UNSUPPORTED_FUNCTION +#define CRYPT_E_MSG_ERROR _HRESULT_TYPEDEF_(0x80091001) +#define CRYPT_E_UNKNOWN_ALGO _HRESULT_TYPEDEF_(0x80091002) +#define CRYPT_E_OID_FORMAT _HRESULT_TYPEDEF_(0x80091003) +#define CRYPT_E_INVALID_MSG_TYPE _HRESULT_TYPEDEF_(0x80091004) +#define CRYPT_E_UNEXPECTED_ENCODING _HRESULT_TYPEDEF_(0x80091005) +#define CRYPT_E_AUTH_ATTR_MISSING _HRESULT_TYPEDEF_(0x80091006) +#define CRYPT_E_HASH_VALUE _HRESULT_TYPEDEF_(0x80091007) +#define CRYPT_E_INVALID_INDEX _HRESULT_TYPEDEF_(0x80091008) +#define CRYPT_E_ALREADY_DECRYPTED _HRESULT_TYPEDEF_(0x80091009) +#define CRYPT_E_NOT_DECRYPTED _HRESULT_TYPEDEF_(0x8009100A) +#define CRYPT_E_RECIPIENT_NOT_FOUND _HRESULT_TYPEDEF_(0x8009100B) +#define CRYPT_E_CONTROL_TYPE _HRESULT_TYPEDEF_(0x8009100C) +#define CRYPT_E_ISSUER_SERIALNUMBER _HRESULT_TYPEDEF_(0x8009100D) +#define CRYPT_E_SIGNER_NOT_FOUND _HRESULT_TYPEDEF_(0x8009100E) +#define CRYPT_E_ATTRIBUTES_MISSING _HRESULT_TYPEDEF_(0x8009100F) +#define CRYPT_E_STREAM_MSG_NOT_READY _HRESULT_TYPEDEF_(0x80091010) +#define CRYPT_E_STREAM_INSUFFICIENT_DATA _HRESULT_TYPEDEF_(0x80091011) +#define CRYPT_I_NEW_PROTECTION_REQUIRED _HRESULT_TYPEDEF_(0x00091012) +#define CRYPT_E_BAD_LEN _HRESULT_TYPEDEF_(0x80092001) +#define CRYPT_E_BAD_ENCODE _HRESULT_TYPEDEF_(0x80092002) +#define CRYPT_E_FILE_ERROR _HRESULT_TYPEDEF_(0x80092003) +#define CRYPT_E_NOT_FOUND _HRESULT_TYPEDEF_(0x80092004) +#define CRYPT_E_EXISTS _HRESULT_TYPEDEF_(0x80092005) +#define CRYPT_E_NO_PROVIDER _HRESULT_TYPEDEF_(0x80092006) +#define CRYPT_E_SELF_SIGNED _HRESULT_TYPEDEF_(0x80092007) +#define CRYPT_E_DELETED_PREV _HRESULT_TYPEDEF_(0x80092008) +#define CRYPT_E_NO_MATCH _HRESULT_TYPEDEF_(0x80092009) +#define CRYPT_E_UNEXPECTED_MSG_TYPE _HRESULT_TYPEDEF_(0x8009200A) +#define CRYPT_E_NO_KEY_PROPERTY _HRESULT_TYPEDEF_(0x8009200B) +#define CRYPT_E_NO_DECRYPT_CERT _HRESULT_TYPEDEF_(0x8009200C) +#define CRYPT_E_BAD_MSG _HRESULT_TYPEDEF_(0x8009200D) +#define CRYPT_E_NO_SIGNER _HRESULT_TYPEDEF_(0x8009200E) +#define CRYPT_E_PENDING_CLOSE _HRESULT_TYPEDEF_(0x8009200F) +#define CRYPT_E_REVOKED _HRESULT_TYPEDEF_(0x80092010) +#define CRYPT_E_NO_REVOCATION_DLL _HRESULT_TYPEDEF_(0x80092011) +#define CRYPT_E_NO_REVOCATION_CHECK _HRESULT_TYPEDEF_(0x80092012) +#define CRYPT_E_REVOCATION_OFFLINE _HRESULT_TYPEDEF_(0x80092013) +#define CRYPT_E_NOT_IN_REVOCATION_DATABASE _HRESULT_TYPEDEF_(0x80092014) +#define CRYPT_E_INVALID_NUMERIC_STRING _HRESULT_TYPEDEF_(0x80092020) +#define CRYPT_E_INVALID_PRINTABLE_STRING _HRESULT_TYPEDEF_(0x80092021) +#define CRYPT_E_INVALID_IA5_STRING _HRESULT_TYPEDEF_(0x80092022) +#define CRYPT_E_INVALID_X500_STRING _HRESULT_TYPEDEF_(0x80092023) +#define CRYPT_E_NOT_CHAR_STRING _HRESULT_TYPEDEF_(0x80092024) +#define CRYPT_E_FILERESIZED _HRESULT_TYPEDEF_(0x80092025) +#define CRYPT_E_SECURITY_SETTINGS _HRESULT_TYPEDEF_(0x80092026) +#define CRYPT_E_NO_VERIFY_USAGE_DLL _HRESULT_TYPEDEF_(0x80092027) +#define CRYPT_E_NO_VERIFY_USAGE_CHECK _HRESULT_TYPEDEF_(0x80092028) +#define CRYPT_E_VERIFY_USAGE_OFFLINE _HRESULT_TYPEDEF_(0x80092029) +#define CRYPT_E_NOT_IN_CTL _HRESULT_TYPEDEF_(0x8009202A) +#define CRYPT_E_NO_TRUSTED_SIGNER _HRESULT_TYPEDEF_(0x8009202B) +#define CRYPT_E_MISSING_PUBKEY_PARA _HRESULT_TYPEDEF_(0x8009202C) +#define CRYPT_E_OSS_ERROR _HRESULT_TYPEDEF_(0x80093000) +#define OSS_MORE_BUF _HRESULT_TYPEDEF_(0x80093001) +#define OSS_NEGATIVE_UINTEGER _HRESULT_TYPEDEF_(0x80093002) +#define OSS_PDU_RANGE _HRESULT_TYPEDEF_(0x80093003) +#define OSS_MORE_INPUT _HRESULT_TYPEDEF_(0x80093004) +#define OSS_DATA_ERROR _HRESULT_TYPEDEF_(0x80093005) +#define OSS_BAD_ARG _HRESULT_TYPEDEF_(0x80093006) +#define OSS_BAD_VERSION _HRESULT_TYPEDEF_(0x80093007) +#define OSS_OUT_MEMORY _HRESULT_TYPEDEF_(0x80093008) +#define OSS_PDU_MISMATCH _HRESULT_TYPEDEF_(0x80093009) +#define OSS_LIMITED _HRESULT_TYPEDEF_(0x8009300A) +#define OSS_BAD_PTR _HRESULT_TYPEDEF_(0x8009300B) +#define OSS_BAD_TIME _HRESULT_TYPEDEF_(0x8009300C) +#define OSS_INDEFINITE_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009300D) +#define OSS_MEM_ERROR _HRESULT_TYPEDEF_(0x8009300E) +#define OSS_BAD_TABLE _HRESULT_TYPEDEF_(0x8009300F) +#define OSS_TOO_LONG _HRESULT_TYPEDEF_(0x80093010) +#define OSS_CONSTRAINT_VIOLATED _HRESULT_TYPEDEF_(0x80093011) +#define OSS_FATAL_ERROR _HRESULT_TYPEDEF_(0x80093012) +#define OSS_ACCESS_SERIALIZATION_ERROR _HRESULT_TYPEDEF_(0x80093013) +#define OSS_NULL_TBL _HRESULT_TYPEDEF_(0x80093014) +#define OSS_NULL_FCN _HRESULT_TYPEDEF_(0x80093015) +#define OSS_BAD_ENCRULES _HRESULT_TYPEDEF_(0x80093016) +#define OSS_UNAVAIL_ENCRULES _HRESULT_TYPEDEF_(0x80093017) +#define OSS_CANT_OPEN_TRACE_WINDOW _HRESULT_TYPEDEF_(0x80093018) +#define OSS_UNIMPLEMENTED _HRESULT_TYPEDEF_(0x80093019) +#define OSS_OID_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009301A) +#define OSS_CANT_OPEN_TRACE_FILE _HRESULT_TYPEDEF_(0x8009301B) +#define OSS_TRACE_FILE_ALREADY_OPEN _HRESULT_TYPEDEF_(0x8009301C) +#define OSS_TABLE_MISMATCH _HRESULT_TYPEDEF_(0x8009301D) +#define OSS_TYPE_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009301E) +#define OSS_REAL_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009301F) +#define OSS_REAL_CODE_NOT_LINKED _HRESULT_TYPEDEF_(0x80093020) +#define OSS_OUT_OF_RANGE _HRESULT_TYPEDEF_(0x80093021) +#define OSS_COPIER_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093022) +#define OSS_CONSTRAINT_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093023) +#define OSS_COMPARATOR_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093024) +#define OSS_COMPARATOR_CODE_NOT_LINKED _HRESULT_TYPEDEF_(0x80093025) +#define OSS_MEM_MGR_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093026) +#define OSS_PDV_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093027) +#define OSS_PDV_CODE_NOT_LINKED _HRESULT_TYPEDEF_(0x80093028) +#define OSS_API_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093029) +#define OSS_BERDER_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009302A) +#define OSS_PER_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009302B) +#define OSS_OPEN_TYPE_ERROR _HRESULT_TYPEDEF_(0x8009302C) +#define OSS_MUTEX_NOT_CREATED _HRESULT_TYPEDEF_(0x8009302D) +#define OSS_CANT_CLOSE_TRACE_FILE _HRESULT_TYPEDEF_(0x8009302E) +#define CRYPT_E_ASN1_ERROR _HRESULT_TYPEDEF_(0x80093100) +#define CRYPT_E_ASN1_INTERNAL _HRESULT_TYPEDEF_(0x80093101) +#define CRYPT_E_ASN1_EOD _HRESULT_TYPEDEF_(0x80093102) +#define CRYPT_E_ASN1_CORRUPT _HRESULT_TYPEDEF_(0x80093103) +#define CRYPT_E_ASN1_LARGE _HRESULT_TYPEDEF_(0x80093104) +#define CRYPT_E_ASN1_CONSTRAINT _HRESULT_TYPEDEF_(0x80093105) +#define CRYPT_E_ASN1_MEMORY _HRESULT_TYPEDEF_(0x80093106) +#define CRYPT_E_ASN1_OVERFLOW _HRESULT_TYPEDEF_(0x80093107) +#define CRYPT_E_ASN1_BADPDU _HRESULT_TYPEDEF_(0x80093108) +#define CRYPT_E_ASN1_BADARGS _HRESULT_TYPEDEF_(0x80093109) +#define CRYPT_E_ASN1_BADREAL _HRESULT_TYPEDEF_(0x8009310A) +#define CRYPT_E_ASN1_BADTAG _HRESULT_TYPEDEF_(0x8009310B) +#define CRYPT_E_ASN1_CHOICE _HRESULT_TYPEDEF_(0x8009310C) +#define CRYPT_E_ASN1_RULE _HRESULT_TYPEDEF_(0x8009310D) +#define CRYPT_E_ASN1_UTF8 _HRESULT_TYPEDEF_(0x8009310E) +#define CRYPT_E_ASN1_PDU_TYPE _HRESULT_TYPEDEF_(0x80093133) +#define CRYPT_E_ASN1_NYI _HRESULT_TYPEDEF_(0x80093134) +#define CRYPT_E_ASN1_EXTENDED _HRESULT_TYPEDEF_(0x80093201) +#define CRYPT_E_ASN1_NOEOD _HRESULT_TYPEDEF_(0x80093202) +#define CERTSRV_E_BAD_REQUESTSUBJECT _HRESULT_TYPEDEF_(0x80094001) +#define CERTSRV_E_NO_REQUEST _HRESULT_TYPEDEF_(0x80094002) +#define CERTSRV_E_BAD_REQUESTSTATUS _HRESULT_TYPEDEF_(0x80094003) +#define CERTSRV_E_PROPERTY_EMPTY _HRESULT_TYPEDEF_(0x80094004) +#define CERTSRV_E_INVALID_CA_CERTIFICATE _HRESULT_TYPEDEF_(0x80094005) +#define CERTSRV_E_SERVER_SUSPENDED _HRESULT_TYPEDEF_(0x80094006) +#define CERTSRV_E_ENCODING_LENGTH _HRESULT_TYPEDEF_(0x80094007) +#define CERTSRV_E_ROLECONFLICT _HRESULT_TYPEDEF_(0x80094008) +#define CERTSRV_E_RESTRICTEDOFFICER _HRESULT_TYPEDEF_(0x80094009) +#define CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED _HRESULT_TYPEDEF_(0x8009400A) +#define CERTSRV_E_NO_VALID_KRA _HRESULT_TYPEDEF_(0x8009400B) +#define CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL _HRESULT_TYPEDEF_(0x8009400C) +#define CERTSRV_E_NO_CAADMIN_DEFINED _HRESULT_TYPEDEF_(0x8009400D) +#define CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE _HRESULT_TYPEDEF_(0x8009400E) +#define CERTSRV_E_NO_DB_SESSIONS _HRESULT_TYPEDEF_(0x8009400F) +#define CERTSRV_E_ALIGNMENT_FAULT _HRESULT_TYPEDEF_(0x80094010) +#define CERTSRV_E_ENROLL_DENIED _HRESULT_TYPEDEF_(0x80094011) +#define CERTSRV_E_TEMPLATE_DENIED _HRESULT_TYPEDEF_(0x80094012) +#define CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE _HRESULT_TYPEDEF_(0x80094013) +#define CERTSRV_E_UNSUPPORTED_CERT_TYPE _HRESULT_TYPEDEF_(0x80094800) +#define CERTSRV_E_NO_CERT_TYPE _HRESULT_TYPEDEF_(0x80094801) +#define CERTSRV_E_TEMPLATE_CONFLICT _HRESULT_TYPEDEF_(0x80094802) +#define CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED _HRESULT_TYPEDEF_(0x80094803) +#define CERTSRV_E_ARCHIVED_KEY_REQUIRED _HRESULT_TYPEDEF_(0x80094804) +#define CERTSRV_E_SMIME_REQUIRED _HRESULT_TYPEDEF_(0x80094805) +#define CERTSRV_E_BAD_RENEWAL_SUBJECT _HRESULT_TYPEDEF_(0x80094806) +#define CERTSRV_E_BAD_TEMPLATE_VERSION _HRESULT_TYPEDEF_(0x80094807) +#define CERTSRV_E_TEMPLATE_POLICY_REQUIRED _HRESULT_TYPEDEF_(0x80094808) +#define CERTSRV_E_SIGNATURE_POLICY_REQUIRED _HRESULT_TYPEDEF_(0x80094809) +#define CERTSRV_E_SIGNATURE_COUNT _HRESULT_TYPEDEF_(0x8009480A) +#define CERTSRV_E_SIGNATURE_REJECTED _HRESULT_TYPEDEF_(0x8009480B) +#define CERTSRV_E_ISSUANCE_POLICY_REQUIRED _HRESULT_TYPEDEF_(0x8009480C) +#define CERTSRV_E_SUBJECT_UPN_REQUIRED _HRESULT_TYPEDEF_(0x8009480D) +#define CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED _HRESULT_TYPEDEF_(0x8009480E) +#define CERTSRV_E_SUBJECT_DNS_REQUIRED _HRESULT_TYPEDEF_(0x8009480F) +#define CERTSRV_E_ARCHIVED_KEY_UNEXPECTED _HRESULT_TYPEDEF_(0x80094810) +#define CERTSRV_E_KEY_LENGTH _HRESULT_TYPEDEF_(0x80094811) +#define CERTSRV_E_SUBJECT_EMAIL_REQUIRED _HRESULT_TYPEDEF_(0x80094812) +#define CERTSRV_E_UNKNOWN_CERT_TYPE _HRESULT_TYPEDEF_(0x80094813) +#define CERTSRV_E_CERT_TYPE_OVERLAP _HRESULT_TYPEDEF_(0x80094814) +#define XENROLL_E_KEY_NOT_EXPORTABLE _HRESULT_TYPEDEF_(0x80095000) +#define XENROLL_E_CANNOT_ADD_ROOT_CERT _HRESULT_TYPEDEF_(0x80095001) +#define XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND _HRESULT_TYPEDEF_(0x80095002) +#define XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH _HRESULT_TYPEDEF_(0x80095003) +#define XENROLL_E_RESPONSE_KA_HASH_MISMATCH _HRESULT_TYPEDEF_(0x80095004) +#define XENROLL_E_KEYSPEC_SMIME_MISMATCH _HRESULT_TYPEDEF_(0x80095005) +#define TRUST_E_SYSTEM_ERROR _HRESULT_TYPEDEF_(0x80096001) +#define TRUST_E_NO_SIGNER_CERT _HRESULT_TYPEDEF_(0x80096002) +#define TRUST_E_COUNTER_SIGNER _HRESULT_TYPEDEF_(0x80096003) +#define TRUST_E_CERT_SIGNATURE _HRESULT_TYPEDEF_(0x80096004) +#define TRUST_E_TIME_STAMP _HRESULT_TYPEDEF_(0x80096005) +#define TRUST_E_BAD_DIGEST _HRESULT_TYPEDEF_(0x80096010) +#define TRUST_E_BASIC_CONSTRAINTS _HRESULT_TYPEDEF_(0x80096019) +#define TRUST_E_FINANCIAL_CRITERIA _HRESULT_TYPEDEF_(0x8009601E) +#define MSSIPOTF_E_OUTOFMEMRANGE _HRESULT_TYPEDEF_(0x80097001) +#define MSSIPOTF_E_CANTGETOBJECT _HRESULT_TYPEDEF_(0x80097002) +#define MSSIPOTF_E_NOHEADTABLE _HRESULT_TYPEDEF_(0x80097003) +#define MSSIPOTF_E_BAD_MAGICNUMBER _HRESULT_TYPEDEF_(0x80097004) +#define MSSIPOTF_E_BAD_OFFSET_TABLE _HRESULT_TYPEDEF_(0x80097005) +#define MSSIPOTF_E_TABLE_TAGORDER _HRESULT_TYPEDEF_(0x80097006) +#define MSSIPOTF_E_TABLE_LONGWORD _HRESULT_TYPEDEF_(0x80097007) +#define MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT _HRESULT_TYPEDEF_(0x80097008) +#define MSSIPOTF_E_TABLES_OVERLAP _HRESULT_TYPEDEF_(0x80097009) +#define MSSIPOTF_E_TABLE_PADBYTES _HRESULT_TYPEDEF_(0x8009700A) +#define MSSIPOTF_E_FILETOOSMALL _HRESULT_TYPEDEF_(0x8009700B) +#define MSSIPOTF_E_TABLE_CHECKSUM _HRESULT_TYPEDEF_(0x8009700C) +#define MSSIPOTF_E_FILE_CHECKSUM _HRESULT_TYPEDEF_(0x8009700D) +#define MSSIPOTF_E_FAILED_POLICY _HRESULT_TYPEDEF_(0x80097010) +#define MSSIPOTF_E_FAILED_HINTS_CHECK _HRESULT_TYPEDEF_(0x80097011) +#define MSSIPOTF_E_NOT_OPENTYPE _HRESULT_TYPEDEF_(0x80097012) +#define MSSIPOTF_E_FILE _HRESULT_TYPEDEF_(0x80097013) +#define MSSIPOTF_E_CRYPT _HRESULT_TYPEDEF_(0x80097014) +#define MSSIPOTF_E_BADVERSION _HRESULT_TYPEDEF_(0x80097015) +#define MSSIPOTF_E_DSIG_STRUCTURE _HRESULT_TYPEDEF_(0x80097016) +#define MSSIPOTF_E_PCONST_CHECK _HRESULT_TYPEDEF_(0x80097017) +#define MSSIPOTF_E_STRUCTURE _HRESULT_TYPEDEF_(0x80097018) +#define NTE_OP_OK 0 +#define TRUST_E_PROVIDER_UNKNOWN _HRESULT_TYPEDEF_(0x800B0001) +#define TRUST_E_ACTION_UNKNOWN _HRESULT_TYPEDEF_(0x800B0002) +#define TRUST_E_SUBJECT_FORM_UNKNOWN _HRESULT_TYPEDEF_(0x800B0003) +#define TRUST_E_SUBJECT_NOT_TRUSTED _HRESULT_TYPEDEF_(0x800B0004) +#define DIGSIG_E_ENCODE _HRESULT_TYPEDEF_(0x800B0005) +#define DIGSIG_E_DECODE _HRESULT_TYPEDEF_(0x800B0006) +#define DIGSIG_E_EXTENSIBILITY _HRESULT_TYPEDEF_(0x800B0007) +#define DIGSIG_E_CRYPTO _HRESULT_TYPEDEF_(0x800B0008) +#define PERSIST_E_SIZEDEFINITE _HRESULT_TYPEDEF_(0x800B0009) +#define PERSIST_E_SIZEINDEFINITE _HRESULT_TYPEDEF_(0x800B000A) +#define PERSIST_E_NOTSELFSIZING _HRESULT_TYPEDEF_(0x800B000B) +#define TRUST_E_NOSIGNATURE _HRESULT_TYPEDEF_(0x800B0100) +#define CERT_E_EXPIRED _HRESULT_TYPEDEF_(0x800B0101) +#define CERT_E_VALIDITYPERIODNESTING _HRESULT_TYPEDEF_(0x800B0102) +#define CERT_E_ROLE _HRESULT_TYPEDEF_(0x800B0103) +#define CERT_E_PATHLENCONST _HRESULT_TYPEDEF_(0x800B0104) +#define CERT_E_CRITICAL _HRESULT_TYPEDEF_(0x800B0105) +#define CERT_E_PURPOSE _HRESULT_TYPEDEF_(0x800B0106) +#define CERT_E_ISSUERCHAINING _HRESULT_TYPEDEF_(0x800B0107) +#define CERT_E_MALFORMED _HRESULT_TYPEDEF_(0x800B0108) +#define CERT_E_UNTRUSTEDROOT _HRESULT_TYPEDEF_(0x800B0109) +#define CERT_E_CHAINING _HRESULT_TYPEDEF_(0x800B010A) +#define TRUST_E_FAIL _HRESULT_TYPEDEF_(0x800B010B) +#define CERT_E_REVOKED _HRESULT_TYPEDEF_(0x800B010C) +#define CERT_E_UNTRUSTEDTESTROOT _HRESULT_TYPEDEF_(0x800B010D) +#define CERT_E_REVOCATION_FAILURE _HRESULT_TYPEDEF_(0x800B010E) +#define CERT_E_CN_NO_MATCH _HRESULT_TYPEDEF_(0x800B010F) +#define CERT_E_WRONG_USAGE _HRESULT_TYPEDEF_(0x800B0110) +#define TRUST_E_EXPLICIT_DISTRUST _HRESULT_TYPEDEF_(0x800B0111) +#define CERT_E_UNTRUSTEDCA _HRESULT_TYPEDEF_(0x800B0112) +#define CERT_E_INVALID_POLICY _HRESULT_TYPEDEF_(0x800B0113) +#define CERT_E_INVALID_NAME _HRESULT_TYPEDEF_(0x800B0114) +#define HRESULT_FROM_SETUPAPI(x) ((((x) & (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR))==(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR)) ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_SETUPAPI << 16) | 0x80000000)) : HRESULT_FROM_WIN32(x)) +#define SPAPI_E_EXPECTED_SECTION_NAME _HRESULT_TYPEDEF_(0x800F0000) +#define SPAPI_E_BAD_SECTION_NAME_LINE _HRESULT_TYPEDEF_(0x800F0001) +#define SPAPI_E_SECTION_NAME_TOO_LONG _HRESULT_TYPEDEF_(0x800F0002) +#define SPAPI_E_GENERAL_SYNTAX _HRESULT_TYPEDEF_(0x800F0003) +#define SPAPI_E_WRONG_INF_STYLE _HRESULT_TYPEDEF_(0x800F0100) +#define SPAPI_E_SECTION_NOT_FOUND _HRESULT_TYPEDEF_(0x800F0101) +#define SPAPI_E_LINE_NOT_FOUND _HRESULT_TYPEDEF_(0x800F0102) +#define SPAPI_E_NO_BACKUP _HRESULT_TYPEDEF_(0x800F0103) +#define SPAPI_E_NO_ASSOCIATED_CLASS _HRESULT_TYPEDEF_(0x800F0200) +#define SPAPI_E_CLASS_MISMATCH _HRESULT_TYPEDEF_(0x800F0201) +#define SPAPI_E_DUPLICATE_FOUND _HRESULT_TYPEDEF_(0x800F0202) +#define SPAPI_E_NO_DRIVER_SELECTED _HRESULT_TYPEDEF_(0x800F0203) +#define SPAPI_E_KEY_DOES_NOT_EXIST _HRESULT_TYPEDEF_(0x800F0204) +#define SPAPI_E_INVALID_DEVINST_NAME _HRESULT_TYPEDEF_(0x800F0205) +#define SPAPI_E_INVALID_CLASS _HRESULT_TYPEDEF_(0x800F0206) +#define SPAPI_E_DEVINST_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x800F0207) +#define SPAPI_E_DEVINFO_NOT_REGISTERED _HRESULT_TYPEDEF_(0x800F0208) +#define SPAPI_E_INVALID_REG_PROPERTY _HRESULT_TYPEDEF_(0x800F0209) +#define SPAPI_E_NO_INF _HRESULT_TYPEDEF_(0x800F020A) +#define SPAPI_E_NO_SUCH_DEVINST _HRESULT_TYPEDEF_(0x800F020B) +#define SPAPI_E_CANT_LOAD_CLASS_ICON _HRESULT_TYPEDEF_(0x800F020C) +#define SPAPI_E_INVALID_CLASS_INSTALLER _HRESULT_TYPEDEF_(0x800F020D) +#define SPAPI_E_DI_DO_DEFAULT _HRESULT_TYPEDEF_(0x800F020E) +#define SPAPI_E_DI_NOFILECOPY _HRESULT_TYPEDEF_(0x800F020F) +#define SPAPI_E_INVALID_HWPROFILE _HRESULT_TYPEDEF_(0x800F0210) +#define SPAPI_E_NO_DEVICE_SELECTED _HRESULT_TYPEDEF_(0x800F0211) +#define SPAPI_E_DEVINFO_LIST_LOCKED _HRESULT_TYPEDEF_(0x800F0212) +#define SPAPI_E_DEVINFO_DATA_LOCKED _HRESULT_TYPEDEF_(0x800F0213) +#define SPAPI_E_DI_BAD_PATH _HRESULT_TYPEDEF_(0x800F0214) +#define SPAPI_E_NO_CLASSINSTALL_PARAMS _HRESULT_TYPEDEF_(0x800F0215) +#define SPAPI_E_FILEQUEUE_LOCKED _HRESULT_TYPEDEF_(0x800F0216) +#define SPAPI_E_BAD_SERVICE_INSTALLSECT _HRESULT_TYPEDEF_(0x800F0217) +#define SPAPI_E_NO_CLASS_DRIVER_LIST _HRESULT_TYPEDEF_(0x800F0218) +#define SPAPI_E_NO_ASSOCIATED_SERVICE _HRESULT_TYPEDEF_(0x800F0219) +#define SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE _HRESULT_TYPEDEF_(0x800F021A) +#define SPAPI_E_DEVICE_INTERFACE_ACTIVE _HRESULT_TYPEDEF_(0x800F021B) +#define SPAPI_E_DEVICE_INTERFACE_REMOVED _HRESULT_TYPEDEF_(0x800F021C) +#define SPAPI_E_BAD_INTERFACE_INSTALLSECT _HRESULT_TYPEDEF_(0x800F021D) +#define SPAPI_E_NO_SUCH_INTERFACE_CLASS _HRESULT_TYPEDEF_(0x800F021E) +#define SPAPI_E_INVALID_REFERENCE_STRING _HRESULT_TYPEDEF_(0x800F021F) +#define SPAPI_E_INVALID_MACHINENAME _HRESULT_TYPEDEF_(0x800F0220) +#define SPAPI_E_REMOTE_COMM_FAILURE _HRESULT_TYPEDEF_(0x800F0221) +#define SPAPI_E_MACHINE_UNAVAILABLE _HRESULT_TYPEDEF_(0x800F0222) +#define SPAPI_E_NO_CONFIGMGR_SERVICES _HRESULT_TYPEDEF_(0x800F0223) +#define SPAPI_E_INVALID_PROPPAGE_PROVIDER _HRESULT_TYPEDEF_(0x800F0224) +#define SPAPI_E_NO_SUCH_DEVICE_INTERFACE _HRESULT_TYPEDEF_(0x800F0225) +#define SPAPI_E_DI_POSTPROCESSING_REQUIRED _HRESULT_TYPEDEF_(0x800F0226) +#define SPAPI_E_INVALID_COINSTALLER _HRESULT_TYPEDEF_(0x800F0227) +#define SPAPI_E_NO_COMPAT_DRIVERS _HRESULT_TYPEDEF_(0x800F0228) +#define SPAPI_E_NO_DEVICE_ICON _HRESULT_TYPEDEF_(0x800F0229) +#define SPAPI_E_INVALID_INF_LOGCONFIG _HRESULT_TYPEDEF_(0x800F022A) +#define SPAPI_E_DI_DONT_INSTALL _HRESULT_TYPEDEF_(0x800F022B) +#define SPAPI_E_INVALID_FILTER_DRIVER _HRESULT_TYPEDEF_(0x800F022C) +#define SPAPI_E_NON_WINDOWS_NT_DRIVER _HRESULT_TYPEDEF_(0x800F022D) +#define SPAPI_E_NON_WINDOWS_DRIVER _HRESULT_TYPEDEF_(0x800F022E) +#define SPAPI_E_NO_CATALOG_FOR_OEM_INF _HRESULT_TYPEDEF_(0x800F022F) +#define SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE _HRESULT_TYPEDEF_(0x800F0230) +#define SPAPI_E_NOT_DISABLEABLE _HRESULT_TYPEDEF_(0x800F0231) +#define SPAPI_E_CANT_REMOVE_DEVINST _HRESULT_TYPEDEF_(0x800F0232) +#define SPAPI_E_INVALID_TARGET _HRESULT_TYPEDEF_(0x800F0233) +#define SPAPI_E_DRIVER_NONNATIVE _HRESULT_TYPEDEF_(0x800F0234) +#define SPAPI_E_IN_WOW64 _HRESULT_TYPEDEF_(0x800F0235) +#define SPAPI_E_SET_SYSTEM_RESTORE_POINT _HRESULT_TYPEDEF_(0x800F0236) +#define SPAPI_E_INCORRECTLY_COPIED_INF _HRESULT_TYPEDEF_(0x800F0237) +#define SPAPI_E_SCE_DISABLED _HRESULT_TYPEDEF_(0x800F0238) +#define SPAPI_E_UNKNOWN_EXCEPTION _HRESULT_TYPEDEF_(0x800F0239) +#define SPAPI_E_PNP_REGISTRY_ERROR _HRESULT_TYPEDEF_(0x800F023A) +#define SPAPI_E_REMOTE_REQUEST_UNSUPPORTED _HRESULT_TYPEDEF_(0x800F023B) +#define SPAPI_E_NOT_AN_INSTALLED_OEM_INF _HRESULT_TYPEDEF_(0x800F023C) +#define SPAPI_E_INF_IN_USE_BY_DEVICES _HRESULT_TYPEDEF_(0x800F023D) +#define SPAPI_E_DI_FUNCTION_OBSOLETE _HRESULT_TYPEDEF_(0x800F023E) +#define SPAPI_E_NO_AUTHENTICODE_CATALOG _HRESULT_TYPEDEF_(0x800F023F) +#define SPAPI_E_AUTHENTICODE_DISALLOWED _HRESULT_TYPEDEF_(0x800F0240) +#define SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER _HRESULT_TYPEDEF_(0x800F0241) +#define SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED _HRESULT_TYPEDEF_(0x800F0242) +#define SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED _HRESULT_TYPEDEF_(0x800F0243) +#define SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH _HRESULT_TYPEDEF_(0x800F0244) +#define SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE _HRESULT_TYPEDEF_(0x800F0245) +#define SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW _HRESULT_TYPEDEF_(0x800F0300) +#define SPAPI_E_ERROR_NOT_INSTALLED _HRESULT_TYPEDEF_(0x800F1000) +#define SCARD_S_SUCCESS NO_ERROR +#define SCARD_F_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x80100001) +#define SCARD_E_CANCELLED _HRESULT_TYPEDEF_(0x80100002) +#define SCARD_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80100003) +#define SCARD_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80100004) +#define SCARD_E_INVALID_TARGET _HRESULT_TYPEDEF_(0x80100005) +#define SCARD_E_NO_MEMORY _HRESULT_TYPEDEF_(0x80100006) +#define SCARD_F_WAITED_TOO_LONG _HRESULT_TYPEDEF_(0x80100007) +#define SCARD_E_INSUFFICIENT_BUFFER _HRESULT_TYPEDEF_(0x80100008) +#define SCARD_E_UNKNOWN_READER _HRESULT_TYPEDEF_(0x80100009) +#define SCARD_E_TIMEOUT _HRESULT_TYPEDEF_(0x8010000A) +#define SCARD_E_SHARING_VIOLATION _HRESULT_TYPEDEF_(0x8010000B) +#define SCARD_E_NO_SMARTCARD _HRESULT_TYPEDEF_(0x8010000C) +#define SCARD_E_UNKNOWN_CARD _HRESULT_TYPEDEF_(0x8010000D) +#define SCARD_E_CANT_DISPOSE _HRESULT_TYPEDEF_(0x8010000E) +#define SCARD_E_PROTO_MISMATCH _HRESULT_TYPEDEF_(0x8010000F) +#define SCARD_E_NOT_READY _HRESULT_TYPEDEF_(0x80100010) +#define SCARD_E_INVALID_VALUE _HRESULT_TYPEDEF_(0x80100011) +#define SCARD_E_SYSTEM_CANCELLED _HRESULT_TYPEDEF_(0x80100012) +#define SCARD_F_COMM_ERROR _HRESULT_TYPEDEF_(0x80100013) +#define SCARD_F_UNKNOWN_ERROR _HRESULT_TYPEDEF_(0x80100014) +#define SCARD_E_INVALID_ATR _HRESULT_TYPEDEF_(0x80100015) +#define SCARD_E_NOT_TRANSACTED _HRESULT_TYPEDEF_(0x80100016) +#define SCARD_E_READER_UNAVAILABLE _HRESULT_TYPEDEF_(0x80100017) +#define SCARD_P_SHUTDOWN _HRESULT_TYPEDEF_(0x80100018) +#define SCARD_E_PCI_TOO_SMALL _HRESULT_TYPEDEF_(0x80100019) +#define SCARD_E_READER_UNSUPPORTED _HRESULT_TYPEDEF_(0x8010001A) +#define SCARD_E_DUPLICATE_READER _HRESULT_TYPEDEF_(0x8010001B) +#define SCARD_E_CARD_UNSUPPORTED _HRESULT_TYPEDEF_(0x8010001C) +#define SCARD_E_NO_SERVICE _HRESULT_TYPEDEF_(0x8010001D) +#define SCARD_E_SERVICE_STOPPED _HRESULT_TYPEDEF_(0x8010001E) +#define SCARD_E_UNEXPECTED _HRESULT_TYPEDEF_(0x8010001F) +#define SCARD_E_ICC_INSTALLATION _HRESULT_TYPEDEF_(0x80100020) +#define SCARD_E_ICC_CREATEORDER _HRESULT_TYPEDEF_(0x80100021) +#define SCARD_E_UNSUPPORTED_FEATURE _HRESULT_TYPEDEF_(0x80100022) +#define SCARD_E_DIR_NOT_FOUND _HRESULT_TYPEDEF_(0x80100023) +#define SCARD_E_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x80100024) +#define SCARD_E_NO_DIR _HRESULT_TYPEDEF_(0x80100025) +#define SCARD_E_NO_FILE _HRESULT_TYPEDEF_(0x80100026) +#define SCARD_E_NO_ACCESS _HRESULT_TYPEDEF_(0x80100027) +#define SCARD_E_WRITE_TOO_MANY _HRESULT_TYPEDEF_(0x80100028) +#define SCARD_E_BAD_SEEK _HRESULT_TYPEDEF_(0x80100029) +#define SCARD_E_INVALID_CHV _HRESULT_TYPEDEF_(0x8010002A) +#define SCARD_E_UNKNOWN_RES_MNG _HRESULT_TYPEDEF_(0x8010002B) +#define SCARD_E_NO_SUCH_CERTIFICATE _HRESULT_TYPEDEF_(0x8010002C) +#define SCARD_E_CERTIFICATE_UNAVAILABLE _HRESULT_TYPEDEF_(0x8010002D) +#define SCARD_E_NO_READERS_AVAILABLE _HRESULT_TYPEDEF_(0x8010002E) +#define SCARD_E_COMM_DATA_LOST _HRESULT_TYPEDEF_(0x8010002F) +#define SCARD_E_NO_KEY_CONTAINER _HRESULT_TYPEDEF_(0x80100030) +#define SCARD_E_SERVER_TOO_BUSY _HRESULT_TYPEDEF_(0x80100031) +#define SCARD_E_PIN_CACHE_EXPIRED _HRESULT_TYPEDEF_(0x80100032) +#define SCARD_E_NO_PIN_CACHE _HRESULT_TYPEDEF_(0x80100033) +#define SCARD_E_READ_ONLY_CARD _HRESULT_TYPEDEF_(0x80100034) +#define SCARD_W_UNSUPPORTED_CARD _HRESULT_TYPEDEF_(0x80100065) +#define SCARD_W_UNRESPONSIVE_CARD _HRESULT_TYPEDEF_(0x80100066) +#define SCARD_W_UNPOWERED_CARD _HRESULT_TYPEDEF_(0x80100067) +#define SCARD_W_RESET_CARD _HRESULT_TYPEDEF_(0x80100068) +#define SCARD_W_REMOVED_CARD _HRESULT_TYPEDEF_(0x80100069) +#define SCARD_W_SECURITY_VIOLATION _HRESULT_TYPEDEF_(0x8010006A) +#define SCARD_W_WRONG_CHV _HRESULT_TYPEDEF_(0x8010006B) +#define SCARD_W_CHV_BLOCKED _HRESULT_TYPEDEF_(0x8010006C) +#define SCARD_W_EOF _HRESULT_TYPEDEF_(0x8010006D) +#define SCARD_W_CANCELLED_BY_USER _HRESULT_TYPEDEF_(0x8010006E) +#define SCARD_W_CARD_NOT_AUTHENTICATED _HRESULT_TYPEDEF_(0x8010006F) +#define SCARD_W_CACHE_ITEM_NOT_FOUND _HRESULT_TYPEDEF_(0x80100070) +#define SCARD_W_CACHE_ITEM_STALE _HRESULT_TYPEDEF_(0x80100071) +#define SCARD_W_CACHE_ITEM_TOO_BIG _HRESULT_TYPEDEF_(0x80100072) +#define COMADMIN_E_OBJECTERRORS _HRESULT_TYPEDEF_(0x80110401) +#define COMADMIN_E_OBJECTINVALID _HRESULT_TYPEDEF_(0x80110402) +#define COMADMIN_E_KEYMISSING _HRESULT_TYPEDEF_(0x80110403) +#define COMADMIN_E_ALREADYINSTALLED _HRESULT_TYPEDEF_(0x80110404) +#define COMADMIN_E_APP_FILE_WRITEFAIL _HRESULT_TYPEDEF_(0x80110407) +#define COMADMIN_E_APP_FILE_READFAIL _HRESULT_TYPEDEF_(0x80110408) +#define COMADMIN_E_APP_FILE_VERSION _HRESULT_TYPEDEF_(0x80110409) +#define COMADMIN_E_BADPATH _HRESULT_TYPEDEF_(0x8011040A) +#define COMADMIN_E_APPLICATIONEXISTS _HRESULT_TYPEDEF_(0x8011040B) +#define COMADMIN_E_ROLEEXISTS _HRESULT_TYPEDEF_(0x8011040C) +#define COMADMIN_E_CANTCOPYFILE _HRESULT_TYPEDEF_(0x8011040D) +#define COMADMIN_E_NOUSER _HRESULT_TYPEDEF_(0x8011040F) +#define COMADMIN_E_INVALIDUSERIDS _HRESULT_TYPEDEF_(0x80110410) +#define COMADMIN_E_NOREGISTRYCLSID _HRESULT_TYPEDEF_(0x80110411) +#define COMADMIN_E_BADREGISTRYPROGID _HRESULT_TYPEDEF_(0x80110412) +#define COMADMIN_E_AUTHENTICATIONLEVEL _HRESULT_TYPEDEF_(0x80110413) +#define COMADMIN_E_USERPASSWDNOTVALID _HRESULT_TYPEDEF_(0x80110414) +#define COMADMIN_E_CLSIDORIIDMISMATCH _HRESULT_TYPEDEF_(0x80110418) +#define COMADMIN_E_REMOTEINTERFACE _HRESULT_TYPEDEF_(0x80110419) +#define COMADMIN_E_DLLREGISTERSERVER _HRESULT_TYPEDEF_(0x8011041A) +#define COMADMIN_E_NOSERVERSHARE _HRESULT_TYPEDEF_(0x8011041B) +#define COMADMIN_E_DLLLOADFAILED _HRESULT_TYPEDEF_(0x8011041D) +#define COMADMIN_E_BADREGISTRYLIBID _HRESULT_TYPEDEF_(0x8011041E) +#define COMADMIN_E_APPDIRNOTFOUND _HRESULT_TYPEDEF_(0x8011041F) +#define COMADMIN_E_REGISTRARFAILED _HRESULT_TYPEDEF_(0x80110423) +#define COMADMIN_E_COMPFILE_DOESNOTEXIST _HRESULT_TYPEDEF_(0x80110424) +#define COMADMIN_E_COMPFILE_LOADDLLFAIL _HRESULT_TYPEDEF_(0x80110425) +#define COMADMIN_E_COMPFILE_GETCLASSOBJ _HRESULT_TYPEDEF_(0x80110426) +#define COMADMIN_E_COMPFILE_CLASSNOTAVAIL _HRESULT_TYPEDEF_(0x80110427) +#define COMADMIN_E_COMPFILE_BADTLB _HRESULT_TYPEDEF_(0x80110428) +#define COMADMIN_E_COMPFILE_NOTINSTALLABLE _HRESULT_TYPEDEF_(0x80110429) +#define COMADMIN_E_NOTCHANGEABLE _HRESULT_TYPEDEF_(0x8011042A) +#define COMADMIN_E_NOTDELETEABLE _HRESULT_TYPEDEF_(0x8011042B) +#define COMADMIN_E_SESSION _HRESULT_TYPEDEF_(0x8011042C) +#define COMADMIN_E_COMP_MOVE_LOCKED _HRESULT_TYPEDEF_(0x8011042D) +#define COMADMIN_E_COMP_MOVE_BAD_DEST _HRESULT_TYPEDEF_(0x8011042E) +#define COMADMIN_E_REGISTERTLB _HRESULT_TYPEDEF_(0x80110430) +#define COMADMIN_E_SYSTEMAPP _HRESULT_TYPEDEF_(0x80110433) +#define COMADMIN_E_COMPFILE_NOREGISTRAR _HRESULT_TYPEDEF_(0x80110434) +#define COMADMIN_E_COREQCOMPINSTALLED _HRESULT_TYPEDEF_(0x80110435) +#define COMADMIN_E_SERVICENOTINSTALLED _HRESULT_TYPEDEF_(0x80110436) +#define COMADMIN_E_PROPERTYSAVEFAILED _HRESULT_TYPEDEF_(0x80110437) +#define COMADMIN_E_OBJECTEXISTS _HRESULT_TYPEDEF_(0x80110438) +#define COMADMIN_E_COMPONENTEXISTS _HRESULT_TYPEDEF_(0x80110439) +#define COMADMIN_E_REGFILE_CORRUPT _HRESULT_TYPEDEF_(0x8011043B) +#define COMADMIN_E_PROPERTY_OVERFLOW _HRESULT_TYPEDEF_(0x8011043C) +#define COMADMIN_E_NOTINREGISTRY _HRESULT_TYPEDEF_(0x8011043E) +#define COMADMIN_E_OBJECTNOTPOOLABLE _HRESULT_TYPEDEF_(0x8011043F) +#define COMADMIN_E_APPLID_MATCHES_CLSID _HRESULT_TYPEDEF_(0x80110446) +#define COMADMIN_E_ROLE_DOES_NOT_EXIST _HRESULT_TYPEDEF_(0x80110447) +#define COMADMIN_E_START_APP_NEEDS_COMPONENTS _HRESULT_TYPEDEF_(0x80110448) +#define COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM _HRESULT_TYPEDEF_(0x80110449) +#define COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY _HRESULT_TYPEDEF_(0x8011044A) +#define COMADMIN_E_CAN_NOT_START_APP _HRESULT_TYPEDEF_(0x8011044B) +#define COMADMIN_E_CAN_NOT_EXPORT_SYS_APP _HRESULT_TYPEDEF_(0x8011044C) +#define COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT _HRESULT_TYPEDEF_(0x8011044D) +#define COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER _HRESULT_TYPEDEF_(0x8011044E) +#define COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE _HRESULT_TYPEDEF_(0x8011044F) +#define COMADMIN_E_BASE_PARTITION_ONLY _HRESULT_TYPEDEF_(0x80110450) +#define COMADMIN_E_START_APP_DISABLED _HRESULT_TYPEDEF_(0x80110451) +#define COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME _HRESULT_TYPEDEF_(0x80110457) +#define COMADMIN_E_CAT_INVALID_PARTITION_NAME _HRESULT_TYPEDEF_(0x80110458) +#define COMADMIN_E_CAT_PARTITION_IN_USE _HRESULT_TYPEDEF_(0x80110459) +#define COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES _HRESULT_TYPEDEF_(0x8011045A) +#define COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED _HRESULT_TYPEDEF_(0x8011045B) +#define COMADMIN_E_AMBIGUOUS_APPLICATION_NAME _HRESULT_TYPEDEF_(0x8011045C) +#define COMADMIN_E_AMBIGUOUS_PARTITION_NAME _HRESULT_TYPEDEF_(0x8011045D) +#define COMADMIN_E_REGDB_NOTINITIALIZED _HRESULT_TYPEDEF_(0x80110472) +#define COMADMIN_E_REGDB_NOTOPEN _HRESULT_TYPEDEF_(0x80110473) +#define COMADMIN_E_REGDB_SYSTEMERR _HRESULT_TYPEDEF_(0x80110474) +#define COMADMIN_E_REGDB_ALREADYRUNNING _HRESULT_TYPEDEF_(0x80110475) +#define COMADMIN_E_MIG_VERSIONNOTSUPPORTED _HRESULT_TYPEDEF_(0x80110480) +#define COMADMIN_E_MIG_SCHEMANOTFOUND _HRESULT_TYPEDEF_(0x80110481) +#define COMADMIN_E_CAT_BITNESSMISMATCH _HRESULT_TYPEDEF_(0x80110482) +#define COMADMIN_E_CAT_UNACCEPTABLEBITNESS _HRESULT_TYPEDEF_(0x80110483) +#define COMADMIN_E_CAT_WRONGAPPBITNESS _HRESULT_TYPEDEF_(0x80110484) +#define COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80110485) +#define COMADMIN_E_CAT_SERVERFAULT _HRESULT_TYPEDEF_(0x80110486) +#define COMQC_E_APPLICATION_NOT_QUEUED _HRESULT_TYPEDEF_(0x80110600) +#define COMQC_E_NO_QUEUEABLE_INTERFACES _HRESULT_TYPEDEF_(0x80110601) +#define COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE _HRESULT_TYPEDEF_(0x80110602) +#define COMQC_E_NO_IPERSISTSTREAM _HRESULT_TYPEDEF_(0x80110603) +#define COMQC_E_BAD_MESSAGE _HRESULT_TYPEDEF_(0x80110604) +#define COMQC_E_UNAUTHENTICATED _HRESULT_TYPEDEF_(0x80110605) +#define COMQC_E_UNTRUSTED_ENQUEUER _HRESULT_TYPEDEF_(0x80110606) +#define MSDTC_E_DUPLICATE_RESOURCE _HRESULT_TYPEDEF_(0x80110701) +#define COMADMIN_E_OBJECT_PARENT_MISSING _HRESULT_TYPEDEF_(0x80110808) +#define COMADMIN_E_OBJECT_DOES_NOT_EXIST _HRESULT_TYPEDEF_(0x80110809) +#define COMADMIN_E_APP_NOT_RUNNING _HRESULT_TYPEDEF_(0x8011080A) +#define COMADMIN_E_INVALID_PARTITION _HRESULT_TYPEDEF_(0x8011080B) +#define COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE _HRESULT_TYPEDEF_(0x8011080D) +#define COMADMIN_E_USER_IN_SET _HRESULT_TYPEDEF_(0x8011080E) +#define COMADMIN_E_CANTRECYCLELIBRARYAPPS _HRESULT_TYPEDEF_(0x8011080F) +#define COMADMIN_E_CANTRECYCLESERVICEAPPS _HRESULT_TYPEDEF_(0x80110811) +#define COMADMIN_E_PROCESSALREADYRECYCLED _HRESULT_TYPEDEF_(0x80110812) +#define COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED _HRESULT_TYPEDEF_(0x80110813) +#define COMADMIN_E_CANTMAKEINPROCSERVICE _HRESULT_TYPEDEF_(0x80110814) +#define COMADMIN_E_PROGIDINUSEBYCLSID _HRESULT_TYPEDEF_(0x80110815) +#define COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET _HRESULT_TYPEDEF_(0x80110816) +#define COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED _HRESULT_TYPEDEF_(0x80110817) +#define COMADMIN_E_PARTITION_ACCESSDENIED _HRESULT_TYPEDEF_(0x80110818) +#define COMADMIN_E_PARTITION_MSI_ONLY _HRESULT_TYPEDEF_(0x80110819) +#define COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT _HRESULT_TYPEDEF_(0x8011081A) +#define COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS _HRESULT_TYPEDEF_(0x8011081B) +#define COMADMIN_E_COMP_MOVE_SOURCE _HRESULT_TYPEDEF_(0x8011081C) +#define COMADMIN_E_COMP_MOVE_DEST _HRESULT_TYPEDEF_(0x8011081D) +#define COMADMIN_E_COMP_MOVE_PRIVATE _HRESULT_TYPEDEF_(0x8011081E) +#define COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET _HRESULT_TYPEDEF_(0x8011081F) +#define COMADMIN_E_CANNOT_ALIAS_EVENTCLASS _HRESULT_TYPEDEF_(0x80110820) +#define COMADMIN_E_PRIVATE_ACCESSDENIED _HRESULT_TYPEDEF_(0x80110821) +#define COMADMIN_E_SAFERINVALID _HRESULT_TYPEDEF_(0x80110822) +#define COMADMIN_E_REGISTRY_ACCESSDENIED _HRESULT_TYPEDEF_(0x80110823) +#define COMADMIN_E_PARTITIONS_DISABLED _HRESULT_TYPEDEF_(0x80110824) +#define DXGI_STATUS_OCCLUDED _HRESULT_TYPEDEF_(0x087a0001) +#define DXGI_STATUS_CLIPPED _HRESULT_TYPEDEF_(0x087a0002) +#define DXGI_STATUS_NO_REDIRECTION _HRESULT_TYPEDEF_(0x087a0004) +#define DXGI_STATUS_NO_DESKTOP_ACCESS _HRESULT_TYPEDEF_(0x087a0005) +#define DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE _HRESULT_TYPEDEF_(0x087a0006) +#define DXGI_STATUS_MODE_CHANGED _HRESULT_TYPEDEF_(0x087a0007) +#define DXGI_STATUS_MODE_CHANGE_IN_PROGRESS _HRESULT_TYPEDEF_(0x087a0008) +#define DXGI_STATUS_UNOCCLUDED _HRESULT_TYPEDEF_(0x087a0009) +#define DXGI_STATUS_DDA_WAS_STILL_DRAWING _HRESULT_TYPEDEF_(0x087a000a) +#define DXGI_STATUS_PRESENT_REQUIRED _HRESULT_TYPEDEF_(0x087a002f) +#define DXGI_ERROR_INVALID_CALL _HRESULT_TYPEDEF_(0x887A0001) +#define DXGI_ERROR_NOT_FOUND _HRESULT_TYPEDEF_(0x887A0002) +#define DXGI_ERROR_MORE_DATA _HRESULT_TYPEDEF_(0x887A0003) +#define DXGI_ERROR_UNSUPPORTED _HRESULT_TYPEDEF_(0x887A0004) +#define DXGI_ERROR_DEVICE_REMOVED _HRESULT_TYPEDEF_(0x887A0005) +#define DXGI_ERROR_DEVICE_HUNG _HRESULT_TYPEDEF_(0x887A0006) +#define DXGI_ERROR_DEVICE_RESET _HRESULT_TYPEDEF_(0x887A0007) +#define DXGI_ERROR_WAS_STILL_DRAWING _HRESULT_TYPEDEF_(0x887A000A) +#define DXGI_ERROR_FRAME_STATISTICS_DISJOINT _HRESULT_TYPEDEF_(0x887A000B) +#define DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE _HRESULT_TYPEDEF_(0x887A000C) +#define DXGI_ERROR_DRIVER_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x887A0020) +#define DXGI_ERROR_NONEXCLUSIVE _HRESULT_TYPEDEF_(0x887A0021) +#define DXGI_ERROR_NOT_CURRENTLY_AVAILABLE _HRESULT_TYPEDEF_(0x887A0022) +#define DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED _HRESULT_TYPEDEF_(0x887A0023) +#define DXGI_ERROR_REMOTE_OUTOFMEMORY _HRESULT_TYPEDEF_(0x887A0024) +#define DXGI_ERROR_ACCESS_LOST _HRESULT_TYPEDEF_(0x887A0026) +#define DXGI_ERROR_WAIT_TIMEOUT _HRESULT_TYPEDEF_(0x887A0027) +#define DXGI_ERROR_SESSION_DISCONNECTED _HRESULT_TYPEDEF_(0x887A0028) +#define DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE _HRESULT_TYPEDEF_(0x887A0029) +#define DXGI_ERROR_CANNOT_PROTECT_CONTENT _HRESULT_TYPEDEF_(0x887A002A) +#define DXGI_ERROR_ACCESS_DENIED _HRESULT_TYPEDEF_(0x887A002B) +#define DXGI_ERROR_NAME_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x887A002C) +#define DXGI_ERROR_SDK_COMPONENT_MISSING _HRESULT_TYPEDEF_(0x887A002D) +#define DXGI_ERROR_NOT_CURRENT _HRESULT_TYPEDEF_(0x887A002E) +#define DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY _HRESULT_TYPEDEF_(0x887A0030) +#define DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION _HRESULT_TYPEDEF_(0x887A0031) +#define DXGI_ERROR_NON_COMPOSITED_UI _HRESULT_TYPEDEF_(0x887A0032) +#define DXGI_ERROR_MODE_CHANGE_IN_PROGRESS _HRESULT_TYPEDEF_(0x887A0025) +#define DXGI_ERROR_CACHE_CORRUPT _HRESULT_TYPEDEF_(0x887A0033) +#define DXGI_ERROR_CACHE_FULL _HRESULT_TYPEDEF_(0x887A0034) +#define DXGI_ERROR_CACHE_HASH_COLLISION _HRESULT_TYPEDEF_(0x887A0035) +#define DXGI_ERROR_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x887A0036) +#define DXGI_DDI_ERR_WASSTILLDRAWING _HRESULT_TYPEDEF_(0x887B0001) +#define DXGI_DDI_ERR_UNSUPPORTED _HRESULT_TYPEDEF_(0x887B0002) +#define DXGI_DDI_ERR_NONEXCLUSIVE _HRESULT_TYPEDEF_(0x887B0003) +#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS _HRESULT_TYPEDEF_(0x88790001) +#define D3D10_ERROR_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x88790002) +#define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS _HRESULT_TYPEDEF_(0x887C0001) +#define D3D11_ERROR_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x887C0002) +#define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS _HRESULT_TYPEDEF_(0x887C0003) +#define D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD _HRESULT_TYPEDEF_(0x887C0004) +#define D3D12_ERROR_ADAPTER_NOT_FOUND _HRESULT_TYPEDEF_(0x887E0001) +#define D3D12_ERROR_DRIVER_VERSION_MISMATCH _HRESULT_TYPEDEF_(0x887E0002) +#define D2DERR_WRONG_STATE _HRESULT_TYPEDEF_(0x88990001) +#define D2DERR_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x88990002) +#define D2DERR_UNSUPPORTED_OPERATION _HRESULT_TYPEDEF_(0x88990003) +#define D2DERR_SCANNER_FAILED _HRESULT_TYPEDEF_(0x88990004) +#define D2DERR_SCREEN_ACCESS_DENIED _HRESULT_TYPEDEF_(0x88990005) +#define D2DERR_DISPLAY_STATE_INVALID _HRESULT_TYPEDEF_(0x88990006) +#define D2DERR_ZERO_VECTOR _HRESULT_TYPEDEF_(0x88990007) +#define D2DERR_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x88990008) +#define D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x88990009) +#define D2DERR_INVALID_CALL _HRESULT_TYPEDEF_(0x8899000A) +#define D2DERR_NO_HARDWARE_DEVICE _HRESULT_TYPEDEF_(0x8899000B) +#define D2DERR_RECREATE_TARGET _HRESULT_TYPEDEF_(0x8899000C) +#define D2DERR_TOO_MANY_SHADER_ELEMENTS _HRESULT_TYPEDEF_(0x8899000D) +#define D2DERR_SHADER_COMPILE_FAILED _HRESULT_TYPEDEF_(0x8899000E) +#define D2DERR_MAX_TEXTURE_SIZE_EXCEEDED _HRESULT_TYPEDEF_(0x8899000F) +#define D2DERR_UNSUPPORTED_VERSION _HRESULT_TYPEDEF_(0x88990010) +#define D2DERR_BAD_NUMBER _HRESULT_TYPEDEF_(0x88990011) +#define D2DERR_WRONG_FACTORY _HRESULT_TYPEDEF_(0x88990012) +#define D2DERR_LAYER_ALREADY_IN_USE _HRESULT_TYPEDEF_(0x88990013) +#define D2DERR_POP_CALL_DID_NOT_MATCH_PUSH _HRESULT_TYPEDEF_(0x88990014) +#define D2DERR_WRONG_RESOURCE_DOMAIN _HRESULT_TYPEDEF_(0x88990015) +#define D2DERR_PUSH_POP_UNBALANCED _HRESULT_TYPEDEF_(0x88990016) +#define D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT _HRESULT_TYPEDEF_(0x88990017) +#define D2DERR_INCOMPATIBLE_BRUSH_TYPES _HRESULT_TYPEDEF_(0x88990018) +#define D2DERR_WIN32_ERROR _HRESULT_TYPEDEF_(0x88990019) +#define D2DERR_TARGET_NOT_GDI_COMPATIBLE _HRESULT_TYPEDEF_(0x8899001A) +#define D2DERR_TEXT_EFFECT_IS_WRONG_TYPE _HRESULT_TYPEDEF_(0x8899001B) +#define D2DERR_TEXT_RENDERER_NOT_RELEASED _HRESULT_TYPEDEF_(0x8899001C) +#define D2DERR_EXCEEDS_MAX_BITMAP_SIZE _HRESULT_TYPEDEF_(0x8899001D) +#define D2DERR_INVALID_GRAPH_CONFIGURATION _HRESULT_TYPEDEF_(0x8899001E) +#define D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION _HRESULT_TYPEDEF_(0x8899001F) +#define D2DERR_CYCLIC_GRAPH _HRESULT_TYPEDEF_(0x88990020) +#define D2DERR_BITMAP_CANNOT_DRAW _HRESULT_TYPEDEF_(0x88990021) +#define D2DERR_OUTSTANDING_BITMAP_REFERENCES _HRESULT_TYPEDEF_(0x88990022) +#define D2DERR_ORIGINAL_TARGET_NOT_BOUND _HRESULT_TYPEDEF_(0x88990023) +#define D2DERR_INVALID_TARGET _HRESULT_TYPEDEF_(0x88990024) +#define D2DERR_BITMAP_BOUND_AS_TARGET _HRESULT_TYPEDEF_(0x88990025) +#define D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES _HRESULT_TYPEDEF_(0x88990026) +#define D2DERR_INTERMEDIATE_TOO_LARGE _HRESULT_TYPEDEF_(0x88990027) +#define D2DERR_EFFECT_IS_NOT_REGISTERED _HRESULT_TYPEDEF_(0x88990028) +#define D2DERR_INVALID_PROPERTY _HRESULT_TYPEDEF_(0x88990029) +#define D2DERR_NO_SUBPROPERTIES _HRESULT_TYPEDEF_(0x8899002A) +#define D2DERR_PRINT_JOB_CLOSED _HRESULT_TYPEDEF_(0x8899002B) +#define D2DERR_PRINT_FORMAT_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8899002C) +#define D2DERR_TOO_MANY_TRANSFORM_INPUTS _HRESULT_TYPEDEF_(0x8899002D) +#define D2DERR_INVALID_GLYPH_IMAGE _HRESULT_TYPEDEF_(0x8899002E) +#define TBS_SUCCESS 0U +#define TBS_E_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x80284001) +#define TBS_E_BAD_PARAMETER _HRESULT_TYPEDEF_(0x80284002) +#define TBS_E_INVALID_OUTPUT_POINTER _HRESULT_TYPEDEF_(0x80284003) +#define TBS_E_INSUFFICIENT_BUFFER _HRESULT_TYPEDEF_(0x80284005) +#define TBS_E_IOERROR _HRESULT_TYPEDEF_(0x80284006) +#define TBS_E_INVALID_CONTEXT_PARAM _HRESULT_TYPEDEF_(0x80284007) +#define TBS_E_SERVICE_NOT_RUNNING _HRESULT_TYPEDEF_(0x80284008) +#define TBS_E_TOO_MANY_TBS_CONTEXTS _HRESULT_TYPEDEF_(0x80284009) +#define TBS_E_SERVICE_START_PENDING _HRESULT_TYPEDEF_(0x8028400B) +#define TBS_E_BUFFER_TOO_LARGE _HRESULT_TYPEDEF_(0x8028400E) +#define TBS_E_TPM_NOT_FOUND _HRESULT_TYPEDEF_(0x8028400F) +#define TBS_E_SERVICE_DISABLED _HRESULT_TYPEDEF_(0x80284010) +#define TBS_E_DEACTIVATED _HRESULT_TYPEDEF_(0x80284016) +#define FWP_E_CALLOUT_NOT_FOUND _HRESULT_TYPEDEF_(0x80320001) +#define FWP_E_CONDITION_NOT_FOUND _HRESULT_TYPEDEF_(0x80320002) +#define FWP_E_FILTER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320003) +#define FWP_E_LAYER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320004) +#define FWP_E_PROVIDER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320005) +#define FWP_E_PROVIDER_CONTEXT_NOT_FOUND _HRESULT_TYPEDEF_(0x80320006) +#define FWP_E_SUBLAYER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320007) +#define FWP_E_NOT_FOUND _HRESULT_TYPEDEF_(0x80320008) +#define FWP_E_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x80320009) +#define FWP_E_IN_USE _HRESULT_TYPEDEF_(0x8032000A) +#define FWP_E_DYNAMIC_SESSION_IN_PROGRESS _HRESULT_TYPEDEF_(0x8032000B) +#define FWP_E_WRONG_SESSION _HRESULT_TYPEDEF_(0x8032000C) +#define FWP_E_NO_TXN_IN_PROGRESS _HRESULT_TYPEDEF_(0x8032000D) +#define FWP_E_TXN_IN_PROGRESS _HRESULT_TYPEDEF_(0x8032000E) +#define FWP_E_TXN_ABORTED _HRESULT_TYPEDEF_(0x8032000F) +#define FWP_E_SESSION_ABORTED _HRESULT_TYPEDEF_(0x80320010) +#define FWP_E_INCOMPATIBLE_TXN _HRESULT_TYPEDEF_(0x80320011) +#define FWP_E_TIMEOUT _HRESULT_TYPEDEF_(0x80320012) +#define FWP_E_NET_EVENTS_DISABLED _HRESULT_TYPEDEF_(0x80320013) +#define FWP_E_INCOMPATIBLE_LAYER _HRESULT_TYPEDEF_(0x80320014) +#define FWP_E_KM_CLIENTS_ONLY _HRESULT_TYPEDEF_(0x80320015) +#define FWP_E_LIFETIME_MISMATCH _HRESULT_TYPEDEF_(0x80320016) +#define FWP_E_BUILTIN_OBJECT _HRESULT_TYPEDEF_(0x80320017) +#define FWP_E_TOO_MANY_CALLOUTS _HRESULT_TYPEDEF_(0x80320018) +#define FWP_E_NOTIFICATION_DROPPED _HRESULT_TYPEDEF_(0x80320019) +#define FWP_E_TRAFFIC_MISMATCH _HRESULT_TYPEDEF_(0x8032001A) +#define FWP_E_INCOMPATIBLE_SA_STATE _HRESULT_TYPEDEF_(0x8032001B) +#define FWP_E_NULL_POINTER _HRESULT_TYPEDEF_(0x8032001C) +#define FWP_E_INVALID_ENUMERATOR _HRESULT_TYPEDEF_(0x8032001D) +#define FWP_E_INVALID_FLAGS _HRESULT_TYPEDEF_(0x8032001E) +#define FWP_E_INVALID_NET_MASK _HRESULT_TYPEDEF_(0x8032001F) +#define FWP_E_INVALID_RANGE _HRESULT_TYPEDEF_(0x80320020) +#define FWP_E_INVALID_INTERVAL _HRESULT_TYPEDEF_(0x80320021) +#define FWP_E_ZERO_LENGTH_ARRAY _HRESULT_TYPEDEF_(0x80320022) +#define FWP_E_NULL_DISPLAY_NAME _HRESULT_TYPEDEF_(0x80320023) +#define FWP_E_INVALID_ACTION_TYPE _HRESULT_TYPEDEF_(0x80320024) +#define FWP_E_INVALID_WEIGHT _HRESULT_TYPEDEF_(0x80320025) +#define FWP_E_MATCH_TYPE_MISMATCH _HRESULT_TYPEDEF_(0x80320026) +#define FWP_E_TYPE_MISMATCH _HRESULT_TYPEDEF_(0x80320027) +#define FWP_E_OUT_OF_BOUNDS _HRESULT_TYPEDEF_(0x80320028) +#define FWP_E_RESERVED _HRESULT_TYPEDEF_(0x80320029) +#define FWP_E_DUPLICATE_CONDITION _HRESULT_TYPEDEF_(0x8032002A) +#define FWP_E_DUPLICATE_KEYMOD _HRESULT_TYPEDEF_(0x8032002B) +#define FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER _HRESULT_TYPEDEF_(0x8032002C) +#define FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER _HRESULT_TYPEDEF_(0x8032002D) +#define FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER _HRESULT_TYPEDEF_(0x8032002E) +#define FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT _HRESULT_TYPEDEF_(0x8032002F) +#define FWP_E_INCOMPATIBLE_AUTH_METHOD _HRESULT_TYPEDEF_(0x80320030) +#define FWP_E_INCOMPATIBLE_DH_GROUP _HRESULT_TYPEDEF_(0x80320031) +#define FWP_E_EM_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80320032) +#define FWP_E_NEVER_MATCH _HRESULT_TYPEDEF_(0x80320033) +#define FWP_E_PROVIDER_CONTEXT_MISMATCH _HRESULT_TYPEDEF_(0x80320034) +#define FWP_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80320035) +#define FWP_E_TOO_MANY_SUBLAYERS _HRESULT_TYPEDEF_(0x80320036) +#define FWP_E_CALLOUT_NOTIFICATION_FAILED _HRESULT_TYPEDEF_(0x80320037) +#define FWP_E_INVALID_AUTH_TRANSFORM _HRESULT_TYPEDEF_(0x80320038) +#define FWP_E_INVALID_CIPHER_TRANSFORM _HRESULT_TYPEDEF_(0x80320039) +#define WINCODEC_ERR_WRONGSTATE _HRESULT_TYPEDEF_(0x88982f04) +#define WINCODEC_ERR_VALUEOUTOFRANGE _HRESULT_TYPEDEF_(0x88982f05) +#define WINCODEC_ERR_UNKNOWNIMAGEFORMAT _HRESULT_TYPEDEF_(0x88982f07) +#define WINCODEC_ERR_UNSUPPORTEDVERSION _HRESULT_TYPEDEF_(0x88982f0b) +#define WINCODEC_ERR_NOTINITIALIZED _HRESULT_TYPEDEF_(0x88982f0c) +#define WINCODEC_ERR_ALREADYLOCKED _HRESULT_TYPEDEF_(0x88982f0d) +#define WINCODEC_ERR_PROPERTYNOTFOUND _HRESULT_TYPEDEF_(0x88982f40) +#define WINCODEC_ERR_PROPERTYNOTSUPPORTED _HRESULT_TYPEDEF_(0x88982f41) +#define WINCODEC_ERR_PROPERTYSIZE _HRESULT_TYPEDEF_(0x88982f42) +#define WINCODEC_ERR_CODECPRESENT _HRESULT_TYPEDEF_(0x88982f43) +#define WINCODEC_ERR_CODECNOTHUMBNAIL _HRESULT_TYPEDEF_(0x88982f44) +#define WINCODEC_ERR_PALETTEUNAVAILABLE _HRESULT_TYPEDEF_(0x88982f45) +#define WINCODEC_ERR_CODECTOOMANYSCANLINES _HRESULT_TYPEDEF_(0x88982f46) +#define WINCODEC_ERR_INTERNALERROR _HRESULT_TYPEDEF_(0x88982f48) +#define WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS _HRESULT_TYPEDEF_(0x88982f49) +#define WINCODEC_ERR_COMPONENTNOTFOUND _HRESULT_TYPEDEF_(0x88982f50) +#define WINCODEC_ERR_IMAGESIZEOUTOFRANGE _HRESULT_TYPEDEF_(0x88982f51) +#define WINCODEC_ERR_TOOMUCHMETADATA _HRESULT_TYPEDEF_(0x88982f52) +#define WINCODEC_ERR_BADIMAGE _HRESULT_TYPEDEF_(0x88982f60) +#define WINCODEC_ERR_BADHEADER _HRESULT_TYPEDEF_(0x88982f61) +#define WINCODEC_ERR_FRAMEMISSING _HRESULT_TYPEDEF_(0x88982f62) +#define WINCODEC_ERR_BADMETADATAHEADER _HRESULT_TYPEDEF_(0x88982f63) +#define WINCODEC_ERR_BADSTREAMDATA _HRESULT_TYPEDEF_(0x88982f70) +#define WINCODEC_ERR_STREAMWRITE _HRESULT_TYPEDEF_(0x88982f71) +#define WINCODEC_ERR_STREAMREAD _HRESULT_TYPEDEF_(0x88982f72) +#define WINCODEC_ERR_STREAMNOTAVAILABLE _HRESULT_TYPEDEF_(0x88982f73) +#define WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT _HRESULT_TYPEDEF_(0x88982f80) +#define WINCODEC_ERR_UNSUPPORTEDOPERATION _HRESULT_TYPEDEF_(0x88982f81) +#define WINCODEC_ERR_INVALIDREGISTRATION _HRESULT_TYPEDEF_(0x88982f8a) +#define WINCODEC_ERR_COMPONENTINITIALIZEFAILURE _HRESULT_TYPEDEF_(0x88982f8b) +#define WINCODEC_ERR_INSUFFICIENTBUFFER _HRESULT_TYPEDEF_(0x88982f8c) +#define WINCODEC_ERR_DUPLICATEMETADATAPRESENT _HRESULT_TYPEDEF_(0x88982f8d) +#define WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE _HRESULT_TYPEDEF_(0x88982f8e) +#define WINCODEC_ERR_UNEXPECTEDSIZE _HRESULT_TYPEDEF_(0x88982f8f) +#define WINCODEC_ERR_INVALIDQUERYREQUEST _HRESULT_TYPEDEF_(0x88982f90) +#define WINCODEC_ERR_UNEXPECTEDMETADATATYPE _HRESULT_TYPEDEF_(0x88982f91) +#define WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT _HRESULT_TYPEDEF_(0x88982f92) +#define WINCODEC_ERR_INVALIDQUERYCHARACTER _HRESULT_TYPEDEF_(0x88982f93) +#define WINCODEC_ERR_WIN32ERROR _HRESULT_TYPEDEF_(0x88982f94) +#define WINCODEC_ERR_INVALIDPROGRESSIVELEVEL _HRESULT_TYPEDEF_(0x88982f95) +#define WINCODEC_ERR_INVALIDJPEGSCANINDEX _HRESULT_TYPEDEF_(0x88982f96) +#define NAP_E_INVALID_PACKET _HRESULT_TYPEDEF_(0x80270001) +#define NAP_E_MISSING_SOH _HRESULT_TYPEDEF_(0x80270002) +#define NAP_E_CONFLICTING_ID _HRESULT_TYPEDEF_(0x80270003) +#define NAP_E_NO_CACHED_SOH _HRESULT_TYPEDEF_(0x80270004) +#define NAP_E_STILL_BOUND _HRESULT_TYPEDEF_(0x80270005) +#define NAP_E_NOT_REGISTERED _HRESULT_TYPEDEF_(0x80270006) +#define NAP_E_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x80270007) +#define NAP_E_MISMATCHED_ID _HRESULT_TYPEDEF_(0x80270008) +#define NAP_E_NOT_PENDING _HRESULT_TYPEDEF_(0x80270009) +#define NAP_E_ID_NOT_FOUND _HRESULT_TYPEDEF_(0x8027000A) +#define NAP_E_MAXSIZE_TOO_SMALL _HRESULT_TYPEDEF_(0x8027000B) +#define NAP_E_SERVICE_NOT_RUNNING _HRESULT_TYPEDEF_(0x8027000C) +#define NAP_S_CERT_ALREADY_PRESENT _HRESULT_TYPEDEF_(0x0027000D) +#define NAP_E_ENTITY_DISABLED _HRESULT_TYPEDEF_(0x8027000E) +#define NAP_E_NETSH_GROUPPOLICY_ERROR _HRESULT_TYPEDEF_(0x8027000F) +#define NAP_E_TOO_MANY_CALLS _HRESULT_TYPEDEF_(0x80270010) +#define NAP_E_SHV_CONFIG_EXISTED _HRESULT_TYPEDEF_(0x80270011) +#define NAP_E_SHV_CONFIG_NOT_FOUND _HRESULT_TYPEDEF_(0x80270012) +#define NAP_E_SHV_TIMEOUT _HRESULT_TYPEDEF_(0x80270013) +#define E_BLUETOOTH_ATT_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80650001) +#define E_BLUETOOTH_ATT_READ_NOT_PERMITTED _HRESULT_TYPEDEF_(0x80650002) +#define E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED _HRESULT_TYPEDEF_(0x80650003) +#define E_BLUETOOTH_ATT_INVALID_PDU _HRESULT_TYPEDEF_(0x80650004) +#define E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION _HRESULT_TYPEDEF_(0x80650005) +#define E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80650006) +#define E_BLUETOOTH_ATT_INVALID_OFFSET _HRESULT_TYPEDEF_(0x80650007) +#define E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION _HRESULT_TYPEDEF_(0x80650008) +#define E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL _HRESULT_TYPEDEF_(0x80650009) +#define E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND _HRESULT_TYPEDEF_(0x8065000a) +#define E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG _HRESULT_TYPEDEF_(0x8065000b) +#define E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE _HRESULT_TYPEDEF_(0x8065000c) +#define E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH _HRESULT_TYPEDEF_(0x8065000d) +#define E_BLUETOOTH_ATT_UNLIKELY _HRESULT_TYPEDEF_(0x8065000e) +#define E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION _HRESULT_TYPEDEF_(0x8065000f) +#define E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE _HRESULT_TYPEDEF_(0x80650010) +#define E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES _HRESULT_TYPEDEF_(0x80650011) +#define E_BLUETOOTH_ATT_UNKNOWN_ERROR _HRESULT_TYPEDEF_(0x80651000) +#define DWRITE_E_FILEFORMAT _HRESULT_TYPEDEF_(0x88985000L) +#define DWRITE_E_UNEXPECTED _HRESULT_TYPEDEF_(0x88985001L) +#define DWRITE_E_NOFONT _HRESULT_TYPEDEF_(0x88985002L) +#define DWRITE_E_FILENOTFOUND _HRESULT_TYPEDEF_(0x88985003L) +#define DWRITE_E_FILEACCESS _HRESULT_TYPEDEF_(0x88985004L) +#define DWRITE_E_FONTCOLLECTIONOBSOLETE _HRESULT_TYPEDEF_(0x88985005L) +#define DWRITE_E_ALREADYREGISTERED _HRESULT_TYPEDEF_(0x88985006L) +#define DWRITE_E_CACHEFORMAT _HRESULT_TYPEDEF_(0x88985007L) +#define DWRITE_E_CACHEVERSION _HRESULT_TYPEDEF_(0x88985008L) +#define DWRITE_E_UNSUPPORTEDOPERATION _HRESULT_TYPEDEF_(0x88985009L) +#define DWRITE_E_TEXTRENDERERINCOMPATIBLE _HRESULT_TYPEDEF_(0x8898500AL) +#define DWRITE_E_FLOWDIRECTIONCONFLICTS _HRESULT_TYPEDEF_(0x8898500BL) +#define DWRITE_E_NOCOLOR _HRESULT_TYPEDEF_(0x8898500CL) +#define DWRITE_E_REMOTEFONT _HRESULT_TYPEDEF_(0x8898500DL) +#define DWRITE_E_DOWNLOADCANCELLED _HRESULT_TYPEDEF_(0x8898500EL) +#define DWRITE_E_DOWNLOADFAILED _HRESULT_TYPEDEF_(0x8898500FL) +#define DWRITE_E_TOOMANYDOWNLOADS _HRESULT_TYPEDEF_(0x88985010L) +#define _FLT_WINERROR_ +#define FILTER_HRESULT_FROM_FLT_NTSTATUS(x) (NT_ASSERT((x & 0xfff0000) == 0x001c0000),(HRESULT) (((x) & 0x8000ffff) | (FACILITY_USERMODE_FILTER_MANAGER << 16))) +#define FACILITY_USERMODE_FILTER_MANAGER 0x1f +#define ERROR_FLT_IO_COMPLETE ((HRESULT)0x001f0001) +#define ERROR_FLT_NO_HANDLER_DEFINED ((HRESULT)0x801f0001) +#define ERROR_FLT_CONTEXT_ALREADY_DEFINED ((HRESULT)0x801f0002) +#define ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST ((HRESULT)0x801f0003) +#define ERROR_FLT_DISALLOW_FAST_IO ((HRESULT)0x801f0004) +#define ERROR_FLT_INVALID_NAME_REQUEST ((HRESULT)0x801f0005) +#define ERROR_FLT_NOT_SAFE_TO_POST_OPERATION ((HRESULT)0x801f0006) +#define ERROR_FLT_NOT_INITIALIZED ((HRESULT)0x801f0007) +#define ERROR_FLT_FILTER_NOT_READY ((HRESULT)0x801f0008) +#define ERROR_FLT_POST_OPERATION_CLEANUP ((HRESULT)0x801f0009) +#define ERROR_FLT_INTERNAL_ERROR ((HRESULT)0x801f000a) +#define ERROR_FLT_DELETING_OBJECT ((HRESULT)0x801f000b) +#define ERROR_FLT_MUST_BE_NONPAGED_POOL ((HRESULT)0x801f000c) +#define ERROR_FLT_DUPLICATE_ENTRY ((HRESULT)0x801f000d) +#define ERROR_FLT_CBDQ_DISABLED ((HRESULT)0x801f000e) +#define ERROR_FLT_DO_NOT_ATTACH ((HRESULT)0x801f000f) +#define ERROR_FLT_DO_NOT_DETACH ((HRESULT)0x801f0010) +#define ERROR_FLT_INSTANCE_ALTITUDE_COLLISION ((HRESULT)0x801f0011) +#define ERROR_FLT_INSTANCE_NAME_COLLISION ((HRESULT)0x801f0012) +#define ERROR_FLT_FILTER_NOT_FOUND ((HRESULT)0x801f0013) +#define ERROR_FLT_VOLUME_NOT_FOUND ((HRESULT)0x801f0014) +#define ERROR_FLT_INSTANCE_NOT_FOUND ((HRESULT)0x801f0015) +#define ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND ((HRESULT)0x801f0016) +#define ERROR_FLT_INVALID_CONTEXT_REGISTRATION ((HRESULT)0x801f0017) +#define ERROR_FLT_NAME_CACHE_MISS ((HRESULT)0x801f0018) +#define ERROR_FLT_NO_DEVICE_OBJECT ((HRESULT)0x801f0019) +#define ERROR_FLT_VOLUME_ALREADY_MOUNTED ((HRESULT)0x801f001a) +#define ERROR_FLT_ALREADY_ENLISTED ((HRESULT)0x801f001b) +#define ERROR_FLT_CONTEXT_ALREADY_LINKED ((HRESULT)0x801F001c) +#define ERROR_FLT_NO_WAITER_FOR_REPLY ((HRESULT)0x801f0020) +#define ERROR_FLT_REGISTRATION_BUSY ((HRESULT)0x801F0023) + +#undef __IN__WINERROR_ +#define _TIMEZONEAPI_H_ +#define TIME_ZONE_ID_INVALID ((DWORD)0xffffffff) + typedef struct _TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR StandardName[32]; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR DaylightName[32]; + SYSTEMTIME DaylightDate; + LONG DaylightBias; + } TIME_ZONE_INFORMATION,*PTIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION; + typedef struct _TIME_DYNAMIC_ZONE_INFORMATION { + LONG Bias; + WCHAR StandardName[32]; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR DaylightName[32]; + SYSTEMTIME DaylightDate; + LONG DaylightBias; + WCHAR TimeZoneKeyName[128]; + BOOLEAN DynamicDaylightTimeDisabled; + } DYNAMIC_TIME_ZONE_INFORMATION,*PDYNAMIC_TIME_ZONE_INFORMATION; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SystemTimeToTzSpecificLocalTime (const TIME_ZONE_INFORMATION *lpTimeZoneInformation, const SYSTEMTIME *lpUniversalTime, LPSYSTEMTIME lpLocalTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TzSpecificLocalTimeToSystemTime (const TIME_ZONE_INFORMATION *lpTimeZoneInformation, const SYSTEMTIME *lpLocalTime, LPSYSTEMTIME lpUniversalTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FileTimeToSystemTime (const FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SystemTimeToFileTime (const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTimeZoneInformation (LPTIME_ZONE_INFORMATION lpTimeZoneInformation); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetDynamicTimeZoneInformation (PDYNAMIC_TIME_ZONE_INFORMATION pTimeZoneInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetTimeZoneInformation (const TIME_ZONE_INFORMATION *lpTimeZoneInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDynamicTimeZoneInformation (const DYNAMIC_TIME_ZONE_INFORMATION *lpTimeZoneInformation); +#define TC_NORMAL 0 +#define TC_HARDERR 1 +#define TC_GP_TRAP 2 +#define TC_SIGNAL 3 +#define AC_LINE_OFFLINE 0x00 +#define AC_LINE_ONLINE 0x01 +#define AC_LINE_BACKUP_POWER 0x02 +#define AC_LINE_UNKNOWN 0xff +#define BATTERY_FLAG_HIGH 0x01 +#define BATTERY_FLAG_LOW 0x02 +#define BATTERY_FLAG_CRITICAL 0x04 +#define BATTERY_FLAG_CHARGING 0x08 +#define BATTERY_FLAG_NO_BATTERY 0x80 +#define BATTERY_FLAG_UNKNOWN 0xff +#define BATTERY_PERCENTAGE_UNKNOWN 0xff +#define SYSTEM_STATUS_FLAG_POWER_SAVING_ON 0x01 +#define BATTERY_LIFE_UNKNOWN 0xffffffff + typedef struct _SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE SystemStatusFlag; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; + } SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSystemPowerStatus (LPSYSTEM_POWER_STATUS lpSystemPowerStatus); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSystemPowerState (WINBOOL fSuspend, WINBOOL fForce); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPages (HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FreeUserPhysicalPages (HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MapUserPhysicalPages (PVOID VirtualAddress, ULONG_PTR NumberOfPages, PULONG_PTR PageArray); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MapUserPhysicalPagesScatter (PVOID *VirtualAddresses, ULONG_PTR NumberOfPages, PULONG_PTR PageArray); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateJobObjectA (LPSECURITY_ATTRIBUTES lpJobAttributes, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateJobObjectW (LPSECURITY_ATTRIBUTES lpJobAttributes, LPCWSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenJobObjectA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenJobObjectW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AssignProcessToJobObject (HANDLE hJob, HANDLE hProcess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TerminateJobObject (HANDLE hJob, UINT uExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryInformationJobObject (HANDLE hJob, JOBOBJECTINFOCLASS JobObjectInformationClass, LPVOID lpJobObjectInformation, DWORD cbJobObjectInformationLength, LPDWORD lpReturnLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetInformationJobObject (HANDLE hJob, JOBOBJECTINFOCLASS JobObjectInformationClass, LPVOID lpJobObjectInformation, DWORD cbJobObjectInformationLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateJobSet (ULONG NumJob, PJOB_SET_ARRAY UserJobSet, ULONG Flags); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstVolumeA (LPSTR lpszVolumeName, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextVolumeA (HANDLE hFindVolume, LPSTR lpszVolumeName, DWORD cchBufferLength); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstVolumeMountPointA (LPCSTR lpszRootPathName, LPSTR lpszVolumeMountPoint, DWORD cchBufferLength); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) FindFirstVolumeMountPointW (LPCWSTR lpszRootPathName, LPWSTR lpszVolumeMountPoint, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextVolumeMountPointA (HANDLE hFindVolumeMountPoint, LPSTR lpszVolumeMountPoint, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindNextVolumeMountPointW (HANDLE hFindVolumeMountPoint, LPWSTR lpszVolumeMountPoint, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindVolumeMountPointClose (HANDLE hFindVolumeMountPoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetVolumeMountPointA (LPCSTR lpszVolumeMountPoint, LPCSTR lpszVolumeName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetVolumeMountPointW (LPCWSTR lpszVolumeMountPoint, LPCWSTR lpszVolumeName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumeNameForVolumeMountPointA (LPCSTR lpszVolumeMountPoint, LPSTR lpszVolumeName, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumePathNameA (LPCSTR lpszFileName, LPSTR lpszVolumePathName, DWORD cchBufferLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetVolumePathNamesForVolumeNameA (LPCSTR lpszVolumeName, LPCH lpszVolumePathNames, DWORD cchBufferLength, PDWORD lpcchReturnLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPagesNuma (HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray, DWORD nndPreferred); +#define FindFirstVolume FindFirstVolumeA +#define FindNextVolume FindNextVolumeA +#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointA +#define GetVolumePathName GetVolumePathNameA +#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameA +#define CreateJobObject __MINGW_NAME_AW(CreateJobObject) +#define OpenJobObject __MINGW_NAME_AW(OpenJobObject) +#define FindFirstVolumeMountPoint __MINGW_NAME_AW(FindFirstVolumeMountPoint) +#define FindNextVolumeMountPoint __MINGW_NAME_AW(FindNextVolumeMountPoint) +#define SetVolumeMountPoint __MINGW_NAME_AW(SetVolumeMountPoint) +#define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID (0x00000001) +#define ACTCTX_FLAG_LANGID_VALID (0x00000002) +#define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID (0x00000004) +#define ACTCTX_FLAG_RESOURCE_NAME_VALID (0x00000008) +#define ACTCTX_FLAG_SET_PROCESS_DEFAULT (0x00000010) +#define ACTCTX_FLAG_APPLICATION_NAME_VALID (0x00000020) +#define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF (0x00000040) +#define ACTCTX_FLAG_HMODULE_VALID (0x00000080) + typedef struct tagACTCTXA { + ULONG cbSize; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; + } ACTCTXA,*PACTCTXA; + typedef struct tagACTCTXW { + ULONG cbSize; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; + } ACTCTXW,*PACTCTXW; + typedef ACTCTXA ACTCTX; + typedef PACTCTXA PACTCTX; + typedef const ACTCTXA *PCACTCTXA; + typedef const ACTCTXW *PCACTCTXW; + typedef PCACTCTXA PCACTCTX; + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateActCtxA (PCACTCTXA pActCtx); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateActCtxW (PCACTCTXW pActCtx); + __declspec (dllimport) void __attribute__((__stdcall__)) AddRefActCtx (HANDLE hActCtx); + __declspec (dllimport) void __attribute__((__stdcall__)) ReleaseActCtx (HANDLE hActCtx); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ZombifyActCtx (HANDLE hActCtx); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ActivateActCtx (HANDLE hActCtx, ULONG_PTR *lpCookie); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeactivateActCtx (DWORD dwFlags, ULONG_PTR ulCookie); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCurrentActCtx (HANDLE *lphActCtx); +#define CreateActCtx __MINGW_NAME_AW(CreateActCtx) +#define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION (0x00000001) + typedef struct tagACTCTX_SECTION_KEYED_DATA_2600 { + ULONG cbSize; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + ULONG ulAssemblyRosterIndex; + } ACTCTX_SECTION_KEYED_DATA_2600,*PACTCTX_SECTION_KEYED_DATA_2600; + typedef const ACTCTX_SECTION_KEYED_DATA_2600 *PCACTCTX_SECTION_KEYED_DATA_2600; + typedef struct tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA { + PVOID lpInformation; + PVOID lpSectionBase; + ULONG ulSectionLength; + PVOID lpSectionGlobalDataBase; + ULONG ulSectionGlobalDataLength; + } ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA,*PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA; + typedef const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA *PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA; + typedef struct tagACTCTX_SECTION_KEYED_DATA { + ULONG cbSize; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + ULONG ulAssemblyRosterIndex; + ULONG ulFlags; + ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA AssemblyMetadata; + } ACTCTX_SECTION_KEYED_DATA,*PACTCTX_SECTION_KEYED_DATA; + typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA; +#define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX (0x00000001) +#define FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS (0x00000002) +#define FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA (0x00000004) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindActCtxSectionStringA (DWORD dwFlags, const GUID *lpExtensionGuid, ULONG ulSectionId, LPCSTR lpStringToFind, PACTCTX_SECTION_KEYED_DATA ReturnedData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindActCtxSectionStringW (DWORD dwFlags, const GUID *lpExtensionGuid, ULONG ulSectionId, LPCWSTR lpStringToFind, PACTCTX_SECTION_KEYED_DATA ReturnedData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FindActCtxSectionGuid (DWORD dwFlags, const GUID *lpExtensionGuid, ULONG ulSectionId, const GUID *lpGuidToFind, PACTCTX_SECTION_KEYED_DATA ReturnedData); +#define FindActCtxSectionString __MINGW_NAME_AW(FindActCtxSectionString) + typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION { + HANDLE hActCtx; + DWORD dwFlags; + } ACTIVATION_CONTEXT_BASIC_INFORMATION,*PACTIVATION_CONTEXT_BASIC_INFORMATION; + typedef const struct _ACTIVATION_CONTEXT_BASIC_INFORMATION *PCACTIVATION_CONTEXT_BASIC_INFORMATION; +#define ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED 1 +#define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX (0x00000004) +#define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE (0x00000008) +#define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS (0x00000010) +#define QUERY_ACTCTX_FLAG_NO_ADDREF (0x80000000) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryActCtxW (DWORD dwFlags, HANDLE hActCtx, PVOID pvSubInstance, ULONG ulInfoClass, PVOID pvBuffer, SIZE_T cbBuffer, SIZE_T *pcbWrittenOrRequired); + typedef WINBOOL (__attribute__((__stdcall__)) *PQUERYACTCTXW_FUNC) (DWORD dwFlags, HANDLE hActCtx, PVOID pvSubInstance, ULONG ulInfoClass, PVOID pvBuffer, SIZE_T cbBuffer, SIZE_T *pcbWrittenOrRequired); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WTSGetActiveConsoleSessionId (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumaProcessorNode (UCHAR Processor, PUCHAR NodeNumber); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumaNodeProcessorMask (UCHAR Node, PULONGLONG ProcessorMask); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumaAvailableMemoryNode (UCHAR Node, PULONGLONG AvailableBytes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumaProximityNode (ULONG ProximityId, PUCHAR NodeNumber); + typedef DWORD (__attribute__((__stdcall__)) *APPLICATION_RECOVERY_CALLBACK) (PVOID pvParameter); +#define RESTART_MAX_CMD_LINE 1024 +#define RESTART_NO_CRASH 1 +#define RESTART_NO_HANG 2 +#define RESTART_NO_PATCH 4 +#define RESTART_NO_REBOOT 8 +#define RECOVERY_DEFAULT_PING_INTERVAL 5000 +#define RECOVERY_MAX_PING_INTERVAL (5 *60 *1000) + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) RegisterApplicationRecoveryCallback (APPLICATION_RECOVERY_CALLBACK pRecoveyCallback, PVOID pvParameter, DWORD dwPingInterval, DWORD dwFlags); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) UnregisterApplicationRecoveryCallback (void); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) RegisterApplicationRestart (PCWSTR pwzCommandline, DWORD dwFlags); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) UnregisterApplicationRestart (void); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetApplicationRecoveryCallback (HANDLE hProcess, APPLICATION_RECOVERY_CALLBACK *pRecoveryCallback, PVOID *ppvParameter, PDWORD pdwPingInterval, PDWORD pdwFlags); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetApplicationRestartSettings (HANDLE hProcess, PWSTR pwzCommandline, PDWORD pcchSize, PDWORD pdwFlags); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) ApplicationRecoveryInProgress (PBOOL pbCancelled); + __declspec (dllimport) void __attribute__((__stdcall__)) ApplicationRecoveryFinished (WINBOOL bSuccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteVolumeMountPointA (LPCSTR lpszVolumeMountPoint); +#define DeleteVolumeMountPoint DeleteVolumeMountPointA + typedef struct _FILE_BASIC_INFO { + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + DWORD FileAttributes; + } FILE_BASIC_INFO,*PFILE_BASIC_INFO; + typedef struct _FILE_STANDARD_INFO { + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + DWORD NumberOfLinks; + BOOLEAN DeletePending; + BOOLEAN Directory; + } FILE_STANDARD_INFO,*PFILE_STANDARD_INFO; + typedef struct _FILE_NAME_INFO { + DWORD FileNameLength; + WCHAR FileName[1]; + } FILE_NAME_INFO,*PFILE_NAME_INFO; + typedef struct _FILE_CASE_SENSITIVE_INFO { + ULONG Flags; + } FILE_CASE_SENSITIVE_INFO,*PFILE_CASE_SENSITIVE_INFO; +#define FILE_RENAME_FLAG_REPLACE_IF_EXISTS 0x00000001 +#define FILE_RENAME_FLAG_POSIX_SEMANTICS 0x00000002 +#define FILE_RENAME_FLAG_SUPPRESS_PIN_STATE_INHERITANCE 0x00000004 + typedef struct _FILE_RENAME_INFO { + __extension__ union { + BOOLEAN ReplaceIfExists; + DWORD Flags; + }; + HANDLE RootDirectory; + DWORD FileNameLength; + WCHAR FileName[1]; + } FILE_RENAME_INFO,*PFILE_RENAME_INFO; + typedef struct _FILE_ALLOCATION_INFO { + LARGE_INTEGER AllocationSize; + } FILE_ALLOCATION_INFO,*PFILE_ALLOCATION_INFO; + typedef struct _FILE_END_OF_FILE_INFO { + LARGE_INTEGER EndOfFile; + } FILE_END_OF_FILE_INFO,*PFILE_END_OF_FILE_INFO; + typedef struct _FILE_STREAM_INFO { + DWORD NextEntryOffset; + DWORD StreamNameLength; + LARGE_INTEGER StreamSize; + LARGE_INTEGER StreamAllocationSize; + WCHAR StreamName[1]; + } FILE_STREAM_INFO,*PFILE_STREAM_INFO; + typedef struct _FILE_COMPRESSION_INFO { + LARGE_INTEGER CompressedFileSize; + WORD CompressionFormat; + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved[3]; + } FILE_COMPRESSION_INFO,*PFILE_COMPRESSION_INFO; + typedef struct _FILE_ATTRIBUTE_TAG_INFO { + DWORD FileAttributes; + DWORD ReparseTag; + } FILE_ATTRIBUTE_TAG_INFO,*PFILE_ATTRIBUTE_TAG_INFO; + typedef struct _FILE_DISPOSITION_INFO { + BOOLEAN DeleteFileA; + } FILE_DISPOSITION_INFO,*PFILE_DISPOSITION_INFO; +#define FILE_DISPOSITION_FLAG_DO_NOT_DELETE 0x00000000 +#define FILE_DISPOSITION_FLAG_DELETE 0x00000001 +#define FILE_DISPOSITION_FLAG_POSIX_SEMANTICS 0x00000002 +#define FILE_DISPOSITION_FLAG_FORCE_IMAGE_SECTION_CHECK 0x00000004 +#define FILE_DISPOSITION_FLAG_ON_CLOSE 0x00000008 +#define FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE 0x00000010 + typedef struct _FILE_DISPOSITION_INFO_EX { + DWORD Flags; + } FILE_DISPOSITION_INFO_EX,*PFILE_DISPOSITION_INFO_EX; + typedef struct _FILE_ID_BOTH_DIR_INFO { + DWORD NextEntryOffset; + DWORD FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + DWORD FileAttributes; + DWORD FileNameLength; + DWORD EaSize; + CCHAR ShortNameLength; + WCHAR ShortName[12]; + LARGE_INTEGER FileId; + WCHAR FileName[1]; + } FILE_ID_BOTH_DIR_INFO,*PFILE_ID_BOTH_DIR_INFO; + typedef struct _FILE_FULL_DIR_INFO { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + WCHAR FileName[1]; + } FILE_FULL_DIR_INFO,*PFILE_FULL_DIR_INFO; + typedef enum _PRIORITY_HINT { + IoPriorityHintVeryLow = 0, + IoPriorityHintLow, + IoPriorityHintNormal, + MaximumIoPriorityHintType + } PRIORITY_HINT; + typedef struct _FILE_IO_PRIORITY_HINT_INFO { + PRIORITY_HINT PriorityHint; + } FILE_IO_PRIORITY_HINT_INFO,*PFILE_IO_PRIORITY_HINT_INFO; +#define REMOTE_PROTOCOL_INFO_FLAG_LOOPBACK 0x00000001 +#define REMOTE_PROTOCOL_INFO_FLAG_OFFLINE 0x00000002 +#define RPI_SMB2_SHAREFLAG_ENCRYPT_DATA 0x00000001 +#define RPI_SMB2_SHAREFLAG_COMPRESS_DATA 0x00000002 + typedef struct _FILE_REMOTE_PROTOCOL_INFO { + USHORT StructureVersion; + USHORT StructureSize; + ULONG Protocol; + USHORT ProtocolMajorVersion; + USHORT ProtocolMinorVersion; + USHORT ProtocolRevision; + USHORT Reserved; + ULONG Flags; + struct { + ULONG Reserved[8]; + } GenericReserved; + struct { + ULONG Reserved[16]; + } ProtocolSpecificReserved; + } FILE_REMOTE_PROTOCOL_INFO,*PFILE_REMOTE_PROTOCOL_INFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileInformationByHandleEx (HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, LPVOID lpFileInformation, DWORD dwBufferSize); + typedef enum _FILE_ID_TYPE { + FileIdType, + ObjectIdType, + ExtendedFileIdType, + MaximumFileIdType + } FILE_ID_TYPE,*PFILE_ID_TYPE; + typedef struct FILE_ID_DESCRIPTOR { + DWORD dwSize; + FILE_ID_TYPE Type; + __extension__ union { + LARGE_INTEGER FileId; + GUID ObjectId; + } ; + } FILE_ID_DESCRIPTOR,*LPFILE_ID_DESCRIPTOR; + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OpenFileById (HANDLE hVolumeHint, LPFILE_ID_DESCRIPTOR lpFileId, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwFlagsAndAttributes); +#define SYMBOLIC_LINK_FLAG_DIRECTORY (0x1) +#define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE (0x2) +#define VALID_SYMBOLIC_LINK_FLAGS SYMBOLIC_LINK_FLAG_DIRECTORY + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkA (LPCSTR lpSymlinkFileName, LPCSTR lpTargetFileName, DWORD dwFlags); + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkW (LPCWSTR lpSymlinkFileName, LPCWSTR lpTargetFileName, DWORD dwFlags); + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkTransactedA (LPCSTR lpSymlinkFileName, LPCSTR lpTargetFileName, DWORD dwFlags, HANDLE hTransaction); + __declspec (dllimport) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkTransactedW (LPCWSTR lpSymlinkFileName, LPCWSTR lpTargetFileName, DWORD dwFlags, HANDLE hTransaction); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryActCtxSettingsW (DWORD dwFlags, HANDLE hActCtx, PCWSTR settingsNameSpace, PCWSTR settingName, PWSTR pvBuffer, SIZE_T dwBuffer, SIZE_T *pdwWrittenOrRequired); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReplacePartitionUnit (PWSTR TargetPartition, PWSTR SparePartition, ULONG Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddSecureMemoryCacheCallback (PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveSecureMemoryCacheCallback (PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack); +#define CreateSymbolicLink __MINGW_NAME_AW(CreateSymbolicLink) +#define CreateSymbolicLinkTransacted __MINGW_NAME_AW(CreateSymbolicLinkTransacted) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyContext (PCONTEXT Destination, DWORD ContextFlags, PCONTEXT Source); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitializeContext (PVOID Buffer, DWORD ContextFlags, PCONTEXT *Context, PDWORD ContextLength); +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void InitializeThreadpoolEnvironment(PTP_CALLBACK_ENVIRON cbe) { + TpInitializeCallbackEnviron(cbe); +} +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackPool(PTP_CALLBACK_ENVIRON cbe, PTP_POOL pool) { + TpSetCallbackThreadpool(cbe, pool); +} +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackCleanupGroup(PTP_CALLBACK_ENVIRON cbe, PTP_CLEANUP_GROUP cleanup_group, PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb) { + TpSetCallbackCleanupGroup(cbe, cleanup_group, cleanup_group_cb); +} +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackRunsLong(PTP_CALLBACK_ENVIRON cbe) { + TpSetCallbackLongFunction(cbe); +} +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackLibrary(PTP_CALLBACK_ENVIRON cbe, PVOID h) { + TpSetCallbackRaceWithDll(cbe, h); +} +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void DestroyThreadpoolEnvironment(PTP_CALLBACK_ENVIRON cbe) { + TpDestroyCallbackEnviron(cbe); +} +extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackPersistent(PTP_CALLBACK_ENVIRON pcbe) { + TpSetCallbackPersistent(pcbe); +} +#define MICROSOFT_WINDOWS_WINBASE_INTERLOCKED_CPLUSPLUS_H_INCLUDED +#define MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS 1 +#undef MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS +#define MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS 0 +#define _WINGDI_ +#define WINGDIAPI DECLSPEC_IMPORT +#define WINSPOOLAPI DECLSPEC_IMPORT +#define R2_BLACK 1 +#define R2_NOTMERGEPEN 2 +#define R2_MASKNOTPEN 3 +#define R2_NOTCOPYPEN 4 +#define R2_MASKPENNOT 5 +#define R2_NOT 6 +#define R2_XORPEN 7 +#define R2_NOTMASKPEN 8 +#define R2_MASKPEN 9 +#define R2_NOTXORPEN 10 +#define R2_NOP 11 +#define R2_MERGENOTPEN 12 +#define R2_COPYPEN 13 +#define R2_MERGEPENNOT 14 +#define R2_MERGEPEN 15 +#define R2_WHITE 16 +#define R2_LAST 16 +#define SRCCOPY (DWORD)0x00CC0020 +#define SRCPAINT (DWORD)0x00EE0086 +#define SRCAND (DWORD)0x008800C6 +#define SRCINVERT (DWORD)0x00660046 +#define SRCERASE (DWORD)0x00440328 +#define NOTSRCCOPY (DWORD)0x00330008 +#define NOTSRCERASE (DWORD)0x001100A6 +#define MERGECOPY (DWORD)0x00C000CA +#define MERGEPAINT (DWORD)0x00BB0226 +#define PATCOPY (DWORD)0x00F00021 +#define PATPAINT (DWORD)0x00FB0A09 +#define PATINVERT (DWORD)0x005A0049 +#define DSTINVERT (DWORD)0x00550009 +#define BLACKNESS (DWORD)0x00000042 +#define WHITENESS (DWORD)0x00FF0062 +#define NOMIRRORBITMAP (DWORD)0x80000000 +#define CAPTUREBLT (DWORD)0x40000000 +#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore)) +#define GDI_ERROR (__MSABI_LONG(0xFFFFFFFF)) +#define HGDI_ERROR (LongToHandle(0xFFFFFFFF)) +#define ERROR 0 +#define NULLREGION 1 +#define SIMPLEREGION 2 +#define COMPLEXREGION 3 +#define RGN_ERROR ERROR +#define RGN_AND 1 +#define RGN_OR 2 +#define RGN_XOR 3 +#define RGN_DIFF 4 +#define RGN_COPY 5 +#define RGN_MIN RGN_AND +#define RGN_MAX RGN_COPY +#define BLACKONWHITE 1 +#define WHITEONBLACK 2 +#define COLORONCOLOR 3 +#define HALFTONE 4 +#define MAXSTRETCHBLTMODE 4 +#define STRETCH_ANDSCANS BLACKONWHITE +#define STRETCH_ORSCANS WHITEONBLACK +#define STRETCH_DELETESCANS COLORONCOLOR +#define STRETCH_HALFTONE HALFTONE +#define ALTERNATE 1 +#define WINDING 2 +#define POLYFILL_LAST 2 +#define LAYOUT_RTL 0x00000001 +#define LAYOUT_BTT 0x00000002 +#define LAYOUT_VBH 0x00000004 +#define LAYOUT_ORIENTATIONMASK (LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH) +#define LAYOUT_BITMAPORIENTATIONPRESERVED 0x00000008 +#define TA_NOUPDATECP 0 +#define TA_UPDATECP 1 +#define TA_LEFT 0 +#define TA_RIGHT 2 +#define TA_CENTER 6 +#define TA_TOP 0 +#define TA_BOTTOM 8 +#define TA_BASELINE 24 +#define TA_RTLREADING 256 +#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING) +#define VTA_BASELINE TA_BASELINE +#define VTA_LEFT TA_BOTTOM +#define VTA_RIGHT TA_TOP +#define VTA_CENTER TA_CENTER +#define VTA_BOTTOM TA_RIGHT +#define VTA_TOP TA_LEFT +#define ETO_OPAQUE 0x0002 +#define ETO_CLIPPED 0x0004 +#define ETO_GLYPH_INDEX 0x0010 +#define ETO_RTLREADING 0x0080 +#define ETO_NUMERICSLOCAL 0x0400 +#define ETO_NUMERICSLATIN 0x0800 +#define ETO_IGNORELANGUAGE 0x1000 +#define ETO_PDY 0x2000 +#define ETO_REVERSE_INDEX_MAP 0x10000 +#define ASPECT_FILTERING 0x0001 +#define DCB_RESET 0x0001 +#define DCB_ACCUMULATE 0x0002 +#define DCB_DIRTY DCB_ACCUMULATE +#define DCB_SET (DCB_RESET | DCB_ACCUMULATE) +#define DCB_ENABLE 0x0004 +#define DCB_DISABLE 0x0008 +#define META_SETBKCOLOR 0x0201 +#define META_SETBKMODE 0x0102 +#define META_SETMAPMODE 0x0103 +#define META_SETROP2 0x0104 +#define META_SETRELABS 0x0105 +#define META_SETPOLYFILLMODE 0x0106 +#define META_SETSTRETCHBLTMODE 0x0107 +#define META_SETTEXTCHAREXTRA 0x0108 +#define META_SETTEXTCOLOR 0x0209 +#define META_SETTEXTJUSTIFICATION 0x020A +#define META_SETWINDOWORG 0x020B +#define META_SETWINDOWEXT 0x020C +#define META_SETVIEWPORTORG 0x020D +#define META_SETVIEWPORTEXT 0x020E +#define META_OFFSETWINDOWORG 0x020F +#define META_SCALEWINDOWEXT 0x0410 +#define META_OFFSETVIEWPORTORG 0x0211 +#define META_SCALEVIEWPORTEXT 0x0412 +#define META_LINETO 0x0213 +#define META_MOVETO 0x0214 +#define META_EXCLUDECLIPRECT 0x0415 +#define META_INTERSECTCLIPRECT 0x0416 +#define META_ARC 0x0817 +#define META_ELLIPSE 0x0418 +#define META_FLOODFILL 0x0419 +#define META_PIE 0x081A +#define META_RECTANGLE 0x041B +#define META_ROUNDRECT 0x061C +#define META_PATBLT 0x061D +#define META_SAVEDC 0x001E +#define META_SETPIXEL 0x041F +#define META_OFFSETCLIPRGN 0x0220 +#define META_TEXTOUT 0x0521 +#define META_BITBLT 0x0922 +#define META_STRETCHBLT 0x0B23 +#define META_POLYGON 0x0324 +#define META_POLYLINE 0x0325 +#define META_ESCAPE 0x0626 +#define META_RESTOREDC 0x0127 +#define META_FILLREGION 0x0228 +#define META_FRAMEREGION 0x0429 +#define META_INVERTREGION 0x012A +#define META_PAINTREGION 0x012B +#define META_SELECTCLIPREGION 0x012C +#define META_SELECTOBJECT 0x012D +#define META_SETTEXTALIGN 0x012E +#define META_CHORD 0x0830 +#define META_SETMAPPERFLAGS 0x0231 +#define META_EXTTEXTOUT 0x0a32 +#define META_SETDIBTODEV 0x0d33 +#define META_SELECTPALETTE 0x0234 +#define META_REALIZEPALETTE 0x0035 +#define META_ANIMATEPALETTE 0x0436 +#define META_SETPALENTRIES 0x0037 +#define META_POLYPOLYGON 0x0538 +#define META_RESIZEPALETTE 0x0139 +#define META_DIBBITBLT 0x0940 +#define META_DIBSTRETCHBLT 0x0b41 +#define META_DIBCREATEPATTERNBRUSH 0x0142 +#define META_STRETCHDIB 0x0f43 +#define META_EXTFLOODFILL 0x0548 +#define META_SETLAYOUT 0x0149 +#define META_DELETEOBJECT 0x01f0 +#define META_CREATEPALETTE 0x00f7 +#define META_CREATEPATTERNBRUSH 0x01F9 +#define META_CREATEPENINDIRECT 0x02FA +#define META_CREATEFONTINDIRECT 0x02FB +#define META_CREATEBRUSHINDIRECT 0x02FC +#define META_CREATEREGION 0x06FF + typedef struct _DRAWPATRECT { + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; + } DRAWPATRECT,*PDRAWPATRECT; +#define NEWFRAME 1 +#define ABORTDOC 2 +#define NEXTBAND 3 +#define SETCOLORTABLE 4 +#define GETCOLORTABLE 5 +#define FLUSHOUTPUT 6 +#define DRAFTMODE 7 +#define QUERYESCSUPPORT 8 +#define SETABORTPROC 9 +#define STARTDOC 10 +#define ENDDOC 11 +#define GETPHYSPAGESIZE 12 +#define GETPRINTINGOFFSET 13 +#define GETSCALINGFACTOR 14 +#define MFCOMMENT 15 +#define GETPENWIDTH 16 +#define SETCOPYCOUNT 17 +#define SELECTPAPERSOURCE 18 +#define DEVICEDATA 19 +#define PASSTHROUGH 19 +#define GETTECHNOLGY 20 +#define GETTECHNOLOGY 20 +#define SETLINECAP 21 +#define SETLINEJOIN 22 +#define SETMITERLIMIT 23 +#define BANDINFO 24 +#define DRAWPATTERNRECT 25 +#define GETVECTORPENSIZE 26 +#define GETVECTORBRUSHSIZE 27 +#define ENABLEDUPLEX 28 +#define GETSETPAPERBINS 29 +#define GETSETPRINTORIENT 30 +#define ENUMPAPERBINS 31 +#define SETDIBSCALING 32 +#define EPSPRINTING 33 +#define ENUMPAPERMETRICS 34 +#define GETSETPAPERMETRICS 35 +#define POSTSCRIPT_DATA 37 +#define POSTSCRIPT_IGNORE 38 +#define MOUSETRAILS 39 +#define GETDEVICEUNITS 42 +#define GETEXTENDEDTEXTMETRICS 256 +#define GETEXTENTTABLE 257 +#define GETPAIRKERNTABLE 258 +#define GETTRACKKERNTABLE 259 +#define EXTTEXTOUT 512 +#define GETFACENAME 513 +#define DOWNLOADFACE 514 +#define ENABLERELATIVEWIDTHS 768 +#define ENABLEPAIRKERNING 769 +#define SETKERNTRACK 770 +#define SETALLJUSTVALUES 771 +#define SETCHARSET 772 +#define STRETCHBLT 2048 +#define METAFILE_DRIVER 2049 +#define GETSETSCREENPARAMS 3072 +#define QUERYDIBSUPPORT 3073 +#define BEGIN_PATH 4096 +#define CLIP_TO_PATH 4097 +#define END_PATH 4098 +#define EXT_DEVICE_CAPS 4099 +#define RESTORE_CTM 4100 +#define SAVE_CTM 4101 +#define SET_ARC_DIRECTION 4102 +#define SET_BACKGROUND_COLOR 4103 +#define SET_POLY_MODE 4104 +#define SET_SCREEN_ANGLE 4105 +#define SET_SPREAD 4106 +#define TRANSFORM_CTM 4107 +#define SET_CLIP_BOX 4108 +#define SET_BOUNDS 4109 +#define SET_MIRROR_MODE 4110 +#define OPENCHANNEL 4110 +#define DOWNLOADHEADER 4111 +#define CLOSECHANNEL 4112 +#define POSTSCRIPT_PASSTHROUGH 4115 +#define ENCAPSULATED_POSTSCRIPT 4116 +#define POSTSCRIPT_IDENTIFY 4117 +#define POSTSCRIPT_INJECTION 4118 +#define CHECKJPEGFORMAT 4119 +#define CHECKPNGFORMAT 4120 +#define GET_PS_FEATURESETTING 4121 +#define GDIPLUS_TS_QUERYVER 4122 +#define GDIPLUS_TS_RECORD 4123 +#define MILCORE_TS_QUERYVER_RESULT_FALSE 0x0 +#define MILCORE_TS_QUERYVER_RESULT_TRUE 0x7FFFFFFF +#define SPCLPASSTHROUGH2 4568 +#define PSIDENT_GDICENTRIC 0 +#define PSIDENT_PSCENTRIC 1 + typedef struct _PSINJECTDATA { + DWORD DataBytes; + WORD InjectionPoint; + WORD PageNumber; + } PSINJECTDATA,*PPSINJECTDATA; +#define PSINJECT_BEGINSTREAM 1 +#define PSINJECT_PSADOBE 2 +#define PSINJECT_PAGESATEND 3 +#define PSINJECT_PAGES 4 +#define PSINJECT_DOCNEEDEDRES 5 +#define PSINJECT_DOCSUPPLIEDRES 6 +#define PSINJECT_PAGEORDER 7 +#define PSINJECT_ORIENTATION 8 +#define PSINJECT_BOUNDINGBOX 9 +#define PSINJECT_DOCUMENTPROCESSCOLORS 10 +#define PSINJECT_COMMENTS 11 +#define PSINJECT_BEGINDEFAULTS 12 +#define PSINJECT_ENDDEFAULTS 13 +#define PSINJECT_BEGINPROLOG 14 +#define PSINJECT_ENDPROLOG 15 +#define PSINJECT_BEGINSETUP 16 +#define PSINJECT_ENDSETUP 17 +#define PSINJECT_TRAILER 18 +#define PSINJECT_EOF 19 +#define PSINJECT_ENDSTREAM 20 +#define PSINJECT_DOCUMENTPROCESSCOLORSATEND 21 +#define PSINJECT_PAGENUMBER 100 +#define PSINJECT_BEGINPAGESETUP 101 +#define PSINJECT_ENDPAGESETUP 102 +#define PSINJECT_PAGETRAILER 103 +#define PSINJECT_PLATECOLOR 104 +#define PSINJECT_SHOWPAGE 105 +#define PSINJECT_PAGEBBOX 106 +#define PSINJECT_ENDPAGECOMMENTS 107 +#define PSINJECT_VMSAVE 200 +#define PSINJECT_VMRESTORE 201 +#define PSINJECT_DLFONT 0xdddddddd +#define FEATURESETTING_NUP 0 +#define FEATURESETTING_OUTPUT 1 +#define FEATURESETTING_PSLEVEL 2 +#define FEATURESETTING_CUSTPAPER 3 +#define FEATURESETTING_MIRROR 4 +#define FEATURESETTING_NEGATIVE 5 +#define FEATURESETTING_PROTOCOL 6 +#define FEATURESETTING_PRIVATE_BEGIN 0x1000 +#define FEATURESETTING_PRIVATE_END 0x1FFF + typedef struct _PSFEATURE_OUTPUT { + WINBOOL bPageIndependent; + WINBOOL bSetPageDevice; + } PSFEATURE_OUTPUT,*PPSFEATURE_OUTPUT; + typedef struct _PSFEATURE_CUSTPAPER { + LONG lOrientation; + LONG lWidth; + LONG lHeight; + LONG lWidthOffset; + LONG lHeightOffset; + } PSFEATURE_CUSTPAPER,*PPSFEATURE_CUSTPAPER; +#define PSPROTOCOL_ASCII 0 +#define PSPROTOCOL_BCP 1 +#define PSPROTOCOL_TBCP 2 +#define PSPROTOCOL_BINARY 3 +#define QDI_SETDIBITS 1 +#define QDI_GETDIBITS 2 +#define QDI_DIBTOSCREEN 4 +#define QDI_STRETCHDIB 8 +#define SP_NOTREPORTED 0x4000 +#define SP_ERROR (-1) +#define SP_APPABORT (-2) +#define SP_USERABORT (-3) +#define SP_OUTOFDISK (-4) +#define SP_OUTOFMEMORY (-5) +#define PR_JOBSTATUS 0x0000 +#define OBJ_PEN 1 +#define OBJ_BRUSH 2 +#define OBJ_DC 3 +#define OBJ_METADC 4 +#define OBJ_PAL 5 +#define OBJ_FONT 6 +#define OBJ_BITMAP 7 +#define OBJ_REGION 8 +#define OBJ_METAFILE 9 +#define OBJ_MEMDC 10 +#define OBJ_EXTPEN 11 +#define OBJ_ENHMETADC 12 +#define OBJ_ENHMETAFILE 13 +#define OBJ_COLORSPACE 14 +#define GDI_OBJ_LAST OBJ_COLORSPACE +#define MWT_IDENTITY 1 +#define MWT_LEFTMULTIPLY 2 +#define MWT_RIGHTMULTIPLY 3 +#define MWT_MIN MWT_IDENTITY +#define MWT_MAX MWT_RIGHTMULTIPLY +#define _XFORM_ + typedef struct tagXFORM { + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; + } XFORM,*PXFORM,*LPXFORM; + typedef struct tagBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; + } BITMAP,*PBITMAP,*NPBITMAP,*LPBITMAP; +#pragma pack(push,1) + typedef struct tagRGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; + } RGBTRIPLE,*PRGBTRIPLE,*NPRGBTRIPLE,*LPRGBTRIPLE; +#pragma pack(pop) + + typedef struct tagRGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; + } RGBQUAD; + typedef RGBQUAD *LPRGBQUAD; +#define CS_ENABLE __MSABI_LONG(0x00000001) +#define CS_DISABLE __MSABI_LONG(0x00000002) +#define CS_DELETE_TRANSFORM __MSABI_LONG(0x00000003) +#define LCS_SIGNATURE 'PSOC' +#define LCS_sRGB 'sRGB' +#define LCS_WINDOWS_COLOR_SPACE 'Win ' + typedef LONG LCSCSTYPE; +#define LCS_CALIBRATED_RGB __MSABI_LONG(0x00000000) + typedef LONG LCSGAMUTMATCH; +#define LCS_GM_BUSINESS __MSABI_LONG(0x00000001) +#define LCS_GM_GRAPHICS __MSABI_LONG(0x00000002) +#define LCS_GM_IMAGES __MSABI_LONG(0x00000004) +#define LCS_GM_ABS_COLORIMETRIC __MSABI_LONG(0x00000008) +#define CM_OUT_OF_GAMUT 255 +#define CM_IN_GAMUT 0 +#define ICM_ADDPROFILE 1 +#define ICM_DELETEPROFILE 2 +#define ICM_QUERYPROFILE 3 +#define ICM_SETDEFAULTPROFILE 4 +#define ICM_REGISTERICMATCHER 5 +#define ICM_UNREGISTERICMATCHER 6 +#define ICM_QUERYMATCH 7 +#define GetKValue(cmyk) ((BYTE)(cmyk)) +#define GetYValue(cmyk) ((BYTE)((cmyk)>> 8)) +#define GetMValue(cmyk) ((BYTE)((cmyk)>>16)) +#define GetCValue(cmyk) ((BYTE)((cmyk)>>24)) +#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24))) + typedef long FXPT16DOT16,*LPFXPT16DOT16; + typedef long FXPT2DOT30,*LPFXPT2DOT30; + typedef struct tagCIEXYZ { + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; + } CIEXYZ; + typedef CIEXYZ *LPCIEXYZ; + typedef struct tagICEXYZTRIPLE { + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; + } CIEXYZTRIPLE; + typedef CIEXYZTRIPLE *LPCIEXYZTRIPLE; + typedef struct tagLOGCOLORSPACEA { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR lcsFilename[260]; + } LOGCOLORSPACEA,*LPLOGCOLORSPACEA; + typedef struct tagLOGCOLORSPACEW { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR lcsFilename[260]; + } LOGCOLORSPACEW,*LPLOGCOLORSPACEW; + typedef LOGCOLORSPACEA LOGCOLORSPACE; + typedef LPLOGCOLORSPACEA LPLOGCOLORSPACE; + typedef struct tagBITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; + } BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER; + typedef struct tagBITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; + } BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER; + typedef struct { + DWORD bV4Size; + LONG bV4Width; + LONG bV4Height; + WORD bV4Planes; + WORD bV4BitCount; + DWORD bV4V4Compression; + DWORD bV4SizeImage; + LONG bV4XPelsPerMeter; + LONG bV4YPelsPerMeter; + DWORD bV4ClrUsed; + DWORD bV4ClrImportant; + DWORD bV4RedMask; + DWORD bV4GreenMask; + DWORD bV4BlueMask; + DWORD bV4AlphaMask; + DWORD bV4CSType; + CIEXYZTRIPLE bV4Endpoints; + DWORD bV4GammaRed; + DWORD bV4GammaGreen; + DWORD bV4GammaBlue; + } BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER; + typedef struct { + DWORD bV5Size; + LONG bV5Width; + LONG bV5Height; + WORD bV5Planes; + WORD bV5BitCount; + DWORD bV5Compression; + DWORD bV5SizeImage; + LONG bV5XPelsPerMeter; + LONG bV5YPelsPerMeter; + DWORD bV5ClrUsed; + DWORD bV5ClrImportant; + DWORD bV5RedMask; + DWORD bV5GreenMask; + DWORD bV5BlueMask; + DWORD bV5AlphaMask; + DWORD bV5CSType; + CIEXYZTRIPLE bV5Endpoints; + DWORD bV5GammaRed; + DWORD bV5GammaGreen; + DWORD bV5GammaBlue; + DWORD bV5Intent; + DWORD bV5ProfileData; + DWORD bV5ProfileSize; + DWORD bV5Reserved; + } BITMAPV5HEADER,*LPBITMAPV5HEADER,*PBITMAPV5HEADER; +#define PROFILE_LINKED 'LINK' +#define PROFILE_EMBEDDED 'MBED' +#define BI_RGB __MSABI_LONG(0) +#define BI_RLE8 __MSABI_LONG(1) +#define BI_RLE4 __MSABI_LONG(2) +#define BI_BITFIELDS __MSABI_LONG(3) +#define BI_JPEG __MSABI_LONG(4) +#define BI_PNG __MSABI_LONG(5) + typedef struct tagBITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[1]; + } BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO; + typedef struct tagBITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE bmciColors[1]; + } BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO; +#pragma pack(push,2) + typedef struct tagBITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; + } BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER; +#pragma pack(pop) +#define MAKEPOINTS(l) (*((POINTS *)&(l))) + typedef struct tagFONTSIGNATURE { + DWORD fsUsb[4]; + DWORD fsCsb[2]; + } FONTSIGNATURE,*PFONTSIGNATURE,*LPFONTSIGNATURE; + typedef struct tagCHARSETINFO { + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; + } CHARSETINFO,*PCHARSETINFO,*NPCHARSETINFO,*LPCHARSETINFO; +#define TCI_SRCCHARSET 1 +#define TCI_SRCCODEPAGE 2 +#define TCI_SRCFONTSIG 3 +#define TCI_SRCLOCALE 0x1000 + typedef struct tagLOCALESIGNATURE { + DWORD lsUsb[4]; + DWORD lsCsbDefault[2]; + DWORD lsCsbSupported[2]; + } LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE; + typedef struct tagHANDLETABLE { + HGDIOBJ objectHandle[1]; + } HANDLETABLE,*PHANDLETABLE,*LPHANDLETABLE; + typedef struct tagMETARECORD { + DWORD rdSize; + WORD rdFunction; + WORD rdParm[1]; + } METARECORD; + typedef struct tagMETARECORD *PMETARECORD; + typedef struct tagMETARECORD *LPMETARECORD; + typedef struct tagMETAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; + } METAFILEPICT,*LPMETAFILEPICT; +#pragma pack(push,2) + typedef struct tagMETAHEADER { + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; + } METAHEADER; + typedef struct tagMETAHEADER *PMETAHEADER; + typedef struct tagMETAHEADER *LPMETAHEADER; +#pragma pack(pop) + typedef struct tagENHMETARECORD { + DWORD iType; + DWORD nSize; + DWORD dParm[1]; + } ENHMETARECORD,*PENHMETARECORD,*LPENHMETARECORD; + typedef struct tagENHMETAHEADER { + DWORD iType; + DWORD nSize; + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + WORD sReserved; + DWORD nDescription; + DWORD offDescription; + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; + DWORD cbPixelFormat; + DWORD offPixelFormat; + DWORD bOpenGL; + SIZEL szlMicrometers; + } ENHMETAHEADER,*PENHMETAHEADER,*LPENHMETAHEADER; +#define TMPF_FIXED_PITCH 0x01 +#define TMPF_VECTOR 0x02 +#define TMPF_DEVICE 0x08 +#define TMPF_TRUETYPE 0x04 + typedef BYTE BCHAR; +#define _TEXTMETRIC_DEFINED +#pragma pack(push,4) + + typedef struct tagTEXTMETRICA { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + } TEXTMETRICA,*PTEXTMETRICA,*NPTEXTMETRICA,*LPTEXTMETRICA; + typedef struct tagTEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + } TEXTMETRICW,*PTEXTMETRICW,*NPTEXTMETRICW,*LPTEXTMETRICW; + typedef TEXTMETRICA TEXTMETRIC; + typedef PTEXTMETRICA PTEXTMETRIC; + typedef NPTEXTMETRICA NPTEXTMETRIC; + typedef LPTEXTMETRICA LPTEXTMETRIC; +#pragma pack(pop) +#define NTM_REGULAR __MSABI_LONG(0x00000040) +#define NTM_BOLD __MSABI_LONG(0x00000020) +#define NTM_ITALIC __MSABI_LONG(0x00000001) +#define NTM_NONNEGATIVE_AC 0x00010000 +#define NTM_PS_OPENTYPE 0x00020000 +#define NTM_TT_OPENTYPE 0x00040000 +#define NTM_MULTIPLEMASTER 0x00080000 +#define NTM_TYPE1 0x00100000 +#define NTM_DSIG 0x00200000 +#pragma pack(push,4) + typedef struct tagNEWTEXTMETRICA { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; + } NEWTEXTMETRICA,*PNEWTEXTMETRICA,*NPNEWTEXTMETRICA,*LPNEWTEXTMETRICA; + typedef struct tagNEWTEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; + } NEWTEXTMETRICW,*PNEWTEXTMETRICW,*NPNEWTEXTMETRICW,*LPNEWTEXTMETRICW; + typedef NEWTEXTMETRICA NEWTEXTMETRIC; + typedef PNEWTEXTMETRICA PNEWTEXTMETRIC; + typedef NPNEWTEXTMETRICA NPNEWTEXTMETRIC; + typedef LPNEWTEXTMETRICA LPNEWTEXTMETRIC; +#pragma pack(pop) + + typedef struct tagNEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; + } NEWTEXTMETRICEXA; + typedef struct tagNEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; + } NEWTEXTMETRICEXW; + typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX; + typedef struct tagPELARRAY { + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; + } PELARRAY,*PPELARRAY,*NPPELARRAY,*LPPELARRAY; + typedef struct tagLOGBRUSH { + UINT lbStyle; + COLORREF lbColor; + ULONG_PTR lbHatch; + } LOGBRUSH,*PLOGBRUSH,*NPLOGBRUSH,*LPLOGBRUSH; + typedef struct tagLOGBRUSH32 { + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; + } LOGBRUSH32,*PLOGBRUSH32,*NPLOGBRUSH32,*LPLOGBRUSH32; + typedef LOGBRUSH PATTERN; + typedef PATTERN *PPATTERN; + typedef PATTERN *NPPATTERN; + typedef PATTERN *LPPATTERN; + typedef struct tagLOGPEN { + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; + } LOGPEN,*PLOGPEN,*NPLOGPEN,*LPLOGPEN; + typedef struct tagEXTLOGPEN { + DWORD elpPenStyle; + DWORD elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + ULONG_PTR elpHatch; + DWORD elpNumEntries; + DWORD elpStyleEntry[1]; + } EXTLOGPEN,*PEXTLOGPEN,*NPEXTLOGPEN,*LPEXTLOGPEN; + typedef struct tagEXTLOGPEN32 { + DWORD elpPenStyle; + DWORD elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + ULONG elpHatch; + DWORD elpNumEntries; + DWORD elpStyleEntry[1]; + } EXTLOGPEN32, *PEXTLOGPEN32, *NPEXTLOGPEN32, *LPEXTLOGPEN32; +#define _PALETTEENTRY_DEFINED + typedef struct tagPALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; + } PALETTEENTRY,*PPALETTEENTRY,*LPPALETTEENTRY; +#define _LOGPALETTE_DEFINED + typedef struct tagLOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[1]; + } LOGPALETTE,*PLOGPALETTE,*NPLOGPALETTE,*LPLOGPALETTE; +#define LF_FACESIZE 32 + typedef struct tagLOGFONTA { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR lfFaceName[32]; + } LOGFONTA,*PLOGFONTA,*NPLOGFONTA,*LPLOGFONTA; + typedef struct tagLOGFONTW { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + WCHAR lfFaceName[32]; + } LOGFONTW,*PLOGFONTW,*NPLOGFONTW,*LPLOGFONTW; + typedef LOGFONTA LOGFONT; + typedef PLOGFONTA PLOGFONT; + typedef NPLOGFONTA NPLOGFONT; + typedef LPLOGFONTA LPLOGFONT; +#define LF_FULLFACESIZE 64 + typedef struct tagENUMLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[64]; + BYTE elfStyle[32]; + } ENUMLOGFONTA,*LPENUMLOGFONTA; + typedef struct tagENUMLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[64]; + WCHAR elfStyle[32]; + } ENUMLOGFONTW,*LPENUMLOGFONTW; + typedef ENUMLOGFONTA ENUMLOGFONT; + typedef LPENUMLOGFONTA LPENUMLOGFONT; + typedef struct tagENUMLOGFONTEXA { + LOGFONTA elfLogFont; + BYTE elfFullName[64]; + BYTE elfStyle[32]; + BYTE elfScript[32]; + } ENUMLOGFONTEXA,*LPENUMLOGFONTEXA; + typedef struct tagENUMLOGFONTEXW { + LOGFONTW elfLogFont; + WCHAR elfFullName[64]; + WCHAR elfStyle[32]; + WCHAR elfScript[32]; + } ENUMLOGFONTEXW,*LPENUMLOGFONTEXW; + typedef ENUMLOGFONTEXA ENUMLOGFONTEX; + typedef LPENUMLOGFONTEXA LPENUMLOGFONTEX; +#define OUT_DEFAULT_PRECIS 0 +#define OUT_STRING_PRECIS 1 +#define OUT_CHARACTER_PRECIS 2 +#define OUT_STROKE_PRECIS 3 +#define OUT_TT_PRECIS 4 +#define OUT_DEVICE_PRECIS 5 +#define OUT_RASTER_PRECIS 6 +#define OUT_TT_ONLY_PRECIS 7 +#define OUT_OUTLINE_PRECIS 8 +#define OUT_SCREEN_OUTLINE_PRECIS 9 +#define OUT_PS_ONLY_PRECIS 10 +#define CLIP_DEFAULT_PRECIS 0 +#define CLIP_CHARACTER_PRECIS 1 +#define CLIP_STROKE_PRECIS 2 +#define CLIP_MASK 0xf +#define CLIP_LH_ANGLES (1<<4) +#define CLIP_TT_ALWAYS (2<<4) +#define CLIP_DFA_DISABLE (4<<4) +#define CLIP_EMBEDDED (8<<4) +#define DEFAULT_QUALITY 0 +#define DRAFT_QUALITY 1 +#define PROOF_QUALITY 2 +#define NONANTIALIASED_QUALITY 3 +#define ANTIALIASED_QUALITY 4 +#define CLEARTYPE_QUALITY 5 +#define CLEARTYPE_NATURAL_QUALITY 6 +#define DEFAULT_PITCH 0 +#define FIXED_PITCH 1 +#define VARIABLE_PITCH 2 +#define MONO_FONT 8 +#define ANSI_CHARSET 0 +#define DEFAULT_CHARSET 1 +#define SYMBOL_CHARSET 2 +#define SHIFTJIS_CHARSET 128 +#define HANGEUL_CHARSET 129 +#define HANGUL_CHARSET 129 +#define GB2312_CHARSET 134 +#define CHINESEBIG5_CHARSET 136 +#define OEM_CHARSET 255 +#define JOHAB_CHARSET 130 +#define HEBREW_CHARSET 177 +#define ARABIC_CHARSET 178 +#define GREEK_CHARSET 161 +#define TURKISH_CHARSET 162 +#define VIETNAMESE_CHARSET 163 +#define THAI_CHARSET 222 +#define EASTEUROPE_CHARSET 238 +#define RUSSIAN_CHARSET 204 +#define MAC_CHARSET 77 +#define BALTIC_CHARSET 186 +#define FS_LATIN1 __MSABI_LONG(0x00000001) +#define FS_LATIN2 __MSABI_LONG(0x00000002) +#define FS_CYRILLIC __MSABI_LONG(0x00000004) +#define FS_GREEK __MSABI_LONG(0x00000008) +#define FS_TURKISH __MSABI_LONG(0x00000010) +#define FS_HEBREW __MSABI_LONG(0x00000020) +#define FS_ARABIC __MSABI_LONG(0x00000040) +#define FS_BALTIC __MSABI_LONG(0x00000080) +#define FS_VIETNAMESE __MSABI_LONG(0x00000100) +#define FS_THAI __MSABI_LONG(0x00010000) +#define FS_JISJAPAN __MSABI_LONG(0x00020000) +#define FS_CHINESESIMP __MSABI_LONG(0x00040000) +#define FS_WANSUNG __MSABI_LONG(0x00080000) +#define FS_CHINESETRAD __MSABI_LONG(0x00100000) +#define FS_JOHAB __MSABI_LONG(0x00200000) +#define FS_SYMBOL __MSABI_LONG(0x80000000) +#define FF_DONTCARE (0<<4) +#define FF_ROMAN (1<<4) +#define FF_SWISS (2<<4) +#define FF_MODERN (3<<4) +#define FF_SCRIPT (4<<4) +#define FF_DECORATIVE (5<<4) +#define FW_DONTCARE 0 +#define FW_THIN 100 +#define FW_EXTRALIGHT 200 +#define FW_LIGHT 300 +#define FW_NORMAL 400 +#define FW_MEDIUM 500 +#define FW_SEMIBOLD 600 +#define FW_BOLD 700 +#define FW_EXTRABOLD 800 +#define FW_HEAVY 900 +#define FW_ULTRALIGHT FW_EXTRALIGHT +#define FW_REGULAR FW_NORMAL +#define FW_DEMIBOLD FW_SEMIBOLD +#define FW_ULTRABOLD FW_EXTRABOLD +#define FW_BLACK FW_HEAVY +#define PANOSE_COUNT 10 +#define PAN_FAMILYTYPE_INDEX 0 +#define PAN_SERIFSTYLE_INDEX 1 +#define PAN_WEIGHT_INDEX 2 +#define PAN_PROPORTION_INDEX 3 +#define PAN_CONTRAST_INDEX 4 +#define PAN_STROKEVARIATION_INDEX 5 +#define PAN_ARMSTYLE_INDEX 6 +#define PAN_LETTERFORM_INDEX 7 +#define PAN_MIDLINE_INDEX 8 +#define PAN_XHEIGHT_INDEX 9 +#define PAN_CULTURE_LATIN 0 + typedef struct tagPANOSE { + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; + } PANOSE,*LPPANOSE; +#define PAN_ANY 0 +#define PAN_NO_FIT 1 +#define PAN_FAMILY_TEXT_DISPLAY 2 +#define PAN_FAMILY_SCRIPT 3 +#define PAN_FAMILY_DECORATIVE 4 +#define PAN_FAMILY_PICTORIAL 5 +#define PAN_SERIF_COVE 2 +#define PAN_SERIF_OBTUSE_COVE 3 +#define PAN_SERIF_SQUARE_COVE 4 +#define PAN_SERIF_OBTUSE_SQUARE_COVE 5 +#define PAN_SERIF_SQUARE 6 +#define PAN_SERIF_THIN 7 +#define PAN_SERIF_BONE 8 +#define PAN_SERIF_EXAGGERATED 9 +#define PAN_SERIF_TRIANGLE 10 +#define PAN_SERIF_NORMAL_SANS 11 +#define PAN_SERIF_OBTUSE_SANS 12 +#define PAN_SERIF_PERP_SANS 13 +#define PAN_SERIF_FLARED 14 +#define PAN_SERIF_ROUNDED 15 +#define PAN_WEIGHT_VERY_LIGHT 2 +#define PAN_WEIGHT_LIGHT 3 +#define PAN_WEIGHT_THIN 4 +#define PAN_WEIGHT_BOOK 5 +#define PAN_WEIGHT_MEDIUM 6 +#define PAN_WEIGHT_DEMI 7 +#define PAN_WEIGHT_BOLD 8 +#define PAN_WEIGHT_HEAVY 9 +#define PAN_WEIGHT_BLACK 10 +#define PAN_WEIGHT_NORD 11 +#define PAN_PROP_OLD_STYLE 2 +#define PAN_PROP_MODERN 3 +#define PAN_PROP_EVEN_WIDTH 4 +#define PAN_PROP_EXPANDED 5 +#define PAN_PROP_CONDENSED 6 +#define PAN_PROP_VERY_EXPANDED 7 +#define PAN_PROP_VERY_CONDENSED 8 +#define PAN_PROP_MONOSPACED 9 +#define PAN_CONTRAST_NONE 2 +#define PAN_CONTRAST_VERY_LOW 3 +#define PAN_CONTRAST_LOW 4 +#define PAN_CONTRAST_MEDIUM_LOW 5 +#define PAN_CONTRAST_MEDIUM 6 +#define PAN_CONTRAST_MEDIUM_HIGH 7 +#define PAN_CONTRAST_HIGH 8 +#define PAN_CONTRAST_VERY_HIGH 9 +#define PAN_STROKE_GRADUAL_DIAG 2 +#define PAN_STROKE_GRADUAL_TRAN 3 +#define PAN_STROKE_GRADUAL_VERT 4 +#define PAN_STROKE_GRADUAL_HORZ 5 +#define PAN_STROKE_RAPID_VERT 6 +#define PAN_STROKE_RAPID_HORZ 7 +#define PAN_STROKE_INSTANT_VERT 8 +#define PAN_STRAIGHT_ARMS_HORZ 2 +#define PAN_STRAIGHT_ARMS_WEDGE 3 +#define PAN_STRAIGHT_ARMS_VERT 4 +#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 +#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 +#define PAN_BENT_ARMS_HORZ 7 +#define PAN_BENT_ARMS_WEDGE 8 +#define PAN_BENT_ARMS_VERT 9 +#define PAN_BENT_ARMS_SINGLE_SERIF 10 +#define PAN_BENT_ARMS_DOUBLE_SERIF 11 +#define PAN_LETT_NORMAL_CONTACT 2 +#define PAN_LETT_NORMAL_WEIGHTED 3 +#define PAN_LETT_NORMAL_BOXED 4 +#define PAN_LETT_NORMAL_FLATTENED 5 +#define PAN_LETT_NORMAL_ROUNDED 6 +#define PAN_LETT_NORMAL_OFF_CENTER 7 +#define PAN_LETT_NORMAL_SQUARE 8 +#define PAN_LETT_OBLIQUE_CONTACT 9 +#define PAN_LETT_OBLIQUE_WEIGHTED 10 +#define PAN_LETT_OBLIQUE_BOXED 11 +#define PAN_LETT_OBLIQUE_FLATTENED 12 +#define PAN_LETT_OBLIQUE_ROUNDED 13 +#define PAN_LETT_OBLIQUE_OFF_CENTER 14 +#define PAN_LETT_OBLIQUE_SQUARE 15 +#define PAN_MIDLINE_STANDARD_TRIMMED 2 +#define PAN_MIDLINE_STANDARD_POINTED 3 +#define PAN_MIDLINE_STANDARD_SERIFED 4 +#define PAN_MIDLINE_HIGH_TRIMMED 5 +#define PAN_MIDLINE_HIGH_POINTED 6 +#define PAN_MIDLINE_HIGH_SERIFED 7 +#define PAN_MIDLINE_CONSTANT_TRIMMED 8 +#define PAN_MIDLINE_CONSTANT_POINTED 9 +#define PAN_MIDLINE_CONSTANT_SERIFED 10 +#define PAN_MIDLINE_LOW_TRIMMED 11 +#define PAN_MIDLINE_LOW_POINTED 12 +#define PAN_MIDLINE_LOW_SERIFED 13 +#define PAN_XHEIGHT_CONSTANT_SMALL 2 +#define PAN_XHEIGHT_CONSTANT_STD 3 +#define PAN_XHEIGHT_CONSTANT_LARGE 4 +#define PAN_XHEIGHT_DUCKING_SMALL 5 +#define PAN_XHEIGHT_DUCKING_STD 6 +#define PAN_XHEIGHT_DUCKING_LARGE 7 +#define ELF_VENDOR_SIZE 4 + typedef struct tagEXTLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[64]; + BYTE elfStyle[32]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[4]; + DWORD elfCulture; + PANOSE elfPanose; + } EXTLOGFONTA,*PEXTLOGFONTA,*NPEXTLOGFONTA,*LPEXTLOGFONTA; + typedef struct tagEXTLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[64]; + WCHAR elfStyle[32]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[4]; + DWORD elfCulture; + PANOSE elfPanose; + } EXTLOGFONTW,*PEXTLOGFONTW,*NPEXTLOGFONTW,*LPEXTLOGFONTW; + typedef EXTLOGFONTA EXTLOGFONT; + typedef PEXTLOGFONTA PEXTLOGFONT; + typedef NPEXTLOGFONTA NPEXTLOGFONT; + typedef LPEXTLOGFONTA LPEXTLOGFONT; +#define ELF_VERSION 0 +#define ELF_CULTURE_LATIN 0 +#define RASTER_FONTTYPE 0x0001 +#define DEVICE_FONTTYPE 0x002 +#define TRUETYPE_FONTTYPE 0x004 +#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) +#define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b)) +#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i))) +#define PC_RESERVED 0x01 +#define PC_EXPLICIT 0x02 +#define PC_NOCOLLAPSE 0x04 +#define GetRValue(rgb) (LOBYTE(rgb)) +#define GetGValue(rgb) (LOBYTE(((WORD)(rgb)) >> 8)) +#define GetBValue(rgb) (LOBYTE((rgb)>>16)) +#define TRANSPARENT 1 +#define OPAQUE 2 +#define BKMODE_LAST 2 +#define GM_COMPATIBLE 1 +#define GM_ADVANCED 2 +#define GM_LAST 2 +#define PT_CLOSEFIGURE 0x01 +#define PT_LINETO 0x02 +#define PT_BEZIERTO 0x04 +#define PT_MOVETO 0x06 +#define MM_TEXT 1 +#define MM_LOMETRIC 2 +#define MM_HIMETRIC 3 +#define MM_LOENGLISH 4 +#define MM_HIENGLISH 5 +#define MM_TWIPS 6 +#define MM_ISOTROPIC 7 +#define MM_ANISOTROPIC 8 +#define MM_MIN MM_TEXT +#define MM_MAX MM_ANISOTROPIC +#define MM_MAX_FIXEDSCALE MM_TWIPS +#define ABSOLUTE 1 +#define RELATIVE 2 +#define WHITE_BRUSH 0 +#define LTGRAY_BRUSH 1 +#define GRAY_BRUSH 2 +#define DKGRAY_BRUSH 3 +#define BLACK_BRUSH 4 +#define NULL_BRUSH 5 +#define HOLLOW_BRUSH NULL_BRUSH +#define WHITE_PEN 6 +#define BLACK_PEN 7 +#define NULL_PEN 8 +#define OEM_FIXED_FONT 10 +#define ANSI_FIXED_FONT 11 +#define ANSI_VAR_FONT 12 +#define SYSTEM_FONT 13 +#define DEVICE_DEFAULT_FONT 14 +#define DEFAULT_PALETTE 15 +#define SYSTEM_FIXED_FONT 16 +#define DEFAULT_GUI_FONT 17 +#define DC_BRUSH 18 +#define DC_PEN 19 +#define STOCK_LAST 19 +#define CLR_INVALID 0xFFFFFFFF +#define BS_SOLID 0 +#define BS_NULL 1 +#define BS_HOLLOW BS_NULL +#define BS_HATCHED 2 +#define BS_PATTERN 3 +#define BS_INDEXED 4 +#define BS_DIBPATTERN 5 +#define BS_DIBPATTERNPT 6 +#define BS_PATTERN8X8 7 +#define BS_DIBPATTERN8X8 8 +#define BS_MONOPATTERN 9 +#define HS_HORIZONTAL 0 +#define HS_VERTICAL 1 +#define HS_FDIAGONAL 2 +#define HS_BDIAGONAL 3 +#define HS_CROSS 4 +#define HS_DIAGCROSS 5 +#define HS_API_MAX 12 +#define PS_SOLID 0 +#define PS_DASH 1 +#define PS_DOT 2 +#define PS_DASHDOT 3 +#define PS_DASHDOTDOT 4 +#define PS_NULL 5 +#define PS_INSIDEFRAME 6 +#define PS_USERSTYLE 7 +#define PS_ALTERNATE 8 +#define PS_STYLE_MASK 0x0000000F +#define PS_ENDCAP_ROUND 0x00000000 +#define PS_ENDCAP_SQUARE 0x00000100 +#define PS_ENDCAP_FLAT 0x00000200 +#define PS_ENDCAP_MASK 0x00000F00 +#define PS_JOIN_ROUND 0x00000000 +#define PS_JOIN_BEVEL 0x00001000 +#define PS_JOIN_MITER 0x00002000 +#define PS_JOIN_MASK 0x0000F000 +#define PS_COSMETIC 0x00000000 +#define PS_GEOMETRIC 0x00010000 +#define PS_TYPE_MASK 0x000F0000 +#define AD_COUNTERCLOCKWISE 1 +#define AD_CLOCKWISE 2 +#define DRIVERVERSION 0 +#define TECHNOLOGY 2 +#define HORZSIZE 4 +#define VERTSIZE 6 +#define HORZRES 8 +#define VERTRES 10 +#define BITSPIXEL 12 +#define PLANES 14 +#define NUMBRUSHES 16 +#define NUMPENS 18 +#define NUMMARKERS 20 +#define NUMFONTS 22 +#define NUMCOLORS 24 +#define PDEVICESIZE 26 +#define CURVECAPS 28 +#define LINECAPS 30 +#define POLYGONALCAPS 32 +#define TEXTCAPS 34 +#define CLIPCAPS 36 +#define RASTERCAPS 38 +#define ASPECTX 40 +#define ASPECTY 42 +#define ASPECTXY 44 +#define LOGPIXELSX 88 +#define LOGPIXELSY 90 +#define SIZEPALETTE 104 +#define NUMRESERVED 106 +#define COLORRES 108 +#define PHYSICALWIDTH 110 +#define PHYSICALHEIGHT 111 +#define PHYSICALOFFSETX 112 +#define PHYSICALOFFSETY 113 +#define SCALINGFACTORX 114 +#define SCALINGFACTORY 115 +#define VREFRESH 116 +#define DESKTOPVERTRES 117 +#define DESKTOPHORZRES 118 +#define BLTALIGNMENT 119 +#define SHADEBLENDCAPS 120 +#define COLORMGMTCAPS 121 +#define DT_PLOTTER 0 +#define DT_RASDISPLAY 1 +#define DT_RASPRINTER 2 +#define DT_RASCAMERA 3 +#define DT_CHARSTREAM 4 +#define DT_METAFILE 5 +#define DT_DISPFILE 6 +#define CC_NONE 0 +#define CC_CIRCLES 1 +#define CC_PIE 2 +#define CC_CHORD 4 +#define CC_ELLIPSES 8 +#define CC_WIDE 16 +#define CC_STYLED 32 +#define CC_WIDESTYLED 64 +#define CC_INTERIORS 128 +#define CC_ROUNDRECT 256 +#define LC_NONE 0 +#define LC_POLYLINE 2 +#define LC_MARKER 4 +#define LC_POLYMARKER 8 +#define LC_WIDE 16 +#define LC_STYLED 32 +#define LC_WIDESTYLED 64 +#define LC_INTERIORS 128 +#define PC_NONE 0 +#define PC_POLYGON 1 +#define PC_RECTANGLE 2 +#define PC_WINDPOLYGON 4 +#define PC_TRAPEZOID 4 +#define PC_SCANLINE 8 +#define PC_WIDE 16 +#define PC_STYLED 32 +#define PC_WIDESTYLED 64 +#define PC_INTERIORS 128 +#define PC_POLYPOLYGON 256 +#define PC_PATHS 512 +#define CP_NONE 0 +#define CP_RECTANGLE 1 +#define CP_REGION 2 +#define TC_OP_CHARACTER 0x00000001 +#define TC_OP_STROKE 0x00000002 +#define TC_CP_STROKE 0x00000004 +#define TC_CR_90 0x00000008 +#define TC_CR_ANY 0x00000010 +#define TC_SF_X_YINDEP 0x00000020 +#define TC_SA_DOUBLE 0x00000040 +#define TC_SA_INTEGER 0x00000080 +#define TC_SA_CONTIN 0x00000100 +#define TC_EA_DOUBLE 0x00000200 +#define TC_IA_ABLE 0x00000400 +#define TC_UA_ABLE 0x00000800 +#define TC_SO_ABLE 0x00001000 +#define TC_RA_ABLE 0x00002000 +#define TC_VA_ABLE 0x00004000 +#define TC_RESERVED 0x00008000 +#define TC_SCROLLBLT 0x00010000 +#define RC_NONE +#define RC_BITBLT 1 +#define RC_BANDING 2 +#define RC_SCALING 4 +#define RC_BITMAP64 8 +#define RC_GDI20_OUTPUT 0x0010 +#define RC_GDI20_STATE 0x0020 +#define RC_SAVEBITMAP 0x0040 +#define RC_DI_BITMAP 0x0080 +#define RC_PALETTE 0x0100 +#define RC_DIBTODEV 0x0200 +#define RC_BIGFONT 0x0400 +#define RC_STRETCHBLT 0x0800 +#define RC_FLOODFILL 0x1000 +#define RC_STRETCHDIB 0x2000 +#define RC_OP_DX_OUTPUT 0x4000 +#define RC_DEVBITS 0x8000 +#define SB_NONE 0x00000000 +#define SB_CONST_ALPHA 0x00000001 +#define SB_PIXEL_ALPHA 0x00000002 +#define SB_PREMULT_ALPHA 0x00000004 +#define SB_GRAD_RECT 0x00000010 +#define SB_GRAD_TRI 0x00000020 +#define CM_NONE 0x00000000 +#define CM_DEVICE_ICM 0x00000001 +#define CM_GAMMA_RAMP 0x00000002 +#define CM_CMYK_COLOR 0x00000004 +#define DIB_RGB_COLORS 0 +#define DIB_PAL_COLORS 1 +#define SYSPAL_ERROR 0 +#define SYSPAL_STATIC 1 +#define SYSPAL_NOSTATIC 2 +#define SYSPAL_NOSTATIC256 3 +#define CBM_INIT __MSABI_LONG(0x04) +#define FLOODFILLBORDER 0 +#define FLOODFILLSURFACE 1 +#define CCHDEVICENAME 32 +#define CCHFORMNAME 32 + typedef struct _devicemodeA { + BYTE dmDeviceName[32]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + __extension__ union { + __extension__ struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + }; + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + }; + }; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE dmFormName[32]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + __extension__ union { + DWORD dmDisplayFlags; + DWORD dmNup; + }; + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; + } DEVMODEA,*PDEVMODEA,*NPDEVMODEA,*LPDEVMODEA; + typedef struct _devicemodeW { + WCHAR dmDeviceName[32]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + __extension__ union { + __extension__ struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + }; + __extension__ struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + }; + }; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR dmFormName[32]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + __extension__ union { + DWORD dmDisplayFlags; + DWORD dmNup; + }; + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; + } DEVMODEW,*PDEVMODEW,*NPDEVMODEW,*LPDEVMODEW; + typedef DEVMODEA DEVMODE; + typedef PDEVMODEA PDEVMODE; + typedef NPDEVMODEA NPDEVMODE; + typedef LPDEVMODEA LPDEVMODE; +#define DM_SPECVERSION 0x0401 +#define DM_ORIENTATION __MSABI_LONG(0x00000001) +#define DM_PAPERSIZE __MSABI_LONG(0x00000002) +#define DM_PAPERLENGTH __MSABI_LONG(0x00000004) +#define DM_PAPERWIDTH __MSABI_LONG(0x00000008) +#define DM_SCALE __MSABI_LONG(0x00000010) +#define DM_POSITION __MSABI_LONG(0x00000020) +#define DM_NUP __MSABI_LONG(0x00000040) +#define DM_DISPLAYORIENTATION __MSABI_LONG(0x00000080) +#define DM_COPIES __MSABI_LONG(0x00000100) +#define DM_DEFAULTSOURCE __MSABI_LONG(0x00000200) +#define DM_PRINTQUALITY __MSABI_LONG(0x00000400) +#define DM_COLOR __MSABI_LONG(0x00000800) +#define DM_DUPLEX __MSABI_LONG(0x00001000) +#define DM_YRESOLUTION __MSABI_LONG(0x00002000) +#define DM_TTOPTION __MSABI_LONG(0x00004000) +#define DM_COLLATE __MSABI_LONG(0x00008000) +#define DM_FORMNAME __MSABI_LONG(0x00010000) +#define DM_LOGPIXELS __MSABI_LONG(0x00020000) +#define DM_BITSPERPEL __MSABI_LONG(0x00040000) +#define DM_PELSWIDTH __MSABI_LONG(0x00080000) +#define DM_PELSHEIGHT __MSABI_LONG(0x00100000) +#define DM_DISPLAYFLAGS __MSABI_LONG(0x00200000) +#define DM_DISPLAYFREQUENCY __MSABI_LONG(0x00400000) +#define DM_ICMMETHOD __MSABI_LONG(0x00800000) +#define DM_ICMINTENT __MSABI_LONG(0x01000000) +#define DM_MEDIATYPE __MSABI_LONG(0x02000000) +#define DM_DITHERTYPE __MSABI_LONG(0x04000000) +#define DM_PANNINGWIDTH __MSABI_LONG(0x08000000) +#define DM_PANNINGHEIGHT __MSABI_LONG(0x10000000) +#define DM_DISPLAYFIXEDOUTPUT __MSABI_LONG(0x20000000) +#define DMORIENT_PORTRAIT 1 +#define DMORIENT_LANDSCAPE 2 +#define DMPAPER_FIRST DMPAPER_LETTER +#define DMPAPER_LETTER 1 +#define DMPAPER_LETTERSMALL 2 +#define DMPAPER_TABLOID 3 +#define DMPAPER_LEDGER 4 +#define DMPAPER_LEGAL 5 +#define DMPAPER_STATEMENT 6 +#define DMPAPER_EXECUTIVE 7 +#define DMPAPER_A3 8 +#define DMPAPER_A4 9 +#define DMPAPER_A4SMALL 10 +#define DMPAPER_A5 11 +#define DMPAPER_B4 12 +#define DMPAPER_B5 13 +#define DMPAPER_FOLIO 14 +#define DMPAPER_QUARTO 15 +#define DMPAPER_10X14 16 +#define DMPAPER_11X17 17 +#define DMPAPER_NOTE 18 +#define DMPAPER_ENV_9 19 +#define DMPAPER_ENV_10 20 +#define DMPAPER_ENV_11 21 +#define DMPAPER_ENV_12 22 +#define DMPAPER_ENV_14 23 +#define DMPAPER_CSHEET 24 +#define DMPAPER_DSHEET 25 +#define DMPAPER_ESHEET 26 +#define DMPAPER_ENV_DL 27 +#define DMPAPER_ENV_C5 28 +#define DMPAPER_ENV_C3 29 +#define DMPAPER_ENV_C4 30 +#define DMPAPER_ENV_C6 31 +#define DMPAPER_ENV_C65 32 +#define DMPAPER_ENV_B4 33 +#define DMPAPER_ENV_B5 34 +#define DMPAPER_ENV_B6 35 +#define DMPAPER_ENV_ITALY 36 +#define DMPAPER_ENV_MONARCH 37 +#define DMPAPER_ENV_PERSONAL 38 +#define DMPAPER_FANFOLD_US 39 +#define DMPAPER_FANFOLD_STD_GERMAN 40 +#define DMPAPER_FANFOLD_LGL_GERMAN 41 +#define DMPAPER_ISO_B4 42 +#define DMPAPER_JAPANESE_POSTCARD 43 +#define DMPAPER_9X11 44 +#define DMPAPER_10X11 45 +#define DMPAPER_15X11 46 +#define DMPAPER_ENV_INVITE 47 +#define DMPAPER_RESERVED_48 48 +#define DMPAPER_RESERVED_49 49 +#define DMPAPER_LETTER_EXTRA 50 +#define DMPAPER_LEGAL_EXTRA 51 +#define DMPAPER_TABLOID_EXTRA 52 +#define DMPAPER_A4_EXTRA 53 +#define DMPAPER_LETTER_TRANSVERSE 54 +#define DMPAPER_A4_TRANSVERSE 55 +#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56 +#define DMPAPER_A_PLUS 57 +#define DMPAPER_B_PLUS 58 +#define DMPAPER_LETTER_PLUS 59 +#define DMPAPER_A4_PLUS 60 +#define DMPAPER_A5_TRANSVERSE 61 +#define DMPAPER_B5_TRANSVERSE 62 +#define DMPAPER_A3_EXTRA 63 +#define DMPAPER_A5_EXTRA 64 +#define DMPAPER_B5_EXTRA 65 +#define DMPAPER_A2 66 +#define DMPAPER_A3_TRANSVERSE 67 +#define DMPAPER_A3_EXTRA_TRANSVERSE 68 +#define DMPAPER_DBL_JAPANESE_POSTCARD 69 +#define DMPAPER_A6 70 +#define DMPAPER_JENV_KAKU2 71 +#define DMPAPER_JENV_KAKU3 72 +#define DMPAPER_JENV_CHOU3 73 +#define DMPAPER_JENV_CHOU4 74 +#define DMPAPER_LETTER_ROTATED 75 +#define DMPAPER_A3_ROTATED 76 +#define DMPAPER_A4_ROTATED 77 +#define DMPAPER_A5_ROTATED 78 +#define DMPAPER_B4_JIS_ROTATED 79 +#define DMPAPER_B5_JIS_ROTATED 80 +#define DMPAPER_JAPANESE_POSTCARD_ROTATED 81 +#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82 +#define DMPAPER_A6_ROTATED 83 +#define DMPAPER_JENV_KAKU2_ROTATED 84 +#define DMPAPER_JENV_KAKU3_ROTATED 85 +#define DMPAPER_JENV_CHOU3_ROTATED 86 +#define DMPAPER_JENV_CHOU4_ROTATED 87 +#define DMPAPER_B6_JIS 88 +#define DMPAPER_B6_JIS_ROTATED 89 +#define DMPAPER_12X11 90 +#define DMPAPER_JENV_YOU4 91 +#define DMPAPER_JENV_YOU4_ROTATED 92 +#define DMPAPER_P16K 93 +#define DMPAPER_P32K 94 +#define DMPAPER_P32KBIG 95 +#define DMPAPER_PENV_1 96 +#define DMPAPER_PENV_2 97 +#define DMPAPER_PENV_3 98 +#define DMPAPER_PENV_4 99 +#define DMPAPER_PENV_5 100 +#define DMPAPER_PENV_6 101 +#define DMPAPER_PENV_7 102 +#define DMPAPER_PENV_8 103 +#define DMPAPER_PENV_9 104 +#define DMPAPER_PENV_10 105 +#define DMPAPER_P16K_ROTATED 106 +#define DMPAPER_P32K_ROTATED 107 +#define DMPAPER_P32KBIG_ROTATED 108 +#define DMPAPER_PENV_1_ROTATED 109 +#define DMPAPER_PENV_2_ROTATED 110 +#define DMPAPER_PENV_3_ROTATED 111 +#define DMPAPER_PENV_4_ROTATED 112 +#define DMPAPER_PENV_5_ROTATED 113 +#define DMPAPER_PENV_6_ROTATED 114 +#define DMPAPER_PENV_7_ROTATED 115 +#define DMPAPER_PENV_8_ROTATED 116 +#define DMPAPER_PENV_9_ROTATED 117 +#define DMPAPER_PENV_10_ROTATED 118 +#define DMPAPER_LAST DMPAPER_PENV_10_ROTATED +#define DMPAPER_USER 256 +#define DMBIN_FIRST DMBIN_UPPER +#define DMBIN_UPPER 1 +#define DMBIN_ONLYONE 1 +#define DMBIN_LOWER 2 +#define DMBIN_MIDDLE 3 +#define DMBIN_MANUAL 4 +#define DMBIN_ENVELOPE 5 +#define DMBIN_ENVMANUAL 6 +#define DMBIN_AUTO 7 +#define DMBIN_TRACTOR 8 +#define DMBIN_SMALLFMT 9 +#define DMBIN_LARGEFMT 10 +#define DMBIN_LARGECAPACITY 11 +#define DMBIN_CASSETTE 14 +#define DMBIN_FORMSOURCE 15 +#define DMBIN_LAST DMBIN_FORMSOURCE +#define DMBIN_USER 256 +#define DMRES_DRAFT (-1) +#define DMRES_LOW (-2) +#define DMRES_MEDIUM (-3) +#define DMRES_HIGH (-4) +#define DMCOLOR_MONOCHROME 1 +#define DMCOLOR_COLOR 2 +#define DMDUP_SIMPLEX 1 +#define DMDUP_VERTICAL 2 +#define DMDUP_HORIZONTAL 3 +#define DMTT_BITMAP 1 +#define DMTT_DOWNLOAD 2 +#define DMTT_SUBDEV 3 +#define DMTT_DOWNLOAD_OUTLINE 4 +#define DMCOLLATE_FALSE 0 +#define DMCOLLATE_TRUE 1 +#define DMDO_DEFAULT 0 +#define DMDO_90 1 +#define DMDO_180 2 +#define DMDO_270 3 +#define DMDFO_DEFAULT 0 +#define DMDFO_STRETCH 1 +#define DMDFO_CENTER 2 +#define DM_INTERLACED 0x00000002 +#define DMDISPLAYFLAGS_TEXTMODE 0x00000004 +#define DMNUP_SYSTEM 1 +#define DMNUP_ONEUP 2 +#define DMICMMETHOD_NONE 1 +#define DMICMMETHOD_SYSTEM 2 +#define DMICMMETHOD_DRIVER 3 +#define DMICMMETHOD_DEVICE 4 +#define DMICMMETHOD_USER 256 +#define DMICM_SATURATE 1 +#define DMICM_CONTRAST 2 +#define DMICM_COLORIMETRIC 3 +#define DMICM_ABS_COLORIMETRIC 4 +#define DMICM_USER 256 +#define DMMEDIA_STANDARD 1 +#define DMMEDIA_TRANSPARENCY 2 +#define DMMEDIA_GLOSSY 3 +#define DMMEDIA_USER 256 +#define DMDITHER_NONE 1 +#define DMDITHER_COARSE 2 +#define DMDITHER_FINE 3 +#define DMDITHER_LINEART 4 +#define DMDITHER_ERRORDIFFUSION 5 +#define DMDITHER_RESERVED6 6 +#define DMDITHER_RESERVED7 7 +#define DMDITHER_RESERVED8 8 +#define DMDITHER_RESERVED9 9 +#define DMDITHER_GRAYSCALE 10 +#define DMDITHER_USER 256 + typedef struct _DISPLAY_DEVICEA { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD StateFlags; + CHAR DeviceID[128]; + CHAR DeviceKey[128]; + } DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA; + typedef struct _DISPLAY_DEVICEW { + DWORD cb; + WCHAR DeviceName[32]; + WCHAR DeviceString[128]; + DWORD StateFlags; + WCHAR DeviceID[128]; + WCHAR DeviceKey[128]; + } DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW; + typedef DISPLAY_DEVICEA DISPLAY_DEVICE; + typedef PDISPLAY_DEVICEA PDISPLAY_DEVICE; + typedef LPDISPLAY_DEVICEA LPDISPLAY_DEVICE; +#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001 +#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002 +#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004 +#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008 +#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010 +#define DISPLAY_DEVICE_REMOVABLE 0x00000020 +#define DISPLAY_DEVICE_TS_COMPATIBLE 0x00200000 +#define DISPLAY_DEVICE_UNSAFE_MODES_ON 0x00080000 +#define DISPLAY_DEVICE_MODESPRUNED 0x08000000 +#define DISPLAY_DEVICE_RDPUDD 0x01000000 +#define DISPLAY_DEVICE_REMOTE 0x04000000 +#define DISPLAY_DEVICE_DISCONNECT 0x02000000 +#define DISPLAY_DEVICE_ACTIVE 0x00000001 +#define DISPLAY_DEVICE_ATTACHED 0x00000002 +#define RDH_RECTANGLES 1 + typedef struct _RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; + } RGNDATAHEADER,*PRGNDATAHEADER; + typedef struct _RGNDATA { + RGNDATAHEADER rdh; + char Buffer[1]; + } RGNDATA,*PRGNDATA,*NPRGNDATA,*LPRGNDATA; +#define SYSRGN 4 + typedef struct _ABC { + int abcA; + UINT abcB; + int abcC; + } ABC,*PABC,*NPABC,*LPABC; + typedef struct _ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; + } ABCFLOAT,*PABCFLOAT,*NPABCFLOAT,*LPABCFLOAT; + typedef struct _OUTLINETEXTMETRICA { + UINT otmSize; + TEXTMETRICA otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; + } OUTLINETEXTMETRICA,*POUTLINETEXTMETRICA,*NPOUTLINETEXTMETRICA,*LPOUTLINETEXTMETRICA; + typedef struct _OUTLINETEXTMETRICW { + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; + } OUTLINETEXTMETRICW,*POUTLINETEXTMETRICW,*NPOUTLINETEXTMETRICW,*LPOUTLINETEXTMETRICW; + typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC; + typedef POUTLINETEXTMETRICA POUTLINETEXTMETRIC; + typedef NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC; + typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC; + typedef struct tagPOLYTEXTA { + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; + } POLYTEXTA,*PPOLYTEXTA,*NPPOLYTEXTA,*LPPOLYTEXTA; + typedef struct tagPOLYTEXTW { + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; + } POLYTEXTW,*PPOLYTEXTW,*NPPOLYTEXTW,*LPPOLYTEXTW; + typedef POLYTEXTA POLYTEXT; + typedef PPOLYTEXTA PPOLYTEXT; + typedef NPPOLYTEXTA NPPOLYTEXT; + typedef LPPOLYTEXTA LPPOLYTEXT; + typedef struct _FIXED { + WORD fract; + short value; + } FIXED; + typedef struct _MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; + } MAT2,*LPMAT2; + typedef struct _GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; + } GLYPHMETRICS,*LPGLYPHMETRICS; +#define GGO_METRICS 0 +#define GGO_BITMAP 1 +#define GGO_NATIVE 2 +#define GGO_BEZIER 3 +#define GGO_GRAY2_BITMAP 4 +#define GGO_GRAY4_BITMAP 5 +#define GGO_GRAY8_BITMAP 6 +#define GGO_GLYPH_INDEX 0x0080 +#define GGO_UNHINTED 0x0100 +#define TT_POLYGON_TYPE 24 +#define TT_PRIM_LINE 1 +#define TT_PRIM_QSPLINE 2 +#define TT_PRIM_CSPLINE 3 + typedef struct tagPOINTFX { + FIXED x; + FIXED y; + } POINTFX,*LPPOINTFX; + typedef struct tagTTPOLYCURVE { + WORD wType; + WORD cpfx; + POINTFX apfx[1]; + } TTPOLYCURVE,*LPTTPOLYCURVE; + typedef struct tagTTPOLYGONHEADER { + DWORD cb; + DWORD dwType; + POINTFX pfxStart; + } TTPOLYGONHEADER,*LPTTPOLYGONHEADER; +#define GCP_DBCS 0x0001 +#define GCP_REORDER 0x0002 +#define GCP_USEKERNING 0x0008 +#define GCP_GLYPHSHAPE 0x0010 +#define GCP_LIGATE 0x0020 +#define GCP_DIACRITIC 0x0100 +#define GCP_KASHIDA 0x0400 +#define GCP_ERROR 0x8000 +#define FLI_MASK 0x103B +#define GCP_JUSTIFY __MSABI_LONG(0x00010000) +#define FLI_GLYPHS __MSABI_LONG(0x00040000) +#define GCP_CLASSIN __MSABI_LONG(0x00080000) +#define GCP_MAXEXTENT __MSABI_LONG(0x00100000) +#define GCP_JUSTIFYIN __MSABI_LONG(0x00200000) +#define GCP_DISPLAYZWG __MSABI_LONG(0x00400000) +#define GCP_SYMSWAPOFF __MSABI_LONG(0x00800000) +#define GCP_NUMERICOVERRIDE __MSABI_LONG(0x01000000) +#define GCP_NEUTRALOVERRIDE __MSABI_LONG(0x02000000) +#define GCP_NUMERICSLATIN __MSABI_LONG(0x04000000) +#define GCP_NUMERICSLOCAL __MSABI_LONG(0x08000000) +#define GCPCLASS_LATIN 1 +#define GCPCLASS_HEBREW 2 +#define GCPCLASS_ARABIC 2 +#define GCPCLASS_NEUTRAL 3 +#define GCPCLASS_LOCALNUMBER 4 +#define GCPCLASS_LATINNUMBER 5 +#define GCPCLASS_LATINNUMERICTERMINATOR 6 +#define GCPCLASS_LATINNUMERICSEPARATOR 7 +#define GCPCLASS_NUMERICSEPARATOR 8 +#define GCPCLASS_PREBOUNDLTR 0x80 +#define GCPCLASS_PREBOUNDRTL 0x40 +#define GCPCLASS_POSTBOUNDLTR 0x20 +#define GCPCLASS_POSTBOUNDRTL 0x10 +#define GCPGLYPH_LINKBEFORE 0x8000 +#define GCPGLYPH_LINKAFTER 0x4000 + typedef struct tagGCP_RESULTSA { + DWORD lStructSize; + LPSTR lpOutString; + UINT *lpOrder; + int *lpDx; + int *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + int nMaxFit; + } GCP_RESULTSA,*LPGCP_RESULTSA; + typedef struct tagGCP_RESULTSW { + DWORD lStructSize; + LPWSTR lpOutString; + UINT *lpOrder; + int *lpDx; + int *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + int nMaxFit; + } GCP_RESULTSW,*LPGCP_RESULTSW; + typedef GCP_RESULTSA GCP_RESULTS; + typedef LPGCP_RESULTSA LPGCP_RESULTS; + typedef struct _RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; + } RASTERIZER_STATUS,*LPRASTERIZER_STATUS; +#define TT_AVAILABLE 0x0001 +#define TT_ENABLED 0x0002 + typedef struct tagPIXELFORMATDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + DWORD dwLayerMask; + DWORD dwVisibleMask; + DWORD dwDamageMask; + } PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR; +#define PFD_TYPE_RGBA 0 +#define PFD_TYPE_COLORINDEX 1 +#define PFD_MAIN_PLANE 0 +#define PFD_OVERLAY_PLANE 1 +#define PFD_UNDERLAY_PLANE (-1) +#define PFD_DOUBLEBUFFER 0x00000001 +#define PFD_STEREO 0x00000002 +#define PFD_DRAW_TO_WINDOW 0x00000004 +#define PFD_DRAW_TO_BITMAP 0x00000008 +#define PFD_SUPPORT_GDI 0x00000010 +#define PFD_SUPPORT_OPENGL 0x00000020 +#define PFD_GENERIC_FORMAT 0x00000040 +#define PFD_NEED_PALETTE 0x00000080 +#define PFD_NEED_SYSTEM_PALETTE 0x00000100 +#define PFD_SWAP_EXCHANGE 0x00000200 +#define PFD_SWAP_COPY 0x00000400 +#define PFD_SWAP_LAYER_BUFFERS 0x00000800 +#define PFD_GENERIC_ACCELERATED 0x00001000 +#define PFD_SUPPORT_DIRECTDRAW 0x00002000 +#define PFD_DIRECT3D_ACCELERATED 0x00004000 +#define PFD_SUPPORT_COMPOSITION 0x00008000 +#define PFD_DEPTH_DONTCARE 0x20000000 +#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000 +#define PFD_STEREO_DONTCARE 0x80000000 + typedef int (__attribute__((__stdcall__)) *OLDFONTENUMPROCA)(const LOGFONTA *,const TEXTMETRICA *,DWORD,LPARAM); + typedef int (__attribute__((__stdcall__)) *OLDFONTENUMPROCW)(const LOGFONTW *,const TEXTMETRICW *,DWORD,LPARAM); +#define OLDFONTENUMPROC __MINGW_NAME_AW(OLDFONTENUMPROC) + typedef OLDFONTENUMPROCA FONTENUMPROCA; + typedef OLDFONTENUMPROCW FONTENUMPROCW; + typedef FONTENUMPROCA FONTENUMPROC; + typedef int (__attribute__((__stdcall__)) *GOBJENUMPROC)(LPVOID,LPARAM); + typedef void (__attribute__((__stdcall__)) *LINEDDAPROC)(int,int,LPARAM); +#define AddFontResource __MINGW_NAME_AW(AddFontResource) +#define CopyMetaFile __MINGW_NAME_AW(CopyMetaFile) +#define CreateDC __MINGW_NAME_AW(CreateDC) +#define CreateFontIndirect __MINGW_NAME_AW(CreateFontIndirect) +#define CreateFont __MINGW_NAME_AW(CreateFont) +#define CreateIC __MINGW_NAME_AW(CreateIC) +#define CreateMetaFile __MINGW_NAME_AW(CreateMetaFile) +#define CreateScalableFontResource __MINGW_NAME_AW(CreateScalableFontResource) + __declspec (dllimport) int __attribute__((__stdcall__)) AddFontResourceA(LPCSTR); + __declspec (dllimport) int __attribute__((__stdcall__)) AddFontResourceW(LPCWSTR); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AnimatePalette(HPALETTE hPal,UINT iStartIndex,UINT cEntries,const PALETTEENTRY *ppe); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Arc(HDC hdc,int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BitBlt(HDC hdc,int x,int y,int cx,int cy,HDC hdcSrc,int x1,int y1,DWORD rop); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelDC(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Chord(HDC hdc,int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4); + __declspec (dllimport) int __attribute__((__stdcall__)) ChoosePixelFormat(HDC hdc,const PIXELFORMATDESCRIPTOR *ppfd); + __declspec (dllimport) HMETAFILE __attribute__((__stdcall__)) CloseMetaFile(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) CombineRgn(HRGN hrgnDst,HRGN hrgnSrc1,HRGN hrgnSrc2,int iMode); + __declspec (dllimport) HMETAFILE __attribute__((__stdcall__)) CopyMetaFileA(HMETAFILE,LPCSTR); + __declspec (dllimport) HMETAFILE __attribute__((__stdcall__)) CopyMetaFileW(HMETAFILE,LPCWSTR); + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) CreateBitmap(int nWidth,int nHeight,UINT nPlanes,UINT nBitCount,const void *lpBits); + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) CreateBitmapIndirect(const BITMAP *pbm); + __declspec (dllimport) HBRUSH __attribute__((__stdcall__)) CreateBrushIndirect(const LOGBRUSH *plbrush); + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) CreateCompatibleBitmap(HDC hdc,int cx,int cy); + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) CreateDiscardableBitmap(HDC hdc,int cx,int cy); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateCompatibleDC(HDC hdc); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateDCA(LPCSTR pwszDriver,LPCSTR pwszDevice,LPCSTR pszPort,const DEVMODEA *pdm); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateDCW(LPCWSTR pwszDriver,LPCWSTR pwszDevice,LPCWSTR pszPort,const DEVMODEW *pdm); + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) CreateDIBitmap(HDC hdc,const BITMAPINFOHEADER *pbmih,DWORD flInit,const void *pjBits,const BITMAPINFO *pbmi,UINT iUsage); + __declspec (dllimport) HBRUSH __attribute__((__stdcall__)) CreateDIBPatternBrush(HGLOBAL h,UINT iUsage); + __declspec (dllimport) HBRUSH __attribute__((__stdcall__)) CreateDIBPatternBrushPt(const void *lpPackedDIB,UINT iUsage); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) CreateEllipticRgn(int x1,int y1,int x2,int y2); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) CreateEllipticRgnIndirect(const RECT *lprect); + __declspec (dllimport) HFONT __attribute__((__stdcall__)) CreateFontIndirectA(const LOGFONTA *lplf); + __declspec (dllimport) HFONT __attribute__((__stdcall__)) CreateFontIndirectW(const LOGFONTW *lplf); + __declspec (dllimport) HFONT __attribute__((__stdcall__)) CreateFontA(int cHeight,int cWidth,int cEscapement,int cOrientation,int cWeight,DWORD bItalic,DWORD bUnderline,DWORD bStrikeOut,DWORD iCharSet,DWORD iOutPrecision,DWORD iClipPrecision,DWORD iQuality,DWORD iPitchAndFamily,LPCSTR pszFaceName); + __declspec (dllimport) HFONT __attribute__((__stdcall__)) CreateFontW(int cHeight,int cWidth,int cEscapement,int cOrientation,int cWeight,DWORD bItalic,DWORD bUnderline,DWORD bStrikeOut,DWORD iCharSet,DWORD iOutPrecision,DWORD iClipPrecision,DWORD iQuality,DWORD iPitchAndFamily,LPCWSTR pszFaceName); + __declspec (dllimport) HBRUSH __attribute__((__stdcall__)) CreateHatchBrush(int iHatch,COLORREF color); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateICA(LPCSTR pszDriver,LPCSTR pszDevice,LPCSTR pszPort,const DEVMODEA *pdm); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateICW(LPCWSTR pszDriver,LPCWSTR pszDevice,LPCWSTR pszPort,const DEVMODEW *pdm); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateMetaFileA(LPCSTR pszFile); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateMetaFileW(LPCWSTR pszFile); + __declspec (dllimport) HPALETTE __attribute__((__stdcall__)) CreatePalette(const LOGPALETTE *plpal); + __declspec (dllimport) HPEN __attribute__((__stdcall__)) CreatePen(int iStyle,int cWidth,COLORREF color); + __declspec (dllimport) HPEN __attribute__((__stdcall__)) CreatePenIndirect(const LOGPEN *plpen); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) CreatePolyPolygonRgn(const POINT *pptl,const INT *pc,int cPoly,int iMode); + __declspec (dllimport) HBRUSH __attribute__((__stdcall__)) CreatePatternBrush(HBITMAP hbm); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) CreateRectRgn(int x1,int y1,int x2,int y2); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) CreateRectRgnIndirect(const RECT *lprect); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) CreateRoundRectRgn(int x1,int y1,int x2,int y2,int w,int h); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateScalableFontResourceA(DWORD fdwHidden,LPCSTR lpszFont,LPCSTR lpszFile,LPCSTR lpszPath); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateScalableFontResourceW(DWORD fdwHidden,LPCWSTR lpszFont,LPCWSTR lpszFile,LPCWSTR lpszPath); + __declspec (dllimport) HBRUSH __attribute__((__stdcall__)) CreateSolidBrush(COLORREF color); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteDC(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteMetaFile(HMETAFILE hmf); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteObject(HGDIOBJ ho); + __declspec (dllimport) int __attribute__((__stdcall__)) DescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,LPPIXELFORMATDESCRIPTOR ppfd); + typedef UINT (__attribute__((__stdcall__)) *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODE,LPSTR,LPSTR,LPDEVMODE,LPSTR,UINT); + typedef DWORD (__attribute__((__stdcall__)) *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODE); +#define DM_UPDATE 1 +#define DM_COPY 2 +#define DM_PROMPT 4 +#define DM_MODIFY 8 +#define DM_IN_BUFFER DM_MODIFY +#define DM_IN_PROMPT DM_PROMPT +#define DM_OUT_BUFFER DM_COPY +#define DM_OUT_DEFAULT DM_UPDATE +#define DC_FIELDS 1 +#define DC_PAPERS 2 +#define DC_PAPERSIZE 3 +#define DC_MINEXTENT 4 +#define DC_MAXEXTENT 5 +#define DC_BINS 6 +#define DC_DUPLEX 7 +#define DC_SIZE 8 +#define DC_EXTRA 9 +#define DC_VERSION 10 +#define DC_DRIVER 11 +#define DC_BINNAMES 12 +#define DC_ENUMRESOLUTIONS 13 +#define DC_FILEDEPENDENCIES 14 +#define DC_TRUETYPE 15 +#define DC_PAPERNAMES 16 +#define DC_ORIENTATION 17 +#define DC_COPIES 18 +#define DC_BINADJUST 19 +#define DC_EMF_COMPLIANT 20 +#define DC_DATATYPE_PRODUCED 21 +#define DC_COLLATE 22 +#define DC_MANUFACTURER 23 +#define DC_MODEL 24 +#define DC_PERSONALITY 25 +#define DC_PRINTRATE 26 +#define DC_PRINTRATEUNIT 27 +#define PRINTRATEUNIT_PPM 1 +#define PRINTRATEUNIT_CPS 2 +#define PRINTRATEUNIT_LPM 3 +#define PRINTRATEUNIT_IPM 4 +#define DC_PRINTERMEM 28 +#define DC_MEDIAREADY 29 +#define DC_STAPLE 30 +#define DC_PRINTRATEPPM 31 +#define DC_COLORDEVICE 32 +#define DC_NUP 33 +#define DC_MEDIATYPENAMES 34 +#define DC_MEDIATYPES 35 +#define DCTT_BITMAP __MSABI_LONG(0x0000001) +#define DCTT_DOWNLOAD __MSABI_LONG(0x0000002) +#define DCTT_SUBDEV __MSABI_LONG(0x0000004) +#define DCTT_DOWNLOAD_OUTLINE __MSABI_LONG(0x0000008) +#define DCBA_FACEUPNONE 0x0000 +#define DCBA_FACEUPCENTER 0x0001 +#define DCBA_FACEUPLEFT 0x0002 +#define DCBA_FACEUPRIGHT 0x0003 +#define DCBA_FACEDOWNNONE 0x0100 +#define DCBA_FACEDOWNCENTER 0x0101 +#define DCBA_FACEDOWNLEFT 0x0102 +#define DCBA_FACEDOWNRIGHT 0x0103 +#define DeviceCapabilities __MINGW_NAME_AW(DeviceCapabilities) +#define EnumFontFamiliesEx __MINGW_NAME_AW(EnumFontFamiliesEx) +#define EnumFontFamilies __MINGW_NAME_AW(EnumFontFamilies) +#define EnumFonts __MINGW_NAME_AW(EnumFonts) +#define GetCharWidth __MINGW_NAME_AW(GetCharWidth) +#define GetCharWidth32 __MINGW_NAME_AW(GetCharWidth32) +#define GetCharWidthFloat __MINGW_NAME_AW(GetCharWidthFloat) +#define GetCharABCWidths __MINGW_NAME_AW(GetCharABCWidths) +#define GetCharABCWidthsFloat __MINGW_NAME_AW(GetCharABCWidthsFloat) +#define GetGlyphOutline __MINGW_NAME_AW(GetGlyphOutline) +#define GetMetaFile __MINGW_NAME_AW(GetMetaFile) + __declspec (dllimport) int __attribute__((__stdcall__)) DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,LPSTR pOutput,const DEVMODEA *pDevMode); + __declspec (dllimport) int __attribute__((__stdcall__)) DeviceCapabilitiesW(LPCWSTR pDevice,LPCWSTR pPort,WORD fwCapability,LPWSTR pOutput,const DEVMODEW *pDevMode); + __declspec (dllimport) int __attribute__((__stdcall__)) DrawEscape(HDC hdc,int iEscape,int cjIn,LPCSTR lpIn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Ellipse(HDC hdc,int left,int top,int right,int bottom); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumFontFamiliesExA(HDC hdc,LPLOGFONTA lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam,DWORD dwFlags); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumFontFamiliesExW(HDC hdc,LPLOGFONTW lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam,DWORD dwFlags); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumFontFamiliesA(HDC hdc,LPCSTR lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumFontFamiliesW(HDC hdc,LPCWSTR lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumFontsA(HDC hdc,LPCSTR lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumFontsW(HDC hdc,LPCWSTR lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumObjects(HDC hdc,int nType,GOBJENUMPROC lpFunc,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EqualRgn(HRGN hrgn1,HRGN hrgn2); + __declspec (dllimport) int __attribute__((__stdcall__)) Escape(HDC hdc,int iEscape,int cjIn,LPCSTR pvIn,LPVOID pvOut); + __declspec (dllimport) int __attribute__((__stdcall__)) ExtEscape(HDC hdc,int iEscape,int cjInput,LPCSTR lpInData,int cjOutput,LPSTR lpOutData); + __declspec (dllimport) int __attribute__((__stdcall__)) ExcludeClipRect(HDC hdc,int left,int top,int right,int bottom); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) ExtCreateRegion(const XFORM *lpx,DWORD nCount,const RGNDATA *lpData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ExtFloodFill(HDC hdc,int x,int y,COLORREF color,UINT type); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FillRgn(HDC hdc,HRGN hrgn,HBRUSH hbr); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FloodFill(HDC hdc,int x,int y,COLORREF color); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FrameRgn(HDC hdc,HRGN hrgn,HBRUSH hbr,int w,int h); + __declspec (dllimport) int __attribute__((__stdcall__)) GetROP2(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetAspectRatioFilterEx(HDC hdc,LPSIZE lpsize); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) GetBkColor(HDC hdc); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) GetDCBrushColor(HDC hdc); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) GetDCPenColor(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) GetBkMode(HDC hdc); + __declspec (dllimport) LONG __attribute__((__stdcall__)) GetBitmapBits(HBITMAP hbit,LONG cb,LPVOID lpvBits); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetBitmapDimensionEx(HBITMAP hbit,LPSIZE lpsize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetBoundsRect(HDC hdc,LPRECT lprect,UINT flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetBrushOrgEx(HDC hdc,LPPOINT lppt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharWidthA(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharWidthW(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharWidth32A(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharWidth32W(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharWidthFloatA(HDC hdc,UINT iFirst,UINT iLast,PFLOAT lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharWidthFloatW(HDC hdc,UINT iFirst,UINT iLast,PFLOAT lpBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsA(HDC hdc,UINT wFirst,UINT wLast,LPABC lpABC); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsW(HDC hdc,UINT wFirst,UINT wLast,LPABC lpABC); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsFloatA(HDC hdc,UINT iFirst,UINT iLast,LPABCFLOAT lpABC); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsFloatW(HDC hdc,UINT iFirst,UINT iLast,LPABCFLOAT lpABC); + __declspec (dllimport) int __attribute__((__stdcall__)) GetClipBox(HDC hdc,LPRECT lprect); + __declspec (dllimport) int __attribute__((__stdcall__)) GetClipRgn(HDC hdc,HRGN hrgn); + __declspec (dllimport) int __attribute__((__stdcall__)) GetMetaRgn(HDC hdc,HRGN hrgn); + __declspec (dllimport) HGDIOBJ __attribute__((__stdcall__)) GetCurrentObject(HDC hdc,UINT type); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCurrentPositionEx(HDC hdc,LPPOINT lppt); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDeviceCaps(HDC hdc,int index); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,LPVOID lpvBits,LPBITMAPINFO lpbmi,UINT usage); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFontData (HDC hdc,DWORD dwTable,DWORD dwOffset,PVOID pvBuffer,DWORD cjBuffer); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetGlyphOutlineA(HDC hdc,UINT uChar,UINT fuFormat,LPGLYPHMETRICS lpgm,DWORD cjBuffer,LPVOID pvBuffer,const MAT2 *lpmat2); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetGlyphOutlineW(HDC hdc,UINT uChar,UINT fuFormat,LPGLYPHMETRICS lpgm,DWORD cjBuffer,LPVOID pvBuffer,const MAT2 *lpmat2); + __declspec (dllimport) int __attribute__((__stdcall__)) GetGraphicsMode(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) GetMapMode(HDC hdc); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetMetaFileBitsEx(HMETAFILE hMF,UINT cbBuffer,LPVOID lpData); + __declspec (dllimport) HMETAFILE __attribute__((__stdcall__)) GetMetaFileA(LPCSTR lpName); + __declspec (dllimport) HMETAFILE __attribute__((__stdcall__)) GetMetaFileW(LPCWSTR lpName); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) GetNearestColor(HDC hdc,COLORREF color); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetNearestPaletteIndex(HPALETTE h,COLORREF color); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetObjectType(HGDIOBJ h); +#define GetOutlineTextMetrics __MINGW_NAME_AW(GetOutlineTextMetrics) + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetOutlineTextMetricsA(HDC hdc,UINT cjCopy,LPOUTLINETEXTMETRICA potm); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetOutlineTextMetricsW(HDC hdc,UINT cjCopy,LPOUTLINETEXTMETRICW potm); +#define GetTextExtentPoint __MINGW_NAME_AW(GetTextExtentPoint) +#define GetTextExtentPoint32 __MINGW_NAME_AW(GetTextExtentPoint32) +#define GetTextExtentExPoint __MINGW_NAME_AW(GetTextExtentExPoint) +#define GetCharacterPlacement __MINGW_NAME_AW(GetCharacterPlacement) + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,LPPALETTEENTRY pPalEntries); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) GetPixel(HDC hdc,int x,int y); + __declspec (dllimport) int __attribute__((__stdcall__)) GetPixelFormat(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) GetPolyFillMode(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetRasterizerCaps(LPRASTERIZER_STATUS lpraststat,UINT cjBytes); + __declspec (dllimport) int __attribute__((__stdcall__)) GetRandomRgn (HDC hdc,HRGN hrgn,INT i); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetRegionData(HRGN hrgn,DWORD nCount,LPRGNDATA lpRgnData); + __declspec (dllimport) int __attribute__((__stdcall__)) GetRgnBox(HRGN hrgn,LPRECT lprc); + __declspec (dllimport) HGDIOBJ __attribute__((__stdcall__)) GetStockObject(int i); + __declspec (dllimport) int __attribute__((__stdcall__)) GetStretchBltMode(HDC hdc); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemPaletteEntries(HDC hdc,UINT iStart,UINT cEntries,LPPALETTEENTRY pPalEntries); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetSystemPaletteUse(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) GetTextCharacterExtra(HDC hdc); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetTextAlign(HDC hdc); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) GetTextColor(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentPointA(HDC hdc,LPCSTR lpString,int c,LPSIZE lpsz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentPointW(HDC hdc,LPCWSTR lpString,int c,LPSIZE lpsz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentPoint32A(HDC hdc,LPCSTR lpString,int c,LPSIZE psizl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentPoint32W(HDC hdc,LPCWSTR lpString,int c,LPSIZE psizl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentExPointA(HDC hdc,LPCSTR lpszString,int cchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentExPointW(HDC hdc,LPCWSTR lpszString,int cchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize); + __declspec (dllimport) int __attribute__((__stdcall__)) GetTextCharset(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) GetTextCharsetInfo(HDC hdc,LPFONTSIGNATURE lpSig,DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TranslateCharsetInfo(DWORD *lpSrc,LPCHARSETINFO lpCs,DWORD dwFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFontLanguageInfo(HDC hdc); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCharacterPlacementA(HDC hdc,LPCSTR lpString,int nCount,int nMexExtent,LPGCP_RESULTSA lpResults,DWORD dwFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetCharacterPlacementW(HDC hdc,LPCWSTR lpString,int nCount,int nMexExtent,LPGCP_RESULTSW lpResults,DWORD dwFlags); + typedef struct tagWCRANGE { + WCHAR wcLow; + USHORT cGlyphs; + } WCRANGE,*PWCRANGE,*LPWCRANGE; + typedef struct tagGLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE ranges[1]; + } GLYPHSET,*PGLYPHSET,*LPGLYPHSET; +#define GS_8BIT_INDICES 0x00000001 +#define GGI_MARK_NONEXISTING_GLYPHS 0X0001 +#define GetGlyphIndices __MINGW_NAME_AW(GetGlyphIndices) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetFontUnicodeRanges(HDC hdc,LPGLYPHSET lpgs); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetGlyphIndicesA(HDC hdc,LPCSTR lpstr,int c,LPWORD pgi,DWORD fl); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetGlyphIndicesW(HDC hdc,LPCWSTR lpstr,int c,LPWORD pgi,DWORD fl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentPointI(HDC hdc,LPWORD pgiIn,int cgi,LPSIZE psize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextExtentExPointI (HDC hdc,LPWORD lpwszString,int cwchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharWidthI(HDC hdc,UINT giFirst,UINT cgi,LPWORD pgi,LPINT piWidths); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsI(HDC hdc,UINT giFirst,UINT cgi,LPWORD pgi,LPABC pabc); +#define STAMP_DESIGNVECTOR (0x8000000 + 'd' + ('v' << 8)) +#define STAMP_AXESLIST (0x8000000 + 'a' + ('l' << 8)) +#define STAMP_TRUETYPE_VARIATION (0x8000000 + 't' + ('v' << 8)) +#define STAMP_CFF2 (0x8000000 + 'c' + ('v' << 8)) +#define MM_MAX_NUMAXES 16 + typedef struct tagDESIGNVECTOR { + DWORD dvReserved; + DWORD dvNumAxes; + LONG dvValues[16]; + } DESIGNVECTOR,*PDESIGNVECTOR,*LPDESIGNVECTOR; +#define AddFontResourceEx __MINGW_NAME_AW(AddFontResourceEx) +#define RemoveFontResourceEx __MINGW_NAME_AW(RemoveFontResourceEx) + __declspec (dllimport) int __attribute__((__stdcall__)) AddFontResourceExA(LPCSTR name,DWORD fl,PVOID res); + __declspec (dllimport) int __attribute__((__stdcall__)) AddFontResourceExW(LPCWSTR name,DWORD fl,PVOID res); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceExA(LPCSTR name,DWORD fl,PVOID pdv); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceExW(LPCWSTR name,DWORD fl,PVOID pdv); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) AddFontMemResourceEx(PVOID pFileView,DWORD cjSize,PVOID pvResrved,DWORD *pNumFonts); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveFontMemResourceEx(HANDLE h); +#define FR_PRIVATE 0x10 +#define FR_NOT_ENUM 0x20 +#define MM_MAX_AXES_NAMELEN 16 + typedef struct tagAXISINFOA { + LONG axMinValue; + LONG axMaxValue; + BYTE axAxisName[16]; + } AXISINFOA,*PAXISINFOA,*LPAXISINFOA; + typedef struct tagAXISINFOW { + LONG axMinValue; + LONG axMaxValue; + WCHAR axAxisName[16]; + } AXISINFOW,*PAXISINFOW,*LPAXISINFOW; + typedef AXISINFOA AXISINFO; + typedef PAXISINFOA PAXISINFO; + typedef LPAXISINFOA LPAXISINFO; + typedef struct tagAXESLISTA { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOA axlAxisInfo[16]; + } AXESLISTA,*PAXESLISTA,*LPAXESLISTA; + typedef struct tagAXESLISTW { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOW axlAxisInfo[16]; + } AXESLISTW,*PAXESLISTW,*LPAXESLISTW; + typedef AXESLISTA AXESLIST; + typedef PAXESLISTA PAXESLIST; + typedef LPAXESLISTA LPAXESLIST; + typedef struct tagENUMLOGFONTEXDVA { + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } ENUMLOGFONTEXDVA,*PENUMLOGFONTEXDVA,*LPENUMLOGFONTEXDVA; + typedef struct tagENUMLOGFONTEXDVW { + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } ENUMLOGFONTEXDVW,*PENUMLOGFONTEXDVW,*LPENUMLOGFONTEXDVW; + typedef ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; + typedef PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; + typedef LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; +#define CreateFontIndirectEx __MINGW_NAME_AW(CreateFontIndirectEx) + __declspec (dllimport) HFONT __attribute__((__stdcall__)) CreateFontIndirectExA(const ENUMLOGFONTEXDVA *); + __declspec (dllimport) HFONT __attribute__((__stdcall__)) CreateFontIndirectExW(const ENUMLOGFONTEXDVW *); + typedef struct tagENUMTEXTMETRICA { + NEWTEXTMETRICEXA etmNewTextMetricEx; + AXESLISTA etmAxesList; + } ENUMTEXTMETRICA,*PENUMTEXTMETRICA,*LPENUMTEXTMETRICA; + typedef struct tagENUMTEXTMETRICW + { + NEWTEXTMETRICEXW etmNewTextMetricEx; + AXESLISTW etmAxesList; + } ENUMTEXTMETRICW,*PENUMTEXTMETRICW,*LPENUMTEXTMETRICW; + typedef ENUMTEXTMETRICA ENUMTEXTMETRIC; + typedef PENUMTEXTMETRICA PENUMTEXTMETRIC; + typedef LPENUMTEXTMETRICA LPENUMTEXTMETRIC; +#define ResetDC __MINGW_NAME_AW(ResetDC) +#define RemoveFontResource __MINGW_NAME_AW(RemoveFontResource) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetViewportExtEx(HDC hdc,LPSIZE lpsize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetViewportOrgEx(HDC hdc,LPPOINT lppoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetWindowExtEx(HDC hdc,LPSIZE lpsize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetWindowOrgEx(HDC hdc,LPPOINT lppoint); + __declspec (dllimport) int __attribute__((__stdcall__)) IntersectClipRect(HDC hdc,int left,int top,int right,int bottom); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InvertRgn(HDC hdc,HRGN hrgn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LineDDA(int xStart,int yStart,int xEnd,int yEnd,LINEDDAPROC lpProc,LPARAM data); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LineTo(HDC hdc,int x,int y); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MaskBlt(HDC hdcDest,int xDest,int yDest,int width,int height,HDC hdcSrc,int xSrc,int ySrc,HBITMAP hbmMask,int xMask,int yMask,DWORD rop); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PlgBlt(HDC hdcDest,const POINT *lpPoint,HDC hdcSrc,int xSrc,int ySrc,int width,int height,HBITMAP hbmMask,int xMask,int yMask); + __declspec (dllimport) int __attribute__((__stdcall__)) OffsetClipRgn(HDC hdc,int x,int y); + __declspec (dllimport) int __attribute__((__stdcall__)) OffsetRgn(HRGN hrgn,int x,int y); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PatBlt(HDC hdc,int x,int y,int w,int h,DWORD rop); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Pie(HDC hdc,int left,int top,int right,int bottom,int xr1,int yr1,int xr2,int yr2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PlayMetaFile(HDC hdc,HMETAFILE hmf); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PaintRgn(HDC hdc,HRGN hrgn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolyPolygon(HDC hdc,const POINT *apt,const INT *asz,int csz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PtInRegion(HRGN hrgn,int x,int y); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PtVisible(HDC hdc,int x,int y); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RectInRegion(HRGN hrgn,const RECT *lprect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RectVisible(HDC hdc,const RECT *lprect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Rectangle(HDC hdc,int left,int top,int right,int bottom); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RestoreDC(HDC hdc,int nSavedDC); + __declspec (dllimport) HDC __attribute__((__stdcall__)) ResetDCA(HDC hdc,const DEVMODEA *lpdm); + __declspec (dllimport) HDC __attribute__((__stdcall__)) ResetDCW(HDC hdc,const DEVMODEW *lpdm); + __declspec (dllimport) UINT __attribute__((__stdcall__)) RealizePalette(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceA(LPCSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceW(LPCWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RoundRect(HDC hdc,int left,int top,int right,int bottom,int width,int height); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ResizePalette(HPALETTE hpal,UINT n); + __declspec (dllimport) int __attribute__((__stdcall__)) SaveDC(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) SelectClipRgn(HDC hdc,HRGN hrgn); + __declspec (dllimport) int __attribute__((__stdcall__)) ExtSelectClipRgn(HDC hdc,HRGN hrgn,int mode); + __declspec (dllimport) int __attribute__((__stdcall__)) SetMetaRgn(HDC hdc); + __declspec (dllimport) HGDIOBJ __attribute__((__stdcall__)) SelectObject(HDC hdc,HGDIOBJ h); + __declspec (dllimport) HPALETTE __attribute__((__stdcall__)) SelectPalette(HDC hdc,HPALETTE hPal,WINBOOL bForceBkgd); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) SetBkColor(HDC hdc,COLORREF color); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) SetDCBrushColor(HDC hdc,COLORREF color); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) SetDCPenColor(HDC hdc,COLORREF color); + __declspec (dllimport) int __attribute__((__stdcall__)) SetBkMode(HDC hdc,int mode); + __declspec (dllimport) LONG __attribute__((__stdcall__)) SetBitmapBits(HBITMAP hbm,DWORD cb,const void *pvBits); + __declspec (dllimport) UINT __attribute__((__stdcall__)) SetBoundsRect(HDC hdc,const RECT *lprect,UINT flags); + __declspec (dllimport) int __attribute__((__stdcall__)) SetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,const void *lpBits,const BITMAPINFO *lpbmi,UINT ColorUse); + __declspec (dllimport) int __attribute__((__stdcall__)) SetDIBitsToDevice(HDC hdc,int xDest,int yDest,DWORD w,DWORD h,int xSrc,int ySrc,UINT StartScan,UINT cLines,const void *lpvBits,const BITMAPINFO *lpbmi,UINT ColorUse); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetMapperFlags(HDC hdc,DWORD flags); + __declspec (dllimport) int __attribute__((__stdcall__)) SetGraphicsMode(HDC hdc,int iMode); + __declspec (dllimport) int __attribute__((__stdcall__)) SetMapMode(HDC hdc,int iMode); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetLayout(HDC hdc,DWORD l); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetLayout(HDC hdc); + __declspec (dllimport) HMETAFILE __attribute__((__stdcall__)) SetMetaFileBitsEx(UINT cbBuffer,const BYTE *lpData); + __declspec (dllimport) UINT __attribute__((__stdcall__)) SetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,const PALETTEENTRY *pPalEntries); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) SetPixel(HDC hdc,int x,int y,COLORREF color); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPixelV(HDC hdc,int x,int y,COLORREF color); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPixelFormat(HDC hdc,int format,const PIXELFORMATDESCRIPTOR *ppfd); + __declspec (dllimport) int __attribute__((__stdcall__)) SetPolyFillMode(HDC hdc,int mode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) StretchBlt(HDC hdcDest,int xDest,int yDest,int wDest,int hDest,HDC hdcSrc,int xSrc,int ySrc,int wSrc,int hSrc,DWORD rop); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetRectRgn(HRGN hrgn,int left,int top,int right,int bottom); + __declspec (dllimport) int __attribute__((__stdcall__)) StretchDIBits(HDC hdc,int xDest,int yDest,int DestWidth,int DestHeight,int xSrc,int ySrc,int SrcWidth,int SrcHeight,const void *lpBits,const BITMAPINFO *lpbmi,UINT iUsage,DWORD rop); + __declspec (dllimport) int __attribute__((__stdcall__)) SetROP2(HDC hdc,int rop2); + __declspec (dllimport) int __attribute__((__stdcall__)) SetStretchBltMode(HDC hdc,int mode); + __declspec (dllimport) UINT __attribute__((__stdcall__)) SetSystemPaletteUse(HDC hdc,UINT use); + __declspec (dllimport) int __attribute__((__stdcall__)) SetTextCharacterExtra(HDC hdc,int extra); + __declspec (dllimport) COLORREF __attribute__((__stdcall__)) SetTextColor(HDC hdc,COLORREF color); + __declspec (dllimport) UINT __attribute__((__stdcall__)) SetTextAlign(HDC hdc,UINT align); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetTextJustification(HDC hdc,int extra,int count); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateColors(HDC hdc); + typedef USHORT COLOR16; + typedef struct _TRIVERTEX { + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; + } TRIVERTEX,*PTRIVERTEX,*LPTRIVERTEX; + typedef struct _GRADIENT_TRIANGLE { + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; + } GRADIENT_TRIANGLE,*PGRADIENT_TRIANGLE,*LPGRADIENT_TRIANGLE; + typedef struct _GRADIENT_RECT { + ULONG UpperLeft; + ULONG LowerRight; + } GRADIENT_RECT,*PGRADIENT_RECT,*LPGRADIENT_RECT; + typedef struct _BLENDFUNCTION { + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; + } BLENDFUNCTION,*PBLENDFUNCTION; +#define AC_SRC_OVER 0x00 +#define AC_SRC_ALPHA 0x01 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GdiAlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GdiTransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent); +#define GRADIENT_FILL_RECT_H 0x00000000 +#define GRADIENT_FILL_RECT_V 0x00000001 +#define GRADIENT_FILL_TRIANGLE 0x00000002 +#define GRADIENT_FILL_OP_FLAG 0x000000ff + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GdiGradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode); +#define CopyEnhMetaFile __MINGW_NAME_AW(CopyEnhMetaFile) +#define CreateEnhMetaFile __MINGW_NAME_AW(CreateEnhMetaFile) +#define GetEnhMetaFile __MINGW_NAME_AW(GetEnhMetaFile) +#define GetEnhMetaFileDescription __MINGW_NAME_AW(GetEnhMetaFileDescription) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PlayMetaFileRecord(HDC hdc,LPHANDLETABLE lpHandleTable,LPMETARECORD lpMR,UINT noObjs); + typedef int (__attribute__((__stdcall__)) *MFENUMPROC)(HDC hdc,HANDLETABLE *lpht,METARECORD *lpMR,int nObj,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumMetaFile(HDC hdc,HMETAFILE hmf,MFENUMPROC lpProc,LPARAM lParam); + typedef int (__attribute__((__stdcall__)) *ENHMFENUMPROC)(HDC hdc,HANDLETABLE *lpht,const ENHMETARECORD *lpmr,int hHandles,LPARAM data); + __declspec (dllimport) HENHMETAFILE __attribute__((__stdcall__)) CloseEnhMetaFile(HDC hdc); + __declspec (dllimport) HENHMETAFILE __attribute__((__stdcall__)) CopyEnhMetaFileA(HENHMETAFILE hEnh,LPCSTR lpFileName); + __declspec (dllimport) HENHMETAFILE __attribute__((__stdcall__)) CopyEnhMetaFileW(HENHMETAFILE hEnh,LPCWSTR lpFileName); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateEnhMetaFileA(HDC hdc,LPCSTR lpFilename,const RECT *lprc,LPCSTR lpDesc); + __declspec (dllimport) HDC __attribute__((__stdcall__)) CreateEnhMetaFileW(HDC hdc,LPCWSTR lpFilename,const RECT *lprc,LPCWSTR lpDesc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteEnhMetaFile(HENHMETAFILE hmf); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumEnhMetaFile(HDC hdc,HENHMETAFILE hmf,ENHMFENUMPROC lpProc,LPVOID lpParam,const RECT *lpRect); + __declspec (dllimport) HENHMETAFILE __attribute__((__stdcall__)) GetEnhMetaFileA(LPCSTR lpName); + __declspec (dllimport) HENHMETAFILE __attribute__((__stdcall__)) GetEnhMetaFileW(LPCWSTR lpName); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetEnhMetaFileBits(HENHMETAFILE hEMF,UINT nSize,LPBYTE lpData); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetEnhMetaFileDescriptionA(HENHMETAFILE hemf,UINT cchBuffer,LPSTR lpDescription); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetEnhMetaFileDescriptionW(HENHMETAFILE hemf,UINT cchBuffer,LPWSTR lpDescription); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetEnhMetaFileHeader(HENHMETAFILE hemf,UINT nSize,LPENHMETAHEADER lpEnhMetaHeader); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetEnhMetaFilePaletteEntries(HENHMETAFILE hemf,UINT nNumEntries,LPPALETTEENTRY lpPaletteEntries); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetEnhMetaFilePixelFormat(HENHMETAFILE hemf,UINT cbBuffer,PIXELFORMATDESCRIPTOR *ppfd); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetWinMetaFileBits(HENHMETAFILE hemf,UINT cbData16,LPBYTE pData16,INT iMapMode,HDC hdcRef); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PlayEnhMetaFile(HDC hdc,HENHMETAFILE hmf,const RECT *lprect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PlayEnhMetaFileRecord(HDC hdc,LPHANDLETABLE pht,const ENHMETARECORD *pmr,UINT cht); + __declspec (dllimport) HENHMETAFILE __attribute__((__stdcall__)) SetEnhMetaFileBits(UINT nSize,const BYTE *pb); + __declspec (dllimport) HENHMETAFILE __attribute__((__stdcall__)) SetWinMetaFileBits(UINT nSize,const BYTE *lpMeta16Data,HDC hdcRef,const METAFILEPICT *lpMFP); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GdiComment(HDC hdc,UINT nSize,const BYTE *lpData); +#define GetTextMetrics __MINGW_NAME_AW(GetTextMetrics) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextMetricsA(HDC hdc,LPTEXTMETRICA lptm); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTextMetricsW(HDC hdc,LPTEXTMETRICW lptm); + typedef struct tagDIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD dsBitfields[3]; + HANDLE dshSection; + DWORD dsOffset; + } DIBSECTION,*LPDIBSECTION,*PDIBSECTION; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AngleArc(HDC hdc,int x,int y,DWORD r,FLOAT StartAngle,FLOAT SweepAngle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolyPolyline(HDC hdc,const POINT *apt,const DWORD *asz,DWORD csz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetWorldTransform(HDC hdc,LPXFORM lpxf); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWorldTransform(HDC hdc,const XFORM *lpxf); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ModifyWorldTransform(HDC hdc,const XFORM *lpxf,DWORD mode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CombineTransform(LPXFORM lpxfOut,const XFORM *lpxf1,const XFORM *lpxf2); + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) CreateDIBSection(HDC hdc,const BITMAPINFO *lpbmi,UINT usage,void **ppvBits,HANDLE hSection,DWORD offset); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,RGBQUAD *prgbq); + __declspec (dllimport) UINT __attribute__((__stdcall__)) SetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,const RGBQUAD *prgbq); +#define GDI_WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) +#define GDI_DIBWIDTHBYTES(bi) (DWORD)GDI_WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount) +#define GDI__DIBSIZE(bi) (GDI_DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight) +#define GDI_DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(GDI__DIBSIZE(bi)) : GDI__DIBSIZE(bi)) +#define CA_NEGATIVE 0x0001 +#define CA_LOG_FILTER 0x0002 +#define ILLUMINANT_DEVICE_DEFAULT 0 +#define ILLUMINANT_A 1 +#define ILLUMINANT_B 2 +#define ILLUMINANT_C 3 +#define ILLUMINANT_D50 4 +#define ILLUMINANT_D55 5 +#define ILLUMINANT_D65 6 +#define ILLUMINANT_D75 7 +#define ILLUMINANT_F2 8 +#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2 +#define ILLUMINANT_TUNGSTEN ILLUMINANT_A +#define ILLUMINANT_DAYLIGHT ILLUMINANT_C +#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2 +#define ILLUMINANT_NTSC ILLUMINANT_C +#define RGB_GAMMA_MIN (WORD)02500 +#define RGB_GAMMA_MAX (WORD)65000 +#define REFERENCE_WHITE_MIN (WORD)6000 +#define REFERENCE_WHITE_MAX (WORD)10000 +#define REFERENCE_BLACK_MIN (WORD)0 +#define REFERENCE_BLACK_MAX (WORD)4000 +#define COLOR_ADJ_MIN (SHORT)-100 +#define COLOR_ADJ_MAX (SHORT)100 + typedef struct tagCOLORADJUSTMENT { + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; + } COLORADJUSTMENT,*PCOLORADJUSTMENT,*LPCOLORADJUSTMENT; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetColorAdjustment(HDC hdc,const COLORADJUSTMENT *lpca); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetColorAdjustment(HDC hdc,LPCOLORADJUSTMENT lpca); + __declspec (dllimport) HPALETTE __attribute__((__stdcall__)) CreateHalftonePalette(HDC hdc); + typedef WINBOOL (__attribute__((__stdcall__)) *ABORTPROC)(HDC,int); + typedef struct _DOCINFOA { + int cbSize; + LPCSTR lpszDocName; + LPCSTR lpszOutput; + LPCSTR lpszDatatype; + DWORD fwType; + } DOCINFOA,*LPDOCINFOA; + typedef struct _DOCINFOW { + int cbSize; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; + LPCWSTR lpszDatatype; + DWORD fwType; + } DOCINFOW,*LPDOCINFOW; + typedef DOCINFOA DOCINFO; + typedef LPDOCINFOA LPDOCINFO; +#define DI_APPBANDING 0x00000001 +#define DI_ROPS_READ_DESTINATION 0x00000002 +#define StartDoc __MINGW_NAME_AW(StartDoc) +#define GetObject __MINGW_NAME_AW(GetObject) +#define TextOut __MINGW_NAME_AW(TextOut) +#define ExtTextOut __MINGW_NAME_AW(ExtTextOut) +#define PolyTextOut __MINGW_NAME_AW(PolyTextOut) +#define GetTextFace __MINGW_NAME_AW(GetTextFace) + __declspec (dllimport) int __attribute__((__stdcall__)) StartDocA(HDC hdc,const DOCINFOA *lpdi); + __declspec (dllimport) int __attribute__((__stdcall__)) StartDocW(HDC hdc,const DOCINFOW *lpdi); + __declspec (dllimport) int __attribute__((__stdcall__)) EndDoc(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) StartPage(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) EndPage(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) AbortDoc(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) SetAbortProc(HDC hdc,ABORTPROC lpProc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AbortPath(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ArcTo(HDC hdc,int left,int top,int right,int bottom,int xr1,int yr1,int xr2,int yr2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BeginPath(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseFigure(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndPath(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FillPath(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlattenPath(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) GetPath(HDC hdc,LPPOINT apt,LPBYTE aj,int cpt); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) PathToRegion(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolyDraw(HDC hdc,const POINT *apt,const BYTE *aj,int cpt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SelectClipPath(HDC hdc,int mode); + __declspec (dllimport) int __attribute__((__stdcall__)) SetArcDirection(HDC hdc,int dir); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMiterLimit(HDC hdc,FLOAT limit,PFLOAT old); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) StrokeAndFillPath(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) StrokePath(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WidenPath(HDC hdc); + __declspec (dllimport) HPEN __attribute__((__stdcall__)) ExtCreatePen(DWORD iPenStyle,DWORD cWidth,const LOGBRUSH *plbrush,DWORD cStyle,const DWORD *pstyle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMiterLimit(HDC hdc,PFLOAT plimit); + __declspec (dllimport) int __attribute__((__stdcall__)) GetArcDirection(HDC hdc); + __declspec (dllimport) int __attribute__((__stdcall__)) GetObjectA(HANDLE h,int c,LPVOID pv); + __declspec (dllimport) int __attribute__((__stdcall__)) GetObjectW(HANDLE h,int c,LPVOID pv); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveToEx(HDC hdc,int x,int y,LPPOINT lppt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TextOutA(HDC hdc,int x,int y,LPCSTR lpString,int c); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int c); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ExtTextOutA(HDC hdc,int x,int y,UINT options,const RECT *lprect,LPCSTR lpString,UINT c,const INT *lpDx); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ExtTextOutW(HDC hdc,int x,int y,UINT options,const RECT *lprect,LPCWSTR lpString,UINT c,const INT *lpDx); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolyTextOutA(HDC hdc,const POLYTEXTA *ppt,int nstrings); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolyTextOutW(HDC hdc,const POLYTEXTW *ppt,int nstrings); + __declspec (dllimport) HRGN __attribute__((__stdcall__)) CreatePolygonRgn(const POINT *pptl,int cPoint,int iMode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DPtoLP(HDC hdc,LPPOINT lppt,int c); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LPtoDP(HDC hdc,LPPOINT lppt,int c); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Polygon(HDC hdc,const POINT *apt,int cpt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Polyline(HDC hdc,const POINT *apt,int cpt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolyBezier(HDC hdc,const POINT *apt,DWORD cpt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolyBezierTo(HDC hdc,const POINT *apt,DWORD cpt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PolylineTo(HDC hdc,const POINT *apt,DWORD cpt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetViewportExtEx(HDC hdc,int x,int y,LPSIZE lpsz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWindowExtEx(HDC hdc,int x,int y,LPSIZE lpsz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OffsetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OffsetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ScaleViewportExtEx(HDC hdc,int xn,int dx,int yn,int yd,LPSIZE lpsz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ScaleWindowExtEx(HDC hdc,int xn,int xd,int yn,int yd,LPSIZE lpsz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetBitmapDimensionEx(HBITMAP hbm,int w,int h,LPSIZE lpsz); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetBrushOrgEx(HDC hdc,int x,int y,LPPOINT lppt); + __declspec (dllimport) int __attribute__((__stdcall__)) GetTextFaceA(HDC hdc,int c,LPSTR lpName); + __declspec (dllimport) int __attribute__((__stdcall__)) GetTextFaceW(HDC hdc,int c,LPWSTR lpName); +#define FONTMAPPER_MAX 10 + typedef struct tagKERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; + } KERNINGPAIR,*LPKERNINGPAIR; +#define GetKerningPairs __MINGW_NAME_AW(GetKerningPairs) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetKerningPairsA(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetKerningPairsW(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDCOrgEx(HDC hdc,LPPOINT lppt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FixBrushOrgEx(HDC hdc,int x,int y,LPPOINT ptl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnrealizeObject(HGDIOBJ h); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GdiFlush(void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GdiSetBatchLimit(DWORD dw); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GdiGetBatchLimit(void); +#define ICM_OFF 1 +#define ICM_ON 2 +#define ICM_QUERY 3 +#define ICM_DONE_OUTSIDEDC 4 + typedef int (__attribute__((__stdcall__)) *ICMENUMPROCA)(LPSTR,LPARAM); + typedef int (__attribute__((__stdcall__)) *ICMENUMPROCW)(LPWSTR,LPARAM); +#define ICMENUMPROC __MINGW_NAME_AW(ICMENUMPROC) +#define EnumICMProfiles __MINGW_NAME_AW(EnumICMProfiles) +#define UpdateICMRegKey __MINGW_NAME_AW(UpdateICMRegKey) +#define GetLogColorSpace __MINGW_NAME_AW(GetLogColorSpace) +#define CreateColorSpace __MINGW_NAME_AW(CreateColorSpace) +#define GetICMProfile __MINGW_NAME_AW(GetICMProfile) +#define SetICMProfile __MINGW_NAME_AW(SetICMProfile) + __declspec (dllimport) int __attribute__((__stdcall__)) SetICMMode(HDC hdc,int mode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckColorsInGamut(HDC hdc,LPVOID lpRGBTriple,LPVOID dlpBuffer,DWORD nCount); + __declspec (dllimport) HCOLORSPACE __attribute__((__stdcall__)) GetColorSpace(HDC hdc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetLogColorSpaceA(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEA lpBuffer,DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetLogColorSpaceW(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEW lpBuffer,DWORD nSize); + __declspec (dllimport) HCOLORSPACE __attribute__((__stdcall__)) CreateColorSpaceA(LPLOGCOLORSPACEA lplcs); + __declspec (dllimport) HCOLORSPACE __attribute__((__stdcall__)) CreateColorSpaceW(LPLOGCOLORSPACEW lplcs); + __declspec (dllimport) HCOLORSPACE __attribute__((__stdcall__)) SetColorSpace(HDC hdc,HCOLORSPACE hcs); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteColorSpace(HCOLORSPACE hcs); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetICMProfileA(HDC hdc,LPDWORD pBufSize,LPSTR pszFilename); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetICMProfileW(HDC hdc,LPDWORD pBufSize,LPWSTR pszFilename); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetICMProfileA(HDC hdc,LPSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetICMProfileW(HDC hdc,LPWSTR lpFileName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetDeviceGammaRamp(HDC hdc,LPVOID lpRamp); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDeviceGammaRamp(HDC hdc,LPVOID lpRamp); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ColorMatchToTarget(HDC hdc,HDC hdcTarget,DWORD action); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumICMProfilesA(HDC hdc,ICMENUMPROCA lpProc,LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumICMProfilesW(HDC hdc,ICMENUMPROCW lpProc,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateICMRegKeyA(DWORD reserved,LPSTR lpszCMID,LPSTR lpszFileName,UINT command); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateICMRegKeyW(DWORD reserved,LPWSTR lpszCMID,LPWSTR lpszFileName,UINT command); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ColorCorrectPalette(HDC hdc,HPALETTE hPal,DWORD deFirst,DWORD num); +#define ENHMETA_SIGNATURE 0x464D4520 +#define ENHMETA_STOCK_OBJECT 0x80000000 +#define EMR_HEADER 1 +#define EMR_POLYBEZIER 2 +#define EMR_POLYGON 3 +#define EMR_POLYLINE 4 +#define EMR_POLYBEZIERTO 5 +#define EMR_POLYLINETO 6 +#define EMR_POLYPOLYLINE 7 +#define EMR_POLYPOLYGON 8 +#define EMR_SETWINDOWEXTEX 9 +#define EMR_SETWINDOWORGEX 10 +#define EMR_SETVIEWPORTEXTEX 11 +#define EMR_SETVIEWPORTORGEX 12 +#define EMR_SETBRUSHORGEX 13 +#define EMR_EOF 14 +#define EMR_SETPIXELV 15 +#define EMR_SETMAPPERFLAGS 16 +#define EMR_SETMAPMODE 17 +#define EMR_SETBKMODE 18 +#define EMR_SETPOLYFILLMODE 19 +#define EMR_SETROP2 20 +#define EMR_SETSTRETCHBLTMODE 21 +#define EMR_SETTEXTALIGN 22 +#define EMR_SETCOLORADJUSTMENT 23 +#define EMR_SETTEXTCOLOR 24 +#define EMR_SETBKCOLOR 25 +#define EMR_OFFSETCLIPRGN 26 +#define EMR_MOVETOEX 27 +#define EMR_SETMETARGN 28 +#define EMR_EXCLUDECLIPRECT 29 +#define EMR_INTERSECTCLIPRECT 30 +#define EMR_SCALEVIEWPORTEXTEX 31 +#define EMR_SCALEWINDOWEXTEX 32 +#define EMR_SAVEDC 33 +#define EMR_RESTOREDC 34 +#define EMR_SETWORLDTRANSFORM 35 +#define EMR_MODIFYWORLDTRANSFORM 36 +#define EMR_SELECTOBJECT 37 +#define EMR_CREATEPEN 38 +#define EMR_CREATEBRUSHINDIRECT 39 +#define EMR_DELETEOBJECT 40 +#define EMR_ANGLEARC 41 +#define EMR_ELLIPSE 42 +#define EMR_RECTANGLE 43 +#define EMR_ROUNDRECT 44 +#define EMR_ARC 45 +#define EMR_CHORD 46 +#define EMR_PIE 47 +#define EMR_SELECTPALETTE 48 +#define EMR_CREATEPALETTE 49 +#define EMR_SETPALETTEENTRIES 50 +#define EMR_RESIZEPALETTE 51 +#define EMR_REALIZEPALETTE 52 +#define EMR_EXTFLOODFILL 53 +#define EMR_LINETO 54 +#define EMR_ARCTO 55 +#define EMR_POLYDRAW 56 +#define EMR_SETARCDIRECTION 57 +#define EMR_SETMITERLIMIT 58 +#define EMR_BEGINPATH 59 +#define EMR_ENDPATH 60 +#define EMR_CLOSEFIGURE 61 +#define EMR_FILLPATH 62 +#define EMR_STROKEANDFILLPATH 63 +#define EMR_STROKEPATH 64 +#define EMR_FLATTENPATH 65 +#define EMR_WIDENPATH 66 +#define EMR_SELECTCLIPPATH 67 +#define EMR_ABORTPATH 68 +#define EMR_GDICOMMENT 70 +#define EMR_FILLRGN 71 +#define EMR_FRAMERGN 72 +#define EMR_INVERTRGN 73 +#define EMR_PAINTRGN 74 +#define EMR_EXTSELECTCLIPRGN 75 +#define EMR_BITBLT 76 +#define EMR_STRETCHBLT 77 +#define EMR_MASKBLT 78 +#define EMR_PLGBLT 79 +#define EMR_SETDIBITSTODEVICE 80 +#define EMR_STRETCHDIBITS 81 +#define EMR_EXTCREATEFONTINDIRECTW 82 +#define EMR_EXTTEXTOUTA 83 +#define EMR_EXTTEXTOUTW 84 +#define EMR_POLYBEZIER16 85 +#define EMR_POLYGON16 86 +#define EMR_POLYLINE16 87 +#define EMR_POLYBEZIERTO16 88 +#define EMR_POLYLINETO16 89 +#define EMR_POLYPOLYLINE16 90 +#define EMR_POLYPOLYGON16 91 +#define EMR_POLYDRAW16 92 +#define EMR_CREATEMONOBRUSH 93 +#define EMR_CREATEDIBPATTERNBRUSHPT 94 +#define EMR_EXTCREATEPEN 95 +#define EMR_POLYTEXTOUTA 96 +#define EMR_POLYTEXTOUTW 97 +#define EMR_SETICMMODE 98 +#define EMR_CREATECOLORSPACE 99 +#define EMR_SETCOLORSPACE 100 +#define EMR_DELETECOLORSPACE 101 +#define EMR_GLSRECORD 102 +#define EMR_GLSBOUNDEDRECORD 103 +#define EMR_PIXELFORMAT 104 +#define EMR_RESERVED_105 105 +#define EMR_RESERVED_106 106 +#define EMR_RESERVED_107 107 +#define EMR_RESERVED_108 108 +#define EMR_RESERVED_109 109 +#define EMR_RESERVED_110 110 +#define EMR_COLORCORRECTPALETTE 111 +#define EMR_SETICMPROFILEA 112 +#define EMR_SETICMPROFILEW 113 +#define EMR_ALPHABLEND 114 +#define EMR_SETLAYOUT 115 +#define EMR_TRANSPARENTBLT 116 +#define EMR_RESERVED_117 117 +#define EMR_GRADIENTFILL 118 +#define EMR_RESERVED_119 119 +#define EMR_RESERVED_120 120 +#define EMR_COLORMATCHTOTARGETW 121 +#define EMR_CREATECOLORSPACEW 122 +#define EMR_MIN 1 +#define EMR_MAX 122 + typedef struct tagEMR { + DWORD iType; + DWORD nSize; + } EMR,*PEMR; + typedef struct tagEMRTEXT { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; + } EMRTEXT,*PEMRTEXT; + typedef struct tagABORTPATH { + EMR emr; + } EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE; + typedef struct tagEMRSELECTCLIPPATH { + EMR emr; + DWORD iMode; + } EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETLAYOUT,*PEMRSETLAYOUT, + EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETICMMODE, + *PEMRSETICMMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN; + typedef struct tagEMRSETMITERLIMIT { + EMR emr; + FLOAT eMiterLimit; + } EMRSETMITERLIMIT,*PEMRSETMITERLIMIT; + typedef struct tagEMRRESTOREDC { + EMR emr; + LONG iRelative; + } EMRRESTOREDC,*PEMRRESTOREDC; + typedef struct tagEMRSETARCDIRECTION { + EMR emr; + DWORD iArcDirection; + } EMRSETARCDIRECTION,*PEMRSETARCDIRECTION; + typedef struct tagEMRSETMAPPERFLAGS { + EMR emr; + DWORD dwFlags; + } EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS; + typedef struct tagEMRSETTEXTCOLOR { + EMR emr; + COLORREF crColor; + } EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR; + typedef struct tagEMRSELECTOBJECT { + EMR emr; + DWORD ihObject; + } EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT; + typedef struct tagEMRSELECTPALETTE { + EMR emr; + DWORD ihPal; + } EMRSELECTPALETTE,*PEMRSELECTPALETTE; + typedef struct tagEMRRESIZEPALETTE { + EMR emr; + DWORD ihPal; + DWORD cEntries; + } EMRRESIZEPALETTE,*PEMRRESIZEPALETTE; + typedef struct tagEMRSETPALETTEENTRIES { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY aPalEntries[1]; + } EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES; + typedef struct tagEMRSETCOLORADJUSTMENT { + EMR emr; + COLORADJUSTMENT ColorAdjustment; + } EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT; + typedef struct tagEMRGDICOMMENT { + EMR emr; + DWORD cbData; + BYTE Data[1]; + } EMRGDICOMMENT,*PEMRGDICOMMENT; + typedef struct tagEMREOF { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; + } EMREOF,*PEMREOF; + typedef struct tagEMRLINETO { + EMR emr; + POINTL ptl; + } EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX; + typedef struct tagEMROFFSETCLIPRGN { + EMR emr; + POINTL ptlOffset; + } EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN; + typedef struct tagEMRFILLPATH { + EMR emr; + RECTL rclBounds; + } EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH; + typedef struct tagEMREXCLUDECLIPRECT { + EMR emr; + RECTL rclClip; + } EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT; + typedef struct tagEMRSETVIEWPORTORGEX { + EMR emr; + POINTL ptlOrigin; + } EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX; + typedef struct tagEMRSETVIEWPORTEXTEX { + EMR emr; + SIZEL szlExtent; + } EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX; + typedef struct tagEMRSCALEVIEWPORTEXTEX { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; + } EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX; + typedef struct tagEMRSETWORLDTRANSFORM { + EMR emr; + XFORM xform; + } EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM; + typedef struct tagEMRMODIFYWORLDTRANSFORM { + EMR emr; + XFORM xform; + DWORD iMode; + } EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM; + typedef struct tagEMRSETPIXELV { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; + } EMRSETPIXELV,*PEMRSETPIXELV; + typedef struct tagEMREXTFLOODFILL { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; + } EMREXTFLOODFILL,*PEMREXTFLOODFILL; + typedef struct tagEMRELLIPSE { + EMR emr; + RECTL rclBox; + } EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE; + typedef struct tagEMRROUNDRECT { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; + } EMRROUNDRECT,*PEMRROUNDRECT; + typedef struct tagEMRARC { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; + } EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE; + typedef struct tagEMRANGLEARC { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; + } EMRANGLEARC,*PEMRANGLEARC; + typedef struct tagEMRPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; + } EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO; + typedef struct tagEMRPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; + } EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16; + typedef struct tagEMRPOLYDRAW { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; + BYTE abTypes[1]; + } EMRPOLYDRAW,*PEMRPOLYDRAW; + typedef struct tagEMRPOLYDRAW16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; + BYTE abTypes[1]; + } EMRPOLYDRAW16,*PEMRPOLYDRAW16; + typedef struct tagEMRPOLYPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD aPolyCounts[1]; + POINTL aptl[1]; + } EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON; + typedef struct tagEMRPOLYPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD aPolyCounts[1]; + POINTS apts[1]; + } EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16; + typedef struct tagEMRINVERTRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE RgnData[1]; + } EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN; + typedef struct tagEMRFILLRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE RgnData[1]; + } EMRFILLRGN,*PEMRFILLRGN; + typedef struct tagEMRFRAMERGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE RgnData[1]; + } EMRFRAMERGN,*PEMRFRAMERGN; + typedef struct tagEMREXTSELECTCLIPRGN { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE RgnData[1]; + } EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN; + typedef struct tagEMREXTTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; + } EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW; + typedef struct tagEMRPOLYTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT aemrtext[1]; + } EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW; + typedef struct tagEMRBITBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + } EMRBITBLT,*PEMRBITBLT; + typedef struct tagEMRSTRETCHBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } EMRSTRETCHBLT,*PEMRSTRETCHBLT; + typedef struct tagEMRMASKBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; + } EMRMASKBLT,*PEMRMASKBLT; + typedef struct tagEMRPLGBLT { + EMR emr; + RECTL rclBounds; + POINTL aptlDest[3]; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; + } EMRPLGBLT,*PEMRPLGBLT; + typedef struct tagEMRSETDIBITSTODEVICE { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD iStartScan; + DWORD cScans; + } EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE; + typedef struct tagEMRSTRETCHDIBITS { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD dwRop; + LONG cxDest; + LONG cyDest; + } EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS; + typedef struct tagEMREXTCREATEFONTINDIRECTW { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; + } EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW; + typedef struct tagEMRCREATEPALETTE { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; + } EMRCREATEPALETTE,*PEMRCREATEPALETTE; + typedef struct tagEMRCREATEPEN { + EMR emr; + DWORD ihPen; + LOGPEN lopn; + } EMRCREATEPEN,*PEMRCREATEPEN; + typedef struct tagEMREXTCREATEPEN { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; + } EMREXTCREATEPEN,*PEMREXTCREATEPEN; + typedef struct tagEMRCREATEBRUSHINDIRECT { + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; + } EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT; + typedef struct tagEMRCREATEMONOBRUSH { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + } EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH; + typedef struct tagEMRCREATEDIBPATTERNBRUSHPT { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + } EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT; + typedef struct tagEMRFORMAT { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; + } EMRFORMAT,*PEMRFORMAT; + typedef struct tagEMRGLSRECORD { + EMR emr; + DWORD cbData; + BYTE Data[1]; + } EMRGLSRECORD,*PEMRGLSRECORD; + typedef struct tagEMRGLSBOUNDEDRECORD { + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE Data[1]; + } EMRGLSBOUNDEDRECORD,*PEMRGLSBOUNDEDRECORD; + typedef struct tagEMRPIXELFORMAT { + EMR emr; + PIXELFORMATDESCRIPTOR pfd; + } EMRPIXELFORMAT,*PEMRPIXELFORMAT; + typedef struct tagEMRCREATECOLORSPACE { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEA lcs; + } EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE; + typedef struct tagEMRSETCOLORSPACE { + EMR emr; + DWORD ihCS; + } EMRSETCOLORSPACE,*PEMRSETCOLORSPACE,EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE; + typedef struct tagEMREXTESCAPE { + EMR emr; + INT iEscape; + INT cbEscData; + BYTE EscData[1]; + } EMREXTESCAPE,*PEMREXTESCAPE,EMRDRAWESCAPE,*PEMRDRAWESCAPE; + typedef struct tagEMRNAMEDESCAPE { + EMR emr; + INT iEscape; + INT cbDriver; + INT cbEscData; + BYTE EscData[1]; + } EMRNAMEDESCAPE,*PEMRNAMEDESCAPE; +#define SETICMPROFILE_EMBEDED 0x00000001 + typedef struct tagEMRSETICMPROFILE { + EMR emr; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE Data[1]; + } EMRSETICMPROFILE,*PEMRSETICMPROFILE,EMRSETICMPROFILEA,*PEMRSETICMPROFILEA,EMRSETICMPROFILEW,*PEMRSETICMPROFILEW; +#define CREATECOLORSPACE_EMBEDED 0x00000001 + typedef struct tagEMRCREATECOLORSPACEW { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE Data[1]; + } EMRCREATECOLORSPACEW,*PEMRCREATECOLORSPACEW; +#define COLORMATCHTOTARGET_EMBEDED 0x00000001 + typedef struct tagCOLORMATCHTOTARGET { + EMR emr; + DWORD dwAction; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE Data[1]; + } EMRCOLORMATCHTOTARGET,*PEMRCOLORMATCHTOTARGET; + typedef struct tagCOLORCORRECTPALETTE { + EMR emr; + DWORD ihPalette; + DWORD nFirstEntry; + DWORD nPalEntries; + DWORD nReserved; + } EMRCOLORCORRECTPALETTE,*PEMRCOLORCORRECTPALETTE; + typedef struct tagEMRALPHABLEND { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } EMRALPHABLEND,*PEMRALPHABLEND; + typedef struct tagEMRGRADIENTFILL { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX Ver[1]; + } EMRGRADIENTFILL,*PEMRGRADIENTFILL; + typedef struct tagEMRTRANSPARENTBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } EMRTRANSPARENTBLT,*PEMRTRANSPARENTBLT; +#define GDICOMMENT_IDENTIFIER 0x43494447 +#define GDICOMMENT_WINDOWS_METAFILE 0x80000001 +#define GDICOMMENT_BEGINGROUP 0x00000002 +#define GDICOMMENT_ENDGROUP 0x00000003 +#define GDICOMMENT_MULTIFORMATS 0x40000004 +#define EPS_SIGNATURE 0x46535045 +#define GDICOMMENT_UNICODE_STRING 0x00000040 +#define GDICOMMENT_UNICODE_END 0x00000080 +#define wglUseFontBitmaps __MINGW_NAME_AW(wglUseFontBitmaps) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglCopyContext(HGLRC,HGLRC,UINT); + __declspec (dllimport) HGLRC __attribute__((__stdcall__)) wglCreateContext(HDC); + __declspec (dllimport) HGLRC __attribute__((__stdcall__)) wglCreateLayerContext(HDC,int); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglDeleteContext(HGLRC); + __declspec (dllimport) HGLRC __attribute__((__stdcall__)) wglGetCurrentContext(void); + __declspec (dllimport) HDC __attribute__((__stdcall__)) wglGetCurrentDC(void); + __declspec (dllimport) PROC __attribute__((__stdcall__)) wglGetProcAddress(LPCSTR); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglMakeCurrent(HDC,HGLRC); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglShareLists(HGLRC,HGLRC); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SwapBuffers(HDC); + typedef struct _POINTFLOAT { + FLOAT x; + FLOAT y; + } POINTFLOAT,*PPOINTFLOAT; + typedef struct _GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; + } GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT; +#define WGL_FONT_LINES 0 +#define WGL_FONT_POLYGONS 1 +#define wglUseFontOutlines __MINGW_NAME_AW(wglUseFontOutlines) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT); + typedef struct tagLAYERPLANEDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerPlane; + BYTE bReserved; + COLORREF crTransparent; + } LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR; +#define LPD_DOUBLEBUFFER 0x00000001 +#define LPD_STEREO 0x00000002 +#define LPD_SUPPORT_GDI 0x00000010 +#define LPD_SUPPORT_OPENGL 0x00000020 +#define LPD_SHARE_DEPTH 0x00000040 +#define LPD_SHARE_STENCIL 0x00000080 +#define LPD_SHARE_ACCUM 0x00000100 +#define LPD_SWAP_EXCHANGE 0x00000200 +#define LPD_SWAP_COPY 0x00000400 +#define LPD_TRANSPARENT 0x00001000 +#define LPD_TYPE_RGBA 0 +#define LPD_TYPE_COLORINDEX 1 +#define WGL_SWAP_MAIN_PLANE 0x00000001 +#define WGL_SWAP_OVERLAY1 0x00000002 +#define WGL_SWAP_OVERLAY2 0x00000004 +#define WGL_SWAP_OVERLAY3 0x00000008 +#define WGL_SWAP_OVERLAY4 0x00000010 +#define WGL_SWAP_OVERLAY5 0x00000020 +#define WGL_SWAP_OVERLAY6 0x00000040 +#define WGL_SWAP_OVERLAY7 0x00000080 +#define WGL_SWAP_OVERLAY8 0x00000100 +#define WGL_SWAP_OVERLAY9 0x00000200 +#define WGL_SWAP_OVERLAY10 0x00000400 +#define WGL_SWAP_OVERLAY11 0x00000800 +#define WGL_SWAP_OVERLAY12 0x00001000 +#define WGL_SWAP_OVERLAY13 0x00002000 +#define WGL_SWAP_OVERLAY14 0x00004000 +#define WGL_SWAP_OVERLAY15 0x00008000 +#define WGL_SWAP_UNDERLAY1 0x00010000 +#define WGL_SWAP_UNDERLAY2 0x00020000 +#define WGL_SWAP_UNDERLAY3 0x00040000 +#define WGL_SWAP_UNDERLAY4 0x00080000 +#define WGL_SWAP_UNDERLAY5 0x00100000 +#define WGL_SWAP_UNDERLAY6 0x00200000 +#define WGL_SWAP_UNDERLAY7 0x00400000 +#define WGL_SWAP_UNDERLAY8 0x00800000 +#define WGL_SWAP_UNDERLAY9 0x01000000 +#define WGL_SWAP_UNDERLAY10 0x02000000 +#define WGL_SWAP_UNDERLAY11 0x04000000 +#define WGL_SWAP_UNDERLAY12 0x08000000 +#define WGL_SWAP_UNDERLAY13 0x10000000 +#define WGL_SWAP_UNDERLAY14 0x20000000 +#define WGL_SWAP_UNDERLAY15 0x40000000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR); + __declspec (dllimport) int __attribute__((__stdcall__)) wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF *); + __declspec (dllimport) int __attribute__((__stdcall__)) wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF *); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglRealizeLayerPalette(HDC,int,WINBOOL); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) wglSwapLayerBuffers(HDC,UINT); + typedef struct _WGLSWAP { + HDC hdc; + UINT uiFlags; + } WGLSWAP,*PWGLSWAP,*LPWGLSWAP; +#define WGL_SWAPMULTIPLE_MAX 16 + __declspec (dllimport) DWORD __attribute__((__stdcall__)) wglSwapMultipleBuffers(UINT,const WGLSWAP *); +#define _WINUSER_ +#undef DEFINE_GUID +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name +#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) + typedef HANDLE HDWP; + typedef void MENUTEMPLATEA; + typedef void MENUTEMPLATEW; + typedef PVOID LPMENUTEMPLATEA; + typedef PVOID LPMENUTEMPLATEW; + typedef MENUTEMPLATEA MENUTEMPLATE; + typedef LPMENUTEMPLATEA LPMENUTEMPLATE; + typedef LRESULT (__attribute__((__stdcall__)) *WNDPROC)(HWND,UINT,WPARAM,LPARAM); + typedef INT_PTR (__attribute__((__stdcall__)) *DLGPROC) (HWND, UINT, WPARAM, LPARAM); + typedef void (__attribute__((__stdcall__)) *TIMERPROC) (HWND, UINT, UINT_PTR, DWORD); + typedef WINBOOL (__attribute__((__stdcall__)) *GRAYSTRINGPROC) (HDC, LPARAM, int); + typedef WINBOOL (__attribute__((__stdcall__)) *WNDENUMPROC) (HWND, LPARAM); + typedef LRESULT (__attribute__((__stdcall__)) *HOOKPROC) (int code, WPARAM wParam, LPARAM lParam); + typedef void (__attribute__((__stdcall__)) *SENDASYNCPROC) (HWND, UINT, ULONG_PTR, LRESULT); + typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCA) (HWND, LPCSTR, HANDLE); + typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCW) (HWND, LPCWSTR, HANDLE); + typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCEXA) (HWND, LPSTR, HANDLE, ULONG_PTR); + typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCEXW) (HWND, LPWSTR, HANDLE, ULONG_PTR); + typedef int (__attribute__((__stdcall__)) *EDITWORDBREAKPROCA) (LPSTR lpch, int ichCurrent, int cch, int code); + typedef int (__attribute__((__stdcall__)) *EDITWORDBREAKPROCW) (LPWSTR lpch, int ichCurrent, int cch, int code); + typedef WINBOOL (__attribute__((__stdcall__)) *DRAWSTATEPROC) (HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy); + typedef PROPENUMPROCA PROPENUMPROC; + typedef PROPENUMPROCEXA PROPENUMPROCEX; + typedef EDITWORDBREAKPROCA EDITWORDBREAKPROC; + typedef WINBOOL (__attribute__((__stdcall__)) *NAMEENUMPROCA) (LPSTR, LPARAM); + typedef WINBOOL (__attribute__((__stdcall__)) *NAMEENUMPROCW) (LPWSTR, LPARAM); + typedef NAMEENUMPROCA WINSTAENUMPROCA; + typedef NAMEENUMPROCW WINSTAENUMPROCW; + typedef NAMEENUMPROCA DESKTOPENUMPROCA; + typedef NAMEENUMPROCW DESKTOPENUMPROCW; + typedef WINSTAENUMPROCA WINSTAENUMPROC; + typedef DESKTOPENUMPROCA DESKTOPENUMPROC; +#define IS_INTRESOURCE(_r) ((((ULONG_PTR)(_r)) >> 16)==0) +#define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i)))) +#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i)))) +#define MAKEINTRESOURCE __MINGW_NAME_AW(MAKEINTRESOURCE) +#define RT_CURSOR MAKEINTRESOURCE(1) +#define RT_BITMAP MAKEINTRESOURCE(2) +#define RT_ICON MAKEINTRESOURCE(3) +#define RT_MENU MAKEINTRESOURCE(4) +#define RT_DIALOG MAKEINTRESOURCE(5) +#define RT_STRING MAKEINTRESOURCE(6) +#define RT_FONTDIR MAKEINTRESOURCE(7) +#define RT_FONT MAKEINTRESOURCE(8) +#define RT_ACCELERATOR MAKEINTRESOURCE(9) +#define RT_RCDATA MAKEINTRESOURCE(10) +#define RT_MESSAGETABLE MAKEINTRESOURCE(11) +#define DIFFERENCE 11 +#define RT_GROUP_CURSOR MAKEINTRESOURCE ((ULONG_PTR) (RT_CURSOR) + DIFFERENCE) +#define RT_GROUP_ICON MAKEINTRESOURCE ((ULONG_PTR) (RT_ICON) + DIFFERENCE) +#define RT_VERSION MAKEINTRESOURCE(16) +#define RT_DLGINCLUDE MAKEINTRESOURCE(17) +#define RT_PLUGPLAY MAKEINTRESOURCE(19) +#define RT_VXD MAKEINTRESOURCE(20) +#define RT_ANICURSOR MAKEINTRESOURCE(21) +#define RT_ANIICON MAKEINTRESOURCE(22) +#define RT_HTML MAKEINTRESOURCE(23) +#define RT_MANIFEST MAKEINTRESOURCE(24) +#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1) +#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2) +#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3) +#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1) +#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16) +#define wvsprintf __MINGW_NAME_AW(wvsprintf) +#define wsprintf __MINGW_NAME_AW(wsprintf) + __declspec (dllimport) int __attribute__((__stdcall__)) wvsprintfA(LPSTR,LPCSTR,va_list arglist); + __declspec (dllimport) int __attribute__((__stdcall__)) wvsprintfW(LPWSTR,LPCWSTR,va_list arglist); + __declspec (dllimport) int __attribute__((__cdecl__)) wsprintfA(LPSTR,LPCSTR,...); + __declspec (dllimport) int __attribute__((__cdecl__)) wsprintfW(LPWSTR,LPCWSTR,...); +#define SETWALLPAPER_DEFAULT ((LPWSTR)-1) +#define SB_HORZ 0 +#define SB_VERT 1 +#define SB_CTL 2 +#define SB_BOTH 3 +#define SB_LINEUP 0 +#define SB_LINELEFT 0 +#define SB_LINEDOWN 1 +#define SB_LINERIGHT 1 +#define SB_PAGEUP 2 +#define SB_PAGELEFT 2 +#define SB_PAGEDOWN 3 +#define SB_PAGERIGHT 3 +#define SB_THUMBPOSITION 4 +#define SB_THUMBTRACK 5 +#define SB_TOP 6 +#define SB_LEFT 6 +#define SB_BOTTOM 7 +#define SB_RIGHT 7 +#define SB_ENDSCROLL 8 +#define SW_HIDE 0 +#define SW_SHOWNORMAL 1 +#define SW_NORMAL 1 +#define SW_SHOWMINIMIZED 2 +#define SW_SHOWMAXIMIZED 3 +#define SW_MAXIMIZE 3 +#define SW_SHOWNOACTIVATE 4 +#define SW_SHOW 5 +#define SW_MINIMIZE 6 +#define SW_SHOWMINNOACTIVE 7 +#define SW_SHOWNA 8 +#define SW_RESTORE 9 +#define SW_SHOWDEFAULT 10 +#define SW_FORCEMINIMIZE 11 +#define SW_MAX 11 +#define HIDE_WINDOW 0 +#define SHOW_OPENWINDOW 1 +#define SHOW_ICONWINDOW 2 +#define SHOW_FULLSCREEN 3 +#define SHOW_OPENNOACTIVATE 4 +#define SW_PARENTCLOSING 1 +#define SW_OTHERZOOM 2 +#define SW_PARENTOPENING 3 +#define SW_OTHERUNZOOM 4 +#define AW_HOR_POSITIVE 0x00000001 +#define AW_HOR_NEGATIVE 0x00000002 +#define AW_VER_POSITIVE 0x00000004 +#define AW_VER_NEGATIVE 0x00000008 +#define AW_CENTER 0x00000010 +#define AW_HIDE 0x00010000 +#define AW_ACTIVATE 0x00020000 +#define AW_SLIDE 0x00040000 +#define AW_BLEND 0x00080000 +#define KF_EXTENDED 0x0100 +#define KF_DLGMODE 0x0800 +#define KF_MENUMODE 0x1000 +#define KF_ALTDOWN 0x2000 +#define KF_REPEAT 0x4000 +#define KF_UP 0x8000 +#define VK_LBUTTON 0x01 +#define VK_RBUTTON 0x02 +#define VK_CANCEL 0x03 +#define VK_MBUTTON 0x04 +#define VK_XBUTTON1 0x05 +#define VK_XBUTTON2 0x06 +#define VK_BACK 0x08 +#define VK_TAB 0x09 +#define VK_CLEAR 0x0C +#define VK_RETURN 0x0D +#define VK_SHIFT 0x10 +#define VK_CONTROL 0x11 +#define VK_MENU 0x12 +#define VK_PAUSE 0x13 +#define VK_CAPITAL 0x14 +#define VK_KANA 0x15 +#define VK_HANGEUL 0x15 +#define VK_HANGUL 0x15 +#define VK_IME_ON 0x16 +#define VK_JUNJA 0x17 +#define VK_FINAL 0x18 +#define VK_HANJA 0x19 +#define VK_KANJI 0x19 +#define VK_IME_OFF 0x1A +#define VK_ESCAPE 0x1B +#define VK_CONVERT 0x1C +#define VK_NONCONVERT 0x1D +#define VK_ACCEPT 0x1E +#define VK_MODECHANGE 0x1F +#define VK_SPACE 0x20 +#define VK_PRIOR 0x21 +#define VK_NEXT 0x22 +#define VK_END 0x23 +#define VK_HOME 0x24 +#define VK_LEFT 0x25 +#define VK_UP 0x26 +#define VK_RIGHT 0x27 +#define VK_DOWN 0x28 +#define VK_SELECT 0x29 +#define VK_PRINT 0x2A +#define VK_EXECUTE 0x2B +#define VK_SNAPSHOT 0x2C +#define VK_INSERT 0x2D +#define VK_DELETE 0x2E +#define VK_HELP 0x2F +#define VK_LWIN 0x5B +#define VK_RWIN 0x5C +#define VK_APPS 0x5D +#define VK_SLEEP 0x5F +#define VK_NUMPAD0 0x60 +#define VK_NUMPAD1 0x61 +#define VK_NUMPAD2 0x62 +#define VK_NUMPAD3 0x63 +#define VK_NUMPAD4 0x64 +#define VK_NUMPAD5 0x65 +#define VK_NUMPAD6 0x66 +#define VK_NUMPAD7 0x67 +#define VK_NUMPAD8 0x68 +#define VK_NUMPAD9 0x69 +#define VK_MULTIPLY 0x6A +#define VK_ADD 0x6B +#define VK_SEPARATOR 0x6C +#define VK_SUBTRACT 0x6D +#define VK_DECIMAL 0x6E +#define VK_DIVIDE 0x6F +#define VK_F1 0x70 +#define VK_F2 0x71 +#define VK_F3 0x72 +#define VK_F4 0x73 +#define VK_F5 0x74 +#define VK_F6 0x75 +#define VK_F7 0x76 +#define VK_F8 0x77 +#define VK_F9 0x78 +#define VK_F10 0x79 +#define VK_F11 0x7A +#define VK_F12 0x7B +#define VK_F13 0x7C +#define VK_F14 0x7D +#define VK_F15 0x7E +#define VK_F16 0x7F +#define VK_F17 0x80 +#define VK_F18 0x81 +#define VK_F19 0x82 +#define VK_F20 0x83 +#define VK_F21 0x84 +#define VK_F22 0x85 +#define VK_F23 0x86 +#define VK_F24 0x87 +#define VK_NUMLOCK 0x90 +#define VK_SCROLL 0x91 +#define VK_OEM_NEC_EQUAL 0x92 +#define VK_OEM_FJ_JISHO 0x92 +#define VK_OEM_FJ_MASSHOU 0x93 +#define VK_OEM_FJ_TOUROKU 0x94 +#define VK_OEM_FJ_LOYA 0x95 +#define VK_OEM_FJ_ROYA 0x96 +#define VK_LSHIFT 0xA0 +#define VK_RSHIFT 0xA1 +#define VK_LCONTROL 0xA2 +#define VK_RCONTROL 0xA3 +#define VK_LMENU 0xA4 +#define VK_RMENU 0xA5 +#define VK_BROWSER_BACK 0xA6 +#define VK_BROWSER_FORWARD 0xA7 +#define VK_BROWSER_REFRESH 0xA8 +#define VK_BROWSER_STOP 0xA9 +#define VK_BROWSER_SEARCH 0xAA +#define VK_BROWSER_FAVORITES 0xAB +#define VK_BROWSER_HOME 0xAC +#define VK_VOLUME_MUTE 0xAD +#define VK_VOLUME_DOWN 0xAE +#define VK_VOLUME_UP 0xAF +#define VK_MEDIA_NEXT_TRACK 0xB0 +#define VK_MEDIA_PREV_TRACK 0xB1 +#define VK_MEDIA_STOP 0xB2 +#define VK_MEDIA_PLAY_PAUSE 0xB3 +#define VK_LAUNCH_MAIL 0xB4 +#define VK_LAUNCH_MEDIA_SELECT 0xB5 +#define VK_LAUNCH_APP1 0xB6 +#define VK_LAUNCH_APP2 0xB7 +#define VK_OEM_1 0xBA +#define VK_OEM_PLUS 0xBB +#define VK_OEM_COMMA 0xBC +#define VK_OEM_MINUS 0xBD +#define VK_OEM_PERIOD 0xBE +#define VK_OEM_2 0xBF +#define VK_OEM_3 0xC0 +#define VK_OEM_4 0xDB +#define VK_OEM_5 0xDC +#define VK_OEM_6 0xDD +#define VK_OEM_7 0xDE +#define VK_OEM_8 0xDF +#define VK_OEM_AX 0xE1 +#define VK_OEM_102 0xE2 +#define VK_ICO_HELP 0xE3 +#define VK_ICO_00 0xE4 +#define VK_PROCESSKEY 0xE5 +#define VK_ICO_CLEAR 0xE6 +#define VK_PACKET 0xE7 +#define VK_OEM_RESET 0xE9 +#define VK_OEM_JUMP 0xEA +#define VK_OEM_PA1 0xEB +#define VK_OEM_PA2 0xEC +#define VK_OEM_PA3 0xED +#define VK_OEM_WSCTRL 0xEE +#define VK_OEM_CUSEL 0xEF +#define VK_OEM_ATTN 0xF0 +#define VK_OEM_FINISH 0xF1 +#define VK_OEM_COPY 0xF2 +#define VK_OEM_AUTO 0xF3 +#define VK_OEM_ENLW 0xF4 +#define VK_OEM_BACKTAB 0xF5 +#define VK_ATTN 0xF6 +#define VK_CRSEL 0xF7 +#define VK_EXSEL 0xF8 +#define VK_EREOF 0xF9 +#define VK_PLAY 0xFA +#define VK_ZOOM 0xFB +#define VK_NONAME 0xFC +#define VK_PA1 0xFD +#define VK_OEM_CLEAR 0xFE +#define WH_MIN (-1) +#define WH_MSGFILTER (-1) +#define WH_JOURNALRECORD 0 +#define WH_JOURNALPLAYBACK 1 +#define WH_KEYBOARD 2 +#define WH_GETMESSAGE 3 +#define WH_CALLWNDPROC 4 +#define WH_CBT 5 +#define WH_SYSMSGFILTER 6 +#define WH_MOUSE 7 +#define WH_HARDWARE 8 +#define WH_DEBUG 9 +#define WH_SHELL 10 +#define WH_FOREGROUNDIDLE 11 +#define WH_CALLWNDPROCRET 12 +#define WH_KEYBOARD_LL 13 +#define WH_MOUSE_LL 14 +#define WH_MAX 14 +#define WH_MINHOOK WH_MIN +#define WH_MAXHOOK WH_MAX +#define HC_ACTION 0 +#define HC_GETNEXT 1 +#define HC_SKIP 2 +#define HC_NOREMOVE 3 +#define HC_NOREM HC_NOREMOVE +#define HC_SYSMODALON 4 +#define HC_SYSMODALOFF 5 +#define HCBT_MOVESIZE 0 +#define HCBT_MINMAX 1 +#define HCBT_QS 2 +#define HCBT_CREATEWND 3 +#define HCBT_DESTROYWND 4 +#define HCBT_ACTIVATE 5 +#define HCBT_CLICKSKIPPED 6 +#define HCBT_KEYSKIPPED 7 +#define HCBT_SYSCOMMAND 8 +#define HCBT_SETFOCUS 9 + typedef struct tagCBT_CREATEWNDA { + struct tagCREATESTRUCTA *lpcs; + HWND hwndInsertAfter; + } CBT_CREATEWNDA,*LPCBT_CREATEWNDA; + typedef struct tagCBT_CREATEWNDW { + struct tagCREATESTRUCTW *lpcs; + HWND hwndInsertAfter; + } CBT_CREATEWNDW,*LPCBT_CREATEWNDW; + typedef CBT_CREATEWNDA CBT_CREATEWND; + typedef LPCBT_CREATEWNDA LPCBT_CREATEWND; + typedef struct tagCBTACTIVATESTRUCT { + WINBOOL fMouse; + HWND hWndActive; + } CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT; + typedef struct tagWTSSESSION_NOTIFICATION { + DWORD cbSize; + DWORD dwSessionId; + } WTSSESSION_NOTIFICATION,*PWTSSESSION_NOTIFICATION; +#define WTS_CONSOLE_CONNECT 0x1 +#define WTS_CONSOLE_DISCONNECT 0x2 +#define WTS_REMOTE_CONNECT 0x3 +#define WTS_REMOTE_DISCONNECT 0x4 +#define WTS_SESSION_LOGON 0x5 +#define WTS_SESSION_LOGOFF 0x6 +#define WTS_SESSION_LOCK 0x7 +#define WTS_SESSION_UNLOCK 0x8 +#define WTS_SESSION_REMOTE_CONTROL 0x9 +#define WTS_SESSION_CREATE 0xa +#define WTS_SESSION_TERMINATE 0xb +#define MSGF_DIALOGBOX 0 +#define MSGF_MESSAGEBOX 1 +#define MSGF_MENU 2 +#define MSGF_SCROLLBAR 5 +#define MSGF_NEXTWINDOW 6 +#define MSGF_MAX 8 +#define MSGF_USER 4096 +#define HSHELL_WINDOWCREATED 1 +#define HSHELL_WINDOWDESTROYED 2 +#define HSHELL_ACTIVATESHELLWINDOW 3 +#define HSHELL_WINDOWACTIVATED 4 +#define HSHELL_GETMINRECT 5 +#define HSHELL_REDRAW 6 +#define HSHELL_TASKMAN 7 +#define HSHELL_LANGUAGE 8 +#define HSHELL_SYSMENU 9 +#define HSHELL_ENDTASK 10 +#define HSHELL_ACCESSIBILITYSTATE 11 +#define HSHELL_APPCOMMAND 12 +#define HSHELL_WINDOWREPLACED 13 +#define HSHELL_WINDOWREPLACING 14 +#define HSHELL_HIGHBIT 0x8000 +#define HSHELL_FLASH (HSHELL_REDRAW|HSHELL_HIGHBIT) +#define HSHELL_RUDEAPPACTIVATED (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT) +#define ACCESS_STICKYKEYS 0x0001 +#define ACCESS_FILTERKEYS 0x0002 +#define ACCESS_MOUSEKEYS 0x0003 +#define APPCOMMAND_BROWSER_BACKWARD 1 +#define APPCOMMAND_BROWSER_FORWARD 2 +#define APPCOMMAND_BROWSER_REFRESH 3 +#define APPCOMMAND_BROWSER_STOP 4 +#define APPCOMMAND_BROWSER_SEARCH 5 +#define APPCOMMAND_BROWSER_FAVORITES 6 +#define APPCOMMAND_BROWSER_HOME 7 +#define APPCOMMAND_VOLUME_MUTE 8 +#define APPCOMMAND_VOLUME_DOWN 9 +#define APPCOMMAND_VOLUME_UP 10 +#define APPCOMMAND_MEDIA_NEXTTRACK 11 +#define APPCOMMAND_MEDIA_PREVIOUSTRACK 12 +#define APPCOMMAND_MEDIA_STOP 13 +#define APPCOMMAND_MEDIA_PLAY_PAUSE 14 +#define APPCOMMAND_LAUNCH_MAIL 15 +#define APPCOMMAND_LAUNCH_MEDIA_SELECT 16 +#define APPCOMMAND_LAUNCH_APP1 17 +#define APPCOMMAND_LAUNCH_APP2 18 +#define APPCOMMAND_BASS_DOWN 19 +#define APPCOMMAND_BASS_BOOST 20 +#define APPCOMMAND_BASS_UP 21 +#define APPCOMMAND_TREBLE_DOWN 22 +#define APPCOMMAND_TREBLE_UP 23 +#define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24 +#define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25 +#define APPCOMMAND_MICROPHONE_VOLUME_UP 26 +#define APPCOMMAND_HELP 27 +#define APPCOMMAND_FIND 28 +#define APPCOMMAND_NEW 29 +#define APPCOMMAND_OPEN 30 +#define APPCOMMAND_CLOSE 31 +#define APPCOMMAND_SAVE 32 +#define APPCOMMAND_PRINT 33 +#define APPCOMMAND_UNDO 34 +#define APPCOMMAND_REDO 35 +#define APPCOMMAND_COPY 36 +#define APPCOMMAND_CUT 37 +#define APPCOMMAND_PASTE 38 +#define APPCOMMAND_REPLY_TO_MAIL 39 +#define APPCOMMAND_FORWARD_MAIL 40 +#define APPCOMMAND_SEND_MAIL 41 +#define APPCOMMAND_SPELL_CHECK 42 +#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43 +#define APPCOMMAND_MIC_ON_OFF_TOGGLE 44 +#define APPCOMMAND_CORRECTION_LIST 45 +#define APPCOMMAND_MEDIA_PLAY 46 +#define APPCOMMAND_MEDIA_PAUSE 47 +#define APPCOMMAND_MEDIA_RECORD 48 +#define APPCOMMAND_MEDIA_FAST_FORWARD 49 +#define APPCOMMAND_MEDIA_REWIND 50 +#define APPCOMMAND_MEDIA_CHANNEL_UP 51 +#define APPCOMMAND_MEDIA_CHANNEL_DOWN 52 +#define APPCOMMAND_DELETE 53 +#define APPCOMMAND_DWM_FLIP3D 54 +#define FAPPCOMMAND_MOUSE 0x8000 +#define FAPPCOMMAND_KEY 0 +#define FAPPCOMMAND_OEM 0x1000 +#define FAPPCOMMAND_MASK 0xF000 +#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK)) +#define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)) +#define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM +#define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam)) +#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam) + typedef struct { + HWND hwnd; + RECT rc; + } SHELLHOOKINFO,*LPSHELLHOOKINFO; + typedef struct tagEVENTMSG { + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; + } EVENTMSG,*PEVENTMSGMSG,*NPEVENTMSGMSG,*LPEVENTMSGMSG; + typedef struct tagEVENTMSG *PEVENTMSG,*NPEVENTMSG,*LPEVENTMSG; + typedef struct tagCWPSTRUCT { + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; + } CWPSTRUCT,*PCWPSTRUCT,*NPCWPSTRUCT,*LPCWPSTRUCT; + typedef struct tagCWPRETSTRUCT { + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; + } CWPRETSTRUCT,*PCWPRETSTRUCT,*NPCWPRETSTRUCT,*LPCWPRETSTRUCT; +#define LLKHF_EXTENDED (KF_EXTENDED >> 8) +#define LLKHF_INJECTED 0x00000010 +#define LLKHF_ALTDOWN (KF_ALTDOWN >> 8) +#define LLKHF_UP (KF_UP >> 8) +#define LLKHF_LOWER_IL_INJECTED 0x00000002 +#define LLMHF_INJECTED 0x00000001 +#define LLMHF_LOWER_IL_INJECTED 0x00000002 + typedef struct tagKBDLLHOOKSTRUCT { + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; + } KBDLLHOOKSTRUCT,*LPKBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT; + typedef struct tagMSLLHOOKSTRUCT { + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; + } MSLLHOOKSTRUCT,*LPMSLLHOOKSTRUCT,*PMSLLHOOKSTRUCT; + typedef struct tagDEBUGHOOKINFO { + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; + } DEBUGHOOKINFO,*PDEBUGHOOKINFO,*NPDEBUGHOOKINFO,*LPDEBUGHOOKINFO; + typedef struct tagMOUSEHOOKSTRUCT { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + ULONG_PTR dwExtraInfo; + } MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT; + typedef struct tagMOUSEHOOKSTRUCTEX { + MOUSEHOOKSTRUCT __unnamed; + DWORD mouseData; + } MOUSEHOOKSTRUCTEX,*LPMOUSEHOOKSTRUCTEX,*PMOUSEHOOKSTRUCTEX; + typedef struct tagHARDWAREHOOKSTRUCT { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + } HARDWAREHOOKSTRUCT,*LPHARDWAREHOOKSTRUCT,*PHARDWAREHOOKSTRUCT; +#define HKL_PREV 0 +#define HKL_NEXT 1 +#define KLF_ACTIVATE 0x00000001 +#define KLF_SUBSTITUTE_OK 0x00000002 +#define KLF_REORDER 0x00000008 +#define KLF_REPLACELANG 0x00000010 +#define KLF_NOTELLSHELL 0x00000080 +#define KLF_SETFORPROCESS 0x00000100 +#define KLF_SHIFTLOCK 0x00010000 +#define KLF_RESET 0x40000000 +#define INPUTLANGCHANGE_SYSCHARSET 0x0001 +#define INPUTLANGCHANGE_FORWARD 0x0002 +#define INPUTLANGCHANGE_BACKWARD 0x0004 +#define KL_NAMELENGTH 9 +#define LoadKeyboardLayout __MINGW_NAME_AW(LoadKeyboardLayout) +#define GetKeyboardLayoutName __MINGW_NAME_AW(GetKeyboardLayoutName) + __declspec (dllimport) HKL __attribute__((__stdcall__)) LoadKeyboardLayoutA(LPCSTR pwszKLID,UINT Flags); + __declspec (dllimport) HKL __attribute__((__stdcall__)) LoadKeyboardLayoutW(LPCWSTR pwszKLID,UINT Flags); + __declspec (dllimport) HKL __attribute__((__stdcall__)) ActivateKeyboardLayout(HKL hkl,UINT Flags); + __declspec (dllimport) int __attribute__((__stdcall__)) ToUnicodeEx(UINT wVirtKey,UINT wScanCode,const BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags,HKL dwhkl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnloadKeyboardLayout(HKL hkl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetKeyboardLayoutNameA(LPSTR pwszKLID); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetKeyboardLayoutNameW(LPWSTR pwszKLID); + __declspec (dllimport) int __attribute__((__stdcall__)) GetKeyboardLayoutList(int nBuff,HKL *lpList); + __declspec (dllimport) HKL __attribute__((__stdcall__)) GetKeyboardLayout(DWORD idThread); + typedef struct tagMOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; + } MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT; + __declspec (dllimport) int __attribute__((__stdcall__)) GetMouseMovePointsEx(UINT cbSize,LPMOUSEMOVEPOINT lppt,LPMOUSEMOVEPOINT lpptBuf,int nBufPoints,DWORD resolution); +#define GMMP_USE_DISPLAY_POINTS 1 +#define GMMP_USE_HIGH_RESOLUTION_POINTS 2 +#define DESKTOP_READOBJECTS __MSABI_LONG(0x0001) +#define DESKTOP_CREATEWINDOW __MSABI_LONG(0x0002) +#define DESKTOP_CREATEMENU __MSABI_LONG(0x0004) +#define DESKTOP_HOOKCONTROL __MSABI_LONG(0x0008) +#define DESKTOP_JOURNALRECORD __MSABI_LONG(0x0010) +#define DESKTOP_JOURNALPLAYBACK __MSABI_LONG(0x0020) +#define DESKTOP_ENUMERATE __MSABI_LONG(0x0040) +#define DESKTOP_WRITEOBJECTS __MSABI_LONG(0x0080) +#define DESKTOP_SWITCHDESKTOP __MSABI_LONG(0x0100) +#define DF_ALLOWOTHERACCOUNTHOOK __MSABI_LONG(0x0001) +#define CreateDesktop __MINGW_NAME_AW(CreateDesktop) +#define CreateDesktopEx __MINGW_NAME_AW(CreateDesktopEx) + __declspec (dllimport) HDESK __attribute__((__stdcall__)) CreateDesktopA(LPCSTR lpszDesktop,LPCSTR lpszDevice,LPDEVMODEA pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa); + __declspec (dllimport) HDESK __attribute__((__stdcall__)) CreateDesktopW(LPCWSTR lpszDesktop,LPCWSTR lpszDevice,LPDEVMODEW pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa); + __declspec (dllimport) HDESK __attribute__((__stdcall__)) CreateDesktopExA (LPCSTR lpszDesktop, LPCSTR lpszDevice, DEVMODEA *pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa, ULONG ulHeapSize, PVOID pvoid); + __declspec (dllimport) HDESK __attribute__((__stdcall__)) CreateDesktopExW (LPCWSTR lpszDesktop, LPCWSTR lpszDevice, DEVMODEW *pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa, ULONG ulHeapSize, PVOID pvoid); +#define OpenDesktop __MINGW_NAME_AW(OpenDesktop) +#define EnumDesktops __MINGW_NAME_AW(EnumDesktops) + __declspec (dllimport) HDESK __attribute__((__stdcall__)) OpenDesktopA(LPCSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess); + __declspec (dllimport) HDESK __attribute__((__stdcall__)) OpenDesktopW(LPCWSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess); + __declspec (dllimport) HDESK __attribute__((__stdcall__)) OpenInputDesktop(DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDesktopsA(HWINSTA hwinsta,DESKTOPENUMPROCA lpEnumFunc,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDesktopsW(HWINSTA hwinsta,DESKTOPENUMPROCW lpEnumFunc,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDesktopWindows(HDESK hDesktop,WNDENUMPROC lpfn,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SwitchDesktop(HDESK hDesktop); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadDesktop(HDESK hDesktop); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseDesktop(HDESK hDesktop); + __declspec (dllimport) HDESK __attribute__((__stdcall__)) GetThreadDesktop(DWORD dwThreadId); +#define WINSTA_ENUMDESKTOPS __MSABI_LONG(0x0001) +#define WINSTA_READATTRIBUTES __MSABI_LONG(0x0002) +#define WINSTA_ACCESSCLIPBOARD __MSABI_LONG(0x0004) +#define WINSTA_CREATEDESKTOP __MSABI_LONG(0x0008) +#define WINSTA_WRITEATTRIBUTES __MSABI_LONG(0x0010) +#define WINSTA_ACCESSGLOBALATOMS __MSABI_LONG(0x0020) +#define WINSTA_EXITWINDOWS __MSABI_LONG(0x0040) +#define WINSTA_ENUMERATE __MSABI_LONG(0x0100) +#define WINSTA_READSCREEN __MSABI_LONG(0x0200) +#define WINSTA_ALL_ACCESS (WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN) +#define CWF_CREATE_ONLY 0x00000001 +#define WSF_VISIBLE __MSABI_LONG(0x0001) +#define CreateWindowStation __MINGW_NAME_AW(CreateWindowStation) +#define OpenWindowStation __MINGW_NAME_AW(OpenWindowStation) +#define EnumWindowStations __MINGW_NAME_AW(EnumWindowStations) + __declspec (dllimport) HWINSTA __attribute__((__stdcall__)) CreateWindowStationA(LPCSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa); + __declspec (dllimport) HWINSTA __attribute__((__stdcall__)) CreateWindowStationW(LPCWSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa); + __declspec (dllimport) HWINSTA __attribute__((__stdcall__)) OpenWindowStationA(LPCSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess); + __declspec (dllimport) HWINSTA __attribute__((__stdcall__)) OpenWindowStationW(LPCWSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumWindowStationsA(WINSTAENUMPROCA lpEnumFunc,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumWindowStationsW(WINSTAENUMPROCW lpEnumFunc,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseWindowStation(HWINSTA hWinSta); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessWindowStation(HWINSTA hWinSta); + __declspec (dllimport) HWINSTA __attribute__((__stdcall__)) GetProcessWindowStation(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID,DWORD nLength,LPDWORD lpnLengthNeeded); +#define UOI_FLAGS 1 +#define UOI_NAME 2 +#define UOI_TYPE 3 +#define UOI_USER_SID 4 +#define UOI_HEAPSIZE 5 +#define UOI_IO 6 +#define UOI_TIMERPROC_EXCEPTION_SUPPRESSION 7 + typedef struct tagUSEROBJECTFLAGS { + WINBOOL fInherit; + WINBOOL fReserved; + DWORD dwFlags; + } USEROBJECTFLAGS,*PUSEROBJECTFLAGS; +#define GetUserObjectInformation __MINGW_NAME_AW(GetUserObjectInformation) +#define SetUserObjectInformation __MINGW_NAME_AW(SetUserObjectInformation) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength); + typedef struct tagWNDCLASSEXA { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; + } WNDCLASSEXA,*PWNDCLASSEXA,*NPWNDCLASSEXA,*LPWNDCLASSEXA; + typedef struct tagWNDCLASSEXW { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; + } WNDCLASSEXW,*PWNDCLASSEXW,*NPWNDCLASSEXW,*LPWNDCLASSEXW; + typedef WNDCLASSEXA WNDCLASSEX; + typedef PWNDCLASSEXA PWNDCLASSEX; + typedef NPWNDCLASSEXA NPWNDCLASSEX; + typedef LPWNDCLASSEXA LPWNDCLASSEX; + typedef struct tagWNDCLASSA { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + } WNDCLASSA,*PWNDCLASSA,*NPWNDCLASSA,*LPWNDCLASSA; + typedef struct tagWNDCLASSW { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + } WNDCLASSW,*PWNDCLASSW,*NPWNDCLASSW,*LPWNDCLASSW; + typedef WNDCLASSA WNDCLASS; + typedef PWNDCLASSA PWNDCLASS; + typedef NPWNDCLASSA NPWNDCLASS; + typedef LPWNDCLASSA LPWNDCLASS; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsHungAppWindow(HWND hwnd); + __declspec (dllimport) void __attribute__((__stdcall__)) DisableProcessWindowsGhosting(void); + typedef struct tagMSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; + } MSG,*PMSG,*NPMSG,*LPMSG; +#define POINTSTOPOINT(pt,pts) { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); } +#define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x),(short)((pt).y))) +#define MAKEWPARAM(l,h) ((WPARAM)(DWORD)MAKELONG(l,h)) +#define MAKELPARAM(l,h) ((LPARAM)(DWORD)MAKELONG(l,h)) +#define MAKELRESULT(l,h) ((LRESULT)(DWORD)MAKELONG(l,h)) +#define GWL_WNDPROC (-4) +#define GWL_HINSTANCE (-6) +#define GWL_HWNDPARENT (-8) +#define GWL_STYLE (-16) +#define GWL_EXSTYLE (-20) +#define GWL_USERDATA (-21) +#define GWL_ID (-12) +#undef GWL_WNDPROC +#undef GWL_HINSTANCE +#undef GWL_HWNDPARENT +#undef GWL_USERDATA +#define GWLP_WNDPROC (-4) +#define GWLP_HINSTANCE (-6) +#define GWLP_HWNDPARENT (-8) +#define GWLP_USERDATA (-21) +#define GWLP_ID (-12) +#define GCL_MENUNAME (-8) +#define GCL_HBRBACKGROUND (-10) +#define GCL_HCURSOR (-12) +#define GCL_HICON (-14) +#define GCL_HMODULE (-16) +#define GCL_CBWNDEXTRA (-18) +#define GCL_CBCLSEXTRA (-20) +#define GCL_WNDPROC (-24) +#define GCL_STYLE (-26) +#define GCW_ATOM (-32) +#define GCL_HICONSM (-34) +#undef GCL_MENUNAME +#undef GCL_HBRBACKGROUND +#undef GCL_HCURSOR +#undef GCL_HICON +#undef GCL_HMODULE +#undef GCL_WNDPROC +#undef GCL_HICONSM +#define GCLP_MENUNAME (-8) +#define GCLP_HBRBACKGROUND (-10) +#define GCLP_HCURSOR (-12) +#define GCLP_HICON (-14) +#define GCLP_HMODULE (-16) +#define GCLP_WNDPROC (-24) +#define GCLP_HICONSM (-34) +#define WM_NULL 0x0000 +#define WM_CREATE 0x0001 +#define WM_DESTROY 0x0002 +#define WM_MOVE 0x0003 +#define WM_SIZE 0x0005 +#define WM_ACTIVATE 0x0006 +#define WA_INACTIVE 0 +#define WA_ACTIVE 1 +#define WA_CLICKACTIVE 2 +#define WM_SETFOCUS 0x0007 +#define WM_KILLFOCUS 0x0008 +#define WM_ENABLE 0x000A +#define WM_SETREDRAW 0x000B +#define WM_SETTEXT 0x000C +#define WM_GETTEXT 0x000D +#define WM_GETTEXTLENGTH 0x000E +#define WM_PAINT 0x000F +#define WM_CLOSE 0x0010 +#define WM_QUERYENDSESSION 0x0011 +#define WM_QUERYOPEN 0x0013 +#define WM_ENDSESSION 0x0016 +#define WM_QUIT 0x0012 +#define WM_ERASEBKGND 0x0014 +#define WM_SYSCOLORCHANGE 0x0015 +#define WM_SHOWWINDOW 0x0018 +#define WM_WININICHANGE 0x001A +#define WM_SETTINGCHANGE WM_WININICHANGE +#define WM_DEVMODECHANGE 0x001B +#define WM_ACTIVATEAPP 0x001C +#define WM_FONTCHANGE 0x001D +#define WM_TIMECHANGE 0x001E +#define WM_CANCELMODE 0x001F +#define WM_SETCURSOR 0x0020 +#define WM_MOUSEACTIVATE 0x0021 +#define WM_CHILDACTIVATE 0x0022 +#define WM_QUEUESYNC 0x0023 +#define WM_GETMINMAXINFO 0x0024 + typedef struct tagMINMAXINFO { + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; + } MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO; +#define WM_PAINTICON 0x0026 +#define WM_ICONERASEBKGND 0x0027 +#define WM_NEXTDLGCTL 0x0028 +#define WM_SPOOLERSTATUS 0x002A +#define WM_DRAWITEM 0x002B +#define WM_MEASUREITEM 0x002C +#define WM_DELETEITEM 0x002D +#define WM_VKEYTOITEM 0x002E +#define WM_CHARTOITEM 0x002F +#define WM_SETFONT 0x0030 +#define WM_GETFONT 0x0031 +#define WM_SETHOTKEY 0x0032 +#define WM_GETHOTKEY 0x0033 +#define WM_QUERYDRAGICON 0x0037 +#define WM_COMPAREITEM 0x0039 +#define WM_GETOBJECT 0x003D +#define WM_COMPACTING 0x0041 +#define WM_COMMNOTIFY 0x0044 +#define WM_WINDOWPOSCHANGING 0x0046 +#define WM_WINDOWPOSCHANGED 0x0047 +#define WM_POWER 0x0048 +#define PWR_OK 1 +#define PWR_FAIL (-1) +#define PWR_SUSPENDREQUEST 1 +#define PWR_SUSPENDRESUME 2 +#define PWR_CRITICALRESUME 3 +#define WM_COPYDATA 0x004A +#define WM_CANCELJOURNAL 0x004B + typedef struct tagCOPYDATASTRUCT { + ULONG_PTR dwData; + DWORD cbData; + PVOID lpData; + } COPYDATASTRUCT,*PCOPYDATASTRUCT; + typedef struct tagMDINEXTMENU { + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; + } MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU; +#define WM_NOTIFY 0x004E +#define WM_INPUTLANGCHANGEREQUEST 0x0050 +#define WM_INPUTLANGCHANGE 0x0051 +#define WM_TCARD 0x0052 +#define WM_HELP 0x0053 +#define WM_USERCHANGED 0x0054 +#define WM_NOTIFYFORMAT 0x0055 +#define NFR_ANSI 1 +#define NFR_UNICODE 2 +#define NF_QUERY 3 +#define NF_REQUERY 4 +#define WM_CONTEXTMENU 0x007B +#define WM_STYLECHANGING 0x007C +#define WM_STYLECHANGED 0x007D +#define WM_DISPLAYCHANGE 0x007E +#define WM_GETICON 0x007F +#define WM_SETICON 0x0080 +#define WM_NCCREATE 0x0081 +#define WM_NCDESTROY 0x0082 +#define WM_NCCALCSIZE 0x0083 +#define WM_NCHITTEST 0x0084 +#define WM_NCPAINT 0x0085 +#define WM_NCACTIVATE 0x0086 +#define WM_GETDLGCODE 0x0087 +#define WM_SYNCPAINT 0x0088 +#define WM_NCMOUSEMOVE 0x00A0 +#define WM_NCLBUTTONDOWN 0x00A1 +#define WM_NCLBUTTONUP 0x00A2 +#define WM_NCLBUTTONDBLCLK 0x00A3 +#define WM_NCRBUTTONDOWN 0x00A4 +#define WM_NCRBUTTONUP 0x00A5 +#define WM_NCRBUTTONDBLCLK 0x00A6 +#define WM_NCMBUTTONDOWN 0x00A7 +#define WM_NCMBUTTONUP 0x00A8 +#define WM_NCMBUTTONDBLCLK 0x00A9 +#define WM_NCXBUTTONDOWN 0x00AB +#define WM_NCXBUTTONUP 0x00AC +#define WM_NCXBUTTONDBLCLK 0x00AD +#define WM_INPUT_DEVICE_CHANGE 0x00fe +#define WM_INPUT 0x00FF +#define WM_KEYFIRST 0x0100 +#define WM_KEYDOWN 0x0100 +#define WM_KEYUP 0x0101 +#define WM_CHAR 0x0102 +#define WM_DEADCHAR 0x0103 +#define WM_SYSKEYDOWN 0x0104 +#define WM_SYSKEYUP 0x0105 +#define WM_SYSCHAR 0x0106 +#define WM_SYSDEADCHAR 0x0107 +#define WM_UNICHAR 0x0109 +#define WM_KEYLAST 0x0109 +#define UNICODE_NOCHAR 0xFFFF +#define WM_IME_STARTCOMPOSITION 0x010D +#define WM_IME_ENDCOMPOSITION 0x010E +#define WM_IME_COMPOSITION 0x010F +#define WM_IME_KEYLAST 0x010F +#define WM_INITDIALOG 0x0110 +#define WM_COMMAND 0x0111 +#define WM_SYSCOMMAND 0x0112 +#define WM_TIMER 0x0113 +#define WM_HSCROLL 0x0114 +#define WM_VSCROLL 0x0115 +#define WM_INITMENU 0x0116 +#define WM_INITMENUPOPUP 0x0117 +#define WM_MENUSELECT 0x011F +#define WM_MENUCHAR 0x0120 +#define WM_ENTERIDLE 0x0121 +#define WM_MENURBUTTONUP 0x0122 +#define WM_MENUDRAG 0x0123 +#define WM_MENUGETOBJECT 0x0124 +#define WM_UNINITMENUPOPUP 0x0125 +#define WM_MENUCOMMAND 0x0126 +#define WM_CHANGEUISTATE 0x0127 +#define WM_UPDATEUISTATE 0x0128 +#define WM_QUERYUISTATE 0x0129 +#define UIS_SET 1 +#define UIS_CLEAR 2 +#define UIS_INITIALIZE 3 +#define UISF_HIDEFOCUS 0x1 +#define UISF_HIDEACCEL 0x2 +#define UISF_ACTIVE 0x4 +#define WM_CTLCOLORMSGBOX 0x0132 +#define WM_CTLCOLOREDIT 0x0133 +#define WM_CTLCOLORLISTBOX 0x0134 +#define WM_CTLCOLORBTN 0x0135 +#define WM_CTLCOLORDLG 0x0136 +#define WM_CTLCOLORSCROLLBAR 0x0137 +#define WM_CTLCOLORSTATIC 0x0138 +#define MN_GETHMENU 0x01E1 +#define WM_MOUSEFIRST 0x0200 +#define WM_MOUSEMOVE 0x0200 +#define WM_LBUTTONDOWN 0x0201 +#define WM_LBUTTONUP 0x0202 +#define WM_LBUTTONDBLCLK 0x0203 +#define WM_RBUTTONDOWN 0x0204 +#define WM_RBUTTONUP 0x0205 +#define WM_RBUTTONDBLCLK 0x0206 +#define WM_MBUTTONDOWN 0x0207 +#define WM_MBUTTONUP 0x0208 +#define WM_MBUTTONDBLCLK 0x0209 +#define WM_MOUSEWHEEL 0x020A +#define WM_XBUTTONDOWN 0x020B +#define WM_XBUTTONUP 0x020C +#define WM_XBUTTONDBLCLK 0x020D +#define WM_MOUSEHWHEEL 0x020e +#define WM_MOUSELAST 0x020e +#define WHEEL_DELTA 120 +#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam)) +#define WHEEL_PAGESCROLL (UINT_MAX) +#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam)) +#define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam)) +#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam)) +#define XBUTTON1 0x0001 +#define XBUTTON2 0x0002 +#define WM_PARENTNOTIFY 0x0210 +#define WM_ENTERMENULOOP 0x0211 +#define WM_EXITMENULOOP 0x0212 +#define WM_NEXTMENU 0x0213 +#define WM_SIZING 0x0214 +#define WM_CAPTURECHANGED 0x0215 +#define WM_MOVING 0x0216 +#define WM_POWERBROADCAST 0x0218 +#define PBT_APMQUERYSUSPEND 0x0000 +#define PBT_APMQUERYSTANDBY 0x0001 +#define PBT_APMQUERYSUSPENDFAILED 0x0002 +#define PBT_APMQUERYSTANDBYFAILED 0x0003 +#define PBT_APMSUSPEND 0x0004 +#define PBT_APMSTANDBY 0x0005 +#define PBT_APMRESUMECRITICAL 0x0006 +#define PBT_APMRESUMESUSPEND 0x0007 +#define PBT_APMRESUMESTANDBY 0x0008 +#define PBTF_APMRESUMEFROMFAILURE 0x00000001 +#define PBT_APMBATTERYLOW 0x0009 +#define PBT_APMPOWERSTATUSCHANGE 0x000A +#define PBT_APMOEMEVENT 0x000B +#define PBT_APMRESUMEAUTOMATIC 0x0012 +#define PBT_POWERSETTINGCHANGE 32787 + typedef struct { + GUID PowerSetting; + DWORD DataLength; + UCHAR Data[1]; + } POWERBROADCAST_SETTING,*PPOWERBROADCAST_SETTING; +#define WM_DEVICECHANGE 0x0219 +#define WM_MDICREATE 0x0220 +#define WM_MDIDESTROY 0x0221 +#define WM_MDIACTIVATE 0x0222 +#define WM_MDIRESTORE 0x0223 +#define WM_MDINEXT 0x0224 +#define WM_MDIMAXIMIZE 0x0225 +#define WM_MDITILE 0x0226 +#define WM_MDICASCADE 0x0227 +#define WM_MDIICONARRANGE 0x0228 +#define WM_MDIGETACTIVE 0x0229 +#define WM_MDISETMENU 0x0230 +#define WM_ENTERSIZEMOVE 0x0231 +#define WM_EXITSIZEMOVE 0x0232 +#define WM_DROPFILES 0x0233 +#define WM_MDIREFRESHMENU 0x0234 +#define WM_IME_SETCONTEXT 0x0281 +#define WM_IME_NOTIFY 0x0282 +#define WM_IME_CONTROL 0x0283 +#define WM_IME_COMPOSITIONFULL 0x0284 +#define WM_IME_SELECT 0x0285 +#define WM_IME_CHAR 0x0286 +#define WM_IME_REQUEST 0x0288 +#define WM_IME_KEYDOWN 0x0290 +#define WM_IME_KEYUP 0x0291 +#define WM_MOUSEHOVER 0x02A1 +#define WM_MOUSELEAVE 0x02A3 +#define WM_NCMOUSEHOVER 0x02A0 +#define WM_NCMOUSELEAVE 0x02A2 +#define WM_WTSSESSION_CHANGE 0x02B1 +#define WM_TABLET_FIRST 0x02c0 +#define WM_TABLET_LAST 0x02df +#define WM_CUT 0x0300 +#define WM_COPY 0x0301 +#define WM_PASTE 0x0302 +#define WM_CLEAR 0x0303 +#define WM_UNDO 0x0304 +#define WM_RENDERFORMAT 0x0305 +#define WM_RENDERALLFORMATS 0x0306 +#define WM_DESTROYCLIPBOARD 0x0307 +#define WM_DRAWCLIPBOARD 0x0308 +#define WM_PAINTCLIPBOARD 0x0309 +#define WM_VSCROLLCLIPBOARD 0x030A +#define WM_SIZECLIPBOARD 0x030B +#define WM_ASKCBFORMATNAME 0x030C +#define WM_CHANGECBCHAIN 0x030D +#define WM_HSCROLLCLIPBOARD 0x030E +#define WM_QUERYNEWPALETTE 0x030F +#define WM_PALETTEISCHANGING 0x0310 +#define WM_PALETTECHANGED 0x0311 +#define WM_HOTKEY 0x0312 +#define WM_PRINT 0x0317 +#define WM_PRINTCLIENT 0x0318 +#define WM_APPCOMMAND 0x0319 +#define WM_THEMECHANGED 0x031A +#define WM_CLIPBOARDUPDATE 0x031d +#define WM_DWMCOMPOSITIONCHANGED 0x031e +#define WM_DWMNCRENDERINGCHANGED 0x031f +#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320 +#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321 +#define WM_GETTITLEBARINFOEX 0x033f +#define WM_HANDHELDFIRST 0x0358 +#define WM_HANDHELDLAST 0x035F +#define WM_AFXFIRST 0x0360 +#define WM_AFXLAST 0x037F +#define WM_PENWINFIRST 0x0380 +#define WM_PENWINLAST 0x038F +#define WM_APP 0x8000 +#define WM_USER 0x0400 +#define WMSZ_LEFT 1 +#define WMSZ_RIGHT 2 +#define WMSZ_TOP 3 +#define WMSZ_TOPLEFT 4 +#define WMSZ_TOPRIGHT 5 +#define WMSZ_BOTTOM 6 +#define WMSZ_BOTTOMLEFT 7 +#define WMSZ_BOTTOMRIGHT 8 +#define HTERROR (-2) +#define HTTRANSPARENT (-1) +#define HTNOWHERE 0 +#define HTCLIENT 1 +#define HTCAPTION 2 +#define HTSYSMENU 3 +#define HTGROWBOX 4 +#define HTSIZE HTGROWBOX +#define HTMENU 5 +#define HTHSCROLL 6 +#define HTVSCROLL 7 +#define HTMINBUTTON 8 +#define HTMAXBUTTON 9 +#define HTLEFT 10 +#define HTRIGHT 11 +#define HTTOP 12 +#define HTTOPLEFT 13 +#define HTTOPRIGHT 14 +#define HTBOTTOM 15 +#define HTBOTTOMLEFT 16 +#define HTBOTTOMRIGHT 17 +#define HTBORDER 18 +#define HTREDUCE HTMINBUTTON +#define HTZOOM HTMAXBUTTON +#define HTSIZEFIRST HTLEFT +#define HTSIZELAST HTBOTTOMRIGHT +#define HTOBJECT 19 +#define HTCLOSE 20 +#define HTHELP 21 +#define SMTO_NORMAL 0x0000 +#define SMTO_BLOCK 0x0001 +#define SMTO_ABORTIFHUNG 0x0002 +#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008 +#define SMTO_ERRORONEXIT 0x0020 +#define MA_ACTIVATE 1 +#define MA_ACTIVATEANDEAT 2 +#define MA_NOACTIVATE 3 +#define MA_NOACTIVATEANDEAT 4 +#define ICON_SMALL 0 +#define ICON_BIG 1 +#define ICON_SMALL2 2 +#define RegisterWindowMessage __MINGW_NAME_AW(RegisterWindowMessage) + __declspec (dllimport) UINT __attribute__((__stdcall__)) RegisterWindowMessageA(LPCSTR lpString); + __declspec (dllimport) UINT __attribute__((__stdcall__)) RegisterWindowMessageW(LPCWSTR lpString); +#define SIZE_RESTORED 0 +#define SIZE_MINIMIZED 1 +#define SIZE_MAXIMIZED 2 +#define SIZE_MAXSHOW 3 +#define SIZE_MAXHIDE 4 +#define SIZENORMAL SIZE_RESTORED +#define SIZEICONIC SIZE_MINIMIZED +#define SIZEFULLSCREEN SIZE_MAXIMIZED +#define SIZEZOOMSHOW SIZE_MAXSHOW +#define SIZEZOOMHIDE SIZE_MAXHIDE + typedef struct tagWINDOWPOS { + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; + } WINDOWPOS,*LPWINDOWPOS,*PWINDOWPOS; + typedef struct tagNCCALCSIZE_PARAMS { + RECT rgrc[3]; + PWINDOWPOS lppos; + } NCCALCSIZE_PARAMS,*LPNCCALCSIZE_PARAMS; +#define WVR_ALIGNTOP 0x0010 +#define WVR_ALIGNLEFT 0x0020 +#define WVR_ALIGNBOTTOM 0x0040 +#define WVR_ALIGNRIGHT 0x0080 +#define WVR_HREDRAW 0x0100 +#define WVR_VREDRAW 0x0200 +#define WVR_REDRAW (WVR_HREDRAW | WVR_VREDRAW) +#define WVR_VALIDRECTS 0x0400 +#define MK_LBUTTON 0x0001 +#define MK_RBUTTON 0x0002 +#define MK_SHIFT 0x0004 +#define MK_CONTROL 0x0008 +#define MK_MBUTTON 0x0010 +#define MK_XBUTTON1 0x0020 +#define MK_XBUTTON2 0x0040 +#define TME_HOVER 0x00000001 +#define TME_LEAVE 0x00000002 +#define TME_NONCLIENT 0x00000010 +#define TME_QUERY 0x40000000 +#define TME_CANCEL 0x80000000 +#define HOVER_DEFAULT 0xFFFFFFFF + typedef struct tagTRACKMOUSEEVENT { + DWORD cbSize; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; + } TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); +#define WS_OVERLAPPED __MSABI_LONG(0x00000000) +#define WS_POPUP __MSABI_LONG(0x80000000) +#define WS_CHILD __MSABI_LONG(0x40000000) +#define WS_MINIMIZE __MSABI_LONG(0x20000000) +#define WS_VISIBLE __MSABI_LONG(0x10000000) +#define WS_DISABLED __MSABI_LONG(0x08000000) +#define WS_CLIPSIBLINGS __MSABI_LONG(0x04000000) +#define WS_CLIPCHILDREN __MSABI_LONG(0x02000000) +#define WS_MAXIMIZE __MSABI_LONG(0x01000000) +#define WS_CAPTION __MSABI_LONG(0x00C00000) +#define WS_BORDER __MSABI_LONG(0x00800000) +#define WS_DLGFRAME __MSABI_LONG(0x00400000) +#define WS_VSCROLL __MSABI_LONG(0x00200000) +#define WS_HSCROLL __MSABI_LONG(0x00100000) +#define WS_SYSMENU __MSABI_LONG(0x00080000) +#define WS_THICKFRAME __MSABI_LONG(0x00040000) +#define WS_GROUP __MSABI_LONG(0x00020000) +#define WS_TABSTOP __MSABI_LONG(0x00010000) +#define WS_MINIMIZEBOX __MSABI_LONG(0x00020000) +#define WS_MAXIMIZEBOX __MSABI_LONG(0x00010000) +#define WS_TILED WS_OVERLAPPED +#define WS_ICONIC WS_MINIMIZE +#define WS_SIZEBOX WS_THICKFRAME +#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW +#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX) +#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU) +#define WS_CHILDWINDOW (WS_CHILD) +#define WS_EX_DLGMODALFRAME __MSABI_LONG(0x00000001) +#define WS_EX_NOPARENTNOTIFY __MSABI_LONG(0x00000004) +#define WS_EX_TOPMOST __MSABI_LONG(0x00000008) +#define WS_EX_ACCEPTFILES __MSABI_LONG(0x00000010) +#define WS_EX_TRANSPARENT __MSABI_LONG(0x00000020) +#define WS_EX_MDICHILD __MSABI_LONG(0x00000040) +#define WS_EX_TOOLWINDOW __MSABI_LONG(0x00000080) +#define WS_EX_WINDOWEDGE __MSABI_LONG(0x00000100) +#define WS_EX_CLIENTEDGE __MSABI_LONG(0x00000200) +#define WS_EX_CONTEXTHELP __MSABI_LONG(0x00000400) +#define WS_EX_RIGHT __MSABI_LONG(0x00001000) +#define WS_EX_LEFT __MSABI_LONG(0x00000000) +#define WS_EX_RTLREADING __MSABI_LONG(0x00002000) +#define WS_EX_LTRREADING __MSABI_LONG(0x00000000) +#define WS_EX_LEFTSCROLLBAR __MSABI_LONG(0x00004000) +#define WS_EX_RIGHTSCROLLBAR __MSABI_LONG(0x00000000) +#define WS_EX_CONTROLPARENT __MSABI_LONG(0x00010000) +#define WS_EX_STATICEDGE __MSABI_LONG(0x00020000) +#define WS_EX_APPWINDOW __MSABI_LONG(0x00040000) +#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE) +#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST) +#define WS_EX_LAYERED 0x00080000 +#define WS_EX_NOINHERITLAYOUT __MSABI_LONG(0x00100000) +#define WS_EX_LAYOUTRTL __MSABI_LONG(0x00400000) +#define WS_EX_COMPOSITED __MSABI_LONG(0x02000000) +#define WS_EX_NOACTIVATE __MSABI_LONG(0x08000000) +#define CS_VREDRAW 0x0001 +#define CS_HREDRAW 0x0002 +#define CS_DBLCLKS 0x0008 +#define CS_OWNDC 0x0020 +#define CS_CLASSDC 0x0040 +#define CS_PARENTDC 0x0080 +#define CS_NOCLOSE 0x0200 +#define CS_SAVEBITS 0x0800 +#define CS_BYTEALIGNCLIENT 0x1000 +#define CS_BYTEALIGNWINDOW 0x2000 +#define CS_GLOBALCLASS 0x4000 +#define CS_IME 0x00010000 +#define CS_DROPSHADOW 0x00020000 +#define PRF_CHECKVISIBLE __MSABI_LONG(0x00000001) +#define PRF_NONCLIENT __MSABI_LONG(0x00000002) +#define PRF_CLIENT __MSABI_LONG(0x00000004) +#define PRF_ERASEBKGND __MSABI_LONG(0x00000008) +#define PRF_CHILDREN __MSABI_LONG(0x00000010) +#define PRF_OWNED __MSABI_LONG(0x00000020) +#define BDR_RAISEDOUTER 0x0001 +#define BDR_SUNKENOUTER 0x0002 +#define BDR_RAISEDINNER 0x0004 +#define BDR_SUNKENINNER 0x0008 +#define BDR_OUTER (BDR_RAISEDOUTER | BDR_SUNKENOUTER) +#define BDR_INNER (BDR_RAISEDINNER | BDR_SUNKENINNER) +#define BDR_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER) +#define BDR_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER) +#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER) +#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER) +#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER) +#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER) +#define BF_LEFT 0x0001 +#define BF_TOP 0x0002 +#define BF_RIGHT 0x0004 +#define BF_BOTTOM 0x0008 +#define BF_TOPLEFT (BF_TOP | BF_LEFT) +#define BF_TOPRIGHT (BF_TOP | BF_RIGHT) +#define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT) +#define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT) +#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM) +#define BF_DIAGONAL 0x0010 +#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT) +#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT) +#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT) +#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT) +#define BF_MIDDLE 0x0800 +#define BF_SOFT 0x1000 +#define BF_ADJUST 0x2000 +#define BF_FLAT 0x4000 +#define BF_MONO 0x8000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawEdge(HDC hdc,LPRECT qrc,UINT edge,UINT grfFlags); +#define DFC_CAPTION 1 +#define DFC_MENU 2 +#define DFC_SCROLL 3 +#define DFC_BUTTON 4 +#define DFC_POPUPMENU 5 +#define DFCS_CAPTIONCLOSE 0x0000 +#define DFCS_CAPTIONMIN 0x0001 +#define DFCS_CAPTIONMAX 0x0002 +#define DFCS_CAPTIONRESTORE 0x0003 +#define DFCS_CAPTIONHELP 0x0004 +#define DFCS_MENUARROW 0x0000 +#define DFCS_MENUCHECK 0x0001 +#define DFCS_MENUBULLET 0x0002 +#define DFCS_MENUARROWRIGHT 0x0004 +#define DFCS_SCROLLUP 0x0000 +#define DFCS_SCROLLDOWN 0x0001 +#define DFCS_SCROLLLEFT 0x0002 +#define DFCS_SCROLLRIGHT 0x0003 +#define DFCS_SCROLLCOMBOBOX 0x0005 +#define DFCS_SCROLLSIZEGRIP 0x0008 +#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010 +#define DFCS_BUTTONCHECK 0x0000 +#define DFCS_BUTTONRADIOIMAGE 0x0001 +#define DFCS_BUTTONRADIOMASK 0x0002 +#define DFCS_BUTTONRADIO 0x0004 +#define DFCS_BUTTON3STATE 0x0008 +#define DFCS_BUTTONPUSH 0x0010 +#define DFCS_INACTIVE 0x0100 +#define DFCS_PUSHED 0x0200 +#define DFCS_CHECKED 0x0400 +#define DFCS_TRANSPARENT 0x0800 +#define DFCS_HOT 0x1000 +#define DFCS_ADJUSTRECT 0x2000 +#define DFCS_FLAT 0x4000 +#define DFCS_MONO 0x8000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawFrameControl(HDC,LPRECT,UINT,UINT); +#define DC_ACTIVE 0x0001 +#define DC_SMALLCAP 0x0002 +#define DC_ICON 0x0004 +#define DC_TEXT 0x0008 +#define DC_INBUTTON 0x0010 +#define DC_GRADIENT 0x0020 +#define DC_BUTTONS 0x1000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawCaption(HWND hwnd,HDC hdc,const RECT *lprect,UINT flags); +#define IDANI_OPEN 1 +#define IDANI_CAPTION 3 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawAnimatedRects(HWND hwnd,int idAni,const RECT *lprcFrom,const RECT *lprcTo); +#define CF_TEXT 1 +#define CF_BITMAP 2 +#define CF_METAFILEPICT 3 +#define CF_SYLK 4 +#define CF_DIF 5 +#define CF_TIFF 6 +#define CF_OEMTEXT 7 +#define CF_DIB 8 +#define CF_PALETTE 9 +#define CF_PENDATA 10 +#define CF_RIFF 11 +#define CF_WAVE 12 +#define CF_UNICODETEXT 13 +#define CF_ENHMETAFILE 14 +#define CF_HDROP 15 +#define CF_LOCALE 16 +#define CF_DIBV5 17 +#define CF_MAX 18 +#define CF_OWNERDISPLAY 0x0080 +#define CF_DSPTEXT 0x0081 +#define CF_DSPBITMAP 0x0082 +#define CF_DSPMETAFILEPICT 0x0083 +#define CF_DSPENHMETAFILE 0x008E +#define CF_PRIVATEFIRST 0x0200 +#define CF_PRIVATELAST 0x02FF +#define CF_GDIOBJFIRST 0x0300 +#define CF_GDIOBJLAST 0x03FF +#define FVIRTKEY TRUE +#define FNOINVERT 0x02 +#define FSHIFT 0x04 +#define FCONTROL 0x08 +#define FALT 0x10 + typedef struct tagACCEL { + BYTE fVirt; + WORD key; + WORD cmd; + } ACCEL,*LPACCEL; + typedef struct tagPAINTSTRUCT { + HDC hdc; + WINBOOL fErase; + RECT rcPaint; + WINBOOL fRestore; + WINBOOL fIncUpdate; + BYTE rgbReserved[32]; + } PAINTSTRUCT,*PPAINTSTRUCT,*NPPAINTSTRUCT,*LPPAINTSTRUCT; + typedef struct tagCREATESTRUCTA { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCSTR lpszName; + LPCSTR lpszClass; + DWORD dwExStyle; + } CREATESTRUCTA,*LPCREATESTRUCTA; + typedef struct tagCREATESTRUCTW { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCWSTR lpszName; + LPCWSTR lpszClass; + DWORD dwExStyle; + } CREATESTRUCTW,*LPCREATESTRUCTW; + typedef CREATESTRUCTA CREATESTRUCT; + typedef LPCREATESTRUCTA LPCREATESTRUCT; + typedef struct tagWINDOWPLACEMENT { + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; + } WINDOWPLACEMENT; + typedef WINDOWPLACEMENT *PWINDOWPLACEMENT,*LPWINDOWPLACEMENT; +#define WPF_SETMINPOSITION 0x0001 +#define WPF_RESTORETOMAXIMIZED 0x0002 +#define WPF_ASYNCWINDOWPLACEMENT 0x0004 + typedef struct tagNMHDR { + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; + } NMHDR; + typedef NMHDR *LPNMHDR; + typedef struct tagSTYLESTRUCT { + DWORD styleOld; + DWORD styleNew; + } STYLESTRUCT,*LPSTYLESTRUCT; +#define ODT_MENU 1 +#define ODT_LISTBOX 2 +#define ODT_COMBOBOX 3 +#define ODT_BUTTON 4 +#define ODT_STATIC 5 +#define ODA_DRAWENTIRE 0x0001 +#define ODA_SELECT 0x0002 +#define ODA_FOCUS 0x0004 +#define ODS_SELECTED 0x0001 +#define ODS_GRAYED 0x0002 +#define ODS_DISABLED 0x0004 +#define ODS_CHECKED 0x0008 +#define ODS_FOCUS 0x0010 +#define ODS_DEFAULT 0x0020 +#define ODS_COMBOBOXEDIT 0x1000 +#define ODS_HOTLIGHT 0x0040 +#define ODS_INACTIVE 0x0080 +#define ODS_NOACCEL 0x0100 +#define ODS_NOFOCUSRECT 0x0200 + typedef struct tagMEASUREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + ULONG_PTR itemData; + } MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT; + typedef struct tagDRAWITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + ULONG_PTR itemData; + } DRAWITEMSTRUCT,*PDRAWITEMSTRUCT,*LPDRAWITEMSTRUCT; + typedef struct tagDELETEITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + ULONG_PTR itemData; + } DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT; + typedef struct tagCOMPAREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + ULONG_PTR itemData1; + UINT itemID2; + ULONG_PTR itemData2; + DWORD dwLocaleId; + } COMPAREITEMSTRUCT,*PCOMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT; +#define GetMessage __MINGW_NAME_AW(GetMessage) +#define DispatchMessage __MINGW_NAME_AW(DispatchMessage) +#define PeekMessage __MINGW_NAME_AW(PeekMessage) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TranslateMessage(const MSG *lpMsg); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DispatchMessageA(const MSG *lpMsg); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DispatchMessageW(const MSG *lpMsg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMessageQueue(int cMessagesMax); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PeekMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PeekMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg); +#define PM_NOREMOVE 0x0000 +#define PM_REMOVE 0x0001 +#define PM_NOYIELD 0x0002 +#define PM_QS_INPUT (QS_INPUT << 16) +#define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16) +#define PM_QS_PAINT (QS_PAINT << 16) +#define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterHotKey(HWND hWnd,int id); +#define MOD_ALT 0x0001 +#define MOD_CONTROL 0x0002 +#define MOD_SHIFT 0x0004 +#define MOD_WIN 0x0008 +#define IDHOT_SNAPWINDOW (-1) +#define IDHOT_SNAPDESKTOP (-2) +#define ENDSESSION_CLOSEAPP 0x00000001 +#define ENDSESSION_CRITICAL 0x40000000 +#define ENDSESSION_LOGOFF 0x80000000 +#define EWX_LOGOFF 0x00000000 +#define EWX_SHUTDOWN 0x00000001 +#define EWX_REBOOT 0x00000002 +#define EWX_FORCE 0x00000004 +#define EWX_POWEROFF 0x00000008 +#define EWX_FORCEIFHUNG 0x00000010 +#define EWX_QUICKRESOLVE 0x00000020 +#define EWX_RESTARTAPPS 0x00000040 +#define EWX_HYBRID_SHUTDOWN 0x00400000 +#define EWX_BOOTOPTIONS 0x01000000 +#define EWX_ARSO 0x04000000 +#define EWX_CHECK_SAFE_FOR_SERVER 0x08000000 +#define ExitWindows(dwReserved,Code) ExitWindowsEx(EWX_LOGOFF,0xFFFFFFFF) +#define SendMessage __MINGW_NAME_AW(SendMessage) +#define SendMessageTimeout __MINGW_NAME_AW(SendMessageTimeout) +#define SendNotifyMessage __MINGW_NAME_AW(SendNotifyMessage) +#define SendMessageCallback __MINGW_NAME_AW(SendMessageCallback) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ExitWindowsEx(UINT uFlags,DWORD dwReason); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SwapMouseButton(WINBOOL fSwap); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetMessagePos(void); + __declspec (dllimport) LONG __attribute__((__stdcall__)) GetMessageTime(void); + __declspec (dllimport) LPARAM __attribute__((__stdcall__)) GetMessageExtraInfo(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWow64Message(void); + __declspec (dllimport) LPARAM __attribute__((__stdcall__)) SetMessageExtraInfo(LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) SendMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) SendMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) SendMessageTimeoutA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) SendMessageTimeoutW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SendNotifyMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SendNotifyMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SendMessageCallbackA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SendMessageCallbackW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData); + typedef struct { + UINT cbSize; + HDESK hdesk; + HWND hwnd; + LUID luid; + } BSMINFO,*PBSMINFO; +#define BroadcastSystemMessageEx __MINGW_NAME_AW(BroadcastSystemMessageEx) +#define BroadcastSystemMessage __MINGW_NAME_AW(BroadcastSystemMessage) + __declspec (dllimport) long __attribute__((__stdcall__)) BroadcastSystemMessageExA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo); + __declspec (dllimport) long __attribute__((__stdcall__)) BroadcastSystemMessageExW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo); + __declspec (dllimport) long __attribute__((__stdcall__)) BroadcastSystemMessageA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) long __attribute__((__stdcall__)) BroadcastSystemMessageW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam); +#define BSM_ALLCOMPONENTS 0x00000000 +#define BSM_VXDS 0x00000001 +#define BSM_NETDRIVER 0x00000002 +#define BSM_INSTALLABLEDRIVERS 0x00000004 +#define BSM_APPLICATIONS 0x00000008 +#define BSM_ALLDESKTOPS 0x00000010 +#define BSF_QUERY 0x00000001 +#define BSF_IGNORECURRENTTASK 0x00000002 +#define BSF_FLUSHDISK 0x00000004 +#define BSF_NOHANG 0x00000008 +#define BSF_POSTMESSAGE 0x00000010 +#define BSF_FORCEIFHUNG 0x00000020 +#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040 +#define BSF_ALLOWSFW 0x00000080 +#define BSF_SENDNOTIFYMESSAGE 0x00000100 +#define BSF_RETURNHDESK 0x00000200 +#define BSF_LUID 0x00000400 +#define BROADCAST_QUERY_DENY 0x424D5144 + typedef PVOID HDEVNOTIFY; + typedef HDEVNOTIFY *PHDEVNOTIFY; +#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000 +#define DEVICE_NOTIFY_SERVICE_HANDLE 0x00000001 +#define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 0x00000004 +#define RegisterDeviceNotification __MINGW_NAME_AW(RegisterDeviceNotification) +#define PostMessage __MINGW_NAME_AW(PostMessage) +#define PostThreadMessage __MINGW_NAME_AW(PostThreadMessage) +#define PostAppMessage __MINGW_NAME_AW(PostAppMessage) +#define DefWindowProc __MINGW_NAME_AW(DefWindowProc) +#define CallWindowProc __MINGW_NAME_AW(CallWindowProc) +#define RegisterClass __MINGW_NAME_AW(RegisterClass) +#define UnregisterClass __MINGW_NAME_AW(UnregisterClass) +#define GetClassInfo __MINGW_NAME_AW(GetClassInfo) +#define RegisterClassEx __MINGW_NAME_AW(RegisterClassEx) +#define GetClassInfoEx __MINGW_NAME_AW(GetClassInfoEx) +#define _HPOWERNOTIFY_DEF_ + typedef HANDLE HPOWERNOTIFY; + typedef HPOWERNOTIFY *PHPOWERNOTIFY; + __declspec (dllimport) HPOWERNOTIFY __attribute__((__stdcall__)) RegisterPowerSettingNotification (HANDLE hRecipient, LPCGUID PowerSettingGuid, DWORD Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterPowerSettingNotification (HPOWERNOTIFY Handle); + __declspec (dllimport) HPOWERNOTIFY __attribute__((__stdcall__)) RegisterSuspendResumeNotification (HANDLE hRecipient, DWORD Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterSuspendResumeNotification (HPOWERNOTIFY Handle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PostMessageA (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PostMessageW (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PostThreadMessageA (DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PostThreadMessageW (DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam); +#define PostAppMessageA(idThread,wMsg,wParam,lParam) PostThreadMessageA ((DWORD)idThread, wMsg, wParam, lParam) +#define PostAppMessageW(idThread,wMsg,wParam,lParam) PostThreadMessageW ((DWORD)idThread, wMsg, wParam, lParam) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AttachThreadInput (DWORD idAttach, DWORD idAttachTo, WINBOOL fAttach); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReplyMessage (LRESULT lResult); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WaitMessage (void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WaitForInputIdle (HANDLE hProcess, DWORD dwMilliseconds); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefWindowProcA (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefWindowProcW (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); + __declspec (dllimport) void __attribute__((__stdcall__)) PostQuitMessage (int nExitCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InSendMessage (void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) InSendMessageEx (LPVOID lpReserved); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetDoubleClickTime (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDoubleClickTime (UINT); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) RegisterClassA (const WNDCLASSA *lpWndClass); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) RegisterClassW (const WNDCLASSW *lpWndClass); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterClassA (LPCSTR lpClassName, HINSTANCE hInstance); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterClassW (LPCWSTR lpClassName, HINSTANCE hInstance); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetClassInfoA (HINSTANCE hInstance, LPCSTR lpClassName, LPWNDCLASSA lpWndClass); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetClassInfoW (HINSTANCE hInstance, LPCWSTR lpClassName, LPWNDCLASSW lpWndClass); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) RegisterClassExA (const WNDCLASSEXA *); + __declspec (dllimport) ATOM __attribute__((__stdcall__)) RegisterClassExW (const WNDCLASSEXW *); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetClassInfoExA (HINSTANCE hInstance, LPCSTR lpszClass, LPWNDCLASSEXA lpwcx); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetClassInfoExW (HINSTANCE hInstance, LPCWSTR lpszClass, LPWNDCLASSEXW lpwcx); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) CallWindowProcA (WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) CallWindowProcW (WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +#define CW_USEDEFAULT ((int)0x80000000) +#define HWND_BROADCAST ((HWND)0xffff) +#define HWND_MESSAGE ((HWND)-3) +#define HWND_DESKTOP ((HWND)0) +#define ISMEX_NOSEND 0x00000000 +#define ISMEX_SEND 0x00000001 +#define ISMEX_NOTIFY 0x00000002 +#define ISMEX_CALLBACK 0x00000004 +#define ISMEX_REPLIED 0x00000008 + extern const GUID GUID_POWERSCHEME_PERSONALITY; + extern const GUID GUID_MIN_POWER_SAVINGS; + extern const GUID GUID_MAX_POWER_SAVINGS; + extern const GUID GUID_TYPICAL_POWER_SAVINGS; + extern const GUID GUID_ACDC_POWER_SOURCE; + extern const GUID GUID_BATTERY_PERCENTAGE_REMAINING; + extern const GUID GUID_IDLE_BACKGROUND_TASK; + extern const GUID GUID_SYSTEM_AWAYMODE; + extern const GUID GUID_MONITOR_POWER_ON; + __declspec (dllimport) HDEVNOTIFY __attribute__((__stdcall__)) RegisterDeviceNotificationA(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags); + __declspec (dllimport) HDEVNOTIFY __attribute__((__stdcall__)) RegisterDeviceNotificationW(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnregisterDeviceNotification(HDEVNOTIFY Handle); + typedef BOOLEAN (__attribute__((__stdcall__)) *PREGISTERCLASSNAMEW)(LPCWSTR); +#define CreateWindowEx __MINGW_NAME_AW(CreateWindowEx) +#define CreateWindow __MINGW_NAME_AW(CreateWindow) + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateWindowExA(DWORD dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam); + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateWindowExW(DWORD dwExStyle,LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam); +#define CreateWindowA(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExA((DWORD)0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) +#define CreateWindowW(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExW((DWORD)0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWindow(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsMenu(HMENU hMenu); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsChild(HWND hWndParent,HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyWindow(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShowWindow(HWND hWnd,int nCmdShow); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateLayeredWindow (HWND hWnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags); + typedef struct tagUPDATELAYEREDWINDOWINFO { + DWORD cbSize; + HDC hdcDst; + const POINT *pptDst; + const SIZE *psize; + HDC hdcSrc; + const POINT *pptSrc; + COLORREF crKey; + const BLENDFUNCTION *pblend; + DWORD dwFlags; + const RECT *prcDirty; + } UPDATELAYEREDWINDOWINFO,*PUPDATELAYEREDWINDOWINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateLayeredWindowIndirect (HWND hWnd, const UPDATELAYEREDWINDOWINFO *pULWInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetLayeredWindowAttributes (HWND hwnd, COLORREF *pcrKey, BYTE *pbAlpha, DWORD *pdwFlags); +#define PW_CLIENTONLY 0x00000001 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PrintWindow (HWND hwnd, HDC hdcBlt, UINT nFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetLayeredWindowAttributes (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags); +#define LWA_COLORKEY 0x00000001 +#define LWA_ALPHA 0x00000002 +#define ULW_COLORKEY 0x00000001 +#define ULW_ALPHA 0x00000002 +#define ULW_OPAQUE 0x00000004 +#define ULW_EX_NORESIZE 0x00000008 +#define FLASHW_STOP 0 +#define FLASHW_CAPTION 0x00000001 +#define FLASHW_TRAY 0x00000002 +#define FLASHW_ALL (FLASHW_CAPTION | FLASHW_TRAY) +#define FLASHW_TIMER 0x00000004 +#define FLASHW_TIMERNOFG 0x0000000c + typedef struct { + UINT cbSize; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; + } FLASHWINFO,*PFLASHWINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShowWindowAsync (HWND hWnd, int nCmdShow); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlashWindow (HWND hWnd, WINBOOL bInvert); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlashWindowEx (PFLASHWINFO pfwi); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShowOwnedPopups (HWND hWnd, WINBOOL fShow); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OpenIcon (HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseWindow (HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MoveWindow (HWND hWnd, int X, int Y, int nWidth, int nHeight, WINBOOL bRepaint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWindowPos (HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetWindowPlacement (HWND hWnd, WINDOWPLACEMENT *lpwndpl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWindowPlacement (HWND hWnd, const WINDOWPLACEMENT *lpwndpl); + __declspec (dllimport) HDWP __attribute__((__stdcall__)) BeginDeferWindowPos (int nNumWindows); + __declspec (dllimport) HDWP __attribute__((__stdcall__)) DeferWindowPos (HDWP hWinPosInfo, HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndDeferWindowPos (HDWP hWinPosInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWindowVisible (HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsIconic (HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AnyPopup (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BringWindowToTop (HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsZoomed (HWND hWnd); +#define SWP_NOSIZE 0x0001 +#define SWP_NOMOVE 0x0002 +#define SWP_NOZORDER 0x0004 +#define SWP_NOREDRAW 0x0008 +#define SWP_NOACTIVATE 0x0010 +#define SWP_FRAMECHANGED 0x0020 +#define SWP_SHOWWINDOW 0x0040 +#define SWP_HIDEWINDOW 0x0080 +#define SWP_NOCOPYBITS 0x0100 +#define SWP_NOOWNERZORDER 0x0200 +#define SWP_NOSENDCHANGING 0x0400 +#define SWP_DRAWFRAME SWP_FRAMECHANGED +#define SWP_NOREPOSITION SWP_NOOWNERZORDER +#define SWP_DEFERERASE 0x2000 +#define SWP_ASYNCWINDOWPOS 0x4000 +#define HWND_TOP ((HWND)0) +#define HWND_BOTTOM ((HWND)1) +#define HWND_TOPMOST ((HWND)-1) +#define HWND_NOTOPMOST ((HWND)-2) +#pragma pack(push,2) + typedef struct { + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; + } DLGTEMPLATE; + typedef DLGTEMPLATE *LPDLGTEMPLATEA; + typedef DLGTEMPLATE *LPDLGTEMPLATEW; + typedef LPDLGTEMPLATEA LPDLGTEMPLATE; + typedef const DLGTEMPLATE *LPCDLGTEMPLATEA; + typedef const DLGTEMPLATE *LPCDLGTEMPLATEW; + typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE; + typedef struct { + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; + } DLGITEMTEMPLATE; + typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA; + typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW; + typedef PDLGITEMTEMPLATEA PDLGITEMTEMPLATE; + typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA; + typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW; + typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE; +#pragma pack(pop) +#define CreateDialogParam __MINGW_NAME_AW(CreateDialogParam) +#define CreateDialogIndirectParam __MINGW_NAME_AW(CreateDialogIndirectParam) +#define CreateDialog __MINGW_NAME_AW(CreateDialog) +#define CreateDialogIndirect __MINGW_NAME_AW(CreateDialogIndirect) +#define DialogBoxParam __MINGW_NAME_AW(DialogBoxParam) +#define DialogBoxIndirectParam __MINGW_NAME_AW(DialogBoxIndirectParam) +#define DialogBox __MINGW_NAME_AW(DialogBox) +#define DialogBoxIndirect __MINGW_NAME_AW(DialogBoxIndirect) +#define SetDlgItemText __MINGW_NAME_AW(SetDlgItemText) +#define GetDlgItemText __MINGW_NAME_AW(GetDlgItemText) +#define SendDlgItemMessage __MINGW_NAME_AW(SendDlgItemMessage) +#define DefDlgProc __MINGW_NAME_AW(DefDlgProc) + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateDialogParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateDialogParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateDialogIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateDialogIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); +#define CreateDialogA(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamA(hInstance,lpName,hWndParent,lpDialogFunc,(LPARAM)0) +#define CreateDialogW(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamW(hInstance,lpName,hWndParent,lpDialogFunc,(LPARAM)0) +#define CreateDialogIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0) +#define CreateDialogIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0) + __declspec (dllimport) INT_PTR __attribute__((__stdcall__)) DialogBoxParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); + __declspec (dllimport) INT_PTR __attribute__((__stdcall__)) DialogBoxParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); + __declspec (dllimport) INT_PTR __attribute__((__stdcall__)) DialogBoxIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); + __declspec (dllimport) INT_PTR __attribute__((__stdcall__)) DialogBoxIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam); +#define DialogBoxA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0) +#define DialogBoxW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0) +#define DialogBoxIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0) +#define DialogBoxIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndDialog(HWND hDlg,INT_PTR nResult); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetDlgItem(HWND hDlg,int nIDDlgItem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDlgItemInt(HWND hDlg,int nIDDlgItem,UINT uValue,WINBOOL bSigned); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetDlgItemInt(HWND hDlg,int nIDDlgItem,WINBOOL *lpTranslated,WINBOOL bSigned); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPCSTR lpString); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPCWSTR lpString); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPSTR lpString,int cchMax); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPWSTR lpString,int cchMax); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckDlgButton(HWND hDlg,int nIDButton,UINT uCheck); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckRadioButton(HWND hDlg,int nIDFirstButton,int nIDLastButton,int nIDCheckButton); + __declspec (dllimport) UINT __attribute__((__stdcall__)) IsDlgButtonChecked(HWND hDlg,int nIDButton); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) SendDlgItemMessageA(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) SendDlgItemMessageW(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetNextDlgGroupItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetNextDlgTabItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDlgCtrlID(HWND hWnd); + __declspec (dllimport) long __attribute__((__stdcall__)) GetDialogBaseUnits(void); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefDlgProcA(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefDlgProcW(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam); + typedef enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS { + DCDC_DEFAULT = 0x0000, + DCDC_DISABLE_FONT_UPDATE = 0x0001, + DCDC_DISABLE_RELAYOUT = 0x0002 + } DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS; +WINBOOL __attribute__((__stdcall__)) SetDialogControlDpiChangeBehavior(HWND hWnd, DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS mask, DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS values); +DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS __attribute__((__stdcall__)) GetDialogControlDpiChangeBehavior(HWND hWnd); + typedef enum DIALOG_DPI_CHANGE_BEHAVIORS { + DDC_DEFAULT = 0x0000, + DDC_DISABLE_ALL = 0x0001, + DDC_DISABLE_RESIZE = 0x0002, + DDC_DISABLE_CONTROL_RELAYOUT = 0x0004 + } DIALOG_DPI_CHANGE_BEHAVIORS; +WINBOOL __attribute__((__stdcall__)) SetDialogDpiChangeBehavior(HWND hDlg, DIALOG_DPI_CHANGE_BEHAVIORS mask, DIALOG_DPI_CHANGE_BEHAVIORS values); +DIALOG_DPI_CHANGE_BEHAVIORS __attribute__((__stdcall__)) GetDialogDpiChangeBehavior(HWND hDlg); +#define DLGWINDOWEXTRA 30 +#define CallMsgFilter __MINGW_NAME_AW(CallMsgFilter) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CallMsgFilterA(LPMSG lpMsg,int nCode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CallMsgFilterW(LPMSG lpMsg,int nCode); +#define RegisterClipboardFormat __MINGW_NAME_AW(RegisterClipboardFormat) +#define GetClipboardFormatName __MINGW_NAME_AW(GetClipboardFormatName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OpenClipboard(HWND hWndNewOwner); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseClipboard(void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetClipboardSequenceNumber(void); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetClipboardOwner(void); + __declspec (dllimport) HWND __attribute__((__stdcall__)) SetClipboardViewer(HWND hWndNewViewer); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetClipboardViewer(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeClipboardChain(HWND hWndRemove, HWND hWndNewNext); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) SetClipboardData(UINT uFormat, HANDLE hMem); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) GetClipboardData(UINT uFormat); + __declspec (dllimport) UINT __attribute__((__stdcall__)) RegisterClipboardFormatA(LPCSTR lpszFormat); + __declspec (dllimport) UINT __attribute__((__stdcall__)) RegisterClipboardFormatW(LPCWSTR lpszFormat); + __declspec (dllimport) int __attribute__((__stdcall__)) CountClipboardFormats(void); + __declspec (dllimport) UINT __attribute__((__stdcall__)) EnumClipboardFormats(UINT format); + __declspec (dllimport) int __attribute__((__stdcall__)) GetClipboardFormatNameA(UINT format, LPSTR lpszFormatName, int cchMaxCount); + __declspec (dllimport) int __attribute__((__stdcall__)) GetClipboardFormatNameW(UINT format, LPWSTR lpszFormatName, int cchMaxCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EmptyClipboard(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsClipboardFormatAvailable(UINT format); + __declspec (dllimport) int __attribute__((__stdcall__)) GetPriorityClipboardFormat(UINT *paFormatPriorityList, int cFormats); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetOpenClipboardWindow(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddClipboardFormatListener (HWND hwnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveClipboardFormatListener (HWND hwnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUpdatedClipboardFormats (PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut); +#define CharToOem __MINGW_NAME_AW(CharToOem) +#define OemToChar __MINGW_NAME_AW(OemToChar) +#define CharToOemBuff __MINGW_NAME_AW(CharToOemBuff) +#define OemToCharBuff __MINGW_NAME_AW(OemToCharBuff) +#define CharUpper __MINGW_NAME_AW(CharUpper) +#define CharUpperBuff __MINGW_NAME_AW(CharUpperBuff) +#define CharLower __MINGW_NAME_AW(CharLower) +#define CharLowerBuff __MINGW_NAME_AW(CharLowerBuff) +#define CharNext __MINGW_NAME_AW(CharNext) +#define CharPrev __MINGW_NAME_AW(CharPrev) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CharToOemA(LPCSTR lpszSrc,LPSTR lpszDst); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CharToOemW(LPCWSTR lpszSrc,LPSTR lpszDst); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OemToCharA(LPCSTR lpszSrc,LPSTR lpszDst); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OemToCharW(LPCSTR lpszSrc,LPWSTR lpszDst); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CharToOemBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CharToOemBuffW(LPCWSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OemToCharBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OemToCharBuffW(LPCSTR lpszSrc,LPWSTR lpszDst,DWORD cchDstLength); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) CharUpperA(LPSTR lpsz); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) CharUpperW(LPWSTR lpsz); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CharUpperBuffA(LPSTR lpsz,DWORD cchLength); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CharUpperBuffW(LPWSTR lpsz,DWORD cchLength); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) CharLowerA(LPSTR lpsz); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) CharLowerW(LPWSTR lpsz); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CharLowerBuffA(LPSTR lpsz,DWORD cchLength); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CharLowerBuffW(LPWSTR lpsz,DWORD cchLength); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) CharNextA(LPCSTR lpsz); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) CharNextW(LPCWSTR lpsz); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) CharPrevA(LPCSTR lpszStart,LPCSTR lpszCurrent); + __declspec (dllimport) LPWSTR __attribute__((__stdcall__)) CharPrevW(LPCWSTR lpszStart,LPCWSTR lpszCurrent); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) CharNextExA(WORD CodePage,LPCSTR lpCurrentChar,DWORD dwFlags); + __declspec (dllimport) LPSTR __attribute__((__stdcall__)) CharPrevExA(WORD CodePage,LPCSTR lpStart,LPCSTR lpCurrentChar,DWORD dwFlags); +#define AnsiToOem CharToOemA +#define OemToAnsi OemToCharA +#define AnsiToOemBuff CharToOemBuffA +#define OemToAnsiBuff OemToCharBuffA +#define AnsiUpper CharUpperA +#define AnsiUpperBuff CharUpperBuffA +#define AnsiLower CharLowerA +#define AnsiLowerBuff CharLowerBuffA +#define AnsiNext CharNextA +#define AnsiPrev CharPrevA +#define IsCharAlpha __MINGW_NAME_AW(IsCharAlpha) +#define IsCharAlphaNumeric __MINGW_NAME_AW(IsCharAlphaNumeric) +#define IsCharUpper __MINGW_NAME_AW(IsCharUpper) +#define IsCharLower __MINGW_NAME_AW(IsCharLower) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharAlphaA(CHAR ch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharAlphaW(WCHAR ch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharAlphaNumericA(CHAR ch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharAlphaNumericW(WCHAR ch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharUpperA(CHAR ch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharUpperW(WCHAR ch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharLowerA(CHAR ch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsCharLowerW(WCHAR ch); +#define GetKeyNameText __MINGW_NAME_AW(GetKeyNameText) +#define VkKeyScan __MINGW_NAME_AW(VkKeyScan) +#define VkKeyScanEx __MINGW_NAME_AW(VkKeyScanEx) + __declspec (dllimport) HWND __attribute__((__stdcall__)) SetFocus(HWND hWnd); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetActiveWindow(void); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetFocus(void); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetKBCodePage(void); + __declspec (dllimport) SHORT __attribute__((__stdcall__)) GetKeyState(int nVirtKey); + __declspec (dllimport) SHORT __attribute__((__stdcall__)) GetAsyncKeyState(int vKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetKeyboardState(PBYTE lpKeyState); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetKeyboardState(LPBYTE lpKeyState); + __declspec (dllimport) int __attribute__((__stdcall__)) GetKeyNameTextA(LONG lParam,LPSTR lpString,int cchSize); + __declspec (dllimport) int __attribute__((__stdcall__)) GetKeyNameTextW(LONG lParam,LPWSTR lpString,int cchSize); + __declspec (dllimport) int __attribute__((__stdcall__)) GetKeyboardType(int nTypeFlag); + __declspec (dllimport) int __attribute__((__stdcall__)) ToAscii(UINT uVirtKey,UINT uScanCode,const BYTE *lpKeyState,LPWORD lpChar,UINT uFlags); + __declspec (dllimport) int __attribute__((__stdcall__)) ToAsciiEx(UINT uVirtKey,UINT uScanCode,const BYTE *lpKeyState,LPWORD lpChar,UINT uFlags,HKL dwhkl); + __declspec (dllimport) int __attribute__((__stdcall__)) ToUnicode(UINT wVirtKey,UINT wScanCode,const BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) OemKeyScan(WORD wOemChar); + __declspec (dllimport) SHORT __attribute__((__stdcall__)) VkKeyScanA(CHAR ch); + __declspec (dllimport) SHORT __attribute__((__stdcall__)) VkKeyScanW(WCHAR ch); + __declspec (dllimport) SHORT __attribute__((__stdcall__)) VkKeyScanExA(CHAR ch,HKL dwhkl); + __declspec (dllimport) SHORT __attribute__((__stdcall__)) VkKeyScanExW(WCHAR ch,HKL dwhkl); + __declspec (dllimport) void __attribute__((__stdcall__)) keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,ULONG_PTR dwExtraInfo); +#define KEYEVENTF_EXTENDEDKEY 0x0001 +#define KEYEVENTF_KEYUP 0x0002 +#define KEYEVENTF_UNICODE 0x0004 +#define KEYEVENTF_SCANCODE 0x0008 +#define MOUSEEVENTF_MOVE 0x0001 +#define MOUSEEVENTF_LEFTDOWN 0x0002 +#define MOUSEEVENTF_LEFTUP 0x0004 +#define MOUSEEVENTF_RIGHTDOWN 0x0008 +#define MOUSEEVENTF_RIGHTUP 0x0010 +#define MOUSEEVENTF_MIDDLEDOWN 0x0020 +#define MOUSEEVENTF_MIDDLEUP 0x0040 +#define MOUSEEVENTF_XDOWN 0x0080 +#define MOUSEEVENTF_XUP 0x0100 +#define MOUSEEVENTF_WHEEL 0x0800 +#define MOUSEEVENTF_HWHEEL 0x01000 +#define MOUSEEVENTF_MOVE_NOCOALESCE 0x2000 +#define MOUSEEVENTF_VIRTUALDESK 0x4000 +#define MOUSEEVENTF_ABSOLUTE 0x8000 +#define INPUT_MOUSE 0 +#define INPUT_KEYBOARD 1 +#define INPUT_HARDWARE 2 + __declspec (dllimport) void __attribute__((__stdcall__)) mouse_event(DWORD dwFlags,DWORD dx,DWORD dy,DWORD dwData,ULONG_PTR dwExtraInfo); + typedef struct tagMOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; + } MOUSEINPUT,*PMOUSEINPUT,*LPMOUSEINPUT; + typedef struct tagKEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; + } KEYBDINPUT,*PKEYBDINPUT,*LPKEYBDINPUT; + typedef struct tagHARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; + } HARDWAREINPUT,*PHARDWAREINPUT,*LPHARDWAREINPUT; + typedef struct tagINPUT { + DWORD type; + __extension__ union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; + } ; + } INPUT,*PINPUT,*LPINPUT; + __declspec (dllimport) UINT __attribute__((__stdcall__)) SendInput(UINT cInputs,LPINPUT pInputs,int cbSize); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnableMouseInPointerForThread(void); + typedef struct tagLASTINPUTINFO { + UINT cbSize; + DWORD dwTime; + } LASTINPUTINFO,*PLASTINPUTINFO; +#define MapVirtualKey __MINGW_NAME_AW(MapVirtualKey) +#define MapVirtualKeyEx __MINGW_NAME_AW(MapVirtualKeyEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetLastInputInfo(PLASTINPUTINFO plii); + __declspec (dllimport) UINT __attribute__((__stdcall__)) MapVirtualKeyA(UINT uCode,UINT uMapType); + __declspec (dllimport) UINT __attribute__((__stdcall__)) MapVirtualKeyW(UINT uCode,UINT uMapType); + __declspec (dllimport) UINT __attribute__((__stdcall__)) MapVirtualKeyExA(UINT uCode,UINT uMapType,HKL dwhkl); + __declspec (dllimport) UINT __attribute__((__stdcall__)) MapVirtualKeyExW(UINT uCode,UINT uMapType,HKL dwhkl); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetInputState(void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetQueueStatus(UINT flags); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetCapture(void); + __declspec (dllimport) HWND __attribute__((__stdcall__)) SetCapture(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReleaseCapture(void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) MsgWaitForMultipleObjects(DWORD nCount,const HANDLE *pHandles,WINBOOL fWaitAll,DWORD dwMilliseconds,DWORD dwWakeMask); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) MsgWaitForMultipleObjectsEx(DWORD nCount,const HANDLE *pHandles,DWORD dwMilliseconds,DWORD dwWakeMask,DWORD dwFlags); +#define MAPVK_VK_TO_VSC (0) +#define MAPVK_VSC_TO_VK (1) +#define MAPVK_VK_TO_CHAR (2) +#define MAPVK_VSC_TO_VK_EX (3) +#define MAPVK_VK_TO_VSC_EX (4) +#define MWMO_WAITALL 0x0001 +#define MWMO_ALERTABLE 0x0002 +#define MWMO_INPUTAVAILABLE 0x0004 +#define QS_KEY 0x0001 +#define QS_MOUSEMOVE 0x0002 +#define QS_MOUSEBUTTON 0x0004 +#define QS_POSTMESSAGE 0x0008 +#define QS_TIMER 0x0010 +#define QS_PAINT 0x0020 +#define QS_SENDMESSAGE 0x0040 +#define QS_HOTKEY 0x0080 +#define QS_ALLPOSTMESSAGE 0x0100 +#define QS_RAWINPUT 0x0400 +#define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON) +#define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT) +#define QS_ALLEVENTS (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY) +#define QS_ALLINPUT (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE) +#define USER_TIMER_MAXIMUM 0x7FFFFFFF +#define USER_TIMER_MINIMUM 0x0000000A +#define LoadAccelerators __MINGW_NAME_AW(LoadAccelerators) +#define CreateAcceleratorTable __MINGW_NAME_AW(CreateAcceleratorTable) +#define CopyAcceleratorTable __MINGW_NAME_AW(CopyAcceleratorTable) + __declspec (dllimport) UINT_PTR __attribute__((__stdcall__)) SetTimer(HWND hWnd,UINT_PTR nIDEvent,UINT uElapse,TIMERPROC lpTimerFunc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) KillTimer(HWND hWnd,UINT_PTR uIDEvent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWindowUnicode(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnableWindow(HWND hWnd,WINBOOL bEnable); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWindowEnabled(HWND hWnd); + __declspec (dllimport) HACCEL __attribute__((__stdcall__)) LoadAcceleratorsA(HINSTANCE hInstance,LPCSTR lpTableName); + __declspec (dllimport) HACCEL __attribute__((__stdcall__)) LoadAcceleratorsW(HINSTANCE hInstance,LPCWSTR lpTableName); + __declspec (dllimport) HACCEL __attribute__((__stdcall__)) CreateAcceleratorTableA(LPACCEL paccel,int cAccel); + __declspec (dllimport) HACCEL __attribute__((__stdcall__)) CreateAcceleratorTableW(LPACCEL paccel,int cAccel); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyAcceleratorTable(HACCEL hAccel); + __declspec (dllimport) int __attribute__((__stdcall__)) CopyAcceleratorTableA(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries); + __declspec (dllimport) int __attribute__((__stdcall__)) CopyAcceleratorTableW(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries); +#define TranslateAccelerator __MINGW_NAME_AW(TranslateAccelerator) + __declspec (dllimport) int __attribute__((__stdcall__)) TranslateAcceleratorA(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg); + __declspec (dllimport) int __attribute__((__stdcall__)) TranslateAcceleratorW(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg); +#define SM_CXSCREEN 0 +#define SM_CYSCREEN 1 +#define SM_CXVSCROLL 2 +#define SM_CYHSCROLL 3 +#define SM_CYCAPTION 4 +#define SM_CXBORDER 5 +#define SM_CYBORDER 6 +#define SM_CXDLGFRAME 7 +#define SM_CYDLGFRAME 8 +#define SM_CYVTHUMB 9 +#define SM_CXHTHUMB 10 +#define SM_CXICON 11 +#define SM_CYICON 12 +#define SM_CXCURSOR 13 +#define SM_CYCURSOR 14 +#define SM_CYMENU 15 +#define SM_CXFULLSCREEN 16 +#define SM_CYFULLSCREEN 17 +#define SM_CYKANJIWINDOW 18 +#define SM_MOUSEPRESENT 19 +#define SM_CYVSCROLL 20 +#define SM_CXHSCROLL 21 +#define SM_DEBUG 22 +#define SM_SWAPBUTTON 23 +#define SM_RESERVED1 24 +#define SM_RESERVED2 25 +#define SM_RESERVED3 26 +#define SM_RESERVED4 27 +#define SM_CXMIN 28 +#define SM_CYMIN 29 +#define SM_CXSIZE 30 +#define SM_CYSIZE 31 +#define SM_CXFRAME 32 +#define SM_CYFRAME 33 +#define SM_CXMINTRACK 34 +#define SM_CYMINTRACK 35 +#define SM_CXDOUBLECLK 36 +#define SM_CYDOUBLECLK 37 +#define SM_CXICONSPACING 38 +#define SM_CYICONSPACING 39 +#define SM_MENUDROPALIGNMENT 40 +#define SM_PENWINDOWS 41 +#define SM_DBCSENABLED 42 +#define SM_CMOUSEBUTTONS 43 +#define SM_CXFIXEDFRAME SM_CXDLGFRAME +#define SM_CYFIXEDFRAME SM_CYDLGFRAME +#define SM_CXSIZEFRAME SM_CXFRAME +#define SM_CYSIZEFRAME SM_CYFRAME +#define SM_SECURE 44 +#define SM_CXEDGE 45 +#define SM_CYEDGE 46 +#define SM_CXMINSPACING 47 +#define SM_CYMINSPACING 48 +#define SM_CXSMICON 49 +#define SM_CYSMICON 50 +#define SM_CYSMCAPTION 51 +#define SM_CXSMSIZE 52 +#define SM_CYSMSIZE 53 +#define SM_CXMENUSIZE 54 +#define SM_CYMENUSIZE 55 +#define SM_ARRANGE 56 +#define SM_CXMINIMIZED 57 +#define SM_CYMINIMIZED 58 +#define SM_CXMAXTRACK 59 +#define SM_CYMAXTRACK 60 +#define SM_CXMAXIMIZED 61 +#define SM_CYMAXIMIZED 62 +#define SM_NETWORK 63 +#define SM_CLEANBOOT 67 +#define SM_CXDRAG 68 +#define SM_CYDRAG 69 +#define SM_SHOWSOUNDS 70 +#define SM_CXMENUCHECK 71 +#define SM_CYMENUCHECK 72 +#define SM_SLOWMACHINE 73 +#define SM_MIDEASTENABLED 74 +#define SM_MOUSEWHEELPRESENT 75 +#define SM_XVIRTUALSCREEN 76 +#define SM_YVIRTUALSCREEN 77 +#define SM_CXVIRTUALSCREEN 78 +#define SM_CYVIRTUALSCREEN 79 +#define SM_CMONITORS 80 +#define SM_SAMEDISPLAYFORMAT 81 +#define SM_IMMENABLED 82 +#define SM_CXFOCUSBORDER 83 +#define SM_CYFOCUSBORDER 84 +#define SM_TABLETPC 86 +#define SM_MEDIACENTER 87 +#define SM_STARTER 88 +#define SM_SERVERR2 89 +#define SM_MOUSEHORIZONTALWHEELPRESENT 91 +#define SM_CXPADDEDBORDER 92 +#define SM_CMETRICS 93 +#define SM_REMOTESESSION 0x1000 +#define SM_SHUTTINGDOWN 0x2000 +#define SM_REMOTECONTROL 0x2001 +#define SM_CARETBLINKINGENABLED 0x2002 + __declspec (dllimport) int __attribute__((__stdcall__)) GetSystemMetrics(int nIndex); +#define PMB_ACTIVE 0x00000001 +#define MNC_IGNORE 0 +#define MNC_CLOSE 1 +#define MNC_EXECUTE 2 +#define MNC_SELECT 3 +#define MNS_NOCHECK 0x80000000 +#define MNS_MODELESS 0x40000000 +#define MNS_DRAGDROP 0x20000000 +#define MNS_AUTODISMISS 0x10000000 +#define MNS_NOTIFYBYPOS 0x08000000 +#define MNS_CHECKORBMP 0x04000000 +#define MIM_MAXHEIGHT 0x00000001 +#define MIM_BACKGROUND 0x00000002 +#define MIM_HELPID 0x00000004 +#define MIM_MENUDATA 0x00000008 +#define MIM_STYLE 0x00000010 +#define MIM_APPLYTOSUBMENUS 0x80000000 +#define MND_CONTINUE 0 +#define MND_ENDMENU 1 +#define MNGOF_TOPGAP 0x00000001 +#define MNGOF_BOTTOMGAP 0x00000002 +#define MNGO_NOINTERFACE 0x00000000 +#define MNGO_NOERROR 0x00000001 +#define MIIM_STATE 0x00000001 +#define MIIM_ID 0x00000002 +#define MIIM_SUBMENU 0x00000004 +#define MIIM_CHECKMARKS 0x00000008 +#define MIIM_TYPE 0x00000010 +#define MIIM_DATA 0x00000020 +#define MIIM_STRING 0x00000040 +#define MIIM_BITMAP 0x00000080 +#define MIIM_FTYPE 0x00000100 +#define HBMMENU_CALLBACK ((HBITMAP) -1) +#define HBMMENU_SYSTEM ((HBITMAP) 1) +#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2) +#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3) +#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5) +#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6) +#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7) +#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8) +#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9) +#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10) +#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11) +#define LoadMenu __MINGW_NAME_AW(LoadMenu) +#define LoadMenuIndirect __MINGW_NAME_AW(LoadMenuIndirect) +#define ChangeMenu __MINGW_NAME_AW(ChangeMenu) +#define GetMenuString __MINGW_NAME_AW(GetMenuString) +#define InsertMenu __MINGW_NAME_AW(InsertMenu) +#define AppendMenu __MINGW_NAME_AW(AppendMenu) +#define ModifyMenu __MINGW_NAME_AW(ModifyMenu) + __declspec (dllimport) HMENU __attribute__((__stdcall__)) LoadMenuA(HINSTANCE hInstance,LPCSTR lpMenuName); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) LoadMenuW(HINSTANCE hInstance,LPCWSTR lpMenuName); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) LoadMenuIndirectA(const MENUTEMPLATEA *lpMenuTemplate); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) LoadMenuIndirectW(const MENUTEMPLATEW *lpMenuTemplate); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) GetMenu(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMenu(HWND hWnd,HMENU hMenu); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeMenuA(HMENU hMenu,UINT cmd,LPCSTR lpszNewItem,UINT cmdInsert,UINT flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeMenuW(HMENU hMenu,UINT cmd,LPCWSTR lpszNewItem,UINT cmdInsert,UINT flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HiliteMenuItem(HWND hWnd,HMENU hMenu,UINT uIDHiliteItem,UINT uHilite); + __declspec (dllimport) int __attribute__((__stdcall__)) GetMenuStringA(HMENU hMenu,UINT uIDItem,LPSTR lpString,int cchMax,UINT flags); + __declspec (dllimport) int __attribute__((__stdcall__)) GetMenuStringW(HMENU hMenu,UINT uIDItem,LPWSTR lpString,int cchMax,UINT flags); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetMenuState(HMENU hMenu,UINT uId,UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawMenuBar(HWND hWnd); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) GetSystemMenu(HWND hWnd,WINBOOL bRevert); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) CreateMenu(void); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) CreatePopupMenu(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyMenu(HMENU hMenu); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CheckMenuItem(HMENU hMenu,UINT uIDCheckItem,UINT uCheck); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable); + __declspec (dllimport) HMENU __attribute__((__stdcall__)) GetSubMenu(HMENU hMenu,int nPos); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetMenuItemID(HMENU hMenu,int nPos); + __declspec (dllimport) int __attribute__((__stdcall__)) GetMenuItemCount(HMENU hMenu); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InsertMenuA(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InsertMenuW(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AppendMenuA(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AppendMenuW(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ModifyMenuA(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ModifyMenuW(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMenuItemBitmaps(HMENU hMenu,UINT uPosition,UINT uFlags,HBITMAP hBitmapUnchecked,HBITMAP hBitmapChecked); + __declspec (dllimport) LONG __attribute__((__stdcall__)) GetMenuCheckMarkDimensions(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,HWND hWnd,const RECT *prcRect); + typedef struct tagTPMPARAMS { + UINT cbSize; + RECT rcExclude; + } TPMPARAMS; + typedef struct tagMENUINFO { + DWORD cbSize; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; + } MENUINFO,*LPMENUINFO; + typedef TPMPARAMS *LPTPMPARAMS; + typedef MENUINFO const *LPCMENUINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMenuInfo(HMENU,LPMENUINFO); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMenuInfo(HMENU,LPCMENUINFO); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndMenu(void); + typedef struct tagMENUGETOBJECTINFO { + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; + } MENUGETOBJECTINFO,*PMENUGETOBJECTINFO; + typedef struct tagMENUITEMINFOA { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; + } MENUITEMINFOA,*LPMENUITEMINFOA; + typedef struct tagMENUITEMINFOW { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPWSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; + } MENUITEMINFOW,*LPMENUITEMINFOW; + typedef MENUITEMINFOA MENUITEMINFO; + typedef LPMENUITEMINFOA LPMENUITEMINFO; + typedef MENUITEMINFOA const *LPCMENUITEMINFOA; + typedef MENUITEMINFOW const *LPCMENUITEMINFOW; + typedef LPCMENUITEMINFOA LPCMENUITEMINFO; +#define InsertMenuItem __MINGW_NAME_AW(InsertMenuItem) +#define GetMenuItemInfo __MINGW_NAME_AW(GetMenuItemInfo) +#define SetMenuItemInfo __MINGW_NAME_AW(SetMenuItemInfo) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InsertMenuItemA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOA lpmi); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InsertMenuItemW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOW lpmi); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOA lpmii); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOW lpmii); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOA lpmii); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOW lpmii); +#define GMDI_USEDISABLED __MSABI_LONG(0x0001) +#define GMDI_GOINTOPOPUPS __MSABI_LONG(0x0002) + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetMenuDefaultItem(HMENU hMenu,UINT fByPos,UINT gmdiFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMenuDefaultItem(HMENU hMenu,UINT uItem,UINT fByPos); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMenuItemRect(HWND hWnd,HMENU hMenu,UINT uItem,LPRECT lprcItem); + __declspec (dllimport) int __attribute__((__stdcall__)) MenuItemFromPoint(HWND hWnd,HMENU hMenu,POINT ptScreen); +#define TPM_LEFTBUTTON __MSABI_LONG(0x0000) +#define TPM_RIGHTBUTTON __MSABI_LONG(0x0002) +#define TPM_LEFTALIGN __MSABI_LONG(0x0000) +#define TPM_CENTERALIGN __MSABI_LONG(0x0004) +#define TPM_RIGHTALIGN __MSABI_LONG(0x0008) +#define TPM_TOPALIGN __MSABI_LONG(0x0000) +#define TPM_VCENTERALIGN __MSABI_LONG(0x0010) +#define TPM_BOTTOMALIGN __MSABI_LONG(0x0020) +#define TPM_HORIZONTAL __MSABI_LONG(0x0000) +#define TPM_VERTICAL __MSABI_LONG(0x0040) +#define TPM_NONOTIFY __MSABI_LONG(0x0080) +#define TPM_RETURNCMD __MSABI_LONG(0x0100) +#define TPM_RECURSE __MSABI_LONG(0x0001) +#define TPM_HORPOSANIMATION __MSABI_LONG(0x0400) +#define TPM_HORNEGANIMATION __MSABI_LONG(0x0800) +#define TPM_VERPOSANIMATION __MSABI_LONG(0x1000) +#define TPM_VERNEGANIMATION __MSABI_LONG(0x2000) +#define TPM_NOANIMATION __MSABI_LONG(0x4000) +#define TPM_LAYOUTRTL __MSABI_LONG(0x8000) + typedef struct tagDROPSTRUCT { + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + ULONG_PTR dwData; + POINT ptDrop; + DWORD dwControlData; + } DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT; +#define DOF_EXECUTABLE 0x8001 +#define DOF_DOCUMENT 0x8002 +#define DOF_DIRECTORY 0x8003 +#define DOF_MULTIPLE 0x8004 +#define DOF_PROGMAN 0x0001 +#define DOF_SHELLDATA 0x0002 +#define DO_DROPFILE __MSABI_LONG(0x454C4946) +#define DO_PRINTFILE __MSABI_LONG(0x544E5250) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) DragObject(HWND hwndParent,HWND hwndFrom,UINT fmt,ULONG_PTR data,HCURSOR hcur); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DragDetect(HWND hwnd,POINT pt); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawIcon(HDC hDC,int X,int Y,HICON hIcon); +#define DT_TOP 0x00000000 +#define DT_LEFT 0x00000000 +#define DT_CENTER 0x00000001 +#define DT_RIGHT 0x00000002 +#define DT_VCENTER 0x00000004 +#define DT_BOTTOM 0x00000008 +#define DT_WORDBREAK 0x00000010 +#define DT_SINGLELINE 0x00000020 +#define DT_EXPANDTABS 0x00000040 +#define DT_TABSTOP 0x00000080 +#define DT_NOCLIP 0x00000100 +#define DT_EXTERNALLEADING 0x00000200 +#define DT_CALCRECT 0x00000400 +#define DT_NOPREFIX 0x00000800 +#define DT_INTERNAL 0x00001000 +#define DT_EDITCONTROL 0x00002000 +#define DT_PATH_ELLIPSIS 0x00004000 +#define DT_END_ELLIPSIS 0x00008000 +#define DT_MODIFYSTRING 0x00010000 +#define DT_RTLREADING 0x00020000 +#define DT_WORD_ELLIPSIS 0x00040000 +#define DT_NOFULLWIDTHCHARBREAK 0x00080000 +#define DT_HIDEPREFIX 0x00100000 +#define DT_PREFIXONLY 0x00200000 + typedef struct tagDRAWTEXTPARAMS { + UINT cbSize; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; + } DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS; +#define DrawText __MINGW_NAME_AW(DrawText) +#define DrawTextEx __MINGW_NAME_AW(DrawTextEx) + __declspec (dllimport) int __attribute__((__stdcall__)) DrawTextA(HDC hdc,LPCSTR lpchText,int cchText,LPRECT lprc,UINT format); + __declspec (dllimport) int __attribute__((__stdcall__)) DrawTextW(HDC hdc,LPCWSTR lpchText,int cchText,LPRECT lprc,UINT format); + __declspec (dllimport) int __attribute__((__stdcall__)) DrawTextExA(HDC hdc,LPSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp); + __declspec (dllimport) int __attribute__((__stdcall__)) DrawTextExW(HDC hdc,LPWSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp); +#define GrayString __MINGW_NAME_AW(GrayString) +#define DrawState __MINGW_NAME_AW(DrawState) +#define TabbedTextOut __MINGW_NAME_AW(TabbedTextOut) +#define GetTabbedTextExtent __MINGW_NAME_AW(GetTabbedTextExtent) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GrayStringA(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GrayStringW(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawStateA(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawStateW(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags); + __declspec (dllimport) LONG __attribute__((__stdcall__)) TabbedTextOutA(HDC hdc,int x,int y,LPCSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions,int nTabOrigin); + __declspec (dllimport) LONG __attribute__((__stdcall__)) TabbedTextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions,int nTabOrigin); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTabbedTextExtentA(HDC hdc,LPCSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetTabbedTextExtentW(HDC hdc,LPCWSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UpdateWindow(HWND hWnd); + __declspec (dllimport) HWND __attribute__((__stdcall__)) SetActiveWindow(HWND hWnd); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetForegroundWindow(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PaintDesktop(HDC hdc); + __declspec (dllimport) void __attribute__((__stdcall__)) SwitchToThisWindow(HWND hwnd,WINBOOL fUnknown); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetForegroundWindow(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllowSetForegroundWindow(DWORD dwProcessId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LockSetForegroundWindow(UINT uLockCode); + __declspec (dllimport) HWND __attribute__((__stdcall__)) WindowFromDC(HDC hDC); + __declspec (dllimport) HDC __attribute__((__stdcall__)) GetDC(HWND hWnd); + __declspec (dllimport) HDC __attribute__((__stdcall__)) GetDCEx(HWND hWnd,HRGN hrgnClip,DWORD flags); +#define DST_COMPLEX 0x0000 +#define DST_TEXT 0x0001 +#define DST_PREFIXTEXT 0x0002 +#define DST_ICON 0x0003 +#define DST_BITMAP 0x0004 +#define DSS_NORMAL 0x0000 +#define DSS_UNION 0x0010 +#define DSS_DISABLED 0x0020 +#define DSS_MONO 0x0080 +#define DSS_HIDEPREFIX 0x0200 +#define DSS_PREFIXONLY 0x0400 +#define DSS_RIGHT 0x8000 +#define ASFW_ANY ((DWORD)-1) +#define LSFW_LOCK 1 +#define LSFW_UNLOCK 2 +#define DCX_WINDOW __MSABI_LONG(0x00000001) +#define DCX_CACHE __MSABI_LONG(0x00000002) +#define DCX_NORESETATTRS __MSABI_LONG(0x00000004) +#define DCX_CLIPCHILDREN __MSABI_LONG(0x00000008) +#define DCX_CLIPSIBLINGS __MSABI_LONG(0x00000010) +#define DCX_PARENTCLIP __MSABI_LONG(0x00000020) +#define DCX_EXCLUDERGN __MSABI_LONG(0x00000040) +#define DCX_INTERSECTRGN __MSABI_LONG(0x00000080) +#define DCX_EXCLUDEUPDATE __MSABI_LONG(0x00000100) +#define DCX_INTERSECTUPDATE __MSABI_LONG(0x00000200) +#define DCX_LOCKWINDOWUPDATE __MSABI_LONG(0x00000400) +#define DCX_VALIDATE __MSABI_LONG(0x00200000) + __declspec (dllimport) HDC __attribute__((__stdcall__)) GetWindowDC(HWND hWnd); + __declspec (dllimport) int __attribute__((__stdcall__)) ReleaseDC(HWND hWnd,HDC hDC); + __declspec (dllimport) HDC __attribute__((__stdcall__)) BeginPaint(HWND hWnd,LPPAINTSTRUCT lpPaint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndPaint(HWND hWnd,const PAINTSTRUCT *lpPaint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUpdateRect(HWND hWnd,LPRECT lpRect,WINBOOL bErase); + __declspec (dllimport) int __attribute__((__stdcall__)) GetUpdateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase); + __declspec (dllimport) int __attribute__((__stdcall__)) SetWindowRgn(HWND hWnd,HRGN hRgn,WINBOOL bRedraw); + __declspec (dllimport) int __attribute__((__stdcall__)) GetWindowRgn(HWND hWnd,HRGN hRgn); + __declspec (dllimport) int __attribute__((__stdcall__)) GetWindowRgnBox(HWND hWnd,LPRECT lprc); + __declspec (dllimport) int __attribute__((__stdcall__)) ExcludeUpdateRgn(HDC hDC,HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InvalidateRect(HWND hWnd,const RECT *lpRect,WINBOOL bErase); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ValidateRect(HWND hWnd,const RECT *lpRect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InvalidateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ValidateRgn(HWND hWnd,HRGN hRgn); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RedrawWindow(HWND hWnd,const RECT *lprcUpdate,HRGN hrgnUpdate,UINT flags); +#define RDW_INVALIDATE 0x0001 +#define RDW_INTERNALPAINT 0x0002 +#define RDW_ERASE 0x0004 +#define RDW_VALIDATE 0x0008 +#define RDW_NOINTERNALPAINT 0x0010 +#define RDW_NOERASE 0x0020 +#define RDW_NOCHILDREN 0x0040 +#define RDW_ALLCHILDREN 0x0080 +#define RDW_UPDATENOW 0x0100 +#define RDW_ERASENOW 0x0200 +#define RDW_FRAME 0x0400 +#define RDW_NOFRAME 0x0800 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LockWindowUpdate(HWND hWndLock); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ScrollWindow(HWND hWnd,int XAmount,int YAmount,const RECT *lpRect,const RECT *lpClipRect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ScrollDC(HDC hDC,int dx,int dy,const RECT *lprcScroll,const RECT *lprcClip,HRGN hrgnUpdate,LPRECT lprcUpdate); + __declspec (dllimport) int __attribute__((__stdcall__)) ScrollWindowEx(HWND hWnd,int dx,int dy,const RECT *prcScroll,const RECT *prcClip,HRGN hrgnUpdate,LPRECT prcUpdate,UINT flags); +#define SW_SCROLLCHILDREN 0x0001 +#define SW_INVALIDATE 0x0002 +#define SW_ERASE 0x0004 +#define SW_SMOOTHSCROLL 0x0010 + __declspec (dllimport) int __attribute__((__stdcall__)) SetScrollPos(HWND hWnd,int nBar,int nPos,WINBOOL bRedraw); + __declspec (dllimport) int __attribute__((__stdcall__)) GetScrollPos(HWND hWnd,int nBar); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetScrollRange(HWND hWnd,int nBar,int nMinPos,int nMaxPos,WINBOOL bRedraw); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetScrollRange(HWND hWnd,int nBar,LPINT lpMinPos,LPINT lpMaxPos); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShowScrollBar(HWND hWnd,int wBar,WINBOOL bShow); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnableScrollBar(HWND hWnd,UINT wSBflags,UINT wArrows); +#define ESB_ENABLE_BOTH 0x0000 +#define ESB_DISABLE_BOTH 0x0003 +#define ESB_DISABLE_LEFT 0x0001 +#define ESB_DISABLE_RIGHT 0x0002 +#define ESB_DISABLE_UP 0x0001 +#define ESB_DISABLE_DOWN 0x0002 +#define ESB_DISABLE_LTUP ESB_DISABLE_LEFT +#define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT +#define SetProp __MINGW_NAME_AW(SetProp) +#define GetProp __MINGW_NAME_AW(GetProp) +#define RemoveProp __MINGW_NAME_AW(RemoveProp) +#define EnumPropsEx __MINGW_NAME_AW(EnumPropsEx) +#define EnumProps __MINGW_NAME_AW(EnumProps) +#define SetWindowText __MINGW_NAME_AW(SetWindowText) +#define GetWindowText __MINGW_NAME_AW(GetWindowText) +#define GetWindowTextLength __MINGW_NAME_AW(GetWindowTextLength) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPropA(HWND hWnd,LPCSTR lpString,HANDLE hData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPropW(HWND hWnd,LPCWSTR lpString,HANDLE hData); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) GetPropA(HWND hWnd,LPCSTR lpString); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) GetPropW(HWND hWnd,LPCWSTR lpString); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) RemovePropA(HWND hWnd,LPCSTR lpString); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) RemovePropW(HWND hWnd,LPCWSTR lpString); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumPropsExA(HWND hWnd,PROPENUMPROCEXA lpEnumFunc,LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumPropsExW(HWND hWnd,PROPENUMPROCEXW lpEnumFunc,LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumPropsA(HWND hWnd,PROPENUMPROCA lpEnumFunc); + __declspec (dllimport) int __attribute__((__stdcall__)) EnumPropsW(HWND hWnd,PROPENUMPROCW lpEnumFunc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWindowTextA(HWND hWnd,LPCSTR lpString); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWindowTextW(HWND hWnd,LPCWSTR lpString); + __declspec (dllimport) int __attribute__((__stdcall__)) GetWindowTextA(HWND hWnd,LPSTR lpString,int nMaxCount); + __declspec (dllimport) int __attribute__((__stdcall__)) GetWindowTextW(HWND hWnd,LPWSTR lpString,int nMaxCount); + __declspec (dllimport) int __attribute__((__stdcall__)) GetWindowTextLengthA(HWND hWnd); + __declspec (dllimport) int __attribute__((__stdcall__)) GetWindowTextLengthW(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetClientRect(HWND hWnd,LPRECT lpRect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetWindowRect(HWND hWnd,LPRECT lpRect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AdjustWindowRect(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AdjustWindowRectEx(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu,DWORD dwExStyle); +#define HELPINFO_WINDOW 0x0001 +#define HELPINFO_MENUITEM 0x0002 + typedef struct tagHELPINFO { + UINT cbSize; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD_PTR dwContextId; + POINT MousePos; + } HELPINFO,*LPHELPINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetWindowContextHelpId(HWND,DWORD); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetWindowContextHelpId(HWND); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetMenuContextHelpId(HMENU,DWORD); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetMenuContextHelpId(HMENU); +#define MB_OK __MSABI_LONG(0x00000000) +#define MB_OKCANCEL __MSABI_LONG(0x00000001) +#define MB_ABORTRETRYIGNORE __MSABI_LONG(0x00000002) +#define MB_YESNOCANCEL __MSABI_LONG(0x00000003) +#define MB_YESNO __MSABI_LONG(0x00000004) +#define MB_RETRYCANCEL __MSABI_LONG(0x00000005) +#define MB_CANCELTRYCONTINUE __MSABI_LONG(0x00000006) +#define MB_ICONHAND __MSABI_LONG(0x00000010) +#define MB_ICONQUESTION __MSABI_LONG(0x00000020) +#define MB_ICONEXCLAMATION __MSABI_LONG(0x00000030) +#define MB_ICONASTERISK __MSABI_LONG(0x00000040) +#define MB_USERICON __MSABI_LONG(0x00000080) +#define MB_ICONWARNING MB_ICONEXCLAMATION +#define MB_ICONERROR MB_ICONHAND +#define MB_ICONINFORMATION MB_ICONASTERISK +#define MB_ICONSTOP MB_ICONHAND +#define MB_DEFBUTTON1 __MSABI_LONG(0x00000000) +#define MB_DEFBUTTON2 __MSABI_LONG(0x00000100) +#define MB_DEFBUTTON3 __MSABI_LONG(0x00000200) +#define MB_DEFBUTTON4 __MSABI_LONG(0x00000300) +#define MB_APPLMODAL __MSABI_LONG(0x00000000) +#define MB_SYSTEMMODAL __MSABI_LONG(0x00001000) +#define MB_TASKMODAL __MSABI_LONG(0x00002000) +#define MB_HELP __MSABI_LONG(0x00004000) +#define MB_NOFOCUS __MSABI_LONG(0x00008000) +#define MB_SETFOREGROUND __MSABI_LONG(0x00010000) +#define MB_DEFAULT_DESKTOP_ONLY __MSABI_LONG(0x00020000) +#define MB_TOPMOST __MSABI_LONG(0x00040000) +#define MB_RIGHT __MSABI_LONG(0x00080000) +#define MB_RTLREADING __MSABI_LONG(0x00100000) +#define MB_SERVICE_NOTIFICATION __MSABI_LONG(0x00200000) +#define MB_SERVICE_NOTIFICATION_NT3X __MSABI_LONG(0x00040000) +#define MB_TYPEMASK __MSABI_LONG(0x0000000F) +#define MB_ICONMASK __MSABI_LONG(0x000000F0) +#define MB_DEFMASK __MSABI_LONG(0x00000F00) +#define MB_MODEMASK __MSABI_LONG(0x00003000) +#define MB_MISCMASK __MSABI_LONG(0x0000C000) +#define MessageBox __MINGW_NAME_AW(MessageBox) +#define MessageBoxEx __MINGW_NAME_AW(MessageBoxEx) + __declspec (dllimport) int __attribute__((__stdcall__)) MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType); + __declspec (dllimport) int __attribute__((__stdcall__)) MessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType); + __declspec (dllimport) int __attribute__((__stdcall__)) MessageBoxExA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType,WORD wLanguageId); + __declspec (dllimport) int __attribute__((__stdcall__)) MessageBoxExW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType,WORD wLanguageId); + typedef void (__attribute__((__stdcall__)) *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo); + typedef struct tagMSGBOXPARAMSA { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD_PTR dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; + } MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA; + typedef struct tagMSGBOXPARAMSW { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD_PTR dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; + } MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW; + typedef MSGBOXPARAMSA MSGBOXPARAMS; + typedef PMSGBOXPARAMSA PMSGBOXPARAMS; + typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS; +#define MessageBoxIndirect __MINGW_NAME_AW(MessageBoxIndirect) + __declspec (dllimport) int __attribute__((__stdcall__)) MessageBoxIndirectA(const MSGBOXPARAMSA *lpmbp); + __declspec (dllimport) int __attribute__((__stdcall__)) MessageBoxIndirectW(const MSGBOXPARAMSW *lpmbp); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MessageBeep(UINT uType); + __declspec (dllimport) int __attribute__((__stdcall__)) ShowCursor(WINBOOL bShow); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCursorPos(int X,int Y); + __declspec (dllimport) HCURSOR __attribute__((__stdcall__)) SetCursor(HCURSOR hCursor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCursorPos(LPPOINT lpPoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ClipCursor(const RECT *lpRect); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetClipCursor(LPRECT lpRect); + __declspec (dllimport) HCURSOR __attribute__((__stdcall__)) GetCursor(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CreateCaret(HWND hWnd,HBITMAP hBitmap,int nWidth,int nHeight); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetCaretBlinkTime(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCaretBlinkTime(UINT uMSeconds); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyCaret(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) HideCaret(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShowCaret(HWND hWnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCaretPos(int X,int Y); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCaretPos(LPPOINT lpPoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ClientToScreen(HWND hWnd,LPPOINT lpPoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ScreenToClient(HWND hWnd,LPPOINT lpPoint); + __declspec (dllimport) int __attribute__((__stdcall__)) MapWindowPoints(HWND hWndFrom,HWND hWndTo,LPPOINT lpPoints,UINT cPoints); + __declspec (dllimport) HWND __attribute__((__stdcall__)) WindowFromPoint(POINT Point); + __declspec (dllimport) HWND __attribute__((__stdcall__)) ChildWindowFromPoint(HWND hWndParent,POINT Point); + __declspec (dllimport) HWND __attribute__((__stdcall__)) ChildWindowFromPointEx(HWND hwnd,POINT pt,UINT flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetPhysicalCursorPos (int X, int Y); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetPhysicalCursorPos (LPPOINT lpPoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LogicalToPhysicalPoint (HWND hWnd, LPPOINT lpPoint); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PhysicalToLogicalPoint (HWND hWnd, LPPOINT lpPoint); + __declspec (dllimport) HWND __attribute__((__stdcall__)) WindowFromPhysicalPoint (POINT Point); +#define CWP_ALL 0x0000 +#define CWP_SKIPINVISIBLE 0x0001 +#define CWP_SKIPDISABLED 0x0002 +#define CWP_SKIPTRANSPARENT 0x0004 +#define CTLCOLOR_MSGBOX 0 +#define CTLCOLOR_EDIT 1 +#define CTLCOLOR_LISTBOX 2 +#define CTLCOLOR_BTN 3 +#define CTLCOLOR_DLG 4 +#define CTLCOLOR_SCROLLBAR 5 +#define CTLCOLOR_STATIC 6 +#define CTLCOLOR_MAX 7 +#define COLOR_SCROLLBAR 0 +#define COLOR_BACKGROUND 1 +#define COLOR_ACTIVECAPTION 2 +#define COLOR_INACTIVECAPTION 3 +#define COLOR_MENU 4 +#define COLOR_WINDOW 5 +#define COLOR_WINDOWFRAME 6 +#define COLOR_MENUTEXT 7 +#define COLOR_WINDOWTEXT 8 +#define COLOR_CAPTIONTEXT 9 +#define COLOR_ACTIVEBORDER 10 +#define COLOR_INACTIVEBORDER 11 +#define COLOR_APPWORKSPACE 12 +#define COLOR_HIGHLIGHT 13 +#define COLOR_HIGHLIGHTTEXT 14 +#define COLOR_BTNFACE 15 +#define COLOR_BTNSHADOW 16 +#define COLOR_GRAYTEXT 17 +#define COLOR_BTNTEXT 18 +#define COLOR_INACTIVECAPTIONTEXT 19 +#define COLOR_BTNHIGHLIGHT 20 +#define COLOR_3DDKSHADOW 21 +#define COLOR_3DLIGHT 22 +#define COLOR_INFOTEXT 23 +#define COLOR_INFOBK 24 +#define COLOR_HOTLIGHT 26 +#define COLOR_GRADIENTACTIVECAPTION 27 +#define COLOR_GRADIENTINACTIVECAPTION 28 +#define COLOR_MENUHILIGHT 29 +#define COLOR_MENUBAR 30 +#define COLOR_DESKTOP COLOR_BACKGROUND +#define COLOR_3DFACE COLOR_BTNFACE +#define COLOR_3DSHADOW COLOR_BTNSHADOW +#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT +#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT +#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetSysColor(int nIndex); + __declspec (dllimport) HBRUSH __attribute__((__stdcall__)) GetSysColorBrush(int nIndex); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSysColors(int cElements,const INT *lpaElements,const COLORREF *lpaRgbValues); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawFocusRect(HDC hDC,const RECT *lprc); + __declspec (dllimport) int __attribute__((__stdcall__)) FillRect(HDC hDC,const RECT *lprc,HBRUSH hbr); + __declspec (dllimport) int __attribute__((__stdcall__)) FrameRect(HDC hDC,const RECT *lprc,HBRUSH hbr); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InvertRect(HDC hDC,const RECT *lprc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetRect(LPRECT lprc,int xLeft,int yTop,int xRight,int yBottom); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetRectEmpty(LPRECT lprc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CopyRect(LPRECT lprcDst,const RECT *lprcSrc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InflateRect(LPRECT lprc,int dx,int dy); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IntersectRect(LPRECT lprcDst,const RECT *lprcSrc1,const RECT *lprcSrc2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnionRect(LPRECT lprcDst,const RECT *lprcSrc1,const RECT *lprcSrc2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SubtractRect(LPRECT lprcDst,const RECT *lprcSrc1,const RECT *lprcSrc2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OffsetRect(LPRECT lprc,int dx,int dy); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsRectEmpty(const RECT *lprc); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EqualRect(const RECT *lprc1,const RECT *lprc2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PtInRect(const RECT *lprc,POINT pt); +#define GetWindowLong __MINGW_NAME_AW(GetWindowLong) +#define SetWindowLong __MINGW_NAME_AW(SetWindowLong) +#define GetClassLong __MINGW_NAME_AW(GetClassLong) +#define SetClassLong __MINGW_NAME_AW(SetClassLong) + __declspec (dllimport) WORD __attribute__((__stdcall__)) GetWindowWord(HWND hWnd,int nIndex); + __declspec (dllimport) WORD __attribute__((__stdcall__)) SetWindowWord(HWND hWnd,int nIndex,WORD wNewWord); + __declspec (dllimport) LONG __attribute__((__stdcall__)) GetWindowLongA(HWND hWnd,int nIndex); + __declspec (dllimport) LONG __attribute__((__stdcall__)) GetWindowLongW(HWND hWnd,int nIndex); + __declspec (dllimport) LONG __attribute__((__stdcall__)) SetWindowLongA(HWND hWnd,int nIndex,LONG dwNewLong); + __declspec (dllimport) LONG __attribute__((__stdcall__)) SetWindowLongW(HWND hWnd,int nIndex,LONG dwNewLong); +#define GetWindowLongPtr __MINGW_NAME_AW(GetWindowLongPtr) +#define SetWindowLongPtr __MINGW_NAME_AW(SetWindowLongPtr) + __declspec (dllimport) LONG_PTR __attribute__((__stdcall__)) GetWindowLongPtrA(HWND hWnd,int nIndex); + __declspec (dllimport) LONG_PTR __attribute__((__stdcall__)) GetWindowLongPtrW(HWND hWnd,int nIndex); + __declspec (dllimport) LONG_PTR __attribute__((__stdcall__)) SetWindowLongPtrA(HWND hWnd,int nIndex,LONG_PTR dwNewLong); + __declspec (dllimport) LONG_PTR __attribute__((__stdcall__)) SetWindowLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong); + __declspec (dllimport) WORD __attribute__((__stdcall__)) GetClassWord(HWND hWnd,int nIndex); + __declspec (dllimport) WORD __attribute__((__stdcall__)) SetClassWord(HWND hWnd,int nIndex,WORD wNewWord); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetClassLongA(HWND hWnd,int nIndex); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetClassLongW(HWND hWnd,int nIndex); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetClassLongA(HWND hWnd,int nIndex,LONG dwNewLong); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetClassLongW(HWND hWnd,int nIndex,LONG dwNewLong); +#define GetClassLongPtr __MINGW_NAME_AW(GetClassLongPtr) +#define SetClassLongPtr __MINGW_NAME_AW(SetClassLongPtr) + __declspec (dllimport) ULONG_PTR __attribute__((__stdcall__)) GetClassLongPtrA(HWND hWnd,int nIndex); + __declspec (dllimport) ULONG_PTR __attribute__((__stdcall__)) GetClassLongPtrW(HWND hWnd,int nIndex); + __declspec (dllimport) ULONG_PTR __attribute__((__stdcall__)) SetClassLongPtrA(HWND hWnd,int nIndex,LONG_PTR dwNewLong); + __declspec (dllimport) ULONG_PTR __attribute__((__stdcall__)) SetClassLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong); +#define FindWindow __MINGW_NAME_AW(FindWindow) +#define FindWindowEx __MINGW_NAME_AW(FindWindowEx) +#define GetClassName __MINGW_NAME_AW(GetClassName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessDefaultLayout(DWORD *pdwDefaultLayout); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessDefaultLayout(DWORD dwDefaultLayout); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetDesktopWindow(void); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetParent(HWND hWnd); + __declspec (dllimport) HWND __attribute__((__stdcall__)) SetParent(HWND hWndChild,HWND hWndNewParent); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc,LPARAM lParam); + __declspec (dllimport) HWND __attribute__((__stdcall__)) FindWindowA(LPCSTR lpClassName,LPCSTR lpWindowName); + __declspec (dllimport) HWND __attribute__((__stdcall__)) FindWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName); + __declspec (dllimport) HWND __attribute__((__stdcall__)) FindWindowExA(HWND hWndParent,HWND hWndChildAfter,LPCSTR lpszClass,LPCSTR lpszWindow); + __declspec (dllimport) HWND __attribute__((__stdcall__)) FindWindowExW(HWND hWndParent,HWND hWndChildAfter,LPCWSTR lpszClass,LPCWSTR lpszWindow); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetShellWindow(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RegisterShellHookWindow(HWND hwnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeregisterShellHookWindow(HWND hwnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam); +#define EnumTaskWindows(hTask,lpfn,lParam) EnumThreadWindows(HandleToUlong(hTask),lpfn,lParam) + __declspec (dllimport) int __attribute__((__stdcall__)) GetClassNameA(HWND hWnd,LPSTR lpClassName,int nMaxCount); + __declspec (dllimport) int __attribute__((__stdcall__)) GetClassNameW(HWND hWnd,LPWSTR lpClassName,int nMaxCount); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetTopWindow(HWND hWnd); +#define GetNextWindow(hWnd,wCmd) GetWindow(hWnd,wCmd) +#define GetSysModalWindow() (NULL) +#define SetSysModalWindow(hWnd) (NULL) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsGUIThread(WINBOOL bConvert); +#define GetWindowTask(hWnd) ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd,NULL)) + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetLastActivePopup(HWND hWnd); +#define GW_HWNDFIRST 0 +#define GW_HWNDLAST 1 +#define GW_HWNDNEXT 2 +#define GW_HWNDPREV 3 +#define GW_OWNER 4 +#define GW_CHILD 5 +#define GW_ENABLEDPOPUP 6 +#define GW_MAX 6 + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetWindow(HWND hWnd,UINT uCmd); +#define SetWindowsHook __MINGW_NAME_AW(SetWindowsHook) +#define SetWindowsHookEx __MINGW_NAME_AW(SetWindowsHookEx) + __declspec (dllimport) HHOOK __attribute__((__stdcall__)) SetWindowsHookA (int nFilterType, HOOKPROC pfnFilterProc); + __declspec (dllimport) HHOOK __attribute__((__stdcall__)) SetWindowsHookW (int nFilterType, HOOKPROC pfnFilterProc); +#define DefHookProc(nCode,wParam,lParam,phhk) CallNextHookEx (*phhk, nCode, wParam, lParam) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnhookWindowsHook (int nCode, HOOKPROC pfnFilterProc); + __declspec (dllimport) HHOOK __attribute__((__stdcall__)) SetWindowsHookExA (int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId); + __declspec (dllimport) HHOOK __attribute__((__stdcall__)) SetWindowsHookExW (int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnhookWindowsHookEx (HHOOK hhk); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) CallNextHookEx (HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam); +#define MF_INSERT __MSABI_LONG(0x00000000) +#define MF_CHANGE __MSABI_LONG(0x00000080) +#define MF_APPEND __MSABI_LONG(0x00000100) +#define MF_DELETE __MSABI_LONG(0x00000200) +#define MF_REMOVE __MSABI_LONG(0x00001000) +#define MF_BYCOMMAND __MSABI_LONG(0x00000000) +#define MF_BYPOSITION __MSABI_LONG(0x00000400) +#define MF_SEPARATOR __MSABI_LONG(0x00000800) +#define MF_ENABLED __MSABI_LONG(0x00000000) +#define MF_GRAYED __MSABI_LONG(0x00000001) +#define MF_DISABLED __MSABI_LONG(0x00000002) +#define MF_UNCHECKED __MSABI_LONG(0x00000000) +#define MF_CHECKED __MSABI_LONG(0x00000008) +#define MF_USECHECKBITMAPS __MSABI_LONG(0x00000200) +#define MF_STRING __MSABI_LONG(0x00000000) +#define MF_BITMAP __MSABI_LONG(0x00000004) +#define MF_OWNERDRAW __MSABI_LONG(0x00000100) +#define MF_POPUP __MSABI_LONG(0x00000010) +#define MF_MENUBARBREAK __MSABI_LONG(0x00000020) +#define MF_MENUBREAK __MSABI_LONG(0x00000040) +#define MF_UNHILITE __MSABI_LONG(0x00000000) +#define MF_HILITE __MSABI_LONG(0x00000080) +#define MF_DEFAULT __MSABI_LONG(0x00001000) +#define MF_SYSMENU __MSABI_LONG(0x00002000) +#define MF_HELP __MSABI_LONG(0x00004000) +#define MF_RIGHTJUSTIFY __MSABI_LONG(0x00004000) +#define MF_MOUSESELECT __MSABI_LONG(0x00008000) +#define MF_END __MSABI_LONG(0x00000080) +#define MFT_STRING MF_STRING +#define MFT_BITMAP MF_BITMAP +#define MFT_MENUBARBREAK MF_MENUBARBREAK +#define MFT_MENUBREAK MF_MENUBREAK +#define MFT_OWNERDRAW MF_OWNERDRAW +#define MFT_RADIOCHECK __MSABI_LONG(0x00000200) +#define MFT_SEPARATOR MF_SEPARATOR +#define MFT_RIGHTORDER __MSABI_LONG(0x00002000) +#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY +#define MFS_GRAYED __MSABI_LONG(0x00000003) +#define MFS_DISABLED MFS_GRAYED +#define MFS_CHECKED MF_CHECKED +#define MFS_HILITE MF_HILITE +#define MFS_ENABLED MF_ENABLED +#define MFS_UNCHECKED MF_UNCHECKED +#define MFS_UNHILITE MF_UNHILITE +#define MFS_DEFAULT MF_DEFAULT + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CheckMenuRadioItem(HMENU hmenu,UINT first,UINT last,UINT check,UINT flags); + typedef struct { + WORD versionNumber; + WORD offset; + } MENUITEMTEMPLATEHEADER,*PMENUITEMTEMPLATEHEADER; + typedef struct { + WORD mtOption; + WORD mtID; + WCHAR mtString[1]; + } MENUITEMTEMPLATE,*PMENUITEMTEMPLATE; +#define MF_END __MSABI_LONG(0x00000080) +#define SC_SIZE 0xF000 +#define SC_MOVE 0xF010 +#define SC_MINIMIZE 0xF020 +#define SC_MAXIMIZE 0xF030 +#define SC_NEXTWINDOW 0xF040 +#define SC_PREVWINDOW 0xF050 +#define SC_CLOSE 0xF060 +#define SC_VSCROLL 0xF070 +#define SC_HSCROLL 0xF080 +#define SC_MOUSEMENU 0xF090 +#define SC_KEYMENU 0xF100 +#define SC_ARRANGE 0xF110 +#define SC_RESTORE 0xF120 +#define SC_TASKLIST 0xF130 +#define SC_SCREENSAVE 0xF140 +#define SC_HOTKEY 0xF150 +#define SC_DEFAULT 0xF160 +#define SC_MONITORPOWER 0xF170 +#define SC_CONTEXTHELP 0xF180 +#define SC_SEPARATOR 0xF00F +#define SCF_ISSECURE 0x00000001 +#define GET_SC_WPARAM(wParam) ((int)wParam &0xfff0) +#define SC_ICON SC_MINIMIZE +#define SC_ZOOM SC_MAXIMIZE +#define LoadBitmap __MINGW_NAME_AW(LoadBitmap) +#define LoadCursor __MINGW_NAME_AW(LoadCursor) +#define LoadCursorFromFile __MINGW_NAME_AW(LoadCursorFromFile) + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) LoadBitmapA(HINSTANCE hInstance,LPCSTR lpBitmapName); + __declspec (dllimport) HBITMAP __attribute__((__stdcall__)) LoadBitmapW(HINSTANCE hInstance,LPCWSTR lpBitmapName); + __declspec (dllimport) HCURSOR __attribute__((__stdcall__)) LoadCursorA(HINSTANCE hInstance,LPCSTR lpCursorName); + __declspec (dllimport) HCURSOR __attribute__((__stdcall__)) LoadCursorW(HINSTANCE hInstance,LPCWSTR lpCursorName); + __declspec (dllimport) HCURSOR __attribute__((__stdcall__)) LoadCursorFromFileA(LPCSTR lpFileName); + __declspec (dllimport) HCURSOR __attribute__((__stdcall__)) LoadCursorFromFileW(LPCWSTR lpFileName); + __declspec (dllimport) HCURSOR __attribute__((__stdcall__)) CreateCursor(HINSTANCE hInst,int xHotSpot,int yHotSpot,int nWidth,int nHeight,const void *pvANDPlane,const void *pvXORPlane); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyCursor(HCURSOR hCursor); +#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur))) +#define IDC_ARROW MAKEINTRESOURCE(32512) +#define IDC_IBEAM MAKEINTRESOURCE(32513) +#define IDC_WAIT MAKEINTRESOURCE(32514) +#define IDC_CROSS MAKEINTRESOURCE(32515) +#define IDC_UPARROW MAKEINTRESOURCE(32516) +#define IDC_SIZE MAKEINTRESOURCE(32640) +#define IDC_ICON MAKEINTRESOURCE(32641) +#define IDC_SIZENWSE MAKEINTRESOURCE(32642) +#define IDC_SIZENESW MAKEINTRESOURCE(32643) +#define IDC_SIZEWE MAKEINTRESOURCE(32644) +#define IDC_SIZENS MAKEINTRESOURCE(32645) +#define IDC_SIZEALL MAKEINTRESOURCE(32646) +#define IDC_NO MAKEINTRESOURCE(32648) +#define IDC_HAND MAKEINTRESOURCE(32649) +#define IDC_APPSTARTING MAKEINTRESOURCE(32650) +#define IDC_HELP MAKEINTRESOURCE(32651) + typedef struct _ICONINFO { + WINBOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; + } ICONINFO; + typedef ICONINFO *PICONINFO; +#define LoadIcon __MINGW_NAME_AW(LoadIcon) +#define PrivateExtractIcons __MINGW_NAME_AW(PrivateExtractIcons) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetSystemCursor(HCURSOR hcur,DWORD id); + __declspec (dllimport) HICON __attribute__((__stdcall__)) LoadIconA(HINSTANCE hInstance,LPCSTR lpIconName); + __declspec (dllimport) HICON __attribute__((__stdcall__)) LoadIconW(HINSTANCE hInstance,LPCWSTR lpIconName); + __declspec (dllimport) UINT __attribute__((__stdcall__)) PrivateExtractIconsA(LPCSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags); + __declspec (dllimport) UINT __attribute__((__stdcall__)) PrivateExtractIconsW(LPCWSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags); + __declspec (dllimport) HICON __attribute__((__stdcall__)) CreateIcon(HINSTANCE hInstance,int nWidth,int nHeight,BYTE cPlanes,BYTE cBitsPixel,const BYTE *lpbANDbits,const BYTE *lpbXORbits); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyIcon(HICON hIcon); + __declspec (dllimport) int __attribute__((__stdcall__)) LookupIconIdFromDirectory(PBYTE presbits,WINBOOL fIcon); + __declspec (dllimport) int __attribute__((__stdcall__)) LookupIconIdFromDirectoryEx(PBYTE presbits,WINBOOL fIcon,int cxDesired,int cyDesired,UINT Flags); + __declspec (dllimport) HICON __attribute__((__stdcall__)) CreateIconFromResource(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer); + __declspec (dllimport) HICON __attribute__((__stdcall__)) CreateIconFromResourceEx(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer,int cxDesired,int cyDesired,UINT Flags); + typedef struct tagCURSORSHAPE { + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; + } CURSORSHAPE,*LPCURSORSHAPE; +#define IMAGE_BITMAP 0 +#define IMAGE_ICON 1 +#define IMAGE_CURSOR 2 +#define IMAGE_ENHMETAFILE 3 +#define LR_DEFAULTCOLOR 0x0000 +#define LR_MONOCHROME 0x0001 +#define LR_COLOR 0x0002 +#define LR_COPYRETURNORG 0x0004 +#define LR_COPYDELETEORG 0x0008 +#define LR_LOADFROMFILE 0x0010 +#define LR_LOADTRANSPARENT 0x0020 +#define LR_DEFAULTSIZE 0x0040 +#define LR_VGACOLOR 0x0080 +#define LR_LOADMAP3DCOLORS 0x1000 +#define LR_CREATEDIBSECTION 0x2000 +#define LR_COPYFROMRESOURCE 0x4000 +#define LR_SHARED 0x8000 +#define LoadImage __MINGW_NAME_AW(LoadImage) + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) LoadImageA(HINSTANCE hInst,LPCSTR name,UINT type,int cx,int cy,UINT fuLoad); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) LoadImageW(HINSTANCE hInst,LPCWSTR name,UINT type,int cx,int cy,UINT fuLoad); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CopyImage(HANDLE h,UINT type,int cx,int cy,UINT flags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DrawIconEx(HDC hdc,int xLeft,int yTop,HICON hIcon,int cxWidth,int cyWidth,UINT istepIfAniCur,HBRUSH hbrFlickerFreeDraw,UINT diFlags); + __declspec (dllimport) HICON __attribute__((__stdcall__)) CreateIconIndirect(PICONINFO piconinfo); + __declspec (dllimport) HICON __attribute__((__stdcall__)) CopyIcon(HICON hIcon); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetIconInfo(HICON hIcon,PICONINFO piconinfo); + typedef struct _ICONINFOEXA { + DWORD cbSize; + WINBOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; + WORD wResID; + CHAR szModName[260]; + CHAR szResName[260]; + } ICONINFOEXA,*PICONINFOEXA; + typedef struct _ICONINFOEXW { + DWORD cbSize; + WINBOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; + WORD wResID; + WCHAR szModName[260]; + WCHAR szResName[260]; + } ICONINFOEXW,*PICONINFOEXW; + typedef ICONINFOEXA ICONINFOEX;; + typedef PICONINFOEXA PICONINFOEX;; +#define GetIconInfoEx __MINGW_NAME_AW(GetIconInfoEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetIconInfoExA (HICON hicon, PICONINFOEXA piconinfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetIconInfoExW (HICON hicon, PICONINFOEXW piconinfo); +#define DI_MASK 0x0001 +#define DI_IMAGE 0x0002 +#define DI_NORMAL 0x0003 +#define DI_COMPAT 0x0004 +#define DI_DEFAULTSIZE 0x0008 +#define DI_NOMIRROR 0x0010 +#define RES_ICON 1 +#define RES_CURSOR 2 +#define ORD_LANGDRIVER 1 +#define IDI_APPLICATION MAKEINTRESOURCE(32512) +#define IDI_HAND MAKEINTRESOURCE(32513) +#define IDI_QUESTION MAKEINTRESOURCE(32514) +#define IDI_EXCLAMATION MAKEINTRESOURCE(32515) +#define IDI_ASTERISK MAKEINTRESOURCE(32516) +#define IDI_WINLOGO MAKEINTRESOURCE(32517) +#define IDI_SHIELD MAKEINTRESOURCE (32518) +#define IDI_WARNING IDI_EXCLAMATION +#define IDI_ERROR IDI_HAND +#define IDI_INFORMATION IDI_ASTERISK +#define IDOK 1 +#define IDCANCEL 2 +#define IDABORT 3 +#define IDRETRY 4 +#define IDIGNORE 5 +#define IDYES 6 +#define IDNO 7 +#define IDCLOSE 8 +#define IDHELP 9 +#define IDTRYAGAIN 10 +#define IDCONTINUE 11 +#define IDTIMEOUT 32000 +#define ES_LEFT __MSABI_LONG(0x0000) +#define ES_CENTER __MSABI_LONG(0x0001) +#define ES_RIGHT __MSABI_LONG(0x0002) +#define ES_MULTILINE __MSABI_LONG(0x0004) +#define ES_UPPERCASE __MSABI_LONG(0x0008) +#define ES_LOWERCASE __MSABI_LONG(0x0010) +#define ES_PASSWORD __MSABI_LONG(0x0020) +#define ES_AUTOVSCROLL __MSABI_LONG(0x0040) +#define ES_AUTOHSCROLL __MSABI_LONG(0x0080) +#define ES_NOHIDESEL __MSABI_LONG(0x0100) +#define ES_OEMCONVERT __MSABI_LONG(0x0400) +#define ES_READONLY __MSABI_LONG(0x0800) +#define ES_WANTRETURN __MSABI_LONG(0x1000) +#define ES_NUMBER __MSABI_LONG(0x2000) +#define EN_SETFOCUS 0x0100 +#define EN_KILLFOCUS 0x0200 +#define EN_CHANGE 0x0300 +#define EN_UPDATE 0x0400 +#define EN_ERRSPACE 0x0500 +#define EN_MAXTEXT 0x0501 +#define EN_HSCROLL 0x0601 +#define EN_VSCROLL 0x0602 +#define EN_ALIGN_LTR_EC 0x0700 +#define EN_ALIGN_RTL_EC 0x0701 +#define EC_LEFTMARGIN 0x0001 +#define EC_RIGHTMARGIN 0x0002 +#define EC_USEFONTINFO 0xffff +#define EMSIS_COMPOSITIONSTRING 0x0001 +#define EIMES_GETCOMPSTRATONCE 0x0001 +#define EIMES_CANCELCOMPSTRINFOCUS 0x0002 +#define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004 +#define EM_GETSEL 0x00B0 +#define EM_SETSEL 0x00B1 +#define EM_GETRECT 0x00B2 +#define EM_SETRECT 0x00B3 +#define EM_SETRECTNP 0x00B4 +#define EM_SCROLL 0x00B5 +#define EM_LINESCROLL 0x00B6 +#define EM_SCROLLCARET 0x00B7 +#define EM_GETMODIFY 0x00B8 +#define EM_SETMODIFY 0x00B9 +#define EM_GETLINECOUNT 0x00BA +#define EM_LINEINDEX 0x00BB +#define EM_SETHANDLE 0x00BC +#define EM_GETHANDLE 0x00BD +#define EM_GETTHUMB 0x00BE +#define EM_LINELENGTH 0x00C1 +#define EM_REPLACESEL 0x00C2 +#define EM_GETLINE 0x00C4 +#define EM_LIMITTEXT 0x00C5 +#define EM_CANUNDO 0x00C6 +#define EM_UNDO 0x00C7 +#define EM_FMTLINES 0x00C8 +#define EM_LINEFROMCHAR 0x00C9 +#define EM_SETTABSTOPS 0x00CB +#define EM_SETPASSWORDCHAR 0x00CC +#define EM_EMPTYUNDOBUFFER 0x00CD +#define EM_GETFIRSTVISIBLELINE 0x00CE +#define EM_SETREADONLY 0x00CF +#define EM_SETWORDBREAKPROC 0x00D0 +#define EM_GETWORDBREAKPROC 0x00D1 +#define EM_GETPASSWORDCHAR 0x00D2 +#define EM_SETMARGINS 0x00D3 +#define EM_GETMARGINS 0x00D4 +#define EM_SETLIMITTEXT EM_LIMITTEXT +#define EM_GETLIMITTEXT 0x00D5 +#define EM_POSFROMCHAR 0x00D6 +#define EM_CHARFROMPOS 0x00D7 +#define EM_SETIMESTATUS 0x00D8 +#define EM_GETIMESTATUS 0x00D9 +#define WB_LEFT 0 +#define WB_RIGHT 1 +#define WB_ISDELIMITER 2 +#define BS_PUSHBUTTON __MSABI_LONG(0x00000000) +#define BS_DEFPUSHBUTTON __MSABI_LONG(0x00000001) +#define BS_CHECKBOX __MSABI_LONG(0x00000002) +#define BS_AUTOCHECKBOX __MSABI_LONG(0x00000003) +#define BS_RADIOBUTTON __MSABI_LONG(0x00000004) +#define BS_3STATE __MSABI_LONG(0x00000005) +#define BS_AUTO3STATE __MSABI_LONG(0x00000006) +#define BS_GROUPBOX __MSABI_LONG(0x00000007) +#define BS_USERBUTTON __MSABI_LONG(0x00000008) +#define BS_AUTORADIOBUTTON __MSABI_LONG(0x00000009) +#define BS_PUSHBOX __MSABI_LONG(0x0000000A) +#define BS_OWNERDRAW __MSABI_LONG(0x0000000B) +#define BS_TYPEMASK __MSABI_LONG(0x0000000F) +#define BS_LEFTTEXT __MSABI_LONG(0x00000020) +#define BS_TEXT __MSABI_LONG(0x00000000) +#define BS_ICON __MSABI_LONG(0x00000040) +#define BS_BITMAP __MSABI_LONG(0x00000080) +#define BS_LEFT __MSABI_LONG(0x00000100) +#define BS_RIGHT __MSABI_LONG(0x00000200) +#define BS_CENTER __MSABI_LONG(0x00000300) +#define BS_TOP __MSABI_LONG(0x00000400) +#define BS_BOTTOM __MSABI_LONG(0x00000800) +#define BS_VCENTER __MSABI_LONG(0x00000C00) +#define BS_PUSHLIKE __MSABI_LONG(0x00001000) +#define BS_MULTILINE __MSABI_LONG(0x00002000) +#define BS_NOTIFY __MSABI_LONG(0x00004000) +#define BS_FLAT __MSABI_LONG(0x00008000) +#define BS_RIGHTBUTTON BS_LEFTTEXT +#define BN_CLICKED 0 +#define BN_PAINT 1 +#define BN_HILITE 2 +#define BN_UNHILITE 3 +#define BN_DISABLE 4 +#define BN_DOUBLECLICKED 5 +#define BN_PUSHED BN_HILITE +#define BN_UNPUSHED BN_UNHILITE +#define BN_DBLCLK BN_DOUBLECLICKED +#define BN_SETFOCUS 6 +#define BN_KILLFOCUS 7 +#define BM_GETCHECK 0x00F0 +#define BM_SETCHECK 0x00F1 +#define BM_GETSTATE 0x00F2 +#define BM_SETSTATE 0x00F3 +#define BM_SETSTYLE 0x00F4 +#define BM_CLICK 0x00F5 +#define BM_GETIMAGE 0x00F6 +#define BM_SETIMAGE 0x00F7 +#define BM_SETDONTCLICK 0x00f8 +#define BST_UNCHECKED 0x0000 +#define BST_CHECKED 0x0001 +#define BST_INDETERMINATE 0x0002 +#define BST_PUSHED 0x0004 +#define BST_FOCUS 0x0008 +#define SS_LEFT __MSABI_LONG(0x00000000) +#define SS_CENTER __MSABI_LONG(0x00000001) +#define SS_RIGHT __MSABI_LONG(0x00000002) +#define SS_ICON __MSABI_LONG(0x00000003) +#define SS_BLACKRECT __MSABI_LONG(0x00000004) +#define SS_GRAYRECT __MSABI_LONG(0x00000005) +#define SS_WHITERECT __MSABI_LONG(0x00000006) +#define SS_BLACKFRAME __MSABI_LONG(0x00000007) +#define SS_GRAYFRAME __MSABI_LONG(0x00000008) +#define SS_WHITEFRAME __MSABI_LONG(0x00000009) +#define SS_USERITEM __MSABI_LONG(0x0000000A) +#define SS_SIMPLE __MSABI_LONG(0x0000000B) +#define SS_LEFTNOWORDWRAP __MSABI_LONG(0x0000000C) +#define SS_OWNERDRAW __MSABI_LONG(0x0000000D) +#define SS_BITMAP __MSABI_LONG(0x0000000E) +#define SS_ENHMETAFILE __MSABI_LONG(0x0000000F) +#define SS_ETCHEDHORZ __MSABI_LONG(0x00000010) +#define SS_ETCHEDVERT __MSABI_LONG(0x00000011) +#define SS_ETCHEDFRAME __MSABI_LONG(0x00000012) +#define SS_TYPEMASK __MSABI_LONG(0x0000001F) +#define SS_REALSIZECONTROL __MSABI_LONG(0x00000040) +#define SS_NOPREFIX __MSABI_LONG(0x00000080) +#define SS_NOTIFY __MSABI_LONG(0x00000100) +#define SS_CENTERIMAGE __MSABI_LONG(0x00000200) +#define SS_RIGHTJUST __MSABI_LONG(0x00000400) +#define SS_REALSIZEIMAGE __MSABI_LONG(0x00000800) +#define SS_SUNKEN __MSABI_LONG(0x00001000) +#define SS_EDITCONTROL __MSABI_LONG(0x00002000) +#define SS_ENDELLIPSIS __MSABI_LONG(0x00004000) +#define SS_PATHELLIPSIS __MSABI_LONG(0x00008000) +#define SS_WORDELLIPSIS __MSABI_LONG(0x0000C000) +#define SS_ELLIPSISMASK __MSABI_LONG(0x0000C000) +#define STM_SETICON 0x0170 +#define STM_GETICON 0x0171 +#define STM_SETIMAGE 0x0172 +#define STM_GETIMAGE 0x0173 +#define STN_CLICKED 0 +#define STN_DBLCLK 1 +#define STN_ENABLE 2 +#define STN_DISABLE 3 +#define STM_MSGMAX 0x0174 +#define WC_DIALOG (MAKEINTATOM(0x8002)) +#define DWL_MSGRESULT 0 +#define DWL_DLGPROC 4 +#define DWL_USER 8 +#undef DWL_MSGRESULT +#undef DWL_DLGPROC +#undef DWL_USER +#define DWLP_MSGRESULT 0 +#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT) +#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC) +#define DDL_READWRITE 0x0000 +#define DDL_READONLY 0x0001 +#define DDL_HIDDEN 0x0002 +#define DDL_SYSTEM 0x0004 +#define DDL_DIRECTORY 0x0010 +#define DDL_ARCHIVE 0x0020 +#define DDL_POSTMSGS 0x2000 +#define DDL_DRIVES 0x4000 +#define DDL_EXCLUSIVE 0x8000 +#define IsDialogMessage __MINGW_NAME_AW(IsDialogMessage) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsDialogMessageA(HWND hDlg,LPMSG lpMsg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsDialogMessageW(HWND hDlg,LPMSG lpMsg); +#define DlgDirList __MINGW_NAME_AW(DlgDirList) +#define DlgDirSelectEx __MINGW_NAME_AW(DlgDirSelectEx) +#define DlgDirListComboBox __MINGW_NAME_AW(DlgDirListComboBox) +#define DlgDirSelectComboBoxEx __MINGW_NAME_AW(DlgDirSelectComboBoxEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) MapDialogRect(HWND hDlg,LPRECT lpRect); + __declspec (dllimport) int __attribute__((__stdcall__)) DlgDirListA(HWND hDlg,LPSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType); + __declspec (dllimport) int __attribute__((__stdcall__)) DlgDirListW(HWND hDlg,LPWSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DlgDirSelectExA(HWND hwndDlg,LPSTR lpString,int chCount,int idListBox); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DlgDirSelectExW(HWND hwndDlg,LPWSTR lpString,int chCount,int idListBox); + __declspec (dllimport) int __attribute__((__stdcall__)) DlgDirListComboBoxA(HWND hDlg,LPSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype); + __declspec (dllimport) int __attribute__((__stdcall__)) DlgDirListComboBoxW(HWND hDlg,LPWSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DlgDirSelectComboBoxExA(HWND hwndDlg,LPSTR lpString,int cchOut,int idComboBox); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DlgDirSelectComboBoxExW(HWND hwndDlg,LPWSTR lpString,int cchOut,int idComboBox); +#define DS_ABSALIGN __MSABI_LONG(0x01) +#define DS_SYSMODAL __MSABI_LONG(0x02) +#define DS_LOCALEDIT __MSABI_LONG(0x20) +#define DS_SETFONT __MSABI_LONG(0x40) +#define DS_MODALFRAME __MSABI_LONG(0x80) +#define DS_NOIDLEMSG __MSABI_LONG(0x100) +#define DS_SETFOREGROUND __MSABI_LONG(0x200) +#define DS_3DLOOK __MSABI_LONG(0x0004) +#define DS_FIXEDSYS __MSABI_LONG(0x0008) +#define DS_NOFAILCREATE __MSABI_LONG(0x0010) +#define DS_CONTROL __MSABI_LONG(0x0400) +#define DS_CENTER __MSABI_LONG(0x0800) +#define DS_CENTERMOUSE __MSABI_LONG(0x1000) +#define DS_CONTEXTHELP __MSABI_LONG(0x2000) +#define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS) +#define DM_GETDEFID (WM_USER+0) +#define DM_SETDEFID (WM_USER+1) +#define DM_REPOSITION (WM_USER+2) +#define DC_HASDEFID 0x534B +#define DLGC_WANTARROWS 0x0001 +#define DLGC_WANTTAB 0x0002 +#define DLGC_WANTALLKEYS 0x0004 +#define DLGC_WANTMESSAGE 0x0004 +#define DLGC_HASSETSEL 0x0008 +#define DLGC_DEFPUSHBUTTON 0x0010 +#define DLGC_UNDEFPUSHBUTTON 0x0020 +#define DLGC_RADIOBUTTON 0x0040 +#define DLGC_WANTCHARS 0x0080 +#define DLGC_STATIC 0x0100 +#define DLGC_BUTTON 0x2000 +#define LB_CTLCODE __MSABI_LONG(0) +#define LB_OKAY 0 +#define LB_ERR (-1) +#define LB_ERRSPACE (-2) +#define LBN_ERRSPACE (-2) +#define LBN_SELCHANGE 1 +#define LBN_DBLCLK 2 +#define LBN_SELCANCEL 3 +#define LBN_SETFOCUS 4 +#define LBN_KILLFOCUS 5 +#define LB_ADDSTRING 0x0180 +#define LB_INSERTSTRING 0x0181 +#define LB_DELETESTRING 0x0182 +#define LB_SELITEMRANGEEX 0x0183 +#define LB_RESETCONTENT 0x0184 +#define LB_SETSEL 0x0185 +#define LB_SETCURSEL 0x0186 +#define LB_GETSEL 0x0187 +#define LB_GETCURSEL 0x0188 +#define LB_GETTEXT 0x0189 +#define LB_GETTEXTLEN 0x018A +#define LB_GETCOUNT 0x018B +#define LB_SELECTSTRING 0x018C +#define LB_DIR 0x018D +#define LB_GETTOPINDEX 0x018E +#define LB_FINDSTRING 0x018F +#define LB_GETSELCOUNT 0x0190 +#define LB_GETSELITEMS 0x0191 +#define LB_SETTABSTOPS 0x0192 +#define LB_GETHORIZONTALEXTENT 0x0193 +#define LB_SETHORIZONTALEXTENT 0x0194 +#define LB_SETCOLUMNWIDTH 0x0195 +#define LB_ADDFILE 0x0196 +#define LB_SETTOPINDEX 0x0197 +#define LB_GETITEMRECT 0x0198 +#define LB_GETITEMDATA 0x0199 +#define LB_SETITEMDATA 0x019A +#define LB_SELITEMRANGE 0x019B +#define LB_SETANCHORINDEX 0x019C +#define LB_GETANCHORINDEX 0x019D +#define LB_SETCARETINDEX 0x019E +#define LB_GETCARETINDEX 0x019F +#define LB_SETITEMHEIGHT 0x01A0 +#define LB_GETITEMHEIGHT 0x01A1 +#define LB_FINDSTRINGEXACT 0x01A2 +#define LB_SETLOCALE 0x01A5 +#define LB_GETLOCALE 0x01A6 +#define LB_SETCOUNT 0x01A7 +#define LB_INITSTORAGE 0x01A8 +#define LB_ITEMFROMPOINT 0x01A9 +#define LB_GETLISTBOXINFO 0x01B2 +#define LB_MSGMAX 0x01B3 +#define LBS_NOTIFY __MSABI_LONG(0x0001) +#define LBS_SORT __MSABI_LONG(0x0002) +#define LBS_NOREDRAW __MSABI_LONG(0x0004) +#define LBS_MULTIPLESEL __MSABI_LONG(0x0008) +#define LBS_OWNERDRAWFIXED __MSABI_LONG(0x0010) +#define LBS_OWNERDRAWVARIABLE __MSABI_LONG(0x0020) +#define LBS_HASSTRINGS __MSABI_LONG(0x0040) +#define LBS_USETABSTOPS __MSABI_LONG(0x0080) +#define LBS_NOINTEGRALHEIGHT __MSABI_LONG(0x0100) +#define LBS_MULTICOLUMN __MSABI_LONG(0x0200) +#define LBS_WANTKEYBOARDINPUT __MSABI_LONG(0x0400) +#define LBS_EXTENDEDSEL __MSABI_LONG(0x0800) +#define LBS_DISABLENOSCROLL __MSABI_LONG(0x1000) +#define LBS_NODATA __MSABI_LONG(0x2000) +#define LBS_NOSEL __MSABI_LONG(0x4000) +#define LBS_COMBOBOX __MSABI_LONG(0x8000) +#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER) +#define CB_OKAY 0 +#define CB_ERR (-1) +#define CB_ERRSPACE (-2) +#define CBN_ERRSPACE (-1) +#define CBN_SELCHANGE 1 +#define CBN_DBLCLK 2 +#define CBN_SETFOCUS 3 +#define CBN_KILLFOCUS 4 +#define CBN_EDITCHANGE 5 +#define CBN_EDITUPDATE 6 +#define CBN_DROPDOWN 7 +#define CBN_CLOSEUP 8 +#define CBN_SELENDOK 9 +#define CBN_SELENDCANCEL 10 +#define CBS_SIMPLE __MSABI_LONG(0x0001) +#define CBS_DROPDOWN __MSABI_LONG(0x0002) +#define CBS_DROPDOWNLIST __MSABI_LONG(0x0003) +#define CBS_OWNERDRAWFIXED __MSABI_LONG(0x0010) +#define CBS_OWNERDRAWVARIABLE __MSABI_LONG(0x0020) +#define CBS_AUTOHSCROLL __MSABI_LONG(0x0040) +#define CBS_OEMCONVERT __MSABI_LONG(0x0080) +#define CBS_SORT __MSABI_LONG(0x0100) +#define CBS_HASSTRINGS __MSABI_LONG(0x0200) +#define CBS_NOINTEGRALHEIGHT __MSABI_LONG(0x0400) +#define CBS_DISABLENOSCROLL __MSABI_LONG(0x0800) +#define CBS_UPPERCASE __MSABI_LONG(0x2000) +#define CBS_LOWERCASE __MSABI_LONG(0x4000) +#define CB_GETEDITSEL 0x0140 +#define CB_LIMITTEXT 0x0141 +#define CB_SETEDITSEL 0x0142 +#define CB_ADDSTRING 0x0143 +#define CB_DELETESTRING 0x0144 +#define CB_DIR 0x0145 +#define CB_GETCOUNT 0x0146 +#define CB_GETCURSEL 0x0147 +#define CB_GETLBTEXT 0x0148 +#define CB_GETLBTEXTLEN 0x0149 +#define CB_INSERTSTRING 0x014A +#define CB_RESETCONTENT 0x014B +#define CB_FINDSTRING 0x014C +#define CB_SELECTSTRING 0x014D +#define CB_SETCURSEL 0x014E +#define CB_SHOWDROPDOWN 0x014F +#define CB_GETITEMDATA 0x0150 +#define CB_SETITEMDATA 0x0151 +#define CB_GETDROPPEDCONTROLRECT 0x0152 +#define CB_SETITEMHEIGHT 0x0153 +#define CB_GETITEMHEIGHT 0x0154 +#define CB_SETEXTENDEDUI 0x0155 +#define CB_GETEXTENDEDUI 0x0156 +#define CB_GETDROPPEDSTATE 0x0157 +#define CB_FINDSTRINGEXACT 0x0158 +#define CB_SETLOCALE 0x0159 +#define CB_GETLOCALE 0x015A +#define CB_GETTOPINDEX 0x015b +#define CB_SETTOPINDEX 0x015c +#define CB_GETHORIZONTALEXTENT 0x015d +#define CB_SETHORIZONTALEXTENT 0x015e +#define CB_GETDROPPEDWIDTH 0x015f +#define CB_SETDROPPEDWIDTH 0x0160 +#define CB_INITSTORAGE 0x0161 +#define CB_GETCOMBOBOXINFO 0x0164 +#define CB_MSGMAX 0x0165 +#define SBS_HORZ __MSABI_LONG(0x0000) +#define SBS_VERT __MSABI_LONG(0x0001) +#define SBS_TOPALIGN __MSABI_LONG(0x0002) +#define SBS_LEFTALIGN __MSABI_LONG(0x0002) +#define SBS_BOTTOMALIGN __MSABI_LONG(0x0004) +#define SBS_RIGHTALIGN __MSABI_LONG(0x0004) +#define SBS_SIZEBOXTOPLEFTALIGN __MSABI_LONG(0x0002) +#define SBS_SIZEBOXBOTTOMRIGHTALIGN __MSABI_LONG(0x0004) +#define SBS_SIZEBOX __MSABI_LONG(0x0008) +#define SBS_SIZEGRIP __MSABI_LONG(0x0010) +#define SBM_SETPOS 0x00E0 +#define SBM_GETPOS 0x00E1 +#define SBM_SETRANGE 0x00E2 +#define SBM_SETRANGEREDRAW 0x00E6 +#define SBM_GETRANGE 0x00E3 +#define SBM_ENABLE_ARROWS 0x00E4 +#define SBM_SETSCROLLINFO 0x00E9 +#define SBM_GETSCROLLINFO 0x00EA +#define SBM_GETSCROLLBARINFO 0x00EB +#define SIF_RANGE 0x0001 +#define SIF_PAGE 0x0002 +#define SIF_POS 0x0004 +#define SIF_DISABLENOSCROLL 0x0008 +#define SIF_TRACKPOS 0x0010 +#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS) + typedef struct tagSCROLLINFO { + UINT cbSize; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; + } SCROLLINFO,*LPSCROLLINFO; + typedef SCROLLINFO const *LPCSCROLLINFO; + __declspec (dllimport) int __attribute__((__stdcall__)) SetScrollInfo(HWND hwnd,int nBar,LPCSCROLLINFO lpsi,WINBOOL redraw); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetScrollInfo(HWND hwnd,int nBar,LPSCROLLINFO lpsi); +#define MDIS_ALLCHILDSTYLES 0x0001 +#define MDITILE_VERTICAL 0x0000 +#define MDITILE_HORIZONTAL 0x0001 +#define MDITILE_SKIPDISABLED 0x0002 +#define MDITILE_ZORDER 0x0004 + typedef struct tagMDICREATESTRUCTA { + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; + } MDICREATESTRUCTA,*LPMDICREATESTRUCTA; + typedef struct tagMDICREATESTRUCTW { + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; + } MDICREATESTRUCTW,*LPMDICREATESTRUCTW; + typedef MDICREATESTRUCTA MDICREATESTRUCT; + typedef LPMDICREATESTRUCTA LPMDICREATESTRUCT; + typedef struct tagCLIENTCREATESTRUCT { + HANDLE hWindowMenu; + UINT idFirstChild; + } CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT; +#define DefFrameProc __MINGW_NAME_AW(DefFrameProc) +#define DefMDIChildProc __MINGW_NAME_AW(DefMDIChildProc) +#define CreateMDIWindow __MINGW_NAME_AW(CreateMDIWindow) + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefFrameProcA(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefFrameProcW(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefMDIChildProcA(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefMDIChildProcW(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) TranslateMDISysAccel(HWND hWndClient,LPMSG lpMsg); + __declspec (dllimport) UINT __attribute__((__stdcall__)) ArrangeIconicWindows(HWND hWnd); + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateMDIWindowA(LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam); + __declspec (dllimport) HWND __attribute__((__stdcall__)) CreateMDIWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam); + __declspec (dllimport) WORD __attribute__((__stdcall__)) TileWindows(HWND hwndParent,UINT wHow,const RECT *lpRect,UINT cKids,const HWND *lpKids); + __declspec (dllimport) WORD __attribute__((__stdcall__)) CascadeWindows(HWND hwndParent,UINT wHow,const RECT *lpRect,UINT cKids,const HWND *lpKids); + typedef DWORD HELPPOLY; + typedef struct tagMULTIKEYHELPA { + DWORD mkSize; + CHAR mkKeylist; + CHAR szKeyphrase[1]; + } MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA; + typedef struct tagMULTIKEYHELPW { + DWORD mkSize; + WCHAR mkKeylist; + WCHAR szKeyphrase[1]; + } MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW; + typedef MULTIKEYHELPA MULTIKEYHELP; + typedef PMULTIKEYHELPA PMULTIKEYHELP; + typedef LPMULTIKEYHELPA LPMULTIKEYHELP; + typedef struct tagHELPWININFOA { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR rgchMember[2]; + } HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA; + typedef struct tagHELPWININFOW { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR rgchMember[2]; + } HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW; + typedef HELPWININFOA HELPWININFO; + typedef PHELPWININFOA PHELPWININFO; + typedef LPHELPWININFOA LPHELPWININFO; +#define WinHelp __MINGW_NAME_AW(WinHelp) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WinHelpA(HWND hWndMain,LPCSTR lpszHelp,UINT uCommand,ULONG_PTR dwData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WinHelpW(HWND hWndMain,LPCWSTR lpszHelp,UINT uCommand,ULONG_PTR dwData); +#define HELP_CONTEXT 0x0001 +#define HELP_QUIT 0x0002 +#define HELP_INDEX 0x0003 +#define HELP_CONTENTS 0x0003 +#define HELP_HELPONHELP 0x0004 +#define HELP_SETINDEX 0x0005 +#define HELP_SETCONTENTS 0x0005 +#define HELP_CONTEXTPOPUP 0x0008 +#define HELP_FORCEFILE 0x0009 +#define HELP_KEY 0x0101 +#define HELP_COMMAND 0x0102 +#define HELP_PARTIALKEY 0x0105 +#define HELP_MULTIKEY 0x0201 +#define HELP_SETWINPOS 0x0203 +#define HELP_CONTEXTMENU 0x000a +#define HELP_FINDER 0x000b +#define HELP_WM_HELP 0x000c +#define HELP_SETPOPUP_POS 0x000d +#define HELP_TCARD 0x8000 +#define HELP_TCARD_DATA 0x0010 +#define HELP_TCARD_OTHER_CALLER 0x0011 +#define IDH_NO_HELP 28440 +#define IDH_MISSING_CONTEXT 28441 +#define IDH_GENERIC_HELP_BUTTON 28442 +#define IDH_OK 28443 +#define IDH_CANCEL 28444 +#define IDH_HELP 28445 +#define GR_GDIOBJECTS 0 +#define GR_USEROBJECTS 1 + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetGuiResources(HANDLE hProcess,DWORD uiFlags); +#define SPI_GETBEEP 0x0001 +#define SPI_SETBEEP 0x0002 +#define SPI_GETMOUSE 0x0003 +#define SPI_SETMOUSE 0x0004 +#define SPI_GETBORDER 0x0005 +#define SPI_SETBORDER 0x0006 +#define SPI_GETKEYBOARDSPEED 0x000A +#define SPI_SETKEYBOARDSPEED 0x000B +#define SPI_LANGDRIVER 0x000C +#define SPI_ICONHORIZONTALSPACING 0x000D +#define SPI_GETSCREENSAVETIMEOUT 0x000E +#define SPI_SETSCREENSAVETIMEOUT 0x000F +#define SPI_GETSCREENSAVEACTIVE 0x0010 +#define SPI_SETSCREENSAVEACTIVE 0x0011 +#define SPI_GETGRIDGRANULARITY 0x0012 +#define SPI_SETGRIDGRANULARITY 0x0013 +#define SPI_SETDESKWALLPAPER 0x0014 +#define SPI_SETDESKPATTERN 0x0015 +#define SPI_GETKEYBOARDDELAY 0x0016 +#define SPI_SETKEYBOARDDELAY 0x0017 +#define SPI_ICONVERTICALSPACING 0x0018 +#define SPI_GETICONTITLEWRAP 0x0019 +#define SPI_SETICONTITLEWRAP 0x001A +#define SPI_GETMENUDROPALIGNMENT 0x001B +#define SPI_SETMENUDROPALIGNMENT 0x001C +#define SPI_SETDOUBLECLKWIDTH 0x001D +#define SPI_SETDOUBLECLKHEIGHT 0x001E +#define SPI_GETICONTITLELOGFONT 0x001F +#define SPI_SETDOUBLECLICKTIME 0x0020 +#define SPI_SETMOUSEBUTTONSWAP 0x0021 +#define SPI_SETICONTITLELOGFONT 0x0022 +#define SPI_GETFASTTASKSWITCH 0x0023 +#define SPI_SETFASTTASKSWITCH 0x0024 +#define SPI_SETDRAGFULLWINDOWS 0x0025 +#define SPI_GETDRAGFULLWINDOWS 0x0026 +#define SPI_GETNONCLIENTMETRICS 0x0029 +#define SPI_SETNONCLIENTMETRICS 0x002A +#define SPI_GETMINIMIZEDMETRICS 0x002B +#define SPI_SETMINIMIZEDMETRICS 0x002C +#define SPI_GETICONMETRICS 0x002D +#define SPI_SETICONMETRICS 0x002E +#define SPI_SETWORKAREA 0x002F +#define SPI_GETWORKAREA 0x0030 +#define SPI_SETPENWINDOWS 0x0031 +#define SPI_GETHIGHCONTRAST 0x0042 +#define SPI_SETHIGHCONTRAST 0x0043 +#define SPI_GETKEYBOARDPREF 0x0044 +#define SPI_SETKEYBOARDPREF 0x0045 +#define SPI_GETSCREENREADER 0x0046 +#define SPI_SETSCREENREADER 0x0047 +#define SPI_GETANIMATION 0x0048 +#define SPI_SETANIMATION 0x0049 +#define SPI_GETFONTSMOOTHING 0x004A +#define SPI_SETFONTSMOOTHING 0x004B +#define SPI_SETDRAGWIDTH 0x004C +#define SPI_SETDRAGHEIGHT 0x004D +#define SPI_SETHANDHELD 0x004E +#define SPI_GETLOWPOWERTIMEOUT 0x004F +#define SPI_GETPOWEROFFTIMEOUT 0x0050 +#define SPI_SETLOWPOWERTIMEOUT 0x0051 +#define SPI_SETPOWEROFFTIMEOUT 0x0052 +#define SPI_GETLOWPOWERACTIVE 0x0053 +#define SPI_GETPOWEROFFACTIVE 0x0054 +#define SPI_SETLOWPOWERACTIVE 0x0055 +#define SPI_SETPOWEROFFACTIVE 0x0056 +#define SPI_SETCURSORS 0x0057 +#define SPI_SETICONS 0x0058 +#define SPI_GETDEFAULTINPUTLANG 0x0059 +#define SPI_SETDEFAULTINPUTLANG 0x005A +#define SPI_SETLANGTOGGLE 0x005B +#define SPI_GETWINDOWSEXTENSION 0x005C +#define SPI_SETMOUSETRAILS 0x005D +#define SPI_GETMOUSETRAILS 0x005E +#define SPI_SETSCREENSAVERRUNNING 0x0061 +#define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING +#define SPI_GETFILTERKEYS 0x0032 +#define SPI_SETFILTERKEYS 0x0033 +#define SPI_GETTOGGLEKEYS 0x0034 +#define SPI_SETTOGGLEKEYS 0x0035 +#define SPI_GETMOUSEKEYS 0x0036 +#define SPI_SETMOUSEKEYS 0x0037 +#define SPI_GETSHOWSOUNDS 0x0038 +#define SPI_SETSHOWSOUNDS 0x0039 +#define SPI_GETSTICKYKEYS 0x003A +#define SPI_SETSTICKYKEYS 0x003B +#define SPI_GETACCESSTIMEOUT 0x003C +#define SPI_SETACCESSTIMEOUT 0x003D +#define SPI_GETSERIALKEYS 0x003E +#define SPI_SETSERIALKEYS 0x003F +#define SPI_GETSOUNDSENTRY 0x0040 +#define SPI_SETSOUNDSENTRY 0x0041 +#define SPI_GETSNAPTODEFBUTTON 0x005F +#define SPI_SETSNAPTODEFBUTTON 0x0060 +#define SPI_GETMOUSEHOVERWIDTH 0x0062 +#define SPI_SETMOUSEHOVERWIDTH 0x0063 +#define SPI_GETMOUSEHOVERHEIGHT 0x0064 +#define SPI_SETMOUSEHOVERHEIGHT 0x0065 +#define SPI_GETMOUSEHOVERTIME 0x0066 +#define SPI_SETMOUSEHOVERTIME 0x0067 +#define SPI_GETWHEELSCROLLLINES 0x0068 +#define SPI_SETWHEELSCROLLLINES 0x0069 +#define SPI_GETMENUSHOWDELAY 0x006A +#define SPI_SETMENUSHOWDELAY 0x006B +#define SPI_GETWHEELSCROLLCHARS 0x006C +#define SPI_SETWHEELSCROLLCHARS 0x006D +#define SPI_GETSHOWIMEUI 0x006E +#define SPI_SETSHOWIMEUI 0x006F +#define SPI_GETMOUSESPEED 0x0070 +#define SPI_SETMOUSESPEED 0x0071 +#define SPI_GETSCREENSAVERRUNNING 0x0072 +#define SPI_GETDESKWALLPAPER 0x0073 +#define SPI_GETAUDIODESCRIPTION 0x0074 +#define SPI_SETAUDIODESCRIPTION 0x0075 +#define SPI_GETSCREENSAVESECURE 0x0076 +#define SPI_SETSCREENSAVESECURE 0x0077 +#define SPI_GETACTIVEWINDOWTRACKING 0x1000 +#define SPI_SETACTIVEWINDOWTRACKING 0x1001 +#define SPI_GETMENUANIMATION 0x1002 +#define SPI_SETMENUANIMATION 0x1003 +#define SPI_GETCOMBOBOXANIMATION 0x1004 +#define SPI_SETCOMBOBOXANIMATION 0x1005 +#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006 +#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007 +#define SPI_GETGRADIENTCAPTIONS 0x1008 +#define SPI_SETGRADIENTCAPTIONS 0x1009 +#define SPI_GETKEYBOARDCUES 0x100A +#define SPI_SETKEYBOARDCUES 0x100B +#define SPI_GETMENUUNDERLINES SPI_GETKEYBOARDCUES +#define SPI_SETMENUUNDERLINES SPI_SETKEYBOARDCUES +#define SPI_GETACTIVEWNDTRKZORDER 0x100C +#define SPI_SETACTIVEWNDTRKZORDER 0x100D +#define SPI_GETHOTTRACKING 0x100E +#define SPI_SETHOTTRACKING 0x100F +#define SPI_GETMENUFADE 0x1012 +#define SPI_SETMENUFADE 0x1013 +#define SPI_GETSELECTIONFADE 0x1014 +#define SPI_SETSELECTIONFADE 0x1015 +#define SPI_GETTOOLTIPANIMATION 0x1016 +#define SPI_SETTOOLTIPANIMATION 0x1017 +#define SPI_GETTOOLTIPFADE 0x1018 +#define SPI_SETTOOLTIPFADE 0x1019 +#define SPI_GETCURSORSHADOW 0x101A +#define SPI_SETCURSORSHADOW 0x101B +#define SPI_GETMOUSESONAR 0x101C +#define SPI_SETMOUSESONAR 0x101D +#define SPI_GETMOUSECLICKLOCK 0x101E +#define SPI_SETMOUSECLICKLOCK 0x101F +#define SPI_GETMOUSEVANISH 0x1020 +#define SPI_SETMOUSEVANISH 0x1021 +#define SPI_GETFLATMENU 0x1022 +#define SPI_SETFLATMENU 0x1023 +#define SPI_GETDROPSHADOW 0x1024 +#define SPI_SETDROPSHADOW 0x1025 +#define SPI_GETBLOCKSENDINPUTRESETS 0x1026 +#define SPI_SETBLOCKSENDINPUTRESETS 0x1027 +#define SPI_GETUIEFFECTS 0x103E +#define SPI_SETUIEFFECTS 0x103F +#define SPI_GETDISABLEOVERLAPPEDCONTENT 0x1040 +#define SPI_SETDISABLEOVERLAPPEDCONTENT 0x1041 +#define SPI_GETCLIENTAREAANIMATION 0x1042 +#define SPI_SETCLIENTAREAANIMATION 0x1043 +#define SPI_GETCLEARTYPE 0x1048 +#define SPI_SETCLEARTYPE 0x1049 +#define SPI_GETSPEECHRECOGNITION 0x104a +#define SPI_SETSPEECHRECOGNITION 0x104b +#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000 +#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001 +#define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002 +#define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003 +#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004 +#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005 +#define SPI_GETCARETWIDTH 0x2006 +#define SPI_SETCARETWIDTH 0x2007 +#define SPI_GETMOUSECLICKLOCKTIME 0x2008 +#define SPI_SETMOUSECLICKLOCKTIME 0x2009 +#define SPI_GETFONTSMOOTHINGTYPE 0x200A +#define SPI_SETFONTSMOOTHINGTYPE 0x200B +#define FE_FONTSMOOTHINGSTANDARD 0x0001 +#define FE_FONTSMOOTHINGCLEARTYPE 0x0002 +#define FE_FONTSMOOTHINGDOCKING 0x8000 +#define SPI_GETFONTSMOOTHINGCONTRAST 0x200C +#define SPI_SETFONTSMOOTHINGCONTRAST 0x200D +#define SPI_GETFOCUSBORDERWIDTH 0x200E +#define SPI_SETFOCUSBORDERWIDTH 0x200F +#define SPI_GETFOCUSBORDERHEIGHT 0x2010 +#define SPI_SETFOCUSBORDERHEIGHT 0x2011 +#define SPI_GETFONTSMOOTHINGORIENTATION 0x2012 +#define SPI_SETFONTSMOOTHINGORIENTATION 0x2013 +#define SPI_GETMINIMUMHITRADIUS 0x2014 +#define SPI_SETMINIMUMHITRADIUS 0x2015 +#define SPI_GETMESSAGEDURATION 0x2016 +#define SPI_SETMESSAGEDURATION 0x2017 +#define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000 +#define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001 +#define SPIF_UPDATEINIFILE 0x0001 +#define SPIF_SENDWININICHANGE 0x0002 +#define SPIF_SENDCHANGE SPIF_SENDWININICHANGE +#define METRICS_USEDEFAULT -1 + typedef struct tagNONCLIENTMETRICSA { + UINT cbSize; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTA lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTA lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTA lfMenuFont; + LOGFONTA lfStatusFont; + LOGFONTA lfMessageFont; + int iPaddedBorderWidth; + } NONCLIENTMETRICSA,*PNONCLIENTMETRICSA,*LPNONCLIENTMETRICSA; + typedef struct tagNONCLIENTMETRICSW { + UINT cbSize; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTW lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTW lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTW lfMenuFont; + LOGFONTW lfStatusFont; + LOGFONTW lfMessageFont; + int iPaddedBorderWidth; + } NONCLIENTMETRICSW,*PNONCLIENTMETRICSW,*LPNONCLIENTMETRICSW; + typedef NONCLIENTMETRICSA NONCLIENTMETRICS; + typedef PNONCLIENTMETRICSA PNONCLIENTMETRICS; + typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS; +#define ARW_BOTTOMLEFT __MSABI_LONG(0x0000) +#define ARW_BOTTOMRIGHT __MSABI_LONG(0x0001) +#define ARW_TOPLEFT __MSABI_LONG(0x0002) +#define ARW_TOPRIGHT __MSABI_LONG(0x0003) +#define ARW_STARTMASK __MSABI_LONG(0x0003) +#define ARW_STARTRIGHT __MSABI_LONG(0x0001) +#define ARW_STARTTOP __MSABI_LONG(0x0002) +#define ARW_LEFT __MSABI_LONG(0x0000) +#define ARW_RIGHT __MSABI_LONG(0x0000) +#define ARW_UP __MSABI_LONG(0x0004) +#define ARW_DOWN __MSABI_LONG(0x0004) +#define ARW_HIDE __MSABI_LONG(0x0008) + typedef struct tagMINIMIZEDMETRICS { + UINT cbSize; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; + } MINIMIZEDMETRICS,*PMINIMIZEDMETRICS,*LPMINIMIZEDMETRICS; + typedef struct tagICONMETRICSA { + UINT cbSize; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTA lfFont; + } ICONMETRICSA,*PICONMETRICSA,*LPICONMETRICSA; + typedef struct tagICONMETRICSW { + UINT cbSize; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTW lfFont; + } ICONMETRICSW,*PICONMETRICSW,*LPICONMETRICSW; + typedef ICONMETRICSA ICONMETRICS; + typedef PICONMETRICSA PICONMETRICS; + typedef LPICONMETRICSA LPICONMETRICS; + typedef struct tagANIMATIONINFO { + UINT cbSize; + int iMinAnimate; + } ANIMATIONINFO,*LPANIMATIONINFO; + typedef struct tagSERIALKEYSA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; + } SERIALKEYSA,*LPSERIALKEYSA; + typedef struct tagSERIALKEYSW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; + } SERIALKEYSW,*LPSERIALKEYSW; + typedef SERIALKEYSA SERIALKEYS; + typedef LPSERIALKEYSA LPSERIALKEYS; + typedef struct tagHIGHCONTRASTA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszDefaultScheme; + } HIGHCONTRASTA,*LPHIGHCONTRASTA; + typedef struct tagHIGHCONTRASTW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; + } HIGHCONTRASTW,*LPHIGHCONTRASTW; + typedef HIGHCONTRASTA HIGHCONTRAST; + typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +#define SERKF_SERIALKEYSON 0x00000001 +#define SERKF_AVAILABLE 0x00000002 +#define SERKF_INDICATOR 0x00000004 +#define HCF_HIGHCONTRASTON 0x00000001 +#define HCF_AVAILABLE 0x00000002 +#define HCF_HOTKEYACTIVE 0x00000004 +#define HCF_CONFIRMHOTKEY 0x00000008 +#define HCF_HOTKEYSOUND 0x00000010 +#define HCF_INDICATOR 0x00000020 +#define HCF_HOTKEYAVAILABLE 0x00000040 +#define HCF_LOGONDESKTOP 0x00000100 +#define HCF_DEFAULTDESKTOP 0x00000200 +#define HCF_OPTION_NOTHEMECHANGE 0x00001000 +#define CDS_UPDATEREGISTRY 0x00000001 +#define CDS_TEST 0x00000002 +#define CDS_FULLSCREEN 0x00000004 +#define CDS_GLOBAL 0x00000008 +#define CDS_SET_PRIMARY 0x00000010 +#define CDS_VIDEOPARAMETERS 0x00000020 +#define CDS_ENABLE_UNSAFE_MODES 0x00000100 +#define CDS_DISABLE_UNSAFE_MODES 0x00000200 +#define CDS_RESET 0x40000000 +#define CDS_RESET_EX 0x20000000 +#define CDS_NORESET 0x10000000 +#define __TVOUT__ +#undef DEFINE_GUID +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name +#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) + +typedef struct _VIDEOPARAMETERS { + GUID Guid; + ULONG dwOffset; + ULONG dwCommand; + ULONG dwFlags; + ULONG dwMode; + ULONG dwTVStandard; + ULONG dwAvailableModes; + ULONG dwAvailableTVStandard; + ULONG dwFlickerFilter; + ULONG dwOverScanX; + ULONG dwOverScanY; + ULONG dwMaxUnscaledX; + ULONG dwMaxUnscaledY; + ULONG dwPositionX; + ULONG dwPositionY; + ULONG dwBrightness; + ULONG dwContrast; + ULONG dwCPType; + ULONG dwCPCommand; + ULONG dwCPStandard; + ULONG dwCPKey; + ULONG bCP_APSTriggerBits; + UCHAR bOEMCopyProtection[256]; +} VIDEOPARAMETERS,*PVIDEOPARAMETERS,*LPVIDEOPARAMETERS; +#define VP_COMMAND_GET 0x0001 +#define VP_COMMAND_SET 0x0002 +#define VP_FLAGS_TV_MODE 0x0001 +#define VP_FLAGS_TV_STANDARD 0x0002 +#define VP_FLAGS_FLICKER 0x0004 +#define VP_FLAGS_OVERSCAN 0x0008 +#define VP_FLAGS_MAX_UNSCALED 0x0010 +#define VP_FLAGS_POSITION 0x0020 +#define VP_FLAGS_BRIGHTNESS 0x0040 +#define VP_FLAGS_CONTRAST 0x0080 +#define VP_FLAGS_COPYPROTECT 0x0100 +#define VP_MODE_WIN_GRAPHICS 0x0001 +#define VP_MODE_TV_PLAYBACK 0x0002 +#define VP_TV_STANDARD_NTSC_M 0x0001 +#define VP_TV_STANDARD_NTSC_M_J 0x0002 +#define VP_TV_STANDARD_PAL_B 0x0004 +#define VP_TV_STANDARD_PAL_D 0x0008 +#define VP_TV_STANDARD_PAL_H 0x0010 +#define VP_TV_STANDARD_PAL_I 0x0020 +#define VP_TV_STANDARD_PAL_M 0x0040 +#define VP_TV_STANDARD_PAL_N 0x0080 +#define VP_TV_STANDARD_SECAM_B 0x0100 +#define VP_TV_STANDARD_SECAM_D 0x0200 +#define VP_TV_STANDARD_SECAM_G 0x0400 +#define VP_TV_STANDARD_SECAM_H 0x0800 +#define VP_TV_STANDARD_SECAM_K 0x1000 +#define VP_TV_STANDARD_SECAM_K1 0x2000 +#define VP_TV_STANDARD_SECAM_L 0x4000 +#define VP_TV_STANDARD_WIN_VGA 0x8000 +#define VP_TV_STANDARD_NTSC_433 0x00010000 +#define VP_TV_STANDARD_PAL_G 0x00020000 +#define VP_TV_STANDARD_PAL_60 0x00040000 +#define VP_TV_STANDARD_SECAM_L1 0x00080000 +#define VP_CP_TYPE_APS_TRIGGER 0x0001 +#define VP_CP_TYPE_MACROVISION 0x0002 +#define VP_CP_CMD_ACTIVATE 0x0001 +#define VP_CP_CMD_DEACTIVATE 0x0002 +#define VP_CP_CMD_CHANGE 0x0004 + +#define DISP_CHANGE_SUCCESSFUL 0 +#define DISP_CHANGE_RESTART 1 +#define DISP_CHANGE_FAILED -1 +#define DISP_CHANGE_BADMODE -2 +#define DISP_CHANGE_NOTUPDATED -3 +#define DISP_CHANGE_BADFLAGS -4 +#define DISP_CHANGE_BADPARAM -5 +#define DISP_CHANGE_BADDUALVIEW -6 +#define ChangeDisplaySettings __MINGW_NAME_AW(ChangeDisplaySettings) +#define ChangeDisplaySettingsEx __MINGW_NAME_AW(ChangeDisplaySettingsEx) +#define EnumDisplaySettings __MINGW_NAME_AW(EnumDisplaySettings) +#define EnumDisplaySettingsEx __MINGW_NAME_AW(EnumDisplaySettingsEx) +#define EnumDisplayDevices __MINGW_NAME_AW(EnumDisplayDevices) + __declspec (dllimport) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsA(LPDEVMODEA lpDevMode,DWORD dwFlags); + __declspec (dllimport) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsW(LPDEVMODEW lpDevMode,DWORD dwFlags); + __declspec (dllimport) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsExA(LPCSTR lpszDeviceName,LPDEVMODEA lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam); + __declspec (dllimport) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsExW(LPCWSTR lpszDeviceName,LPDEVMODEW lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam); +#define ENUM_CURRENT_SETTINGS ((DWORD)-1) +#define ENUM_REGISTRY_SETTINGS ((DWORD)-2) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsExA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode,DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsExW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode,DWORD dwFlags); +#define EDS_RAWMODE 0x00000002 +#define EDS_ROTATEDMODE 0x00000004 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDisplayDevicesA(LPCSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEA lpDisplayDevice,DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDisplayDevicesW(LPCWSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEW lpDisplayDevice,DWORD dwFlags); +#define EDD_GET_DEVICE_INTERFACE_NAME 0x00000001 +#define SystemParametersInfo __MINGW_NAME_AW(SystemParametersInfo) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SystemParametersInfoA(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SystemParametersInfoW(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni); + typedef struct tagFILTERKEYS { + UINT cbSize; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; + } FILTERKEYS,*LPFILTERKEYS; +#define FKF_FILTERKEYSON 0x00000001 +#define FKF_AVAILABLE 0x00000002 +#define FKF_HOTKEYACTIVE 0x00000004 +#define FKF_CONFIRMHOTKEY 0x00000008 +#define FKF_HOTKEYSOUND 0x00000010 +#define FKF_INDICATOR 0x00000020 +#define FKF_CLICKON 0x00000040 + typedef struct tagSTICKYKEYS { + UINT cbSize; + DWORD dwFlags; + } STICKYKEYS,*LPSTICKYKEYS; +#define SKF_STICKYKEYSON 0x00000001 +#define SKF_AVAILABLE 0x00000002 +#define SKF_HOTKEYACTIVE 0x00000004 +#define SKF_CONFIRMHOTKEY 0x00000008 +#define SKF_HOTKEYSOUND 0x00000010 +#define SKF_INDICATOR 0x00000020 +#define SKF_AUDIBLEFEEDBACK 0x00000040 +#define SKF_TRISTATE 0x00000080 +#define SKF_TWOKEYSOFF 0x00000100 +#define SKF_LALTLATCHED 0x10000000 +#define SKF_LCTLLATCHED 0x04000000 +#define SKF_LSHIFTLATCHED 0x01000000 +#define SKF_RALTLATCHED 0x20000000 +#define SKF_RCTLLATCHED 0x08000000 +#define SKF_RSHIFTLATCHED 0x02000000 +#define SKF_LWINLATCHED 0x40000000 +#define SKF_RWINLATCHED 0x80000000 +#define SKF_LALTLOCKED 0x00100000 +#define SKF_LCTLLOCKED 0x00040000 +#define SKF_LSHIFTLOCKED 0x00010000 +#define SKF_RALTLOCKED 0x00200000 +#define SKF_RCTLLOCKED 0x00080000 +#define SKF_RSHIFTLOCKED 0x00020000 +#define SKF_LWINLOCKED 0x00400000 +#define SKF_RWINLOCKED 0x00800000 + typedef struct tagMOUSEKEYS { + UINT cbSize; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; + } MOUSEKEYS,*LPMOUSEKEYS; +#define MKF_MOUSEKEYSON 0x00000001 +#define MKF_AVAILABLE 0x00000002 +#define MKF_HOTKEYACTIVE 0x00000004 +#define MKF_CONFIRMHOTKEY 0x00000008 +#define MKF_HOTKEYSOUND 0x00000010 +#define MKF_INDICATOR 0x00000020 +#define MKF_MODIFIERS 0x00000040 +#define MKF_REPLACENUMBERS 0x00000080 +#define MKF_LEFTBUTTONSEL 0x10000000 +#define MKF_RIGHTBUTTONSEL 0x20000000 +#define MKF_LEFTBUTTONDOWN 0x01000000 +#define MKF_RIGHTBUTTONDOWN 0x02000000 +#define MKF_MOUSEMODE 0x80000000 + typedef struct tagACCESSTIMEOUT { + UINT cbSize; + DWORD dwFlags; + DWORD iTimeOutMSec; + } ACCESSTIMEOUT,*LPACCESSTIMEOUT; +#define ATF_TIMEOUTON 0x00000001 +#define ATF_ONOFFFEEDBACK 0x00000002 +#define SSGF_NONE 0 +#define SSGF_DISPLAY 3 +#define SSTF_NONE 0 +#define SSTF_CHARS 1 +#define SSTF_BORDER 2 +#define SSTF_DISPLAY 3 +#define SSWF_NONE 0 +#define SSWF_TITLE 1 +#define SSWF_WINDOW 2 +#define SSWF_DISPLAY 3 +#define SSWF_CUSTOM 4 + typedef struct tagSOUNDSENTRYA { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; + } SOUNDSENTRYA,*LPSOUNDSENTRYA; + typedef struct tagSOUNDSENTRYW { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; + } SOUNDSENTRYW,*LPSOUNDSENTRYW; + typedef SOUNDSENTRYA SOUNDSENTRY; + typedef LPSOUNDSENTRYA LPSOUNDSENTRY; +#define SSF_SOUNDSENTRYON 0x00000001 +#define SSF_AVAILABLE 0x00000002 +#define SSF_INDICATOR 0x00000004 + typedef struct tagTOGGLEKEYS { + UINT cbSize; + DWORD dwFlags; + } TOGGLEKEYS,*LPTOGGLEKEYS; + typedef struct tagMONITORINFO { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + } MONITORINFO,*LPMONITORINFO; + typedef struct tagAUDIODESCRIPTION { + UINT cbSize; + WINBOOL Enabled; + LCID Locale; + } AUDIODESCRIPTION,*LPAUDIODESCRIPTION; + typedef struct tagMONITORINFOEXA { + __extension__ struct { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + }; + CHAR szDevice[32]; + } MONITORINFOEXA,*LPMONITORINFOEXA; + typedef struct tagMONITORINFOEXW { + __extension__ struct { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + }; + WCHAR szDevice[32]; + } MONITORINFOEXW,*LPMONITORINFOEXW; + typedef MONITORINFOEXA MONITORINFOEX; + typedef LPMONITORINFOEXA LPMONITORINFOEX; + typedef WINBOOL (__attribute__((__stdcall__)) *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM); + __declspec (dllimport) void __attribute__((__stdcall__)) SetDebugErrorLevel (DWORD dwLevel); + __declspec (dllimport) void __attribute__((__stdcall__)) SetLastErrorEx (DWORD dwErrCode, DWORD dwType); + __declspec (dllimport) int __attribute__((__stdcall__)) InternalGetWindowText (HWND hWnd, LPWSTR pString, int cchMaxCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CancelShutdown (void); + __declspec (dllimport) HMONITOR __attribute__((__stdcall__)) MonitorFromPoint(POINT pt,DWORD dwFlags); + __declspec (dllimport) HMONITOR __attribute__((__stdcall__)) MonitorFromRect(LPCRECT lprc,DWORD dwFlags); + __declspec (dllimport) HMONITOR __attribute__((__stdcall__)) MonitorFromWindow(HWND hwnd,DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EndTask (HWND hWnd, WINBOOL fShutDown, WINBOOL fForce); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SoundSentry (void); +#define GetMonitorInfo __MINGW_NAME_AW(GetMonitorInfo) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMonitorInfoA(HMONITOR hMonitor,LPMONITORINFO lpmi); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMonitorInfoW(HMONITOR hMonitor,LPMONITORINFO lpmi); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDisplayMonitors(HDC hdc,LPCRECT lprcClip,MONITORENUMPROC lpfnEnum,LPARAM dwData); +#define TKF_TOGGLEKEYSON 0x00000001 +#define TKF_AVAILABLE 0x00000002 +#define TKF_HOTKEYACTIVE 0x00000004 +#define TKF_CONFIRMHOTKEY 0x00000008 +#define TKF_HOTKEYSOUND 0x00000010 +#define TKF_INDICATOR 0x00000020 +#define SLE_ERROR 0x00000001 +#define SLE_MINORERROR 0x00000002 +#define SLE_WARNING 0x00000003 +#define MONITOR_DEFAULTTONULL 0x00000000 +#define MONITOR_DEFAULTTOPRIMARY 0x00000001 +#define MONITOR_DEFAULTTONEAREST 0x00000002 +#define MONITORINFOF_PRIMARY 0x00000001 + typedef void (__attribute__((__stdcall__)) *WINEVENTPROC)(HWINEVENTHOOK hWinEventHook,DWORD event,HWND hwnd,LONG idObject,LONG idChild,DWORD idEventThread,DWORD dwmsEventTime); + __declspec (dllimport) void __attribute__((__stdcall__)) NotifyWinEvent(DWORD event,HWND hwnd,LONG idObject,LONG idChild); + __declspec (dllimport) HWINEVENTHOOK __attribute__((__stdcall__)) SetWinEventHook(DWORD eventMin,DWORD eventMax,HMODULE hmodWinEventProc,WINEVENTPROC pfnWinEventProc,DWORD idProcess,DWORD idThread,DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsWinEventHookInstalled(DWORD event); +#define WINEVENT_OUTOFCONTEXT 0x0000 +#define WINEVENT_SKIPOWNTHREAD 0x0001 +#define WINEVENT_SKIPOWNPROCESS 0x0002 +#define WINEVENT_INCONTEXT 0x0004 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnhookWinEvent(HWINEVENTHOOK hWinEventHook); +#define CHILDID_SELF 0 +#define INDEXID_OBJECT 0 +#define INDEXID_CONTAINER 0 +#define OBJID_WINDOW ((LONG)0x00000000) +#define OBJID_SYSMENU ((LONG)0xFFFFFFFF) +#define OBJID_TITLEBAR ((LONG)0xFFFFFFFE) +#define OBJID_MENU ((LONG)0xFFFFFFFD) +#define OBJID_CLIENT ((LONG)0xFFFFFFFC) +#define OBJID_VSCROLL ((LONG)0xFFFFFFFB) +#define OBJID_HSCROLL ((LONG)0xFFFFFFFA) +#define OBJID_SIZEGRIP ((LONG)0xFFFFFFF9) +#define OBJID_CARET ((LONG)0xFFFFFFF8) +#define OBJID_CURSOR ((LONG)0xFFFFFFF7) +#define OBJID_ALERT ((LONG)0xFFFFFFF6) +#define OBJID_SOUND ((LONG)0xFFFFFFF5) +#define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4) +#define OBJID_NATIVEOM ((LONG)0xFFFFFFF0) +#define EVENT_MIN 0x00000001 +#define EVENT_MAX 0x7FFFFFFF +#define EVENT_SYSTEM_SOUND 0x0001 +#define EVENT_SYSTEM_ALERT 0x0002 +#define EVENT_SYSTEM_FOREGROUND 0x0003 +#define EVENT_SYSTEM_MENUSTART 0x0004 +#define EVENT_SYSTEM_MENUEND 0x0005 +#define EVENT_SYSTEM_MENUPOPUPSTART 0x0006 +#define EVENT_SYSTEM_MENUPOPUPEND 0x0007 +#define EVENT_SYSTEM_CAPTURESTART 0x0008 +#define EVENT_SYSTEM_CAPTUREEND 0x0009 +#define EVENT_SYSTEM_MOVESIZESTART 0x000A +#define EVENT_SYSTEM_MOVESIZEEND 0x000B +#define EVENT_SYSTEM_CONTEXTHELPSTART 0x000C +#define EVENT_SYSTEM_CONTEXTHELPEND 0x000D +#define EVENT_SYSTEM_DRAGDROPSTART 0x000E +#define EVENT_SYSTEM_DRAGDROPEND 0x000F +#define EVENT_SYSTEM_DIALOGSTART 0x0010 +#define EVENT_SYSTEM_DIALOGEND 0x0011 +#define EVENT_SYSTEM_SCROLLINGSTART 0x0012 +#define EVENT_SYSTEM_SCROLLINGEND 0x0013 +#define EVENT_SYSTEM_SWITCHSTART 0x0014 +#define EVENT_SYSTEM_SWITCHEND 0x0015 +#define EVENT_SYSTEM_MINIMIZESTART 0x0016 +#define EVENT_SYSTEM_MINIMIZEEND 0x0017 +#define EVENT_SYSTEM_DESKTOPSWITCH 0x0020 +#define EVENT_CONSOLE_CARET 0x4001 +#define EVENT_CONSOLE_UPDATE_REGION 0x4002 +#define EVENT_CONSOLE_UPDATE_SIMPLE 0x4003 +#define EVENT_CONSOLE_UPDATE_SCROLL 0x4004 +#define EVENT_CONSOLE_LAYOUT 0x4005 +#define EVENT_CONSOLE_START_APPLICATION 0x4006 +#define EVENT_CONSOLE_END_APPLICATION 0x4007 +#define CONSOLE_APPLICATION_16BIT 0x0000 +#define CONSOLE_CARET_SELECTION 0x0001 +#define CONSOLE_CARET_VISIBLE 0x0002 +#define EVENT_OBJECT_CREATE 0x8000 +#define EVENT_OBJECT_DESTROY 0x8001 +#define EVENT_OBJECT_SHOW 0x8002 +#define EVENT_OBJECT_HIDE 0x8003 +#define EVENT_OBJECT_REORDER 0x8004 +#define EVENT_OBJECT_FOCUS 0x8005 +#define EVENT_OBJECT_SELECTION 0x8006 +#define EVENT_OBJECT_SELECTIONADD 0x8007 +#define EVENT_OBJECT_SELECTIONREMOVE 0x8008 +#define EVENT_OBJECT_SELECTIONWITHIN 0x8009 +#define EVENT_OBJECT_STATECHANGE 0x800A +#define EVENT_OBJECT_LOCATIONCHANGE 0x800B +#define EVENT_OBJECT_NAMECHANGE 0x800C +#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D +#define EVENT_OBJECT_VALUECHANGE 0x800E +#define EVENT_OBJECT_PARENTCHANGE 0x800F +#define EVENT_OBJECT_HELPCHANGE 0x8010 +#define EVENT_OBJECT_DEFACTIONCHANGE 0x8011 +#define EVENT_OBJECT_ACCELERATORCHANGE 0x8012 +#define EVENT_OBJECT_INVOKED 0x8013 +#define EVENT_OBJECT_TEXTSELECTIONCHANGED 0x8014 +#define EVENT_OBJECT_CONTENTSCROLLED 0x8015 +#define SOUND_SYSTEM_STARTUP 1 +#define SOUND_SYSTEM_SHUTDOWN 2 +#define SOUND_SYSTEM_BEEP 3 +#define SOUND_SYSTEM_ERROR 4 +#define SOUND_SYSTEM_QUESTION 5 +#define SOUND_SYSTEM_WARNING 6 +#define SOUND_SYSTEM_INFORMATION 7 +#define SOUND_SYSTEM_MAXIMIZE 8 +#define SOUND_SYSTEM_MINIMIZE 9 +#define SOUND_SYSTEM_RESTOREUP 10 +#define SOUND_SYSTEM_RESTOREDOWN 11 +#define SOUND_SYSTEM_APPSTART 12 +#define SOUND_SYSTEM_FAULT 13 +#define SOUND_SYSTEM_APPEND 14 +#define SOUND_SYSTEM_MENUCOMMAND 15 +#define SOUND_SYSTEM_MENUPOPUP 16 +#define CSOUND_SYSTEM 16 +#define ALERT_SYSTEM_INFORMATIONAL 1 +#define ALERT_SYSTEM_WARNING 2 +#define ALERT_SYSTEM_ERROR 3 +#define ALERT_SYSTEM_QUERY 4 +#define ALERT_SYSTEM_CRITICAL 5 +#define CALERT_SYSTEM 6 + typedef struct tagGUITHREADINFO { + DWORD cbSize; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; + } GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO; +#define GUI_CARETBLINKING 0x00000001 +#define GUI_INMOVESIZE 0x00000002 +#define GUI_INMENUMODE 0x00000004 +#define GUI_SYSTEMMENUMODE 0x00000008 +#define GUI_POPUPMENUMODE 0x00000010 +#define GUI_16BITTASK 0x00000000 +#define GetWindowModuleFileName __MINGW_NAME_AW(GetWindowModuleFileName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetGUIThreadInfo(DWORD idThread,PGUITHREADINFO pgui); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) BlockInput (WINBOOL fBlockIt); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetWindowModuleFileNameA(HWND hwnd,LPSTR pszFileName,UINT cchFileNameMax); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetWindowModuleFileNameW(HWND hwnd,LPWSTR pszFileName,UINT cchFileNameMax); +#define USER_DEFAULT_SCREEN_DPI 96 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessDPIAware (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsProcessDPIAware (void); +#define STATE_SYSTEM_UNAVAILABLE 0x00000001 +#define STATE_SYSTEM_SELECTED 0x00000002 +#define STATE_SYSTEM_FOCUSED 0x00000004 +#define STATE_SYSTEM_PRESSED 0x00000008 +#define STATE_SYSTEM_CHECKED 0x00000010 +#define STATE_SYSTEM_MIXED 0x00000020 +#define STATE_SYSTEM_INDETERMINATE STATE_SYSTEM_MIXED +#define STATE_SYSTEM_READONLY 0x00000040 +#define STATE_SYSTEM_HOTTRACKED 0x00000080 +#define STATE_SYSTEM_DEFAULT 0x00000100 +#define STATE_SYSTEM_EXPANDED 0x00000200 +#define STATE_SYSTEM_COLLAPSED 0x00000400 +#define STATE_SYSTEM_BUSY 0x00000800 +#define STATE_SYSTEM_FLOATING 0x00001000 +#define STATE_SYSTEM_MARQUEED 0x00002000 +#define STATE_SYSTEM_ANIMATED 0x00004000 +#define STATE_SYSTEM_INVISIBLE 0x00008000 +#define STATE_SYSTEM_OFFSCREEN 0x00010000 +#define STATE_SYSTEM_SIZEABLE 0x00020000 +#define STATE_SYSTEM_MOVEABLE 0x00040000 +#define STATE_SYSTEM_SELFVOICING 0x00080000 +#define STATE_SYSTEM_FOCUSABLE 0x00100000 +#define STATE_SYSTEM_SELECTABLE 0x00200000 +#define STATE_SYSTEM_LINKED 0x00400000 +#define STATE_SYSTEM_TRAVERSED 0x00800000 +#define STATE_SYSTEM_MULTISELECTABLE 0x01000000 +#define STATE_SYSTEM_EXTSELECTABLE 0x02000000 +#define STATE_SYSTEM_ALERT_LOW 0x04000000 +#define STATE_SYSTEM_ALERT_MEDIUM 0x08000000 +#define STATE_SYSTEM_ALERT_HIGH 0x10000000 +#define STATE_SYSTEM_PROTECTED 0x20000000 +#define STATE_SYSTEM_VALID 0x3FFFFFFF +#define CCHILDREN_TITLEBAR 5 +#define CCHILDREN_SCROLLBAR 5 + typedef struct tagCURSORINFO { + DWORD cbSize; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; + } CURSORINFO,*PCURSORINFO,*LPCURSORINFO; +#define CURSOR_SHOWING 0x00000001 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCursorInfo(PCURSORINFO pci); + typedef struct tagWINDOWINFO { + DWORD cbSize; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; + } WINDOWINFO,*PWINDOWINFO,*LPWINDOWINFO; +#define WS_ACTIVECAPTION 0x0001 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetWindowInfo(HWND hwnd,PWINDOWINFO pwi); + typedef struct tagTITLEBARINFO { + DWORD cbSize; + RECT rcTitleBar; + DWORD rgstate[5 + 1]; + } TITLEBARINFO,*PTITLEBARINFO,*LPTITLEBARINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetTitleBarInfo(HWND hwnd,PTITLEBARINFO pti); + typedef struct tagTITLEBARINFOEX { + DWORD cbSize; + RECT rcTitleBar; + DWORD rgstate[5 + 1]; + RECT rgrect[5 + 1]; + } TITLEBARINFOEX,*PTITLEBARINFOEX,*LPTITLEBARINFOEX; + typedef struct tagMENUBARINFO { + DWORD cbSize; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; + WINBOOL fBarFocused:1; + WINBOOL fFocused:1; + } MENUBARINFO,*PMENUBARINFO,*LPMENUBARINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetMenuBarInfo(HWND hwnd,LONG idObject,LONG idItem,PMENUBARINFO pmbi); + typedef struct tagSCROLLBARINFO { + DWORD cbSize; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD rgstate[5 + 1]; + } SCROLLBARINFO,*PSCROLLBARINFO,*LPSCROLLBARINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetScrollBarInfo(HWND hwnd,LONG idObject,PSCROLLBARINFO psbi); + typedef struct tagCOMBOBOXINFO { + DWORD cbSize; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; + } COMBOBOXINFO,*PCOMBOBOXINFO,*LPCOMBOBOXINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetComboBoxInfo(HWND hwndCombo,PCOMBOBOXINFO pcbi); +#define GA_PARENT 1 +#define GA_ROOT 2 +#define GA_ROOTOWNER 3 +#define RealGetWindowClass __MINGW_NAME_AW(RealGetWindowClass) + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetAncestor(HWND hwnd,UINT gaFlags); + __declspec (dllimport) HWND __attribute__((__stdcall__)) RealChildWindowFromPoint(HWND hwndParent,POINT ptParentClientCoords); + __declspec (dllimport) UINT __attribute__((__stdcall__)) RealGetWindowClassA(HWND hwnd,LPSTR ptszClassName,UINT cchClassNameMax); + __declspec (dllimport) UINT __attribute__((__stdcall__)) RealGetWindowClassW(HWND hwnd,LPWSTR ptszClassName,UINT cchClassNameMax); + typedef struct tagALTTABINFO { + DWORD cbSize; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; + } ALTTABINFO,*PALTTABINFO,*LPALTTABINFO; +#define GetAltTabInfo __MINGW_NAME_AW(GetAltTabInfo) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetAltTabInfoA(HWND hwnd,int iItem,PALTTABINFO pati,LPSTR pszItemText,UINT cchItemText); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetAltTabInfoW(HWND hwnd,int iItem,PALTTABINFO pati,LPWSTR pszItemText,UINT cchItemText); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetListBoxInfo(HWND hwnd); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) LockWorkStation(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UserHandleGrantAccess(HANDLE hUserHandle,HANDLE hJob,WINBOOL bGrant); + struct HRAWINPUT__ { int unused; }; typedef struct HRAWINPUT__ *HRAWINPUT; +#define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff) +#define RIM_INPUT 0 +#define RIM_INPUTSINK 1 + typedef struct tagRAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; + } RAWINPUTHEADER,*PRAWINPUTHEADER,*LPRAWINPUTHEADER; +#define RIM_TYPEMOUSE 0 +#define RIM_TYPEKEYBOARD 1 +#define RIM_TYPEHID 2 +#define RIM_TYPEMAX 2 + typedef struct tagRAWMOUSE { + USHORT usFlags; + __extension__ union { + ULONG ulButtons; + __extension__ struct { + USHORT usButtonFlags; + USHORT usButtonData; + }; + }; + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; + } RAWMOUSE,*PRAWMOUSE,*LPRAWMOUSE; +#define RI_MOUSE_LEFT_BUTTON_DOWN 0x0001 +#define RI_MOUSE_LEFT_BUTTON_UP 0x0002 +#define RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004 +#define RI_MOUSE_RIGHT_BUTTON_UP 0x0008 +#define RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010 +#define RI_MOUSE_MIDDLE_BUTTON_UP 0x0020 +#define RI_MOUSE_BUTTON_4_DOWN 0x0040 +#define RI_MOUSE_BUTTON_4_UP 0x0080 +#define RI_MOUSE_BUTTON_5_DOWN 0x0100 +#define RI_MOUSE_BUTTON_5_UP 0x0200 +#define RI_MOUSE_WHEEL 0x0400 +#define RI_MOUSE_HWHEEL 0x0800 +#define RI_MOUSE_BUTTON_1_DOWN RI_MOUSE_LEFT_BUTTON_DOWN +#define RI_MOUSE_BUTTON_1_UP RI_MOUSE_LEFT_BUTTON_UP +#define RI_MOUSE_BUTTON_2_DOWN RI_MOUSE_RIGHT_BUTTON_DOWN +#define RI_MOUSE_BUTTON_2_UP RI_MOUSE_RIGHT_BUTTON_UP +#define RI_MOUSE_BUTTON_3_DOWN RI_MOUSE_MIDDLE_BUTTON_DOWN +#define RI_MOUSE_BUTTON_3_UP RI_MOUSE_MIDDLE_BUTTON_UP +#define MOUSE_MOVE_RELATIVE 0 +#define MOUSE_MOVE_ABSOLUTE 1 +#define MOUSE_VIRTUAL_DESKTOP 0x02 +#define MOUSE_ATTRIBUTES_CHANGED 0x04 +#define MOUSE_MOVE_NOCOALESCE 0x08 + typedef struct tagRAWKEYBOARD { + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; + } RAWKEYBOARD,*PRAWKEYBOARD,*LPRAWKEYBOARD; +#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF +#define RI_KEY_MAKE 0 +#define RI_KEY_BREAK 1 +#define RI_KEY_E0 2 +#define RI_KEY_E1 4 +#define RI_KEY_TERMSRV_SET_LED 8 +#define RI_KEY_TERMSRV_SHADOW 0x10 + typedef struct tagRAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData[1]; + } RAWHID,*PRAWHID,*LPRAWHID; + typedef struct tagRAWINPUT { + RAWINPUTHEADER header; + union { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; + } data; + } RAWINPUT,*PRAWINPUT,*LPRAWINPUT; +#define RAWINPUT_ALIGN(x) (((x) + sizeof(QWORD) - 1) & ~(sizeof(QWORD) - 1)) +#define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize))) +#define RID_INPUT 0x10000003 +#define RID_HEADER 0x10000005 + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetRawInputData(HRAWINPUT hRawInput,UINT uiCommand,LPVOID pData,PUINT pcbSize,UINT cbSizeHeader); +#define RIDI_PREPARSEDDATA 0x20000005 +#define RIDI_DEVICENAME 0x20000007 +#define RIDI_DEVICEINFO 0x2000000b + typedef struct tagRID_DEVICE_INFO_MOUSE { + DWORD dwId; + DWORD dwNumberOfButtons; + DWORD dwSampleRate; + WINBOOL fHasHorizontalWheel; + } RID_DEVICE_INFO_MOUSE,*PRID_DEVICE_INFO_MOUSE; + typedef struct tagRID_DEVICE_INFO_KEYBOARD { + DWORD dwType; + DWORD dwSubType; + DWORD dwKeyboardMode; + DWORD dwNumberOfFunctionKeys; + DWORD dwNumberOfIndicators; + DWORD dwNumberOfKeysTotal; + } RID_DEVICE_INFO_KEYBOARD,*PRID_DEVICE_INFO_KEYBOARD; + typedef struct tagRID_DEVICE_INFO_HID { + DWORD dwVendorId; + DWORD dwProductId; + DWORD dwVersionNumber; + USHORT usUsagePage; + USHORT usUsage; + } RID_DEVICE_INFO_HID,*PRID_DEVICE_INFO_HID; + typedef struct tagRID_DEVICE_INFO { + DWORD cbSize; + DWORD dwType; + __extension__ union { + RID_DEVICE_INFO_MOUSE mouse; + RID_DEVICE_INFO_KEYBOARD keyboard; + RID_DEVICE_INFO_HID hid; + } ; + } RID_DEVICE_INFO,*PRID_DEVICE_INFO,*LPRID_DEVICE_INFO; +#define GetRawInputDeviceInfo __MINGW_NAME_AW(GetRawInputDeviceInfo) + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetRawInputDeviceInfoA(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetRawInputDeviceInfoW(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetRawInputBuffer(PRAWINPUT pData,PUINT pcbSize,UINT cbSizeHeader); + typedef struct tagRAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; + } RAWINPUTDEVICE,*PRAWINPUTDEVICE,*LPRAWINPUTDEVICE; + typedef const RAWINPUTDEVICE *PCRAWINPUTDEVICE; +#define RIDEV_REMOVE 0x00000001 +#define RIDEV_EXCLUDE 0x00000010 +#define RIDEV_PAGEONLY 0x00000020 +#define RIDEV_NOLEGACY 0x00000030 +#define RIDEV_INPUTSINK 0x00000100 +#define RIDEV_CAPTUREMOUSE 0x00000200 +#define RIDEV_NOHOTKEYS 0x00000200 +#define RIDEV_APPKEYS 0x00000400 +#define RIDEV_EXINPUTSINK 0x00001000 +#define RIDEV_DEVNOTIFY 0x00002000 +#define RIDEV_EXMODEMASK 0x000000F0 +#define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK) +#define GIDC_ARRIVAL 1 +#define GIDC_REMOVAL 2 +#define GET_DEVICE_CHANGE_LPARAM(lParam) (LOWORD (lParam)) + typedef struct tagRAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; + } RAWINPUTDEVICELIST,*PRAWINPUTDEVICELIST; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) RegisterRawInputDevices (PCRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetRegisteredRawInputDevices (PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetRawInputDeviceList (PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize); + __declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefRawInputProc (PRAWINPUT *paRawInput, INT nInput, UINT cbSizeHeader); +#define MSGFLT_ADD 1 +#define MSGFLT_REMOVE 2 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeWindowMessageFilter (UINT message, DWORD dwFlag); +#define MAX_STR_BLOCKREASON 256 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShutdownBlockReasonCreate (HWND hWnd, LPCWSTR pwszReason); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShutdownBlockReasonQuery (HWND hWnd, LPWSTR pwszBuff, DWORD *pcchBuff); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShutdownBlockReasonDestroy (HWND hWnd); +#define _WINNLS_ +#define _DATETIMEAPI_H_ + __declspec (dllimport) int __attribute__((__stdcall__)) GetTimeFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, int cchTime); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDateFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, LPWSTR lpDateStr, int cchDate, LPCWSTR lpCalendar); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDateFormatA (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, LPSTR lpDateStr, int cchDate); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDateFormatW (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, LPWSTR lpDateStr, int cchDate); + __declspec (dllimport) int __attribute__((__stdcall__)) GetTimeFormatA (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, int cchTime); + __declspec (dllimport) int __attribute__((__stdcall__)) GetTimeFormatW (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, int cchTime); +#define GetDateFormat __MINGW_NAME_AW(GetDateFormat) +#define GetTimeFormat __MINGW_NAME_AW(GetTimeFormat) +#define WINNORMALIZEAPI DECLSPEC_IMPORT +#define MAX_LEADBYTES 12 +#define MAX_DEFAULTCHAR 2 +#define HIGH_SURROGATE_START 0xd800 +#define HIGH_SURROGATE_END 0xdbff +#define LOW_SURROGATE_START 0xdc00 +#define LOW_SURROGATE_END 0xdfff +#define MB_PRECOMPOSED 0x00000001 +#define MB_COMPOSITE 0x00000002 +#define MB_USEGLYPHCHARS 0x00000004 +#define MB_ERR_INVALID_CHARS 0x00000008 +#define WC_DISCARDNS 0x00000010 +#define WC_SEPCHARS 0x00000020 +#define WC_DEFAULTCHAR 0x00000040 +#define WC_ERR_INVALID_CHARS 0x00000080 +#define WC_COMPOSITECHECK 0x00000200 +#define WC_NO_BEST_FIT_CHARS 0x00000400 +#define CT_CTYPE1 0x00000001 +#define CT_CTYPE2 0x00000002 +#define CT_CTYPE3 0x00000004 +#define C1_UPPER 0x0001 +#define C1_LOWER 0x0002 +#define C1_DIGIT 0x0004 +#define C1_SPACE 0x0008 +#define C1_PUNCT 0x0010 +#define C1_CNTRL 0x0020 +#define C1_BLANK 0x0040 +#define C1_XDIGIT 0x0080 +#define C1_ALPHA 0x0100 +#define C1_DEFINED 0x0200 +#define C2_LEFTTORIGHT 0x0001 +#define C2_RIGHTTOLEFT 0x0002 +#define C2_EUROPENUMBER 0x0003 +#define C2_EUROPESEPARATOR 0x0004 +#define C2_EUROPETERMINATOR 0x0005 +#define C2_ARABICNUMBER 0x0006 +#define C2_COMMONSEPARATOR 0x0007 +#define C2_BLOCKSEPARATOR 0x0008 +#define C2_SEGMENTSEPARATOR 0x0009 +#define C2_WHITESPACE 0x000a +#define C2_OTHERNEUTRAL 0x000b +#define C2_NOTAPPLICABLE 0x0000 +#define C3_NONSPACING 0x0001 +#define C3_DIACRITIC 0x0002 +#define C3_VOWELMARK 0x0004 +#define C3_SYMBOL 0x0008 +#define C3_KATAKANA 0x0010 +#define C3_HIRAGANA 0x0020 +#define C3_HALFWIDTH 0x0040 +#define C3_FULLWIDTH 0x0080 +#define C3_IDEOGRAPH 0x0100 +#define C3_KASHIDA 0x0200 +#define C3_LEXICAL 0x0400 +#define C3_HIGHSURROGATE 0x0800 +#define C3_LOWSURROGATE 0x1000 +#define C3_ALPHA 0x8000 +#define C3_NOTAPPLICABLE 0x0000 +#define NORM_IGNORECASE 0x00000001 +#define NORM_IGNORENONSPACE 0x00000002 +#define NORM_IGNORESYMBOLS 0x00000004 +#define LINGUISTIC_IGNORECASE 0x00000010 +#define LINGUISTIC_IGNOREDIACRITIC 0x00000020 +#define NORM_IGNOREKANATYPE 0x00010000 +#define NORM_IGNOREWIDTH 0x00020000 +#define NORM_LINGUISTIC_CASING 0x08000000 +#define MAP_FOLDCZONE 0x00000010 +#define MAP_PRECOMPOSED 0x00000020 +#define MAP_COMPOSITE 0x00000040 +#define MAP_FOLDDIGITS 0x00000080 +#define MAP_EXPAND_LIGATURES 0x00002000 +#define LCMAP_LOWERCASE 0x00000100 +#define LCMAP_UPPERCASE 0x00000200 +#define LCMAP_SORTKEY 0x00000400 +#define LCMAP_BYTEREV 0x00000800 +#define LCMAP_HIRAGANA 0x00100000 +#define LCMAP_KATAKANA 0x00200000 +#define LCMAP_HALFWIDTH 0x00400000 +#define LCMAP_FULLWIDTH 0x00800000 +#define LCMAP_LINGUISTIC_CASING 0x01000000 +#define LCMAP_SIMPLIFIED_CHINESE 0x02000000 +#define LCMAP_TRADITIONAL_CHINESE 0x04000000 +#define FIND_STARTSWITH 0x00100000 +#define FIND_ENDSWITH 0x00200000 +#define FIND_FROMSTART 0x00400000 +#define FIND_FROMEND 0x00800000 +#define LGRPID_INSTALLED 0x00000001 +#define LGRPID_SUPPORTED 0x00000002 +#define LCID_INSTALLED 0x00000001 +#define LCID_SUPPORTED 0x00000002 +#define LCID_ALTERNATE_SORTS 0x00000004 +#define LOCALE_ALL 0 +#define LOCALE_WINDOWS 0x00000001 +#define LOCALE_SUPPLEMENTAL 0x00000002 +#define LOCALE_ALTERNATE_SORTS 0x00000004 +#define LOCALE_REPLACEMENT 0x00000008 +#define CP_INSTALLED 0x00000001 +#define CP_SUPPORTED 0x00000002 +#define SORT_STRINGSORT 0x00001000 +#define CSTR_LESS_THAN 1 +#define CSTR_EQUAL 2 +#define CSTR_GREATER_THAN 3 +#define CP_ACP 0 +#define CP_OEMCP 1 +#define CP_MACCP 2 +#define CP_THREAD_ACP 3 +#define CP_SYMBOL 42 +#define CP_UTF7 65000 +#define CP_UTF8 65001 +#define CTRY_DEFAULT 0 +#define CTRY_ALBANIA 355 +#define CTRY_ALGERIA 213 +#define CTRY_ARGENTINA 54 +#define CTRY_ARMENIA 374 +#define CTRY_AUSTRALIA 61 +#define CTRY_AUSTRIA 43 +#define CTRY_AZERBAIJAN 994 +#define CTRY_BAHRAIN 973 +#define CTRY_BELARUS 375 +#define CTRY_BELGIUM 32 +#define CTRY_BELIZE 501 +#define CTRY_BOLIVIA 591 +#define CTRY_BRAZIL 55 +#define CTRY_BRUNEI_DARUSSALAM 673 +#define CTRY_BULGARIA 359 +#define CTRY_CANADA 2 +#define CTRY_CARIBBEAN 1 +#define CTRY_CHILE 56 +#define CTRY_COLOMBIA 57 +#define CTRY_COSTA_RICA 506 +#define CTRY_CROATIA 385 +#define CTRY_CZECH 420 +#define CTRY_DENMARK 45 +#define CTRY_DOMINICAN_REPUBLIC 1 +#define CTRY_ECUADOR 593 +#define CTRY_EGYPT 20 +#define CTRY_EL_SALVADOR 503 +#define CTRY_ESTONIA 372 +#define CTRY_FAEROE_ISLANDS 298 +#define CTRY_FINLAND 358 +#define CTRY_FRANCE 33 +#define CTRY_GEORGIA 995 +#define CTRY_GERMANY 49 +#define CTRY_GREECE 30 +#define CTRY_GUATEMALA 502 +#define CTRY_HONDURAS 504 +#define CTRY_HONG_KONG 852 +#define CTRY_HUNGARY 36 +#define CTRY_ICELAND 354 +#define CTRY_INDIA 91 +#define CTRY_INDONESIA 62 +#define CTRY_IRAN 981 +#define CTRY_IRAQ 964 +#define CTRY_IRELAND 353 +#define CTRY_ISRAEL 972 +#define CTRY_ITALY 39 +#define CTRY_JAMAICA 1 +#define CTRY_JAPAN 81 +#define CTRY_JORDAN 962 +#define CTRY_KAZAKSTAN 7 +#define CTRY_KENYA 254 +#define CTRY_KUWAIT 965 +#define CTRY_KYRGYZSTAN 996 +#define CTRY_LATVIA 371 +#define CTRY_LEBANON 961 +#define CTRY_LIBYA 218 +#define CTRY_LIECHTENSTEIN 41 +#define CTRY_LITHUANIA 370 +#define CTRY_LUXEMBOURG 352 +#define CTRY_MACAU 853 +#define CTRY_MACEDONIA 389 +#define CTRY_MALAYSIA 60 +#define CTRY_MALDIVES 960 +#define CTRY_MEXICO 52 +#define CTRY_MONACO 33 +#define CTRY_MONGOLIA 976 +#define CTRY_MOROCCO 212 +#define CTRY_NETHERLANDS 31 +#define CTRY_NEW_ZEALAND 64 +#define CTRY_NICARAGUA 505 +#define CTRY_NORWAY 47 +#define CTRY_OMAN 968 +#define CTRY_PAKISTAN 92 +#define CTRY_PANAMA 507 +#define CTRY_PARAGUAY 595 +#define CTRY_PERU 51 +#define CTRY_PHILIPPINES 63 +#define CTRY_POLAND 48 +#define CTRY_PORTUGAL 351 +#define CTRY_PRCHINA 86 +#define CTRY_PUERTO_RICO 1 +#define CTRY_QATAR 974 +#define CTRY_ROMANIA 40 +#define CTRY_RUSSIA 7 +#define CTRY_SAUDI_ARABIA 966 +#define CTRY_SERBIA 381 +#define CTRY_SINGAPORE 65 +#define CTRY_SLOVAK 421 +#define CTRY_SLOVENIA 386 +#define CTRY_SOUTH_AFRICA 27 +#define CTRY_SOUTH_KOREA 82 +#define CTRY_SPAIN 34 +#define CTRY_SWEDEN 46 +#define CTRY_SWITZERLAND 41 +#define CTRY_SYRIA 963 +#define CTRY_TAIWAN 886 +#define CTRY_TATARSTAN 7 +#define CTRY_THAILAND 66 +#define CTRY_TRINIDAD_Y_TOBAGO 1 +#define CTRY_TUNISIA 216 +#define CTRY_TURKEY 90 +#define CTRY_UAE 971 +#define CTRY_UKRAINE 380 +#define CTRY_UNITED_KINGDOM 44 +#define CTRY_UNITED_STATES 1 +#define CTRY_URUGUAY 598 +#define CTRY_UZBEKISTAN 7 +#define CTRY_VENEZUELA 58 +#define CTRY_VIET_NAM 84 +#define CTRY_YEMEN 967 +#define CTRY_ZIMBABWE 263 +#define LOCALE_SLOCALIZEDDISPLAYNAME 0x00000002 +#define LOCALE_RETURN_NUMBER 0x20000000 +#define LOCALE_USE_CP_ACP 0x40000000 +#define LOCALE_NOUSEROVERRIDE 0x80000000 +#define LOCALE_SLOCALIZEDLANGUAGENAME 0x0000006f +#define LOCALE_SENGLISHLANGUAGENAME 0x00001001 +#define LOCALE_SNATIVELANGUAGENAME 0x00000004 +#define LOCALE_SLOCALIZEDCOUNTRYNAME 0x00000006 +#define LOCALE_SENGLISHCOUNTRYNAME 0x00001002 +#define LOCALE_SNATIVECOUNTRYNAME 0x00000008 +#define LOCALE_SLANGUAGE 0x00000002 +#define LOCALE_SLANGDISPLAYNAME 0x0000006f +#define LOCALE_SENGLANGUAGE 0x00001001 +#define LOCALE_SNATIVELANGNAME 0x00000004 +#define LOCALE_SCOUNTRY 0x00000006 +#define LOCALE_SENGCOUNTRY 0x00001002 +#define LOCALE_SNATIVECTRYNAME 0x00000008 +#define LOCALE_ILANGUAGE 0x00000001 +#define LOCALE_SABBREVLANGNAME 0x00000003 +#define LOCALE_ICOUNTRY 0x00000005 +#define LOCALE_SABBREVCTRYNAME 0x00000007 +#define LOCALE_IGEOID 0x0000005b +#define LOCALE_IDEFAULTLANGUAGE 0x00000009 +#define LOCALE_IDEFAULTCOUNTRY 0x0000000a +#define LOCALE_IDEFAULTCODEPAGE 0x0000000b +#define LOCALE_IDEFAULTANSICODEPAGE 0x00001004 +#define LOCALE_IDEFAULTMACCODEPAGE 0x00001011 +#define LOCALE_IDIALINGCODE 0x00000005 +#define LOCALE_SLIST 0x0000000c +#define LOCALE_IMEASURE 0x0000000d +#define LOCALE_SDECIMAL 0x0000000e +#define LOCALE_STHOUSAND 0x0000000f +#define LOCALE_SGROUPING 0x00000010 +#define LOCALE_IDIGITS 0x00000011 +#define LOCALE_ILZERO 0x00000012 +#define LOCALE_INEGNUMBER 0x00001010 +#define LOCALE_SNATIVEDIGITS 0x00000013 +#define LOCALE_SCURRENCY 0x00000014 +#define LOCALE_SINTLSYMBOL 0x00000015 +#define LOCALE_SMONDECIMALSEP 0x00000016 +#define LOCALE_SMONTHOUSANDSEP 0x00000017 +#define LOCALE_SMONGROUPING 0x00000018 +#define LOCALE_ICURRDIGITS 0x00000019 +#define LOCALE_IINTLCURRDIGITS 0x0000001a +#define LOCALE_ICURRENCY 0x0000001b +#define LOCALE_INEGCURR 0x0000001c +#define LOCALE_SDATE 0x0000001d +#define LOCALE_STIME 0x0000001e +#define LOCALE_SSHORTDATE 0x0000001f +#define LOCALE_SLONGDATE 0x00000020 +#define LOCALE_STIMEFORMAT 0x00001003 +#define LOCALE_SAM 0x00000028 +#define LOCALE_SPM 0x00000029 +#define LOCALE_IDATE 0x00000021 +#define LOCALE_ILDATE 0x00000022 +#define LOCALE_ITIME 0x00000023 +#define LOCALE_ITIMEMARKPOSN 0x00001005 +#define LOCALE_ICENTURY 0x00000024 +#define LOCALE_ITLZERO 0x00000025 +#define LOCALE_IDAYLZERO 0x00000026 +#define LOCALE_IMONLZERO 0x00000027 +#define LOCALE_S1159 0x00000028 +#define LOCALE_S2359 0x00000029 +#define LOCALE_ICALENDARTYPE 0x00001009 +#define LOCALE_IOPTIONALCALENDAR 0x0000100b +#define LOCALE_IFIRSTDAYOFWEEK 0x0000100c +#define LOCALE_IFIRSTWEEKOFYEAR 0x0000100d +#define LOCALE_SDAYNAME1 0x0000002a +#define LOCALE_SDAYNAME2 0x0000002b +#define LOCALE_SDAYNAME3 0x0000002c +#define LOCALE_SDAYNAME4 0x0000002d +#define LOCALE_SDAYNAME5 0x0000002e +#define LOCALE_SDAYNAME6 0x0000002f +#define LOCALE_SDAYNAME7 0x00000030 +#define LOCALE_SABBREVDAYNAME1 0x00000031 +#define LOCALE_SABBREVDAYNAME2 0x00000032 +#define LOCALE_SABBREVDAYNAME3 0x00000033 +#define LOCALE_SABBREVDAYNAME4 0x00000034 +#define LOCALE_SABBREVDAYNAME5 0x00000035 +#define LOCALE_SABBREVDAYNAME6 0x00000036 +#define LOCALE_SABBREVDAYNAME7 0x00000037 +#define LOCALE_SMONTHNAME1 0x00000038 +#define LOCALE_SMONTHNAME2 0x00000039 +#define LOCALE_SMONTHNAME3 0x0000003a +#define LOCALE_SMONTHNAME4 0x0000003b +#define LOCALE_SMONTHNAME5 0x0000003c +#define LOCALE_SMONTHNAME6 0x0000003d +#define LOCALE_SMONTHNAME7 0x0000003e +#define LOCALE_SMONTHNAME8 0x0000003f +#define LOCALE_SMONTHNAME9 0x00000040 +#define LOCALE_SMONTHNAME10 0x00000041 +#define LOCALE_SMONTHNAME11 0x00000042 +#define LOCALE_SMONTHNAME12 0x00000043 +#define LOCALE_SMONTHNAME13 0x0000100e +#define LOCALE_SABBREVMONTHNAME1 0x00000044 +#define LOCALE_SABBREVMONTHNAME2 0x00000045 +#define LOCALE_SABBREVMONTHNAME3 0x00000046 +#define LOCALE_SABBREVMONTHNAME4 0x00000047 +#define LOCALE_SABBREVMONTHNAME5 0x00000048 +#define LOCALE_SABBREVMONTHNAME6 0x00000049 +#define LOCALE_SABBREVMONTHNAME7 0x0000004a +#define LOCALE_SABBREVMONTHNAME8 0x0000004b +#define LOCALE_SABBREVMONTHNAME9 0x0000004c +#define LOCALE_SABBREVMONTHNAME10 0x0000004d +#define LOCALE_SABBREVMONTHNAME11 0x0000004e +#define LOCALE_SABBREVMONTHNAME12 0x0000004f +#define LOCALE_SABBREVMONTHNAME13 0x0000100f +#define LOCALE_SPOSITIVESIGN 0x00000050 +#define LOCALE_SNEGATIVESIGN 0x00000051 +#define LOCALE_IPOSSIGNPOSN 0x00000052 +#define LOCALE_INEGSIGNPOSN 0x00000053 +#define LOCALE_IPOSSYMPRECEDES 0x00000054 +#define LOCALE_IPOSSEPBYSPACE 0x00000055 +#define LOCALE_INEGSYMPRECEDES 0x00000056 +#define LOCALE_INEGSEPBYSPACE 0x00000057 +#define LOCALE_FONTSIGNATURE 0x00000058 +#define LOCALE_SISO639LANGNAME 0x00000059 +#define LOCALE_SISO3166CTRYNAME 0x0000005a +#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x00001012 +#define LOCALE_IPAPERSIZE 0x0000100a +#define LOCALE_SENGCURRNAME 0x00001007 +#define LOCALE_SNATIVECURRNAME 0x00001008 +#define LOCALE_SYEARMONTH 0x00001006 +#define LOCALE_SSORTNAME 0x00001013 +#define LOCALE_IDIGITSUBSTITUTION 0x00001014 +#define LOCALE_SNAME 0x0000005c +#define LOCALE_SDURATION 0x0000005d +#define LOCALE_SKEYBOARDSTOINSTALL 0x0000005e +#define LOCALE_SSHORTESTDAYNAME1 0x00000060 +#define LOCALE_SSHORTESTDAYNAME2 0x00000061 +#define LOCALE_SSHORTESTDAYNAME3 0x00000062 +#define LOCALE_SSHORTESTDAYNAME4 0x00000063 +#define LOCALE_SSHORTESTDAYNAME5 0x00000064 +#define LOCALE_SSHORTESTDAYNAME6 0x00000065 +#define LOCALE_SSHORTESTDAYNAME7 0x00000066 +#define LOCALE_SISO639LANGNAME2 0x00000067 +#define LOCALE_SISO3166CTRYNAME2 0x00000068 +#define LOCALE_SNAN 0x00000069 +#define LOCALE_SPOSINFINITY 0x0000006a +#define LOCALE_SNEGINFINITY 0x0000006b +#define LOCALE_SSCRIPTS 0x0000006c +#define LOCALE_SPARENT 0x0000006d +#define LOCALE_SCONSOLEFALLBACKNAME 0x0000006e +#define TIME_NOMINUTESORSECONDS 0x00000001 +#define TIME_NOSECONDS 0x00000002 +#define TIME_NOTIMEMARKER 0x00000004 +#define TIME_FORCE24HOURFORMAT 0x00000008 +#define DATE_SHORTDATE 0x00000001 +#define DATE_LONGDATE 0x00000002 +#define DATE_USE_ALT_CALENDAR 0x00000004 +#define DATE_YEARMONTH 0x00000008 +#define DATE_LTRREADING 0x00000010 +#define DATE_RTLREADING 0x00000020 +#define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE +#define CAL_USE_CP_ACP LOCALE_USE_CP_ACP +#define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER +#define CAL_ICALINTVALUE 0x00000001 +#define CAL_SCALNAME 0x00000002 +#define CAL_IYEAROFFSETRANGE 0x00000003 +#define CAL_SERASTRING 0x00000004 +#define CAL_SSHORTDATE 0x00000005 +#define CAL_SLONGDATE 0x00000006 +#define CAL_SDAYNAME1 0x00000007 +#define CAL_SDAYNAME2 0x00000008 +#define CAL_SDAYNAME3 0x00000009 +#define CAL_SDAYNAME4 0x0000000a +#define CAL_SDAYNAME5 0x0000000b +#define CAL_SDAYNAME6 0x0000000c +#define CAL_SDAYNAME7 0x0000000d +#define CAL_SABBREVDAYNAME1 0x0000000e +#define CAL_SABBREVDAYNAME2 0x0000000f +#define CAL_SABBREVDAYNAME3 0x00000010 +#define CAL_SABBREVDAYNAME4 0x00000011 +#define CAL_SABBREVDAYNAME5 0x00000012 +#define CAL_SABBREVDAYNAME6 0x00000013 +#define CAL_SABBREVDAYNAME7 0x00000014 +#define CAL_SMONTHNAME1 0x00000015 +#define CAL_SMONTHNAME2 0x00000016 +#define CAL_SMONTHNAME3 0x00000017 +#define CAL_SMONTHNAME4 0x00000018 +#define CAL_SMONTHNAME5 0x00000019 +#define CAL_SMONTHNAME6 0x0000001a +#define CAL_SMONTHNAME7 0x0000001b +#define CAL_SMONTHNAME8 0x0000001c +#define CAL_SMONTHNAME9 0x0000001d +#define CAL_SMONTHNAME10 0x0000001e +#define CAL_SMONTHNAME11 0x0000001f +#define CAL_SMONTHNAME12 0x00000020 +#define CAL_SMONTHNAME13 0x00000021 +#define CAL_SABBREVMONTHNAME1 0x00000022 +#define CAL_SABBREVMONTHNAME2 0x00000023 +#define CAL_SABBREVMONTHNAME3 0x00000024 +#define CAL_SABBREVMONTHNAME4 0x00000025 +#define CAL_SABBREVMONTHNAME5 0x00000026 +#define CAL_SABBREVMONTHNAME6 0x00000027 +#define CAL_SABBREVMONTHNAME7 0x00000028 +#define CAL_SABBREVMONTHNAME8 0x00000029 +#define CAL_SABBREVMONTHNAME9 0x0000002a +#define CAL_SABBREVMONTHNAME10 0x0000002b +#define CAL_SABBREVMONTHNAME11 0x0000002c +#define CAL_SABBREVMONTHNAME12 0x0000002d +#define CAL_SABBREVMONTHNAME13 0x0000002e +#define CAL_SYEARMONTH 0x0000002f +#define CAL_ITWODIGITYEARMAX 0x00000030 +#define CAL_SSHORTESTDAYNAME1 0x00000031 +#define CAL_SSHORTESTDAYNAME2 0x00000032 +#define CAL_SSHORTESTDAYNAME3 0x00000033 +#define CAL_SSHORTESTDAYNAME4 0x00000034 +#define CAL_SSHORTESTDAYNAME5 0x00000035 +#define CAL_SSHORTESTDAYNAME6 0x00000036 +#define CAL_SSHORTESTDAYNAME7 0x00000037 +#define CAL_SJAPANESEERAFIRSTYEAR 0x0000003d +#define ENUM_ALL_CALENDARS 0xffffffff +#define CAL_GREGORIAN 1 +#define CAL_GREGORIAN_US 2 +#define CAL_JAPAN 3 +#define CAL_TAIWAN 4 +#define CAL_KOREA 5 +#define CAL_HIJRI 6 +#define CAL_THAI 7 +#define CAL_HEBREW 8 +#define CAL_GREGORIAN_ME_FRENCH 9 +#define CAL_GREGORIAN_ARABIC 10 +#define CAL_GREGORIAN_XLIT_ENGLISH 11 +#define CAL_GREGORIAN_XLIT_FRENCH 12 +#define CAL_UMALQURA 23 +#define LGRPID_WESTERN_EUROPE 0x0001 +#define LGRPID_CENTRAL_EUROPE 0x0002 +#define LGRPID_BALTIC 0x0003 +#define LGRPID_GREEK 0x0004 +#define LGRPID_CYRILLIC 0x0005 +#define LGRPID_TURKIC 0x0006 +#define LGRPID_TURKISH 0x0006 +#define LGRPID_JAPANESE 0x0007 +#define LGRPID_KOREAN 0x0008 +#define LGRPID_TRADITIONAL_CHINESE 0x0009 +#define LGRPID_SIMPLIFIED_CHINESE 0x000a +#define LGRPID_THAI 0x000b +#define LGRPID_HEBREW 0x000c +#define LGRPID_ARABIC 0x000d +#define LGRPID_VIETNAMESE 0x000e +#define LGRPID_INDIC 0x000f +#define LGRPID_GEORGIAN 0x0010 +#define LGRPID_ARMENIAN 0x0011 +#define MUI_LANGUAGE_ID 0x4 +#define MUI_LANGUAGE_NAME 0x8 +#define MUI_MERGE_SYSTEM_FALLBACK 0x10 +#define MUI_MERGE_USER_FALLBACK 0x20 +#define MUI_UI_FALLBACK MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK +#define MUI_THREAD_LANGUAGES 0x40 +#define MUI_CONSOLE_FILTER 0x100 +#define MUI_COMPLEX_SCRIPT_FILTER 0x200 +#define MUI_RESET_FILTERS 0x001 +#define MUI_USER_PREFERRED_UI_LANGUAGES 0x10 +#define MUI_USE_INSTALLED_LANGUAGES 0x20 +#define MUI_USE_SEARCH_ALL_LANGUAGES 0x40 +#define MUI_LANG_NEUTRAL_PE_FILE 0x100 +#define MUI_NON_LANG_NEUTRAL_FILE 0x200 +#define MUI_MACHINE_LANGUAGE_SETTINGS 0x400 +#define MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL 0x001 +#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN 0x002 +#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI 0x004 +#define MUI_QUERY_TYPE 0x001 +#define MUI_QUERY_CHECKSUM 0x002 +#define MUI_QUERY_LANGUAGE_NAME 0x004 +#define MUI_QUERY_RESOURCE_TYPES 0x008 +#define MUI_FILEINFO_VERSION 0x001 +#define MUI_FULL_LANGUAGE 0x01 +#define MUI_PARTIAL_LANGUAGE 0x02 +#define MUI_LIP_LANGUAGE 0x04 +#define MUI_LANGUAGE_INSTALLED 0x20 +#define MUI_LANGUAGE_LICENSED 0x40 +#define MUI_CALLBACK_ALL_FLAGS MUI_CALLBACK_FLAG_UPGRADED_INSTALLATION + typedef DWORD LGRPID; + typedef DWORD LCTYPE; + typedef DWORD CALTYPE; + typedef DWORD CALID; + typedef struct _cpinfo { + UINT MaxCharSize; + BYTE DefaultChar[2]; + BYTE LeadByte[12]; + } CPINFO,*LPCPINFO; + typedef struct _cpinfoexA { + UINT MaxCharSize; + BYTE DefaultChar[2]; + BYTE LeadByte[12]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR CodePageName[260]; + } CPINFOEXA,*LPCPINFOEXA; + typedef struct _cpinfoexW { + UINT MaxCharSize; + BYTE DefaultChar[2]; + BYTE LeadByte[12]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR CodePageName[260]; + } CPINFOEXW,*LPCPINFOEXW; + typedef CPINFOEXA CPINFOEX; + typedef LPCPINFOEXA LPCPINFOEX; + typedef struct _numberfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + } NUMBERFMTA,*LPNUMBERFMTA; + typedef struct _numberfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + } NUMBERFMTW,*LPNUMBERFMTW; + typedef NUMBERFMTA NUMBERFMT; + typedef LPNUMBERFMTA LPNUMBERFMT; + typedef struct _currencyfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; + } CURRENCYFMTA,*LPCURRENCYFMTA; + typedef struct _currencyfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; + } CURRENCYFMTW,*LPCURRENCYFMTW; + typedef CURRENCYFMTA CURRENCYFMT; + typedef LPCURRENCYFMTA LPCURRENCYFMT; + enum SYSNLS_FUNCTION { + COMPARE_STRING = 0x1 + }; + typedef DWORD NLS_FUNCTION; + typedef struct _nlsversioninfo { + DWORD dwNLSVersionInfoSize; + DWORD dwNLSVersion; + DWORD dwDefinedVersion; + } NLSVERSIONINFO,*LPNLSVERSIONINFO; + typedef struct _nlsversioninfoex { + DWORD dwNLSVersionInfoSize; + DWORD dwNLSVersion; + DWORD dwDefinedVersion; + DWORD dwEffectiveId; + GUID guidCustomVersion; + } NLSVERSIONINFOEX,*LPNLSVERSIONINFOEX; + typedef LONG GEOID; + typedef DWORD GEOTYPE; + typedef DWORD GEOCLASS; +#define GEOID_NOT_AVAILABLE -1 + enum SYSGEOTYPE { + GEO_NATION = 0x0001, + GEO_LATITUDE = 0x0002, + GEO_LONGITUDE = 0x0003, + GEO_ISO2 = 0x0004, + GEO_ISO3 = 0x0005, + GEO_RFC1766 = 0x0006, + GEO_LCID = 0x0007, + GEO_FRIENDLYNAME= 0x0008, + GEO_OFFICIALNAME= 0x0009, + GEO_TIMEZONES = 0x000a, + GEO_OFFICIALLANGUAGES = 0x000b, + GEO_ISO_UN_NUMBER = 0x000c, + GEO_PARENT = 0x000d, + GEO_DIALINGCODE = 0x000e, + GEO_CURRENCYCODE= 0x000f, + GEO_CURRENCYSYMBOL= 0x0010, + }; + enum SYSGEOCLASS { + GEOCLASS_NATION = 16, + GEOCLASS_REGION = 14, + GEOCLASS_ALL = 0 + }; + typedef enum _NORM_FORM { + NormalizationOther = 0, + NormalizationC = 0x1, + NormalizationD = 0x2, + NormalizationKC = 0x5, + NormalizationKD = 0x6 + } NORM_FORM; +#define IDN_ALLOW_UNASSIGNED 0x01 +#define IDN_USE_STD3_ASCII_RULES 0x02 +#define IDN_EMAIL_ADDRESS 0x04 +#define IDN_RAW_PUNYCODE 0x08 +#define VS_ALLOW_LATIN 0x0001 +#define GSS_ALLOW_INHERITED_COMMON 0x0001 + typedef WINBOOL (__attribute__((__stdcall__)) *LANGUAGEGROUP_ENUMPROCA) (LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR); + typedef WINBOOL (__attribute__((__stdcall__)) *LANGGROUPLOCALE_ENUMPROCA) (LGRPID, LCID, LPSTR, LONG_PTR); + typedef WINBOOL (__attribute__((__stdcall__)) *UILANGUAGE_ENUMPROCA) (LPSTR, LONG_PTR); + typedef WINBOOL (__attribute__((__stdcall__)) *CODEPAGE_ENUMPROCA) (LPSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCA) (LPSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCEXA) (LPSTR, CALID); + typedef WINBOOL (__attribute__((__stdcall__)) *TIMEFMT_ENUMPROCA) (LPSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCA) (LPSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCEXA) (LPSTR, CALID); + typedef WINBOOL (__attribute__((__stdcall__)) *LOCALE_ENUMPROCA) (LPSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *LOCALE_ENUMPROCW) (LPWSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *LANGUAGEGROUP_ENUMPROCW) (LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR); + typedef WINBOOL (__attribute__((__stdcall__)) *LANGGROUPLOCALE_ENUMPROCW) (LGRPID, LCID, LPWSTR, LONG_PTR); + typedef WINBOOL (__attribute__((__stdcall__)) *UILANGUAGE_ENUMPROCW) (LPWSTR, LONG_PTR); + typedef WINBOOL (__attribute__((__stdcall__)) *CODEPAGE_ENUMPROCW) (LPWSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCW) (LPWSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCEXW) (LPWSTR, CALID); + typedef WINBOOL (__attribute__((__stdcall__)) *TIMEFMT_ENUMPROCW) (LPWSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCW) (LPWSTR); + typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCEXW) (LPWSTR, CALID); + typedef WINBOOL (__attribute__((__stdcall__)) *GEO_ENUMPROC) (GEOID); +#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA +#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA +#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA +#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA +#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA +#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA +#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA +#define CALINFO_ENUMPROC CALINFO_ENUMPROCA +#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA +#define LOCALE_ENUMPROC LOCALE_ENUMPROCA + typedef struct _FILEMUIINFO { + DWORD dwSize; + DWORD dwVersion; + DWORD dwFileType; + BYTE pChecksum[16]; + BYTE pServiceChecksum[16]; + DWORD dwLanguageNameOffset; + DWORD dwTypeIDMainSize; + DWORD dwTypeIDMainOffset; + DWORD dwTypeNameMainOffset; + DWORD dwTypeIDMUISize; + DWORD dwTypeIDMUIOffset; + DWORD dwTypeNameMUIOffset; + BYTE abBuffer[8]; + } FILEMUIINFO,*PFILEMUIINFO; +#define _APISETSTRING_ + __declspec (dllimport) int __attribute__((__stdcall__)) CompareStringW (LCID Locale, DWORD dwCmpFlags, PCNZWCH lpString1, int cchCount1, PCNZWCH lpString2, int cchCount2); + __declspec (dllimport) int __attribute__((__stdcall__)) FoldStringW (DWORD dwMapFlags, LPCWCH lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetStringTypeExW (LCID Locale, DWORD dwInfoType, LPCWCH lpSrcStr, int cchSrc, LPWORD lpCharType); + __declspec (dllimport) int __attribute__((__stdcall__)) CompareStringEx (LPCWSTR lpLocaleName, DWORD dwCmpFlags, LPCWCH lpString1, int cchCount1, LPCWCH lpString2, int cchCount2, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM lParam); + __declspec (dllimport) int __attribute__((__stdcall__)) CompareStringOrdinal (LPCWCH lpString1, int cchCount1, LPCWCH lpString2, int cchCount2, WINBOOL bIgnoreCase); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetStringTypeW (DWORD dwInfoType, LPCWCH lpSrcStr, int cchSrc, LPWORD lpCharType); + __declspec (dllimport) int __attribute__((__stdcall__)) MultiByteToWideChar (UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); + __declspec (dllimport) int __attribute__((__stdcall__)) WideCharToMultiByte (UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar); +#define IS_HIGH_SURROGATE(wch) (((wch) >= HIGH_SURROGATE_START) && ((wch) <= HIGH_SURROGATE_END)) +#define IS_LOW_SURROGATE(wch) (((wch) >= LOW_SURROGATE_START) && ((wch) <= LOW_SURROGATE_END)) +#define IS_SURROGATE_PAIR(hs,ls) (IS_HIGH_SURROGATE (hs) && IS_LOW_SURROGATE (ls)) +#define FILEMUIINFO_GET_CULTURE(pInfo) ((LPWSTR) ((pInfo->dwLanguageNameOffset>0)? (ULONG_PTR)pInfo+pInfo->dwLanguageNameOffset:NULL)) +#define FILEMUIINFO_GET_MAIN_TYPEIDS(pInfo) ((DWORD *) ((pInfo->dwTypeIDMainOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeIDMainOffset:NULL)) +#define FILEMUIINFO_GET_MAIN_TYPEID(pInfo,iType) (((iTypedwTypeIDMainSize)&& (pInfo->dwTypeIDMainOffset>0))? *((DWORD *) ((ULONG_PTR)pInfo+pInfo->dwTypeIDMainOffset)+iType):0) +#define FILEMUIINFO_GET_MAIN_TYPENAMES(pInfo) ((LPWSTR) ((pInfo->dwTypeNameMainOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeNameMainOffset:NULL)) +#define FILEMUIINFO_GET_MUI_TYPEIDS(pInfo) ((DWORD *) ((pInfo->dwTypeIDMUIOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeIDMUIOffset:NULL)) +#define FILEMUIINFO_GET_MUI_TYPEID(pInfo,iType) (((iTypedwTypeIDMUISize)&& (pInfo->dwTypeIDMUIOffset>0))? *((DWORD *) ((ULONG_PTR)pInfo+pInfo->dwTypeIDMUIOffset)+iType):0) +#define FILEMUIINFO_GET_MUI_TYPENAMES(pInfo) ((LPWSTR) ((pInfo->dwTypeNameMUIOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeNameMUIOffset:NULL)) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsValidCodePage (UINT CodePage); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetACP (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsDBCSLeadByte (BYTE TestChar); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsDBCSLeadByteEx (UINT CodePage, BYTE TestChar); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsNLSDefinedString (NLS_FUNCTION Function, DWORD dwFlags, LPNLSVERSIONINFO lpVersionInformation, LPCWSTR lpString, INT cchStr); + __declspec (dllimport) int __attribute__((__stdcall__)) GetLocaleInfoW (LCID Locale, LCTYPE LCType, LPWSTR lpLCData, int cchData); + __declspec (dllimport) int __attribute__((__stdcall__)) GetLocaleInfoA (LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData); +#define GetLocaleInfo GetLocaleInfoA + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetOEMCP (void); + __declspec (dllimport) int __attribute__((__stdcall__)) CompareStringA (LCID Locale, DWORD dwCmpFlags, PCNZCH lpString1, int cchCount1, PCNZCH lpString2, int cchCount2); + __declspec (dllimport) int __attribute__((__stdcall__)) LCMapStringW (LCID Locale, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest); + __declspec (dllimport) int __attribute__((__stdcall__)) LCMapStringA (LCID Locale, DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest); + __declspec (dllimport) int __attribute__((__stdcall__)) GetNumberFormatA (LCID Locale, DWORD dwFlags, LPCSTR lpValue, const NUMBERFMTA *lpFormat, LPSTR lpNumberStr, int cchNumber); + __declspec (dllimport) int __attribute__((__stdcall__)) GetNumberFormatW (LCID Locale, DWORD dwFlags, LPCWSTR lpValue, const NUMBERFMTW *lpFormat, LPWSTR lpNumberStr, int cchNumber); + __declspec (dllimport) int __attribute__((__stdcall__)) GetCurrencyFormatA (LCID Locale, DWORD dwFlags, LPCSTR lpValue, const CURRENCYFMTA *lpFormat, LPSTR lpCurrencyStr, int cchCurrency); + __declspec (dllimport) int __attribute__((__stdcall__)) GetCurrencyFormatW (LCID Locale, DWORD dwFlags, LPCWSTR lpValue, const CURRENCYFMTW *lpFormat, LPWSTR lpCurrencyStr, int cchCurrency); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoA (CALINFO_ENUMPROCA lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoW (CALINFO_ENUMPROCW lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoExA (CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx, LCID Locale, CALID Calendar, CALTYPE CalType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoExW (CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx, LCID Locale, CALID Calendar, CALTYPE CalType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumTimeFormatsA (TIMEFMT_ENUMPROCA lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumTimeFormatsW (TIMEFMT_ENUMPROCW lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsA (DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsW (DATEFMT_ENUMPROCW lpDateFmtEnumProc, LCID Locale, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsExA (DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx, LCID Locale, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsExW (DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx, LCID Locale, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsValidLanguageGroup (LGRPID LanguageGroup, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNLSVersion (NLS_FUNCTION Function, LCID Locale, LPNLSVERSIONINFO lpVersionInformation); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsValidLocale (LCID Locale, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetLocaleInfoA (LCID Locale, LCTYPE LCType, LPCSTR lpLCData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetLocaleInfoW (LCID Locale, LCTYPE LCType, LPCWSTR lpLCData); + __declspec (dllimport) int __attribute__((__stdcall__)) GetCalendarInfoA (LCID Locale, CALID Calendar, CALTYPE CalType, LPSTR lpCalData, int cchData, LPDWORD lpValue); + __declspec (dllimport) int __attribute__((__stdcall__)) GetCalendarInfoW (LCID Locale, CALID Calendar, CALTYPE CalType, LPWSTR lpCalData, int cchData, LPDWORD lpValue); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCalendarInfoA (LCID Locale, CALID Calendar, CALTYPE CalType, LPCSTR lpCalData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCalendarInfoW (LCID Locale, CALID Calendar, CALTYPE CalType, LPCWSTR lpCalData); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDurationFormat (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDuration, ULONGLONG ullDuration, LPCWSTR lpFormat, LPWSTR lpDurationStr, int cchDuration); + __declspec (dllimport) int __attribute__((__stdcall__)) FindNLSString (LCID Locale, DWORD dwFindNLSStringFlags, LPCWSTR lpStringSource, int cchSource, LPCWSTR lpStringValue, int cchValue, LPINT pcchFound); +#define SetLocaleInfo __MINGW_NAME_AW(SetLocaleInfo) +#define GetCalendarInfo __MINGW_NAME_AW(GetCalendarInfo) +#define SetCalendarInfo __MINGW_NAME_AW(SetCalendarInfo) +#define CompareString CompareStringA +#define LCMapString LCMapStringA +#define GetNumberFormat __MINGW_NAME_AW(GetNumberFormat) +#define GetCurrencyFormat __MINGW_NAME_AW(GetCurrencyFormat) +#define EnumCalendarInfo __MINGW_NAME_AW(EnumCalendarInfo) +#define EnumCalendarInfoEx __MINGW_NAME_AW(EnumCalendarInfoEx) +#define EnumTimeFormats __MINGW_NAME_AW(EnumTimeFormats) +#define EnumDateFormats __MINGW_NAME_AW(EnumDateFormats) +#define EnumDateFormatsEx __MINGW_NAME_AW(EnumDateFormatsEx) + __declspec (dllimport) int __attribute__((__stdcall__)) GetGeoInfoA (GEOID Location, GEOTYPE GeoType, LPSTR lpGeoData, int cchData, LANGID LangId); + __declspec (dllimport) int __attribute__((__stdcall__)) GetGeoInfoW (GEOID Location, GEOTYPE GeoType, LPWSTR lpGeoData, int cchData, LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemGeoID (GEOCLASS GeoClass, GEOID ParentGeoId, GEO_ENUMPROC lpGeoEnumProc); + __declspec (dllimport) GEOID __attribute__((__stdcall__)) GetUserGeoID (GEOCLASS GeoClass); + __declspec (dllimport) int __attribute__((__stdcall__)) GetUserDefaultGeoName (LPWSTR geoName, int geoNameCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCPInfo (UINT CodePage, LPCPINFO lpCPInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCPInfoExA (UINT CodePage, DWORD dwFlags, LPCPINFOEXA lpCPInfoEx); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCPInfoExW (UINT CodePage, DWORD dwFlags, LPCPINFOEXW lpCPInfoEx); + __declspec (dllimport) int __attribute__((__stdcall__)) LCIDToLocaleName (LCID Locale, LPWSTR lpName, int cchName, DWORD dwFlags); + __declspec (dllimport) LCID __attribute__((__stdcall__)) LocaleNameToLCID (LPCWSTR lpName, DWORD dwFlags); +#define GetGeoInfo __MINGW_NAME_AW(GetGeoInfo) +#define GetCPInfoEx __MINGW_NAME_AW(GetCPInfoEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetUserGeoID (GEOID GeoId); + __declspec (dllimport) LCID __attribute__((__stdcall__)) ConvertDefaultLocale (LCID Locale); + __declspec (dllimport) LCID __attribute__((__stdcall__)) GetThreadLocale (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadLocale (LCID Locale); + __declspec (dllimport) LANGID __attribute__((__stdcall__)) GetSystemDefaultUILanguage (void); + __declspec (dllimport) LANGID __attribute__((__stdcall__)) GetSystemDefaultLangID (void); + __declspec (dllimport) LCID __attribute__((__stdcall__)) GetSystemDefaultLCID (void); + __declspec (dllimport) LCID __attribute__((__stdcall__)) GetUserDefaultLCID (void); + __declspec (dllimport) LANGID __attribute__((__stdcall__)) SetThreadUILanguage (LANGID LangId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetStringTypeA (LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType); + __declspec (dllimport) int __attribute__((__stdcall__)) FoldStringA (DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemLocalesA (LOCALE_ENUMPROCA lpLocaleEnumProc, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemLocalesW (LOCALE_ENUMPROCW lpLocaleEnumProc, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemLanguageGroupsA (LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc, DWORD dwFlags, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemLanguageGroupsW (LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc, DWORD dwFlags, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumLanguageGroupLocalesA (LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc, LGRPID LanguageGroup, DWORD dwFlags, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumLanguageGroupLocalesW (LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc, LGRPID LanguageGroup, DWORD dwFlags, LONG_PTR lParam); + __declspec (dllimport) LANGID __attribute__((__stdcall__)) GetThreadUILanguage (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetProcessPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetProcessPreferredUILanguages (DWORD dwFlags, PCZZWSTR pwszLanguagesBuffer, PULONG pulNumLanguages); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUserPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSystemPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetThreadPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetThreadPreferredUILanguages (DWORD dwFlags, PCZZWSTR pwszLanguagesBuffer, PULONG pulNumLanguages); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileMUIInfo (DWORD dwFlags, PCWSTR pcwszFilePath, PFILEMUIINFO pFileMUIInfo, DWORD *pcbFileMUIInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetFileMUIPath (DWORD dwFlags, PCWSTR pcwszFilePath, PWSTR pwszLanguage, PULONG pcchLanguage, PWSTR pwszFileMUIPath, PULONG pcchFileMUIPath, PULONGLONG pululEnumerator); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetUILanguageInfo (DWORD dwFlags, PCZZWSTR pwmszLanguage, PZZWSTR pwszFallbackLanguages, PDWORD pcchFallbackLanguages, PDWORD pAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) NotifyUILanguageChange (DWORD dwFlags, PCWSTR pcwstrNewLanguage, PCWSTR pcwstrPreviousLanguage, DWORD dwReserved, PDWORD pdwStatusRtrn); +#define FoldString FoldStringA +#define EnumSystemLocales __MINGW_NAME_AW(EnumSystemLocales) +#define EnumSystemLanguageGroups __MINGW_NAME_AW(EnumSystemLanguageGroups) +#define EnumLanguageGroupLocales __MINGW_NAME_AW(EnumLanguageGroupLocales) +#define EnumUILanguages __MINGW_NAME_AW(EnumUILanguages) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetStringTypeExA (LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType); + __declspec (dllimport) LANGID __attribute__((__stdcall__)) GetUserDefaultUILanguage (void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumUILanguagesA (UILANGUAGE_ENUMPROCA lpUILanguageEnumProc, DWORD dwFlags, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumUILanguagesW (UILANGUAGE_ENUMPROCW lpUILanguageEnumProc, DWORD dwFlags, LONG_PTR lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemCodePagesA (CODEPAGE_ENUMPROCA lpCodePageEnumProc, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemCodePagesW (CODEPAGE_ENUMPROCW lpCodePageEnumProc, DWORD dwFlags); + __declspec (dllimport) LANGID __attribute__((__stdcall__)) GetUserDefaultLangID (void); +#define GetStringTypeEx GetStringTypeExA +#define EnumSystemCodePages __MINGW_NAME_AW(EnumSystemCodePages) +#define LOCALE_NAME_USER_DEFAULT NULL +#define LOCALE_NAME_INVARIANT L"" +#define LOCALE_NAME_SYSTEM_DEFAULT L"!x-sys-default-locale" + typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCEXEX) (LPWSTR, CALID, LPWSTR, LPARAM); + typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCEXEX) (LPWSTR, CALID, LPARAM); + typedef WINBOOL (__attribute__((__stdcall__)) *TIMEFMT_ENUMPROCEX) (LPWSTR, LPARAM); + typedef WINBOOL (__attribute__((__stdcall__)) *LOCALE_ENUMPROCEX) (LPWSTR, DWORD, LPARAM); + __declspec (dllimport) int __attribute__((__stdcall__)) NormalizeString (NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, LPWSTR lpDstString, int cwDstLength); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsNormalizedString (NORM_FORM NormForm, LPCWSTR lpString, int cwLength); + __declspec (dllimport) int __attribute__((__stdcall__)) IdnToAscii (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpASCIICharStr, int cchASCIIChar); + __declspec (dllimport) int __attribute__((__stdcall__)) IdnToNameprepUnicode (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpNameprepCharStr, int cchNameprepChar); + __declspec (dllimport) int __attribute__((__stdcall__)) IdnToUnicode (DWORD dwFlags, LPCWSTR lpASCIICharStr, int cchASCIIChar, LPWSTR lpUnicodeCharStr, int cchUnicodeChar); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) VerifyScripts (DWORD dwFlags, LPCWSTR lpLocaleScripts, int cchLocaleScripts, LPCWSTR lpTestScripts, int cchTestScripts); + __declspec (dllimport) int __attribute__((__stdcall__)) GetStringScripts (DWORD dwFlags, LPCWSTR lpString, int cchString, LPWSTR lpScripts, int cchScripts); + __declspec (dllimport) int __attribute__((__stdcall__)) GetLocaleInfoEx (LPCWSTR lpLocaleName, LCTYPE LCType, LPWSTR lpLCData, int cchData); + __declspec (dllimport) int __attribute__((__stdcall__)) GetCalendarInfoEx (LPCWSTR lpLocaleName, CALID Calendar, LPCWSTR lpReserved, CALTYPE CalType, LPWSTR lpCalData, int cchData, LPDWORD lpValue); + __declspec (dllimport) int __attribute__((__stdcall__)) GetDurationFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, const SYSTEMTIME *lpDuration, ULONGLONG ullDuration, LPCWSTR lpFormat, LPWSTR lpDurationStr, int cchDuration); + __declspec (dllimport) int __attribute__((__stdcall__)) GetNumberFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, LPCWSTR lpValue, const NUMBERFMTW *lpFormat, LPWSTR lpNumberStr, int cchNumber); + __declspec (dllimport) int __attribute__((__stdcall__)) GetCurrencyFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, LPCWSTR lpValue, const CURRENCYFMTW *lpFormat, LPWSTR lpCurrencyStr, int cchCurrency); + __declspec (dllimport) int __attribute__((__stdcall__)) GetUserDefaultLocaleName (LPWSTR lpLocaleName, int cchLocaleName); + __declspec (dllimport) int __attribute__((__stdcall__)) GetSystemDefaultLocaleName (LPWSTR lpLocaleName, int cchLocaleName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNLSVersionEx (NLS_FUNCTION function, LPCWSTR lpLocaleName, LPNLSVERSIONINFOEX lpVersionInformation); + __declspec (dllimport) int __attribute__((__stdcall__)) FindNLSStringEx (LPCWSTR lpLocaleName, DWORD dwFindNLSStringFlags, LPCWSTR lpStringSource, int cchSource, LPCWSTR lpStringValue, int cchValue, LPINT pcchFound, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM sortHandle); + __declspec (dllimport) int __attribute__((__stdcall__)) LCMapStringEx (LPCWSTR lpLocaleName, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM sortHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsValidLocaleName (LPCWSTR lpLocaleName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoExEx (CALINFO_ENUMPROCEXEX pCalInfoEnumProcExEx, LPCWSTR lpLocaleName, CALID Calendar, LPCWSTR lpReserved, CALTYPE CalType, LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsExEx (DATEFMT_ENUMPROCEXEX lpDateFmtEnumProcExEx, LPCWSTR lpLocaleName, DWORD dwFlags, LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumTimeFormatsEx (TIMEFMT_ENUMPROCEX lpTimeFmtEnumProcEx, LPCWSTR lpLocaleName, DWORD dwFlags, LPARAM lParam); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumSystemLocalesEx (LOCALE_ENUMPROCEX lpLocaleEnumProcEx, DWORD dwFlags, LPARAM lParam, LPVOID lpReserved); +#define _WINCON_ +#define CONSOLE_REAL_OUTPUT_HANDLE (LongToHandle(-2)) +#define CONSOLE_REAL_INPUT_HANDLE (LongToHandle(-3)) + typedef struct _COORD { + SHORT X; + SHORT Y; + } COORD,*PCOORD; + typedef struct _SMALL_RECT { + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; + } SMALL_RECT,*PSMALL_RECT; + typedef struct _KEY_EVENT_RECORD { + WINBOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union { + WCHAR UnicodeChar; + CHAR AsciiChar; + } uChar; + DWORD dwControlKeyState; + } KEY_EVENT_RECORD,*PKEY_EVENT_RECORD; +#define RIGHT_ALT_PRESSED 0x1 +#define LEFT_ALT_PRESSED 0x2 +#define RIGHT_CTRL_PRESSED 0x4 +#define LEFT_CTRL_PRESSED 0x8 +#define SHIFT_PRESSED 0x10 +#define NUMLOCK_ON 0x20 +#define SCROLLLOCK_ON 0x40 +#define CAPSLOCK_ON 0x80 +#define ENHANCED_KEY 0x100 +#define NLS_DBCSCHAR 0x10000 +#define NLS_ALPHANUMERIC 0x0 +#define NLS_KATAKANA 0x20000 +#define NLS_HIRAGANA 0x40000 +#define NLS_ROMAN 0x400000 +#define NLS_IME_CONVERSION 0x800000 +#define ALTNUMPAD_BIT 0x4000000 +#define NLS_IME_DISABLE 0x20000000 + typedef struct _MOUSE_EVENT_RECORD { + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; + } MOUSE_EVENT_RECORD,*PMOUSE_EVENT_RECORD; +#define FROM_LEFT_1ST_BUTTON_PRESSED 0x1 +#define RIGHTMOST_BUTTON_PRESSED 0x2 +#define FROM_LEFT_2ND_BUTTON_PRESSED 0x4 +#define FROM_LEFT_3RD_BUTTON_PRESSED 0x8 +#define FROM_LEFT_4TH_BUTTON_PRESSED 0x10 +#define MOUSE_MOVED 0x1 +#define DOUBLE_CLICK 0x2 +#define MOUSE_WHEELED 0x4 +#define MOUSE_HWHEELED 0x8 + typedef struct _WINDOW_BUFFER_SIZE_RECORD { + COORD dwSize; + } WINDOW_BUFFER_SIZE_RECORD,*PWINDOW_BUFFER_SIZE_RECORD; + typedef struct _MENU_EVENT_RECORD { + UINT dwCommandId; + } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD; + typedef struct _FOCUS_EVENT_RECORD { + WINBOOL bSetFocus; + } FOCUS_EVENT_RECORD,*PFOCUS_EVENT_RECORD; + typedef struct _INPUT_RECORD { + WORD EventType; + union { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } Event; + } INPUT_RECORD,*PINPUT_RECORD; +#define KEY_EVENT 0x1 +#define MOUSE_EVENT 0x2 +#define WINDOW_BUFFER_SIZE_EVENT 0x4 +#define MENU_EVENT 0x8 +#define FOCUS_EVENT 0x10 + typedef struct _CHAR_INFO { + union { + WCHAR UnicodeChar; + CHAR AsciiChar; + } Char; + WORD Attributes; + } CHAR_INFO,*PCHAR_INFO; +#define FOREGROUND_BLUE 0x1 +#define FOREGROUND_GREEN 0x2 +#define FOREGROUND_RED 0x4 +#define FOREGROUND_INTENSITY 0x8 +#define BACKGROUND_BLUE 0x10 +#define BACKGROUND_GREEN 0x20 +#define BACKGROUND_RED 0x40 +#define BACKGROUND_INTENSITY 0x80 +#define COMMON_LVB_LEADING_BYTE 0x100 +#define COMMON_LVB_TRAILING_BYTE 0x200 +#define COMMON_LVB_GRID_HORIZONTAL 0x400 +#define COMMON_LVB_GRID_LVERTICAL 0x800 +#define COMMON_LVB_GRID_RVERTICAL 0x1000 +#define COMMON_LVB_REVERSE_VIDEO 0x4000 +#define COMMON_LVB_UNDERSCORE 0x8000 +#define COMMON_LVB_SBCSDBCS 0x300 + typedef struct _CONSOLE_SCREEN_BUFFER_INFO { + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; + } CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO; + typedef struct _CONSOLE_CURSOR_INFO { + DWORD dwSize; + WINBOOL bVisible; + } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO; + typedef struct _CONSOLE_FONT_INFO { + DWORD nFont; + COORD dwFontSize; + } CONSOLE_FONT_INFO,*PCONSOLE_FONT_INFO; + typedef struct _CONSOLE_SELECTION_INFO { + DWORD dwFlags; + COORD dwSelectionAnchor; + SMALL_RECT srSelection; + } CONSOLE_SELECTION_INFO,*PCONSOLE_SELECTION_INFO; +#define CONSOLE_NO_SELECTION 0x0 +#define CONSOLE_SELECTION_IN_PROGRESS 0x1 +#define CONSOLE_SELECTION_NOT_EMPTY 0x2 +#define CONSOLE_MOUSE_SELECTION 0x4 +#define CONSOLE_MOUSE_DOWN 0x8 + typedef WINBOOL (__attribute__((__stdcall__)) *PHANDLER_ROUTINE)(DWORD CtrlType); +#define CTRL_C_EVENT 0 +#define CTRL_BREAK_EVENT 1 +#define CTRL_CLOSE_EVENT 2 +#define CTRL_LOGOFF_EVENT 5 +#define CTRL_SHUTDOWN_EVENT 6 +#define ENABLE_PROCESSED_INPUT 0x1 +#define ENABLE_LINE_INPUT 0x2 +#define ENABLE_ECHO_INPUT 0x4 +#define ENABLE_WINDOW_INPUT 0x8 +#define ENABLE_MOUSE_INPUT 0x10 +#define ENABLE_INSERT_MODE 0x20 +#define ENABLE_QUICK_EDIT_MODE 0x40 +#define ENABLE_EXTENDED_FLAGS 0x80 +#define ENABLE_AUTO_POSITION 0x100 +#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x200 +#define ENABLE_PROCESSED_OUTPUT 0x1 +#define ENABLE_WRAP_AT_EOL_OUTPUT 0x2 +#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x4 +#define DISABLE_NEWLINE_AUTO_RETURN 0x8 +#define ENABLE_LVB_GRID_WORLDWIDE 0x10 +#define PeekConsoleInput __MINGW_NAME_AW(PeekConsoleInput) +#define ReadConsoleInput __MINGW_NAME_AW(ReadConsoleInput) +#define WriteConsoleInput __MINGW_NAME_AW(WriteConsoleInput) +#define ReadConsoleOutput __MINGW_NAME_AW(ReadConsoleOutput) +#define WriteConsoleOutput __MINGW_NAME_AW(WriteConsoleOutput) +#define ReadConsoleOutputCharacter __MINGW_NAME_AW(ReadConsoleOutputCharacter) +#define WriteConsoleOutputCharacter __MINGW_NAME_AW(WriteConsoleOutputCharacter) +#define FillConsoleOutputCharacter __MINGW_NAME_AW(FillConsoleOutputCharacter) +#define ScrollConsoleScreenBuffer __MINGW_NAME_AW(ScrollConsoleScreenBuffer) +#define GetConsoleTitle __MINGW_NAME_AW(GetConsoleTitle) +#define SetConsoleTitle __MINGW_NAME_AW(SetConsoleTitle) +#define ReadConsole __MINGW_NAME_AW(ReadConsole) +#define WriteConsole __MINGW_NAME_AW(WriteConsole) +#define AddConsoleAlias __MINGW_NAME_AW(AddConsoleAlias) +#define GetConsoleAlias __MINGW_NAME_AW(GetConsoleAlias) +#define GetConsoleAliasesLength __MINGW_NAME_AW(GetConsoleAliasesLength) +#define GetConsoleAliasExesLength __MINGW_NAME_AW(GetConsoleAliasExesLength) +#define GetConsoleAliases __MINGW_NAME_AW(GetConsoleAliases) +#define GetConsoleAliasExes __MINGW_NAME_AW(GetConsoleAliasExes) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PeekConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PeekConsoleInputW(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleInputW(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleInputA(HANDLE hConsoleInput,const INPUT_RECORD *lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleInputW(HANDLE hConsoleInput,const INPUT_RECORD *lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputA(HANDLE hConsoleOutput,PCHAR_INFO lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpReadRegion); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputW(HANDLE hConsoleOutput,PCHAR_INFO lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpReadRegion); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputA(HANDLE hConsoleOutput,const CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputW(HANDLE hConsoleOutput,const CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputCharacterA(HANDLE hConsoleOutput,LPSTR lpCharacter,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfCharsRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputCharacterW(HANDLE hConsoleOutput,LPWSTR lpCharacter,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfCharsRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputAttribute(HANDLE hConsoleOutput,LPWORD lpAttribute,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfAttrsRead); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputCharacterA(HANDLE hConsoleOutput,LPCSTR lpCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputCharacterW(HANDLE hConsoleOutput,LPCWSTR lpCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputAttribute(HANDLE hConsoleOutput,const WORD *lpAttribute,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfAttrsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FillConsoleOutputCharacterA(HANDLE hConsoleOutput,CHAR cCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FillConsoleOutputCharacterW(HANDLE hConsoleOutput,WCHAR cCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FillConsoleOutputAttribute(HANDLE hConsoleOutput,WORD wAttribute,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfAttrsWritten); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetConsoleMode(HANDLE hConsoleHandle,LPDWORD lpMode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,LPDWORD lpNumberOfEvents); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo); + __declspec (dllimport) COORD __attribute__((__stdcall__)) GetLargestConsoleWindowSize(HANDLE hConsoleOutput); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetConsoleCursorInfo(HANDLE hConsoleOutput,PCONSOLE_CURSOR_INFO lpConsoleCursorInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCurrentConsoleFont(HANDLE hConsoleOutput,WINBOOL bMaximumWindow,PCONSOLE_FONT_INFO lpConsoleCurrentFont); + __declspec (dllimport) COORD __attribute__((__stdcall__)) GetConsoleFontSize(HANDLE hConsoleOutput,DWORD nFont); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleMode(HANDLE hConsoleHandle,DWORD dwMode); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FlushConsoleInputBuffer(HANDLE hConsoleInput); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleScreenBufferSize(HANDLE hConsoleOutput,COORD dwSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleCursorPosition(HANDLE hConsoleOutput,COORD dwCursorPosition); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleCursorInfo(HANDLE hConsoleOutput,const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,const SMALL_RECT *lpScrollRectangle,const SMALL_RECT *lpClipRectangle,COORD dwDestinationOrigin,const CHAR_INFO *lpFill); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ScrollConsoleScreenBufferW(HANDLE hConsoleOutput,const SMALL_RECT *lpScrollRectangle,const SMALL_RECT *lpClipRectangle,COORD dwDestinationOrigin,const CHAR_INFO *lpFill); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleWindowInfo(HANDLE hConsoleOutput,WINBOOL bAbsolute,const SMALL_RECT *lpConsoleWindow); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleTextAttribute(HANDLE hConsoleOutput,WORD wAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,WINBOOL Add); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,DWORD dwProcessGroupId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AllocConsole(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) FreeConsole(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AttachConsole(DWORD dwProcessId); +#define ATTACH_PARENT_PROCESS ((DWORD)-1) + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleTitleA(LPSTR lpConsoleTitle,DWORD nSize); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleTitleW(LPWSTR lpConsoleTitle,DWORD nSize); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleTitleA(LPCSTR lpConsoleTitle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleTitleW(LPCWSTR lpConsoleTitle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleA(HANDLE hConsoleInput,LPVOID lpBuffer,DWORD nNumberOfCharsToRead,LPDWORD lpNumberOfCharsRead,LPVOID lpReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ReadConsoleW(HANDLE hConsoleInput,LPVOID lpBuffer,DWORD nNumberOfCharsToRead,LPDWORD lpNumberOfCharsRead,LPVOID lpReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleA(HANDLE hConsoleOutput,const void *lpBuffer,DWORD nNumberOfCharsToWrite,LPDWORD lpNumberOfCharsWritten,LPVOID lpReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WriteConsoleW(HANDLE hConsoleOutput,const void *lpBuffer,DWORD nNumberOfCharsToWrite,LPDWORD lpNumberOfCharsWritten,LPVOID lpReserved); +#define CONSOLE_TEXTMODE_BUFFER 1 + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) CreateConsoleScreenBuffer(DWORD dwDesiredAccess,DWORD dwShareMode,const SECURITY_ATTRIBUTES *lpSecurityAttributes,DWORD dwFlags,LPVOID lpScreenBufferData); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetConsoleCP(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleCP(UINT wCodePageID); + __declspec (dllimport) UINT __attribute__((__stdcall__)) GetConsoleOutputCP(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleOutputCP(UINT wCodePageID); +#define CONSOLE_FULLSCREEN 1 +#define CONSOLE_FULLSCREEN_HARDWARE 2 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetConsoleDisplayMode(LPDWORD lpModeFlags); +#define CONSOLE_FULLSCREEN_MODE 1 +#define CONSOLE_WINDOWED_MODE 2 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleDisplayMode(HANDLE hConsoleOutput, DWORD dwFlags, PCOORD lpNewScreenBufferDimensions); + __declspec (dllimport) HWND __attribute__((__stdcall__)) GetConsoleWindow(void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleProcessList(LPDWORD lpdwProcessList,DWORD dwProcessCount); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddConsoleAliasA(LPSTR Source,LPSTR Target,LPSTR ExeName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AddConsoleAliasW(LPWSTR Source,LPWSTR Target,LPWSTR ExeName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasA(LPSTR Source,LPSTR TargetBuffer,DWORD TargetBufferLength,LPSTR ExeName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasW(LPWSTR Source,LPWSTR TargetBuffer,DWORD TargetBufferLength,LPWSTR ExeName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasesLengthA(LPSTR ExeName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasesLengthW(LPWSTR ExeName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesLengthA(void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesLengthW(void); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasesA(LPSTR AliasBuffer,DWORD AliasBufferLength,LPSTR ExeName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasesW(LPWSTR AliasBuffer,DWORD AliasBufferLength,LPWSTR ExeName); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesA(LPSTR ExeNameBuffer,DWORD ExeNameBufferLength); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesW(LPWSTR ExeNameBuffer,DWORD ExeNameBufferLength); +__declspec (dllimport) void __attribute__((__stdcall__)) ExpungeConsoleCommandHistoryA(LPSTR ExeName); +__declspec (dllimport) void __attribute__((__stdcall__)) ExpungeConsoleCommandHistoryW(LPWSTR ExeName); +#define ExpungeConsoleCommandHistory __MINGW_NAME_AW(ExpungeConsoleCommandHistory) +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleNumberOfCommandsA(DWORD Number, LPSTR ExeName); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleNumberOfCommandsW(DWORD Number, LPWSTR ExeName); +#define SetConsoleNumberOfCommands __MINGW_NAME_AW(SetConsoleNumberOfCommands) +__declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryLengthA(LPSTR ExeName); +__declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryLengthW(LPWSTR ExeName); +#define GetConsoleCommandHistoryLength __MINGW_NAME_AW(GetConsoleCommandHistoryLength) +__declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryA(LPSTR Commands, DWORD CommandBufferLength, LPSTR ExeName); +__declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryW(LPWSTR Commands, DWORD CommandBufferLength, LPWSTR ExeName); +#define GetConsoleCommandHistory __MINGW_NAME_AW(GetConsoleCommandHistory) +typedef struct _CONSOLE_FONT_INFOEX { + ULONG cbSize; + DWORD nFont; + COORD dwFontSize; + UINT FontFamily; + UINT FontWeight; + WCHAR FaceName[32]; +} CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX; +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetCurrentConsoleFontEx( + HANDLE hConsoleOutput, + WINBOOL bMaximumWindow, + PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx +); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetCurrentConsoleFontEx( + HANDLE hConsoleOutput, + WINBOOL bMaximumWindow, + PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx +); +#define HISTORY_NO_DUP_FLAG 0x1 +typedef struct _CONSOLE_HISTORY_INFO { + UINT cbSize; + UINT HistoryBufferSize; + UINT NumberOfHistoryBuffers; + DWORD dwFlags; +} CONSOLE_HISTORY_INFO, *PCONSOLE_HISTORY_INFO; +typedef struct _CONSOLE_READCONSOLE_CONTROL { + ULONG nLength; + ULONG nInitialChars; + ULONG dwCtrlWakeupMask; + ULONG dwControlKeyState; +} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL; +typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX { + ULONG cbSize; + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; + WORD wPopupAttributes; + WINBOOL bFullscreenSupported; + COLORREF ColorTable[16]; +} CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX; +WINBOOL __attribute__((__stdcall__)) GetConsoleHistoryInfo( + PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo +); +#define GetConsoleOriginalTitle __MINGW_NAME_AW(GetConsoleOriginalTitle) +__declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleOriginalTitleA( + LPSTR lpConsoleTitle, + DWORD nSize +); +__declspec (dllimport) DWORD __attribute__((__stdcall__)) GetConsoleOriginalTitleW( + LPWSTR lpConsoleTitle, + DWORD nSize +); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetConsoleScreenBufferInfoEx( + HANDLE hConsoleOutput, + PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx +); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleHistoryInfo( + PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo +); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetConsoleScreenBufferInfoEx( + HANDLE hConsoleOutput, + PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx +); +#define VER_H +#define VS_FILE_INFO RT_VERSION +#define VS_VERSION_INFO 1 +#define VS_USER_DEFINED 100 +#define VS_FFI_SIGNATURE __MSABI_LONG(0xFEEF04BD) +#define VS_FFI_STRUCVERSION __MSABI_LONG(0x00010000) +#define VS_FFI_FILEFLAGSMASK __MSABI_LONG(0x0000003F) +#define VS_FF_DEBUG __MSABI_LONG(0x00000001) +#define VS_FF_PRERELEASE __MSABI_LONG(0x00000002) +#define VS_FF_PATCHED __MSABI_LONG(0x00000004) +#define VS_FF_PRIVATEBUILD __MSABI_LONG(0x00000008) +#define VS_FF_INFOINFERRED __MSABI_LONG(0x00000010) +#define VS_FF_SPECIALBUILD __MSABI_LONG(0x00000020) +#define VOS_UNKNOWN __MSABI_LONG(0x00000000) +#define VOS_DOS __MSABI_LONG(0x00010000) +#define VOS_OS216 __MSABI_LONG(0x00020000) +#define VOS_OS232 __MSABI_LONG(0x00030000) +#define VOS_NT __MSABI_LONG(0x00040000) +#define VOS_WINCE __MSABI_LONG(0x00050000) +#define VOS__BASE __MSABI_LONG(0x00000000) +#define VOS__WINDOWS16 __MSABI_LONG(0x00000001) +#define VOS__PM16 __MSABI_LONG(0x00000002) +#define VOS__PM32 __MSABI_LONG(0x00000003) +#define VOS__WINDOWS32 __MSABI_LONG(0x00000004) +#define VOS_DOS_WINDOWS16 __MSABI_LONG(0x00010001) +#define VOS_DOS_WINDOWS32 __MSABI_LONG(0x00010004) +#define VOS_OS216_PM16 __MSABI_LONG(0x00020002) +#define VOS_OS232_PM32 __MSABI_LONG(0x00030003) +#define VOS_NT_WINDOWS32 __MSABI_LONG(0x00040004) +#define VFT_UNKNOWN __MSABI_LONG(0x00000000) +#define VFT_APP __MSABI_LONG(0x00000001) +#define VFT_DLL __MSABI_LONG(0x00000002) +#define VFT_DRV __MSABI_LONG(0x00000003) +#define VFT_FONT __MSABI_LONG(0x00000004) +#define VFT_VXD __MSABI_LONG(0x00000005) +#define VFT_STATIC_LIB __MSABI_LONG(0x00000007) +#define VFT2_UNKNOWN __MSABI_LONG(0x00000000) +#define VFT2_DRV_PRINTER __MSABI_LONG(0x00000001) +#define VFT2_DRV_KEYBOARD __MSABI_LONG(0x00000002) +#define VFT2_DRV_LANGUAGE __MSABI_LONG(0x00000003) +#define VFT2_DRV_DISPLAY __MSABI_LONG(0x00000004) +#define VFT2_DRV_MOUSE __MSABI_LONG(0x00000005) +#define VFT2_DRV_NETWORK __MSABI_LONG(0x00000006) +#define VFT2_DRV_SYSTEM __MSABI_LONG(0x00000007) +#define VFT2_DRV_INSTALLABLE __MSABI_LONG(0x00000008) +#define VFT2_DRV_SOUND __MSABI_LONG(0x00000009) +#define VFT2_DRV_COMM __MSABI_LONG(0x0000000A) +#define VFT2_DRV_INPUTMETHOD __MSABI_LONG(0x0000000B) +#define VFT2_DRV_VERSIONED_PRINTER __MSABI_LONG(0x0000000C) +#define VFT2_FONT_RASTER __MSABI_LONG(0x00000001) +#define VFT2_FONT_VECTOR __MSABI_LONG(0x00000002) +#define VFT2_FONT_TRUETYPE __MSABI_LONG(0x00000003) +#define VFFF_ISSHAREDFILE 0x0001 +#define VFF_CURNEDEST 0x0001 +#define VFF_FILEINUSE 0x0002 +#define VFF_BUFFTOOSMALL 0x0004 +#define VIFF_FORCEINSTALL 0x0001 +#define VIFF_DONTDELETEOLD 0x0002 +#define VIF_TEMPFILE __MSABI_LONG(0x00000001) +#define VIF_MISMATCH __MSABI_LONG(0x00000002) +#define VIF_SRCOLD __MSABI_LONG(0x00000004) +#define VIF_DIFFLANG __MSABI_LONG(0x00000008) +#define VIF_DIFFCODEPG __MSABI_LONG(0x00000010) +#define VIF_DIFFTYPE __MSABI_LONG(0x00000020) +#define VIF_WRITEPROT __MSABI_LONG(0x00000040) +#define VIF_FILEINUSE __MSABI_LONG(0x00000080) +#define VIF_OUTOFSPACE __MSABI_LONG(0x00000100) +#define VIF_ACCESSVIOLATION __MSABI_LONG(0x00000200) +#define VIF_SHARINGVIOLATION __MSABI_LONG(0x00000400) +#define VIF_CANNOTCREATE __MSABI_LONG(0x00000800) +#define VIF_CANNOTDELETE __MSABI_LONG(0x00001000) +#define VIF_CANNOTRENAME __MSABI_LONG(0x00002000) +#define VIF_CANNOTDELETECUR __MSABI_LONG(0x00004000) +#define VIF_OUTOFMEMORY __MSABI_LONG(0x00008000) +#define VIF_CANNOTREADSRC __MSABI_LONG(0x00010000) +#define VIF_CANNOTREADDST __MSABI_LONG(0x00020000) +#define VIF_BUFFTOOSMALL __MSABI_LONG(0x00040000) +#define VIF_CANNOTLOADLZ32 __MSABI_LONG(0x00080000) +#define VIF_CANNOTLOADCABINET __MSABI_LONG(0x00100000) +#define FILE_VER_GET_LOCALISED 0x01 +#define FILE_VER_GET_NEUTRAL 0x02 +#define FILE_VER_GET_PREFETCHED 0x04 + typedef struct tagVS_FIXEDFILEINFO + { + DWORD dwSignature; + DWORD dwStrucVersion; + DWORD dwFileVersionMS; + DWORD dwFileVersionLS; + DWORD dwProductVersionMS; + DWORD dwProductVersionLS; + DWORD dwFileFlagsMask; + DWORD dwFileFlags; + DWORD dwFileOS; + DWORD dwFileType; + DWORD dwFileSubtype; + DWORD dwFileDateMS; + DWORD dwFileDateLS; + } VS_FIXEDFILEINFO; +#define VerFindFile __MINGW_NAME_AW(VerFindFile) +#define VerInstallFile __MINGW_NAME_AW(VerInstallFile) +#define GetFileVersionInfoSize __MINGW_NAME_AW(GetFileVersionInfoSize) +#define GetFileVersionInfoSizeEx __MINGW_NAME_AW(GetFileVersionInfoSizeEx) +#define GetFileVersionInfo __MINGW_NAME_AW(GetFileVersionInfo) +#define GetFileVersionInfoEx __MINGW_NAME_AW(GetFileVersionInfoEx) +#define VerLanguageName __MINGW_NAME_AW(VerLanguageName) +#define VerQueryValue __MINGW_NAME_AW(VerQueryValue) + DWORD __attribute__((__stdcall__)) VerFindFileA(DWORD uFlags,LPSTR szFileName,LPSTR szWinDir,LPSTR szAppDir,LPSTR szCurDir,PUINT lpuCurDirLen,LPSTR szDestDir,PUINT lpuDestDirLen); + DWORD __attribute__((__stdcall__)) VerFindFileW(DWORD uFlags,LPWSTR szFileName,LPWSTR szWinDir,LPWSTR szAppDir,LPWSTR szCurDir,PUINT lpuCurDirLen,LPWSTR szDestDir,PUINT lpuDestDirLen); + DWORD __attribute__((__stdcall__)) VerInstallFileA(DWORD uFlags,LPSTR szSrcFileName,LPSTR szDestFileName,LPSTR szSrcDir,LPSTR szDestDir,LPSTR szCurDir,LPSTR szTmpFile,PUINT lpuTmpFileLen); + DWORD __attribute__((__stdcall__)) VerInstallFileW(DWORD uFlags,LPWSTR szSrcFileName,LPWSTR szDestFileName,LPWSTR szSrcDir,LPWSTR szDestDir,LPWSTR szCurDir,LPWSTR szTmpFile,PUINT lpuTmpFileLen); + DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeA(LPCSTR lptstrFilename,LPDWORD lpdwHandle); + DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeW(LPCWSTR lptstrFilename,LPDWORD lpdwHandle); + DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeExA(DWORD dwFlags, LPCSTR lpwstrFilename, LPDWORD lpdwHandle); + DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeExW(DWORD dwFlags, LPCWSTR lpwstrFilename, LPDWORD lpdwHandle); + WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoA(LPCSTR lptstrFilename,DWORD dwHandle,DWORD dwLen,LPVOID lpData); + WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoW(LPCWSTR lptstrFilename,DWORD dwHandle,DWORD dwLen,LPVOID lpData); + WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoExA(DWORD dwFlags, LPCSTR lpwstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID lpData); + WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoExW(DWORD dwFlags, LPCWSTR lpwstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID lpData); + DWORD __attribute__((__stdcall__)) VerLanguageNameA(DWORD wLang,LPSTR szLang,DWORD nSize); + DWORD __attribute__((__stdcall__)) VerLanguageNameW(DWORD wLang,LPWSTR szLang,DWORD nSize); + WINBOOL __attribute__((__stdcall__)) VerQueryValueA(LPCVOID pBlock,LPCSTR lpSubBlock,LPVOID *lplpBuffer,PUINT puLen); + WINBOOL __attribute__((__stdcall__)) VerQueryValueW(LPCVOID pBlock,LPCWSTR lpSubBlock,LPVOID *lplpBuffer,PUINT puLen); +#define _WINREG_ +#define RRF_RT_REG_NONE 0x00000001 +#define RRF_RT_REG_SZ 0x00000002 +#define RRF_RT_REG_EXPAND_SZ 0x00000004 +#define RRF_RT_REG_BINARY 0x00000008 +#define RRF_RT_REG_DWORD 0x00000010 +#define RRF_RT_REG_MULTI_SZ 0x00000020 +#define RRF_RT_REG_QWORD 0x00000040 +#define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD) +#define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD) +#define RRF_RT_ANY 0x0000ffff +#define RRF_NOEXPAND 0x10000000 +#define RRF_ZEROONFAILURE 0x20000000 +#define REG_PROCESS_APPKEY 0x00000001 + typedef ACCESS_MASK REGSAM; + typedef LONG LSTATUS; +#define HKEY_CLASSES_ROOT ((HKEY) (ULONG_PTR)((LONG)0x80000000)) +#define HKEY_CURRENT_USER ((HKEY) (ULONG_PTR)((LONG)0x80000001)) +#define HKEY_LOCAL_MACHINE ((HKEY) (ULONG_PTR)((LONG)0x80000002)) +#define HKEY_USERS ((HKEY) (ULONG_PTR)((LONG)0x80000003)) +#define HKEY_PERFORMANCE_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000004)) +#define HKEY_PERFORMANCE_TEXT ((HKEY) (ULONG_PTR)((LONG)0x80000050)) +#define HKEY_PERFORMANCE_NLSTEXT ((HKEY) (ULONG_PTR)((LONG)0x80000060)) +#define HKEY_CURRENT_CONFIG ((HKEY) (ULONG_PTR)((LONG)0x80000005)) +#define HKEY_DYN_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000006)) +#define HKEY_CURRENT_USER_LOCAL_SETTINGS ((HKEY) (ULONG_PTR)((LONG)0x80000007)) +#define _PROVIDER_STRUCTS_DEFINED +#define PROVIDER_KEEPS_VALUE_LENGTH 0x1 + struct val_context { + int valuelen; + LPVOID value_context; + LPVOID val_buff_ptr; + }; + typedef struct val_context *PVALCONTEXT; + typedef struct pvalueA { + LPSTR pv_valuename; + int pv_valuelen; + LPVOID pv_value_context; + DWORD pv_type; + }PVALUEA,*PPVALUEA; + typedef struct pvalueW { + LPWSTR pv_valuename; + int pv_valuelen; + LPVOID pv_value_context; + DWORD pv_type; + }PVALUEW,*PPVALUEW; + typedef PVALUEA PVALUE; + typedef PPVALUEA PPVALUE; + typedef DWORD __attribute__((__cdecl__)) QUERYHANDLER(LPVOID keycontext,PVALCONTEXT val_list,DWORD num_vals,LPVOID outputbuffer,DWORD *total_outlen,DWORD input_blen); + typedef QUERYHANDLER *PQUERYHANDLER; + typedef struct provider_info { + PQUERYHANDLER pi_R0_1val; + PQUERYHANDLER pi_R0_allvals; + PQUERYHANDLER pi_R3_1val; + PQUERYHANDLER pi_R3_allvals; + DWORD pi_flags; + LPVOID pi_key_context; + } REG_PROVIDER; + typedef struct provider_info *PPROVIDER; + typedef struct value_entA { + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD_PTR ve_valueptr; + DWORD ve_type; + } VALENTA,*PVALENTA; + typedef struct value_entW { + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD_PTR ve_valueptr; + DWORD ve_type; + } VALENTW,*PVALENTW; + typedef VALENTA VALENT; + typedef PVALENTA PVALENT; +#define WIN31_CLASS NULL +#define REG_MUI_STRING_TRUNCATE 0x00000001 +#define REG_SECURE_CONNECTION 1 +#define RegConnectRegistry __MINGW_NAME_AW(RegConnectRegistry) +#define RegConnectRegistryEx __MINGW_NAME_AW(RegConnectRegistryEx) +#define RegCreateKey __MINGW_NAME_AW(RegCreateKey) +#define RegDeleteKey __MINGW_NAME_AW(RegDeleteKey) +#define RegEnumKey __MINGW_NAME_AW(RegEnumKey) +#define RegLoadKey __MINGW_NAME_AW(RegLoadKey) +#define RegOpenKey __MINGW_NAME_AW(RegOpenKey) +#define RegQueryValue __MINGW_NAME_AW(RegQueryValue) +#define RegQueryMultipleValues __MINGW_NAME_AW(RegQueryMultipleValues) +#define RegReplaceKey __MINGW_NAME_AW(RegReplaceKey) +#define RegRestoreKey __MINGW_NAME_AW(RegRestoreKey) +#define RegSaveKey __MINGW_NAME_AW(RegSaveKey) +#define RegSetValue __MINGW_NAME_AW(RegSetValue) +#define RegUnLoadKey __MINGW_NAME_AW(RegUnLoadKey) +#define InitiateSystemShutdown __MINGW_NAME_AW(InitiateSystemShutdown) +#define AbortSystemShutdown __MINGW_NAME_AW(AbortSystemShutdown) + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegOverridePredefKey(HKEY hKey,HKEY hNewHKey); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenUserClassesRoot(HANDLE hToken,DWORD dwOptions,REGSAM samDesired,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenCurrentUser(REGSAM samDesired,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDisablePredefinedCache(void); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDisablePredefinedCacheEx(void); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegConnectRegistryA(LPCSTR lpMachineName,HKEY hKey,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegConnectRegistryW(LPCWSTR lpMachineName,HKEY hKey,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegConnectRegistryExA(LPCSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegConnectRegistryExW(LPCWSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegCreateKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegCreateKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyW(HKEY hKey,LPCWSTR lpSubKey); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDisableReflectionKey(HKEY hBase); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegEnableReflectionKey(HKEY hBase); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryReflectionKey(HKEY hBase,WINBOOL *bIsReflectionDisabled); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD cchName); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegEnumKeyW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,DWORD cchName); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegFlushKey(HKEY hKey); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegGetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegLoadKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryValueA(HKEY hKey,LPCSTR lpSubKey,LPSTR lpData,PLONG lpcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryValueW(HKEY hKey,LPCWSTR lpSubKey,LPWSTR lpData,PLONG lpcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryMultipleValuesA(HKEY hKey,PVALENTA val_list,DWORD num_vals,LPSTR lpValueBuf,LPDWORD ldwTotsize); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryMultipleValuesW(HKEY hKey,PVALENTW val_list,DWORD num_vals,LPWSTR lpValueBuf,LPDWORD ldwTotsize); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegReplaceKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpNewFile,LPCSTR lpOldFile); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegReplaceKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpNewFile,LPCWSTR lpOldFile); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegRestoreKeyA(HKEY hKey,LPCSTR lpFile,DWORD dwFlags); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegRestoreKeyW(HKEY hKey,LPCWSTR lpFile,DWORD dwFlags); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSaveKeyA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSaveKeyW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSetValueA(HKEY hKey,LPCSTR lpSubKey,DWORD dwType,LPCSTR lpData,DWORD cbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSetValueW(HKEY hKey,LPCWSTR lpSubKey,DWORD dwType,LPCWSTR lpData,DWORD cbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AbortSystemShutdownA(LPSTR lpMachineName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) AbortSystemShutdownW(LPWSTR lpMachineName); +#define SENTINEL_Reason +#define SHTDN_REASON_FLAG_COMMENT_REQUIRED 0x01000000 +#define SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED 0x02000000 +#define SHTDN_REASON_FLAG_CLEAN_UI 0x04000000 +#define SHTDN_REASON_FLAG_DIRTY_UI 0x08000000 +#define SHTDN_REASON_FLAG_USER_DEFINED 0x40000000 +#define SHTDN_REASON_FLAG_PLANNED 0x80000000 +#define SHTDN_REASON_MAJOR_OTHER 0x00000000 +#define SHTDN_REASON_MAJOR_NONE 0x00000000 +#define SHTDN_REASON_MAJOR_HARDWARE 0x00010000 +#define SHTDN_REASON_MAJOR_OPERATINGSYSTEM 0x00020000 +#define SHTDN_REASON_MAJOR_SOFTWARE 0x00030000 +#define SHTDN_REASON_MAJOR_APPLICATION 0x00040000 +#define SHTDN_REASON_MAJOR_SYSTEM 0x00050000 +#define SHTDN_REASON_MAJOR_POWER 0x00060000 +#define SHTDN_REASON_MAJOR_LEGACY_API 0x00070000 +#define SHTDN_REASON_MINOR_OTHER 0x00000000 +#define SHTDN_REASON_MINOR_NONE 0x000000ff +#define SHTDN_REASON_MINOR_MAINTENANCE 0x00000001 +#define SHTDN_REASON_MINOR_INSTALLATION 0x00000002 +#define SHTDN_REASON_MINOR_UPGRADE 0x00000003 +#define SHTDN_REASON_MINOR_RECONFIG 0x00000004 +#define SHTDN_REASON_MINOR_HUNG 0x00000005 +#define SHTDN_REASON_MINOR_UNSTABLE 0x00000006 +#define SHTDN_REASON_MINOR_DISK 0x00000007 +#define SHTDN_REASON_MINOR_PROCESSOR 0x00000008 +#define SHTDN_REASON_MINOR_NETWORKCARD 0x00000009 +#define SHTDN_REASON_MINOR_POWER_SUPPLY 0x0000000a +#define SHTDN_REASON_MINOR_CORDUNPLUGGED 0x0000000b +#define SHTDN_REASON_MINOR_ENVIRONMENT 0x0000000c +#define SHTDN_REASON_MINOR_HARDWARE_DRIVER 0x0000000d +#define SHTDN_REASON_MINOR_OTHERDRIVER 0x0000000e +#define SHTDN_REASON_MINOR_BLUESCREEN 0x0000000F +#define SHTDN_REASON_MINOR_SERVICEPACK 0x00000010 +#define SHTDN_REASON_MINOR_HOTFIX 0x00000011 +#define SHTDN_REASON_MINOR_SECURITYFIX 0x00000012 +#define SHTDN_REASON_MINOR_SECURITY 0x00000013 +#define SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000014 +#define SHTDN_REASON_MINOR_WMI 0x00000015 +#define SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000016 +#define SHTDN_REASON_MINOR_HOTFIX_UNINSTALL 0x00000017 +#define SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000018 +#define SHTDN_REASON_MINOR_MMC 0x00000019 +#define SHTDN_REASON_MINOR_SYSTEMRESTORE 0x0000001a +#define SHTDN_REASON_MINOR_TERMSRV 0x00000020 +#define SHTDN_REASON_MINOR_DC_PROMOTION 0x00000021 +#define SHTDN_REASON_MINOR_DC_DEMOTION 0x00000022 +#define SHTDN_REASON_UNKNOWN SHTDN_REASON_MINOR_NONE +#define SHTDN_REASON_LEGACY_API (SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED) +#define SHTDN_REASON_VALID_BIT_MASK 0xc0ffffff +#define PCLEANUI (SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_CLEAN_UI) +#define UCLEANUI (SHTDN_REASON_FLAG_CLEAN_UI) +#define PDIRTYUI (SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_DIRTY_UI) +#define UDIRTYUI (SHTDN_REASON_FLAG_DIRTY_UI) +#define MAX_REASON_NAME_LEN 64 +#define MAX_REASON_DESC_LEN 256 +#define MAX_REASON_BUGID_LEN 32 +#define MAX_REASON_COMMENT_LEN 512 +#define SHUTDOWN_TYPE_LEN 32 +#define POLICY_SHOWREASONUI_NEVER 0 +#define POLICY_SHOWREASONUI_ALWAYS 1 +#define POLICY_SHOWREASONUI_WORKSTATIONONLY 2 +#define POLICY_SHOWREASONUI_SERVERONLY 3 +#define SNAPSHOT_POLICY_NEVER 0 +#define SNAPSHOT_POLICY_ALWAYS 1 +#define SNAPSHOT_POLICY_UNPLANNED 2 +#define MAX_NUM_REASONS 256 + +#define REASON_SWINSTALL SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_INSTALLATION +#define REASON_HWINSTALL SHTDN_REASON_MAJOR_HARDWARE|SHTDN_REASON_MINOR_INSTALLATION +#define REASON_SERVICEHANG SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_HUNG +#define REASON_UNSTABLE SHTDN_REASON_MAJOR_SYSTEM|SHTDN_REASON_MINOR_UNSTABLE +#define REASON_SWHWRECONF SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_RECONFIG +#define REASON_OTHER SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER +#define REASON_UNKNOWN SHTDN_REASON_UNKNOWN +#define REASON_LEGACY_API SHTDN_REASON_LEGACY_API +#define REASON_PLANNED_FLAG SHTDN_REASON_FLAG_PLANNED +#define MAX_SHUTDOWN_TIMEOUT (10*365*24*60*60) +#define InitiateSystemShutdownEx __MINGW_NAME_AW(InitiateSystemShutdownEx) +#define RegSaveKeyEx __MINGW_NAME_AW(RegSaveKeyEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownExA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownExW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSaveKeyExA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSaveKeyExW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags); + __declspec (dllimport) LONG __attribute__((__stdcall__)) Wow64Win32ApiEntry (DWORD dwFuncNumber,DWORD dwFlag,DWORD dwRes); +#define RegCopyTree __MINGW_NAME_AW(RegCopyTree) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegCopyTreeA( + HKEY hKeySrc, + LPCSTR lpSubKey, + HKEY hKeyDest +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegCopyTreeW( + HKEY hKeySrc, + LPCWSTR lpSubKey, + HKEY hKeyDest +); +#define RegCreateKeyTransacted __MINGW_NAME_AW(RegCreateKeyTransacted) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegCreateKeyTransactedA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD Reserved, + LPSTR lpClass, + DWORD dwOptions, + REGSAM samDesired, + const LPSECURITY_ATTRIBUTES lpSecurityAttributes, + PHKEY phkResult, + LPDWORD lpdwDisposition, + HANDLE hTransaction, + PVOID pExtendedParemeter +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegCreateKeyTransactedW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD Reserved, + LPWSTR lpClass, + DWORD dwOptions, + REGSAM samDesired, + const LPSECURITY_ATTRIBUTES lpSecurityAttributes, + PHKEY phkResult, + LPDWORD lpdwDisposition, + HANDLE hTransaction, + PVOID pExtendedParemeter +); +#define RegDeleteKeyTransacted __MINGW_NAME_AW(RegDeleteKeyTransacted) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyTransactedA( + HKEY hKey, + LPCSTR lpSubKey, + REGSAM samDesired, + DWORD Reserved, + HANDLE hTransaction, + PVOID pExtendedParameter +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyTransactedW( + HKEY hKey, + LPCWSTR lpSubKey, + REGSAM samDesired, + DWORD Reserved, + HANDLE hTransaction, + PVOID pExtendedParameter +); +#define RegDeleteKeyValue __MINGW_NAME_AW(RegDeleteKeyValue) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyValueA( + HKEY hKey, + LPCSTR lpSubKey, + LPCSTR lpValueName +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyValueW( + HKEY hKey, + LPCWSTR lpSubKey, + LPCWSTR lpValueName +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegLoadAppKeyA( + LPCSTR lpFile, + PHKEY phkResult, + REGSAM samDesired, + DWORD dwOptions, + DWORD Reserved +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegLoadAppKeyW( + LPCWSTR lpFile, + PHKEY phkResult, + REGSAM samDesired, + DWORD dwOptions, + DWORD Reserved +); +#define RegLoadAppKey __MINGW_NAME_AW(RegLoadAppKey) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, LPSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCSTR pszDirectory); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, LPWSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCWSTR pszDirectory); +#define RegLoadMUIString __MINGW_NAME_AW(RegLoadMUIString) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenKeyTransactedA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD ulOptions, + REGSAM samDesired, + PHKEY phkResult, + HANDLE hTransaction, + PVOID pExtendedParameter +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenKeyTransactedW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD ulOptions, + REGSAM samDesired, + PHKEY phkResult, + HANDLE hTransaction, + PVOID pExtendedParameter +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegRenameKey( + HKEY hKey, + LPCWSTR lpSubKeyName, + LPCWSTR lpNewKeyName); +#define RegOpenKeyTransacted __MINGW_NAME_AW(RegOpenKeyTransacted) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegSetKeyValueA( + HKEY hKey, + LPCSTR lpSubKey, + LPCSTR lpValueName, + DWORD dwType, + LPCVOID lpData, + DWORD cbData +); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegSetKeyValueW( + HKEY hKey, + LPCWSTR lpSubKey, + LPCWSTR lpValueName, + DWORD dwType, + LPCVOID lpData, + DWORD cbData +); +#define RegSetKeyValue __MINGW_NAME_AW(RegSetKeyValue) +#define SHUTDOWN_FORCE_OTHERS 0x00000001 +#define SHUTDOWN_FORCE_SELF 0x00000002 +#define SHUTDOWN_RESTART 0x00000004 +#define SHUTDOWN_POWEROFF 0x00000008 +#define SHUTDOWN_NOREBOOT 0x00000010 +#define SHUTDOWN_GRACE_OVERRIDE 0x00000020 +#define SHUTDOWN_INSTALL_UPDATES 0x00000040 +#define SHUTDOWN_RESTARTAPPS 0x00000080 +#define SHUTDOWN_SKIP_SVC_PRESHUTDOWN 0x00000100 +#define SHUTDOWN_HYBRID 0x00000200 +#define SHUTDOWN_RESTART_BOOTOPTIONS 0x00000400 +#define SHUTDOWN_SOFT_REBOOT 0x00000800 +#define SHUTDOWN_MOBILE_UI 0x00001000 +#define SHUTDOWN_ARSO 0x00002000 +__declspec (dllimport) DWORD __attribute__((__stdcall__)) InitiateShutdownA( + LPSTR lpMachineName, + LPSTR lpMessage, + DWORD dwGracePeriod, + DWORD dwShutdownFlags, + DWORD dwReason +); +__declspec (dllimport) DWORD __attribute__((__stdcall__)) InitiateShutdownW( + LPWSTR lpMachineName, + LPWSTR lpMessage, + DWORD dwGracePeriod, + DWORD dwShutdownFlags, + DWORD dwReason +); +#define InitiateShutdown __MINGW_NAME_AW(InitiateShutdown) +__declspec (dllimport) DWORD __attribute__((__stdcall__)) CheckForHiberboot( + PBOOLEAN pHiberboot, + BOOLEAN bClearFlag +); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegCloseKey(HKEY hKey); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM samDesired,DWORD Reserved); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM samDesired,DWORD Reserved); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteValueA(HKEY hKey,LPCSTR lpValueName); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegNotifyChangeKeyValue(HKEY hKey,WINBOOL bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryInfoKeyA(HKEY hKey,LPSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryInfoKeyW(HKEY hKey,LPWSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData); + __declspec (dllimport) LONG __attribute__((__stdcall__)) RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData); +#define RegCreateKeyEx __MINGW_NAME_AW(RegCreateKeyEx) +#define RegDeleteKeyEx __MINGW_NAME_AW(RegDeleteKeyEx) +#define RegDeleteValue __MINGW_NAME_AW(RegDeleteValue) +#define RegEnumKeyEx __MINGW_NAME_AW(RegEnumKeyEx) +#define RegEnumValue __MINGW_NAME_AW(RegEnumValue) +#define RegGetValue __MINGW_NAME_AW(RegGetValue) +#define RegOpenKeyEx __MINGW_NAME_AW(RegOpenKeyEx) +#define RegQueryInfoKey __MINGW_NAME_AW(RegQueryInfoKey) +#define RegQueryValueEx __MINGW_NAME_AW(RegQueryValueEx) +#define RegSetValueEx __MINGW_NAME_AW(RegSetValueEx) +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteTreeA(HKEY hKey,LPCSTR lpSubKey); +__declspec (dllimport) LONG __attribute__((__stdcall__)) RegDeleteTreeW(HKEY hKey,LPCWSTR lpSubKey); +#define RegDeleteTree __MINGW_NAME_AW(RegDeleteTree) +#define _WINNETWK_ +#define _WNNC_ +#define WNNC_NET_MSNET 0x00010000 +#define WNNC_NET_LANMAN WNNC_NET_SMB +#define WNNC_NET_SMB 0x00020000 +#define WNNC_NET_NETWARE 0x00030000 +#define WNNC_NET_VINES 0x00040000 +#define WNNC_NET_10NET 0x00050000 +#define WNNC_NET_LOCUS 0x00060000 +#define WNNC_NET_SUN_PC_NFS 0x00070000 +#define WNNC_NET_LANSTEP 0x00080000 +#define WNNC_NET_9TILES 0x00090000 +#define WNNC_NET_LANTASTIC 0x000a0000 +#define WNNC_NET_AS400 0x000b0000 +#define WNNC_NET_FTP_NFS 0x000c0000 +#define WNNC_NET_PATHWORKS 0x000d0000 +#define WNNC_NET_LIFENET 0x000e0000 +#define WNNC_NET_POWERLAN 0x000f0000 +#define WNNC_NET_BWNFS 0x00100000 +#define WNNC_NET_COGENT 0x00110000 +#define WNNC_NET_FARALLON 0x00120000 +#define WNNC_NET_APPLETALK 0x00130000 +#define WNNC_NET_INTERGRAPH 0x00140000 +#define WNNC_NET_SYMFONET 0x00150000 +#define WNNC_NET_CLEARCASE 0x00160000 +#define WNNC_NET_FRONTIER 0x00170000 +#define WNNC_NET_BMC 0x00180000 +#define WNNC_NET_DCE 0x00190000 +#define WNNC_NET_AVID 0x001a0000 +#define WNNC_NET_DOCUSPACE 0x001b0000 +#define WNNC_NET_MANGOSOFT 0x001c0000 +#define WNNC_NET_SERNET 0x001d0000 +#define WNNC_NET_RIVERFRONT1 0x001e0000 +#define WNNC_NET_RIVERFRONT2 0x001f0000 +#define WNNC_NET_DECORB 0x00200000 +#define WNNC_NET_PROTSTOR 0x00210000 +#define WNNC_NET_FJ_REDIR 0x00220000 +#define WNNC_NET_DISTINCT 0x00230000 +#define WNNC_NET_TWINS 0x00240000 +#define WNNC_NET_RDR2SAMPLE 0x00250000 +#define WNNC_NET_CSC 0x00260000 +#define WNNC_NET_3IN1 0x00270000 +#define WNNC_NET_EXTENDNET 0x00290000 +#define WNNC_NET_STAC 0x002a0000 +#define WNNC_NET_FOXBAT 0x002b0000 +#define WNNC_NET_YAHOO 0x002c0000 +#define WNNC_NET_EXIFS 0x002d0000 +#define WNNC_NET_DAV 0x002e0000 +#define WNNC_NET_KNOWARE 0x002f0000 +#define WNNC_NET_OBJECT_DIRE 0x00300000 +#define WNNC_NET_MASFAX 0x00310000 +#define WNNC_NET_HOB_NFS 0x00320000 +#define WNNC_NET_SHIVA 0x00330000 +#define WNNC_NET_IBMAL 0x00340000 +#define WNNC_NET_LOCK 0x00350000 +#define WNNC_NET_TERMSRV 0x00360000 +#define WNNC_NET_SRT 0x00370000 +#define WNNC_NET_QUINCY 0x00380000 +#define WNNC_NET_OPENAFS 0x00390000 +#define WNNC_NET_AVID1 0x003a0000 +#define WNNC_NET_DFS 0x003b0000 +#define WNNC_NET_KWNP 0x003c0000 +#define WNNC_NET_ZENWORKS 0x003d0000 +#define WNNC_NET_DRIVEONWEB 0x003e0000 +#define WNNC_NET_VMWARE 0x003f0000 +#define WNNC_NET_RSFX 0x00400000 +#define WNNC_NET_MFILES 0x00410000 +#define WNNC_NET_MS_NFS 0x00420000 +#define WNNC_NET_GOOGLE 0x00430000 +#define WNNC_NET_NDFS 0x00440000 +#define WNNC_CRED_MANAGER 0xffff0000 + +#define RESOURCE_CONNECTED 0x00000001 +#define RESOURCE_GLOBALNET 0x00000002 +#define RESOURCE_REMEMBERED 0x00000003 +#define RESOURCE_RECENT 0x00000004 +#define RESOURCE_CONTEXT 0x00000005 +#define RESOURCETYPE_ANY 0x00000000 +#define RESOURCETYPE_DISK 0x00000001 +#define RESOURCETYPE_PRINT 0x00000002 +#define RESOURCETYPE_RESERVED 0x00000008 +#define RESOURCETYPE_UNKNOWN 0xFFFFFFFF +#define RESOURCEUSAGE_CONNECTABLE 0x00000001 +#define RESOURCEUSAGE_CONTAINER 0x00000002 +#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004 +#define RESOURCEUSAGE_SIBLING 0x00000008 +#define RESOURCEUSAGE_ATTACHED 0x00000010 +#define RESOURCEUSAGE_ALL (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED) +#define RESOURCEUSAGE_RESERVED 0x80000000 +#define RESOURCEDISPLAYTYPE_GENERIC 0x00000000 +#define RESOURCEDISPLAYTYPE_DOMAIN 0x00000001 +#define RESOURCEDISPLAYTYPE_SERVER 0x00000002 +#define RESOURCEDISPLAYTYPE_SHARE 0x00000003 +#define RESOURCEDISPLAYTYPE_FILE 0x00000004 +#define RESOURCEDISPLAYTYPE_GROUP 0x00000005 +#define RESOURCEDISPLAYTYPE_NETWORK 0x00000006 +#define RESOURCEDISPLAYTYPE_ROOT 0x00000007 +#define RESOURCEDISPLAYTYPE_SHAREADMIN 0x00000008 +#define RESOURCEDISPLAYTYPE_DIRECTORY 0x00000009 +#define RESOURCEDISPLAYTYPE_TREE 0x0000000a +#define RESOURCEDISPLAYTYPE_NDSCONTAINER 0x0000000b + typedef struct _NETRESOURCEA { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPSTR lpLocalName; + LPSTR lpRemoteName; + LPSTR lpComment; + LPSTR lpProvider; + } NETRESOURCEA,*LPNETRESOURCEA; + typedef struct _NETRESOURCEW { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + LPWSTR lpComment; + LPWSTR lpProvider; + } NETRESOURCEW,*LPNETRESOURCEW; + typedef NETRESOURCEA NETRESOURCE; + typedef LPNETRESOURCEA LPNETRESOURCE; +#define NETPROPERTY_PERSISTENT 1 +#define CONNECT_UPDATE_PROFILE 0x00000001 +#define CONNECT_UPDATE_RECENT 0x00000002 +#define CONNECT_TEMPORARY 0x00000004 +#define CONNECT_INTERACTIVE 0x00000008 +#define CONNECT_PROMPT 0x00000010 +#define CONNECT_NEED_DRIVE 0x00000020 +#define CONNECT_REFCOUNT 0x00000040 +#define CONNECT_REDIRECT 0x00000080 +#define CONNECT_LOCALDRIVE 0x00000100 +#define CONNECT_CURRENT_MEDIA 0x00000200 +#define CONNECT_DEFERRED 0x00000400 +#define CONNECT_RESERVED 0xFF000000 +#define CONNECT_COMMANDLINE 0x00000800 +#define CONNECT_CMD_SAVECRED 0x00001000 +#define CONNECT_CRED_RESET 0x00002000 +#define WNetAddConnection __MINGW_NAME_AW(WNetAddConnection) +#define WNetAddConnection2 __MINGW_NAME_AW(WNetAddConnection2) +#define WNetAddConnection3 __MINGW_NAME_AW(WNetAddConnection3) +#define WNetCancelConnection __MINGW_NAME_AW(WNetCancelConnection) +#define WNetCancelConnection2 __MINGW_NAME_AW(WNetCancelConnection2) +#define WNetGetConnection __MINGW_NAME_AW(WNetGetConnection) +#define WNetRestoreConnection __MINGW_NAME_AW(WNetRestoreConnection) +#define WNetUseConnection __MINGW_NAME_AW(WNetUseConnection) + DWORD __attribute__((__stdcall__)) WNetAddConnectionA(LPCSTR lpRemoteName,LPCSTR lpPassword,LPCSTR lpLocalName); + DWORD __attribute__((__stdcall__)) WNetAddConnectionW(LPCWSTR lpRemoteName,LPCWSTR lpPassword,LPCWSTR lpLocalName); + DWORD __attribute__((__stdcall__)) WNetAddConnection2A(LPNETRESOURCEA lpNetResource,LPCSTR lpPassword,LPCSTR lpUserName,DWORD dwFlags); + DWORD __attribute__((__stdcall__)) WNetAddConnection2W(LPNETRESOURCEW lpNetResource,LPCWSTR lpPassword,LPCWSTR lpUserName,DWORD dwFlags); + DWORD __attribute__((__stdcall__)) WNetAddConnection3A(HWND hwndOwner,LPNETRESOURCEA lpNetResource,LPCSTR lpPassword,LPCSTR lpUserName,DWORD dwFlags); + DWORD __attribute__((__stdcall__)) WNetAddConnection3W(HWND hwndOwner,LPNETRESOURCEW lpNetResource,LPCWSTR lpPassword,LPCWSTR lpUserName,DWORD dwFlags); + DWORD __attribute__((__stdcall__)) WNetCancelConnectionA(LPCSTR lpName,WINBOOL fForce); + DWORD __attribute__((__stdcall__)) WNetCancelConnectionW(LPCWSTR lpName,WINBOOL fForce); + DWORD __attribute__((__stdcall__)) WNetCancelConnection2A(LPCSTR lpName,DWORD dwFlags,WINBOOL fForce); + DWORD __attribute__((__stdcall__)) WNetCancelConnection2W(LPCWSTR lpName,DWORD dwFlags,WINBOOL fForce); + DWORD __attribute__((__stdcall__)) WNetGetConnectionA(LPCSTR lpLocalName,LPSTR lpRemoteName,LPDWORD lpnLength); + DWORD __attribute__((__stdcall__)) WNetGetConnectionW(LPCWSTR lpLocalName,LPWSTR lpRemoteName,LPDWORD lpnLength); + DWORD __attribute__((__stdcall__)) WNetRestoreConnectionA(HWND hwndParent,LPCSTR lpDevice); + DWORD __attribute__((__stdcall__)) WNetUseConnectionA(HWND hwndOwner,LPNETRESOURCEA lpNetResource,LPCSTR lpPassword,LPCSTR lpUserID,DWORD dwFlags,LPSTR lpAccessName,LPDWORD lpBufferSize,LPDWORD lpResult); + DWORD __attribute__((__stdcall__)) WNetUseConnectionW(HWND hwndOwner,LPNETRESOURCEW lpNetResource,LPCWSTR lpPassword,LPCWSTR lpUserID,DWORD dwFlags,LPWSTR lpAccessName,LPDWORD lpBufferSize,LPDWORD lpResult); + DWORD __attribute__((__stdcall__)) WNetConnectionDialog(HWND hwnd,DWORD dwType); + DWORD __attribute__((__stdcall__)) WNetDisconnectDialog(HWND hwnd,DWORD dwType); + DWORD __attribute__((__stdcall__)) WNetRestoreSingleConnectionW(HWND hwndParent, LPCWSTR lpDevice, WINBOOL fUseUI); + typedef struct _CONNECTDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEA lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; + } CONNECTDLGSTRUCTA,*LPCONNECTDLGSTRUCTA; + typedef struct _CONNECTDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEW lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; + } CONNECTDLGSTRUCTW,*LPCONNECTDLGSTRUCTW; + typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; + typedef LPCONNECTDLGSTRUCTA LPCONNECTDLGSTRUCT; +#define CONNDLG_RO_PATH 0x00000001 +#define CONNDLG_CONN_POINT 0x00000002 +#define CONNDLG_USE_MRU 0x00000004 +#define CONNDLG_HIDE_BOX 0x00000008 +#define CONNDLG_PERSIST 0x00000010 +#define CONNDLG_NOT_PERSIST 0x00000020 +#define WNetConnectionDialog1 __MINGW_NAME_AW(WNetConnectionDialog1) + DWORD __attribute__((__stdcall__)) WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA lpConnDlgStruct); + DWORD __attribute__((__stdcall__)) WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW lpConnDlgStruct); + typedef struct _DISCDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPSTR lpLocalName; + LPSTR lpRemoteName; + DWORD dwFlags; + } DISCDLGSTRUCTA,*LPDISCDLGSTRUCTA; + typedef struct _DISCDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + DWORD dwFlags; + } DISCDLGSTRUCTW,*LPDISCDLGSTRUCTW; + typedef DISCDLGSTRUCTA DISCDLGSTRUCT; + typedef LPDISCDLGSTRUCTA LPDISCDLGSTRUCT; +#define DISC_UPDATE_PROFILE 0x00000001 +#define DISC_NO_FORCE 0x00000040 +#define WNetDisconnectDialog1 __MINGW_NAME_AW(WNetDisconnectDialog1) +#define WNetOpenEnum __MINGW_NAME_AW(WNetOpenEnum) +#define WNetEnumResource __MINGW_NAME_AW(WNetEnumResource) +#define WNetGetResourceParent __MINGW_NAME_AW(WNetGetResourceParent) +#define WNetGetResourceInformation __MINGW_NAME_AW(WNetGetResourceInformation) + DWORD __attribute__((__stdcall__)) WNetDisconnectDialog1A(LPDISCDLGSTRUCTA lpConnDlgStruct); + DWORD __attribute__((__stdcall__)) WNetDisconnectDialog1W(LPDISCDLGSTRUCTW lpConnDlgStruct); + DWORD __attribute__((__stdcall__)) WNetOpenEnumA(DWORD dwScope,DWORD dwType,DWORD dwUsage,LPNETRESOURCEA lpNetResource,LPHANDLE lphEnum); + DWORD __attribute__((__stdcall__)) WNetOpenEnumW(DWORD dwScope,DWORD dwType,DWORD dwUsage,LPNETRESOURCEW lpNetResource,LPHANDLE lphEnum); + DWORD __attribute__((__stdcall__)) WNetEnumResourceA(HANDLE hEnum,LPDWORD lpcCount,LPVOID lpBuffer,LPDWORD lpBufferSize); + DWORD __attribute__((__stdcall__)) WNetEnumResourceW(HANDLE hEnum,LPDWORD lpcCount,LPVOID lpBuffer,LPDWORD lpBufferSize); + DWORD __attribute__((__stdcall__)) WNetCloseEnum(HANDLE hEnum); + DWORD __attribute__((__stdcall__)) WNetGetResourceParentA(LPNETRESOURCEA lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer); + DWORD __attribute__((__stdcall__)) WNetGetResourceParentW(LPNETRESOURCEW lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer); + DWORD __attribute__((__stdcall__)) WNetGetResourceInformationA(LPNETRESOURCEA lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer,LPSTR *lplpSystem); + DWORD __attribute__((__stdcall__)) WNetGetResourceInformationW(LPNETRESOURCEW lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer,LPWSTR *lplpSystem); +#define UNIVERSAL_NAME_INFO_LEVEL 0x00000001 +#define REMOTE_NAME_INFO_LEVEL 0x00000002 + typedef struct _UNIVERSAL_NAME_INFOA { + LPSTR lpUniversalName; + } UNIVERSAL_NAME_INFOA,*LPUNIVERSAL_NAME_INFOA; + typedef struct _UNIVERSAL_NAME_INFOW { + LPWSTR lpUniversalName; + } UNIVERSAL_NAME_INFOW,*LPUNIVERSAL_NAME_INFOW; + typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; + typedef LPUNIVERSAL_NAME_INFOA LPUNIVERSAL_NAME_INFO; + typedef struct _REMOTE_NAME_INFOA { + LPSTR lpUniversalName; + LPSTR lpConnectionName; + LPSTR lpRemainingPath; + } REMOTE_NAME_INFOA,*LPREMOTE_NAME_INFOA; + typedef struct _REMOTE_NAME_INFOW { + LPWSTR lpUniversalName; + LPWSTR lpConnectionName; + LPWSTR lpRemainingPath; + } REMOTE_NAME_INFOW,*LPREMOTE_NAME_INFOW; + typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO; + typedef LPREMOTE_NAME_INFOA LPREMOTE_NAME_INFO; +#define WNetGetUniversalName __MINGW_NAME_AW(WNetGetUniversalName) +#define WNetGetUser __MINGW_NAME_AW(WNetGetUser) +#define WNetGetProviderName __MINGW_NAME_AW(WNetGetProviderName) + DWORD __attribute__((__stdcall__)) WNetGetUniversalNameA(LPCSTR lpLocalPath,DWORD dwInfoLevel,LPVOID lpBuffer,LPDWORD lpBufferSize); + DWORD __attribute__((__stdcall__)) WNetGetUniversalNameW(LPCWSTR lpLocalPath,DWORD dwInfoLevel,LPVOID lpBuffer,LPDWORD lpBufferSize); + DWORD __attribute__((__stdcall__)) WNetGetUserA(LPCSTR lpName,LPSTR lpUserName,LPDWORD lpnLength); + DWORD __attribute__((__stdcall__)) WNetGetUserW(LPCWSTR lpName,LPWSTR lpUserName,LPDWORD lpnLength); +#define WNFMT_MULTILINE 0x01 +#define WNFMT_ABBREVIATED 0x02 +#define WNFMT_INENUM 0x10 +#define WNFMT_CONNECTION 0x20 + DWORD __attribute__((__stdcall__)) WNetGetProviderNameA(DWORD dwNetType,LPSTR lpProviderName,LPDWORD lpBufferSize); + DWORD __attribute__((__stdcall__)) WNetGetProviderNameW(DWORD dwNetType,LPWSTR lpProviderName,LPDWORD lpBufferSize); + typedef struct _NETINFOSTRUCT { + DWORD cbStructure; + DWORD dwProviderVersion; + DWORD dwStatus; + DWORD dwCharacteristics; + ULONG_PTR dwHandle; + WORD wNetType; + DWORD dwPrinters; + DWORD dwDrives; + } NETINFOSTRUCT,*LPNETINFOSTRUCT; +#define NETINFO_DLL16 0x00000001 +#define NETINFO_DISKRED 0x00000004 +#define NETINFO_PRINTERRED 0x00000008 +#define WNetGetNetworkInformation __MINGW_NAME_AW(WNetGetNetworkInformation) + DWORD __attribute__((__stdcall__)) WNetGetNetworkInformationA(LPCSTR lpProvider,LPNETINFOSTRUCT lpNetInfoStruct); + DWORD __attribute__((__stdcall__)) WNetGetNetworkInformationW(LPCWSTR lpProvider,LPNETINFOSTRUCT lpNetInfoStruct); + typedef UINT (__attribute__((__stdcall__)) *PFNGETPROFILEPATHA) (LPCSTR pszUsername,LPSTR pszBuffer,UINT cbBuffer); + typedef UINT (__attribute__((__stdcall__)) *PFNGETPROFILEPATHW) (LPCWSTR pszUsername,LPWSTR pszBuffer,UINT cbBuffer); +#define PFNGETPROFILEPATH __MINGW_NAME_AW(PFNGETPROFILEPATH) + typedef UINT (__attribute__((__stdcall__)) *PFNRECONCILEPROFILEA) (LPCSTR pszCentralFile,LPCSTR pszLocalFile,DWORD dwFlags); + typedef UINT (__attribute__((__stdcall__)) *PFNRECONCILEPROFILEW) (LPCWSTR pszCentralFile,LPCWSTR pszLocalFile,DWORD dwFlags); +#define PFNRECONCILEPROFILE __MINGW_NAME_AW(PFNRECONCILEPROFILE) +#define RP_LOGON 0x01 +#define RP_INIFILE 0x02 + typedef WINBOOL (__attribute__((__stdcall__)) *PFNPROCESSPOLICIESA) (HWND hwnd,LPCSTR pszPath,LPCSTR pszUsername,LPCSTR pszComputerName,DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFNPROCESSPOLICIESW) (HWND hwnd,LPCWSTR pszPath,LPCWSTR pszUsername,LPCWSTR pszComputerName,DWORD dwFlags); +#define PFNPROCESSPOLICIES __MINGW_NAME_AW(PFNPROCESSPOLICIES) +#define PP_DISPLAYERRORS 0x01 +#define WNetGetLastError __MINGW_NAME_AW(WNetGetLastError) + DWORD __attribute__((__stdcall__)) WNetGetLastErrorA(LPDWORD lpError,LPSTR lpErrorBuf,DWORD nErrorBufSize,LPSTR lpNameBuf,DWORD nNameBufSize); + DWORD __attribute__((__stdcall__)) WNetGetLastErrorW(LPDWORD lpError,LPWSTR lpErrorBuf,DWORD nErrorBufSize,LPWSTR lpNameBuf,DWORD nNameBufSize); +#define WN_SUCCESS NO_ERROR +#define WN_NO_ERROR NO_ERROR +#define WN_NOT_SUPPORTED ERROR_NOT_SUPPORTED +#define WN_CANCEL ERROR_CANCELLED +#define WN_RETRY ERROR_RETRY +#define WN_NET_ERROR ERROR_UNEXP_NET_ERR +#define WN_MORE_DATA ERROR_MORE_DATA +#define WN_BAD_POINTER ERROR_INVALID_ADDRESS +#define WN_BAD_VALUE ERROR_INVALID_PARAMETER +#define WN_BAD_USER ERROR_BAD_USERNAME +#define WN_BAD_PASSWORD ERROR_INVALID_PASSWORD +#define WN_ACCESS_DENIED ERROR_ACCESS_DENIED +#define WN_FUNCTION_BUSY ERROR_BUSY +#define WN_WINDOWS_ERROR ERROR_UNEXP_NET_ERR +#define WN_OUT_OF_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define WN_NO_NETWORK ERROR_NO_NETWORK +#define WN_EXTENDED_ERROR ERROR_EXTENDED_ERROR +#define WN_BAD_LEVEL ERROR_INVALID_LEVEL +#define WN_BAD_HANDLE ERROR_INVALID_HANDLE +#define WN_NOT_INITIALIZING ERROR_ALREADY_INITIALIZED +#define WN_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES +#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED +#define WN_OPEN_FILES ERROR_OPEN_FILES +#define WN_DEVICE_IN_USE ERROR_DEVICE_IN_USE +#define WN_BAD_NETNAME ERROR_BAD_NET_NAME +#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE +#define WN_ALREADY_CONNECTED ERROR_ALREADY_ASSIGNED +#define WN_DEVICE_ERROR ERROR_GEN_FAILURE +#define WN_CONNECTION_CLOSED ERROR_CONNECTION_UNAVAIL +#define WN_NO_NET_OR_BAD_PATH ERROR_NO_NET_OR_BAD_PATH +#define WN_BAD_PROVIDER ERROR_BAD_PROVIDER +#define WN_CANNOT_OPEN_PROFILE ERROR_CANNOT_OPEN_PROFILE +#define WN_BAD_PROFILE ERROR_BAD_PROFILE +#define WN_BAD_DEV_TYPE ERROR_BAD_DEV_TYPE +#define WN_DEVICE_ALREADY_REMEMBERED ERROR_DEVICE_ALREADY_REMEMBERED +#define WN_CONNECTED_OTHER_PASSWORD ERROR_CONNECTED_OTHER_PASSWORD +#define WN_CONNECTED_OTHER_PASSWORD_DEFAULT ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT +#define WN_NO_MORE_ENTRIES ERROR_NO_MORE_ITEMS +#define WN_NOT_CONTAINER ERROR_NOT_CONTAINER +#define WN_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED +#define WN_NOT_LOGGED_ON ERROR_NOT_LOGGED_ON +#define WN_NOT_VALIDATED ERROR_NO_LOGON_SERVERS + typedef struct _NETCONNECTINFOSTRUCT { + DWORD cbStructure; + DWORD dwFlags; + DWORD dwSpeed; + DWORD dwDelay; + DWORD dwOptDataSize; + } NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT; +#define WNCON_FORNETCARD 0x00000001 +#define WNCON_NOTROUTED 0x00000002 +#define WNCON_SLOWLINK 0x00000004 +#define WNCON_DYNAMIC 0x00000008 +#define MultinetGetConnectionPerformance __MINGW_NAME_AW(MultinetGetConnectionPerformance) + DWORD __attribute__((__stdcall__)) MultinetGetConnectionPerformanceA(LPNETRESOURCEA lpNetResource,LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct); + DWORD __attribute__((__stdcall__)) MultinetGetConnectionPerformanceW(LPNETRESOURCEW lpNetResource,LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct); +#define _INC_VIRTDISK +#define _INC_CDERR +#define CDERR_DIALOGFAILURE 0xFFFF +#define CDERR_GENERALCODES 0x0000 +#define CDERR_STRUCTSIZE 0x0001 +#define CDERR_INITIALIZATION 0x0002 +#define CDERR_NOTEMPLATE 0x0003 +#define CDERR_NOHINSTANCE 0x0004 +#define CDERR_LOADSTRFAILURE 0x0005 +#define CDERR_FINDRESFAILURE 0x0006 +#define CDERR_LOADRESFAILURE 0x0007 +#define CDERR_LOCKRESFAILURE 0x0008 +#define CDERR_MEMALLOCFAILURE 0x0009 +#define CDERR_MEMLOCKFAILURE 0x000A +#define CDERR_NOHOOK 0x000B +#define CDERR_REGISTERMSGFAIL 0x000C +#define PDERR_PRINTERCODES 0x1000 +#define PDERR_SETUPFAILURE 0x1001 +#define PDERR_PARSEFAILURE 0x1002 +#define PDERR_RETDEFFAILURE 0x1003 +#define PDERR_LOADDRVFAILURE 0x1004 +#define PDERR_GETDEVMODEFAIL 0x1005 +#define PDERR_INITFAILURE 0x1006 +#define PDERR_NODEVICES 0x1007 +#define PDERR_NODEFAULTPRN 0x1008 +#define PDERR_DNDMMISMATCH 0x1009 +#define PDERR_CREATEICFAILURE 0x100A +#define PDERR_PRINTERNOTFOUND 0x100B +#define PDERR_DEFAULTDIFFERENT 0x100C +#define CFERR_CHOOSEFONTCODES 0x2000 +#define CFERR_NOFONTS 0x2001 +#define CFERR_MAXLESSTHANMIN 0x2002 +#define FNERR_FILENAMECODES 0x3000 +#define FNERR_SUBCLASSFAILURE 0x3001 +#define FNERR_INVALIDFILENAME 0x3002 +#define FNERR_BUFFERTOOSMALL 0x3003 +#define FRERR_FINDREPLACECODES 0x4000 +#define FRERR_BUFFERLENGTHZERO 0x4001 +#define CCERR_CHOOSECOLORCODES 0x5000 +#define _DDEHEADER_INCLUDED_ +#define WM_DDE_FIRST 0x03E0 +#define WM_DDE_INITIATE (WM_DDE_FIRST) +#define WM_DDE_TERMINATE (WM_DDE_FIRST+1) +#define WM_DDE_ADVISE (WM_DDE_FIRST+2) +#define WM_DDE_UNADVISE (WM_DDE_FIRST+3) +#define WM_DDE_ACK (WM_DDE_FIRST+4) +#define WM_DDE_DATA (WM_DDE_FIRST+5) +#define WM_DDE_REQUEST (WM_DDE_FIRST+6) +#define WM_DDE_POKE (WM_DDE_FIRST+7) +#define WM_DDE_EXECUTE (WM_DDE_FIRST+8) +#define WM_DDE_LAST (WM_DDE_FIRST+8) + typedef struct { + unsigned short bAppReturnCode:8,reserved:6,fBusy:1,fAck:1; + } DDEACK; + typedef struct { + unsigned short reserved:14,fDeferUpd:1,fAckReq:1; + short cfFormat; + } DDEADVISE; + typedef struct { + unsigned short unused:12,fResponse:1,fRelease:1,reserved:1,fAckReq:1; + short cfFormat; + BYTE Value[1]; + } DDEDATA; + typedef struct { + unsigned short unused:13,fRelease:1,fReserved:2; + short cfFormat; + BYTE Value[1]; + } DDEPOKE; + typedef struct { + unsigned short unused:13,fRelease:1,fDeferUpd:1,fAckReq:1; + short cfFormat; + } DDELN; + typedef struct { + unsigned short unused:12,fAck:1,fRelease:1,fReserved:1,fAckReq:1; + short cfFormat; + BYTE rgb[1]; + } DDEUP; + WINBOOL __attribute__((__stdcall__)) DdeSetQualityOfService(HWND hwndClient,const SECURITY_QUALITY_OF_SERVICE *pqosNew,PSECURITY_QUALITY_OF_SERVICE pqosPrev); + WINBOOL __attribute__((__stdcall__)) ImpersonateDdeClientWindow(HWND hWndClient,HWND hWndServer); + LPARAM __attribute__((__stdcall__)) PackDDElParam(UINT msg,UINT_PTR uiLo,UINT_PTR uiHi); + WINBOOL __attribute__((__stdcall__)) UnpackDDElParam(UINT msg,LPARAM lParam,PUINT_PTR puiLo,PUINT_PTR puiHi); + WINBOOL __attribute__((__stdcall__)) FreeDDElParam(UINT msg,LPARAM lParam); + LPARAM __attribute__((__stdcall__)) ReuseDDElParam(LPARAM lParam,UINT msgIn,UINT msgOut,UINT_PTR uiLo,UINT_PTR uiHi); +#define _INC_DDEMLH + struct HCONVLIST__ { int unused; }; typedef struct HCONVLIST__ *HCONVLIST; + struct HCONV__ { int unused; }; typedef struct HCONV__ *HCONV; + struct HSZ__ { int unused; }; typedef struct HSZ__ *HSZ; + struct HDDEDATA__ { int unused; }; typedef struct HDDEDATA__ *HDDEDATA; +#define EXPENTRY CALLBACK + typedef struct tagHSZPAIR { + HSZ hszSvc; + HSZ hszTopic; + } HSZPAIR, *PHSZPAIR; + typedef struct tagCONVCONTEXT { + UINT cb; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; + } CONVCONTEXT, *PCONVCONTEXT; + typedef struct tagCONVINFO { + DWORD cb; + DWORD_PTR hUser; + HCONV hConvPartner; + HSZ hszSvcPartner; + HSZ hszServiceReq; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + UINT wType; + UINT wStatus; + UINT wConvst; + UINT wLastError; + HCONVLIST hConvList; + CONVCONTEXT ConvCtxt; + HWND hwnd; + HWND hwndPartner; + } CONVINFO, *PCONVINFO; +#define XST_NULL 0 +#define XST_INCOMPLETE 1 +#define XST_CONNECTED 2 +#define XST_INIT1 3 +#define XST_INIT2 4 +#define XST_REQSENT 5 +#define XST_DATARCVD 6 +#define XST_POKESENT 7 +#define XST_POKEACKRCVD 8 +#define XST_EXECSENT 9 +#define XST_EXECACKRCVD 10 +#define XST_ADVSENT 11 +#define XST_UNADVSENT 12 +#define XST_ADVACKRCVD 13 +#define XST_UNADVACKRCVD 14 +#define XST_ADVDATASENT 15 +#define XST_ADVDATAACKRCVD 16 +#define CADV_LATEACK 0xFFFF +#define ST_CONNECTED 0x0001 +#define ST_ADVISE 0x0002 +#define ST_ISLOCAL 0x0004 +#define ST_BLOCKED 0x0008 +#define ST_CLIENT 0x0010 +#define ST_TERMINATED 0x0020 +#define ST_INLIST 0x0040 +#define ST_BLOCKNEXT 0x0080 +#define ST_ISSELF 0x0100 +#define DDE_FACK 0x8000 +#define DDE_FBUSY 0x4000 +#define DDE_FDEFERUPD 0x4000 +#define DDE_FACKREQ 0x8000 +#define DDE_FRELEASE 0x2000 +#define DDE_FREQUESTED 0x1000 +#define DDE_FAPPSTATUS 0x00ff +#define DDE_FNOTPROCESSED 0x0000 +#define DDE_FACKRESERVED (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS)) +#define DDE_FADVRESERVED (~(DDE_FACKREQ | DDE_FDEFERUPD)) +#define DDE_FDATRESERVED (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED)) +#define DDE_FPOKRESERVED (~(DDE_FRELEASE)) +#define MSGF_DDEMGR 0x8001 +#define CP_WINANSI 1004 +#define CP_WINUNICODE 1200 +#define XTYPF_NOBLOCK 0x0002 +#define XTYPF_NODATA 0x0004 +#define XTYPF_ACKREQ 0x0008 +#define XCLASS_MASK 0xFC00 +#define XCLASS_BOOL 0x1000 +#define XCLASS_DATA 0x2000 +#define XCLASS_FLAGS 0x4000 +#define XCLASS_NOTIFICATION 0x8000 +#define XTYP_ERROR (0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK) +#define XTYP_ADVDATA (0x0010 | XCLASS_FLAGS) +#define XTYP_ADVREQ (0x0020 | XCLASS_DATA | XTYPF_NOBLOCK) +#define XTYP_ADVSTART (0x0030 | XCLASS_BOOL) +#define XTYP_ADVSTOP (0x0040 | XCLASS_NOTIFICATION) +#define XTYP_EXECUTE (0x0050 | XCLASS_FLAGS) +#define XTYP_CONNECT (0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK) +#define XTYP_CONNECT_CONFIRM (0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK) +#define XTYP_XACT_COMPLETE (0x0080 | XCLASS_NOTIFICATION) +#define XTYP_POKE (0x0090 | XCLASS_FLAGS) +#define XTYP_REGISTER (0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK) +#define XTYP_REQUEST (0x00B0 | XCLASS_DATA) +#define XTYP_DISCONNECT (0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK) +#define XTYP_UNREGISTER (0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK) +#define XTYP_WILDCONNECT (0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK) +#define XTYP_MASK 0x00F0 +#define XTYP_SHIFT 4 +#define TIMEOUT_ASYNC 0xFFFFFFFF +#define QID_SYNC 0xFFFFFFFF +#define CP_WINNEUTRAL CP_WINANSI +#define SZDDESYS_TOPIC __MINGW_STRING_AW("System") +#define SZDDESYS_ITEM_TOPICS __MINGW_STRING_AW("Topics") +#define SZDDESYS_ITEM_SYSITEMS __MINGW_STRING_AW("SysItems") +#define SZDDESYS_ITEM_RTNMSG __MINGW_STRING_AW("ReturnMessage") +#define SZDDESYS_ITEM_STATUS __MINGW_STRING_AW("Status") +#define SZDDESYS_ITEM_FORMATS __MINGW_STRING_AW("Formats") +#define SZDDESYS_ITEM_HELP __MINGW_STRING_AW("Help") +#define SZDDE_ITEM_ITEMLIST __MINGW_STRING_AW("TopicItemList") +#define DdeInitialize __MINGW_NAME_AW(DdeInitialize) + typedef HDDEDATA __attribute__((__stdcall__)) FNCALLBACK(UINT wType,UINT wFmt,HCONV hConv,HSZ hsz1,HSZ hsz2,HDDEDATA hData,ULONG_PTR dwData1,ULONG_PTR dwData2); + typedef HDDEDATA (__attribute__((__stdcall__)) *PFNCALLBACK)(UINT wType,UINT wFmt,HCONV hConv,HSZ hsz1,HSZ hsz2,HDDEDATA hData,ULONG_PTR dwData1,ULONG_PTR dwData2); +#define CBR_BLOCK ((HDDEDATA)-1) + UINT __attribute__((__stdcall__)) DdeInitializeA(LPDWORD pidInst,PFNCALLBACK pfnCallback,DWORD afCmd,DWORD ulRes); + UINT __attribute__((__stdcall__)) DdeInitializeW(LPDWORD pidInst,PFNCALLBACK pfnCallback,DWORD afCmd,DWORD ulRes); +#define CBF_FAIL_SELFCONNECTIONS 0x00001000 +#define CBF_FAIL_CONNECTIONS 0x00002000 +#define CBF_FAIL_ADVISES 0x00004000 +#define CBF_FAIL_EXECUTES 0x00008000 +#define CBF_FAIL_POKES 0x00010000 +#define CBF_FAIL_REQUESTS 0x00020000 +#define CBF_FAIL_ALLSVRXACTIONS 0x0003f000 +#define CBF_SKIP_CONNECT_CONFIRMS 0x00040000 +#define CBF_SKIP_REGISTRATIONS 0x00080000 +#define CBF_SKIP_UNREGISTRATIONS 0x00100000 +#define CBF_SKIP_DISCONNECTS 0x00200000 +#define CBF_SKIP_ALLNOTIFICATIONS 0x003c0000 +#define APPCMD_CLIENTONLY __MSABI_LONG(0x00000010) +#define APPCMD_FILTERINITS __MSABI_LONG(0x00000020) +#define APPCMD_MASK __MSABI_LONG(0x00000FF0) +#define APPCLASS_STANDARD __MSABI_LONG(0x00000000) +#define APPCLASS_MASK __MSABI_LONG(0x0000000F) + WINBOOL __attribute__((__stdcall__)) DdeUninitialize(DWORD idInst); + HCONVLIST __attribute__((__stdcall__)) DdeConnectList(DWORD idInst,HSZ hszService,HSZ hszTopic,HCONVLIST hConvList,PCONVCONTEXT pCC); + HCONV __attribute__((__stdcall__)) DdeQueryNextServer(HCONVLIST hConvList,HCONV hConvPrev); + WINBOOL __attribute__((__stdcall__)) DdeDisconnectList(HCONVLIST hConvList); + HCONV __attribute__((__stdcall__)) DdeConnect(DWORD idInst,HSZ hszService,HSZ hszTopic,PCONVCONTEXT pCC); + WINBOOL __attribute__((__stdcall__)) DdeDisconnect(HCONV hConv); + HCONV __attribute__((__stdcall__)) DdeReconnect(HCONV hConv); + UINT __attribute__((__stdcall__)) DdeQueryConvInfo(HCONV hConv,DWORD idTransaction,PCONVINFO pConvInfo); + WINBOOL __attribute__((__stdcall__)) DdeSetUserHandle(HCONV hConv,DWORD id,DWORD_PTR hUser); + WINBOOL __attribute__((__stdcall__)) DdeAbandonTransaction(DWORD idInst,HCONV hConv,DWORD idTransaction); + WINBOOL __attribute__((__stdcall__)) DdePostAdvise(DWORD idInst,HSZ hszTopic,HSZ hszItem); + WINBOOL __attribute__((__stdcall__)) DdeEnableCallback(DWORD idInst,HCONV hConv,UINT wCmd); + WINBOOL __attribute__((__stdcall__)) DdeImpersonateClient(HCONV hConv); +#define EC_ENABLEALL 0 +#define EC_ENABLEONE ST_BLOCKNEXT +#define EC_DISABLE ST_BLOCKED +#define EC_QUERYWAITING 2 +#define DNS_REGISTER 0x0001 +#define DNS_UNREGISTER 0x0002 +#define DNS_FILTERON 0x0004 +#define DNS_FILTEROFF 0x0008 + HDDEDATA __attribute__((__stdcall__)) DdeNameService(DWORD idInst,HSZ hsz1,HSZ hsz2,UINT afCmd); + HDDEDATA __attribute__((__stdcall__)) DdeClientTransaction(LPBYTE pData,DWORD cbData,HCONV hConv,HSZ hszItem,UINT wFmt,UINT wType,DWORD dwTimeout,LPDWORD pdwResult); + HDDEDATA __attribute__((__stdcall__)) DdeCreateDataHandle(DWORD idInst,LPBYTE pSrc,DWORD cb,DWORD cbOff,HSZ hszItem,UINT wFmt,UINT afCmd); + HDDEDATA __attribute__((__stdcall__)) DdeAddData(HDDEDATA hData,LPBYTE pSrc,DWORD cb,DWORD cbOff); + DWORD __attribute__((__stdcall__)) DdeGetData(HDDEDATA hData,LPBYTE pDst,DWORD cbMax,DWORD cbOff); + LPBYTE __attribute__((__stdcall__)) DdeAccessData(HDDEDATA hData,LPDWORD pcbDataSize); + WINBOOL __attribute__((__stdcall__)) DdeUnaccessData(HDDEDATA hData); + WINBOOL __attribute__((__stdcall__)) DdeFreeDataHandle(HDDEDATA hData); +#define HDATA_APPOWNED 0x0001 + UINT __attribute__((__stdcall__)) DdeGetLastError(DWORD idInst); +#define DMLERR_NO_ERROR 0 +#define DMLERR_FIRST 0x4000 +#define DMLERR_ADVACKTIMEOUT 0x4000 +#define DMLERR_BUSY 0x4001 +#define DMLERR_DATAACKTIMEOUT 0x4002 +#define DMLERR_DLL_NOT_INITIALIZED 0x4003 +#define DMLERR_DLL_USAGE 0x4004 +#define DMLERR_EXECACKTIMEOUT 0x4005 +#define DMLERR_INVALIDPARAMETER 0x4006 +#define DMLERR_LOW_MEMORY 0x4007 +#define DMLERR_MEMORY_ERROR 0x4008 +#define DMLERR_NOTPROCESSED 0x4009 +#define DMLERR_NO_CONV_ESTABLISHED 0x400a +#define DMLERR_POKEACKTIMEOUT 0x400b +#define DMLERR_POSTMSG_FAILED 0x400c +#define DMLERR_REENTRANCY 0x400d +#define DMLERR_SERVER_DIED 0x400e +#define DMLERR_SYS_ERROR 0x400f +#define DMLERR_UNADVACKTIMEOUT 0x4010 +#define DMLERR_UNFOUND_QUEUE_ID 0x4011 +#define DMLERR_LAST 0x4011 + HSZ __attribute__((__stdcall__)) DdeCreateStringHandleA(DWORD idInst,LPCSTR psz,int iCodePage); + HSZ __attribute__((__stdcall__)) DdeCreateStringHandleW(DWORD idInst,LPCWSTR psz,int iCodePage); + DWORD __attribute__((__stdcall__)) DdeQueryStringA(DWORD idInst,HSZ hsz,LPSTR psz,DWORD cchMax,int iCodePage); + DWORD __attribute__((__stdcall__)) DdeQueryStringW(DWORD idInst,HSZ hsz,LPWSTR psz,DWORD cchMax,int iCodePage); + WINBOOL __attribute__((__stdcall__)) DdeFreeStringHandle(DWORD idInst,HSZ hsz); + WINBOOL __attribute__((__stdcall__)) DdeKeepStringHandle(DWORD idInst,HSZ hsz); + int __attribute__((__stdcall__)) DdeCmpStringHandles(HSZ hsz1,HSZ hsz2); +#define DdeCreateStringHandle __MINGW_NAME_AW(DdeCreateStringHandle) +#define DdeQueryString __MINGW_NAME_AW(DdeQueryString) + typedef struct tagDDEML_MSG_HOOK_DATA { + UINT_PTR uiLo; + UINT_PTR uiHi; + DWORD cbData; + DWORD Data[8]; + } DDEML_MSG_HOOK_DATA,*PDDEML_MSG_HOOK_DATA; + typedef struct tagMONMSGSTRUCT { + UINT cb; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; + } MONMSGSTRUCT,*PMONMSGSTRUCT; + typedef struct tagMONCBSTRUCT { + UINT cb; + DWORD dwTime; + HANDLE hTask; + DWORD dwRet; + UINT wType; + UINT wFmt; + HCONV hConv; + HSZ hsz1; + HSZ hsz2; + HDDEDATA hData; + ULONG_PTR dwData1; + ULONG_PTR dwData2; + CONVCONTEXT cc; + DWORD cbData; + DWORD Data[8]; + } MONCBSTRUCT,*PMONCBSTRUCT; + typedef struct tagMONHSZSTRUCTA { + UINT cb; + WINBOOL fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + CHAR str[1]; + } MONHSZSTRUCTA,*PMONHSZSTRUCTA; + typedef struct tagMONHSZSTRUCTW { + UINT cb; + WINBOOL fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + WCHAR str[1]; + } MONHSZSTRUCTW,*PMONHSZSTRUCTW; + typedef MONHSZSTRUCTA MONHSZSTRUCT; + typedef PMONHSZSTRUCTA PMONHSZSTRUCT; +#define MH_CREATE 1 +#define MH_KEEP 2 +#define MH_DELETE 3 +#define MH_CLEANUP 4 + typedef struct tagMONERRSTRUCT { + UINT cb; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; + } MONERRSTRUCT,*PMONERRSTRUCT; + typedef struct tagMONLINKSTRUCT { + UINT cb; + DWORD dwTime; + HANDLE hTask; + WINBOOL fEstablished; + WINBOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + WINBOOL fServer; + HCONV hConvServer; + HCONV hConvClient; + } MONLINKSTRUCT,*PMONLINKSTRUCT; + typedef struct tagMONCONVSTRUCT { + UINT cb; + WINBOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; + } MONCONVSTRUCT,*PMONCONVSTRUCT; +#define MAX_MONITORS 4 +#define APPCLASS_MONITOR __MSABI_LONG(0x00000001) +#define XTYP_MONITOR (0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK) +#define MF_HSZ_INFO 0x01000000 +#define MF_SENDMSGS 0x02000000 +#define MF_POSTMSGS 0x04000000 +#define MF_CALLBACKS 0x08000000 +#define MF_ERRORS 0x10000000 +#define MF_LINKS 0x20000000 +#define MF_CONV 0x40000000 +#define MF_MASK 0xFF000000 +#define _DLGSH_INCLUDED_ +#define ctlFirst 0x0400 +#define ctlLast 0x04ff +#define psh1 0x0400 +#define psh2 0x0401 +#define psh3 0x0402 +#define psh4 0x0403 +#define psh5 0x0404 +#define psh6 0x0405 +#define psh7 0x0406 +#define psh8 0x0407 +#define psh9 0x0408 +#define psh10 0x0409 +#define psh11 0x040a +#define psh12 0x040b +#define psh13 0x040c +#define psh14 0x040d +#define psh15 0x040e +#define pshHelp psh15 +#define psh16 0x040f +#define chx1 0x0410 +#define chx2 0x0411 +#define chx3 0x0412 +#define chx4 0x0413 +#define chx5 0x0414 +#define chx6 0x0415 +#define chx7 0x0416 +#define chx8 0x0417 +#define chx9 0x0418 +#define chx10 0x0419 +#define chx11 0x041a +#define chx12 0x041b +#define chx13 0x041c +#define chx14 0x041d +#define chx15 0x041e +#define chx16 0x041f +#define rad1 0x0420 +#define rad2 0x0421 +#define rad3 0x0422 +#define rad4 0x0423 +#define rad5 0x0424 +#define rad6 0x0425 +#define rad7 0x0426 +#define rad8 0x0427 +#define rad9 0x0428 +#define rad10 0x0429 +#define rad11 0x042a +#define rad12 0x042b +#define rad13 0x042c +#define rad14 0x042d +#define rad15 0x042e +#define rad16 0x042f +#define grp1 0x0430 +#define grp2 0x0431 +#define grp3 0x0432 +#define grp4 0x0433 +#define frm1 0x0434 +#define frm2 0x0435 +#define frm3 0x0436 +#define frm4 0x0437 +#define rct1 0x0438 +#define rct2 0x0439 +#define rct3 0x043a +#define rct4 0x043b +#define ico1 0x043c +#define ico2 0x043d +#define ico3 0x043e +#define ico4 0x043f +#define stc1 0x0440 +#define stc2 0x0441 +#define stc3 0x0442 +#define stc4 0x0443 +#define stc5 0x0444 +#define stc6 0x0445 +#define stc7 0x0446 +#define stc8 0x0447 +#define stc9 0x0448 +#define stc10 0x0449 +#define stc11 0x044a +#define stc12 0x044b +#define stc13 0x044c +#define stc14 0x044d +#define stc15 0x044e +#define stc16 0x044f +#define stc17 0x0450 +#define stc18 0x0451 +#define stc19 0x0452 +#define stc20 0x0453 +#define stc21 0x0454 +#define stc22 0x0455 +#define stc23 0x0456 +#define stc24 0x0457 +#define stc25 0x0458 +#define stc26 0x0459 +#define stc27 0x045a +#define stc28 0x045b +#define stc29 0x045c +#define stc30 0x045d +#define stc31 0x045e +#define stc32 0x045f +#define lst1 0x0460 +#define lst2 0x0461 +#define lst3 0x0462 +#define lst4 0x0463 +#define lst5 0x0464 +#define lst6 0x0465 +#define lst7 0x0466 +#define lst8 0x0467 +#define lst9 0x0468 +#define lst10 0x0469 +#define lst11 0x046a +#define lst12 0x046b +#define lst13 0x046c +#define lst14 0x046d +#define lst15 0x046e +#define lst16 0x046f +#define cmb1 0x0470 +#define cmb2 0x0471 +#define cmb3 0x0472 +#define cmb4 0x0473 +#define cmb5 0x0474 +#define cmb6 0x0475 +#define cmb7 0x0476 +#define cmb8 0x0477 +#define cmb9 0x0478 +#define cmb10 0x0479 +#define cmb11 0x047a +#define cmb12 0x047b +#define cmb13 0x047c +#define cmb14 0x047d +#define cmb15 0x047e +#define cmb16 0x047f +#define edt1 0x0480 +#define edt2 0x0481 +#define edt3 0x0482 +#define edt4 0x0483 +#define edt5 0x0484 +#define edt6 0x0485 +#define edt7 0x0486 +#define edt8 0x0487 +#define edt9 0x0488 +#define edt10 0x0489 +#define edt11 0x048a +#define edt12 0x048b +#define edt13 0x048c +#define edt14 0x048d +#define edt15 0x048e +#define edt16 0x048f +#define scr1 0x0490 +#define scr2 0x0491 +#define scr3 0x0492 +#define scr4 0x0493 +#define scr5 0x0494 +#define scr6 0x0495 +#define scr7 0x0496 +#define scr8 0x0497 +#define ctl1 0x04A0 +#define FILEOPENORD 1536 +#define MULTIFILEOPENORD 1537 +#define PRINTDLGORD 1538 +#define PRNSETUPDLGORD 1539 +#define FINDDLGORD 1540 +#define REPLACEDLGORD 1541 +#define FONTDLGORD 1542 +#define FORMATDLGORD31 1543 +#define FORMATDLGORD30 1544 +#define RUNDLGORD 1545 +#define PAGESETUPDLGORD 1546 +#define NEWFILEOPENORD 1547 +#define PRINTDLGEXORD 1549 +#define PAGESETUPDLGORDMOTIF 1550 +#define COLORMGMTDLGORD 1551 +#define NEWFILEOPENV2ORD 1552 +typedef struct tagCRGB { + BYTE bRed; + BYTE bGreen; + BYTE bBlue; + BYTE bExtra; +} CRGB; +#define _LZEXPAND_ +#define LZERROR_BADINHANDLE (-1) +#define LZERROR_BADOUTHANDLE (-2) +#define LZERROR_READ (-3) +#define LZERROR_WRITE (-4) +#define LZERROR_GLOBALLOC (-5) +#define LZERROR_GLOBLOCK (-6) +#define LZERROR_BADVALUE (-7) +#define LZERROR_UNKNOWNALG (-8) +#define GetExpandedName __MINGW_NAME_AW(GetExpandedName) +#define LZOpenFile __MINGW_NAME_AW(LZOpenFile) + INT __attribute__((__stdcall__)) LZStart(void); + void __attribute__((__stdcall__)) LZDone(void); + LONG __attribute__((__stdcall__)) CopyLZFile(INT,INT); + LONG __attribute__((__stdcall__)) LZCopy(INT,INT); + INT __attribute__((__stdcall__)) LZInit(INT); + INT __attribute__((__stdcall__)) GetExpandedNameA(LPSTR,LPSTR); + INT __attribute__((__stdcall__)) GetExpandedNameW(LPWSTR,LPWSTR); + INT __attribute__((__stdcall__)) LZOpenFileA(LPSTR,LPOFSTRUCT,WORD); + INT __attribute__((__stdcall__)) LZOpenFileW(LPWSTR,LPOFSTRUCT,WORD); + LONG __attribute__((__stdcall__)) LZSeek(INT,LONG,INT); + INT __attribute__((__stdcall__)) LZRead(INT,LPSTR,INT); + void __attribute__((__stdcall__)) LZClose(INT); +#define _INC_MMSYSTEM +#define _INC_MMSYSCOM +#pragma pack(push,1) +#define WINMMAPI DECLSPEC_IMPORT +#define _loadds +#define _huge +#define MAXPNAMELEN 32 +#define MAXERRORLENGTH 256 +#define MAX_JOYSTICKOEMVXDNAME 260 +#define MM_MICROSOFT 1 +#define MM_MIDI_MAPPER 1 +#define MM_WAVE_MAPPER 2 +#define MM_SNDBLST_MIDIOUT 3 +#define MM_SNDBLST_MIDIIN 4 +#define MM_SNDBLST_SYNTH 5 +#define MM_SNDBLST_WAVEOUT 6 +#define MM_SNDBLST_WAVEIN 7 +#define MM_ADLIB 9 +#define MM_MPU401_MIDIOUT 10 +#define MM_MPU401_MIDIIN 11 +#define MM_PC_JOYSTICK 12 +typedef UINT MMVERSION; +typedef UINT MMRESULT; +#define _MMRESULT_ +typedef UINT *LPUINT; +typedef struct mmtime_tag { + UINT wType; + union { + DWORD ms; + DWORD sample; + DWORD cb; + DWORD ticks; + struct { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; + BYTE pad[2]; + } smpte; + struct { + DWORD songptrpos; + } midi; + } u; +} MMTIME, *PMMTIME, *NPMMTIME, *LPMMTIME; +#define TIME_MS 0x0001 +#define TIME_SAMPLES 0x0002 +#define TIME_BYTES 0x0004 +#define TIME_SMPTE 0x0008 +#define TIME_MIDI 0x0010 +#define TIME_TICKS 0x0020 +#define MAKEFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) +#define MM_JOY1MOVE 0x3A0 +#define MM_JOY2MOVE 0x3A1 +#define MM_JOY1ZMOVE 0x3A2 +#define MM_JOY2ZMOVE 0x3A3 +#define MM_JOY1BUTTONDOWN 0x3B5 +#define MM_JOY2BUTTONDOWN 0x3B6 +#define MM_JOY1BUTTONUP 0x3B7 +#define MM_JOY2BUTTONUP 0x3B8 +#define MM_MCINOTIFY 0x3B9 +#define MM_WOM_OPEN 0x3BB +#define MM_WOM_CLOSE 0x3BC +#define MM_WOM_DONE 0x3BD +#define MM_WIM_OPEN 0x3BE +#define MM_WIM_CLOSE 0x3BF +#define MM_WIM_DATA 0x3C0 +#define MM_MIM_OPEN 0x3C1 +#define MM_MIM_CLOSE 0x3C2 +#define MM_MIM_DATA 0x3C3 +#define MM_MIM_LONGDATA 0x3C4 +#define MM_MIM_ERROR 0x3C5 +#define MM_MIM_LONGERROR 0x3C6 +#define MM_MOM_OPEN 0x3C7 +#define MM_MOM_CLOSE 0x3C8 +#define MM_MOM_DONE 0x3C9 +#define MM_DRVM_OPEN 0x3D0 +#define MM_DRVM_CLOSE 0x3D1 +#define MM_DRVM_DATA 0x3D2 +#define MM_DRVM_ERROR 0x3D3 +#define MM_STREAM_OPEN 0x3D4 +#define MM_STREAM_CLOSE 0x3D5 +#define MM_STREAM_DONE 0x3D6 +#define MM_STREAM_ERROR 0x3D7 +#define MM_MOM_POSITIONCB 0x3CA +#define MM_MCISIGNAL 0x3CB +#define MM_MIM_MOREDATA 0x3CC +#define MM_MIXM_LINE_CHANGE 0x3D0 +#define MM_MIXM_CONTROL_CHANGE 0x3D1 +#define MMSYSERR_BASE 0 +#define WAVERR_BASE 32 +#define MIDIERR_BASE 64 +#define TIMERR_BASE 96 +#define JOYERR_BASE 160 +#define MCIERR_BASE 256 +#define MIXERR_BASE 1024 +#define MCI_STRING_OFFSET 512 +#define MCI_VD_OFFSET 1024 +#define MCI_CD_OFFSET 1088 +#define MCI_WAVE_OFFSET 1152 +#define MCI_SEQ_OFFSET 1216 +#define MMSYSERR_NOERROR 0 +#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) +#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2) +#define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3) +#define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4) +#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5) +#define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6) +#define MMSYSERR_NOMEM (MMSYSERR_BASE + 7) +#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8) +#define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9) +#define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10) +#define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11) +#define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE + 12) +#define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13) +#define MMSYSERR_BADDB (MMSYSERR_BASE + 14) +#define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE + 15) +#define MMSYSERR_READERROR (MMSYSERR_BASE + 16) +#define MMSYSERR_WRITEERROR (MMSYSERR_BASE + 17) +#define MMSYSERR_DELETEERROR (MMSYSERR_BASE + 18) +#define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE + 19) +#define MMSYSERR_NODRIVERCB (MMSYSERR_BASE + 20) +#define MMSYSERR_MOREDATA (MMSYSERR_BASE + 21) +#define MMSYSERR_LASTERROR (MMSYSERR_BASE + 21) +struct HDRVR__ { int unused; }; typedef struct HDRVR__ *HDRVR; +#define CALLBACK_TYPEMASK __MSABI_LONG(0x00070000) +#define CALLBACK_NULL __MSABI_LONG(0x00000000) +#define CALLBACK_WINDOW __MSABI_LONG(0x00010000) +#define CALLBACK_TASK __MSABI_LONG(0x00020000) +#define CALLBACK_FUNCTION __MSABI_LONG(0x00030000) +#define CALLBACK_THREAD (CALLBACK_TASK) +#define CALLBACK_EVENT __MSABI_LONG(0x00050000) +typedef void (__attribute__((__stdcall__)) DRVCALLBACK)(HDRVR hdrvr, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); +typedef DRVCALLBACK *LPDRVCALLBACK; +typedef DRVCALLBACK *PDRVCALLBACK; +#pragma pack(pop) + +#pragma pack(push,1) +#define _MCIAPI_H_ +#define _MCIERROR_ +typedef DWORD MCIERROR; +#define _MCIDEVICEID_ +typedef UINT MCIDEVICEID; +typedef UINT (__attribute__((__stdcall__)) *YIELDPROC)(MCIDEVICEID mciId, DWORD dwYieldData); +__declspec (dllimport) MCIERROR __attribute__((__stdcall__)) mciSendCommandA(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +__declspec (dllimport) MCIERROR __attribute__((__stdcall__)) mciSendCommandW(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +#define mciSendCommand __MINGW_NAME_AW(mciSendCommand) +__declspec (dllimport) MCIERROR __attribute__((__stdcall__)) mciSendStringA(LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); +__declspec (dllimport) MCIERROR __attribute__((__stdcall__)) mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); +#define mciSendString __MINGW_NAME_AW(mciSendString) +__declspec (dllimport) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDA(LPCSTR pszDevice); +__declspec (dllimport) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDW(LPCWSTR pszDevice); +#define mciGetDeviceID __MINGW_NAME_AW(mciGetDeviceID) +__declspec (dllimport) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDFromElementIDA(DWORD dwElementID, LPCSTR lpstrType); +__declspec (dllimport) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDFromElementIDW(DWORD dwElementID, LPCWSTR lpstrType); +#define mciGetDeviceIDFromElementID __MINGW_NAME_AW(mciGetDeviceIDFromElementID) +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) mciGetErrorStringA(MCIERROR mcierr, LPSTR pszText, UINT cchText); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) mciGetErrorStringW(MCIERROR mcierr, LPWSTR pszText, UINT cchText); +#define mciGetErrorString __MINGW_NAME_AW(mciGetErrorString) +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) mciSetYieldProc(MCIDEVICEID mciId, YIELDPROC fpYieldProc, DWORD dwYieldData); +__declspec (dllimport) HTASK __attribute__((__stdcall__)) mciGetCreatorTask(MCIDEVICEID mciId); +__declspec (dllimport) YIELDPROC __attribute__((__stdcall__)) mciGetYieldProc(MCIDEVICEID mciId, LPDWORD pdwYieldData); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) mciExecute(LPCSTR pszCommand); +#define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1) +#define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3) +#define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5) +#define MCIERR_HARDWARE (MCIERR_BASE + 6) +#define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7) +#define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8) +#define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9) +#define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10) +#define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11) +#define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12) +#define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13) +#define MCIERR_BAD_INTEGER (MCIERR_BASE + 14) +#define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15) +#define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16) +#define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17) +#define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18) +#define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19) +#define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20) +#define MCIERR_INTERNAL (MCIERR_BASE + 21) +#define MCIERR_DRIVER (MCIERR_BASE + 22) +#define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23) +#define MCIERR_MULTIPLE (MCIERR_BASE + 24) +#define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25) +#define MCIERR_OUTOFRANGE (MCIERR_BASE + 26) +#define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28) +#define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30) +#define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31) +#define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32) +#define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33) +#define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34) +#define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35) +#define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36) +#define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37) +#define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38) +#define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39) +#define MCIERR_INVALID_FILE (MCIERR_BASE + 40) +#define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41) +#define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42) +#define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43) +#define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44) +#define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45) +#define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE + 46) +#define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE + 47) +#define MCIERR_FILENAME_REQUIRED (MCIERR_BASE + 48) +#define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE + 49) +#define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE + 50) +#define MCIERR_GET_CD (MCIERR_BASE + 51) +#define MCIERR_SET_CD (MCIERR_BASE + 52) +#define MCIERR_SET_DRIVE (MCIERR_BASE + 53) +#define MCIERR_DEVICE_LENGTH (MCIERR_BASE + 54) +#define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE + 55) +#define MCIERR_NO_INTEGER (MCIERR_BASE + 56) +#define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64) +#define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65) +#define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66) +#define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67) +#define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68) +#define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69) +#define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70) +#define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71) +#define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72) +#define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73) +#define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80) +#define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81) +#define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82) +#define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83) +#define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84) +#define MCIERR_SEQ_TIMER (MCIERR_BASE + 85) +#define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86) +#define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE + 87) +#define MCIERR_NO_WINDOW (MCIERR_BASE + 90) +#define MCIERR_CREATEWINDOW (MCIERR_BASE + 91) +#define MCIERR_FILE_READ (MCIERR_BASE + 92) +#define MCIERR_FILE_WRITE (MCIERR_BASE + 93) +#define MCIERR_NO_IDENTITY (MCIERR_BASE + 94) +#define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256) +#define MCI_FIRST DRV_MCI_FIRST +#define MCI_OPEN 0x0803 +#define MCI_CLOSE 0x0804 +#define MCI_ESCAPE 0x0805 +#define MCI_PLAY 0x0806 +#define MCI_SEEK 0x0807 +#define MCI_STOP 0x0808 +#define MCI_PAUSE 0x0809 +#define MCI_INFO 0x080A +#define MCI_GETDEVCAPS 0x080B +#define MCI_SPIN 0x080C +#define MCI_SET 0x080D +#define MCI_STEP 0x080E +#define MCI_RECORD 0x080F +#define MCI_SYSINFO 0x0810 +#define MCI_BREAK 0x0811 +#define MCI_SAVE 0x0813 +#define MCI_STATUS 0x0814 +#define MCI_CUE 0x0830 +#define MCI_REALIZE 0x0840 +#define MCI_WINDOW 0x0841 +#define MCI_PUT 0x0842 +#define MCI_WHERE 0x0843 +#define MCI_FREEZE 0x0844 +#define MCI_UNFREEZE 0x0845 +#define MCI_LOAD 0x0850 +#define MCI_CUT 0x0851 +#define MCI_COPY 0x0852 +#define MCI_PASTE 0x0853 +#define MCI_UPDATE 0x0854 +#define MCI_RESUME 0x0855 +#define MCI_DELETE 0x0856 +#define MCI_USER_MESSAGES (DRV_MCI_FIRST + 0x400) +#define MCI_LAST 0x0FFF +#define MCI_ALL_DEVICE_ID ((MCIDEVICEID)-1) +#define MCI_DEVTYPE_VCR 513 +#define MCI_DEVTYPE_VIDEODISC 514 +#define MCI_DEVTYPE_OVERLAY 515 +#define MCI_DEVTYPE_CD_AUDIO 516 +#define MCI_DEVTYPE_DAT 517 +#define MCI_DEVTYPE_SCANNER 518 +#define MCI_DEVTYPE_ANIMATION 519 +#define MCI_DEVTYPE_DIGITAL_VIDEO 520 +#define MCI_DEVTYPE_OTHER 521 +#define MCI_DEVTYPE_WAVEFORM_AUDIO 522 +#define MCI_DEVTYPE_SEQUENCER 523 +#define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR +#define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER +#define MCI_DEVTYPE_FIRST_USER 0x1000 +#define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12) +#define MCI_MODE_STOP (MCI_STRING_OFFSET + 13) +#define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14) +#define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15) +#define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16) +#define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17) +#define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18) +#define MCI_FORMAT_MILLISECONDS 0 +#define MCI_FORMAT_HMS 1 +#define MCI_FORMAT_MSF 2 +#define MCI_FORMAT_FRAMES 3 +#define MCI_FORMAT_SMPTE_24 4 +#define MCI_FORMAT_SMPTE_25 5 +#define MCI_FORMAT_SMPTE_30 6 +#define MCI_FORMAT_SMPTE_30DROP 7 +#define MCI_FORMAT_BYTES 8 +#define MCI_FORMAT_SAMPLES 9 +#define MCI_FORMAT_TMSF 10 +#define MCI_MSF_MINUTE(msf) ((BYTE)(msf)) +#define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8)) +#define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16)) +#define MCI_MAKE_MSF(m,s,f) ((DWORD)(((BYTE)(m) | ((WORD)(s)<<8)) | (((DWORD)(BYTE)(f))<<16))) +#define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf)) +#define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8)) +#define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16)) +#define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24)) +#define MCI_MAKE_TMSF(t,m,s,f) ((DWORD)(((BYTE)(t) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s) | ((WORD)(f)<<8))<<16))) +#define MCI_HMS_HOUR(hms) ((BYTE)(hms)) +#define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8)) +#define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16)) +#define MCI_MAKE_HMS(h,m,s) ((DWORD)(((BYTE)(h) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s))<<16))) +#define MCI_NOTIFY_SUCCESSFUL 0x0001 +#define MCI_NOTIFY_SUPERSEDED 0x0002 +#define MCI_NOTIFY_ABORTED 0x0004 +#define MCI_NOTIFY_FAILURE 0x0008 +#define MCI_NOTIFY __MSABI_LONG(0x00000001) +#define MCI_WAIT __MSABI_LONG(0x00000002) +#define MCI_FROM __MSABI_LONG(0x00000004) +#define MCI_TO __MSABI_LONG(0x00000008) +#define MCI_TRACK __MSABI_LONG(0x00000010) +#define MCI_OPEN_SHAREABLE __MSABI_LONG(0x00000100) +#define MCI_OPEN_ELEMENT __MSABI_LONG(0x00000200) +#define MCI_OPEN_ALIAS __MSABI_LONG(0x00000400) +#define MCI_OPEN_ELEMENT_ID __MSABI_LONG(0x00000800) +#define MCI_OPEN_TYPE_ID __MSABI_LONG(0x00001000) +#define MCI_OPEN_TYPE __MSABI_LONG(0x00002000) +#define MCI_SEEK_TO_START __MSABI_LONG(0x00000100) +#define MCI_SEEK_TO_END __MSABI_LONG(0x00000200) +#define MCI_STATUS_ITEM __MSABI_LONG(0x00000100) +#define MCI_STATUS_START __MSABI_LONG(0x00000200) +#define MCI_STATUS_LENGTH __MSABI_LONG(0x00000001) +#define MCI_STATUS_POSITION __MSABI_LONG(0x00000002) +#define MCI_STATUS_NUMBER_OF_TRACKS __MSABI_LONG(0x00000003) +#define MCI_STATUS_MODE __MSABI_LONG(0x00000004) +#define MCI_STATUS_MEDIA_PRESENT __MSABI_LONG(0x00000005) +#define MCI_STATUS_TIME_FORMAT __MSABI_LONG(0x00000006) +#define MCI_STATUS_READY __MSABI_LONG(0x00000007) +#define MCI_STATUS_CURRENT_TRACK __MSABI_LONG(0x00000008) +#define MCI_INFO_PRODUCT __MSABI_LONG(0x00000100) +#define MCI_INFO_FILE __MSABI_LONG(0x00000200) +#define MCI_INFO_MEDIA_UPC __MSABI_LONG(0x00000400) +#define MCI_INFO_MEDIA_IDENTITY __MSABI_LONG(0x00000800) +#define MCI_INFO_NAME __MSABI_LONG(0x00001000) +#define MCI_INFO_COPYRIGHT __MSABI_LONG(0x00002000) +#define MCI_GETDEVCAPS_ITEM __MSABI_LONG(0x00000100) +#define MCI_GETDEVCAPS_CAN_RECORD __MSABI_LONG(0x00000001) +#define MCI_GETDEVCAPS_HAS_AUDIO __MSABI_LONG(0x00000002) +#define MCI_GETDEVCAPS_HAS_VIDEO __MSABI_LONG(0x00000003) +#define MCI_GETDEVCAPS_DEVICE_TYPE __MSABI_LONG(0x00000004) +#define MCI_GETDEVCAPS_USES_FILES __MSABI_LONG(0x00000005) +#define MCI_GETDEVCAPS_COMPOUND_DEVICE __MSABI_LONG(0x00000006) +#define MCI_GETDEVCAPS_CAN_EJECT __MSABI_LONG(0x00000007) +#define MCI_GETDEVCAPS_CAN_PLAY __MSABI_LONG(0x00000008) +#define MCI_GETDEVCAPS_CAN_SAVE __MSABI_LONG(0x00000009) +#define MCI_SYSINFO_QUANTITY __MSABI_LONG(0x00000100) +#define MCI_SYSINFO_OPEN __MSABI_LONG(0x00000200) +#define MCI_SYSINFO_NAME __MSABI_LONG(0x00000400) +#define MCI_SYSINFO_INSTALLNAME __MSABI_LONG(0x00000800) +#define MCI_SET_DOOR_OPEN __MSABI_LONG(0x00000100) +#define MCI_SET_DOOR_CLOSED __MSABI_LONG(0x00000200) +#define MCI_SET_TIME_FORMAT __MSABI_LONG(0x00000400) +#define MCI_SET_AUDIO __MSABI_LONG(0x00000800) +#define MCI_SET_VIDEO __MSABI_LONG(0x00001000) +#define MCI_SET_ON __MSABI_LONG(0x00002000) +#define MCI_SET_OFF __MSABI_LONG(0x00004000) +#define MCI_SET_AUDIO_ALL __MSABI_LONG(0x00000000) +#define MCI_SET_AUDIO_LEFT __MSABI_LONG(0x00000001) +#define MCI_SET_AUDIO_RIGHT __MSABI_LONG(0x00000002) +#define MCI_BREAK_KEY __MSABI_LONG(0x00000100) +#define MCI_BREAK_HWND __MSABI_LONG(0x00000200) +#define MCI_BREAK_OFF __MSABI_LONG(0x00000400) +#define MCI_RECORD_INSERT __MSABI_LONG(0x00000100) +#define MCI_RECORD_OVERWRITE __MSABI_LONG(0x00000200) +#define MCI_SAVE_FILE __MSABI_LONG(0x00000100) +#define MCI_LOAD_FILE __MSABI_LONG(0x00000100) +typedef struct tagMCI_GENERIC_PARMS { + DWORD_PTR dwCallback; +} MCI_GENERIC_PARMS, *PMCI_GENERIC_PARMS, *LPMCI_GENERIC_PARMS; +typedef struct tagMCI_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} MCI_OPEN_PARMSA, *PMCI_OPEN_PARMSA, *LPMCI_OPEN_PARMSA; +typedef struct tagMCI_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; +} MCI_OPEN_PARMSW, *PMCI_OPEN_PARMSW, *LPMCI_OPEN_PARMSW; +typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS; +typedef PMCI_OPEN_PARMSA PMCI_OPEN_PARMS; +typedef LPMCI_OPEN_PARMSA LPMCI_OPEN_PARMS; +typedef struct tagMCI_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_PLAY_PARMS, *PMCI_PLAY_PARMS, *LPMCI_PLAY_PARMS; +typedef struct tagMCI_SEEK_PARMS { + DWORD_PTR dwCallback; + DWORD dwTo; +} MCI_SEEK_PARMS, *PMCI_SEEK_PARMS, *LPMCI_SEEK_PARMS; +typedef struct tagMCI_STATUS_PARMS { + DWORD_PTR dwCallback; + DWORD_PTR dwReturn; + DWORD dwItem; + DWORD dwTrack; +} MCI_STATUS_PARMS, *PMCI_STATUS_PARMS, *LPMCI_STATUS_PARMS; +typedef struct tagMCI_INFO_PARMSA { + DWORD_PTR dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; +} MCI_INFO_PARMSA, *LPMCI_INFO_PARMSA; +typedef struct tagMCI_INFO_PARMSW { + DWORD_PTR dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; +} MCI_INFO_PARMSW, *LPMCI_INFO_PARMSW; +typedef MCI_INFO_PARMSA MCI_INFO_PARMS; +typedef LPMCI_INFO_PARMSA LPMCI_INFO_PARMS; +typedef struct tagMCI_GETDEVCAPS_PARMS { + DWORD_PTR dwCallback; + DWORD dwReturn; + DWORD dwItem; +} MCI_GETDEVCAPS_PARMS, *PMCI_GETDEVCAPS_PARMS, *LPMCI_GETDEVCAPS_PARMS; +typedef struct tagMCI_SYSINFO_PARMSA { + DWORD_PTR dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} MCI_SYSINFO_PARMSA, *PMCI_SYSINFO_PARMSA, *LPMCI_SYSINFO_PARMSA; +typedef struct tagMCI_SYSINFO_PARMSW { + DWORD_PTR dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} MCI_SYSINFO_PARMSW, *PMCI_SYSINFO_PARMSW, *LPMCI_SYSINFO_PARMSW; +typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS; +typedef PMCI_SYSINFO_PARMSA PMCI_SYSINFO_PARMS; +typedef LPMCI_SYSINFO_PARMSA LPMCI_SYSINFO_PARMS; +typedef struct tagMCI_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} MCI_SET_PARMS, *PMCI_SET_PARMS, *LPMCI_SET_PARMS; +typedef struct tagMCI_BREAK_PARMS { + DWORD_PTR dwCallback; + int nVirtKey; + HWND hwndBreak; +} MCI_BREAK_PARMS, *PMCI_BREAK_PARMS, *LPMCI_BREAK_PARMS; +typedef struct tagMCI_SAVE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; +} MCI_SAVE_PARMSA, *PMCI_SAVE_PARMSA, *LPMCI_SAVE_PARMSA; +typedef struct tagMCI_SAVE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; +} MCI_SAVE_PARMSW, *PMCI_SAVE_PARMSW, *LPMCI_SAVE_PARMSW; +typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS; +typedef PMCI_SAVE_PARMSA PMCI_SAVE_PARMS; +typedef LPMCI_SAVE_PARMSA LPMCI_SAVE_PARMS; +typedef struct tagMCI_LOAD_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; +} MCI_LOAD_PARMSA, *PMCI_LOAD_PARMSA, *LPMCI_LOAD_PARMSA; +typedef struct tagMCI_LOAD_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; +} MCI_LOAD_PARMSW, *PMCI_LOAD_PARMSW, *LPMCI_LOAD_PARMSW; +typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS; +typedef PMCI_LOAD_PARMSA PMCI_LOAD_PARMS; +typedef LPMCI_LOAD_PARMSA LPMCI_LOAD_PARMS; +typedef struct tagMCI_RECORD_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_RECORD_PARMS, *LPMCI_RECORD_PARMS; +#define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1) +#define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 2) +#define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 3) +#define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 4) +#define MCI_VD_FORMAT_TRACK 0x4001 +#define MCI_VD_PLAY_REVERSE __MSABI_LONG(0x00010000) +#define MCI_VD_PLAY_FAST __MSABI_LONG(0x00020000) +#define MCI_VD_PLAY_SPEED __MSABI_LONG(0x00040000) +#define MCI_VD_PLAY_SCAN __MSABI_LONG(0x00080000) +#define MCI_VD_PLAY_SLOW __MSABI_LONG(0x00100000) +#define MCI_VD_SEEK_REVERSE __MSABI_LONG(0x00010000) +#define MCI_VD_STATUS_SPEED __MSABI_LONG(0x00004002) +#define MCI_VD_STATUS_FORWARD __MSABI_LONG(0x00004003) +#define MCI_VD_STATUS_MEDIA_TYPE __MSABI_LONG(0x00004004) +#define MCI_VD_STATUS_SIDE __MSABI_LONG(0x00004005) +#define MCI_VD_STATUS_DISC_SIZE __MSABI_LONG(0x00004006) +#define MCI_VD_GETDEVCAPS_CLV __MSABI_LONG(0x00010000) +#define MCI_VD_GETDEVCAPS_CAV __MSABI_LONG(0x00020000) +#define MCI_VD_SPIN_UP __MSABI_LONG(0x00010000) +#define MCI_VD_SPIN_DOWN __MSABI_LONG(0x00020000) +#define MCI_VD_GETDEVCAPS_CAN_REVERSE __MSABI_LONG(0x00004002) +#define MCI_VD_GETDEVCAPS_FAST_RATE __MSABI_LONG(0x00004003) +#define MCI_VD_GETDEVCAPS_SLOW_RATE __MSABI_LONG(0x00004004) +#define MCI_VD_GETDEVCAPS_NORMAL_RATE __MSABI_LONG(0x00004005) +#define MCI_VD_STEP_FRAMES __MSABI_LONG(0x00010000) +#define MCI_VD_STEP_REVERSE __MSABI_LONG(0x00020000) +#define MCI_VD_ESCAPE_STRING __MSABI_LONG(0x00000100) +typedef struct tagMCI_VD_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} MCI_VD_PLAY_PARMS, *PMCI_VD_PLAY_PARMS, *LPMCI_VD_PLAY_PARMS; +typedef struct tagMCI_VD_STEP_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrames; +} MCI_VD_STEP_PARMS, *PMCI_VD_STEP_PARMS, *LPMCI_VD_STEP_PARMS; +typedef struct tagMCI_VD_ESCAPE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpstrCommand; +} MCI_VD_ESCAPE_PARMSA, *PMCI_VD_ESCAPE_PARMSA, *LPMCI_VD_ESCAPE_PARMSA; +typedef struct tagMCI_VD_ESCAPE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpstrCommand; +} MCI_VD_ESCAPE_PARMSW, *PMCI_VD_ESCAPE_PARMSW, *LPMCI_VD_ESCAPE_PARMSW; +typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS; +typedef PMCI_VD_ESCAPE_PARMSA PMCI_VD_ESCAPE_PARMS; +typedef LPMCI_VD_ESCAPE_PARMSA LPMCI_VD_ESCAPE_PARMS; +#define MCI_CDA_STATUS_TYPE_TRACK __MSABI_LONG(0x00004001) +#define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET + 0) +#define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET + 1) +#define MCI_WAVE_PCM (MCI_WAVE_OFFSET + 0) +#define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET + 1) +#define MCI_WAVE_OPEN_BUFFER __MSABI_LONG(0x00010000) +#define MCI_WAVE_SET_FORMATTAG __MSABI_LONG(0x00010000) +#define MCI_WAVE_SET_CHANNELS __MSABI_LONG(0x00020000) +#define MCI_WAVE_SET_SAMPLESPERSEC __MSABI_LONG(0x00040000) +#define MCI_WAVE_SET_AVGBYTESPERSEC __MSABI_LONG(0x00080000) +#define MCI_WAVE_SET_BLOCKALIGN __MSABI_LONG(0x00100000) +#define MCI_WAVE_SET_BITSPERSAMPLE __MSABI_LONG(0x00200000) +#define MCI_WAVE_INPUT __MSABI_LONG(0x00400000) +#define MCI_WAVE_OUTPUT __MSABI_LONG(0x00800000) +#define MCI_WAVE_STATUS_FORMATTAG __MSABI_LONG(0x00004001) +#define MCI_WAVE_STATUS_CHANNELS __MSABI_LONG(0x00004002) +#define MCI_WAVE_STATUS_SAMPLESPERSEC __MSABI_LONG(0x00004003) +#define MCI_WAVE_STATUS_AVGBYTESPERSEC __MSABI_LONG(0x00004004) +#define MCI_WAVE_STATUS_BLOCKALIGN __MSABI_LONG(0x00004005) +#define MCI_WAVE_STATUS_BITSPERSAMPLE __MSABI_LONG(0x00004006) +#define MCI_WAVE_STATUS_LEVEL __MSABI_LONG(0x00004007) +#define MCI_WAVE_SET_ANYINPUT __MSABI_LONG(0x04000000) +#define MCI_WAVE_SET_ANYOUTPUT __MSABI_LONG(0x08000000) +#define MCI_WAVE_GETDEVCAPS_INPUTS __MSABI_LONG(0x00004001) +#define MCI_WAVE_GETDEVCAPS_OUTPUTS __MSABI_LONG(0x00004002) +typedef struct tagMCI_WAVE_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} MCI_WAVE_OPEN_PARMSA, *PMCI_WAVE_OPEN_PARMSA, *LPMCI_WAVE_OPEN_PARMSA; +typedef struct tagMCI_WAVE_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwBufferSeconds; +} MCI_WAVE_OPEN_PARMSW, *PMCI_WAVE_OPEN_PARMSW, *LPMCI_WAVE_OPEN_PARMSW; +typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS; +typedef PMCI_WAVE_OPEN_PARMSA PMCI_WAVE_OPEN_PARMS; +typedef LPMCI_WAVE_OPEN_PARMSA LPMCI_WAVE_OPEN_PARMS; +typedef struct tagMCI_WAVE_DELETE_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_WAVE_DELETE_PARMS, *PMCI_WAVE_DELETE_PARMS, *LPMCI_WAVE_DELETE_PARMS; +typedef struct tagMCI_WAVE_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + UINT wInput; + UINT wOutput; + WORD wFormatTag; + WORD wReserved2; + WORD nChannels; + WORD wReserved3; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wReserved4; + WORD wBitsPerSample; + WORD wReserved5; +} MCI_WAVE_SET_PARMS, *PMCI_WAVE_SET_PARMS, *LPMCI_WAVE_SET_PARMS; +#define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET) +#define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET) +#define MCI_SEQ_DIV_SMPTE_25 (2 + MCI_SEQ_OFFSET) +#define MCI_SEQ_DIV_SMPTE_30DROP (3 + MCI_SEQ_OFFSET) +#define MCI_SEQ_DIV_SMPTE_30 (4 + MCI_SEQ_OFFSET) +#define MCI_SEQ_FORMAT_SONGPTR 0x4001 +#define MCI_SEQ_FILE 0x4002 +#define MCI_SEQ_MIDI 0x4003 +#define MCI_SEQ_SMPTE 0x4004 +#define MCI_SEQ_NONE 65533 +#define MCI_SEQ_MAPPER 65535 +#define MCI_SEQ_STATUS_TEMPO __MSABI_LONG(0x00004002) +#define MCI_SEQ_STATUS_PORT __MSABI_LONG(0x00004003) +#define MCI_SEQ_STATUS_SLAVE __MSABI_LONG(0x00004007) +#define MCI_SEQ_STATUS_MASTER __MSABI_LONG(0x00004008) +#define MCI_SEQ_STATUS_OFFSET __MSABI_LONG(0x00004009) +#define MCI_SEQ_STATUS_DIVTYPE __MSABI_LONG(0x0000400A) +#define MCI_SEQ_STATUS_NAME __MSABI_LONG(0x0000400B) +#define MCI_SEQ_STATUS_COPYRIGHT __MSABI_LONG(0x0000400C) +#define MCI_SEQ_SET_TEMPO __MSABI_LONG(0x00010000) +#define MCI_SEQ_SET_PORT __MSABI_LONG(0x00020000) +#define MCI_SEQ_SET_SLAVE __MSABI_LONG(0x00040000) +#define MCI_SEQ_SET_MASTER __MSABI_LONG(0x00080000) +#define MCI_SEQ_SET_OFFSET __MSABI_LONG(0x01000000) +typedef struct tagMCI_SEQ_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} MCI_SEQ_SET_PARMS, *PMCI_SEQ_SET_PARMS, *LPMCI_SEQ_SET_PARMS; +#define MCI_ANIM_OPEN_WS __MSABI_LONG(0x00010000) +#define MCI_ANIM_OPEN_PARENT __MSABI_LONG(0x00020000) +#define MCI_ANIM_OPEN_NOSTATIC __MSABI_LONG(0x00040000) +#define MCI_ANIM_PLAY_SPEED __MSABI_LONG(0x00010000) +#define MCI_ANIM_PLAY_REVERSE __MSABI_LONG(0x00020000) +#define MCI_ANIM_PLAY_FAST __MSABI_LONG(0x00040000) +#define MCI_ANIM_PLAY_SLOW __MSABI_LONG(0x00080000) +#define MCI_ANIM_PLAY_SCAN __MSABI_LONG(0x00100000) +#define MCI_ANIM_STEP_REVERSE __MSABI_LONG(0x00010000) +#define MCI_ANIM_STEP_FRAMES __MSABI_LONG(0x00020000) +#define MCI_ANIM_STATUS_SPEED __MSABI_LONG(0x00004001) +#define MCI_ANIM_STATUS_FORWARD __MSABI_LONG(0x00004002) +#define MCI_ANIM_STATUS_HWND __MSABI_LONG(0x00004003) +#define MCI_ANIM_STATUS_HPAL __MSABI_LONG(0x00004004) +#define MCI_ANIM_STATUS_STRETCH __MSABI_LONG(0x00004005) +#define MCI_ANIM_INFO_TEXT __MSABI_LONG(0x00010000) +#define MCI_ANIM_GETDEVCAPS_CAN_REVERSE __MSABI_LONG(0x00004001) +#define MCI_ANIM_GETDEVCAPS_FAST_RATE __MSABI_LONG(0x00004002) +#define MCI_ANIM_GETDEVCAPS_SLOW_RATE __MSABI_LONG(0x00004003) +#define MCI_ANIM_GETDEVCAPS_NORMAL_RATE __MSABI_LONG(0x00004004) +#define MCI_ANIM_GETDEVCAPS_PALETTES __MSABI_LONG(0x00004006) +#define MCI_ANIM_GETDEVCAPS_CAN_STRETCH __MSABI_LONG(0x00004007) +#define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS __MSABI_LONG(0x00004008) +#define MCI_ANIM_REALIZE_NORM __MSABI_LONG(0x00010000) +#define MCI_ANIM_REALIZE_BKGD __MSABI_LONG(0x00020000) +#define MCI_ANIM_WINDOW_HWND __MSABI_LONG(0x00010000) +#define MCI_ANIM_WINDOW_STATE __MSABI_LONG(0x00040000) +#define MCI_ANIM_WINDOW_TEXT __MSABI_LONG(0x00080000) +#define MCI_ANIM_WINDOW_ENABLE_STRETCH __MSABI_LONG(0x00100000) +#define MCI_ANIM_WINDOW_DISABLE_STRETCH __MSABI_LONG(0x00200000) +#define MCI_ANIM_WINDOW_DEFAULT __MSABI_LONG(0x00000000) +#define MCI_ANIM_RECT __MSABI_LONG(0x00010000) +#define MCI_ANIM_PUT_SOURCE __MSABI_LONG(0x00020000) +#define MCI_ANIM_PUT_DESTINATION __MSABI_LONG(0x00040000) +#define MCI_ANIM_WHERE_SOURCE __MSABI_LONG(0x00020000) +#define MCI_ANIM_WHERE_DESTINATION __MSABI_LONG(0x00040000) +#define MCI_ANIM_UPDATE_HDC __MSABI_LONG(0x00020000) +typedef struct tagMCI_ANIM_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_ANIM_OPEN_PARMSA, *PMCI_ANIM_OPEN_PARMSA, *LPMCI_ANIM_OPEN_PARMSA; +typedef struct tagMCI_ANIM_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_ANIM_OPEN_PARMSW, *PMCI_ANIM_OPEN_PARMSW, *LPMCI_ANIM_OPEN_PARMSW; +typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS; +typedef PMCI_ANIM_OPEN_PARMSA PMCI_ANIM_OPEN_PARMS; +typedef LPMCI_ANIM_OPEN_PARMSA LPMCI_ANIM_OPEN_PARMS; +typedef struct tagMCI_ANIM_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} MCI_ANIM_PLAY_PARMS, *PMCI_ANIM_PLAY_PARMS, *LPMCI_ANIM_PLAY_PARMS; +typedef struct tagMCI_ANIM_STEP_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrames; +} MCI_ANIM_STEP_PARMS, *PMCI_ANIM_STEP_PARMS, *LPMCI_ANIM_STEP_PARMS; +typedef struct tagMCI_ANIM_WINDOW_PARMSA { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} MCI_ANIM_WINDOW_PARMSA, *PMCI_ANIM_WINDOW_PARMSA, *LPMCI_ANIM_WINDOW_PARMSA; +typedef struct tagMCI_ANIM_WINDOW_PARMSW { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} MCI_ANIM_WINDOW_PARMSW, *PMCI_ANIM_WINDOW_PARMSW, *LPMCI_ANIM_WINDOW_PARMSW; +typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS; +typedef PMCI_ANIM_WINDOW_PARMSA PMCI_ANIM_WINDOW_PARMS; +typedef LPMCI_ANIM_WINDOW_PARMSA LPMCI_ANIM_WINDOW_PARMS; +typedef struct tagMCI_ANIM_RECT_PARMS { + DWORD_PTR dwCallback; + RECT rc; +} MCI_ANIM_RECT_PARMS, *PMCI_ANIM_RECT_PARMS, *LPMCI_ANIM_RECT_PARMS; +typedef struct tagMCI_ANIM_UPDATE_PARMS { + DWORD_PTR dwCallback; + RECT rc; + HDC hDC; +} MCI_ANIM_UPDATE_PARMS, *PMCI_ANIM_UPDATE_PARMS, *LPMCI_ANIM_UPDATE_PARMS; +#define MCI_OVLY_OPEN_WS __MSABI_LONG(0x00010000) +#define MCI_OVLY_OPEN_PARENT __MSABI_LONG(0x00020000) +#define MCI_OVLY_STATUS_HWND __MSABI_LONG(0x00004001) +#define MCI_OVLY_STATUS_STRETCH __MSABI_LONG(0x00004002) +#define MCI_OVLY_INFO_TEXT __MSABI_LONG(0x00010000) +#define MCI_OVLY_GETDEVCAPS_CAN_STRETCH __MSABI_LONG(0x00004001) +#define MCI_OVLY_GETDEVCAPS_CAN_FREEZE __MSABI_LONG(0x00004002) +#define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS __MSABI_LONG(0x00004003) +#define MCI_OVLY_WINDOW_HWND __MSABI_LONG(0x00010000) +#define MCI_OVLY_WINDOW_STATE __MSABI_LONG(0x00040000) +#define MCI_OVLY_WINDOW_TEXT __MSABI_LONG(0x00080000) +#define MCI_OVLY_WINDOW_ENABLE_STRETCH __MSABI_LONG(0x00100000) +#define MCI_OVLY_WINDOW_DISABLE_STRETCH __MSABI_LONG(0x00200000) +#define MCI_OVLY_WINDOW_DEFAULT __MSABI_LONG(0x00000000) +#define MCI_OVLY_RECT __MSABI_LONG(0x00010000) +#define MCI_OVLY_PUT_SOURCE __MSABI_LONG(0x00020000) +#define MCI_OVLY_PUT_DESTINATION __MSABI_LONG(0x00040000) +#define MCI_OVLY_PUT_FRAME __MSABI_LONG(0x00080000) +#define MCI_OVLY_PUT_VIDEO __MSABI_LONG(0x00100000) +#define MCI_OVLY_WHERE_SOURCE __MSABI_LONG(0x00020000) +#define MCI_OVLY_WHERE_DESTINATION __MSABI_LONG(0x00040000) +#define MCI_OVLY_WHERE_FRAME __MSABI_LONG(0x00080000) +#define MCI_OVLY_WHERE_VIDEO __MSABI_LONG(0x00100000) +typedef struct tagMCI_OVLY_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_OVLY_OPEN_PARMSA, *PMCI_OVLY_OPEN_PARMSA, *LPMCI_OVLY_OPEN_PARMSA; +typedef struct tagMCI_OVLY_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_OVLY_OPEN_PARMSW, *PMCI_OVLY_OPEN_PARMSW, *LPMCI_OVLY_OPEN_PARMSW; +typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS; +typedef PMCI_OVLY_OPEN_PARMSA PMCI_OVLY_OPEN_PARMS; +typedef LPMCI_OVLY_OPEN_PARMSA LPMCI_OVLY_OPEN_PARMS; +typedef struct tagMCI_OVLY_WINDOW_PARMSA { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} MCI_OVLY_WINDOW_PARMSA, *PMCI_OVLY_WINDOW_PARMSA, *LPMCI_OVLY_WINDOW_PARMSA; +typedef struct tagMCI_OVLY_WINDOW_PARMSW { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} MCI_OVLY_WINDOW_PARMSW, *PMCI_OVLY_WINDOW_PARMSW, *LPMCI_OVLY_WINDOW_PARMSW; +typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS; +typedef PMCI_OVLY_WINDOW_PARMSA PMCI_OVLY_WINDOW_PARMS; +typedef LPMCI_OVLY_WINDOW_PARMSA LPMCI_OVLY_WINDOW_PARMS; +typedef struct tagMCI_OVLY_RECT_PARMS { + DWORD_PTR dwCallback; + RECT rc; +} MCI_OVLY_RECT_PARMS, *PMCI_OVLY_RECT_PARMS, *LPMCI_OVLY_RECT_PARMS; +typedef struct tagMCI_OVLY_SAVE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; + RECT rc; +} MCI_OVLY_SAVE_PARMSA, *PMCI_OVLY_SAVE_PARMSA, *LPMCI_OVLY_SAVE_PARMSA; +typedef struct tagMCI_OVLY_SAVE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; + RECT rc; +} MCI_OVLY_SAVE_PARMSW, *PMCI_OVLY_SAVE_PARMSW, *LPMCI_OVLY_SAVE_PARMSW; +typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS; +typedef PMCI_OVLY_SAVE_PARMSA PMCI_OVLY_SAVE_PARMS; +typedef LPMCI_OVLY_SAVE_PARMSA LPMCI_OVLY_SAVE_PARMS; +typedef struct tagMCI_OVLY_LOAD_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; + RECT rc; +} MCI_OVLY_LOAD_PARMSA, *PMCI_OVLY_LOAD_PARMSA, *LPMCI_OVLY_LOAD_PARMSA; +typedef struct tagMCI_OVLY_LOAD_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; + RECT rc; +} MCI_OVLY_LOAD_PARMSW, *PMCI_OVLY_LOAD_PARMSW, *LPMCI_OVLY_LOAD_PARMSW; +typedef MCI_OVLY_LOAD_PARMSA MCI_OVLY_LOAD_PARMS; +typedef PMCI_OVLY_LOAD_PARMSA PMCI_OVLY_LOAD_PARMS; +typedef LPMCI_OVLY_LOAD_PARMSA LPMCI_OVLY_LOAD_PARMS; +DWORD_PTR __attribute__((__stdcall__)) mciGetDriverData(MCIDEVICEID wDeviceID); +UINT __attribute__((__stdcall__)) mciLoadCommandResource(HANDLE hInstance, LPCWSTR lpResName, UINT wType); +WINBOOL __attribute__((__stdcall__)) mciSetDriverData(MCIDEVICEID wDeviceID, DWORD_PTR dwData); +UINT __attribute__((__stdcall__)) mciDriverYield(MCIDEVICEID wDeviceID); +WINBOOL __attribute__((__stdcall__)) mciDriverNotify(HANDLE hwndCallback, MCIDEVICEID wDeviceID, UINT uStatus); +WINBOOL __attribute__((__stdcall__)) mciFreeCommandResource(UINT wTable); +#define _MMISCAPI_H_ +typedef struct DRVCONFIGINFOEX { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; + DWORD dnDevNode; +} DRVCONFIGINFOEX, *PDRVCONFIGINFOEX, *NPDRVCONFIGINFOEX, *LPDRVCONFIGINFOEX; +#define DRV_LOAD 0x0001 +#define DRV_ENABLE 0x0002 +#define DRV_OPEN 0x0003 +#define DRV_CLOSE 0x0004 +#define DRV_DISABLE 0x0005 +#define DRV_FREE 0x0006 +#define DRV_CONFIGURE 0x0007 +#define DRV_QUERYCONFIGURE 0x0008 +#define DRV_INSTALL 0x0009 +#define DRV_REMOVE 0x000A +#define DRV_EXITSESSION 0x000B +#define DRV_POWER 0x000F +#define DRV_RESERVED 0x0800 +#define DRV_USER 0x4000 +typedef struct tagDRVCONFIGINFO { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; +} DRVCONFIGINFO, *PDRVCONFIGINFO, *NPDRVCONFIGINFO, *LPDRVCONFIGINFO; +#define DRVCNF_CANCEL 0x0000 +#define DRVCNF_OK 0x0001 +#define DRVCNF_RESTART 0x0002 +typedef LRESULT (__attribute__((__stdcall__))* DRIVERPROC)(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM); +__declspec (dllimport) LRESULT __attribute__((__stdcall__)) CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2); +__declspec (dllimport) HDRVR __attribute__((__stdcall__)) OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2); +__declspec (dllimport) LRESULT __attribute__((__stdcall__)) SendDriverMessage(HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2); +__declspec (dllimport) HMODULE __attribute__((__stdcall__)) DrvGetModuleHandle(HDRVR hDriver); +__declspec (dllimport) HMODULE __attribute__((__stdcall__)) GetDriverModuleHandle(HDRVR hDriver); +__declspec (dllimport) LRESULT __attribute__((__stdcall__)) DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2); +#define DRV_CANCEL DRVCNF_CANCEL +#define DRV_OK DRVCNF_OK +#define DRV_RESTART DRVCNF_RESTART +#define DRV_MCI_FIRST DRV_RESERVED +#define DRV_MCI_LAST (DRV_RESERVED + 0xFFF) +WINBOOL __attribute__((__stdcall__)) DriverCallback(DWORD_PTR dwCallback, DWORD dwFlags, HDRVR hDevice, DWORD dwMsg, DWORD_PTR dwUser, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +LONG __attribute__((__stdcall__)) sndOpenSound(LPCWSTR EventName, LPCWSTR AppName, INT32 Flags, PHANDLE FileHandle); +typedef DWORD (__attribute__((__stdcall__)) *DRIVERMSGPROC)(DWORD, DWORD, DWORD_PTR, DWORD_PTR, DWORD_PTR); +UINT __attribute__((__stdcall__)) mmDrvInstall(HDRVR hDriver, LPCWSTR wszDrvEntry, DRIVERMSGPROC drvMessage, UINT wFlags); +#define MMIOERR_BASE 256 +#define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1) +#define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2) +#define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3) +#define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4) +#define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5) +#define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6) +#define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7) +#define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8) +#define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9) +#define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10) +#define MMIOERR_PATHNOTFOUND (MMIOERR_BASE + 11) +#define MMIOERR_ACCESSDENIED (MMIOERR_BASE + 12) +#define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13) +#define MMIOERR_NETWORKERROR (MMIOERR_BASE + 14) +#define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15) +#define MMIOERR_INVALIDFILE (MMIOERR_BASE + 16) +#define CFSEPCHAR '+' +typedef DWORD FOURCC; +typedef char *HPSTR; +struct HMMIO__ { int unused; }; typedef struct HMMIO__ *HMMIO; +typedef LRESULT (__attribute__((__stdcall__)) MMIOPROC)(LPSTR lpmmioinfo, UINT uMsg, LPARAM lParam1, LPARAM lParam2); +typedef MMIOPROC *LPMMIOPROC; +typedef struct _MMIOINFO { + DWORD dwFlags; + FOURCC fccIOProc; + LPMMIOPROC pIOProc; + UINT wErrorRet; + HTASK htask; + LONG cchBuffer; + HPSTR pchBuffer; + HPSTR pchNext; + HPSTR pchEndRead; + HPSTR pchEndWrite; + LONG lBufOffset; + LONG lDiskOffset; + DWORD adwInfo[3]; + DWORD dwReserved1; + DWORD dwReserved2; + HMMIO hmmio; +} MMIOINFO, *PMMIOINFO, *NPMMIOINFO, *LPMMIOINFO; +typedef const MMIOINFO *LPCMMIOINFO; +typedef struct _MMCKINFO { + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} MMCKINFO, *PMMCKINFO, *NPMMCKINFO, *LPMMCKINFO; +typedef const MMCKINFO *LPCMMCKINFO; +#define MMIO_RWMODE 0x00000003 +#define MMIO_SHAREMODE 0x00000070 +#define MMIO_CREATE 0x00001000 +#define MMIO_PARSE 0x00000100 +#define MMIO_DELETE 0x00000200 +#define MMIO_EXIST 0x00004000 +#define MMIO_ALLOCBUF 0x00010000 +#define MMIO_GETTEMP 0x00020000 +#define MMIO_DIRTY 0x10000000 +#define MMIO_READ 0x00000000 +#define MMIO_WRITE 0x00000001 +#define MMIO_READWRITE 0x00000002 +#define MMIO_COMPAT 0x00000000 +#define MMIO_EXCLUSIVE 0x00000010 +#define MMIO_DENYWRITE 0x00000020 +#define MMIO_DENYREAD 0x00000030 +#define MMIO_DENYNONE 0x00000040 +#define MMIO_FHOPEN 0x0010 +#define MMIO_EMPTYBUF 0x0010 +#define MMIO_TOUPPER 0x0010 +#define MMIO_INSTALLPROC 0x00010000 +#define MMIO_GLOBALPROC 0x10000000 +#define MMIO_REMOVEPROC 0x00020000 +#define MMIO_UNICODEPROC 0x01000000 +#define MMIO_FINDPROC 0x00040000 +#define MMIO_FINDCHUNK 0x0010 +#define MMIO_FINDRIFF 0x0020 +#define MMIO_FINDLIST 0x0040 +#define MMIO_CREATERIFF 0x0020 +#define MMIO_CREATELIST 0x0040 +#define MMIOM_READ MMIO_READ +#define MMIOM_WRITE MMIO_WRITE +#define MMIOM_SEEK 2 +#define MMIOM_OPEN 3 +#define MMIOM_CLOSE 4 +#define MMIOM_WRITEFLUSH 5 +#define MMIOM_RENAME 6 +#define MMIOM_USER 0x8000 +#define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F') +#define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T') +#define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ') +#define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ') +#define MMIO_DEFAULTBUFFER 8192 +#define mmioFOURCC(ch0,ch1,ch2,ch3) MAKEFOURCC(ch0, ch1, ch2, ch3) +__declspec (dllimport) FOURCC __attribute__((__stdcall__)) mmioStringToFOURCCA(LPCSTR sz, UINT uFlags); +__declspec (dllimport) FOURCC __attribute__((__stdcall__)) mmioStringToFOURCCW(LPCWSTR sz, UINT uFlags); +#define mmioStringToFOURCC __MINGW_NAME_AW(mmioStringToFOURCC) +__declspec (dllimport) LPMMIOPROC __attribute__((__stdcall__)) mmioInstallIOProcA(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); +__declspec (dllimport) LPMMIOPROC __attribute__((__stdcall__)) mmioInstallIOProcW(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); +#define mmioInstallIOProc __MINGW_NAME_AW(mmioInstallIOProc) +__declspec (dllimport) HMMIO __attribute__((__stdcall__)) mmioOpenA(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); +__declspec (dllimport) HMMIO __attribute__((__stdcall__)) mmioOpenW(LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); +#define mmioOpen __MINGW_NAME_AW(mmioOpen) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioRenameA(LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioRenameW(LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); +#define mmioRename __MINGW_NAME_AW(mmioRename) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioClose(HMMIO hmmio, UINT fuClose); +__declspec (dllimport) LONG __attribute__((__stdcall__)) mmioRead(HMMIO hmmio, HPSTR pch, LONG cch); +__declspec (dllimport) LONG __attribute__((__stdcall__)) mmioWrite(HMMIO hmmio, const char * pch, LONG cch); +__declspec (dllimport) LONG __attribute__((__stdcall__)) mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioGetInfo(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioSetInfo(HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT fuBuffer); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioFlush(HMMIO hmmio, UINT fuFlush); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioAdvance(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance); +__declspec (dllimport) LRESULT __attribute__((__stdcall__)) mmioSendMessage(HMMIO hmmio, UINT uMsg, LPARAM lParam1, LPARAM lParam2); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioDescend(HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO *pmmckiParent, UINT fuDescend); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioAscend(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate); +#define _MMISCAPI2_H_ +typedef void (__attribute__((__stdcall__)) TIMECALLBACK)(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); +typedef TIMECALLBACK *LPTIMECALLBACK; +#define TIME_ONESHOT 0x0000 +#define TIME_PERIODIC 0x0001 +#define TIME_CALLBACK_FUNCTION 0x0000 +#define TIME_CALLBACK_EVENT_SET 0x0010 +#define TIME_CALLBACK_EVENT_PULSE 0x0020 +#define TIME_KILL_SYNCHRONOUS 0x0100 +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) timeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) timeKillEvent(UINT uTimerID); +#define _PLAYSOUNDAPI_H_ +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) sndPlaySoundA(LPCSTR pszSound, UINT fuSound); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) sndPlaySoundW(LPCWSTR pszSound, UINT fuSound); +#define sndPlaySound __MINGW_NAME_AW(sndPlaySound) +#define SND_SYNC 0x0000 +#define SND_ASYNC 0x0001 +#define SND_NODEFAULT 0x0002 +#define SND_MEMORY 0x0004 +#define SND_LOOP 0x0008 +#define SND_NOSTOP 0x0010 +#define SND_NOWAIT __MSABI_LONG(0x00002000) +#define SND_ALIAS __MSABI_LONG(0x00010000) +#define SND_ALIAS_ID __MSABI_LONG(0x00110000) +#define SND_FILENAME __MSABI_LONG(0x00020000) +#define SND_RESOURCE __MSABI_LONG(0x00040004) +#define SND_PURGE 0x0040 +#define SND_APPLICATION 0x0080 +#define SND_SENTRY __MSABI_LONG(0x00080000) +#define SND_RING __MSABI_LONG(0x00100000) +#define SND_SYSTEM __MSABI_LONG(0x00200000) +#define SND_ALIAS_START 0 +#define sndAlias(ch0,ch1) (SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8)) +#define SND_ALIAS_SYSTEMASTERISK sndAlias('S', '*') +#define SND_ALIAS_SYSTEMQUESTION sndAlias('S', '?') +#define SND_ALIAS_SYSTEMHAND sndAlias('S', 'H') +#define SND_ALIAS_SYSTEMEXIT sndAlias('S', 'E') +#define SND_ALIAS_SYSTEMSTART sndAlias('S', 'S') +#define SND_ALIAS_SYSTEMWELCOME sndAlias('S', 'W') +#define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S', '!') +#define SND_ALIAS_SYSTEMDEFAULT sndAlias('S', 'D') +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound); +#define PlaySound __MINGW_NAME_AW(PlaySound) +#define _MMEAPI_H_ +#define WAVERR_BADFORMAT (WAVERR_BASE + 0) +#define WAVERR_STILLPLAYING (WAVERR_BASE + 1) +#define WAVERR_UNPREPARED (WAVERR_BASE + 2) +#define WAVERR_SYNC (WAVERR_BASE + 3) +#define WAVERR_LASTERROR (WAVERR_BASE + 3) +struct HWAVE__ { int unused; }; typedef struct HWAVE__ *HWAVE; +struct HWAVEIN__ { int unused; }; typedef struct HWAVEIN__ *HWAVEIN; +struct HWAVEOUT__ { int unused; }; typedef struct HWAVEOUT__ *HWAVEOUT; +typedef HWAVEIN *LPHWAVEIN; +typedef HWAVEOUT *LPHWAVEOUT; +typedef DRVCALLBACK WAVECALLBACK; +typedef WAVECALLBACK *LPWAVECALLBACK; +#define WOM_OPEN MM_WOM_OPEN +#define WOM_CLOSE MM_WOM_CLOSE +#define WOM_DONE MM_WOM_DONE +#define WIM_OPEN MM_WIM_OPEN +#define WIM_CLOSE MM_WIM_CLOSE +#define WIM_DATA MM_WIM_DATA +#define WAVE_MAPPER ((UINT)-1) +#define WAVE_FORMAT_QUERY 0x0001 +#define WAVE_ALLOWSYNC 0x0002 +#define WAVE_MAPPED 0x0004 +#define WAVE_FORMAT_DIRECT 0x0008 +#define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT) +#define WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE 0x0010 +typedef struct wavehdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD_PTR dwUser; + DWORD dwFlags; + DWORD dwLoops; + struct wavehdr_tag *lpNext; + DWORD_PTR reserved; +} WAVEHDR, *PWAVEHDR, *NPWAVEHDR, *LPWAVEHDR; +#define WHDR_DONE 0x00000001 +#define WHDR_PREPARED 0x00000002 +#define WHDR_BEGINLOOP 0x00000004 +#define WHDR_ENDLOOP 0x00000008 +#define WHDR_INQUEUE 0x00000010 +typedef struct tagWAVEOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} WAVEOUTCAPSA, *PWAVEOUTCAPSA, *NPWAVEOUTCAPSA, *LPWAVEOUTCAPSA; +typedef struct tagWAVEOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} WAVEOUTCAPSW, *PWAVEOUTCAPSW, *NPWAVEOUTCAPSW, *LPWAVEOUTCAPSW; +typedef WAVEOUTCAPSA WAVEOUTCAPS; +typedef PWAVEOUTCAPSA PWAVEOUTCAPS; +typedef NPWAVEOUTCAPSA NPWAVEOUTCAPS; +typedef LPWAVEOUTCAPSA LPWAVEOUTCAPS; +typedef struct tagWAVEOUTCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} WAVEOUTCAPS2A, *PWAVEOUTCAPS2A, *NPWAVEOUTCAPS2A, *LPWAVEOUTCAPS2A; +typedef struct tagWAVEOUTCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} WAVEOUTCAPS2W, *PWAVEOUTCAPS2W, *NPWAVEOUTCAPS2W, *LPWAVEOUTCAPS2W; +typedef WAVEOUTCAPS2A WAVEOUTCAPS2; +typedef PWAVEOUTCAPS2A PWAVEOUTCAPS2; +typedef NPWAVEOUTCAPS2A NPWAVEOUTCAPS2; +typedef LPWAVEOUTCAPS2A LPWAVEOUTCAPS2; +#define WAVECAPS_PITCH 0x0001 +#define WAVECAPS_PLAYBACKRATE 0x0002 +#define WAVECAPS_VOLUME 0x0004 +#define WAVECAPS_LRVOLUME 0x0008 +#define WAVECAPS_SYNC 0x0010 +#define WAVECAPS_SAMPLEACCURATE 0x0020 +typedef struct tagWAVEINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} WAVEINCAPSA, *PWAVEINCAPSA, *NPWAVEINCAPSA, *LPWAVEINCAPSA; +typedef struct tagWAVEINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} WAVEINCAPSW, *PWAVEINCAPSW, *NPWAVEINCAPSW, *LPWAVEINCAPSW; +typedef WAVEINCAPSA WAVEINCAPS; +typedef PWAVEINCAPSA PWAVEINCAPS; +typedef NPWAVEINCAPSA NPWAVEINCAPS; +typedef LPWAVEINCAPSA LPWAVEINCAPS; +typedef struct tagWAVEINCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} WAVEINCAPS2A, *PWAVEINCAPS2A, *NPWAVEINCAPS2A, *LPWAVEINCAPS2A; +typedef struct tagWAVEINCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} WAVEINCAPS2W, *PWAVEINCAPS2W, *NPWAVEINCAPS2W, *LPWAVEINCAPS2W; +typedef WAVEINCAPS2A WAVEINCAPS2; +typedef PWAVEINCAPS2A PWAVEINCAPS2; +typedef NPWAVEINCAPS2A NPWAVEINCAPS2; +typedef LPWAVEINCAPS2A LPWAVEINCAPS2; +#define WAVE_INVALIDFORMAT 0x00000000 +#define WAVE_FORMAT_1M08 0x00000001 +#define WAVE_FORMAT_1S08 0x00000002 +#define WAVE_FORMAT_1M16 0x00000004 +#define WAVE_FORMAT_1S16 0x00000008 +#define WAVE_FORMAT_2M08 0x00000010 +#define WAVE_FORMAT_2S08 0x00000020 +#define WAVE_FORMAT_2M16 0x00000040 +#define WAVE_FORMAT_2S16 0x00000080 +#define WAVE_FORMAT_4M08 0x00000100 +#define WAVE_FORMAT_4S08 0x00000200 +#define WAVE_FORMAT_4M16 0x00000400 +#define WAVE_FORMAT_4S16 0x00000800 +#define WAVE_FORMAT_44M08 0x00000100 +#define WAVE_FORMAT_44S08 0x00000200 +#define WAVE_FORMAT_44M16 0x00000400 +#define WAVE_FORMAT_44S16 0x00000800 +#define WAVE_FORMAT_48M08 0x00001000 +#define WAVE_FORMAT_48S08 0x00002000 +#define WAVE_FORMAT_48M16 0x00004000 +#define WAVE_FORMAT_48S16 0x00008000 +#define WAVE_FORMAT_96M08 0x00010000 +#define WAVE_FORMAT_96S08 0x00020000 +#define WAVE_FORMAT_96M16 0x00040000 +#define WAVE_FORMAT_96S16 0x00080000 +typedef struct waveformat_tag { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} WAVEFORMAT, *PWAVEFORMAT, *NPWAVEFORMAT, *LPWAVEFORMAT; +#define WAVE_FORMAT_PCM 1 +typedef struct pcmwaveformat_tag { + WAVEFORMAT wf; + WORD wBitsPerSample; +} PCMWAVEFORMAT, *PPCMWAVEFORMAT, *NPPCMWAVEFORMAT, *LPPCMWAVEFORMAT; +#define _WAVEFORMATEX_ +typedef struct tWAVEFORMATEX { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; +} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX; +typedef const WAVEFORMATEX *LPCWAVEFORMATEX; +__declspec (dllimport) UINT __attribute__((__stdcall__)) waveOutGetNumDevs(void); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc); +#define waveOutGetDevCaps __MINGW_NAME_AW(waveOutGetDevCaps) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetVolume(HWAVEOUT hwo, LPDWORD pdwVolume); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +#define waveOutGetErrorText __MINGW_NAME_AW(waveOutGetErrorText) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutClose(HWAVEOUT hwo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutUnprepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutPause(HWAVEOUT hwo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutRestart(HWAVEOUT hwo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutReset(HWAVEOUT hwo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutBreakLoop(HWAVEOUT hwo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetPosition(HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetPitch(HWAVEOUT hwo, LPDWORD pdwPitch); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutSetPitch(HWAVEOUT hwo, DWORD dwPitch); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetPlaybackRate(HWAVEOUT hwo, LPDWORD pdwRate); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutGetID(HWAVEOUT hwo, LPUINT puDeviceID); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +__declspec (dllimport) UINT __attribute__((__stdcall__)) waveInGetNumDevs(void); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInGetDevCapsA(UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInGetDevCapsW(UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic); +#define waveInGetDevCaps __MINGW_NAME_AW(waveInGetDevCaps) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +#define waveInGetErrorText __MINGW_NAME_AW(waveInGetErrorText) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInOpen(LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInClose(HWAVEIN hwi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInPrepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInUnprepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInAddBuffer(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInStart(HWAVEIN hwi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInStop(HWAVEIN hwi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInReset(HWAVEIN hwi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInGetPosition(HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInGetID(HWAVEIN hwi, LPUINT puDeviceID); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +#define MIDIERR_UNPREPARED (MIDIERR_BASE + 0) +#define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1) +#define MIDIERR_NOMAP (MIDIERR_BASE + 2) +#define MIDIERR_NOTREADY (MIDIERR_BASE + 3) +#define MIDIERR_NODEVICE (MIDIERR_BASE + 4) +#define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5) +#define MIDIERR_BADOPENMODE (MIDIERR_BASE + 6) +#define MIDIERR_DONT_CONTINUE (MIDIERR_BASE + 7) +#define MIDIERR_LASTERROR (MIDIERR_BASE + 7) +struct HMIDI__ { int unused; }; typedef struct HMIDI__ *HMIDI; +struct HMIDIIN__ { int unused; }; typedef struct HMIDIIN__ *HMIDIIN; +struct HMIDIOUT__ { int unused; }; typedef struct HMIDIOUT__ *HMIDIOUT; +struct HMIDISTRM__ { int unused; }; typedef struct HMIDISTRM__ *HMIDISTRM; +typedef HMIDI *LPHMIDI; +typedef HMIDIIN *LPHMIDIIN; +typedef HMIDIOUT *LPHMIDIOUT; +typedef HMIDISTRM *LPHMIDISTRM; +typedef DRVCALLBACK MIDICALLBACK; +typedef MIDICALLBACK *LPMIDICALLBACK; +#define MIDIPATCHSIZE 128 +typedef WORD PATCHARRAY[128]; +typedef WORD *LPPATCHARRAY; +typedef WORD KEYARRAY[128]; +typedef WORD *LPKEYARRAY; +#define MIM_OPEN MM_MIM_OPEN +#define MIM_CLOSE MM_MIM_CLOSE +#define MIM_DATA MM_MIM_DATA +#define MIM_LONGDATA MM_MIM_LONGDATA +#define MIM_ERROR MM_MIM_ERROR +#define MIM_LONGERROR MM_MIM_LONGERROR +#define MOM_OPEN MM_MOM_OPEN +#define MOM_CLOSE MM_MOM_CLOSE +#define MOM_DONE MM_MOM_DONE +#define MIM_MOREDATA MM_MIM_MOREDATA +#define MOM_POSITIONCB MM_MOM_POSITIONCB +#define MIDIMAPPER ((UINT)-1) +#define MIDI_MAPPER ((UINT)-1) +#define MIDI_IO_STATUS __MSABI_LONG(0x00000020) +#define MIDI_CACHE_ALL 1 +#define MIDI_CACHE_BESTFIT 2 +#define MIDI_CACHE_QUERY 3 +#define MIDI_UNCACHE 4 +typedef struct tagMIDIOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} MIDIOUTCAPSA, *PMIDIOUTCAPSA, *NPMIDIOUTCAPSA, *LPMIDIOUTCAPSA; +typedef struct tagMIDIOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} MIDIOUTCAPSW, *PMIDIOUTCAPSW, *NPMIDIOUTCAPSW, *LPMIDIOUTCAPSW; +typedef MIDIOUTCAPSA MIDIOUTCAPS; +typedef PMIDIOUTCAPSA PMIDIOUTCAPS; +typedef NPMIDIOUTCAPSA NPMIDIOUTCAPS; +typedef LPMIDIOUTCAPSA LPMIDIOUTCAPS; +typedef struct tagMIDIOUTCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} MIDIOUTCAPS2A, *PMIDIOUTCAPS2A, *NPMIDIOUTCAPS2A, *LPMIDIOUTCAPS2A; +typedef struct tagMIDIOUTCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} MIDIOUTCAPS2W, *PMIDIOUTCAPS2W, *NPMIDIOUTCAPS2W, *LPMIDIOUTCAPS2W; +typedef MIDIOUTCAPS2A MIDIOUTCAPS2; +typedef PMIDIOUTCAPS2A PMIDIOUTCAPS2; +typedef NPMIDIOUTCAPS2A NPMIDIOUTCAPS2; +typedef LPMIDIOUTCAPS2A LPMIDIOUTCAPS2; +#define MOD_MIDIPORT 1 +#define MOD_SYNTH 2 +#define MOD_SQSYNTH 3 +#define MOD_FMSYNTH 4 +#define MOD_MAPPER 5 +#define MOD_WAVETABLE 6 +#define MOD_SWSYNTH 7 +#define MIDICAPS_VOLUME 0x0001 +#define MIDICAPS_LRVOLUME 0x0002 +#define MIDICAPS_CACHE 0x0004 +#define MIDICAPS_STREAM 0x0008 +typedef struct tagMIDIINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD dwSupport; +} MIDIINCAPSA, *PMIDIINCAPSA, *NPMIDIINCAPSA, *LPMIDIINCAPSA; +typedef struct tagMIDIINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD dwSupport; +} MIDIINCAPSW, *PMIDIINCAPSW, *NPMIDIINCAPSW, *LPMIDIINCAPSW; +typedef MIDIINCAPSA MIDIINCAPS; +typedef PMIDIINCAPSA PMIDIINCAPS; +typedef NPMIDIINCAPSA NPMIDIINCAPS; +typedef LPMIDIINCAPSA LPMIDIINCAPS; +typedef struct tagMIDIINCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} MIDIINCAPS2A, *PMIDIINCAPS2A, *NPMIDIINCAPS2A, *LPMIDIINCAPS2A; +typedef struct tagMIDIINCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} MIDIINCAPS2W, *PMIDIINCAPS2W, *NPMIDIINCAPS2W, *LPMIDIINCAPS2W; +typedef MIDIINCAPS2A MIDIINCAPS2; +typedef PMIDIINCAPS2A PMIDIINCAPS2; +typedef NPMIDIINCAPS2A NPMIDIINCAPS2; +typedef LPMIDIINCAPS2A LPMIDIINCAPS2; +typedef struct midihdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD_PTR dwUser; + DWORD dwFlags; + struct midihdr_tag *lpNext; + DWORD_PTR reserved; + DWORD dwOffset; + DWORD_PTR dwReserved[8]; +} MIDIHDR, *PMIDIHDR, *NPMIDIHDR, *LPMIDIHDR; +typedef struct midievent_tag { + DWORD dwDeltaTime; + DWORD dwStreamID; + DWORD dwEvent; + DWORD dwParms[1]; +} MIDIEVENT; +typedef struct midistrmbuffver_tag { + DWORD dwVersion; + DWORD dwMid; + DWORD dwOEMVersion; +} MIDISTRMBUFFVER; +#define MHDR_DONE 0x00000001 +#define MHDR_PREPARED 0x00000002 +#define MHDR_INQUEUE 0x00000004 +#define MHDR_ISSTRM 0x00000008 +#define MEVT_F_SHORT __MSABI_LONG(0x00000000) +#define MEVT_F_LONG __MSABI_LONG(0x80000000) +#define MEVT_F_CALLBACK __MSABI_LONG(0x40000000) +#define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF)) +#define MEVT_EVENTPARM(x) ((DWORD)((x)&0x00FFFFFFL)) +#define MEVT_SHORTMSG ((BYTE)0x00) +#define MEVT_TEMPO ((BYTE)0x01) +#define MEVT_NOP ((BYTE)0x02) +#define MEVT_LONGMSG ((BYTE)0x80) +#define MEVT_COMMENT ((BYTE)0x82) +#define MEVT_VERSION ((BYTE)0x84) +#define MIDISTRM_ERROR (-2) +#define MIDIPROP_SET __MSABI_LONG(0x80000000) +#define MIDIPROP_GET __MSABI_LONG(0x40000000) +#define MIDIPROP_TIMEDIV __MSABI_LONG(0x00000001) +#define MIDIPROP_TEMPO __MSABI_LONG(0x00000002) +typedef struct midiproptimediv_tag { + DWORD cbStruct; + DWORD dwTimeDiv; +} MIDIPROPTIMEDIV, *LPMIDIPROPTIMEDIV; +typedef struct midiproptempo_tag { + DWORD cbStruct; + DWORD dwTempo; +} MIDIPROPTEMPO, *LPMIDIPROPTEMPO; +__declspec (dllimport) UINT __attribute__((__stdcall__)) midiOutGetNumDevs(void); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamOpen(LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamClose(HMIDISTRM hms); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamProperty(HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamOut(HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamPause(HMIDISTRM hms); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamRestart(HMIDISTRM hms); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiStreamStop(HMIDISTRM hms); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiConnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiDisconnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutGetDevCapsA(UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutGetDevCapsW(UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc); +#define midiOutGetDevCaps __MINGW_NAME_AW(midiOutGetDevCaps) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutGetVolume(HMIDIOUT hmo, LPDWORD pdwVolume); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutSetVolume(HMIDIOUT hmo, DWORD dwVolume); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +#define midiOutGetErrorText __MINGW_NAME_AW(midiOutGetErrorText) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutOpen(LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutClose(HMIDIOUT hmo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutPrepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutUnprepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutShortMsg(HMIDIOUT hmo, DWORD dwMsg); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutLongMsg(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutReset(HMIDIOUT hmo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutCachePatches(HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutCacheDrumPatches(HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutGetID(HMIDIOUT hmo, LPUINT puDeviceID); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiOutMessage(HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +__declspec (dllimport) UINT __attribute__((__stdcall__)) midiInGetNumDevs(void); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInGetDevCapsA(UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInGetDevCapsW(UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic); +#define midiInGetDevCaps __MINGW_NAME_AW(midiInGetDevCaps) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +#define midiInGetErrorText __MINGW_NAME_AW(midiInGetErrorText) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInOpen(LPHMIDIIN phmi, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInClose(HMIDIIN hmi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInPrepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInUnprepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInAddBuffer(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInStart(HMIDIIN hmi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInStop(HMIDIIN hmi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInReset(HMIDIIN hmi); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInGetID(HMIDIIN hmi, LPUINT puDeviceID); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) midiInMessage(HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +#define AUX_MAPPER ((UINT)-1) +typedef struct tagAUXCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} AUXCAPSA, *PAUXCAPSA, *NPAUXCAPSA, *LPAUXCAPSA; +typedef struct tagAUXCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} AUXCAPSW, *PAUXCAPSW, *NPAUXCAPSW, *LPAUXCAPSW; +typedef AUXCAPSA AUXCAPS; +typedef PAUXCAPSA PAUXCAPS; +typedef NPAUXCAPSA NPAUXCAPS; +typedef LPAUXCAPSA LPAUXCAPS; +typedef struct tagAUXCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} AUXCAPS2A, *PAUXCAPS2A, *NPAUXCAPS2A, *LPAUXCAPS2A; +typedef struct tagAUXCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} AUXCAPS2W, *PAUXCAPS2W, *NPAUXCAPS2W, *LPAUXCAPS2W; +typedef AUXCAPS2A AUXCAPS2; +typedef PAUXCAPS2A PAUXCAPS2; +typedef NPAUXCAPS2A NPAUXCAPS2; +typedef LPAUXCAPS2A LPAUXCAPS2; +#define AUXCAPS_CDAUDIO 1 +#define AUXCAPS_AUXIN 2 +#define AUXCAPS_VOLUME 0x0001 +#define AUXCAPS_LRVOLUME 0x0002 +__declspec (dllimport) UINT __attribute__((__stdcall__)) auxGetNumDevs(void); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) auxGetDevCapsA(UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) auxGetDevCapsW(UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac); +#define auxGetDevCaps __MINGW_NAME_AW(auxGetDevCaps) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) auxSetVolume(UINT uDeviceID, DWORD dwVolume); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) auxGetVolume(UINT uDeviceID, LPDWORD pdwVolume); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) auxOutMessage(UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +struct HMIXEROBJ__ { int unused; }; typedef struct HMIXEROBJ__ *HMIXEROBJ; +typedef HMIXEROBJ *LPHMIXEROBJ; +struct HMIXER__ { int unused; }; typedef struct HMIXER__ *HMIXER; +typedef HMIXER *LPHMIXER; +#define MIXER_SHORT_NAME_CHARS 16 +#define MIXER_LONG_NAME_CHARS 64 +#define MIXERR_INVALLINE (MIXERR_BASE + 0) +#define MIXERR_INVALCONTROL (MIXERR_BASE + 1) +#define MIXERR_INVALVALUE (MIXERR_BASE + 2) +#define MIXERR_LASTERROR (MIXERR_BASE + 2) +#define MIXER_OBJECTF_HANDLE __MSABI_LONG(0x80000000) +#define MIXER_OBJECTF_MIXER __MSABI_LONG(0x00000000) +#define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER) +#define MIXER_OBJECTF_WAVEOUT __MSABI_LONG(0x10000000) +#define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT) +#define MIXER_OBJECTF_WAVEIN __MSABI_LONG(0x20000000) +#define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN) +#define MIXER_OBJECTF_MIDIOUT __MSABI_LONG(0x30000000) +#define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT) +#define MIXER_OBJECTF_MIDIIN __MSABI_LONG(0x40000000) +#define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN) +#define MIXER_OBJECTF_AUX __MSABI_LONG(0x50000000) +__declspec (dllimport) UINT __attribute__((__stdcall__)) mixerGetNumDevs(void); +typedef struct tagMIXERCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD fdwSupport; + DWORD cDestinations; +} MIXERCAPSA, *PMIXERCAPSA, *LPMIXERCAPSA; +typedef struct tagMIXERCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD fdwSupport; + DWORD cDestinations; +} MIXERCAPSW, *PMIXERCAPSW, *LPMIXERCAPSW; +typedef MIXERCAPSA MIXERCAPS; +typedef PMIXERCAPSA PMIXERCAPS; +typedef LPMIXERCAPSA LPMIXERCAPS; +typedef struct tagMIXERCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + DWORD fdwSupport; + DWORD cDestinations; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} MIXERCAPS2A, *PMIXERCAPS2A, *LPMIXERCAPS2A; +typedef struct tagMIXERCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + DWORD fdwSupport; + DWORD cDestinations; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} MIXERCAPS2W, *PMIXERCAPS2W, *LPMIXERCAPS2W; +typedef MIXERCAPS2A MIXERCAPS2; +typedef PMIXERCAPS2A PMIXERCAPS2; +typedef LPMIXERCAPS2A LPMIXERCAPS2; +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetDevCapsA(UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetDevCapsW(UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps); +#define mixerGetDevCaps __MINGW_NAME_AW(mixerGetDevCaps) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerOpen(LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerClose(HMIXER hmx); +__declspec (dllimport) DWORD __attribute__((__stdcall__)) mixerMessage(HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +typedef struct tagMIXERLINEA { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD_PTR dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + CHAR szShortName[16]; + CHAR szName[64]; + struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[32]; + } Target; +} MIXERLINEA, *PMIXERLINEA, *LPMIXERLINEA; +typedef struct tagMIXERLINEW { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD_PTR dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + WCHAR szShortName[16]; + WCHAR szName[64]; + struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[32]; + } Target; +} MIXERLINEW, *PMIXERLINEW, *LPMIXERLINEW; +typedef MIXERLINEA MIXERLINE; +typedef PMIXERLINEA PMIXERLINE; +typedef LPMIXERLINEA LPMIXERLINE; +#define MIXERLINE_LINEF_ACTIVE __MSABI_LONG(0x00000001) +#define MIXERLINE_LINEF_DISCONNECTED __MSABI_LONG(0x00008000) +#define MIXERLINE_LINEF_SOURCE __MSABI_LONG(0x80000000) +#define MIXERLINE_COMPONENTTYPE_DST_FIRST __MSABI_LONG(0x00000000) +#define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED (MIXERLINE_COMPONENTTYPE_DST_FIRST + 0) +#define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST + 1) +#define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 2) +#define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST + 3) +#define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4) +#define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST + 5) +#define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 6) +#define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 7) +#define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8) +#define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8) +#define MIXERLINE_COMPONENTTYPE_SRC_FIRST __MSABI_LONG(0x00001000) +#define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0) +#define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1) +#define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2) +#define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3) +#define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4) +#define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5) +#define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6) +#define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7) +#define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8) +#define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9) +#define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10) +#define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10) +#define MIXERLINE_TARGETTYPE_UNDEFINED 0 +#define MIXERLINE_TARGETTYPE_WAVEOUT 1 +#define MIXERLINE_TARGETTYPE_WAVEIN 2 +#define MIXERLINE_TARGETTYPE_MIDIOUT 3 +#define MIXERLINE_TARGETTYPE_MIDIIN 4 +#define MIXERLINE_TARGETTYPE_AUX 5 +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetLineInfoA(HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetLineInfoW(HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo); +#define mixerGetLineInfo __MINGW_NAME_AW(mixerGetLineInfo) +#define MIXER_GETLINEINFOF_DESTINATION __MSABI_LONG(0x00000000) +#define MIXER_GETLINEINFOF_SOURCE __MSABI_LONG(0x00000001) +#define MIXER_GETLINEINFOF_LINEID __MSABI_LONG(0x00000002) +#define MIXER_GETLINEINFOF_COMPONENTTYPE __MSABI_LONG(0x00000003) +#define MIXER_GETLINEINFOF_TARGETTYPE __MSABI_LONG(0x00000004) +#define MIXER_GETLINEINFOF_QUERYMASK __MSABI_LONG(0x0000000F) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetID(HMIXEROBJ hmxobj, UINT *puMxId, DWORD fdwId); +typedef struct tagMIXERCONTROLA { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + CHAR szShortName[16]; + CHAR szName[64]; + union { + __extension__ struct { + LONG lMinimum; + LONG lMaximum; + }; + __extension__ struct { + DWORD dwMinimum; + DWORD dwMaximum; + }; + DWORD dwReserved[6]; + } Bounds; + union { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; + } Metrics; +} MIXERCONTROLA, *PMIXERCONTROLA, *LPMIXERCONTROLA; +typedef struct tagMIXERCONTROLW { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + WCHAR szShortName[16]; + WCHAR szName[64]; + union { + __extension__ struct { + LONG lMinimum; + LONG lMaximum; + }; + __extension__ struct { + DWORD dwMinimum; + DWORD dwMaximum; + }; + DWORD dwReserved[6]; + } Bounds; + union { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; + } Metrics; +} MIXERCONTROLW, *PMIXERCONTROLW, *LPMIXERCONTROLW; +typedef MIXERCONTROLA MIXERCONTROL; +typedef PMIXERCONTROLA PMIXERCONTROL; +typedef LPMIXERCONTROLA LPMIXERCONTROL; +#define MIXERCONTROL_CONTROLF_UNIFORM __MSABI_LONG(0x00000001) +#define MIXERCONTROL_CONTROLF_MULTIPLE __MSABI_LONG(0x00000002) +#define MIXERCONTROL_CONTROLF_DISABLED __MSABI_LONG(0x80000000) +#define MIXERCONTROL_CT_CLASS_MASK __MSABI_LONG(0xF0000000) +#define MIXERCONTROL_CT_CLASS_CUSTOM __MSABI_LONG(0x00000000) +#define MIXERCONTROL_CT_CLASS_METER __MSABI_LONG(0x10000000) +#define MIXERCONTROL_CT_CLASS_SWITCH __MSABI_LONG(0x20000000) +#define MIXERCONTROL_CT_CLASS_NUMBER __MSABI_LONG(0x30000000) +#define MIXERCONTROL_CT_CLASS_SLIDER __MSABI_LONG(0x40000000) +#define MIXERCONTROL_CT_CLASS_FADER __MSABI_LONG(0x50000000) +#define MIXERCONTROL_CT_CLASS_TIME __MSABI_LONG(0x60000000) +#define MIXERCONTROL_CT_CLASS_LIST __MSABI_LONG(0x70000000) +#define MIXERCONTROL_CT_SUBCLASS_MASK __MSABI_LONG(0x0F000000) +#define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN __MSABI_LONG(0x00000000) +#define MIXERCONTROL_CT_SC_SWITCH_BUTTON __MSABI_LONG(0x01000000) +#define MIXERCONTROL_CT_SC_METER_POLLED __MSABI_LONG(0x00000000) +#define MIXERCONTROL_CT_SC_TIME_MICROSECS __MSABI_LONG(0x00000000) +#define MIXERCONTROL_CT_SC_TIME_MILLISECS __MSABI_LONG(0x01000000) +#define MIXERCONTROL_CT_SC_LIST_SINGLE __MSABI_LONG(0x00000000) +#define MIXERCONTROL_CT_SC_LIST_MULTIPLE __MSABI_LONG(0x01000000) +#define MIXERCONTROL_CT_UNITS_MASK __MSABI_LONG(0x00FF0000) +#define MIXERCONTROL_CT_UNITS_CUSTOM __MSABI_LONG(0x00000000) +#define MIXERCONTROL_CT_UNITS_BOOLEAN __MSABI_LONG(0x00010000) +#define MIXERCONTROL_CT_UNITS_SIGNED __MSABI_LONG(0x00020000) +#define MIXERCONTROL_CT_UNITS_UNSIGNED __MSABI_LONG(0x00030000) +#define MIXERCONTROL_CT_UNITS_DECIBELS __MSABI_LONG(0x00040000) +#define MIXERCONTROL_CT_UNITS_PERCENT __MSABI_LONG(0x00050000) +#define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM) +#define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED) +#define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1) +#define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1) +#define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2) +#define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3) +#define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4) +#define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5) +#define MIXERCONTROL_CONTROLTYPE_BASS_BOOST (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277) +#define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS) +#define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED) +#define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT) +#define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED) +#define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 1) +#define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 2) +#define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER + 1) +#define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER + 2) +#define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER + 3) +#define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER + 4) +#define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1) +#define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1) +#define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED) +typedef struct tagMIXERLINECONTROLSA { + DWORD cbStruct; + DWORD dwLineID; + __extension__ union { + DWORD dwControlID; + DWORD dwControlType; + }; + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLA pamxctrl; +} MIXERLINECONTROLSA, *PMIXERLINECONTROLSA, *LPMIXERLINECONTROLSA; +typedef struct tagMIXERLINECONTROLSW { + DWORD cbStruct; + DWORD dwLineID; + __extension__ union { + DWORD dwControlID; + DWORD dwControlType; + }; + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLW pamxctrl; +} MIXERLINECONTROLSW, *PMIXERLINECONTROLSW, *LPMIXERLINECONTROLSW; +typedef MIXERLINECONTROLSA MIXERLINECONTROLS; +typedef PMIXERLINECONTROLSA PMIXERLINECONTROLS; +typedef LPMIXERLINECONTROLSA LPMIXERLINECONTROLS; +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetLineControlsA(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetLineControlsW(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls); +#define mixerGetLineControls __MINGW_NAME_AW(mixerGetLineControls) +#define MIXER_GETLINECONTROLSF_ALL __MSABI_LONG(0x00000000) +#define MIXER_GETLINECONTROLSF_ONEBYID __MSABI_LONG(0x00000001) +#define MIXER_GETLINECONTROLSF_ONEBYTYPE __MSABI_LONG(0x00000002) +#define MIXER_GETLINECONTROLSF_QUERYMASK __MSABI_LONG(0x0000000F) +typedef struct tMIXERCONTROLDETAILS { + DWORD cbStruct; + DWORD dwControlID; + DWORD cChannels; + __extension__ union { + HWND hwndOwner; + DWORD cMultipleItems; + }; + DWORD cbDetails; + LPVOID paDetails; +} MIXERCONTROLDETAILS, *PMIXERCONTROLDETAILS, *LPMIXERCONTROLDETAILS; +typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA { + DWORD dwParam1; + DWORD dwParam2; + CHAR szName[64]; +} MIXERCONTROLDETAILS_LISTTEXTA, *PMIXERCONTROLDETAILS_LISTTEXTA, *LPMIXERCONTROLDETAILS_LISTTEXTA; +typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW { + DWORD dwParam1; + DWORD dwParam2; + WCHAR szName[64]; +} MIXERCONTROLDETAILS_LISTTEXTW, *PMIXERCONTROLDETAILS_LISTTEXTW, *LPMIXERCONTROLDETAILS_LISTTEXTW; +typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT; +typedef PMIXERCONTROLDETAILS_LISTTEXTA PMIXERCONTROLDETAILS_LISTTEXT; +typedef LPMIXERCONTROLDETAILS_LISTTEXTA LPMIXERCONTROLDETAILS_LISTTEXT; +typedef struct tMIXERCONTROLDETAILS_BOOLEAN { + LONG fValue; +} MIXERCONTROLDETAILS_BOOLEAN, *PMIXERCONTROLDETAILS_BOOLEAN, *LPMIXERCONTROLDETAILS_BOOLEAN; +typedef struct tMIXERCONTROLDETAILS_SIGNED { + LONG lValue; +} MIXERCONTROLDETAILS_SIGNED, *PMIXERCONTROLDETAILS_SIGNED, *LPMIXERCONTROLDETAILS_SIGNED; +typedef struct tMIXERCONTROLDETAILS_UNSIGNED { + DWORD dwValue; +} MIXERCONTROLDETAILS_UNSIGNED, *PMIXERCONTROLDETAILS_UNSIGNED, *LPMIXERCONTROLDETAILS_UNSIGNED; +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetControlDetailsA(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerGetControlDetailsW(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); +#define mixerGetControlDetails __MINGW_NAME_AW(mixerGetControlDetails) +#define MIXER_GETCONTROLDETAILSF_VALUE __MSABI_LONG(0x00000000) +#define MIXER_GETCONTROLDETAILSF_LISTTEXT __MSABI_LONG(0x00000001) +#define MIXER_GETCONTROLDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) mixerSetControlDetails(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); +#define MIXER_SETCONTROLDETAILSF_VALUE __MSABI_LONG(0x00000000) +#define MIXER_SETCONTROLDETAILSF_CUSTOM __MSABI_LONG(0x00000001) +#define MIXER_SETCONTROLDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F) +#define _TIMERAPI_H_ +#define TIMERR_NOERROR (0) +#define TIMERR_NOCANDO (TIMERR_BASE+1) +#define TIMERR_STRUCT (TIMERR_BASE+33) +typedef struct timecaps_tag { + UINT wPeriodMin; + UINT wPeriodMax; +} TIMECAPS, *PTIMECAPS, *NPTIMECAPS, *LPTIMECAPS; +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) timeGetSystemTime(LPMMTIME pmmt, UINT cbmmt); +__declspec (dllimport) DWORD __attribute__((__stdcall__)) timeGetTime(void); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) timeGetDevCaps(LPTIMECAPS ptc, UINT cbtc); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) timeBeginPeriod(UINT uPeriod); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) timeEndPeriod(UINT uPeriod); +#define _JOYSTICKAPI_H_ +#define JOYERR_NOERROR (0) +#define JOYERR_PARMS (JOYERR_BASE+5) +#define JOYERR_NOCANDO (JOYERR_BASE+6) +#define JOYERR_UNPLUGGED (JOYERR_BASE+7) +#define JOY_BUTTON1 0x0001 +#define JOY_BUTTON2 0x0002 +#define JOY_BUTTON3 0x0004 +#define JOY_BUTTON4 0x0008 +#define JOY_BUTTON1CHG 0x0100 +#define JOY_BUTTON2CHG 0x0200 +#define JOY_BUTTON3CHG 0x0400 +#define JOY_BUTTON4CHG 0x0800 +#define JOY_BUTTON5 __MSABI_LONG(0x00000010) +#define JOY_BUTTON6 __MSABI_LONG(0x00000020) +#define JOY_BUTTON7 __MSABI_LONG(0x00000040) +#define JOY_BUTTON8 __MSABI_LONG(0x00000080) +#define JOY_BUTTON9 __MSABI_LONG(0x00000100) +#define JOY_BUTTON10 __MSABI_LONG(0x00000200) +#define JOY_BUTTON11 __MSABI_LONG(0x00000400) +#define JOY_BUTTON12 __MSABI_LONG(0x00000800) +#define JOY_BUTTON13 __MSABI_LONG(0x00001000) +#define JOY_BUTTON14 __MSABI_LONG(0x00002000) +#define JOY_BUTTON15 __MSABI_LONG(0x00004000) +#define JOY_BUTTON16 __MSABI_LONG(0x00008000) +#define JOY_BUTTON17 __MSABI_LONG(0x00010000) +#define JOY_BUTTON18 __MSABI_LONG(0x00020000) +#define JOY_BUTTON19 __MSABI_LONG(0x00040000) +#define JOY_BUTTON20 __MSABI_LONG(0x00080000) +#define JOY_BUTTON21 __MSABI_LONG(0x00100000) +#define JOY_BUTTON22 __MSABI_LONG(0x00200000) +#define JOY_BUTTON23 __MSABI_LONG(0x00400000) +#define JOY_BUTTON24 __MSABI_LONG(0x00800000) +#define JOY_BUTTON25 __MSABI_LONG(0x01000000) +#define JOY_BUTTON26 __MSABI_LONG(0x02000000) +#define JOY_BUTTON27 __MSABI_LONG(0x04000000) +#define JOY_BUTTON28 __MSABI_LONG(0x08000000) +#define JOY_BUTTON29 __MSABI_LONG(0x10000000) +#define JOY_BUTTON30 __MSABI_LONG(0x20000000) +#define JOY_BUTTON31 __MSABI_LONG(0x40000000) +#define JOY_BUTTON32 __MSABI_LONG(0x80000000) +#define JOY_POVCENTERED ((WORD)-1) +#define JOY_POVFORWARD 0 +#define JOY_POVRIGHT 9000 +#define JOY_POVBACKWARD 18000 +#define JOY_POVLEFT 27000 +#define JOY_RETURNX __MSABI_LONG(0x00000001) +#define JOY_RETURNY __MSABI_LONG(0x00000002) +#define JOY_RETURNZ __MSABI_LONG(0x00000004) +#define JOY_RETURNR __MSABI_LONG(0x00000008) +#define JOY_RETURNU __MSABI_LONG(0x00000010) +#define JOY_RETURNV __MSABI_LONG(0x00000020) +#define JOY_RETURNPOV __MSABI_LONG(0x00000040) +#define JOY_RETURNBUTTONS __MSABI_LONG(0x00000080) +#define JOY_RETURNRAWDATA __MSABI_LONG(0x00000100) +#define JOY_RETURNPOVCTS __MSABI_LONG(0x00000200) +#define JOY_RETURNCENTERED __MSABI_LONG(0x00000400) +#define JOY_USEDEADZONE __MSABI_LONG(0x00000800) +#define JOY_RETURNALL (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV | JOY_RETURNBUTTONS) +#define JOY_CAL_READALWAYS __MSABI_LONG(0x00010000) +#define JOY_CAL_READXYONLY __MSABI_LONG(0x00020000) +#define JOY_CAL_READ3 __MSABI_LONG(0x00040000) +#define JOY_CAL_READ4 __MSABI_LONG(0x00080000) +#define JOY_CAL_READXONLY __MSABI_LONG(0x00100000) +#define JOY_CAL_READYONLY __MSABI_LONG(0x00200000) +#define JOY_CAL_READ5 __MSABI_LONG(0x00400000) +#define JOY_CAL_READ6 __MSABI_LONG(0x00800000) +#define JOY_CAL_READZONLY __MSABI_LONG(0x01000000) +#define JOY_CAL_READRONLY __MSABI_LONG(0x02000000) +#define JOY_CAL_READUONLY __MSABI_LONG(0x04000000) +#define JOY_CAL_READVONLY __MSABI_LONG(0x08000000) +#define JOYSTICKID1 0 +#define JOYSTICKID2 1 +#define JOYCAPS_HASZ 0x0001 +#define JOYCAPS_HASR 0x0002 +#define JOYCAPS_HASU 0x0004 +#define JOYCAPS_HASV 0x0008 +#define JOYCAPS_HASPOV 0x0010 +#define JOYCAPS_POV4DIR 0x0020 +#define JOYCAPS_POVCTS 0x0040 +typedef struct tagJOYCAPSA { + WORD wMid; + WORD wPid; + CHAR szPname[32]; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + CHAR szRegKey[32]; + CHAR szOEMVxD[260]; +} JOYCAPSA, *PJOYCAPSA, *NPJOYCAPSA, *LPJOYCAPSA; +typedef struct tagJOYCAPSW { + WORD wMid; + WORD wPid; + WCHAR szPname[32]; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + WCHAR szRegKey[32]; + WCHAR szOEMVxD[260]; +} JOYCAPSW, *PJOYCAPSW, *NPJOYCAPSW, *LPJOYCAPSW; +typedef JOYCAPSA JOYCAPS; +typedef PJOYCAPSA PJOYCAPS; +typedef NPJOYCAPSA NPJOYCAPS; +typedef LPJOYCAPSA LPJOYCAPS; +typedef struct tagJOYCAPS2A { + WORD wMid; + WORD wPid; + CHAR szPname[32]; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + CHAR szRegKey[32]; + CHAR szOEMVxD[260]; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} JOYCAPS2A, *PJOYCAPS2A, *NPJOYCAPS2A, *LPJOYCAPS2A; +typedef struct tagJOYCAPS2W { + WORD wMid; + WORD wPid; + WCHAR szPname[32]; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + WCHAR szRegKey[32]; + WCHAR szOEMVxD[260]; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} JOYCAPS2W, *PJOYCAPS2W, *NPJOYCAPS2W, *LPJOYCAPS2W; +typedef JOYCAPS2A JOYCAPS2; +typedef PJOYCAPS2A PJOYCAPS2; +typedef NPJOYCAPS2A NPJOYCAPS2; +typedef LPJOYCAPS2A LPJOYCAPS2; +typedef struct joyinfo_tag { + UINT wXpos; + UINT wYpos; + UINT wZpos; + UINT wButtons; +} JOYINFO, *PJOYINFO, *NPJOYINFO, *LPJOYINFO; +typedef struct joyinfoex_tag { + DWORD dwSize; + DWORD dwFlags; + DWORD dwXpos; + DWORD dwYpos; + DWORD dwZpos; + DWORD dwRpos; + DWORD dwUpos; + DWORD dwVpos; + DWORD dwButtons; + DWORD dwButtonNumber; + DWORD dwPOV; + DWORD dwReserved1; + DWORD dwReserved2; +} JOYINFOEX, *PJOYINFOEX, *NPJOYINFOEX, *LPJOYINFOEX; +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji); +__declspec (dllimport) UINT __attribute__((__stdcall__)) joyGetNumDevs(void); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joyGetDevCapsA(UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joyGetDevCapsW(UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc); +#define joyGetDevCaps __MINGW_NAME_AW(joyGetDevCaps) +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joyGetPos(UINT uJoyID, LPJOYINFO pji); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joyGetThreshold(UINT uJoyID, LPUINT puThreshold); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joyReleaseCapture(UINT uJoyID); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, WINBOOL fChanged); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joySetThreshold(UINT uJoyID, UINT uThreshold); +__declspec (dllimport) MMRESULT __attribute__((__stdcall__)) joyConfigChanged(DWORD dwFlags); +#define NEWTRANSPARENT 3 +#define QUERYROPSUPPORT 40 +#define SELECTDIB 41 +#define DIBINDEX(n) MAKELONG((n),0x10FF) +#pragma pack(pop) +#define NCB_INCLUDED +#define NCBNAMSZ 16 +#define MAX_LANA 254 + typedef struct _NCB { + UCHAR ncb_command; + UCHAR ncb_retcode; + UCHAR ncb_lsn; + UCHAR ncb_num; + PUCHAR ncb_buffer; + WORD ncb_length; + UCHAR ncb_callname[16]; + UCHAR ncb_name[16]; + UCHAR ncb_rto; + UCHAR ncb_sto; + void (__attribute__((__stdcall__)) *ncb_post)(struct _NCB *); + UCHAR ncb_lana_num; + UCHAR ncb_cmd_cplt; + UCHAR ncb_reserve[18]; + HANDLE ncb_event; + } NCB,*PNCB; + typedef struct _ADAPTER_STATUS { + UCHAR adapter_address[6]; + UCHAR rev_major; + UCHAR reserved0; + UCHAR adapter_type; + UCHAR rev_minor; + WORD duration; + WORD frmr_recv; + WORD frmr_xmit; + WORD iframe_recv_err; + WORD xmit_aborts; + DWORD xmit_success; + DWORD recv_success; + WORD iframe_xmit_err; + WORD recv_buff_unavail; + WORD t1_timeouts; + WORD ti_timeouts; + DWORD reserved1; + WORD free_ncbs; + WORD max_cfg_ncbs; + WORD max_ncbs; + WORD xmit_buf_unavail; + WORD max_dgram_size; + WORD pending_sess; + WORD max_cfg_sess; + WORD max_sess; + WORD max_sess_pkt_size; + WORD name_count; + } ADAPTER_STATUS,*PADAPTER_STATUS; + typedef struct _NAME_BUFFER { + UCHAR name[16]; + UCHAR name_num; + UCHAR name_flags; + } NAME_BUFFER,*PNAME_BUFFER; +#define NAME_FLAGS_MASK 0x87 +#define GROUP_NAME 0x80 +#define UNIQUE_NAME 0x00 +#define REGISTERING 0x00 +#define REGISTERED 0x04 +#define DEREGISTERED 0x05 +#define DUPLICATE 0x06 +#define DUPLICATE_DEREG 0x07 + typedef struct _SESSION_HEADER { + UCHAR sess_name; + UCHAR num_sess; + UCHAR rcv_dg_outstanding; + UCHAR rcv_any_outstanding; + } SESSION_HEADER,*PSESSION_HEADER; + typedef struct _SESSION_BUFFER { + UCHAR lsn; + UCHAR state; + UCHAR local_name[16]; + UCHAR remote_name[16]; + UCHAR rcvs_outstanding; + UCHAR sends_outstanding; + } SESSION_BUFFER,*PSESSION_BUFFER; +#define LISTEN_OUTSTANDING 0x01 +#define CALL_PENDING 0x02 +#define SESSION_ESTABLISHED 0x03 +#define HANGUP_PENDING 0x04 +#define HANGUP_COMPLETE 0x05 +#define SESSION_ABORTED 0x06 + typedef struct _LANA_ENUM { + UCHAR length; + UCHAR lana[254 +1]; + } LANA_ENUM,*PLANA_ENUM; + typedef struct _FIND_NAME_HEADER { + WORD node_count; + UCHAR reserved; + UCHAR unique_group; + } FIND_NAME_HEADER,*PFIND_NAME_HEADER; + typedef struct _FIND_NAME_BUFFER { + UCHAR length; + UCHAR access_control; + UCHAR frame_control; + UCHAR destination_addr[6]; + UCHAR source_addr[6]; + UCHAR routing_info[18]; + } FIND_NAME_BUFFER,*PFIND_NAME_BUFFER; + typedef struct _ACTION_HEADER { + ULONG transport_id; + USHORT action_code; + USHORT reserved; + } ACTION_HEADER,*PACTION_HEADER; +#define ALL_TRANSPORTS "M\0\0\0" +#define MS_NBF "MNBF" +#define NCBCALL 0x10 +#define NCBLISTEN 0x11 +#define NCBHANGUP 0x12 +#define NCBSEND 0x14 +#define NCBRECV 0x15 +#define NCBRECVANY 0x16 +#define NCBCHAINSEND 0x17 +#define NCBDGSEND 0x20 +#define NCBDGRECV 0x21 +#define NCBDGSENDBC 0x22 +#define NCBDGRECVBC 0x23 +#define NCBADDNAME 0x30 +#define NCBDELNAME 0x31 +#define NCBRESET 0x32 +#define NCBASTAT 0x33 +#define NCBSSTAT 0x34 +#define NCBCANCEL 0x35 +#define NCBADDGRNAME 0x36 +#define NCBENUM 0x37 +#define NCBUNLINK 0x70 +#define NCBSENDNA 0x71 +#define NCBCHAINSENDNA 0x72 +#define NCBLANSTALERT 0x73 +#define NCBACTION 0x77 +#define NCBFINDNAME 0x78 +#define NCBTRACE 0x79 +#define ASYNCH 0x80 +#define NRC_GOODRET 0x00 +#define NRC_BUFLEN 0x01 +#define NRC_ILLCMD 0x03 +#define NRC_CMDTMO 0x05 +#define NRC_INCOMP 0x06 +#define NRC_BADDR 0x07 +#define NRC_SNUMOUT 0x08 +#define NRC_NORES 0x09 +#define NRC_SCLOSED 0x0a +#define NRC_CMDCAN 0x0b +#define NRC_DUPNAME 0x0d +#define NRC_NAMTFUL 0x0e +#define NRC_ACTSES 0x0f +#define NRC_LOCTFUL 0x11 +#define NRC_REMTFUL 0x12 +#define NRC_ILLNN 0x13 +#define NRC_NOCALL 0x14 +#define NRC_NOWILD 0x15 +#define NRC_INUSE 0x16 +#define NRC_NAMERR 0x17 +#define NRC_SABORT 0x18 +#define NRC_NAMCONF 0x19 +#define NRC_IFBUSY 0x21 +#define NRC_TOOMANY 0x22 +#define NRC_BRIDGE 0x23 +#define NRC_CANOCCR 0x24 +#define NRC_CANCEL 0x26 +#define NRC_DUPENV 0x30 +#define NRC_ENVNOTDEF 0x34 +#define NRC_OSRESNOTAV 0x35 +#define NRC_MAXAPPS 0x36 +#define NRC_NOSAPS 0x37 +#define NRC_NORESOURCES 0x38 +#define NRC_INVADDRESS 0x39 +#define NRC_INVDDID 0x3B +#define NRC_LOCKFAIL 0x3C +#define NRC_OPENERR 0x3f +#define NRC_SYSTEM 0x40 +#define NRC_PENDING 0xff + UCHAR __attribute__((__stdcall__)) Netbios(PNCB pncb); +#define NCB_POST void CALLBACK +#undef interface +#define interface struct +#define __RPC_H__ +#define __RPC_WIN32__ +#define __MIDL_USER_DEFINED +#define midl_user_allocate MIDL_user_allocate +#define midl_user_free MIDL_user_free + typedef void *I_RPC_HANDLE; + typedef long RPC_STATUS; +#define RPC_UNICODE_SUPPORTED +#define __RPC_FAR +#define __RPC_API __stdcall +#define __RPC_USER __RPC_API +#define __RPC_STUB __RPC_API +#define RPC_ENTRY __RPC_API +#define RPCRTAPI DECLSPEC_IMPORT +#define RPCNSAPI DECLSPEC_IMPORT +#define __RPCDCE_H__ + typedef unsigned char *RPC_CSTR; + typedef unsigned short *RPC_WSTR; + typedef I_RPC_HANDLE RPC_BINDING_HANDLE; + typedef RPC_BINDING_HANDLE handle_t; +#define rpc_binding_handle_t RPC_BINDING_HANDLE +#undef DEFINE_GUID +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name +#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) +#define UUID_DEFINED + typedef GUID UUID; +#define uuid_t UUID + typedef struct _RPC_BINDING_VECTOR { + unsigned long Count; + RPC_BINDING_HANDLE BindingH[1]; + } RPC_BINDING_VECTOR; +#define rpc_binding_vector_t RPC_BINDING_VECTOR + typedef struct _UUID_VECTOR { + unsigned long Count; + UUID *Uuid[1]; + } UUID_VECTOR; +#define uuid_vector_t UUID_VECTOR + typedef void *RPC_IF_HANDLE; +#define IFID_DEFINED + typedef struct _RPC_IF_ID { + UUID Uuid; + unsigned short VersMajor; + unsigned short VersMinor; + } RPC_IF_ID; +#define RPC_C_BINDING_INFINITE_TIMEOUT 10 +#define RPC_C_BINDING_MIN_TIMEOUT 0 +#define RPC_C_BINDING_DEFAULT_TIMEOUT 5 +#define RPC_C_BINDING_MAX_TIMEOUT 9 +#define RPC_C_CANCEL_INFINITE_TIMEOUT -1 +#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234 +#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10 +#define RPC_C_BIND_TO_ALL_NICS 1 +#define RPC_C_USE_INTERNET_PORT 0x1 +#define RPC_C_USE_INTRANET_PORT 0x2 +#define RPC_C_DONT_FAIL 0x4 +#define RPC_C_MQ_TEMPORARY 0x0000 +#define RPC_C_MQ_PERMANENT 0x0001 +#define RPC_C_MQ_CLEAR_ON_OPEN 0x0002 +#define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004 +#define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000 +#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008 +#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010 +#define RPC_C_OPT_MQ_DELIVERY 1 +#define RPC_C_OPT_MQ_PRIORITY 2 +#define RPC_C_OPT_MQ_JOURNAL 3 +#define RPC_C_OPT_MQ_ACKNOWLEDGE 4 +#define RPC_C_OPT_MQ_AUTHN_SERVICE 5 +#define RPC_C_OPT_MQ_AUTHN_LEVEL 6 +#define RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE 7 +#define RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED 8 +#define RPC_C_OPT_BINDING_NONCAUSAL 9 +#define RPC_C_OPT_SECURITY_CALLBACK 10 +#define RPC_C_OPT_UNIQUE_BINDING 11 +#define RPC_C_OPT_CALL_TIMEOUT 12 +#define RPC_C_OPT_DONT_LINGER 13 +#define RPC_C_OPT_MAX_OPTIONS 14 +#define RPC_C_MQ_EXPRESS 0 +#define RPC_C_MQ_RECOVERABLE 1 +#define RPC_C_MQ_JOURNAL_NONE 0 +#define RPC_C_MQ_JOURNAL_DEADLETTER 1 +#define RPC_C_MQ_JOURNAL_ALWAYS 2 +#define RPC_C_FULL_CERT_CHAIN 0x0001 + typedef struct _RPC_PROTSEQ_VECTORA { + unsigned int Count; + unsigned char *Protseq[1]; + } RPC_PROTSEQ_VECTORA; + typedef struct _RPC_PROTSEQ_VECTORW { + unsigned int Count; + unsigned short *Protseq[1]; + } RPC_PROTSEQ_VECTORW; +#define RPC_PROTSEQ_VECTOR __MINGW_NAME_AW(RPC_PROTSEQ_VECTOR) + typedef struct _RPC_POLICY { + unsigned int Length; + unsigned long EndpointFlags; + unsigned long NICFlags; + } RPC_POLICY,*PRPC_POLICY; + typedef void __attribute__((__stdcall__)) RPC_OBJECT_INQ_FN(UUID *ObjectUuid,UUID *TypeUuid,RPC_STATUS *Status); + typedef RPC_STATUS __attribute__((__stdcall__)) RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid,void *Context); + typedef void __attribute__((__stdcall__)) RPC_SECURITY_CALLBACK_FN(void *Context); +#define RPC_MGR_EPV void + typedef struct { + unsigned int Count; + unsigned long Stats[1]; + } RPC_STATS_VECTOR; +#define RPC_C_STATS_CALLS_IN 0 +#define RPC_C_STATS_CALLS_OUT 1 +#define RPC_C_STATS_PKTS_IN 2 +#define RPC_C_STATS_PKTS_OUT 3 + typedef struct { + unsigned long Count; + RPC_IF_ID *IfId[1]; + } RPC_IF_ID_VECTOR; +#define RpcBindingFromStringBinding __MINGW_NAME_AW(RpcBindingFromStringBinding) +#define RpcBindingToStringBinding __MINGW_NAME_AW(RpcBindingToStringBinding) +#define RpcStringBindingCompose __MINGW_NAME_AW(RpcStringBindingCompose) +#define RpcStringBindingParse __MINGW_NAME_AW(RpcStringBindingParse) +#define RpcStringFree __MINGW_NAME_AW(RpcStringFree) +#define RpcNetworkIsProtseqValid __MINGW_NAME_AW(RpcNetworkIsProtseqValid) +#define RpcNetworkInqProtseqs __MINGW_NAME_AW(RpcNetworkInqProtseqs) +#define RpcProtseqVectorFree __MINGW_NAME_AW(RpcProtseqVectorFree) +#define RpcServerUseProtseq __MINGW_NAME_AW(RpcServerUseProtseq) +#define RpcServerUseProtseqEx __MINGW_NAME_AW(RpcServerUseProtseqEx) +#define RpcServerUseProtseqEp __MINGW_NAME_AW(RpcServerUseProtseqEp) +#define RpcServerUseProtseqEpEx __MINGW_NAME_AW(RpcServerUseProtseqEpEx) +#define RpcServerUseProtseqIf __MINGW_NAME_AW(RpcServerUseProtseqIf) +#define RpcServerUseProtseqIfEx __MINGW_NAME_AW(RpcServerUseProtseqIfEx) +#define RpcMgmtInqServerPrincName __MINGW_NAME_AW(RpcMgmtInqServerPrincName) +#define RpcServerInqDefaultPrincName __MINGW_NAME_AW(RpcServerInqDefaultPrincName) +#define RpcNsBindingInqEntryName __MINGW_NAME_AW(RpcNsBindingInqEntryName) + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding,RPC_BINDING_HANDLE *DestinationBinding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingFree(RPC_BINDING_HANDLE *Binding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetOption(RPC_BINDING_HANDLE hBinding,unsigned long option,ULONG_PTR optionValue); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqOption(RPC_BINDING_HANDLE hBinding,unsigned long option,ULONG_PTR *pOptionValue); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingFromStringBindingA(RPC_CSTR StringBinding,RPC_BINDING_HANDLE *Binding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingFromStringBindingW(RPC_WSTR StringBinding,RPC_BINDING_HANDLE *Binding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSsGetContextBinding(void *ContextHandle,RPC_BINDING_HANDLE *Binding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqObject(RPC_BINDING_HANDLE Binding,UUID *ObjectUuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingReset(RPC_BINDING_HANDLE Binding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetObject(RPC_BINDING_HANDLE Binding,UUID *ObjectUuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqDefaultProtectLevel(unsigned long AuthnSvc,unsigned long *AuthnLevel); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingToStringBindingA(RPC_BINDING_HANDLE Binding,RPC_CSTR *StringBinding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingToStringBindingW(RPC_BINDING_HANDLE Binding,RPC_WSTR *StringBinding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingVectorFree(RPC_BINDING_VECTOR **BindingVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingComposeA(RPC_CSTR ObjUuid,RPC_CSTR Protseq,RPC_CSTR NetworkAddr,RPC_CSTR Endpoint,RPC_CSTR Options,RPC_CSTR *StringBinding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingComposeW(RPC_WSTR ObjUuid,RPC_WSTR Protseq,RPC_WSTR NetworkAddr,RPC_WSTR Endpoint,RPC_WSTR Options,RPC_WSTR *StringBinding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingParseA(RPC_CSTR StringBinding,RPC_CSTR *ObjUuid,RPC_CSTR *Protseq,RPC_CSTR *NetworkAddr,RPC_CSTR *Endpoint,RPC_CSTR *NetworkOptions); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingParseW(RPC_WSTR StringBinding,RPC_WSTR *ObjUuid,RPC_WSTR *Protseq,RPC_WSTR *NetworkAddr,RPC_WSTR *Endpoint,RPC_WSTR *NetworkOptions); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcStringFreeA(RPC_CSTR *String); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcStringFreeW(RPC_WSTR *String); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcIfInqId(RPC_IF_HANDLE RpcIfHandle,RPC_IF_ID *RpcIfId); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkIsProtseqValidA(RPC_CSTR Protseq); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkIsProtseqValidW(RPC_WSTR Protseq); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqComTimeout(RPC_BINDING_HANDLE Binding,unsigned int *Timeout); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetComTimeout(RPC_BINDING_HANDLE Binding,unsigned int Timeout); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetCancelTimeout(long Timeout); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkInqProtseqsA (RPC_PROTSEQ_VECTORA **ProtseqVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkInqProtseqsW (RPC_PROTSEQ_VECTORW **ProtseqVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcObjectInqType(UUID *ObjUuid,UUID *TypeUuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *InquiryFn); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcObjectSetType(UUID *ObjUuid,UUID *TypeUuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA **ProtseqVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW **ProtseqVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqBindings (RPC_BINDING_VECTOR **BindingVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqIf(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void **MgrEpv); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerListen(unsigned int MinimumCallThreads,unsigned int MaxCalls,unsigned int DontWait); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterIf(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void *MgrEpv); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterIfEx(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void *MgrEpv,unsigned int Flags,unsigned int MaxCalls,RPC_IF_CALLBACK_FN *IfCallback); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterIf2(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void *MgrEpv,unsigned int Flags,unsigned int MaxCalls,unsigned int MaxRpcSize,RPC_IF_CALLBACK_FN *IfCallbackFn); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUnregisterIf(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,unsigned int WaitForCallsToComplete); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUnregisterIfEx(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,int RundownContextHandles); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqs(unsigned int MaxCalls,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqsEx(unsigned int MaxCalls,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqsIf(unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqsIfEx(unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqA(RPC_CSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqExA(RPC_CSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqW(RPC_WSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqExW(RPC_WSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_CSTR Endpoint,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpExA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_CSTR Endpoint,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_WSTR Endpoint,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpExW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_WSTR Endpoint,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfExA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfExW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor,PRPC_POLICY Policy); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcServerYield (void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtStatsVectorFree(RPC_STATS_VECTOR **StatsVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqStats(RPC_BINDING_HANDLE Binding,RPC_STATS_VECTOR **Statistics); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtStopServerListening(RPC_BINDING_HANDLE Binding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtWaitServerListen(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetServerStackSize(unsigned long ThreadStackSize); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsDontSerializeContext(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEnableIdleCleanup(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqIfIds(RPC_BINDING_HANDLE Binding,RPC_IF_ID_VECTOR **IfIdVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcIfIdVectorFree(RPC_IF_ID_VECTOR **IfIdVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE Binding,unsigned long AuthnSvc,RPC_CSTR *ServerPrincName); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE Binding,unsigned long AuthnSvc,RPC_WSTR *ServerPrincName); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqDefaultPrincNameA(unsigned long AuthnSvc,RPC_CSTR *PrincName); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqDefaultPrincNameW(unsigned long AuthnSvc,RPC_WSTR *PrincName); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcEpResolveBinding(RPC_BINDING_HANDLE Binding,RPC_IF_HANDLE IfSpec); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_CSTR *EntryName); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_WSTR *EntryName); + typedef void *RPC_AUTH_IDENTITY_HANDLE; + typedef void *RPC_AUTHZ_HANDLE; +#define RPC_C_AUTHN_LEVEL_DEFAULT 0 +#define RPC_C_AUTHN_LEVEL_NONE 1 +#define RPC_C_AUTHN_LEVEL_CONNECT 2 +#define RPC_C_AUTHN_LEVEL_CALL 3 +#define RPC_C_AUTHN_LEVEL_PKT 4 +#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5 +#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6 +#define RPC_C_IMP_LEVEL_DEFAULT 0 +#define RPC_C_IMP_LEVEL_ANONYMOUS 1 +#define RPC_C_IMP_LEVEL_IDENTIFY 2 +#define RPC_C_IMP_LEVEL_IMPERSONATE 3 +#define RPC_C_IMP_LEVEL_DELEGATE 4 +#define RPC_C_QOS_IDENTITY_STATIC 0 +#define RPC_C_QOS_IDENTITY_DYNAMIC 1 +#define RPC_C_QOS_CAPABILITIES_DEFAULT 0x0 +#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 0x1 +#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC 0x2 +#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 0x4 +#define RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE 0x8 +#define RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT 0x10 +#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT) +#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE) +#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT) +#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL) +#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT) +#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY) +#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY) +#define RPC_C_AUTHN_NONE 0 +#define RPC_C_AUTHN_DCE_PRIVATE 1 +#define RPC_C_AUTHN_DCE_PUBLIC 2 +#define RPC_C_AUTHN_DEC_PUBLIC 4 +#define RPC_C_AUTHN_GSS_NEGOTIATE 9 +#define RPC_C_AUTHN_WINNT 10 +#define RPC_C_AUTHN_GSS_SCHANNEL 14 +#define RPC_C_AUTHN_GSS_KERBEROS 16 +#define RPC_C_AUTHN_DPA 17 +#define RPC_C_AUTHN_MSN 18 +#define RPC_C_AUTHN_DIGEST 21 +#define RPC_C_AUTHN_MQ 100 +#define RPC_C_AUTHN_DEFAULT __MSABI_LONG(0xFFFFFFFF) +#define RPC_C_NO_CREDENTIALS ((RPC_AUTH_IDENTITY_HANDLE) MAXUINT_PTR) +#define RPC_C_SECURITY_QOS_VERSION __MSABI_LONG(1) +#define RPC_C_SECURITY_QOS_VERSION_1 __MSABI_LONG(1) + typedef struct _RPC_SECURITY_QOS { + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; + } RPC_SECURITY_QOS,*PRPC_SECURITY_QOS; +#define _AUTH_IDENTITY_DEFINED +#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1 +#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2 + typedef struct _SEC_WINNT_AUTH_IDENTITY_W { + unsigned short *User; + unsigned long UserLength; + unsigned short *Domain; + unsigned long DomainLength; + unsigned short *Password; + unsigned long PasswordLength; + unsigned long Flags; + } SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W; + typedef struct _SEC_WINNT_AUTH_IDENTITY_A { + unsigned char *User; + unsigned long UserLength; + unsigned char *Domain; + unsigned long DomainLength; + unsigned char *Password; + unsigned long PasswordLength; + unsigned long Flags; + } SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A; +#define SEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(SEC_WINNT_AUTH_IDENTITY) +#define PSEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(PSEC_WINNT_AUTH_IDENTITY) +#define _SEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(_SEC_WINNT_AUTH_IDENTITY) +#define RPC_C_SECURITY_QOS_VERSION_2 __MSABI_LONG(2) +#define RPC_C_AUTHN_INFO_TYPE_HTTP 1 +#define RPC_C_HTTP_AUTHN_TARGET_SERVER 1 +#define RPC_C_HTTP_AUTHN_TARGET_PROXY 2 +#define RPC_C_HTTP_AUTHN_SCHEME_BASIC 0x00000001 +#define RPC_C_HTTP_AUTHN_SCHEME_NTLM 0x00000002 +#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT 0x00000004 +#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST 0x00000008 +#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x00000010 +#define RPC_C_HTTP_AUTHN_SCHEME_CERT 0x00010000 +#define RPC_C_HTTP_FLAG_USE_SSL 1 +#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 2 +#define RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID 8 + typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W { + SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials; + unsigned long Flags; + unsigned long AuthenticationTarget; + unsigned long NumberOfAuthnSchemes; + unsigned long *AuthnSchemes; + unsigned short *ServerCertificateSubject; + } RPC_HTTP_TRANSPORT_CREDENTIALS_W,*PRPC_HTTP_TRANSPORT_CREDENTIALS_W; + typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A { + SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials; + unsigned long Flags; + unsigned long AuthenticationTarget; + unsigned long NumberOfAuthnSchemes; + unsigned long *AuthnSchemes; + unsigned char *ServerCertificateSubject; + } RPC_HTTP_TRANSPORT_CREDENTIALS_A,*PRPC_HTTP_TRANSPORT_CREDENTIALS_A; + typedef struct _RPC_SECURITY_QOS_V2_W { + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; + unsigned long AdditionalSecurityInfoType; + union { + RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials; + } u; + } RPC_SECURITY_QOS_V2_W,*PRPC_SECURITY_QOS_V2_W; + typedef struct _RPC_SECURITY_QOS_V2_A { + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; + unsigned long AdditionalSecurityInfoType; + union { + RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials; + } u; + } RPC_SECURITY_QOS_V2_A,*PRPC_SECURITY_QOS_V2_A; +#define RPC_C_SECURITY_QOS_VERSION_3 __MSABI_LONG(3) + typedef struct _RPC_SECURITY_QOS_V3_W { + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; + unsigned long AdditionalSecurityInfoType; + union { + RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials; + } u; + void *Sid; + } RPC_SECURITY_QOS_V3_W,*PRPC_SECURITY_QOS_V3_W; + typedef struct _RPC_SECURITY_QOS_V3_A { + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; + unsigned long AdditionalSecurityInfoType; + union { + RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials; + } u; + void *Sid; + } RPC_SECURITY_QOS_V3_A,*PRPC_SECURITY_QOS_V3_A; +#define RPC_SECURITY_QOS_V2 __MINGW_NAME_UAW(RPC_SECURITY_QOS_V2) +#define PRPC_SECURITY_QOS_V2 __MINGW_NAME_UAW(PRPC_SECURITY_QOS_V2) +#define _RPC_SECURITY_QOS_V2 __MINGW_NAME_UAW(_RPC_SECURITY_QOS_V2) +#define RPC_HTTP_TRANSPORT_CREDENTIALS __MINGW_NAME_UAW(RPC_HTTP_TRANSPORT_CREDENTIALS) +#define PRPC_HTTP_TRANSPORT_CREDENTIALS __MINGW_NAME_UAW(PRPC_HTTP_TRANSPORT_CREDENTIALS) +#define _RPC_HTTP_TRANSPORT_CREDENTIALS __MINGW_NAME_UAW(_RPC_HTTP_TRANSPORT_CREDENTIALS) +#define RPC_SECURITY_QOS_V3 __MINGW_NAME_UAW(RPC_SECURITY_QOS_V3) +#define PRPC_SECURITY_QOS_V3 __MINGW_NAME_UAW(PRPC_SECURITY_QOS_V3) +#define _RPC_SECURITY_QOS_V3 __MINGW_NAME_UAW(_RPC_SECURITY_QOS_V3) + typedef enum _RPC_HTTP_REDIRECTOR_STAGE { + RPCHTTP_RS_REDIRECT = 1,RPCHTTP_RS_ACCESS_1,RPCHTTP_RS_SESSION,RPCHTTP_RS_ACCESS_2,RPCHTTP_RS_INTERFACE + } RPC_HTTP_REDIRECTOR_STAGE; + typedef RPC_STATUS (__attribute__((__stdcall__)) *RPC_NEW_HTTP_PROXY_CHANNEL)(RPC_HTTP_REDIRECTOR_STAGE RedirectorStage,unsigned short *ServerName,unsigned short *ServerPort,unsigned short *RemoteUser,unsigned short *AuthType,void *ResourceUuid,void *Metadata,void *SessionId,void *Interface,void *Reserved,unsigned long Flags,unsigned short **NewServerName,unsigned short **NewServerPort); + typedef void (__attribute__((__stdcall__)) *RPC_HTTP_PROXY_FREE_STRING)(unsigned short *String); +#define RPC_C_AUTHZ_NONE 0 +#define RPC_C_AUTHZ_NAME 1 +#define RPC_C_AUTHZ_DCE 2 +#define RPC_C_AUTHZ_DEFAULT 0xffffffff + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcImpersonateClient(RPC_BINDING_HANDLE BindingHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcRevertToSelfEx(RPC_BINDING_HANDLE BindingHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcRevertToSelf(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientA(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientW(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientExA(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc,unsigned long Flags); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientExW(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc,unsigned long Flags); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE Binding,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE Binding,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE Binding,RPC_CSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE Binding,RPC_CSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc,RPC_SECURITY_QOS *SecurityQos); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE Binding,RPC_WSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE Binding,RPC_WSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc,RPC_SECURITY_QOS *SecurityQOS); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE Binding,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc,unsigned long RpcQosVersion,RPC_SECURITY_QOS *SecurityQOS); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE Binding,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc,unsigned long RpcQosVersion,RPC_SECURITY_QOS *SecurityQOS); + typedef void (__attribute__((__stdcall__)) *RPC_AUTH_KEY_RETRIEVAL_FN)(void *Arg,unsigned short *ServerPrincName,unsigned long KeyVer,void **Key,RPC_STATUS *Status); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterAuthInfoA(RPC_CSTR ServerPrincName,unsigned long AuthnSvc,RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,void *Arg); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterAuthInfoW(RPC_WSTR ServerPrincName,unsigned long AuthnSvc,RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,void *Arg); +#define RpcBindingInqAuthClient __MINGW_NAME_AW(RpcBindingInqAuthClient) +#define RpcBindingInqAuthClientEx __MINGW_NAME_AW(RpcBindingInqAuthClientEx) +#define RpcBindingInqAuthInfo __MINGW_NAME_AW(RpcBindingInqAuthInfo) +#define RpcBindingSetAuthInfo __MINGW_NAME_AW(RpcBindingSetAuthInfo) +#define RpcServerRegisterAuthInfo __MINGW_NAME_AW(RpcServerRegisterAuthInfo) +#define RpcBindingInqAuthInfoEx __MINGW_NAME_AW(RpcBindingInqAuthInfoEx) +#define RpcBindingSetAuthInfoEx __MINGW_NAME_AW(RpcBindingSetAuthInfoEx) + typedef struct { + unsigned char *UserName; + unsigned char *ComputerName; + unsigned short Privilege; + unsigned long AuthFlags; + } RPC_CLIENT_INFORMATION1,*PRPC_CLIENT_INFORMATION1; +#define UuidFromString __MINGW_NAME_AW(UuidFromString) +#define UuidToString __MINGW_NAME_AW(UuidToString) +#define RpcEpRegisterNoReplace __MINGW_NAME_AW(RpcEpRegisterNoReplace) +#define RpcEpRegister __MINGW_NAME_AW(RpcEpRegister) +#define DceErrorInqText __MINGW_NAME_AW(DceErrorInqText) +#define DCE_C_ERROR_STRING_LEN 256 + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcBindingServerFromClient(RPC_BINDING_HANDLE ClientBinding,RPC_BINDING_HANDLE *ServerBinding); + __declspec (dllimport) __declspec (noreturn) void __attribute__((__stdcall__)) RpcRaiseException(RPC_STATUS exception); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcTestCancel(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerTestCancel(RPC_BINDING_HANDLE BindingHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcCancelThread(void *Thread); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcCancelThreadEx(void *Thread,long Timeout); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) UuidCreate(UUID *Uuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) UuidCreateSequential(UUID *Uuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) UuidToStringA(const UUID *Uuid,RPC_CSTR *StringUuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) UuidFromStringA(RPC_CSTR StringUuid,UUID *Uuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) UuidToStringW(const UUID *Uuid,RPC_WSTR *StringUuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) UuidFromStringW(RPC_WSTR StringUuid,UUID *Uuid); + __declspec (dllimport) signed int __attribute__((__stdcall__)) UuidCompare(UUID *Uuid1,UUID *Uuid2,RPC_STATUS *Status); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) UuidCreateNil(UUID *NilUuid); + __declspec (dllimport) int __attribute__((__stdcall__)) UuidEqual(UUID *Uuid1,UUID *Uuid2,RPC_STATUS *Status); + __declspec (dllimport) unsigned short __attribute__((__stdcall__)) UuidHash(UUID *Uuid,RPC_STATUS *Status); + __declspec (dllimport) int __attribute__((__stdcall__)) UuidIsNil(UUID *Uuid,RPC_STATUS *Status); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterNoReplaceA(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_CSTR Annotation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterNoReplaceW(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_WSTR Annotation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterA(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_CSTR Annotation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterW(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_WSTR Annotation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcEpUnregister(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) DceErrorInqTextA(RPC_STATUS RpcStatus,RPC_CSTR ErrorText); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) DceErrorInqTextW(RPC_STATUS RpcStatus,RPC_WSTR ErrorText); + typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE; +#define RPC_C_EP_ALL_ELTS 0 +#define RPC_C_EP_MATCH_BY_IF 1 +#define RPC_C_EP_MATCH_BY_OBJ 2 +#define RPC_C_EP_MATCH_BY_BOTH 3 +#define RPC_C_VERS_ALL 1 +#define RPC_C_VERS_COMPATIBLE 2 +#define RPC_C_VERS_EXACT 3 +#define RPC_C_VERS_MAJOR_ONLY 4 +#define RPC_C_VERS_UPTO 5 +#define RpcMgmtEpEltInqNext __MINGW_NAME_AW(RpcMgmtEpEltInqNext) + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE EpBinding,unsigned long InquiryType,RPC_IF_ID *IfId,unsigned long VersOption,UUID *ObjectUuid,RPC_EP_INQ_HANDLE *InquiryContext); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE *InquiryContext); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_BINDING_HANDLE *Binding,UUID *ObjectUuid,RPC_CSTR *Annotation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_BINDING_HANDLE *Binding,UUID *ObjectUuid,RPC_WSTR *Annotation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpUnregister(RPC_BINDING_HANDLE EpBinding,RPC_IF_ID *IfId,RPC_BINDING_HANDLE Binding,UUID *ObjectUuid); + typedef int (__attribute__((__stdcall__)) *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE ClientBinding,unsigned long RequestedMgmtOperation,RPC_STATUS *Status); +#define RPC_C_MGMT_INQ_IF_IDS 0 +#define RPC_C_MGMT_INQ_PRINC_NAME 1 +#define RPC_C_MGMT_INQ_STATS 2 +#define RPC_C_MGMT_IS_SERVER_LISTEN 3 +#define RPC_C_MGMT_STOP_SERVER_LISTEN 4 + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN AuthorizationFn); +#define RPC_C_PARM_MAX_PACKET_LENGTH 1 +#define RPC_C_PARM_BUFFER_LENGTH 2 +#define RPC_IF_AUTOLISTEN 0x0001 +#define RPC_IF_OLE 0x0002 +#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004 +#define RPC_IF_ALLOW_SECURE_ONLY 0x0008 +#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010 +#define RPC_IF_ALLOW_LOCAL_ONLY 0x0020 +#define RPC_IF_SEC_NO_CACHE 0x0040 +typedef struct _RPC_BINDING_HANDLE_OPTIONS_V1 { + unsigned long Version; + unsigned long Flags; + unsigned long ComTimeout; + unsigned long CallTimeout; +} RPC_BINDING_HANDLE_OPTIONS_V1, RPC_BINDING_HANDLE_OPTIONS; +typedef struct { + unsigned long Version; + unsigned short *ServerPrincName; + unsigned long AuthnLevel; + unsigned long AuthnSvc; + SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity; + RPC_SECURITY_QOS *SecurityQos; +} RPC_BINDING_HANDLE_SECURITY_V1, RPC_BINDING_HANDLE_SECURITY; +typedef struct _RPC_BINDING_HANDLE_TEMPLATE { + unsigned long Version; + unsigned long Flags; + unsigned long ProtocolSequence; + unsigned short *NetworkAddress; + unsigned short *StringEndpoint; + union { + unsigned short *Reserved; + } u1; + UUID ObjectUuid; +} RPC_BINDING_HANDLE_TEMPLATE_V1, RPC_BINDING_HANDLE_TEMPLATE; +#define RPC_CALL_STATUS_IN_PROGRESS 0x01 +#define RPC_CALL_STATUS_CANCELLED 0x02 +#define RPC_CALL_STATUS_DISCONNECTED 0x03 +RPC_STATUS __attribute__((__stdcall__)) RpcBindingCreateA( + RPC_BINDING_HANDLE_TEMPLATE *Template, + RPC_BINDING_HANDLE_SECURITY *Security, + RPC_BINDING_HANDLE_OPTIONS *Options, + RPC_BINDING_HANDLE *Binding +); +RPC_STATUS __attribute__((__stdcall__)) RpcBindingCreateW( + RPC_BINDING_HANDLE_TEMPLATE *Template, + RPC_BINDING_HANDLE_SECURITY *Security, + RPC_BINDING_HANDLE_OPTIONS *Options, + RPC_BINDING_HANDLE *Binding +); +#define RpcBindingCreate __MINGW_NAME_AW(RpcBindingCreate) +RPC_STATUS RpcServerInqBindingHandle( + RPC_BINDING_HANDLE *Binding +); +#define __RPCDCEP_H__ + typedef struct _RPC_VERSION { + unsigned short MajorVersion; + unsigned short MinorVersion; + } RPC_VERSION; + typedef struct _RPC_SYNTAX_IDENTIFIER { + GUID SyntaxGUID; + RPC_VERSION SyntaxVersion; + } RPC_SYNTAX_IDENTIFIER,*PRPC_SYNTAX_IDENTIFIER; + typedef struct _RPC_MESSAGE { + RPC_BINDING_HANDLE Handle; + unsigned long DataRepresentation; + void *Buffer; + unsigned int BufferLength; + unsigned int ProcNum; + PRPC_SYNTAX_IDENTIFIER TransferSyntax; + void *RpcInterfaceInformation; + void *ReservedForRuntime; + void *ManagerEpv; + void *ImportContext; + unsigned long RpcFlags; + } RPC_MESSAGE,*PRPC_MESSAGE; + typedef RPC_STATUS __attribute__((__stdcall__)) RPC_FORWARD_FUNCTION(UUID *InterfaceId,RPC_VERSION *InterfaceVersion,UUID *ObjectId,unsigned char *Rpcpro,void **ppDestEndpoint); + enum RPC_ADDRESS_CHANGE_TYPE { + PROTOCOL_NOT_LOADED = 1,PROTOCOL_LOADED,PROTOCOL_ADDRESS_CHANGE + }; + typedef void __attribute__((__stdcall__)) RPC_ADDRESS_CHANGE_FN(void *arg); +#define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *) -4083) +#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS __MSABI_LONG(0x00000000U) +#define RPC_CONTEXT_HANDLE_FLAGS __MSABI_LONG(0x30000000U) +#define RPC_CONTEXT_HANDLE_SERIALIZE __MSABI_LONG(0x10000000U) +#define RPC_CONTEXT_HANDLE_DONT_SERIALIZE __MSABI_LONG(0x20000000U) +#define RPC_NCA_FLAGS_DEFAULT 0x00000000 +#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 +#define RPC_NCA_FLAGS_BROADCAST 0x00000002 +#define RPC_NCA_FLAGS_MAYBE 0x00000004 +#define RPC_BUFFER_COMPLETE 0x00001000 +#define RPC_BUFFER_PARTIAL 0x00002000 +#define RPC_BUFFER_EXTRA 0x00004000 +#define RPC_BUFFER_ASYNC 0x00008000 +#define RPC_BUFFER_NONOTIFY 0x00010000 +#define RPCFLG_MESSAGE __MSABI_LONG(0x01000000U) +#define RPCFLG_AUTO_COMPLETE __MSABI_LONG(0x08000000U) +#define RPCFLG_LOCAL_CALL __MSABI_LONG(0x10000000U) +#define RPCFLG_INPUT_SYNCHRONOUS __MSABI_LONG(0x20000000U) +#define RPCFLG_ASYNCHRONOUS __MSABI_LONG(0x40000000U) +#define RPCFLG_NON_NDR __MSABI_LONG(0x80000000U) +#define RPCFLG_HAS_MULTI_SYNTAXES __MSABI_LONG(0x02000000U) +#define RPCFLG_HAS_CALLBACK __MSABI_LONG(0x04000000U) +#define RPC_FLAGS_VALID_BIT 0x00008000 + typedef void (__attribute__((__stdcall__)) *RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message); + typedef struct { + unsigned int DispatchTableCount; + RPC_DISPATCH_FUNCTION *DispatchTable; + LONG_PTR Reserved; + } RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE; + typedef struct _RPC_PROTSEQ_ENDPOINT { + unsigned char *RpcProtocolSequence; + unsigned char *Endpoint; + } RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT; +#define NT351_INTERFACE_SIZE 0x40 +#define RPC_INTERFACE_HAS_PIPES 0x0001 + typedef struct _RPC_SERVER_INTERFACE { + unsigned int Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + unsigned int RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + void *DefaultManagerEpv; + void const *InterpreterInfo; + unsigned int Flags; + } RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE; + typedef struct _RPC_CLIENT_INTERFACE { + unsigned int Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + unsigned int RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + ULONG_PTR Reserved; + void const *InterpreterInfo; + unsigned int Flags; + } RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE; + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcNegotiateTransferSyntax(RPC_MESSAGE *Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetBuffer(RPC_MESSAGE *Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetBufferWithObject(RPC_MESSAGE *Message,UUID *ObjectUuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcSendReceive(RPC_MESSAGE *Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcFreeBuffer(RPC_MESSAGE *Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcSend(PRPC_MESSAGE Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcReceive(PRPC_MESSAGE Message,unsigned int Size); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcFreePipeBuffer(RPC_MESSAGE *Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcReallocPipeBuffer(PRPC_MESSAGE Message,unsigned int NewSize); + typedef void *I_RPC_MUTEX; +#define I_RpcNsBindingSetEntryName __MINGW_NAME_AW(I_RpcNsBindingSetEntryName) +#define I_RpcServerUseProtseqEp2 __MINGW_NAME_AW(I_RpcServerUseProtseqEp2) +#define I_RpcServerUseProtseq2 __MINGW_NAME_AW(I_RpcServerUseProtseq2) +#define I_RpcBindingInqDynamicEndpoint __MINGW_NAME_AW(I_RpcBindingInqDynamicEndpoint) + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcRequestMutex(I_RPC_MUTEX *Mutex); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcClearMutex(I_RPC_MUTEX Mutex); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcDeleteMutex(I_RPC_MUTEX Mutex); + __declspec (dllimport) void *__attribute__((__stdcall__)) I_RpcAllocate(unsigned int Size); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcFree(void *Object); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcPauseExecution(unsigned long Milliseconds); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetExtendedError(void); + typedef void (__attribute__((__stdcall__)) *PRPC_RUNDOWN)(void *AssociationContext); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcMonitorAssociation(RPC_BINDING_HANDLE Handle,PRPC_RUNDOWN RundownRoutine,void *Context); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcStopMonitorAssociation(RPC_BINDING_HANDLE Handle); + __declspec (dllimport) RPC_BINDING_HANDLE __attribute__((__stdcall__)) I_RpcGetCurrentCallHandle(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetAssociationContext(RPC_BINDING_HANDLE BindingHandle,void **AssociationContext); + __declspec (dllimport) void *__attribute__((__stdcall__)) I_RpcGetServerContextList(RPC_BINDING_HANDLE BindingHandle); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcSetServerContextList(RPC_BINDING_HANDLE BindingHandle,void *ServerContextList); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsInterfaceExported(unsigned long EntryNameSyntax,unsigned short *EntryName,RPC_SERVER_INTERFACE *RpcInterfaceInformation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsInterfaceUnexported(unsigned long EntryNameSyntax,unsigned short *EntryName,RPC_SERVER_INTERFACE *RpcInterfaceInformation); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingToStaticStringBindingW(RPC_BINDING_HANDLE Binding,unsigned short **StringBinding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqSecurityContext(RPC_BINDING_HANDLE Binding,void **SecurityContextHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqWireIdForSnego(RPC_BINDING_HANDLE Binding,RPC_CSTR WireId); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqMarshalledTargetInfo (RPC_BINDING_HANDLE Binding,unsigned long *MarshalledTargetInfoLength,RPC_CSTR *MarshalledTargetInfo); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqLocalClientPID(RPC_BINDING_HANDLE Binding,unsigned long *Pid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingHandleToAsyncHandle(RPC_BINDING_HANDLE Binding,void **AsyncHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsBindingSetEntryNameW(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_WSTR EntryName); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsBindingSetEntryNameA(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_CSTR EntryName); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseqEp2A(RPC_CSTR NetworkAddress,RPC_CSTR Protseq,unsigned int MaxCalls,RPC_CSTR Endpoint,void *SecurityDescriptor,void *Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseqEp2W(RPC_WSTR NetworkAddress,RPC_WSTR Protseq,unsigned int MaxCalls,RPC_WSTR Endpoint,void *SecurityDescriptor,void *Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseq2W(RPC_WSTR NetworkAddress,RPC_WSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,void *Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseq2A(RPC_CSTR NetworkAddress,RPC_CSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,void *Policy); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqDynamicEndpointW(RPC_BINDING_HANDLE Binding,RPC_WSTR *DynamicEndpoint); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqDynamicEndpointA(RPC_BINDING_HANDLE Binding,RPC_CSTR *DynamicEndpoint); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerCheckClientRestriction(RPC_BINDING_HANDLE Context); +#define TRANSPORT_TYPE_CN 0x01 +#define TRANSPORT_TYPE_DG 0x02 +#define TRANSPORT_TYPE_LPC 0x04 +#define TRANSPORT_TYPE_WMSG 0x08 + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqTransportType(RPC_BINDING_HANDLE Binding,unsigned int *Type); + typedef struct _RPC_TRANSFER_SYNTAX { + UUID Uuid; + unsigned short VersMajor; + unsigned short VersMinor; + } RPC_TRANSFER_SYNTAX; + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcIfInqTransferSyntaxes(RPC_IF_HANDLE RpcIfHandle,RPC_TRANSFER_SYNTAX *TransferSyntaxes,unsigned int TransferSyntaxSize,unsigned int *TransferSyntaxCount); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_UuidCreate(UUID *Uuid); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding,RPC_BINDING_HANDLE *DestinationBinding); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingIsClientLocal(RPC_BINDING_HANDLE BindingHandle,unsigned int *ClientLocalFlag); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqConnId(RPC_BINDING_HANDLE Binding,void **ConnId,int *pfFirstCall); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcSsDontSerializeContext(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcLaunchDatagramReceiveThread(void *pAddress); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION *pForwardFunction); + RPC_ADDRESS_CHANGE_FN *__attribute__((__stdcall__)) I_RpcServerInqAddressChangeFn(void); + RPC_STATUS __attribute__((__stdcall__)) I_RpcServerSetAddressChangeFn(RPC_ADDRESS_CHANGE_FN *pAddressChangeFn); +#define RPC_P_ADDR_FORMAT_TCP_IPV4 1 +#define RPC_P_ADDR_FORMAT_TCP_IPV6 2 + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerInqLocalConnAddress(RPC_BINDING_HANDLE Binding,void *Buffer,unsigned long *BufferSize,unsigned long *AddressFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcSessionStrictContextHandle(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcTurnOnEEInfoPropagation(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcConnectionInqSockBuffSize(unsigned long *RecvBuffSize,unsigned long *SendBuffSize); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcConnectionSetSockBuffSize(unsigned long RecvBuffSize,unsigned long SendBuffSize); + typedef void (*RPCLT_PDU_FILTER_FUNC)(void *Buffer,unsigned int BufferLength,int fDatagram); + typedef void (__attribute__((__cdecl__)) *RPC_SETFILTER_FUNC)(RPCLT_PDU_FILTER_FUNC pfnFilter); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerInqTransportType(unsigned int *Type); + __declspec (dllimport) long __attribute__((__stdcall__)) I_RpcMapWin32Status(RPC_STATUS Status); + typedef struct _RPC_C_OPT_METADATA_DESCRIPTOR { + unsigned long BufferSize; + char *Buffer; + } RPC_C_OPT_METADATA_DESCRIPTOR; + typedef struct _RDR_CALLOUT_STATE { + RPC_STATUS LastError; + void *LastEEInfo; + RPC_HTTP_REDIRECTOR_STAGE LastCalledStage; + unsigned short *ServerName; + unsigned short *ServerPort; + unsigned short *RemoteUser; + unsigned short *AuthType; + unsigned char ResourceTypePresent; + unsigned char MetadataPresent; + unsigned char SessionIdPresent; + unsigned char InterfacePresent; + UUID ResourceType; + RPC_C_OPT_METADATA_DESCRIPTOR Metadata; + UUID SessionId; + RPC_SYNTAX_IDENTIFIER Interface; + void *CertContext; + } RDR_CALLOUT_STATE; + typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcProxyIsValidMachineFn)(char *pszMachine,char *pszDotMachine,unsigned long dwPortNumber); + typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcProxyGetClientAddressFn)(void *Context,char *Buffer,unsigned long *BufferLength); + typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcProxyGetConnectionTimeoutFn)(unsigned long *ConnectionTimeout); + typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcPerformCalloutFn)(void *Context,RDR_CALLOUT_STATE *CallOutState,RPC_HTTP_REDIRECTOR_STAGE Stage); + typedef void (__attribute__((__stdcall__)) *I_RpcFreeCalloutStateFn)(RDR_CALLOUT_STATE *CallOutState); + typedef struct tagI_RpcProxyCallbackInterface { + I_RpcProxyIsValidMachineFn IsValidMachineFn; + I_RpcProxyGetClientAddressFn GetClientAddressFn; + I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn; + I_RpcPerformCalloutFn PerformCalloutFn; + I_RpcFreeCalloutStateFn FreeCalloutStateFn; + } I_RpcProxyCallbackInterface; +#define RPC_PROXY_CONNECTION_TYPE_IN_PROXY 0 +#define RPC_PROXY_CONNECTION_TYPE_OUT_PROXY 1 + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcProxyNewConnection(unsigned long ConnectionType,unsigned short *ServerAddress,unsigned short *ServerPort,unsigned short *MinConnTimeout,void *ConnectionParameter,RDR_CALLOUT_STATE *CallOutState,I_RpcProxyCallbackInterface *ProxyCallbackInterface); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcReplyToClientWithStatus(void *ConnectionParameter,RPC_STATUS RpcStatus); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcRecordCalloutFailure(RPC_STATUS RpcStatus,RDR_CALLOUT_STATE *CallOutState,unsigned short *DllName); + +#define __RPCNSI_H__ +typedef void *RPC_NS_HANDLE; +#define RPC_C_NS_SYNTAX_DEFAULT 0 +#define RPC_C_NS_SYNTAX_DCE 3 +#define RPC_C_PROFILE_DEFAULT_ELT 0 +#define RPC_C_PROFILE_ALL_ELT 1 +#define RPC_C_PROFILE_ALL_ELTS RPC_C_PROFILE_ALL_ELT +#define RPC_C_PROFILE_MATCH_BY_IF 2 +#define RPC_C_PROFILE_MATCH_BY_MBR 3 +#define RPC_C_PROFILE_MATCH_BY_BOTH 4 +#define RPC_C_NS_DEFAULT_EXP_AGE -1 +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVec,UUID_VECTOR *ObjectUuidVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectUuidVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVec,UUID_VECTOR *ObjectUuidVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectUuidVec); +RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportPnPA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector); +RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportPnPA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector); +RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportPnPW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector); +RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportPnPW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupBeginA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,unsigned long BindingMaxCount,RPC_NS_HANDLE *LookupContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupBeginW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,unsigned long BindingMaxCount,RPC_NS_HANDLE *LookupContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupNext(RPC_NS_HANDLE LookupContext,RPC_BINDING_VECTOR **BindingVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupDone(RPC_NS_HANDLE *LookupContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupDeleteA(unsigned long GroupNameSyntax,RPC_CSTR GroupName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrAddA(unsigned long GroupNameSyntax,RPC_CSTR GroupName,unsigned long MemberNameSyntax,RPC_CSTR MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrRemoveA(unsigned long GroupNameSyntax,RPC_CSTR GroupName,unsigned long MemberNameSyntax,RPC_CSTR MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqBeginA(unsigned long GroupNameSyntax,RPC_CSTR GroupName,unsigned long MemberNameSyntax,RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqNextA(RPC_NS_HANDLE InquiryContext,RPC_CSTR *MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupDeleteW(unsigned long GroupNameSyntax,RPC_WSTR GroupName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrAddW(unsigned long GroupNameSyntax,RPC_WSTR GroupName,unsigned long MemberNameSyntax,RPC_WSTR MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrRemoveW(unsigned long GroupNameSyntax,RPC_WSTR GroupName,unsigned long MemberNameSyntax,RPC_WSTR MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqBeginW(unsigned long GroupNameSyntax,RPC_WSTR GroupName,unsigned long MemberNameSyntax,RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqNextW(RPC_NS_HANDLE InquiryContext,RPC_WSTR *MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqDone(RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileDeleteA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltAddA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_CSTR MemberName,unsigned long Priority,RPC_CSTR Annotation); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltRemoveA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_CSTR MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqBeginA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName,unsigned long InquiryType,RPC_IF_ID *IfId,unsigned long VersOption,unsigned long MemberNameSyntax,RPC_CSTR MemberName,RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqNextA(RPC_NS_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_CSTR *MemberName,unsigned long *Priority,RPC_CSTR *Annotation); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileDeleteW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltAddW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_WSTR MemberName,unsigned long Priority,RPC_WSTR Annotation); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltRemoveW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_WSTR MemberName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqBeginW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName,unsigned long InquiryType,RPC_IF_ID *IfId,unsigned long VersOption,unsigned long MemberNameSyntax,RPC_WSTR MemberName,RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqNextW(RPC_NS_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_WSTR *MemberName,unsigned long *Priority,RPC_WSTR *Annotation); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqDone(RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqBeginA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqBeginW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqNext(RPC_NS_HANDLE InquiryContext,UUID *ObjUuid); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqDone(RPC_NS_HANDLE *InquiryContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryExpandNameA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_CSTR *ExpandedName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtBindingUnexportA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_ID *IfId,unsigned long VersOption,UUID_VECTOR *ObjectUuidVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryCreateA(unsigned long EntryNameSyntax,RPC_CSTR EntryName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryDeleteA(unsigned long EntryNameSyntax,RPC_CSTR EntryName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryInqIfIdsA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_ID_VECTOR **IfIdVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE NsHandle,unsigned long ExpirationAge); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtInqExpAge(unsigned long *ExpirationAge); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtSetExpAge(unsigned long ExpirationAge); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryExpandNameW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_WSTR *ExpandedName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtBindingUnexportW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_ID *IfId,unsigned long VersOption,UUID_VECTOR *ObjectUuidVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryCreateW(unsigned long EntryNameSyntax,RPC_WSTR EntryName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryDeleteW(unsigned long EntryNameSyntax,RPC_WSTR EntryName); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryInqIfIdsW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_ID_VECTOR **IfIdVec); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportBeginA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,RPC_NS_HANDLE *ImportContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportBeginW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,RPC_NS_HANDLE *ImportContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportNext(RPC_NS_HANDLE ImportContext,RPC_BINDING_HANDLE *Binding); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportDone(RPC_NS_HANDLE *ImportContext); +__declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingSelect(RPC_BINDING_VECTOR *BindingVec,RPC_BINDING_HANDLE *Binding); +#define RpcNsBindingLookupBegin __MINGW_NAME_AW(RpcNsBindingLookupBegin) +#define RpcNsBindingImportBegin __MINGW_NAME_AW(RpcNsBindingImportBegin) +#define RpcNsBindingExport __MINGW_NAME_AW(RpcNsBindingExport) +#define RpcNsBindingUnexport __MINGW_NAME_AW(RpcNsBindingUnexport) +#define RpcNsGroupDelete __MINGW_NAME_AW(RpcNsGroupDelete) +#define RpcNsGroupMbrAdd __MINGW_NAME_AW(RpcNsGroupMbrAdd) +#define RpcNsGroupMbrRemove __MINGW_NAME_AW(RpcNsGroupMbrRemove) +#define RpcNsGroupMbrInqBegin __MINGW_NAME_AW(RpcNsGroupMbrInqBegin) +#define RpcNsGroupMbrInqNext __MINGW_NAME_AW(RpcNsGroupMbrInqNext) +#define RpcNsEntryExpandName __MINGW_NAME_AW(RpcNsEntryExpandName) +#define RpcNsEntryObjectInqBegin __MINGW_NAME_AW(RpcNsEntryObjectInqBegin) +#define RpcNsMgmtBindingUnexport __MINGW_NAME_AW(RpcNsMgmtBindingUnexport) +#define RpcNsMgmtEntryCreate __MINGW_NAME_AW(RpcNsMgmtEntryCreate) +#define RpcNsMgmtEntryDelete __MINGW_NAME_AW(RpcNsMgmtEntryDelete) +#define RpcNsMgmtEntryInqIfIds __MINGW_NAME_AW(RpcNsMgmtEntryInqIfIds) +#define RpcNsProfileDelete __MINGW_NAME_AW(RpcNsProfileDelete) +#define RpcNsProfileEltAdd __MINGW_NAME_AW(RpcNsProfileEltAdd) +#define RpcNsProfileEltRemove __MINGW_NAME_AW(RpcNsProfileEltRemove) +#define RpcNsProfileEltInqBegin __MINGW_NAME_AW(RpcNsProfileEltInqBegin) +#define RpcNsProfileEltInqNext __MINGW_NAME_AW(RpcNsProfileEltInqNext) +#define RpcNsBindingExportPnP __MINGW_NAME_AW(RpcNsBindingExportPnP) +#define RpcNsBindingUnexportPnP __MINGW_NAME_AW(RpcNsBindingUnexportPnP) + +#define __RPCNTERR_H__ +#define RPC_S_OK ERROR_SUCCESS +#define RPC_S_INVALID_ARG ERROR_INVALID_PARAMETER +#define RPC_S_OUT_OF_MEMORY ERROR_OUTOFMEMORY +#define RPC_S_OUT_OF_THREADS ERROR_MAX_THRDS_REACHED +#define RPC_S_INVALID_LEVEL ERROR_INVALID_PARAMETER +#define RPC_S_BUFFER_TOO_SMALL ERROR_INSUFFICIENT_BUFFER +#define RPC_S_INVALID_SECURITY_DESC ERROR_INVALID_SECURITY_DESCR +#define RPC_S_ACCESS_DENIED ERROR_ACCESS_DENIED +#define RPC_S_SERVER_OUT_OF_MEMORY ERROR_NOT_ENOUGH_SERVER_MEMORY +#define RPC_S_ASYNC_CALL_PENDING ERROR_IO_PENDING +#define RPC_S_UNKNOWN_PRINCIPAL ERROR_NONE_MAPPED +#define RPC_S_TIMEOUT ERROR_TIMEOUT +#define RPC_X_NO_MEMORY RPC_S_OUT_OF_MEMORY +#define RPC_X_INVALID_BOUND RPC_S_INVALID_BOUND +#define RPC_X_INVALID_TAG RPC_S_INVALID_TAG +#define RPC_X_ENUM_VALUE_TOO_LARGE RPC_X_ENUM_VALUE_OUT_OF_RANGE +#define RPC_X_SS_CONTEXT_MISMATCH ERROR_INVALID_HANDLE +#define RPC_X_INVALID_BUFFER ERROR_INVALID_USER_BUFFER +#define RPC_X_PIPE_APP_MEMORY ERROR_OUTOFMEMORY +#define RPC_X_INVALID_PIPE_OPERATION RPC_X_WRONG_PIPE_ORDER +#define RpcTryExcept __try { +#define RpcExcept(expr) } __except(expr) { +#define RpcEndExcept } +#define RpcTryFinally __try { +#define RpcFinally } __finally { +#define RpcEndFinally } +#define RpcExceptionCode() GetExceptionCode() +#define RpcAbnormalTermination() AbnormalTermination() +#define __RPCASYNC_H__ +#define RPC_ASYNC_VERSION_1_0 sizeof(RPC_ASYNC_STATE) + typedef enum _RPC_NOTIFICATION_TYPES { + RpcNotificationTypeNone,RpcNotificationTypeEvent,RpcNotificationTypeApc,RpcNotificationTypeIoc,RpcNotificationTypeHwnd, + RpcNotificationTypeCallback + } RPC_NOTIFICATION_TYPES; + typedef enum _RPC_ASYNC_EVENT { + RpcCallComplete,RpcSendComplete,RpcReceiveComplete + } RPC_ASYNC_EVENT; + struct _RPC_ASYNC_STATE; + typedef void __attribute__((__stdcall__)) RPCNOTIFICATION_ROUTINE(struct _RPC_ASYNC_STATE *pAsync,void *Context,RPC_ASYNC_EVENT Event); + typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE; + typedef struct _RPC_ASYNC_STATE { + unsigned int Size; + unsigned long Signature; + long Lock; + unsigned long Flags; + void *StubInfo; + void *UserInfo; + void *RuntimeInfo; + RPC_ASYNC_EVENT Event; + RPC_NOTIFICATION_TYPES NotificationType; + union { + struct { + PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine; + HANDLE hThread; + } APC; + struct { + HANDLE hIOPort; + DWORD dwNumberOfBytesTransferred; + DWORD_PTR dwCompletionKey; + LPOVERLAPPED lpOverlapped; + } IOC; + struct { + HWND hWnd; + UINT Msg; + } HWND; + HANDLE hEvent; + PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine; + } u; + LONG_PTR Reserved[4]; + } RPC_ASYNC_STATE,*PRPC_ASYNC_STATE; +#define RPC_C_NOTIFY_ON_SEND_COMPLETE 0x1 +#define RPC_C_INFINITE_TIMEOUT INFINITE +#define RpcAsyncGetCallHandle(pAsync) (((PRPC_ASYNC_STATE) pAsync)->RuntimeInfo) + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncInitializeHandle(PRPC_ASYNC_STATE pAsync,unsigned int Size); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncRegisterInfo(PRPC_ASYNC_STATE pAsync); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncGetCallStatus(PRPC_ASYNC_STATE pAsync); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncCompleteCall(PRPC_ASYNC_STATE pAsync,void *Reply); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned long ExceptionCode); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncCancelCall(PRPC_ASYNC_STATE pAsync,WINBOOL fAbort); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncCleanupThread(DWORD dwTimeout); + typedef enum tagExtendedErrorParamTypes { + eeptAnsiString = 1,eeptUnicodeString,eeptLongVal,eeptShortVal,eeptPointerVal,eeptNone,eeptBinary + } ExtendedErrorParamTypes; +#define MaxNumberOfEEInfoParams 4 +#define RPC_EEINFO_VERSION 1 + typedef struct tagBinaryParam { + void *Buffer; + short Size; + } BinaryParam; + typedef struct tagRPC_EE_INFO_PARAM { + ExtendedErrorParamTypes ParameterType; + union { + LPSTR AnsiString; + LPWSTR UnicodeString; + long LVal; + short SVal; + ULONGLONG PVal; + BinaryParam BVal; + } u; + } RPC_EE_INFO_PARAM; +#define EEInfoPreviousRecordsMissing 1 +#define EEInfoNextRecordsMissing 2 +#define EEInfoUseFileTime 4 +#define EEInfoGCCOM 11 +#define EEInfoGCFRS 12 + typedef struct tagRPC_EXTENDED_ERROR_INFO { + ULONG Version; + LPWSTR ComputerName; + ULONG ProcessID; + union { + SYSTEMTIME SystemTime; + FILETIME FileTime; + } u; + ULONG GeneratingComponent; + ULONG Status; + USHORT DetectionLocation; + USHORT Flags; + int NumberOfParameters; + RPC_EE_INFO_PARAM Parameters[4]; + } RPC_EXTENDED_ERROR_INFO; + typedef struct tagRPC_ERROR_ENUM_HANDLE { + ULONG Signature; + void *CurrentPos; + void *Head; + } RPC_ERROR_ENUM_HANDLE; + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorStartEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorGetNextRecord(RPC_ERROR_ENUM_HANDLE *EnumHandle,WINBOOL CopyStrings,RPC_EXTENDED_ERROR_INFO *ErrorInfo); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorEndEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorResetEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorGetNumberOfRecords(RPC_ERROR_ENUM_HANDLE *EnumHandle,int *Records); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorSaveErrorInfo(RPC_ERROR_ENUM_HANDLE *EnumHandle,PVOID *ErrorBlob,size_t *BlobSize); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorLoadErrorInfo(PVOID ErrorBlob,size_t BlobSize,RPC_ERROR_ENUM_HANDLE *EnumHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcErrorAddRecord(RPC_EXTENDED_ERROR_INFO *ErrorInfo); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcErrorClearInformation(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcGetAuthorizationContextForClient(RPC_BINDING_HANDLE ClientBinding,WINBOOL ImpersonateOnReturn,PVOID Reserved1,PLARGE_INTEGER pExpirationTime,LUID Reserved2,DWORD Reserved3,PVOID Reserved4,PVOID *pAuthzClientContext); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcFreeAuthorizationContext(PVOID *pAuthzClientContext); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSsContextLockExclusive(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSsContextLockShared(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext); +#define RPC_CALL_ATTRIBUTES_VERSION (1) +#define RPC_QUERY_SERVER_PRINCIPAL_NAME (2) +#define RPC_QUERY_CLIENT_PRINCIPAL_NAME (4) + typedef struct tagRPC_CALL_ATTRIBUTES_V1_W { + unsigned int Version; + unsigned long Flags; + unsigned long ServerPrincipalNameBufferLength; + unsigned short *ServerPrincipalName; + unsigned long ClientPrincipalNameBufferLength; + unsigned short *ClientPrincipalName; + unsigned long AuthenticationLevel; + unsigned long AuthenticationService; + WINBOOL NullSession; + } RPC_CALL_ATTRIBUTES_V1_W; + typedef struct tagRPC_CALL_ATTRIBUTES_V1_A { + unsigned int Version; + unsigned long Flags; + unsigned long ServerPrincipalNameBufferLength; + unsigned char *ServerPrincipalName; + unsigned long ClientPrincipalNameBufferLength; + unsigned char *ClientPrincipalName; + unsigned long AuthenticationLevel; + unsigned long AuthenticationService; + WINBOOL NullSession; + } RPC_CALL_ATTRIBUTES_V1_A; +#define RPC_CALL_ATTRIBUTES_V1 __MINGW_NAME_UAW(RPC_CALL_ATTRIBUTES_V1) +#define RpcServerInqCallAttributes __MINGW_NAME_AW(RpcServerInqCallAttributes) + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqCallAttributesW(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqCallAttributesA(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes); + typedef RPC_CALL_ATTRIBUTES_V1_A RPC_CALL_ATTRIBUTES; + RPC_STATUS __attribute__((__stdcall__)) I_RpcAsyncSetHandle(PRPC_MESSAGE Message,PRPC_ASYNC_STATE pAsync); + RPC_STATUS __attribute__((__stdcall__)) I_RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned long ExceptionCode); + int __attribute__((__stdcall__)) I_RpcExceptionFilter(unsigned long ExceptionCode); +typedef union _RPC_ASYNC_NOTIFICATION_INFO { + struct { + PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine; + HANDLE hThread; + } APC; + struct { + HANDLE hIOPort; + DWORD dwNumberOfBytesTransferred; + DWORD_PTR dwCompletionKey; + LPOVERLAPPED lpOverlapped; + } IOC; + struct { + HWND hWnd; + UINT Msg; + } HWND; + HANDLE hEvent; + PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine; +} RPC_ASYNC_NOTIFICATION_INFO, *PRPC_ASYNC_NOTIFICATION_INFO; +RPC_STATUS __attribute__((__stdcall__)) RpcBindingBind( + PRPC_ASYNC_STATE pAsync, + RPC_BINDING_HANDLE Binding, + RPC_IF_HANDLE IfSpec +); +RPC_STATUS __attribute__((__stdcall__)) RpcBindingUnbind( + RPC_BINDING_HANDLE Binding +); +typedef enum _RpcCallType { + rctInvalid, + rctNormal, + rctTraining, + rctGuaranteed +} RpcCallType; +typedef enum _RpcLocalAddressFormat { + rlafInvalid, + rlafIPv4, + rlafIPv6 +} RpcLocalAddressFormat; +typedef enum _RPC_NOTIFICATIONS { + RpcNotificationCallNone = 0, + RpcNotificationClientDisconnect = 1, + RpcNotificationCallCancel = 2 +} RPC_NOTIFICATIONS; +typedef enum _RpcCallClientLocality { + rcclInvalid, + rcclLocal, + rcclRemote, + rcclClientUnknownLocality +} RpcCallClientLocality; +RPC_STATUS __attribute__((__stdcall__)) RpcServerSubscribeForNotification( + RPC_BINDING_HANDLE Binding, + DWORD Notification, + RPC_NOTIFICATION_TYPES NotificationType, + RPC_ASYNC_NOTIFICATION_INFO *NotificationInfo +); +RPC_STATUS __attribute__((__stdcall__)) RpcServerUnsubscribeForNotification( + RPC_BINDING_HANDLE Binding, + RPC_NOTIFICATIONS Notification, + unsigned long *NotificationsQueued +); +typedef struct tagRPC_CALL_LOCAL_ADDRESS_V1_A { + unsigned int Version; + void *Buffer; + unsigned long BufferSize; + RpcLocalAddressFormat AddressFormat; +} RPC_CALL_LOCAL_ADDRESS_V1_A, RPC_CALL_LOCAL_ADDRESS_A; +typedef struct tagRPC_CALL_LOCAL_ADDRESS_V1_W { + unsigned int Version; + void *Buffer; + unsigned long BufferSize; + RpcLocalAddressFormat AddressFormat; +} RPC_CALL_LOCAL_ADDRESS_V1_W, RPC_CALL_LOCAL_ADDRESS_W; +#define RPC_CALL_LOCAL_ADDRESS_V1 __MINGW_NAME_AW(RPC_CALL_LOCAL_ADDRESS_V1_) +#define RPC_CALL_LOCAL_ADDRESS __MINGW_NAME_AW(RPC_CALL_LOCAL_ADDRESS_) +typedef struct tagRPC_CALL_ATTRIBUTES_V2A { + unsigned int Version; + unsigned long Flags; + unsigned long ServerPrincipalNameBufferLength; + unsigned short *ServerPrincipalName; + unsigned long ClientPrincipalNameBufferLength; + unsigned short *ClientPrincipalName; + unsigned long AuthenticationLevel; + unsigned long AuthenticationService; + WINBOOL NullSession; + WINBOOL KernelMode; + unsigned long ProtocolSequence; + RpcCallClientLocality IsClientLocal; + HANDLE ClientPID; + unsigned long CallStatus; + RpcCallType CallType; + RPC_CALL_LOCAL_ADDRESS_A *CallLocalAddress; + unsigned short OpNum; + UUID InterfaceUuid; +} RPC_CALL_ATTRIBUTES_V2_A, RPC_CALL_ATTRIBUTES_A; +typedef struct tagRPC_CALL_ATTRIBUTES_V2W { + unsigned int Version; + unsigned long Flags; + unsigned long ServerPrincipalNameBufferLength; + unsigned short *ServerPrincipalName; + unsigned long ClientPrincipalNameBufferLength; + unsigned short *ClientPrincipalName; + unsigned long AuthenticationLevel; + unsigned long AuthenticationService; + WINBOOL NullSession; + WINBOOL KernelMode; + unsigned long ProtocolSequence; + RpcCallClientLocality IsClientLocal; + HANDLE ClientPID; + unsigned long CallStatus; + RpcCallType CallType; + RPC_CALL_LOCAL_ADDRESS_W *CallLocalAddress; + unsigned short OpNum; + UUID InterfaceUuid; +} RPC_CALL_ATTRIBUTES_V2_W, RPC_CALL_ATTRIBUTES_W; +#define RPC_CALL_ATTRIBUTES_V2 __MINGW_NAME_AW(RPC_CALL_ATTRIBUTES_V2_) +RPC_STATUS __attribute__((__stdcall__)) RpcDiagnoseError( + RPC_BINDING_HANDLE BindingHandle, + RPC_IF_HANDLE IfSpec, + RPC_STATUS RpcStatus, + RPC_ERROR_ENUM_HANDLE *EnumHandle, + ULONG Options, + HWND ParentWindow +); +#define _INC_SHELLAPI +#define WINSHELLAPI DECLSPEC_IMPORT +#define SHSTDAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE +#define SHSTDAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE +#define SHDOCAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE +#define SHDOCAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE + struct HDROP__ { int unused; }; typedef struct HDROP__ *HDROP; +#define DragQueryFile __MINGW_NAME_AW(DragQueryFile) +#define ShellExecute __MINGW_NAME_AW(ShellExecute) +#define FindExecutable __MINGW_NAME_AW(FindExecutable) +#define ShellAbout __MINGW_NAME_AW(ShellAbout) +#define ExtractAssociatedIcon __MINGW_NAME_AW(ExtractAssociatedIcon) +#define ExtractAssociatedIconEx __MINGW_NAME_AW(ExtractAssociatedIconEx) +#define ExtractIcon __MINGW_NAME_AW(ExtractIcon) + __declspec (dllimport) UINT __attribute__((__stdcall__)) DragQueryFileA (HDROP hDrop, UINT iFile, LPSTR lpszFile, UINT cch); + __declspec (dllimport) UINT __attribute__((__stdcall__)) DragQueryFileW (HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DragQueryPoint (HDROP hDrop, POINT *ppt); + __declspec (dllimport) void __attribute__((__stdcall__)) DragFinish (HDROP hDrop); + __declspec (dllimport) void __attribute__((__stdcall__)) DragAcceptFiles (HWND hWnd, WINBOOL fAccept); + __declspec (dllimport) HINSTANCE __attribute__((__stdcall__)) ShellExecuteA (HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); + __declspec (dllimport) HINSTANCE __attribute__((__stdcall__)) ShellExecuteW (HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); + __declspec (dllimport) HINSTANCE __attribute__((__stdcall__)) FindExecutableA (LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult); + __declspec (dllimport) HINSTANCE __attribute__((__stdcall__)) FindExecutableW (LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult); + __declspec (dllimport) INT __attribute__((__stdcall__)) ShellAboutA (HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon); + __declspec (dllimport) INT __attribute__((__stdcall__)) ShellAboutW (HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon); + __declspec (dllimport) HICON __attribute__((__stdcall__)) DuplicateIcon (HINSTANCE hInst, HICON hIcon); + __declspec (dllimport) HICON __attribute__((__stdcall__)) ExtractAssociatedIconA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIcon); + __declspec (dllimport) HICON __attribute__((__stdcall__)) ExtractAssociatedIconW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIcon); + __declspec (dllimport) HICON __attribute__((__stdcall__)) ExtractAssociatedIconExA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIconIndex, WORD *piIconId); + __declspec (dllimport) HICON __attribute__((__stdcall__)) ExtractAssociatedIconExW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIconIndex, WORD *piIconId); + __declspec (dllimport) HICON __attribute__((__stdcall__)) ExtractIconA (HINSTANCE hInst, LPCSTR pszExeFileName, UINT nIconIndex); + __declspec (dllimport) HICON __attribute__((__stdcall__)) ExtractIconW (HINSTANCE hInst, LPCWSTR pszExeFileName, UINT nIconIndex); + typedef struct _DRAGINFOA { + UINT uSize; + POINT pt; + WINBOOL fNC; + LPSTR lpFileList; + DWORD grfKeyState; + } DRAGINFOA,*LPDRAGINFOA; + typedef struct _DRAGINFOW { + UINT uSize; + POINT pt; + WINBOOL fNC; + LPWSTR lpFileList; + DWORD grfKeyState; + } DRAGINFOW,*LPDRAGINFOW; + typedef DRAGINFOA DRAGINFO; + typedef LPDRAGINFOA LPDRAGINFO; +#define ABM_NEW 0x00000000 +#define ABM_REMOVE 0x00000001 +#define ABM_QUERYPOS 0x00000002 +#define ABM_SETPOS 0x00000003 +#define ABM_GETSTATE 0x00000004 +#define ABM_GETTASKBARPOS 0x00000005 +#define ABM_ACTIVATE 0x00000006 +#define ABM_GETAUTOHIDEBAR 0x00000007 +#define ABM_SETAUTOHIDEBAR 0x00000008 +#define ABM_WINDOWPOSCHANGED 0x0000009 +#define ABM_SETSTATE 0x0000000a +#define ABN_STATECHANGE 0x0000000 +#define ABN_POSCHANGED 0x0000001 +#define ABN_FULLSCREENAPP 0x0000002 +#define ABN_WINDOWARRANGE 0x0000003 +#define ABS_AUTOHIDE 0x0000001 +#define ABS_ALWAYSONTOP 0x0000002 +#define ABE_LEFT 0 +#define ABE_TOP 1 +#define ABE_RIGHT 2 +#define ABE_BOTTOM 3 + typedef struct _AppBarData { + DWORD cbSize; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; + } APPBARDATA,*PAPPBARDATA; + __declspec (dllimport) UINT_PTR __attribute__((__stdcall__)) SHAppBarMessage (DWORD dwMessage, PAPPBARDATA pData); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) DoEnvironmentSubstA (LPSTR pszSrc, UINT cchSrc); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) DoEnvironmentSubstW (LPWSTR pszSrc, UINT cchSrc); + __declspec (dllimport) UINT __attribute__((__stdcall__)) ExtractIconExA (LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); + __declspec (dllimport) UINT __attribute__((__stdcall__)) ExtractIconExW (LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); +#define DoEnvironmentSubst __MINGW_NAME_AW(DoEnvironmentSubst) +#define ExtractIconEx __MINGW_NAME_AW(ExtractIconEx) +#define EIRESID(x) (-1 * (int)(x)) +#define FO_MOVE 0x1 +#define FO_COPY 0x2 +#define FO_DELETE 0x3 +#define FO_RENAME 0x4 +#define FOF_MULTIDESTFILES 0x1 +#define FOF_CONFIRMMOUSE 0x2 +#define FOF_SILENT 0x4 +#define FOF_RENAMEONCOLLISION 0x8 +#define FOF_NOCONFIRMATION 0x10 +#define FOF_WANTMAPPINGHANDLE 0x20 +#define FOF_ALLOWUNDO 0x40 +#define FOF_FILESONLY 0x80 +#define FOF_SIMPLEPROGRESS 0x100 +#define FOF_NOCONFIRMMKDIR 0x200 +#define FOF_NOERRORUI 0x400 +#define FOF_NOCOPYSECURITYATTRIBS 0x800 +#define FOF_NORECURSION 0x1000 +#define FOF_NO_CONNECTED_ELEMENTS 0x2000 +#define FOF_WANTNUKEWARNING 0x4000 +#define FOF_NORECURSEREPARSE 0x8000 +#define FOF_NO_UI (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR) + typedef WORD FILEOP_FLAGS; +#define PO_DELETE 0x0013 +#define PO_RENAME 0x0014 +#define PO_PORTCHANGE 0x0020 +#define PO_REN_PORT 0x0034 + typedef WORD PRINTEROP_FLAGS; + typedef struct _SHFILEOPSTRUCTA { + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + WINBOOL fAnyOperationsAborted; + LPVOID hNameMappings; + PCSTR lpszProgressTitle; + } SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA; + typedef struct _SHFILEOPSTRUCTW { + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + WINBOOL fAnyOperationsAborted; + LPVOID hNameMappings; + PCWSTR lpszProgressTitle; + } SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW; + typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT; + typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT; + __declspec (dllimport) int __attribute__((__stdcall__)) SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp); + __declspec (dllimport) int __attribute__((__stdcall__)) SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp); +#define SHFileOperation __MINGW_NAME_AW(SHFileOperation) + __declspec (dllimport) void __attribute__((__stdcall__)) SHFreeNameMappings (HANDLE hNameMappings); + typedef struct _SHNAMEMAPPINGA { + LPSTR pszOldPath; + LPSTR pszNewPath; + int cchOldPath; + int cchNewPath; + } SHNAMEMAPPINGA,*LPSHNAMEMAPPINGA; + typedef struct _SHNAMEMAPPINGW { + LPWSTR pszOldPath; + LPWSTR pszNewPath; + int cchOldPath; + int cchNewPath; + } SHNAMEMAPPINGW,*LPSHNAMEMAPPINGW; + typedef SHNAMEMAPPINGA SHNAMEMAPPING; + typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING; +#define SE_ERR_FNF 2 +#define SE_ERR_PNF 3 +#define SE_ERR_ACCESSDENIED 5 +#define SE_ERR_OOM 8 +#define SE_ERR_DLLNOTFOUND 32 +#define SE_ERR_SHARE 26 +#define SE_ERR_ASSOCINCOMPLETE 27 +#define SE_ERR_DDETIMEOUT 28 +#define SE_ERR_DDEFAIL 29 +#define SE_ERR_DDEBUSY 30 +#define SE_ERR_NOASSOC 31 +#define SEE_MASK_DEFAULT 0x0 +#define SEE_MASK_CLASSNAME 0x1 +#define SEE_MASK_CLASSKEY 0x3 +#define SEE_MASK_IDLIST 0x4 +#define SEE_MASK_INVOKEIDLIST 0xc +#define SEE_MASK_HOTKEY 0x20 +#define SEE_MASK_NOCLOSEPROCESS 0x40 +#define SEE_MASK_CONNECTNETDRV 0x80 +#define SEE_MASK_NOASYNC 0x100 +#define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC +#define SEE_MASK_DOENVSUBST 0x200 +#define SEE_MASK_FLAG_NO_UI 0x400 +#define SEE_MASK_UNICODE 0x4000 +#define SEE_MASK_NO_CONSOLE 0x8000 +#define SEE_MASK_ASYNCOK 0x100000 +#define SEE_MASK_HMONITOR 0x200000 +#define SEE_MASK_NOZONECHECKS 0x800000 +#define SEE_MASK_NOQUERYCLASSSTORE 0x1000000 +#define SEE_MASK_WAITFORINPUTIDLE 0x2000000 +#define SEE_MASK_FLAG_LOG_USAGE 0x4000000 + typedef struct _SHELLEXECUTEINFOA { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpFile; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + void *lpIDList; + LPCSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + __extension__ union { + HANDLE hIcon; + HANDLE hMonitor; + } ; + HANDLE hProcess; + } SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA; + typedef struct _SHELLEXECUTEINFOW { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCWSTR lpVerb; + LPCWSTR lpFile; + LPCWSTR lpParameters; + LPCWSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + void *lpIDList; + LPCWSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + __extension__ union { + HANDLE hIcon; + HANDLE hMonitor; + } ; + HANDLE hProcess; + } SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW; + typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO; + typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShellExecuteExA (SHELLEXECUTEINFOA *pExecInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ShellExecuteExW (SHELLEXECUTEINFOW *pExecInfo); +#define ShellExecuteEx __MINGW_NAME_AW(ShellExecuteEx) + typedef struct _SHCREATEPROCESSINFOW { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCWSTR pszFile; + LPCWSTR pszParameters; + LPCWSTR pszCurrentDirectory; + HANDLE hUserToken; + LPSECURITY_ATTRIBUTES lpProcessAttributes; + LPSECURITY_ATTRIBUTES lpThreadAttributes; + WINBOOL bInheritHandles; + DWORD dwCreationFlags; + LPSTARTUPINFOW lpStartupInfo; + LPPROCESS_INFORMATION lpProcessInformation; + } SHCREATEPROCESSINFOW,*PSHCREATEPROCESSINFOW; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SHCreateProcessAsUserW (PSHCREATEPROCESSINFOW pscpi); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHEvaluateSystemCommandTemplate (PCWSTR pszCmdTemplate, PWSTR *ppszApplication, PWSTR *ppszCommandLine, PWSTR *ppszParameters); + typedef enum ASSOCCLASS { + ASSOCCLASS_SHELL_KEY = 0, + ASSOCCLASS_PROGID_KEY, + ASSOCCLASS_PROGID_STR, + ASSOCCLASS_CLSID_KEY, + ASSOCCLASS_CLSID_STR, + ASSOCCLASS_APP_KEY, + ASSOCCLASS_APP_STR, + ASSOCCLASS_SYSTEM_STR, + ASSOCCLASS_FOLDER, + ASSOCCLASS_STAR, + } ASSOCCLASS; + typedef struct ASSOCIATIONELEMENT { + ASSOCCLASS ac; + HKEY hkClass; + PCWSTR pszClass; + } ASSOCIATIONELEMENT; + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) AssocCreateForClasses (const ASSOCIATIONELEMENT *rgClasses, ULONG cClasses, const IID *const riid, void **ppv); + typedef struct _SHQUERYRBINFO { + DWORD cbSize; + __extension__ long long i64Size; + __extension__ long long i64NumItems; + } SHQUERYRBINFO,*LPSHQUERYRBINFO; +#define SHERB_NOCONFIRMATION 0x00000001 +#define SHERB_NOPROGRESSUI 0x00000002 +#define SHERB_NOSOUND 0x00000004 + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHQueryRecycleBinA (LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHQueryRecycleBinW (LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); +#define SHQueryRecycleBin __MINGW_NAME_AW(SHQueryRecycleBin) + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHEmptyRecycleBinA (HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHEmptyRecycleBinW (HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags); +#define SHEmptyRecycleBin __MINGW_NAME_AW(SHEmptyRecycleBin) + typedef enum { + QUNS_NOT_PRESENT = 1, + QUNS_BUSY = 2, + QUNS_RUNNING_D3D_FULL_SCREEN = 3, + QUNS_PRESENTATION_MODE = 4, + QUNS_ACCEPTS_NOTIFICATIONS = 5 + } QUERY_USER_NOTIFICATION_STATE; + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHQueryUserNotificationState (QUERY_USER_NOTIFICATION_STATE *pquns); + typedef struct _NOTIFYICONDATAA { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + CHAR szTip[128]; + DWORD dwState; + DWORD dwStateMask; + CHAR szInfo[256]; + __extension__ union { + UINT uTimeout; + UINT uVersion; + } ; + CHAR szInfoTitle[64]; + DWORD dwInfoFlags; + GUID guidItem; + HICON hBalloonIcon; + } NOTIFYICONDATAA,*PNOTIFYICONDATAA; + typedef struct _NOTIFYICONDATAW { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + WCHAR szTip[128]; + DWORD dwState; + DWORD dwStateMask; + WCHAR szInfo[256]; + __extension__ union { + UINT uTimeout; + UINT uVersion; + } ; + WCHAR szInfoTitle[64]; + DWORD dwInfoFlags; + GUID guidItem; + HICON hBalloonIcon; + } NOTIFYICONDATAW,*PNOTIFYICONDATAW; + typedef NOTIFYICONDATAA NOTIFYICONDATA; + typedef PNOTIFYICONDATAA PNOTIFYICONDATA; +#define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAA, szTip[64]) +#define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAW, szTip[64]) +#define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAA, guidItem) +#define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAW, guidItem) +#define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAA, hBalloonIcon) +#define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAW, hBalloonIcon) +#define NOTIFYICONDATA_V1_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V1_SIZE) +#define NOTIFYICONDATA_V2_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V2_SIZE) +#define NOTIFYICONDATA_V3_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V3_SIZE) +#define NIN_SELECT (WM_USER + 0) +#define NINF_KEY 0x1 +#define NIN_KEYSELECT (NIN_SELECT | NINF_KEY) +#define NIN_BALLOONSHOW (WM_USER + 2) +#define NIN_BALLOONHIDE (WM_USER + 3) +#define NIN_BALLOONTIMEOUT (WM_USER + 4) +#define NIN_BALLOONUSERCLICK (WM_USER + 5) +#define NIN_POPUPOPEN (WM_USER + 6) +#define NIN_POPUPCLOSE (WM_USER + 7) +#define NIM_ADD 0x00000000 +#define NIM_MODIFY 0x00000001 +#define NIM_DELETE 0x00000002 +#define NIM_SETFOCUS 0x00000003 +#define NIM_SETVERSION 0x00000004 +#define NOTIFYICON_VERSION 3 +#define NOTIFYICON_VERSION_4 4 +#define NIF_MESSAGE 0x00000001 +#define NIF_ICON 0x00000002 +#define NIF_TIP 0x00000004 +#define NIF_STATE 0x00000008 +#define NIF_INFO 0x00000010 +#define NIF_GUID 0x00000020 +#define NIF_REALTIME 0x00000040 +#define NIF_SHOWTIP 0x00000080 +#define NIS_HIDDEN 0x00000001 +#define NIS_SHAREDICON 0x00000002 +#define NIIF_NONE 0x00000000 +#define NIIF_INFO 0x00000001 +#define NIIF_WARNING 0x00000002 +#define NIIF_ERROR 0x00000003 +#define NIIF_USER 0x00000004 +#define NIIF_ICON_MASK 0x0000000f +#define NIIF_NOSOUND 0x00000010 +#define NIIF_LARGE_ICON 0x00000020 + typedef struct _NOTIFYICONIDENTIFIER { + DWORD cbSize; + HWND hWnd; + UINT uID; + GUID guidItem; + } NOTIFYICONIDENTIFIER,*PNOTIFYICONIDENTIFIER; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Shell_NotifyIconA (DWORD dwMessage, PNOTIFYICONDATAA lpData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) Shell_NotifyIconW (DWORD dwMessage, PNOTIFYICONDATAW lpData); +#define Shell_NotifyIcon __MINGW_NAME_AW(Shell_NotifyIcon) +#define SHFILEINFO_DEFINED + typedef struct _SHFILEINFOA { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + CHAR szDisplayName[260]; + CHAR szTypeName[80]; + } SHFILEINFOA; + typedef struct _SHFILEINFOW { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + WCHAR szDisplayName[260]; + WCHAR szTypeName[80]; + } SHFILEINFOW; + typedef SHFILEINFOA SHFILEINFO; +#define SHGFI_ICON 0x000000100 +#define SHGFI_DISPLAYNAME 0x000000200 +#define SHGFI_TYPENAME 0x000000400 +#define SHGFI_ATTRIBUTES 0x000000800 +#define SHGFI_ICONLOCATION 0x000001000 +#define SHGFI_EXETYPE 0x000002000 +#define SHGFI_SYSICONINDEX 0x000004000 +#define SHGFI_LINKOVERLAY 0x000008000 +#define SHGFI_SELECTED 0x000010000 +#define SHGFI_ATTR_SPECIFIED 0x000020000 +#define SHGFI_LARGEICON 0x000000000 +#define SHGFI_SMALLICON 0x000000001 +#define SHGFI_OPENICON 0x000000002 +#define SHGFI_SHELLICONSIZE 0x000000004 +#define SHGFI_PIDL 0x000000008 +#define SHGFI_USEFILEATTRIBUTES 0x000000010 +#define SHGFI_ADDOVERLAYS 0x000000020 +#define SHGFI_OVERLAYINDEX 0x000000040 + __declspec (dllimport) DWORD_PTR __attribute__((__stdcall__)) SHGetFileInfoA (LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags); + __declspec (dllimport) DWORD_PTR __attribute__((__stdcall__)) SHGetFileInfoW (LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags); +#define SHGetFileInfo __MINGW_NAME_AW(SHGetFileInfo) + typedef struct _SHSTOCKICONINFO { + DWORD cbSize; + HICON hIcon; + int iSysImageIndex; + int iIcon; + WCHAR szPath[260]; + } SHSTOCKICONINFO; +#define SHGSI_ICONLOCATION 0 +#define SHGSI_ICON SHGFI_ICON +#define SHGSI_SYSICONINDEX SHGFI_SYSICONINDEX +#define SHGSI_LINKOVERLAY SHGFI_LINKOVERLAY +#define SHGSI_SELECTED SHGFI_SELECTED +#define SHGSI_LARGEICON SHGFI_LARGEICON +#define SHGSI_SMALLICON SHGFI_SMALLICON +#define SHGSI_SHELLICONSIZE SHGFI_SHELLICONSIZE + typedef enum SHSTOCKICONID { + SIID_DOCNOASSOC = 0, + SIID_DOCASSOC = 1, + SIID_APPLICATION = 2, + SIID_FOLDER = 3, + SIID_FOLDEROPEN = 4, + SIID_DRIVE525 = 5, + SIID_DRIVE35 = 6, + SIID_DRIVEREMOVE = 7, + SIID_DRIVEFIXED = 8, + SIID_DRIVENET = 9, + SIID_DRIVENETDISABLED = 10, + SIID_DRIVECD = 11, + SIID_DRIVERAM = 12, + SIID_WORLD = 13, + SIID_SERVER = 15, + SIID_PRINTER = 16, + SIID_MYNETWORK = 17, + SIID_FIND = 22, + SIID_HELP = 23, + SIID_SHARE = 28, + SIID_LINK = 29, + SIID_SLOWFILE = 30, + SIID_RECYCLER = 31, + SIID_RECYCLERFULL = 32, + SIID_MEDIACDAUDIO = 40, + SIID_LOCK = 47, + SIID_AUTOLIST = 49, + SIID_PRINTERNET = 50, + SIID_SERVERSHARE = 51, + SIID_PRINTERFAX = 52, + SIID_PRINTERFAXNET = 53, + SIID_PRINTERFILE = 54, + SIID_STACK = 55, + SIID_MEDIASVCD = 56, + SIID_STUFFEDFOLDER = 57, + SIID_DRIVEUNKNOWN = 58, + SIID_DRIVEDVD = 59, + SIID_MEDIADVD = 60, + SIID_MEDIADVDRAM = 61, + SIID_MEDIADVDRW = 62, + SIID_MEDIADVDR = 63, + SIID_MEDIADVDROM = 64, + SIID_MEDIACDAUDIOPLUS = 65, + SIID_MEDIACDRW = 66, + SIID_MEDIACDR = 67, + SIID_MEDIACDBURN = 68, + SIID_MEDIABLANKCD = 69, + SIID_MEDIACDROM = 70, + SIID_AUDIOFILES = 71, + SIID_IMAGEFILES = 72, + SIID_VIDEOFILES = 73, + SIID_MIXEDFILES = 74, + SIID_FOLDERBACK = 75, + SIID_FOLDERFRONT = 76, + SIID_SHIELD = 77, + SIID_WARNING = 78, + SIID_INFO = 79, + SIID_ERROR = 80, + SIID_KEY = 81, + SIID_SOFTWARE = 82, + SIID_RENAME = 83, + SIID_DELETE = 84, + SIID_MEDIAAUDIODVD = 85, + SIID_MEDIAMOVIEDVD = 86, + SIID_MEDIAENHANCEDCD = 87, + SIID_MEDIAENHANCEDDVD = 88, + SIID_MEDIAHDDVD = 89, + SIID_MEDIABLURAY = 90, + SIID_MEDIAVCD = 91, + SIID_MEDIADVDPLUSR = 92, + SIID_MEDIADVDPLUSRW = 93, + SIID_DESKTOPPC = 94, + SIID_MOBILEPC = 95, + SIID_USERS = 96, + SIID_MEDIASMARTMEDIA = 97, + SIID_MEDIACOMPACTFLASH = 98, + SIID_DEVICECELLPHONE = 99, + SIID_DEVICECAMERA = 100, + SIID_DEVICEVIDEOCAMERA = 101, + SIID_DEVICEAUDIOPLAYER = 102, + SIID_NETWORKCONNECT = 103, + SIID_INTERNET = 104, + SIID_ZIPFILE = 105, + SIID_SETTINGS = 106, + SIID_DRIVEHDDVD = 132, + SIID_DRIVEBD = 133, + SIID_MEDIAHDDVDROM = 134, + SIID_MEDIAHDDVDR = 135, + SIID_MEDIAHDDVDRAM = 136, + SIID_MEDIABDROM = 137, + SIID_MEDIABDR = 138, + SIID_MEDIABDRE = 139, + SIID_CLUSTEREDDRIVE = 140, + SIID_MAX_ICONS = 175 + } SHSTOCKICONID; +#define SIID_INVALID ((SHSTOCKICONID)-1) + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHGetStockIconInfo (SHSTOCKICONID siid, UINT uFlags, SHSTOCKICONINFO *psii); +#define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SHGetDiskFreeSpaceExA (LPCSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SHGetDiskFreeSpaceExW (LPCWSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SHGetNewLinkInfoA (LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, WINBOOL *pfMustCopy, UINT uFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SHGetNewLinkInfoW (LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, WINBOOL *pfMustCopy, UINT uFlags); +#define SHGetDiskFreeSpaceEx __MINGW_NAME_AW(SHGetDiskFreeSpaceEx) +#define SHGetNewLinkInfo __MINGW_NAME_AW(SHGetNewLinkInfo) +#define SHGNLI_PIDL 0x000000001 +#define SHGNLI_PREFIXNAME 0x000000002 +#define SHGNLI_NOUNIQUE 0x000000004 +#define SHGNLI_NOLNK 0x000000008 +#define SHGNLI_NOLOCNAME 0x000000010 +#define PRINTACTION_OPEN 0 +#define PRINTACTION_PROPERTIES 1 +#define PRINTACTION_NETINSTALL 2 +#define PRINTACTION_NETINSTALLLINK 3 +#define PRINTACTION_TESTPAGE 4 +#define PRINTACTION_OPENNETPRN 5 +#define PRINTACTION_DOCUMENTDEFAULTS 6 +#define PRINTACTION_SERVERPROPERTIES 7 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SHInvokePrinterCommandA (HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, WINBOOL fModal); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SHInvokePrinterCommandW (HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, WINBOOL fModal); +#define SHInvokePrinterCommand __MINGW_NAME_AW(SHInvokePrinterCommand) + typedef struct _OPEN_PRINTER_PROPS_INFOA { + DWORD dwSize; + LPSTR pszSheetName; + UINT uSheetIndex; + DWORD dwFlags; + WINBOOL bModal; + } OPEN_PRINTER_PROPS_INFOA,*POPEN_PRINTER_PROPS_INFOA; + typedef struct _OPEN_PRINTER_PROPS_INFOW { + DWORD dwSize; + LPWSTR pszSheetName; + UINT uSheetIndex; + DWORD dwFlags; + WINBOOL bModal; + } OPEN_PRINTER_PROPS_INFOW,*POPEN_PRINTER_PROPS_INFOW; + typedef OPEN_PRINTER_PROPS_INFOA OPEN_PRINTER_PROPS_INFO; + typedef POPEN_PRINTER_PROPS_INFOA POPEN_PRINTER_PROPS_INFO; +#define PRINT_PROP_FORCE_NAME 0x01 + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHLoadNonloadedIconOverlayIdentifiers (void); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHIsFileAvailableOffline (PCWSTR pwszPath, DWORD *pdwStatus); +#define OFFLINE_STATUS_LOCAL 0x0001 +#define OFFLINE_STATUS_REMOTE 0x0002 +#define OFFLINE_STATUS_INCOMPLETE 0x0004 + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHSetLocalizedName (PCWSTR pszPath, PCWSTR pszResModule, int idsRes); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHRemoveLocalizedName (PCWSTR pszPath); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHGetLocalizedName (PCWSTR pszPath, PWSTR pszResModule, UINT cch, int *pidsRes); +#define LWSTDAPIV_(type) EXTERN_C DECLSPEC_IMPORT type STDAPIVCALLTYPE + extern __declspec (dllimport) int __attribute__((__cdecl__)) ShellMessageBoxA (HINSTANCE hAppInst, HWND hWnd, LPCSTR lpcText, LPCSTR lpcTitle, UINT fuStyle,...); + extern __declspec (dllimport) int __attribute__((__cdecl__)) ShellMessageBoxW (HINSTANCE hAppInst, HWND hWnd, LPCWSTR lpcText, LPCWSTR lpcTitle, UINT fuStyle,...); +#define ShellMessageBox __MINGW_NAME_AW(ShellMessageBox) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsLFNDriveA (LPCSTR pszPath); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsLFNDriveW (LPCWSTR pszPath); +#define IsLFNDrive __MINGW_NAME_AW(IsLFNDrive) + extern HRESULT __attribute__((__stdcall__)) SHEnumerateUnreadMailAccountsA (HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress); + extern HRESULT __attribute__((__stdcall__)) SHEnumerateUnreadMailAccountsW (HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress); + extern HRESULT __attribute__((__stdcall__)) SHGetUnreadMailCountA (HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand); + extern HRESULT __attribute__((__stdcall__)) SHGetUnreadMailCountW (HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand); + extern HRESULT __attribute__((__stdcall__)) SHSetUnreadMailCountA (LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand); + extern HRESULT __attribute__((__stdcall__)) SHSetUnreadMailCountW (LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand); +#define SHEnumerateUnreadMailAccounts __MINGW_NAME_AW(SHEnumerateUnreadMailAccounts) +#define SHGetUnreadMailCount __MINGW_NAME_AW(SHGetUnreadMailCount) +#define SHSetUnreadMailCount __MINGW_NAME_AW(SHSetUnreadMailCount) + extern WINBOOL __attribute__((__stdcall__)) SHTestTokenMembership (HANDLE hToken, ULONG ulRID); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SHGetImageList (int iImageList, const IID *const riid, void **ppvObj); +#define SHIL_LARGE 0 +#define SHIL_SMALL 1 +#define SHIL_EXTRALARGE 2 +#define SHIL_SYSSMALL 3 +#define SHIL_JUMBO 4 +#define SHIL_LAST SHIL_JUMBO + typedef HRESULT (__attribute__((__stdcall__)) *PFNCANSHAREFOLDERW) (PCWSTR pszPath); + typedef HRESULT (__attribute__((__stdcall__)) *PFNSHOWSHAREFOLDERUIW) (HWND hwndParent, PCWSTR pszPath); + __declspec (dllimport) LPWSTR * __attribute__((__stdcall__)) CommandLineToArgvW (LPCWSTR lpCmdLine, int *pNumArgs); +#define WC_NETADDRESS L"msctls_netaddress" +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) InitNetworkAddressControl (void); +#define NCM_GETADDRESS (WM_USER+1) +#define NetAddr_GetAddress(hwnd,pv) (HRESULT)SNDMSG (hwnd, NCM_GETADDRESS, 0,(LPARAM)pv) +typedef struct tagNC_ADDRESS { + struct NET_ADDRESS_INFO_ *pAddrInfo; + USHORT PortNumber; + BYTE PrefixLength; +} NC_ADDRESS,*PNC_ADDRESS; +#define NCM_SETALLOWTYPE (WM_USER+2) +#define NetAddr_SetAllowType(hwnd,addrMask) (HRESULT)SNDMSG (hwnd, NCM_SETALLOWTYPE,(WPARAM)addrMask, 0) +#define NCM_GETALLOWTYPE (WM_USER+3) +#define NetAddr_GetAllowType(hwnd) (DWORD)SNDMSG (hwnd, NCM_GETALLOWTYPE, 0, 0) +#define NCM_DISPLAYERRORTIP (WM_USER+4) +#define NetAddr_DisplayErrorTip(hwnd) (HRESULT)SNDMSG (hwnd, NCM_DISPLAYERRORTIP, 0, 0) +extern HRESULT __attribute__((__stdcall__)) SHGetDriveMedia (PCWSTR pszDrive, DWORD *pdwMediaContent); +#define _WINPERF_ +#pragma pack(push,8) + +#define PERF_DATA_VERSION 1 +#define PERF_DATA_REVISION 1 +typedef struct _PERF_DATA_BLOCK { + WCHAR Signature[4]; + DWORD LittleEndian; + DWORD Version; + DWORD Revision; + DWORD TotalByteLength; + DWORD HeaderLength; + DWORD NumObjectTypes; + LONG DefaultObject; + SYSTEMTIME SystemTime; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; + LARGE_INTEGER PerfTime100nSec; + DWORD SystemNameLength; + DWORD SystemNameOffset; +} PERF_DATA_BLOCK,*PPERF_DATA_BLOCK; +typedef struct _PERF_OBJECT_TYPE { + DWORD TotalByteLength; + DWORD DefinitionLength; + DWORD HeaderLength; + DWORD ObjectNameTitleIndex; + DWORD ObjectNameTitle; + DWORD ObjectHelpTitleIndex; + DWORD ObjectHelpTitle; + DWORD DetailLevel; + DWORD NumCounters; + LONG DefaultCounter; + LONG NumInstances; + DWORD CodePage; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; +} PERF_OBJECT_TYPE,*PPERF_OBJECT_TYPE; +#define PERF_NO_INSTANCES -1 +#define PERF_SIZE_DWORD 0x00000000 +#define PERF_SIZE_LARGE 0x00000100 +#define PERF_SIZE_ZERO 0x00000200 +#define PERF_SIZE_VARIABLE_LEN 0x00000300 +#define PERF_TYPE_NUMBER 0x00000000 +#define PERF_TYPE_COUNTER 0x00000400 +#define PERF_TYPE_TEXT 0x00000800 +#define PERF_TYPE_ZERO 0x00000C00 +#define PERF_NUMBER_HEX 0x00000000 +#define PERF_NUMBER_DECIMAL 0x00010000 +#define PERF_NUMBER_DEC_1000 0x00020000 +#define PERF_COUNTER_VALUE 0x00000000 +#define PERF_COUNTER_RATE 0x00010000 +#define PERF_COUNTER_FRACTION 0x00020000 +#define PERF_COUNTER_BASE 0x00030000 +#define PERF_COUNTER_ELAPSED 0x00040000 +#define PERF_COUNTER_QUEUELEN 0x00050000 +#define PERF_COUNTER_HISTOGRAM 0x00060000 +#define PERF_COUNTER_PRECISION 0x00070000 +#define PERF_TEXT_UNICODE 0x00000000 +#define PERF_TEXT_ASCII 0x00010000 +#define PERF_TIMER_TICK 0x00000000 +#define PERF_TIMER_100NS 0x00100000 +#define PERF_OBJECT_TIMER 0x00200000 +#define PERF_DELTA_COUNTER 0x00400000 +#define PERF_DELTA_BASE 0x00800000 +#define PERF_INVERSE_COUNTER 0x01000000 +#define PERF_MULTI_COUNTER 0x02000000 +#define PERF_DISPLAY_NO_SUFFIX 0x00000000 +#define PERF_DISPLAY_PER_SEC 0x10000000 +#define PERF_DISPLAY_PERCENT 0x20000000 +#define PERF_DISPLAY_SECONDS 0x30000000 +#define PERF_DISPLAY_NOSHOW 0x40000000 +#define PERF_COUNTER_COUNTER (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PER_SEC) +#define PERF_COUNTER_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_COUNTER_QUEUELEN_TYPE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_LARGE_QUEUELEN_TYPE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_100NS_QUEUELEN_TYPE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_OBJ_TIME_QUEUELEN_TYPE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_OBJECT_TIMER | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_BULK_COUNT (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PER_SEC) +#define PERF_COUNTER_TEXT (PERF_SIZE_VARIABLE_LEN | PERF_TYPE_TEXT | PERF_TEXT_UNICODE | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_RAWCOUNT (PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_LARGE_RAWCOUNT (PERF_SIZE_LARGE | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_RAWCOUNT_HEX (PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_HEX | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_LARGE_RAWCOUNT_HEX (PERF_SIZE_LARGE | PERF_TYPE_NUMBER | PERF_NUMBER_HEX | PERF_DISPLAY_NO_SUFFIX) +#define PERF_SAMPLE_FRACTION (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DELTA_COUNTER | PERF_DELTA_BASE | PERF_DISPLAY_PERCENT) +#define PERF_SAMPLE_COUNTER (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_NODATA (PERF_SIZE_ZERO | PERF_DISPLAY_NOSHOW) +#define PERF_COUNTER_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_SAMPLE_BASE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW | 0x00000001) +#define PERF_AVERAGE_TIMER (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_SECONDS) +#define PERF_AVERAGE_BASE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW | 0x00000002) +#define PERF_AVERAGE_BULK (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_NOSHOW) +#define PERF_OBJ_TIME_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_OBJECT_TIMER | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_100NSEC_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_100NSEC_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_COUNTER_MULTI_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_DELTA_COUNTER | PERF_TIMER_TICK | PERF_MULTI_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_COUNTER_MULTI_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_DELTA_COUNTER | PERF_MULTI_COUNTER | PERF_TIMER_TICK | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_COUNTER_MULTI_BASE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_MULTI_COUNTER | PERF_DISPLAY_NOSHOW) +#define PERF_100NSEC_MULTI_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_DELTA_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_MULTI_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_100NSEC_MULTI_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_DELTA_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_MULTI_COUNTER | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_RAW_FRACTION (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_PERCENT) +#define PERF_LARGE_RAW_FRACTION (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_PERCENT) +#define PERF_RAW_BASE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW | 0x00000003) +#define PERF_LARGE_RAW_BASE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW) +#define PERF_ELAPSED_TIME (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_ELAPSED | PERF_OBJECT_TIMER | PERF_DISPLAY_SECONDS) +#define PERF_COUNTER_HISTOGRAM_TYPE 0x80000000 +#define PERF_COUNTER_DELTA (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_VALUE | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_LARGE_DELTA (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_VALUE | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX) +#define PERF_PRECISION_SYSTEM_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_PRECISION | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_PRECISION_100NS_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_PRECISION | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_PRECISION_OBJECT_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_PRECISION | PERF_OBJECT_TIMER | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT) +#define PERF_PRECISION_TIMESTAMP PERF_LARGE_RAW_BASE +#define PERF_DETAIL_NOVICE 100 +#define PERF_DETAIL_ADVANCED 200 +#define PERF_DETAIL_EXPERT 300 +#define PERF_DETAIL_WIZARD 400 +typedef struct _PERF_COUNTER_DEFINITION { + DWORD ByteLength; + DWORD CounterNameTitleIndex; + DWORD CounterNameTitle; + DWORD CounterHelpTitleIndex; + DWORD CounterHelpTitle; + LONG DefaultScale; + DWORD DetailLevel; + DWORD CounterType; + DWORD CounterSize; + DWORD CounterOffset; +} PERF_COUNTER_DEFINITION,*PPERF_COUNTER_DEFINITION; +#define PERF_NO_UNIQUE_ID -1 +typedef struct _PERF_INSTANCE_DEFINITION { + DWORD ByteLength; + DWORD ParentObjectTitleIndex; + DWORD ParentObjectInstance; + LONG UniqueID; + DWORD NameOffset; + DWORD NameLength; +} PERF_INSTANCE_DEFINITION,*PPERF_INSTANCE_DEFINITION; +typedef struct _PERF_COUNTER_BLOCK { + DWORD ByteLength; +} PERF_COUNTER_BLOCK,*PPERF_COUNTER_BLOCK; +#define PERF_QUERY_OBJECTS ((LONG)0x80000000) +#define PERF_QUERY_GLOBAL ((LONG)0x80000001) +#define PERF_QUERY_COSTLY ((LONG)0x80000002) +typedef DWORD (__attribute__((__stdcall__)) PM_OPEN_PROC)(LPWSTR); +typedef DWORD (__attribute__((__stdcall__)) PM_COLLECT_PROC)(LPWSTR,LPVOID *,LPDWORD,LPDWORD); +typedef DWORD (__attribute__((__stdcall__)) PM_CLOSE_PROC)(void); +typedef DWORD (__attribute__((__stdcall__)) PM_QUERY_PROC)(LPDWORD,LPVOID *,LPDWORD,LPDWORD); +#define MAX_PERF_OBJECTS_IN_QUERY_FUNCTION (__MSABI_LONG(64)) +#define WINPERF_LOG_NONE 0 +#define WINPERF_LOG_USER 1 +#define WINPERF_LOG_DEBUG 2 +#define WINPERF_LOG_VERBOSE 3 +#pragma pack(pop) + +#define __WINCRYPT_H__ + +#undef DEFINE_GUID +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name +#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) +#define WINIMPM DECLSPEC_IMPORT +#define WINCRYPT32API WINIMPM +#define WINCRYPT32STRINGAPI WINIMPM +#define GET_ALG_CLASS(x) (x & (7 << 13)) +#define GET_ALG_TYPE(x) (x & (15 << 9)) +#define GET_ALG_SID(x) (x & 511) +#define ALG_CLASS_ANY (0) +#define ALG_CLASS_SIGNATURE (1 << 13) +#define ALG_CLASS_MSG_ENCRYPT (2 << 13) +#define ALG_CLASS_DATA_ENCRYPT (3 << 13) +#define ALG_CLASS_HASH (4 << 13) +#define ALG_CLASS_KEY_EXCHANGE (5 << 13) +#define ALG_CLASS_ALL (7 << 13) +#define ALG_TYPE_ANY (0) +#define ALG_TYPE_DSS (1 << 9) +#define ALG_TYPE_RSA (2 << 9) +#define ALG_TYPE_BLOCK (3 << 9) +#define ALG_TYPE_STREAM (4 << 9) +#define ALG_TYPE_DH (5 << 9) +#define ALG_TYPE_SECURECHANNEL (6 << 9) +#define ALG_TYPE_ECDH (7 << 9) +#define ALG_SID_ANY (0) +#define ALG_SID_RSA_ANY 0 +#define ALG_SID_RSA_PKCS 1 +#define ALG_SID_RSA_MSATWORK 2 +#define ALG_SID_RSA_ENTRUST 3 +#define ALG_SID_RSA_PGP 4 +#define ALG_SID_DSS_ANY 0 +#define ALG_SID_DSS_PKCS 1 +#define ALG_SID_DSS_DMS 2 +#define ALG_SID_ECDSA 3 +#define ALG_SID_DES 1 +#define ALG_SID_3DES 3 +#define ALG_SID_DESX 4 +#define ALG_SID_IDEA 5 +#define ALG_SID_CAST 6 +#define ALG_SID_SAFERSK64 7 +#define ALG_SID_SAFERSK128 8 +#define ALG_SID_3DES_112 9 +#define ALG_SID_SKIPJACK 10 +#define ALG_SID_TEK 11 +#define ALG_SID_CYLINK_MEK 12 +#define ALG_SID_RC5 13 +#define ALG_SID_AES_128 14 +#define ALG_SID_AES_192 15 +#define ALG_SID_AES_256 16 +#define ALG_SID_AES 17 +#define CRYPT_MODE_CBCI 6 +#define CRYPT_MODE_CFBP 7 +#define CRYPT_MODE_OFBP 8 +#define CRYPT_MODE_CBCOFM 9 +#define CRYPT_MODE_CBCOFMI 10 +#define ALG_SID_RC2 2 +#define ALG_SID_RC4 1 +#define ALG_SID_SEAL 2 +#define ALG_SID_DH_SANDF 1 +#define ALG_SID_DH_EPHEM 2 +#define ALG_SID_AGREED_KEY_ANY 3 +#define ALG_SID_KEA 4 +#define ALG_SID_ECDH 5 +#define ALG_SID_ECDH_EPHEM 6 +#define ALG_SID_MD2 1 +#define ALG_SID_MD4 2 +#define ALG_SID_MD5 3 +#define ALG_SID_SHA 4 +#define ALG_SID_SHA1 4 +#define ALG_SID_MAC 5 +#define ALG_SID_RIPEMD 6 +#define ALG_SID_RIPEMD160 7 +#define ALG_SID_SSL3SHAMD5 8 +#define ALG_SID_HMAC 9 +#define ALG_SID_TLS1PRF 10 +#define ALG_SID_HASH_REPLACE_OWF 11 +#define ALG_SID_SHA_256 12 +#define ALG_SID_SHA_384 13 +#define ALG_SID_SHA_512 14 +#define ALG_SID_SSL3_MASTER 1 +#define ALG_SID_SCHANNEL_MASTER_HASH 2 +#define ALG_SID_SCHANNEL_MAC_KEY 3 +#define ALG_SID_PCT1_MASTER 4 +#define ALG_SID_SSL2_MASTER 5 +#define ALG_SID_TLS1_MASTER 6 +#define ALG_SID_SCHANNEL_ENC_KEY 7 +#define ALG_SID_ECMQV 1 +#define ALG_SID_EXAMPLE 80 +#define ALGIDDEF + typedef unsigned int ALG_ID; +#define CALG_MD2 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2) +#define CALG_MD4 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4) +#define CALG_MD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5) +#define CALG_SHA (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA) +#define CALG_SHA1 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1) +#define CALG_MAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC) +#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY) +#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY) +#define CALG_NO_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY) +#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY) +#define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES) +#define CALG_3DES_112 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES_112) +#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES) +#define CALG_DESX (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX) +#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2) +#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4) +#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL) +#define CALG_DH_SF (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_SANDF) +#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_EPHEM) +#define CALG_AGREEDKEY_ANY (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_AGREED_KEY_ANY) +#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_KEA) +#define CALG_HUGHES_MD5 (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_ANY|ALG_SID_MD5) +#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_SKIPJACK) +#define CALG_TEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_TEK) +#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_CYLINK_MEK) +#define CALG_SSL3_SHAMD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5) +#define CALG_SSL3_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL3_MASTER) +#define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MASTER_HASH) +#define CALG_SCHANNEL_MAC_KEY (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MAC_KEY) +#define CALG_SCHANNEL_ENC_KEY (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_ENC_KEY) +#define CALG_PCT1_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_PCT1_MASTER) +#define CALG_SSL2_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL2_MASTER) +#define CALG_TLS1_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_TLS1_MASTER) +#define CALG_RC5 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC5) +#define CALG_HMAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC) +#define CALG_TLS1PRF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF) +#define CALG_HASH_REPLACE_OWF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF) +#define CALG_AES_128 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128) +#define CALG_AES_192 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192) +#define CALG_AES_256 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256) +#define CALG_AES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES) +#define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256) +#define CALG_SHA_384 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384) +#define CALG_SHA_512 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512) +#define CALG_ECDH (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH) +#define CALG_ECDH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ECDH | ALG_SID_ECDH_EPHEM) +#define CALG_ECMQV (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV) +#define CALG_ECDSA (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA) +#define CALG_NULLCIPHER (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_ANY | 0) +#define HCRYPTPROV_DEFINED + typedef ULONG_PTR HCRYPTHASH; + typedef ULONG_PTR HCRYPTKEY; + typedef ULONG_PTR HCRYPTPROV; +#define CRYPT_VERIFYCONTEXT 0xf0000000 +#define CRYPT_NEWKEYSET 0x8 +#define CRYPT_DELETEKEYSET 0x10 +#define CRYPT_MACHINE_KEYSET 0x20 +#define CRYPT_SILENT 0x40 +#define CRYPT_DEFAULT_CONTAINER_OPTIONAL 0x80 +#define CRYPT_EXPORTABLE 0x1 +#define CRYPT_USER_PROTECTED 0x2 +#define CRYPT_CREATE_SALT 0x4 +#define CRYPT_UPDATE_KEY 0x8 +#define CRYPT_NO_SALT 0x10 +#define CRYPT_PREGEN 0x40 +#define CRYPT_RECIPIENT 0x10 +#define CRYPT_INITIATOR 0x40 +#define CRYPT_ONLINE 0x80 +#define CRYPT_SF 0x100 +#define CRYPT_CREATE_IV 0x200 +#define CRYPT_KEK 0x400 +#define CRYPT_DATA_KEY 0x800 +#define CRYPT_VOLATILE 0x1000 +#define CRYPT_SGCKEY 0x2000 +#define CRYPT_ARCHIVABLE 0x4000 +#define CRYPT_FORCE_KEY_PROTECTION_HIGH 0x8000 +#define CRYPT_USER_PROTECTED_STRONG 0x100000 +#define RSA1024BIT_KEY 0x4000000 +#define CRYPT_SERVER 0x400 +#define KEY_LENGTH_MASK 0xffff0000 +#define CRYPT_Y_ONLY 0x1 +#define CRYPT_SSL2_FALLBACK 0x2 +#define CRYPT_DESTROYKEY 0x4 +#define CRYPT_DECRYPT_RSA_NO_PADDING_CHECK 0x20 +#define CRYPT_OAEP 0x40 +#define CRYPT_BLOB_VER3 0x80 +#define CRYPT_IPSEC_HMAC_KEY 0x100 +#define CRYPT_SECRETDIGEST 0x1 +#define CRYPT_OWF_REPL_LM_HASH 0x1 +#define CRYPT_LITTLE_ENDIAN 0x1 +#define CRYPT_NOHASHOID 0x1 +#define CRYPT_TYPE2_FORMAT 0x2 +#define CRYPT_X931_FORMAT 0x4 +#define CRYPT_MACHINE_DEFAULT 0x1 +#define CRYPT_USER_DEFAULT 0x2 +#define CRYPT_DELETE_DEFAULT 0x4 +#define SIMPLEBLOB 0x1 +#define PUBLICKEYBLOB 0x6 +#define PRIVATEKEYBLOB 0x7 +#define PLAINTEXTKEYBLOB 0x8 +#define OPAQUEKEYBLOB 0x9 +#define PUBLICKEYBLOBEX 0xa +#define SYMMETRICWRAPKEYBLOB 0xb +#define KEYSTATEBLOB 0xc +#define AT_KEYEXCHANGE 1 +#define AT_SIGNATURE 2 +#define CRYPT_USERDATA 1 +#define KP_IV 1 +#define KP_SALT 2 +#define KP_PADDING 3 +#define KP_MODE 4 +#define KP_MODE_BITS 5 +#define KP_PERMISSIONS 6 +#define KP_ALGID 7 +#define KP_BLOCKLEN 8 +#define KP_KEYLEN 9 +#define KP_SALT_EX 10 +#define KP_P 11 +#define KP_G 12 +#define KP_Q 13 +#define KP_X 14 +#define KP_Y 15 +#define KP_RA 16 +#define KP_RB 17 +#define KP_INFO 18 +#define KP_EFFECTIVE_KEYLEN 19 +#define KP_SCHANNEL_ALG 20 +#define KP_CLIENT_RANDOM 21 +#define KP_SERVER_RANDOM 22 +#define KP_RP 23 +#define KP_PRECOMP_MD5 24 +#define KP_PRECOMP_SHA 25 +#define KP_CERTIFICATE 26 +#define KP_CLEAR_KEY 27 +#define KP_PUB_EX_LEN 28 +#define KP_PUB_EX_VAL 29 +#define KP_KEYVAL 30 +#define KP_ADMIN_PIN 31 +#define KP_KEYEXCHANGE_PIN 32 +#define KP_SIGNATURE_PIN 33 +#define KP_PREHASH 34 +#define KP_ROUNDS 35 +#define KP_OAEP_PARAMS 36 +#define KP_CMS_KEY_INFO 37 +#define KP_CMS_DH_KEY_INFO 38 +#define KP_PUB_PARAMS 39 +#define KP_VERIFY_PARAMS 40 +#define KP_HIGHEST_VERSION 41 +#define KP_GET_USE_COUNT 42 +#define KP_PIN_ID 43 +#define KP_PIN_INFO 44 +#define PKCS5_PADDING 1 +#define RANDOM_PADDING 2 +#define ZERO_PADDING 3 +#define CRYPT_MODE_CBC 1 +#define CRYPT_MODE_ECB 2 +#define CRYPT_MODE_OFB 3 +#define CRYPT_MODE_CFB 4 +#define CRYPT_MODE_CTS 5 +#define CRYPT_ENCRYPT 0x1 +#define CRYPT_DECRYPT 0x2 +#define CRYPT_EXPORT 0x4 +#define CRYPT_READ 0x8 +#define CRYPT_WRITE 0x10 +#define CRYPT_MAC 0x20 +#define CRYPT_EXPORT_KEY 0x40 +#define CRYPT_IMPORT_KEY 0x80 +#define CRYPT_ARCHIVE 0x100 +#define HP_ALGID 0x1 +#define HP_HASHVAL 0x2 +#define HP_HASHSIZE 0x4 +#define HP_HMAC_INFO 0x5 +#define HP_TLS1PRF_LABEL 0x6 +#define HP_TLS1PRF_SEED 0x7 +#define CRYPT_FAILED FALSE +#define CRYPT_SUCCEED TRUE +#define RCRYPT_SUCCEEDED(RT) ((RT) == CRYPT_SUCCEED) +#define RCRYPT_FAILED(RT) ((RT) == CRYPT_FAILED) +#define PP_ENUMALGS 1 +#define PP_ENUMCONTAINERS 2 +#define PP_IMPTYPE 3 +#define PP_NAME 4 +#define PP_VERSION 5 +#define PP_CONTAINER 6 +#define PP_CHANGE_PASSWORD 7 +#define PP_KEYSET_SEC_DESCR 8 +#define PP_CERTCHAIN 9 +#define PP_KEY_TYPE_SUBTYPE 10 +#define PP_PROVTYPE 16 +#define PP_KEYSTORAGE 17 +#define PP_APPLI_CERT 18 +#define PP_SYM_KEYSIZE 19 +#define PP_SESSION_KEYSIZE 20 +#define PP_UI_PROMPT 21 +#define PP_ENUMALGS_EX 22 +#define PP_ENUMMANDROOTS 25 +#define PP_ENUMELECTROOTS 26 +#define PP_KEYSET_TYPE 27 +#define PP_ADMIN_PIN 31 +#define PP_KEYEXCHANGE_PIN 32 +#define PP_SIGNATURE_PIN 33 +#define PP_SIG_KEYSIZE_INC 34 +#define PP_KEYX_KEYSIZE_INC 35 +#define PP_UNIQUE_CONTAINER 36 +#define PP_SGC_INFO 37 +#define PP_USE_HARDWARE_RNG 38 +#define PP_KEYSPEC 39 +#define PP_ENUMEX_SIGNING_PROT 40 +#define PP_CRYPT_COUNT_KEY_USE 41 +#define PP_USER_CERTSTORE 42 +#define PP_SMARTCARD_READER 43 +#define PP_SMARTCARD_GUID 45 +#define PP_ROOT_CERTSTORE 46 +#define CRYPT_FIRST 1 +#define CRYPT_NEXT 2 +#define CRYPT_SGC_ENUM 4 +#define CRYPT_IMPL_HARDWARE 1 +#define CRYPT_IMPL_SOFTWARE 2 +#define CRYPT_IMPL_MIXED 3 +#define CRYPT_IMPL_UNKNOWN 4 +#define CRYPT_IMPL_REMOVABLE 8 +#define CRYPT_SEC_DESCR 0x1 +#define CRYPT_PSTORE 0x2 +#define CRYPT_UI_PROMPT 0x4 +#define CRYPT_FLAG_PCT1 0x1 +#define CRYPT_FLAG_SSL2 0x2 +#define CRYPT_FLAG_SSL3 0x4 +#define CRYPT_FLAG_TLS1 0x8 +#define CRYPT_FLAG_IPSEC 0x10 +#define CRYPT_FLAG_SIGNING 0x20 +#define CRYPT_SGC 0x1 +#define CRYPT_FASTSGC 0x2 +#define PP_CLIENT_HWND 1 +#define PP_CONTEXT_INFO 11 +#define PP_KEYEXCHANGE_KEYSIZE 12 +#define PP_SIGNATURE_KEYSIZE 13 +#define PP_KEYEXCHANGE_ALG 14 +#define PP_SIGNATURE_ALG 15 +#define PP_DELETEKEY 24 +#define PP_PIN_PROMPT_STRING 44 +#define PP_SECURE_KEYEXCHANGE_PIN 47 +#define PP_SECURE_SIGNATURE_PIN 48 +#define PROV_RSA_FULL 1 +#define PROV_RSA_SIG 2 +#define PROV_DSS 3 +#define PROV_FORTEZZA 4 +#define PROV_MS_EXCHANGE 5 +#define PROV_SSL 6 +#define PROV_STT_MER 7 +#define PROV_STT_ACQ 8 +#define PROV_STT_BRND 9 +#define PROV_STT_ROOT 10 +#define PROV_STT_ISS 11 +#define PROV_RSA_SCHANNEL 12 +#define PROV_DSS_DH 13 +#define PROV_EC_ECDSA_SIG 14 +#define PROV_EC_ECNRA_SIG 15 +#define PROV_EC_ECDSA_FULL 16 +#define PROV_EC_ECNRA_FULL 17 +#define PROV_DH_SCHANNEL 18 +#define PROV_SPYRUS_LYNKS 20 +#define PROV_RNG 21 +#define PROV_INTEL_SEC 22 +#define PROV_REPLACE_OWF 23 +#define PROV_RSA_AES 24 +#define MS_DEF_PROV __MINGW_NAME_UAW(MS_DEF_PROV) +#define MS_ENHANCED_PROV __MINGW_NAME_UAW(MS_ENHANCED_PROV) +#define MS_STRONG_PROV __MINGW_NAME_UAW(MS_STRONG_PROV) +#define MS_DEF_RSA_SIG_PROV __MINGW_NAME_UAW(MS_DEF_RSA_SIG_PROV) +#define MS_DEF_RSA_SCHANNEL_PROV __MINGW_NAME_UAW(MS_DEF_RSA_SCHANNEL_PROV) +#define MS_DEF_DSS_PROV __MINGW_NAME_UAW(MS_DEF_DSS_PROV) +#define MS_DEF_DSS_DH_PROV __MINGW_NAME_UAW(MS_DEF_DSS_DH_PROV) +#define MS_ENH_DSS_DH_PROV __MINGW_NAME_UAW(MS_ENH_DSS_DH_PROV) +#define MS_DEF_DH_SCHANNEL_PROV __MINGW_NAME_UAW(MS_DEF_DH_SCHANNEL_PROV) +#define MS_SCARD_PROV __MINGW_NAME_UAW(MS_SCARD_PROV) +#define MS_ENH_RSA_AES_PROV_XP __MINGW_NAME_UAW(MS_ENH_RSA_AES_PROV_XP) +#define MS_ENH_RSA_AES_PROV __MINGW_NAME_UAW(MS_ENH_RSA_AES_PROV) +#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0" +#define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0" +#define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0" +#define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0" +#define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider" +#define MS_STRONG_PROV_W L"Microsoft Strong Cryptographic Provider" +#define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider" +#define MS_DEF_RSA_SIG_PROV_W L"Microsoft RSA Signature Cryptographic Provider" +#define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider" +#define MS_DEF_RSA_SCHANNEL_PROV_W L"Microsoft RSA SChannel Cryptographic Provider" +#define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider" +#define MS_DEF_DSS_PROV_W L"Microsoft Base DSS Cryptographic Provider" +#define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" +#define MS_DEF_DSS_DH_PROV_W L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" +#define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" +#define MS_ENH_DSS_DH_PROV_W L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" +#define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider" +#define MS_DEF_DH_SCHANNEL_PROV_W L"Microsoft DH SChannel Cryptographic Provider" +#define MS_SCARD_PROV_A "Microsoft Base Smart Card Crypto Provider" +#define MS_SCARD_PROV_W L"Microsoft Base Smart Card Crypto Provider" +#define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider" +#define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider" +#define MS_ENH_RSA_AES_PROV_XP_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)" +#define MS_ENH_RSA_AES_PROV_XP_W L"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)" +#define MAXUIDLEN 64 +#define EXPO_OFFLOAD_REG_VALUE "ExpoOffload" +#define EXPO_OFFLOAD_FUNC_NAME "OffloadModExpo" +#define szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS "Software\\Policies\\Microsoft\\Cryptography" +#define szKEY_CACHE_ENABLED "CachePrivateKeys" +#define szKEY_CACHE_SECONDS "PrivateKeyLifetimeSeconds" +#define szPRIV_KEY_CACHE_MAX_ITEMS "PrivKeyCacheMaxItems" +#define cPRIV_KEY_CACHE_MAX_ITEMS_DEFAULT 20 +#define szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS "PrivKeyCachePurgeIntervalSeconds" +#define cPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS_DEFAULT 86400 +#define CUR_BLOB_VERSION 2 + typedef struct _CMS_KEY_INFO { + DWORD dwVersion; + ALG_ID Algid; + BYTE *pbOID; + DWORD cbOID; + } CMS_KEY_INFO,*PCMS_KEY_INFO; + typedef struct _HMAC_Info { + ALG_ID HashAlgid; + BYTE *pbInnerString; + DWORD cbInnerString; + BYTE *pbOuterString; + DWORD cbOuterString; + } HMAC_INFO,*PHMAC_INFO; + typedef struct _SCHANNEL_ALG { + DWORD dwUse; + ALG_ID Algid; + DWORD cBits; + DWORD dwFlags; + DWORD dwReserved; + } SCHANNEL_ALG,*PSCHANNEL_ALG; +#define SCHANNEL_MAC_KEY 0x0 +#define SCHANNEL_ENC_KEY 0x1 +#define INTERNATIONAL_USAGE 0x1 + typedef struct _PROV_ENUMALGS { + ALG_ID aiAlgid; + DWORD dwBitLen; + DWORD dwNameLen; + CHAR szName[20]; + } PROV_ENUMALGS; + typedef struct _PROV_ENUMALGS_EX { + ALG_ID aiAlgid; + DWORD dwDefaultLen; + DWORD dwMinLen; + DWORD dwMaxLen; + DWORD dwProtocols; + DWORD dwNameLen; + CHAR szName[20]; + DWORD dwLongNameLen; + CHAR szLongName[40]; + } PROV_ENUMALGS_EX; + typedef struct _PUBLICKEYSTRUC { + BYTE bType; + BYTE bVersion; + WORD reserved; + ALG_ID aiKeyAlg; + } BLOBHEADER,PUBLICKEYSTRUC; + typedef struct _RSAPUBKEY { + DWORD magic; + DWORD bitlen; + DWORD pubexp; + } RSAPUBKEY; + typedef struct _PUBKEY { + DWORD magic; + DWORD bitlen; + } DHPUBKEY,DSSPUBKEY,KEAPUBKEY,TEKPUBKEY; + typedef struct _DSSSEED { + DWORD counter; + BYTE seed[20]; + } DSSSEED; + typedef struct _PUBKEYVER3 { + DWORD magic; + DWORD bitlenP; + DWORD bitlenQ; + DWORD bitlenJ; + DSSSEED DSSSeed; + } DHPUBKEY_VER3, DSSPUBKEY_VER3; + typedef struct _PRIVKEYVER3 { + DWORD magic; + DWORD bitlenP; + DWORD bitlenQ; + DWORD bitlenJ; + DWORD bitlenX; + DSSSEED DSSSeed; + } DHPRIVKEY_VER3,DSSPRIVKEY_VER3; + typedef struct _KEY_TYPE_SUBTYPE { + DWORD dwKeySpec; + GUID Type; + GUID Subtype; + } KEY_TYPE_SUBTYPE,*PKEY_TYPE_SUBTYPE; + typedef struct _CERT_FORTEZZA_DATA_PROP { + unsigned char SerialNumber[8]; + int CertIndex; + unsigned char CertLabel[36]; + } CERT_FORTEZZA_DATA_PROP; + typedef struct _CRYPT_RC4_KEY_STATE { + unsigned char Key[16]; + unsigned char SBox[256]; + unsigned char i; + unsigned char j; + } CRYPT_RC4_KEY_STATE,*PCRYPT_RC4_KEY_STATE; + typedef struct _CRYPT_DES_KEY_STATE { + unsigned char Key[8]; + unsigned char IV[8]; + unsigned char Feedback[8]; + } CRYPT_DES_KEY_STATE,*PCRYPT_DES_KEY_STATE; + typedef struct _CRYPT_3DES_KEY_STATE { + unsigned char Key[24]; + unsigned char IV[8]; + unsigned char Feedback[8]; + } CRYPT_3DES_KEY_STATE,*PCRYPT_3DES_KEY_STATE; + typedef struct _CRYPT_AES_128_KEY_STATE { + unsigned char Key[16]; + unsigned char IV[16]; + unsigned char EncryptionState[11][16]; + unsigned char DecryptionState[11][16]; + unsigned char Feedback[16]; + } CRYPT_AES_128_KEY_STATE,*PCRYPT_AES_128_KEY_STATE; + typedef struct _CRYPT_AES_256_KEY_STATE { + unsigned char Key[32]; + unsigned char IV[16]; + unsigned char EncryptionState[15][16]; + unsigned char DecryptionState[15][16]; + unsigned char Feedback[16]; + } CRYPT_AES_256_KEY_STATE,*PCRYPT_AES_256_KEY_STATE; +#define CRYPTO_BLOBS_DEFINED + typedef struct _CRYPTOAPI_BLOB { + DWORD cbData; + BYTE *pbData; + } CRYPT_INTEGER_BLOB,*PCRYPT_INTEGER_BLOB,CRYPT_UINT_BLOB,*PCRYPT_UINT_BLOB,CRYPT_OBJID_BLOB,*PCRYPT_OBJID_BLOB,CERT_NAME_BLOB,*PCERT_NAME_BLOB,CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB,CERT_BLOB,*PCERT_BLOB,CRL_BLOB,*PCRL_BLOB,DATA_BLOB,*PDATA_BLOB,CRYPT_DATA_BLOB,*PCRYPT_DATA_BLOB,CRYPT_HASH_BLOB,*PCRYPT_HASH_BLOB,CRYPT_DIGEST_BLOB,*PCRYPT_DIGEST_BLOB,CRYPT_DER_BLOB,*PCRYPT_DER_BLOB,CRYPT_ATTR_BLOB,*PCRYPT_ATTR_BLOB; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptAcquireContextA (HCRYPTPROV *phProv, LPCSTR szContainer, LPCSTR szProvider, DWORD dwProvType, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptAcquireContextW (HCRYPTPROV *phProv, LPCWSTR szContainer, LPCWSTR szProvider, DWORD dwProvType, DWORD dwFlags); +#define CryptAcquireContext __MINGW_NAME_AW(CryptAcquireContext) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGenRandom (HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptReleaseContext (HCRYPTPROV hProv, DWORD dwFlags); +#define CryptEnumProviderTypes __MINGW_NAME_AW(CryptEnumProviderTypes) +#define CryptSetProvider __MINGW_NAME_AW(CryptSetProvider) +#define CryptSetProviderEx __MINGW_NAME_AW(CryptSetProviderEx) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptHashSessionKey (HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetProviderA (LPCSTR pszProvName, DWORD dwProvType); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetProviderExA (LPCSTR pszProvName, DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetProviderExW (LPCWSTR pszProvName, DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEnumProviderTypesA (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPSTR szTypeName, DWORD *pcbTypeName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEnumProviderTypesW (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR szTypeName, DWORD *pcbTypeName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptContextAddRef (HCRYPTPROV hProv, DWORD *pdwReserved, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDuplicateHash (HCRYPTHASH hHash, DWORD *pdwReserved, DWORD dwFlags, HCRYPTHASH *phHash); + WINBOOL __attribute__((__cdecl__)) GetEncSChannel (BYTE **pData, DWORD *dwDecSize); + typedef struct _CMS_DH_KEY_INFO { + DWORD dwVersion; + ALG_ID Algid; + LPSTR pszContentEncObjId; + CRYPT_DATA_BLOB PubInfo; + void *pReserved; + } CMS_DH_KEY_INFO,*PCMS_DH_KEY_INFO; +#define CryptSignHash __MINGW_NAME_AW(CryptSignHash) +#define CryptVerifySignature __MINGW_NAME_AW(CryptVerifySignature) +#define CryptGetDefaultProvider __MINGW_NAME_AW(CryptGetDefaultProvider) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGenKey (HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDeriveKey (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY *phKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDestroyKey (HCRYPTKEY hKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetKeyParam (HCRYPTKEY hKey, DWORD dwParam, const BYTE *pbData, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetKeyParam (HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetHashParam (HCRYPTHASH hHash, DWORD dwParam, const BYTE *pbData, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetHashParam (HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetProvParam (HCRYPTPROV hProv, DWORD dwParam, const BYTE *pbData, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetProvParam (HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetUserKey (HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptExportKey (HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptImportKey (HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEncrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, WINBOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDecrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, WINBOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptCreateHash (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptHashData (HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDestroyHash (HCRYPTHASH hHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSignHashA (HCRYPTHASH hHash, DWORD dwKeySpec, LPCSTR szDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSignHashW (HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR szDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifySignatureA (HCRYPTHASH hHash, const BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCSTR szDescription, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifySignatureW (HCRYPTHASH hHash, const BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR szDescription, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultProviderA (DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags, LPSTR pszProvName, DWORD *pcbProvName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultProviderW (DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags, LPWSTR pszProvName, DWORD *pcbProvName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDuplicateKey (HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags, HCRYPTKEY *phKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEnumProvidersA (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPSTR szProvName, DWORD *pcbProvName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEnumProvidersW (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR szProvName, DWORD *pcbProvName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetProviderW (LPCWSTR pszProvName, DWORD dwProvType); +#define CryptEnumProviders __MINGW_NAME_AW(CryptEnumProviders) + typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE; + typedef ULONG_PTR HCRYPTPROV_LEGACY; +#define __BCRYPT_H__ +#define _NTSTATUS_PSDK + typedef LONG NTSTATUS,*PNTSTATUS; +#define BCRYPT_SUCCESS(Status) (((NTSTATUS) (Status)) >= 0) +#define BCRYPT_OBJECT_ALIGNMENT 16 +#define BCRYPT_STRUCT_ALIGNMENT +#define BCRYPT_KDF_HASH L"HASH" +#define BCRYPT_KDF_HMAC L"HMAC" +#define BCRYPT_KDF_TLS_PRF L"TLS_PRF" +#define BCRYPT_KDF_SP80056A_CONCAT L"SP800_56A_CONCAT" +#define KDF_HASH_ALGORITHM 0x0 +#define KDF_SECRET_PREPEND 0x1 +#define KDF_SECRET_APPEND 0x2 +#define KDF_HMAC_KEY 0x3 +#define KDF_TLS_PRF_LABEL 0x4 +#define KDF_TLS_PRF_SEED 0x5 +#define KDF_SECRET_HANDLE 0x6 +#define KDF_USE_SECRET_AS_HMAC_KEY_FLAG 1 +#define BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION 1 +#define BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG 0x00000001 +#define BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG 0x00000002 +#define BCRYPT_INIT_AUTH_MODE_INFO(_AUTH_INFO_STRUCT_) RtlZeroMemory ((&_AUTH_INFO_STRUCT_), sizeof (BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO)); (_AUTH_INFO_STRUCT_).cbSize = sizeof (BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO); (_AUTH_INFO_STRUCT_).dwInfoVersion = BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION; +#define BCRYPT_OPAQUE_KEY_BLOB L"OpaqueKeyBlob" +#define BCRYPT_KEY_DATA_BLOB L"KeyDataBlob" +#define BCRYPT_ALGORITHM_NAME L"AlgorithmName" +#define BCRYPT_AUTH_TAG_LENGTH L"AuthTagLength" +#define BCRYPT_BLOCK_LENGTH L"BlockLength" +#define BCRYPT_BLOCK_SIZE_LIST L"BlockSizeList" +#define BCRYPT_CHAINING_MODE L"ChainingMode" +#define BCRYPT_CHAIN_MODE_CBC L"ChainingModeCBC" +#define BCRYPT_CHAIN_MODE_CCM L"ChainingModeCCM" +#define BCRYPT_CHAIN_MODE_CFB L"ChainingModeCFB" +#define BCRYPT_CHAIN_MODE_ECB L"ChainingModeECB" +#define BCRYPT_CHAIN_MODE_GCM L"ChainingModeGCM" +#define BCRYPT_CHAIN_MODE_NA L"ChainingModeN/A" +#define BCRYPT_EFFECTIVE_KEY_LENGTH L"EffectiveKeyLength" +#define BCRYPT_HASH_BLOCK_LENGTH L"HashBlockLength" +#define BCRYPT_HASH_LENGTH L"HashDigestLength" +#define BCRYPT_HASH_OID_LIST L"HashOIDList" +#define BCRYPT_INITIALIZATION_VECTOR L"IV" +#define BCRYPT_IS_KEYED_HASH L"IsKeyedHash" +#define BCRYPT_IS_REUSABLE_HASH L"IsReusableHash" +#define BCRYPT_KEY_LENGTH L"KeyLength" +#define BCRYPT_KEY_LENGTHS L"KeyLengths" +#define BCRYPT_KEY_OBJECT_LENGTH L"KeyObjectLength" +#define BCRYPT_KEY_STRENGTH L"KeyStrength" +#define BCRYPT_MESSAGE_BLOCK_LENGTH L"MessageBlockLength" +#define BCRYPT_OBJECT_LENGTH L"ObjectLength" +#define BCRYPT_PADDING_SCHEMES L"PaddingSchemes" +#define BCRYPT_PCP_PLATFORM_TYPE_PROPERTY L"PCP_PLATFORM_TYPE" +#define BCRYPT_PCP_PROVIDER_VERSION_PROPERTY L"PCP_PROVIDER_VERSION" +#define BCRYPT_PRIMITIVE_TYPE L"PrimitiveType" +#define BCRYPT_PROVIDER_HANDLE L"ProviderHandle" +#define BCRYPT_PUBLIC_KEY_LENGTH L"PublicKeyLength" +#define BCRYPT_SIGNATURE_LENGTH L"SignatureLength" +#define BCRYPT_SUPPORTED_PAD_ROUTER 0x00000001 +#define BCRYPT_SUPPORTED_PAD_PKCS1_ENC 0x00000002 +#define BCRYPT_SUPPORTED_PAD_PKCS1_SIG 0x00000004 +#define BCRYPT_SUPPORTED_PAD_OAEP 0x00000008 +#define BCRYPT_SUPPORTED_PAD_PSS 0x00000010 +#define BCRYPT_PROV_DISPATCH 0x00000001 +#define BCRYPT_BLOCK_PADDING 0x00000001 +#define BCRYPT_PAD_NONE 0x00000001 +#define BCRYPT_PAD_PKCS1 0x00000002 +#define BCRYPT_PAD_OAEP 0x00000004 +#define BCRYPT_PAD_PSS 0x00000008 +#define BCRYPTBUFFER_VERSION 0 + typedef struct __BCRYPT_KEY_LENGTHS_STRUCT { + ULONG dwMinLength; + ULONG dwMaxLength; + ULONG dwIncrement; + } BCRYPT_KEY_LENGTHS_STRUCT; + typedef BCRYPT_KEY_LENGTHS_STRUCT BCRYPT_AUTH_TAG_LENGTHS_STRUCT; + typedef struct _BCRYPT_OID { + ULONG cbOID; + PUCHAR pbOID; + } BCRYPT_OID; + typedef struct _BCRYPT_OID_LIST { + ULONG dwOIDCount; + BCRYPT_OID *pOIDs; + } BCRYPT_OID_LIST; + typedef struct _BCRYPT_PKCS1_PADDING_INFO { + LPCWSTR pszAlgId; + } BCRYPT_PKCS1_PADDING_INFO; + typedef struct _BCRYPT_PSS_PADDING_INFO { + LPCWSTR pszAlgId; + ULONG cbSalt; + } BCRYPT_PSS_PADDING_INFO; + typedef struct _BCRYPT_OAEP_PADDING_INFO { + LPCWSTR pszAlgId; + PUCHAR pbLabel; + ULONG cbLabel; + } BCRYPT_OAEP_PADDING_INFO; + typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO { + ULONG cbSize; + ULONG dwInfoVersion; + PUCHAR pbNonce; + ULONG cbNonce; + PUCHAR pbAuthData; + ULONG cbAuthData; + PUCHAR pbTag; + ULONG cbTag; + PUCHAR pbMacContext; + ULONG cbMacContext; + ULONG cbAAD; + ULONGLONG cbData; + ULONG dwFlags; + } BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO,*PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO; + typedef struct _BCryptBuffer { + ULONG cbBuffer; + ULONG BufferType; + PVOID pvBuffer; + } BCryptBuffer,*PBCryptBuffer; + typedef struct _BCryptBufferDesc { + ULONG ulVersion; + ULONG cBuffers; + PBCryptBuffer pBuffers; + } BCryptBufferDesc,*PBCryptBufferDesc; +#define BCRYPT_PUBLIC_KEY_BLOB L"PUBLICBLOB" +#define BCRYPT_PRIVATE_KEY_BLOB L"PRIVATEBLOB" +#define BCRYPT_RSAPUBLIC_BLOB L"RSAPUBLICBLOB" +#define BCRYPT_RSAPRIVATE_BLOB L"RSAPRIVATEBLOB" +#define LEGACY_RSAPUBLIC_BLOB L"CAPIPUBLICBLOB" +#define LEGACY_RSAPRIVATE_BLOB L"CAPIPRIVATEBLOB" +#define BCRYPT_RSAPUBLIC_MAGIC 0x31415352 +#define BCRYPT_RSAPRIVATE_MAGIC 0x32415352 +#define BCRYPT_RSAFULLPRIVATE_BLOB L"RSAFULLPRIVATEBLOB" +#define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352 +#define BCRYPT_ECCPUBLIC_BLOB L"ECCPUBLICBLOB" +#define BCRYPT_ECCPRIVATE_BLOB L"ECCPRIVATEBLOB" +#define BCRYPT_ECDH_PUBLIC_P256_MAGIC 0x314b4345 +#define BCRYPT_ECDH_PRIVATE_P256_MAGIC 0x324b4345 +#define BCRYPT_ECDH_PUBLIC_P384_MAGIC 0x334b4345 +#define BCRYPT_ECDH_PRIVATE_P384_MAGIC 0x344b4345 +#define BCRYPT_ECDH_PUBLIC_P521_MAGIC 0x354b4345 +#define BCRYPT_ECDH_PRIVATE_P521_MAGIC 0x364b4345 +#define BCRYPT_ECDSA_PUBLIC_P256_MAGIC 0x31534345 +#define BCRYPT_ECDSA_PRIVATE_P256_MAGIC 0x32534345 +#define BCRYPT_ECDSA_PUBLIC_P384_MAGIC 0x33534345 +#define BCRYPT_ECDSA_PRIVATE_P384_MAGIC 0x34534345 +#define BCRYPT_ECDSA_PUBLIC_P521_MAGIC 0x35534345 +#define BCRYPT_ECDSA_PRIVATE_P521_MAGIC 0x36534345 +#define BCRYPT_DH_PUBLIC_BLOB L"DHPUBLICBLOB" +#define BCRYPT_DH_PRIVATE_BLOB L"DHPRIVATEBLOB" +#define LEGACY_DH_PUBLIC_BLOB L"CAPIDHPUBLICBLOB" +#define LEGACY_DH_PRIVATE_BLOB L"CAPIDHPRIVATEBLOB" +#define BCRYPT_DH_PUBLIC_MAGIC 0x42504844 +#define BCRYPT_DH_PRIVATE_MAGIC 0x56504844 +#define BCRYPT_DH_PARAMETERS L"DHParameters" +#define BCRYPT_DH_PARAMETERS_MAGIC 0x4d504844 +#define BCRYPT_DSA_PUBLIC_BLOB L"DSAPUBLICBLOB" +#define BCRYPT_DSA_PRIVATE_BLOB L"DSAPRIVATEBLOB" +#define LEGACY_DSA_PUBLIC_BLOB L"CAPIDSAPUBLICBLOB" +#define LEGACY_DSA_PRIVATE_BLOB L"CAPIDSAPRIVATEBLOB" +#define LEGACY_DSA_V2_PUBLIC_BLOB L"V2CAPIDSAPUBLICBLOB" +#define LEGACY_DSA_V2_PRIVATE_BLOB L"V2CAPIDSAPRIVATEBLOB" +#define BCRYPT_DSA_PUBLIC_MAGIC 0x42505344 +#define BCRYPT_DSA_PRIVATE_MAGIC 0x56505344 +#define BCRYPT_DSA_PUBLIC_MAGIC_V2 0x32425044 +#define BCRYPT_DSA_PRIVATE_MAGIC_V2 0x32565044 +#define BCRYPT_KEY_DATA_BLOB_MAGIC 0x4d42444b +#define BCRYPT_KEY_DATA_BLOB_VERSION1 0x1 +#define BCRYPT_DSA_PARAMETERS L"DSAParameters" +#define BCRYPT_DSA_PARAMETERS_MAGIC 0x4d505344 +#define BCRYPT_DSA_PARAMETERS_MAGIC_V2 0x324d5044 +#define MS_PRIMITIVE_PROVIDER L"Microsoft Primitive Provider" +#define MS_PLATFORM_CRYPTO_PROVIDER L"Microsoft Platform Crypto Provider" +#define BCRYPT_RSA_ALGORITHM L"RSA" +#define BCRYPT_RSA_SIGN_ALGORITHM L"RSA_SIGN" +#define BCRYPT_DH_ALGORITHM L"DH" +#define BCRYPT_DSA_ALGORITHM L"DSA" +#define BCRYPT_RC2_ALGORITHM L"RC2" +#define BCRYPT_RC4_ALGORITHM L"RC4" +#define BCRYPT_AES_ALGORITHM L"AES" +#define BCRYPT_DES_ALGORITHM L"DES" +#define BCRYPT_DESX_ALGORITHM L"DESX" +#define BCRYPT_3DES_ALGORITHM L"3DES" +#define BCRYPT_3DES_112_ALGORITHM L"3DES_112" +#define BCRYPT_MD2_ALGORITHM L"MD2" +#define BCRYPT_MD4_ALGORITHM L"MD4" +#define BCRYPT_MD5_ALGORITHM L"MD5" +#define BCRYPT_SHA1_ALGORITHM L"SHA1" +#define BCRYPT_SHA256_ALGORITHM L"SHA256" +#define BCRYPT_SHA384_ALGORITHM L"SHA384" +#define BCRYPT_SHA512_ALGORITHM L"SHA512" +#define BCRYPT_AES_GMAC_ALGORITHM L"AES-GMAC" +#define BCRYPT_AES_CMAC_ALGORITHM L"AES-CMAC" +#define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256" +#define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384" +#define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521" +#define BCRYPT_ECDH_P256_ALGORITHM L"ECDH_P256" +#define BCRYPT_ECDH_P384_ALGORITHM L"ECDH_P384" +#define BCRYPT_ECDH_P521_ALGORITHM L"ECDH_P521" +#define BCRYPT_RNG_ALGORITHM L"RNG" +#define BCRYPT_RNG_FIPS186_DSA_ALGORITHM L"FIPS186DSARNG" +#define BCRYPT_RNG_DUAL_EC_ALGORITHM L"DUALECRNG" +#define BCRYPT_SP800108_CTR_HMAC_ALGORITHM L"SP800_108_CTR_HMAC" +#define BCRYPT_SP80056A_CONCAT_ALGORITHM L"SP800_56A_CONCAT" +#define BCRYPT_PBKDF2_ALGORITHM L"PBKDF2" +#define BCRYPT_CAPI_KDF_ALGORITHM L"CAPI_KDF" +#define BCRYPT_CIPHER_INTERFACE 0x00000001 +#define BCRYPT_HASH_INTERFACE 0x00000002 +#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x00000003 +#define BCRYPT_SECRET_AGREEMENT_INTERFACE 0x00000004 +#define BCRYPT_SIGNATURE_INTERFACE 0x00000005 +#define BCRYPT_RNG_INTERFACE 0x00000006 +#define BCRYPT_KEY_DERIVATION_INTERFACE 0x00000007 +#define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008 +#define BCRYPT_CAPI_AES_FLAG 0x00000010 +#define BCRYPT_HASH_REUSABLE_FLAG 0x00000020 +#define BCRYPT_BUFFERS_LOCKED_FLAG 0x00000040 +#define BCRYPT_CIPHER_OPERATION 0x00000001 +#define BCRYPT_HASH_OPERATION 0x00000002 +#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004 +#define BCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008 +#define BCRYPT_SIGNATURE_OPERATION 0x00000010 +#define BCRYPT_RNG_OPERATION 0x00000020 +#define BCRYPT_KEY_DERIVATION_OPERATION 0x00000040 +#define BCRYPT_PUBLIC_KEY_FLAG 0x00000001 +#define BCRYPT_PRIVATE_KEY_FLAG 0x00000002 +#define BCRYPT_NO_KEY_VALIDATION 0x00000008 +#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001 +#define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002 +#define BCRYPT_MAKE_INTERFACE_VERSION(major,minor) { (USHORT)major,(USHORT)minor} +#define BCRYPT_IS_INTERFACE_VERSION_COMPATIBLE(loader,provider) ((loader).MajorVersion <= (provider).MajorVersion) +#define BCRYPT_CIPHER_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0) +#define BCRYPT_HASH_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0) +#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0) +#define BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0) +#define BCRYPT_SIGNATURE_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0) +#define BCRYPT_RNG_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0) +#define CRYPT_MIN_DEPENDENCIES (0x00000001) +#define CRYPT_PROCESS_ISOLATE (0x00010000) +#define CRYPT_UM (0x00000001) +#define CRYPT_KM (0x00000002) +#define CRYPT_MM (0x00000003) +#define CRYPT_ANY (0x00000004) +#define CRYPT_OVERWRITE (0x00000001) +#define CRYPT_LOCAL (0x00000001) +#define CRYPT_DOMAIN (0x00000002) +#define CRYPT_EXCLUSIVE (0x00000001) +#define CRYPT_OVERRIDE (0x00010000) +#define CRYPT_ALL_FUNCTIONS (0x00000001) +#define CRYPT_ALL_PROVIDERS (0x00000002) +#define CRYPT_PRIORITY_TOP (0x00000000) +#define CRYPT_PRIORITY_BOTTOM (0xffffffff) +#define CRYPT_DEFAULT_CONTEXT L"Default" +typedef PVOID BCRYPT_HANDLE; + typedef PVOID BCRYPT_ALG_HANDLE; + typedef PVOID BCRYPT_KEY_HANDLE; + typedef PVOID BCRYPT_HASH_HANDLE; + typedef PVOID BCRYPT_SECRET_HANDLE; + typedef struct _BCRYPT_KEY_BLOB { + ULONG Magic; + } BCRYPT_KEY_BLOB; + typedef struct _BCRYPT_RSAKEY_BLOB { + ULONG Magic; + ULONG BitLength; + ULONG cbPublicExp; + ULONG cbModulus; + ULONG cbPrime1; + ULONG cbPrime2; + } BCRYPT_RSAKEY_BLOB; + typedef struct _BCRYPT_ECCKEY_BLOB { + ULONG dwMagic; + ULONG cbKey; + } BCRYPT_ECCKEY_BLOB,*PBCRYPT_ECCKEY_BLOB; + typedef struct _BCRYPT_DH_KEY_BLOB { + ULONG dwMagic; + ULONG cbKey; + } BCRYPT_DH_KEY_BLOB,*PBCRYPT_DH_KEY_BLOB; + typedef struct _BCRYPT_DH_PARAMETER_HEADER { + ULONG cbLength; + ULONG dwMagic; + ULONG cbKeyLength; + } BCRYPT_DH_PARAMETER_HEADER; + typedef struct _BCRYPT_DSA_KEY_BLOB { + ULONG dwMagic; + ULONG cbKey; + UCHAR Count[4]; + UCHAR Seed[20]; + UCHAR q[20]; + } BCRYPT_DSA_KEY_BLOB,*PBCRYPT_DSA_KEY_BLOB; + typedef enum { + DSA_HASH_ALGORITHM_SHA1, + DSA_HASH_ALGORITHM_SHA256, + DSA_HASH_ALGORITHM_SHA512 + } HASHALGORITHM_ENUM; + typedef enum { + DSA_FIPS186_2, + DSA_FIPS186_3 + } DSAFIPSVERSION_ENUM; + typedef struct _BCRYPT_DSA_KEY_BLOB_V2 { + ULONG dwMagic; + ULONG cbKey; + HASHALGORITHM_ENUM hashAlgorithm; + DSAFIPSVERSION_ENUM standardVersion; + ULONG cbSeedLength; + ULONG cbGroupSize; + UCHAR Count[4]; + } BCRYPT_DSA_KEY_BLOB_V2,*PBCRYPT_DSA_KEY_BLOB_V2; + typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER { + ULONG dwMagic; + ULONG dwVersion; + ULONG cbKeyData; + } BCRYPT_KEY_DATA_BLOB_HEADER,*PBCRYPT_KEY_DATA_BLOB_HEADER; + typedef struct _BCRYPT_DSA_PARAMETER_HEADER { + ULONG cbLength; + ULONG dwMagic; + ULONG cbKeyLength; + UCHAR Count[4]; + UCHAR Seed[20]; + UCHAR q[20]; + } BCRYPT_DSA_PARAMETER_HEADER; + typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2 { + ULONG cbLength; + ULONG dwMagic; + ULONG cbKeyLength; + HASHALGORITHM_ENUM hashAlgorithm; + DSAFIPSVERSION_ENUM standardVersion; + ULONG cbSeedLength; + ULONG cbGroupSize; + UCHAR Count[4]; + } BCRYPT_DSA_PARAMETER_HEADER_V2; + typedef struct _BCRYPT_ECC_CURVE_NAMES { + ULONG dwEccCurveNames; + LPWSTR *pEccCurveNames; + } BCRYPT_ECC_CURVE_NAMES; + typedef enum { + BCRYPT_HASH_OPERATION_HASH_DATA = 1, + BCRYPT_HASH_OPERATION_FINISH_HASH = 2 + } BCRYPT_HASH_OPERATION_TYPE; + typedef struct _BCRYPT_MULTI_HASH_OPERATION { + ULONG iHash; + BCRYPT_HASH_OPERATION_TYPE hashOperation; + PUCHAR pbBuffer; + ULONG cbBuffer; + } BCRYPT_MULTI_HASH_OPERATION; + typedef enum { + BCRYPT_OPERATION_TYPE_HASH = 1 + } BCRYPT_MULTI_OPERATION_TYPE; + typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT { + ULONG cbPerObject; + ULONG cbPerElement; + } BCRYPT_MULTI_OBJECT_LENGTH_STRUCT; + typedef struct _BCRYPT_ALGORITHM_IDENTIFIER { + LPWSTR pszName; + ULONG dwClass; + ULONG dwFlags; + } BCRYPT_ALGORITHM_IDENTIFIER; + typedef struct _BCRYPT_PROVIDER_NAME { + LPWSTR pszProviderName; + } BCRYPT_PROVIDER_NAME; + typedef struct _BCRYPT_INTERFACE_VERSION { + USHORT MajorVersion; + USHORT MinorVersion; + } BCRYPT_INTERFACE_VERSION,*PBCRYPT_INTERFACE_VERSION; + typedef struct _CRYPT_INTERFACE_REG { + ULONG dwInterface; + ULONG dwFlags; + ULONG cFunctions; + PWSTR *rgpszFunctions; + } CRYPT_INTERFACE_REG,*PCRYPT_INTERFACE_REG; + typedef struct _CRYPT_IMAGE_REG { + PWSTR pszImage; + ULONG cInterfaces; + PCRYPT_INTERFACE_REG *rgpInterfaces; + } CRYPT_IMAGE_REG,*PCRYPT_IMAGE_REG; + typedef struct _CRYPT_PROVIDER_REG { + ULONG cAliases; + PWSTR *rgpszAliases; + PCRYPT_IMAGE_REG pUM; + PCRYPT_IMAGE_REG pKM; + } CRYPT_PROVIDER_REG,*PCRYPT_PROVIDER_REG; + typedef struct _CRYPT_PROVIDERS { + ULONG cProviders; + PWSTR *rgpszProviders; + } CRYPT_PROVIDERS,*PCRYPT_PROVIDERS; + typedef struct _CRYPT_CONTEXT_CONFIG { + ULONG dwFlags; + ULONG dwReserved; + } CRYPT_CONTEXT_CONFIG,*PCRYPT_CONTEXT_CONFIG; + typedef struct _CRYPT_CONTEXT_FUNCTION_CONFIG { + ULONG dwFlags; + ULONG dwReserved; + } CRYPT_CONTEXT_FUNCTION_CONFIG,*PCRYPT_CONTEXT_FUNCTION_CONFIG; + typedef struct _CRYPT_CONTEXTS { + ULONG cContexts; + PWSTR *rgpszContexts; + } CRYPT_CONTEXTS,*PCRYPT_CONTEXTS; + typedef struct _CRYPT_CONTEXT_FUNCTIONS { + ULONG cFunctions; + PWSTR *rgpszFunctions; + } CRYPT_CONTEXT_FUNCTIONS,*PCRYPT_CONTEXT_FUNCTIONS; + typedef struct _CRYPT_CONTEXT_FUNCTION_PROVIDERS { + ULONG cProviders; + PWSTR *rgpszProviders; + } CRYPT_CONTEXT_FUNCTION_PROVIDERS,*PCRYPT_CONTEXT_FUNCTION_PROVIDERS; + typedef struct _CRYPT_PROPERTY_REF { + PWSTR pszProperty; + ULONG cbValue; + PUCHAR pbValue; + } CRYPT_PROPERTY_REF,*PCRYPT_PROPERTY_REF; + typedef struct _CRYPT_IMAGE_REF { + PWSTR pszImage; + ULONG dwFlags; + } CRYPT_IMAGE_REF,*PCRYPT_IMAGE_REF; + typedef struct _CRYPT_PROVIDER_REF { + ULONG dwInterface; + PWSTR pszFunction; + PWSTR pszProvider; + ULONG cProperties; + PCRYPT_PROPERTY_REF *rgpProperties; + PCRYPT_IMAGE_REF pUM; + PCRYPT_IMAGE_REF pKM; + } CRYPT_PROVIDER_REF,*PCRYPT_PROVIDER_REF; + typedef struct _CRYPT_PROVIDER_REFS { + ULONG cProviders; + PCRYPT_PROVIDER_REF *rgpProviders; + } CRYPT_PROVIDER_REFS,*PCRYPT_PROVIDER_REFS; + NTSTATUS __attribute__((__stdcall__)) BCryptOpenAlgorithmProvider (BCRYPT_ALG_HANDLE *phAlgorithm, LPCWSTR pszAlgId, LPCWSTR pszImplementation, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptEnumAlgorithms (ULONG dwAlgOperations, ULONG *pAlgCount, BCRYPT_ALGORITHM_IDENTIFIER **ppAlgList, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptEnumProviders (LPCWSTR pszAlgId, ULONG *pImplCount, BCRYPT_PROVIDER_NAME **ppImplList, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptGetProperty (BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptSetProperty (BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptCloseAlgorithmProvider (BCRYPT_ALG_HANDLE hAlgorithm, ULONG dwFlags); + void __attribute__((__stdcall__)) BCryptFreeBuffer (PVOID pvBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptGenerateSymmetricKey (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptGenerateKeyPair (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, ULONG dwLength, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptEncrypt (BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, void *pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDecrypt (BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, void *pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptExportKey (BCRYPT_KEY_HANDLE hKey, BCRYPT_KEY_HANDLE hExportKey, LPCWSTR pszBlobType, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptImportKey (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptImportKeyPair (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDuplicateKey (BCRYPT_KEY_HANDLE hKey, BCRYPT_KEY_HANDLE *phNewKey, PUCHAR pbKeyObject, ULONG cbKeyObject, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptFinalizeKeyPair (BCRYPT_KEY_HANDLE hKey, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDestroyKey (BCRYPT_KEY_HANDLE hKey); + NTSTATUS __attribute__((__stdcall__)) BCryptDestroySecret (BCRYPT_SECRET_HANDLE hSecret); + NTSTATUS __attribute__((__stdcall__)) BCryptSignHash (BCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PUCHAR pbInput, ULONG cbInput, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptVerifySignature (BCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PUCHAR pbHash, ULONG cbHash, PUCHAR pbSignature, ULONG cbSignature, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptSecretAgreement (BCRYPT_KEY_HANDLE hPrivKey, BCRYPT_KEY_HANDLE hPubKey, BCRYPT_SECRET_HANDLE *phAgreedSecret, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDeriveKey (BCRYPT_SECRET_HANDLE hSharedSecret, LPCWSTR pwszKDF, BCryptBufferDesc *pParameterList, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG *pcbResult, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptKeyDerivation (BCRYPT_KEY_HANDLE hKey, BCryptBufferDesc *pParameterList, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG *pcbResult, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptCreateHash (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_HASH_HANDLE *phHash, PUCHAR pbHashObject, ULONG cbHashObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptHashData (BCRYPT_HASH_HANDLE hHash, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptFinishHash (BCRYPT_HASH_HANDLE hHash, PUCHAR pbOutput, ULONG cbOutput, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDuplicateHash (BCRYPT_HASH_HANDLE hHash, BCRYPT_HASH_HANDLE *phNewHash, PUCHAR pbHashObject, ULONG cbHashObject, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDestroyHash (BCRYPT_HASH_HANDLE hHash); + NTSTATUS __attribute__((__stdcall__)) BCryptGenRandom (BCRYPT_ALG_HANDLE hAlgorithm, PUCHAR pbBuffer, ULONG cbBuffer, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDeriveKeyCapi (BCRYPT_HASH_HANDLE hHash, BCRYPT_ALG_HANDLE hTargetAlg, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptDeriveKeyPBKDF2 (BCRYPT_ALG_HANDLE hPrf, PUCHAR pbPassword, ULONG cbPassword, PUCHAR pbSalt, ULONG cbSalt, ULONGLONG cIterations, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags); + NTSTATUS __attribute__((__stdcall__)) BCryptResolveProviders (LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProvider, ULONG dwMode, ULONG dwFlags, ULONG *pcbBuffer, PCRYPT_PROVIDER_REFS *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptGetFipsAlgorithmMode (BOOLEAN *pfEnabled); + NTSTATUS __attribute__((__stdcall__)) BCryptQueryProviderRegistration (LPCWSTR pszProvider, ULONG dwMode, ULONG dwInterface, ULONG *pcbBuffer, PCRYPT_PROVIDER_REG *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptEnumRegisteredProviders (ULONG *pcbBuffer, PCRYPT_PROVIDERS *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptCreateContext (ULONG dwTable, LPCWSTR pszContext, PCRYPT_CONTEXT_CONFIG pConfig); + NTSTATUS __attribute__((__stdcall__)) BCryptDeleteContext (ULONG dwTable, LPCWSTR pszContext); + NTSTATUS __attribute__((__stdcall__)) BCryptEnumContexts (ULONG dwTable, ULONG *pcbBuffer, PCRYPT_CONTEXTS *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptConfigureContext (ULONG dwTable, LPCWSTR pszContext, PCRYPT_CONTEXT_CONFIG pConfig); + NTSTATUS __attribute__((__stdcall__)) BCryptQueryContextConfiguration (ULONG dwTable, LPCWSTR pszContext, ULONG *pcbBuffer, PCRYPT_CONTEXT_CONFIG *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptAddContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG dwPosition); + NTSTATUS __attribute__((__stdcall__)) BCryptRemoveContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction); + NTSTATUS __attribute__((__stdcall__)) BCryptEnumContextFunctions (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTIONS *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptConfigureContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, PCRYPT_CONTEXT_FUNCTION_CONFIG pConfig); + NTSTATUS __attribute__((__stdcall__)) BCryptQueryContextFunctionConfiguration (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTION_CONFIG *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptEnumContextFunctionProviders (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTION_PROVIDERS *ppBuffer); + NTSTATUS __attribute__((__stdcall__)) BCryptSetContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG cbValue, PUCHAR pbValue); + NTSTATUS __attribute__((__stdcall__)) BCryptQueryContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG *pcbValue, PUCHAR *ppbValue); + NTSTATUS __attribute__((__stdcall__)) BCryptRegisterConfigChangeNotify (HANDLE *phEvent); + NTSTATUS __attribute__((__stdcall__)) BCryptUnregisterConfigChangeNotify (HANDLE hEvent); +#define __NCRYPT_H__ + typedef LONG SECURITY_STATUS; +#define __SECSTATUS_DEFINED__ + +#define NCRYPT_MAX_KEY_NAME_LENGTH 512 +#define NCRYPT_MAX_ALG_ID_LENGTH 512 +#define MS_KEY_STORAGE_PROVIDER L"Microsoft Software Key Storage Provider" +#define MS_SMART_CARD_KEY_STORAGE_PROVIDER L"Microsoft Smart Card Key Storage Provider" +#define MS_PLATFORM_KEY_STORAGE_PROVIDER L"Microsoft Platform Crypto Provider" +#define NCRYPT_RSA_ALGORITHM BCRYPT_RSA_ALGORITHM +#define NCRYPT_RSA_SIGN_ALGORITHM BCRYPT_RSA_SIGN_ALGORITHM +#define NCRYPT_DH_ALGORITHM BCRYPT_DH_ALGORITHM +#define NCRYPT_DSA_ALGORITHM BCRYPT_DSA_ALGORITHM +#define NCRYPT_MD2_ALGORITHM BCRYPT_MD2_ALGORITHM +#define NCRYPT_MD4_ALGORITHM BCRYPT_MD4_ALGORITHM +#define NCRYPT_MD5_ALGORITHM BCRYPT_MD5_ALGORITHM +#define NCRYPT_SHA1_ALGORITHM BCRYPT_SHA1_ALGORITHM +#define NCRYPT_SHA256_ALGORITHM BCRYPT_SHA256_ALGORITHM +#define NCRYPT_SHA384_ALGORITHM BCRYPT_SHA384_ALGORITHM +#define NCRYPT_SHA512_ALGORITHM BCRYPT_SHA512_ALGORITHM +#define NCRYPT_ECDSA_P256_ALGORITHM BCRYPT_ECDSA_P256_ALGORITHM +#define NCRYPT_ECDSA_P384_ALGORITHM BCRYPT_ECDSA_P384_ALGORITHM +#define NCRYPT_ECDSA_P521_ALGORITHM BCRYPT_ECDSA_P521_ALGORITHM +#define NCRYPT_ECDH_P256_ALGORITHM BCRYPT_ECDH_P256_ALGORITHM +#define NCRYPT_ECDH_P384_ALGORITHM BCRYPT_ECDH_P384_ALGORITHM +#define NCRYPT_ECDH_P521_ALGORITHM BCRYPT_ECDH_P521_ALGORITHM +#define NCRYPT_KEY_STORAGE_ALGORITHM L"KEY_STORAGE" +#define NCRYPT_CIPHER_INTERFACE BCRYPT_CIPHER_INTERFACE +#define NCRYPT_HASH_INTERFACE BCRYPT_HASH_INTERFACE +#define NCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE +#define NCRYPT_SECRET_AGREEMENT_INTERFACE BCRYPT_SECRET_AGREEMENT_INTERFACE +#define NCRYPT_SIGNATURE_INTERFACE BCRYPT_SIGNATURE_INTERFACE +#define NCRYPT_KEY_STORAGE_INTERFACE 0x00010001 +#define NCRYPT_SCHANNEL_INTERFACE 0x00010002 +#define NCRYPT_SCHANNEL_SIGNATURE_INTERFACE 0x00010003 +#define NCRYPT_RSA_ALGORITHM_GROUP NCRYPT_RSA_ALGORITHM +#define NCRYPT_DH_ALGORITHM_GROUP NCRYPT_DH_ALGORITHM +#define NCRYPT_DSA_ALGORITHM_GROUP NCRYPT_DSA_ALGORITHM +#define NCRYPT_ECDSA_ALGORITHM_GROUP L"ECDSA" +#define NCRYPT_ECDH_ALGORITHM_GROUP L"ECDH" +#define NCRYPTBUFFER_VERSION 0 +#define NCRYPTBUFFER_EMPTY 0 +#define NCRYPTBUFFER_DATA 1 +#define NCRYPTBUFFER_PROTECTION_DESCRIPTOR_STRING 3 +#define NCRYPTBUFFER_PROTECTION_FLAGS 4 +#define NCRYPTBUFFER_SSL_CLIENT_RANDOM 20 +#define NCRYPTBUFFER_SSL_SERVER_RANDOM 21 +#define NCRYPTBUFFER_SSL_HIGHEST_VERSION 22 +#define NCRYPTBUFFER_SSL_CLEAR_KEY 23 +#define NCRYPTBUFFER_SSL_KEY_ARG_DATA 24 +#define NCRYPTBUFFER_PKCS_OID 40 +#define NCRYPTBUFFER_PKCS_ALG_OID 41 +#define NCRYPTBUFFER_PKCS_ALG_PARAM 42 +#define NCRYPTBUFFER_PKCS_ALG_ID 43 +#define NCRYPTBUFFER_PKCS_ATTRS 44 +#define NCRYPTBUFFER_PKCS_KEY_NAME 45 +#define NCRYPTBUFFER_PKCS_SECRET 46 +#define NCRYPTBUFFER_CERT_BLOB 47 +#define NCRYPT_NO_PADDING_FLAG 0x1 +#define NCRYPT_PAD_PKCS1_FLAG 0x2 +#define NCRYPT_PAD_OAEP_FLAG 0x4 +#define NCRYPT_PAD_PSS_FLAG 0x8 + typedef LPVOID (__attribute__((__stdcall__)) *PFN_NCRYPT_ALLOC) (SIZE_T cbSize); + typedef void (__attribute__((__stdcall__)) *PFN_NCRYPT_FREE) (LPVOID pv); + typedef struct NCRYPT_ALLOC_PARA { + DWORD cbSize; + PFN_NCRYPT_ALLOC pfnAlloc; + PFN_NCRYPT_FREE pfnFree; + } NCRYPT_ALLOC_PARA; + typedef BCryptBuffer NCryptBuffer; + typedef BCryptBuffer *PNCryptBuffer; + typedef BCryptBufferDesc NCryptBufferDesc; + typedef BCryptBufferDesc *PNCryptBufferDesc; + typedef ULONG_PTR NCRYPT_HANDLE; + typedef ULONG_PTR NCRYPT_PROV_HANDLE; + typedef ULONG_PTR NCRYPT_KEY_HANDLE; + typedef ULONG_PTR NCRYPT_HASH_HANDLE; + typedef ULONG_PTR NCRYPT_SECRET_HANDLE; +#define NCRYPT_NO_KEY_VALIDATION BCRYPT_NO_KEY_VALIDATION +#define NCRYPT_MACHINE_KEY_FLAG 0x20 +#define NCRYPT_SILENT_FLAG 0x40 +#define NCRYPT_OVERWRITE_KEY_FLAG 0x80 +#define NCRYPT_WRITE_KEY_TO_LEGACY_STORE_FLAG 0x200 +#define NCRYPT_DO_NOT_FINALIZE_FLAG 0x400 +#define NCRYPT_PERSIST_ONLY_FLAG 0x40000000 +#define NCRYPT_PERSIST_FLAG 0x80000000 +#define NCRYPT_REGISTER_NOTIFY_FLAG 0x1 +#define NCRYPT_UNREGISTER_NOTIFY_FLAG 0x2 +#define NCRYPT_CIPHER_OPERATION BCRYPT_CIPHER_OPERATION +#define NCRYPT_HASH_OPERATION BCRYPT_HASH_OPERATION +#define NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION +#define NCRYPT_SECRET_AGREEMENT_OPERATION BCRYPT_SECRET_AGREEMENT_OPERATION +#define NCRYPT_SIGNATURE_OPERATION BCRYPT_SIGNATURE_OPERATION +#define NCRYPT_RNG_OPERATION BCRYPT_RNG_OPERATION +#define NCRYPT_MACHINE_KEY_FLAG 0x20 +#define NCRYPT_MACHINE_KEY_FLAG 0x20 +#define NCRYPT_SILENT_FLAG 0x40 +#define NCRYPT_MACHINE_KEY_FLAG 0x20 +#define NCRYPT_OVERWRITE_KEY_FLAG 0x80 + typedef struct _NCryptAlgorithmName { + LPWSTR pszName; + DWORD dwClass; + DWORD dwAlgOperations; + DWORD dwFlags; + } NCryptAlgorithmName; + typedef struct NCryptKeyName { + LPWSTR pszName; + LPWSTR pszAlgid; + DWORD dwLegacyKeySpec; + DWORD dwFlags; + } NCryptKeyName; + typedef struct NCryptProviderName { + LPWSTR pszName; + LPWSTR pszComment; + } NCryptProviderName; + SECURITY_STATUS __attribute__((__stdcall__)) NCryptOpenStorageProvider (NCRYPT_PROV_HANDLE *phProvider, LPCWSTR pszProviderName, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptEnumAlgorithms (NCRYPT_PROV_HANDLE hProvider, DWORD dwAlgOperations, DWORD *pdwAlgCount, NCryptAlgorithmName **ppAlgList, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptIsAlgSupported (NCRYPT_PROV_HANDLE hProvider, LPCWSTR pszAlgId, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptEnumKeys (NCRYPT_PROV_HANDLE hProvider, LPCWSTR pszScope, NCryptKeyName **ppKeyName, PVOID *ppEnumState, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptEnumStorageProviders (DWORD *pdwProviderCount, NCryptProviderName **ppProviderList, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptFreeBuffer (PVOID pvInput); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptOpenKey (NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE *phKey, LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptCreatePersistedKey (NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE *phKey, LPCWSTR pszAlgId, LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, DWORD dwFlags); +#define NCRYPT_NAME_PROPERTY L"Name" +#define NCRYPT_UNIQUE_NAME_PROPERTY L"Unique Name" +#define NCRYPT_ALGORITHM_PROPERTY L"Algorithm Name" +#define NCRYPT_LENGTH_PROPERTY L"Length" +#define NCRYPT_LENGTHS_PROPERTY L"Lengths" +#define NCRYPT_BLOCK_LENGTH_PROPERTY L"Block Length" +#define NCRYPT_UI_POLICY_PROPERTY L"UI Policy" +#define NCRYPT_EXPORT_POLICY_PROPERTY L"Export Policy" +#define NCRYPT_WINDOW_HANDLE_PROPERTY L"HWND Handle" +#define NCRYPT_USE_CONTEXT_PROPERTY L"Use Context" +#define NCRYPT_IMPL_TYPE_PROPERTY L"Impl Type" +#define NCRYPT_KEY_USAGE_PROPERTY L"Key Usage" +#define NCRYPT_KEY_TYPE_PROPERTY L"Key Type" +#define NCRYPT_VERSION_PROPERTY L"Version" +#define NCRYPT_SECURITY_DESCR_SUPPORT_PROPERTY L"Security Descr Support" +#define NCRYPT_SECURITY_DESCR_PROPERTY L"Security Descr" +#define NCRYPT_USE_COUNT_ENABLED_PROPERTY L"Enabled Use Count" +#define NCRYPT_USE_COUNT_PROPERTY L"Use Count" +#define NCRYPT_LAST_MODIFIED_PROPERTY L"Modified" +#define NCRYPT_MAX_NAME_LENGTH_PROPERTY L"Max Name Length" +#define NCRYPT_ALGORITHM_GROUP_PROPERTY L"Algorithm Group" +#define NCRYPT_DH_PARAMETERS_PROPERTY BCRYPT_DH_PARAMETERS +#define NCRYPT_PROVIDER_HANDLE_PROPERTY L"Provider Handle" +#define NCRYPT_PIN_PROPERTY L"SmartCardPin" +#define NCRYPT_READER_PROPERTY L"SmartCardReader" +#define NCRYPT_SMARTCARD_GUID_PROPERTY L"SmartCardGuid" +#define NCRYPT_CERTIFICATE_PROPERTY L"SmartCardKeyCertificate" +#define NCRYPT_PIN_PROMPT_PROPERTY L"SmartCardPinPrompt" +#define NCRYPT_USER_CERTSTORE_PROPERTY L"SmartCardUserCertStore" +#define NCRYPT_ROOT_CERTSTORE_PROPERTY L"SmartcardRootCertStore" +#define NCRYPT_SECURE_PIN_PROPERTY L"SmartCardSecurePin" +#define NCRYPT_ASSOCIATED_ECDH_KEY L"SmartCardAssociatedECDHKey" +#define NCRYPT_SCARD_PIN_ID L"SmartCardPinId" +#define NCRYPT_SCARD_PIN_INFO L"SmartCardPinInfo" +#define NCRYPT_MAX_PROPERTY_NAME 64 +#define NCRYPT_MAX_PROPERTY_DATA 0x100000 +#define NCRYPT_ALLOW_EXPORT_FLAG 0x1 +#define NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG 0x2 +#define NCRYPT_ALLOW_ARCHIVING_FLAG 0x00000004 +#define NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG 0x00000008 +#define NCRYPT_IMPL_HARDWARE_FLAG 0x1 +#define NCRYPT_IMPL_SOFTWARE_FLAG 0x2 +#define NCRYPT_IMPL_REMOVABLE_FLAG 0x00000008 +#define NCRYPT_IMPL_HARDWARE_RNG_FLAG 0x00000010 +#define NCRYPT_ALLOW_DECRYPT_FLAG 0x1 +#define NCRYPT_ALLOW_SIGNING_FLAG 0x2 +#define NCRYPT_ALLOW_KEY_AGREEMENT_FLAG 0x00000004 +#define NCRYPT_ALLOW_ALL_USAGES 0x00ffffff +#define NCRYPT_UI_PROTECT_KEY_FLAG 0x1 +#define NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG 0x2 +#define NCRYPT_PERSIST_ONLY_FLAG 0x40000000 +#define NCRYPT_PERSIST_FLAG 0x80000000 +#define NCRYPT_PERSIST_ONLY_FLAG 0x40000000 +typedef struct __NCRYPT_UI_POLICY { + DWORD dwVersion; + DWORD dwFlags; + LPCWSTR pszCreationTitle; + LPCWSTR pszFriendlyName; + LPCWSTR pszDescription; + } NCRYPT_UI_POLICY; + typedef struct __NCRYPT_SUPPORTED_LENGTHS { + DWORD dwMinLength; + DWORD dwMaxLength; + DWORD dwIncrement; + DWORD dwDefaultLength; + } NCRYPT_SUPPORTED_LENGTHS; + SECURITY_STATUS __attribute__((__stdcall__)) NCryptGetProperty (NCRYPT_HANDLE hObject, LPCWSTR pszProperty, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptSetProperty (NCRYPT_HANDLE hObject, LPCWSTR pszProperty, PBYTE pbInput, DWORD cbInput, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptFinalizeKey (NCRYPT_KEY_HANDLE hKey, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptEncrypt (NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, void *pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptDecrypt (NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, void *pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags); +#define NCRYPT_PKCS7_ENVELOPE_BLOB L"PKCS7_ENVELOPE" +#define NCRYPT_PKCS8_PRIVATE_KEY_BLOB L"PKCS8_PRIVATEKEY" +#define NCRYPT_OPAQUETRANSPORT_BLOB L"OpaqueTransport" +#define NCRYPT_MACHINE_KEY_FLAG 0x20 +#define NCRYPT_EXPORT_LEGACY_FLAG 0x00000800 +#define NCRYPT_REGISTER_NOTIFY_FLAG 0x1 +#define NCRYPT_UNREGISTER_NOTIFY_FLAG 0x2 +#define NCRYPT_MACHINE_KEY_FLAG 0x20 +#define NCRYPT_KEY_STORAGE_INTERFACE_VERSION BCRYPT_MAKE_INTERFACE_VERSION (1, 0) +#define NCRYPT_KEY_STORAGE_INTERFACE_VERSION_2 BCRYPT_MAKE_INTERFACE_VERSION (2, 0) + SECURITY_STATUS __attribute__((__stdcall__)) NCryptImportKey (NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, NCryptBufferDesc *pParameterList, NCRYPT_KEY_HANDLE *phKey, PBYTE pbData, DWORD cbData, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptExportKey (NCRYPT_KEY_HANDLE hKey, NCRYPT_KEY_HANDLE hExportKey, LPCWSTR pszBlobType, NCryptBufferDesc *pParameterList, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptSignHash (NCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PBYTE pbHashValue, DWORD cbHashValue, PBYTE pbSignature, DWORD cbSignature, DWORD *pcbResult, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptVerifySignature (NCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PBYTE pbHashValue, DWORD cbHashValue, PBYTE pbSignature, DWORD cbSignature, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptDeleteKey (NCRYPT_KEY_HANDLE hKey, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptFreeObject (NCRYPT_HANDLE hObject); + WINBOOL __attribute__((__stdcall__)) NCryptIsKeyHandle (NCRYPT_KEY_HANDLE hKey); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptTranslateHandle (NCRYPT_PROV_HANDLE *phProvider, NCRYPT_KEY_HANDLE *phKey, HCRYPTPROV hLegacyProv, HCRYPTKEY hLegacyKey, DWORD dwLegacyKeySpec, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptNotifyChangeKey (NCRYPT_PROV_HANDLE hProvider, HANDLE *phEvent, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptSecretAgreement (NCRYPT_KEY_HANDLE hPrivKey, NCRYPT_KEY_HANDLE hPubKey, NCRYPT_SECRET_HANDLE *phAgreedSecret, DWORD dwFlags); + SECURITY_STATUS __attribute__((__stdcall__)) NCryptDeriveKey (NCRYPT_SECRET_HANDLE hSharedSecret, LPCWSTR pwszKDF, NCryptBufferDesc *pParameterList, PBYTE pbDerivedKey, DWORD cbDerivedKey, DWORD *pcbResult, ULONG dwFlags); + + typedef struct _CRYPT_BIT_BLOB { + DWORD cbData; + BYTE *pbData; + DWORD cUnusedBits; + } CRYPT_BIT_BLOB,*PCRYPT_BIT_BLOB; + typedef struct _CRYPT_ALGORITHM_IDENTIFIER { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; + } CRYPT_ALGORITHM_IDENTIFIER,*PCRYPT_ALGORITHM_IDENTIFIER; +#define szOID_RSA "1.2.840.113549" +#define szOID_PKCS "1.2.840.113549.1" +#define szOID_RSA_HASH "1.2.840.113549.2" +#define szOID_RSA_ENCRYPT "1.2.840.113549.3" +#define szOID_PKCS_1 "1.2.840.113549.1.1" +#define szOID_PKCS_2 "1.2.840.113549.1.2" +#define szOID_PKCS_3 "1.2.840.113549.1.3" +#define szOID_PKCS_4 "1.2.840.113549.1.4" +#define szOID_PKCS_5 "1.2.840.113549.1.5" +#define szOID_PKCS_6 "1.2.840.113549.1.6" +#define szOID_PKCS_7 "1.2.840.113549.1.7" +#define szOID_PKCS_8 "1.2.840.113549.1.8" +#define szOID_PKCS_9 "1.2.840.113549.1.9" +#define szOID_PKCS_10 "1.2.840.113549.1.10" +#define szOID_PKCS_12 "1.2.840.113549.1.12" +#define szOID_RSA_RSA "1.2.840.113549.1.1.1" +#define szOID_RSA_MD2RSA "1.2.840.113549.1.1.2" +#define szOID_RSA_MD4RSA "1.2.840.113549.1.1.3" +#define szOID_RSA_MD5RSA "1.2.840.113549.1.1.4" +#define szOID_RSA_SHA1RSA "1.2.840.113549.1.1.5" +#define szOID_RSA_SETOAEP_RSA "1.2.840.113549.1.1.6" +#define szOID_RSAES_OAEP "1.2.840.113549.1.1.7" +#define szOID_RSA_MGF1 "1.2.840.113549.1.1.8" +#define szOID_RSA_PSPECIFIED "1.2.840.113549.1.1.9" +#define szOID_RSA_SSA_PSS "1.2.840.113549.1.1.10" +#define szOID_RSA_SHA256RSA "1.2.840.113549.1.1.11" +#define szOID_RSA_SHA384RSA "1.2.840.113549.1.1.12" +#define szOID_RSA_SHA512RSA "1.2.840.113549.1.1.13" +#define szOID_RSA_DH "1.2.840.113549.1.3.1" +#define szOID_RSA_data "1.2.840.113549.1.7.1" +#define szOID_RSA_signedData "1.2.840.113549.1.7.2" +#define szOID_RSA_envelopedData "1.2.840.113549.1.7.3" +#define szOID_RSA_signEnvData "1.2.840.113549.1.7.4" +#define szOID_RSA_digestedData "1.2.840.113549.1.7.5" +#define szOID_RSA_hashedData "1.2.840.113549.1.7.5" +#define szOID_RSA_encryptedData "1.2.840.113549.1.7.6" +#define szOID_RSA_emailAddr "1.2.840.113549.1.9.1" +#define szOID_RSA_unstructName "1.2.840.113549.1.9.2" +#define szOID_RSA_contentType "1.2.840.113549.1.9.3" +#define szOID_RSA_messageDigest "1.2.840.113549.1.9.4" +#define szOID_RSA_signingTime "1.2.840.113549.1.9.5" +#define szOID_RSA_counterSign "1.2.840.113549.1.9.6" +#define szOID_RSA_challengePwd "1.2.840.113549.1.9.7" +#define szOID_RSA_unstructAddr "1.2.840.113549.1.9.8" +#define szOID_RSA_extCertAttrs "1.2.840.113549.1.9.9" +#define szOID_RSA_certExtensions "1.2.840.113549.1.9.14" +#define szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15" +#define szOID_RSA_preferSignedData "1.2.840.113549.1.9.15.1" +#define szOID_TIMESTAMP_TOKEN "1.2.840.113549.1.9.16.1.4" +#define szOID_RFC3161_counterSign "1.3.6.1.4.1.311.3.3.1" +#define szOID_RSA_SMIMEalg "1.2.840.113549.1.9.16.3" +#define szOID_RSA_SMIMEalgESDH "1.2.840.113549.1.9.16.3.5" +#define szOID_RSA_SMIMEalgCMS3DESwrap "1.2.840.113549.1.9.16.3.6" +#define szOID_RSA_SMIMEalgCMSRC2wrap "1.2.840.113549.1.9.16.3.7" +#define szOID_RSA_MD2 "1.2.840.113549.2.2" +#define szOID_RSA_MD4 "1.2.840.113549.2.4" +#define szOID_RSA_MD5 "1.2.840.113549.2.5" +#define szOID_RSA_RC2CBC "1.2.840.113549.3.2" +#define szOID_RSA_RC4 "1.2.840.113549.3.4" +#define szOID_RSA_DES_EDE3_CBC "1.2.840.113549.3.7" +#define szOID_RSA_RC5_CBCPad "1.2.840.113549.3.9" +#define szOID_ANSI_X942 "1.2.840.10046" +#define szOID_ANSI_X942_DH "1.2.840.10046.2.1" +#define szOID_X957 "1.2.840.10040" +#define szOID_X957_DSA "1.2.840.10040.4.1" +#define szOID_X957_SHA1DSA "1.2.840.10040.4.3" +#define szOID_ECC_PUBLIC_KEY "1.2.840.10045.2.1" +#define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7" +#define szOID_ECC_CURVE_P384 "1.3.132.0.34" +#define szOID_ECC_CURVE_P521 "1.3.132.0.35" +#define szOID_ECC_CURVE_BRAINPOOLP160R1 "1.3.36.3.3.2.8.1.1.1" +#define szOID_ECC_CURVE_BRAINPOOLP160T1 "1.3.36.3.3.2.8.1.1.2" +#define szOID_ECC_CURVE_BRAINPOOLP192R1 "1.3.36.3.3.2.8.1.1.3" +#define szOID_ECC_CURVE_BRAINPOOLP192T1 "1.3.36.3.3.2.8.1.1.4" +#define szOID_ECC_CURVE_BRAINPOOLP224R1 "1.3.36.3.3.2.8.1.1.5" +#define szOID_ECC_CURVE_BRAINPOOLP224T1 "1.3.36.3.3.2.8.1.1.6" +#define szOID_ECC_CURVE_BRAINPOOLP256R1 "1.3.36.3.3.2.8.1.1.7" +#define szOID_ECC_CURVE_BRAINPOOLP256T1 "1.3.36.3.3.2.8.1.1.8" +#define szOID_ECC_CURVE_BRAINPOOLP320R1 "1.3.36.3.3.2.8.1.1.9" +#define szOID_ECC_CURVE_BRAINPOOLP320T1 "1.3.36.3.3.2.8.1.1.10" +#define szOID_ECC_CURVE_BRAINPOOLP384R1 "1.3.36.3.3.2.8.1.1.11" +#define szOID_ECC_CURVE_BRAINPOOLP384T1 "1.3.36.3.3.2.8.1.1.12" +#define szOID_ECC_CURVE_BRAINPOOLP512R1 "1.3.36.3.3.2.8.1.1.13" +#define szOID_ECC_CURVE_BRAINPOOLP512T1 "1.3.36.3.3.2.8.1.1.14" +#define szOID_ECC_CURVE_EC192WAPI "1.2.156.11235.1.1.2.1" +#define szOID_CN_ECDSA_SHA256 "1.2.156.11235.1.1.1" +#define szOID_ECC_CURVE_NISTP192 "1.2.840.10045.3.1.1" +#define szOID_ECC_CURVE_NISTP224 "1.3.132.0.33" +#define szOID_ECC_CURVE_NISTP256 szOID_ECC_CURVE_P256 +#define szOID_ECC_CURVE_NISTP384 szOID_ECC_CURVE_P384 +#define szOID_ECC_CURVE_NISTP521 szOID_ECC_CURVE_P521 +#define szOID_ECC_CURVE_SECP160K1 "1.3.132.0.9" +#define szOID_ECC_CURVE_SECP160R1 "1.3.132.0.8" +#define szOID_ECC_CURVE_SECP160R2 "1.3.132.0.30" +#define szOID_ECC_CURVE_SECP192K1 "1.3.132.0.31" +#define szOID_ECC_CURVE_SECP192R1 szOID_ECC_CURVE_NISTP192 +#define szOID_ECC_CURVE_SECP224K1 "1.3.132.0.32" +#define szOID_ECC_CURVE_SECP224R1 szOID_ECC_CURVE_NISTP224 +#define szOID_ECC_CURVE_SECP256K1 "1.3.132.0.10" +#define szOID_ECC_CURVE_SECP256R1 szOID_ECC_CURVE_P256 +#define szOID_ECC_CURVE_SECP384R1 szOID_ECC_CURVE_P384 +#define szOID_ECC_CURVE_SECP521R1 szOID_ECC_CURVE_P521 +#define szOID_ECC_CURVE_WTLS7 szOID_ECC_CURVE_SECP160R2 +#define szOID_ECC_CURVE_WTLS9 "2.23.43.1.4.9" +#define szOID_ECC_CURVE_WTLS12 szOID_ECC_CURVE_NISTP224 +#define szOID_ECC_CURVE_X962P192V1 "1.2.840.10045.3.1.1" +#define szOID_ECC_CURVE_X962P192V2 "1.2.840.10045.3.1.2" +#define szOID_ECC_CURVE_X962P192V3 "1.2.840.10045.3.1.3" +#define szOID_ECC_CURVE_X962P239V1 "1.2.840.10045.3.1.4" +#define szOID_ECC_CURVE_X962P239V2 "1.2.840.10045.3.1.5" +#define szOID_ECC_CURVE_X962P239V3 "1.2.840.10045.3.1.6" +#define szOID_ECC_CURVE_X962P256V1 szOID_ECC_CURVE_P256 +#define szOID_ECDSA_SHA1 "1.2.840.10045.4.1" +#define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3" +#define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2" +#define szOID_ECDSA_SHA384 "1.2.840.10045.4.3.3" +#define szOID_ECDSA_SHA512 "1.2.840.10045.4.3.4" +#define szOID_NIST_AES128_CBC "2.16.840.1.101.3.4.1.2" +#define szOID_NIST_AES192_CBC "2.16.840.1.101.3.4.1.22" +#define szOID_NIST_AES256_CBC "2.16.840.1.101.3.4.1.42" +#define szOID_NIST_AES128_WRAP "2.16.840.1.101.3.4.1.5" +#define szOID_NIST_AES192_WRAP "2.16.840.1.101.3.4.1.25" +#define szOID_NIST_AES256_WRAP "2.16.840.1.101.3.4.1.45" +#define szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF "1.3.133.16.840.63.0.2" +#define szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF "1.3.132.1.11.1" +#define szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF "1.3.132.1.11.2" +#define szOID_DS "2.5" +#define szOID_DSALG "2.5.8" +#define szOID_DSALG_CRPT "2.5.8.1" +#define szOID_DSALG_HASH "2.5.8.2" +#define szOID_DSALG_SIGN "2.5.8.3" +#define szOID_DSALG_RSA "2.5.8.1.1" +#define szOID_OIW "1.3.14" +#define szOID_OIWSEC "1.3.14.3.2" +#define szOID_OIWSEC_md4RSA "1.3.14.3.2.2" +#define szOID_OIWSEC_md5RSA "1.3.14.3.2.3" +#define szOID_OIWSEC_md4RSA2 "1.3.14.3.2.4" +#define szOID_OIWSEC_desECB "1.3.14.3.2.6" +#define szOID_OIWSEC_desCBC "1.3.14.3.2.7" +#define szOID_OIWSEC_desOFB "1.3.14.3.2.8" +#define szOID_OIWSEC_desCFB "1.3.14.3.2.9" +#define szOID_OIWSEC_desMAC "1.3.14.3.2.10" +#define szOID_OIWSEC_rsaSign "1.3.14.3.2.11" +#define szOID_OIWSEC_dsa "1.3.14.3.2.12" +#define szOID_OIWSEC_shaDSA "1.3.14.3.2.13" +#define szOID_OIWSEC_mdc2RSA "1.3.14.3.2.14" +#define szOID_OIWSEC_shaRSA "1.3.14.3.2.15" +#define szOID_OIWSEC_dhCommMod "1.3.14.3.2.16" +#define szOID_OIWSEC_desEDE "1.3.14.3.2.17" +#define szOID_OIWSEC_sha "1.3.14.3.2.18" +#define szOID_OIWSEC_mdc2 "1.3.14.3.2.19" +#define szOID_OIWSEC_dsaComm "1.3.14.3.2.20" +#define szOID_OIWSEC_dsaCommSHA "1.3.14.3.2.21" +#define szOID_OIWSEC_rsaXchg "1.3.14.3.2.22" +#define szOID_OIWSEC_keyHashSeal "1.3.14.3.2.23" +#define szOID_OIWSEC_md2RSASign "1.3.14.3.2.24" +#define szOID_OIWSEC_md5RSASign "1.3.14.3.2.25" +#define szOID_OIWSEC_sha1 "1.3.14.3.2.26" +#define szOID_OIWSEC_dsaSHA1 "1.3.14.3.2.27" +#define szOID_OIWSEC_dsaCommSHA1 "1.3.14.3.2.28" +#define szOID_OIWSEC_sha1RSASign "1.3.14.3.2.29" +#define szOID_OIWDIR "1.3.14.7.2" +#define szOID_OIWDIR_CRPT "1.3.14.7.2.1" +#define szOID_OIWDIR_HASH "1.3.14.7.2.2" +#define szOID_OIWDIR_SIGN "1.3.14.7.2.3" +#define szOID_OIWDIR_md2 "1.3.14.7.2.2.1" +#define szOID_OIWDIR_md2RSA "1.3.14.7.2.3.1" +#define szOID_INFOSEC "2.16.840.1.101.2.1" +#define szOID_INFOSEC_sdnsSignature "2.16.840.1.101.2.1.1.1" +#define szOID_INFOSEC_mosaicSignature "2.16.840.1.101.2.1.1.2" +#define szOID_INFOSEC_sdnsConfidentiality "2.16.840.1.101.2.1.1.3" +#define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4" +#define szOID_INFOSEC_sdnsIntegrity "2.16.840.1.101.2.1.1.5" +#define szOID_INFOSEC_mosaicIntegrity "2.16.840.1.101.2.1.1.6" +#define szOID_INFOSEC_sdnsTokenProtection "2.16.840.1.101.2.1.1.7" +#define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8" +#define szOID_INFOSEC_sdnsKeyManagement "2.16.840.1.101.2.1.1.9" +#define szOID_INFOSEC_mosaicKeyManagement "2.16.840.1.101.2.1.1.10" +#define szOID_INFOSEC_sdnsKMandSig "2.16.840.1.101.2.1.1.11" +#define szOID_INFOSEC_mosaicKMandSig "2.16.840.1.101.2.1.1.12" +#define szOID_INFOSEC_SuiteASignature "2.16.840.1.101.2.1.1.13" +#define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14" +#define szOID_INFOSEC_SuiteAIntegrity "2.16.840.1.101.2.1.1.15" +#define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16" +#define szOID_INFOSEC_SuiteAKeyManagement "2.16.840.1.101.2.1.1.17" +#define szOID_INFOSEC_SuiteAKMandSig "2.16.840.1.101.2.1.1.18" +#define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19" +#define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20" +#define szOID_INFOSEC_mosaicUpdatedInteg "2.16.840.1.101.2.1.1.21" +#define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1" +#define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2" +#define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3" + typedef struct _CRYPT_OBJID_TABLE { + DWORD dwAlgId; + LPCSTR pszObjId; + } CRYPT_OBJID_TABLE,*PCRYPT_OBJID_TABLE; + typedef struct _CRYPT_HASH_INFO { + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_HASH_BLOB Hash; + } CRYPT_HASH_INFO,*PCRYPT_HASH_INFO; + typedef struct _CERT_EXTENSION { + LPSTR pszObjId; + WINBOOL fCritical; + CRYPT_OBJID_BLOB Value; + } CERT_EXTENSION,*PCERT_EXTENSION; + typedef const CERT_EXTENSION *PCCERT_EXTENSION; + typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Value; + } CRYPT_ATTRIBUTE_TYPE_VALUE,*PCRYPT_ATTRIBUTE_TYPE_VALUE; + typedef struct _CRYPT_ATTRIBUTE { + LPSTR pszObjId; + DWORD cValue; + PCRYPT_ATTR_BLOB rgValue; + } CRYPT_ATTRIBUTE,*PCRYPT_ATTRIBUTE; + typedef struct _CRYPT_ATTRIBUTES { + DWORD cAttr; + PCRYPT_ATTRIBUTE rgAttr; + } CRYPT_ATTRIBUTES,*PCRYPT_ATTRIBUTES; + typedef struct _CERT_RDN_ATTR { + LPSTR pszObjId; + DWORD dwValueType; + CERT_RDN_VALUE_BLOB Value; + } CERT_RDN_ATTR,*PCERT_RDN_ATTR; +#define szOID_COMMON_NAME "2.5.4.3" +#define szOID_SUR_NAME "2.5.4.4" +#define szOID_DEVICE_SERIAL_NUMBER "2.5.4.5" +#define szOID_COUNTRY_NAME "2.5.4.6" +#define szOID_LOCALITY_NAME "2.5.4.7" +#define szOID_STATE_OR_PROVINCE_NAME "2.5.4.8" +#define szOID_STREET_ADDRESS "2.5.4.9" +#define szOID_ORGANIZATION_NAME "2.5.4.10" +#define szOID_ORGANIZATIONAL_UNIT_NAME "2.5.4.11" +#define szOID_TITLE "2.5.4.12" +#define szOID_DESCRIPTION "2.5.4.13" +#define szOID_SEARCH_GUIDE "2.5.4.14" +#define szOID_BUSINESS_CATEGORY "2.5.4.15" +#define szOID_POSTAL_ADDRESS "2.5.4.16" +#define szOID_POSTAL_CODE "2.5.4.17" +#define szOID_POST_OFFICE_BOX "2.5.4.18" +#define szOID_PHYSICAL_DELIVERY_OFFICE_NAME "2.5.4.19" +#define szOID_TELEPHONE_NUMBER "2.5.4.20" +#define szOID_TELEX_NUMBER "2.5.4.21" +#define szOID_TELETEXT_TERMINAL_IDENTIFIER "2.5.4.22" +#define szOID_FACSIMILE_TELEPHONE_NUMBER "2.5.4.23" +#define szOID_X21_ADDRESS "2.5.4.24" +#define szOID_INTERNATIONAL_ISDN_NUMBER "2.5.4.25" +#define szOID_REGISTERED_ADDRESS "2.5.4.26" +#define szOID_DESTINATION_INDICATOR "2.5.4.27" +#define szOID_PREFERRED_DELIVERY_METHOD "2.5.4.28" +#define szOID_PRESENTATION_ADDRESS "2.5.4.29" +#define szOID_SUPPORTED_APPLICATION_CONTEXT "2.5.4.30" +#define szOID_MEMBER "2.5.4.31" +#define szOID_OWNER "2.5.4.32" +#define szOID_ROLE_OCCUPANT "2.5.4.33" +#define szOID_SEE_ALSO "2.5.4.34" +#define szOID_USER_PASSWORD "2.5.4.35" +#define szOID_USER_CERTIFICATE "2.5.4.36" +#define szOID_CA_CERTIFICATE "2.5.4.37" +#define szOID_AUTHORITY_REVOCATION_LIST "2.5.4.38" +#define szOID_CERTIFICATE_REVOCATION_LIST "2.5.4.39" +#define szOID_CROSS_CERTIFICATE_PAIR "2.5.4.40" +#define szOID_GIVEN_NAME "2.5.4.42" +#define szOID_INITIALS "2.5.4.43" +#define szOID_DN_QUALIFIER "2.5.4.46" +#define szOID_DOMAIN_COMPONENT "0.9.2342.19200300.100.1.25" +#define szOID_PKCS_12_FRIENDLY_NAME_ATTR "1.2.840.113549.1.9.20" +#define szOID_PKCS_12_LOCAL_KEY_ID "1.2.840.113549.1.9.21" +#define szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR "1.3.6.1.4.1.311.17.1" +#define szOID_LOCAL_MACHINE_KEYSET "1.3.6.1.4.1.311.17.2" +#define szOID_PKCS_12_EXTENDED_ATTRIBUTES "1.3.6.1.4.1.311.17.3" +#define szOID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID "1.3.6.1.4.1.311.17.4" +#define szOID_KEYID_RDN "1.3.6.1.4.1.311.10.7.1" +#define szOID_EV_RDN_LOCALE "1.3.6.1.4.1.311.60.2.1.1" +#define szOID_EV_RDN_STATE_OR_PROVINCE "1.3.6.1.4.1.311.60.2.1.2" +#define szOID_EV_RDN_COUNTRY "1.3.6.1.4.1.311.60.2.1.3" +#define CERT_RDN_ANY_TYPE 0 +#define CERT_RDN_ENCODED_BLOB 1 +#define CERT_RDN_OCTET_STRING 2 +#define CERT_RDN_NUMERIC_STRING 3 +#define CERT_RDN_PRINTABLE_STRING 4 +#define CERT_RDN_TELETEX_STRING 5 +#define CERT_RDN_T61_STRING 5 +#define CERT_RDN_VIDEOTEX_STRING 6 +#define CERT_RDN_IA5_STRING 7 +#define CERT_RDN_GRAPHIC_STRING 8 +#define CERT_RDN_VISIBLE_STRING 9 +#define CERT_RDN_ISO646_STRING 9 +#define CERT_RDN_GENERAL_STRING 10 +#define CERT_RDN_UNIVERSAL_STRING 11 +#define CERT_RDN_INT4_STRING 11 +#define CERT_RDN_BMP_STRING 12 +#define CERT_RDN_UNICODE_STRING 12 +#define CERT_RDN_UTF8_STRING 13 +#define CERT_RDN_TYPE_MASK 0x000000ff +#define CERT_RDN_FLAGS_MASK 0xff000000 +#define CERT_RDN_ENABLE_T61_UNICODE_FLAG 0x80000000 +#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x20000000 +#define CERT_RDN_FORCE_UTF8_UNICODE_FLAG 0x10000000 +#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG 0x40000000 +#define CERT_RDN_DISABLE_IE4_UTF8_FLAG 0x1000000 +#define CERT_RDN_ENABLE_PUNYCODE_FLAG 0x2000000 +#define IS_CERT_RDN_CHAR_STRING(X) (((X) & CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING) + typedef struct _CERT_RDN { + DWORD cRDNAttr; + PCERT_RDN_ATTR rgRDNAttr; + } CERT_RDN,*PCERT_RDN; + typedef struct _CERT_NAME_INFO { + DWORD cRDN; + PCERT_RDN rgRDN; + } CERT_NAME_INFO,*PCERT_NAME_INFO; + typedef struct _CERT_NAME_VALUE { + DWORD dwValueType; + CERT_RDN_VALUE_BLOB Value; + } CERT_NAME_VALUE,*PCERT_NAME_VALUE; + typedef struct _CERT_PUBLIC_KEY_INFO { + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_BIT_BLOB PublicKey; + } CERT_PUBLIC_KEY_INFO,*PCERT_PUBLIC_KEY_INFO; +#define CERT_RSA_PUBLIC_KEY_OBJID szOID_RSA_RSA +#define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN szOID_RSA_RSA +#define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG szOID_RSA_RSA + typedef struct _CRYPT_ECC_PRIVATE_KEY_INFO { + DWORD dwVersion; + CRYPT_DER_BLOB PrivateKey; + LPSTR szCurveOid; + CRYPT_BIT_BLOB PublicKey; + } CRYPT_ECC_PRIVATE_KEY_INFO,*PCRYPT_ECC_PRIVATE_KEY_INFO; +#define CRYPT_ECC_PRIVATE_KEY_INFO_v1 1 + typedef struct _CRYPT_PRIVATE_KEY_INFO { + DWORD Version; + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_DER_BLOB PrivateKey; + PCRYPT_ATTRIBUTES pAttributes; + } CRYPT_PRIVATE_KEY_INFO,*PCRYPT_PRIVATE_KEY_INFO; + typedef struct _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO { + CRYPT_ALGORITHM_IDENTIFIER EncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedPrivateKey; + } CRYPT_ENCRYPTED_PRIVATE_KEY_INFO,*PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO; + typedef WINBOOL (__attribute__((__stdcall__)) *PCRYPT_DECRYPT_PRIVATE_KEY_FUNC) (CRYPT_ALGORITHM_IDENTIFIER Algorithm, CRYPT_DATA_BLOB EncryptedPrivateKey, BYTE *pbClearTextKey, DWORD *pcbClearTextKey, LPVOID pVoidDecryptFunc); + typedef WINBOOL (__attribute__((__stdcall__)) *PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC) (CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm, CRYPT_DATA_BLOB *pClearTextPrivateKey, BYTE *pbEncryptedKey, DWORD *pcbEncryptedKey, LPVOID pVoidEncryptFunc); + typedef WINBOOL (__attribute__((__stdcall__)) *PCRYPT_RESOLVE_HCRYPTPROV_FUNC) (CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo, HCRYPTPROV *phCryptProv, LPVOID pVoidResolveFunc); + typedef struct _CRYPT_PKCS8_IMPORT_PARAMS { + CRYPT_DIGEST_BLOB PrivateKey; + PCRYPT_RESOLVE_HCRYPTPROV_FUNC pResolvehCryptProvFunc; + LPVOID pVoidResolveFunc; + PCRYPT_DECRYPT_PRIVATE_KEY_FUNC pDecryptPrivateKeyFunc; + LPVOID pVoidDecryptFunc; + } CRYPT_PKCS8_IMPORT_PARAMS,*PCRYPT_PKCS8_IMPORT_PARAMS, CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS,*PCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS; + typedef struct _CRYPT_PKCS8_EXPORT_PARAMS { + HCRYPTPROV hCryptProv; + DWORD dwKeySpec; + LPSTR pszPrivateKeyObjId; + PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC pEncryptPrivateKeyFunc; + LPVOID pVoidEncryptFunc; + } CRYPT_PKCS8_EXPORT_PARAMS,*PCRYPT_PKCS8_EXPORT_PARAMS; + typedef struct _CERT_INFO { + DWORD dwVersion; + CRYPT_INTEGER_BLOB SerialNumber; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME NotBefore; + FILETIME NotAfter; + CERT_NAME_BLOB Subject; + CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; + CRYPT_BIT_BLOB IssuerUniqueId; + CRYPT_BIT_BLOB SubjectUniqueId; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } CERT_INFO,*PCERT_INFO; +#define CERT_V1 0 +#define CERT_V2 1 +#define CERT_V3 2 +#define CERT_INFO_VERSION_FLAG 1 +#define CERT_INFO_SERIAL_NUMBER_FLAG 2 +#define CERT_INFO_SIGNATURE_ALGORITHM_FLAG 3 +#define CERT_INFO_ISSUER_FLAG 4 +#define CERT_INFO_NOT_BEFORE_FLAG 5 +#define CERT_INFO_NOT_AFTER_FLAG 6 +#define CERT_INFO_SUBJECT_FLAG 7 +#define CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG 8 +#define CERT_INFO_ISSUER_UNIQUE_ID_FLAG 9 +#define CERT_INFO_SUBJECT_UNIQUE_ID_FLAG 10 +#define CERT_INFO_EXTENSION_FLAG 11 + typedef struct _CRL_ENTRY { + CRYPT_INTEGER_BLOB SerialNumber; + FILETIME RevocationDate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } CRL_ENTRY,*PCRL_ENTRY; + typedef struct _CRL_INFO { + DWORD dwVersion; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME ThisUpdate; + FILETIME NextUpdate; + DWORD cCRLEntry; + PCRL_ENTRY rgCRLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } CRL_INFO,*PCRL_INFO; +#define CRL_V1 0 +#define CRL_V2 1 +#define CERT_BUNDLE_CERTIFICATE 0 +#define CERT_BUNDLE_CRL 1 + typedef struct _CERT_OR_CRL_BLOB { + DWORD dwChoice; + DWORD cbEncoded; + BYTE *pbEncoded; + } CERT_OR_CRL_BLOB,*PCERT_OR_CRL_BLOB; + typedef struct _CERT_OR_CRL_BUNDLE { + DWORD cItem; + PCERT_OR_CRL_BLOB rgItem; + } CERT_OR_CRL_BUNDLE,*PCERT_OR_CRL_BUNDLE; + typedef struct _CERT_REQUEST_INFO { + DWORD dwVersion; + CERT_NAME_BLOB Subject; + CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; + } CERT_REQUEST_INFO,*PCERT_REQUEST_INFO; +#define CERT_REQUEST_V1 0 + typedef struct _CERT_KEYGEN_REQUEST_INFO { + DWORD dwVersion; + CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; + LPWSTR pwszChallengeString; + } CERT_KEYGEN_REQUEST_INFO,*PCERT_KEYGEN_REQUEST_INFO; +#define CERT_KEYGEN_REQUEST_V1 0 + typedef struct _CERT_SIGNED_CONTENT_INFO { + CRYPT_DER_BLOB ToBeSigned; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CRYPT_BIT_BLOB Signature; + } CERT_SIGNED_CONTENT_INFO,*PCERT_SIGNED_CONTENT_INFO; + typedef struct _CTL_USAGE { + DWORD cUsageIdentifier; + LPSTR *rgpszUsageIdentifier; + } CTL_USAGE,*PCTL_USAGE,CERT_ENHKEY_USAGE,*PCERT_ENHKEY_USAGE; + typedef const CTL_USAGE *PCCTL_USAGE; + typedef const CERT_ENHKEY_USAGE *PCCERT_ENHKEY_USAGE; + typedef struct _CTL_ENTRY { + CRYPT_DATA_BLOB SubjectIdentifier; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; + } CTL_ENTRY,*PCTL_ENTRY; + typedef struct _CTL_INFO { + DWORD dwVersion; + CTL_USAGE SubjectUsage; + CRYPT_DATA_BLOB ListIdentifier; + CRYPT_INTEGER_BLOB SequenceNumber; + FILETIME ThisUpdate; + FILETIME NextUpdate; + CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; + DWORD cCTLEntry; + PCTL_ENTRY rgCTLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } CTL_INFO,*PCTL_INFO; +#define CTL_V1 0 + typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO { + LPSTR pszTimeStampAlgorithm; + LPSTR pszContentType; + CRYPT_OBJID_BLOB Content; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; + } CRYPT_TIME_STAMP_REQUEST_INFO,*PCRYPT_TIME_STAMP_REQUEST_INFO; + typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR { + LPWSTR pwszName; + LPWSTR pwszValue; + } CRYPT_ENROLLMENT_NAME_VALUE_PAIR,*PCRYPT_ENROLLMENT_NAME_VALUE_PAIR; + typedef struct _CRYPT_CSP_PROVIDER { + DWORD dwKeySpec; + LPWSTR pwszProviderName; + CRYPT_BIT_BLOB Signature; + } CRYPT_CSP_PROVIDER,*PCRYPT_CSP_PROVIDER; +#define CERT_ENCODING_TYPE_MASK 0x0000ffff +#define CMSG_ENCODING_TYPE_MASK 0xffff0000 +#define GET_CERT_ENCODING_TYPE(T) (T & CERT_ENCODING_TYPE_MASK) +#define GET_CMSG_ENCODING_TYPE(T) (T & CMSG_ENCODING_TYPE_MASK) +#define CRYPT_ASN_ENCODING 0x1 +#define CRYPT_NDR_ENCODING 0x2 +#define X509_ASN_ENCODING 0x1 +#define X509_NDR_ENCODING 0x2 +#define PKCS_7_ASN_ENCODING 0x10000 +#define PKCS_7_NDR_ENCODING 0x20000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptFormatObject (DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat); +#define CRYPT_FORMAT_STR_MULTI_LINE 0x1 +#define CRYPT_FORMAT_STR_NO_HEX 0x10 +#define CRYPT_FORMAT_SIMPLE 0x1 +#define CRYPT_FORMAT_X509 0x2 +#define CRYPT_FORMAT_OID 0x4 +#define CRYPT_FORMAT_RDN_SEMICOLON 0x100 +#define CRYPT_FORMAT_RDN_CRLF 0x200 +#define CRYPT_FORMAT_RDN_UNQUOTE 0x400 +#define CRYPT_FORMAT_RDN_REVERSE 0x800 +#define CRYPT_FORMAT_COMMA 0x1000 +#define CRYPT_FORMAT_SEMICOLON CRYPT_FORMAT_RDN_SEMICOLON +#define CRYPT_FORMAT_CRLF CRYPT_FORMAT_RDN_CRLF + typedef LPVOID (__attribute__((__stdcall__)) *PFN_CRYPT_ALLOC)(size_t cbSize); + typedef void (__attribute__((__stdcall__)) *PFN_CRYPT_FREE)(LPVOID pv); + typedef struct _CRYPT_ENCODE_PARA { + DWORD cbSize; + PFN_CRYPT_ALLOC pfnAlloc; + PFN_CRYPT_FREE pfnFree; + } CRYPT_ENCODE_PARA,*PCRYPT_ENCODE_PARA; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEncodeObjectEx (DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, void *pvEncoded, DWORD *pcbEncoded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEncodeObject (DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded); +#define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8 +#define CRYPT_ENCODE_ALLOC_FLAG 0x8000 +#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG CERT_RDN_ENABLE_T61_UNICODE_FLAG +#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG CERT_RDN_ENABLE_UTF8_UNICODE_FLAG +#define CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG CERT_RDN_FORCE_UTF8_UNICODE_FLAG +#define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG CERT_RDN_DISABLE_CHECK_TYPE_FLAG +#define CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x10000 +#define CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG 0x20000 +#define CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG 0x40000 +#define CRYPT_ENCODE_ENABLE_IA5CONVERSION_FLAG (CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG | CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG) + typedef struct _CRYPT_DECODE_PARA { + DWORD cbSize; + PFN_CRYPT_ALLOC pfnAlloc; + PFN_CRYPT_FREE pfnFree; + } CRYPT_DECODE_PARA,*PCRYPT_DECODE_PARA; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDecodeObjectEx (DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDecodeObject (DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo); +#define CRYPT_DECODE_NOCOPY_FLAG 0x1 +#define CRYPT_DECODE_TO_BE_SIGNED_FLAG 0x2 +#define CRYPT_DECODE_SHARE_OID_STRING_FLAG 0x4 +#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8 +#define CRYPT_DECODE_ALLOC_FLAG 0x8000 +#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG CERT_RDN_DISABLE_IE4_UTF8_FLAG +#define CRYPT_DECODE_ENABLE_PUNYCODE_FLAG 0x2000000 +#define CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG 0x4000000 +#define CRYPT_DECODE_ENABLE_IA5CONVERSION_FLAG (CRYPT_DECODE_ENABLE_PUNYCODE_FLAG | CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG) +#define CRYPT_ENCODE_DECODE_NONE 0 +#define X509_CERT ((LPCSTR) 1) +#define X509_CERT_TO_BE_SIGNED ((LPCSTR) 2) +#define X509_CERT_CRL_TO_BE_SIGNED ((LPCSTR) 3) +#define X509_CERT_REQUEST_TO_BE_SIGNED ((LPCSTR) 4) +#define X509_EXTENSIONS ((LPCSTR) 5) +#define X509_NAME_VALUE ((LPCSTR) 6) +#define X509_NAME ((LPCSTR) 7) +#define X509_PUBLIC_KEY_INFO ((LPCSTR) 8) +#define X509_AUTHORITY_KEY_ID ((LPCSTR) 9) +#define X509_KEY_ATTRIBUTES ((LPCSTR) 10) +#define X509_KEY_USAGE_RESTRICTION ((LPCSTR) 11) +#define X509_ALTERNATE_NAME ((LPCSTR) 12) +#define X509_BASIC_CONSTRAINTS ((LPCSTR) 13) +#define X509_KEY_USAGE ((LPCSTR) 14) +#define X509_BASIC_CONSTRAINTS2 ((LPCSTR) 15) +#define X509_CERT_POLICIES ((LPCSTR) 16) +#define PKCS_UTC_TIME ((LPCSTR) 17) +#define PKCS_TIME_REQUEST ((LPCSTR) 18) +#define RSA_CSP_PUBLICKEYBLOB ((LPCSTR) 19) +#define X509_UNICODE_NAME ((LPCSTR) 20) +#define X509_KEYGEN_REQUEST_TO_BE_SIGNED ((LPCSTR) 21) +#define PKCS_ATTRIBUTE ((LPCSTR) 22) +#define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY ((LPCSTR) 23) +#define X509_UNICODE_NAME_VALUE ((LPCSTR) 24) +#define X509_ANY_STRING X509_NAME_VALUE +#define X509_UNICODE_ANY_STRING X509_UNICODE_NAME_VALUE +#define X509_OCTET_STRING ((LPCSTR) 25) +#define X509_BITS ((LPCSTR) 26) +#define X509_INTEGER ((LPCSTR) 27) +#define X509_MULTI_BYTE_INTEGER ((LPCSTR) 28) +#define X509_ENUMERATED ((LPCSTR) 29) +#define X509_CHOICE_OF_TIME ((LPCSTR) 30) +#define X509_AUTHORITY_KEY_ID2 ((LPCSTR) 31) +#define X509_AUTHORITY_INFO_ACCESS ((LPCSTR) 32) +#define X509_SUBJECT_INFO_ACCESS X509_AUTHORITY_INFO_ACCESS +#define X509_CRL_REASON_CODE X509_ENUMERATED +#define PKCS_CONTENT_INFO ((LPCSTR) 33) +#define X509_SEQUENCE_OF_ANY ((LPCSTR) 34) +#define X509_CRL_DIST_POINTS ((LPCSTR) 35) +#define X509_ENHANCED_KEY_USAGE ((LPCSTR) 36) +#define PKCS_CTL ((LPCSTR) 37) +#define X509_MULTI_BYTE_UINT ((LPCSTR) 38) +#define X509_DSS_PUBLICKEY X509_MULTI_BYTE_UINT +#define X509_DSS_PARAMETERS ((LPCSTR) 39) +#define X509_DSS_SIGNATURE ((LPCSTR) 40) +#define PKCS_RC2_CBC_PARAMETERS ((LPCSTR) 41) +#define PKCS_SMIME_CAPABILITIES ((LPCSTR) 42) +#define X509_QC_STATEMENTS_EXT ((LPCSTR) 42) +#define PKCS_RSA_PRIVATE_KEY ((LPCSTR) 43) +#define PKCS_PRIVATE_KEY_INFO ((LPCSTR) 44) +#define PKCS_ENCRYPTED_PRIVATE_KEY_INFO ((LPCSTR) 45) +#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE ((LPCSTR) 46) +#define X509_DH_PUBLICKEY X509_MULTI_BYTE_UINT +#define X509_DH_PARAMETERS ((LPCSTR) 47) +#define X509_ECC_SIGNATURE ((LPCSTR) 47) +#define PKCS_ATTRIBUTES ((LPCSTR) 48) +#define PKCS_SORTED_CTL ((LPCSTR) 49) +#define X942_DH_PARAMETERS ((LPCSTR) 50) +#define X509_BITS_WITHOUT_TRAILING_ZEROES ((LPCSTR) 51) +#define X942_OTHER_INFO ((LPCSTR) 52) +#define X509_CERT_PAIR ((LPCSTR) 53) +#define X509_ISSUING_DIST_POINT ((LPCSTR) 54) +#define X509_NAME_CONSTRAINTS ((LPCSTR) 55) +#define X509_POLICY_MAPPINGS ((LPCSTR) 56) +#define X509_POLICY_CONSTRAINTS ((LPCSTR) 57) +#define X509_CROSS_CERT_DIST_POINTS ((LPCSTR) 58) +#define CMC_DATA ((LPCSTR) 59) +#define CMC_RESPONSE ((LPCSTR) 60) +#define CMC_STATUS ((LPCSTR) 61) +#define CMC_ADD_EXTENSIONS ((LPCSTR) 62) +#define CMC_ADD_ATTRIBUTES ((LPCSTR) 63) +#define X509_CERTIFICATE_TEMPLATE ((LPCSTR) 64) +#define OCSP_SIGNED_REQUEST ((LPCSTR) 65) +#define OCSP_REQUEST ((LPCSTR) 66) +#define OCSP_RESPONSE ((LPCSTR) 67) +#define OCSP_BASIC_SIGNED_RESPONSE ((LPCSTR) 68) +#define OCSP_BASIC_RESPONSE ((LPCSTR) 69) +#define X509_LOGOTYPE_EXT ((LPCSTR) 70) +#define X509_BIOMETRIC_EXT ((LPCSTR) 71) +#define CNG_RSA_PUBLIC_KEY_BLOB ((LPCSTR) 72) +#define X509_OBJECT_IDENTIFIER ((LPCSTR) 73) +#define X509_ALGORITHM_IDENTIFIER ((LPCSTR) 74) +#define PKCS_RSA_SSA_PSS_PARAMETERS ((LPCSTR) 75) +#define PKCS_RSAES_OAEP_PARAMETERS ((LPCSTR) 76) +#define ECC_CMS_SHARED_INFO ((LPCSTR) 77) +#define TIMESTAMP_REQUEST ((LPCSTR) 78) +#define TIMESTAMP_RESPONSE ((LPCSTR) 79) +#define TIMESTAMP_INFO ((LPCSTR) 80) +#define X509_CERT_BUNDLE ((LPCSTR) 81) +#define X509_ECC_PRIVATE_KEY ((LPCSTR) 82) +#define CNG_RSA_PRIVATE_KEY_BLOB ((LPCSTR) 83) +#define X509_SUBJECT_DIR_ATTRS ((LPCSTR) 84) +#define X509_ECC_PARAMETERS ((LPCSTR) 85) +#define PKCS7_SIGNER_INFO ((LPCSTR) 500) +#define CMS_SIGNER_INFO ((LPCSTR) 501) +#define szOID_AUTHORITY_KEY_IDENTIFIER "2.5.29.1" +#define szOID_KEY_ATTRIBUTES "2.5.29.2" +#define szOID_CERT_POLICIES_95 "2.5.29.3" +#define szOID_KEY_USAGE_RESTRICTION "2.5.29.4" +#define szOID_SUBJECT_ALT_NAME "2.5.29.7" +#define szOID_ISSUER_ALT_NAME "2.5.29.8" +#define szOID_BASIC_CONSTRAINTS "2.5.29.10" +#define szOID_KEY_USAGE "2.5.29.15" +#define szOID_PRIVATEKEY_USAGE_PERIOD "2.5.29.16" +#define szOID_BASIC_CONSTRAINTS2 "2.5.29.19" +#define szOID_CERT_POLICIES "2.5.29.32" +#define szOID_ANY_CERT_POLICY "2.5.29.32.0" +#define szOID_INHIBIT_ANY_POLICY "2.5.29.54" +#define szOID_AUTHORITY_KEY_IDENTIFIER2 "2.5.29.35" +#define szOID_SUBJECT_KEY_IDENTIFIER "2.5.29.14" +#define szOID_SUBJECT_ALT_NAME2 "2.5.29.17" +#define szOID_ISSUER_ALT_NAME2 "2.5.29.18" +#define szOID_CRL_REASON_CODE "2.5.29.21" +#define szOID_REASON_CODE_HOLD "2.5.29.23" +#define szOID_CRL_DIST_POINTS "2.5.29.31" +#define szOID_ENHANCED_KEY_USAGE "2.5.29.37" +#define szOID_ANY_ENHANCED_KEY_USAGE "2.5.29.37.0" +#define szOID_CRL_NUMBER "2.5.29.20" +#define szOID_DELTA_CRL_INDICATOR "2.5.29.27" +#define szOID_ISSUING_DIST_POINT "2.5.29.28" +#define szOID_FRESHEST_CRL "2.5.29.46" +#define szOID_NAME_CONSTRAINTS "2.5.29.30" +#define szOID_POLICY_MAPPINGS "2.5.29.33" +#define szOID_LEGACY_POLICY_MAPPINGS "2.5.29.5" +#define szOID_POLICY_CONSTRAINTS "2.5.29.36" +#define szOID_RENEWAL_CERTIFICATE "1.3.6.1.4.1.311.13.1" +#define szOID_ENROLLMENT_NAME_VALUE_PAIR "1.3.6.1.4.1.311.13.2.1" +#define szOID_ENROLLMENT_CSP_PROVIDER "1.3.6.1.4.1.311.13.2.2" +#define szOID_OS_VERSION "1.3.6.1.4.1.311.13.2.3" +#define szOID_ENROLLMENT_AGENT "1.3.6.1.4.1.311.20.2.1" +#define szOID_PKIX "1.3.6.1.5.5.7" +#define szOID_PKIX_PE "1.3.6.1.5.5.7.1" +#define szOID_AUTHORITY_INFO_ACCESS "1.3.6.1.5.5.7.1.1" +#define szOID_SUBJECT_INFO_ACCESS "1.3.6.1.5.5.7.1.11" +#define szOID_BIOMETRIC_EXT "1.3.6.1.5.5.7.1.2" +#define szOID_QC_STATEMENTS_EXT "1.3.6.1.5.5.7.1.3" +#define szOID_LOGOTYPE_EXT "1.3.6.1.5.5.7.1.12" +#define szOID_TLS_FEATURES_EXT "1.3.6.1.5.5.7.1.24" +#define szOID_CERT_EXTENSIONS "1.3.6.1.4.1.311.2.1.14" +#define szOID_NEXT_UPDATE_LOCATION "1.3.6.1.4.1.311.10.2" +#define szOID_REMOVE_CERTIFICATE "1.3.6.1.4.1.311.10.8.1" +#define szOID_CROSS_CERT_DIST_POINTS "1.3.6.1.4.1.311.10.9.1" +#define szOID_CTL "1.3.6.1.4.1.311.10.1" +#define szOID_SORTED_CTL "1.3.6.1.4.1.311.10.1.1" +#define szOID_SERIALIZED "1.3.6.1.4.1.311.10.3.3.1" +#define szOID_NT_PRINCIPAL_NAME "1.3.6.1.4.1.311.20.2.3" +#define szOID_INTERNATIONALIZED_EMAIL_ADDRESS "1.3.6.1.4.1.311.20.2.4" +#define szOID_PRODUCT_UPDATE "1.3.6.1.4.1.311.31.1" +#define szOID_ANY_APPLICATION_POLICY "1.3.6.1.4.1.311.10.12.1" +#define szOID_AUTO_ENROLL_CTL_USAGE "1.3.6.1.4.1.311.20.1" +#define szOID_ENROLL_CERTTYPE_EXTENSION "1.3.6.1.4.1.311.20.2" +#define szOID_CERT_MANIFOLD "1.3.6.1.4.1.311.20.3" +#define szOID_CERTSRV_CA_VERSION "1.3.6.1.4.1.311.21.1" +#define szOID_CERTSRV_PREVIOUS_CERT_HASH "1.3.6.1.4.1.311.21.2" +#define szOID_CRL_VIRTUAL_BASE "1.3.6.1.4.1.311.21.3" +#define szOID_CRL_NEXT_PUBLISH "1.3.6.1.4.1.311.21.4" +#define szOID_KP_CA_EXCHANGE "1.3.6.1.4.1.311.21.5" +#define szOID_KP_KEY_RECOVERY_AGENT "1.3.6.1.4.1.311.21.6" +#define szOID_CERTIFICATE_TEMPLATE "1.3.6.1.4.1.311.21.7" +#define szOID_ENTERPRISE_OID_ROOT "1.3.6.1.4.1.311.21.8" +#define szOID_RDN_DUMMY_SIGNER "1.3.6.1.4.1.311.21.9" +#define szOID_APPLICATION_CERT_POLICIES "1.3.6.1.4.1.311.21.10" +#define szOID_APPLICATION_POLICY_MAPPINGS "1.3.6.1.4.1.311.21.11" +#define szOID_APPLICATION_POLICY_CONSTRAINTS "1.3.6.1.4.1.311.21.12" +#define szOID_ARCHIVED_KEY_ATTR "1.3.6.1.4.1.311.21.13" +#define szOID_CRL_SELF_CDP "1.3.6.1.4.1.311.21.14" +#define szOID_REQUIRE_CERT_CHAIN_POLICY "1.3.6.1.4.1.311.21.15" +#define szOID_ARCHIVED_KEY_CERT_HASH "1.3.6.1.4.1.311.21.16" +#define szOID_ISSUED_CERT_HASH "1.3.6.1.4.1.311.21.17" +#define szOID_DS_EMAIL_REPLICATION "1.3.6.1.4.1.311.21.19" +#define szOID_REQUEST_CLIENT_INFO "1.3.6.1.4.1.311.21.20" +#define szOID_ENCRYPTED_KEY_HASH "1.3.6.1.4.1.311.21.21" +#define szOID_CERTSRV_CROSSCA_VERSION "1.3.6.1.4.1.311.21.22" +#define szOID_NTDS_REPLICATION "1.3.6.1.4.1.311.25.1" +#define szOID_SUBJECT_DIR_ATTRS "2.5.29.9" +#define szOID_PKIX_KP "1.3.6.1.5.5.7.3" +#define szOID_PKIX_KP_SERVER_AUTH "1.3.6.1.5.5.7.3.1" +#define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2" +#define szOID_PKIX_KP_CODE_SIGNING "1.3.6.1.5.5.7.3.3" +#define szOID_PKIX_KP_EMAIL_PROTECTION "1.3.6.1.5.5.7.3.4" +#define szOID_PKIX_KP_IPSEC_END_SYSTEM "1.3.6.1.5.5.7.3.5" +#define szOID_PKIX_KP_IPSEC_TUNNEL "1.3.6.1.5.5.7.3.6" +#define szOID_PKIX_KP_IPSEC_USER "1.3.6.1.5.5.7.3.7" +#define szOID_PKIX_KP_TIMESTAMP_SIGNING "1.3.6.1.5.5.7.3.8" +#define szOID_PKIX_KP_OCSP_SIGNING "1.3.6.1.5.5.7.3.9" +#define szOID_PKIX_OCSP_NONCE "1.3.6.1.5.5.7.48.1.2" +#define szOID_PKIX_OCSP_NOCHECK "1.3.6.1.5.5.7.48.1.5" +#define szOID_IPSEC_KP_IKE_INTERMEDIATE "1.3.6.1.5.5.8.2.2" +#define szOID_PKINIT_KP_KDC "1.3.6.1.5.2.3.5" +#define szOID_KP_CTL_USAGE_SIGNING "1.3.6.1.4.1.311.10.3.1" +#define szOID_KP_TIME_STAMP_SIGNING "1.3.6.1.4.1.311.10.3.2" +#define szOID_SERVER_GATED_CRYPTO "1.3.6.1.4.1.311.10.3.3" +#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1" +#define szOID_KP_EFS "1.3.6.1.4.1.311.10.3.4" +#define szOID_EFS_RECOVERY "1.3.6.1.4.1.311.10.3.4.1" +#define szOID_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5" +#define szOID_ATTEST_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5.1" +#define szOID_NT5_CRYPTO "1.3.6.1.4.1.311.10.3.6" +#define szOID_OEM_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.7" +#define szOID_EMBEDDED_NT_CRYPTO "1.3.6.1.4.1.311.10.3.8" +#define szOID_ROOT_LIST_SIGNER "1.3.6.1.4.1.311.10.3.9" +#define szOID_KP_QUALIFIED_SUBORDINATION "1.3.6.1.4.1.311.10.3.10" +#define szOID_KP_KEY_RECOVERY "1.3.6.1.4.1.311.10.3.11" +#define szOID_KP_DOCUMENT_SIGNING "1.3.6.1.4.1.311.10.3.12" +#define szOID_KP_LIFETIME_SIGNING "1.3.6.1.4.1.311.10.3.13" +#define szOID_KP_MOBILE_DEVICE_SOFTWARE "1.3.6.1.4.1.311.10.3.14" +#define szOID_KP_SMART_DISPLAY "1.3.6.1.4.1.311.10.3.15" +#define szOID_KP_CSP_SIGNATURE "1.3.6.1.4.1.311.10.3.16" +#define szOID_KP_FLIGHT_SIGNING "1.3.6.1.4.1.311.10.3.27" +#define szOID_PLATFORM_MANIFEST_BINARY_ID "1.3.6.1.4.1.311.10.3.28" +#define szOID_DRM "1.3.6.1.4.1.311.10.5.1" +#define szOID_DRM_INDIVIDUALIZATION "1.3.6.1.4.1.311.10.5.2" +#define szOID_LICENSES "1.3.6.1.4.1.311.10.6.1" +#define szOID_LICENSE_SERVER "1.3.6.1.4.1.311.10.6.2" +#define szOID_KP_SMARTCARD_LOGON "1.3.6.1.4.1.311.20.2.2" +#define szOID_KP_KERNEL_MODE_CODE_SIGNING "1.3.6.1.4.1.311.61.1.1" +#define szOID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING "1.3.6.1.4.1.311.61.4.1" +#define szOID_REVOKED_LIST_SIGNER "1.3.6.1.4.1.311.10.3.19" +#define szOID_WINDOWS_KITS_SIGNER "1.3.6.1.4.1.311.10.3.20" +#define szOID_WINDOWS_RT_SIGNER "1.3.6.1.4.1.311.10.3.21" +#define szOID_PROTECTED_PROCESS_LIGHT_SIGNER "1.3.6.1.4.1.311.10.3.22" +#define szOID_WINDOWS_TCB_SIGNER "1.3.6.1.4.1.311.10.3.23" +#define szOID_PROTECTED_PROCESS_SIGNER "1.3.6.1.4.1.311.10.3.24" +#define szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER "1.3.6.1.4.1.311.10.3.25" +#define szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER "1.3.6.1.4.1.311.10.3.26" +#define szOID_DISALLOWED_LIST "1.3.6.1.4.1.311.10.3.30" +#define szOID_PIN_RULES_SIGNER "1.3.6.1.4.1.311.10.3.31" +#define szOID_PIN_RULES_CTL "1.3.6.1.4.1.311.10.3.32" +#define szOID_PIN_RULES_EXT "1.3.6.1.4.1.311.10.3.33" +#define szOID_PIN_RULES_DOMAIN_NAME "1.3.6.1.4.1.311.10.3.34" +#define szOID_PIN_RULES_LOG_END_DATE_EXT "1.3.6.1.4.1.311.10.3.35" +#define szOID_IUM_SIGNING "1.3.6.1.4.1.311.10.3.37" +#define szOID_EV_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.39" +#define szOID_BIOMETRIC_SIGNING "1.3.6.1.4.1.311.10.3.41" +#define szOID_ENCLAVE_SIGNING "1.3.6.1.4.1.311.10.3.42" +#define szOID_SYNC_ROOT_CTL_EXT "1.3.6.1.4.1.311.10.3.50" +#define szOID_HPKP_DOMAIN_NAME_CTL "1.3.6.1.4.1.311.10.3.60" +#define szOID_HPKP_HEADER_VALUE_CTL "1.3.6.1.4.1.311.10.3.61" +#define szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING "1.3.6.1.4.1.311.61.5.1" +#define szOID_WINDOWS_STORE_SIGNER "1.3.6.1.4.1.311.76.3.1" +#define szOID_DYNAMIC_CODE_GEN_SIGNER "1.3.6.1.4.1.311.76.5.1" +#define szOID_MICROSOFT_PUBLISHER_SIGNER "1.3.6.1.4.1.311.76.8.1" +#define szOID_YESNO_TRUST_ATTR "1.3.6.1.4.1.311.10.4.1" +#define szOID_SITE_PIN_RULES_INDEX_ATTR "1.3.6.1.4.1.311.10.4.2" +#define szOID_SITE_PIN_RULES_FLAGS_ATTR "1.3.6.1.4.1.311.10.4.3" +#define SITE_PIN_RULES_ALL_SUBDOMAINS_FLAG 0x1 +#define szOID_PKIX_POLICY_QUALIFIER_CPS "1.3.6.1.5.5.7.2.1" +#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2" +#define szOID_ROOT_PROGRAM_FLAGS "1.3.6.1.4.1.311.60.1.1" +#define CERT_ROOT_PROGRAM_FLAG_ORG 0x80 +#define CERT_ROOT_PROGRAM_FLAG_LSC 0x40 +#define CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO 0x20 +#define CERT_ROOT_PROGRAM_FLAG_OU 0x10 +#define CERT_ROOT_PROGRAM_FLAG_ADDRESS 0x08 +#define szOID_CERT_POLICIES_95_QUALIFIER1 "2.16.840.1.113733.1.7.1.1" +#define szOID_RDN_TPM_MANUFACTURER "2.23.133.2.1" +#define szOID_RDN_TPM_MODEL "2.23.133.2.2" +#define szOID_RDN_TPM_VERSION "2.23.133.2.3" +#define szOID_RDN_TCG_PLATFORM_MANUFACTURER "2.23.133.2.4" +#define szOID_RDN_TCG_PLATFORM_MODEL "2.23.133.2.5" +#define szOID_RDN_TCG_PLATFORM_VERSION "2.23.133.2.6" +#define szOID_CT_CERT_SCTLIST "1.3.6.1.4.1.11129.2.4.2" +#define szOID_ENROLL_EK_INFO "1.3.6.1.4.1.311.21.23" +#define szOID_ENROLL_AIK_INFO "1.3.6.1.4.1.311.21.39" +#define szOID_ENROLL_ATTESTATION_STATEMENT "1.3.6.1.4.1.311.21.24" +#define szOID_ENROLL_KSP_NAME "1.3.6.1.4.1.311.21.25" +#define szOID_ENROLL_EKPUB_CHALLENGE "1.3.6.1.4.1.311.21.26" +#define szOID_ENROLL_CAXCHGCERT_HASH "1.3.6.1.4.1.311.21.27" +#define szOID_ENROLL_ATTESTATION_CHALLENGE "1.3.6.1.4.1.311.21.28" +#define szOID_ENROLL_ENCRYPTION_ALGORITHM "1.3.6.1.4.1.311.21.29" +#define szOID_KP_TPM_EK_CERTIFICATE "2.23.133.8.1" +#define szOID_KP_TPM_PLATFORM_CERTIFICATE "2.23.133.8.2" +#define szOID_KP_TPM_AIK_CERTIFICATE "2.23.133.8.3" +#define szOID_ENROLL_EKVERIFYKEY "1.3.6.1.4.1.311.21.30" +#define szOID_ENROLL_EKVERIFYCERT "1.3.6.1.4.1.311.21.31" +#define szOID_ENROLL_EKVERIFYCREDS "1.3.6.1.4.1.311.21.32" +#define szOID_ENROLL_SCEP_ERROR "1.3.6.1.4.1.311.21.33" +#define szOID_ENROLL_SCEP_SERVER_STATE "1.3.6.1.4.1.311.21.34" +#define szOID_ENROLL_SCEP_CHALLENGE_ANSWER "1.3.6.1.4.1.311.21.35" +#define szOID_ENROLL_SCEP_CLIENT_REQUEST "1.3.6.1.4.1.311.21.37" +#define szOID_ENROLL_SCEP_SERVER_MESSAGE "1.3.6.1.4.1.311.21.38" +#define szOID_ENROLL_SCEP_SERVER_SECRET "1.3.6.1.4.1.311.21.40" +#define szOID_ENROLL_KEY_AFFINITY "1.3.6.1.4.1.311.21.41" +#define szOID_ENROLL_SCEP_SIGNER_HASH "1.3.6.1.4.1.311.21.42" +#define szOID_ENROLL_EK_CA_KEYID "1.3.6.1.4.1.311.21.43" +#define szOID_ATTR_SUPPORTED_ALGORITHMS "2.5.4.52" +#define szOID_ATTR_TPM_SPECIFICATION "2.23.133.2.16" +#define szOID_ATTR_PLATFORM_SPECIFICATION "2.23.133.2.17" +#define szOID_ATTR_TPM_SECURITY_ASSERTIONS "2.23.133.2.18" + typedef struct _CERT_EXTENSIONS { + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } CERT_EXTENSIONS,*PCERT_EXTENSIONS; +#define CERT_UNICODE_RDN_ERR_INDEX_MASK 0x3ff +#define CERT_UNICODE_RDN_ERR_INDEX_SHIFT 22 +#define CERT_UNICODE_ATTR_ERR_INDEX_MASK 0x3f +#define CERT_UNICODE_ATTR_ERR_INDEX_SHIFT 16 +#define CERT_UNICODE_VALUE_ERR_INDEX_MASK 0xffff +#define CERT_UNICODE_VALUE_ERR_INDEX_SHIFT 0 +#define GET_CERT_UNICODE_RDN_ERR_INDEX(X) ((X >> CERT_UNICODE_RDN_ERR_INDEX_SHIFT) &CERT_UNICODE_RDN_ERR_INDEX_MASK) +#define GET_CERT_UNICODE_ATTR_ERR_INDEX(X) ((X >> CERT_UNICODE_ATTR_ERR_INDEX_SHIFT) &CERT_UNICODE_ATTR_ERR_INDEX_MASK) +#define GET_CERT_UNICODE_VALUE_ERR_INDEX(X) (X &CERT_UNICODE_VALUE_ERR_INDEX_MASK) + typedef struct _CERT_AUTHORITY_KEY_ID_INFO { + CRYPT_DATA_BLOB KeyId; + CERT_NAME_BLOB CertIssuer; + CRYPT_INTEGER_BLOB CertSerialNumber; + } CERT_AUTHORITY_KEY_ID_INFO,*PCERT_AUTHORITY_KEY_ID_INFO; + typedef struct _CERT_PRIVATE_KEY_VALIDITY { + FILETIME NotBefore; + FILETIME NotAfter; + } CERT_PRIVATE_KEY_VALIDITY,*PCERT_PRIVATE_KEY_VALIDITY; + typedef struct _CERT_KEY_ATTRIBUTES_INFO { + CRYPT_DATA_BLOB KeyId; + CRYPT_BIT_BLOB IntendedKeyUsage; + PCERT_PRIVATE_KEY_VALIDITY pPrivateKeyUsagePeriod; + } CERT_KEY_ATTRIBUTES_INFO,*PCERT_KEY_ATTRIBUTES_INFO; +#define CERT_ENCIPHER_ONLY_KEY_USAGE 0x01 +#define CERT_CRL_SIGN_KEY_USAGE 0x02 +#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE 0x02 +#define CERT_KEY_CERT_SIGN_KEY_USAGE 0x04 +#define CERT_KEY_AGREEMENT_KEY_USAGE 0x08 +#define CERT_DATA_ENCIPHERMENT_KEY_USAGE 0x10 +#define CERT_KEY_ENCIPHERMENT_KEY_USAGE 0x20 +#define CERT_NON_REPUDIATION_KEY_USAGE 0x40 +#define CERT_DIGITAL_SIGNATURE_KEY_USAGE 0x80 +#define CERT_DECIPHER_ONLY_KEY_USAGE 0x80 + typedef struct _CERT_POLICY_ID { + DWORD cCertPolicyElementId; + LPSTR *rgpszCertPolicyElementId; + } CERT_POLICY_ID,*PCERT_POLICY_ID; + typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO { + DWORD cCertPolicyId; + PCERT_POLICY_ID rgCertPolicyId; + CRYPT_BIT_BLOB RestrictedKeyUsage; + } CERT_KEY_USAGE_RESTRICTION_INFO,*PCERT_KEY_USAGE_RESTRICTION_INFO; + typedef struct _CERT_OTHER_NAME { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Value; + } CERT_OTHER_NAME,*PCERT_OTHER_NAME; + typedef struct _CERT_ALT_NAME_ENTRY { + DWORD dwAltNameChoice; + __extension__ union { + PCERT_OTHER_NAME pOtherName; + LPWSTR pwszRfc822Name; + LPWSTR pwszDNSName; + CERT_NAME_BLOB DirectoryName; + LPWSTR pwszURL; + CRYPT_DATA_BLOB IPAddress; + LPSTR pszRegisteredID; + }; + } CERT_ALT_NAME_ENTRY,*PCERT_ALT_NAME_ENTRY; +#define CERT_ALT_NAME_OTHER_NAME 1 +#define CERT_ALT_NAME_RFC822_NAME 2 +#define CERT_ALT_NAME_DNS_NAME 3 +#define CERT_ALT_NAME_X400_ADDRESS 4 +#define CERT_ALT_NAME_DIRECTORY_NAME 5 +#define CERT_ALT_NAME_EDI_PARTY_NAME 6 +#define CERT_ALT_NAME_URL 7 +#define CERT_ALT_NAME_IP_ADDRESS 8 +#define CERT_ALT_NAME_REGISTERED_ID 9 + typedef struct _CERT_ALT_NAME_INFO { + DWORD cAltEntry; + PCERT_ALT_NAME_ENTRY rgAltEntry; + } CERT_ALT_NAME_INFO,*PCERT_ALT_NAME_INFO; +#define CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK 0xff +#define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT 16 +#define CERT_ALT_NAME_VALUE_ERR_INDEX_MASK 0x0000ffff +#define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0 +#define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X) ((X >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) &CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK) +#define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X) (X &CERT_ALT_NAME_VALUE_ERR_INDEX_MASK) + typedef struct _CERT_BASIC_CONSTRAINTS_INFO { + CRYPT_BIT_BLOB SubjectType; + WINBOOL fPathLenConstraint; + DWORD dwPathLenConstraint; + DWORD cSubtreesConstraint; + CERT_NAME_BLOB *rgSubtreesConstraint; + } CERT_BASIC_CONSTRAINTS_INFO, *PCERT_BASIC_CONSTRAINTS_INFO; +#define CERT_CA_SUBJECT_FLAG 0x80 +#define CERT_END_ENTITY_SUBJECT_FLAG 0x40 + typedef struct _CERT_BASIC_CONSTRAINTS2_INFO { + WINBOOL fCA; + WINBOOL fPathLenConstraint; + DWORD dwPathLenConstraint; + } CERT_BASIC_CONSTRAINTS2_INFO,*PCERT_BASIC_CONSTRAINTS2_INFO; + typedef struct _CERT_POLICY_QUALIFIER_INFO { + LPSTR pszPolicyQualifierId; + CRYPT_OBJID_BLOB Qualifier; + } CERT_POLICY_QUALIFIER_INFO,*PCERT_POLICY_QUALIFIER_INFO; + typedef struct _CERT_POLICY_INFO { + LPSTR pszPolicyIdentifier; + DWORD cPolicyQualifier; + CERT_POLICY_QUALIFIER_INFO *rgPolicyQualifier; + } CERT_POLICY_INFO,*PCERT_POLICY_INFO; + typedef struct _CERT_POLICIES_INFO { + DWORD cPolicyInfo; + CERT_POLICY_INFO *rgPolicyInfo; + } CERT_POLICIES_INFO,*PCERT_POLICIES_INFO; + typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE { + LPSTR pszOrganization; + DWORD cNoticeNumbers; + int *rgNoticeNumbers; + } CERT_POLICY_QUALIFIER_NOTICE_REFERENCE,*PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE; + typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE { + CERT_POLICY_QUALIFIER_NOTICE_REFERENCE *pNoticeReference; + LPWSTR pszDisplayText; + } CERT_POLICY_QUALIFIER_USER_NOTICE,*PCERT_POLICY_QUALIFIER_USER_NOTICE; + typedef struct _CPS_URLS { + LPWSTR pszURL; + CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm; + CRYPT_DATA_BLOB *pDigest; + } CPS_URLS,*PCPS_URLS; + typedef struct _CERT_POLICY95_QUALIFIER1 { + LPWSTR pszPracticesReference; + LPSTR pszNoticeIdentifier; + LPSTR pszNSINoticeIdentifier; + DWORD cCPSURLs; + CPS_URLS *rgCPSURLs; + } CERT_POLICY95_QUALIFIER1,*PCERT_POLICY95_QUALIFIER1; + typedef struct _CERT_POLICY_MAPPING { + LPSTR pszIssuerDomainPolicy; + LPSTR pszSubjectDomainPolicy; + } CERT_POLICY_MAPPING,*PCERT_POLICY_MAPPING; + typedef struct _CERT_POLICY_MAPPINGS_INFO { + DWORD cPolicyMapping; + PCERT_POLICY_MAPPING rgPolicyMapping; + } CERT_POLICY_MAPPINGS_INFO,*PCERT_POLICY_MAPPINGS_INFO; + typedef struct _CERT_POLICY_CONSTRAINTS_INFO { + WINBOOL fRequireExplicitPolicy; + DWORD dwRequireExplicitPolicySkipCerts; + WINBOOL fInhibitPolicyMapping; + DWORD dwInhibitPolicyMappingSkipCerts; + } CERT_POLICY_CONSTRAINTS_INFO,*PCERT_POLICY_CONSTRAINTS_INFO; + typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY { + LPSTR pszObjId; + DWORD cValue; + PCRYPT_DER_BLOB rgValue; + } CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY,*PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY; + typedef struct _CRYPT_CONTENT_INFO { + LPSTR pszObjId; + CRYPT_DER_BLOB Content; + } CRYPT_CONTENT_INFO,*PCRYPT_CONTENT_INFO; + typedef struct _CRYPT_SEQUENCE_OF_ANY { + DWORD cValue; + PCRYPT_DER_BLOB rgValue; + } CRYPT_SEQUENCE_OF_ANY,*PCRYPT_SEQUENCE_OF_ANY; + typedef struct _CERT_AUTHORITY_KEY_ID2_INFO { + CRYPT_DATA_BLOB KeyId; + CERT_ALT_NAME_INFO AuthorityCertIssuer; + CRYPT_INTEGER_BLOB AuthorityCertSerialNumber; + } CERT_AUTHORITY_KEY_ID2_INFO,*PCERT_AUTHORITY_KEY_ID2_INFO; + typedef struct _CERT_ACCESS_DESCRIPTION { + LPSTR pszAccessMethod; + CERT_ALT_NAME_ENTRY AccessLocation; + } CERT_ACCESS_DESCRIPTION,*PCERT_ACCESS_DESCRIPTION; + typedef struct _CERT_AUTHORITY_INFO_ACCESS { + DWORD cAccDescr; + PCERT_ACCESS_DESCRIPTION rgAccDescr; + } CERT_AUTHORITY_INFO_ACCESS,*PCERT_AUTHORITY_INFO_ACCESS; + typedef CERT_AUTHORITY_INFO_ACCESS CERT_SUBJECT_INFO_ACCESS,*PCERT_SUBJECT_INFO_ACCESS; +#define szOID_PKIX_ACC_DESCR "1.3.6.1.5.5.7.48" +#define szOID_PKIX_OCSP "1.3.6.1.5.5.7.48.1" +#define szOID_PKIX_CA_ISSUERS "1.3.6.1.5.5.7.48.2" +#define szOID_PKIX_TIME_STAMPING "1.3.6.1.5.5.7.48.3" +#define szOID_PKIX_CA_REPOSITORY "1.3.6.1.5.5.7.48.5" +#define CRL_REASON_UNSPECIFIED 0 +#define CRL_REASON_KEY_COMPROMISE 1 +#define CRL_REASON_CA_COMPROMISE 2 +#define CRL_REASON_AFFILIATION_CHANGED 3 +#define CRL_REASON_SUPERSEDED 4 +#define CRL_REASON_CESSATION_OF_OPERATION 5 +#define CRL_REASON_CERTIFICATE_HOLD 6 +#define CRL_REASON_REMOVE_FROM_CRL 8 +#define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +#define CRL_REASON_AA_COMPROMISE 10 + typedef struct _CRL_DIST_POINT_NAME { + DWORD dwDistPointNameChoice; + __extension__ union { + CERT_ALT_NAME_INFO FullName; + }; + } CRL_DIST_POINT_NAME,*PCRL_DIST_POINT_NAME; +#define CRL_DIST_POINT_NO_NAME 0 +#define CRL_DIST_POINT_FULL_NAME 1 +#define CRL_DIST_POINT_ISSUER_RDN_NAME 2 + typedef struct _CRL_DIST_POINT { + CRL_DIST_POINT_NAME DistPointName; + CRYPT_BIT_BLOB ReasonFlags; + CERT_ALT_NAME_INFO CRLIssuer; + } CRL_DIST_POINT,*PCRL_DIST_POINT; +#define CRL_REASON_UNUSED_FLAG 0x80 +#define CRL_REASON_KEY_COMPROMISE_FLAG 0x40 +#define CRL_REASON_CA_COMPROMISE_FLAG 0x20 +#define CRL_REASON_AFFILIATION_CHANGED_FLAG 0x10 +#define CRL_REASON_SUPERSEDED_FLAG 0x08 +#define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x04 +#define CRL_REASON_CERTIFICATE_HOLD_FLAG 0x02 +#define CRL_REASON_PRIVILEGE_WITHDRAWN_FLAG 0x01 +#define CRL_REASON_AA_COMPROMISE_FLAG 0x80 + typedef struct _CRL_DIST_POINTS_INFO { + DWORD cDistPoint; + PCRL_DIST_POINT rgDistPoint; + } CRL_DIST_POINTS_INFO,*PCRL_DIST_POINTS_INFO; +#define CRL_DIST_POINT_ERR_INDEX_MASK 0x7f +#define CRL_DIST_POINT_ERR_INDEX_SHIFT 24 +#define GET_CRL_DIST_POINT_ERR_INDEX(X) ((X >> CRL_DIST_POINT_ERR_INDEX_SHIFT) &CRL_DIST_POINT_ERR_INDEX_MASK) +#define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT __MSABI_LONG(0x80000000) +#define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X) (0 != (X & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT)) + typedef struct _CROSS_CERT_DIST_POINTS_INFO { + DWORD dwSyncDeltaTime; + DWORD cDistPoint; + PCERT_ALT_NAME_INFO rgDistPoint; + } CROSS_CERT_DIST_POINTS_INFO,*PCROSS_CERT_DIST_POINTS_INFO; +#define CROSS_CERT_DIST_POINT_ERR_INDEX_MASK 0xff +#define CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT 24 +#define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(X) ((X >> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) &CROSS_CERT_DIST_POINT_ERR_INDEX_MASK) + typedef struct _CERT_PAIR { + CERT_BLOB Forward; + CERT_BLOB Reverse; + } CERT_PAIR,*PCERT_PAIR; + typedef struct _CRL_ISSUING_DIST_POINT { + CRL_DIST_POINT_NAME DistPointName; + WINBOOL fOnlyContainsUserCerts; + WINBOOL fOnlyContainsCACerts; + CRYPT_BIT_BLOB OnlySomeReasonFlags; + WINBOOL fIndirectCRL; + } CRL_ISSUING_DIST_POINT,*PCRL_ISSUING_DIST_POINT; + typedef struct _CERT_GENERAL_SUBTREE { + CERT_ALT_NAME_ENTRY Base; + DWORD dwMinimum; + WINBOOL fMaximum; + DWORD dwMaximum; + } CERT_GENERAL_SUBTREE,*PCERT_GENERAL_SUBTREE; + typedef struct _CERT_NAME_CONSTRAINTS_INFO { + DWORD cPermittedSubtree; + PCERT_GENERAL_SUBTREE rgPermittedSubtree; + DWORD cExcludedSubtree; + PCERT_GENERAL_SUBTREE rgExcludedSubtree; + } CERT_NAME_CONSTRAINTS_INFO,*PCERT_NAME_CONSTRAINTS_INFO; +#define CERT_EXCLUDED_SUBTREE_BIT __MSABI_LONG(0x80000000) +#define IS_CERT_EXCLUDED_SUBTREE(X) (0!=(X & CERT_EXCLUDED_SUBTREE_BIT)) +#define SORTED_CTL_EXT_FLAGS_OFFSET (0) +#define SORTED_CTL_EXT_COUNT_OFFSET (4) +#define SORTED_CTL_EXT_MAX_COLLISION_OFFSET (8) +#define SORTED_CTL_EXT_HASH_BUCKET_OFFSET (12) +#define SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG 0x1 + typedef struct _CERT_DSS_PARAMETERS { + CRYPT_UINT_BLOB p; + CRYPT_UINT_BLOB q; + CRYPT_UINT_BLOB g; + } CERT_DSS_PARAMETERS,*PCERT_DSS_PARAMETERS; +#define CERT_DSS_R_LEN 20 +#define CERT_DSS_S_LEN 20 +#define CERT_DSS_SIGNATURE_LEN (CERT_DSS_R_LEN + CERT_DSS_S_LEN) +#define CERT_MAX_ASN_ENCODED_DSS_SIGNATURE_LEN (48) + typedef struct _CERT_DH_PARAMETERS { + CRYPT_UINT_BLOB p; + CRYPT_UINT_BLOB g; + } CERT_DH_PARAMETERS,*PCERT_DH_PARAMETERS; + typedef struct _CERT_ECC_SIGNATURE { + CRYPT_UINT_BLOB r; + CRYPT_UINT_BLOB s; + } CERT_ECC_SIGNATURE,*PCERT_ECC_SIGNATURE; + typedef struct _CERT_X942_DH_VALIDATION_PARAMS { + CRYPT_BIT_BLOB seed; + DWORD pgenCounter; + } CERT_X942_DH_VALIDATION_PARAMS,*PCERT_X942_DH_VALIDATION_PARAMS; + typedef struct _CERT_X942_DH_PARAMETERS { + CRYPT_UINT_BLOB p; + CRYPT_UINT_BLOB g; + CRYPT_UINT_BLOB q; + CRYPT_UINT_BLOB j; + PCERT_X942_DH_VALIDATION_PARAMS pValidationParams; + } CERT_X942_DH_PARAMETERS,*PCERT_X942_DH_PARAMETERS; +#define CRYPT_X942_COUNTER_BYTE_LENGTH 4 +#define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH 4 +#define CRYPT_X942_PUB_INFO_BYTE_LENGTH (512/8) + typedef struct _CRYPT_X942_OTHER_INFO { + LPSTR pszContentEncryptionObjId; + BYTE rgbCounter[4]; + BYTE rgbKeyLength[4]; + CRYPT_DATA_BLOB PubInfo; + } CRYPT_X942_OTHER_INFO,*PCRYPT_X942_OTHER_INFO; +#define CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH 4 + typedef struct _CRYPT_ECC_CMS_SHARED_INFO { + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_DATA_BLOB EntityUInfo; + BYTE rgbSuppPubInfo[4]; + } CRYPT_ECC_CMS_SHARED_INFO,*PCRYPT_ECC_CMS_SHARED_INFO; + typedef struct _CRYPT_RC2_CBC_PARAMETERS { + DWORD dwVersion; + WINBOOL fIV; + BYTE rgbIV[8]; + } CRYPT_RC2_CBC_PARAMETERS,*PCRYPT_RC2_CBC_PARAMETERS; +#define CRYPT_RC2_40BIT_VERSION 160 +#define CRYPT_RC2_56BIT_VERSION 52 +#define CRYPT_RC2_64BIT_VERSION 120 +#define CRYPT_RC2_128BIT_VERSION 58 + typedef struct _CRYPT_SMIME_CAPABILITY { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; + } CRYPT_SMIME_CAPABILITY,*PCRYPT_SMIME_CAPABILITY; + typedef struct _CRYPT_SMIME_CAPABILITIES { + DWORD cCapability; + PCRYPT_SMIME_CAPABILITY rgCapability; + } CRYPT_SMIME_CAPABILITIES,*PCRYPT_SMIME_CAPABILITIES; + typedef struct _CERT_QC_STATEMENT { + LPSTR pszStatementId; + CRYPT_OBJID_BLOB StatementInfo; + } CERT_QC_STATEMENT,*PCERT_QC_STATEMENT; + typedef struct _CERT_QC_STATEMENTS_EXT_INFO { + DWORD cStatement; + PCERT_QC_STATEMENT rgStatement; + } CERT_QC_STATEMENTS_EXT_INFO,*PCERT_QC_STATEMENTS_EXT_INFO; +#define szOID_QC_EU_COMPLIANCE "0.4.0.1862.1.1" +#define szOID_QC_SSCD "0.4.0.1862.1.4" + typedef struct _CRYPT_MASK_GEN_ALGORITHM { + LPSTR pszObjId; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + } CRYPT_MASK_GEN_ALGORITHM,*PCRYPT_MASK_GEN_ALGORITHM; + typedef struct _CRYPT_RSA_SSA_PSS_PARAMETERS { + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_MASK_GEN_ALGORITHM MaskGenAlgorithm; + DWORD dwSaltLength; + DWORD dwTrailerField; + } CRYPT_RSA_SSA_PSS_PARAMETERS,*PCRYPT_RSA_SSA_PSS_PARAMETERS; +#define PKCS_RSA_SSA_PSS_TRAILER_FIELD_BC 1 + typedef struct _CRYPT_PSOURCE_ALGORITHM { + LPSTR pszObjId; + CRYPT_DATA_BLOB EncodingParameters; + } CRYPT_PSOURCE_ALGORITHM,*PCRYPT_PSOURCE_ALGORITHM; + typedef struct _CRYPT_RSAES_OAEP_PARAMETERS { + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_MASK_GEN_ALGORITHM MaskGenAlgorithm; + CRYPT_PSOURCE_ALGORITHM PSourceAlgorithm; + } CRYPT_RSAES_OAEP_PARAMETERS,*PCRYPT_RSAES_OAEP_PARAMETERS; +#define szOID_VERISIGN_PRIVATE_6_9 "2.16.840.1.113733.1.6.9" +#define szOID_VERISIGN_ONSITE_JURISDICTION_HASH "2.16.840.1.113733.1.6.11" +#define szOID_VERISIGN_BITSTRING_6_13 "2.16.840.1.113733.1.6.13" +#define szOID_VERISIGN_ISS_STRONG_CRYPTO "2.16.840.1.113733.1.8.1" +#define szOIDVerisign_MessageType "2.16.840.1.113733.1.9.2" +#define szOIDVerisign_PkiStatus "2.16.840.1.113733.1.9.3" +#define szOIDVerisign_FailInfo "2.16.840.1.113733.1.9.4" +#define szOIDVerisign_SenderNonce "2.16.840.1.113733.1.9.5" +#define szOIDVerisign_RecipientNonce "2.16.840.1.113733.1.9.6" +#define szOIDVerisign_TransactionID "2.16.840.1.113733.1.9.7" +#define szOID_NETSCAPE "2.16.840.1.113730" +#define szOID_NETSCAPE_CERT_EXTENSION "2.16.840.1.113730.1" +#define szOID_NETSCAPE_CERT_TYPE "2.16.840.1.113730.1.1" +#define szOID_NETSCAPE_BASE_URL "2.16.840.1.113730.1.2" +#define szOID_NETSCAPE_REVOCATION_URL "2.16.840.1.113730.1.3" +#define szOID_NETSCAPE_CA_REVOCATION_URL "2.16.840.1.113730.1.4" +#define szOID_NETSCAPE_CERT_RENEWAL_URL "2.16.840.1.113730.1.7" +#define szOID_NETSCAPE_CA_POLICY_URL "2.16.840.1.113730.1.8" +#define szOID_NETSCAPE_SSL_SERVER_NAME "2.16.840.1.113730.1.12" +#define szOID_NETSCAPE_COMMENT "2.16.840.1.113730.1.13" +#define szOID_NETSCAPE_DATA_TYPE "2.16.840.1.113730.2" +#define szOID_NETSCAPE_CERT_SEQUENCE "2.16.840.1.113730.2.5" +#define NETSCAPE_SIGN_CA_CERT_TYPE 0x01 +#define NETSCAPE_SMIME_CA_CERT_TYPE 0x02 +#define NETSCAPE_SSL_CA_CERT_TYPE 0x04 +#define NETSCAPE_SIGN_CERT_TYPE 0x10 +#define NETSCAPE_SMIME_CERT_TYPE 0x20 +#define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40 +#define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80 +#define szOID_CT_PKI_DATA "1.3.6.1.5.5.7.12.2" +#define szOID_CT_PKI_RESPONSE "1.3.6.1.5.5.7.12.3" +#define szOID_PKIX_NO_SIGNATURE "1.3.6.1.5.5.7.6.2" +#define szOID_CMC "1.3.6.1.5.5.7.7" +#define szOID_CMC_STATUS_INFO "1.3.6.1.5.5.7.7.1" +#define szOID_CMC_IDENTIFICATION "1.3.6.1.5.5.7.7.2" +#define szOID_CMC_IDENTITY_PROOF "1.3.6.1.5.5.7.7.3" +#define szOID_CMC_DATA_RETURN "1.3.6.1.5.5.7.7.4" +#define szOID_CMC_TRANSACTION_ID "1.3.6.1.5.5.7.7.5" +#define szOID_CMC_SENDER_NONCE "1.3.6.1.5.5.7.7.6" +#define szOID_CMC_RECIPIENT_NONCE "1.3.6.1.5.5.7.7.7" +#define szOID_CMC_ADD_EXTENSIONS "1.3.6.1.5.5.7.7.8" +#define szOID_CMC_ENCRYPTED_POP "1.3.6.1.5.5.7.7.9" +#define szOID_CMC_DECRYPTED_POP "1.3.6.1.5.5.7.7.10" +#define szOID_CMC_LRA_POP_WITNESS "1.3.6.1.5.5.7.7.11" +#define szOID_CMC_GET_CERT "1.3.6.1.5.5.7.7.15" +#define szOID_CMC_GET_CRL "1.3.6.1.5.5.7.7.16" +#define szOID_CMC_REVOKE_REQUEST "1.3.6.1.5.5.7.7.17" +#define szOID_CMC_REG_INFO "1.3.6.1.5.5.7.7.18" +#define szOID_CMC_RESPONSE_INFO "1.3.6.1.5.5.7.7.19" +#define szOID_CMC_QUERY_PENDING "1.3.6.1.5.5.7.7.21" +#define szOID_CMC_ID_POP_LINK_RANDOM "1.3.6.1.5.5.7.7.22" +#define szOID_CMC_ID_POP_LINK_WITNESS "1.3.6.1.5.5.7.7.23" +#define szOID_CMC_ID_CONFIRM_CERT_ACCEPTANCE "1.3.6.1.5.5.7.7.24" +#define szOID_CMC_ADD_ATTRIBUTES "1.3.6.1.4.1.311.10.10.1" + typedef struct _CMC_TAGGED_ATTRIBUTE { + DWORD dwBodyPartID; + CRYPT_ATTRIBUTE Attribute; + } CMC_TAGGED_ATTRIBUTE,*PCMC_TAGGED_ATTRIBUTE; + typedef struct _CMC_TAGGED_CERT_REQUEST { + DWORD dwBodyPartID; + CRYPT_DER_BLOB SignedCertRequest; + } CMC_TAGGED_CERT_REQUEST,*PCMC_TAGGED_CERT_REQUEST; + typedef struct _CMC_TAGGED_REQUEST { + DWORD dwTaggedRequestChoice; + __extension__ union { + PCMC_TAGGED_CERT_REQUEST pTaggedCertRequest; + }; + } CMC_TAGGED_REQUEST,*PCMC_TAGGED_REQUEST; +#define CMC_TAGGED_CERT_REQUEST_CHOICE 1 + typedef struct _CMC_TAGGED_CONTENT_INFO { + DWORD dwBodyPartID; + CRYPT_DER_BLOB EncodedContentInfo; + } CMC_TAGGED_CONTENT_INFO,*PCMC_TAGGED_CONTENT_INFO; + typedef struct _CMC_TAGGED_OTHER_MSG { + DWORD dwBodyPartID; + LPSTR pszObjId; + CRYPT_OBJID_BLOB Value; + } CMC_TAGGED_OTHER_MSG,*PCMC_TAGGED_OTHER_MSG; + typedef struct _CMC_DATA_INFO { + DWORD cTaggedAttribute; + PCMC_TAGGED_ATTRIBUTE rgTaggedAttribute; + DWORD cTaggedRequest; + PCMC_TAGGED_REQUEST rgTaggedRequest; + DWORD cTaggedContentInfo; + PCMC_TAGGED_CONTENT_INFO rgTaggedContentInfo; + DWORD cTaggedOtherMsg; + PCMC_TAGGED_OTHER_MSG rgTaggedOtherMsg; + } CMC_DATA_INFO,*PCMC_DATA_INFO; + typedef struct _CMC_RESPONSE_INFO { + DWORD cTaggedAttribute; + PCMC_TAGGED_ATTRIBUTE rgTaggedAttribute; + DWORD cTaggedContentInfo; + PCMC_TAGGED_CONTENT_INFO rgTaggedContentInfo; + DWORD cTaggedOtherMsg; + PCMC_TAGGED_OTHER_MSG rgTaggedOtherMsg; + } CMC_RESPONSE_INFO,*PCMC_RESPONSE_INFO; + typedef struct _CMC_PEND_INFO { + CRYPT_DATA_BLOB PendToken; + FILETIME PendTime; + } CMC_PEND_INFO,*PCMC_PEND_INFO; + typedef struct _CMC_STATUS_INFO { + DWORD dwStatus; + DWORD cBodyList; + DWORD *rgdwBodyList; + LPWSTR pwszStatusString; + DWORD dwOtherInfoChoice; + __extension__ union { + DWORD dwFailInfo; + PCMC_PEND_INFO pPendInfo; + }; + } CMC_STATUS_INFO,*PCMC_STATUS_INFO; +#define CMC_OTHER_INFO_NO_CHOICE 0 +#define CMC_OTHER_INFO_FAIL_CHOICE 1 +#define CMC_OTHER_INFO_PEND_CHOICE 2 +#define CMC_STATUS_SUCCESS 0 +#define CMC_STATUS_FAILED 2 +#define CMC_STATUS_PENDING 3 +#define CMC_STATUS_NO_SUPPORT 4 +#define CMC_STATUS_CONFIRM_REQUIRED 5 +#define CMC_FAIL_BAD_ALG 0 +#define CMC_FAIL_BAD_MESSAGE_CHECK 1 +#define CMC_FAIL_BAD_REQUEST 2 +#define CMC_FAIL_BAD_TIME 3 +#define CMC_FAIL_BAD_CERT_ID 4 +#define CMC_FAIL_UNSUPORTED_EXT 5 +#define CMC_FAIL_MUST_ARCHIVE_KEYS 6 +#define CMC_FAIL_BAD_IDENTITY 7 +#define CMC_FAIL_POP_REQUIRED 8 +#define CMC_FAIL_POP_FAILED 9 +#define CMC_FAIL_NO_KEY_REUSE 10 +#define CMC_FAIL_INTERNAL_CA_ERROR 11 +#define CMC_FAIL_TRY_LATER 12 + typedef struct _CMC_ADD_EXTENSIONS_INFO { + DWORD dwCmcDataReference; + DWORD cCertReference; + DWORD *rgdwCertReference; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } CMC_ADD_EXTENSIONS_INFO,*PCMC_ADD_EXTENSIONS_INFO; + typedef struct _CMC_ADD_ATTRIBUTES_INFO { + DWORD dwCmcDataReference; + DWORD cCertReference; + DWORD *rgdwCertReference; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; + } CMC_ADD_ATTRIBUTES_INFO,*PCMC_ADD_ATTRIBUTES_INFO; + typedef struct _CERT_TEMPLATE_EXT { + LPSTR pszObjId; + DWORD dwMajorVersion; + WINBOOL fMinorVersion; + DWORD dwMinorVersion; + } CERT_TEMPLATE_EXT,*PCERT_TEMPLATE_EXT; + typedef struct _CERT_HASHED_URL { + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_HASH_BLOB Hash; + LPWSTR pwszUrl; + } CERT_HASHED_URL,*PCERT_HASHED_URL; + typedef struct _CERT_LOGOTYPE_DETAILS { + LPWSTR pwszMimeType; + DWORD cHashedUrl; + PCERT_HASHED_URL rgHashedUrl; + } CERT_LOGOTYPE_DETAILS,*PCERT_LOGOTYPE_DETAILS; + typedef struct _CERT_LOGOTYPE_REFERENCE { + DWORD cHashedUrl; + PCERT_HASHED_URL rgHashedUrl; + } CERT_LOGOTYPE_REFERENCE,*PCERT_LOGOTYPE_REFERENCE; + typedef struct _CERT_LOGOTYPE_IMAGE_INFO { + DWORD dwLogotypeImageInfoChoice; + DWORD dwFileSize; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwLogotypeImageResolutionChoice; + __extension__ union { + DWORD dwNumBits; + DWORD dwTableSize; + }; + LPWSTR pwszLanguage; + } CERT_LOGOTYPE_IMAGE_INFO,*PCERT_LOGOTYPE_IMAGE_INFO; +#define CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE 1 +#define CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE 2 +#define CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE 0 +#define CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE 1 +#define CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE 2 + typedef struct _CERT_LOGOTYPE_IMAGE { + CERT_LOGOTYPE_DETAILS LogotypeDetails; + PCERT_LOGOTYPE_IMAGE_INFO pLogotypeImageInfo; + } CERT_LOGOTYPE_IMAGE,*PCERT_LOGOTYPE_IMAGE; + typedef struct _CERT_LOGOTYPE_AUDIO_INFO { + DWORD dwFileSize; + DWORD dwPlayTime; + DWORD dwChannels; + DWORD dwSampleRate; + LPWSTR pwszLanguage; + } CERT_LOGOTYPE_AUDIO_INFO,*PCERT_LOGOTYPE_AUDIO_INFO; + typedef struct _CERT_LOGOTYPE_AUDIO { + CERT_LOGOTYPE_DETAILS LogotypeDetails; + PCERT_LOGOTYPE_AUDIO_INFO pLogotypeAudioInfo; + } CERT_LOGOTYPE_AUDIO,*PCERT_LOGOTYPE_AUDIO; + typedef struct _CERT_LOGOTYPE_DATA { + DWORD cLogotypeImage; + PCERT_LOGOTYPE_IMAGE rgLogotypeImage; + DWORD cLogotypeAudio; + PCERT_LOGOTYPE_AUDIO rgLogotypeAudio; + } CERT_LOGOTYPE_DATA,*PCERT_LOGOTYPE_DATA; + typedef struct _CERT_LOGOTYPE_INFO { + DWORD dwLogotypeInfoChoice; + __extension__ union { + PCERT_LOGOTYPE_DATA pLogotypeDirectInfo; + PCERT_LOGOTYPE_REFERENCE pLogotypeIndirectInfo; + }; + } CERT_LOGOTYPE_INFO,*PCERT_LOGOTYPE_INFO; +#define CERT_LOGOTYPE_DIRECT_INFO_CHOICE 1 +#define CERT_LOGOTYPE_INDIRECT_INFO_CHOICE 2 + typedef struct _CERT_OTHER_LOGOTYPE_INFO { + LPSTR pszObjId; + CERT_LOGOTYPE_INFO LogotypeInfo; + } CERT_OTHER_LOGOTYPE_INFO,*PCERT_OTHER_LOGOTYPE_INFO; +#define szOID_LOYALTY_OTHER_LOGOTYPE "1.3.6.1.5.5.7.20.1" +#define szOID_BACKGROUND_OTHER_LOGOTYPE "1.3.6.1.5.5.7.20.2" + typedef struct _CERT_LOGOTYPE_EXT_INFO { + DWORD cCommunityLogo; + PCERT_LOGOTYPE_INFO rgCommunityLogo; + PCERT_LOGOTYPE_INFO pIssuerLogo; + PCERT_LOGOTYPE_INFO pSubjectLogo; + DWORD cOtherLogo; + PCERT_OTHER_LOGOTYPE_INFO rgOtherLogo; + } CERT_LOGOTYPE_EXT_INFO,*PCERT_LOGOTYPE_EXT_INFO; + typedef struct _CERT_BIOMETRIC_DATA { + DWORD dwTypeOfBiometricDataChoice; + __extension__ union { + DWORD dwPredefined; + LPSTR pszObjId; + }; + CERT_HASHED_URL HashedUrl; + } CERT_BIOMETRIC_DATA,*PCERT_BIOMETRIC_DATA; +#define CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE 1 +#define CERT_BIOMETRIC_OID_DATA_CHOICE 2 +#define CERT_BIOMETRIC_PICTURE_TYPE 0 +#define CERT_BIOMETRIC_SIGNATURE_TYPE 1 + typedef struct _CERT_BIOMETRIC_EXT_INFO { + DWORD cBiometricData; + PCERT_BIOMETRIC_DATA rgBiometricData; + } CERT_BIOMETRIC_EXT_INFO,*PCERT_BIOMETRIC_EXT_INFO; + typedef struct _OCSP_SIGNATURE_INFO { + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CRYPT_BIT_BLOB Signature; + DWORD cCertEncoded; + PCERT_BLOB rgCertEncoded; + } OCSP_SIGNATURE_INFO,*POCSP_SIGNATURE_INFO; + typedef struct _OCSP_SIGNED_REQUEST_INFO { + CRYPT_DER_BLOB ToBeSigned; + POCSP_SIGNATURE_INFO pOptionalSignatureInfo; + } OCSP_SIGNED_REQUEST_INFO,*POCSP_SIGNED_REQUEST_INFO; + typedef struct _OCSP_CERT_ID { + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_HASH_BLOB IssuerNameHash; + CRYPT_HASH_BLOB IssuerKeyHash; + CRYPT_INTEGER_BLOB SerialNumber; + } OCSP_CERT_ID,*POCSP_CERT_ID; + typedef struct _OCSP_REQUEST_ENTRY { + OCSP_CERT_ID CertId; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } OCSP_REQUEST_ENTRY,*POCSP_REQUEST_ENTRY; + typedef struct _OCSP_REQUEST_INFO { + DWORD dwVersion; + PCERT_ALT_NAME_ENTRY pRequestorName; + DWORD cRequestEntry; + POCSP_REQUEST_ENTRY rgRequestEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } OCSP_REQUEST_INFO,*POCSP_REQUEST_INFO; +#define OCSP_REQUEST_V1 0 + typedef struct _OCSP_RESPONSE_INFO { + DWORD dwStatus; + LPSTR pszObjId; + CRYPT_OBJID_BLOB Value; + } OCSP_RESPONSE_INFO,*POCSP_RESPONSE_INFO; +#define OCSP_SUCCESSFUL_RESPONSE 0 +#define OCSP_MALFORMED_REQUEST_RESPONSE 1 +#define OCSP_INTERNAL_ERROR_RESPONSE 2 +#define OCSP_TRY_LATER_RESPONSE 3 +#define OCSP_SIG_REQUIRED_RESPONSE 5 +#define OCSP_UNAUTHORIZED_RESPONSE 6 +#define szOID_PKIX_OCSP_BASIC_SIGNED_RESPONSE "1.3.6.1.5.5.7.48.1.1" + typedef struct _OCSP_BASIC_SIGNED_RESPONSE_INFO { + CRYPT_DER_BLOB ToBeSigned; + OCSP_SIGNATURE_INFO SignatureInfo; + } OCSP_BASIC_SIGNED_RESPONSE_INFO,*POCSP_BASIC_SIGNED_RESPONSE_INFO; + typedef struct _OCSP_BASIC_REVOKED_INFO { + FILETIME RevocationDate; + DWORD dwCrlReasonCode; + } OCSP_BASIC_REVOKED_INFO,*POCSP_BASIC_REVOKED_INFO; + typedef struct _OCSP_BASIC_RESPONSE_ENTRY { + OCSP_CERT_ID CertId; + DWORD dwCertStatus; + __extension__ union { + POCSP_BASIC_REVOKED_INFO pRevokedInfo; + }; + FILETIME ThisUpdate; + FILETIME NextUpdate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } OCSP_BASIC_RESPONSE_ENTRY,*POCSP_BASIC_RESPONSE_ENTRY; +#define OCSP_BASIC_GOOD_CERT_STATUS 0 +#define OCSP_BASIC_REVOKED_CERT_STATUS 1 +#define OCSP_BASIC_UNKNOWN_CERT_STATUS 2 + typedef struct _OCSP_BASIC_RESPONSE_INFO { + DWORD dwVersion; + DWORD dwResponderIdChoice; + __extension__ union { + CERT_NAME_BLOB ByNameResponderId; + CRYPT_HASH_BLOB ByKeyResponderId; + }; + FILETIME ProducedAt; + DWORD cResponseEntry; + POCSP_BASIC_RESPONSE_ENTRY rgResponseEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; + } OCSP_BASIC_RESPONSE_INFO,*POCSP_BASIC_RESPONSE_INFO; +#define OCSP_BASIC_RESPONSE_V1 0 +#define OCSP_BASIC_BY_NAME_RESPONDER_ID 1 +#define OCSP_BASIC_BY_KEY_RESPONDER_ID 2 + typedef struct _CERT_SUPPORTED_ALGORITHM_INFO { + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_BIT_BLOB IntendedKeyUsage; + CERT_POLICIES_INFO IntendedCertPolicies; + } CERT_SUPPORTED_ALGORITHM_INFO, *PCERT_SUPPORTED_ALGORITHM_INFO; + typedef struct _CERT_TPM_SPECIFICATION_INFO { + LPWSTR pwszFamily; + DWORD dwLevel; + DWORD dwRevision; + } CERT_TPM_SPECIFICATION_INFO, *PCERT_TPM_SPECIFICATION_INFO; + typedef void *HCRYPTOIDFUNCSET; + typedef void *HCRYPTOIDFUNCADDR; +#define CRYPT_OID_ENCODE_OBJECT_FUNC "CryptDllEncodeObject" +#define CRYPT_OID_DECODE_OBJECT_FUNC "CryptDllDecodeObject" +#define CRYPT_OID_ENCODE_OBJECT_EX_FUNC "CryptDllEncodeObjectEx" +#define CRYPT_OID_DECODE_OBJECT_EX_FUNC "CryptDllDecodeObjectEx" +#define CRYPT_OID_CREATE_COM_OBJECT_FUNC "CryptDllCreateCOMObject" +#define CRYPT_OID_VERIFY_REVOCATION_FUNC "CertDllVerifyRevocation" +#define CRYPT_OID_VERIFY_CTL_USAGE_FUNC "CertDllVerifyCTLUsage" +#define CRYPT_OID_FORMAT_OBJECT_FUNC "CryptDllFormatObject" +#define CRYPT_OID_FIND_OID_INFO_FUNC "CryptDllFindOIDInfo" +#define CRYPT_OID_FIND_LOCALIZED_NAME_FUNC "CryptDllFindLocalizedName" +#define CRYPT_OID_REGPATH "Software\\Microsoft\\Cryptography\\OID" +#define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType " +#define CRYPT_OID_REG_DLL_VALUE_NAME L"Dll" +#define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME L"FuncName" +#define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A "FuncName" +#define CRYPT_OID_REG_FLAGS_VALUE_NAME L"CryptFlags" +#define CRYPT_DEFAULT_OID "DEFAULT" + typedef struct _CRYPT_OID_FUNC_ENTRY { + LPCSTR pszOID; + void *pvFuncAddr; + } CRYPT_OID_FUNC_ENTRY,*PCRYPT_OID_FUNC_ENTRY; +#define CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG 1 +#define CRYPT_GET_INSTALLED_OID_FUNC_FLAG 0x1 +#define CRYPT_REGISTER_FIRST_INDEX 0 +#define CRYPT_REGISTER_LAST_INDEX 0xffffffff + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptInstallOIDFunctionAddress (HMODULE hModule, DWORD dwEncodingType, LPCSTR pszFuncName, DWORD cFuncEntry, const CRYPT_OID_FUNC_ENTRY rgFuncEntry[], DWORD dwFlags); + __declspec (dllimport) HCRYPTOIDFUNCSET __attribute__((__stdcall__)) CryptInitOIDFunctionSet (LPCSTR pszFuncName, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetOIDFunctionAddress (HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultOIDDllList (HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, WCHAR *pwszDllList, DWORD *pcchDllList); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultOIDFunctionAddress (HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptFreeOIDFunctionAddress (HCRYPTOIDFUNCADDR hFuncAddr, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptRegisterOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszDll, LPCSTR pszOverrideFuncName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUnregisterOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptRegisterDefaultOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, DWORD dwIndex, LPCWSTR pwszDll); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUnregisterDefaultOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCWSTR pwszDll); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetOIDFunctionValue (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszValueName, DWORD dwValueType, const BYTE *pbValueData, DWORD cbValueData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetOIDFunctionValue (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszValueName, DWORD *pdwValueType, BYTE *pbValueData, DWORD *pcbValueData); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_ENUM_OID_FUNC) (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, DWORD cValue, const DWORD rgdwValueType[], LPCWSTR const rgpwszValueName[], const BYTE *const rgpbValueData[], const DWORD rgcbValueData[], void *pvArg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEnumOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, DWORD dwFlags, void *pvArg, PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc); +#define CRYPT_MATCH_ANY_ENCODING_TYPE 0xffffffff +#define CALG_OID_INFO_CNG_ONLY 0xffffffff +#define CALG_OID_INFO_PARAMETERS 0xfffffffe +#define IS_SPECIAL_OID_INFO_ALGID(Algid) (Algid >= CALG_OID_INFO_PARAMETERS) +#define CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM L"CryptOIDInfoHashParameters" +#define CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM L"CryptOIDInfoECCParameters" +#define CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM L"CryptOIDInfoMgf1Parameters" +#define CRYPT_OID_INFO_NO_SIGN_ALGORITHM L"CryptOIDInfoNoSign" +#define CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM L"CryptOIDInfoOAEPParameters" +#define CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM L"CryptOIDInfoECCWrapParameters" +#define CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM L"CryptOIDInfoNoParameters" + typedef struct _CRYPT_OID_INFO { + DWORD cbSize; + LPCSTR pszOID; + LPCWSTR pwszName; + DWORD dwGroupId; + __extension__ union { + DWORD dwValue; + ALG_ID Algid; + DWORD dwLength; + }; + CRYPT_DATA_BLOB ExtraInfo; + } CRYPT_OID_INFO,*PCRYPT_OID_INFO; + typedef const CRYPT_OID_INFO CCRYPT_OID_INFO,*PCCRYPT_OID_INFO; +#define CRYPT_HASH_ALG_OID_GROUP_ID 1 +#define CRYPT_ENCRYPT_ALG_OID_GROUP_ID 2 +#define CRYPT_PUBKEY_ALG_OID_GROUP_ID 3 +#define CRYPT_SIGN_ALG_OID_GROUP_ID 4 +#define CRYPT_RDN_ATTR_OID_GROUP_ID 5 +#define CRYPT_EXT_OR_ATTR_OID_GROUP_ID 6 +#define CRYPT_ENHKEY_USAGE_OID_GROUP_ID 7 +#define CRYPT_POLICY_OID_GROUP_ID 8 +#define CRYPT_TEMPLATE_OID_GROUP_ID 9 +#define CRYPT_KDF_OID_GROUP_ID 10 +#define CRYPT_LAST_OID_GROUP_ID 10 +#define CRYPT_FIRST_ALG_OID_GROUP_ID CRYPT_HASH_ALG_OID_GROUP_ID +#define CRYPT_LAST_ALG_OID_GROUP_ID CRYPT_SIGN_ALG_OID_GROUP_ID +#define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG 0x1 +#define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x2 +#define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG 0x4 +#define CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 0x40000000 +#define CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 0x80000000 +#define CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG 0x20000000 +#define CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG 0x10000000 + __declspec (dllimport) PCCRYPT_OID_INFO __attribute__((__stdcall__)) CryptFindOIDInfo (DWORD dwKeyType, void *pvKey, DWORD dwGroupId); +#define CRYPT_OID_INFO_OID_KEY 1 +#define CRYPT_OID_INFO_NAME_KEY 2 +#define CRYPT_OID_INFO_ALGID_KEY 3 +#define CRYPT_OID_INFO_SIGN_KEY 4 +#define CRYPT_OID_INFO_CNG_ALGID_KEY 5 +#define CRYPT_OID_INFO_CNG_SIGN_KEY 6 +#define CRYPT_OID_INFO_OID_KEY_FLAGS_MASK 0xffff0000 +#define CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG 0x80000000 +#define CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG 0x40000000 +#define CRYPT_OID_DISABLE_SEARCH_DS_FLAG 0x80000000 +#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK 0x0fff0000 +#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT 16 +#define CRYPT_INSTALL_OID_INFO_BEFORE_FLAG 1 + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_ENUM_OID_INFO) (PCCRYPT_OID_INFO pInfo, void *pvArg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptRegisterOIDInfo (PCCRYPT_OID_INFO pInfo, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUnregisterOIDInfo (PCCRYPT_OID_INFO pInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEnumOIDInfo (DWORD dwGroupId, DWORD dwFlags, void *pvArg, PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo); + __declspec (dllimport) LPCWSTR __attribute__((__stdcall__)) CryptFindLocalizedName (LPCWSTR pwszCryptName); +#define CRYPT_LOCALIZED_NAME_ENCODING_TYPE 0 +#define CRYPT_LOCALIZED_NAME_OID "LocalizedNames" +#define CERT_STRONG_SIGN_ECDSA_ALGORITHM L"ECDSA" + typedef struct _CERT_STRONG_SIGN_SERIALIZED_INFO { + DWORD dwFlags; + LPWSTR pwszCNGSignHashAlgids; + LPWSTR pwszCNGPubKeyMinBitLengths; + } CERT_STRONG_SIGN_SERIALIZED_INFO,*PCERT_STRONG_SIGN_SERIALIZED_INFO; + typedef struct _CERT_STRONG_SIGN_PARA { + DWORD cbSize; + DWORD dwInfoChoice; + __extension__ union { + void *pvInfo; + PCERT_STRONG_SIGN_SERIALIZED_INFO pSerializedInfo; + LPSTR pszOID; + }; + } CERT_STRONG_SIGN_PARA,*PCERT_STRONG_SIGN_PARA; + typedef const CERT_STRONG_SIGN_PARA *PCCERT_STRONG_SIGN_PARA; +#define CERT_STRONG_SIGN_SERIALIZED_INFO_CHOICE 1 +#define CERT_STRONG_SIGN_OID_INFO_CHOICE 2 +#define CERT_STRONG_SIGN_ENABLE_CRL_CHECK 0x1 +#define CERT_STRONG_SIGN_ENABLE_OCSP_CHECK 0x2 +#define szOID_CERT_STRONG_SIGN_OS_PREFIX "1.3.6.1.4.1.311.72.1." +#define szOID_CERT_STRONG_SIGN_OS_1 "1.3.6.1.4.1.311.72.1.1" +#define szOID_CERT_STRONG_SIGN_OS_CURRENT szOID_CERT_STRONG_SIGN_OS_1 +#define CERT_STRONG_SIGN_PARA_OS_1 { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_SIGN_OS_1 } +#define CERT_STRONG_SIGN_PARA_OS_CURRENT { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_SIGN_OS_CURRENT } +#define szOID_CERT_STRONG_KEY_OS_PREFIX "1.3.6.1.4.1.311.72.2." +#define szOID_CERT_STRONG_KEY_OS_1 "1.3.6.1.4.1.311.72.2.1" +#define szOID_CERT_STRONG_KEY_OS_CURRENT szOID_CERT_STRONG_KEY_OS_1 +#define CERT_STRONG_KEY_PARA_OS_1 { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_KEY_OS_1 } +#define CERT_STRONG_KEY_PARA_OS_CURRENT { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_KEY_OS_CURRENT } + typedef void *HCRYPTMSG; +#define szOID_PKCS_7_DATA "1.2.840.113549.1.7.1" +#define szOID_PKCS_7_SIGNED "1.2.840.113549.1.7.2" +#define szOID_PKCS_7_ENVELOPED "1.2.840.113549.1.7.3" +#define szOID_PKCS_7_SIGNEDANDENVELOPED "1.2.840.113549.1.7.4" +#define szOID_PKCS_7_DIGESTED "1.2.840.113549.1.7.5" +#define szOID_PKCS_7_ENCRYPTED "1.2.840.113549.1.7.6" +#define szOID_PKCS_9_CONTENT_TYPE "1.2.840.113549.1.9.3" +#define szOID_PKCS_9_MESSAGE_DIGEST "1.2.840.113549.1.9.4" +#define CMSG_DATA 1 +#define CMSG_SIGNED 2 +#define CMSG_ENVELOPED 3 +#define CMSG_SIGNED_AND_ENVELOPED 4 +#define CMSG_HASHED 5 +#define CMSG_ENCRYPTED 6 +#define CMSG_ALL_FLAGS (~__MSABI_LONG(0U)) +#define CMSG_DATA_FLAG (1 << CMSG_DATA) +#define CMSG_SIGNED_FLAG (1 << CMSG_SIGNED) +#define CMSG_ENVELOPED_FLAG (1 << CMSG_ENVELOPED) +#define CMSG_SIGNED_AND_ENVELOPED_FLAG (1 << CMSG_SIGNED_AND_ENVELOPED) +#define CMSG_HASHED_FLAG (1 << CMSG_HASHED) +#define CMSG_ENCRYPTED_FLAG (1 << CMSG_ENCRYPTED) + typedef struct _CERT_ISSUER_SERIAL_NUMBER { + CERT_NAME_BLOB Issuer; + CRYPT_INTEGER_BLOB SerialNumber; + } CERT_ISSUER_SERIAL_NUMBER,*PCERT_ISSUER_SERIAL_NUMBER; + typedef struct _CERT_ID { + DWORD dwIdChoice; + __extension__ union { + CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber; + CRYPT_HASH_BLOB KeyId; + CRYPT_HASH_BLOB HashId; + }; + } CERT_ID,*PCERT_ID; +#define CERT_ID_ISSUER_SERIAL_NUMBER 1 +#define CERT_ID_KEY_IDENTIFIER 2 +#define CERT_ID_SHA1_HASH 3 + typedef struct _CMSG_SIGNER_ENCODE_INFO { + DWORD cbSize; + PCERT_INFO pCertInfo; + __extension__ union { + HCRYPTPROV hCryptProv; + NCRYPT_KEY_HANDLE hNCryptKey; + }; + DWORD dwKeySpec; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + void *pvHashAuxInfo; + DWORD cAuthAttr; + PCRYPT_ATTRIBUTE rgAuthAttr; + DWORD cUnauthAttr; + PCRYPT_ATTRIBUTE rgUnauthAttr; + } CMSG_SIGNER_ENCODE_INFO,*PCMSG_SIGNER_ENCODE_INFO; + typedef struct _CMSG_SIGNED_ENCODE_INFO { + DWORD cbSize; + DWORD cSigners; + PCMSG_SIGNER_ENCODE_INFO rgSigners; + DWORD cCertEncoded; + PCERT_BLOB rgCertEncoded; + DWORD cCrlEncoded; + PCRL_BLOB rgCrlEncoded; + } CMSG_SIGNED_ENCODE_INFO,*PCMSG_SIGNED_ENCODE_INFO; + typedef struct _CMSG_RECIPIENT_ENCODE_INFO CMSG_RECIPIENT_ENCODE_INFO,*PCMSG_RECIPIENT_ENCODE_INFO; + typedef struct _CMSG_ENVELOPED_ENCODE_INFO { + DWORD cbSize; + HCRYPTPROV_LEGACY hCryptProv; + CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; + void *pvEncryptionAuxInfo; + DWORD cRecipients; + PCERT_INFO *rgpRecipients; + } CMSG_ENVELOPED_ENCODE_INFO,*PCMSG_ENVELOPED_ENCODE_INFO; + typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO { + DWORD cbSize; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + void *pvKeyEncryptionAuxInfo; + HCRYPTPROV_LEGACY hCryptProv; + CRYPT_BIT_BLOB RecipientPublicKey; + CERT_ID RecipientId; + } CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO,*PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO; + typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO { + DWORD cbSize; + CRYPT_BIT_BLOB RecipientPublicKey; + CERT_ID RecipientId; + FILETIME Date; + PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; + } CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,*PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO; + typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO { + DWORD cbSize; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + void *pvKeyEncryptionAuxInfo; + CRYPT_ALGORITHM_IDENTIFIER KeyWrapAlgorithm; + void *pvKeyWrapAuxInfo; + HCRYPTPROV_LEGACY hCryptProv; + DWORD dwKeySpec; + DWORD dwKeyChoice; + __extension__ union { + PCRYPT_ALGORITHM_IDENTIFIER pEphemeralAlgorithm; + PCERT_ID pSenderId; + }; + CRYPT_DATA_BLOB UserKeyingMaterial; + DWORD cRecipientEncryptedKeys; + PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO *rgpRecipientEncryptedKeys; + } CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO,*PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO; +#define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1 +#define CMSG_KEY_AGREE_STATIC_KEY_CHOICE 2 + typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO { + DWORD cbSize; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + void *pvKeyEncryptionAuxInfo; + HCRYPTPROV hCryptProv; + DWORD dwKeyChoice; + __extension__ union { + HCRYPTKEY hKeyEncryptionKey; + void *pvKeyEncryptionKey; + }; + CRYPT_DATA_BLOB KeyId; + FILETIME Date; + PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; + } CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO,*PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO; +#define CMSG_MAIL_LIST_HANDLE_KEY_CHOICE 1 +#define CMSG_KEY_TRANS_RECIPIENT 1 +#define CMSG_KEY_AGREE_RECIPIENT 2 +#define CMSG_MAIL_LIST_RECIPIENT 3 +#define CMSG_RC4_NO_SALT_FLAG 0x40000000 +#define CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG 0x80000000 + struct _CMSG_RECIPIENT_ENCODE_INFO { + DWORD dwRecipientChoice; + __extension__ union { + PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTrans; + PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgree; + PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailList; + }; + }; + typedef struct _CMSG_RC2_AUX_INFO { + DWORD cbSize; + DWORD dwBitLen; + } CMSG_RC2_AUX_INFO,*PCMSG_RC2_AUX_INFO; + typedef struct _CMSG_SP3_COMPATIBLE_AUX_INFO { + DWORD cbSize; + DWORD dwFlags; + } CMSG_SP3_COMPATIBLE_AUX_INFO,*PCMSG_SP3_COMPATIBLE_AUX_INFO; + typedef struct _CMSG_RC4_AUX_INFO { + DWORD cbSize; + DWORD dwBitLen; + } CMSG_RC4_AUX_INFO,*PCMSG_RC4_AUX_INFO; + typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO { + DWORD cbSize; + CMSG_SIGNED_ENCODE_INFO SignedInfo; + CMSG_ENVELOPED_ENCODE_INFO EnvelopedInfo; + } CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO,*PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO; + typedef struct _CMSG_HASHED_ENCODE_INFO { + DWORD cbSize; + HCRYPTPROV_LEGACY hCryptProv; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + void *pvHashAuxInfo; + } CMSG_HASHED_ENCODE_INFO,*PCMSG_HASHED_ENCODE_INFO; + typedef struct _CMSG_ENCRYPTED_ENCODE_INFO { + DWORD cbSize; + CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; + void *pvEncryptionAuxInfo; + } CMSG_ENCRYPTED_ENCODE_INFO,*PCMSG_ENCRYPTED_ENCODE_INFO; + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_STREAM_OUTPUT) (const void *pvArg, BYTE *pbData, DWORD cbData, WINBOOL fFinal); +#define CMSG_INDEFINITE_LENGTH (0xffffffff) + typedef struct _CMSG_STREAM_INFO { + DWORD cbContent; + PFN_CMSG_STREAM_OUTPUT pfnStreamOutput; + void *pvArg; + } CMSG_STREAM_INFO,*PCMSG_STREAM_INFO; +#define CMSG_BARE_CONTENT_FLAG 0x1 +#define CMSG_LENGTH_ONLY_FLAG 0x2 +#define CMSG_DETACHED_FLAG 0x4 +#define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x8 +#define CMSG_CONTENTS_OCTETS_FLAG 0x10 +#define CMSG_MAX_LENGTH_FLAG 0x20 +#define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x40 +#define CMSG_SIGNED_DATA_NO_SIGN_FLAG 0x80 +#define CMSG_CRYPT_RELEASE_CONTEXT_FLAG 0x8000 + __declspec (dllimport) HCRYPTMSG __attribute__((__stdcall__)) CryptMsgOpenToEncode (DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, void const *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, PCMSG_STREAM_INFO pStreamInfo); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CryptMsgCalculateEncodedLength (DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, void const *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, DWORD cbData); + __declspec (dllimport) HCRYPTMSG __attribute__((__stdcall__)) CryptMsgOpenToDecode (DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo, PCMSG_STREAM_INFO pStreamInfo); + __declspec (dllimport) HCRYPTMSG __attribute__((__stdcall__)) CryptMsgDuplicate (HCRYPTMSG hCryptMsg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptMsgClose (HCRYPTMSG hCryptMsg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptMsgUpdate (HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, WINBOOL fFinal); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptMsgGetParam (HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData); +#define CMSG_TYPE_PARAM 1 +#define CMSG_CONTENT_PARAM 2 +#define CMSG_BARE_CONTENT_PARAM 3 +#define CMSG_INNER_CONTENT_TYPE_PARAM 4 +#define CMSG_SIGNER_COUNT_PARAM 5 +#define CMSG_SIGNER_INFO_PARAM 6 +#define CMSG_SIGNER_CERT_INFO_PARAM 7 +#define CMSG_SIGNER_HASH_ALGORITHM_PARAM 8 +#define CMSG_SIGNER_AUTH_ATTR_PARAM 9 +#define CMSG_SIGNER_UNAUTH_ATTR_PARAM 10 +#define CMSG_CERT_COUNT_PARAM 11 +#define CMSG_CERT_PARAM 12 +#define CMSG_CRL_COUNT_PARAM 13 +#define CMSG_CRL_PARAM 14 +#define CMSG_ENVELOPE_ALGORITHM_PARAM 15 +#define CMSG_RECIPIENT_COUNT_PARAM 17 +#define CMSG_RECIPIENT_INDEX_PARAM 18 +#define CMSG_RECIPIENT_INFO_PARAM 19 +#define CMSG_HASH_ALGORITHM_PARAM 20 +#define CMSG_HASH_DATA_PARAM 21 +#define CMSG_COMPUTED_HASH_PARAM 22 +#define CMSG_ENCRYPT_PARAM 26 +#define CMSG_ENCRYPTED_DIGEST 27 +#define CMSG_ENCODED_SIGNER 28 +#define CMSG_ENCODED_MESSAGE 29 +#define CMSG_VERSION_PARAM 30 +#define CMSG_ATTR_CERT_COUNT_PARAM 31 +#define CMSG_ATTR_CERT_PARAM 32 +#define CMSG_CMS_RECIPIENT_COUNT_PARAM 33 +#define CMSG_CMS_RECIPIENT_INDEX_PARAM 34 +#define CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM 35 +#define CMSG_CMS_RECIPIENT_INFO_PARAM 36 +#define CMSG_UNPROTECTED_ATTR_PARAM 37 +#define CMSG_SIGNER_CERT_ID_PARAM 38 +#define CMSG_CMS_SIGNER_INFO_PARAM 39 + typedef struct _CMSG_SIGNER_INFO { + DWORD dwVersion; + CERT_NAME_BLOB Issuer; + CRYPT_INTEGER_BLOB SerialNumber; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedHash; + CRYPT_ATTRIBUTES AuthAttrs; + CRYPT_ATTRIBUTES UnauthAttrs; + } CMSG_SIGNER_INFO,*PCMSG_SIGNER_INFO; + typedef struct _CMSG_CMS_SIGNER_INFO { + DWORD dwVersion; + CERT_ID SignerId; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedHash; + CRYPT_ATTRIBUTES AuthAttrs; + CRYPT_ATTRIBUTES UnauthAttrs; + } CMSG_CMS_SIGNER_INFO,*PCMSG_CMS_SIGNER_INFO; + typedef CRYPT_ATTRIBUTES CMSG_ATTR; + typedef CRYPT_ATTRIBUTES *PCMSG_ATTR; +#define CMSG_SIGNED_DATA_V1 1 +#define CMSG_SIGNED_DATA_V3 3 +#define CMSG_SIGNED_DATA_PKCS_1_5_VERSION CMSG_SIGNED_DATA_V1 +#define CMSG_SIGNED_DATA_CMS_VERSION CMSG_SIGNED_DATA_V3 +#define CMSG_SIGNER_INFO_V1 1 +#define CMSG_SIGNER_INFO_V3 3 +#define CMSG_SIGNER_INFO_PKCS_1_5_VERSION CMSG_SIGNER_INFO_V1 +#define CMSG_SIGNER_INFO_CMS_VERSION CMSG_SIGNER_INFO_V3 +#define CMSG_HASHED_DATA_V0 0 +#define CMSG_HASHED_DATA_V2 2 +#define CMSG_HASHED_DATA_PKCS_1_5_VERSION CMSG_HASHED_DATA_V0 +#define CMSG_HASHED_DATA_CMS_VERSION CMSG_HASHED_DATA_V2 +#define CMSG_ENVELOPED_DATA_V0 0 +#define CMSG_ENVELOPED_DATA_V2 2 +#define CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION CMSG_ENVELOPED_DATA_V0 +#define CMSG_ENVELOPED_DATA_CMS_VERSION CMSG_ENVELOPED_DATA_V2 + typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO { + DWORD dwVersion; + CERT_ID RecipientId; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedKey; + } CMSG_KEY_TRANS_RECIPIENT_INFO,*PCMSG_KEY_TRANS_RECIPIENT_INFO; + typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO { + CERT_ID RecipientId; + CRYPT_DATA_BLOB EncryptedKey; + FILETIME Date; + PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; + } CMSG_RECIPIENT_ENCRYPTED_KEY_INFO,*PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO; + typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO { + DWORD dwVersion; + DWORD dwOriginatorChoice; + __extension__ union { + CERT_ID OriginatorCertId; + CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo; + }; + CRYPT_DATA_BLOB UserKeyingMaterial; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + DWORD cRecipientEncryptedKeys; + PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO *rgpRecipientEncryptedKeys; + } CMSG_KEY_AGREE_RECIPIENT_INFO,*PCMSG_KEY_AGREE_RECIPIENT_INFO; +#define CMSG_KEY_AGREE_ORIGINATOR_CERT 1 +#define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2 + typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO { + DWORD dwVersion; + CRYPT_DATA_BLOB KeyId; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedKey; + FILETIME Date; + PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; + } CMSG_MAIL_LIST_RECIPIENT_INFO,*PCMSG_MAIL_LIST_RECIPIENT_INFO; + typedef struct _CMSG_CMS_RECIPIENT_INFO { + DWORD dwRecipientChoice; + __extension__ union { + PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans; + PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree; + PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList; + }; + } CMSG_CMS_RECIPIENT_INFO,*PCMSG_CMS_RECIPIENT_INFO; +#define CMSG_ENVELOPED_RECIPIENT_V0 0 +#define CMSG_ENVELOPED_RECIPIENT_V2 2 +#define CMSG_ENVELOPED_RECIPIENT_V3 3 +#define CMSG_ENVELOPED_RECIPIENT_V4 4 +#define CMSG_KEY_TRANS_PKCS_1_5_VERSION CMSG_ENVELOPED_RECIPIENT_V0 +#define CMSG_KEY_TRANS_CMS_VERSION CMSG_ENVELOPED_RECIPIENT_V2 +#define CMSG_KEY_AGREE_VERSION CMSG_ENVELOPED_RECIPIENT_V3 +#define CMSG_MAIL_LIST_VERSION CMSG_ENVELOPED_RECIPIENT_V4 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptMsgControl (HCRYPTMSG hCryptMsg, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara); +#define CMSG_CTRL_VERIFY_SIGNATURE 1 +#define CMSG_CTRL_DECRYPT 2 +#define CMSG_CTRL_VERIFY_HASH 5 +#define CMSG_CTRL_ADD_SIGNER 6 +#define CMSG_CTRL_DEL_SIGNER 7 +#define CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR 8 +#define CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR 9 +#define CMSG_CTRL_ADD_CERT 10 +#define CMSG_CTRL_DEL_CERT 11 +#define CMSG_CTRL_ADD_CRL 12 +#define CMSG_CTRL_DEL_CRL 13 +#define CMSG_CTRL_ADD_ATTR_CERT 14 +#define CMSG_CTRL_DEL_ATTR_CERT 15 +#define CMSG_CTRL_KEY_TRANS_DECRYPT 16 +#define CMSG_CTRL_KEY_AGREE_DECRYPT 17 +#define CMSG_CTRL_MAIL_LIST_DECRYPT 18 +#define CMSG_CTRL_VERIFY_SIGNATURE_EX 19 +#define CMSG_CTRL_ADD_CMS_SIGNER_INFO 20 +#define CMSG_CTRL_ENABLE_STRONG_SIGNATURE 21 + typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA { + DWORD cbSize; + HCRYPTPROV_LEGACY hCryptProv; + DWORD dwSignerIndex; + DWORD dwSignerType; + void *pvSigner; + } CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA,*PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA; +#define CMSG_VERIFY_SIGNER_PUBKEY 1 +#define CMSG_VERIFY_SIGNER_CERT 2 +#define CMSG_VERIFY_SIGNER_CHAIN 3 +#define CMSG_VERIFY_SIGNER_NULL 4 + typedef struct _CMSG_CTRL_DECRYPT_PARA { + DWORD cbSize; + __extension__ union { + HCRYPTPROV hCryptProv; + NCRYPT_KEY_HANDLE hNCryptKey; + }; + DWORD dwKeySpec; + DWORD dwRecipientIndex; + } CMSG_CTRL_DECRYPT_PARA,*PCMSG_CTRL_DECRYPT_PARA; + typedef struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA { + DWORD cbSize; + __extension__ union { + HCRYPTPROV hCryptProv; + NCRYPT_KEY_HANDLE hNCryptKey; + }; + DWORD dwKeySpec; + PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans; + DWORD dwRecipientIndex; + } CMSG_CTRL_KEY_TRANS_DECRYPT_PARA,*PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA; + typedef struct _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA { + DWORD cbSize; + __extension__ union { + HCRYPTPROV hCryptProv; + NCRYPT_KEY_HANDLE hNCryptKey; + }; + DWORD dwKeySpec; + PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree; + DWORD dwRecipientIndex; + DWORD dwRecipientEncryptedKeyIndex; + CRYPT_BIT_BLOB OriginatorPublicKey; + } CMSG_CTRL_KEY_AGREE_DECRYPT_PARA,*PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA; + typedef struct _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA { + DWORD cbSize; + HCRYPTPROV hCryptProv; + PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList; + DWORD dwRecipientIndex; + DWORD dwKeyChoice; + __extension__ union { + HCRYPTKEY hKeyEncryptionKey; + void *pvKeyEncryptionKey; + }; + } CMSG_CTRL_MAIL_LIST_DECRYPT_PARA,*PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA; + typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA { + DWORD cbSize; + DWORD dwSignerIndex; + CRYPT_DATA_BLOB blob; + } CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA,*PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA; + typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA { + DWORD cbSize; + DWORD dwSignerIndex; + DWORD dwUnauthAttrIndex; + } CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA,*PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA; +#define CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG 0x1 + WINBOOL __attribute__((__stdcall__)) CryptMsgVerifyCountersignatureEncoded (HCRYPTPROV_LEGACY hCryptProv, DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature, PCERT_INFO pciCountersigner); + WINBOOL __attribute__((__stdcall__)) CryptMsgVerifyCountersignatureEncodedEx (HCRYPTPROV_LEGACY hCryptProv, DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature, DWORD dwSignerType, void *pvSigner, DWORD dwFlags, void *pvExtra); + WINBOOL __attribute__((__stdcall__)) CryptMsgCountersign (HCRYPTMSG hCryptMsg, DWORD dwIndex, DWORD cCountersigners, PCMSG_SIGNER_ENCODE_INFO rgCountersigners); + WINBOOL __attribute__((__stdcall__)) CryptMsgCountersignEncoded (DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, DWORD cCountersigners, PCMSG_SIGNER_ENCODE_INFO rgCountersigners, PBYTE pbCountersignature, PDWORD pcbCountersignature); + typedef void *(__attribute__((__stdcall__)) *PFN_CMSG_ALLOC) (size_t cb); + typedef void (__attribute__((__stdcall__)) *PFN_CMSG_FREE) (void *pv); +#define CMSG_OID_GEN_ENCRYPT_KEY_FUNC "CryptMsgDllGenEncryptKey" +#define CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC "CryptMsgDllExportEncryptKey" +#define CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC "CryptMsgDllImportEncryptKey" + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_GEN_ENCRYPT_KEY) (HCRYPTPROV *phCryptProv, PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt, PVOID pvEncryptAuxInfo, PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, PFN_CMSG_ALLOC pfnAlloc, HCRYPTKEY *phEncryptKey, PBYTE *ppbEncryptParameters, PDWORD pcbEncryptParameters); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_ENCRYPT_KEY) (HCRYPTPROV hCryptProv, HCRYPTKEY hEncryptKey, PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, PBYTE pbData, PDWORD pcbData); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_ENCRYPT_KEY) (HCRYPTPROV hCryptProv, DWORD dwKeySpec, PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt, PCRYPT_ALGORITHM_IDENTIFIER paiPubKey, PBYTE pbEncodedKey, DWORD cbEncodedKey, HCRYPTKEY *phEncryptKey); +#define CMSG_DEFAULT_INSTALLABLE_FUNC_OID ((LPCSTR) 1) + typedef struct _CMSG_CONTENT_ENCRYPT_INFO { + DWORD cbSize; + HCRYPTPROV_LEGACY hCryptProv; + CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; + void *pvEncryptionAuxInfo; + DWORD cRecipients; + PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients; + PFN_CMSG_ALLOC pfnAlloc; + PFN_CMSG_FREE pfnFree; + DWORD dwEncryptFlags; + __extension__ union { + HCRYPTKEY hContentEncryptKey; + BCRYPT_KEY_HANDLE hCNGContentEncryptKey; + }; + DWORD dwFlags; + WINBOOL fCNG; + BYTE *pbCNGContentEncryptKeyObject; + BYTE *pbContentEncryptKey; + DWORD cbContentEncryptKey; + } CMSG_CONTENT_ENCRYPT_INFO,*PCMSG_CONTENT_ENCRYPT_INFO; +#define CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG 0x1 +#define CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG 0x2 +#define CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG 0x8000 +#define CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllGenContentEncryptKey" +#define CMSG_OID_CAPI1_GEN_CONTENT_ENCRYPT_KEY_FUNC CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC +#define CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllCNGGenContentEncryptKey" + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, DWORD dwFlags, void *pvReserved); + typedef struct _CMSG_KEY_TRANS_ENCRYPT_INFO { + DWORD cbSize; + DWORD dwRecipientIndex; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedKey; + DWORD dwFlags; + } CMSG_KEY_TRANS_ENCRYPT_INFO,*PCMSG_KEY_TRANS_ENCRYPT_INFO; +#define CMSG_KEY_TRANS_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_KEY_TRANS_ENCRYPT_FREE_OBJID_FLAG 0x2 +#define CMSG_OID_EXPORT_KEY_TRANS_FUNC "CryptMsgDllExportKeyTrans" +#define CMSG_OID_CAPI1_EXPORT_KEY_TRANS_FUNC CMSG_OID_EXPORT_KEY_TRANS_FUNC +#define CMSG_OID_CNG_EXPORT_KEY_TRANS_FUNC "CryptMsgDllCNGExportKeyTrans" + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_KEY_TRANS) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTransEncodeInfo, PCMSG_KEY_TRANS_ENCRYPT_INFO pKeyTransEncryptInfo, DWORD dwFlags, void *pvReserved); + typedef struct _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO { + DWORD cbSize; + CRYPT_DATA_BLOB EncryptedKey; + } CMSG_KEY_AGREE_KEY_ENCRYPT_INFO,*PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO; + typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO { + DWORD cbSize; + DWORD dwRecipientIndex; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + CRYPT_DATA_BLOB UserKeyingMaterial; + DWORD dwOriginatorChoice; + __extension__ union { + CERT_ID OriginatorCertId; + CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo; + }; + DWORD cKeyAgreeKeyEncryptInfo; + PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO *rgpKeyAgreeKeyEncryptInfo; + DWORD dwFlags; + } CMSG_KEY_AGREE_ENCRYPT_INFO,*PCMSG_KEY_AGREE_ENCRYPT_INFO; +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG 0x2 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG 0x4 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG 0x8 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG 0x10 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_OBJID_FLAG 0x20 +#define CMSG_OID_EXPORT_KEY_AGREE_FUNC "CryptMsgDllExportKeyAgree" +#define CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC CMSG_OID_EXPORT_KEY_AGREE_FUNC +#define CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC "CryptMsgDllCNGExportKeyAgree" + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_KEY_AGREE) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo, PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo, DWORD dwFlags, void *pvReserved); + typedef struct _CMSG_MAIL_LIST_ENCRYPT_INFO { + DWORD cbSize; + DWORD dwRecipientIndex; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedKey; + DWORD dwFlags; + } CMSG_MAIL_LIST_ENCRYPT_INFO,*PCMSG_MAIL_LIST_ENCRYPT_INFO; +#define CMSG_MAIL_LIST_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_MAIL_LIST_ENCRYPT_FREE_OBJID_FLAG 0x2 +#define CMSG_OID_EXPORT_MAIL_LIST_FUNC "CryptMsgDllExportMailList" +#define CMSG_OID_CAPI1_EXPORT_MAIL_LIST_FUNC CMSG_OID_EXPORT_MAIL_LIST_FUNC +#define CMSG_OID_IMPORT_KEY_TRANS_FUNC "CryptMsgDllImportKeyTrans" +#define CMSG_OID_CAPI1_IMPORT_KEY_TRANS_FUNC CMSG_OID_IMPORT_KEY_TRANS_FUNC +#define CMSG_OID_IMPORT_KEY_AGREE_FUNC "CryptMsgDllImportKeyAgree" +#define CMSG_OID_CAPI1_IMPORT_KEY_AGREE_FUNC CMSG_OID_IMPORT_KEY_AGREE_FUNC +#define CMSG_OID_IMPORT_MAIL_LIST_FUNC "CryptMsgDllImportMailList" +#define CMSG_OID_CAPI1_IMPORT_MAIL_LIST_FUNC CMSG_OID_IMPORT_MAIL_LIST_FUNC + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_MAIL_LIST) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailListEncodeInfo, PCMSG_MAIL_LIST_ENCRYPT_INFO pMailListEncryptInfo, DWORD dwFlags, void *pvReserved); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_KEY_TRANS) (PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara, DWORD dwFlags, void *pvReserved, HCRYPTKEY *phContentEncryptKey); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_KEY_AGREE) (PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara, DWORD dwFlags, void *pvReserved, HCRYPTKEY *phContentEncryptKey); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_MAIL_LIST) (PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA pMailListDecryptPara, DWORD dwFlags, void *pvReserved, HCRYPTKEY *phContentEncryptKey); + typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO { + DWORD cbSize; + CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; + PFN_CMSG_ALLOC pfnAlloc; + PFN_CMSG_FREE pfnFree; + NCRYPT_KEY_HANDLE hNCryptKey; + BYTE *pbContentEncryptKey; + DWORD cbContentEncryptKey; + BCRYPT_KEY_HANDLE hCNGContentEncryptKey; + BYTE *pbCNGContentEncryptKeyObject; + } CMSG_CNG_CONTENT_DECRYPT_INFO,*PCMSG_CNG_CONTENT_DECRYPT_INFO; +#define CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC "CryptMsgDllCNGImportKeyTrans" +#define CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC "CryptMsgDllCNGImportKeyAgree" +#define CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllCNGImportContentEncryptKey" + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_CNG_IMPORT_KEY_TRANS) (PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo, PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara, DWORD dwFlags, void *pvReserved); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_CNG_IMPORT_KEY_AGREE) (PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo, PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara, DWORD dwFlags, void *pvReserved); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY) (PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo, DWORD dwFlags, void *pvReserved); + typedef void *HCERTSTORE; + typedef struct _CERT_CONTEXT { + DWORD dwCertEncodingType; + BYTE *pbCertEncoded; + DWORD cbCertEncoded; + PCERT_INFO pCertInfo; + HCERTSTORE hCertStore; + } CERT_CONTEXT,*PCERT_CONTEXT; + typedef const CERT_CONTEXT *PCCERT_CONTEXT; + typedef struct _CRL_CONTEXT { + DWORD dwCertEncodingType; + BYTE *pbCrlEncoded; + DWORD cbCrlEncoded; + PCRL_INFO pCrlInfo; + HCERTSTORE hCertStore; + } CRL_CONTEXT,*PCRL_CONTEXT; + typedef const CRL_CONTEXT *PCCRL_CONTEXT; + typedef struct _CTL_CONTEXT { + DWORD dwMsgAndCertEncodingType; + BYTE *pbCtlEncoded; + DWORD cbCtlEncoded; + PCTL_INFO pCtlInfo; + HCERTSTORE hCertStore; + HCRYPTMSG hCryptMsg; + BYTE *pbCtlContent; + DWORD cbCtlContent; + } CTL_CONTEXT,*PCTL_CONTEXT; + typedef const CTL_CONTEXT *PCCTL_CONTEXT; +#define CERT_KEY_PROV_HANDLE_PROP_ID 1 +#define CERT_KEY_PROV_INFO_PROP_ID 2 +#define CERT_SHA1_HASH_PROP_ID 3 +#define CERT_MD5_HASH_PROP_ID 4 +#define CERT_HASH_PROP_ID CERT_SHA1_HASH_PROP_ID +#define CERT_KEY_CONTEXT_PROP_ID 5 +#define CERT_KEY_SPEC_PROP_ID 6 +#define CERT_IE30_RESERVED_PROP_ID 7 +#define CERT_PUBKEY_HASH_RESERVED_PROP_ID 8 +#define CERT_ENHKEY_USAGE_PROP_ID 9 +#define CERT_CTL_USAGE_PROP_ID CERT_ENHKEY_USAGE_PROP_ID +#define CERT_NEXT_UPDATE_LOCATION_PROP_ID 10 +#define CERT_FRIENDLY_NAME_PROP_ID 11 +#define CERT_PVK_FILE_PROP_ID 12 +#define CERT_DESCRIPTION_PROP_ID 13 +#define CERT_ACCESS_STATE_PROP_ID 14 +#define CERT_SIGNATURE_HASH_PROP_ID 15 +#define CERT_SMART_CARD_DATA_PROP_ID 16 +#define CERT_EFS_PROP_ID 17 +#define CERT_FORTEZZA_DATA_PROP_ID 18 +#define CERT_ARCHIVED_PROP_ID 19 +#define CERT_KEY_IDENTIFIER_PROP_ID 20 +#define CERT_AUTO_ENROLL_PROP_ID 21 +#define CERT_PUBKEY_ALG_PARA_PROP_ID 22 +#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID 23 +#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID 24 +#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID 25 +#define CERT_ENROLLMENT_PROP_ID 26 +#define CERT_DATE_STAMP_PROP_ID 27 +#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 28 +#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID 29 +#define CERT_EXTENDED_ERROR_INFO_PROP_ID 30 +#define CERT_RENEWAL_PROP_ID 64 +#define CERT_ARCHIVED_KEY_HASH_PROP_ID 65 +#define CERT_AUTO_ENROLL_RETRY_PROP_ID 66 +#define CERT_AIA_URL_RETRIEVED_PROP_ID 67 +#define CERT_AUTHORITY_INFO_ACCESS_PROP_ID 68 +#define CERT_BACKED_UP_PROP_ID 69 +#define CERT_OCSP_RESPONSE_PROP_ID 70 +#define CERT_REQUEST_ORIGINATOR_PROP_ID 71 +#define CERT_SOURCE_LOCATION_PROP_ID 72 +#define CERT_SOURCE_URL_PROP_ID 73 +#define CERT_NEW_KEY_PROP_ID 74 +#define CERT_OCSP_CACHE_PREFIX_PROP_ID 75 +#define CERT_SMART_CARD_ROOT_INFO_PROP_ID 76 +#define CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID 77 +#define CERT_NCRYPT_KEY_HANDLE_PROP_ID 78 +#define CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID 79 +#define CERT_SUBJECT_INFO_ACCESS_PROP_ID 80 +#define CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 81 +#define CERT_CA_DISABLE_CRL_PROP_ID 82 +#define CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID 83 +#define CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID 84 +#define CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 85 +#define CERT_SUBJECT_DISABLE_CRL_PROP_ID 86 +#define CERT_CEP_PROP_ID 87 +#define CERT_SIGN_HASH_CNG_ALG_PROP_ID 89 +#define CERT_SCARD_PIN_ID_PROP_ID 90 +#define CERT_SCARD_PIN_INFO_PROP_ID 91 +#define CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID 92 +#define CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID 93 +#define CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID 94 +#define CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID 95 +#define CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID 96 +#define CERT_NO_EXPIRE_NOTIFICATION_PROP_ID 97 +#define CERT_AUTH_ROOT_SHA256_HASH_PROP_ID 98 +#define CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID 99 +#define CERT_HCRYPTPROV_TRANSFER_PROP_ID 100 +#define CERT_SMART_CARD_READER_PROP_ID 101 +#define CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID 102 +#define CERT_KEY_REPAIR_ATTEMPTED_PROP_ID 103 +#define CERT_DISALLOWED_FILETIME_PROP_ID 104 +#define CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID 105 +#define CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID 106 +#define CERT_SHA256_HASH_PROP_ID 107 +#define CERT_SCEP_SERVER_CERTS_PROP_ID 108 +#define CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID 109 +#define CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID 110 +#define CERT_SCEP_CA_CERT_PROP_ID 111 +#define CERT_SCEP_SIGNER_CERT_PROP_ID 112 +#define CERT_SCEP_NONCE_PROP_ID 113 +#define CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID 114 +#define CERT_SCEP_FLAGS_PROP_ID 115 +#define CERT_SCEP_GUID_PROP_ID 116 +#define CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID 117 +#define CERT_ISOLATED_KEY_PROP_ID 118 +#define CERT_SERIAL_CHAIN_PROP_ID 119 +#define CERT_KEY_CLASSIFICATION_PROP_ID 120 +#define CERT_OCSP_MUST_STAPLE_PROP_ID 121 +#define CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID 122 +#define CERT_NONCOMPLIANT_ROOT_URL_PROP_ID 123 +#define CERT_PIN_SHA256_HASH_PROP_ID 124 +#define CERT_CLR_DELETE_KEY_PROP_ID 125 +#define CERT_NOT_BEFORE_FILETIME_PROP_ID 126 +#define CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID 127 +#define CERT_FIRST_RESERVED_PROP_ID 107 +#define CERT_LAST_RESERVED_PROP_ID 0x00007fff +#define CERT_FIRST_USER_PROP_ID 0x8000 +#define CERT_LAST_USER_PROP_ID 0x0000ffff +#define WINCRYPT_DWORD_CPP_ONLY + typedef enum CertKeyType { + KeyTypeOther = 0, + KeyTypeVirtualSmartCard = 1, + KeyTypePhysicalSmartCard = 2, + KeyTypePassport = 3, + KeyTypePassportRemote = 4, + KeyTypePassportSmartCard = 5, + KeyTypeHardware = 6, + KeyTypeSoftware = 7, + KeyTypeSelfSigned = 8 + } CertKeyType; +#define IS_CERT_HASH_PROP_ID(X) (CERT_SHA1_HASH_PROP_ID == (X) || CERT_MD5_HASH_PROP_ID == (X) || CERT_SIGNATURE_HASH_PROP_ID == (X)) +#define IS_PUBKEY_HASH_PROP_ID(X) (CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID == (X) || CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID == (X)) +#define IS_CHAIN_HASH_PROP_ID(X) (CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID == (X) || CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID == (X) || CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID == (X) || CERT_SUBJECT_NAME_MD5_HASH_PROP_ID == (X)) +#define IS_STRONG_SIGN_PROP_ID(X) (CERT_SIGN_HASH_CNG_ALG_PROP_ID == (X) || CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID == (X) || CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID == (X)) +#define szOID_CERT_PROP_ID_PREFIX "1.3.6.1.4.1.311.10.11." +#define _szPROP_ID(PropId) #PropId +#define szOID_CERT_PROP_ID(PropId) szOID_CERT_PROP_ID_PREFIX _szPROP_ID (PropId) +#define __CRYPT32WTEXT(quote) L##quote +#define _CRYPT32WTEXT(quote) __CRYPT32WTEXT (quote) +#define wszOID_CERT_PROP_ID(PropId) _CRYPT32WTEXT (szOID_CERT_PROP_ID_PREFIX) _CRYPT32WTEXT (_szPROP_ID (PropId)) +#define szOID_CERT_KEY_IDENTIFIER_PROP_ID "1.3.6.1.4.1.311.10.11.20" +#define szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.28" +#define szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.29" +#define szOID_CERT_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.4" +#define szOID_CERT_SIGNATURE_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.15" +#define szOID_DISALLOWED_HASH szOID_CERT_SIGNATURE_HASH_PROP_ID +#define szOID_CERT_DISALLOWED_FILETIME_PROP_ID "1.3.6.1.4.1.311.10.11.104" +#define CERT_ACCESS_STATE_WRITE_PERSIST_FLAG 0x1 +#define CERT_ACCESS_STATE_SYSTEM_STORE_FLAG 0x2 +#define CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG 0x4 +#define CERT_ACCESS_STATE_GP_SYSTEM_STORE_FLAG 0x8 +#define CERT_ACCESS_STATE_SHARED_USER_FLAG 0x10 +#define szOID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION "1.3.6.1.4.1.311.60.3.1" +#define szOID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION "1.3.6.1.4.1.311.60.3.2" +#define szOID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL "1.3.6.1.4.1.311.60.3.3" + typedef struct _CRYPT_KEY_PROV_PARAM { + DWORD dwParam; + BYTE *pbData; + DWORD cbData; + DWORD dwFlags; + } CRYPT_KEY_PROV_PARAM,*PCRYPT_KEY_PROV_PARAM; + typedef struct _CRYPT_KEY_PROV_INFO { + LPWSTR pwszContainerName; + LPWSTR pwszProvName; + DWORD dwProvType; + DWORD dwFlags; + DWORD cProvParam; + PCRYPT_KEY_PROV_PARAM rgProvParam; + DWORD dwKeySpec; + } CRYPT_KEY_PROV_INFO,*PCRYPT_KEY_PROV_INFO; +#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x1 +#define CERT_SET_KEY_CONTEXT_PROP_ID 0x1 +#define CERT_NCRYPT_KEY_SPEC 0xffffffff + typedef struct _CERT_KEY_CONTEXT { + DWORD cbSize; + __extension__ union { + HCRYPTPROV hCryptProv; + NCRYPT_KEY_HANDLE hNCryptKey; + }; + DWORD dwKeySpec; + } CERT_KEY_CONTEXT,*PCERT_KEY_CONTEXT; + typedef struct _ROOT_INFO_LUID { + DWORD LowPart; + LONG HighPart; + } ROOT_INFO_LUID,*PROOT_INFO_LUID; + typedef struct _CRYPT_SMART_CARD_ROOT_INFO { + BYTE rgbCardID [16]; + ROOT_INFO_LUID luid; + } CRYPT_SMART_CARD_ROOT_INFO,*PCRYPT_SMART_CARD_ROOT_INFO; +#define CERT_STORE_PROV_MSG ((LPCSTR) 1) +#define CERT_STORE_PROV_MEMORY ((LPCSTR) 2) +#define CERT_STORE_PROV_FILE ((LPCSTR) 3) +#define CERT_STORE_PROV_REG ((LPCSTR) 4) +#define CERT_STORE_PROV_PKCS7 ((LPCSTR) 5) +#define CERT_STORE_PROV_SERIALIZED ((LPCSTR) 6) +#define CERT_STORE_PROV_FILENAME_A ((LPCSTR) 7) +#define CERT_STORE_PROV_FILENAME_W ((LPCSTR) 8) +#define CERT_STORE_PROV_FILENAME CERT_STORE_PROV_FILENAME_W +#define CERT_STORE_PROV_SYSTEM_A ((LPCSTR) 9) +#define CERT_STORE_PROV_SYSTEM_W ((LPCSTR) 10) +#define CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W +#define CERT_STORE_PROV_COLLECTION ((LPCSTR) 11) +#define CERT_STORE_PROV_SYSTEM_REGISTRY_A ((LPCSTR) 12) +#define CERT_STORE_PROV_SYSTEM_REGISTRY_W ((LPCSTR) 13) +#define CERT_STORE_PROV_SYSTEM_REGISTRY CERT_STORE_PROV_SYSTEM_REGISTRY_W +#define CERT_STORE_PROV_PHYSICAL_W ((LPCSTR) 14) +#define CERT_STORE_PROV_PHYSICAL CERT_STORE_PROV_PHYSICAL_W +#define CERT_STORE_PROV_SMART_CARD_W ((LPCSTR) 15) +#define CERT_STORE_PROV_SMART_CARD CERT_STORE_PROV_SMART_CARD_W +#define CERT_STORE_PROV_LDAP_W ((LPCSTR) 16) +#define CERT_STORE_PROV_LDAP CERT_STORE_PROV_LDAP_W +#define CERT_STORE_PROV_PKCS12 ((LPCSTR) 17) +#define sz_CERT_STORE_PROV_MEMORY "Memory" +#define sz_CERT_STORE_PROV_FILENAME_W "File" +#define sz_CERT_STORE_PROV_FILENAME sz_CERT_STORE_PROV_FILENAME_W +#define sz_CERT_STORE_PROV_SYSTEM_W "System" +#define sz_CERT_STORE_PROV_SYSTEM sz_CERT_STORE_PROV_SYSTEM_W +#define sz_CERT_STORE_PROV_PKCS7 "PKCS7" +#define sz_CERT_STORE_PROV_PKCS12 "PKCS12" +#define sz_CERT_STORE_PROV_SERIALIZED "Serialized" +#define sz_CERT_STORE_PROV_COLLECTION "Collection" +#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W "SystemRegistry" +#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W +#define sz_CERT_STORE_PROV_PHYSICAL_W "Physical" +#define sz_CERT_STORE_PROV_PHYSICAL sz_CERT_STORE_PROV_PHYSICAL_W +#define sz_CERT_STORE_PROV_SMART_CARD_W "SmartCard" +#define sz_CERT_STORE_PROV_SMART_CARD sz_CERT_STORE_PROV_SMART_CARD_W +#define sz_CERT_STORE_PROV_LDAP_W "Ldap" +#define sz_CERT_STORE_PROV_LDAP sz_CERT_STORE_PROV_LDAP_W +#define CERT_STORE_SIGNATURE_FLAG 0x1 +#define CERT_STORE_TIME_VALIDITY_FLAG 0x2 +#define CERT_STORE_REVOCATION_FLAG 0x4 +#define CERT_STORE_NO_CRL_FLAG 0x10000 +#define CERT_STORE_NO_ISSUER_FLAG 0x20000 +#define CERT_STORE_BASE_CRL_FLAG 0x100 +#define CERT_STORE_DELTA_CRL_FLAG 0x200 +#define CERT_STORE_NO_CRYPT_RELEASE_FLAG 0x1 +#define CERT_STORE_SET_LOCALIZED_NAME_FLAG 0x2 +#define CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG 0x4 +#define CERT_STORE_DELETE_FLAG 0x10 +#define CERT_STORE_UNSAFE_PHYSICAL_FLAG 0x20 +#define CERT_STORE_SHARE_STORE_FLAG 0x40 +#define CERT_STORE_SHARE_CONTEXT_FLAG 0x80 +#define CERT_STORE_MANIFOLD_FLAG 0x100 +#define CERT_STORE_ENUM_ARCHIVED_FLAG 0x200 +#define CERT_STORE_UPDATE_KEYID_FLAG 0x400 +#define CERT_STORE_BACKUP_RESTORE_FLAG 0x800 +#define CERT_STORE_READONLY_FLAG 0x8000 +#define CERT_STORE_OPEN_EXISTING_FLAG 0x4000 +#define CERT_STORE_CREATE_NEW_FLAG 0x2000 +#define CERT_STORE_MAXIMUM_ALLOWED_FLAG 0x1000 +#define CERT_SYSTEM_STORE_MASK 0xffff0000 +#define CERT_SYSTEM_STORE_RELOCATE_FLAG 0x80000000 + typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA { + __extension__ union { + HKEY hKeyBase; + void *pvBase; + }; + __extension__ union { + void *pvSystemStore; + LPCSTR pszSystemStore; + LPCWSTR pwszSystemStore; + }; + } CERT_SYSTEM_STORE_RELOCATE_PARA,*PCERT_SYSTEM_STORE_RELOCATE_PARA; +#define CERT_SYSTEM_STORE_DEFER_READ_FLAG 0x20000000 +#define CERT_SYSTEM_STORE_UNPROTECTED_FLAG 0x40000000 +#define CERT_SYSTEM_STORE_LOCATION_MASK 0x00ff0000 +#define CERT_SYSTEM_STORE_LOCATION_SHIFT 16 +#define CERT_SYSTEM_STORE_CURRENT_USER_ID 1 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ID 2 +#define CERT_SYSTEM_STORE_CURRENT_SERVICE_ID 4 +#define CERT_SYSTEM_STORE_SERVICES_ID 5 +#define CERT_SYSTEM_STORE_USERS_ID 6 +#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID 7 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID 8 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID 9 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_WCOS_ID 10 +#define CERT_SYSTEM_STORE_CURRENT_USER (CERT_SYSTEM_STORE_CURRENT_USER_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_LOCAL_MACHINE (CERT_SYSTEM_STORE_LOCAL_MACHINE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_CURRENT_SERVICE (CERT_SYSTEM_STORE_CURRENT_SERVICE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_SERVICES (CERT_SYSTEM_STORE_SERVICES_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_USERS (CERT_SYSTEM_STORE_USERS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY (CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY (CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE (CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_WCOS (CERT_SYSTEM_STORE_LOCAL_MACHINE_WCOS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) +#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"Software\\Policies\\Microsoft\\SystemCertificates" +#define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\EFS" +#define CERT_EFSBLOB_VALUE_NAME L"EFSBlob" +#define CERT_PROT_ROOT_FLAGS_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\Root\\ProtectedRoots" +#define CERT_PROT_ROOT_FLAGS_VALUE_NAME L"Flags" +#define CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG 0x1 +#define CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG 0x2 +#define CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG 0x4 +#define CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG 0x8 +#define CERT_PROT_ROOT_ONLY_LM_GPT_FLAG 0x8 +#define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG 0x10 +#define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20 +#define CERT_PROT_ROOT_DISABLE_PEER_TRUST 0x10000 +#define CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME L"PeerUsages" +#define CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME_A "PeerUsages" +#define CERT_PROT_ROOT_PEER_USAGES_DEFAULT_A szOID_PKIX_KP_CLIENT_AUTH "\0" szOID_PKIX_KP_EMAIL_PROTECTION "\0" szOID_KP_EFS "\0" +#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer" +#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"Software\\Microsoft\\SystemCertificates" +#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer" +#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME L"AuthenticodeFlags" +#define CERT_TRUST_PUB_ALLOW_TRUST_MASK 0x3 +#define CERT_TRUST_PUB_ALLOW_END_USER_TRUST 0x0 +#define CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST 0x1 +#define CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST 0x2 +#define CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG 0x100 +#define CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG 0x200 +#define CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents" +#define CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME L"RootAutoUpdate" +#define CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\AuthRoot" +#define CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME L"DisableRootAutoUpdate" +#define CERT_ENABLE_DISALLOWED_CERT_AUTO_UPDATE_VALUE_NAME L"EnableDisallowedCertAutoUpdate" +#define CERT_DISABLE_PIN_RULES_AUTO_UPDATE_VALUE_NAME L"DisablePinRulesAutoUpdate" +#define CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\AuthRoot\\AutoUpdate" +#define CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME L"RootDirUrl" +#define CERT_AUTO_UPDATE_SYNC_FROM_DIR_URL_VALUE_NAME L"SyncFromDirUrl" +#define CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH +#define CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME +#define CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME L"SyncDeltaTime" +#define CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME L"Flags" +#define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG 0x1 +#define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_PARTIAL_CHAIN_LOGGING_FLAG 0x2 +#define CERT_AUTO_UPDATE_DISABLE_RANDOM_QUERY_STRING_FLAG 0x4 +#define CERT_AUTH_ROOT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME L"LastSyncTime" +#define CERT_AUTH_ROOT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME L"EncodedCtl" +#define CERT_AUTH_ROOT_CTL_FILENAME L"authroot.stl" +#define CERT_AUTH_ROOT_CTL_FILENAME_A "authroot.stl" +#define CERT_AUTH_ROOT_CAB_FILENAME L"authrootstl.cab" +#define CERT_AUTH_ROOT_SEQ_FILENAME L"authrootseq.txt" +#define CERT_AUTH_ROOT_CERT_EXT L".crt" +#define CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME L"DisallowedCertSyncDeltaTime" +#define CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME L"DisallowedCertLastSyncTime" +#define CERT_DISALLOWED_CERT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME L"DisallowedCertEncodedCtl" +#define CERT_DISALLOWED_CERT_CTL_FILENAME L"disallowedcert.stl" +#define CERT_DISALLOWED_CERT_CTL_FILENAME_A "disallowedcert.stl" +#define CERT_DISALLOWED_CERT_CAB_FILENAME L"disallowedcertstl.cab" +#define CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER L"DisallowedCert_AutoUpdate_1" +#define CERT_PIN_RULES_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME L"PinRulesSyncDeltaTime" +#define CERT_PIN_RULES_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME L"PinRulesLastSyncTime" +#define CERT_PIN_RULES_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME L"PinRulesEncodedCtl" +#define CERT_PIN_RULES_CTL_FILENAME L"pinrules.stl" +#define CERT_PIN_RULES_CTL_FILENAME_A "pinrules.stl" +#define CERT_PIN_RULES_CAB_FILENAME L"pinrulesstl.cab" +#define CERT_PIN_RULES_AUTO_UPDATE_LIST_IDENTIFIER L"PinRules_AutoUpdate_1" +#define CERT_REGISTRY_STORE_REMOTE_FLAG 0x10000 +#define CERT_REGISTRY_STORE_SERIALIZED_FLAG 0x20000 +#define CERT_REGISTRY_STORE_CLIENT_GPT_FLAG 0x80000000 +#define CERT_REGISTRY_STORE_LM_GPT_FLAG 0x1000000 + typedef struct _CERT_REGISTRY_STORE_CLIENT_GPT_PARA { + HKEY hKeyBase; + LPWSTR pwszRegPath; + } CERT_REGISTRY_STORE_CLIENT_GPT_PARA,*PCERT_REGISTRY_STORE_CLIENT_GPT_PARA; +#define CERT_REGISTRY_STORE_ROAMING_FLAG 0x40000 + typedef struct _CERT_REGISTRY_STORE_ROAMING_PARA { + HKEY hKey; + LPWSTR pwszStoreDirectory; + } CERT_REGISTRY_STORE_ROAMING_PARA,*PCERT_REGISTRY_STORE_ROAMING_PARA; +#define CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG 0x80000 +#define CERT_REGISTRY_STORE_EXTERNAL_FLAG 0x100000 +#define CERT_IE_DIRTY_FLAGS_REGPATH L"Software\\Microsoft\\Cryptography\\IEDirtyFlags" +#define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x10000 +#define CERT_LDAP_STORE_SIGN_FLAG 0x10000 +#define CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG 0x20000 +#define CERT_LDAP_STORE_OPENED_FLAG 0x40000 + typedef struct _CERT_LDAP_STORE_OPENED_PARA { + void *pvLdapSessionHandle; + LPCWSTR pwszLdapUrl; + } CERT_LDAP_STORE_OPENED_PARA,*PCERT_LDAP_STORE_OPENED_PARA; +#define CERT_LDAP_STORE_UNBIND_FLAG 0x80000 +__declspec (dllimport) HCERTSTORE __attribute__((__stdcall__)) CertOpenStore (LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara); + typedef void *HCERTSTOREPROV; +#define CRYPT_OID_OPEN_STORE_PROV_FUNC "CertDllOpenStoreProv" + typedef struct _CERT_STORE_PROV_INFO { + DWORD cbSize; + DWORD cStoreProvFunc; + void **rgpvStoreProvFunc; + HCERTSTOREPROV hStoreProv; + DWORD dwStoreProvFlags; + HCRYPTOIDFUNCADDR hStoreProvFuncAddr2; + } CERT_STORE_PROV_INFO,*PCERT_STORE_PROV_INFO; + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC) (LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara, HCERTSTORE hCertStore, PCERT_STORE_PROV_INFO pStoreProvInfo); +#define CERT_STORE_PROV_EXTERNAL_FLAG 0x1 +#define CERT_STORE_PROV_DELETED_FLAG 0x2 +#define CERT_STORE_PROV_NO_PERSIST_FLAG 0x4 +#define CERT_STORE_PROV_SYSTEM_STORE_FLAG 0x8 +#define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10 +#define CERT_STORE_PROV_GP_SYSTEM_STORE_FLAG 0x20 +#define CERT_STORE_PROV_SHARED_USER_FLAG 0x40 +#define CERT_STORE_PROV_CLOSE_FUNC 0 +#define CERT_STORE_PROV_READ_CERT_FUNC 1 +#define CERT_STORE_PROV_WRITE_CERT_FUNC 2 +#define CERT_STORE_PROV_DELETE_CERT_FUNC 3 +#define CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 4 +#define CERT_STORE_PROV_READ_CRL_FUNC 5 +#define CERT_STORE_PROV_WRITE_CRL_FUNC 6 +#define CERT_STORE_PROV_DELETE_CRL_FUNC 7 +#define CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC 8 +#define CERT_STORE_PROV_READ_CTL_FUNC 9 +#define CERT_STORE_PROV_WRITE_CTL_FUNC 10 +#define CERT_STORE_PROV_DELETE_CTL_FUNC 11 +#define CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC 12 +#define CERT_STORE_PROV_CONTROL_FUNC 13 +#define CERT_STORE_PROV_FIND_CERT_FUNC 14 +#define CERT_STORE_PROV_FREE_FIND_CERT_FUNC 15 +#define CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 16 +#define CERT_STORE_PROV_FIND_CRL_FUNC 17 +#define CERT_STORE_PROV_FREE_FIND_CRL_FUNC 18 +#define CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC 19 +#define CERT_STORE_PROV_FIND_CTL_FUNC 20 +#define CERT_STORE_PROV_FREE_FIND_CTL_FUNC 21 +#define CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC 22 +#define CERT_STORE_PROV_WRITE_ADD_FLAG 0x1 + typedef void (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_CLOSE) (HCERTSTOREPROV hStoreProv, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_READ_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pStoreCertContext, DWORD dwFlags, PCCERT_CONTEXT *ppProvCertContext); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_WRITE_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_DELETE_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_SET_CERT_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId, DWORD dwFlags, const void *pvData); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_READ_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pStoreCrlContext, DWORD dwFlags, PCCRL_CONTEXT *ppProvCrlContext); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_WRITE_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_DELETE_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_SET_CRL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_READ_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pStoreCtlContext, DWORD dwFlags, PCCTL_CONTEXT *ppProvCtlContext); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_WRITE_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_DELETE_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_SET_CTL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_CONTROL) (HCERTSTOREPROV hStoreProv, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara); + typedef struct _CERT_STORE_PROV_FIND_INFO { + DWORD cbSize; + DWORD dwMsgAndCertEncodingType; + DWORD dwFindFlags; + DWORD dwFindType; + const void *pvFindPara; + } CERT_STORE_PROV_FIND_INFO,*PCERT_STORE_PROV_FIND_INFO; + typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO,*PCCERT_STORE_PROV_FIND_INFO; + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FIND_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCERT_CONTEXT pPrevCertContext, DWORD dwFlags, void **ppvStoreProvFindInfo, PCCERT_CONTEXT *ppProvCertContext); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FREE_FIND_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, void *pvStoreProvFindInfo, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_GET_CERT_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId, DWORD dwFlags, void *pvData, DWORD *pcbData); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FIND_CRL) (HCERTSTOREPROV hStoreProv, PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCRL_CONTEXT pPrevCrlContext, DWORD dwFlags, void **ppvStoreProvFindInfo, PCCRL_CONTEXT *ppProvCrlContext); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FREE_FIND_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, void *pvStoreProvFindInfo, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_GET_CRL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId, DWORD dwFlags, void *pvData, DWORD *pcbData); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FIND_CTL) (HCERTSTOREPROV hStoreProv, PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCTL_CONTEXT pPrevCtlContext, DWORD dwFlags, void **ppvStoreProvFindInfo, PCCTL_CONTEXT *ppProvCtlContext); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FREE_FIND_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, void *pvStoreProvFindInfo, DWORD dwFlags); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_GET_CTL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId, DWORD dwFlags, void *pvData, DWORD *pcbData); + __declspec (dllimport) HCERTSTORE __attribute__((__stdcall__)) CertDuplicateStore (HCERTSTORE hCertStore); +#define CERT_STORE_SAVE_AS_STORE 1 +#define CERT_STORE_SAVE_AS_PKCS7 2 +#define CERT_STORE_SAVE_AS_PKCS12 3 +#define CERT_STORE_SAVE_TO_FILE 1 +#define CERT_STORE_SAVE_TO_MEMORY 2 +#define CERT_STORE_SAVE_TO_FILENAME_A 3 +#define CERT_STORE_SAVE_TO_FILENAME_W 4 +#define CERT_STORE_SAVE_TO_FILENAME CERT_STORE_SAVE_TO_FILENAME_W +#define CERT_CLOSE_STORE_FORCE_FLAG 0x1 +#define CERT_CLOSE_STORE_CHECK_FLAG 0x2 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSaveStore (HCERTSTORE hCertStore, DWORD dwEncodingType, DWORD dwSaveAs, DWORD dwSaveTo, void *pvSaveToPara, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertCloseStore (HCERTSTORE hCertStore, DWORD dwFlags); + __declspec (dllimport) PCCERT_CONTEXT __attribute__((__stdcall__)) CertGetSubjectCertificateFromStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, PCERT_INFO pCertId); + __declspec (dllimport) PCCERT_CONTEXT __attribute__((__stdcall__)) CertEnumCertificatesInStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pPrevCertContext); + __declspec (dllimport) PCCERT_CONTEXT __attribute__((__stdcall__)) CertFindCertificateInStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCERT_CONTEXT pPrevCertContext); +#define CERT_COMPARE_MASK 0xffff +#define CERT_COMPARE_SHIFT 16 +#define CERT_COMPARE_ANY 0 +#define CERT_COMPARE_SHA1_HASH 1 +#define CERT_COMPARE_NAME 2 +#define CERT_COMPARE_ATTR 3 +#define CERT_COMPARE_MD5_HASH 4 +#define CERT_COMPARE_PROPERTY 5 +#define CERT_COMPARE_PUBLIC_KEY 6 +#define CERT_COMPARE_HASH CERT_COMPARE_SHA1_HASH +#define CERT_COMPARE_NAME_STR_A 7 +#define CERT_COMPARE_NAME_STR_W 8 +#define CERT_COMPARE_KEY_SPEC 9 +#define CERT_COMPARE_ENHKEY_USAGE 10 +#define CERT_COMPARE_CTL_USAGE CERT_COMPARE_ENHKEY_USAGE +#define CERT_COMPARE_SUBJECT_CERT 11 +#define CERT_COMPARE_ISSUER_OF 12 +#define CERT_COMPARE_EXISTING 13 +#define CERT_COMPARE_SIGNATURE_HASH 14 +#define CERT_COMPARE_KEY_IDENTIFIER 15 +#define CERT_COMPARE_CERT_ID 16 +#define CERT_COMPARE_CROSS_CERT_DIST_POINTS 17 +#define CERT_COMPARE_PUBKEY_MD5_HASH 18 +#define CERT_COMPARE_SUBJECT_INFO_ACCESS 19 +#define CERT_COMPARE_HASH_STR 20 +#define CERT_COMPARE_HAS_PRIVATE_KEY 21 +#define CERT_FIND_ANY (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) +#define CERT_FIND_SHA1_HASH (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) +#define CERT_FIND_MD5_HASH (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) +#define CERT_FIND_SIGNATURE_HASH (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) +#define CERT_FIND_KEY_IDENTIFIER (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) +#define CERT_FIND_HASH CERT_FIND_SHA1_HASH +#define CERT_FIND_PROPERTY (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) +#define CERT_FIND_PUBLIC_KEY (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) +#define CERT_FIND_SUBJECT_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) +#define CERT_FIND_SUBJECT_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) +#define CERT_FIND_ISSUER_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) +#define CERT_FIND_ISSUER_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) +#define CERT_FIND_SUBJECT_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) +#define CERT_FIND_SUBJECT_STR_W (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) +#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W +#define CERT_FIND_ISSUER_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) +#define CERT_FIND_ISSUER_STR_W (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) +#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W +#define CERT_FIND_KEY_SPEC (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT) +#define CERT_FIND_ENHKEY_USAGE (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT) +#define CERT_FIND_CTL_USAGE CERT_FIND_ENHKEY_USAGE +#define CERT_FIND_SUBJECT_CERT (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT) +#define CERT_FIND_ISSUER_OF (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT) +#define CERT_FIND_EXISTING (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT) +#define CERT_FIND_CERT_ID (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT) +#define CERT_FIND_CROSS_CERT_DIST_POINTS (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT) +#define CERT_FIND_PUBKEY_MD5_HASH (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT) +#define CERT_FIND_SUBJECT_INFO_ACCESS (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT) +#define CERT_FIND_HASH_STR (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT) +#define CERT_FIND_HAS_PRIVATE_KEY (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT) +#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 0x1 +#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 0x2 +#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 0x4 +#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 0x8 +#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 0x10 +#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 0x20 +#define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG +#define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG +#define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG +#define CERT_FIND_NO_CTL_USAGE_FLAG CERT_FIND_NO_ENHKEY_USAGE_FLAG +#define CERT_FIND_OR_CTL_USAGE_FLAG CERT_FIND_OR_ENHKEY_USAGE_FLAG +#define CERT_FIND_VALID_CTL_USAGE_FLAG CERT_FIND_VALID_ENHKEY_USAGE_FLAG + __declspec (dllimport) PCCERT_CONTEXT __attribute__((__stdcall__)) CertGetIssuerCertificateFromStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pSubjectContext, PCCERT_CONTEXT pPrevIssuerContext, DWORD *pdwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertVerifySubjectCertificateContext (PCCERT_CONTEXT pSubject, PCCERT_CONTEXT pIssuer, DWORD *pdwFlags); + __declspec (dllimport) PCCERT_CONTEXT __attribute__((__stdcall__)) CertDuplicateCertificateContext (PCCERT_CONTEXT pCertContext); + __declspec (dllimport) PCCERT_CONTEXT __attribute__((__stdcall__)) CertCreateCertificateContext (DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertFreeCertificateContext (PCCERT_CONTEXT pCertContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSetCertificateContextProperty (PCCERT_CONTEXT pCertContext, DWORD dwPropId, DWORD dwFlags, const void *pvData); + typedef struct _CRL_FIND_ISSUED_FOR_PARA { + PCCERT_CONTEXT pSubjectCert; + PCCERT_CONTEXT pIssuerCert; + } CRL_FIND_ISSUED_FOR_PARA,*PCRL_FIND_ISSUED_FOR_PARA; + typedef struct _CTL_ANY_SUBJECT_INFO { + CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; + CRYPT_DATA_BLOB SubjectIdentifier; + } CTL_ANY_SUBJECT_INFO,*PCTL_ANY_SUBJECT_INFO; +#define CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG 0x40000000 +#define CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 0x80000000 +#define CTL_ENTRY_FROM_PROP_CHAIN_FLAG 0x1 +#define CRL_FIND_ANY 0 +#define CRL_FIND_ISSUED_BY 1 +#define CRL_FIND_EXISTING 2 +#define CRL_FIND_ISSUED_FOR 3 +#define CRL_FIND_ISSUED_BY_AKI_FLAG 0x1 +#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG 0x2 +#define CRL_FIND_ISSUED_BY_DELTA_FLAG 0x4 +#define CRL_FIND_ISSUED_BY_BASE_FLAG 0x8 +#define CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG 0x10 +#define CERT_STORE_ADD_NEW 1 +#define CERT_STORE_ADD_USE_EXISTING 2 +#define CERT_STORE_ADD_REPLACE_EXISTING 3 +#define CERT_STORE_ADD_ALWAYS 4 +#define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES 5 +#define CERT_STORE_ADD_NEWER 6 +#define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES 7 +#define CERT_STORE_CERTIFICATE_CONTEXT 1 +#define CERT_STORE_CRL_CONTEXT 2 +#define CERT_STORE_CTL_CONTEXT 3 +#define CERT_STORE_ALL_CONTEXT_FLAG (~__MSABI_LONG(0U)) +#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG (1 << CERT_STORE_CERTIFICATE_CONTEXT) +#define CERT_STORE_CRL_CONTEXT_FLAG (1 << CERT_STORE_CRL_CONTEXT) +#define CERT_STORE_CTL_CONTEXT_FLAG (1 << CERT_STORE_CTL_CONTEXT) +#define CTL_ANY_SUBJECT_TYPE 1 +#define CTL_CERT_SUBJECT_TYPE 2 + __declspec (dllimport) PCCRL_CONTEXT __attribute__((__stdcall__)) CertEnumCRLsInStore (HCERTSTORE hCertStore, PCCRL_CONTEXT pPrevCrlContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertDeleteCRLFromStore (PCCRL_CONTEXT pCrlContext); + __declspec (dllimport) PCCRL_CONTEXT __attribute__((__stdcall__)) CertDuplicateCRLContext (PCCRL_CONTEXT pCrlContext); + __declspec (dllimport) PCCRL_CONTEXT __attribute__((__stdcall__)) CertFindCRLInStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertFreeCRLContext (PCCRL_CONTEXT pCrlContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetCertificateContextProperty (PCCERT_CONTEXT pCertContext, DWORD dwPropId, void *pvData, DWORD *pcbData); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertEnumCertificateContextProperties (PCCERT_CONTEXT pCertContext, DWORD dwPropId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertDeleteCertificateFromStore (PCCERT_CONTEXT pCertContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertCreateCTLEntryFromCertificateContextProperties (PCCERT_CONTEXT pCertContext, DWORD cOptAttr, PCRYPT_ATTRIBUTE rgOptAttr, DWORD dwFlags, void *pvReserved, PCTL_ENTRY pCtlEntry, DWORD *pcbCtlEntry); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSetCertificateContextPropertiesFromCTLEntry (PCCERT_CONTEXT pCertContext, PCTL_ENTRY pCtlEntry, DWORD dwFlags); + __declspec (dllimport) PCCRL_CONTEXT __attribute__((__stdcall__)) CertGetCRLFromStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags); + __declspec (dllimport) PCCRL_CONTEXT __attribute__((__stdcall__)) CertCreateCRLContext (DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSetCRLContextProperty (PCCRL_CONTEXT pCrlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetCRLContextProperty (PCCRL_CONTEXT pCrlContext, DWORD dwPropId, void *pvData, DWORD *pcbData); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertEnumCRLContextProperties (PCCRL_CONTEXT pCrlContext, DWORD dwPropId); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertFindCertificateInCRL (PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrlContext, DWORD dwFlags, void *pvReserved, PCRL_ENTRY *ppCrlEntry); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertIsValidCRLForCertificate (PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrl, DWORD dwFlags, void *pvReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCertificateToStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded, DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddCertificateContextToStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddSerializedElementToStore (HCERTSTORE hCertStore, const BYTE *pbElement, DWORD cbElement, DWORD dwAddDisposition, DWORD dwFlags, DWORD dwContextTypeFlags, DWORD *pdwContextType, const void **ppvContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCRLToStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded, DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddCRLContextToStore (HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSerializeCertificateStoreElement (PCCERT_CONTEXT pCertContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSerializeCRLStoreElement (PCCRL_CONTEXT pCrlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement); + __declspec (dllimport) PCCTL_CONTEXT __attribute__((__stdcall__)) CertDuplicateCTLContext (PCCTL_CONTEXT pCtlContext); + __declspec (dllimport) PCCTL_CONTEXT __attribute__((__stdcall__)) CertCreateCTLContext (DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertFreeCTLContext (PCCTL_CONTEXT pCtlContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSetCTLContextProperty (PCCTL_CONTEXT pCtlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetCTLContextProperty (PCCTL_CONTEXT pCtlContext, DWORD dwPropId, void *pvData, DWORD *pcbData); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertEnumCTLContextProperties (PCCTL_CONTEXT pCtlContext, DWORD dwPropId); + __declspec (dllimport) PCCTL_CONTEXT __attribute__((__stdcall__)) CertEnumCTLsInStore (HCERTSTORE hCertStore, PCCTL_CONTEXT pPrevCtlContext); + __declspec (dllimport) PCTL_ENTRY __attribute__((__stdcall__)) CertFindSubjectInCTL (DWORD dwEncodingType, DWORD dwSubjectType, void *pvSubject, PCCTL_CONTEXT pCtlContext, DWORD dwFlags); + __declspec (dllimport) PCCTL_CONTEXT __attribute__((__stdcall__)) CertFindCTLInStore (HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCTL_CONTEXT pPrevCtlContext); +#define CTL_FIND_ANY 0 +#define CTL_FIND_SHA1_HASH 1 +#define CTL_FIND_MD5_HASH 2 +#define CTL_FIND_USAGE 3 +#define CTL_FIND_SUBJECT 4 +#define CTL_FIND_EXISTING 5 +#define CTL_FIND_SAME_USAGE_FLAG 0x1 +#define CTL_FIND_NO_LIST_ID_CBDATA 0xffffffff +#define CTL_FIND_NO_SIGNER_PTR ((PCERT_INFO) -1) +#define CERT_STORE_CTRL_RESYNC 1 +#define CERT_STORE_CTRL_NOTIFY_CHANGE 2 +#define CERT_STORE_CTRL_COMMIT 3 +#define CERT_STORE_CTRL_AUTO_RESYNC 4 +#define CERT_STORE_CTRL_CANCEL_NOTIFY 5 +#define CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG 0x1 +#define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1 +#define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2 +#define CERT_STORE_LOCALIZED_NAME_PROP_ID 0x1000 +#define CERT_CREATE_CONTEXT_NOCOPY_FLAG 0x1 +#define CERT_CREATE_CONTEXT_SORTED_FLAG 0x2 +#define CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG 0x4 +#define CERT_CREATE_CONTEXT_NO_ENTRY_FLAG 0x8 +#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG 0x1 +#define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG 0x2 +#define CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG 0x4 +#define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8 + typedef struct _CTL_FIND_USAGE_PARA { + DWORD cbSize; + CTL_USAGE SubjectUsage; + CRYPT_DATA_BLOB ListIdentifier; + PCERT_INFO pSigner; + } CTL_FIND_USAGE_PARA,*PCTL_FIND_USAGE_PARA; + typedef struct _CTL_FIND_SUBJECT_PARA { + DWORD cbSize; + PCTL_FIND_USAGE_PARA pUsagePara; + DWORD dwSubjectType; + void *pvSubject; + } CTL_FIND_SUBJECT_PARA,*PCTL_FIND_SUBJECT_PARA; + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_CREATE_CONTEXT_SORT_FUNC) (DWORD cbTotalEncoded, DWORD cbRemainEncoded, DWORD cEntry, void *pvSort); + typedef struct _CERT_CREATE_CONTEXT_PARA { + DWORD cbSize; + PFN_CRYPT_FREE pfnFree; + void *pvFree; + PFN_CERT_CREATE_CONTEXT_SORT_FUNC pfnSort; + void *pvSort; + } CERT_CREATE_CONTEXT_PARA,*PCERT_CREATE_CONTEXT_PARA; + typedef struct _CERT_SYSTEM_STORE_INFO { + DWORD cbSize; + } CERT_SYSTEM_STORE_INFO,*PCERT_SYSTEM_STORE_INFO; + typedef struct _CERT_PHYSICAL_STORE_INFO { + DWORD cbSize; + LPSTR pszOpenStoreProvider; + DWORD dwOpenEncodingType; + DWORD dwOpenFlags; + CRYPT_DATA_BLOB OpenParameters; + DWORD dwFlags; + DWORD dwPriority; + } CERT_PHYSICAL_STORE_INFO,*PCERT_PHYSICAL_STORE_INFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCTLToStore (HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded, DWORD dwAddDisposition, PCCTL_CONTEXT *ppCtlContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddCTLContextToStore (HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, PCCTL_CONTEXT *ppStoreContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSerializeCTLStoreElement (PCCTL_CONTEXT pCtlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertDeleteCTLFromStore (PCCTL_CONTEXT pCtlContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddCertificateLinkToStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddCRLLinkToStore (HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddCTLLinkToStore (HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, PCCTL_CONTEXT *ppStoreContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddStoreToCollection (HCERTSTORE hCollectionStore, HCERTSTORE hSiblingStore, DWORD dwUpdateFlags, DWORD dwPriority); + __declspec (dllimport) void __attribute__((__stdcall__)) CertRemoveStoreFromCollection (HCERTSTORE hCollectionStore, HCERTSTORE hSiblingStore); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertControlStore (HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSetStoreProperty (HCERTSTORE hCertStore, DWORD dwPropId, DWORD dwFlags, const void *pvData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetStoreProperty (HCERTSTORE hCertStore, DWORD dwPropId, void *pvData, DWORD *pcbData); + __declspec (dllimport) const void *__attribute__((__stdcall__)) CertCreateContext (DWORD dwContextType, DWORD dwEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCERT_CREATE_CONTEXT_PARA pCreatePara); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertRegisterSystemStore (const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertRegisterPhysicalStore (const void *pvSystemStore, DWORD dwFlags, LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo, void *pvReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertUnregisterSystemStore (const void *pvSystemStore, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertUnregisterPhysicalStore (const void *pvSystemStore, DWORD dwFlags, LPCWSTR pwszStoreName); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_ENUM_SYSTEM_STORE_LOCATION) (LPCWSTR pwszStoreLocation, DWORD dwFlags, void *pvReserved, void *pvArg); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_ENUM_SYSTEM_STORE) (const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_ENUM_PHYSICAL_STORE) (const void *pvSystemStore, DWORD dwFlags, LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg); +#define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1 +#define CERT_PHYSICAL_STORE_DEFAULT_NAME L".Default" +#define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME L".GroupPolicy" +#define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME L".LocalMachine" +#define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME L".UserCertificate" +#define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME L".LocalMachineGroupPolicy" +#define CERT_PHYSICAL_STORE_ENTERPRISE_NAME L".Enterprise" +#define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME L".AuthRoot" +#define CERT_PHYSICAL_STORE_SMART_CARD_NAME L".SmartCard" + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertEnumSystemStoreLocation (DWORD dwFlags, void *pvArg, PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertEnumSystemStore (DWORD dwFlags, void *pvSystemStoreLocationPara, void *pvArg, PFN_CERT_ENUM_SYSTEM_STORE pfnEnum); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertEnumPhysicalStore (const void *pvSystemStore, DWORD dwFlags, void *pvArg, PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum); +#define CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC "CertDllOpenSystemStoreProv" +#define CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC "CertDllRegisterSystemStore" +#define CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC "CertDllUnregisterSystemStore" +#define CRYPT_OID_ENUM_SYSTEM_STORE_FUNC "CertDllEnumSystemStore" +#define CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC "CertDllRegisterPhysicalStore" +#define CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC "CertDllUnregisterPhysicalStore" +#define CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC "CertDllEnumPhysicalStore" +#define CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME L"SystemStoreLocation" +#define CMSG_TRUSTED_SIGNER_FLAG 0x1 +#define CMSG_SIGNER_ONLY_FLAG 0x2 +#define CMSG_USE_SIGNER_INDEX_FLAG 0x4 +#define CMSG_CMS_ENCAPSULATED_CTL_FLAG 0x8000 +#define CMSG_ENCODE_SORTED_CTL_FLAG 0x1 +#define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetEnhancedKeyUsage (PCCERT_CONTEXT pCertContext, DWORD dwFlags, PCERT_ENHKEY_USAGE pUsage, DWORD *pcbUsage); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertSetEnhancedKeyUsage (PCCERT_CONTEXT pCertContext, PCERT_ENHKEY_USAGE pUsage); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddEnhancedKeyUsageIdentifier (PCCERT_CONTEXT pCertContext, LPCSTR pszUsageIdentifier); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertRemoveEnhancedKeyUsageIdentifier (PCCERT_CONTEXT pCertContext, LPCSTR pszUsageIdentifier); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetValidUsages (DWORD cCerts, PCCERT_CONTEXT *rghCerts, int *cNumOIDs, LPSTR *rghOIDs, DWORD *pcbOIDs); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptMsgGetAndVerifySigner (HCRYPTMSG hCryptMsg, DWORD cSignerStore, HCERTSTORE *rghSignerStore, DWORD dwFlags, PCCERT_CONTEXT *ppSigner, DWORD *pdwSignerIndex); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptMsgSignCTL (DWORD dwMsgEncodingType, BYTE *pbCtlContent, DWORD cbCtlContent, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags, BYTE *pbEncoded, DWORD *pcbEncoded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptMsgEncodeAndSignCTL (DWORD dwMsgEncodingType, PCTL_INFO pCtlInfo, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags, BYTE *pbEncoded, DWORD *pcbEncoded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertFindSubjectInSortedCTL (PCRYPT_DATA_BLOB pSubjectIdentifier, PCCTL_CONTEXT pCtlContext, DWORD dwFlags, void *pvReserved, PCRYPT_DER_BLOB pEncodedAttributes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertEnumSubjectInSortedCTL (PCCTL_CONTEXT pCtlContext, void **ppvNextSubject, PCRYPT_DER_BLOB pSubjectIdentifier, PCRYPT_DER_BLOB pEncodedAttributes); + typedef struct _CTL_VERIFY_USAGE_PARA { + DWORD cbSize; + CRYPT_DATA_BLOB ListIdentifier; + DWORD cCtlStore; + HCERTSTORE *rghCtlStore; + DWORD cSignerStore; + HCERTSTORE *rghSignerStore; + } CTL_VERIFY_USAGE_PARA,*PCTL_VERIFY_USAGE_PARA; + typedef struct _CTL_VERIFY_USAGE_STATUS { + DWORD cbSize; + DWORD dwError; + DWORD dwFlags; + PCCTL_CONTEXT *ppCtl; + DWORD dwCtlEntryIndex; + PCCERT_CONTEXT *ppSigner; + DWORD dwSignerIndex; + } CTL_VERIFY_USAGE_STATUS,*PCTL_VERIFY_USAGE_STATUS; +#define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1 +#define CERT_VERIFY_TRUSTED_SIGNERS_FLAG 0x2 +#define CERT_VERIFY_NO_TIME_CHECK_FLAG 0x4 +#define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 0x8 +#define CERT_VERIFY_UPDATED_CTL_FLAG 0x1 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertVerifyCTLUsage (DWORD dwEncodingType, DWORD dwSubjectType, void *pvSubject, PCTL_USAGE pSubjectUsage, DWORD dwFlags, PCTL_VERIFY_USAGE_PARA pVerifyUsagePara, PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus); + typedef struct _CERT_REVOCATION_CRL_INFO { + DWORD cbSize; + PCCRL_CONTEXT pBaseCrlContext; + PCCRL_CONTEXT pDeltaCrlContext; + PCRL_ENTRY pCrlEntry; + WINBOOL fDeltaCrlEntry; + } CERT_REVOCATION_CRL_INFO,*PCERT_REVOCATION_CRL_INFO; + typedef struct _CERT_REVOCATION_CHAIN_PARA CERT_REVOCATION_CHAIN_PARA,*PCERT_REVOCATION_CHAIN_PARA; + typedef struct _CERT_REVOCATION_PARA { + DWORD cbSize; + PCCERT_CONTEXT pIssuerCert; + DWORD cCertStore; + HCERTSTORE *rgCertStore; + HCERTSTORE hCrlStore; + LPFILETIME pftTimeToUse; + } CERT_REVOCATION_PARA,*PCERT_REVOCATION_PARA; + typedef struct _CERT_REVOCATION_STATUS { + DWORD cbSize; + DWORD dwIndex; + DWORD dwError; + DWORD dwReason; + WINBOOL fHasFreshnessTime; + DWORD dwFreshnessTime; + } CERT_REVOCATION_STATUS,*PCERT_REVOCATION_STATUS; +#define CERT_CONTEXT_REVOCATION_TYPE 1 +#define CERT_VERIFY_REV_CHAIN_FLAG 0x1 +#define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION 0x2 +#define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG 0x4 +#define CERT_VERIFY_REV_SERVER_OCSP_FLAG 0x8 +#define CERT_VERIFY_REV_NO_OCSP_FAILOVER_TO_CRL_FLAG 0x10 +#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 0x1 +#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 0x2 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 3 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE 4 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY 1 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT 2 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN 3 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL 4 +#define CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG 0x1 +#define CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG 0x2 +#define CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG 0x4 +#define CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC "CryptDllExtractEncodedSignatureParameters" +#define CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC "CryptDllSignAndEncodeHash" +#define CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC "CryptDllVerifyEncodedSignature" +#define CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG 0x1 +#define CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG 0x2 +#define CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID 1 +#define CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID 2 + typedef struct _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO { + CRYPT_DATA_BLOB CertSignHashCNGAlgPropData; + CRYPT_DATA_BLOB CertIssuerPubKeyBitLengthPropData; + } CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO, *PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO; + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC) (DWORD dwCertEncodingType, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, void **ppvDecodedSignPara, LPWSTR *ppwszCNGHashAlgid); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC) (NCRYPT_KEY_HANDLE hKey, DWORD dwCertEncodingType, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, void *pvDecodedSignPara, LPCWSTR pwszCNGPubKeyAlgid, LPCWSTR pwszCNGHashAlgid, BYTE *pbComputedHash, DWORD cbComputedHash, BYTE *pbSignature, DWORD *pcbSignature); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC) (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPubKeyInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, void *pvDecodedSignPara, LPCWSTR pwszCNGPubKeyAlgid, LPCWSTR pwszCNGHashAlgid, BYTE *pbComputedHash, DWORD cbComputedHash, BYTE *pbSignature, DWORD cbSignature); + typedef void *HCRYPTDEFAULTCONTEXT; + typedef struct _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA { + DWORD cOID; + LPSTR *rgpszOID; + } CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA,*PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertVerifyRevocation (DWORD dwEncodingType, DWORD dwRevType, DWORD cContext, PVOID rgpvContext[], DWORD dwFlags, PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus); + WINBOOL __attribute__((__stdcall__)) CertCompareIntegerBlob (PCRYPT_INTEGER_BLOB pInt1, PCRYPT_INTEGER_BLOB pInt2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertCompareCertificate (DWORD dwCertEncodingType, PCERT_INFO pCertId1, PCERT_INFO pCertId2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertCompareCertificateName (DWORD dwCertEncodingType, PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertIsRDNAttrsInCertificateName (DWORD dwCertEncodingType, DWORD dwFlags, PCERT_NAME_BLOB pCertName, PCERT_RDN pRDN); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertComparePublicKeyInfo (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPublicKey1, PCERT_PUBLIC_KEY_INFO pPublicKey2); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertGetPublicKeyLength (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPublicKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifyCertificateSignature (HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, PCERT_PUBLIC_KEY_INFO pPublicKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifyCertificateSignatureEx (HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject, DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvExtra); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertIsStrongHashToSign (PCCERT_STRONG_SIGN_PARA pStrongSignPara, LPCWSTR pwszCNGHashAlgid, PCCERT_CONTEXT pSigningCert); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptHashToBeSigned (HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptHashCertificate (HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptHashCertificate2 (LPCWSTR pwszCNGHashAlgid, DWORD dwFlags, void *pvReserved, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSignCertificate (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, const BYTE *pbEncodedToBeSigned, DWORD cbEncodedToBeSigned, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, const void *pvHashAuxInfo, BYTE *pbSignature, DWORD *pcbSignature); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSignAndEncodeCertificate (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded); + __declspec (dllimport) LONG __attribute__((__stdcall__)) CertVerifyTimeValidity (LPFILETIME pTimeToVerify, PCERT_INFO pCertInfo); + __declspec (dllimport) LONG __attribute__((__stdcall__)) CertVerifyCRLTimeValidity (LPFILETIME pTimeToVerify, PCRL_INFO pCrlInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertVerifyValidityNesting (PCERT_INFO pSubjectInfo, PCERT_INFO pIssuerInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertVerifyCRLRevocation (DWORD dwCertEncodingType, PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[]); + __declspec (dllimport) LPCSTR __attribute__((__stdcall__)) CertAlgIdToOID (DWORD dwAlgId); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertOIDToAlgId (LPCSTR pszObjId); + __declspec (dllimport) PCERT_EXTENSION __attribute__((__stdcall__)) CertFindExtension (LPCSTR pszObjId, DWORD cExtensions, CERT_EXTENSION rgExtensions[]); + __declspec (dllimport) PCRYPT_ATTRIBUTE __attribute__((__stdcall__)) CertFindAttribute (LPCSTR pszObjId, DWORD cAttr, CRYPT_ATTRIBUTE rgAttr[]); + __declspec (dllimport) PCERT_RDN_ATTR __attribute__((__stdcall__)) CertFindRDNAttr (LPCSTR pszObjId, PCERT_NAME_INFO pName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetIntendedKeyUsage (DWORD dwCertEncodingType, PCERT_INFO pCertInfo, BYTE *pbKeyUsage, DWORD cbKeyUsage); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptInstallDefaultContext (HCRYPTPROV hCryptProv, DWORD dwDefaultType, const void *pvDefaultPara, DWORD dwFlags, void *pvReserved, HCRYPTDEFAULTCONTEXT *phDefaultContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUninstallDefaultContext (HCRYPTDEFAULTCONTEXT hDefaultContext, DWORD dwFlags, void *pvReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptExportPublicKeyInfo (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptExportPublicKeyInfoEx (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo); +#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC "CryptDllExportPublicKeyInfoEx" +#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC "CryptDllExportPublicKeyInfoEx2" + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC) (NCRYPT_KEY_HANDLE hNCryptKey, DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo); +#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC "CryptDllImportPublicKeyInfoEx" +#define CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC "CryptDllImportPrivateKeyInfoEx" +#define CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC "CryptDllExportPrivateKeyInfoEx" +#define CRYPT_ACQUIRE_CACHE_FLAG 0x1 +#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x2 +#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x4 +#define CRYPT_ACQUIRE_NO_HEALING 0x8 +#define CRYPT_ACQUIRE_SILENT_FLAG 0x40 +#define CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG 0x80 +#define CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK 0x70000 +#define CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG 0x10000 +#define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x20000 +#define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x40000 +#define CRYPT_FIND_USER_KEYSET_FLAG 0x1 +#define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x2 +#define CRYPT_FIND_SILENT_KEYSET_FLAG 0x40 +#define CRYPT_DELETE_KEYSET CRYPT_DELETEKEYSET + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_IMPORT_PRIV_KEY_FUNC) (HCRYPTPROV hCryptProv, CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo, DWORD dwFlags, void *pvAuxInfo); + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_EXPORT_PRIV_KEY_FUNC) (HCRYPTPROV hCryptProv, DWORD dwKeySpec, LPSTR pszPrivateKeyObjId, DWORD dwFlags, void *pvAuxInfo, CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo, DWORD *pcbPrivateKeyInfo); +#define CertRDNValueToStr __MINGW_NAME_AW(CertRDNValueToStr) +#define CertNameToStr __MINGW_NAME_AW(CertNameToStr) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptImportPublicKeyInfo (HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, HCRYPTKEY *phKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptImportPublicKeyInfoEx (HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey); +#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC "CryptDllImportPublicKeyInfoEx2" + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC) (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD dwFlags, void *pvAuxInfo, BCRYPT_KEY_HANDLE *phKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptImportPublicKeyInfoEx2 (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD dwFlags, void *pvAuxInfo, BCRYPT_KEY_HANDLE *phKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptAcquireCertificatePrivateKey (PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvParameters, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey, DWORD *pdwKeySpec, WINBOOL *pfCallerFreeProvOrNCryptKey); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptFindCertificateKeyProvInfo (PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptImportPKCS8 (CRYPT_PKCS8_IMPORT_PARAMS sPrivateKeyAndParams, DWORD dwFlags, HCRYPTPROV *phCryptProv, void *pvAuxInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptExportPKCS8 (HCRYPTPROV hCryptProv, DWORD dwKeySpec, LPSTR pszPrivateKeyObjId, DWORD dwFlags, void *pvAuxInfo, BYTE *pbPrivateKeyBlob, DWORD *pcbPrivateKeyBlob); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptExportPKCS8Ex (CRYPT_PKCS8_EXPORT_PARAMS *psExportParams, DWORD dwFlags, void *pvAuxInfo, BYTE *pbPrivateKeyBlob, DWORD *pcbPrivateKeyBlob); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptHashPublicKeyInfo (HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, BYTE *pbComputedHash, DWORD *pcbComputedHash); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertRDNValueToStrA (DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, LPSTR psz, DWORD csz); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertRDNValueToStrW (DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, LPWSTR psz, DWORD csz); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertNameToStrA (DWORD dwCertEncodingType, PCERT_NAME_BLOB pName, DWORD dwStrType, LPSTR psz, DWORD csz); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertNameToStrW (DWORD dwCertEncodingType, PCERT_NAME_BLOB pName, DWORD dwStrType, LPWSTR psz, DWORD csz); +#define CERT_SIMPLE_NAME_STR 1 +#define CERT_OID_NAME_STR 2 +#define CERT_X500_NAME_STR 3 +#define CERT_XML_NAME_STR 4 +#define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG 0x10000 +#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 0x20000 +#define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG 0x40000 +#define CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG 0x80000 +#define CERT_NAME_STR_FORWARD_FLAG 0x1000000 +#define CERT_NAME_STR_REVERSE_FLAG 0x2000000 +#define CERT_NAME_STR_COMMA_FLAG 0x4000000 +#define CERT_NAME_STR_CRLF_FLAG 0x8000000 +#define CERT_NAME_STR_NO_QUOTING_FLAG 0x10000000 +#define CERT_NAME_STR_NO_PLUS_FLAG 0x20000000 +#define CERT_NAME_STR_SEMICOLON_FLAG 0x40000000 +#define CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG 0x100000 +#define CERT_NAME_STR_ENABLE_PUNYCODE_FLAG 0x200000 +#define CertStrToName __MINGW_NAME_AW(CertStrToName) +#define CertGetNameString __MINGW_NAME_AW(CertGetNameString) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertStrToNameA (DWORD dwCertEncodingType, LPCSTR pszX500, DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded, LPCSTR *ppszError); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertStrToNameW (DWORD dwCertEncodingType, LPCWSTR pszX500, DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded, LPCWSTR *ppszError); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertGetNameStringA (PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, LPSTR pszNameString, DWORD cchNameString); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CertGetNameStringW (PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, LPWSTR pszNameString, DWORD cchNameString); +#define CERT_NAME_EMAIL_TYPE 1 +#define CERT_NAME_RDN_TYPE 2 +#define CERT_NAME_ATTR_TYPE 3 +#define CERT_NAME_SIMPLE_DISPLAY_TYPE 4 +#define CERT_NAME_FRIENDLY_DISPLAY_TYPE 5 +#define CERT_NAME_DNS_TYPE 6 +#define CERT_NAME_URL_TYPE 7 +#define CERT_NAME_UPN_TYPE 8 +#define CERT_NAME_ISSUER_FLAG 0x1 +#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x10000 +#define CERT_NAME_SEARCH_ALL_NAMES_FLAG 0x2 + typedef PCCERT_CONTEXT (__attribute__((__stdcall__)) *PFN_CRYPT_GET_SIGNER_CERTIFICATE) (void *pvGetArg, DWORD dwCertEncodingType, PCERT_INFO pSignerId, HCERTSTORE hMsgCertStore); + typedef struct _CRYPT_SIGN_MESSAGE_PARA { + DWORD cbSize; + DWORD dwMsgEncodingType; + PCCERT_CONTEXT pSigningCert; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + void *pvHashAuxInfo; + DWORD cMsgCert; + PCCERT_CONTEXT *rgpMsgCert; + DWORD cMsgCrl; + PCCRL_CONTEXT *rgpMsgCrl; + DWORD cAuthAttr; + PCRYPT_ATTRIBUTE rgAuthAttr; + DWORD cUnauthAttr; + PCRYPT_ATTRIBUTE rgUnauthAttr; + DWORD dwFlags; + DWORD dwInnerContentType; + } CRYPT_SIGN_MESSAGE_PARA,*PCRYPT_SIGN_MESSAGE_PARA; +#define CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG 0x1 +#define CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 0x2 +#define CRYPT_MESSAGE_KEYID_SIGNER_FLAG 0x4 +#define CRYPT_MESSAGE_SILENT_KEYSET_FLAG 0x40 + typedef struct _CRYPT_VERIFY_MESSAGE_PARA { + DWORD cbSize; + DWORD dwMsgAndCertEncodingType; + HCRYPTPROV_LEGACY hCryptProv; + PFN_CRYPT_GET_SIGNER_CERTIFICATE pfnGetSignerCertificate; + void *pvGetArg; + } CRYPT_VERIFY_MESSAGE_PARA,*PCRYPT_VERIFY_MESSAGE_PARA; + typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA { + DWORD cbSize; + DWORD dwMsgEncodingType; + HCRYPTPROV_LEGACY hCryptProv; + CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; + void *pvEncryptionAuxInfo; + DWORD dwFlags; + DWORD dwInnerContentType; + } CRYPT_ENCRYPT_MESSAGE_PARA,*PCRYPT_ENCRYPT_MESSAGE_PARA; +#define CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 0x4 + typedef struct _CRYPT_DECRYPT_MESSAGE_PARA { + DWORD cbSize; + DWORD dwMsgAndCertEncodingType; + DWORD cCertStore; + HCERTSTORE *rghCertStore; + } CRYPT_DECRYPT_MESSAGE_PARA,*PCRYPT_DECRYPT_MESSAGE_PARA; + typedef struct _CRYPT_HASH_MESSAGE_PARA { + DWORD cbSize; + DWORD dwMsgEncodingType; + HCRYPTPROV_LEGACY hCryptProv; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + void *pvHashAuxInfo; + } CRYPT_HASH_MESSAGE_PARA,*PCRYPT_HASH_MESSAGE_PARA; + typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA { + DWORD cbSize; + DWORD dwMsgAndCertEncodingType; + __extension__ union { + HCRYPTPROV hCryptProv; + NCRYPT_KEY_HANDLE hNCryptKey; + }; + DWORD dwKeySpec; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + void *pvHashAuxInfo; + CRYPT_ALGORITHM_IDENTIFIER PubKeyAlgorithm; + } CRYPT_KEY_SIGN_MESSAGE_PARA,*PCRYPT_KEY_SIGN_MESSAGE_PARA; + typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA { + DWORD cbSize; + DWORD dwMsgEncodingType; + HCRYPTPROV_LEGACY hCryptProv; + } CRYPT_KEY_VERIFY_MESSAGE_PARA,*PCRYPT_KEY_VERIFY_MESSAGE_PARA; + typedef struct _CERT_CHAIN { + DWORD cCerts; + PCERT_BLOB certs; + CRYPT_KEY_PROV_INFO keyLocatorInfo; + } CERT_CHAIN,*PCERT_CHAIN; +#define CertOpenSystemStore __MINGW_NAME_AW(CertOpenSystemStore) +#define CertAddEncodedCertificateToSystemStore __MINGW_NAME_AW(CertAddEncodedCertificateToSystemStore) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSignMessage (PCRYPT_SIGN_MESSAGE_PARA pSignPara, WINBOOL fDetachedSignature, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[], BYTE *pbSignedBlob, DWORD *pcbSignedBlob); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifyMessageSignature (PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbSignedBlob, DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded, PCCERT_CONTEXT *ppSignerCert); + __declspec (dllimport) LONG __attribute__((__stdcall__)) CryptGetMessageSignerCount (DWORD dwMsgEncodingType, const BYTE *pbSignedBlob, DWORD cbSignedBlob); + __declspec (dllimport) HCERTSTORE __attribute__((__stdcall__)) CryptGetMessageCertificates (DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const BYTE *pbSignedBlob, DWORD cbSignedBlob); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifyDetachedMessageSignature (PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbDetachedSignBlob, DWORD cbDetachedSignBlob, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[], PCCERT_CONTEXT *ppSignerCert); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEncryptMessage (PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeEncrypted, DWORD cbToBeEncrypted, BYTE *pbEncryptedBlob, DWORD *pcbEncryptedBlob); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDecryptMessage (PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted, DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSignAndEncryptMessage (PCRYPT_SIGN_MESSAGE_PARA pSignPara, PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeSignedAndEncrypted, DWORD cbToBeSignedAndEncrypted, BYTE *pbSignedAndEncryptedBlob, DWORD *pcbSignedAndEncryptedBlob); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDecryptAndVerifyMessageSignature (PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted, DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptDecodeMessage (DWORD dwMsgTypeFlags, PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbEncodedBlob, DWORD cbEncodedBlob, DWORD dwPrevInnerContentType, DWORD *pdwMsgType, DWORD *pdwInnerContentType, BYTE *pbDecoded, DWORD *pcbDecoded, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptHashMessage (PCRYPT_HASH_MESSAGE_PARA pHashPara, WINBOOL fDetachedHash, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbHashedBlob, DWORD *pcbHashedBlob, BYTE *pbComputedHash, DWORD *pcbComputedHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifyMessageHash (PCRYPT_HASH_MESSAGE_PARA pHashPara, BYTE *pbHashedBlob, DWORD cbHashedBlob, BYTE *pbToBeHashed, DWORD *pcbToBeHashed, BYTE *pbComputedHash, DWORD *pcbComputedHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifyDetachedMessageHash (PCRYPT_HASH_MESSAGE_PARA pHashPara, BYTE *pbDetachedHashBlob, DWORD cbDetachedHashBlob, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbComputedHash, DWORD *pcbComputedHash); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSignMessageWithKey (PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara, const BYTE *pbToBeSigned, DWORD cbToBeSigned, BYTE *pbSignedBlob, DWORD *pcbSignedBlob); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptVerifyMessageSignatureWithKey (PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara, PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, const BYTE *pbSignedBlob, DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded); + __declspec (dllimport) HCERTSTORE __attribute__((__stdcall__)) CertOpenSystemStoreA (HCRYPTPROV_LEGACY hProv, LPCSTR szSubsystemProtocol); + __declspec (dllimport) HCERTSTORE __attribute__((__stdcall__)) CertOpenSystemStoreW (HCRYPTPROV_LEGACY hProv, LPCWSTR szSubsystemProtocol); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCertificateToSystemStoreA (LPCSTR szCertStoreName, const BYTE *pbCertEncoded, DWORD cbCertEncoded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCertificateToSystemStoreW (LPCWSTR szCertStoreName, const BYTE *pbCertEncoded, DWORD cbCertEncoded); + HRESULT __attribute__((__stdcall__)) FindCertsByIssuer (PCERT_CHAIN pCertChains, DWORD *pcbCertChains, DWORD *pcCertChains, BYTE *pbEncodedIssuerName, DWORD cbEncodedIssuerName, LPCWSTR pwszPurpose, DWORD dwKeySpec); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptQueryObject (DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags, DWORD dwFlags, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, DWORD *pdwFormatType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg, const void **ppvContext); +#define CERT_QUERY_OBJECT_FILE 0x1 +#define CERT_QUERY_OBJECT_BLOB 0x2 +#define CERT_QUERY_CONTENT_CERT 1 +#define CERT_QUERY_CONTENT_CTL 2 +#define CERT_QUERY_CONTENT_CRL 3 +#define CERT_QUERY_CONTENT_SERIALIZED_STORE 4 +#define CERT_QUERY_CONTENT_SERIALIZED_CERT 5 +#define CERT_QUERY_CONTENT_SERIALIZED_CTL 6 +#define CERT_QUERY_CONTENT_SERIALIZED_CRL 7 +#define CERT_QUERY_CONTENT_PKCS7_SIGNED 8 +#define CERT_QUERY_CONTENT_PKCS7_UNSIGNED 9 +#define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 10 +#define CERT_QUERY_CONTENT_PKCS10 11 +#define CERT_QUERY_CONTENT_PFX 12 +#define CERT_QUERY_CONTENT_CERT_PAIR 13 +#define CERT_QUERY_CONTENT_PFX_AND_LOAD 14 +#define CERT_QUERY_CONTENT_FLAG_CERT (1 << CERT_QUERY_CONTENT_CERT) +#define CERT_QUERY_CONTENT_FLAG_CTL (1 << CERT_QUERY_CONTENT_CTL) +#define CERT_QUERY_CONTENT_FLAG_CRL (1 << CERT_QUERY_CONTENT_CRL) +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE) +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT) +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL) +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL) +#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED) +#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED) +#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED) +#define CERT_QUERY_CONTENT_FLAG_PKCS10 (1 << CERT_QUERY_CONTENT_PKCS10) +#define CERT_QUERY_CONTENT_FLAG_PFX (1 << CERT_QUERY_CONTENT_PFX) +#define CERT_QUERY_CONTENT_FLAG_CERT_PAIR (1 << CERT_QUERY_CONTENT_CERT_PAIR) +#define CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD) +#define CERT_QUERY_CONTENT_FLAG_ALL (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR) +#define CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED) +#define CERT_QUERY_FORMAT_BINARY 1 +#define CERT_QUERY_FORMAT_BASE64_ENCODED 2 +#define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3 +#define CERT_QUERY_FORMAT_FLAG_BINARY (1 << CERT_QUERY_FORMAT_BINARY) +#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED (1 << CERT_QUERY_FORMAT_BASE64_ENCODED) +#define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED) +#define CERT_QUERY_FORMAT_FLAG_ALL (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED) + typedef HANDLE HCRYPTASYNC,*PHCRYPTASYNC; + typedef void (__attribute__((__stdcall__)) *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC) (LPSTR pszParamOid, LPVOID pvParam); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) CryptMemAlloc (ULONG cbSize); + __declspec (dllimport) LPVOID __attribute__((__stdcall__)) CryptMemRealloc (LPVOID pv, ULONG cbSize); + __declspec (dllimport) void __attribute__((__stdcall__)) CryptMemFree (LPVOID pv); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptCreateAsyncHandle (DWORD dwFlags, PHCRYPTASYNC phAsync); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetAsyncParam (HCRYPTASYNC hAsync, LPSTR pszParamOid, LPVOID pvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetAsyncParam (HCRYPTASYNC hAsync, LPSTR pszParamOid, LPVOID *ppvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *ppfnFree); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptCloseAsyncHandle (HCRYPTASYNC hAsync); + typedef struct _CRYPT_BLOB_ARRAY { + DWORD cBlob; + PCRYPT_DATA_BLOB rgBlob; + } CRYPT_BLOB_ARRAY,*PCRYPT_BLOB_ARRAY; + typedef struct _CRYPT_CREDENTIALS { + DWORD cbSize; + LPCSTR pszCredentialsOid; + LPVOID pvCredentials; + } CRYPT_CREDENTIALS,*PCRYPT_CREDENTIALS; +#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_A ((LPCSTR)1) +#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_W ((LPCSTR)2) +#define CREDENTIAL_OID_PASSWORD_CREDENTIALS __MINGW_NAME_UAW(CREDENTIAL_OID_PASSWORD_CREDENTIALS) + typedef struct _CRYPT_PASSWORD_CREDENTIALSA { + DWORD cbSize; + LPSTR pszUsername; + LPSTR pszPassword; + } CRYPT_PASSWORD_CREDENTIALSA,*PCRYPT_PASSWORD_CREDENTIALSA; + typedef struct _CRYPT_PASSWORD_CREDENTIALSW { + DWORD cbSize; + LPWSTR pszUsername; + LPWSTR pszPassword; + } CRYPT_PASSWORD_CREDENTIALSW,*PCRYPT_PASSWORD_CREDENTIALSW; + typedef CRYPT_PASSWORD_CREDENTIALSA CRYPT_PASSWORD_CREDENTIALS; + typedef PCRYPT_PASSWORD_CREDENTIALSA PCRYPT_PASSWORD_CREDENTIALS; +#define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC "SchemeDllRetrieveEncodedObject" +#define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC "SchemeDllRetrieveEncodedObjectW" +#define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC "ContextDllCreateObjectContext" + typedef void (__attribute__((__stdcall__)) *PFN_FREE_ENCODED_OBJECT_FUNC) (LPCSTR pszObjectOid, PCRYPT_BLOB_ARRAY pObject, LPVOID pvFreeContext); +#define CONTEXT_OID_CERTIFICATE ((LPCSTR)1) +#define CONTEXT_OID_CRL ((LPCSTR)2) +#define CONTEXT_OID_CTL ((LPCSTR)3) +#define CONTEXT_OID_PKCS7 ((LPCSTR)4) +#define CONTEXT_OID_CAPI2_ANY ((LPCSTR)5) +#define CONTEXT_OID_OCSP_RESP ((LPCSTR)6) +#define CRYPT_RETRIEVE_MULTIPLE_OBJECTS 0x1 +#define CRYPT_CACHE_ONLY_RETRIEVAL 0x2 +#define CRYPT_WIRE_ONLY_RETRIEVAL 0x4 +#define CRYPT_DONT_CACHE_RESULT 0x8 +#define CRYPT_ASYNC_RETRIEVAL 0x10 +#define CRYPT_VERIFY_CONTEXT_SIGNATURE 0x20 +#define CRYPT_VERIFY_DATA_HASH 0x40 +#define CRYPT_KEEP_TIME_VALID 0x80 +#define CRYPT_DONT_VERIFY_SIGNATURE 0x100 +#define CRYPT_DONT_CHECK_TIME_VALIDITY 0x200 +#define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x400 +#define CRYPT_ACCUMULATIVE_TIMEOUT 0x800 +#define CRYPT_STICKY_CACHE_RETRIEVAL 0x1000 +#define CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL 0x2000 +#define CRYPT_OFFLINE_CHECK_RETRIEVAL 0x4000 +#define CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE 0x8000 +#define CRYPT_LDAP_SIGN_RETRIEVAL 0x10000 +#define CRYPT_NO_AUTH_RETRIEVAL 0x20000 +#define CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL 0x40000 +#define CRYPT_AIA_RETRIEVAL 0x80000 +#define CRYPT_HTTP_POST_RETRIEVAL 0x100000 +#define CRYPT_PROXY_CACHE_RETRIEVAL 0x200000 +#define CRYPT_NOT_MODIFIED_RETRIEVAL 0x400000 +#define CRYPT_ENABLE_SSL_REVOCATION_RETRIEVAL 0x800000 +#define CRYPT_OCSP_ONLY_RETRIEVAL 0x1000000 +#define CRYPT_NO_OCSP_FAILOVER_TO_CRL_RETRIEVAL 0x2000000 +#define CRYPT_RANDOM_QUERY_STRING_RETRIEVAL 0x4000000 +#define CRYPT_ENABLE_FILE_RETRIEVAL 0x08000000 +#define CRYPT_CREATE_NEW_FLUSH_ENTRY 0x10000000 + typedef struct _CRYPTNET_URL_CACHE_PRE_FETCH_INFO { + DWORD cbSize; + DWORD dwObjectType; + DWORD dwError; + DWORD dwReserved; + FILETIME ThisUpdateTime; + FILETIME NextUpdateTime; + FILETIME PublishTime; + } CRYPTNET_URL_CACHE_PRE_FETCH_INFO,*PCRYPTNET_URL_CACHE_PRE_FETCH_INFO; +#define CRYPTNET_URL_CACHE_PRE_FETCH_NONE 0 +#define CRYPTNET_URL_CACHE_PRE_FETCH_BLOB 1 +#define CRYPTNET_URL_CACHE_PRE_FETCH_CRL 2 +#define CRYPTNET_URL_CACHE_PRE_FETCH_OCSP 3 +#define CRYPTNET_URL_CACHE_PRE_FETCH_AUTOROOT_CAB 5 +#define CRYPTNET_URL_CACHE_PRE_FETCH_DISALLOWED_CERT_CAB 6 +#define CRYPTNET_URL_CACHE_PRE_FETCH_PIN_RULES_CAB 7 + typedef struct _CRYPTNET_URL_CACHE_FLUSH_INFO { + DWORD cbSize; + DWORD dwExemptSeconds; + FILETIME ExpireTime; + } CRYPTNET_URL_CACHE_FLUSH_INFO,*PCRYPTNET_URL_CACHE_FLUSH_INFO; +#define CRYPTNET_URL_CACHE_DEFAULT_FLUSH 0 +#define CRYPTNET_URL_CACHE_DISABLE_FLUSH 0xffffffff + typedef struct _CRYPTNET_URL_CACHE_RESPONSE_INFO { + DWORD cbSize; + WORD wResponseType; + WORD wResponseFlags; + FILETIME LastModifiedTime; + DWORD dwMaxAge; + LPCWSTR pwszETag; + DWORD dwProxyId; + } CRYPTNET_URL_CACHE_RESPONSE_INFO,*PCRYPTNET_URL_CACHE_RESPONSE_INFO; +#define CRYPTNET_URL_CACHE_RESPONSE_NONE 0 +#define CRYPTNET_URL_CACHE_RESPONSE_HTTP 1 +#define CRYPTNET_URL_CACHE_RESPONSE_VALIDATED 0x8000 + typedef struct _CRYPT_RETRIEVE_AUX_INFO { + DWORD cbSize; + FILETIME *pLastSyncTime; + DWORD dwMaxUrlRetrievalByteCount; + PCRYPTNET_URL_CACHE_PRE_FETCH_INFO pPreFetchInfo; + PCRYPTNET_URL_CACHE_FLUSH_INFO pFlushInfo; + PCRYPTNET_URL_CACHE_RESPONSE_INFO *ppResponseInfo; + LPWSTR pwszCacheFileNamePrefix; + LPFILETIME pftCacheResync; + WINBOOL fProxyCacheRetrieval; + DWORD dwHttpStatusCode; + } CRYPT_RETRIEVE_AUX_INFO,*PCRYPT_RETRIEVE_AUX_INFO; +#define CRYPT_RETRIEVE_MAX_ERROR_CONTENT_LENGTH 0x1000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptRetrieveObjectByUrlA (LPCSTR pszUrl, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptRetrieveObjectByUrlW (LPCWSTR pszUrl, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo); +#define CryptRetrieveObjectByUrl __MINGW_NAME_AW(CryptRetrieveObjectByUrl) + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_CANCEL_RETRIEVAL) (DWORD dwFlags, void *pvArg); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptInstallCancelRetrieval (PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel, const void *pvArg, DWORD dwFlags, void *pvReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUninstallCancelRetrieval (DWORD dwFlags, void *pvReserved); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptCancelAsyncRetrieval (HCRYPTASYNC hAsyncRetrieval); +#define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION ((LPCSTR)1) + typedef void (__attribute__((__stdcall__)) *PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC) (LPVOID pvCompletion, DWORD dwCompletionCode, LPCSTR pszUrl, LPSTR pszObjectOid, LPVOID pvObject); + typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION { + PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion; + LPVOID pvCompletion; + } CRYPT_ASYNC_RETRIEVAL_COMPLETION,*PCRYPT_ASYNC_RETRIEVAL_COMPLETION; +#define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL ((LPCSTR)2) + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC) (HCRYPTASYNC hAsyncRetrieve); +#define CRYPT_GET_URL_FROM_PROPERTY 0x1 +#define CRYPT_GET_URL_FROM_EXTENSION 0x2 +#define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x4 +#define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x8 + typedef struct _CRYPT_URL_ARRAY { + DWORD cUrl; + LPWSTR *rgwszUrl; + } CRYPT_URL_ARRAY,*PCRYPT_URL_ARRAY; + typedef struct _CRYPT_URL_INFO { + DWORD cbSize; + DWORD dwSyncDeltaTime; + DWORD cGroup; + DWORD *rgcGroupEntry; + } CRYPT_URL_INFO,*PCRYPT_URL_INFO; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetObjectUrl (LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags, PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo, DWORD *pcbUrlInfo, LPVOID pvReserved); +#define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl" +#define URL_OID_CERTIFICATE_ISSUER ((LPCSTR) 1) +#define URL_OID_CERTIFICATE_CRL_DIST_POINT ((LPCSTR) 2) +#define URL_OID_CTL_ISSUER ((LPCSTR) 3) +#define URL_OID_CTL_NEXT_UPDATE ((LPCSTR) 4) +#define URL_OID_CRL_ISSUER ((LPCSTR) 5) +#define URL_OID_CERTIFICATE_FRESHEST_CRL ((LPCSTR) 6) +#define URL_OID_CRL_FRESHEST_CRL ((LPCSTR) 7) +#define URL_OID_CROSS_CERT_DIST_POINT ((LPCSTR) 8) +#define URL_OID_CERTIFICATE_OCSP ((LPCSTR) 9) +#define URL_OID_CERTIFICATE_OCSP_AND_CRL_DIST_POINT ((LPCSTR) 10) +#define URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP ((LPCSTR) 11) +#define URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS ((LPCSTR) 12) +#define URL_OID_CERTIFICATE_ONLY_OCSP ((LPCSTR) 13) + typedef struct _CERT_CRL_CONTEXT_PAIR { + PCCERT_CONTEXT pCertContext; + PCCRL_CONTEXT pCrlContext; + } CERT_CRL_CONTEXT_PAIR,*PCERT_CRL_CONTEXT_PAIR; + typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; + typedef struct _CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO { + DWORD cbSize; + int iDeltaCrlIndicator; + LPFILETIME pftCacheResync; + LPFILETIME pLastSyncTime; + LPFILETIME pMaxAgeTime; + PCERT_REVOCATION_CHAIN_PARA pChainPara; + PCRYPT_INTEGER_BLOB pDeltaCrlIndicator; + } CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO, *PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO; + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_ENUM_KEYID_PROP) (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwFlags, void *pvReserved, void *pvArg, DWORD cProp, DWORD *rgdwPropId, void **rgpvData, DWORD *rgcbData); +#define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject" +#define CERT_CHAIN_CONFIG_REGPATH L"Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config" +#define TIME_VALID_OID_GET_CTL ((LPCSTR)1) +#define TIME_VALID_OID_GET_CRL ((LPCSTR)2) +#define TIME_VALID_OID_GET_CRL_FROM_CERT ((LPCSTR)3) +#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT ((LPCSTR)4) +#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL ((LPCSTR)5) +#define TIME_VALID_OID_FLUSH_OBJECT_FUNC "TimeValidDllFlushObject" +#define TIME_VALID_OID_FLUSH_CTL ((LPCSTR)1) +#define TIME_VALID_OID_FLUSH_CRL ((LPCSTR)2) +#define TIME_VALID_OID_FLUSH_CRL_FROM_CERT ((LPCSTR)3) +#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4) +#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL ((LPCSTR)5) +#define CERT_CREATE_SELFSIGN_NO_SIGN 1 +#define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2 +#define CRYPT_KEYID_DELETE_FLAG 0x10 +#define CRYPT_KEYID_MACHINE_FLAG 0x20 +#define CRYPT_KEYID_SET_NEW_FLAG 0x2000 +#define CRYPT_KEYID_ALLOC_FLAG 0x8000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetTimeValidObject (LPCSTR pszTimeValidOid, LPVOID pvPara, PCCERT_CONTEXT pIssuer, LPFILETIME pftValidFor, DWORD dwFlags, DWORD dwTimeout, LPVOID *ppvObject, PCRYPT_CREDENTIALS pCredentials, PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO pExtraInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptFlushTimeValidObject (LPCSTR pszFlushTimeValidOid, LPVOID pvPara, PCCERT_CONTEXT pIssuer, DWORD dwFlags, LPVOID pvReserved); + __declspec (dllimport) PCCERT_CONTEXT __attribute__((__stdcall__)) CertCreateSelfSignCertificate (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXTENSIONS pExtensions); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptGetKeyIdentifierProperty (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwPropId, DWORD dwFlags, LPCWSTR pwszComputerName, void *pvReserved, void *pvData, DWORD *pcbData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptSetKeyIdentifierProperty (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwPropId, DWORD dwFlags, LPCWSTR pwszComputerName, void *pvReserved, const void *pvData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptEnumKeyIdentifierProperties (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwPropId, DWORD dwFlags, LPCWSTR pwszComputerName, void *pvReserved, void *pvArg, PFN_CRYPT_ENUM_KEYID_PROP pfnEnum); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptCreateKeyIdentifierFromCSP (DWORD dwCertEncodingType, LPCSTR pszPubKeyOID, const PUBLICKEYSTRUC *pPubKeyStruc, DWORD cbPubKeyStruc, DWORD dwFlags, void *pvReserved, BYTE *pbHash, DWORD *pcbHash); +#define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME L"MaxUrlRetrievalByteCount" +#define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT (100 *1024 *1024) +#define CERT_CHAIN_CACHE_RESYNC_FILETIME_VALUE_NAME L"ChainCacheResyncFiletime" +#define CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME L"DisableMandatoryBasicConstraints" +#define CERT_CHAIN_DISABLE_CA_NAME_CONSTRAINTS_VALUE_NAME L"DisableCANameConstraints" +#define CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME L"DisableUnsupportedCriticalExtensions" +#define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME L"MaxAIAUrlCountInCert" +#define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_DEFAULT 5 +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME L"MaxAIAUrlRetrievalCountPerChain" +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_DEFAULT 3 +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME L"MaxAIAUrlRetrievalByteCount" +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_DEFAULT 100000 +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME L"MaxAIAUrlRetrievalCertCount" +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT 10 +#define CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME L"OcspValiditySeconds" +#define CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT (12 *60 *60) +#define CERT_CHAIN_DISABLE_SERIAL_CHAIN_VALUE_NAME L"DisableSerialChain" +#define CERT_CHAIN_SERIAL_CHAIN_LOG_FILE_NAME_VALUE_NAME L"SerialChainLogFileName" +#define CERT_CHAIN_DISABLE_SYNC_WITH_SSL_TIME_VALUE_NAME L"DisableSyncWithSslTime" +#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_VALUE_NAME L"MaxSslTimeUpdatedEventCount" +#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DEFAULT 5 +#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DISABLE 0xFFFFFFFF +#define CERT_CHAIN_SSL_HANDSHAKE_LOG_FILE_NAME_VALUE_NAME L"SslHandshakeLogFileName" +#define CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME L"EnableWeakSignatureFlags" +#define CERT_CHAIN_ENABLE_MD2_MD4_FLAG 0x1 +#define CERT_CHAIN_ENABLE_WEAK_RSA_ROOT_FLAG 0x2 +#define CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG 0x4 +#define CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG 0x8 +#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME L"MinRsaPubKeyBitLength" +#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DEFAULT 1023 +#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DISABLE 0xffffffff +#define CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_VALUE_NAME L"WeakRsaPubKeyTime" +#define CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_DEFAULT 0x01ca8a755c6e0000ULL +#define CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME L"WeakSignatureLogDir" +#define CERT_CHAIN_DEFAULT_CONFIG_SUBDIR L"Default" +#define CERT_CHAIN_WEAK_PREFIX_NAME L"Weak" +#define CERT_CHAIN_WEAK_THIRD_PARTY_CONFIG_NAME L"ThirdParty" +#define CERT_CHAIN_WEAK_ALL_CONFIG_NAME L"All" +#define CERT_CHAIN_WEAK_FLAGS_NAME L"Flags" +#define CERT_CHAIN_WEAK_HYGIENE_NAME L"Hygiene" +#define CERT_CHAIN_WEAK_AFTER_TIME_NAME L"AfterTime" +#define CERT_CHAIN_WEAK_FILE_HASH_AFTER_TIME_NAME L"FileHashAfterTime" +#define CERT_CHAIN_WEAK_TIMESTAMP_HASH_AFTER_TIME_NAME L"TimestampHashAfterTime" +#define CERT_CHAIN_WEAK_MIN_BIT_LENGTH_NAME L"MinBitLength" +#define CERT_CHAIN_WEAK_SHA256_ALLOW_NAME L"Sha256Allow" +#define CERT_CHAIN_MIN_PUB_KEY_BIT_LENGTH_DISABLE 0xFFFFFFFF +#define CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG 0x80000000 +#define CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG 0x00010000 +#define CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG 0x00020000 +#define CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG 0x00040000 +#define CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG 0x00100000 +#define CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG 0x00200000 +#define CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG 0x00400000 +#define CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG 0x00800000 +#define CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG 0x01000000 +#define CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG 0x02000000 +#define CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG 0x04000000 +#define CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG 0x08000000 +#define CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG 0x10000000 +#define CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG 0x20000000 +#define CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG 0x40000000 +#define CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG 0x00001000 +#define CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG 0x00002000 +#define CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG 0x00004000 +#define CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG 0x00008000 +#define CERT_CHAIN_DISABLE_WEAK_FLAGS ( CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG | CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG | CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG | CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG ) +#define CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAGS ( CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG ) +#define CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAGS ( CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG ) +#define CERT_CHAIN_ENABLE_HYGIENE_FLAGS ( CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG | CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG | CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG | CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG | CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG ) +#define CERT_CHAIN_MOTW_WEAK_FLAGS ( CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG | CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG | CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG) +#define CERT_CHAIN_OPT_IN_WEAK_FLAGS ( CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG) +#define CERT_CHAIN_AUTO_CURRENT_USER 1 +#define CERT_CHAIN_AUTO_LOCAL_MACHINE 2 +#define CERT_CHAIN_AUTO_IMPERSONATED 3 +#define CERT_CHAIN_AUTO_PROCESS_INFO 4 +#define CERT_CHAIN_AUTO_PINRULE_INFO 5 +#define CERT_CHAIN_AUTO_NETWORK_INFO 6 +#define CERT_CHAIN_AUTO_SERIAL_LOCAL_MACHINE 7 +#define CERT_CHAIN_AUTO_HPKP_RULE_INFO 8 +#define CERT_CHAIN_AUTO_FLAGS_VALUE_NAME L"AutoFlags" +#define CERT_CHAIN_AUTO_FLUSH_DISABLE_FLAG 0x00000001 +#define CERT_CHAIN_AUTO_LOG_CREATE_FLAG 0x00000002 +#define CERT_CHAIN_AUTO_LOG_FREE_FLAG 0x00000004 +#define CERT_CHAIN_AUTO_LOG_FLUSH_FLAG 0x00000008 +#define CERT_CHAIN_AUTO_LOG_FLAGS ( CERT_CHAIN_AUTO_LOG_CREATE_FLAG | CERT_CHAIN_AUTO_LOG_FREE_FLAG | CERT_CHAIN_AUTO_LOG_FLUSH_FLAG ) +#define CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_VALUE_NAME L"AutoFlushFirstDeltaSeconds" +#define CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_DEFAULT (5 * 60) +#define CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_VALUE_NAME L"AutoFlushNextDeltaSeconds" +#define CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_DEFAULT (30 * 60) +#define CERT_CHAIN_AUTO_LOG_FILE_NAME_VALUE_NAME L"AutoLogFileName" +#define CERT_CHAIN_DISABLE_AUTO_FLUSH_PROCESS_NAME_LIST_VALUE_NAME L"DisableAutoFlushProcessNameList" +#define CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME L"SrvOcspRespMinValiditySeconds" +#define CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_DEFAULT (10 *60) +#define CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME L"SrvOcspRespUrlRetrievalTimeoutMilliseconds" +#define CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT (15 *1000) +#define CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"SrvOcspRespMaxBeforeNextUpdateSeconds" +#define CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (4 *60 *60) +#define CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"SrvOcspRespMinBeforeNextUpdateSeconds" +#define CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (2 *60) +#define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME L"SrvOcspRespMinAfterNextUpdateSeconds" +#define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT (1 *60) +#define CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_VALUE_NAME L"SrvOcspRespMinSyncCertFileSeconds" +#define CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_DEFAULT 5 +#define CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_VALUE_NAME L"SrvOcspRespMaxSyncCertFileSeconds" +#define CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_DEFAULT (1 * 60 * 60) +#define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME L"CryptnetMaxCachedOcspPerCrlCount" +#define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT 500 +#define CRYPTNET_OCSP_AFTER_CRL_DISABLE 0xffffffff +#define CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME L"CryptnetDefaultFlushExemptSeconds" +#define CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_DEFAULT (28 *24 *60 *60) +#define CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME L"CryptnetPreFetchMinMaxAgeSeconds" +#define CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_DEFAULT (1 *60 *60) +#define CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME L"CryptnetPreFetchMaxMaxAgeSeconds" +#define CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_DEFAULT (14 *24 *60 *60) +#define CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMinOcspValidityPeriodSeconds" +#define CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_DEFAULT (14 *24 *60 *60) +#define CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME L"CryptnetPreFetchAfterPublishPreFetchDivisor" +#define CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_DEFAULT 10 +#define CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME L"CryptnetPreFetchBeforeNextUpdatePreFetchDivisor" +#define CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT 20 +#define CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMinBeforeNextUpdatePreFetchSeconds" +#define CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT (1 *60 *60) +#define CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME L"CryptnetPreFetchValidityPeriodAfterNextUpdatePreFetchDivisor" +#define CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT 10 +#define CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMaxAfterNextUpdatePreFetchPeriodSeconds" +#define CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT (4 *60 *60) +#define CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMinAfterNextUpdatePreFetchPeriodSeconds" +#define CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT (30 *60) +#define CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchAfterCurrentTimePreFetchPeriodSeconds" +#define CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_DEFAULT (30 *60) +#define CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchTriggerPeriodSeconds" +#define CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_DEFAULT (10 *60) +#define CRYPTNET_PRE_FETCH_TRIGGER_DISABLE 0xffffffff +#define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME L"CryptnetPreFetchScanAfterTriggerDelaySeconds" +#define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT 30 +#define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME L"CryptnetPreFetchRetrievalTimeoutSeconds" +#define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT (5 *60) +#define CRYPTNET_CRL_PRE_FETCH_CONFIG_REGPATH CERT_CHAIN_CONFIG_REGPATH L"\\CrlPreFetch" +#define CRYPTNET_CRL_PRE_FETCH_PROCESS_NAME_LIST_VALUE_NAME L"ProcessNameList" +#define CRYPTNET_CRL_PRE_FETCH_URL_LIST_VALUE_NAME L"PreFetchUrlList" +#define CRYPTNET_CRL_PRE_FETCH_DISABLE_INFORMATION_EVENTS_VALUE_NAME L"DisableInformationEvents" +#define CRYPTNET_CRL_PRE_FETCH_LOG_FILE_NAME_VALUE_NAME L"LogFileName" +#define CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_VALUE_NAME L"TimeoutSeconds" +#define CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_DEFAULT (5 * 60) +#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_VALUE_NAME L"MaxAgeSeconds" +#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_DEFAULT (2 * 60 * 60) +#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_MIN (5 * 60) +#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"PublishBeforeNextUpdateSeconds" +#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (1 * 60 * 60) +#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_VALUE_NAME L"PublishRandomIntervalSeconds" +#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_DEFAULT (5 * 60) +#define CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"MinBeforeNextUpdateSeconds" +#define CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (5 * 60) +#define CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME L"MinAfterNextUpdateSeconds" +#define CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT (5 * 60) +#define CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\ChainEngine\\Config" +#define CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME L"ChainUrlRetrievalTimeoutMilliseconds" +#define CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT (15 *1000) +#define CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME L"ChainRevAccumulativeUrlRetrievalTimeoutMilliseconds" +#define CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT (20 *1000) +#define CERT_RETR_BEHAVIOR_INET_AUTH_VALUE_NAME L"EnableInetUnknownAuth" +#define CERT_RETR_BEHAVIOR_INET_STATUS_VALUE_NAME L"EnableInetLocal" +#define CERT_RETR_BEHAVIOR_FILE_VALUE_NAME L"AllowFileUrlScheme" +#define CERT_RETR_BEHAVIOR_LDAP_VALUE_NAME L"DisableLDAPSignAndEncrypt" +#define CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME L"CryptnetCachedOcspSwitchToCrlCount" +#define CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_DEFAULT 50 +#define CRYPTNET_CRL_BEFORE_OCSP_ENABLE 0xffffffff +#define CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME L"DisableAIAUrlRetrieval" +#define CERT_CHAIN_OPTIONS_VALUE_NAME L"Options" +#define CERT_CHAIN_OPTION_DISABLE_AIA_URL_RETRIEVAL 0x2 +#define CERT_CHAIN_OPTION_ENABLE_SIA_URL_RETRIEVAL 0x4 +#define CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME L"CrossCertDownloadIntervalHours" +#define CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_DEFAULT (24 *7) +#define CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_VALUE_NAME L"CRLValidityExtensionPeriod" +#define CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_DEFAULT 12 +#define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL) +#define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)0x1) +#define HCCE_SERIAL_LOCAL_MACHINE ((HCERTCHAINENGINE)0x2) +#define CERT_CHAIN_CACHE_END_CERT 0x1 +#define CERT_CHAIN_THREAD_STORE_SYNC 0x2 +#define CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x4 +#define CERT_CHAIN_USE_LOCAL_MACHINE_STORE 0x8 +#define CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE 0x10 +#define CERT_CHAIN_ENABLE_SHARE_STORE 0x20 + typedef HANDLE HCERTCHAINENGINE; + typedef struct _CERT_CHAIN_ENGINE_CONFIG { + DWORD cbSize; + HCERTSTORE hRestrictedRoot; + HCERTSTORE hRestrictedTrust; + HCERTSTORE hRestrictedOther; + DWORD cAdditionalStore; + HCERTSTORE *rghAdditionalStore; + DWORD dwFlags; + DWORD dwUrlRetrievalTimeout; + DWORD MaximumCachedCertificates; + DWORD CycleDetectionModulus; + } CERT_CHAIN_ENGINE_CONFIG,*PCERT_CHAIN_ENGINE_CONFIG; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertCreateCertificateChainEngine (PCERT_CHAIN_ENGINE_CONFIG pConfig, HCERTCHAINENGINE *phChainEngine); + __declspec (dllimport) void __attribute__((__stdcall__)) CertFreeCertificateChainEngine (HCERTCHAINENGINE hChainEngine); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertResyncCertificateChainEngine (HCERTCHAINENGINE hChainEngine); + typedef struct _CERT_TRUST_STATUS { + DWORD dwErrorStatus; + DWORD dwInfoStatus; + } CERT_TRUST_STATUS,*PCERT_TRUST_STATUS; +#define CERT_TRUST_NO_ERROR 0x0 +#define CERT_TRUST_IS_NOT_TIME_VALID 0x1 +#define CERT_TRUST_IS_NOT_TIME_NESTED 0x2 +#define CERT_TRUST_IS_REVOKED 0x4 +#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 0x8 +#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 0x10 +#define CERT_TRUST_IS_UNTRUSTED_ROOT 0x20 +#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 0x40 +#define CERT_TRUST_IS_CYCLIC 0x80 +#define CERT_TRUST_INVALID_EXTENSION 0x100 +#define CERT_TRUST_INVALID_POLICY_CONSTRAINTS 0x200 +#define CERT_TRUST_INVALID_BASIC_CONSTRAINTS 0x400 +#define CERT_TRUST_INVALID_NAME_CONSTRAINTS 0x800 +#define CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT 0x1000 +#define CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT 0x2000 +#define CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT 0x4000 +#define CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT 0x8000 +#define CERT_TRUST_IS_PARTIAL_CHAIN 0x10000 +#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 0x20000 +#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 0x40000 +#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 0x80000 +#define CERT_TRUST_IS_OFFLINE_REVOCATION 0x1000000 +#define CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY 0x2000000 +#define CERT_TRUST_IS_EXPLICIT_DISTRUST 0x4000000 +#define CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT 0x8000000 +#define CERT_TRUST_HAS_WEAK_SIGNATURE 0x100000 +#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 0x1 +#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 0x2 +#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 0x4 +#define CERT_TRUST_IS_SELF_SIGNED 0x8 +#define CERT_TRUST_AUTO_UPDATE_CA_REVOCATION 0x10 +#define CERT_TRUST_AUTO_UPDATE_END_REVOCATION 0x20 +#define CERT_TRUST_NO_OCSP_FAILOVER_TO_CRL 0x40 +#define CERT_TRUST_IS_KEY_ROLLOVER 0x00000080 +#define CERT_TRUST_SSL_HANDSHAKE_OCSP 0x00040000 +#define CERT_TRUST_SSL_TIME_VALID_OCSP 0x00080000 +#define CERT_TRUST_SSL_RECONNECT_OCSP 0x00100000 +#define CERT_TRUST_HAS_PREFERRED_ISSUER 0x100 +#define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY 0x200 +#define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 0x400 +#define CERT_TRUST_IS_PEER_TRUSTED 0x800 +#define CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED 0x1000 +#define CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE 0x2000 +#define CERT_TRUST_IS_COMPLEX_CHAIN 0x00010000 +#define CERT_TRUST_SSL_TIME_VALID 0x01000000 +#define CERT_TRUST_NO_TIME_CHECK 0x02000000 + typedef struct _CERT_REVOCATION_INFO { + DWORD cbSize; + DWORD dwRevocationResult; + LPCSTR pszRevocationOid; + LPVOID pvOidSpecificInfo; + WINBOOL fHasFreshnessTime; + DWORD dwFreshnessTime; + PCERT_REVOCATION_CRL_INFO pCrlInfo; + } CERT_REVOCATION_INFO,*PCERT_REVOCATION_INFO; + typedef struct _CERT_TRUST_LIST_INFO { + DWORD cbSize; + PCTL_ENTRY pCtlEntry; + PCCTL_CONTEXT pCtlContext; + } CERT_TRUST_LIST_INFO,*PCERT_TRUST_LIST_INFO; + typedef struct _CERT_CHAIN_ELEMENT { + DWORD cbSize; + PCCERT_CONTEXT pCertContext; + CERT_TRUST_STATUS TrustStatus; + PCERT_REVOCATION_INFO pRevocationInfo; + PCERT_ENHKEY_USAGE pIssuanceUsage; + PCERT_ENHKEY_USAGE pApplicationUsage; + LPCWSTR pwszExtendedErrorInfo; + } CERT_CHAIN_ELEMENT,*PCERT_CHAIN_ELEMENT; + typedef const CERT_CHAIN_ELEMENT *PCCERT_CHAIN_ELEMENT; + typedef struct _CERT_SIMPLE_CHAIN { + DWORD cbSize; + CERT_TRUST_STATUS TrustStatus; + DWORD cElement; + PCERT_CHAIN_ELEMENT *rgpElement; + PCERT_TRUST_LIST_INFO pTrustListInfo; + WINBOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; + } CERT_SIMPLE_CHAIN,*PCERT_SIMPLE_CHAIN; + typedef const CERT_SIMPLE_CHAIN *PCCERT_SIMPLE_CHAIN; + typedef struct _CERT_CHAIN_CONTEXT CERT_CHAIN_CONTEXT,*PCERT_CHAIN_CONTEXT; + typedef const CERT_CHAIN_CONTEXT *PCCERT_CHAIN_CONTEXT; + struct _CERT_CHAIN_CONTEXT { + DWORD cbSize; + CERT_TRUST_STATUS TrustStatus; + DWORD cChain; + PCERT_SIMPLE_CHAIN *rgpChain; + DWORD cLowerQualityChainContext; + PCCERT_CHAIN_CONTEXT *rgpLowerQualityChainContext; + WINBOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; + DWORD dwCreateFlags; + GUID ChainId; + }; +#define USAGE_MATCH_TYPE_AND 0x0 +#define USAGE_MATCH_TYPE_OR 0x1 + typedef struct _CERT_USAGE_MATCH { + DWORD dwType; + CERT_ENHKEY_USAGE Usage; + } CERT_USAGE_MATCH,*PCERT_USAGE_MATCH; + typedef struct _CTL_USAGE_MATCH { + DWORD dwType; + CTL_USAGE Usage; + } CTL_USAGE_MATCH,*PCTL_USAGE_MATCH; + typedef struct _CERT_CHAIN_PARA { + DWORD cbSize; + CERT_USAGE_MATCH RequestedUsage; + } CERT_CHAIN_PARA,*PCERT_CHAIN_PARA; +#define CERT_CHAIN_STRONG_SIGN_DISABLE_END_CHECK_FLAG 0x1 +#define CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING 0x40 +#define CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS 0x80 +#define CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE 0x100 +#define CERT_CHAIN_TIMESTAMP_TIME 0x200 +#define CERT_CHAIN_ENABLE_PEER_TRUST 0x400 +#define CERT_CHAIN_DISABLE_MY_PEER_TRUST 0x800 +#define CERT_CHAIN_DISABLE_MD2_MD4 0x1000 +#define CERT_CHAIN_DISABLE_AIA 0x2000 +#define CERT_CHAIN_HAS_MOTW 0x4000 +#define CERT_CHAIN_ONLY_ADDITIONAL_AND_AUTH_ROOT 0x8000 +#define CERT_CHAIN_OPT_IN_WEAK_SIGNATURE 0x10000 +#define CERT_CHAIN_REVOCATION_CHECK_END_CERT 0x10000000 +#define CERT_CHAIN_REVOCATION_CHECK_CHAIN 0x20000000 +#define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000 +#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000 +#define CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT 0x8000000 +#define CERT_CHAIN_REVOCATION_CHECK_OCSP_CERT 0x4000000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertGetCertificateChain (HCERTCHAINENGINE hChainEngine, PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, PCCERT_CHAIN_CONTEXT *ppChainContext); + __declspec (dllimport) void __attribute__((__stdcall__)) CertFreeCertificateChain (PCCERT_CHAIN_CONTEXT pChainContext); + __declspec (dllimport) PCCERT_CHAIN_CONTEXT __attribute__((__stdcall__)) CertDuplicateCertificateChain (PCCERT_CHAIN_CONTEXT pChainContext); + struct _CERT_REVOCATION_CHAIN_PARA { + DWORD cbSize; + HCERTCHAINENGINE hChainEngine; + HCERTSTORE hAdditionalStore; + DWORD dwChainFlags; + DWORD dwUrlRetrievalTimeout; + LPFILETIME pftCurrentTime; + LPFILETIME pftCacheResync; + DWORD cbMaxUrlRetrievalByteCount; + }; +#define REVOCATION_OID_CRL_REVOCATION ((LPCSTR)1) + typedef struct _CRL_REVOCATION_INFO { + PCRL_ENTRY pCrlEntry; + PCCRL_CONTEXT pCrlContext; + PCCERT_CHAIN_CONTEXT pCrlIssuerChain; + } CRL_REVOCATION_INFO,*PCRL_REVOCATION_INFO; + __declspec (dllimport) PCCERT_CHAIN_CONTEXT __attribute__((__stdcall__)) CertFindChainInStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCERT_CHAIN_CONTEXT pPrevChainContext); +#define CERT_CHAIN_FIND_BY_ISSUER 1 + typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK) (PCCERT_CONTEXT pCert, void *pvFindArg); + typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA { + DWORD cbSize; + LPCSTR pszUsageIdentifier; + DWORD dwKeySpec; + DWORD dwAcquirePrivateKeyFlags; + DWORD cIssuer; + CERT_NAME_BLOB *rgIssuer; + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFindCallback; + void *pvFindArg; + } CERT_CHAIN_FIND_ISSUER_PARA,*PCERT_CHAIN_FIND_ISSUER_PARA,CERT_CHAIN_FIND_BY_ISSUER_PARA,*PCERT_CHAIN_FIND_BY_ISSUER_PARA; +#define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 0x1 +#define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 0x2 +#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 0x4 +#define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 0x8 +#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 0x4000 +#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 0x8000 + typedef struct _CERT_CHAIN_POLICY_PARA { + DWORD cbSize; + DWORD dwFlags; + void *pvExtraPolicyPara; + } CERT_CHAIN_POLICY_PARA,*PCERT_CHAIN_POLICY_PARA; + typedef struct _CERT_CHAIN_POLICY_STATUS { + DWORD cbSize; + DWORD dwError; + LONG lChainIndex; + LONG lElementIndex; + void *pvExtraPolicyStatus; + } CERT_CHAIN_POLICY_STATUS,*PCERT_CHAIN_POLICY_STATUS; +#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG 0x1 +#define CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG 0x2 +#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG 0x4 +#define CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG 0x8 +#define CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS (CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG | CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG | CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG) +#define CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG 0x10 +#define CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG 0x20 +#define CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG 0x40 +#define CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG 0x80 +#define CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG 0x100 +#define CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG 0x200 +#define CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG 0x400 +#define CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG 0x800 +#define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS (CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG) +#define CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG 0x1000 +#define CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG 0x2000 +#define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG 0x4000 +#define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG 0x8000 + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertVerifyCertificateChainPolicy (LPCSTR pszPolicyOID, PCCERT_CHAIN_CONTEXT pChainContext, PCERT_CHAIN_POLICY_PARA pPolicyPara, PCERT_CHAIN_POLICY_STATUS pPolicyStatus); +#define CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC "CertDllVerifyCertificateChainPolicy" +#define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1) +#define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2) +#define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3) +#define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4) +#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5) +#define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6) +#define CERT_CHAIN_POLICY_MICROSOFT_ROOT ((LPCSTR) 7) +#define CERT_CHAIN_POLICY_EV ((LPCSTR) 8) +#define CERT_CHAIN_POLICY_SSL_F12 ((LPCSTR) 9) +#define CERT_CHAIN_POLICY_SSL_HPKP_HEADER ((LPCSTR) 10) +#define CERT_CHAIN_POLICY_THIRD_PARTY_ROOT ((LPCSTR) 11) +#define CERT_CHAIN_POLICY_SSL_KEY_PIN ((LPCSTR) 12) + typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbSize; + DWORD dwRegPolicySettings; + PCMSG_SIGNER_INFO pSignerInfo; + } AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA, *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA; + typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS { + DWORD cbSize; + WINBOOL fCommercial; + } AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS, *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS; + typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbSize; + DWORD dwRegPolicySettings; + WINBOOL fCommercial; + } AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA,*PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA; +#define AUTHTYPE_CLIENT 1 +#define AUTHTYPE_SERVER 2 + typedef struct _HTTPSPolicyCallbackData { + __extension__ union { + DWORD cbStruct; + DWORD cbSize; + }; + DWORD dwAuthType; + DWORD fdwChecks; + WCHAR *pwszServerName; + } HTTPSPolicyCallbackData,*PHTTPSPolicyCallbackData,SSL_EXTRA_CERT_CHAIN_POLICY_PARA,*PSSL_EXTRA_CERT_CHAIN_POLICY_PARA; +#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG 0x80000000 +#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG 0x40000000 +#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000 +#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x00020000 +#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG 0x00040000 + typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbSize; + DWORD dwRootProgramQualifierFlags; + } EV_EXTRA_CERT_CHAIN_POLICY_PARA,*PEV_EXTRA_CERT_CHAIN_POLICY_PARA; + typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_STATUS { + DWORD cbSize; + DWORD dwQualifiers; + DWORD dwIssuanceUsageIndex; + } EV_EXTRA_CERT_CHAIN_POLICY_STATUS,*PEV_EXTRA_CERT_CHAIN_POLICY_STATUS; +#define SSL_F12_ERROR_TEXT_LENGTH 256 + typedef struct _SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS { + DWORD cbSize; + DWORD dwErrorLevel; + DWORD dwErrorCategory; + DWORD dwReserved; + WCHAR wszErrorText[256]; + } SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS, *PSSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS; +#define CERT_CHAIN_POLICY_SSL_F12_SUCCESS_LEVEL 0 +#define CERT_CHAIN_POLICY_SSL_F12_WARNING_LEVEL 1 +#define CERT_CHAIN_POLICY_SSL_F12_ERROR_LEVEL 2 +#define CERT_CHAIN_POLICY_SSL_F12_NONE_CATEGORY 0 +#define CERT_CHAIN_POLICY_SSL_F12_WEAK_CRYPTO_CATEGORY 1 +#define CERT_CHAIN_POLICY_SSL_F12_ROOT_PROGRAM_CATEGORY 2 +#define SSL_HPKP_PKP_HEADER_INDEX 0 +#define SSL_HPKP_PKP_RO_HEADER_INDEX 1 +#define SSL_HPKP_HEADER_COUNT 2 + typedef struct _SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbSize; + DWORD dwReserved; + LPWSTR pwszServerName; + LPSTR rgpszHpkpValue[2]; + } SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA; + typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbSize; + DWORD dwReserved; + PCWSTR pwszServerName; + } SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA; +#define SSL_KEY_PIN_ERROR_TEXT_LENGTH 512 + typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS { + DWORD cbSize; + LONG lError; + WCHAR wszErrorText[512]; + } SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS, *PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS; +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_ERROR -2 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_ERROR -1 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_SUCCESS 0 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_WARNING 1 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_WARNING 2 +#define CryptStringToBinary __MINGW_NAME_AW(CryptStringToBinary) +#define CryptBinaryToString __MINGW_NAME_AW(CryptBinaryToString) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptStringToBinaryA (LPCSTR pszString, DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, DWORD *pdwSkip, DWORD *pdwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptStringToBinaryW (LPCWSTR pszString, DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, DWORD *pdwSkip, DWORD *pdwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptBinaryToStringA (const BYTE *pbBinary, DWORD cbBinary, DWORD dwFlags, LPSTR pszString, DWORD *pcchString); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptBinaryToStringW (const BYTE *pbBinary, DWORD cbBinary, DWORD dwFlags, LPWSTR pszString, DWORD *pcchString); +#define CRYPT_STRING_BASE64HEADER 0x0 +#define CRYPT_STRING_BASE64 0x1 +#define CRYPT_STRING_BINARY 0x2 +#define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003 +#define CRYPT_STRING_HEX 0x4 +#define CRYPT_STRING_HEXASCII 0x00000005 +#define CRYPT_STRING_BASE64_ANY 0x00000006 +#define CRYPT_STRING_ANY 0x00000007 +#define CRYPT_STRING_HEX_ANY 0x8 +#define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009 +#define CRYPT_STRING_HEXADDR 0x0000000a +#define CRYPT_STRING_HEXASCIIADDR 0x0000000b +#define CRYPT_STRING_HEXRAW 0x0000000c +#define CRYPT_STRING_BASE64URI 0x0000000d +#define CRYPT_STRING_ENCODEMASK 0x000000ff +#define CRYPT_STRING_RESERVED100 0x00000100 +#define CRYPT_STRING_RESERVED200 0x00000200 +#define CRYPT_STRING_PERCENTESCAPE 0x08000000 +#define CRYPT_STRING_HASHDATA 0x10000000 +#define CRYPT_STRING_STRICT 0x20000000 +#define CRYPT_STRING_NOCRLF 0x40000000 +#define CRYPT_STRING_NOCR 0x80000000 +#define szOID_PKCS_12_PbeIds "1.2.840.113549.1.12.1" +#define szOID_PKCS_12_pbeWithSHA1And128BitRC4 "1.2.840.113549.1.12.1.1" +#define szOID_PKCS_12_pbeWithSHA1And40BitRC4 "1.2.840.113549.1.12.1.2" +#define szOID_PKCS_12_pbeWithSHA1And3KeyTripleDES "1.2.840.113549.1.12.1.3" +#define szOID_PKCS_12_pbeWithSHA1And2KeyTripleDES "1.2.840.113549.1.12.1.4" +#define szOID_PKCS_12_pbeWithSHA1And128BitRC2 "1.2.840.113549.1.12.1.5" +#define szOID_PKCS_12_pbeWithSHA1And40BitRC2 "1.2.840.113549.1.12.1.6" +#define szOID_PKCS_5_PBKDF2 "1.2.840.113549.1.5.12" +#define szOID_PKCS_5_PBES2 "1.2.840.113549.1.5.13" + typedef struct _CRYPT_PKCS12_PBE_PARAMS { + int iIterations; + ULONG cbSalt; + } CRYPT_PKCS12_PBE_PARAMS; + __declspec (dllimport) HCERTSTORE __attribute__((__stdcall__)) PFXImportCertStore (CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags); +#define PKCS12_IMPORT_SILENT 0x40 +#define CRYPT_USER_KEYSET 0x1000 +#define PKCS12_PREFER_CNG_KSP 0x100 +#define PKCS12_ALWAYS_CNG_KSP 0x200 +#define PKCS12_ONLY_CERTIFICATES 0x00000400 +#define PKCS12_ONLY_NOT_ENCRYPTED_CERTIFICATES 0x00000800 +#define PKCS12_ALLOW_OVERWRITE_KEY 0x4000 +#define PKCS12_NO_PERSIST_KEY 0x8000 +#define PKCS12_VIRTUAL_ISOLATION_KEY 0x00010000 +#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000 +#define PKCS12_OBJECT_LOCATOR_ALL_IMPORT_FLAGS (PKCS12_ALWAYS_CNG_KSP | PKCS12_NO_PERSIST_KEY | PKCS12_IMPORT_SILENT | PKCS12_INCLUDE_EXTENDED_PROPERTIES) +#define PKCS12_ONLY_CERTIFICATES_PROVIDER_TYPE 0 +#define PKCS12_ONLY_CERTIFICATES_PROVIDER_NAME L"PfxProvider" +#define PKCS12_ONLY_CERTIFICATES_CONTAINER_NAME L"PfxContainer" + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PFXIsPFXBlob (CRYPT_DATA_BLOB *pPFX); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PFXVerifyPassword (CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PFXExportCertStoreEx (HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, void *pvPara, DWORD dwFlags); +#define REPORT_NO_PRIVATE_KEY 0x1 +#define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x2 +#define EXPORT_PRIVATE_KEYS 0x4 +#define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x10 +#define PKCS12_PROTECT_TO_DOMAIN_SIDS 0x20 +#define PKCS12_EXPORT_SILENT 0x40 +#define PKCS12_EXPORT_PBES2_PARAMS 0x0080 +#define PKCS12_DISABLE_ENCRYPT_CERTIFICATES 0x0100 +#define PKCS12_ENCRYPT_CERTIFICATES 0x0200 +#define PKCS12_EXPORT_ECC_CURVE_PARAMETERS 0x1000 +#define PKCS12_EXPORT_ECC_CURVE_OID 0x2000 +#define PKCS12_EXPORT_RESERVED_MASK 0xffff0000 +#define PKCS12_PBKDF2_ID_HMAC_SHA1 "1.2.840.113549.2.7" +#define PKCS12_PBKDF2_ID_HMAC_SHA256 "1.2.840.113549.2.9" +#define PKCS12_PBKDF2_ID_HMAC_SHA384 "1.2.840.113549.2.10" +#define PKCS12_PBKDF2_ID_HMAC_SHA512 "1.2.840.113549.2.11" + typedef struct _PKCS12_PBES2_EXPORT_PARAMS { + DWORD dwSize; + PVOID hNcryptDescriptor; + LPWSTR pwszPbes2Alg; + } PKCS12_PBES2_EXPORT_PARAMS, *PPKCS12_PBES2_EXPORT_PARAMS; +#define PKCS12_PBES2_ALG_AES256_SHA256 L"AES256-SHA256" +#define PKCS12_CONFIG_REGPATH L"Software\\Microsoft\\Windows\\CurrentVersion\\PFX" +#define PKCS12_ENCRYPT_CERTIFICATES_VALUE_NAME L"EncryptCertificates" + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PFXExportCertStore (HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags); + typedef void *HCERT_SERVER_OCSP_RESPONSE; + __declspec (dllimport) HCERT_SERVER_OCSP_RESPONSE __attribute__((__stdcall__)) CertOpenServerOcspResponse (PCCERT_CHAIN_CONTEXT pChainContext, DWORD dwFlags, LPVOID pvReserved); +#define CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG 0x1 + __declspec (dllimport) void __attribute__((__stdcall__)) CertAddRefServerOcspResponse (HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse); + __declspec (dllimport) void __attribute__((__stdcall__)) CertCloseServerOcspResponse (HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags); + typedef struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT CERT_SERVER_OCSP_RESPONSE_CONTEXT,*PCERT_SERVER_OCSP_RESPONSE_CONTEXT; + typedef const CERT_SERVER_OCSP_RESPONSE_CONTEXT *PCCERT_SERVER_OCSP_RESPONSE_CONTEXT; + struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT { + DWORD cbSize; + BYTE *pbEncodedOcspResponse; + DWORD cbEncodedOcspResponse; + }; + typedef void (__attribute__((__stdcall__)) *PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK)(PCCERT_CHAIN_CONTEXT pChainContext, PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext, PCCRL_CONTEXT pNewCrlContext, PCCRL_CONTEXT pPrevCrlContext, PVOID pvArg, DWORD dwWriteOcspFileError); + typedef struct _CERT_SERVER_OCSP_RESPONSE_OPEN_PARA { + DWORD cbSize; + DWORD dwFlags; + DWORD *pcbUsedSize; + PWSTR pwszOcspDirectory; + PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK pfnUpdateCallback; + PVOID pvUpdateCallbackArg; + } CERT_SERVER_OCSP_RESPONSE_OPEN_PARA, *PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA; +#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_READ_FLAG 0x00000001 +#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_WRITE_FLAG 0x00000002 + __declspec (dllimport) PCCERT_SERVER_OCSP_RESPONSE_CONTEXT __attribute__((__stdcall__)) CertGetServerOcspResponseContext (HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags, LPVOID pvReserved); + __declspec (dllimport) void __attribute__((__stdcall__)) CertAddRefServerOcspResponseContext (PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext); + __declspec (dllimport) void __attribute__((__stdcall__)) CertFreeServerOcspResponseContext (PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CertRetrieveLogoOrBiometricInfo (PCCERT_CONTEXT pCertContext, LPCSTR lpszLogoOrBiometricType, DWORD dwRetrievalFlags, DWORD dwTimeout, DWORD dwFlags, void *pvReserved, BYTE **ppbData, DWORD *pcbData, LPWSTR *ppwszMimeType); +#define CERT_RETRIEVE_ISSUER_LOGO ((LPCSTR) 1) +#define CERT_RETRIEVE_SUBJECT_LOGO ((LPCSTR) 2) +#define CERT_RETRIEVE_COMMUNITY_LOGO ((LPCSTR) 3) +#define CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE ((LPCSTR) 1000) +#define CERT_RETRIEVE_BIOMETRIC_PICTURE_TYPE (CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE + CERT_BIOMETRIC_PICTURE_TYPE) +#define CERT_RETRIEVE_BIOMETRIC_SIGNATURE_TYPE (CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE + CERT_BIOMETRIC_SIGNATURE_TYPE) +#define __DPAPI_H__ +#define DPAPI_IMP DECLSPEC_IMPORT +#define CRYPTPROTECT_DEFAULT_PROVIDER { 0xdf9d8cd0, 0x1501, 0x11d1,{ 0x8c, 0x7a, 0x00, 0xc0, 0x4f, 0xc2, 0x97, 0xeb } } +#define szFORCE_KEY_PROTECTION "ForceKeyProtection" +#define dwFORCE_KEY_PROTECTION_DISABLED 0x0 +#define dwFORCE_KEY_PROTECTION_USER_SELECT 0x1 +#define dwFORCE_KEY_PROTECTION_HIGH 0x2 +#define CRYPTPROTECT_PROMPT_ON_UNPROTECT 0x1 +#define CRYPTPROTECT_PROMPT_ON_PROTECT 0x2 +#define CRYPTPROTECT_PROMPT_RESERVED 0x04 +#define CRYPTPROTECT_PROMPT_STRONG 0x08 +#define CRYPTPROTECT_PROMPT_REQUIRE_STRONG 0x10 +#define CRYPTPROTECT_UI_FORBIDDEN 0x1 +#define CRYPTPROTECT_LOCAL_MACHINE 0x4 +#define CRYPTPROTECT_CRED_SYNC 0x8 +#define CRYPTPROTECT_AUDIT 0x10 +#define CRYPTPROTECT_NO_RECOVERY 0x20 +#define CRYPTPROTECT_VERIFY_PROTECTION 0x40 +#define CRYPTPROTECT_CRED_REGENERATE 0x80 +#define CRYPTPROTECT_FIRST_RESERVED_FLAGVAL 0x0fffffff +#define CRYPTPROTECT_LAST_RESERVED_FLAGVAL 0xffffffff + typedef struct _CRYPTPROTECT_PROMPTSTRUCT { + DWORD cbSize; + DWORD dwPromptFlags; + HWND hwndApp; + LPCWSTR szPrompt; + } CRYPTPROTECT_PROMPTSTRUCT,*PCRYPTPROTECT_PROMPTSTRUCT; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptProtectData (DATA_BLOB *pDataIn, LPCWSTR szDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUnprotectData (DATA_BLOB *pDataIn, LPWSTR *ppszDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUpdateProtectedState (PSID pOldSid, LPCWSTR pwszOldPassword, DWORD dwFlags, DWORD *pdwSuccessCount, DWORD *pdwFailureCount); +#define CRYPTPROTECTMEMORY_BLOCK_SIZE 16 +#define CRYPTPROTECTMEMORY_SAME_PROCESS 0x0 +#define CRYPTPROTECTMEMORY_CROSS_PROCESS 0x1 +#define CRYPTPROTECTMEMORY_SAME_LOGON 0x2 +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptProtectMemory (LPVOID pDataIn, DWORD cbDataIn, DWORD dwFlags); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CryptUnprotectMemory (LPVOID pDataIn, DWORD cbDataIn, DWORD dwFlags); +#define __WINEFS_H__ + typedef struct _CERTIFICATE_BLOB { + DWORD dwCertEncodingType; + DWORD cbData; + PBYTE pbData; + } EFS_CERTIFICATE_BLOB,*PEFS_CERTIFICATE_BLOB; + typedef struct _EFS_HASH_BLOB { + DWORD cbData; + PBYTE pbData; + } EFS_HASH_BLOB,*PEFS_HASH_BLOB; + typedef struct _EFS_RPC_BLOB { + DWORD cbData; + PBYTE pbData; + } EFS_RPC_BLOB,*PEFS_RPC_BLOB; + typedef struct _EFS_KEY_INFO { + DWORD dwVersion; + ULONG Entropy; + ALG_ID Algorithm; + ULONG KeyLength; + } EFS_KEY_INFO,*PEFS_KEY_INFO; + typedef struct _ENCRYPTION_CERTIFICATE { + DWORD cbTotalLength; + SID *pUserSid; + PEFS_CERTIFICATE_BLOB pCertBlob; + } ENCRYPTION_CERTIFICATE,*PENCRYPTION_CERTIFICATE; +#define MAX_SID_SIZE 256 + typedef struct _ENCRYPTION_CERTIFICATE_HASH { + DWORD cbTotalLength; + SID *pUserSid; + PEFS_HASH_BLOB pHash; + LPWSTR lpDisplayInformation; + } ENCRYPTION_CERTIFICATE_HASH,*PENCRYPTION_CERTIFICATE_HASH; + typedef struct _ENCRYPTION_CERTIFICATE_HASH_LIST { + DWORD nCert_Hash; + PENCRYPTION_CERTIFICATE_HASH *pUsers; + } ENCRYPTION_CERTIFICATE_HASH_LIST,*PENCRYPTION_CERTIFICATE_HASH_LIST; + typedef struct _ENCRYPTION_CERTIFICATE_LIST { + DWORD nUsers; + PENCRYPTION_CERTIFICATE *pUsers; + } ENCRYPTION_CERTIFICATE_LIST,*PENCRYPTION_CERTIFICATE_LIST; + __declspec (dllimport) DWORD __attribute__((__stdcall__)) QueryUsersOnEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST *pUsers); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) QueryRecoveryAgentsOnEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST *pRecoveryAgents); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) RemoveUsersFromEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST pHashes); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) AddUsersToEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_LIST pUsers); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) SetUserFileEncryptionKey(PENCRYPTION_CERTIFICATE pEncryptionCertificate); + __declspec (dllimport) void __attribute__((__stdcall__)) FreeEncryptionCertificateHashList(PENCRYPTION_CERTIFICATE_HASH_LIST pHashes); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EncryptionDisable(LPCWSTR DirPath,WINBOOL Disable); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) DuplicateEncryptionInfoFile(LPCWSTR SrcFileName,LPCWSTR DstFileName,DWORD dwCreationDistribution,DWORD dwAttributes,const LPSECURITY_ATTRIBUTES lpSecurityAttributes); +#define _WINSCARD_H_ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#undef interface +#define interface struct +#define __RPCNDR_H_VERSION__ (475) +#define __RPCNDR_H__ +#pragma pack(push,8) +#define __RPCNSIP_H__ + typedef struct { + RPC_NS_HANDLE LookupContext; + RPC_BINDING_HANDLE ProposedHandle; + RPC_BINDING_VECTOR *Bindings; + } RPC_IMPORT_CONTEXT_P,*PRPC_IMPORT_CONTEXT_P; + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsGetBuffer(PRPC_MESSAGE Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsSendReceive(PRPC_MESSAGE Message,RPC_BINDING_HANDLE *Handle); + __declspec (dllimport) void __attribute__((__stdcall__)) I_RpcNsRaiseException(PRPC_MESSAGE Message,RPC_STATUS Status); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_RpcReBindBuffer(PRPC_MESSAGE Message); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_NsServerBindSearch(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) I_NsClientBindSearch(void); + __declspec (dllimport) void __attribute__((__stdcall__)) I_NsClientBindDone(void); +#define RPCSAL_H +#define __RPCSAL_H_VERSION__ 100 +#define _SAL1_2_Source_(Name,args,annotes) +#define __RPC__deref_in +#define __RPC__deref_in_ecount(size) +#define __RPC__deref_in_ecount_full(size) +#define __RPC__deref_in_ecount_full_opt(size) +#define __RPC__deref_in_ecount_full_opt_string(size) +#define __RPC__deref_in_ecount_full_string(size) +#define __RPC__deref_in_ecount_opt(size) +#define __RPC__deref_in_ecount_opt_string(size) +#define __RPC__deref_in_ecount_part(size,length) +#define __RPC__deref_in_ecount_part_opt(size,length) +#define __RPC__deref_in_opt +#define __RPC__deref_in_opt_string +#define __RPC__deref_in_string +#define __RPC__deref_in_xcount(size) +#define __RPC__deref_in_xcount_full(size) +#define __RPC__deref_in_xcount_full_opt(size) +#define __RPC__deref_in_xcount_full_opt_string(size) +#define __RPC__deref_in_xcount_full_string(size) +#define __RPC__deref_in_xcount_opt(size) +#define __RPC__deref_in_xcount_opt_string(size) +#define __RPC__deref_in_xcount_part(size,length) +#define __RPC__deref_in_xcount_part_opt(size,length) +#define __RPC__deref_inout +#define __RPC__deref_inout_ecount_full(size) +#define __RPC__deref_inout_ecount_full_opt(size) +#define __RPC__deref_inout_ecount_full_opt_string(size) +#define __RPC__deref_inout_ecount_full_string(size) +#define __RPC__deref_inout_ecount_opt(size) +#define __RPC__deref_inout_ecount_part_opt(size,length) +#define __RPC__deref_inout_opt +#define __RPC__deref_inout_opt_string +#define __RPC__deref_inout_string +#define __RPC__deref_inout_xcount_full(size) +#define __RPC__deref_inout_xcount_full_opt(size) +#define __RPC__deref_inout_xcount_full_opt_string(size) +#define __RPC__deref_inout_xcount_full_string(size) +#define __RPC__deref_inout_xcount_opt(size) +#define __RPC__deref_inout_xcount_part_opt(size,length) +#define __RPC__deref_opt_in +#define __RPC__deref_opt_in_opt +#define __RPC__deref_opt_in_opt_string +#define __RPC__deref_opt_in_string +#define __RPC__deref_opt_inout +#define __RPC__deref_opt_inout_ecount(size) +#define __RPC__deref_opt_inout_ecount_full(size) +#define __RPC__deref_opt_inout_ecount_full_opt(size) +#define __RPC__deref_opt_inout_ecount_full_opt_string(size) +#define __RPC__deref_opt_inout_ecount_full_string(size) +#define __RPC__deref_opt_inout_ecount_opt(size) +#define __RPC__deref_opt_inout_ecount_part(size,length) +#define __RPC__deref_opt_inout_ecount_part_opt(size,length) +#define __RPC__deref_opt_inout_opt +#define __RPC__deref_opt_inout_opt_string +#define __RPC__deref_opt_inout_string +#define __RPC__deref_opt_inout_xcount_full(size) +#define __RPC__deref_opt_inout_xcount_full_opt(size) +#define __RPC__deref_opt_inout_xcount_full_opt_string(size) +#define __RPC__deref_opt_inout_xcount_full_string(size) +#define __RPC__deref_opt_inout_xcount_opt(size) +#define __RPC__deref_opt_inout_xcount_part(size,length) +#define __RPC__deref_opt_inout_xcount_part_opt(size,length) +#define __RPC__deref_out +#define __RPC__deref_out_ecount(size) +#define __RPC__deref_out_ecount_full(size) +#define __RPC__deref_out_ecount_full_opt(size) +#define __RPC__deref_out_ecount_full_opt_string(size) +#define __RPC__deref_out_ecount_full_string(size) +#define __RPC__deref_out_ecount_opt(size) +#define __RPC__deref_out_ecount_part(size,length) +#define __RPC__deref_out_ecount_part_opt(size,length) +#define __RPC__deref_out_opt +#define __RPC__deref_out_opt_string +#define __RPC__deref_out_string +#define __RPC__deref_out_xcount(size) +#define __RPC__deref_out_xcount_full(size) +#define __RPC__deref_out_xcount_full_opt(size) +#define __RPC__deref_out_xcount_full_opt_string(size) +#define __RPC__deref_out_xcount_full_string(size) +#define __RPC__deref_out_xcount_opt(size) +#define __RPC__deref_out_xcount_part(size,length) +#define __RPC__deref_out_xcount_part_opt(size,length) +#define __RPC__in +#define __RPC__in_ecount(size) +#define __RPC__in_ecount_full(size) +#define __RPC__in_ecount_full_opt(size) +#define __RPC__in_ecount_full_opt_string(size) +#define __RPC__in_ecount_full_string(size) +#define __RPC__in_ecount_opt(size) +#define __RPC__in_ecount_opt_string(size) +#define __RPC__in_ecount_part(size,length) +#define __RPC__in_ecount_part_opt(size,length) +#define __RPC__in_opt +#define __RPC__in_opt_string +#define __RPC__in_range(min,max) +#define __RPC__in_string +#define __RPC__in_xcount(size) +#define __RPC__in_xcount_full(size) +#define __RPC__in_xcount_full_opt(size) +#define __RPC__in_xcount_full_opt_string(size) +#define __RPC__in_xcount_full_string(size) +#define __RPC__in_xcount_opt(size) +#define __RPC__in_xcount_opt_string(size) +#define __RPC__in_xcount_part(size,length) +#define __RPC__in_xcount_part_opt(size,length) +#define __RPC__inout +#define __RPC__inout_ecount(size) +#define __RPC__inout_ecount_full(size) +#define __RPC__inout_ecount_full_opt(size) +#define __RPC__inout_ecount_full_opt_string(size) +#define __RPC__inout_ecount_full_string(size) +#define __RPC__inout_ecount_opt(size) +#define __RPC__inout_ecount_part(size,length) +#define __RPC__inout_ecount_part_opt(size,length) +#define __RPC__inout_opt +#define __RPC__inout_opt_string +#define __RPC__inout_string +#define __RPC__inout_xcount(size) +#define __RPC__inout_xcount_full(size) +#define __RPC__inout_xcount_full_opt(size) +#define __RPC__inout_xcount_full_opt_string(size) +#define __RPC__inout_xcount_full_string(size) +#define __RPC__inout_xcount_opt(size) +#define __RPC__inout_xcount_part(size,length) +#define __RPC__inout_xcount_part_opt(size,length) +#define __RPC__out +#define __RPC__out_ecount(size) +#define __RPC__out_ecount_full(size) +#define __RPC__out_ecount_full_string(size) +#define __RPC__out_ecount_part(size,length) +#define __RPC__out_ecount_string(size) +#define __RPC__out_xcount(size) +#define __RPC__out_xcount_full(size) +#define __RPC__out_xcount_full_string(size) +#define __RPC__out_xcount_part(size,length) +#define __RPC__out_xcount_string(size) +#define __RPC__range(min,max) +#define __RPC_full_pointer +#define __RPC_ref_pointer +#define __RPC_string +#define __RPC_unique_pointer +#define NDR_CHAR_REP_MASK __MSABI_LONG(0X0000000FU) +#define NDR_INT_REP_MASK __MSABI_LONG(0X000000F0U) +#define NDR_FLOAT_REP_MASK __MSABI_LONG(0X0000FF00U) +#define NDR_LITTLE_ENDIAN __MSABI_LONG(0X00000010U) +#define NDR_BIG_ENDIAN __MSABI_LONG(0X00000000U) +#define NDR_IEEE_FLOAT __MSABI_LONG(0X00000000U) +#define NDR_VAX_FLOAT __MSABI_LONG(0X00000100U) +#define NDR_IBM_FLOAT __MSABI_LONG(0X00000300U) +#define NDR_ASCII_CHAR __MSABI_LONG(0X00000000U) +#define NDR_EBCDIC_CHAR __MSABI_LONG(0X00000001U) +#define NDR_LOCAL_DATA_REPRESENTATION __MSABI_LONG(0X00000010U) +#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN +#define TARGET_IS_NT61_OR_LATER 0 +#define TARGET_IS_NT60_OR_LATER 1 +#define TARGET_IS_NT51_OR_LATER 1 +#define TARGET_IS_NT50_OR_LATER 1 +#define TARGET_IS_NT40_OR_LATER 1 +#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1 + typedef unsigned char byte; + typedef byte cs_byte; + typedef unsigned char boolean; +#define _HYPER_DEFINED +#define hyper __int64 +#define MIDL_uhyper unsigned __int64 +#define __RPC_CALLEE __stdcall +#define __MIDL_user_allocate_free_DEFINED__ + void *__attribute__((__stdcall__)) MIDL_user_allocate(size_t); + void __attribute__((__stdcall__)) MIDL_user_free(void *); +#define RPC_VAR_ENTRY __cdecl +#define __MIDL_DECLSPEC_DLLIMPORT +#define __MIDL_DECLSPEC_DLLEXPORT + typedef void *NDR_CCONTEXT; + typedef struct _NDR_SCONTEXT { + void *pad[2]; + void *userContext; + } *NDR_SCONTEXT; +#define NDRSContextValue(hContext) (&(hContext)->userContext) +#define cbNDRContext 20 + typedef void (__attribute__((__stdcall__)) *NDR_RUNDOWN)(void *context); + typedef void (__attribute__((__stdcall__)) *NDR_NOTIFY_ROUTINE)(void); + typedef void (__attribute__((__stdcall__)) *NDR_NOTIFY2_ROUTINE)(boolean flag); + typedef struct _SCONTEXT_QUEUE { + unsigned long NumberOfObjects; + NDR_SCONTEXT *ArrayOfObjects; + } SCONTEXT_QUEUE,*PSCONTEXT_QUEUE; + __declspec (dllimport) RPC_BINDING_HANDLE __attribute__((__stdcall__)) NDRCContextBinding(NDR_CCONTEXT CContext); + __declspec (dllimport) void __attribute__((__stdcall__)) NDRCContextMarshall(NDR_CCONTEXT CContext,void *pBuff); + __declspec (dllimport) void __attribute__((__stdcall__)) NDRCContextUnmarshall(NDR_CCONTEXT *pCContext,RPC_BINDING_HANDLE hBinding,void *pBuff,unsigned long DataRepresentation); + __declspec (dllimport) void __attribute__((__stdcall__)) NDRSContextMarshall(NDR_SCONTEXT CContext,void *pBuff,NDR_RUNDOWN userRunDownIn); + __declspec (dllimport) NDR_SCONTEXT __attribute__((__stdcall__)) NDRSContextUnmarshall(void *pBuff,unsigned long DataRepresentation); + __declspec (dllimport) void __attribute__((__stdcall__)) NDRSContextMarshallEx(RPC_BINDING_HANDLE BindingHandle,NDR_SCONTEXT CContext,void *pBuff,NDR_RUNDOWN userRunDownIn); + __declspec (dllimport) void __attribute__((__stdcall__)) NDRSContextMarshall2(RPC_BINDING_HANDLE BindingHandle,NDR_SCONTEXT CContext,void *pBuff,NDR_RUNDOWN userRunDownIn,void *CtxGuard,unsigned long Flags); + __declspec (dllimport) NDR_SCONTEXT __attribute__((__stdcall__)) NDRSContextUnmarshallEx(RPC_BINDING_HANDLE BindingHandle,void *pBuff,unsigned long DataRepresentation); + __declspec (dllimport) NDR_SCONTEXT __attribute__((__stdcall__)) NDRSContextUnmarshall2(RPC_BINDING_HANDLE BindingHandle,void *pBuff,unsigned long DataRepresentation,void *CtxGuard,unsigned long Flags); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsDestroyClientContext(void **ContextHandle); +#define byte_from_ndr(source,target) { *(target) = *(*(char **)&(source)->Buffer)++; } +#define byte_array_from_ndr(Source,LowerIndex,UpperIndex,Target) { NDRcopy ((((char *)(Target))+(LowerIndex)),(Source)->Buffer,(unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned __LONG32 *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } +#define boolean_from_ndr(source,target) { *(target) = *(*(char **)&(source)->Buffer)++; } +#define boolean_array_from_ndr(Source,LowerIndex,UpperIndex,Target) { NDRcopy ((((char *)(Target))+(LowerIndex)),(Source)->Buffer,(unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned __LONG32 *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } +#define small_from_ndr(source,target) { *(target) = *(*(char **)&(source)->Buffer)++; } +#define small_from_ndr_temp(source,target,format) { *(target) = *(*(char **)(source))++; } +#define small_array_from_ndr(Source,LowerIndex,UpperIndex,Target) { NDRcopy ((((char *)(Target))+(LowerIndex)),(Source)->Buffer,(unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned __LONG32 *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } +#define MIDL_ascii_strlen(string) strlen(string) +#define MIDL_ascii_strcpy(target,source) strcpy(target,source) +#define MIDL_memset(s,c,n) memset(s,c,n) +#define _ERROR_STATUS_T_DEFINED +typedef unsigned long error_status_t; +#define _midl_ma1(p,cast) *(*(cast **)&p)++ +#define _midl_ma2(p,cast) *(*(cast **)&p)++ +#define _midl_ma4(p,cast) *(*(cast **)&p)++ +#define _midl_ma8(p,cast) *(*(cast **)&p)++ +#define _midl_unma1(p,cast) *((cast *)p)++ +#define _midl_unma2(p,cast) *((cast *)p)++ +#define _midl_unma3(p,cast) *((cast *)p)++ +#define _midl_unma4(p,cast) *((cast *)p)++ +#define _midl_fa2(p) (p = (RPC_BUFPTR)((ULONG_PTR)(p+1) & ~0x1)) +#define _midl_fa4(p) (p = (RPC_BUFPTR)((ULONG_PTR)(p+3) & ~0x3)) +#define _midl_fa8(p) (p = (RPC_BUFPTR)((ULONG_PTR)(p+7) & ~0x7)) +#define _midl_addp(p,n) (p += n) +#define _midl_marsh_lhs(p,cast) *(*(cast **)&p)++ +#define _midl_marsh_up(mp,p) *(*(unsigned __LONG32 **)&mp)++ = (unsigned __LONG32)p +#define _midl_advmp(mp) *(*(unsigned __LONG32 **)&mp)++ +#define _midl_unmarsh_up(p) (*(*(unsigned __LONG32 **)&p)++) +#define NdrMarshConfStringHdr(p,s,l) (_midl_ma4(p,unsigned __LONG32) = s,_midl_ma4(p,unsigned __LONG32) = 0,_midl_ma4(p,unsigned __LONG32) = l) +#define NdrUnMarshConfStringHdr(p,s,l) (s=_midl_unma4(p,unsigned __LONG32),(_midl_addp(p,4)),(l=_midl_unma4(p,unsigned __LONG32))) +#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall((NDR_CCONTEXT)pc,p),p+20) +#define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CCONTEXT)pc,h,p,drep),p+20) +#define NdrUnMarshSCtxtHdl(pc,p,drep) (pc = NdrSContextUnMarshall(p,drep)) +#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p,(NDR_RUNDOWN)rd)) +#define NdrFieldOffset(s,f) (LONG_PTR)(& (((s *)0)->f)) +#define NdrFieldPad(s,f,p,t) ((unsigned __LONG32)(NdrFieldOffset(s,f) - NdrFieldOffset(s,p)) - sizeof(t)) +#define NdrFcShort(s) (unsigned char)(s & 0xff),(unsigned char)(s >> 8) +#define NdrFcLong(s) (unsigned char)(s & 0xff),(unsigned char)((s & 0x0000ff00) >> 8),(unsigned char)((s & 0x00ff0000) >> 16),(unsigned char)(s >> 24) +#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER ((RpcExceptionCode()==STATUS_ACCESS_VIOLATION) || (RpcExceptionCode()==STATUS_DATATYPE_MISALIGNMENT) || (RpcExceptionCode()==RPC_X_BAD_STUB_DATA) || (RpcExceptionCode()==RPC_S_INVALID_BOUND)) + struct _MIDL_STUB_MESSAGE; + struct _MIDL_STUB_DESC; + struct _FULL_PTR_XLAT_TABLES; + typedef unsigned char *RPC_BUFPTR; + typedef unsigned long RPC_LENGTH; + typedef void (__attribute__((__stdcall__)) *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *); + typedef const unsigned char *PFORMAT_STRING; + typedef struct { + long Dimension; + unsigned long *BufferConformanceMark; + unsigned long *BufferVarianceMark; + unsigned long *MaxCountArray; + unsigned long *OffsetArray; + unsigned long *ActualCountArray; + } ARRAY_INFO,*PARRAY_INFO; + typedef struct _NDR_ASYNC_MESSAGE *PNDR_ASYNC_MESSAGE; + typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO; + typedef struct { + unsigned long WireCodeset; + unsigned long DesiredReceivingCodeset; + void *CSArrayInfo; + } CS_STUB_INFO; + struct _MIDL_SYNTAX_INFO; + typedef struct _MIDL_SYNTAX_INFO MIDL_SYNTAX_INFO,*PMIDL_SYNTAX_INFO; + struct NDR_ALLOC_ALL_NODES_CONTEXT; + struct NDR_POINTER_QUEUE_STATE; + struct _NDR_PROC_CONTEXT; + typedef struct _MIDL_STUB_MESSAGE { + PRPC_MESSAGE RpcMsg; + unsigned char *Buffer; + unsigned char *BufferStart; + unsigned char *BufferEnd; + unsigned char *BufferMark; + unsigned long BufferLength; + unsigned long MemorySize; + unsigned char *Memory; + unsigned char IsClient; + unsigned char Pad; + unsigned short uFlags2; + int ReuseBuffer; + struct NDR_ALLOC_ALL_NODES_CONTEXT *pAllocAllNodesContext; + struct NDR_POINTER_QUEUE_STATE *pPointerQueueState; + int IgnoreEmbeddedPointers; + unsigned char *PointerBufferMark; + unsigned char fBufferValid; + unsigned char uFlags; + unsigned short UniquePtrCount; + ULONG_PTR MaxCount; + unsigned long Offset; + unsigned long ActualCount; + void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t); + void (__attribute__((__stdcall__)) *pfnFree)(void *); + unsigned char *StackTop; + unsigned char *pPresentedType; + unsigned char *pTransmitType; + handle_t SavedHandle; + const struct _MIDL_STUB_DESC *StubDesc; + struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; + unsigned long FullPtrRefId; + unsigned long PointerLength; + int fInDontFree : 1; + int fDontCallFreeInst : 1; + int fInOnlyParam : 1; + int fHasReturn : 1; + int fHasExtensions : 1; + int fHasNewCorrDesc : 1; + int fIsOicfServer : 1; + int fHasMemoryValidateCallback : 1; + int fUnused : 8; + int fUnused2 : 16; + unsigned long dwDestContext; + void *pvDestContext; + NDR_SCONTEXT *SavedContextHandles; + long ParamNumber; + struct IRpcChannelBuffer *pRpcChannelBuffer; + PARRAY_INFO pArrayInfo; + unsigned long *SizePtrCountArray; + unsigned long *SizePtrOffsetArray; + unsigned long *SizePtrLengthArray; + void *pArgQueue; + unsigned long dwStubPhase; + void *LowStackMark; + PNDR_ASYNC_MESSAGE pAsyncMsg; + PNDR_CORRELATION_INFO pCorrInfo; + unsigned char *pCorrMemory; + void *pMemoryList; + CS_STUB_INFO *pCSInfo; + unsigned char *ConformanceMark; + unsigned char *VarianceMark; + INT_PTR Unused; + struct _NDR_PROC_CONTEXT *pContext; + void *pUserMarshalList; + INT_PTR Reserved51_2; + INT_PTR Reserved51_3; + INT_PTR Reserved51_4; + INT_PTR Reserved51_5; + } MIDL_STUB_MESSAGE,*PMIDL_STUB_MESSAGE; + typedef void *(__attribute__((__stdcall__)) *GENERIC_BINDING_ROUTINE)(void *); + typedef void (__attribute__((__stdcall__)) *GENERIC_UNBIND_ROUTINE)(void *,unsigned char *); + typedef struct _GENERIC_BINDING_ROUTINE_PAIR { + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; + } GENERIC_BINDING_ROUTINE_PAIR,*PGENERIC_BINDING_ROUTINE_PAIR; + typedef struct __GENERIC_BINDING_INFO { + void *pObj; + unsigned int Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; + } GENERIC_BINDING_INFO,*PGENERIC_BINDING_INFO; +#define NDR_SHAREABLE __inline + typedef void (__attribute__((__stdcall__)) *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE); + typedef struct _XMIT_ROUTINE_QUINTUPLE { + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; + } XMIT_ROUTINE_QUINTUPLE,*PXMIT_ROUTINE_QUINTUPLE; + typedef ULONG (__attribute__((__stdcall__)) *USER_MARSHAL_SIZING_ROUTINE)(ULONG *,ULONG,void *); + typedef unsigned char *(__attribute__((__stdcall__)) *USER_MARSHAL_MARSHALLING_ROUTINE)(ULONG *,unsigned char *,void *); + typedef unsigned char *(__attribute__((__stdcall__)) *USER_MARSHAL_UNMARSHALLING_ROUTINE)(ULONG *,unsigned char *,void *); + typedef void (__attribute__((__stdcall__)) *USER_MARSHAL_FREEING_ROUTINE)(ULONG *,void *); + typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE { + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; + } USER_MARSHAL_ROUTINE_QUADRUPLE; +#define USER_MARSHAL_CB_SIGNATURE 'USRC' + typedef enum _USER_MARSHAL_CB_TYPE { + USER_MARSHAL_CB_BUFFER_SIZE,USER_MARSHAL_CB_MARSHALL,USER_MARSHAL_CB_UNMARSHALL,USER_MARSHAL_CB_FREE + } USER_MARSHAL_CB_TYPE; + typedef struct _USER_MARSHAL_CB { + unsigned long Flags; + PMIDL_STUB_MESSAGE pStubMsg; + PFORMAT_STRING pReserve; + unsigned long Signature; + USER_MARSHAL_CB_TYPE CBType; + PFORMAT_STRING pFormat; + PFORMAT_STRING pTypeFormat; + } USER_MARSHAL_CB; +#define USER_CALL_CTXT_MASK(f) ((f) & 0x00ff) +#define USER_CALL_AUX_MASK(f) ((f) & 0xff00) +#define GET_USER_DATA_REP(f) ((f) >> 16) +#define USER_CALL_IS_ASYNC 0x0100 +#define USER_CALL_NEW_CORRELATION_DESC 0x0200 + typedef struct _MALLOC_FREE_STRUCT { + void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t); + void (__attribute__((__stdcall__)) *pfnFree)(void *); + } MALLOC_FREE_STRUCT; + typedef struct _COMM_FAULT_OFFSETS { + short CommOffset; + short FaultOffset; + } COMM_FAULT_OFFSETS; + typedef enum _IDL_CS_CONVERT { + IDL_CS_NO_CONVERT,IDL_CS_IN_PLACE_CONVERT,IDL_CS_NEW_BUFFER_CONVERT + } IDL_CS_CONVERT; + typedef void (__attribute__((__stdcall__)) *CS_TYPE_NET_SIZE_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,unsigned long ulLocalBufferSize,IDL_CS_CONVERT *conversionType,unsigned long *pulNetworkBufferSize,error_status_t *pStatus); + typedef void (__attribute__((__stdcall__)) *CS_TYPE_LOCAL_SIZE_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,unsigned long ulNetworkBufferSize,IDL_CS_CONVERT *conversionType,unsigned long *pulLocalBufferSize,error_status_t *pStatus); + typedef void (__attribute__((__stdcall__)) *CS_TYPE_TO_NETCS_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,void *pLocalData,unsigned long ulLocalDataLength,byte *pNetworkData,unsigned long *pulNetworkDataLength,error_status_t *pStatus); + typedef void (__attribute__((__stdcall__)) *CS_TYPE_FROM_NETCS_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,byte *pNetworkData,unsigned long ulNetworkDataLength,unsigned long ulLocalBufferSize,void *pLocalData,unsigned long *pulLocalDataLength,error_status_t *pStatus); + typedef void (__attribute__((__stdcall__)) *CS_TAG_GETTING_ROUTINE)(RPC_BINDING_HANDLE hBinding,int fServerSide,unsigned long *pulSendingTag,unsigned long *pulDesiredReceivingTag,unsigned long *pulReceivingTag,error_status_t *pStatus); + void __attribute__((__stdcall__)) RpcCsGetTags(RPC_BINDING_HANDLE hBinding,int fServerSide,unsigned long *pulSendingTag,unsigned long *pulDesiredReceivingTag,unsigned long *pulReceivingTag,error_status_t *pStatus); + typedef struct _NDR_CS_SIZE_CONVERT_ROUTINES { + CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; + CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; + CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; + CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; + } NDR_CS_SIZE_CONVERT_ROUTINES; + typedef struct _NDR_CS_ROUTINES { + NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; + CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; + } NDR_CS_ROUTINES; + typedef struct _MIDL_STUB_DESC { + void *RpcInterfaceInformation; + void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t); + void (__attribute__((__stdcall__)) *pfnFree)(void *); + union { + handle_t *pAutoHandle; + handle_t *pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } IMPLICIT_HANDLE_INFO; + const NDR_RUNDOWN *apfnNdrRundownRoutines; + const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs; + const EXPR_EVAL *apfnExprEval; + const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple; + const unsigned char *pFormatTypes; + int fCheckBounds; + unsigned long Version; + MALLOC_FREE_STRUCT *pMallocFreeStruct; + long MIDLVersion; + const COMM_FAULT_OFFSETS *CommFaultOffsets; + const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple; + const NDR_NOTIFY_ROUTINE *NotifyRoutineTable; + ULONG_PTR mFlags; + const NDR_CS_ROUTINES *CsRoutineTables; + void *Reserved4; + ULONG_PTR Reserved5; + } MIDL_STUB_DESC; + typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC; + typedef void *PMIDL_XMIT_TYPE; + typedef struct _MIDL_FORMAT_STRING { + short Pad; + unsigned char Format[]; + } MIDL_FORMAT_STRING; + typedef void (__attribute__((__stdcall__)) *STUB_THUNK)(PMIDL_STUB_MESSAGE); + typedef long (__attribute__((__stdcall__)) *SERVER_ROUTINE)(); + typedef struct _MIDL_SERVER_INFO_ { + PMIDL_STUB_DESC pStubDesc; + const SERVER_ROUTINE *DispatchTable; + PFORMAT_STRING ProcString; + const unsigned short *FmtStringOffset; + const STUB_THUNK *ThunkTable; + PRPC_SYNTAX_IDENTIFIER pTransferSyntax; + ULONG_PTR nCount; + PMIDL_SYNTAX_INFO pSyntaxInfo; + } MIDL_SERVER_INFO,*PMIDL_SERVER_INFO; +#undef _MIDL_STUBLESS_PROXY_INFO + typedef struct _MIDL_STUBLESS_PROXY_INFO { + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const unsigned short *FormatStringOffset; + PRPC_SYNTAX_IDENTIFIER pTransferSyntax; + ULONG_PTR nCount; + PMIDL_SYNTAX_INFO pSyntaxInfo; + } MIDL_STUBLESS_PROXY_INFO; + typedef MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; + struct _MIDL_SYNTAX_INFO { + RPC_SYNTAX_IDENTIFIER TransferSyntax; + RPC_DISPATCH_TABLE *DispatchTable; + PFORMAT_STRING ProcString; + const unsigned short *FmtStringOffset; + PFORMAT_STRING TypeString; + const void *aUserMarshalQuadruple; + ULONG_PTR pReserved1; + ULONG_PTR pReserved2; + }; + typedef unsigned short *PARAM_OFFSETTABLE,*PPARAM_OFFSETTABLE; + typedef union _CLIENT_CALL_RETURN { + void *Pointer; + LONG_PTR Simple; + } CLIENT_CALL_RETURN; + typedef enum { + XLAT_SERVER = 1,XLAT_CLIENT + } XLAT_SIDE; + typedef struct _FULL_PTR_TO_REFID_ELEMENT { + struct _FULL_PTR_TO_REFID_ELEMENT *Next; + void *Pointer; + unsigned long RefId; + unsigned char State; + } FULL_PTR_TO_REFID_ELEMENT,*PFULL_PTR_TO_REFID_ELEMENT; + typedef struct _FULL_PTR_XLAT_TABLES { + struct { + void **XlatTable; + unsigned char *StateTable; + unsigned long NumberOfEntries; + } RefIdToPointer; + struct { + PFULL_PTR_TO_REFID_ELEMENT *XlatTable; + unsigned long NumberOfBuckets; + unsigned long HashMask; + } PointerToRefId; + unsigned long NextRefId; + XLAT_SIDE XlatSide; + } FULL_PTR_XLAT_TABLES,*PFULL_PTR_XLAT_TABLES; + RPC_STATUS __attribute__((__stdcall__)) NdrClientGetSupportedSyntaxes(RPC_CLIENT_INTERFACE *pInf,unsigned long *pCount,MIDL_SYNTAX_INFO **pArr); + RPC_STATUS __attribute__((__stdcall__)) NdrServerGetSupportedSyntaxes(RPC_SERVER_INTERFACE *pInf,unsigned long *pCount,MIDL_SYNTAX_INFO **pArr,unsigned long *pPreferSyntaxIndex); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,unsigned char FormatChar); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrPointerMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrCsArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrCsTagMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrComplexStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantStringMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrClientContextMarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_CCONTEXT ContextHandle,int fCheck); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerContextMarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_SCONTEXT ContextHandle,NDR_RUNDOWN RundownRoutine); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerContextNewMarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_SCONTEXT ContextHandle,NDR_RUNDOWN RundownRoutine,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,unsigned char FormatChar); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrCsArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrCsTagUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrRangeUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrCorrelationInitialize(PMIDL_STUB_MESSAGE pStubMsg,void *pMemory,unsigned long CacheSize,unsigned long flags); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrCorrelationPass(PMIDL_STUB_MESSAGE pStubMsg); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrCorrelationFree(PMIDL_STUB_MESSAGE pStubMsg); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrPointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_CCONTEXT *pContextHandle,RPC_BINDING_HANDLE BindHandle); + __declspec (dllimport) NDR_SCONTEXT __attribute__((__stdcall__)) NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE pStubMsg); + __declspec (dllimport) NDR_SCONTEXT __attribute__((__stdcall__)) NdrContextHandleInitialize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) NDR_SCONTEXT __attribute__((__stdcall__)) NdrServerContextNewUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrPointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrCsArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrCsTagBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrContextHandleSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrPointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrCsArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrCsTagMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrPointerFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrCsArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrSimpleStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrComplexStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrFixedArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrVaryingArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrComplexArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrByteCountPointerFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrUserMarshalFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrInterfacePointerFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConvert2(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat,long NumberParams); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrConvert(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); +#define USER_MARSHAL_FC_BYTE 1 +#define USER_MARSHAL_FC_CHAR 2 +#define USER_MARSHAL_FC_SMALL 3 +#define USER_MARSHAL_FC_USMALL 4 +#define USER_MARSHAL_FC_WCHAR 5 +#define USER_MARSHAL_FC_SHORT 6 +#define USER_MARSHAL_FC_USHORT 7 +#define USER_MARSHAL_FC_LONG 8 +#define USER_MARSHAL_FC_ULONG 9 +#define USER_MARSHAL_FC_FLOAT 10 +#define USER_MARSHAL_FC_HYPER 11 +#define USER_MARSHAL_FC_DOUBLE 12 + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrUserMarshalSimpleTypeConvert(unsigned long *pFlags,unsigned char *pBuffer,unsigned char FormatChar); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrClientInitializeNew(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,unsigned int ProcNum); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrServerInitializeNew(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerInitializePartial(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,unsigned long RequestedBufferSize); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrClientInitialize(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,unsigned int ProcNum); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrServerInitialize(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrServerInitializeUnmarshall (PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerInitializeMarshall (PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrGetBuffer(PMIDL_STUB_MESSAGE pStubMsg,unsigned long BufferLength,RPC_BINDING_HANDLE Handle); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrNsGetBuffer(PMIDL_STUB_MESSAGE pStubMsg,unsigned long BufferLength,RPC_BINDING_HANDLE Handle); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrSendReceive(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pBufferEnd); + __declspec (dllimport) unsigned char *__attribute__((__stdcall__)) NdrNsSendReceive(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pBufferEnd,RPC_BINDING_HANDLE *pAutoHandle); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrFreeBuffer(PMIDL_STUB_MESSAGE pStubMsg); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) NdrGetDcomProtocolVersion(PMIDL_STUB_MESSAGE pStubMsg,RPC_VERSION *pVersion); + CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrClientCall2(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...); + CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrClientCall(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...); + CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrAsyncClientCall(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...); + CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrDcomAsyncClientCall(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...); + typedef enum { + STUB_UNMARSHAL,STUB_CALL_SERVER,STUB_MARSHAL,STUB_CALL_SERVER_NO_HRESULT + } STUB_PHASE; + typedef enum { + PROXY_CALCSIZE,PROXY_GETBUFFER,PROXY_MARSHAL,PROXY_SENDRECEIVE,PROXY_UNMARSHAL + } PROXY_PHASE; + struct IRpcStubBuffer; + __declspec (dllimport) void __attribute__((__stdcall__)) NdrAsyncServerCall(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) long __attribute__((__stdcall__)) NdrAsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase); + __declspec (dllimport) long __attribute__((__stdcall__)) NdrDcomAsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase); + __declspec (dllimport) long __attribute__((__stdcall__)) NdrStubCall2(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerCall2(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) long __attribute__((__stdcall__)) NdrStubCall (struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerCall(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrServerUnmarshall(struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,void *pParamList); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerMarshall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE pStubMsg,unsigned long *pCommStatus,unsigned long *pFaultStatus,RPC_STATUS Status); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrSH_UPDecision(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,RPC_BUFPTR pBuffer); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrSH_IfAlloc(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count); + __declspec (dllimport) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_IfCopy(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count); + __declspec (dllimport) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) NdrSH_Copy(unsigned char *pStubMsg,unsigned char *pPtrInMem,unsigned long Count); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrSH_IfFree(PMIDL_STUB_MESSAGE pMessage,unsigned char *pPtr); + __declspec (dllimport) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_StringMarshall(PMIDL_STUB_MESSAGE pMessage,unsigned char *pMemory,unsigned long Count,int Size); + __declspec (dllimport) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE pMessage,unsigned char **pMemory,int Size); + typedef void *RPC_SS_THREAD_HANDLE; + typedef void *__attribute__((__stdcall__)) RPC_CLIENT_ALLOC(size_t Size); + typedef void __attribute__((__stdcall__)) RPC_CLIENT_FREE(void *Ptr); + __declspec (dllimport) void *__attribute__((__stdcall__)) RpcSsAllocate(size_t Size); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsDisableAllocate(void); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsEnableAllocate(void); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsFree(void *NodeToFree); + __declspec (dllimport) RPC_SS_THREAD_HANDLE __attribute__((__stdcall__)) RpcSsGetThreadHandle(void); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsSetClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE Id); + __declspec (dllimport) void __attribute__((__stdcall__)) RpcSsSwapClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree,RPC_CLIENT_ALLOC **OldClientAlloc,RPC_CLIENT_FREE **OldClientFree); + __declspec (dllimport) void *__attribute__((__stdcall__)) RpcSmAllocate(size_t Size,RPC_STATUS *pStatus); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmClientFree(void *pNodeToFree); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmDestroyClientContext(void **ContextHandle); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmDisableAllocate(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmEnableAllocate(void); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmFree(void *NodeToFree); + __declspec (dllimport) RPC_SS_THREAD_HANDLE __attribute__((__stdcall__)) RpcSmGetThreadHandle (RPC_STATUS *pStatus); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmSetClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE Id); + __declspec (dllimport) RPC_STATUS __attribute__((__stdcall__)) RpcSmSwapClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree,RPC_CLIENT_ALLOC **OldClientAlloc,RPC_CLIENT_FREE **OldClientFree); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE pMessage); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE pMessage); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE pMessage); + __declspec (dllimport) void *__attribute__((__stdcall__)) NdrRpcSmClientAllocate(size_t Size); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrRpcSmClientFree(void *NodeToFree); + __declspec (dllimport) void *__attribute__((__stdcall__)) NdrRpcSsDefaultAllocate(size_t Size); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrRpcSsDefaultFree(void *NodeToFree); + __declspec (dllimport) PFULL_PTR_XLAT_TABLES __attribute__((__stdcall__)) NdrFullPointerXlatInit(unsigned long NumberOfPointers,XLAT_SIDE XlatSide); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES pXlatTables); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES pXlatTables,void *pPointer,unsigned char QueryType,unsigned long *pRefId); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES pXlatTables,unsigned long RefId,unsigned char QueryType,void **ppPointer); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES pXlatTables,unsigned long RefId,void *pPointer); + __declspec (dllimport) int __attribute__((__stdcall__)) NdrFullPointerFree(PFULL_PTR_XLAT_TABLES pXlatTables,void *Pointer); + __declspec (dllimport) void *__attribute__((__stdcall__)) NdrAllocate(PMIDL_STUB_MESSAGE pStubMsg,size_t Len); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrClearOutParameters(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat,void *ArgAddr); + __declspec (dllimport) void *__attribute__((__stdcall__)) NdrOleAllocate(size_t Size); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrOleFree(void *NodeToFree); +#define CONST_VTBL +#define MIDL_INTERFACE(x) struct +#define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) const IID DECLSPEC_SELECTANY itf = {l1,s1,s2,{c1,c2,c3,c4,c5,c6,c7,c8}} + typedef struct _NDR_USER_MARSHAL_INFO_LEVEL1 { + void *Buffer; + unsigned long BufferSize; + void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t); + void (__attribute__((__stdcall__)) *pfnFree)(void *); + struct IRpcChannelBuffer *pRpcChannelBuffer; + ULONG_PTR Reserved[5]; + } NDR_USER_MARSHAL_INFO_LEVEL1; + typedef struct _NDR_USER_MARSHAL_INFO { + unsigned long InformationLevel; + __extension__ union { + NDR_USER_MARSHAL_INFO_LEVEL1 Level1; + }; + } NDR_USER_MARSHAL_INFO; + RPC_STATUS __attribute__((__stdcall__)) NdrGetUserMarshalInfo(unsigned long *pFlags,unsigned long InformationLevel,NDR_USER_MARSHAL_INFO *pMarshalInfo); + RPC_STATUS __attribute__((__stdcall__)) NdrCreateServerInterfaceFromStub(struct IRpcStubBuffer *pStub,RPC_SERVER_INTERFACE *pServerIf); + CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrClientCall3(MIDL_STUBLESS_PROXY_INFO *pProxyInfo,unsigned long nProcNum,void *pReturnValue,...); + CLIENT_CALL_RETURN __attribute__((__cdecl__)) Ndr64AsyncClientCall(MIDL_STUBLESS_PROXY_INFO *pProxyInfo,unsigned long nProcNum,void *pReturnValue,...); + CLIENT_CALL_RETURN __attribute__((__cdecl__)) Ndr64DcomAsyncClientCall(MIDL_STUBLESS_PROXY_INFO *pProxyInfo,unsigned long nProcNum,void *pReturnValue,...); + struct IRpcStubBuffer; + __declspec (dllimport) void __attribute__((__stdcall__)) Ndr64AsyncServerCall(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) void __attribute__((__stdcall__)) Ndr64AsyncServerCall64(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) void __attribute__((__stdcall__)) Ndr64AsyncServerCallAll(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) long __attribute__((__stdcall__)) Ndr64AsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase); + __declspec (dllimport) long __attribute__((__stdcall__)) Ndr64DcomAsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase); + __declspec (dllimport) long __attribute__((__stdcall__)) NdrStubCall3 (struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerCallAll(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerCallNdr64(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrServerCall3(PRPC_MESSAGE pRpcMsg); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrPartialIgnoreClientMarshall(PMIDL_STUB_MESSAGE pStubMsg,void *pMemory); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrPartialIgnoreServerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,void **ppMemory); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrPartialIgnoreClientBufferSize(PMIDL_STUB_MESSAGE pStubMsg,void *pMemory); + __declspec (dllimport) void __attribute__((__stdcall__)) NdrPartialIgnoreServerInitialize(PMIDL_STUB_MESSAGE pStubMsg,void **ppMemory,PFORMAT_STRING pFormat); + void __attribute__((__stdcall__)) RpcUserFree(handle_t AsyncHandle,void *pBuffer); +#pragma pack(pop) +#define _OLE2_H_ +#pragma pack(push,8) +#undef interface +#define interface struct +#define _OBJBASE_H_ +#pragma pack(push,8) +#undef interface +#define interface struct +#define _COMBASEAPI_H_ +#pragma pack(push,8) +#define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE +#define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE +#undef interface +#define interface struct +#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method) +#define STDMETHOD_(type,method) type (STDMETHODCALLTYPE *method) +#define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method) +#define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE *method) +#define IFACEMETHOD(method) STDMETHOD (method) +#define IFACEMETHOD_(type,method) STDMETHOD_(type, method) +#define IFACEMETHODV(method) STDMETHODV (method) +#define IFACEMETHODV_(type,method) STDMETHODV_(type, method) +#define BEGIN_INTERFACE +#define END_INTERFACE +#define PURE +#define THIS_ INTERFACE *This, +#define THIS INTERFACE *This +#undef CONST_VTBL +#define CONST_VTBL +#define DECLARE_INTERFACE(iface) typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl +#define DECLARE_INTERFACE_(iface,baseiface) DECLARE_INTERFACE (iface) +#define DECLARE_INTERFACE_IID(iface,iid) DECLARE_INTERFACE (iface) +#define DECLARE_INTERFACE_IID_(iface,baseiface,iid) DECLARE_INTERFACE_ (iface, baseiface) +#define FARSTRUCT +#define HUGEP +#define LISet32(li,v) ((li).HighPart = ((LONG) (v)) < 0 ? -1 : 0,(li).LowPart = (v)) +#define ULISet32(li,v) ((li).HighPart = 0,(li).LowPart = (v)) +#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER) +#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER) +#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER) +typedef enum tagREGCLS { + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2, + REGCLS_SUSPENDED = 4, + REGCLS_SURROGATE = 8 +} REGCLS; +typedef struct IRpcStubBuffer IRpcStubBuffer; +typedef struct IRpcChannelBuffer IRpcChannelBuffer; +typedef enum tagCOINITBASE { + COINITBASE_MULTITHREADED = 0x0, +} COINITBASE; +#undef interface +#define interface struct +#define __wtypesbase_h__ +#define __WIDL_INLINE __inline__ +#undef DEFINE_GUID +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name +#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) +#define __IWinTypesBase_INTERFACE_DEFINED__ +extern RPC_IF_HANDLE IWinTypesBase_v0_1_c_ifspec; +extern RPC_IF_HANDLE IWinTypesBase_v0_1_s_ifspec; +typedef WCHAR OLECHAR; +typedef OLECHAR *LPOLESTR; +typedef const OLECHAR *LPCOLESTR; +#define OLESTR(str) L##str +typedef unsigned char UCHAR; +typedef short SHORT; +typedef unsigned short USHORT; +typedef DWORD ULONG; +typedef double DOUBLE; +typedef struct _COAUTHIDENTITY { + USHORT *User; + ULONG UserLength; + USHORT *Domain; + ULONG DomainLength; + USHORT *Password; + ULONG PasswordLength; + ULONG Flags; +} COAUTHIDENTITY; +typedef struct _COAUTHINFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + LPWSTR pwszServerPrincName; + DWORD dwAuthnLevel; + DWORD dwImpersonationLevel; + COAUTHIDENTITY *pAuthIdentityData; + DWORD dwCapabilities; +} COAUTHINFO; +typedef LONG SCODE; +typedef SCODE *PSCODE; +typedef enum tagMEMCTX { + MEMCTX_TASK = 1, + MEMCTX_SHARED = 2, + MEMCTX_MACSYSTEM = 3, + MEMCTX_UNKNOWN = -1, + MEMCTX_SAME = -2 +} MEMCTX; +#define _ROTREGFLAGS_DEFINED +#define ROTREGFLAGS_ALLOWANYCLIENT 0x1 +#define _APPIDREGFLAGS_DEFINED +#define APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP 0x1 +#define APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 0x2 +#define APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 0x4 +#define APPIDREGFLAGS_IUSERVER_UNMODIFIED_LOGON_TOKEN 0x8 +#define APPIDREGFLAGS_IUSERVER_SELF_SID_IN_LAUNCH_PERMISSION 0x10 +#define APPIDREGFLAGS_IUSERVER_ACTIVATE_IN_CLIENT_SESSION_ONLY 0x20 +#define APPIDREGFLAGS_RESERVED1 0x40 +#define _DCOMSCM_REMOTECALL_FLAGS_DEFINED +#define DCOMSCM_ACTIVATION_USE_ALL_AUTHNSERVICES 0x1 +#define DCOMSCM_ACTIVATION_DISALLOW_UNSECURE_CALL 0x2 +#define DCOMSCM_RESOLVE_USE_ALL_AUTHNSERVICES 0x4 +#define DCOMSCM_RESOLVE_DISALLOW_UNSECURE_CALL 0x8 +#define DCOMSCM_PING_USE_MID_AUTHNSERVICE 0x10 +#define DCOMSCM_PING_DISALLOW_UNSECURE_CALL 0x20 +typedef enum tagCLSCTX { + CLSCTX_INPROC_SERVER = 0x1, + CLSCTX_INPROC_HANDLER = 0x2, + CLSCTX_LOCAL_SERVER = 0x4, + CLSCTX_INPROC_SERVER16 = 0x8, + CLSCTX_REMOTE_SERVER = 0x10, + CLSCTX_INPROC_HANDLER16 = 0x20, + CLSCTX_RESERVED1 = 0x40, + CLSCTX_RESERVED2 = 0x80, + CLSCTX_RESERVED3 = 0x100, + CLSCTX_RESERVED4 = 0x200, + CLSCTX_NO_CODE_DOWNLOAD = 0x400, + CLSCTX_RESERVED5 = 0x800, + CLSCTX_NO_CUSTOM_MARSHAL = 0x1000, + CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000, + CLSCTX_NO_FAILURE_LOG = 0x4000, + CLSCTX_DISABLE_AAA = 0x8000, + CLSCTX_ENABLE_AAA = 0x10000, + CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000, + CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000, + CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000, + CLSCTX_ENABLE_CLOAKING = 0x100000, + CLSCTX_APPCONTAINER = 0x400000, + CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000, + CLSCTX_PS_DLL = (int)0x80000000 +} CLSCTX; +#define CLSCTX_VALID_MASK (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_SERVER16 | CLSCTX_REMOTE_SERVER | CLSCTX_NO_CODE_DOWNLOAD | CLSCTX_NO_CUSTOM_MARSHAL | CLSCTX_ENABLE_CODE_DOWNLOAD | CLSCTX_NO_FAILURE_LOG | CLSCTX_DISABLE_AAA | CLSCTX_ENABLE_AAA | CLSCTX_FROM_DEFAULT_CONTEXT | CLSCTX_ACTIVATE_32_BIT_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER | CLSCTX_ENABLE_CLOAKING | CLSCTX_APPCONTAINER | CLSCTX_ACTIVATE_AAA_AS_IU | CLSCTX_PS_DLL) +typedef enum tagMSHLFLAGS { + MSHLFLAGS_NORMAL = 0, + MSHLFLAGS_TABLESTRONG = 1, + MSHLFLAGS_TABLEWEAK = 2, + MSHLFLAGS_NOPING = 4, + MSHLFLAGS_RESERVED1 = 8, + MSHLFLAGS_RESERVED2 = 16, + MSHLFLAGS_RESERVED3 = 32, + MSHLFLAGS_RESERVED4 = 64 +} MSHLFLAGS; +typedef enum tagMSHCTX { + MSHCTX_LOCAL = 0, + MSHCTX_NOSHAREDMEM = 1, + MSHCTX_DIFFERENTMACHINE = 2, + MSHCTX_INPROC = 3, + MSHCTX_CROSSCTX = 4 +} MSHCTX; +typedef struct _BYTE_BLOB { + ULONG clSize; + byte abData[1]; +} BYTE_BLOB; +typedef BYTE_BLOB *UP_BYTE_BLOB; +typedef struct _WORD_BLOB { + ULONG clSize; + unsigned short asData[1]; +} WORD_BLOB; +typedef WORD_BLOB *UP_WORD_BLOB; +typedef struct _DWORD_BLOB { + ULONG clSize; + ULONG alData[1]; +} DWORD_BLOB; +typedef DWORD_BLOB *UP_DWORD_BLOB; +typedef struct _FLAGGED_BYTE_BLOB { + ULONG fFlags; + ULONG clSize; + byte abData[1]; +} FLAGGED_BYTE_BLOB; +typedef FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB; +typedef struct _FLAGGED_WORD_BLOB { + ULONG fFlags; + ULONG clSize; + unsigned short asData[1]; +} FLAGGED_WORD_BLOB; +typedef FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB; +typedef struct _BYTE_SIZEDARR { + ULONG clSize; + byte *pData; +} BYTE_SIZEDARR; +typedef struct _SHORT_SIZEDARR { + ULONG clSize; + unsigned short *pData; +} WORD_SIZEDARR; +typedef struct _LONG_SIZEDARR { + ULONG clSize; + ULONG *pData; +} DWORD_SIZEDARR; +typedef struct _HYPER_SIZEDARR { + ULONG clSize; + long long *pData; +} HYPER_SIZEDARR; +typedef boolean BOOLEAN; +#define _tagBLOB_DEFINED +#define _BLOB_DEFINED +#define _LPBLOB_DEFINED +typedef struct tagBLOB { + ULONG cbSize; + BYTE *pBlobData; +} BLOB; +typedef struct tagBLOB *LPBLOB; +#undef interface +#define interface struct +#define __unknwnbase_h__ +#define __IUnknown_FWD_DEFINED__ +typedef struct IUnknown IUnknown; +#define __AsyncIUnknown_FWD_DEFINED__ +typedef struct AsyncIUnknown AsyncIUnknown; +#define __IClassFactory_FWD_DEFINED__ +typedef struct IClassFactory IClassFactory; +#undef interface +#define interface struct +#define __IUnknown_INTERFACE_DEFINED__ +typedef IUnknown *LPUNKNOWN; +extern const GUID IID_IUnknown; +typedef struct IUnknownVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IUnknown *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IUnknown *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IUnknown *This); +} IUnknownVtbl; +struct IUnknown { + IUnknownVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IUnknown_QueryInterface_Proxy(IUnknown *This, const IID *const riid, void **ppvObject); +void __attribute__((__stdcall__)) IUnknown_QueryInterface_Stub(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); +ULONG __attribute__((__stdcall__)) IUnknown_AddRef_Proxy(IUnknown *This); +void __attribute__((__stdcall__)) IUnknown_AddRef_Stub(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); +ULONG __attribute__((__stdcall__)) IUnknown_Release_Proxy(IUnknown *This); +void __attribute__((__stdcall__)) IUnknown_Release_Stub(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); +#define __AsyncIUnknown_INTERFACE_DEFINED__ +extern const GUID IID_AsyncIUnknown; +typedef struct AsyncIUnknownVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + AsyncIUnknown *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + AsyncIUnknown *This); + ULONG (__attribute__((__stdcall__)) *Release)( + AsyncIUnknown *This); + HRESULT (__attribute__((__stdcall__)) *Begin_QueryInterface)( + AsyncIUnknown *This, + const IID *const riid); + HRESULT (__attribute__((__stdcall__)) *Finish_QueryInterface)( + AsyncIUnknown *This, + void **ppvObject); + HRESULT (__attribute__((__stdcall__)) *Begin_AddRef)( + AsyncIUnknown *This); + ULONG (__attribute__((__stdcall__)) *Finish_AddRef)( + AsyncIUnknown *This); + HRESULT (__attribute__((__stdcall__)) *Begin_Release)( + AsyncIUnknown *This); + ULONG (__attribute__((__stdcall__)) *Finish_Release)( + AsyncIUnknown *This); +} AsyncIUnknownVtbl; +struct AsyncIUnknown { + AsyncIUnknownVtbl* lpVtbl; +}; +#define __IClassFactory_INTERFACE_DEFINED__ +typedef IClassFactory *LPCLASSFACTORY; +extern const GUID IID_IClassFactory; +typedef struct IClassFactoryVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IClassFactory *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IClassFactory *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IClassFactory *This); + HRESULT (__attribute__((__stdcall__)) *CreateInstance)( + IClassFactory *This, + IUnknown *pUnkOuter, + const IID *const riid, + void **ppvObject); + HRESULT (__attribute__((__stdcall__)) *LockServer)( + IClassFactory *This, + WINBOOL fLock); +} IClassFactoryVtbl; +struct IClassFactory { + IClassFactoryVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IClassFactory_RemoteCreateInstance_Proxy( + IClassFactory* This, + const IID *const riid, + IUnknown **ppvObject); +void __attribute__((__stdcall__)) IClassFactory_RemoteCreateInstance_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IClassFactory_RemoteLockServer_Proxy( + IClassFactory* This, + WINBOOL fLock); +void __attribute__((__stdcall__)) IClassFactory_RemoteLockServer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IClassFactory_CreateInstance_Proxy( + IClassFactory* This, + IUnknown *pUnkOuter, + const IID *const riid, + void **ppvObject); +HRESULT __attribute__((__stdcall__)) IClassFactory_CreateInstance_Stub( + IClassFactory* This, + const IID *const riid, + IUnknown **ppvObject); +HRESULT __attribute__((__stdcall__)) IClassFactory_LockServer_Proxy( + IClassFactory* This, + WINBOOL fLock); +HRESULT __attribute__((__stdcall__)) IClassFactory_LockServer_Stub( + IClassFactory* This, + WINBOOL fLock); +#undef interface +#define interface struct +#define __objidlbase_h__ +#define __IMarshal_FWD_DEFINED__ +typedef struct IMarshal IMarshal; +#define __INoMarshal_FWD_DEFINED__ +typedef struct INoMarshal INoMarshal; +#define __IAgileObject_FWD_DEFINED__ +typedef struct IAgileObject IAgileObject; +#define __IAgileReference_FWD_DEFINED__ +typedef struct IAgileReference IAgileReference; +#define __IMarshal2_FWD_DEFINED__ +typedef struct IMarshal2 IMarshal2; +#define __IMalloc_FWD_DEFINED__ +typedef struct IMalloc IMalloc; +#define __IStdMarshalInfo_FWD_DEFINED__ +typedef struct IStdMarshalInfo IStdMarshalInfo; +#define __IExternalConnection_FWD_DEFINED__ +typedef struct IExternalConnection IExternalConnection; +#define __IMultiQI_FWD_DEFINED__ +typedef struct IMultiQI IMultiQI; +#define __AsyncIMultiQI_FWD_DEFINED__ +typedef struct AsyncIMultiQI AsyncIMultiQI; +#define __IInternalUnknown_FWD_DEFINED__ +typedef struct IInternalUnknown IInternalUnknown; +#define __IEnumUnknown_FWD_DEFINED__ +typedef struct IEnumUnknown IEnumUnknown; +#define __IEnumString_FWD_DEFINED__ +typedef struct IEnumString IEnumString; +#define __ISequentialStream_FWD_DEFINED__ +typedef struct ISequentialStream ISequentialStream; +#define __IStream_FWD_DEFINED__ +typedef struct IStream IStream; +#define __IRpcChannelBuffer_FWD_DEFINED__ +typedef struct IRpcChannelBuffer IRpcChannelBuffer; +#define __IRpcChannelBuffer2_FWD_DEFINED__ +typedef struct IRpcChannelBuffer2 IRpcChannelBuffer2; +#define __IAsyncRpcChannelBuffer_FWD_DEFINED__ +typedef struct IAsyncRpcChannelBuffer IAsyncRpcChannelBuffer; +#define __IRpcChannelBuffer3_FWD_DEFINED__ +typedef struct IRpcChannelBuffer3 IRpcChannelBuffer3; +#define __IRpcSyntaxNegotiate_FWD_DEFINED__ +typedef struct IRpcSyntaxNegotiate IRpcSyntaxNegotiate; +#define __IRpcProxyBuffer_FWD_DEFINED__ +typedef struct IRpcProxyBuffer IRpcProxyBuffer; +#define __IRpcStubBuffer_FWD_DEFINED__ +typedef struct IRpcStubBuffer IRpcStubBuffer; +#define __IPSFactoryBuffer_FWD_DEFINED__ +typedef struct IPSFactoryBuffer IPSFactoryBuffer; +#define __IChannelHook_FWD_DEFINED__ +typedef struct IChannelHook IChannelHook; +#define __IClientSecurity_FWD_DEFINED__ +typedef struct IClientSecurity IClientSecurity; +#define __IServerSecurity_FWD_DEFINED__ +typedef struct IServerSecurity IServerSecurity; +#define __IRpcOptions_FWD_DEFINED__ +typedef struct IRpcOptions IRpcOptions; +#define __IGlobalOptions_FWD_DEFINED__ +typedef struct IGlobalOptions IGlobalOptions; +#define __ISurrogate_FWD_DEFINED__ +typedef struct ISurrogate ISurrogate; +#define __IGlobalInterfaceTable_FWD_DEFINED__ +typedef struct IGlobalInterfaceTable IGlobalInterfaceTable; +#define __ISynchronize_FWD_DEFINED__ +typedef struct ISynchronize ISynchronize; +#define __ISynchronizeHandle_FWD_DEFINED__ +typedef struct ISynchronizeHandle ISynchronizeHandle; +#define __ISynchronizeEvent_FWD_DEFINED__ +typedef struct ISynchronizeEvent ISynchronizeEvent; +#define __ISynchronizeContainer_FWD_DEFINED__ +typedef struct ISynchronizeContainer ISynchronizeContainer; +#define __ISynchronizeMutex_FWD_DEFINED__ +typedef struct ISynchronizeMutex ISynchronizeMutex; +#define __ICancelMethodCalls_FWD_DEFINED__ +typedef struct ICancelMethodCalls ICancelMethodCalls; +#define __IAsyncManager_FWD_DEFINED__ +typedef struct IAsyncManager IAsyncManager; +#define __ICallFactory_FWD_DEFINED__ +typedef struct ICallFactory ICallFactory; +#define __IRpcHelper_FWD_DEFINED__ +typedef struct IRpcHelper IRpcHelper; +#define __IReleaseMarshalBuffers_FWD_DEFINED__ +typedef struct IReleaseMarshalBuffers IReleaseMarshalBuffers; +#define __IWaitMultiple_FWD_DEFINED__ +typedef struct IWaitMultiple IWaitMultiple; +#define __IAddrTrackingControl_FWD_DEFINED__ +typedef struct IAddrTrackingControl IAddrTrackingControl; +#define __IAddrExclusionControl_FWD_DEFINED__ +typedef struct IAddrExclusionControl IAddrExclusionControl; +#define __IPipeByte_FWD_DEFINED__ +typedef struct IPipeByte IPipeByte; +#define __IPipeLong_FWD_DEFINED__ +typedef struct IPipeLong IPipeLong; +#define __IPipeDouble_FWD_DEFINED__ +typedef struct IPipeDouble IPipeDouble; +#define __IEnumContextProps_FWD_DEFINED__ +typedef struct IEnumContextProps IEnumContextProps; +#define __IContext_FWD_DEFINED__ +typedef struct IContext IContext; +#define __IComThreadingInfo_FWD_DEFINED__ +typedef struct IComThreadingInfo IComThreadingInfo; +#define __IProcessInitControl_FWD_DEFINED__ +typedef struct IProcessInitControl IProcessInitControl; +#define __IFastRundown_FWD_DEFINED__ +typedef struct IFastRundown IFastRundown; +#define __IMarshalingStream_FWD_DEFINED__ +typedef struct IMarshalingStream IMarshalingStream; +#undef interface +#define interface struct +#undef interface +#define interface struct +typedef struct _COSERVERINFO { + DWORD dwReserved1; + LPWSTR pwszName; + COAUTHINFO *pAuthInfo; + DWORD dwReserved2; +} COSERVERINFO; +#define __IMarshal_INTERFACE_DEFINED__ +typedef IMarshal *LPMARSHAL; +extern const GUID IID_IMarshal; +typedef struct IMarshalVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMarshal *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMarshal *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMarshal *This); + HRESULT (__attribute__((__stdcall__)) *GetUnmarshalClass)( + IMarshal *This, + const IID *const riid, + void *pv, + DWORD dwDestContext, + void *pvDestContext, + DWORD mshlflags, + CLSID *pCid); + HRESULT (__attribute__((__stdcall__)) *GetMarshalSizeMax)( + IMarshal *This, + const IID *const riid, + void *pv, + DWORD dwDestContext, + void *pvDestContext, + DWORD mshlflags, + DWORD *pSize); + HRESULT (__attribute__((__stdcall__)) *MarshalInterface)( + IMarshal *This, + IStream *pStm, + const IID *const riid, + void *pv, + DWORD dwDestContext, + void *pvDestContext, + DWORD mshlflags); + HRESULT (__attribute__((__stdcall__)) *UnmarshalInterface)( + IMarshal *This, + IStream *pStm, + const IID *const riid, + void **ppv); + HRESULT (__attribute__((__stdcall__)) *ReleaseMarshalData)( + IMarshal *This, + IStream *pStm); + HRESULT (__attribute__((__stdcall__)) *DisconnectObject)( + IMarshal *This, + DWORD dwReserved); +} IMarshalVtbl; +struct IMarshal { + IMarshalVtbl* lpVtbl; +}; +#define __INoMarshal_INTERFACE_DEFINED__ +extern const GUID IID_INoMarshal; +typedef struct INoMarshalVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + INoMarshal *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + INoMarshal *This); + ULONG (__attribute__((__stdcall__)) *Release)( + INoMarshal *This); +} INoMarshalVtbl; +struct INoMarshal { + INoMarshalVtbl* lpVtbl; +}; +#define __IAgileObject_INTERFACE_DEFINED__ +extern const GUID IID_IAgileObject; +typedef struct IAgileObjectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAgileObject *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAgileObject *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAgileObject *This); +} IAgileObjectVtbl; +struct IAgileObject { + IAgileObjectVtbl* lpVtbl; +}; +#define __IAgileReference_INTERFACE_DEFINED__ +extern const GUID IID_IAgileReference; +typedef struct IAgileReferenceVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAgileReference *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAgileReference *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAgileReference *This); + HRESULT (__attribute__((__stdcall__)) *Resolve)( + IAgileReference *This, + const IID *const riid, + void **ppv); +} IAgileReferenceVtbl; +struct IAgileReference { + IAgileReferenceVtbl* lpVtbl; +}; +#define __IMarshal2_INTERFACE_DEFINED__ +typedef IMarshal2 *LPMARSHAL2; +extern const GUID IID_IMarshal2; +typedef struct IMarshal2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMarshal2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMarshal2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMarshal2 *This); + HRESULT (__attribute__((__stdcall__)) *GetUnmarshalClass)( + IMarshal2 *This, + const IID *const riid, + void *pv, + DWORD dwDestContext, + void *pvDestContext, + DWORD mshlflags, + CLSID *pCid); + HRESULT (__attribute__((__stdcall__)) *GetMarshalSizeMax)( + IMarshal2 *This, + const IID *const riid, + void *pv, + DWORD dwDestContext, + void *pvDestContext, + DWORD mshlflags, + DWORD *pSize); + HRESULT (__attribute__((__stdcall__)) *MarshalInterface)( + IMarshal2 *This, + IStream *pStm, + const IID *const riid, + void *pv, + DWORD dwDestContext, + void *pvDestContext, + DWORD mshlflags); + HRESULT (__attribute__((__stdcall__)) *UnmarshalInterface)( + IMarshal2 *This, + IStream *pStm, + const IID *const riid, + void **ppv); + HRESULT (__attribute__((__stdcall__)) *ReleaseMarshalData)( + IMarshal2 *This, + IStream *pStm); + HRESULT (__attribute__((__stdcall__)) *DisconnectObject)( + IMarshal2 *This, + DWORD dwReserved); +} IMarshal2Vtbl; +struct IMarshal2 { + IMarshal2Vtbl* lpVtbl; +}; +#define __IMalloc_INTERFACE_DEFINED__ +typedef IMalloc *LPMALLOC; +extern const GUID IID_IMalloc; +typedef struct IMallocVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMalloc *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMalloc *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMalloc *This); + void * (__attribute__((__stdcall__)) *Alloc)( + IMalloc *This, + SIZE_T cb); + void * (__attribute__((__stdcall__)) *Realloc)( + IMalloc *This, + void *pv, + SIZE_T cb); + void (__attribute__((__stdcall__)) *Free)( + IMalloc *This, + void *pv); + SIZE_T (__attribute__((__stdcall__)) *GetSize)( + IMalloc *This, + void *pv); + int (__attribute__((__stdcall__)) *DidAlloc)( + IMalloc *This, + void *pv); + void (__attribute__((__stdcall__)) *HeapMinimize)( + IMalloc *This); +} IMallocVtbl; +struct IMalloc { + IMallocVtbl* lpVtbl; +}; +#define __IStdMarshalInfo_INTERFACE_DEFINED__ +typedef IStdMarshalInfo *LPSTDMARSHALINFO; +extern const GUID IID_IStdMarshalInfo; +typedef struct IStdMarshalInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IStdMarshalInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IStdMarshalInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IStdMarshalInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetClassForHandler)( + IStdMarshalInfo *This, + DWORD dwDestContext, + void *pvDestContext, + CLSID *pClsid); +} IStdMarshalInfoVtbl; +struct IStdMarshalInfo { + IStdMarshalInfoVtbl* lpVtbl; +}; +#define __IExternalConnection_INTERFACE_DEFINED__ +typedef IExternalConnection *LPEXTERNALCONNECTION; +typedef enum tagEXTCONN { + EXTCONN_STRONG = 0x1, + EXTCONN_WEAK = 0x2, + EXTCONN_CALLABLE = 0x4 +} EXTCONN; +extern const GUID IID_IExternalConnection; +typedef struct IExternalConnectionVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IExternalConnection *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IExternalConnection *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IExternalConnection *This); + DWORD (__attribute__((__stdcall__)) *AddConnection)( + IExternalConnection *This, + DWORD extconn, + DWORD reserved); + DWORD (__attribute__((__stdcall__)) *ReleaseConnection)( + IExternalConnection *This, + DWORD extconn, + DWORD reserved, + WINBOOL fLastReleaseCloses); +} IExternalConnectionVtbl; +struct IExternalConnection { + IExternalConnectionVtbl* lpVtbl; +}; +typedef IMultiQI *LPMULTIQI; +typedef struct tagMULTI_QI { + const IID *pIID; + IUnknown *pItf; + HRESULT hr; +} MULTI_QI; +#define __IMultiQI_INTERFACE_DEFINED__ +extern const GUID IID_IMultiQI; +typedef struct IMultiQIVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMultiQI *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMultiQI *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMultiQI *This); + HRESULT (__attribute__((__stdcall__)) *QueryMultipleInterfaces)( + IMultiQI *This, + ULONG cMQIs, + MULTI_QI *pMQIs); +} IMultiQIVtbl; +struct IMultiQI { + IMultiQIVtbl* lpVtbl; +}; +#define __AsyncIMultiQI_INTERFACE_DEFINED__ +extern const GUID IID_AsyncIMultiQI; +typedef struct AsyncIMultiQIVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + AsyncIMultiQI *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + AsyncIMultiQI *This); + ULONG (__attribute__((__stdcall__)) *Release)( + AsyncIMultiQI *This); + HRESULT (__attribute__((__stdcall__)) *Begin_QueryMultipleInterfaces)( + AsyncIMultiQI *This, + ULONG cMQIs, + MULTI_QI *pMQIs); + HRESULT (__attribute__((__stdcall__)) *Finish_QueryMultipleInterfaces)( + AsyncIMultiQI *This, + MULTI_QI *pMQIs); +} AsyncIMultiQIVtbl; +struct AsyncIMultiQI { + AsyncIMultiQIVtbl* lpVtbl; +}; +#define __IInternalUnknown_INTERFACE_DEFINED__ +extern const GUID IID_IInternalUnknown; +typedef struct IInternalUnknownVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternalUnknown *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternalUnknown *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternalUnknown *This); + HRESULT (__attribute__((__stdcall__)) *QueryInternalInterface)( + IInternalUnknown *This, + const IID *const riid, + void **ppv); +} IInternalUnknownVtbl; +struct IInternalUnknown { + IInternalUnknownVtbl* lpVtbl; +}; +#define __IEnumUnknown_INTERFACE_DEFINED__ +typedef IEnumUnknown *LPENUMUNKNOWN; +extern const GUID IID_IEnumUnknown; +typedef struct IEnumUnknownVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumUnknown *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumUnknown *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumUnknown *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumUnknown *This, + ULONG celt, + IUnknown **rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumUnknown *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumUnknown *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumUnknown *This, + IEnumUnknown **ppenum); +} IEnumUnknownVtbl; +struct IEnumUnknown { + IEnumUnknownVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumUnknown_RemoteNext_Proxy( + IEnumUnknown* This, + ULONG celt, + IUnknown **rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumUnknown_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumUnknown_Next_Proxy( + IEnumUnknown* This, + ULONG celt, + IUnknown **rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumUnknown_Next_Stub( + IEnumUnknown* This, + ULONG celt, + IUnknown **rgelt, + ULONG *pceltFetched); +#define __IEnumString_INTERFACE_DEFINED__ +typedef IEnumString *LPENUMSTRING; +extern const GUID IID_IEnumString; +typedef struct IEnumStringVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumString *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumString *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumString *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumString *This, + ULONG celt, + LPOLESTR *rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumString *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumString *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumString *This, + IEnumString **ppenum); +} IEnumStringVtbl; +struct IEnumString { + IEnumStringVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumString_RemoteNext_Proxy( + IEnumString* This, + ULONG celt, + LPOLESTR *rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumString_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumString_Next_Proxy( + IEnumString* This, + ULONG celt, + LPOLESTR *rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumString_Next_Stub( + IEnumString* This, + ULONG celt, + LPOLESTR *rgelt, + ULONG *pceltFetched); +#define __ISequentialStream_INTERFACE_DEFINED__ +extern const GUID IID_ISequentialStream; +typedef struct ISequentialStreamVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISequentialStream *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISequentialStream *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISequentialStream *This); + HRESULT (__attribute__((__stdcall__)) *Read)( + ISequentialStream *This, + void *pv, + ULONG cb, + ULONG *pcbRead); + HRESULT (__attribute__((__stdcall__)) *Write)( + ISequentialStream *This, + const void *pv, + ULONG cb, + ULONG *pcbWritten); +} ISequentialStreamVtbl; +struct ISequentialStream { + ISequentialStreamVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) ISequentialStream_RemoteRead_Proxy( + ISequentialStream* This, + byte *pv, + ULONG cb, + ULONG *pcbRead); +void __attribute__((__stdcall__)) ISequentialStream_RemoteRead_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ISequentialStream_RemoteWrite_Proxy( + ISequentialStream* This, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +void __attribute__((__stdcall__)) ISequentialStream_RemoteWrite_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ISequentialStream_Read_Proxy( + ISequentialStream* This, + void *pv, + ULONG cb, + ULONG *pcbRead); +HRESULT __attribute__((__stdcall__)) ISequentialStream_Read_Stub( + ISequentialStream* This, + byte *pv, + ULONG cb, + ULONG *pcbRead); +HRESULT __attribute__((__stdcall__)) ISequentialStream_Write_Proxy( + ISequentialStream* This, + const void *pv, + ULONG cb, + ULONG *pcbWritten); +HRESULT __attribute__((__stdcall__)) ISequentialStream_Write_Stub( + ISequentialStream* This, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +#define __IStream_INTERFACE_DEFINED__ +typedef IStream *LPSTREAM; +typedef struct tagSTATSTG { + LPOLESTR pwcsName; + DWORD type; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD grfMode; + DWORD grfLocksSupported; + CLSID clsid; + DWORD grfStateBits; + DWORD reserved; +} STATSTG; +typedef enum tagSTGTY { + STGTY_STORAGE = 1, + STGTY_STREAM = 2, + STGTY_LOCKBYTES = 3, + STGTY_PROPERTY = 4 +} STGTY; +typedef enum tagSTREAM_SEEK { + STREAM_SEEK_SET = 0, + STREAM_SEEK_CUR = 1, + STREAM_SEEK_END = 2 +} STREAM_SEEK; +typedef enum tagLOCKTYPE { + LOCK_WRITE = 1, + LOCK_EXCLUSIVE = 2, + LOCK_ONLYONCE = 4 +} LOCKTYPE; +extern const GUID IID_IStream; +typedef struct IStreamVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IStream *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IStream *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IStream *This); + HRESULT (__attribute__((__stdcall__)) *Read)( + IStream *This, + void *pv, + ULONG cb, + ULONG *pcbRead); + HRESULT (__attribute__((__stdcall__)) *Write)( + IStream *This, + const void *pv, + ULONG cb, + ULONG *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *Seek)( + IStream *This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition); + HRESULT (__attribute__((__stdcall__)) *SetSize)( + IStream *This, + ULARGE_INTEGER libNewSize); + HRESULT (__attribute__((__stdcall__)) *CopyTo)( + IStream *This, + IStream *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER *pcbRead, + ULARGE_INTEGER *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *Commit)( + IStream *This, + DWORD grfCommitFlags); + HRESULT (__attribute__((__stdcall__)) *Revert)( + IStream *This); + HRESULT (__attribute__((__stdcall__)) *LockRegion)( + IStream *This, + ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType); + HRESULT (__attribute__((__stdcall__)) *UnlockRegion)( + IStream *This, + ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType); + HRESULT (__attribute__((__stdcall__)) *Stat)( + IStream *This, + STATSTG *pstatstg, + DWORD grfStatFlag); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IStream *This, + IStream **ppstm); +} IStreamVtbl; +struct IStream { + IStreamVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IStream_RemoteSeek_Proxy( + IStream* This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition); +void __attribute__((__stdcall__)) IStream_RemoteSeek_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IStream_RemoteCopyTo_Proxy( + IStream* This, + IStream *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER *pcbRead, + ULARGE_INTEGER *pcbWritten); +void __attribute__((__stdcall__)) IStream_RemoteCopyTo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IStream_Seek_Proxy( + IStream* This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition); +HRESULT __attribute__((__stdcall__)) IStream_Seek_Stub( + IStream* This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition); +HRESULT __attribute__((__stdcall__)) IStream_CopyTo_Proxy( + IStream* This, + IStream *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER *pcbRead, + ULARGE_INTEGER *pcbWritten); +HRESULT __attribute__((__stdcall__)) IStream_CopyTo_Stub( + IStream* This, + IStream *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER *pcbRead, + ULARGE_INTEGER *pcbWritten); +#define __IRpcChannelBuffer_INTERFACE_DEFINED__ +typedef ULONG RPCOLEDATAREP; +typedef struct tagRPCOLEMESSAGE { + void *reserved1; + RPCOLEDATAREP dataRepresentation; + void *Buffer; + ULONG cbBuffer; + ULONG iMethod; + void * reserved2[5]; + ULONG rpcFlags; +} RPCOLEMESSAGE; +typedef RPCOLEMESSAGE *PRPCOLEMESSAGE; +extern const GUID IID_IRpcChannelBuffer; +typedef struct IRpcChannelBufferVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcChannelBuffer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcChannelBuffer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcChannelBuffer *This); + HRESULT (__attribute__((__stdcall__)) *GetBuffer)( + IRpcChannelBuffer *This, + RPCOLEMESSAGE *pMessage, + const IID *const riid); + HRESULT (__attribute__((__stdcall__)) *SendReceive)( + IRpcChannelBuffer *This, + RPCOLEMESSAGE *pMessage, + ULONG *pStatus); + HRESULT (__attribute__((__stdcall__)) *FreeBuffer)( + IRpcChannelBuffer *This, + RPCOLEMESSAGE *pMessage); + HRESULT (__attribute__((__stdcall__)) *GetDestCtx)( + IRpcChannelBuffer *This, + DWORD *pdwDestContext, + void **ppvDestContext); + HRESULT (__attribute__((__stdcall__)) *IsConnected)( + IRpcChannelBuffer *This); +} IRpcChannelBufferVtbl; +struct IRpcChannelBuffer { + IRpcChannelBufferVtbl* lpVtbl; +}; +#define __IRpcChannelBuffer2_INTERFACE_DEFINED__ +extern const GUID IID_IRpcChannelBuffer2; +typedef struct IRpcChannelBuffer2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcChannelBuffer2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcChannelBuffer2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcChannelBuffer2 *This); + HRESULT (__attribute__((__stdcall__)) *GetBuffer)( + IRpcChannelBuffer2 *This, + RPCOLEMESSAGE *pMessage, + const IID *const riid); + HRESULT (__attribute__((__stdcall__)) *SendReceive)( + IRpcChannelBuffer2 *This, + RPCOLEMESSAGE *pMessage, + ULONG *pStatus); + HRESULT (__attribute__((__stdcall__)) *FreeBuffer)( + IRpcChannelBuffer2 *This, + RPCOLEMESSAGE *pMessage); + HRESULT (__attribute__((__stdcall__)) *GetDestCtx)( + IRpcChannelBuffer2 *This, + DWORD *pdwDestContext, + void **ppvDestContext); + HRESULT (__attribute__((__stdcall__)) *IsConnected)( + IRpcChannelBuffer2 *This); + HRESULT (__attribute__((__stdcall__)) *GetProtocolVersion)( + IRpcChannelBuffer2 *This, + DWORD *pdwVersion); +} IRpcChannelBuffer2Vtbl; +struct IRpcChannelBuffer2 { + IRpcChannelBuffer2Vtbl* lpVtbl; +}; +#define __IAsyncRpcChannelBuffer_INTERFACE_DEFINED__ +extern const GUID IID_IAsyncRpcChannelBuffer; +typedef struct IAsyncRpcChannelBufferVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAsyncRpcChannelBuffer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAsyncRpcChannelBuffer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAsyncRpcChannelBuffer *This); + HRESULT (__attribute__((__stdcall__)) *GetBuffer)( + IAsyncRpcChannelBuffer *This, + RPCOLEMESSAGE *pMessage, + const IID *const riid); + HRESULT (__attribute__((__stdcall__)) *SendReceive)( + IAsyncRpcChannelBuffer *This, + RPCOLEMESSAGE *pMessage, + ULONG *pStatus); + HRESULT (__attribute__((__stdcall__)) *FreeBuffer)( + IAsyncRpcChannelBuffer *This, + RPCOLEMESSAGE *pMessage); + HRESULT (__attribute__((__stdcall__)) *GetDestCtx)( + IAsyncRpcChannelBuffer *This, + DWORD *pdwDestContext, + void **ppvDestContext); + HRESULT (__attribute__((__stdcall__)) *IsConnected)( + IAsyncRpcChannelBuffer *This); + HRESULT (__attribute__((__stdcall__)) *GetProtocolVersion)( + IAsyncRpcChannelBuffer *This, + DWORD *pdwVersion); + HRESULT (__attribute__((__stdcall__)) *Send)( + IAsyncRpcChannelBuffer *This, + RPCOLEMESSAGE *pMsg, + ISynchronize *pSync, + ULONG *pulStatus); + HRESULT (__attribute__((__stdcall__)) *Receive)( + IAsyncRpcChannelBuffer *This, + RPCOLEMESSAGE *pMsg, + ULONG *pulStatus); + HRESULT (__attribute__((__stdcall__)) *GetDestCtxEx)( + IAsyncRpcChannelBuffer *This, + RPCOLEMESSAGE *pMsg, + DWORD *pdwDestContext, + void **ppvDestContext); +} IAsyncRpcChannelBufferVtbl; +struct IAsyncRpcChannelBuffer { + IAsyncRpcChannelBufferVtbl* lpVtbl; +}; +#define __IRpcChannelBuffer3_INTERFACE_DEFINED__ +extern const GUID IID_IRpcChannelBuffer3; +typedef struct IRpcChannelBuffer3Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcChannelBuffer3 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcChannelBuffer3 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcChannelBuffer3 *This); + HRESULT (__attribute__((__stdcall__)) *GetBuffer)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMessage, + const IID *const riid); + HRESULT (__attribute__((__stdcall__)) *SendReceive)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMessage, + ULONG *pStatus); + HRESULT (__attribute__((__stdcall__)) *FreeBuffer)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMessage); + HRESULT (__attribute__((__stdcall__)) *GetDestCtx)( + IRpcChannelBuffer3 *This, + DWORD *pdwDestContext, + void **ppvDestContext); + HRESULT (__attribute__((__stdcall__)) *IsConnected)( + IRpcChannelBuffer3 *This); + HRESULT (__attribute__((__stdcall__)) *GetProtocolVersion)( + IRpcChannelBuffer3 *This, + DWORD *pdwVersion); + HRESULT (__attribute__((__stdcall__)) *Send)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMsg, + ULONG *pulStatus); + HRESULT (__attribute__((__stdcall__)) *Receive)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMsg, + ULONG ulSize, + ULONG *pulStatus); + HRESULT (__attribute__((__stdcall__)) *Cancel)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMsg); + HRESULT (__attribute__((__stdcall__)) *GetCallContext)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMsg, + const IID *const riid, + void **pInterface); + HRESULT (__attribute__((__stdcall__)) *GetDestCtxEx)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMsg, + DWORD *pdwDestContext, + void **ppvDestContext); + HRESULT (__attribute__((__stdcall__)) *GetState)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMsg, + DWORD *pState); + HRESULT (__attribute__((__stdcall__)) *RegisterAsync)( + IRpcChannelBuffer3 *This, + RPCOLEMESSAGE *pMsg, + IAsyncManager *pAsyncMgr); +} IRpcChannelBuffer3Vtbl; +struct IRpcChannelBuffer3 { + IRpcChannelBuffer3Vtbl* lpVtbl; +}; +#define __IRpcSyntaxNegotiate_INTERFACE_DEFINED__ +extern const GUID IID_IRpcSyntaxNegotiate; +typedef struct IRpcSyntaxNegotiateVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcSyntaxNegotiate *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcSyntaxNegotiate *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcSyntaxNegotiate *This); + HRESULT (__attribute__((__stdcall__)) *NegotiateSyntax)( + IRpcSyntaxNegotiate *This, + RPCOLEMESSAGE *pMsg); +} IRpcSyntaxNegotiateVtbl; +struct IRpcSyntaxNegotiate { + IRpcSyntaxNegotiateVtbl* lpVtbl; +}; +#define __IRpcProxyBuffer_INTERFACE_DEFINED__ +extern const GUID IID_IRpcProxyBuffer; +typedef struct IRpcProxyBufferVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcProxyBuffer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcProxyBuffer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcProxyBuffer *This); + HRESULT (__attribute__((__stdcall__)) *Connect)( + IRpcProxyBuffer *This, + IRpcChannelBuffer *pRpcChannelBuffer); + void (__attribute__((__stdcall__)) *Disconnect)( + IRpcProxyBuffer *This); +} IRpcProxyBufferVtbl; +struct IRpcProxyBuffer { + IRpcProxyBufferVtbl* lpVtbl; +}; +#define __IRpcStubBuffer_INTERFACE_DEFINED__ +extern const GUID IID_IRpcStubBuffer; +typedef struct IRpcStubBufferVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcStubBuffer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcStubBuffer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcStubBuffer *This); + HRESULT (__attribute__((__stdcall__)) *Connect)( + IRpcStubBuffer *This, + IUnknown *pUnkServer); + void (__attribute__((__stdcall__)) *Disconnect)( + IRpcStubBuffer *This); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IRpcStubBuffer *This, + RPCOLEMESSAGE *_prpcmsg, + IRpcChannelBuffer *_pRpcChannelBuffer); + IRpcStubBuffer * (__attribute__((__stdcall__)) *IsIIDSupported)( + IRpcStubBuffer *This, + const IID *const riid); + ULONG (__attribute__((__stdcall__)) *CountRefs)( + IRpcStubBuffer *This); + HRESULT (__attribute__((__stdcall__)) *DebugServerQueryInterface)( + IRpcStubBuffer *This, + void **ppv); + void (__attribute__((__stdcall__)) *DebugServerRelease)( + IRpcStubBuffer *This, + void *pv); +} IRpcStubBufferVtbl; +struct IRpcStubBuffer { + IRpcStubBufferVtbl* lpVtbl; +}; +#define __IPSFactoryBuffer_INTERFACE_DEFINED__ +extern const GUID IID_IPSFactoryBuffer; +typedef struct IPSFactoryBufferVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPSFactoryBuffer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPSFactoryBuffer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPSFactoryBuffer *This); + HRESULT (__attribute__((__stdcall__)) *CreateProxy)( + IPSFactoryBuffer *This, + IUnknown *pUnkOuter, + const IID *const riid, + IRpcProxyBuffer **ppProxy, + void **ppv); + HRESULT (__attribute__((__stdcall__)) *CreateStub)( + IPSFactoryBuffer *This, + const IID *const riid, + IUnknown *pUnkServer, + IRpcStubBuffer **ppStub); +} IPSFactoryBufferVtbl; +struct IPSFactoryBuffer { + IPSFactoryBufferVtbl* lpVtbl; +}; +typedef struct SChannelHookCallInfo { + IID iid; + DWORD cbSize; + GUID uCausality; + DWORD dwServerPid; + DWORD iMethod; + void *pObject; +} SChannelHookCallInfo; +#define __IChannelHook_INTERFACE_DEFINED__ +extern const GUID IID_IChannelHook; +typedef struct IChannelHookVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IChannelHook *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IChannelHook *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IChannelHook *This); + void (__attribute__((__stdcall__)) *ClientGetSize)( + IChannelHook *This, + const GUID *const uExtent, + const IID *const riid, + ULONG *pDataSize); + void (__attribute__((__stdcall__)) *ClientFillBuffer)( + IChannelHook *This, + const GUID *const uExtent, + const IID *const riid, + ULONG *pDataSize, + void *pDataBuffer); + void (__attribute__((__stdcall__)) *ClientNotify)( + IChannelHook *This, + const GUID *const uExtent, + const IID *const riid, + ULONG cbDataSize, + void *pDataBuffer, + DWORD lDataRep, + HRESULT hrFault); + void (__attribute__((__stdcall__)) *ServerNotify)( + IChannelHook *This, + const GUID *const uExtent, + const IID *const riid, + ULONG cbDataSize, + void *pDataBuffer, + DWORD lDataRep); + void (__attribute__((__stdcall__)) *ServerGetSize)( + IChannelHook *This, + const GUID *const uExtent, + const IID *const riid, + HRESULT hrFault, + ULONG *pDataSize); + void (__attribute__((__stdcall__)) *ServerFillBuffer)( + IChannelHook *This, + const GUID *const uExtent, + const IID *const riid, + ULONG *pDataSize, + void *pDataBuffer, + HRESULT hrFault); +} IChannelHookVtbl; +struct IChannelHook { + IChannelHookVtbl* lpVtbl; +}; +#define __IClientSecurity_INTERFACE_DEFINED__ +typedef struct tagSOLE_AUTHENTICATION_SERVICE { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + OLECHAR *pPrincipalName; + HRESULT hr; +} SOLE_AUTHENTICATION_SERVICE; +typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE; +typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { + EOAC_NONE = 0x0, + EOAC_MUTUAL_AUTH = 0x1, + EOAC_STATIC_CLOAKING = 0x20, + EOAC_DYNAMIC_CLOAKING = 0x40, + EOAC_ANY_AUTHORITY = 0x80, + EOAC_MAKE_FULLSIC = 0x100, + EOAC_DEFAULT = 0x800, + EOAC_SECURE_REFS = 0x2, + EOAC_ACCESS_CONTROL = 0x4, + EOAC_APPID = 0x8, + EOAC_DYNAMIC = 0x10, + EOAC_REQUIRE_FULLSIC = 0x200, + EOAC_AUTO_IMPERSONATE = 0x400, + EOAC_NO_CUSTOM_MARSHAL = 0x2000, + EOAC_DISABLE_AAA = 0x1000 +} EOLE_AUTHENTICATION_CAPABILITIES; +#define COLE_DEFAULT_PRINCIPAL ((OLECHAR *)(INT_PTR)-1) +#define COLE_DEFAULT_AUTHINFO ((void *)(INT_PTR)-1) +typedef struct tagSOLE_AUTHENTICATION_INFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + void *pAuthInfo; +} SOLE_AUTHENTICATION_INFO; +typedef struct tagSOLE_AUTHENTICATION_INFO *PSOLE_AUTHENTICATION_INFO; +typedef struct tagSOLE_AUTHENTICATION_LIST { + DWORD cAuthInfo; + SOLE_AUTHENTICATION_INFO *aAuthInfo; +} SOLE_AUTHENTICATION_LIST; +typedef struct tagSOLE_AUTHENTICATION_LIST *PSOLE_AUTHENTICATION_LIST; +extern const GUID IID_IClientSecurity; +typedef struct IClientSecurityVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IClientSecurity *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IClientSecurity *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IClientSecurity *This); + HRESULT (__attribute__((__stdcall__)) *QueryBlanket)( + IClientSecurity *This, + IUnknown *pProxy, + DWORD *pAuthnSvc, + DWORD *pAuthzSvc, + OLECHAR **pServerPrincName, + DWORD *pAuthnLevel, + DWORD *pImpLevel, + void **pAuthInfo, + DWORD *pCapabilites); + HRESULT (__attribute__((__stdcall__)) *SetBlanket)( + IClientSecurity *This, + IUnknown *pProxy, + DWORD dwAuthnSvc, + DWORD dwAuthzSvc, + OLECHAR *pServerPrincName, + DWORD dwAuthnLevel, + DWORD dwImpLevel, + void *pAuthInfo, + DWORD dwCapabilities); + HRESULT (__attribute__((__stdcall__)) *CopyProxy)( + IClientSecurity *This, + IUnknown *pProxy, + IUnknown **ppCopy); +} IClientSecurityVtbl; +struct IClientSecurity { + IClientSecurityVtbl* lpVtbl; +}; +#define __IServerSecurity_INTERFACE_DEFINED__ +extern const GUID IID_IServerSecurity; +typedef struct IServerSecurityVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IServerSecurity *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IServerSecurity *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IServerSecurity *This); + HRESULT (__attribute__((__stdcall__)) *QueryBlanket)( + IServerSecurity *This, + DWORD *pAuthnSvc, + DWORD *pAuthzSvc, + OLECHAR **pServerPrincName, + DWORD *pAuthnLevel, + DWORD *pImpLevel, + void **pPrivs, + DWORD *pCapabilities); + HRESULT (__attribute__((__stdcall__)) *ImpersonateClient)( + IServerSecurity *This); + HRESULT (__attribute__((__stdcall__)) *RevertToSelf)( + IServerSecurity *This); + WINBOOL (__attribute__((__stdcall__)) *IsImpersonating)( + IServerSecurity *This); +} IServerSecurityVtbl; +struct IServerSecurity { + IServerSecurityVtbl* lpVtbl; +}; +typedef enum tagRPCOPT_PROPERTIES { + COMBND_RPCTIMEOUT = 0x1, + COMBND_SERVER_LOCALITY = 0x2, + COMBND_RESERVED1 = 0x4 +} RPCOPT_PROPERTIES; +typedef enum tagRPCOPT_SERVER_LOCALITY_VALUES { + SERVER_LOCALITY_PROCESS_LOCAL = 0, + SERVER_LOCALITY_MACHINE_LOCAL = 1, + SERVER_LOCALITY_REMOTE = 2 +} RPCOPT_SERVER_LOCALITY_VALUES; +#define __IRpcOptions_INTERFACE_DEFINED__ +extern const GUID IID_IRpcOptions; +typedef struct IRpcOptionsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcOptions *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcOptions *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcOptions *This); + HRESULT (__attribute__((__stdcall__)) *Set)( + IRpcOptions *This, + IUnknown *pPrx, + RPCOPT_PROPERTIES dwProperty, + ULONG_PTR dwValue); + HRESULT (__attribute__((__stdcall__)) *Query)( + IRpcOptions *This, + IUnknown *pPrx, + RPCOPT_PROPERTIES dwProperty, + ULONG_PTR *pdwValue); +} IRpcOptionsVtbl; +struct IRpcOptions { + IRpcOptionsVtbl* lpVtbl; +}; +typedef enum tagGLOBALOPT_PROPERTIES { + COMGLB_EXCEPTION_HANDLING = 1, + COMGLB_APPID = 2, + COMGLB_RPC_THREADPOOL_SETTING = 3, + COMGLB_RO_SETTINGS = 4, + COMGLB_UNMARSHALING_POLICY = 5 +} GLOBALOPT_PROPERTIES; +typedef enum tagGLOBALOPT_EH_VALUES { + COMGLB_EXCEPTION_HANDLE = 0, + COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1, + COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL, + COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2 +} GLOBALOPT_EH_VALUES; +typedef enum tagGLOBALOPT_RPCTP_VALUES { + COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0, + COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1 +} GLOBALOPT_RPCTP_VALUES; +typedef enum tagGLOBALOPT_RO_FLAGS { + COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES = 0x1, + COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES = 0x2, + COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES = 0x4, + COMGLB_FAST_RUNDOWN = 0x8, + COMGLB_RESERVED1 = 0x10, + COMGLB_RESERVED2 = 0x20, + COMGLB_RESERVED3 = 0x40, + COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES = 0x80 +} GLOBALOPT_RO_FLAGS; +typedef enum tagGLOBALOPT_UNMARSHALING_POLICY_VALUES { + COMGLB_UNMARSHALING_POLICY_NORMAL = 0, + COMGLB_UNMARSHALING_POLICY_STRONG = 1, + COMGLB_UNMARSHALING_POLICY_HYBRID = 2 +} GLOBALOPT_UNMARSHALING_POLICY_VALUES; +#define __IGlobalOptions_INTERFACE_DEFINED__ +extern const GUID IID_IGlobalOptions; +typedef struct IGlobalOptionsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IGlobalOptions *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IGlobalOptions *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IGlobalOptions *This); + HRESULT (__attribute__((__stdcall__)) *Set)( + IGlobalOptions *This, + GLOBALOPT_PROPERTIES dwProperty, + ULONG_PTR dwValue); + HRESULT (__attribute__((__stdcall__)) *Query)( + IGlobalOptions *This, + GLOBALOPT_PROPERTIES dwProperty, + ULONG_PTR *pdwValue); +} IGlobalOptionsVtbl; +struct IGlobalOptions { + IGlobalOptionsVtbl* lpVtbl; +}; +#define __ISurrogate_INTERFACE_DEFINED__ +typedef ISurrogate *LPSURROGATE; +extern const GUID IID_ISurrogate; +typedef struct ISurrogateVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISurrogate *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISurrogate *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISurrogate *This); + HRESULT (__attribute__((__stdcall__)) *LoadDllServer)( + ISurrogate *This, + const IID *const Clsid); + HRESULT (__attribute__((__stdcall__)) *FreeSurrogate)( + ISurrogate *This); +} ISurrogateVtbl; +struct ISurrogate { + ISurrogateVtbl* lpVtbl; +}; +#define __IGlobalInterfaceTable_INTERFACE_DEFINED__ +typedef IGlobalInterfaceTable *LPGLOBALINTERFACETABLE; +extern const GUID IID_IGlobalInterfaceTable; +typedef struct IGlobalInterfaceTableVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IGlobalInterfaceTable *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IGlobalInterfaceTable *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IGlobalInterfaceTable *This); + HRESULT (__attribute__((__stdcall__)) *RegisterInterfaceInGlobal)( + IGlobalInterfaceTable *This, + IUnknown *pUnk, + const IID *const riid, + DWORD *pdwCookie); + HRESULT (__attribute__((__stdcall__)) *RevokeInterfaceFromGlobal)( + IGlobalInterfaceTable *This, + DWORD dwCookie); + HRESULT (__attribute__((__stdcall__)) *GetInterfaceFromGlobal)( + IGlobalInterfaceTable *This, + DWORD dwCookie, + const IID *const riid, + void **ppv); +} IGlobalInterfaceTableVtbl; +struct IGlobalInterfaceTable { + IGlobalInterfaceTableVtbl* lpVtbl; +}; +#define __ISynchronize_INTERFACE_DEFINED__ +extern const GUID IID_ISynchronize; +typedef struct ISynchronizeVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISynchronize *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISynchronize *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISynchronize *This); + HRESULT (__attribute__((__stdcall__)) *Wait)( + ISynchronize *This, + DWORD dwFlags, + DWORD dwMilliseconds); + HRESULT (__attribute__((__stdcall__)) *Signal)( + ISynchronize *This); + HRESULT (__attribute__((__stdcall__)) *Reset)( + ISynchronize *This); +} ISynchronizeVtbl; +struct ISynchronize { + ISynchronizeVtbl* lpVtbl; +}; +#define __ISynchronizeHandle_INTERFACE_DEFINED__ +extern const GUID IID_ISynchronizeHandle; +typedef struct ISynchronizeHandleVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISynchronizeHandle *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISynchronizeHandle *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISynchronizeHandle *This); + HRESULT (__attribute__((__stdcall__)) *GetHandle)( + ISynchronizeHandle *This, + HANDLE *ph); +} ISynchronizeHandleVtbl; +struct ISynchronizeHandle { + ISynchronizeHandleVtbl* lpVtbl; +}; +#define __ISynchronizeEvent_INTERFACE_DEFINED__ +extern const GUID IID_ISynchronizeEvent; +typedef struct ISynchronizeEventVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISynchronizeEvent *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISynchronizeEvent *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISynchronizeEvent *This); + HRESULT (__attribute__((__stdcall__)) *GetHandle)( + ISynchronizeEvent *This, + HANDLE *ph); + HRESULT (__attribute__((__stdcall__)) *SetEventHandle)( + ISynchronizeEvent *This, + HANDLE *ph); +} ISynchronizeEventVtbl; +struct ISynchronizeEvent { + ISynchronizeEventVtbl* lpVtbl; +}; +#define __ISynchronizeContainer_INTERFACE_DEFINED__ +extern const GUID IID_ISynchronizeContainer; +typedef struct ISynchronizeContainerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISynchronizeContainer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISynchronizeContainer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISynchronizeContainer *This); + HRESULT (__attribute__((__stdcall__)) *AddSynchronize)( + ISynchronizeContainer *This, + ISynchronize *pSync); + HRESULT (__attribute__((__stdcall__)) *WaitMultiple)( + ISynchronizeContainer *This, + DWORD dwFlags, + DWORD dwTimeOut, + ISynchronize **ppSync); +} ISynchronizeContainerVtbl; +struct ISynchronizeContainer { + ISynchronizeContainerVtbl* lpVtbl; +}; +#define __ISynchronizeMutex_INTERFACE_DEFINED__ +extern const GUID IID_ISynchronizeMutex; +typedef struct ISynchronizeMutexVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISynchronizeMutex *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISynchronizeMutex *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISynchronizeMutex *This); + HRESULT (__attribute__((__stdcall__)) *Wait)( + ISynchronizeMutex *This, + DWORD dwFlags, + DWORD dwMilliseconds); + HRESULT (__attribute__((__stdcall__)) *Signal)( + ISynchronizeMutex *This); + HRESULT (__attribute__((__stdcall__)) *Reset)( + ISynchronizeMutex *This); + HRESULT (__attribute__((__stdcall__)) *ReleaseMutex)( + ISynchronizeMutex *This); +} ISynchronizeMutexVtbl; +struct ISynchronizeMutex { + ISynchronizeMutexVtbl* lpVtbl; +}; +#define __ICancelMethodCalls_INTERFACE_DEFINED__ +typedef ICancelMethodCalls *LPCANCELMETHODCALLS; +extern const GUID IID_ICancelMethodCalls; +typedef struct ICancelMethodCallsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICancelMethodCalls *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICancelMethodCalls *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICancelMethodCalls *This); + HRESULT (__attribute__((__stdcall__)) *Cancel)( + ICancelMethodCalls *This, + ULONG ulSeconds); + HRESULT (__attribute__((__stdcall__)) *TestCancel)( + ICancelMethodCalls *This); +} ICancelMethodCallsVtbl; +struct ICancelMethodCalls { + ICancelMethodCallsVtbl* lpVtbl; +}; +#define __IAsyncManager_INTERFACE_DEFINED__ +typedef enum tagDCOM_CALL_STATE { + DCOM_NONE = 0x0, + DCOM_CALL_COMPLETE = 0x1, + DCOM_CALL_CANCELED = 0x2 +} DCOM_CALL_STATE; +extern const GUID IID_IAsyncManager; +typedef struct IAsyncManagerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAsyncManager *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAsyncManager *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAsyncManager *This); + HRESULT (__attribute__((__stdcall__)) *CompleteCall)( + IAsyncManager *This, + HRESULT Result); + HRESULT (__attribute__((__stdcall__)) *GetCallContext)( + IAsyncManager *This, + const IID *const riid, + void **pInterface); + HRESULT (__attribute__((__stdcall__)) *GetState)( + IAsyncManager *This, + ULONG *pulStateFlags); +} IAsyncManagerVtbl; +struct IAsyncManager { + IAsyncManagerVtbl* lpVtbl; +}; +#define __ICallFactory_INTERFACE_DEFINED__ +extern const GUID IID_ICallFactory; +typedef struct ICallFactoryVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICallFactory *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICallFactory *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICallFactory *This); + HRESULT (__attribute__((__stdcall__)) *CreateCall)( + ICallFactory *This, + const IID *const riid, + IUnknown *pCtrlUnk, + const IID *const riid2, + IUnknown **ppv); +} ICallFactoryVtbl; +struct ICallFactory { + ICallFactoryVtbl* lpVtbl; +}; +#define __IRpcHelper_INTERFACE_DEFINED__ +extern const GUID IID_IRpcHelper; +typedef struct IRpcHelperVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRpcHelper *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRpcHelper *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRpcHelper *This); + HRESULT (__attribute__((__stdcall__)) *GetDCOMProtocolVersion)( + IRpcHelper *This, + DWORD *pComVersion); + HRESULT (__attribute__((__stdcall__)) *GetIIDFromOBJREF)( + IRpcHelper *This, + void *pObjRef, + IID **piid); +} IRpcHelperVtbl; +struct IRpcHelper { + IRpcHelperVtbl* lpVtbl; +}; +#define __IReleaseMarshalBuffers_INTERFACE_DEFINED__ +extern const GUID IID_IReleaseMarshalBuffers; +typedef struct IReleaseMarshalBuffersVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IReleaseMarshalBuffers *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IReleaseMarshalBuffers *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IReleaseMarshalBuffers *This); + HRESULT (__attribute__((__stdcall__)) *ReleaseMarshalBuffer)( + IReleaseMarshalBuffers *This, + RPCOLEMESSAGE *pMsg, + DWORD dwFlags, + IUnknown *pChnl); +} IReleaseMarshalBuffersVtbl; +struct IReleaseMarshalBuffers { + IReleaseMarshalBuffersVtbl* lpVtbl; +}; +#define __IWaitMultiple_INTERFACE_DEFINED__ +extern const GUID IID_IWaitMultiple; +typedef struct IWaitMultipleVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWaitMultiple *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWaitMultiple *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWaitMultiple *This); + HRESULT (__attribute__((__stdcall__)) *WaitMultiple)( + IWaitMultiple *This, + DWORD timeout, + ISynchronize **pSync); + HRESULT (__attribute__((__stdcall__)) *AddSynchronize)( + IWaitMultiple *This, + ISynchronize *pSync); +} IWaitMultipleVtbl; +struct IWaitMultiple { + IWaitMultipleVtbl* lpVtbl; +}; +#define __IAddrTrackingControl_INTERFACE_DEFINED__ +typedef IAddrTrackingControl *LPADDRTRACKINGCONTROL; +extern const GUID IID_IAddrTrackingControl; +typedef struct IAddrTrackingControlVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAddrTrackingControl *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAddrTrackingControl *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAddrTrackingControl *This); + HRESULT (__attribute__((__stdcall__)) *EnableCOMDynamicAddrTracking)( + IAddrTrackingControl *This); + HRESULT (__attribute__((__stdcall__)) *DisableCOMDynamicAddrTracking)( + IAddrTrackingControl *This); +} IAddrTrackingControlVtbl; +struct IAddrTrackingControl { + IAddrTrackingControlVtbl* lpVtbl; +}; +#define __IAddrExclusionControl_INTERFACE_DEFINED__ +typedef IAddrExclusionControl *LPADDREXCLUSIONCONTROL; +extern const GUID IID_IAddrExclusionControl; +typedef struct IAddrExclusionControlVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAddrExclusionControl *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAddrExclusionControl *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAddrExclusionControl *This); + HRESULT (__attribute__((__stdcall__)) *GetCurrentAddrExclusionList)( + IAddrExclusionControl *This, + const IID *const riid, + void **ppEnumerator); + HRESULT (__attribute__((__stdcall__)) *UpdateAddrExclusionList)( + IAddrExclusionControl *This, + IUnknown *pEnumerator); +} IAddrExclusionControlVtbl; +struct IAddrExclusionControl { + IAddrExclusionControlVtbl* lpVtbl; +}; +#define __IPipeByte_INTERFACE_DEFINED__ +extern const GUID IID_IPipeByte; +typedef struct IPipeByteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPipeByte *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPipeByte *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPipeByte *This); + HRESULT (__attribute__((__stdcall__)) *Pull)( + IPipeByte *This, + BYTE *buf, + ULONG cRequest, + ULONG *pcReturned); + HRESULT (__attribute__((__stdcall__)) *Push)( + IPipeByte *This, + BYTE *buf, + ULONG cSent); +} IPipeByteVtbl; +struct IPipeByte { + IPipeByteVtbl* lpVtbl; +}; +#define __IPipeLong_INTERFACE_DEFINED__ +extern const GUID IID_IPipeLong; +typedef struct IPipeLongVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPipeLong *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPipeLong *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPipeLong *This); + HRESULT (__attribute__((__stdcall__)) *Pull)( + IPipeLong *This, + LONG *buf, + ULONG cRequest, + ULONG *pcReturned); + HRESULT (__attribute__((__stdcall__)) *Push)( + IPipeLong *This, + LONG *buf, + ULONG cSent); +} IPipeLongVtbl; +struct IPipeLong { + IPipeLongVtbl* lpVtbl; +}; +#define __IPipeDouble_INTERFACE_DEFINED__ +extern const GUID IID_IPipeDouble; +typedef struct IPipeDoubleVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPipeDouble *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPipeDouble *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPipeDouble *This); + HRESULT (__attribute__((__stdcall__)) *Pull)( + IPipeDouble *This, + DOUBLE *buf, + ULONG cRequest, + ULONG *pcReturned); + HRESULT (__attribute__((__stdcall__)) *Push)( + IPipeDouble *This, + DOUBLE *buf, + ULONG cSent); +} IPipeDoubleVtbl; +struct IPipeDouble { + IPipeDoubleVtbl* lpVtbl; +}; +typedef enum _APTTYPEQUALIFIER { + APTTYPEQUALIFIER_NONE = 0, + APTTYPEQUALIFIER_IMPLICIT_MTA = 1, + APTTYPEQUALIFIER_NA_ON_MTA = 2, + APTTYPEQUALIFIER_NA_ON_STA = 3, + APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4, + APTTYPEQUALIFIER_NA_ON_MAINSTA = 5, + APTTYPEQUALIFIER_APPLICATION_STA = 6 +} APTTYPEQUALIFIER; +typedef enum _APTTYPE { + APTTYPE_CURRENT = -1, + APTTYPE_STA = 0, + APTTYPE_MTA = 1, + APTTYPE_NA = 2, + APTTYPE_MAINSTA = 3 +} APTTYPE; +typedef enum _THDTYPE { + THDTYPE_BLOCKMESSAGES = 0, + THDTYPE_PROCESSMESSAGES = 1 +} THDTYPE; +typedef DWORD APARTMENTID; +#define __IComThreadingInfo_INTERFACE_DEFINED__ +extern const GUID IID_IComThreadingInfo; +typedef struct IComThreadingInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IComThreadingInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IComThreadingInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IComThreadingInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetCurrentApartmentType)( + IComThreadingInfo *This, + APTTYPE *pAptType); + HRESULT (__attribute__((__stdcall__)) *GetCurrentThreadType)( + IComThreadingInfo *This, + THDTYPE *pThreadType); + HRESULT (__attribute__((__stdcall__)) *GetCurrentLogicalThreadId)( + IComThreadingInfo *This, + GUID *pguidLogicalThreadId); + HRESULT (__attribute__((__stdcall__)) *SetCurrentLogicalThreadId)( + IComThreadingInfo *This, + const GUID *const rguid); +} IComThreadingInfoVtbl; +struct IComThreadingInfo { + IComThreadingInfoVtbl* lpVtbl; +}; +#define __IProcessInitControl_INTERFACE_DEFINED__ +extern const GUID IID_IProcessInitControl; +typedef struct IProcessInitControlVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IProcessInitControl *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IProcessInitControl *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IProcessInitControl *This); + HRESULT (__attribute__((__stdcall__)) *ResetInitializerTimeout)( + IProcessInitControl *This, + DWORD dwSecondsRemaining); +} IProcessInitControlVtbl; +struct IProcessInitControl { + IProcessInitControlVtbl* lpVtbl; +}; +#define __IFastRundown_INTERFACE_DEFINED__ +extern const GUID IID_IFastRundown; +typedef struct IFastRundownVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IFastRundown *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IFastRundown *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IFastRundown *This); +} IFastRundownVtbl; +struct IFastRundown { + IFastRundownVtbl* lpVtbl; +}; +typedef enum CO_MARSHALING_CONTEXT_ATTRIBUTES { + CO_MARSHALING_SOURCE_IS_APP_CONTAINER = 0 +} CO_MARSHALING_CONTEXT_ATTRIBUTES; +#define __IMarshalingStream_INTERFACE_DEFINED__ +extern const GUID IID_IMarshalingStream; +typedef struct IMarshalingStreamVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMarshalingStream *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMarshalingStream *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMarshalingStream *This); + HRESULT (__attribute__((__stdcall__)) *Read)( + IMarshalingStream *This, + void *pv, + ULONG cb, + ULONG *pcbRead); + HRESULT (__attribute__((__stdcall__)) *Write)( + IMarshalingStream *This, + const void *pv, + ULONG cb, + ULONG *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *Seek)( + IMarshalingStream *This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition); + HRESULT (__attribute__((__stdcall__)) *SetSize)( + IMarshalingStream *This, + ULARGE_INTEGER libNewSize); + HRESULT (__attribute__((__stdcall__)) *CopyTo)( + IMarshalingStream *This, + IStream *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER *pcbRead, + ULARGE_INTEGER *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *Commit)( + IMarshalingStream *This, + DWORD grfCommitFlags); + HRESULT (__attribute__((__stdcall__)) *Revert)( + IMarshalingStream *This); + HRESULT (__attribute__((__stdcall__)) *LockRegion)( + IMarshalingStream *This, + ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType); + HRESULT (__attribute__((__stdcall__)) *UnlockRegion)( + IMarshalingStream *This, + ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType); + HRESULT (__attribute__((__stdcall__)) *Stat)( + IMarshalingStream *This, + STATSTG *pstatstg, + DWORD grfStatFlag); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IMarshalingStream *This, + IStream **ppstm); + HRESULT (__attribute__((__stdcall__)) *GetMarshalingContextAttribute)( + IMarshalingStream *This, + CO_MARSHALING_CONTEXT_ATTRIBUTES attribute, + ULONG_PTR *pAttributeValue); +} IMarshalingStreamVtbl; +struct IMarshalingStream { + IMarshalingStreamVtbl* lpVtbl; +}; +extern const GUID IID_ICallbackWithNoReentrancyToApplicationSTA; +#define _OBJIDLBASE_ +#undef DEFINE_GUID +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name +#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46) +#define __CGUID_H__ + extern const IID GUID_NULL; + extern const IID CATID_MARSHALER; + extern const IID IID_IRpcChannel; + extern const IID IID_IRpcStub; + extern const IID IID_IStubManager; + extern const IID IID_IRpcProxy; + extern const IID IID_IProxyManager; + extern const IID IID_IPSFactory; + extern const IID IID_IInternalMoniker; + extern const IID IID_IDfReserved1; + extern const IID IID_IDfReserved2; + extern const IID IID_IDfReserved3; + extern const CLSID CLSID_StdMarshal; + extern const CLSID CLSID_AggStdMarshal; + extern const CLSID CLSID_StdAsyncActManager; + extern const IID IID_IStub; + extern const IID IID_IProxy; + extern const IID IID_IEnumGeneric; + extern const IID IID_IEnumHolder; + extern const IID IID_IEnumCallback; + extern const IID IID_IOleManager; + extern const IID IID_IOlePresObj; + extern const IID IID_IDebug; + extern const IID IID_IDebugStream; + extern const CLSID CLSID_PSGenObject; + extern const CLSID CLSID_PSClientSite; + extern const CLSID CLSID_PSClassObject; + extern const CLSID CLSID_PSInPlaceActive; + extern const CLSID CLSID_PSInPlaceFrame; + extern const CLSID CLSID_PSDragDrop; + extern const CLSID CLSID_PSBindCtx; + extern const CLSID CLSID_PSEnumerators; + extern const CLSID CLSID_StaticMetafile; + extern const CLSID CLSID_StaticDib; + extern const CLSID CID_CDfsVolume; + extern const CLSID CLSID_DCOMAccessControl; + extern const CLSID CLSID_GlobalOptions; + extern const CLSID CLSID_StdGlobalInterfaceTable; + extern const CLSID CLSID_ComBinding; + extern const CLSID CLSID_StdEvent; + extern const CLSID CLSID_ManualResetEvent; + extern const CLSID CLSID_SynchronizeContainer; + extern const CLSID CLSID_AddrControl; + extern const CLSID CLSID_CCDFormKrnl; + extern const CLSID CLSID_CCDPropertyPage; + extern const CLSID CLSID_CCDFormDialog; + extern const CLSID CLSID_CCDCommandButton; + extern const CLSID CLSID_CCDComboBox; + extern const CLSID CLSID_CCDTextBox; + extern const CLSID CLSID_CCDCheckBox; + extern const CLSID CLSID_CCDLabel; + extern const CLSID CLSID_CCDOptionButton; + extern const CLSID CLSID_CCDListBox; + extern const CLSID CLSID_CCDScrollBar; + extern const CLSID CLSID_CCDGroupBox; + extern const CLSID CLSID_CCDGeneralPropertyPage; + extern const CLSID CLSID_CCDGenericPropertyPage; + extern const CLSID CLSID_CCDFontPropertyPage; + extern const CLSID CLSID_CCDColorPropertyPage; + extern const CLSID CLSID_CCDLabelPropertyPage; + extern const CLSID CLSID_CCDCheckBoxPropertyPage; + extern const CLSID CLSID_CCDTextBoxPropertyPage; + extern const CLSID CLSID_CCDOptionButtonPropertyPage; + extern const CLSID CLSID_CCDListBoxPropertyPage; + extern const CLSID CLSID_CCDCommandButtonPropertyPage; + extern const CLSID CLSID_CCDComboBoxPropertyPage; + extern const CLSID CLSID_CCDScrollBarPropertyPage; + extern const CLSID CLSID_CCDGroupBoxPropertyPage; + extern const CLSID CLSID_CCDXObjectPropertyPage; + extern const CLSID CLSID_CStdPropertyFrame; + extern const CLSID CLSID_CFormPropertyPage; + extern const CLSID CLSID_CGridPropertyPage; + extern const CLSID CLSID_CWSJArticlePage; + extern const CLSID CLSID_CSystemPage; + extern const CLSID CLSID_IdentityUnmarshal; + extern const CLSID CLSID_InProcFreeMarshaler; + extern const CLSID CLSID_Picture_Metafile; + extern const CLSID CLSID_Picture_EnhMetafile; + extern const CLSID CLSID_Picture_Dib; + extern const GUID GUID_TRISTATE; + extern const CLSID CLSID_ContextSwitcher; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateStreamOnHGlobal (HGLOBAL hGlobal, WINBOOL fDeleteOnRelease, LPSTREAM *ppstm); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL *phglobal); +extern __declspec (dllimport) void __attribute__((__stdcall__)) CoUninitialize (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoInitializeEx (LPVOID pvReserved, DWORD dwCoInit); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetCurrentLogicalThreadId (GUID *pguid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetContextToken (ULONG_PTR *pToken); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetObjectContext (const IID *const riid, LPVOID *ppv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRegisterClassObject (const IID *const rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRevokeClassObject (DWORD dwRegister); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoResumeClassObjects (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoSuspendClassObjects (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetMalloc (DWORD dwMemContext, LPMALLOC *ppMalloc); +extern __declspec (dllimport) DWORD __attribute__((__stdcall__)) CoGetCurrentProcess (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetCallerTID (LPDWORD lpdwTID); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetDefaultContext (APTTYPE aptType, const IID *const riid, void **ppv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetClassObject (const IID *const rclsid, DWORD dwClsContext, LPVOID pvReserved, const IID *const riid, LPVOID *ppv); +extern __declspec (dllimport) ULONG __attribute__((__stdcall__)) CoAddRefServerProcess (void); +extern __declspec (dllimport) ULONG __attribute__((__stdcall__)) CoReleaseServerProcess (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetPSClsid (const IID *const riid, CLSID *pClsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRegisterPSClsid (const IID *const riid, const IID *const rclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRegisterSurrogate (LPSURROGATE pSurrogate); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoMarshalHresult (LPSTREAM pstm, HRESULT hresult); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoUnmarshalHresult (LPSTREAM pstm, HRESULT *phresult); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoLockObjectExternal (LPUNKNOWN pUnk, WINBOOL fLock, WINBOOL fLastUnlockReleases); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetStdMarshalEx (LPUNKNOWN pUnkOuter, DWORD smexflags, LPUNKNOWN *ppUnkInner); +typedef enum tagSTDMSHLFLAGS { + SMEXF_SERVER = 0x01, + SMEXF_HANDLER = 0x02 +} STDMSHLFLAGS; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetMarshalSizeMax (ULONG *pulSize, const IID *const riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoMarshalInterface (LPSTREAM pStm, const IID *const riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoUnmarshalInterface (LPSTREAM pStm, const IID *const riid, LPVOID *ppv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoReleaseMarshalData (LPSTREAM pStm); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoDisconnectObject (LPUNKNOWN pUnk, DWORD dwReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetStandardMarshal (const IID *const riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL *ppMarshal); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoMarshalInterThreadInterfaceInStream (const IID *const riid, LPUNKNOWN pUnk, LPSTREAM *ppStm); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetInterfaceAndReleaseStream (LPSTREAM pStm, const IID *const iid, LPVOID *ppv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCreateFreeThreadedMarshaler (LPUNKNOWN punkOuter, LPUNKNOWN *ppunkMarshal); +extern __declspec (dllimport) void __attribute__((__stdcall__)) CoFreeUnusedLibraries (void); +extern __declspec (dllimport) void __attribute__((__stdcall__)) CoFreeUnusedLibrariesEx (DWORD dwUnloadDelay, DWORD dwReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoInitializeSecurity (PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE *asAuthSvc, void *pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void *pAuthList, DWORD dwCapabilities, void *pReserved3); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoSwitchCallContext (IUnknown *pNewObject, IUnknown **ppOldObject); +#define COM_RIGHTS_EXECUTE 1 +#define COM_RIGHTS_EXECUTE_LOCAL 2 +#define COM_RIGHTS_EXECUTE_REMOTE 4 +#define COM_RIGHTS_ACTIVATE_LOCAL 8 +#define COM_RIGHTS_ACTIVATE_REMOTE 16 +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCreateInstanceFromApp (const IID *const Clsid, IUnknown *punkOuter, DWORD dwClsCtx, PVOID reserved, DWORD dwCount, MULTI_QI *pResults); +extern __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CoIsHandlerConnected (LPUNKNOWN pUnk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoDisconnectContext (DWORD dwTimeout); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetCallContext (const IID *const riid, void **ppInterface); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoQueryProxyBlanket (IUnknown *pProxy, DWORD *pwAuthnSvc, DWORD *pAuthzSvc, LPOLESTR *pServerPrincName, DWORD *pAuthnLevel, DWORD *pImpLevel, RPC_AUTH_IDENTITY_HANDLE *pAuthInfo, DWORD *pCapabilites); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoSetProxyBlanket (IUnknown *pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR *pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCopyProxy (IUnknown *pProxy, IUnknown **ppCopy); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoQueryClientBlanket (DWORD *pAuthnSvc, DWORD *pAuthzSvc, LPOLESTR *pServerPrincName, DWORD *pAuthnLevel, DWORD *pImpLevel, RPC_AUTHZ_HANDLE *pPrivs, DWORD *pCapabilities); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoImpersonateClient (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRevertToSelf (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoQueryAuthenticationServices (DWORD *pcAuthSvc, SOLE_AUTHENTICATION_SERVICE **asAuthSvc); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCreateInstance (const IID *const rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, const IID *const riid, LPVOID *ppv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCreateInstanceEx (const IID *const Clsid, IUnknown *punkOuter, DWORD dwClsCtx, COSERVERINFO *pServerInfo, DWORD dwCount, MULTI_QI *pResults); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetCancelObject (DWORD dwThreadId, const IID *const iid, void **ppUnk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoSetCancelObject (IUnknown *pUnk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCancelCall (DWORD dwThreadId, ULONG ulTimeout); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoTestCancel (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoEnableCallCancellation (LPVOID pReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoDisableCallCancellation (LPVOID pReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StringFromCLSID (const IID *const rclsid, LPOLESTR *lplpsz); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CLSIDFromString (LPCOLESTR lpsz, LPCLSID pclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StringFromIID (const IID *const rclsid, LPOLESTR *lplpsz); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) IIDFromString (LPCOLESTR lpsz, LPIID lpiid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) ProgIDFromCLSID (const IID *const clsid, LPOLESTR *lplpszProgID); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CLSIDFromProgID (LPCOLESTR lpszProgID, LPCLSID lpclsid); +extern __declspec (dllimport) int __attribute__((__stdcall__)) StringFromGUID2 (const GUID *const rguid, LPOLESTR lpsz, int cchMax); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCreateGuid (GUID *pguid); +typedef struct tagPROPVARIANT PROPVARIANT; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) PropVariantCopy (PROPVARIANT *pvarDest, const PROPVARIANT *pvarSrc); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) PropVariantClear (PROPVARIANT *pvar); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) FreePropVariantArray (ULONG cVariants, PROPVARIANT *rgvars); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoWaitForMultipleHandles (DWORD dwFlags, DWORD dwTimeout, ULONG cHandles, LPHANDLE pHandles, LPDWORD lpdwindex); +typedef enum tagCOWAIT_FLAGS { + COWAIT_DEFAULT = 0, + COWAIT_WAITALL = 1, + COWAIT_ALERTABLE = 2, + COWAIT_INPUTAVAILABLE = 4 + , COWAIT_DISPATCH_CALLS = 8, + COWAIT_DISPATCH_WINDOW_MESSAGES = 0x10 +} COWAIT_FLAGS; +#define CWMO_MAX_HANDLES 56 +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetTreatAsClass (const IID *const clsidOld, LPCLSID pClsidNew); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoInvalidateRemoteMachineBindings (LPOLESTR pszMachineName); +typedef HRESULT (__attribute__((__stdcall__)) *LPFNGETCLASSOBJECT) (const IID *const, const IID *const, LPVOID *); +typedef HRESULT (__attribute__((__stdcall__)) *LPFNCANUNLOADNOW) (void); +extern HRESULT __attribute__((__stdcall__)) DllGetClassObject (const IID *const rclsid, const IID *const riid, LPVOID *ppv); +extern HRESULT __attribute__((__stdcall__)) DllCanUnloadNow (void); +extern __declspec (dllimport) LPVOID __attribute__((__stdcall__)) CoTaskMemAlloc (SIZE_T cb); +extern __declspec (dllimport) LPVOID __attribute__((__stdcall__)) CoTaskMemRealloc (LPVOID pv, SIZE_T cb); +extern __declspec (dllimport) void __attribute__((__stdcall__)) CoTaskMemFree (LPVOID pv); +#pragma pack(pop) + +typedef enum tagCOINIT { + COINIT_APARTMENTTHREADED = 0x2, + COINIT_MULTITHREADED = COINITBASE_MULTITHREADED, + COINIT_DISABLE_OLE1DDE = 0x4, + COINIT_SPEED_OVER_MEMORY = 0x8 +} COINIT; +#define MARSHALINTERFACE_MIN 500 +#define CWCSTORAGENAME 32 +#define STGM_DIRECT __MSABI_LONG(0x00000000) +#define STGM_TRANSACTED __MSABI_LONG(0x00010000) +#define STGM_SIMPLE __MSABI_LONG(0x08000000) +#define STGM_READ __MSABI_LONG(0x00000000) +#define STGM_WRITE __MSABI_LONG(0x00000001) +#define STGM_READWRITE __MSABI_LONG(0x00000002) +#define STGM_SHARE_DENY_NONE __MSABI_LONG(0x00000040) +#define STGM_SHARE_DENY_READ __MSABI_LONG(0x00000030) +#define STGM_SHARE_DENY_WRITE __MSABI_LONG(0x00000020) +#define STGM_SHARE_EXCLUSIVE __MSABI_LONG(0x00000010) +#define STGM_PRIORITY __MSABI_LONG(0x00040000) +#define STGM_DELETEONRELEASE __MSABI_LONG(0x04000000) +#define STGM_NOSCRATCH __MSABI_LONG(0x00100000) +#define STGM_CREATE __MSABI_LONG(0x00001000) +#define STGM_CONVERT __MSABI_LONG(0x00020000) +#define STGM_FAILIFTHERE __MSABI_LONG(0x00000000) +#define STGM_NOSNAPSHOT __MSABI_LONG(0x00200000) +#define STGM_DIRECT_SWMR __MSABI_LONG(0x00400000) +#define ASYNC_MODE_COMPATIBILITY __MSABI_LONG(0x00000001) +#define ASYNC_MODE_DEFAULT __MSABI_LONG(0x00000000) +#define STGTY_REPEAT __MSABI_LONG(0x00000100) +#define STG_TOEND __MSABI_LONG(0xffffffff) +#define STG_LAYOUT_SEQUENTIAL __MSABI_LONG(0x00000000) +#define STG_LAYOUT_INTERLEAVED __MSABI_LONG(0x00000001) +typedef DWORD STGFMT; +#define STGFMT_STORAGE 0 +#define STGFMT_NATIVE 1 +#define STGFMT_FILE 3 +#define STGFMT_ANY 4 +#define STGFMT_DOCFILE 5 +#define STGFMT_DOCUMENT 0 +#undef interface +#define interface struct +#define __objidl_h__ +#define __IMallocSpy_FWD_DEFINED__ +typedef struct IMallocSpy IMallocSpy; +#define __IBindCtx_FWD_DEFINED__ +typedef struct IBindCtx IBindCtx; +#define __IEnumMoniker_FWD_DEFINED__ +typedef struct IEnumMoniker IEnumMoniker; +#define __IRunnableObject_FWD_DEFINED__ +typedef struct IRunnableObject IRunnableObject; +#define __IRunningObjectTable_FWD_DEFINED__ +typedef struct IRunningObjectTable IRunningObjectTable; +#define __IPersist_FWD_DEFINED__ +typedef struct IPersist IPersist; +#define __IPersistStream_FWD_DEFINED__ +typedef struct IPersistStream IPersistStream; +#define __IMoniker_FWD_DEFINED__ +typedef struct IMoniker IMoniker; +#define __IROTData_FWD_DEFINED__ +typedef struct IROTData IROTData; +#define __IEnumSTATSTG_FWD_DEFINED__ +typedef struct IEnumSTATSTG IEnumSTATSTG; +#define __IStorage_FWD_DEFINED__ +typedef struct IStorage IStorage; +#define __IPersistFile_FWD_DEFINED__ +typedef struct IPersistFile IPersistFile; +#define __IPersistStorage_FWD_DEFINED__ +typedef struct IPersistStorage IPersistStorage; +#define __ILockBytes_FWD_DEFINED__ +typedef struct ILockBytes ILockBytes; +#define __IEnumFORMATETC_FWD_DEFINED__ +typedef struct IEnumFORMATETC IEnumFORMATETC; +#define __IEnumSTATDATA_FWD_DEFINED__ +typedef struct IEnumSTATDATA IEnumSTATDATA; +#define __IRootStorage_FWD_DEFINED__ +typedef struct IRootStorage IRootStorage; +#define __IAdviseSink_FWD_DEFINED__ +typedef struct IAdviseSink IAdviseSink; +#define __AsyncIAdviseSink_FWD_DEFINED__ +typedef struct AsyncIAdviseSink AsyncIAdviseSink; +#define __IAdviseSink2_FWD_DEFINED__ +typedef struct IAdviseSink2 IAdviseSink2; +#define __AsyncIAdviseSink2_FWD_DEFINED__ +typedef struct AsyncIAdviseSink2 AsyncIAdviseSink2; +#define __IDataObject_FWD_DEFINED__ +typedef struct IDataObject IDataObject; +#define __IDataAdviseHolder_FWD_DEFINED__ +typedef struct IDataAdviseHolder IDataAdviseHolder; +#define __IMessageFilter_FWD_DEFINED__ +typedef struct IMessageFilter IMessageFilter; +#define __IClassActivator_FWD_DEFINED__ +typedef struct IClassActivator IClassActivator; +#define __IFillLockBytes_FWD_DEFINED__ +typedef struct IFillLockBytes IFillLockBytes; +#define __IProgressNotify_FWD_DEFINED__ +typedef struct IProgressNotify IProgressNotify; +#define __ILayoutStorage_FWD_DEFINED__ +typedef struct ILayoutStorage ILayoutStorage; +#define __IBlockingLock_FWD_DEFINED__ +typedef struct IBlockingLock IBlockingLock; +#define __ITimeAndNoticeControl_FWD_DEFINED__ +typedef struct ITimeAndNoticeControl ITimeAndNoticeControl; +#define __IOplockStorage_FWD_DEFINED__ +typedef struct IOplockStorage IOplockStorage; +#define __IDirectWriterLock_FWD_DEFINED__ +typedef struct IDirectWriterLock IDirectWriterLock; +#define __IUrlMon_FWD_DEFINED__ +typedef struct IUrlMon IUrlMon; +#define __IForegroundTransfer_FWD_DEFINED__ +typedef struct IForegroundTransfer IForegroundTransfer; +#define __IThumbnailExtractor_FWD_DEFINED__ +typedef struct IThumbnailExtractor IThumbnailExtractor; +#define __IDummyHICONIncluder_FWD_DEFINED__ +typedef struct IDummyHICONIncluder IDummyHICONIncluder; +#define __IProcessLock_FWD_DEFINED__ +typedef struct IProcessLock IProcessLock; +#define __ISurrogateService_FWD_DEFINED__ +typedef struct ISurrogateService ISurrogateService; +#define __IInitializeSpy_FWD_DEFINED__ +typedef struct IInitializeSpy IInitializeSpy; +#define __IApartmentShutdown_FWD_DEFINED__ +typedef struct IApartmentShutdown IApartmentShutdown; +#undef interface +#define interface struct +#define __unknwn_h__ +#undef interface +#define interface struct +#define __wtypes_h__ +#undef interface +#define interface struct +#define __IWinTypes_INTERFACE_DEFINED__ +extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec; +extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec; +typedef struct tagRemHGLOBAL { + LONG fNullHGlobal; + ULONG cbData; + byte data[1]; +} RemHGLOBAL; +typedef struct tagRemHMETAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + ULONG cbData; + byte data[1]; +} RemHMETAFILEPICT; +typedef struct tagRemHENHMETAFILE { + ULONG cbData; + byte data[1]; +} RemHENHMETAFILE; +typedef struct tagRemHBITMAP { + ULONG cbData; + byte data[1]; +} RemHBITMAP; +typedef struct tagRemHPALETTE { + ULONG cbData; + byte data[1]; +} RemHPALETTE; +typedef struct tagRemBRUSH { + ULONG cbData; + byte data[1]; +} RemHBRUSH; +#define _ROTFLAGS_DEFINED +#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1 +#define ROTFLAGS_ALLOWANYCLIENT 0x2 +#define _ROT_COMPARE_MAX_DEFINED +#define ROT_COMPARE_MAX 2048 +typedef enum tagDVASPECT { + DVASPECT_CONTENT = 1, + DVASPECT_THUMBNAIL = 2, + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 +} DVASPECT; +typedef enum tagSTGC { + STGC_DEFAULT = 0, + STGC_OVERWRITE = 1, + STGC_ONLYIFCURRENT = 2, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4, + STGC_CONSOLIDATE = 8 +} STGC; +typedef enum tagSTGMOVE { + STGMOVE_MOVE = 0, + STGMOVE_COPY = 1, + STGMOVE_SHALLOWCOPY = 2 +} STGMOVE; +typedef enum tagSTATFLAG { + STATFLAG_DEFAULT = 0, + STATFLAG_NONAME = 1, + STATFLAG_NOOPEN = 2 +} STATFLAG; +typedef void *HCONTEXT; +#define WDT_INPROC_CALL (0x48746457) +#define WDT_REMOTE_CALL (0x52746457) +#define WDT_INPROC64_CALL (0x50746457) +typedef struct _userCLIPFORMAT { + LONG fContext; + union __WIDL_wtypes_generated_name_00000001 { + DWORD dwValue; + wchar_t *pwszName; + } u; +} userCLIPFORMAT; +typedef userCLIPFORMAT *wireCLIPFORMAT; +typedef WORD CLIPFORMAT; +typedef struct _GDI_NONREMOTE { + LONG fContext; + union __WIDL_wtypes_generated_name_00000002 { + LONG hInproc; + DWORD_BLOB *hRemote; + } u; +} GDI_NONREMOTE; +typedef struct _userHGLOBAL { + LONG fContext; + union __WIDL_wtypes_generated_name_00000003 { + LONG hInproc; + FLAGGED_BYTE_BLOB *hRemote; + INT64 hInproc64; + } u; +} userHGLOBAL; +typedef userHGLOBAL *wireHGLOBAL; +typedef struct _userHMETAFILE { + LONG fContext; + union __WIDL_wtypes_generated_name_00000004 { + LONG hInproc; + BYTE_BLOB *hRemote; + INT64 hInproc64; + } u; +} userHMETAFILE; +typedef struct _remoteMETAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + userHMETAFILE *hMF; +} remoteMETAFILEPICT; +typedef struct _userHMETAFILEPICT { + LONG fContext; + union __WIDL_wtypes_generated_name_00000005 { + LONG hInproc; + remoteMETAFILEPICT *hRemote; + INT64 hInproc64; + } u; +} userHMETAFILEPICT; +typedef struct _userHENHMETAFILE { + LONG fContext; + union __WIDL_wtypes_generated_name_00000006 { + LONG hInproc; + BYTE_BLOB *hRemote; + INT64 hInproc64; + } u; +} userHENHMETAFILE; +typedef struct _userBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + ULONG cbSize; + byte pBuffer[1]; +} userBITMAP; +typedef struct _userHBITMAP { + LONG fContext; + union __WIDL_wtypes_generated_name_00000007 { + LONG hInproc; + userBITMAP *hRemote; + INT64 hInproc64; + } u; +} userHBITMAP; +typedef struct _userHPALETTE { + LONG fContext; + union __WIDL_wtypes_generated_name_00000008 { + LONG hInproc; + LOGPALETTE *hRemote; + INT64 hInproc64; + } u; +} userHPALETTE; +typedef struct _RemotableHandle { + LONG fContext; + union __WIDL_wtypes_generated_name_00000009 { + LONG hInproc; + LONG hRemote; + } u; +} RemotableHandle; +typedef RemotableHandle *wireHWND; +typedef RemotableHandle *wireHMENU; +typedef RemotableHandle *wireHACCEL; +typedef RemotableHandle *wireHBRUSH; +typedef RemotableHandle *wireHFONT; +typedef RemotableHandle *wireHDC; +typedef RemotableHandle *wireHICON; +typedef RemotableHandle *wireHRGN; +typedef RemotableHandle *wireHMONITOR; +typedef userHBITMAP *wireHBITMAP; +typedef userHPALETTE *wireHPALETTE; +typedef userHENHMETAFILE *wireHENHMETAFILE; +typedef userHMETAFILE *wireHMETAFILE; +typedef userHMETAFILEPICT *wireHMETAFILEPICT; +typedef void *HMETAFILEPICT; +typedef double DATE; +#define _tagCY_DEFINED +#define _CY_DEFINED +typedef union tagCY { + __extension__ struct { + unsigned long Lo; + long Hi; + } ; + LONGLONG int64; +} CY; +typedef CY *LPCY; +typedef struct tagDEC { + USHORT wReserved; + __extension__ union { + __extension__ struct { + BYTE scale; + BYTE sign; + } ; + USHORT signscale; + } ; + ULONG Hi32; + __extension__ union { + __extension__ struct { + ULONG Lo32; + ULONG Mid32; + } ; + ULONGLONG Lo64; + } ; +} DECIMAL; +#define DECIMAL_NEG ((BYTE)0x80) +#define DECIMAL_SETZERO(dec) { (dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0; } +typedef DECIMAL *LPDECIMAL; +typedef FLAGGED_WORD_BLOB *wireBSTR; +typedef OLECHAR *BSTR; +typedef BSTR *LPBSTR; +typedef short VARIANT_BOOL; +#define _VARIANT_BOOL /##/ +#define _tagBSTRBLOB_DEFINED +typedef struct tagBSTRBLOB { + ULONG cbSize; + BYTE *pData; +} BSTRBLOB; +typedef struct tagBSTRBLOB *LPBSTRBLOB; +#define VARIANT_TRUE ((VARIANT_BOOL)-1) +#define VARIANT_FALSE ((VARIANT_BOOL)0) +typedef struct tagCLIPDATA { + ULONG cbSize; + LONG ulClipFmt; + BYTE *pClipData; +} CLIPDATA; +#define CBPCLIPDATA(clipdata) ((clipdata).cbSize - sizeof((clipdata).ulClipFmt)) +typedef unsigned short VARTYPE; +enum VARENUM { + VT_EMPTY = 0, + VT_NULL = 1, + VT_I2 = 2, + VT_I4 = 3, + VT_R4 = 4, + VT_R8 = 5, + VT_CY = 6, + VT_DATE = 7, + VT_BSTR = 8, + VT_DISPATCH = 9, + VT_ERROR = 10, + VT_BOOL = 11, + VT_VARIANT = 12, + VT_UNKNOWN = 13, + VT_DECIMAL = 14, + VT_I1 = 16, + VT_UI1 = 17, + VT_UI2 = 18, + VT_UI4 = 19, + VT_I8 = 20, + VT_UI8 = 21, + VT_INT = 22, + VT_UINT = 23, + VT_VOID = 24, + VT_HRESULT = 25, + VT_PTR = 26, + VT_SAFEARRAY = 27, + VT_CARRAY = 28, + VT_USERDEFINED = 29, + VT_LPSTR = 30, + VT_LPWSTR = 31, + VT_RECORD = 36, + VT_INT_PTR = 37, + VT_UINT_PTR = 38, + VT_FILETIME = 64, + VT_BLOB = 65, + VT_STREAM = 66, + VT_STORAGE = 67, + VT_STREAMED_OBJECT = 68, + VT_STORED_OBJECT = 69, + VT_BLOB_OBJECT = 70, + VT_CF = 71, + VT_CLSID = 72, + VT_VERSIONED_STREAM = 73, + VT_BSTR_BLOB = 0xfff, + VT_VECTOR = 0x1000, + VT_ARRAY = 0x2000, + VT_BYREF = 0x4000, + VT_RESERVED = 0x8000, + VT_ILLEGAL = 0xffff, + VT_ILLEGALMASKED = 0xfff, + VT_TYPEMASK = 0xfff +}; +typedef ULONG PROPID; +#define PROPERTYKEY_DEFINED +typedef struct _tagpropertykey { + GUID fmtid; + DWORD pid; +} PROPERTYKEY; +typedef struct tagCSPLATFORM { + DWORD dwPlatformId; + DWORD dwVersionHi; + DWORD dwVersionLo; + DWORD dwProcessorArch; +} CSPLATFORM; +typedef struct tagQUERYCONTEXT { + DWORD dwContext; + CSPLATFORM Platform; + LCID Locale; + DWORD dwVersionHi; + DWORD dwVersionLo; +} QUERYCONTEXT; +typedef enum tagTYSPEC { + TYSPEC_CLSID = 0, + TYSPEC_FILEEXT = 1, + TYSPEC_MIMETYPE = 2, + TYSPEC_FILENAME = 3, + TYSPEC_PROGID = 4, + TYSPEC_PACKAGENAME = 5, + TYSPEC_OBJECTID = 6 +} TYSPEC; +typedef struct __WIDL_wtypes_generated_name_0000000B { + DWORD tyspec; + union __WIDL_wtypes_generated_name_0000000A { + CLSID clsid; + LPOLESTR pFileExt; + LPOLESTR pMimeType; + LPOLESTR pProgId; + LPOLESTR pFileName; + struct { + LPOLESTR pPackageName; + GUID PolicyId; + } ByName; + struct { + GUID ObjectId; + GUID PolicyId; + } ByObjectId; + } tagged_union; +} uCLSSPEC; +HRESULT __attribute__((__stdcall__)) IUnknown_QueryInterface_Proxy(IUnknown *This, const IID *const riid, void **ppvObject); +void __attribute__((__stdcall__)) IUnknown_QueryInterface_Stub(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); +ULONG __attribute__((__stdcall__)) IUnknown_AddRef_Proxy(IUnknown *This); +void __attribute__((__stdcall__)) IUnknown_AddRef_Stub(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); +ULONG __attribute__((__stdcall__)) IUnknown_Release_Proxy(IUnknown *This); +void __attribute__((__stdcall__)) IUnknown_Release_Stub(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); +#undef interface +#define interface struct +#define __IMallocSpy_INTERFACE_DEFINED__ +typedef IMallocSpy *LPMALLOCSPY; +extern const GUID IID_IMallocSpy; +typedef struct IMallocSpyVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMallocSpy *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMallocSpy *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMallocSpy *This); + SIZE_T (__attribute__((__stdcall__)) *PreAlloc)( + IMallocSpy *This, + SIZE_T cbRequest); + void * (__attribute__((__stdcall__)) *PostAlloc)( + IMallocSpy *This, + void *pActual); + void * (__attribute__((__stdcall__)) *PreFree)( + IMallocSpy *This, + void *pRequest, + WINBOOL fSpyed); + void (__attribute__((__stdcall__)) *PostFree)( + IMallocSpy *This, + WINBOOL fSpyed); + SIZE_T (__attribute__((__stdcall__)) *PreRealloc)( + IMallocSpy *This, + void *pRequest, + SIZE_T cbRequest, + void **ppNewRequest, + WINBOOL fSpyed); + void * (__attribute__((__stdcall__)) *PostRealloc)( + IMallocSpy *This, + void *pActual, + WINBOOL fSpyed); + void * (__attribute__((__stdcall__)) *PreGetSize)( + IMallocSpy *This, + void *pRequest, + WINBOOL fSpyed); + SIZE_T (__attribute__((__stdcall__)) *PostGetSize)( + IMallocSpy *This, + SIZE_T cbActual, + WINBOOL fSpyed); + void * (__attribute__((__stdcall__)) *PreDidAlloc)( + IMallocSpy *This, + void *pRequest, + WINBOOL fSpyed); + int (__attribute__((__stdcall__)) *PostDidAlloc)( + IMallocSpy *This, + void *pRequest, + WINBOOL fSpyed, + int fActual); + void (__attribute__((__stdcall__)) *PreHeapMinimize)( + IMallocSpy *This); + void (__attribute__((__stdcall__)) *PostHeapMinimize)( + IMallocSpy *This); +} IMallocSpyVtbl; +struct IMallocSpy { + IMallocSpyVtbl* lpVtbl; +}; +#define __IBindCtx_INTERFACE_DEFINED__ +typedef IBindCtx *LPBC; +typedef IBindCtx *LPBINDCTX; +typedef struct tagBIND_OPTS { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; +} BIND_OPTS; +typedef struct tagBIND_OPTS *LPBIND_OPTS; +typedef struct tagBIND_OPTS2 { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + DWORD dwTrackFlags; + DWORD dwClassContext; + LCID locale; + COSERVERINFO *pServerInfo; +} BIND_OPTS2; +typedef struct tagBIND_OPTS2 *LPBIND_OPTS2; +typedef struct tagBIND_OPTS3 { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + DWORD dwTrackFlags; + DWORD dwClassContext; + LCID locale; + COSERVERINFO *pServerInfo; + HWND hwnd; +} BIND_OPTS3; +typedef struct tagBIND_OPTS3 *LPBIND_OPTS3; +typedef enum tagBIND_FLAGS { + BIND_MAYBOTHERUSER = 1, + BIND_JUSTTESTEXISTENCE = 2 +} BIND_FLAGS; +extern const GUID IID_IBindCtx; +typedef struct IBindCtxVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBindCtx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBindCtx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBindCtx *This); + HRESULT (__attribute__((__stdcall__)) *RegisterObjectBound)( + IBindCtx *This, + IUnknown *punk); + HRESULT (__attribute__((__stdcall__)) *RevokeObjectBound)( + IBindCtx *This, + IUnknown *punk); + HRESULT (__attribute__((__stdcall__)) *ReleaseBoundObjects)( + IBindCtx *This); + HRESULT (__attribute__((__stdcall__)) *SetBindOptions)( + IBindCtx *This, + BIND_OPTS *pbindopts); + HRESULT (__attribute__((__stdcall__)) *GetBindOptions)( + IBindCtx *This, + BIND_OPTS *pbindopts); + HRESULT (__attribute__((__stdcall__)) *GetRunningObjectTable)( + IBindCtx *This, + IRunningObjectTable **pprot); + HRESULT (__attribute__((__stdcall__)) *RegisterObjectParam)( + IBindCtx *This, + LPOLESTR pszKey, + IUnknown *punk); + HRESULT (__attribute__((__stdcall__)) *GetObjectParam)( + IBindCtx *This, + LPOLESTR pszKey, + IUnknown **ppunk); + HRESULT (__attribute__((__stdcall__)) *EnumObjectParam)( + IBindCtx *This, + IEnumString **ppenum); + HRESULT (__attribute__((__stdcall__)) *RevokeObjectParam)( + IBindCtx *This, + LPOLESTR pszKey); +} IBindCtxVtbl; +struct IBindCtx { + IBindCtxVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IBindCtx_RemoteSetBindOptions_Proxy( + IBindCtx* This, + BIND_OPTS2 *pbindopts); +void __attribute__((__stdcall__)) IBindCtx_RemoteSetBindOptions_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBindCtx_RemoteGetBindOptions_Proxy( + IBindCtx* This, + BIND_OPTS2 *pbindopts); +void __attribute__((__stdcall__)) IBindCtx_RemoteGetBindOptions_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBindCtx_SetBindOptions_Proxy( + IBindCtx* This, + BIND_OPTS *pbindopts); +HRESULT __attribute__((__stdcall__)) IBindCtx_SetBindOptions_Stub( + IBindCtx* This, + BIND_OPTS2 *pbindopts); +HRESULT __attribute__((__stdcall__)) IBindCtx_GetBindOptions_Proxy( + IBindCtx* This, + BIND_OPTS *pbindopts); +HRESULT __attribute__((__stdcall__)) IBindCtx_GetBindOptions_Stub( + IBindCtx* This, + BIND_OPTS2 *pbindopts); +#define __IEnumMoniker_INTERFACE_DEFINED__ +typedef IEnumMoniker *LPENUMMONIKER; +extern const GUID IID_IEnumMoniker; +typedef struct IEnumMonikerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumMoniker *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumMoniker *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumMoniker *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumMoniker *This, + ULONG celt, + IMoniker **rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumMoniker *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumMoniker *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumMoniker *This, + IEnumMoniker **ppenum); +} IEnumMonikerVtbl; +struct IEnumMoniker { + IEnumMonikerVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumMoniker_RemoteNext_Proxy( + IEnumMoniker* This, + ULONG celt, + IMoniker **rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumMoniker_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumMoniker_Next_Proxy( + IEnumMoniker* This, + ULONG celt, + IMoniker **rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumMoniker_Next_Stub( + IEnumMoniker* This, + ULONG celt, + IMoniker **rgelt, + ULONG *pceltFetched); +#define __IRunnableObject_INTERFACE_DEFINED__ +typedef IRunnableObject *LPRUNNABLEOBJECT; +extern const GUID IID_IRunnableObject; +typedef struct IRunnableObjectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRunnableObject *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRunnableObject *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRunnableObject *This); + HRESULT (__attribute__((__stdcall__)) *GetRunningClass)( + IRunnableObject *This, + LPCLSID lpClsid); + HRESULT (__attribute__((__stdcall__)) *Run)( + IRunnableObject *This, + LPBINDCTX pbc); + WINBOOL (__attribute__((__stdcall__)) *IsRunning)( + IRunnableObject *This); + HRESULT (__attribute__((__stdcall__)) *LockRunning)( + IRunnableObject *This, + WINBOOL fLock, + WINBOOL fLastUnlockCloses); + HRESULT (__attribute__((__stdcall__)) *SetContainedObject)( + IRunnableObject *This, + WINBOOL fContained); +} IRunnableObjectVtbl; +struct IRunnableObject { + IRunnableObjectVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IRunnableObject_RemoteIsRunning_Proxy( + IRunnableObject* This); +void __attribute__((__stdcall__)) IRunnableObject_RemoteIsRunning_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +WINBOOL __attribute__((__stdcall__)) IRunnableObject_IsRunning_Proxy( + IRunnableObject* This); +HRESULT __attribute__((__stdcall__)) IRunnableObject_IsRunning_Stub( + IRunnableObject* This); +#define __IRunningObjectTable_INTERFACE_DEFINED__ +typedef IRunningObjectTable *LPRUNNINGOBJECTTABLE; +extern const GUID IID_IRunningObjectTable; +typedef struct IRunningObjectTableVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRunningObjectTable *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRunningObjectTable *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRunningObjectTable *This); + HRESULT (__attribute__((__stdcall__)) *Register)( + IRunningObjectTable *This, + DWORD grfFlags, + IUnknown *punkObject, + IMoniker *pmkObjectName, + DWORD *pdwRegister); + HRESULT (__attribute__((__stdcall__)) *Revoke)( + IRunningObjectTable *This, + DWORD dwRegister); + HRESULT (__attribute__((__stdcall__)) *IsRunning)( + IRunningObjectTable *This, + IMoniker *pmkObjectName); + HRESULT (__attribute__((__stdcall__)) *GetObjectA)( + IRunningObjectTable *This, + IMoniker *pmkObjectName, + IUnknown **ppunkObject); + HRESULT (__attribute__((__stdcall__)) *NoteChangeTime)( + IRunningObjectTable *This, + DWORD dwRegister, + FILETIME *pfiletime); + HRESULT (__attribute__((__stdcall__)) *GetTimeOfLastChange)( + IRunningObjectTable *This, + IMoniker *pmkObjectName, + FILETIME *pfiletime); + HRESULT (__attribute__((__stdcall__)) *EnumRunning)( + IRunningObjectTable *This, + IEnumMoniker **ppenumMoniker); +} IRunningObjectTableVtbl; +struct IRunningObjectTable { + IRunningObjectTableVtbl* lpVtbl; +}; +#define __IPersist_INTERFACE_DEFINED__ +typedef IPersist *LPPERSIST; +extern const GUID IID_IPersist; +typedef struct IPersistVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersist *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersist *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersist *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersist *This, + CLSID *pClassID); +} IPersistVtbl; +struct IPersist { + IPersistVtbl* lpVtbl; +}; +#define __IPersistStream_INTERFACE_DEFINED__ +typedef IPersistStream *LPPERSISTSTREAM; +extern const GUID IID_IPersistStream; +typedef struct IPersistStreamVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistStream *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistStream *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistStream *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistStream *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IPersistStream *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistStream *This, + IStream *pStm); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistStream *This, + IStream *pStm, + WINBOOL fClearDirty); + HRESULT (__attribute__((__stdcall__)) *GetSizeMax)( + IPersistStream *This, + ULARGE_INTEGER *pcbSize); +} IPersistStreamVtbl; +struct IPersistStream { + IPersistStreamVtbl* lpVtbl; +}; +#define __IMoniker_INTERFACE_DEFINED__ +typedef IMoniker *LPMONIKER; +typedef enum tagMKSYS { + MKSYS_NONE = 0, + MKSYS_GENERICCOMPOSITE = 1, + MKSYS_FILEMONIKER = 2, + MKSYS_ANTIMONIKER = 3, + MKSYS_ITEMMONIKER = 4, + MKSYS_POINTERMONIKER = 5, + MKSYS_CLASSMONIKER = 7, + MKSYS_OBJREFMONIKER = 8, + MKSYS_SESSIONMONIKER = 9, + MKSYS_LUAMONIKER = 10 +} MKSYS; +typedef enum tagMKREDUCE { + MKRREDUCE_ONE = 3 << 16, + MKRREDUCE_TOUSER = 2 << 16, + MKRREDUCE_THROUGHUSER = 1 << 16, + MKRREDUCE_ALL = 0 +} MKRREDUCE; +extern const GUID IID_IMoniker; +typedef struct IMonikerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMoniker *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMoniker *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMoniker *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IMoniker *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IMoniker *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IMoniker *This, + IStream *pStm); + HRESULT (__attribute__((__stdcall__)) *Save)( + IMoniker *This, + IStream *pStm, + WINBOOL fClearDirty); + HRESULT (__attribute__((__stdcall__)) *GetSizeMax)( + IMoniker *This, + ULARGE_INTEGER *pcbSize); + HRESULT (__attribute__((__stdcall__)) *BindToObject)( + IMoniker *This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riidResult, + void **ppvResult); + HRESULT (__attribute__((__stdcall__)) *BindToStorage)( + IMoniker *This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riid, + void **ppvObj); + HRESULT (__attribute__((__stdcall__)) *Reduce)( + IMoniker *This, + IBindCtx *pbc, + DWORD dwReduceHowFar, + IMoniker **ppmkToLeft, + IMoniker **ppmkReduced); + HRESULT (__attribute__((__stdcall__)) *ComposeWith)( + IMoniker *This, + IMoniker *pmkRight, + WINBOOL fOnlyIfNotGeneric, + IMoniker **ppmkComposite); + HRESULT (__attribute__((__stdcall__)) *Enum)( + IMoniker *This, + WINBOOL fForward, + IEnumMoniker **ppenumMoniker); + HRESULT (__attribute__((__stdcall__)) *IsEqual)( + IMoniker *This, + IMoniker *pmkOtherMoniker); + HRESULT (__attribute__((__stdcall__)) *Hash)( + IMoniker *This, + DWORD *pdwHash); + HRESULT (__attribute__((__stdcall__)) *IsRunning)( + IMoniker *This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + IMoniker *pmkNewlyRunning); + HRESULT (__attribute__((__stdcall__)) *GetTimeOfLastChange)( + IMoniker *This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + FILETIME *pFileTime); + HRESULT (__attribute__((__stdcall__)) *Inverse)( + IMoniker *This, + IMoniker **ppmk); + HRESULT (__attribute__((__stdcall__)) *CommonPrefixWith)( + IMoniker *This, + IMoniker *pmkOther, + IMoniker **ppmkPrefix); + HRESULT (__attribute__((__stdcall__)) *RelativePathTo)( + IMoniker *This, + IMoniker *pmkOther, + IMoniker **ppmkRelPath); + HRESULT (__attribute__((__stdcall__)) *GetDisplayName)( + IMoniker *This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + LPOLESTR *ppszDisplayName); + HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)( + IMoniker *This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + LPOLESTR pszDisplayName, + ULONG *pchEaten, + IMoniker **ppmkOut); + HRESULT (__attribute__((__stdcall__)) *IsSystemMoniker)( + IMoniker *This, + DWORD *pdwMksys); +} IMonikerVtbl; +struct IMoniker { + IMonikerVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IMoniker_RemoteBindToObject_Proxy( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riidResult, + IUnknown **ppvResult); +void __attribute__((__stdcall__)) IMoniker_RemoteBindToObject_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IMoniker_RemoteBindToStorage_Proxy( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riid, + IUnknown **ppvObj); +void __attribute__((__stdcall__)) IMoniker_RemoteBindToStorage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IMoniker_BindToObject_Proxy( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riidResult, + void **ppvResult); +HRESULT __attribute__((__stdcall__)) IMoniker_BindToObject_Stub( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riidResult, + IUnknown **ppvResult); +HRESULT __attribute__((__stdcall__)) IMoniker_BindToStorage_Proxy( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riid, + void **ppvObj); +HRESULT __attribute__((__stdcall__)) IMoniker_BindToStorage_Stub( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + const IID *const riid, + IUnknown **ppvObj); +#define __IROTData_INTERFACE_DEFINED__ +extern const GUID IID_IROTData; +typedef struct IROTDataVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IROTData *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IROTData *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IROTData *This); + HRESULT (__attribute__((__stdcall__)) *GetComparisonData)( + IROTData *This, + byte *pbData, + ULONG cbMax, + ULONG *pcbData); +} IROTDataVtbl; +struct IROTData { + IROTDataVtbl* lpVtbl; +}; +#define __IEnumSTATSTG_INTERFACE_DEFINED__ +typedef IEnumSTATSTG *LPENUMSTATSTG; +extern const GUID IID_IEnumSTATSTG; +typedef struct IEnumSTATSTGVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumSTATSTG *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumSTATSTG *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumSTATSTG *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumSTATSTG *This, + ULONG celt, + STATSTG *rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumSTATSTG *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumSTATSTG *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumSTATSTG *This, + IEnumSTATSTG **ppenum); +} IEnumSTATSTGVtbl; +struct IEnumSTATSTG { + IEnumSTATSTGVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumSTATSTG_RemoteNext_Proxy( + IEnumSTATSTG* This, + ULONG celt, + STATSTG *rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumSTATSTG_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumSTATSTG_Next_Proxy( + IEnumSTATSTG* This, + ULONG celt, + STATSTG *rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumSTATSTG_Next_Stub( + IEnumSTATSTG* This, + ULONG celt, + STATSTG *rgelt, + ULONG *pceltFetched); +#define __IStorage_INTERFACE_DEFINED__ +typedef IStorage *LPSTORAGE; +typedef struct tagRemSNB { + ULONG ulCntStr; + ULONG ulCntChar; + OLECHAR rgString[1]; +} RemSNB; +typedef RemSNB *wireSNB; +typedef LPOLESTR *SNB; +extern const GUID IID_IStorage; +typedef struct IStorageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IStorage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IStorage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IStorage *This); + HRESULT (__attribute__((__stdcall__)) *CreateStream)( + IStorage *This, + const OLECHAR *pwcsName, + DWORD grfMode, + DWORD reserved1, + DWORD reserved2, + IStream **ppstm); + HRESULT (__attribute__((__stdcall__)) *OpenStream)( + IStorage *This, + const OLECHAR *pwcsName, + void *reserved1, + DWORD grfMode, + DWORD reserved2, + IStream **ppstm); + HRESULT (__attribute__((__stdcall__)) *CreateStorage)( + IStorage *This, + const OLECHAR *pwcsName, + DWORD grfMode, + DWORD reserved1, + DWORD reserved2, + IStorage **ppstg); + HRESULT (__attribute__((__stdcall__)) *OpenStorage)( + IStorage *This, + const OLECHAR *pwcsName, + IStorage *pstgPriority, + DWORD grfMode, + SNB snbExclude, + DWORD reserved, + IStorage **ppstg); + HRESULT (__attribute__((__stdcall__)) *CopyTo)( + IStorage *This, + DWORD ciidExclude, + const IID *rgiidExclude, + SNB snbExclude, + IStorage *pstgDest); + HRESULT (__attribute__((__stdcall__)) *MoveElementTo)( + IStorage *This, + const OLECHAR *pwcsName, + IStorage *pstgDest, + const OLECHAR *pwcsNewName, + DWORD grfFlags); + HRESULT (__attribute__((__stdcall__)) *Commit)( + IStorage *This, + DWORD grfCommitFlags); + HRESULT (__attribute__((__stdcall__)) *Revert)( + IStorage *This); + HRESULT (__attribute__((__stdcall__)) *EnumElements)( + IStorage *This, + DWORD reserved1, + void *reserved2, + DWORD reserved3, + IEnumSTATSTG **ppenum); + HRESULT (__attribute__((__stdcall__)) *DestroyElement)( + IStorage *This, + const OLECHAR *pwcsName); + HRESULT (__attribute__((__stdcall__)) *RenameElement)( + IStorage *This, + const OLECHAR *pwcsOldName, + const OLECHAR *pwcsNewName); + HRESULT (__attribute__((__stdcall__)) *SetElementTimes)( + IStorage *This, + const OLECHAR *pwcsName, + const FILETIME *pctime, + const FILETIME *patime, + const FILETIME *pmtime); + HRESULT (__attribute__((__stdcall__)) *SetClass)( + IStorage *This, + const IID *const clsid); + HRESULT (__attribute__((__stdcall__)) *SetStateBits)( + IStorage *This, + DWORD grfStateBits, + DWORD grfMask); + HRESULT (__attribute__((__stdcall__)) *Stat)( + IStorage *This, + STATSTG *pstatstg, + DWORD grfStatFlag); +} IStorageVtbl; +struct IStorage { + IStorageVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IStorage_RemoteOpenStream_Proxy( + IStorage* This, + const OLECHAR *pwcsName, + ULONG cbReserved1, + byte *reserved1, + DWORD grfMode, + DWORD reserved2, + IStream **ppstm); +void __attribute__((__stdcall__)) IStorage_RemoteOpenStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IStorage_RemoteCopyTo_Proxy( + IStorage* This, + DWORD ciidExclude, + const IID *rgiidExclude, + SNB snbExclude, + IStorage *pstgDest); +void __attribute__((__stdcall__)) IStorage_RemoteCopyTo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IStorage_RemoteEnumElements_Proxy( + IStorage* This, + DWORD reserved1, + ULONG cbReserved2, + byte *reserved2, + DWORD reserved3, + IEnumSTATSTG **ppenum); +void __attribute__((__stdcall__)) IStorage_RemoteEnumElements_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IStorage_OpenStream_Proxy( + IStorage* This, + const OLECHAR *pwcsName, + void *reserved1, + DWORD grfMode, + DWORD reserved2, + IStream **ppstm); +HRESULT __attribute__((__stdcall__)) IStorage_OpenStream_Stub( + IStorage* This, + const OLECHAR *pwcsName, + ULONG cbReserved1, + byte *reserved1, + DWORD grfMode, + DWORD reserved2, + IStream **ppstm); +HRESULT __attribute__((__stdcall__)) IStorage_CopyTo_Proxy( + IStorage* This, + DWORD ciidExclude, + const IID *rgiidExclude, + SNB snbExclude, + IStorage *pstgDest); +HRESULT __attribute__((__stdcall__)) IStorage_CopyTo_Stub( + IStorage* This, + DWORD ciidExclude, + const IID *rgiidExclude, + SNB snbExclude, + IStorage *pstgDest); +HRESULT __attribute__((__stdcall__)) IStorage_EnumElements_Proxy( + IStorage* This, + DWORD reserved1, + void *reserved2, + DWORD reserved3, + IEnumSTATSTG **ppenum); +HRESULT __attribute__((__stdcall__)) IStorage_EnumElements_Stub( + IStorage* This, + DWORD reserved1, + ULONG cbReserved2, + byte *reserved2, + DWORD reserved3, + IEnumSTATSTG **ppenum); +#define __IPersistFile_INTERFACE_DEFINED__ +typedef IPersistFile *LPPERSISTFILE; +extern const GUID IID_IPersistFile; +typedef struct IPersistFileVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistFile *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistFile *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistFile *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistFile *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IPersistFile *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistFile *This, + LPCOLESTR pszFileName, + DWORD dwMode); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistFile *This, + LPCOLESTR pszFileName, + WINBOOL fRemember); + HRESULT (__attribute__((__stdcall__)) *SaveCompleted)( + IPersistFile *This, + LPCOLESTR pszFileName); + HRESULT (__attribute__((__stdcall__)) *GetCurFile)( + IPersistFile *This, + LPOLESTR *ppszFileName); +} IPersistFileVtbl; +struct IPersistFile { + IPersistFileVtbl* lpVtbl; +}; +#define __IPersistStorage_INTERFACE_DEFINED__ +typedef IPersistStorage *LPPERSISTSTORAGE; +extern const GUID IID_IPersistStorage; +typedef struct IPersistStorageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistStorage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistStorage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistStorage *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistStorage *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IPersistStorage *This); + HRESULT (__attribute__((__stdcall__)) *InitNew)( + IPersistStorage *This, + IStorage *pStg); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistStorage *This, + IStorage *pStg); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistStorage *This, + IStorage *pStgSave, + WINBOOL fSameAsLoad); + HRESULT (__attribute__((__stdcall__)) *SaveCompleted)( + IPersistStorage *This, + IStorage *pStgNew); + HRESULT (__attribute__((__stdcall__)) *HandsOffStorage)( + IPersistStorage *This); +} IPersistStorageVtbl; +struct IPersistStorage { + IPersistStorageVtbl* lpVtbl; +}; +#define __ILockBytes_INTERFACE_DEFINED__ +typedef ILockBytes *LPLOCKBYTES; +extern const GUID IID_ILockBytes; +typedef struct ILockBytesVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ILockBytes *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ILockBytes *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ILockBytes *This); + HRESULT (__attribute__((__stdcall__)) *ReadAt)( + ILockBytes *This, + ULARGE_INTEGER ulOffset, + void *pv, + ULONG cb, + ULONG *pcbRead); + HRESULT (__attribute__((__stdcall__)) *WriteAt)( + ILockBytes *This, + ULARGE_INTEGER ulOffset, + const void *pv, + ULONG cb, + ULONG *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *Flush)( + ILockBytes *This); + HRESULT (__attribute__((__stdcall__)) *SetSize)( + ILockBytes *This, + ULARGE_INTEGER cb); + HRESULT (__attribute__((__stdcall__)) *LockRegion)( + ILockBytes *This, + ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType); + HRESULT (__attribute__((__stdcall__)) *UnlockRegion)( + ILockBytes *This, + ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType); + HRESULT (__attribute__((__stdcall__)) *Stat)( + ILockBytes *This, + STATSTG *pstatstg, + DWORD grfStatFlag); +} ILockBytesVtbl; +struct ILockBytes { + ILockBytesVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) ILockBytes_RemoteReadAt_Proxy( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + byte *pv, + ULONG cb, + ULONG *pcbRead); +void __attribute__((__stdcall__)) ILockBytes_RemoteReadAt_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ILockBytes_RemoteWriteAt_Proxy( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +void __attribute__((__stdcall__)) ILockBytes_RemoteWriteAt_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ILockBytes_ReadAt_Proxy( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + void *pv, + ULONG cb, + ULONG *pcbRead); +HRESULT __attribute__((__stdcall__)) ILockBytes_ReadAt_Stub( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + byte *pv, + ULONG cb, + ULONG *pcbRead); +HRESULT __attribute__((__stdcall__)) ILockBytes_WriteAt_Proxy( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + const void *pv, + ULONG cb, + ULONG *pcbWritten); +HRESULT __attribute__((__stdcall__)) ILockBytes_WriteAt_Stub( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +#define __IEnumFORMATETC_INTERFACE_DEFINED__ +typedef IEnumFORMATETC *LPENUMFORMATETC; +typedef struct tagDVTARGETDEVICE { + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + BYTE tdData[1]; +} DVTARGETDEVICE; +typedef CLIPFORMAT *LPCLIPFORMAT; +typedef struct tagFORMATETC { + CLIPFORMAT cfFormat; + DVTARGETDEVICE *ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; +} FORMATETC; +typedef struct tagFORMATETC *LPFORMATETC; +extern const GUID IID_IEnumFORMATETC; +typedef struct IEnumFORMATETCVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumFORMATETC *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumFORMATETC *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumFORMATETC *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumFORMATETC *This, + ULONG celt, + FORMATETC *rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumFORMATETC *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumFORMATETC *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumFORMATETC *This, + IEnumFORMATETC **ppenum); +} IEnumFORMATETCVtbl; +struct IEnumFORMATETC { + IEnumFORMATETCVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumFORMATETC_RemoteNext_Proxy( + IEnumFORMATETC* This, + ULONG celt, + FORMATETC *rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumFORMATETC_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumFORMATETC_Next_Proxy( + IEnumFORMATETC* This, + ULONG celt, + FORMATETC *rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumFORMATETC_Next_Stub( + IEnumFORMATETC* This, + ULONG celt, + FORMATETC *rgelt, + ULONG *pceltFetched); +#define __IEnumSTATDATA_INTERFACE_DEFINED__ +typedef IEnumSTATDATA *LPENUMSTATDATA; +typedef enum tagADVF { + ADVF_NODATA = 1, + ADVF_PRIMEFIRST = 2, + ADVF_ONLYONCE = 4, + ADVF_DATAONSTOP = 64, + ADVFCACHE_NOHANDLER = 8, + ADVFCACHE_FORCEBUILTIN = 16, + ADVFCACHE_ONSAVE = 32 +} ADVF; +typedef struct tagSTATDATA { + FORMATETC formatetc; + DWORD advf; + IAdviseSink *pAdvSink; + DWORD dwConnection; +} STATDATA; +typedef STATDATA *LPSTATDATA; +extern const GUID IID_IEnumSTATDATA; +typedef struct IEnumSTATDATAVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumSTATDATA *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumSTATDATA *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumSTATDATA *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumSTATDATA *This, + ULONG celt, + STATDATA *rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumSTATDATA *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumSTATDATA *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumSTATDATA *This, + IEnumSTATDATA **ppenum); +} IEnumSTATDATAVtbl; +struct IEnumSTATDATA { + IEnumSTATDATAVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumSTATDATA_RemoteNext_Proxy( + IEnumSTATDATA* This, + ULONG celt, + STATDATA *rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumSTATDATA_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumSTATDATA_Next_Proxy( + IEnumSTATDATA* This, + ULONG celt, + STATDATA *rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumSTATDATA_Next_Stub( + IEnumSTATDATA* This, + ULONG celt, + STATDATA *rgelt, + ULONG *pceltFetched); +#define __IRootStorage_INTERFACE_DEFINED__ +typedef IRootStorage *LPROOTSTORAGE; +extern const GUID IID_IRootStorage; +typedef struct IRootStorageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRootStorage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRootStorage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRootStorage *This); + HRESULT (__attribute__((__stdcall__)) *SwitchToFile)( + IRootStorage *This, + LPOLESTR pszFile); +} IRootStorageVtbl; +struct IRootStorage { + IRootStorageVtbl* lpVtbl; +}; +#define __IAdviseSink_INTERFACE_DEFINED__ +typedef IAdviseSink *LPADVISESINK; +typedef enum tagTYMED { + TYMED_HGLOBAL = 1, + TYMED_FILE = 2, + TYMED_ISTREAM = 4, + TYMED_ISTORAGE = 8, + TYMED_GDI = 16, + TYMED_MFPICT = 32, + TYMED_ENHMF = 64, + TYMED_NULL = 0 +} TYMED; +typedef struct tagRemSTGMEDIUM { + DWORD tymed; + DWORD dwHandleType; + ULONG pData; + ULONG pUnkForRelease; + ULONG cbData; + byte data[1]; +} RemSTGMEDIUM; +typedef struct tagSTGMEDIUM { + DWORD tymed; + union { + HBITMAP hBitmap; + HMETAFILEPICT hMetaFilePict; + HENHMETAFILE hEnhMetaFile; + HGLOBAL hGlobal; + LPOLESTR lpszFileName; + IStream *pstm; + IStorage *pstg; + } ; + IUnknown *pUnkForRelease; +} uSTGMEDIUM; +typedef struct _GDI_OBJECT { + DWORD ObjectType; + union __WIDL_objidl_generated_name_0000000C { + wireHBITMAP hBitmap; + wireHPALETTE hPalette; + wireHGLOBAL hGeneric; + } u; +} GDI_OBJECT; +typedef struct _userSTGMEDIUM { + struct _STGMEDIUM_UNION { + DWORD tymed; + union __WIDL_objidl_generated_name_0000000D { + wireHMETAFILEPICT hMetaFilePict; + wireHENHMETAFILE hHEnhMetaFile; + GDI_OBJECT *hGdiHandle; + wireHGLOBAL hGlobal; + LPOLESTR lpszFileName; + BYTE_BLOB *pstm; + BYTE_BLOB *pstg; + } u; + } ; + IUnknown *pUnkForRelease; +} userSTGMEDIUM; +typedef userSTGMEDIUM *wireSTGMEDIUM; +typedef uSTGMEDIUM STGMEDIUM; +typedef userSTGMEDIUM *wireASYNC_STGMEDIUM; +typedef STGMEDIUM ASYNC_STGMEDIUM; +typedef STGMEDIUM *LPSTGMEDIUM; +typedef struct _userFLAG_STGMEDIUM { + LONG ContextFlags; + LONG fPassOwnership; + userSTGMEDIUM Stgmed; +} userFLAG_STGMEDIUM; +typedef userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM; +typedef struct _FLAG_STGMEDIUM { + LONG ContextFlags; + LONG fPassOwnership; + STGMEDIUM Stgmed; +} FLAG_STGMEDIUM; +extern const GUID IID_IAdviseSink; +typedef struct IAdviseSinkVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAdviseSink *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAdviseSink *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAdviseSink *This); + void (__attribute__((__stdcall__)) *OnDataChange)( + IAdviseSink *This, + FORMATETC *pFormatetc, + STGMEDIUM *pStgmed); + void (__attribute__((__stdcall__)) *OnViewChange)( + IAdviseSink *This, + DWORD dwAspect, + LONG lindex); + void (__attribute__((__stdcall__)) *OnRename)( + IAdviseSink *This, + IMoniker *pmk); + void (__attribute__((__stdcall__)) *OnSave)( + IAdviseSink *This); + void (__attribute__((__stdcall__)) *OnClose)( + IAdviseSink *This); +} IAdviseSinkVtbl; +struct IAdviseSink { + IAdviseSinkVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnDataChange_Proxy( + IAdviseSink* This, + FORMATETC *pFormatetc, + ASYNC_STGMEDIUM *pStgmed); +void __attribute__((__stdcall__)) IAdviseSink_RemoteOnDataChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnViewChange_Proxy( + IAdviseSink* This, + DWORD dwAspect, + LONG lindex); +void __attribute__((__stdcall__)) IAdviseSink_RemoteOnViewChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnRename_Proxy( + IAdviseSink* This, + IMoniker *pmk); +void __attribute__((__stdcall__)) IAdviseSink_RemoteOnRename_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnSave_Proxy( + IAdviseSink* This); +void __attribute__((__stdcall__)) IAdviseSink_RemoteOnSave_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnClose_Proxy( + IAdviseSink* This); +void __attribute__((__stdcall__)) IAdviseSink_RemoteOnClose_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +void __attribute__((__stdcall__)) IAdviseSink_OnDataChange_Proxy( + IAdviseSink* This, + FORMATETC *pFormatetc, + STGMEDIUM *pStgmed); +HRESULT __attribute__((__stdcall__)) IAdviseSink_OnDataChange_Stub( + IAdviseSink* This, + FORMATETC *pFormatetc, + ASYNC_STGMEDIUM *pStgmed); +void __attribute__((__stdcall__)) IAdviseSink_OnViewChange_Proxy( + IAdviseSink* This, + DWORD dwAspect, + LONG lindex); +HRESULT __attribute__((__stdcall__)) IAdviseSink_OnViewChange_Stub( + IAdviseSink* This, + DWORD dwAspect, + LONG lindex); +void __attribute__((__stdcall__)) IAdviseSink_OnRename_Proxy( + IAdviseSink* This, + IMoniker *pmk); +HRESULT __attribute__((__stdcall__)) IAdviseSink_OnRename_Stub( + IAdviseSink* This, + IMoniker *pmk); +void __attribute__((__stdcall__)) IAdviseSink_OnSave_Proxy( + IAdviseSink* This); +HRESULT __attribute__((__stdcall__)) IAdviseSink_OnSave_Stub( + IAdviseSink* This); +void __attribute__((__stdcall__)) IAdviseSink_OnClose_Proxy( + IAdviseSink* This); +HRESULT __attribute__((__stdcall__)) IAdviseSink_OnClose_Stub( + IAdviseSink* This); +#define __AsyncIAdviseSink_INTERFACE_DEFINED__ +extern const GUID IID_AsyncIAdviseSink; +typedef struct AsyncIAdviseSinkVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + AsyncIAdviseSink *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + AsyncIAdviseSink *This); + ULONG (__attribute__((__stdcall__)) *Release)( + AsyncIAdviseSink *This); + void (__attribute__((__stdcall__)) *Begin_OnDataChange)( + AsyncIAdviseSink *This, + FORMATETC *pFormatetc, + STGMEDIUM *pStgmed); + void (__attribute__((__stdcall__)) *Finish_OnDataChange)( + AsyncIAdviseSink *This); + void (__attribute__((__stdcall__)) *Begin_OnViewChange)( + AsyncIAdviseSink *This, + DWORD dwAspect, + LONG lindex); + void (__attribute__((__stdcall__)) *Finish_OnViewChange)( + AsyncIAdviseSink *This); + void (__attribute__((__stdcall__)) *Begin_OnRename)( + AsyncIAdviseSink *This, + IMoniker *pmk); + void (__attribute__((__stdcall__)) *Finish_OnRename)( + AsyncIAdviseSink *This); + void (__attribute__((__stdcall__)) *Begin_OnSave)( + AsyncIAdviseSink *This); + void (__attribute__((__stdcall__)) *Finish_OnSave)( + AsyncIAdviseSink *This); + void (__attribute__((__stdcall__)) *Begin_OnClose)( + AsyncIAdviseSink *This); + void (__attribute__((__stdcall__)) *Finish_OnClose)( + AsyncIAdviseSink *This); +} AsyncIAdviseSinkVtbl; +struct AsyncIAdviseSink { + AsyncIAdviseSinkVtbl* lpVtbl; +}; +#define __IAdviseSink2_INTERFACE_DEFINED__ +typedef IAdviseSink2 *LPADVISESINK2; +extern const GUID IID_IAdviseSink2; +typedef struct IAdviseSink2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAdviseSink2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAdviseSink2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAdviseSink2 *This); + void (__attribute__((__stdcall__)) *OnDataChange)( + IAdviseSink2 *This, + FORMATETC *pFormatetc, + STGMEDIUM *pStgmed); + void (__attribute__((__stdcall__)) *OnViewChange)( + IAdviseSink2 *This, + DWORD dwAspect, + LONG lindex); + void (__attribute__((__stdcall__)) *OnRename)( + IAdviseSink2 *This, + IMoniker *pmk); + void (__attribute__((__stdcall__)) *OnSave)( + IAdviseSink2 *This); + void (__attribute__((__stdcall__)) *OnClose)( + IAdviseSink2 *This); + void (__attribute__((__stdcall__)) *OnLinkSrcChange)( + IAdviseSink2 *This, + IMoniker *pmk); +} IAdviseSink2Vtbl; +struct IAdviseSink2 { + IAdviseSink2Vtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IAdviseSink2_RemoteOnLinkSrcChange_Proxy( + IAdviseSink2* This, + IMoniker *pmk); +void __attribute__((__stdcall__)) IAdviseSink2_RemoteOnLinkSrcChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +void __attribute__((__stdcall__)) IAdviseSink2_OnLinkSrcChange_Proxy( + IAdviseSink2* This, + IMoniker *pmk); +HRESULT __attribute__((__stdcall__)) IAdviseSink2_OnLinkSrcChange_Stub( + IAdviseSink2* This, + IMoniker *pmk); +#define __AsyncIAdviseSink2_INTERFACE_DEFINED__ +extern const GUID IID_AsyncIAdviseSink2; +typedef struct AsyncIAdviseSink2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + AsyncIAdviseSink2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + AsyncIAdviseSink2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Begin_OnDataChange)( + AsyncIAdviseSink2 *This, + FORMATETC *pFormatetc, + STGMEDIUM *pStgmed); + void (__attribute__((__stdcall__)) *Finish_OnDataChange)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Begin_OnViewChange)( + AsyncIAdviseSink2 *This, + DWORD dwAspect, + LONG lindex); + void (__attribute__((__stdcall__)) *Finish_OnViewChange)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Begin_OnRename)( + AsyncIAdviseSink2 *This, + IMoniker *pmk); + void (__attribute__((__stdcall__)) *Finish_OnRename)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Begin_OnSave)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Finish_OnSave)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Begin_OnClose)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Finish_OnClose)( + AsyncIAdviseSink2 *This); + void (__attribute__((__stdcall__)) *Begin_OnLinkSrcChange)( + AsyncIAdviseSink2 *This, + IMoniker *pmk); + void (__attribute__((__stdcall__)) *Finish_OnLinkSrcChange)( + AsyncIAdviseSink2 *This); +} AsyncIAdviseSink2Vtbl; +struct AsyncIAdviseSink2 { + AsyncIAdviseSink2Vtbl* lpVtbl; +}; +#define __IDataObject_INTERFACE_DEFINED__ +typedef IDataObject *LPDATAOBJECT; +typedef enum tagDATADIR { + DATADIR_GET = 1, + DATADIR_SET = 2 +} DATADIR; +extern const GUID IID_IDataObject; +typedef struct IDataObjectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDataObject *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDataObject *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDataObject *This); + HRESULT (__attribute__((__stdcall__)) *GetData)( + IDataObject *This, + FORMATETC *pformatetcIn, + STGMEDIUM *pmedium); + HRESULT (__attribute__((__stdcall__)) *GetDataHere)( + IDataObject *This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium); + HRESULT (__attribute__((__stdcall__)) *QueryGetData)( + IDataObject *This, + FORMATETC *pformatetc); + HRESULT (__attribute__((__stdcall__)) *GetCanonicalFormatEtc)( + IDataObject *This, + FORMATETC *pformatectIn, + FORMATETC *pformatetcOut); + HRESULT (__attribute__((__stdcall__)) *SetData)( + IDataObject *This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium, + WINBOOL fRelease); + HRESULT (__attribute__((__stdcall__)) *EnumFormatEtc)( + IDataObject *This, + DWORD dwDirection, + IEnumFORMATETC **ppenumFormatEtc); + HRESULT (__attribute__((__stdcall__)) *DAdvise)( + IDataObject *This, + FORMATETC *pformatetc, + DWORD advf, + IAdviseSink *pAdvSink, + DWORD *pdwConnection); + HRESULT (__attribute__((__stdcall__)) *DUnadvise)( + IDataObject *This, + DWORD dwConnection); + HRESULT (__attribute__((__stdcall__)) *EnumDAdvise)( + IDataObject *This, + IEnumSTATDATA **ppenumAdvise); +} IDataObjectVtbl; +struct IDataObject { + IDataObjectVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IDataObject_RemoteGetData_Proxy( + IDataObject* This, + FORMATETC *pformatetcIn, + STGMEDIUM *pRemoteMedium); +void __attribute__((__stdcall__)) IDataObject_RemoteGetData_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IDataObject_RemoteGetDataHere_Proxy( + IDataObject* This, + FORMATETC *pformatetc, + STGMEDIUM *pRemoteMedium); +void __attribute__((__stdcall__)) IDataObject_RemoteGetDataHere_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IDataObject_RemoteSetData_Proxy( + IDataObject* This, + FORMATETC *pformatetc, + FLAG_STGMEDIUM *pmedium, + WINBOOL fRelease); +void __attribute__((__stdcall__)) IDataObject_RemoteSetData_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IDataObject_GetData_Proxy( + IDataObject* This, + FORMATETC *pformatetcIn, + STGMEDIUM *pmedium); +HRESULT __attribute__((__stdcall__)) IDataObject_GetData_Stub( + IDataObject* This, + FORMATETC *pformatetcIn, + STGMEDIUM *pRemoteMedium); +HRESULT __attribute__((__stdcall__)) IDataObject_GetDataHere_Proxy( + IDataObject* This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium); +HRESULT __attribute__((__stdcall__)) IDataObject_GetDataHere_Stub( + IDataObject* This, + FORMATETC *pformatetc, + STGMEDIUM *pRemoteMedium); +HRESULT __attribute__((__stdcall__)) IDataObject_SetData_Proxy( + IDataObject* This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium, + WINBOOL fRelease); +HRESULT __attribute__((__stdcall__)) IDataObject_SetData_Stub( + IDataObject* This, + FORMATETC *pformatetc, + FLAG_STGMEDIUM *pmedium, + WINBOOL fRelease); +#define __IDataAdviseHolder_INTERFACE_DEFINED__ +typedef IDataAdviseHolder *LPDATAADVISEHOLDER; +extern const GUID IID_IDataAdviseHolder; +typedef struct IDataAdviseHolderVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDataAdviseHolder *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDataAdviseHolder *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDataAdviseHolder *This); + HRESULT (__attribute__((__stdcall__)) *Advise)( + IDataAdviseHolder *This, + IDataObject *pDataObject, + FORMATETC *pFetc, + DWORD advf, + IAdviseSink *pAdvise, + DWORD *pdwConnection); + HRESULT (__attribute__((__stdcall__)) *Unadvise)( + IDataAdviseHolder *This, + DWORD dwConnection); + HRESULT (__attribute__((__stdcall__)) *EnumAdvise)( + IDataAdviseHolder *This, + IEnumSTATDATA **ppenumAdvise); + HRESULT (__attribute__((__stdcall__)) *SendOnDataChange)( + IDataAdviseHolder *This, + IDataObject *pDataObject, + DWORD dwReserved, + DWORD advf); +} IDataAdviseHolderVtbl; +struct IDataAdviseHolder { + IDataAdviseHolderVtbl* lpVtbl; +}; +#define __IMessageFilter_INTERFACE_DEFINED__ +typedef IMessageFilter *LPMESSAGEFILTER; +typedef enum tagCALLTYPE { + CALLTYPE_TOPLEVEL = 1, + CALLTYPE_NESTED = 2, + CALLTYPE_ASYNC = 3, + CALLTYPE_TOPLEVEL_CALLPENDING = 4, + CALLTYPE_ASYNC_CALLPENDING = 5 +} CALLTYPE; +typedef enum tagSERVERCALL { + SERVERCALL_ISHANDLED = 0, + SERVERCALL_REJECTED = 1, + SERVERCALL_RETRYLATER = 2 +} SERVERCALL; +typedef enum tagPENDINGTYPE { + PENDINGTYPE_TOPLEVEL = 1, + PENDINGTYPE_NESTED = 2 +} PENDINGTYPE; +typedef enum tagPENDINGMSG { + PENDINGMSG_CANCELCALL = 0, + PENDINGMSG_WAITNOPROCESS = 1, + PENDINGMSG_WAITDEFPROCESS = 2 +} PENDINGMSG; +typedef struct tagINTERFACEINFO { + IUnknown *pUnk; + IID iid; + WORD wMethod; +} INTERFACEINFO; +typedef struct tagINTERFACEINFO *LPINTERFACEINFO; +extern const GUID IID_IMessageFilter; +typedef struct IMessageFilterVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMessageFilter *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMessageFilter *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMessageFilter *This); + DWORD (__attribute__((__stdcall__)) *HandleInComingCall)( + IMessageFilter *This, + DWORD dwCallType, + HTASK htaskCaller, + DWORD dwTickCount, + LPINTERFACEINFO lpInterfaceInfo); + DWORD (__attribute__((__stdcall__)) *RetryRejectedCall)( + IMessageFilter *This, + HTASK htaskCallee, + DWORD dwTickCount, + DWORD dwRejectType); + DWORD (__attribute__((__stdcall__)) *MessagePending)( + IMessageFilter *This, + HTASK htaskCallee, + DWORD dwTickCount, + DWORD dwPendingType); +} IMessageFilterVtbl; +struct IMessageFilter { + IMessageFilterVtbl* lpVtbl; +}; +extern const FMTID FMTID_SummaryInformation; +extern const FMTID FMTID_DocSummaryInformation; +extern const FMTID FMTID_UserDefinedProperties; +extern const FMTID FMTID_DiscardableInformation; +extern const FMTID FMTID_ImageSummaryInformation; +extern const FMTID FMTID_AudioSummaryInformation; +extern const FMTID FMTID_VideoSummaryInformation; +extern const FMTID FMTID_MediaFileSummaryInformation; +#define __IClassActivator_INTERFACE_DEFINED__ +extern const GUID IID_IClassActivator; +typedef struct IClassActivatorVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IClassActivator *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IClassActivator *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IClassActivator *This); + HRESULT (__attribute__((__stdcall__)) *GetClassObject)( + IClassActivator *This, + const IID *const rclsid, + DWORD dwClassContext, + LCID locale, + const IID *const riid, + void **ppv); +} IClassActivatorVtbl; +struct IClassActivator { + IClassActivatorVtbl* lpVtbl; +}; +#define __IFillLockBytes_INTERFACE_DEFINED__ +extern const GUID IID_IFillLockBytes; +typedef struct IFillLockBytesVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IFillLockBytes *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IFillLockBytes *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IFillLockBytes *This); + HRESULT (__attribute__((__stdcall__)) *FillAppend)( + IFillLockBytes *This, + const void *pv, + ULONG cb, + ULONG *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *FillAt)( + IFillLockBytes *This, + ULARGE_INTEGER ulOffset, + const void *pv, + ULONG cb, + ULONG *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *SetFillSize)( + IFillLockBytes *This, + ULARGE_INTEGER ulSize); + HRESULT (__attribute__((__stdcall__)) *Terminate)( + IFillLockBytes *This, + WINBOOL bCanceled); +} IFillLockBytesVtbl; +struct IFillLockBytes { + IFillLockBytesVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAppend_Proxy( + IFillLockBytes* This, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +void __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAppend_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAt_Proxy( + IFillLockBytes* This, + ULARGE_INTEGER ulOffset, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +void __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAt_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAppend_Proxy( + IFillLockBytes* This, + const void *pv, + ULONG cb, + ULONG *pcbWritten); +HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAppend_Stub( + IFillLockBytes* This, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAt_Proxy( + IFillLockBytes* This, + ULARGE_INTEGER ulOffset, + const void *pv, + ULONG cb, + ULONG *pcbWritten); +HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAt_Stub( + IFillLockBytes* This, + ULARGE_INTEGER ulOffset, + const byte *pv, + ULONG cb, + ULONG *pcbWritten); +#define __IProgressNotify_INTERFACE_DEFINED__ +extern const GUID IID_IProgressNotify; +typedef struct IProgressNotifyVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IProgressNotify *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IProgressNotify *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IProgressNotify *This); + HRESULT (__attribute__((__stdcall__)) *OnProgress)( + IProgressNotify *This, + DWORD dwProgressCurrent, + DWORD dwProgressMaximum, + WINBOOL fAccurate, + WINBOOL fOwner); +} IProgressNotifyVtbl; +struct IProgressNotify { + IProgressNotifyVtbl* lpVtbl; +}; +#define __ILayoutStorage_INTERFACE_DEFINED__ +typedef struct tagStorageLayout { + DWORD LayoutType; + OLECHAR *pwcsElementName; + LARGE_INTEGER cOffset; + LARGE_INTEGER cBytes; +} StorageLayout; +extern const GUID IID_ILayoutStorage; +typedef struct ILayoutStorageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ILayoutStorage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ILayoutStorage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ILayoutStorage *This); + HRESULT (__attribute__((__stdcall__)) *LayoutScript)( + ILayoutStorage *This, + StorageLayout *pStorageLayout, + DWORD nEntries, + DWORD glfInterleavedFlag); + HRESULT (__attribute__((__stdcall__)) *BeginMonitor)( + ILayoutStorage *This); + HRESULT (__attribute__((__stdcall__)) *EndMonitor)( + ILayoutStorage *This); + HRESULT (__attribute__((__stdcall__)) *ReLayoutDocfile)( + ILayoutStorage *This, + OLECHAR *pwcsNewDfName); + HRESULT (__attribute__((__stdcall__)) *ReLayoutDocfileOnILockBytes)( + ILayoutStorage *This, + ILockBytes *pILockBytes); +} ILayoutStorageVtbl; +struct ILayoutStorage { + ILayoutStorageVtbl* lpVtbl; +}; +#define __IBlockingLock_INTERFACE_DEFINED__ +extern const GUID IID_IBlockingLock; +typedef struct IBlockingLockVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBlockingLock *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBlockingLock *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBlockingLock *This); + HRESULT (__attribute__((__stdcall__)) *Lock)( + IBlockingLock *This, + DWORD dwTimeout); + HRESULT (__attribute__((__stdcall__)) *Unlock)( + IBlockingLock *This); +} IBlockingLockVtbl; +struct IBlockingLock { + IBlockingLockVtbl* lpVtbl; +}; +#define __ITimeAndNoticeControl_INTERFACE_DEFINED__ +extern const GUID IID_ITimeAndNoticeControl; +typedef struct ITimeAndNoticeControlVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITimeAndNoticeControl *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITimeAndNoticeControl *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITimeAndNoticeControl *This); + HRESULT (__attribute__((__stdcall__)) *SuppressChanges)( + ITimeAndNoticeControl *This, + DWORD res1, + DWORD res2); +} ITimeAndNoticeControlVtbl; +struct ITimeAndNoticeControl { + ITimeAndNoticeControlVtbl* lpVtbl; +}; +#define __IOplockStorage_INTERFACE_DEFINED__ +extern const GUID IID_IOplockStorage; +typedef struct IOplockStorageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOplockStorage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOplockStorage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOplockStorage *This); + HRESULT (__attribute__((__stdcall__)) *CreateStorageEx)( + IOplockStorage *This, + LPCWSTR pwcsName, + DWORD grfMode, + DWORD stgfmt, + DWORD grfAttrs, + const IID *const riid, + void **ppstgOpen); + HRESULT (__attribute__((__stdcall__)) *OpenStorageEx)( + IOplockStorage *This, + LPCWSTR pwcsName, + DWORD grfMode, + DWORD stgfmt, + DWORD grfAttrs, + const IID *const riid, + void **ppstgOpen); +} IOplockStorageVtbl; +struct IOplockStorage { + IOplockStorageVtbl* lpVtbl; +}; +#define __IDirectWriterLock_INTERFACE_DEFINED__ +extern const GUID IID_IDirectWriterLock; +typedef struct IDirectWriterLockVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDirectWriterLock *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDirectWriterLock *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDirectWriterLock *This); + HRESULT (__attribute__((__stdcall__)) *WaitForWriteAccess)( + IDirectWriterLock *This, + DWORD dwTimeout); + HRESULT (__attribute__((__stdcall__)) *ReleaseWriteAccess)( + IDirectWriterLock *This); + HRESULT (__attribute__((__stdcall__)) *HaveWriteAccess)( + IDirectWriterLock *This); +} IDirectWriterLockVtbl; +struct IDirectWriterLock { + IDirectWriterLockVtbl* lpVtbl; +}; +#define __IUrlMon_INTERFACE_DEFINED__ +extern const GUID IID_IUrlMon; +typedef struct IUrlMonVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IUrlMon *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IUrlMon *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IUrlMon *This); + HRESULT (__attribute__((__stdcall__)) *AsyncGetClassBits)( + IUrlMon *This, + const IID *const rclsid, + LPCWSTR pszTYPE, + LPCWSTR pszExt, + DWORD dwFileVersionMS, + DWORD dwFileVersionLS, + LPCWSTR pszCodeBase, + IBindCtx *pbc, + DWORD dwClassContext, + const IID *const riid, + DWORD flags); +} IUrlMonVtbl; +struct IUrlMon { + IUrlMonVtbl* lpVtbl; +}; +#define __IForegroundTransfer_INTERFACE_DEFINED__ +extern const GUID IID_IForegroundTransfer; +typedef struct IForegroundTransferVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IForegroundTransfer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IForegroundTransfer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IForegroundTransfer *This); + HRESULT (__attribute__((__stdcall__)) *AllowForegroundTransfer)( + IForegroundTransfer *This, + void *lpvReserved); +} IForegroundTransferVtbl; +struct IForegroundTransfer { + IForegroundTransferVtbl* lpVtbl; +}; +#define __IThumbnailExtractor_INTERFACE_DEFINED__ +extern const GUID IID_IThumbnailExtractor; +typedef struct IThumbnailExtractorVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IThumbnailExtractor *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IThumbnailExtractor *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IThumbnailExtractor *This); + HRESULT (__attribute__((__stdcall__)) *ExtractThumbnail)( + IThumbnailExtractor *This, + IStorage *pStg, + ULONG ulLength, + ULONG ulHeight, + ULONG *pulOutputLength, + ULONG *pulOutputHeight, + HBITMAP *phOutputBitmap); + HRESULT (__attribute__((__stdcall__)) *OnFileUpdated)( + IThumbnailExtractor *This, + IStorage *pStg); +} IThumbnailExtractorVtbl; +struct IThumbnailExtractor { + IThumbnailExtractorVtbl* lpVtbl; +}; +#define __IDummyHICONIncluder_INTERFACE_DEFINED__ +extern const GUID IID_IDummyHICONIncluder; +typedef struct IDummyHICONIncluderVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDummyHICONIncluder *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDummyHICONIncluder *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDummyHICONIncluder *This); + HRESULT (__attribute__((__stdcall__)) *Dummy)( + IDummyHICONIncluder *This, + HICON h1, + HDC h2); +} IDummyHICONIncluderVtbl; +struct IDummyHICONIncluder { + IDummyHICONIncluderVtbl* lpVtbl; +}; +typedef enum tagApplicationType { + ServerApplication = 0, + LibraryApplication = 1 +} ApplicationType; +typedef enum tagShutdownType { + IdleShutdown = 0, + ForcedShutdown = 1 +} ShutdownType; +#define __IProcessLock_INTERFACE_DEFINED__ +extern const GUID IID_IProcessLock; +typedef struct IProcessLockVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IProcessLock *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IProcessLock *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IProcessLock *This); + ULONG (__attribute__((__stdcall__)) *AddRefOnProcess)( + IProcessLock *This); + ULONG (__attribute__((__stdcall__)) *ReleaseRefOnProcess)( + IProcessLock *This); +} IProcessLockVtbl; +struct IProcessLock { + IProcessLockVtbl* lpVtbl; +}; +#define __ISurrogateService_INTERFACE_DEFINED__ +extern const GUID IID_ISurrogateService; +typedef struct ISurrogateServiceVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISurrogateService *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISurrogateService *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISurrogateService *This); + HRESULT (__attribute__((__stdcall__)) *Init)( + ISurrogateService *This, + const GUID *const rguidProcessID, + IProcessLock *pProcessLock, + WINBOOL *pfApplicationAware); + HRESULT (__attribute__((__stdcall__)) *ApplicationLaunch)( + ISurrogateService *This, + const GUID *const rguidApplID, + ApplicationType appType); + HRESULT (__attribute__((__stdcall__)) *ApplicationFree)( + ISurrogateService *This, + const GUID *const rguidApplID); + HRESULT (__attribute__((__stdcall__)) *CatalogRefresh)( + ISurrogateService *This, + ULONG ulReserved); + HRESULT (__attribute__((__stdcall__)) *ProcessShutdown)( + ISurrogateService *This, + ShutdownType shutdownType); +} ISurrogateServiceVtbl; +struct ISurrogateService { + ISurrogateServiceVtbl* lpVtbl; +}; +#define __IInitializeSpy_INTERFACE_DEFINED__ +typedef IInitializeSpy *LPINITIALIZESPY; +extern const GUID IID_IInitializeSpy; +typedef struct IInitializeSpyVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInitializeSpy *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInitializeSpy *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInitializeSpy *This); + HRESULT (__attribute__((__stdcall__)) *PreInitialize)( + IInitializeSpy *This, + DWORD dwCoInit, + DWORD dwCurThreadAptRefs); + HRESULT (__attribute__((__stdcall__)) *PostInitialize)( + IInitializeSpy *This, + HRESULT hrCoInit, + DWORD dwCoInit, + DWORD dwNewThreadAptRefs); + HRESULT (__attribute__((__stdcall__)) *PreUninitialize)( + IInitializeSpy *This, + DWORD dwCurThreadAptRefs); + HRESULT (__attribute__((__stdcall__)) *PostUninitialize)( + IInitializeSpy *This, + DWORD dwNewThreadAptRefs); +} IInitializeSpyVtbl; +struct IInitializeSpy { + IInitializeSpyVtbl* lpVtbl; +}; +#define __IApartmentShutdown_INTERFACE_DEFINED__ +extern const GUID IID_IApartmentShutdown; +typedef struct IApartmentShutdownVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IApartmentShutdown *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IApartmentShutdown *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IApartmentShutdown *This); + void (__attribute__((__stdcall__)) *OnUninitialize)( + IApartmentShutdown *This, + UINT64 ui64ApartmentIdentifier); +} IApartmentShutdownVtbl; +struct IApartmentShutdown { + IApartmentShutdownVtbl* lpVtbl; +}; +ULONG __attribute__((__stdcall__)) SNB_UserSize (ULONG *, ULONG, SNB *); +unsigned char * __attribute__((__stdcall__)) SNB_UserMarshal (ULONG *, unsigned char *, SNB *); +unsigned char * __attribute__((__stdcall__)) SNB_UserUnmarshal(ULONG *, unsigned char *, SNB *); +void __attribute__((__stdcall__)) SNB_UserFree (ULONG *, SNB *); +ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *); +void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *); +ULONG __attribute__((__stdcall__)) STGMEDIUM_UserSize (ULONG *, ULONG, STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserMarshal (ULONG *, unsigned char *, STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *); +void __attribute__((__stdcall__)) STGMEDIUM_UserFree (ULONG *, STGMEDIUM *); +ULONG __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserSize (ULONG *, ULONG, ASYNC_STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserMarshal (ULONG *, unsigned char *, ASYNC_STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, ASYNC_STGMEDIUM *); +void __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserFree (ULONG *, ASYNC_STGMEDIUM *); +ULONG __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserSize (ULONG *, ULONG, FLAG_STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserMarshal (ULONG *, unsigned char *, FLAG_STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, FLAG_STGMEDIUM *); +void __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserFree (ULONG *, FLAG_STGMEDIUM *); +ULONG __attribute__((__stdcall__)) HBITMAP_UserSize (ULONG *, ULONG, HBITMAP *); +unsigned char * __attribute__((__stdcall__)) HBITMAP_UserMarshal (ULONG *, unsigned char *, HBITMAP *); +unsigned char * __attribute__((__stdcall__)) HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *); +void __attribute__((__stdcall__)) HBITMAP_UserFree (ULONG *, HBITMAP *); +ULONG __attribute__((__stdcall__)) HICON_UserSize (ULONG *, ULONG, HICON *); +unsigned char * __attribute__((__stdcall__)) HICON_UserMarshal (ULONG *, unsigned char *, HICON *); +unsigned char * __attribute__((__stdcall__)) HICON_UserUnmarshal(ULONG *, unsigned char *, HICON *); +void __attribute__((__stdcall__)) HICON_UserFree (ULONG *, HICON *); +ULONG __attribute__((__stdcall__)) HDC_UserSize (ULONG *, ULONG, HDC *); +unsigned char * __attribute__((__stdcall__)) HDC_UserMarshal (ULONG *, unsigned char *, HDC *); +unsigned char * __attribute__((__stdcall__)) HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *); +void __attribute__((__stdcall__)) HDC_UserFree (ULONG *, HDC *); +extern __declspec (dllimport) DWORD __attribute__((__stdcall__)) CoBuildVersion (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoInitialize (LPVOID pvReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRegisterMallocSpy (LPMALLOCSPY pMallocSpy); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRevokeMallocSpy (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoCreateStandardMalloc (DWORD memctx, IMalloc **ppMalloc); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRegisterInitializeSpy (LPINITIALIZESPY pSpy, ULARGE_INTEGER *puliCookie); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRevokeInitializeSpy (ULARGE_INTEGER uliCookie); +typedef enum tagCOMSD { + SD_LAUNCHPERMISSIONS = 0, + SD_ACCESSPERMISSIONS = 1, + SD_LAUNCHRESTRICTIONS = 2, + SD_ACCESSRESTRICTIONS = 3 +} COMSD; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetSystemSecurityPermissions (COMSD comSDType, PSECURITY_DESCRIPTOR *ppSD); +extern __declspec (dllimport) HINSTANCE __attribute__((__stdcall__)) CoLoadLibrary (LPOLESTR lpszLibName, WINBOOL bAutoFree); +extern __declspec (dllimport) void __attribute__((__stdcall__)) CoFreeLibrary (HINSTANCE hInst); +extern __declspec (dllimport) void __attribute__((__stdcall__)) CoFreeAllLibraries (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetInstanceFromFile (COSERVERINFO *pServerInfo, CLSID *pClsid, IUnknown *punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR *pwszName, DWORD dwCount, MULTI_QI *pResults); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetInstanceFromIStorage (COSERVERINFO *pServerInfo, CLSID *pClsid, IUnknown *punkOuter, DWORD dwClsCtx, struct IStorage *pstg, DWORD dwCount, MULTI_QI *pResults); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoAllowSetForegroundWindow (IUnknown *pUnk, LPVOID lpvReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) DcomChannelSetHResult (LPVOID pvReserved, ULONG *pulReserved, HRESULT appsHR); +extern __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CoIsOle1Class (const IID *const rclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CLSIDFromProgIDEx (LPCOLESTR lpszProgID, LPCLSID lpclsid); +extern __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CoFileTimeToDosDateTime (FILETIME *lpFileTime, LPWORD lpDosDate, LPWORD lpDosTime); +extern __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CoDosDateTimeToFileTime (WORD nDosDate, WORD nDosTime, FILETIME *lpFileTime); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoFileTimeNow (FILETIME *lpFileTime); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRegisterMessageFilter (LPMESSAGEFILTER lpMessageFilter, LPMESSAGEFILTER *lplpMessageFilter); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoRegisterChannelHook (const GUID *const ExtensionUuid, IChannelHook *pChannelHook); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoTreatAsClass (const IID *const clsidOld, const IID *const clsidNew); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateDataAdviseHolder (LPDATAADVISEHOLDER *ppDAHolder); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateDataCache (LPUNKNOWN pUnkOuter, const IID *const rclsid, const IID *const iid, LPVOID *ppv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgOpenLayoutDocfile (OLECHAR const *pwcsDfName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgCreateDocfile (const WCHAR *pwcsName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgCreateDocfileOnILockBytes (ILockBytes *plkbyt, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgOpenStorage (const WCHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgOpenStorageOnILockBytes (ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgIsStorageFile (const WCHAR *pwcsName); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgIsStorageILockBytes (ILockBytes *plkbyt); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgSetTimes (const WCHAR *lpszName, const FILETIME *pctime, const FILETIME *patime, const FILETIME *pmtime); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgOpenAsyncDocfileOnIFillLockBytes (IFillLockBytes *pflb, DWORD grfMode, DWORD asyncFlags, IStorage **ppstgOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgGetIFillLockBytesOnILockBytes (ILockBytes *pilb, IFillLockBytes **ppflb); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgGetIFillLockBytesOnFile (OLECHAR const *pwcsName, IFillLockBytes **ppflb); +#define STGOPTIONS_VERSION 2 +typedef struct tagSTGOPTIONS { + USHORT usVersion; + USHORT reserved; + ULONG ulSectorSize; + const WCHAR *pwcsTemplateFile; +} STGOPTIONS; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgCreateStorageEx (const WCHAR *pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS *pStgOptions, PSECURITY_DESCRIPTOR pSecurityDescriptor, const IID *const riid, void **ppObjectOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgOpenStorageEx (const WCHAR *pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS *pStgOptions, PSECURITY_DESCRIPTOR pSecurityDescriptor, const IID *const riid, void **ppObjectOpen); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) BindMoniker (LPMONIKER pmk, DWORD grfOpt, const IID *const iidResult, LPVOID *ppvResult); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoGetObject (LPCWSTR pszName, BIND_OPTS *pBindOptions, const IID *const riid, void **ppv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) MkParseDisplayName (LPBC pbc, LPCOLESTR szUserName, ULONG *pchEaten, LPMONIKER *ppmk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) MonikerRelativePathTo (LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER *ppmkRelPath, WINBOOL dwReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) MonikerCommonPrefixWith (LPMONIKER pmkThis, LPMONIKER pmkOther, LPMONIKER *ppmkCommon); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateBindCtx (DWORD reserved, LPBC *ppbc); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateGenericComposite (LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER *ppmkComposite); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetClassFile (LPCOLESTR szFilename, CLSID *pclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateClassMoniker (const IID *const rclsid, LPMONIKER *ppmk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateFileMoniker (LPCOLESTR lpszPathName, LPMONIKER *ppmk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateItemMoniker (LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER *ppmk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateAntiMoniker (LPMONIKER *ppmk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreatePointerMoniker (LPUNKNOWN punk, LPMONIKER *ppmk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateObjrefMoniker (LPUNKNOWN punk, LPMONIKER *ppmk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CoInstall (IBindCtx *pbc, DWORD dwFlags, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, LPWSTR pszCodeBase); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetRunningObjectTable (DWORD reserved, LPRUNNINGOBJECTTABLE *pprot); +#undef interface +#define interface struct +#define __urlmon_h__ +#define __IPersistMoniker_FWD_DEFINED__ +typedef struct IPersistMoniker IPersistMoniker; +#define __IMonikerProp_FWD_DEFINED__ +typedef struct IMonikerProp IMonikerProp; +#define __IBindProtocol_FWD_DEFINED__ +typedef struct IBindProtocol IBindProtocol; +#define __IBinding_FWD_DEFINED__ +typedef struct IBinding IBinding; +#define __IBindStatusCallback_FWD_DEFINED__ +typedef struct IBindStatusCallback IBindStatusCallback; +#define __IBindStatusCallbackEx_FWD_DEFINED__ +typedef struct IBindStatusCallbackEx IBindStatusCallbackEx; +#define __IAuthenticate_FWD_DEFINED__ +typedef struct IAuthenticate IAuthenticate; +#define __IAuthenticateEx_FWD_DEFINED__ +typedef struct IAuthenticateEx IAuthenticateEx; +#define __IHttpNegotiate_FWD_DEFINED__ +typedef struct IHttpNegotiate IHttpNegotiate; +#define __IHttpNegotiate2_FWD_DEFINED__ +typedef struct IHttpNegotiate2 IHttpNegotiate2; +#define __IHttpNegotiate3_FWD_DEFINED__ +typedef struct IHttpNegotiate3 IHttpNegotiate3; +#define __IWinInetFileStream_FWD_DEFINED__ +typedef struct IWinInetFileStream IWinInetFileStream; +#define __IWindowForBindingUI_FWD_DEFINED__ +typedef struct IWindowForBindingUI IWindowForBindingUI; +#define __ICodeInstall_FWD_DEFINED__ +typedef struct ICodeInstall ICodeInstall; +#define __IUri_FWD_DEFINED__ +typedef struct IUri IUri; +#define __IUriContainer_FWD_DEFINED__ +typedef struct IUriContainer IUriContainer; +#define __IUriBuilder_FWD_DEFINED__ +typedef struct IUriBuilder IUriBuilder; +#define __IUriBuilderFactory_FWD_DEFINED__ +typedef struct IUriBuilderFactory IUriBuilderFactory; +#define __IWinInetInfo_FWD_DEFINED__ +typedef struct IWinInetInfo IWinInetInfo; +#define __IHttpSecurity_FWD_DEFINED__ +typedef struct IHttpSecurity IHttpSecurity; +#define __IWinInetHttpInfo_FWD_DEFINED__ +typedef struct IWinInetHttpInfo IWinInetHttpInfo; +#define __IWinInetHttpTimeouts_FWD_DEFINED__ +typedef struct IWinInetHttpTimeouts IWinInetHttpTimeouts; +#define __IWinInetCacheHints_FWD_DEFINED__ +typedef struct IWinInetCacheHints IWinInetCacheHints; +#define __IWinInetCacheHints2_FWD_DEFINED__ +typedef struct IWinInetCacheHints2 IWinInetCacheHints2; +#define __IBindHost_FWD_DEFINED__ +typedef struct IBindHost IBindHost; +#define __IInternet_FWD_DEFINED__ +typedef struct IInternet IInternet; +#define __IInternetBindInfo_FWD_DEFINED__ +typedef struct IInternetBindInfo IInternetBindInfo; +#define __IInternetBindInfoEx_FWD_DEFINED__ +typedef struct IInternetBindInfoEx IInternetBindInfoEx; +#define __IInternetProtocolRoot_FWD_DEFINED__ +typedef struct IInternetProtocolRoot IInternetProtocolRoot; +#define __IInternetProtocol_FWD_DEFINED__ +typedef struct IInternetProtocol IInternetProtocol; +#define __IInternetProtocolEx_FWD_DEFINED__ +typedef struct IInternetProtocolEx IInternetProtocolEx; +#define __IInternetProtocolSink_FWD_DEFINED__ +typedef struct IInternetProtocolSink IInternetProtocolSink; +#define __IInternetProtocolSinkStackable_FWD_DEFINED__ +typedef struct IInternetProtocolSinkStackable IInternetProtocolSinkStackable; +#define __IInternetSession_FWD_DEFINED__ +typedef struct IInternetSession IInternetSession; +#define __IInternetThreadSwitch_FWD_DEFINED__ +typedef struct IInternetThreadSwitch IInternetThreadSwitch; +#define __IInternetPriority_FWD_DEFINED__ +typedef struct IInternetPriority IInternetPriority; +#define __IInternetProtocolInfo_FWD_DEFINED__ +typedef struct IInternetProtocolInfo IInternetProtocolInfo; +#define __IInternetSecurityMgrSite_FWD_DEFINED__ +typedef struct IInternetSecurityMgrSite IInternetSecurityMgrSite; +#define __IInternetSecurityManager_FWD_DEFINED__ +typedef struct IInternetSecurityManager IInternetSecurityManager; +#define __IInternetSecurityManagerEx_FWD_DEFINED__ +typedef struct IInternetSecurityManagerEx IInternetSecurityManagerEx; +#define __IInternetSecurityManagerEx2_FWD_DEFINED__ +typedef struct IInternetSecurityManagerEx2 IInternetSecurityManagerEx2; +#define __IZoneIdentifier_FWD_DEFINED__ +typedef struct IZoneIdentifier IZoneIdentifier; +#define __IInternetHostSecurityManager_FWD_DEFINED__ +typedef struct IInternetHostSecurityManager IInternetHostSecurityManager; +#define __IInternetZoneManager_FWD_DEFINED__ +typedef struct IInternetZoneManager IInternetZoneManager; +#define __IInternetZoneManagerEx_FWD_DEFINED__ +typedef struct IInternetZoneManagerEx IInternetZoneManagerEx; +#define __IInternetZoneManagerEx2_FWD_DEFINED__ +typedef struct IInternetZoneManagerEx2 IInternetZoneManagerEx2; +#define __ISoftDistExt_FWD_DEFINED__ +typedef struct ISoftDistExt ISoftDistExt; +#define __ICatalogFileInfo_FWD_DEFINED__ +typedef struct ICatalogFileInfo ICatalogFileInfo; +#define __IDataFilter_FWD_DEFINED__ +typedef struct IDataFilter IDataFilter; +#define __IEncodingFilterFactory_FWD_DEFINED__ +typedef struct IEncodingFilterFactory IEncodingFilterFactory; +#define __IWrappedProtocol_FWD_DEFINED__ +typedef struct IWrappedProtocol IWrappedProtocol; +#define __IGetBindHandle_FWD_DEFINED__ +typedef struct IGetBindHandle IGetBindHandle; +#define __IBindCallbackRedirect_FWD_DEFINED__ +typedef struct IBindCallbackRedirect IBindCallbackRedirect; +#undef interface +#define interface struct +#undef interface +#define interface struct +#define __oleidl_h__ +#define __IOleAdviseHolder_FWD_DEFINED__ +typedef struct IOleAdviseHolder IOleAdviseHolder; +#define __IOleCache_FWD_DEFINED__ +typedef struct IOleCache IOleCache; +#define __IOleCache2_FWD_DEFINED__ +typedef struct IOleCache2 IOleCache2; +#define __IOleCacheControl_FWD_DEFINED__ +typedef struct IOleCacheControl IOleCacheControl; +#define __IParseDisplayName_FWD_DEFINED__ +typedef struct IParseDisplayName IParseDisplayName; +#define __IOleContainer_FWD_DEFINED__ +typedef struct IOleContainer IOleContainer; +#define __IOleClientSite_FWD_DEFINED__ +typedef struct IOleClientSite IOleClientSite; +#define __IOleObject_FWD_DEFINED__ +typedef struct IOleObject IOleObject; +#define __IOleWindow_FWD_DEFINED__ +typedef struct IOleWindow IOleWindow; +#define __IOleLink_FWD_DEFINED__ +typedef struct IOleLink IOleLink; +#define __IOleItemContainer_FWD_DEFINED__ +typedef struct IOleItemContainer IOleItemContainer; +#define __IOleInPlaceUIWindow_FWD_DEFINED__ +typedef struct IOleInPlaceUIWindow IOleInPlaceUIWindow; +#define __IOleInPlaceActiveObject_FWD_DEFINED__ +typedef struct IOleInPlaceActiveObject IOleInPlaceActiveObject; +#define __IOleInPlaceFrame_FWD_DEFINED__ +typedef struct IOleInPlaceFrame IOleInPlaceFrame; +#define __IOleInPlaceObject_FWD_DEFINED__ +typedef struct IOleInPlaceObject IOleInPlaceObject; +#define __IOleInPlaceSite_FWD_DEFINED__ +typedef struct IOleInPlaceSite IOleInPlaceSite; +#define __IContinue_FWD_DEFINED__ +typedef struct IContinue IContinue; +#define __IViewObject_FWD_DEFINED__ +typedef struct IViewObject IViewObject; +#define __IViewObject2_FWD_DEFINED__ +typedef struct IViewObject2 IViewObject2; +#define __IDropSource_FWD_DEFINED__ +typedef struct IDropSource IDropSource; +#define __IDropTarget_FWD_DEFINED__ +typedef struct IDropTarget IDropTarget; +#define __IDropSourceNotify_FWD_DEFINED__ +typedef struct IDropSourceNotify IDropSourceNotify; +#define __IEnumOLEVERB_FWD_DEFINED__ +typedef struct IEnumOLEVERB IEnumOLEVERB; +#undef interface +#define interface struct +#define __IOleAdviseHolder_INTERFACE_DEFINED__ +typedef IOleAdviseHolder *LPOLEADVISEHOLDER; +extern const GUID IID_IOleAdviseHolder; +typedef struct IOleAdviseHolderVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleAdviseHolder *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleAdviseHolder *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleAdviseHolder *This); + HRESULT (__attribute__((__stdcall__)) *Advise)( + IOleAdviseHolder *This, + IAdviseSink *pAdvise, + DWORD *pdwConnection); + HRESULT (__attribute__((__stdcall__)) *Unadvise)( + IOleAdviseHolder *This, + DWORD dwConnection); + HRESULT (__attribute__((__stdcall__)) *EnumAdvise)( + IOleAdviseHolder *This, + IEnumSTATDATA **ppenumAdvise); + HRESULT (__attribute__((__stdcall__)) *SendOnRename)( + IOleAdviseHolder *This, + IMoniker *pmk); + HRESULT (__attribute__((__stdcall__)) *SendOnSave)( + IOleAdviseHolder *This); + HRESULT (__attribute__((__stdcall__)) *SendOnClose)( + IOleAdviseHolder *This); +} IOleAdviseHolderVtbl; +struct IOleAdviseHolder { + IOleAdviseHolderVtbl* lpVtbl; +}; +#define __IOleCache_INTERFACE_DEFINED__ +typedef IOleCache *LPOLECACHE; +extern const GUID IID_IOleCache; +typedef struct IOleCacheVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleCache *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleCache *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleCache *This); + HRESULT (__attribute__((__stdcall__)) *Cache)( + IOleCache *This, + FORMATETC *pformatetc, + DWORD advf, + DWORD *pdwConnection); + HRESULT (__attribute__((__stdcall__)) *Uncache)( + IOleCache *This, + DWORD dwConnection); + HRESULT (__attribute__((__stdcall__)) *EnumCache)( + IOleCache *This, + IEnumSTATDATA **ppenumSTATDATA); + HRESULT (__attribute__((__stdcall__)) *InitCache)( + IOleCache *This, + IDataObject *pDataObject); + HRESULT (__attribute__((__stdcall__)) *SetData)( + IOleCache *This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium, + WINBOOL fRelease); +} IOleCacheVtbl; +struct IOleCache { + IOleCacheVtbl* lpVtbl; +}; +#define __IOleCache2_INTERFACE_DEFINED__ +typedef IOleCache2 *LPOLECACHE2; +#define UPDFCACHE_NODATACACHE (0x1) +#define UPDFCACHE_ONSAVECACHE (0x2) +#define UPDFCACHE_ONSTOPCACHE (0x4) +#define UPDFCACHE_NORMALCACHE (0x8) +#define UPDFCACHE_IFBLANK (0x10) +#define UPDFCACHE_ONLYIFBLANK (0x80000000) +#define UPDFCACHE_IFBLANKORONSAVECACHE (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE) +#define UPDFCACHE_ALL ((DWORD)~UPDFCACHE_ONLYIFBLANK) +#define UPDFCACHE_ALLBUTNODATACACHE (UPDFCACHE_ALL & (DWORD)~UPDFCACHE_NODATACACHE) +typedef enum tagDISCARDCACHE { + DISCARDCACHE_SAVEIFDIRTY = 0, + DISCARDCACHE_NOSAVE = 1 +} DISCARDCACHE; +extern const GUID IID_IOleCache2; +typedef struct IOleCache2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleCache2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleCache2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleCache2 *This); + HRESULT (__attribute__((__stdcall__)) *Cache)( + IOleCache2 *This, + FORMATETC *pformatetc, + DWORD advf, + DWORD *pdwConnection); + HRESULT (__attribute__((__stdcall__)) *Uncache)( + IOleCache2 *This, + DWORD dwConnection); + HRESULT (__attribute__((__stdcall__)) *EnumCache)( + IOleCache2 *This, + IEnumSTATDATA **ppenumSTATDATA); + HRESULT (__attribute__((__stdcall__)) *InitCache)( + IOleCache2 *This, + IDataObject *pDataObject); + HRESULT (__attribute__((__stdcall__)) *SetData)( + IOleCache2 *This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium, + WINBOOL fRelease); + HRESULT (__attribute__((__stdcall__)) *UpdateCache)( + IOleCache2 *This, + LPDATAOBJECT pDataObject, + DWORD grfUpdf, + LPVOID pReserved); + HRESULT (__attribute__((__stdcall__)) *DiscardCache)( + IOleCache2 *This, + DWORD dwDiscardOptions); +} IOleCache2Vtbl; +struct IOleCache2 { + IOleCache2Vtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IOleCache2_RemoteUpdateCache_Proxy( + IOleCache2* This, + LPDATAOBJECT pDataObject, + DWORD grfUpdf, + LONG_PTR pReserved); +void __attribute__((__stdcall__)) IOleCache2_RemoteUpdateCache_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IOleCache2_UpdateCache_Proxy( + IOleCache2* This, + LPDATAOBJECT pDataObject, + DWORD grfUpdf, + LPVOID pReserved); +HRESULT __attribute__((__stdcall__)) IOleCache2_UpdateCache_Stub( + IOleCache2* This, + LPDATAOBJECT pDataObject, + DWORD grfUpdf, + LONG_PTR pReserved); +#define __IOleCacheControl_INTERFACE_DEFINED__ +typedef IOleCacheControl *LPOLECACHECONTROL; +extern const GUID IID_IOleCacheControl; +typedef struct IOleCacheControlVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleCacheControl *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleCacheControl *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleCacheControl *This); + HRESULT (__attribute__((__stdcall__)) *OnRun)( + IOleCacheControl *This, + LPDATAOBJECT pDataObject); + HRESULT (__attribute__((__stdcall__)) *OnStop)( + IOleCacheControl *This); +} IOleCacheControlVtbl; +struct IOleCacheControl { + IOleCacheControlVtbl* lpVtbl; +}; +#define __IParseDisplayName_INTERFACE_DEFINED__ +typedef IParseDisplayName *LPPARSEDISPLAYNAME; +extern const GUID IID_IParseDisplayName; +typedef struct IParseDisplayNameVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IParseDisplayName *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IParseDisplayName *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IParseDisplayName *This); + HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)( + IParseDisplayName *This, + IBindCtx *pbc, + LPOLESTR pszDisplayName, + ULONG *pchEaten, + IMoniker **ppmkOut); +} IParseDisplayNameVtbl; +struct IParseDisplayName { + IParseDisplayNameVtbl* lpVtbl; +}; +#define __IOleContainer_INTERFACE_DEFINED__ +typedef IOleContainer *LPOLECONTAINER; +extern const GUID IID_IOleContainer; +typedef struct IOleContainerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleContainer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleContainer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleContainer *This); + HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)( + IOleContainer *This, + IBindCtx *pbc, + LPOLESTR pszDisplayName, + ULONG *pchEaten, + IMoniker **ppmkOut); + HRESULT (__attribute__((__stdcall__)) *EnumObjects)( + IOleContainer *This, + DWORD grfFlags, + IEnumUnknown **ppenum); + HRESULT (__attribute__((__stdcall__)) *LockContainer)( + IOleContainer *This, + WINBOOL fLock); +} IOleContainerVtbl; +struct IOleContainer { + IOleContainerVtbl* lpVtbl; +}; +#define __IOleClientSite_INTERFACE_DEFINED__ +typedef IOleClientSite *LPOLECLIENTSITE; +extern const GUID IID_IOleClientSite; +typedef struct IOleClientSiteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleClientSite *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleClientSite *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleClientSite *This); + HRESULT (__attribute__((__stdcall__)) *SaveObject)( + IOleClientSite *This); + HRESULT (__attribute__((__stdcall__)) *GetMoniker)( + IOleClientSite *This, + DWORD dwAssign, + DWORD dwWhichMoniker, + IMoniker **ppmk); + HRESULT (__attribute__((__stdcall__)) *GetContainer)( + IOleClientSite *This, + IOleContainer **ppContainer); + HRESULT (__attribute__((__stdcall__)) *ShowObject)( + IOleClientSite *This); + HRESULT (__attribute__((__stdcall__)) *OnShowWindow)( + IOleClientSite *This, + WINBOOL fShow); + HRESULT (__attribute__((__stdcall__)) *RequestNewObjectLayout)( + IOleClientSite *This); +} IOleClientSiteVtbl; +struct IOleClientSite { + IOleClientSiteVtbl* lpVtbl; +}; +#define __IOleObject_INTERFACE_DEFINED__ +typedef IOleObject *LPOLEOBJECT; +typedef enum tagOLEGETMONIKER { + OLEGETMONIKER_ONLYIFTHERE = 1, + OLEGETMONIKER_FORCEASSIGN = 2, + OLEGETMONIKER_UNASSIGN = 3, + OLEGETMONIKER_TEMPFORUSER = 4 +} OLEGETMONIKER; +typedef enum tagOLEWHICHMK { + OLEWHICHMK_CONTAINER = 1, + OLEWHICHMK_OBJREL = 2, + OLEWHICHMK_OBJFULL = 3 +} OLEWHICHMK; +typedef enum tagUSERCLASSTYPE { + USERCLASSTYPE_FULL = 1, + USERCLASSTYPE_SHORT = 2, + USERCLASSTYPE_APPNAME = 3 +} USERCLASSTYPE; +typedef enum tagOLEMISC { + OLEMISC_RECOMPOSEONRESIZE = 0x1, + OLEMISC_ONLYICONIC = 0x2, + OLEMISC_INSERTNOTREPLACE = 0x4, + OLEMISC_STATIC = 0x8, + OLEMISC_CANTLINKINSIDE = 0x10, + OLEMISC_CANLINKBYOLE1 = 0x20, + OLEMISC_ISLINKOBJECT = 0x40, + OLEMISC_INSIDEOUT = 0x80, + OLEMISC_ACTIVATEWHENVISIBLE = 0x100, + OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, + OLEMISC_INVISIBLEATRUNTIME = 0x400, + OLEMISC_ALWAYSRUN = 0x800, + OLEMISC_ACTSLIKEBUTTON = 0x1000, + OLEMISC_ACTSLIKELABEL = 0x2000, + OLEMISC_NOUIACTIVATE = 0x4000, + OLEMISC_ALIGNABLE = 0x8000, + OLEMISC_SIMPLEFRAME = 0x10000, + OLEMISC_SETCLIENTSITEFIRST = 0x20000, + OLEMISC_IMEMODE = 0x40000, + OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, + OLEMISC_WANTSTOMENUMERGE = 0x100000, + OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 +} OLEMISC; +typedef enum tagOLECLOSE { + OLECLOSE_SAVEIFDIRTY = 0, + OLECLOSE_NOSAVE = 1, + OLECLOSE_PROMPTSAVE = 2 +} OLECLOSE; +extern const GUID IID_IOleObject; +typedef struct IOleObjectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleObject *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleObject *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleObject *This); + HRESULT (__attribute__((__stdcall__)) *SetClientSite)( + IOleObject *This, + IOleClientSite *pClientSite); + HRESULT (__attribute__((__stdcall__)) *GetClientSite)( + IOleObject *This, + IOleClientSite **ppClientSite); + HRESULT (__attribute__((__stdcall__)) *SetHostNames)( + IOleObject *This, + LPCOLESTR szContainerApp, + LPCOLESTR szContainerObj); + HRESULT (__attribute__((__stdcall__)) *Close)( + IOleObject *This, + DWORD dwSaveOption); + HRESULT (__attribute__((__stdcall__)) *SetMoniker)( + IOleObject *This, + DWORD dwWhichMoniker, + IMoniker *pmk); + HRESULT (__attribute__((__stdcall__)) *GetMoniker)( + IOleObject *This, + DWORD dwAssign, + DWORD dwWhichMoniker, + IMoniker **ppmk); + HRESULT (__attribute__((__stdcall__)) *InitFromData)( + IOleObject *This, + IDataObject *pDataObject, + WINBOOL fCreation, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *GetClipboardData)( + IOleObject *This, + DWORD dwReserved, + IDataObject **ppDataObject); + HRESULT (__attribute__((__stdcall__)) *DoVerb)( + IOleObject *This, + LONG iVerb, + LPMSG lpmsg, + IOleClientSite *pActiveSite, + LONG lindex, + HWND hwndParent, + LPCRECT lprcPosRect); + HRESULT (__attribute__((__stdcall__)) *EnumVerbs)( + IOleObject *This, + IEnumOLEVERB **ppEnumOleVerb); + HRESULT (__attribute__((__stdcall__)) *Update)( + IOleObject *This); + HRESULT (__attribute__((__stdcall__)) *IsUpToDate)( + IOleObject *This); + HRESULT (__attribute__((__stdcall__)) *GetUserClassID)( + IOleObject *This, + CLSID *pClsid); + HRESULT (__attribute__((__stdcall__)) *GetUserType)( + IOleObject *This, + DWORD dwFormOfType, + LPOLESTR *pszUserType); + HRESULT (__attribute__((__stdcall__)) *SetExtent)( + IOleObject *This, + DWORD dwDrawAspect, + SIZEL *psizel); + HRESULT (__attribute__((__stdcall__)) *GetExtent)( + IOleObject *This, + DWORD dwDrawAspect, + SIZEL *psizel); + HRESULT (__attribute__((__stdcall__)) *Advise)( + IOleObject *This, + IAdviseSink *pAdvSink, + DWORD *pdwConnection); + HRESULT (__attribute__((__stdcall__)) *Unadvise)( + IOleObject *This, + DWORD dwConnection); + HRESULT (__attribute__((__stdcall__)) *EnumAdvise)( + IOleObject *This, + IEnumSTATDATA **ppenumAdvise); + HRESULT (__attribute__((__stdcall__)) *GetMiscStatus)( + IOleObject *This, + DWORD dwAspect, + DWORD *pdwStatus); + HRESULT (__attribute__((__stdcall__)) *SetColorScheme)( + IOleObject *This, + LOGPALETTE *pLogpal); +} IOleObjectVtbl; +struct IOleObject { + IOleObjectVtbl* lpVtbl; +}; +#define __IOLETypes_INTERFACE_DEFINED__ +extern RPC_IF_HANDLE IOLETypes_v0_0_c_ifspec; +extern RPC_IF_HANDLE IOLETypes_v0_0_s_ifspec; +typedef enum tagOLERENDER { + OLERENDER_NONE = 0, + OLERENDER_DRAW = 1, + OLERENDER_FORMAT = 2, + OLERENDER_ASIS = 3 +} OLERENDER; +typedef OLERENDER *LPOLERENDER; +typedef struct tagOBJECTDESCRIPTOR { + ULONG cbSize; + CLSID clsid; + DWORD dwDrawAspect; + SIZEL sizel; + POINTL pointl; + DWORD dwStatus; + DWORD dwFullUserTypeName; + DWORD dwSrcOfCopy; +} OBJECTDESCRIPTOR; +typedef struct tagOBJECTDESCRIPTOR *POBJECTDESCRIPTOR; +typedef struct tagOBJECTDESCRIPTOR *LPOBJECTDESCRIPTOR; +typedef struct tagOBJECTDESCRIPTOR LINKSRCDESCRIPTOR; +typedef struct tagOBJECTDESCRIPTOR *PLINKSRCDESCRIPTOR; +typedef struct tagOBJECTDESCRIPTOR *LPLINKSRCDESCRIPTOR; +#define __IOleWindow_INTERFACE_DEFINED__ +typedef IOleWindow *LPOLEWINDOW; +extern const GUID IID_IOleWindow; +typedef struct IOleWindowVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleWindow *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleWindow *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleWindow *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleWindow *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleWindow *This, + WINBOOL fEnterMode); +} IOleWindowVtbl; +struct IOleWindow { + IOleWindowVtbl* lpVtbl; +}; +#define __IOleLink_INTERFACE_DEFINED__ +typedef IOleLink *LPOLELINK; +typedef enum tagOLEUPDATE { + OLEUPDATE_ALWAYS = 1, + OLEUPDATE_ONCALL = 3 +} OLEUPDATE; +typedef OLEUPDATE *LPOLEUPDATE; +typedef OLEUPDATE *POLEUPDATE; +typedef enum tagOLELINKBIND { + OLELINKBIND_EVENIFCLASSDIFF = 1 +} OLELINKBIND; +extern const GUID IID_IOleLink; +typedef struct IOleLinkVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleLink *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleLink *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleLink *This); + HRESULT (__attribute__((__stdcall__)) *SetUpdateOptions)( + IOleLink *This, + DWORD dwUpdateOpt); + HRESULT (__attribute__((__stdcall__)) *GetUpdateOptions)( + IOleLink *This, + DWORD *pdwUpdateOpt); + HRESULT (__attribute__((__stdcall__)) *SetSourceMoniker)( + IOleLink *This, + IMoniker *pmk, + const IID *const rclsid); + HRESULT (__attribute__((__stdcall__)) *GetSourceMoniker)( + IOleLink *This, + IMoniker **ppmk); + HRESULT (__attribute__((__stdcall__)) *SetSourceDisplayName)( + IOleLink *This, + LPCOLESTR pszStatusText); + HRESULT (__attribute__((__stdcall__)) *GetSourceDisplayName)( + IOleLink *This, + LPOLESTR *ppszDisplayName); + HRESULT (__attribute__((__stdcall__)) *BindToSource)( + IOleLink *This, + DWORD bindflags, + IBindCtx *pbc); + HRESULT (__attribute__((__stdcall__)) *BindIfRunning)( + IOleLink *This); + HRESULT (__attribute__((__stdcall__)) *GetBoundSource)( + IOleLink *This, + IUnknown **ppunk); + HRESULT (__attribute__((__stdcall__)) *UnbindSource)( + IOleLink *This); + HRESULT (__attribute__((__stdcall__)) *Update)( + IOleLink *This, + IBindCtx *pbc); +} IOleLinkVtbl; +struct IOleLink { + IOleLinkVtbl* lpVtbl; +}; +#define __IOleItemContainer_INTERFACE_DEFINED__ +typedef IOleItemContainer *LPOLEITEMCONTAINER; +typedef enum tagBINDSPEED { + BINDSPEED_INDEFINITE = 1, + BINDSPEED_MODERATE = 2, + BINDSPEED_IMMEDIATE = 3 +} BINDSPEED; +typedef enum tagOLECONTF { + OLECONTF_EMBEDDINGS = 1, + OLECONTF_LINKS = 2, + OLECONTF_OTHERS = 4, + OLECONTF_ONLYUSER = 8, + OLECONTF_ONLYIFRUNNING = 16 +} OLECONTF; +extern const GUID IID_IOleItemContainer; +typedef struct IOleItemContainerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleItemContainer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleItemContainer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleItemContainer *This); + HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)( + IOleItemContainer *This, + IBindCtx *pbc, + LPOLESTR pszDisplayName, + ULONG *pchEaten, + IMoniker **ppmkOut); + HRESULT (__attribute__((__stdcall__)) *EnumObjects)( + IOleItemContainer *This, + DWORD grfFlags, + IEnumUnknown **ppenum); + HRESULT (__attribute__((__stdcall__)) *LockContainer)( + IOleItemContainer *This, + WINBOOL fLock); + HRESULT (__attribute__((__stdcall__)) *GetObjectA)( + IOleItemContainer *This, + LPOLESTR pszItem, + DWORD dwSpeedNeeded, + IBindCtx *pbc, + const IID *const riid, + void **ppvObject); + HRESULT (__attribute__((__stdcall__)) *GetObjectStorage)( + IOleItemContainer *This, + LPOLESTR pszItem, + IBindCtx *pbc, + const IID *const riid, + void **ppvStorage); + HRESULT (__attribute__((__stdcall__)) *IsRunning)( + IOleItemContainer *This, + LPOLESTR pszItem); +} IOleItemContainerVtbl; +struct IOleItemContainer { + IOleItemContainerVtbl* lpVtbl; +}; +#define __IOleInPlaceUIWindow_INTERFACE_DEFINED__ +typedef IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW; +typedef RECT BORDERWIDTHS; +typedef LPRECT LPBORDERWIDTHS; +typedef LPCRECT LPCBORDERWIDTHS; +extern const GUID IID_IOleInPlaceUIWindow; +typedef struct IOleInPlaceUIWindowVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceUIWindow *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceUIWindow *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceUIWindow *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceUIWindow *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceUIWindow *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *GetBorder)( + IOleInPlaceUIWindow *This, + LPRECT lprectBorder); + HRESULT (__attribute__((__stdcall__)) *RequestBorderSpace)( + IOleInPlaceUIWindow *This, + LPCBORDERWIDTHS pborderwidths); + HRESULT (__attribute__((__stdcall__)) *SetBorderSpace)( + IOleInPlaceUIWindow *This, + LPCBORDERWIDTHS pborderwidths); + HRESULT (__attribute__((__stdcall__)) *SetActiveObject)( + IOleInPlaceUIWindow *This, + IOleInPlaceActiveObject *pActiveObject, + LPCOLESTR pszObjName); +} IOleInPlaceUIWindowVtbl; +struct IOleInPlaceUIWindow { + IOleInPlaceUIWindowVtbl* lpVtbl; +}; +#define __IOleInPlaceActiveObject_INTERFACE_DEFINED__ +typedef IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT; +extern const GUID IID_IOleInPlaceActiveObject; +typedef struct IOleInPlaceActiveObjectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceActiveObject *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceActiveObject *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceActiveObject *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceActiveObject *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceActiveObject *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)( + IOleInPlaceActiveObject *This, + LPMSG lpmsg); + HRESULT (__attribute__((__stdcall__)) *OnFrameWindowActivate)( + IOleInPlaceActiveObject *This, + WINBOOL fActivate); + HRESULT (__attribute__((__stdcall__)) *OnDocWindowActivate)( + IOleInPlaceActiveObject *This, + WINBOOL fActivate); + HRESULT (__attribute__((__stdcall__)) *ResizeBorder)( + IOleInPlaceActiveObject *This, + LPCRECT prcBorder, + IOleInPlaceUIWindow *pUIWindow, + WINBOOL fFrameWindow); + HRESULT (__attribute__((__stdcall__)) *EnableModeless)( + IOleInPlaceActiveObject *This, + WINBOOL fEnable); +} IOleInPlaceActiveObjectVtbl; +struct IOleInPlaceActiveObject { + IOleInPlaceActiveObjectVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy( + IOleInPlaceActiveObject* This); +void __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteResizeBorder_Proxy( + IOleInPlaceActiveObject* This, + LPCRECT prcBorder, + const IID *const riid, + IOleInPlaceUIWindow *pUIWindow, + WINBOOL fFrameWindow); +void __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteResizeBorder_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_TranslateAccelerator_Proxy( + IOleInPlaceActiveObject* This, + LPMSG lpmsg); +HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_TranslateAccelerator_Stub( + IOleInPlaceActiveObject* This); +HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_ResizeBorder_Proxy( + IOleInPlaceActiveObject* This, + LPCRECT prcBorder, + IOleInPlaceUIWindow *pUIWindow, + WINBOOL fFrameWindow); +HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_ResizeBorder_Stub( + IOleInPlaceActiveObject* This, + LPCRECT prcBorder, + const IID *const riid, + IOleInPlaceUIWindow *pUIWindow, + WINBOOL fFrameWindow); +#define __IOleInPlaceFrame_INTERFACE_DEFINED__ +typedef IOleInPlaceFrame *LPOLEINPLACEFRAME; +typedef struct tagOIFI { + UINT cb; + WINBOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + UINT cAccelEntries; +} OLEINPLACEFRAMEINFO; +typedef struct tagOIFI *LPOLEINPLACEFRAMEINFO; +typedef struct tagOleMenuGroupWidths { + LONG width[6]; +} OLEMENUGROUPWIDTHS; +typedef struct tagOleMenuGroupWidths *LPOLEMENUGROUPWIDTHS; +typedef HGLOBAL HOLEMENU; +extern const GUID IID_IOleInPlaceFrame; +typedef struct IOleInPlaceFrameVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceFrame *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceFrame *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceFrame *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceFrame *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceFrame *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *GetBorder)( + IOleInPlaceFrame *This, + LPRECT lprectBorder); + HRESULT (__attribute__((__stdcall__)) *RequestBorderSpace)( + IOleInPlaceFrame *This, + LPCBORDERWIDTHS pborderwidths); + HRESULT (__attribute__((__stdcall__)) *SetBorderSpace)( + IOleInPlaceFrame *This, + LPCBORDERWIDTHS pborderwidths); + HRESULT (__attribute__((__stdcall__)) *SetActiveObject)( + IOleInPlaceFrame *This, + IOleInPlaceActiveObject *pActiveObject, + LPCOLESTR pszObjName); + HRESULT (__attribute__((__stdcall__)) *InsertMenus)( + IOleInPlaceFrame *This, + HMENU hmenuShared, + LPOLEMENUGROUPWIDTHS lpMenuWidths); + HRESULT (__attribute__((__stdcall__)) *SetMenu)( + IOleInPlaceFrame *This, + HMENU hmenuShared, + HOLEMENU holemenu, + HWND hwndActiveObject); + HRESULT (__attribute__((__stdcall__)) *RemoveMenus)( + IOleInPlaceFrame *This, + HMENU hmenuShared); + HRESULT (__attribute__((__stdcall__)) *SetStatusText)( + IOleInPlaceFrame *This, + LPCOLESTR pszStatusText); + HRESULT (__attribute__((__stdcall__)) *EnableModeless)( + IOleInPlaceFrame *This, + WINBOOL fEnable); + HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)( + IOleInPlaceFrame *This, + LPMSG lpmsg, + WORD wID); +} IOleInPlaceFrameVtbl; +struct IOleInPlaceFrame { + IOleInPlaceFrameVtbl* lpVtbl; +}; +#define __IOleInPlaceObject_INTERFACE_DEFINED__ +typedef IOleInPlaceObject *LPOLEINPLACEOBJECT; +extern const GUID IID_IOleInPlaceObject; +typedef struct IOleInPlaceObjectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceObject *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceObject *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceObject *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceObject *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceObject *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *InPlaceDeactivate)( + IOleInPlaceObject *This); + HRESULT (__attribute__((__stdcall__)) *UIDeactivate)( + IOleInPlaceObject *This); + HRESULT (__attribute__((__stdcall__)) *SetObjectRects)( + IOleInPlaceObject *This, + LPCRECT lprcPosRect, + LPCRECT lprcClipRect); + HRESULT (__attribute__((__stdcall__)) *ReactivateAndUndo)( + IOleInPlaceObject *This); +} IOleInPlaceObjectVtbl; +struct IOleInPlaceObject { + IOleInPlaceObjectVtbl* lpVtbl; +}; +#define __IOleInPlaceSite_INTERFACE_DEFINED__ +typedef IOleInPlaceSite *LPOLEINPLACESITE; +extern const GUID IID_IOleInPlaceSite; +typedef struct IOleInPlaceSiteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceSite *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceSite *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceSite *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceSite *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceSite *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *CanInPlaceActivate)( + IOleInPlaceSite *This); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivate)( + IOleInPlaceSite *This); + HRESULT (__attribute__((__stdcall__)) *OnUIActivate)( + IOleInPlaceSite *This); + HRESULT (__attribute__((__stdcall__)) *GetWindowContext)( + IOleInPlaceSite *This, + IOleInPlaceFrame **ppFrame, + IOleInPlaceUIWindow **ppDoc, + LPRECT lprcPosRect, + LPRECT lprcClipRect, + LPOLEINPLACEFRAMEINFO lpFrameInfo); + HRESULT (__attribute__((__stdcall__)) *Scroll)( + IOleInPlaceSite *This, + SIZE scrollExtant); + HRESULT (__attribute__((__stdcall__)) *OnUIDeactivate)( + IOleInPlaceSite *This, + WINBOOL fUndoable); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivate)( + IOleInPlaceSite *This); + HRESULT (__attribute__((__stdcall__)) *DiscardUndoState)( + IOleInPlaceSite *This); + HRESULT (__attribute__((__stdcall__)) *DeactivateAndUndo)( + IOleInPlaceSite *This); + HRESULT (__attribute__((__stdcall__)) *OnPosRectChange)( + IOleInPlaceSite *This, + LPCRECT lprcPosRect); +} IOleInPlaceSiteVtbl; +struct IOleInPlaceSite { + IOleInPlaceSiteVtbl* lpVtbl; +}; +#define __IContinue_INTERFACE_DEFINED__ +extern const GUID IID_IContinue; +typedef struct IContinueVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IContinue *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IContinue *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IContinue *This); + HRESULT (__attribute__((__stdcall__)) *FContinue)( + IContinue *This); +} IContinueVtbl; +struct IContinue { + IContinueVtbl* lpVtbl; +}; +#define __IViewObject_INTERFACE_DEFINED__ +typedef IViewObject *LPVIEWOBJECT; +extern const GUID IID_IViewObject; +typedef struct IViewObjectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IViewObject *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IViewObject *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IViewObject *This); + HRESULT (__attribute__((__stdcall__)) *Draw)( + IViewObject *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue), + ULONG_PTR dwContinue); + HRESULT (__attribute__((__stdcall__)) *GetColorSet)( + IViewObject *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hicTargetDev, + LOGPALETTE **ppColorSet); + HRESULT (__attribute__((__stdcall__)) *Freeze)( + IViewObject *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DWORD *pdwFreeze); + HRESULT (__attribute__((__stdcall__)) *Unfreeze)( + IViewObject *This, + DWORD dwFreeze); + HRESULT (__attribute__((__stdcall__)) *SetAdvise)( + IViewObject *This, + DWORD aspects, + DWORD advf, + IAdviseSink *pAdvSink); + HRESULT (__attribute__((__stdcall__)) *GetAdvise)( + IViewObject *This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink); +} IViewObjectVtbl; +struct IViewObject { + IViewObjectVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IViewObject_RemoteDraw_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DVTARGETDEVICE *ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + IContinue *pContinue); +void __attribute__((__stdcall__)) IViewObject_RemoteDraw_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IViewObject_RemoteGetColorSet_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DVTARGETDEVICE *ptd, + ULONG_PTR hicTargetDev, + LOGPALETTE **ppColorSet); +void __attribute__((__stdcall__)) IViewObject_RemoteGetColorSet_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IViewObject_RemoteFreeze_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DWORD *pdwFreeze); +void __attribute__((__stdcall__)) IViewObject_RemoteFreeze_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IViewObject_RemoteGetAdvise_Proxy( + IViewObject* This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink); +void __attribute__((__stdcall__)) IViewObject_RemoteGetAdvise_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IViewObject_Draw_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue), + ULONG_PTR dwContinue); +HRESULT __attribute__((__stdcall__)) IViewObject_Draw_Stub( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DVTARGETDEVICE *ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + IContinue *pContinue); +HRESULT __attribute__((__stdcall__)) IViewObject_GetColorSet_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hicTargetDev, + LOGPALETTE **ppColorSet); +HRESULT __attribute__((__stdcall__)) IViewObject_GetColorSet_Stub( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DVTARGETDEVICE *ptd, + ULONG_PTR hicTargetDev, + LOGPALETTE **ppColorSet); +HRESULT __attribute__((__stdcall__)) IViewObject_Freeze_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DWORD *pdwFreeze); +HRESULT __attribute__((__stdcall__)) IViewObject_Freeze_Stub( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DWORD *pdwFreeze); +HRESULT __attribute__((__stdcall__)) IViewObject_GetAdvise_Proxy( + IViewObject* This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink); +HRESULT __attribute__((__stdcall__)) IViewObject_GetAdvise_Stub( + IViewObject* This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink); +#define __IViewObject2_INTERFACE_DEFINED__ +typedef IViewObject2 *LPVIEWOBJECT2; +extern const GUID IID_IViewObject2; +typedef struct IViewObject2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IViewObject2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IViewObject2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IViewObject2 *This); + HRESULT (__attribute__((__stdcall__)) *Draw)( + IViewObject2 *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue), + ULONG_PTR dwContinue); + HRESULT (__attribute__((__stdcall__)) *GetColorSet)( + IViewObject2 *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hicTargetDev, + LOGPALETTE **ppColorSet); + HRESULT (__attribute__((__stdcall__)) *Freeze)( + IViewObject2 *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DWORD *pdwFreeze); + HRESULT (__attribute__((__stdcall__)) *Unfreeze)( + IViewObject2 *This, + DWORD dwFreeze); + HRESULT (__attribute__((__stdcall__)) *SetAdvise)( + IViewObject2 *This, + DWORD aspects, + DWORD advf, + IAdviseSink *pAdvSink); + HRESULT (__attribute__((__stdcall__)) *GetAdvise)( + IViewObject2 *This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink); + HRESULT (__attribute__((__stdcall__)) *GetExtent)( + IViewObject2 *This, + DWORD dwDrawAspect, + LONG lindex, + DVTARGETDEVICE *ptd, + LPSIZEL lpsizel); +} IViewObject2Vtbl; +struct IViewObject2 { + IViewObject2Vtbl* lpVtbl; +}; +#define __IDropSource_INTERFACE_DEFINED__ +typedef IDropSource *LPDROPSOURCE; +extern const GUID IID_IDropSource; +typedef struct IDropSourceVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDropSource *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDropSource *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDropSource *This); + HRESULT (__attribute__((__stdcall__)) *QueryContinueDrag)( + IDropSource *This, + WINBOOL fEscapePressed, + DWORD grfKeyState); + HRESULT (__attribute__((__stdcall__)) *GiveFeedback)( + IDropSource *This, + DWORD dwEffect); +} IDropSourceVtbl; +struct IDropSource { + IDropSourceVtbl* lpVtbl; +}; +#define __IDropTarget_INTERFACE_DEFINED__ +typedef IDropTarget *LPDROPTARGET; +#define MK_ALT (0x20) +#define DROPEFFECT_NONE (0) +#define DROPEFFECT_COPY (1) +#define DROPEFFECT_MOVE (2) +#define DROPEFFECT_LINK (4) +#define DROPEFFECT_SCROLL (0x80000000) +#define DD_DEFSCROLLINSET (11) +#define DD_DEFSCROLLDELAY (50) +#define DD_DEFSCROLLINTERVAL (50) +#define DD_DEFDRAGDELAY (200) +#define DD_DEFDRAGMINDIST (2) +extern const GUID IID_IDropTarget; +typedef struct IDropTargetVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDropTarget *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDropTarget *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDropTarget *This); + HRESULT (__attribute__((__stdcall__)) *DragEnter)( + IDropTarget *This, + IDataObject *pDataObj, + DWORD grfKeyState, + POINTL pt, + DWORD *pdwEffect); + HRESULT (__attribute__((__stdcall__)) *DragOver)( + IDropTarget *This, + DWORD grfKeyState, + POINTL pt, + DWORD *pdwEffect); + HRESULT (__attribute__((__stdcall__)) *DragLeave)( + IDropTarget *This); + HRESULT (__attribute__((__stdcall__)) *Drop)( + IDropTarget *This, + IDataObject *pDataObj, + DWORD grfKeyState, + POINTL pt, + DWORD *pdwEffect); +} IDropTargetVtbl; +struct IDropTarget { + IDropTargetVtbl* lpVtbl; +}; +#define __IDropSourceNotify_INTERFACE_DEFINED__ +extern const GUID IID_IDropSourceNotify; +typedef struct IDropSourceNotifyVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDropSourceNotify *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDropSourceNotify *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDropSourceNotify *This); + HRESULT (__attribute__((__stdcall__)) *DragEnterTarget)( + IDropSourceNotify *This, + HWND hwndTarget); + HRESULT (__attribute__((__stdcall__)) *DragLeaveTarget)( + IDropSourceNotify *This); +} IDropSourceNotifyVtbl; +struct IDropSourceNotify { + IDropSourceNotifyVtbl* lpVtbl; +}; +#define __IEnumOLEVERB_INTERFACE_DEFINED__ +typedef IEnumOLEVERB *LPENUMOLEVERB; +typedef struct tagOLEVERB { + LONG lVerb; + LPOLESTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; +} OLEVERB; +typedef struct tagOLEVERB *LPOLEVERB; +typedef enum tagOLEVERBATTRIB { + OLEVERBATTRIB_NEVERDIRTIES = 1, + OLEVERBATTRIB_ONCONTAINERMENU = 2 +} OLEVERBATTRIB; +extern const GUID IID_IEnumOLEVERB; +typedef struct IEnumOLEVERBVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumOLEVERB *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumOLEVERB *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumOLEVERB *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumOLEVERB *This, + ULONG celt, + LPOLEVERB rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumOLEVERB *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumOLEVERB *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumOLEVERB *This, + IEnumOLEVERB **ppenum); +} IEnumOLEVERBVtbl; +struct IEnumOLEVERB { + IEnumOLEVERBVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumOLEVERB_RemoteNext_Proxy( + IEnumOLEVERB* This, + ULONG celt, + LPOLEVERB rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumOLEVERB_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumOLEVERB_Next_Proxy( + IEnumOLEVERB* This, + ULONG celt, + LPOLEVERB rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumOLEVERB_Next_Stub( + IEnumOLEVERB* This, + ULONG celt, + LPOLEVERB rgelt, + ULONG *pceltFetched); +ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *); +void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *); +ULONG __attribute__((__stdcall__)) STGMEDIUM_UserSize (ULONG *, ULONG, STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserMarshal (ULONG *, unsigned char *, STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *); +void __attribute__((__stdcall__)) STGMEDIUM_UserFree (ULONG *, STGMEDIUM *); +ULONG __attribute__((__stdcall__)) HWND_UserSize (ULONG *, ULONG, HWND *); +unsigned char * __attribute__((__stdcall__)) HWND_UserMarshal (ULONG *, unsigned char *, HWND *); +unsigned char * __attribute__((__stdcall__)) HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *); +void __attribute__((__stdcall__)) HWND_UserFree (ULONG *, HWND *); +ULONG __attribute__((__stdcall__)) HMENU_UserSize (ULONG *, ULONG, HMENU *); +unsigned char * __attribute__((__stdcall__)) HMENU_UserMarshal (ULONG *, unsigned char *, HMENU *); +unsigned char * __attribute__((__stdcall__)) HMENU_UserUnmarshal(ULONG *, unsigned char *, HMENU *); +void __attribute__((__stdcall__)) HMENU_UserFree (ULONG *, HMENU *); +ULONG __attribute__((__stdcall__)) HGLOBAL_UserSize (ULONG *, ULONG, HGLOBAL *); +unsigned char * __attribute__((__stdcall__)) HGLOBAL_UserMarshal (ULONG *, unsigned char *, HGLOBAL *); +unsigned char * __attribute__((__stdcall__)) HGLOBAL_UserUnmarshal(ULONG *, unsigned char *, HGLOBAL *); +void __attribute__((__stdcall__)) HGLOBAL_UserFree (ULONG *, HGLOBAL *); +ULONG __attribute__((__stdcall__)) HACCEL_UserSize (ULONG *, ULONG, HACCEL *); +unsigned char * __attribute__((__stdcall__)) HACCEL_UserMarshal (ULONG *, unsigned char *, HACCEL *); +unsigned char * __attribute__((__stdcall__)) HACCEL_UserUnmarshal(ULONG *, unsigned char *, HACCEL *); +void __attribute__((__stdcall__)) HACCEL_UserFree (ULONG *, HACCEL *); +ULONG __attribute__((__stdcall__)) HDC_UserSize (ULONG *, ULONG, HDC *); +unsigned char * __attribute__((__stdcall__)) HDC_UserMarshal (ULONG *, unsigned char *, HDC *); +unsigned char * __attribute__((__stdcall__)) HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *); +void __attribute__((__stdcall__)) HDC_UserFree (ULONG *, HDC *); +#undef interface +#define interface struct +#define __servprov_h__ +#define __IServiceProvider_FWD_DEFINED__ +typedef struct IServiceProvider IServiceProvider; +#undef interface +#define interface struct +#define __IServiceProvider_INTERFACE_DEFINED__ +typedef IServiceProvider *LPSERVICEPROVIDER; +extern const GUID IID_IServiceProvider; +typedef struct IServiceProviderVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IServiceProvider *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IServiceProvider *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IServiceProvider *This); + HRESULT (__attribute__((__stdcall__)) *QueryService)( + IServiceProvider *This, + const GUID *const guidService, + const IID *const riid, + void **ppvObject); +} IServiceProviderVtbl; +struct IServiceProvider { + IServiceProviderVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IServiceProvider_RemoteQueryService_Proxy( + IServiceProvider* This, + const GUID *const guidService, + const IID *const riid, + IUnknown **ppvObject); +void __attribute__((__stdcall__)) IServiceProvider_RemoteQueryService_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IServiceProvider_QueryService_Proxy( + IServiceProvider* This, + const GUID *const guidService, + const IID *const riid, + void **ppvObject); +HRESULT __attribute__((__stdcall__)) IServiceProvider_QueryService_Stub( + IServiceProvider* This, + const GUID *const guidService, + const IID *const riid, + IUnknown **ppvObject); +#undef interface +#define interface struct +#define __msxml_h__ +#define __IXMLDOMNode_FWD_DEFINED__ +typedef struct IXMLDOMNode IXMLDOMNode; +#define __IXMLDOMDocument_FWD_DEFINED__ +typedef struct IXMLDOMDocument IXMLDOMDocument; +#define __IXMLDOMNodeList_FWD_DEFINED__ +typedef struct IXMLDOMNodeList IXMLDOMNodeList; +#define __IXMLDOMNamedNodeMap_FWD_DEFINED__ +typedef struct IXMLDOMNamedNodeMap IXMLDOMNamedNodeMap; +#define __IXMLDOMDocumentFragment_FWD_DEFINED__ +typedef struct IXMLDOMDocumentFragment IXMLDOMDocumentFragment; +#define __IXMLDOMCharacterData_FWD_DEFINED__ +typedef struct IXMLDOMCharacterData IXMLDOMCharacterData; +#define __IXMLDOMAttribute_FWD_DEFINED__ +typedef struct IXMLDOMAttribute IXMLDOMAttribute; +#define __IXMLDOMElement_FWD_DEFINED__ +typedef struct IXMLDOMElement IXMLDOMElement; +#define __IXMLDOMText_FWD_DEFINED__ +typedef struct IXMLDOMText IXMLDOMText; +#define __IXMLDOMComment_FWD_DEFINED__ +typedef struct IXMLDOMComment IXMLDOMComment; +#define __IXMLDOMProcessingInstruction_FWD_DEFINED__ +typedef struct IXMLDOMProcessingInstruction IXMLDOMProcessingInstruction; +#define __IXMLDOMCDATASection_FWD_DEFINED__ +typedef struct IXMLDOMCDATASection IXMLDOMCDATASection; +#define __IXMLDOMDocumentType_FWD_DEFINED__ +typedef struct IXMLDOMDocumentType IXMLDOMDocumentType; +#define __IXMLDOMNotation_FWD_DEFINED__ +typedef struct IXMLDOMNotation IXMLDOMNotation; +#define __IXMLDOMEntity_FWD_DEFINED__ +typedef struct IXMLDOMEntity IXMLDOMEntity; +#define __IXMLDOMEntityReference_FWD_DEFINED__ +typedef struct IXMLDOMEntityReference IXMLDOMEntityReference; +#define __IXMLDOMImplementation_FWD_DEFINED__ +typedef struct IXMLDOMImplementation IXMLDOMImplementation; +#define __IXMLDOMParseError_FWD_DEFINED__ +typedef struct IXMLDOMParseError IXMLDOMParseError; +#define __XMLDOMDocumentEvents_FWD_DEFINED__ +typedef struct XMLDOMDocumentEvents XMLDOMDocumentEvents; +#define __DOMDocument_FWD_DEFINED__ +typedef struct DOMDocument DOMDocument; +#define __DOMFreeThreadedDocument_FWD_DEFINED__ +typedef struct DOMFreeThreadedDocument DOMFreeThreadedDocument; +#define __IXMLHttpRequest_FWD_DEFINED__ +typedef struct IXMLHttpRequest IXMLHttpRequest; +#define __XMLHTTPRequest_FWD_DEFINED__ +typedef struct XMLHTTPRequest XMLHTTPRequest; +#define __IXMLDSOControl_FWD_DEFINED__ +typedef struct IXMLDSOControl IXMLDSOControl; +#define __XMLDSOControl_FWD_DEFINED__ +typedef struct XMLDSOControl XMLDSOControl; +#define __IXMLElementCollection_FWD_DEFINED__ +typedef struct IXMLElementCollection IXMLElementCollection; +#define __IXMLElement_FWD_DEFINED__ +typedef struct IXMLElement IXMLElement; +#define __IXMLDocument_FWD_DEFINED__ +typedef struct IXMLDocument IXMLDocument; +#define __IXMLElement2_FWD_DEFINED__ +typedef struct IXMLElement2 IXMLElement2; +#define __IXMLDocument2_FWD_DEFINED__ +typedef struct IXMLDocument2 IXMLDocument2; +#define __IXMLAttribute_FWD_DEFINED__ +typedef struct IXMLAttribute IXMLAttribute; +#define __IXMLError_FWD_DEFINED__ +typedef struct IXMLError IXMLError; +#define __IXMLElementNotificationSink_FWD_DEFINED__ +typedef struct IXMLElementNotificationSink IXMLElementNotificationSink; +#define __XMLDocument_FWD_DEFINED__ +typedef struct XMLDocument XMLDocument; +#undef interface +#define interface struct +#undef interface +#define interface struct +#undef interface +#define interface struct +#undef interface +#define interface struct +#define __oaidl_h__ +#define __ICreateTypeInfo_FWD_DEFINED__ +typedef struct ICreateTypeInfo ICreateTypeInfo; +#define __ICreateTypeInfo2_FWD_DEFINED__ +typedef struct ICreateTypeInfo2 ICreateTypeInfo2; +#define __ICreateTypeLib_FWD_DEFINED__ +typedef struct ICreateTypeLib ICreateTypeLib; +#define __ICreateTypeLib2_FWD_DEFINED__ +typedef struct ICreateTypeLib2 ICreateTypeLib2; +#define __IDispatch_FWD_DEFINED__ +typedef struct IDispatch IDispatch; +#define __IEnumVARIANT_FWD_DEFINED__ +typedef struct IEnumVARIANT IEnumVARIANT; +#define __ITypeComp_FWD_DEFINED__ +typedef struct ITypeComp ITypeComp; +#define __ITypeInfo_FWD_DEFINED__ +typedef struct ITypeInfo ITypeInfo; +#define __ITypeInfo2_FWD_DEFINED__ +typedef struct ITypeInfo2 ITypeInfo2; +#define __ITypeLib_FWD_DEFINED__ +typedef struct ITypeLib ITypeLib; +#define __ITypeLib2_FWD_DEFINED__ +typedef struct ITypeLib2 ITypeLib2; +#define __ITypeChangeEvents_FWD_DEFINED__ +typedef struct ITypeChangeEvents ITypeChangeEvents; +#define __IErrorInfo_FWD_DEFINED__ +typedef struct IErrorInfo IErrorInfo; +#define __ICreateErrorInfo_FWD_DEFINED__ +typedef struct ICreateErrorInfo ICreateErrorInfo; +#define __ISupportErrorInfo_FWD_DEFINED__ +typedef struct ISupportErrorInfo ISupportErrorInfo; +#define __ITypeFactory_FWD_DEFINED__ +typedef struct ITypeFactory ITypeFactory; +#define __ITypeMarshal_FWD_DEFINED__ +typedef struct ITypeMarshal ITypeMarshal; +#define __IRecordInfo_FWD_DEFINED__ +typedef struct IRecordInfo IRecordInfo; +#define __IErrorLog_FWD_DEFINED__ +typedef struct IErrorLog IErrorLog; +#define __IPropertyBag_FWD_DEFINED__ +typedef struct IPropertyBag IPropertyBag; +#undef interface +#define interface struct +#define __IOleAutomationTypes_INTERFACE_DEFINED__ +extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_c_ifspec; +extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_s_ifspec; +typedef CY CURRENCY; +typedef struct tagSAFEARRAYBOUND { + ULONG cElements; + LONG lLbound; +} SAFEARRAYBOUND; +typedef struct tagSAFEARRAYBOUND *LPSAFEARRAYBOUND; +typedef struct _wireVARIANT *wireVARIANT; +typedef struct _wireBRECORD *wireBRECORD; +typedef struct _wireSAFEARR_BSTR { + ULONG Size; + wireBSTR *aBstr; +} SAFEARR_BSTR; +typedef struct _wireSAFEARR_UNKNOWN { + ULONG Size; + IUnknown **apUnknown; +} SAFEARR_UNKNOWN; +typedef struct _wireSAFEARR_DISPATCH { + ULONG Size; + IDispatch **apDispatch; +} SAFEARR_DISPATCH; +typedef struct _wireSAFEARR_VARIANT { + ULONG Size; + wireVARIANT *aVariant; +} SAFEARR_VARIANT; +typedef struct _wireSAFEARR_BRECORD { + ULONG Size; + wireBRECORD *aRecord; +} SAFEARR_BRECORD; +typedef struct _wireSAFEARR_HAVEIID { + ULONG Size; + IUnknown **apUnknown; + IID iid; +} SAFEARR_HAVEIID; +typedef enum tagSF_TYPE { + SF_ERROR = VT_ERROR, + SF_I1 = VT_I1, + SF_I2 = VT_I2, + SF_I4 = VT_I4, + SF_I8 = VT_I8, + SF_BSTR = VT_BSTR, + SF_UNKNOWN = VT_UNKNOWN, + SF_DISPATCH = VT_DISPATCH, + SF_VARIANT = VT_VARIANT, + SF_RECORD = VT_RECORD, + SF_HAVEIID = VT_UNKNOWN | VT_RESERVED +} SF_TYPE; +typedef struct _wireSAFEARRAY_UNION { + ULONG sfType; + union __WIDL_oaidl_generated_name_0000000E { + SAFEARR_BSTR BstrStr; + SAFEARR_UNKNOWN UnknownStr; + SAFEARR_DISPATCH DispatchStr; + SAFEARR_VARIANT VariantStr; + SAFEARR_BRECORD RecordStr; + SAFEARR_HAVEIID HaveIidStr; + BYTE_SIZEDARR ByteStr; + WORD_SIZEDARR WordStr; + DWORD_SIZEDARR LongStr; + HYPER_SIZEDARR HyperStr; + } u; +} SAFEARRAYUNION; +typedef struct _wireSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + SAFEARRAYUNION uArrayStructs; + SAFEARRAYBOUND rgsabound[1]; +} *wireSAFEARRAY; +typedef wireSAFEARRAY *wirePSAFEARRAY; +typedef struct tagSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND rgsabound[1]; +} SAFEARRAY; +typedef SAFEARRAY *LPSAFEARRAY; +#define FADF_AUTO (0x1) +#define FADF_STATIC (0x2) +#define FADF_EMBEDDED (0x4) +#define FADF_FIXEDSIZE (0x10) +#define FADF_RECORD (0x20) +#define FADF_HAVEIID (0x40) +#define FADF_HAVEVARTYPE (0x80) +#define FADF_BSTR (0x100) +#define FADF_UNKNOWN (0x200) +#define FADF_DISPATCH (0x400) +#define FADF_VARIANT (0x800) +#define FADF_RESERVED (0xf008) +#define _FORCENAMELESSUNION 1 +#define __tagVARIANT +#define __VARIANT_NAME_1 +#define __VARIANT_NAME_2 +#define __VARIANT_NAME_3 +#define __tagBRECORD +#define __VARIANT_NAME_4 +typedef struct tagVARIANT VARIANT; +struct tagVARIANT { + union { + struct { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + LONGLONG llVal; + LONG lVal; + BYTE bVal; + SHORT iVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + BSTR bstrVal; + IUnknown *punkVal; + IDispatch *pdispVal; + SAFEARRAY *parray; + BYTE *pbVal; + SHORT *piVal; + LONG *plVal; + LONGLONG *pllVal; + FLOAT *pfltVal; + DOUBLE *pdblVal; + VARIANT_BOOL *pboolVal; + SCODE *pscode; + CY *pcyVal; + DATE *pdate; + BSTR *pbstrVal; + IUnknown **ppunkVal; + IDispatch **ppdispVal; + SAFEARRAY **pparray; + VARIANT *pvarVal; + PVOID byref; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL *pdecVal; + CHAR *pcVal; + USHORT *puiVal; + ULONG *pulVal; + ULONGLONG *pullVal; + INT *pintVal; + UINT *puintVal; + struct { + PVOID pvRecord; + IRecordInfo *pRecInfo; + } ; + } ; + } ; + DECIMAL decVal; + } ; +}; +typedef VARIANT *LPVARIANT; +typedef VARIANT VARIANTARG; +typedef VARIANT *LPVARIANTARG; +#define _REFVARIANT_DEFINED +#define REFVARIANT const VARIANT * __MIDL_CONST +struct _wireBRECORD { + ULONG fFlags; + ULONG clSize; + IRecordInfo *pRecInfo; + byte *pRecord; +}; +struct _wireVARIANT { + DWORD clSize; + DWORD rpcReserved; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + __extension__ union { + LONGLONG llVal; + LONG lVal; + BYTE bVal; + SHORT iVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + wireBSTR bstrVal; + IUnknown *punkVal; + IDispatch *pdispVal; + wirePSAFEARRAY parray; + wireBRECORD brecVal; + BYTE *pbVal; + SHORT *piVal; + LONG *plVal; + LONGLONG *pllVal; + FLOAT *pfltVal; + DOUBLE *pdblVal; + VARIANT_BOOL *pboolVal; + SCODE *pscode; + CY *pcyVal; + DATE *pdate; + wireBSTR *pbstrVal; + IUnknown **ppunkVal; + IDispatch **ppdispVal; + wirePSAFEARRAY *pparray; + wireVARIANT *pvarVal; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL decVal; + DECIMAL *pdecVal; + CHAR *pcVal; + USHORT *puiVal; + ULONG *pulVal; + ULONGLONG *pullVal; + INT *pintVal; + UINT *puintVal; + } ; +}; +typedef LONG DISPID; +typedef DISPID MEMBERID; +typedef DWORD HREFTYPE; +typedef enum tagTYPEKIND { + TKIND_ENUM = 0, + TKIND_RECORD = 1, + TKIND_MODULE = 2, + TKIND_INTERFACE = 3, + TKIND_DISPATCH = 4, + TKIND_COCLASS = 5, + TKIND_ALIAS = 6, + TKIND_UNION = 7, + TKIND_MAX = 8 +} TYPEKIND; +typedef struct tagTYPEDESC { + __extension__ union { + struct tagTYPEDESC *lptdesc; + struct tagARRAYDESC *lpadesc; + HREFTYPE hreftype; + } ; + VARTYPE vt; +} TYPEDESC; +typedef struct tagARRAYDESC { + TYPEDESC tdescElem; + USHORT cDims; + SAFEARRAYBOUND rgbounds[1]; +} ARRAYDESC; +typedef struct tagPARAMDESCEX { + ULONG cBytes; + VARIANTARG varDefaultValue; +} PARAMDESCEX; +typedef struct tagPARAMDESCEX *LPPARAMDESCEX; +typedef struct tagPARAMDESC { + LPPARAMDESCEX pparamdescex; + USHORT wParamFlags; +} PARAMDESC; +typedef struct tagPARAMDESC *LPPARAMDESC; +#define PARAMFLAG_NONE (0x0) +#define PARAMFLAG_FIN (0x1) +#define PARAMFLAG_FOUT (0x2) +#define PARAMFLAG_FLCID (0x4) +#define PARAMFLAG_FRETVAL (0x8) +#define PARAMFLAG_FOPT (0x10) +#define PARAMFLAG_FHASDEFAULT (0x20) +#define PARAMFLAG_FHASCUSTDATA (0x40) +typedef struct tagIDLDESC { + ULONG_PTR dwReserved; + USHORT wIDLFlags; +} IDLDESC; +typedef struct tagIDLDESC *LPIDLDESC; +#define IDLFLAG_NONE (PARAMFLAG_NONE) +#define IDLFLAG_FIN (PARAMFLAG_FIN) +#define IDLFLAG_FOUT (PARAMFLAG_FOUT) +#define IDLFLAG_FLCID (PARAMFLAG_FLCID) +#define IDLFLAG_FRETVAL (PARAMFLAG_FRETVAL) + typedef struct tagELEMDESC { + TYPEDESC tdesc; + __extension__ union { + IDLDESC idldesc; + PARAMDESC paramdesc; + } ; + } ELEMDESC,*LPELEMDESC; +typedef struct tagTYPEATTR { + GUID guid; + LCID lcid; + DWORD dwReserved; + MEMBERID memidConstructor; + MEMBERID memidDestructor; + LPOLESTR lpstrSchema; + ULONG cbSizeInstance; + TYPEKIND typekind; + WORD cFuncs; + WORD cVars; + WORD cImplTypes; + WORD cbSizeVft; + WORD cbAlignment; + WORD wTypeFlags; + WORD wMajorVerNum; + WORD wMinorVerNum; + TYPEDESC tdescAlias; + IDLDESC idldescType; +} TYPEATTR; +typedef struct tagTYPEATTR *LPTYPEATTR; +typedef struct tagDISPPARAMS { + VARIANTARG *rgvarg; + DISPID *rgdispidNamedArgs; + UINT cArgs; + UINT cNamedArgs; +} DISPPARAMS; + typedef struct tagEXCEPINFO { + WORD wCode; + WORD wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + DWORD dwHelpContext; + PVOID pvReserved; + HRESULT (__attribute__((__stdcall__)) *pfnDeferredFillIn)(struct tagEXCEPINFO *); + SCODE scode; + } EXCEPINFO, *LPEXCEPINFO; +typedef enum tagCALLCONV { + CC_FASTCALL = 0, + CC_CDECL = 1, + CC_MSCPASCAL = 2, + CC_PASCAL = CC_MSCPASCAL, + CC_MACPASCAL = 3, + CC_STDCALL = 4, + CC_FPFASTCALL = 5, + CC_SYSCALL = 6, + CC_MPWCDECL = 7, + CC_MPWPASCAL = 8, + CC_MAX = 9 +} CALLCONV; +typedef enum tagFUNCKIND { + FUNC_VIRTUAL = 0, + FUNC_PUREVIRTUAL = 1, + FUNC_NONVIRTUAL = 2, + FUNC_STATIC = 3, + FUNC_DISPATCH = 4 +} FUNCKIND; +typedef enum tagINVOKEKIND { + INVOKE_FUNC = 1, + INVOKE_PROPERTYGET = 2, + INVOKE_PROPERTYPUT = 4, + INVOKE_PROPERTYPUTREF = 8 +} INVOKEKIND; +typedef struct tagFUNCDESC { + MEMBERID memid; + SCODE *lprgscode; + ELEMDESC *lprgelemdescParam; + FUNCKIND funckind; + INVOKEKIND invkind; + CALLCONV callconv; + SHORT cParams; + SHORT cParamsOpt; + SHORT oVft; + SHORT cScodes; + ELEMDESC elemdescFunc; + WORD wFuncFlags; +} FUNCDESC; +typedef struct tagFUNCDESC *LPFUNCDESC; +typedef enum tagVARKIND { + VAR_PERINSTANCE = 0, + VAR_STATIC = 1, + VAR_CONST = 2, + VAR_DISPATCH = 3 +} VARKIND; +#define IMPLTYPEFLAG_FDEFAULT (0x1) +#define IMPLTYPEFLAG_FSOURCE (0x2) +#define IMPLTYPEFLAG_FRESTRICTED (0x4) +#define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8) +typedef struct tagVARDESC { + MEMBERID memid; + LPOLESTR lpstrSchema; + __extension__ union { + ULONG oInst; + VARIANT *lpvarValue; + } ; + ELEMDESC elemdescVar; + WORD wVarFlags; + VARKIND varkind; +} VARDESC; +typedef struct tagVARDESC *LPVARDESC; +typedef enum tagTYPEFLAGS { + TYPEFLAG_FAPPOBJECT = 0x1, + TYPEFLAG_FCANCREATE = 0x2, + TYPEFLAG_FLICENSED = 0x4, + TYPEFLAG_FPREDECLID = 0x8, + TYPEFLAG_FHIDDEN = 0x10, + TYPEFLAG_FCONTROL = 0x20, + TYPEFLAG_FDUAL = 0x40, + TYPEFLAG_FNONEXTENSIBLE = 0x80, + TYPEFLAG_FOLEAUTOMATION = 0x100, + TYPEFLAG_FRESTRICTED = 0x200, + TYPEFLAG_FAGGREGATABLE = 0x400, + TYPEFLAG_FREPLACEABLE = 0x800, + TYPEFLAG_FDISPATCHABLE = 0x1000, + TYPEFLAG_FREVERSEBIND = 0x2000, + TYPEFLAG_FPROXY = 0x4000 +} TYPEFLAGS; +typedef enum tagFUNCFLAGS { + FUNCFLAG_FRESTRICTED = 0x1, + FUNCFLAG_FSOURCE = 0x2, + FUNCFLAG_FBINDABLE = 0x4, + FUNCFLAG_FREQUESTEDIT = 0x8, + FUNCFLAG_FDISPLAYBIND = 0x10, + FUNCFLAG_FDEFAULTBIND = 0x20, + FUNCFLAG_FHIDDEN = 0x40, + FUNCFLAG_FUSESGETLASTERROR = 0x80, + FUNCFLAG_FDEFAULTCOLLELEM = 0x100, + FUNCFLAG_FUIDEFAULT = 0x200, + FUNCFLAG_FNONBROWSABLE = 0x400, + FUNCFLAG_FREPLACEABLE = 0x800, + FUNCFLAG_FIMMEDIATEBIND = 0x1000 +} FUNCFLAGS; +typedef enum tagVARFLAGS { + VARFLAG_FREADONLY = 0x1, + VARFLAG_FSOURCE = 0x2, + VARFLAG_FBINDABLE = 0x4, + VARFLAG_FREQUESTEDIT = 0x8, + VARFLAG_FDISPLAYBIND = 0x10, + VARFLAG_FDEFAULTBIND = 0x20, + VARFLAG_FHIDDEN = 0x40, + VARFLAG_FRESTRICTED = 0x80, + VARFLAG_FDEFAULTCOLLELEM = 0x100, + VARFLAG_FUIDEFAULT = 0x200, + VARFLAG_FNONBROWSABLE = 0x400, + VARFLAG_FREPLACEABLE = 0x800, + VARFLAG_FIMMEDIATEBIND = 0x1000 +} VARFLAGS; +typedef struct tagCLEANLOCALSTORAGE { + IUnknown *pInterface; + PVOID pStorage; + DWORD flags; +} CLEANLOCALSTORAGE; +typedef struct tagCUSTDATAITEM { + GUID guid; + VARIANTARG varValue; +} CUSTDATAITEM; +typedef struct tagCUSTDATAITEM *LPCUSTDATAITEM; +typedef struct tagCUSTDATA { + DWORD cCustData; + LPCUSTDATAITEM prgCustData; +} CUSTDATA; +typedef struct tagCUSTDATA *LPCUSTDATA; +#define __ICreateTypeInfo_INTERFACE_DEFINED__ +typedef ICreateTypeInfo *LPCREATETYPEINFO; +extern const GUID IID_ICreateTypeInfo; +typedef struct ICreateTypeInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICreateTypeInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICreateTypeInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICreateTypeInfo *This); + HRESULT (__attribute__((__stdcall__)) *SetGuid)( + ICreateTypeInfo *This, + const GUID *const guid); + HRESULT (__attribute__((__stdcall__)) *SetTypeFlags)( + ICreateTypeInfo *This, + UINT uTypeFlags); + HRESULT (__attribute__((__stdcall__)) *SetDocString)( + ICreateTypeInfo *This, + LPOLESTR pStrDoc); + HRESULT (__attribute__((__stdcall__)) *SetHelpContext)( + ICreateTypeInfo *This, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetVersion)( + ICreateTypeInfo *This, + WORD wMajorVerNum, + WORD wMinorVerNum); + HRESULT (__attribute__((__stdcall__)) *AddRefTypeInfo)( + ICreateTypeInfo *This, + ITypeInfo *pTInfo, + HREFTYPE *phRefType); + HRESULT (__attribute__((__stdcall__)) *AddFuncDesc)( + ICreateTypeInfo *This, + UINT index, + FUNCDESC *pFuncDesc); + HRESULT (__attribute__((__stdcall__)) *AddImplType)( + ICreateTypeInfo *This, + UINT index, + HREFTYPE hRefType); + HRESULT (__attribute__((__stdcall__)) *SetImplTypeFlags)( + ICreateTypeInfo *This, + UINT index, + INT implTypeFlags); + HRESULT (__attribute__((__stdcall__)) *SetAlignment)( + ICreateTypeInfo *This, + WORD cbAlignment); + HRESULT (__attribute__((__stdcall__)) *SetSchema)( + ICreateTypeInfo *This, + LPOLESTR pStrSchema); + HRESULT (__attribute__((__stdcall__)) *AddVarDesc)( + ICreateTypeInfo *This, + UINT index, + VARDESC *pVarDesc); + HRESULT (__attribute__((__stdcall__)) *SetFuncAndParamNames)( + ICreateTypeInfo *This, + UINT index, + LPOLESTR *rgszNames, + UINT cNames); + HRESULT (__attribute__((__stdcall__)) *SetVarName)( + ICreateTypeInfo *This, + UINT index, + LPOLESTR szName); + HRESULT (__attribute__((__stdcall__)) *SetTypeDescAlias)( + ICreateTypeInfo *This, + TYPEDESC *pTDescAlias); + HRESULT (__attribute__((__stdcall__)) *DefineFuncAsDllEntry)( + ICreateTypeInfo *This, + UINT index, + LPOLESTR szDllName, + LPOLESTR szProcName); + HRESULT (__attribute__((__stdcall__)) *SetFuncDocString)( + ICreateTypeInfo *This, + UINT index, + LPOLESTR szDocString); + HRESULT (__attribute__((__stdcall__)) *SetVarDocString)( + ICreateTypeInfo *This, + UINT index, + LPOLESTR szDocString); + HRESULT (__attribute__((__stdcall__)) *SetFuncHelpContext)( + ICreateTypeInfo *This, + UINT index, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetVarHelpContext)( + ICreateTypeInfo *This, + UINT index, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetMops)( + ICreateTypeInfo *This, + UINT index, + BSTR bstrMops); + HRESULT (__attribute__((__stdcall__)) *SetTypeIdldesc)( + ICreateTypeInfo *This, + IDLDESC *pIdlDesc); + HRESULT (__attribute__((__stdcall__)) *LayOut)( + ICreateTypeInfo *This); +} ICreateTypeInfoVtbl; +struct ICreateTypeInfo { + ICreateTypeInfoVtbl* lpVtbl; +}; +#define __ICreateTypeInfo2_INTERFACE_DEFINED__ +typedef ICreateTypeInfo2 *LPCREATETYPEINFO2; +extern const GUID IID_ICreateTypeInfo2; +typedef struct ICreateTypeInfo2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICreateTypeInfo2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICreateTypeInfo2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICreateTypeInfo2 *This); + HRESULT (__attribute__((__stdcall__)) *SetGuid)( + ICreateTypeInfo2 *This, + const GUID *const guid); + HRESULT (__attribute__((__stdcall__)) *SetTypeFlags)( + ICreateTypeInfo2 *This, + UINT uTypeFlags); + HRESULT (__attribute__((__stdcall__)) *SetDocString)( + ICreateTypeInfo2 *This, + LPOLESTR pStrDoc); + HRESULT (__attribute__((__stdcall__)) *SetHelpContext)( + ICreateTypeInfo2 *This, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetVersion)( + ICreateTypeInfo2 *This, + WORD wMajorVerNum, + WORD wMinorVerNum); + HRESULT (__attribute__((__stdcall__)) *AddRefTypeInfo)( + ICreateTypeInfo2 *This, + ITypeInfo *pTInfo, + HREFTYPE *phRefType); + HRESULT (__attribute__((__stdcall__)) *AddFuncDesc)( + ICreateTypeInfo2 *This, + UINT index, + FUNCDESC *pFuncDesc); + HRESULT (__attribute__((__stdcall__)) *AddImplType)( + ICreateTypeInfo2 *This, + UINT index, + HREFTYPE hRefType); + HRESULT (__attribute__((__stdcall__)) *SetImplTypeFlags)( + ICreateTypeInfo2 *This, + UINT index, + INT implTypeFlags); + HRESULT (__attribute__((__stdcall__)) *SetAlignment)( + ICreateTypeInfo2 *This, + WORD cbAlignment); + HRESULT (__attribute__((__stdcall__)) *SetSchema)( + ICreateTypeInfo2 *This, + LPOLESTR pStrSchema); + HRESULT (__attribute__((__stdcall__)) *AddVarDesc)( + ICreateTypeInfo2 *This, + UINT index, + VARDESC *pVarDesc); + HRESULT (__attribute__((__stdcall__)) *SetFuncAndParamNames)( + ICreateTypeInfo2 *This, + UINT index, + LPOLESTR *rgszNames, + UINT cNames); + HRESULT (__attribute__((__stdcall__)) *SetVarName)( + ICreateTypeInfo2 *This, + UINT index, + LPOLESTR szName); + HRESULT (__attribute__((__stdcall__)) *SetTypeDescAlias)( + ICreateTypeInfo2 *This, + TYPEDESC *pTDescAlias); + HRESULT (__attribute__((__stdcall__)) *DefineFuncAsDllEntry)( + ICreateTypeInfo2 *This, + UINT index, + LPOLESTR szDllName, + LPOLESTR szProcName); + HRESULT (__attribute__((__stdcall__)) *SetFuncDocString)( + ICreateTypeInfo2 *This, + UINT index, + LPOLESTR szDocString); + HRESULT (__attribute__((__stdcall__)) *SetVarDocString)( + ICreateTypeInfo2 *This, + UINT index, + LPOLESTR szDocString); + HRESULT (__attribute__((__stdcall__)) *SetFuncHelpContext)( + ICreateTypeInfo2 *This, + UINT index, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetVarHelpContext)( + ICreateTypeInfo2 *This, + UINT index, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetMops)( + ICreateTypeInfo2 *This, + UINT index, + BSTR bstrMops); + HRESULT (__attribute__((__stdcall__)) *SetTypeIdldesc)( + ICreateTypeInfo2 *This, + IDLDESC *pIdlDesc); + HRESULT (__attribute__((__stdcall__)) *LayOut)( + ICreateTypeInfo2 *This); + HRESULT (__attribute__((__stdcall__)) *DeleteFuncDesc)( + ICreateTypeInfo2 *This, + UINT index); + HRESULT (__attribute__((__stdcall__)) *DeleteFuncDescByMemId)( + ICreateTypeInfo2 *This, + MEMBERID memid, + INVOKEKIND invKind); + HRESULT (__attribute__((__stdcall__)) *DeleteVarDesc)( + ICreateTypeInfo2 *This, + UINT index); + HRESULT (__attribute__((__stdcall__)) *DeleteVarDescByMemId)( + ICreateTypeInfo2 *This, + MEMBERID memid); + HRESULT (__attribute__((__stdcall__)) *DeleteImplType)( + ICreateTypeInfo2 *This, + UINT index); + HRESULT (__attribute__((__stdcall__)) *SetCustData)( + ICreateTypeInfo2 *This, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *SetFuncCustData)( + ICreateTypeInfo2 *This, + UINT index, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *SetParamCustData)( + ICreateTypeInfo2 *This, + UINT indexFunc, + UINT indexParam, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *SetVarCustData)( + ICreateTypeInfo2 *This, + UINT index, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *SetImplTypeCustData)( + ICreateTypeInfo2 *This, + UINT index, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *SetHelpStringContext)( + ICreateTypeInfo2 *This, + ULONG dwHelpStringContext); + HRESULT (__attribute__((__stdcall__)) *SetFuncHelpStringContext)( + ICreateTypeInfo2 *This, + UINT index, + ULONG dwHelpStringContext); + HRESULT (__attribute__((__stdcall__)) *SetVarHelpStringContext)( + ICreateTypeInfo2 *This, + UINT index, + ULONG dwHelpStringContext); + HRESULT (__attribute__((__stdcall__)) *Invalidate)( + ICreateTypeInfo2 *This); + HRESULT (__attribute__((__stdcall__)) *SetName)( + ICreateTypeInfo2 *This, + LPOLESTR szName); +} ICreateTypeInfo2Vtbl; +struct ICreateTypeInfo2 { + ICreateTypeInfo2Vtbl* lpVtbl; +}; +#define __ICreateTypeLib_INTERFACE_DEFINED__ +typedef ICreateTypeLib *LPCREATETYPELIB; +extern const GUID IID_ICreateTypeLib; +typedef struct ICreateTypeLibVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICreateTypeLib *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICreateTypeLib *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICreateTypeLib *This); + HRESULT (__attribute__((__stdcall__)) *CreateTypeInfo)( + ICreateTypeLib *This, + LPOLESTR szName, + TYPEKIND tkind, + ICreateTypeInfo **ppCTInfo); + HRESULT (__attribute__((__stdcall__)) *SetName)( + ICreateTypeLib *This, + LPOLESTR szName); + HRESULT (__attribute__((__stdcall__)) *SetVersion)( + ICreateTypeLib *This, + WORD wMajorVerNum, + WORD wMinorVerNum); + HRESULT (__attribute__((__stdcall__)) *SetGuid)( + ICreateTypeLib *This, + const GUID *const guid); + HRESULT (__attribute__((__stdcall__)) *SetDocString)( + ICreateTypeLib *This, + LPOLESTR szDoc); + HRESULT (__attribute__((__stdcall__)) *SetHelpFileName)( + ICreateTypeLib *This, + LPOLESTR szHelpFileName); + HRESULT (__attribute__((__stdcall__)) *SetHelpContext)( + ICreateTypeLib *This, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetLcid)( + ICreateTypeLib *This, + LCID lcid); + HRESULT (__attribute__((__stdcall__)) *SetLibFlags)( + ICreateTypeLib *This, + UINT uLibFlags); + HRESULT (__attribute__((__stdcall__)) *SaveAllChanges)( + ICreateTypeLib *This); +} ICreateTypeLibVtbl; +struct ICreateTypeLib { + ICreateTypeLibVtbl* lpVtbl; +}; +#define __ICreateTypeLib2_INTERFACE_DEFINED__ +typedef ICreateTypeLib2 *LPCREATETYPELIB2; +extern const GUID IID_ICreateTypeLib2; +typedef struct ICreateTypeLib2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICreateTypeLib2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICreateTypeLib2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICreateTypeLib2 *This); + HRESULT (__attribute__((__stdcall__)) *CreateTypeInfo)( + ICreateTypeLib2 *This, + LPOLESTR szName, + TYPEKIND tkind, + ICreateTypeInfo **ppCTInfo); + HRESULT (__attribute__((__stdcall__)) *SetName)( + ICreateTypeLib2 *This, + LPOLESTR szName); + HRESULT (__attribute__((__stdcall__)) *SetVersion)( + ICreateTypeLib2 *This, + WORD wMajorVerNum, + WORD wMinorVerNum); + HRESULT (__attribute__((__stdcall__)) *SetGuid)( + ICreateTypeLib2 *This, + const GUID *const guid); + HRESULT (__attribute__((__stdcall__)) *SetDocString)( + ICreateTypeLib2 *This, + LPOLESTR szDoc); + HRESULT (__attribute__((__stdcall__)) *SetHelpFileName)( + ICreateTypeLib2 *This, + LPOLESTR szHelpFileName); + HRESULT (__attribute__((__stdcall__)) *SetHelpContext)( + ICreateTypeLib2 *This, + DWORD dwHelpContext); + HRESULT (__attribute__((__stdcall__)) *SetLcid)( + ICreateTypeLib2 *This, + LCID lcid); + HRESULT (__attribute__((__stdcall__)) *SetLibFlags)( + ICreateTypeLib2 *This, + UINT uLibFlags); + HRESULT (__attribute__((__stdcall__)) *SaveAllChanges)( + ICreateTypeLib2 *This); + HRESULT (__attribute__((__stdcall__)) *DeleteTypeInfo)( + ICreateTypeLib2 *This, + LPOLESTR szName); + HRESULT (__attribute__((__stdcall__)) *SetCustData)( + ICreateTypeLib2 *This, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *SetHelpStringContext)( + ICreateTypeLib2 *This, + ULONG dwHelpStringContext); + HRESULT (__attribute__((__stdcall__)) *SetHelpStringDll)( + ICreateTypeLib2 *This, + LPOLESTR szFileName); +} ICreateTypeLib2Vtbl; +struct ICreateTypeLib2 { + ICreateTypeLib2Vtbl* lpVtbl; +}; +#define __IDispatch_INTERFACE_DEFINED__ +typedef IDispatch *LPDISPATCH; +#define DISPID_UNKNOWN (-1) +#define DISPID_VALUE (0) +#define DISPID_PROPERTYPUT (-3) +#define DISPID_NEWENUM (-4) +#define DISPID_EVALUATE (-5) +#define DISPID_CONSTRUCTOR (-6) +#define DISPID_DESTRUCTOR (-7) +#define DISPID_COLLECT (-8) +extern const GUID IID_IDispatch; +typedef struct IDispatchVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDispatch *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDispatch *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDispatch *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IDispatch *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IDispatch *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IDispatch *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IDispatch *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); +} IDispatchVtbl; +struct IDispatch { + IDispatchVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IDispatch_RemoteInvoke_Proxy( + IDispatch* This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + DWORD dwFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *pArgErr, + UINT cVarRef, + UINT *rgVarRefIdx, + VARIANTARG *rgVarRef); +void __attribute__((__stdcall__)) IDispatch_RemoteInvoke_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IDispatch_Invoke_Proxy( + IDispatch* This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); +HRESULT __attribute__((__stdcall__)) IDispatch_Invoke_Stub( + IDispatch* This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + DWORD dwFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *pArgErr, + UINT cVarRef, + UINT *rgVarRefIdx, + VARIANTARG *rgVarRef); +#define __IEnumVARIANT_INTERFACE_DEFINED__ +typedef IEnumVARIANT *LPENUMVARIANT; +extern const GUID IID_IEnumVARIANT; +typedef struct IEnumVARIANTVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumVARIANT *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumVARIANT *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumVARIANT *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumVARIANT *This, + ULONG celt, + VARIANT *rgVar, + ULONG *pCeltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumVARIANT *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumVARIANT *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumVARIANT *This, + IEnumVARIANT **ppEnum); +} IEnumVARIANTVtbl; +struct IEnumVARIANT { + IEnumVARIANTVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumVARIANT_RemoteNext_Proxy( + IEnumVARIANT* This, + ULONG celt, + VARIANT *rgVar, + ULONG *pCeltFetched); +void __attribute__((__stdcall__)) IEnumVARIANT_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumVARIANT_Next_Proxy( + IEnumVARIANT* This, + ULONG celt, + VARIANT *rgVar, + ULONG *pCeltFetched); +HRESULT __attribute__((__stdcall__)) IEnumVARIANT_Next_Stub( + IEnumVARIANT* This, + ULONG celt, + VARIANT *rgVar, + ULONG *pCeltFetched); +#define __ITypeComp_INTERFACE_DEFINED__ +typedef ITypeComp *LPTYPECOMP; +typedef enum tagDESCKIND { + DESCKIND_NONE = 0, + DESCKIND_FUNCDESC = 1, + DESCKIND_VARDESC = 2, + DESCKIND_TYPECOMP = 3, + DESCKIND_IMPLICITAPPOBJ = 4, + DESCKIND_MAX = 5 +} DESCKIND; +typedef union tagBINDPTR { + FUNCDESC *lpfuncdesc; + VARDESC *lpvardesc; + ITypeComp *lptcomp; +} BINDPTR; +typedef union tagBINDPTR *LPBINDPTR; +extern const GUID IID_ITypeComp; +typedef struct ITypeCompVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeComp *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeComp *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeComp *This); + HRESULT (__attribute__((__stdcall__)) *Bind)( + ITypeComp *This, + LPOLESTR szName, + ULONG lHashVal, + WORD wFlags, + ITypeInfo **ppTInfo, + DESCKIND *pDescKind, + BINDPTR *pBindPtr); + HRESULT (__attribute__((__stdcall__)) *BindType)( + ITypeComp *This, + LPOLESTR szName, + ULONG lHashVal, + ITypeInfo **ppTInfo, + ITypeComp **ppTComp); +} ITypeCompVtbl; +struct ITypeComp { + ITypeCompVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) ITypeComp_RemoteBind_Proxy( + ITypeComp* This, + LPOLESTR szName, + ULONG lHashVal, + WORD wFlags, + ITypeInfo **ppTInfo, + DESCKIND *pDescKind, + LPFUNCDESC *ppFuncDesc, + LPVARDESC *ppVarDesc, + ITypeComp **ppTypeComp, + CLEANLOCALSTORAGE *pDummy); +void __attribute__((__stdcall__)) ITypeComp_RemoteBind_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeComp_RemoteBindType_Proxy( + ITypeComp* This, + LPOLESTR szName, + ULONG lHashVal, + ITypeInfo **ppTInfo); +void __attribute__((__stdcall__)) ITypeComp_RemoteBindType_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeComp_Bind_Proxy( + ITypeComp* This, + LPOLESTR szName, + ULONG lHashVal, + WORD wFlags, + ITypeInfo **ppTInfo, + DESCKIND *pDescKind, + BINDPTR *pBindPtr); +HRESULT __attribute__((__stdcall__)) ITypeComp_Bind_Stub( + ITypeComp* This, + LPOLESTR szName, + ULONG lHashVal, + WORD wFlags, + ITypeInfo **ppTInfo, + DESCKIND *pDescKind, + LPFUNCDESC *ppFuncDesc, + LPVARDESC *ppVarDesc, + ITypeComp **ppTypeComp, + CLEANLOCALSTORAGE *pDummy); +HRESULT __attribute__((__stdcall__)) ITypeComp_BindType_Proxy( + ITypeComp* This, + LPOLESTR szName, + ULONG lHashVal, + ITypeInfo **ppTInfo, + ITypeComp **ppTComp); +HRESULT __attribute__((__stdcall__)) ITypeComp_BindType_Stub( + ITypeComp* This, + LPOLESTR szName, + ULONG lHashVal, + ITypeInfo **ppTInfo); +#define __ITypeInfo_INTERFACE_DEFINED__ +typedef ITypeInfo *LPTYPEINFO; +extern const GUID IID_ITypeInfo; +typedef struct ITypeInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeAttr)( + ITypeInfo *This, + TYPEATTR **ppTypeAttr); + HRESULT (__attribute__((__stdcall__)) *GetTypeComp)( + ITypeInfo *This, + ITypeComp **ppTComp); + HRESULT (__attribute__((__stdcall__)) *GetFuncDesc)( + ITypeInfo *This, + UINT index, + FUNCDESC **ppFuncDesc); + HRESULT (__attribute__((__stdcall__)) *GetVarDesc)( + ITypeInfo *This, + UINT index, + VARDESC **ppVarDesc); + HRESULT (__attribute__((__stdcall__)) *GetNames)( + ITypeInfo *This, + MEMBERID memid, + BSTR *rgBstrNames, + UINT cMaxNames, + UINT *pcNames); + HRESULT (__attribute__((__stdcall__)) *GetRefTypeOfImplType)( + ITypeInfo *This, + UINT index, + HREFTYPE *pRefType); + HRESULT (__attribute__((__stdcall__)) *GetImplTypeFlags)( + ITypeInfo *This, + UINT index, + INT *pImplTypeFlags); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + ITypeInfo *This, + LPOLESTR *rgszNames, + UINT cNames, + MEMBERID *pMemId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + ITypeInfo *This, + PVOID pvInstance, + MEMBERID memid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *GetDocumentation)( + ITypeInfo *This, + MEMBERID memid, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); + HRESULT (__attribute__((__stdcall__)) *GetDllEntry)( + ITypeInfo *This, + MEMBERID memid, + INVOKEKIND invKind, + BSTR *pBstrDllName, + BSTR *pBstrName, + WORD *pwOrdinal); + HRESULT (__attribute__((__stdcall__)) *GetRefTypeInfo)( + ITypeInfo *This, + HREFTYPE hRefType, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *AddressOfMember)( + ITypeInfo *This, + MEMBERID memid, + INVOKEKIND invKind, + PVOID *ppv); + HRESULT (__attribute__((__stdcall__)) *CreateInstance)( + ITypeInfo *This, + IUnknown *pUnkOuter, + const IID *const riid, + PVOID *ppvObj); + HRESULT (__attribute__((__stdcall__)) *GetMops)( + ITypeInfo *This, + MEMBERID memid, + BSTR *pBstrMops); + HRESULT (__attribute__((__stdcall__)) *GetContainingTypeLib)( + ITypeInfo *This, + ITypeLib **ppTLib, + UINT *pIndex); + void (__attribute__((__stdcall__)) *ReleaseTypeAttr)( + ITypeInfo *This, + TYPEATTR *pTypeAttr); + void (__attribute__((__stdcall__)) *ReleaseFuncDesc)( + ITypeInfo *This, + FUNCDESC *pFuncDesc); + void (__attribute__((__stdcall__)) *ReleaseVarDesc)( + ITypeInfo *This, + VARDESC *pVarDesc); +} ITypeInfoVtbl; +struct ITypeInfo { + ITypeInfoVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetTypeAttr_Proxy( + ITypeInfo* This, + LPTYPEATTR *ppTypeAttr, + CLEANLOCALSTORAGE *pDummy); +void __attribute__((__stdcall__)) ITypeInfo_RemoteGetTypeAttr_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetFuncDesc_Proxy( + ITypeInfo* This, + UINT index, + LPFUNCDESC *ppFuncDesc, + CLEANLOCALSTORAGE *pDummy); +void __attribute__((__stdcall__)) ITypeInfo_RemoteGetFuncDesc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetVarDesc_Proxy( + ITypeInfo* This, + UINT index, + LPVARDESC *ppVarDesc, + CLEANLOCALSTORAGE *pDummy); +void __attribute__((__stdcall__)) ITypeInfo_RemoteGetVarDesc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetNames_Proxy( + ITypeInfo* This, + MEMBERID memid, + BSTR *rgBstrNames, + UINT cMaxNames, + UINT *pcNames); +void __attribute__((__stdcall__)) ITypeInfo_RemoteGetNames_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalGetIDsOfNames_Proxy( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_LocalGetIDsOfNames_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalInvoke_Proxy( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_LocalInvoke_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetDocumentation_Proxy( + ITypeInfo* This, + MEMBERID memid, + DWORD refPtrFlags, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); +void __attribute__((__stdcall__)) ITypeInfo_RemoteGetDocumentation_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetDllEntry_Proxy( + ITypeInfo* This, + MEMBERID memid, + INVOKEKIND invKind, + DWORD refPtrFlags, + BSTR *pBstrDllName, + BSTR *pBstrName, + WORD *pwOrdinal); +void __attribute__((__stdcall__)) ITypeInfo_RemoteGetDllEntry_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalAddressOfMember_Proxy( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_LocalAddressOfMember_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteCreateInstance_Proxy( + ITypeInfo* This, + const IID *const riid, + IUnknown **ppvObj); +void __attribute__((__stdcall__)) ITypeInfo_RemoteCreateInstance_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetContainingTypeLib_Proxy( + ITypeInfo* This, + ITypeLib **ppTLib, + UINT *pIndex); +void __attribute__((__stdcall__)) ITypeInfo_RemoteGetContainingTypeLib_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalReleaseTypeAttr_Proxy( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_LocalReleaseTypeAttr_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalReleaseFuncDesc_Proxy( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_LocalReleaseFuncDesc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalReleaseVarDesc_Proxy( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_LocalReleaseVarDesc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetTypeAttr_Proxy( + ITypeInfo* This, + TYPEATTR **ppTypeAttr); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetTypeAttr_Stub( + ITypeInfo* This, + LPTYPEATTR *ppTypeAttr, + CLEANLOCALSTORAGE *pDummy); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetFuncDesc_Proxy( + ITypeInfo* This, + UINT index, + FUNCDESC **ppFuncDesc); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetFuncDesc_Stub( + ITypeInfo* This, + UINT index, + LPFUNCDESC *ppFuncDesc, + CLEANLOCALSTORAGE *pDummy); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetVarDesc_Proxy( + ITypeInfo* This, + UINT index, + VARDESC **ppVarDesc); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetVarDesc_Stub( + ITypeInfo* This, + UINT index, + LPVARDESC *ppVarDesc, + CLEANLOCALSTORAGE *pDummy); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetNames_Proxy( + ITypeInfo* This, + MEMBERID memid, + BSTR *rgBstrNames, + UINT cMaxNames, + UINT *pcNames); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetNames_Stub( + ITypeInfo* This, + MEMBERID memid, + BSTR *rgBstrNames, + UINT cMaxNames, + UINT *pcNames); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetIDsOfNames_Proxy( + ITypeInfo* This, + LPOLESTR *rgszNames, + UINT cNames, + MEMBERID *pMemId); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetIDsOfNames_Stub( + ITypeInfo* This); +HRESULT __attribute__((__stdcall__)) ITypeInfo_Invoke_Proxy( + ITypeInfo* This, + PVOID pvInstance, + MEMBERID memid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); +HRESULT __attribute__((__stdcall__)) ITypeInfo_Invoke_Stub( + ITypeInfo* This); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDocumentation_Proxy( + ITypeInfo* This, + MEMBERID memid, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDocumentation_Stub( + ITypeInfo* This, + MEMBERID memid, + DWORD refPtrFlags, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDllEntry_Proxy( + ITypeInfo* This, + MEMBERID memid, + INVOKEKIND invKind, + BSTR *pBstrDllName, + BSTR *pBstrName, + WORD *pwOrdinal); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDllEntry_Stub( + ITypeInfo* This, + MEMBERID memid, + INVOKEKIND invKind, + DWORD refPtrFlags, + BSTR *pBstrDllName, + BSTR *pBstrName, + WORD *pwOrdinal); +HRESULT __attribute__((__stdcall__)) ITypeInfo_AddressOfMember_Proxy( + ITypeInfo* This, + MEMBERID memid, + INVOKEKIND invKind, + PVOID *ppv); +HRESULT __attribute__((__stdcall__)) ITypeInfo_AddressOfMember_Stub( + ITypeInfo* This); +HRESULT __attribute__((__stdcall__)) ITypeInfo_CreateInstance_Proxy( + ITypeInfo* This, + IUnknown *pUnkOuter, + const IID *const riid, + PVOID *ppvObj); +HRESULT __attribute__((__stdcall__)) ITypeInfo_CreateInstance_Stub( + ITypeInfo* This, + const IID *const riid, + IUnknown **ppvObj); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetContainingTypeLib_Proxy( + ITypeInfo* This, + ITypeLib **ppTLib, + UINT *pIndex); +HRESULT __attribute__((__stdcall__)) ITypeInfo_GetContainingTypeLib_Stub( + ITypeInfo* This, + ITypeLib **ppTLib, + UINT *pIndex); +void __attribute__((__stdcall__)) ITypeInfo_ReleaseTypeAttr_Proxy( + ITypeInfo* This, + TYPEATTR *pTypeAttr); +HRESULT __attribute__((__stdcall__)) ITypeInfo_ReleaseTypeAttr_Stub( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_ReleaseFuncDesc_Proxy( + ITypeInfo* This, + FUNCDESC *pFuncDesc); +HRESULT __attribute__((__stdcall__)) ITypeInfo_ReleaseFuncDesc_Stub( + ITypeInfo* This); +void __attribute__((__stdcall__)) ITypeInfo_ReleaseVarDesc_Proxy( + ITypeInfo* This, + VARDESC *pVarDesc); +HRESULT __attribute__((__stdcall__)) ITypeInfo_ReleaseVarDesc_Stub( + ITypeInfo* This); +#define __ITypeInfo2_INTERFACE_DEFINED__ +typedef ITypeInfo2 *LPTYPEINFO2; +extern const GUID IID_ITypeInfo2; +typedef struct ITypeInfo2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeInfo2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeInfo2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeInfo2 *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeAttr)( + ITypeInfo2 *This, + TYPEATTR **ppTypeAttr); + HRESULT (__attribute__((__stdcall__)) *GetTypeComp)( + ITypeInfo2 *This, + ITypeComp **ppTComp); + HRESULT (__attribute__((__stdcall__)) *GetFuncDesc)( + ITypeInfo2 *This, + UINT index, + FUNCDESC **ppFuncDesc); + HRESULT (__attribute__((__stdcall__)) *GetVarDesc)( + ITypeInfo2 *This, + UINT index, + VARDESC **ppVarDesc); + HRESULT (__attribute__((__stdcall__)) *GetNames)( + ITypeInfo2 *This, + MEMBERID memid, + BSTR *rgBstrNames, + UINT cMaxNames, + UINT *pcNames); + HRESULT (__attribute__((__stdcall__)) *GetRefTypeOfImplType)( + ITypeInfo2 *This, + UINT index, + HREFTYPE *pRefType); + HRESULT (__attribute__((__stdcall__)) *GetImplTypeFlags)( + ITypeInfo2 *This, + UINT index, + INT *pImplTypeFlags); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + ITypeInfo2 *This, + LPOLESTR *rgszNames, + UINT cNames, + MEMBERID *pMemId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + ITypeInfo2 *This, + PVOID pvInstance, + MEMBERID memid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *GetDocumentation)( + ITypeInfo2 *This, + MEMBERID memid, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); + HRESULT (__attribute__((__stdcall__)) *GetDllEntry)( + ITypeInfo2 *This, + MEMBERID memid, + INVOKEKIND invKind, + BSTR *pBstrDllName, + BSTR *pBstrName, + WORD *pwOrdinal); + HRESULT (__attribute__((__stdcall__)) *GetRefTypeInfo)( + ITypeInfo2 *This, + HREFTYPE hRefType, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *AddressOfMember)( + ITypeInfo2 *This, + MEMBERID memid, + INVOKEKIND invKind, + PVOID *ppv); + HRESULT (__attribute__((__stdcall__)) *CreateInstance)( + ITypeInfo2 *This, + IUnknown *pUnkOuter, + const IID *const riid, + PVOID *ppvObj); + HRESULT (__attribute__((__stdcall__)) *GetMops)( + ITypeInfo2 *This, + MEMBERID memid, + BSTR *pBstrMops); + HRESULT (__attribute__((__stdcall__)) *GetContainingTypeLib)( + ITypeInfo2 *This, + ITypeLib **ppTLib, + UINT *pIndex); + void (__attribute__((__stdcall__)) *ReleaseTypeAttr)( + ITypeInfo2 *This, + TYPEATTR *pTypeAttr); + void (__attribute__((__stdcall__)) *ReleaseFuncDesc)( + ITypeInfo2 *This, + FUNCDESC *pFuncDesc); + void (__attribute__((__stdcall__)) *ReleaseVarDesc)( + ITypeInfo2 *This, + VARDESC *pVarDesc); + HRESULT (__attribute__((__stdcall__)) *GetTypeKind)( + ITypeInfo2 *This, + TYPEKIND *pTypeKind); + HRESULT (__attribute__((__stdcall__)) *GetTypeFlags)( + ITypeInfo2 *This, + ULONG *pTypeFlags); + HRESULT (__attribute__((__stdcall__)) *GetFuncIndexOfMemId)( + ITypeInfo2 *This, + MEMBERID memid, + INVOKEKIND invKind, + UINT *pFuncIndex); + HRESULT (__attribute__((__stdcall__)) *GetVarIndexOfMemId)( + ITypeInfo2 *This, + MEMBERID memid, + UINT *pVarIndex); + HRESULT (__attribute__((__stdcall__)) *GetCustData)( + ITypeInfo2 *This, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *GetFuncCustData)( + ITypeInfo2 *This, + UINT index, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *GetParamCustData)( + ITypeInfo2 *This, + UINT indexFunc, + UINT indexParam, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *GetVarCustData)( + ITypeInfo2 *This, + UINT index, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *GetImplTypeCustData)( + ITypeInfo2 *This, + UINT index, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *GetDocumentation2)( + ITypeInfo2 *This, + MEMBERID memid, + LCID lcid, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); + HRESULT (__attribute__((__stdcall__)) *GetAllCustData)( + ITypeInfo2 *This, + CUSTDATA *pCustData); + HRESULT (__attribute__((__stdcall__)) *GetAllFuncCustData)( + ITypeInfo2 *This, + UINT index, + CUSTDATA *pCustData); + HRESULT (__attribute__((__stdcall__)) *GetAllParamCustData)( + ITypeInfo2 *This, + UINT indexFunc, + UINT indexParam, + CUSTDATA *pCustData); + HRESULT (__attribute__((__stdcall__)) *GetAllVarCustData)( + ITypeInfo2 *This, + UINT index, + CUSTDATA *pCustData); + HRESULT (__attribute__((__stdcall__)) *GetAllImplTypeCustData)( + ITypeInfo2 *This, + UINT index, + CUSTDATA *pCustData); +} ITypeInfo2Vtbl; +struct ITypeInfo2 { + ITypeInfo2Vtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) ITypeInfo2_RemoteGetDocumentation2_Proxy( + ITypeInfo2* This, + MEMBERID memid, + LCID lcid, + DWORD refPtrFlags, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); +void __attribute__((__stdcall__)) ITypeInfo2_RemoteGetDocumentation2_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeInfo2_GetDocumentation2_Proxy( + ITypeInfo2* This, + MEMBERID memid, + LCID lcid, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); +HRESULT __attribute__((__stdcall__)) ITypeInfo2_GetDocumentation2_Stub( + ITypeInfo2* This, + MEMBERID memid, + LCID lcid, + DWORD refPtrFlags, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); +#define __ITypeLib_INTERFACE_DEFINED__ +typedef enum tagSYSKIND { + SYS_WIN16 = 0, + SYS_WIN32 = 1, + SYS_MAC = 2, + SYS_WIN64 = 3 +} SYSKIND; +typedef enum tagLIBFLAGS { + LIBFLAG_FRESTRICTED = 0x1, + LIBFLAG_FCONTROL = 0x2, + LIBFLAG_FHIDDEN = 0x4, + LIBFLAG_FHASDISKIMAGE = 0x8 +} LIBFLAGS; +typedef ITypeLib *LPTYPELIB; +typedef struct tagTLIBATTR { + GUID guid; + LCID lcid; + SYSKIND syskind; + WORD wMajorVerNum; + WORD wMinorVerNum; + WORD wLibFlags; +} TLIBATTR; +typedef struct tagTLIBATTR *LPTLIBATTR; +extern const GUID IID_ITypeLib; +typedef struct ITypeLibVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeLib *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeLib *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeLib *This); + UINT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + ITypeLib *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + ITypeLib *This, + UINT index, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoType)( + ITypeLib *This, + UINT index, + TYPEKIND *pTKind); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoOfGuid)( + ITypeLib *This, + const GUID *const guid, + ITypeInfo **ppTinfo); + HRESULT (__attribute__((__stdcall__)) *GetLibAttr)( + ITypeLib *This, + TLIBATTR **ppTLibAttr); + HRESULT (__attribute__((__stdcall__)) *GetTypeComp)( + ITypeLib *This, + ITypeComp **ppTComp); + HRESULT (__attribute__((__stdcall__)) *GetDocumentation)( + ITypeLib *This, + INT index, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); + HRESULT (__attribute__((__stdcall__)) *IsName)( + ITypeLib *This, + LPOLESTR szNameBuf, + ULONG lHashVal, + WINBOOL *pfName); + HRESULT (__attribute__((__stdcall__)) *FindName)( + ITypeLib *This, + LPOLESTR szNameBuf, + ULONG lHashVal, + ITypeInfo **ppTInfo, + MEMBERID *rgMemId, + USHORT *pcFound); + void (__attribute__((__stdcall__)) *ReleaseTLibAttr)( + ITypeLib *This, + TLIBATTR *pTLibAttr); +} ITypeLibVtbl; +struct ITypeLib { + ITypeLibVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteGetTypeInfoCount_Proxy( + ITypeLib* This, + UINT *pcTInfo); +void __attribute__((__stdcall__)) ITypeLib_RemoteGetTypeInfoCount_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteGetLibAttr_Proxy( + ITypeLib* This, + LPTLIBATTR *ppTLibAttr, + CLEANLOCALSTORAGE *pDummy); +void __attribute__((__stdcall__)) ITypeLib_RemoteGetLibAttr_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteGetDocumentation_Proxy( + ITypeLib* This, + INT index, + DWORD refPtrFlags, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); +void __attribute__((__stdcall__)) ITypeLib_RemoteGetDocumentation_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteIsName_Proxy( + ITypeLib* This, + LPOLESTR szNameBuf, + ULONG lHashVal, + WINBOOL *pfName, + BSTR *pBstrLibName); +void __attribute__((__stdcall__)) ITypeLib_RemoteIsName_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteFindName_Proxy( + ITypeLib* This, + LPOLESTR szNameBuf, + ULONG lHashVal, + ITypeInfo **ppTInfo, + MEMBERID *rgMemId, + USHORT *pcFound, + BSTR *pBstrLibName); +void __attribute__((__stdcall__)) ITypeLib_RemoteFindName_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeLib_LocalReleaseTLibAttr_Proxy( + ITypeLib* This); +void __attribute__((__stdcall__)) ITypeLib_LocalReleaseTLibAttr_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +UINT __attribute__((__stdcall__)) ITypeLib_GetTypeInfoCount_Proxy( + ITypeLib* This); +HRESULT __attribute__((__stdcall__)) ITypeLib_GetTypeInfoCount_Stub( + ITypeLib* This, + UINT *pcTInfo); +HRESULT __attribute__((__stdcall__)) ITypeLib_GetLibAttr_Proxy( + ITypeLib* This, + TLIBATTR **ppTLibAttr); +HRESULT __attribute__((__stdcall__)) ITypeLib_GetLibAttr_Stub( + ITypeLib* This, + LPTLIBATTR *ppTLibAttr, + CLEANLOCALSTORAGE *pDummy); +HRESULT __attribute__((__stdcall__)) ITypeLib_GetDocumentation_Proxy( + ITypeLib* This, + INT index, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); +HRESULT __attribute__((__stdcall__)) ITypeLib_GetDocumentation_Stub( + ITypeLib* This, + INT index, + DWORD refPtrFlags, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); +HRESULT __attribute__((__stdcall__)) ITypeLib_IsName_Proxy( + ITypeLib* This, + LPOLESTR szNameBuf, + ULONG lHashVal, + WINBOOL *pfName); +HRESULT __attribute__((__stdcall__)) ITypeLib_IsName_Stub( + ITypeLib* This, + LPOLESTR szNameBuf, + ULONG lHashVal, + WINBOOL *pfName, + BSTR *pBstrLibName); +HRESULT __attribute__((__stdcall__)) ITypeLib_FindName_Proxy( + ITypeLib* This, + LPOLESTR szNameBuf, + ULONG lHashVal, + ITypeInfo **ppTInfo, + MEMBERID *rgMemId, + USHORT *pcFound); +HRESULT __attribute__((__stdcall__)) ITypeLib_FindName_Stub( + ITypeLib* This, + LPOLESTR szNameBuf, + ULONG lHashVal, + ITypeInfo **ppTInfo, + MEMBERID *rgMemId, + USHORT *pcFound, + BSTR *pBstrLibName); +void __attribute__((__stdcall__)) ITypeLib_ReleaseTLibAttr_Proxy( + ITypeLib* This, + TLIBATTR *pTLibAttr); +HRESULT __attribute__((__stdcall__)) ITypeLib_ReleaseTLibAttr_Stub( + ITypeLib* This); +#define __ITypeLib2_INTERFACE_DEFINED__ +typedef ITypeLib2 *LPTYPELIB2; +extern const GUID IID_ITypeLib2; +typedef struct ITypeLib2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeLib2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeLib2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeLib2 *This); + UINT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + ITypeLib2 *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + ITypeLib2 *This, + UINT index, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoType)( + ITypeLib2 *This, + UINT index, + TYPEKIND *pTKind); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoOfGuid)( + ITypeLib2 *This, + const GUID *const guid, + ITypeInfo **ppTinfo); + HRESULT (__attribute__((__stdcall__)) *GetLibAttr)( + ITypeLib2 *This, + TLIBATTR **ppTLibAttr); + HRESULT (__attribute__((__stdcall__)) *GetTypeComp)( + ITypeLib2 *This, + ITypeComp **ppTComp); + HRESULT (__attribute__((__stdcall__)) *GetDocumentation)( + ITypeLib2 *This, + INT index, + BSTR *pBstrName, + BSTR *pBstrDocString, + DWORD *pdwHelpContext, + BSTR *pBstrHelpFile); + HRESULT (__attribute__((__stdcall__)) *IsName)( + ITypeLib2 *This, + LPOLESTR szNameBuf, + ULONG lHashVal, + WINBOOL *pfName); + HRESULT (__attribute__((__stdcall__)) *FindName)( + ITypeLib2 *This, + LPOLESTR szNameBuf, + ULONG lHashVal, + ITypeInfo **ppTInfo, + MEMBERID *rgMemId, + USHORT *pcFound); + void (__attribute__((__stdcall__)) *ReleaseTLibAttr)( + ITypeLib2 *This, + TLIBATTR *pTLibAttr); + HRESULT (__attribute__((__stdcall__)) *GetCustData)( + ITypeLib2 *This, + const GUID *const guid, + VARIANT *pVarVal); + HRESULT (__attribute__((__stdcall__)) *GetLibStatistics)( + ITypeLib2 *This, + ULONG *pcUniqueNames, + ULONG *pcchUniqueNames); + HRESULT (__attribute__((__stdcall__)) *GetDocumentation2)( + ITypeLib2 *This, + INT index, + LCID lcid, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); + HRESULT (__attribute__((__stdcall__)) *GetAllCustData)( + ITypeLib2 *This, + CUSTDATA *pCustData); +} ITypeLib2Vtbl; +struct ITypeLib2 { + ITypeLib2Vtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) ITypeLib2_RemoteGetLibStatistics_Proxy( + ITypeLib2* This, + ULONG *pcUniqueNames, + ULONG *pcchUniqueNames); +void __attribute__((__stdcall__)) ITypeLib2_RemoteGetLibStatistics_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeLib2_RemoteGetDocumentation2_Proxy( + ITypeLib2* This, + INT index, + LCID lcid, + DWORD refPtrFlags, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); +void __attribute__((__stdcall__)) ITypeLib2_RemoteGetDocumentation2_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) ITypeLib2_GetLibStatistics_Proxy( + ITypeLib2* This, + ULONG *pcUniqueNames, + ULONG *pcchUniqueNames); +HRESULT __attribute__((__stdcall__)) ITypeLib2_GetLibStatistics_Stub( + ITypeLib2* This, + ULONG *pcUniqueNames, + ULONG *pcchUniqueNames); +HRESULT __attribute__((__stdcall__)) ITypeLib2_GetDocumentation2_Proxy( + ITypeLib2* This, + INT index, + LCID lcid, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); +HRESULT __attribute__((__stdcall__)) ITypeLib2_GetDocumentation2_Stub( + ITypeLib2* This, + INT index, + LCID lcid, + DWORD refPtrFlags, + BSTR *pbstrHelpString, + DWORD *pdwHelpStringContext, + BSTR *pbstrHelpStringDll); +#define __ITypeChangeEvents_INTERFACE_DEFINED__ +typedef ITypeChangeEvents *LPTYPECHANGEEVENTS; +typedef enum tagCHANGEKIND { + CHANGEKIND_ADDMEMBER = 0, + CHANGEKIND_DELETEMEMBER = 1, + CHANGEKIND_SETNAMES = 2, + CHANGEKIND_SETDOCUMENTATION = 3, + CHANGEKIND_GENERAL = 4, + CHANGEKIND_INVALIDATE = 5, + CHANGEKIND_CHANGEFAILED = 6, + CHANGEKIND_MAX = 7 +} CHANGEKIND; +extern const GUID IID_ITypeChangeEvents; +typedef struct ITypeChangeEventsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeChangeEvents *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeChangeEvents *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeChangeEvents *This); + HRESULT (__attribute__((__stdcall__)) *RequestTypeChange)( + ITypeChangeEvents *This, + CHANGEKIND changeKind, + ITypeInfo *pTInfoBefore, + LPOLESTR pStrName, + INT *pfCancel); + HRESULT (__attribute__((__stdcall__)) *AfterTypeChange)( + ITypeChangeEvents *This, + CHANGEKIND changeKind, + ITypeInfo *pTInfoAfter, + LPOLESTR pStrName); +} ITypeChangeEventsVtbl; +struct ITypeChangeEvents { + ITypeChangeEventsVtbl* lpVtbl; +}; +#define __IErrorInfo_INTERFACE_DEFINED__ +typedef IErrorInfo *LPERRORINFO; +extern const GUID IID_IErrorInfo; +typedef struct IErrorInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IErrorInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IErrorInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IErrorInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetGUID)( + IErrorInfo *This, + GUID *pGUID); + HRESULT (__attribute__((__stdcall__)) *GetSource)( + IErrorInfo *This, + BSTR *pBstrSource); + HRESULT (__attribute__((__stdcall__)) *GetDescription)( + IErrorInfo *This, + BSTR *pBstrDescription); + HRESULT (__attribute__((__stdcall__)) *GetHelpFile)( + IErrorInfo *This, + BSTR *pBstrHelpFile); + HRESULT (__attribute__((__stdcall__)) *GetHelpContext)( + IErrorInfo *This, + DWORD *pdwHelpContext); +} IErrorInfoVtbl; +struct IErrorInfo { + IErrorInfoVtbl* lpVtbl; +}; +#define __ICreateErrorInfo_INTERFACE_DEFINED__ +typedef ICreateErrorInfo *LPCREATEERRORINFO; +extern const GUID IID_ICreateErrorInfo; +typedef struct ICreateErrorInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICreateErrorInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICreateErrorInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICreateErrorInfo *This); + HRESULT (__attribute__((__stdcall__)) *SetGUID)( + ICreateErrorInfo *This, + const GUID *const rguid); + HRESULT (__attribute__((__stdcall__)) *SetSource)( + ICreateErrorInfo *This, + LPOLESTR szSource); + HRESULT (__attribute__((__stdcall__)) *SetDescription)( + ICreateErrorInfo *This, + LPOLESTR szDescription); + HRESULT (__attribute__((__stdcall__)) *SetHelpFile)( + ICreateErrorInfo *This, + LPOLESTR szHelpFile); + HRESULT (__attribute__((__stdcall__)) *SetHelpContext)( + ICreateErrorInfo *This, + DWORD dwHelpContext); +} ICreateErrorInfoVtbl; +struct ICreateErrorInfo { + ICreateErrorInfoVtbl* lpVtbl; +}; +#define __ISupportErrorInfo_INTERFACE_DEFINED__ +typedef ISupportErrorInfo *LPSUPPORTERRORINFO; +extern const GUID IID_ISupportErrorInfo; +typedef struct ISupportErrorInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISupportErrorInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISupportErrorInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISupportErrorInfo *This); + HRESULT (__attribute__((__stdcall__)) *InterfaceSupportsErrorInfo)( + ISupportErrorInfo *This, + const IID *const riid); +} ISupportErrorInfoVtbl; +struct ISupportErrorInfo { + ISupportErrorInfoVtbl* lpVtbl; +}; +#define __ITypeFactory_INTERFACE_DEFINED__ +extern const GUID IID_ITypeFactory; +typedef struct ITypeFactoryVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeFactory *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeFactory *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeFactory *This); + HRESULT (__attribute__((__stdcall__)) *CreateFromTypeInfo)( + ITypeFactory *This, + ITypeInfo *pTypeInfo, + const IID *const riid, + IUnknown **ppv); +} ITypeFactoryVtbl; +struct ITypeFactory { + ITypeFactoryVtbl* lpVtbl; +}; +#define __ITypeMarshal_INTERFACE_DEFINED__ +extern const GUID IID_ITypeMarshal; +typedef struct ITypeMarshalVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ITypeMarshal *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ITypeMarshal *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ITypeMarshal *This); + HRESULT (__attribute__((__stdcall__)) *Size)( + ITypeMarshal *This, + PVOID pvType, + DWORD dwDestContext, + PVOID pvDestContext, + ULONG *pSize); + HRESULT (__attribute__((__stdcall__)) *Marshal)( + ITypeMarshal *This, + PVOID pvType, + DWORD dwDestContext, + PVOID pvDestContext, + ULONG cbBufferLength, + BYTE *pBuffer, + ULONG *pcbWritten); + HRESULT (__attribute__((__stdcall__)) *Unmarshal)( + ITypeMarshal *This, + PVOID pvType, + DWORD dwFlags, + ULONG cbBufferLength, + BYTE *pBuffer, + ULONG *pcbRead); + HRESULT (__attribute__((__stdcall__)) *Free)( + ITypeMarshal *This, + PVOID pvType); +} ITypeMarshalVtbl; +struct ITypeMarshal { + ITypeMarshalVtbl* lpVtbl; +}; +#define __IRecordInfo_INTERFACE_DEFINED__ +typedef IRecordInfo *LPRECORDINFO; +extern const GUID IID_IRecordInfo; +typedef struct IRecordInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IRecordInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IRecordInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IRecordInfo *This); + HRESULT (__attribute__((__stdcall__)) *RecordInit)( + IRecordInfo *This, + PVOID pvNew); + HRESULT (__attribute__((__stdcall__)) *RecordClear)( + IRecordInfo *This, + PVOID pvExisting); + HRESULT (__attribute__((__stdcall__)) *RecordCopy)( + IRecordInfo *This, + PVOID pvExisting, + PVOID pvNew); + HRESULT (__attribute__((__stdcall__)) *GetGuid)( + IRecordInfo *This, + GUID *pguid); + HRESULT (__attribute__((__stdcall__)) *GetName)( + IRecordInfo *This, + BSTR *pbstrName); + HRESULT (__attribute__((__stdcall__)) *GetSize)( + IRecordInfo *This, + ULONG *pcbSize); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IRecordInfo *This, + ITypeInfo **ppTypeInfo); + HRESULT (__attribute__((__stdcall__)) *GetField)( + IRecordInfo *This, + PVOID pvData, + LPCOLESTR szFieldName, + VARIANT *pvarField); + HRESULT (__attribute__((__stdcall__)) *GetFieldNoCopy)( + IRecordInfo *This, + PVOID pvData, + LPCOLESTR szFieldName, + VARIANT *pvarField, + PVOID *ppvDataCArray); + HRESULT (__attribute__((__stdcall__)) *PutField)( + IRecordInfo *This, + ULONG wFlags, + PVOID pvData, + LPCOLESTR szFieldName, + VARIANT *pvarField); + HRESULT (__attribute__((__stdcall__)) *PutFieldNoCopy)( + IRecordInfo *This, + ULONG wFlags, + PVOID pvData, + LPCOLESTR szFieldName, + VARIANT *pvarField); + HRESULT (__attribute__((__stdcall__)) *GetFieldNames)( + IRecordInfo *This, + ULONG *pcNames, + BSTR *rgBstrNames); + WINBOOL (__attribute__((__stdcall__)) *IsMatchingType)( + IRecordInfo *This, + IRecordInfo *pRecordInfo); + PVOID (__attribute__((__stdcall__)) *RecordCreate)( + IRecordInfo *This); + HRESULT (__attribute__((__stdcall__)) *RecordCreateCopy)( + IRecordInfo *This, + PVOID pvSource, + PVOID *ppvDest); + HRESULT (__attribute__((__stdcall__)) *RecordDestroy)( + IRecordInfo *This, + PVOID pvRecord); +} IRecordInfoVtbl; +struct IRecordInfo { + IRecordInfoVtbl* lpVtbl; +}; +#define __IErrorLog_INTERFACE_DEFINED__ +typedef IErrorLog *LPERRORLOG; +extern const GUID IID_IErrorLog; +typedef struct IErrorLogVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IErrorLog *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IErrorLog *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IErrorLog *This); + HRESULT (__attribute__((__stdcall__)) *AddError)( + IErrorLog *This, + LPCOLESTR pszPropName, + EXCEPINFO *pExcepInfo); +} IErrorLogVtbl; +struct IErrorLog { + IErrorLogVtbl* lpVtbl; +}; +#define __IPropertyBag_INTERFACE_DEFINED__ +typedef IPropertyBag *LPPROPERTYBAG; +extern const GUID IID_IPropertyBag; +typedef struct IPropertyBagVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertyBag *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertyBag *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertyBag *This); + HRESULT (__attribute__((__stdcall__)) *Read)( + IPropertyBag *This, + LPCOLESTR pszPropName, + VARIANT *pVar, + IErrorLog *pErrorLog); + HRESULT (__attribute__((__stdcall__)) *Write)( + IPropertyBag *This, + LPCOLESTR pszPropName, + VARIANT *pVar); +} IPropertyBagVtbl; +struct IPropertyBag { + IPropertyBagVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IPropertyBag_RemoteRead_Proxy( + IPropertyBag* This, + LPCOLESTR pszPropName, + VARIANT *pVar, + IErrorLog *pErrorLog, + DWORD varType, + IUnknown *pUnkObj); +void __attribute__((__stdcall__)) IPropertyBag_RemoteRead_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IPropertyBag_Read_Proxy( + IPropertyBag* This, + LPCOLESTR pszPropName, + VARIANT *pVar, + IErrorLog *pErrorLog); +HRESULT __attribute__((__stdcall__)) IPropertyBag_Read_Stub( + IPropertyBag* This, + LPCOLESTR pszPropName, + VARIANT *pVar, + IErrorLog *pErrorLog, + DWORD varType, + IUnknown *pUnkObj); +ULONG __attribute__((__stdcall__)) VARIANT_UserSize (ULONG *, ULONG, VARIANT *); +unsigned char * __attribute__((__stdcall__)) VARIANT_UserMarshal (ULONG *, unsigned char *, VARIANT *); +unsigned char * __attribute__((__stdcall__)) VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *); +void __attribute__((__stdcall__)) VARIANT_UserFree (ULONG *, VARIANT *); +ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); +void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *); +ULONG __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserSize (ULONG *, ULONG, CLEANLOCALSTORAGE *); +unsigned char * __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserMarshal (ULONG *, unsigned char *, CLEANLOCALSTORAGE *); +unsigned char * __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserUnmarshal(ULONG *, unsigned char *, CLEANLOCALSTORAGE *); +void __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserFree (ULONG *, CLEANLOCALSTORAGE *); +#define __MSXML_LIBRARY_DEFINED__ +extern const GUID LIBID_MSXML; +#define __MSXML_DOMNODETYPE_DEFINED +typedef enum tagDOMNodeType { + NODE_INVALID = 0, + NODE_ELEMENT = 1, + NODE_ATTRIBUTE = 2, + NODE_TEXT = 3, + NODE_CDATA_SECTION = 4, + NODE_ENTITY_REFERENCE = 5, + NODE_ENTITY = 6, + NODE_PROCESSING_INSTRUCTION = 7, + NODE_COMMENT = 8, + NODE_DOCUMENT = 9, + NODE_DOCUMENT_TYPE = 10, + NODE_DOCUMENT_FRAGMENT = 11, + NODE_NOTATION = 12 +} DOMNodeType; +#define __IXMLDOMNode_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMNode; +typedef struct IXMLDOMNodeVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMNode *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMNode *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMNode *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMNode *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMNode *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMNode *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMNode *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMNode *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMNode *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMNode *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMNode *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMNode *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMNode *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMNode *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMNode *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMNode *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMNode *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMNode *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMNode *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMNode *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMNode *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMNode *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMNode *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMNode *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMNode *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMNode *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMNode *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMNode *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMNode *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMNode *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMNode *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMNode *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMNode *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMNode *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMNode *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMNode *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMNode *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMNode *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMNode *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMNode *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMNode *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMNode *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMNode *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); +} IXMLDOMNodeVtbl; +struct IXMLDOMNode { + IXMLDOMNodeVtbl* lpVtbl; +}; +#define __IXMLDOMDocument_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMDocument; +typedef struct IXMLDOMDocumentVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMDocument *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMDocument *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMDocument *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMDocument *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMDocument *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMDocument *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMDocument *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMDocument *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMDocument *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMDocument *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMDocument *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMDocument *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMDocument *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMDocument *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMDocument *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMDocument *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMDocument *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMDocument *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMDocument *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMDocument *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMDocument *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMDocument *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMDocument *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMDocument *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMDocument *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMDocument *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMDocument *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMDocument *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMDocument *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMDocument *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMDocument *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMDocument *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMDocument *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMDocument *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMDocument *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMDocument *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMDocument *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMDocument *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMDocument *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMDocument *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMDocument *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMDocument *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMDocument *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_doctype)( + IXMLDOMDocument *This, + IXMLDOMDocumentType **documentType); + HRESULT (__attribute__((__stdcall__)) *get_implementation)( + IXMLDOMDocument *This, + IXMLDOMImplementation **impl); + HRESULT (__attribute__((__stdcall__)) *get_documentElement)( + IXMLDOMDocument *This, + IXMLDOMElement **DOMElement); + HRESULT (__attribute__((__stdcall__)) *putref_documentElement)( + IXMLDOMDocument *This, + IXMLDOMElement *DOMElement); + HRESULT (__attribute__((__stdcall__)) *createElement)( + IXMLDOMDocument *This, + BSTR tagname, + IXMLDOMElement **element); + HRESULT (__attribute__((__stdcall__)) *createDocumentFragment)( + IXMLDOMDocument *This, + IXMLDOMDocumentFragment **docFrag); + HRESULT (__attribute__((__stdcall__)) *createTextNode)( + IXMLDOMDocument *This, + BSTR data, + IXMLDOMText **text); + HRESULT (__attribute__((__stdcall__)) *createComment)( + IXMLDOMDocument *This, + BSTR data, + IXMLDOMComment **comment); + HRESULT (__attribute__((__stdcall__)) *createCDATASection)( + IXMLDOMDocument *This, + BSTR data, + IXMLDOMCDATASection **cdata); + HRESULT (__attribute__((__stdcall__)) *createProcessingInstruction)( + IXMLDOMDocument *This, + BSTR target, + BSTR data, + IXMLDOMProcessingInstruction **pi); + HRESULT (__attribute__((__stdcall__)) *createAttribute)( + IXMLDOMDocument *This, + BSTR name, + IXMLDOMAttribute **attribute); + HRESULT (__attribute__((__stdcall__)) *createEntityReference)( + IXMLDOMDocument *This, + BSTR name, + IXMLDOMEntityReference **entityRef); + HRESULT (__attribute__((__stdcall__)) *getElementsByTagName)( + IXMLDOMDocument *This, + BSTR tagName, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *createNode)( + IXMLDOMDocument *This, + VARIANT Type, + BSTR name, + BSTR namespaceURI, + IXMLDOMNode **node); + HRESULT (__attribute__((__stdcall__)) *nodeFromID)( + IXMLDOMDocument *This, + BSTR idString, + IXMLDOMNode **node); + HRESULT (__attribute__((__stdcall__)) *load)( + IXMLDOMDocument *This, + VARIANT xmlSource, + VARIANT_BOOL *isSuccessful); + HRESULT (__attribute__((__stdcall__)) *get_readyState)( + IXMLDOMDocument *This, + LONG *value); + HRESULT (__attribute__((__stdcall__)) *get_parseError)( + IXMLDOMDocument *This, + IXMLDOMParseError **errorObj); + HRESULT (__attribute__((__stdcall__)) *get_url)( + IXMLDOMDocument *This, + BSTR *urlString); + HRESULT (__attribute__((__stdcall__)) *get_async)( + IXMLDOMDocument *This, + VARIANT_BOOL *isAsync); + HRESULT (__attribute__((__stdcall__)) *put_async)( + IXMLDOMDocument *This, + VARIANT_BOOL isAsync); + HRESULT (__attribute__((__stdcall__)) *abort)( + IXMLDOMDocument *This); + HRESULT (__attribute__((__stdcall__)) *loadXML)( + IXMLDOMDocument *This, + BSTR bstrXML, + VARIANT_BOOL *isSuccessful); + HRESULT (__attribute__((__stdcall__)) *save)( + IXMLDOMDocument *This, + VARIANT destination); + HRESULT (__attribute__((__stdcall__)) *get_validateOnParse)( + IXMLDOMDocument *This, + VARIANT_BOOL *isValidating); + HRESULT (__attribute__((__stdcall__)) *put_validateOnParse)( + IXMLDOMDocument *This, + VARIANT_BOOL isValidating); + HRESULT (__attribute__((__stdcall__)) *get_resolveExternals)( + IXMLDOMDocument *This, + VARIANT_BOOL *isResolving); + HRESULT (__attribute__((__stdcall__)) *put_resolveExternals)( + IXMLDOMDocument *This, + VARIANT_BOOL isValidating); + HRESULT (__attribute__((__stdcall__)) *get_preserveWhiteSpace)( + IXMLDOMDocument *This, + VARIANT_BOOL *isPreserving); + HRESULT (__attribute__((__stdcall__)) *put_preserveWhiteSpace)( + IXMLDOMDocument *This, + VARIANT_BOOL isPreserving); + HRESULT (__attribute__((__stdcall__)) *put_onreadystatechange)( + IXMLDOMDocument *This, + VARIANT readystatechangeSink); + HRESULT (__attribute__((__stdcall__)) *put_ondataavailable)( + IXMLDOMDocument *This, + VARIANT ondataavailableSink); + HRESULT (__attribute__((__stdcall__)) *put_ontransformnode)( + IXMLDOMDocument *This, + VARIANT ontransformnodeSink); +} IXMLDOMDocumentVtbl; +struct IXMLDOMDocument { + IXMLDOMDocumentVtbl* lpVtbl; +}; +#define __IXMLDOMNodeList_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMNodeList; +typedef struct IXMLDOMNodeListVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMNodeList *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMNodeList *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMNodeList *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMNodeList *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMNodeList *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMNodeList *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMNodeList *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_item)( + IXMLDOMNodeList *This, + LONG index, + IXMLDOMNode **listItem); + HRESULT (__attribute__((__stdcall__)) *get_length)( + IXMLDOMNodeList *This, + LONG *listLength); + HRESULT (__attribute__((__stdcall__)) *nextNode)( + IXMLDOMNodeList *This, + IXMLDOMNode **nextItem); + HRESULT (__attribute__((__stdcall__)) *reset)( + IXMLDOMNodeList *This); + HRESULT (__attribute__((__stdcall__)) *_newEnum)( + IXMLDOMNodeList *This, + IUnknown **ppUnk); +} IXMLDOMNodeListVtbl; +struct IXMLDOMNodeList { + IXMLDOMNodeListVtbl* lpVtbl; +}; +#define __IXMLDOMNamedNodeMap_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMNamedNodeMap; +typedef struct IXMLDOMNamedNodeMapVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMNamedNodeMap *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMNamedNodeMap *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMNamedNodeMap *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMNamedNodeMap *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMNamedNodeMap *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMNamedNodeMap *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMNamedNodeMap *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *getNamedItem)( + IXMLDOMNamedNodeMap *This, + BSTR name, + IXMLDOMNode **namedItem); + HRESULT (__attribute__((__stdcall__)) *setNamedItem)( + IXMLDOMNamedNodeMap *This, + IXMLDOMNode *newItem, + IXMLDOMNode **namedItem); + HRESULT (__attribute__((__stdcall__)) *removeNamedItem)( + IXMLDOMNamedNodeMap *This, + BSTR name, + IXMLDOMNode **namedItem); + HRESULT (__attribute__((__stdcall__)) *get_item)( + IXMLDOMNamedNodeMap *This, + LONG index, + IXMLDOMNode **listItem); + HRESULT (__attribute__((__stdcall__)) *get_length)( + IXMLDOMNamedNodeMap *This, + LONG *listLength); + HRESULT (__attribute__((__stdcall__)) *getQualifiedItem)( + IXMLDOMNamedNodeMap *This, + BSTR baseName, + BSTR namespaceURI, + IXMLDOMNode **qualifiedItem); + HRESULT (__attribute__((__stdcall__)) *removeQualifiedItem)( + IXMLDOMNamedNodeMap *This, + BSTR baseName, + BSTR namespaceURI, + IXMLDOMNode **qualifiedItem); + HRESULT (__attribute__((__stdcall__)) *nextNode)( + IXMLDOMNamedNodeMap *This, + IXMLDOMNode **nextItem); + HRESULT (__attribute__((__stdcall__)) *reset)( + IXMLDOMNamedNodeMap *This); + HRESULT (__attribute__((__stdcall__)) *_newEnum)( + IXMLDOMNamedNodeMap *This, + IUnknown **ppUnk); +} IXMLDOMNamedNodeMapVtbl; +struct IXMLDOMNamedNodeMap { + IXMLDOMNamedNodeMapVtbl* lpVtbl; +}; +#define __IXMLDOMDocumentFragment_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMDocumentFragment; +typedef struct IXMLDOMDocumentFragmentVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMDocumentFragment *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMDocumentFragment *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMDocumentFragment *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMDocumentFragment *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMDocumentFragment *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMDocumentFragment *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMDocumentFragment *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMDocumentFragment *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMDocumentFragment *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMDocumentFragment *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMDocumentFragment *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMDocumentFragment *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMDocumentFragment *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMDocumentFragment *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMDocumentFragment *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMDocumentFragment *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMDocumentFragment *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMDocumentFragment *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMDocumentFragment *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMDocumentFragment *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMDocumentFragment *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMDocumentFragment *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMDocumentFragment *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMDocumentFragment *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMDocumentFragment *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMDocumentFragment *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMDocumentFragment *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMDocumentFragment *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMDocumentFragment *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMDocumentFragment *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMDocumentFragment *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMDocumentFragment *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); +} IXMLDOMDocumentFragmentVtbl; +struct IXMLDOMDocumentFragment { + IXMLDOMDocumentFragmentVtbl* lpVtbl; +}; +#define __IXMLDOMCharacterData_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMCharacterData; +typedef struct IXMLDOMCharacterDataVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMCharacterData *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMCharacterData *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMCharacterData *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMCharacterData *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMCharacterData *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMCharacterData *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMCharacterData *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMCharacterData *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMCharacterData *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMCharacterData *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMCharacterData *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMCharacterData *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMCharacterData *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMCharacterData *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMCharacterData *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMCharacterData *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMCharacterData *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMCharacterData *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMCharacterData *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMCharacterData *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMCharacterData *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMCharacterData *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMCharacterData *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMCharacterData *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMCharacterData *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMCharacterData *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMCharacterData *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMCharacterData *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMCharacterData *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMCharacterData *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMCharacterData *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMCharacterData *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMCharacterData *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMCharacterData *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMCharacterData *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMCharacterData *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMCharacterData *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMCharacterData *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMCharacterData *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMCharacterData *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMCharacterData *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMCharacterData *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMCharacterData *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_data)( + IXMLDOMCharacterData *This, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *put_data)( + IXMLDOMCharacterData *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *get_length)( + IXMLDOMCharacterData *This, + LONG *dataLength); + HRESULT (__attribute__((__stdcall__)) *substringData)( + IXMLDOMCharacterData *This, + LONG offset, + LONG count, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *appendData)( + IXMLDOMCharacterData *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *insertData)( + IXMLDOMCharacterData *This, + LONG offset, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *deleteData)( + IXMLDOMCharacterData *This, + LONG offset, + LONG count); + HRESULT (__attribute__((__stdcall__)) *replaceData)( + IXMLDOMCharacterData *This, + LONG offset, + LONG count, + BSTR data); +} IXMLDOMCharacterDataVtbl; +struct IXMLDOMCharacterData { + IXMLDOMCharacterDataVtbl* lpVtbl; +}; +#define __IXMLDOMAttribute_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMAttribute; +typedef struct IXMLDOMAttributeVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMAttribute *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMAttribute *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMAttribute *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMAttribute *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMAttribute *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMAttribute *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMAttribute *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMAttribute *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMAttribute *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMAttribute *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMAttribute *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMAttribute *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMAttribute *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMAttribute *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMAttribute *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMAttribute *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMAttribute *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMAttribute *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMAttribute *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMAttribute *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMAttribute *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMAttribute *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMAttribute *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMAttribute *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMAttribute *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMAttribute *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMAttribute *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMAttribute *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMAttribute *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMAttribute *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMAttribute *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMAttribute *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMAttribute *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMAttribute *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMAttribute *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMAttribute *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMAttribute *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMAttribute *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMAttribute *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMAttribute *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMAttribute *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMAttribute *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMAttribute *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_name)( + IXMLDOMAttribute *This, + BSTR *attributeName); + HRESULT (__attribute__((__stdcall__)) *get_value)( + IXMLDOMAttribute *This, + VARIANT *attributeValue); + HRESULT (__attribute__((__stdcall__)) *put_value)( + IXMLDOMAttribute *This, + VARIANT attributeValue); +} IXMLDOMAttributeVtbl; +struct IXMLDOMAttribute { + IXMLDOMAttributeVtbl* lpVtbl; +}; +#define __IXMLDOMElement_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMElement; +typedef struct IXMLDOMElementVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMElement *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMElement *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMElement *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMElement *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMElement *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMElement *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMElement *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMElement *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMElement *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMElement *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMElement *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMElement *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMElement *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMElement *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMElement *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMElement *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMElement *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMElement *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMElement *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMElement *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMElement *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMElement *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMElement *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMElement *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMElement *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMElement *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMElement *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMElement *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMElement *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMElement *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMElement *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMElement *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMElement *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMElement *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMElement *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMElement *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMElement *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMElement *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMElement *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMElement *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMElement *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMElement *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMElement *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_tagName)( + IXMLDOMElement *This, + BSTR *tagName); + HRESULT (__attribute__((__stdcall__)) *getAttribute)( + IXMLDOMElement *This, + BSTR name, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *setAttribute)( + IXMLDOMElement *This, + BSTR name, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *removeAttribute)( + IXMLDOMElement *This, + BSTR name); + HRESULT (__attribute__((__stdcall__)) *getAttributeNode)( + IXMLDOMElement *This, + BSTR name, + IXMLDOMAttribute **attributeNode); + HRESULT (__attribute__((__stdcall__)) *setAttributeNode)( + IXMLDOMElement *This, + IXMLDOMAttribute *DOMAttribute, + IXMLDOMAttribute **attributeNode); + HRESULT (__attribute__((__stdcall__)) *removeAttributeNode)( + IXMLDOMElement *This, + IXMLDOMAttribute *DOMAttribute, + IXMLDOMAttribute **attributeNode); + HRESULT (__attribute__((__stdcall__)) *getElementsByTagName)( + IXMLDOMElement *This, + BSTR tagName, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *normalize)( + IXMLDOMElement *This); +} IXMLDOMElementVtbl; +struct IXMLDOMElement { + IXMLDOMElementVtbl* lpVtbl; +}; +#define __IXMLDOMText_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMText; +typedef struct IXMLDOMTextVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMText *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMText *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMText *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMText *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMText *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMText *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMText *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMText *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMText *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMText *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMText *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMText *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMText *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMText *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMText *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMText *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMText *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMText *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMText *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMText *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMText *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMText *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMText *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMText *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMText *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMText *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMText *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMText *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMText *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMText *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMText *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMText *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMText *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMText *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMText *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMText *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMText *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMText *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMText *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMText *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMText *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMText *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMText *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_data)( + IXMLDOMText *This, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *put_data)( + IXMLDOMText *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *get_length)( + IXMLDOMText *This, + LONG *dataLength); + HRESULT (__attribute__((__stdcall__)) *substringData)( + IXMLDOMText *This, + LONG offset, + LONG count, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *appendData)( + IXMLDOMText *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *insertData)( + IXMLDOMText *This, + LONG offset, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *deleteData)( + IXMLDOMText *This, + LONG offset, + LONG count); + HRESULT (__attribute__((__stdcall__)) *replaceData)( + IXMLDOMText *This, + LONG offset, + LONG count, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *splitText)( + IXMLDOMText *This, + LONG offset, + IXMLDOMText **rightHandTextNode); +} IXMLDOMTextVtbl; +struct IXMLDOMText { + IXMLDOMTextVtbl* lpVtbl; +}; +#define __IXMLDOMComment_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMComment; +typedef struct IXMLDOMCommentVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMComment *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMComment *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMComment *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMComment *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMComment *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMComment *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMComment *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMComment *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMComment *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMComment *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMComment *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMComment *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMComment *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMComment *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMComment *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMComment *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMComment *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMComment *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMComment *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMComment *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMComment *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMComment *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMComment *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMComment *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMComment *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMComment *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMComment *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMComment *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMComment *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMComment *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMComment *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMComment *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMComment *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMComment *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMComment *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMComment *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMComment *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMComment *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMComment *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMComment *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMComment *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMComment *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMComment *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_data)( + IXMLDOMComment *This, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *put_data)( + IXMLDOMComment *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *get_length)( + IXMLDOMComment *This, + LONG *dataLength); + HRESULT (__attribute__((__stdcall__)) *substringData)( + IXMLDOMComment *This, + LONG offset, + LONG count, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *appendData)( + IXMLDOMComment *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *insertData)( + IXMLDOMComment *This, + LONG offset, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *deleteData)( + IXMLDOMComment *This, + LONG offset, + LONG count); + HRESULT (__attribute__((__stdcall__)) *replaceData)( + IXMLDOMComment *This, + LONG offset, + LONG count, + BSTR data); +} IXMLDOMCommentVtbl; +struct IXMLDOMComment { + IXMLDOMCommentVtbl* lpVtbl; +}; +#define __IXMLDOMProcessingInstruction_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMProcessingInstruction; +typedef struct IXMLDOMProcessingInstructionVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMProcessingInstruction *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMProcessingInstruction *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMProcessingInstruction *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMProcessingInstruction *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMProcessingInstruction *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMProcessingInstruction *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMProcessingInstruction *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMProcessingInstruction *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMProcessingInstruction *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMProcessingInstruction *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMProcessingInstruction *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMProcessingInstruction *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMProcessingInstruction *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMProcessingInstruction *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMProcessingInstruction *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMProcessingInstruction *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMProcessingInstruction *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMProcessingInstruction *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMProcessingInstruction *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMProcessingInstruction *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMProcessingInstruction *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMProcessingInstruction *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMProcessingInstruction *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMProcessingInstruction *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMProcessingInstruction *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMProcessingInstruction *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMProcessingInstruction *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMProcessingInstruction *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMProcessingInstruction *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMProcessingInstruction *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_target)( + IXMLDOMProcessingInstruction *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_data)( + IXMLDOMProcessingInstruction *This, + BSTR *value); + HRESULT (__attribute__((__stdcall__)) *put_data)( + IXMLDOMProcessingInstruction *This, + BSTR value); +} IXMLDOMProcessingInstructionVtbl; +struct IXMLDOMProcessingInstruction { + IXMLDOMProcessingInstructionVtbl* lpVtbl; +}; +#define __IXMLDOMCDATASection_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMCDATASection; +typedef struct IXMLDOMCDATASectionVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMCDATASection *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMCDATASection *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMCDATASection *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMCDATASection *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMCDATASection *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMCDATASection *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMCDATASection *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMCDATASection *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMCDATASection *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMCDATASection *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMCDATASection *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMCDATASection *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMCDATASection *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMCDATASection *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMCDATASection *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMCDATASection *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMCDATASection *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMCDATASection *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMCDATASection *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMCDATASection *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMCDATASection *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMCDATASection *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMCDATASection *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMCDATASection *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMCDATASection *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMCDATASection *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMCDATASection *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMCDATASection *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMCDATASection *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMCDATASection *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMCDATASection *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMCDATASection *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMCDATASection *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMCDATASection *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMCDATASection *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMCDATASection *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMCDATASection *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMCDATASection *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMCDATASection *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMCDATASection *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMCDATASection *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMCDATASection *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMCDATASection *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_data)( + IXMLDOMCDATASection *This, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *put_data)( + IXMLDOMCDATASection *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *get_length)( + IXMLDOMCDATASection *This, + LONG *dataLength); + HRESULT (__attribute__((__stdcall__)) *substringData)( + IXMLDOMCDATASection *This, + LONG offset, + LONG count, + BSTR *data); + HRESULT (__attribute__((__stdcall__)) *appendData)( + IXMLDOMCDATASection *This, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *insertData)( + IXMLDOMCDATASection *This, + LONG offset, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *deleteData)( + IXMLDOMCDATASection *This, + LONG offset, + LONG count); + HRESULT (__attribute__((__stdcall__)) *replaceData)( + IXMLDOMCDATASection *This, + LONG offset, + LONG count, + BSTR data); + HRESULT (__attribute__((__stdcall__)) *splitText)( + IXMLDOMCDATASection *This, + LONG offset, + IXMLDOMText **rightHandTextNode); +} IXMLDOMCDATASectionVtbl; +struct IXMLDOMCDATASection { + IXMLDOMCDATASectionVtbl* lpVtbl; +}; +#define __IXMLDOMDocumentType_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMDocumentType; +typedef struct IXMLDOMDocumentTypeVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMDocumentType *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMDocumentType *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMDocumentType *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMDocumentType *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMDocumentType *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMDocumentType *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMDocumentType *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMDocumentType *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMDocumentType *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMDocumentType *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMDocumentType *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMDocumentType *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMDocumentType *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMDocumentType *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMDocumentType *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMDocumentType *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMDocumentType *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMDocumentType *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMDocumentType *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMDocumentType *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMDocumentType *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMDocumentType *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMDocumentType *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMDocumentType *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMDocumentType *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMDocumentType *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMDocumentType *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMDocumentType *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMDocumentType *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMDocumentType *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMDocumentType *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMDocumentType *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMDocumentType *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMDocumentType *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMDocumentType *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMDocumentType *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMDocumentType *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMDocumentType *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMDocumentType *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMDocumentType *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMDocumentType *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMDocumentType *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMDocumentType *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_name)( + IXMLDOMDocumentType *This, + BSTR *rootName); + HRESULT (__attribute__((__stdcall__)) *get_entities)( + IXMLDOMDocumentType *This, + IXMLDOMNamedNodeMap **entityMap); + HRESULT (__attribute__((__stdcall__)) *get_notations)( + IXMLDOMDocumentType *This, + IXMLDOMNamedNodeMap **notationMap); +} IXMLDOMDocumentTypeVtbl; +struct IXMLDOMDocumentType { + IXMLDOMDocumentTypeVtbl* lpVtbl; +}; +#define __IXMLDOMNotation_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMNotation; +typedef struct IXMLDOMNotationVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMNotation *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMNotation *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMNotation *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMNotation *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMNotation *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMNotation *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMNotation *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMNotation *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMNotation *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMNotation *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMNotation *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMNotation *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMNotation *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMNotation *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMNotation *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMNotation *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMNotation *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMNotation *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMNotation *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMNotation *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMNotation *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMNotation *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMNotation *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMNotation *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMNotation *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMNotation *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMNotation *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMNotation *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMNotation *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMNotation *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMNotation *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMNotation *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMNotation *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMNotation *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMNotation *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMNotation *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMNotation *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMNotation *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMNotation *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMNotation *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMNotation *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMNotation *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMNotation *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_publicId)( + IXMLDOMNotation *This, + VARIANT *publicId); + HRESULT (__attribute__((__stdcall__)) *get_systemId)( + IXMLDOMNotation *This, + VARIANT *systemId); +} IXMLDOMNotationVtbl; +struct IXMLDOMNotation { + IXMLDOMNotationVtbl* lpVtbl; +}; +#define __IXMLDOMEntity_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMEntity; +typedef struct IXMLDOMEntityVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMEntity *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMEntity *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMEntity *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMEntity *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMEntity *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMEntity *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMEntity *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMEntity *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMEntity *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMEntity *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMEntity *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMEntity *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMEntity *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMEntity *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMEntity *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMEntity *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMEntity *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMEntity *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMEntity *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMEntity *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMEntity *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMEntity *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMEntity *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMEntity *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMEntity *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMEntity *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMEntity *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMEntity *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMEntity *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMEntity *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMEntity *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMEntity *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMEntity *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMEntity *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMEntity *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMEntity *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMEntity *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMEntity *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMEntity *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMEntity *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMEntity *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMEntity *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMEntity *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); + HRESULT (__attribute__((__stdcall__)) *get_publicId)( + IXMLDOMEntity *This, + VARIANT *publicId); + HRESULT (__attribute__((__stdcall__)) *get_systemId)( + IXMLDOMEntity *This, + VARIANT *systemId); + HRESULT (__attribute__((__stdcall__)) *get_notationName)( + IXMLDOMEntity *This, + BSTR *name); +} IXMLDOMEntityVtbl; +struct IXMLDOMEntity { + IXMLDOMEntityVtbl* lpVtbl; +}; +#define __IXMLDOMEntityReference_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMEntityReference; +typedef struct IXMLDOMEntityReferenceVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMEntityReference *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMEntityReference *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMEntityReference *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMEntityReference *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMEntityReference *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMEntityReference *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMEntityReference *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_nodeName)( + IXMLDOMEntityReference *This, + BSTR *name); + HRESULT (__attribute__((__stdcall__)) *get_nodeValue)( + IXMLDOMEntityReference *This, + VARIANT *value); + HRESULT (__attribute__((__stdcall__)) *put_nodeValue)( + IXMLDOMEntityReference *This, + VARIANT value); + HRESULT (__attribute__((__stdcall__)) *get_nodeType)( + IXMLDOMEntityReference *This, + DOMNodeType *type); + HRESULT (__attribute__((__stdcall__)) *get_parentNode)( + IXMLDOMEntityReference *This, + IXMLDOMNode **parent); + HRESULT (__attribute__((__stdcall__)) *get_childNodes)( + IXMLDOMEntityReference *This, + IXMLDOMNodeList **childList); + HRESULT (__attribute__((__stdcall__)) *get_firstChild)( + IXMLDOMEntityReference *This, + IXMLDOMNode **firstChild); + HRESULT (__attribute__((__stdcall__)) *get_lastChild)( + IXMLDOMEntityReference *This, + IXMLDOMNode **lastChild); + HRESULT (__attribute__((__stdcall__)) *get_previousSibling)( + IXMLDOMEntityReference *This, + IXMLDOMNode **previousSibling); + HRESULT (__attribute__((__stdcall__)) *get_nextSibling)( + IXMLDOMEntityReference *This, + IXMLDOMNode **nextSibling); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLDOMEntityReference *This, + IXMLDOMNamedNodeMap **attributeMap); + HRESULT (__attribute__((__stdcall__)) *insertBefore)( + IXMLDOMEntityReference *This, + IXMLDOMNode *newChild, + VARIANT refChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *replaceChild)( + IXMLDOMEntityReference *This, + IXMLDOMNode *newChild, + IXMLDOMNode *oldChild, + IXMLDOMNode **outOldChild); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLDOMEntityReference *This, + IXMLDOMNode *childNode, + IXMLDOMNode **oldChild); + HRESULT (__attribute__((__stdcall__)) *appendChild)( + IXMLDOMEntityReference *This, + IXMLDOMNode *newChild, + IXMLDOMNode **outNewChild); + HRESULT (__attribute__((__stdcall__)) *hasChildNodes)( + IXMLDOMEntityReference *This, + VARIANT_BOOL *hasChild); + HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)( + IXMLDOMEntityReference *This, + IXMLDOMDocument **DOMDocument); + HRESULT (__attribute__((__stdcall__)) *cloneNode)( + IXMLDOMEntityReference *This, + VARIANT_BOOL deep, + IXMLDOMNode **cloneRoot); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)( + IXMLDOMEntityReference *This, + BSTR *nodeType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLDOMEntityReference *This, + BSTR *text); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLDOMEntityReference *This, + BSTR text); + HRESULT (__attribute__((__stdcall__)) *get_specified)( + IXMLDOMEntityReference *This, + VARIANT_BOOL *isSpecified); + HRESULT (__attribute__((__stdcall__)) *get_definition)( + IXMLDOMEntityReference *This, + IXMLDOMNode **definitionNode); + HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)( + IXMLDOMEntityReference *This, + VARIANT *typedValue); + HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)( + IXMLDOMEntityReference *This, + VARIANT typedValue); + HRESULT (__attribute__((__stdcall__)) *get_dataType)( + IXMLDOMEntityReference *This, + VARIANT *dataTypeName); + HRESULT (__attribute__((__stdcall__)) *put_dataType)( + IXMLDOMEntityReference *This, + BSTR dataTypeName); + HRESULT (__attribute__((__stdcall__)) *get_xml)( + IXMLDOMEntityReference *This, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *transformNode)( + IXMLDOMEntityReference *This, + IXMLDOMNode *styleSheet, + BSTR *xmlString); + HRESULT (__attribute__((__stdcall__)) *selectNodes)( + IXMLDOMEntityReference *This, + BSTR queryString, + IXMLDOMNodeList **resultList); + HRESULT (__attribute__((__stdcall__)) *selectSingleNode)( + IXMLDOMEntityReference *This, + BSTR queryString, + IXMLDOMNode **resultNode); + HRESULT (__attribute__((__stdcall__)) *get_parsed)( + IXMLDOMEntityReference *This, + VARIANT_BOOL *isParsed); + HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)( + IXMLDOMEntityReference *This, + BSTR *namespaceURI); + HRESULT (__attribute__((__stdcall__)) *get_prefix)( + IXMLDOMEntityReference *This, + BSTR *prefixString); + HRESULT (__attribute__((__stdcall__)) *get_baseName)( + IXMLDOMEntityReference *This, + BSTR *nameString); + HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)( + IXMLDOMEntityReference *This, + IXMLDOMNode *stylesheet, + VARIANT outputObject); +} IXMLDOMEntityReferenceVtbl; +struct IXMLDOMEntityReference { + IXMLDOMEntityReferenceVtbl* lpVtbl; +}; +#define __IXMLDOMImplementation_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMImplementation; +typedef struct IXMLDOMImplementationVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMImplementation *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMImplementation *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMImplementation *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMImplementation *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMImplementation *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMImplementation *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMImplementation *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *hasFeature)( + IXMLDOMImplementation *This, + BSTR feature, + BSTR version, + VARIANT_BOOL *pbool); +} IXMLDOMImplementationVtbl; +struct IXMLDOMImplementation { + IXMLDOMImplementationVtbl* lpVtbl; +}; +#define __IXMLDOMParseError_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDOMParseError; +typedef struct IXMLDOMParseErrorVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDOMParseError *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDOMParseError *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDOMParseError *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDOMParseError *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDOMParseError *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDOMParseError *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDOMParseError *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_errorCode)( + IXMLDOMParseError *This, + LONG *errCode); + HRESULT (__attribute__((__stdcall__)) *get_url)( + IXMLDOMParseError *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_reason)( + IXMLDOMParseError *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_srcText)( + IXMLDOMParseError *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_line)( + IXMLDOMParseError *This, + LONG *lineNo); + HRESULT (__attribute__((__stdcall__)) *get_linepos)( + IXMLDOMParseError *This, + LONG *linePos); + HRESULT (__attribute__((__stdcall__)) *get_filepos)( + IXMLDOMParseError *This, + LONG *filePos); +} IXMLDOMParseErrorVtbl; +struct IXMLDOMParseError { + IXMLDOMParseErrorVtbl* lpVtbl; +}; +#define __XMLDOMDocumentEvents_DISPINTERFACE_DEFINED__ +extern const GUID DIID_XMLDOMDocumentEvents; +typedef struct XMLDOMDocumentEventsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + XMLDOMDocumentEvents *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + XMLDOMDocumentEvents *This); + ULONG (__attribute__((__stdcall__)) *Release)( + XMLDOMDocumentEvents *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + XMLDOMDocumentEvents *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + XMLDOMDocumentEvents *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + XMLDOMDocumentEvents *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + XMLDOMDocumentEvents *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); +} XMLDOMDocumentEventsVtbl; +struct XMLDOMDocumentEvents { + XMLDOMDocumentEventsVtbl* lpVtbl; +}; +extern const GUID CLSID_DOMDocument; +extern const GUID CLSID_DOMFreeThreadedDocument; +#define __IXMLHttpRequest_INTERFACE_DEFINED__ +extern const GUID IID_IXMLHttpRequest; +typedef struct IXMLHttpRequestVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLHttpRequest *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLHttpRequest *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLHttpRequest *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLHttpRequest *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLHttpRequest *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLHttpRequest *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLHttpRequest *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *open)( + IXMLHttpRequest *This, + BSTR bstrMethod, + BSTR bstrUrl, + VARIANT varAsync, + VARIANT varUser, + VARIANT varPassword); + HRESULT (__attribute__((__stdcall__)) *setRequestHeader)( + IXMLHttpRequest *This, + BSTR bstrHeader, + BSTR bstrValue); + HRESULT (__attribute__((__stdcall__)) *getResponseHeader)( + IXMLHttpRequest *This, + BSTR bstrHeader, + BSTR *pbstrValue); + HRESULT (__attribute__((__stdcall__)) *getAllResponseHeaders)( + IXMLHttpRequest *This, + BSTR *pbstrHeaders); + HRESULT (__attribute__((__stdcall__)) *send)( + IXMLHttpRequest *This, + VARIANT varBody); + HRESULT (__attribute__((__stdcall__)) *abort)( + IXMLHttpRequest *This); + HRESULT (__attribute__((__stdcall__)) *get_status)( + IXMLHttpRequest *This, + LONG *plStatus); + HRESULT (__attribute__((__stdcall__)) *get_statusText)( + IXMLHttpRequest *This, + BSTR *bstrStatus); + HRESULT (__attribute__((__stdcall__)) *get_responseXML)( + IXMLHttpRequest *This, + IDispatch **ppBody); + HRESULT (__attribute__((__stdcall__)) *get_responseText)( + IXMLHttpRequest *This, + BSTR *pbstrBody); + HRESULT (__attribute__((__stdcall__)) *get_responseBody)( + IXMLHttpRequest *This, + VARIANT *pvarBody); + HRESULT (__attribute__((__stdcall__)) *get_responseStream)( + IXMLHttpRequest *This, + VARIANT *pvarBody); + HRESULT (__attribute__((__stdcall__)) *get_readyState)( + IXMLHttpRequest *This, + LONG *plState); + HRESULT (__attribute__((__stdcall__)) *put_onreadystatechange)( + IXMLHttpRequest *This, + IDispatch *pReadyStateSink); +} IXMLHttpRequestVtbl; +struct IXMLHttpRequest { + IXMLHttpRequestVtbl* lpVtbl; +}; +extern const GUID CLSID_XMLHTTPRequest; +#define __IXMLDSOControl_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDSOControl; +typedef struct IXMLDSOControlVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDSOControl *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDSOControl *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDSOControl *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDSOControl *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDSOControl *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDSOControl *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDSOControl *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_XMLDocument)( + IXMLDSOControl *This, + IXMLDOMDocument **ppDoc); + HRESULT (__attribute__((__stdcall__)) *put_XMLDocument)( + IXMLDSOControl *This, + IXMLDOMDocument *ppDoc); + HRESULT (__attribute__((__stdcall__)) *get_JavaDSOCompatible)( + IXMLDSOControl *This, + WINBOOL *fJavaDSOCompatible); + HRESULT (__attribute__((__stdcall__)) *put_JavaDSOCompatible)( + IXMLDSOControl *This, + WINBOOL fJavaDSOCompatible); + HRESULT (__attribute__((__stdcall__)) *get_readyState)( + IXMLDSOControl *This, + LONG *state); +} IXMLDSOControlVtbl; +struct IXMLDSOControl { + IXMLDSOControlVtbl* lpVtbl; +}; +extern const GUID CLSID_XMLDSOControl; +#define __IXMLElementCollection_INTERFACE_DEFINED__ +extern const GUID IID_IXMLElementCollection; +typedef struct IXMLElementCollectionVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLElementCollection *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLElementCollection *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLElementCollection *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLElementCollection *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLElementCollection *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLElementCollection *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLElementCollection *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *put_length)( + IXMLElementCollection *This, + LONG v); + HRESULT (__attribute__((__stdcall__)) *get_length)( + IXMLElementCollection *This, + LONG *p); + HRESULT (__attribute__((__stdcall__)) *get__newEnum)( + IXMLElementCollection *This, + IUnknown **ppUnk); + HRESULT (__attribute__((__stdcall__)) *item)( + IXMLElementCollection *This, + VARIANT var1, + VARIANT var2, + IDispatch **ppDisp); +} IXMLElementCollectionVtbl; +struct IXMLElementCollection { + IXMLElementCollectionVtbl* lpVtbl; +}; +#define __IXMLElement_INTERFACE_DEFINED__ +extern const GUID IID_IXMLElement; +typedef struct IXMLElementVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLElement *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLElement *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLElement *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLElement *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLElement *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLElement *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLElement *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_tagName)( + IXMLElement *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_tagName)( + IXMLElement *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *get_parent)( + IXMLElement *This, + IXMLElement **parent); + HRESULT (__attribute__((__stdcall__)) *setAttribute)( + IXMLElement *This, + BSTR strPropertyName, + VARIANT PropertyValue); + HRESULT (__attribute__((__stdcall__)) *getAttribute)( + IXMLElement *This, + BSTR strPropertyName, + VARIANT *PropertyValue); + HRESULT (__attribute__((__stdcall__)) *removeAttribute)( + IXMLElement *This, + BSTR strPropertyName); + HRESULT (__attribute__((__stdcall__)) *get_children)( + IXMLElement *This, + IXMLElementCollection **p); + HRESULT (__attribute__((__stdcall__)) *get_type)( + IXMLElement *This, + LONG *p); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLElement *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLElement *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *addChild)( + IXMLElement *This, + IXMLElement *pChildElem, + LONG lIndex, + LONG lreserved); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLElement *This, + IXMLElement *pChildElem); +} IXMLElementVtbl; +struct IXMLElement { + IXMLElementVtbl* lpVtbl; +}; +#define __IXMLDocument_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDocument; +typedef struct IXMLDocumentVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDocument *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDocument *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDocument *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDocument *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDocument *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDocument *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDocument *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_root)( + IXMLDocument *This, + IXMLElement **p); + HRESULT (__attribute__((__stdcall__)) *get_fileSize)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_fileModifiedDate)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_fileUpdatedDate)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_URL)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_URL)( + IXMLDocument *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *get_mimeType)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_readyState)( + IXMLDocument *This, + LONG *p); + HRESULT (__attribute__((__stdcall__)) *get_charset)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_charset)( + IXMLDocument *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *get_version)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_doctype)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_dtdURl)( + IXMLDocument *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *createElement)( + IXMLDocument *This, + VARIANT vType, + VARIANT var1, + IXMLElement **ppElem); +} IXMLDocumentVtbl; +struct IXMLDocument { + IXMLDocumentVtbl* lpVtbl; +}; +#define __IXMLElement2_INTERFACE_DEFINED__ +extern const GUID IID_IXMLElement2; +typedef struct IXMLElement2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLElement2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLElement2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLElement2 *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLElement2 *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLElement2 *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLElement2 *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLElement2 *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_tagName)( + IXMLElement2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_tagName)( + IXMLElement2 *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *get_parent)( + IXMLElement2 *This, + IXMLElement2 **ppParent); + HRESULT (__attribute__((__stdcall__)) *setAttribute)( + IXMLElement2 *This, + BSTR strPropertyName, + VARIANT PropertyValue); + HRESULT (__attribute__((__stdcall__)) *getAttribute)( + IXMLElement2 *This, + BSTR strPropertyName, + VARIANT *PropertyValue); + HRESULT (__attribute__((__stdcall__)) *removeAttribute)( + IXMLElement2 *This, + BSTR strPropertyName); + HRESULT (__attribute__((__stdcall__)) *get_children)( + IXMLElement2 *This, + IXMLElementCollection **pp); + HRESULT (__attribute__((__stdcall__)) *get_type)( + IXMLElement2 *This, + LONG *plType); + HRESULT (__attribute__((__stdcall__)) *get_text)( + IXMLElement2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_text)( + IXMLElement2 *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *addChild)( + IXMLElement2 *This, + IXMLElement2 *pChildElem, + LONG lIndex, + LONG lReserved); + HRESULT (__attribute__((__stdcall__)) *removeChild)( + IXMLElement2 *This, + IXMLElement2 *pChildElem); + HRESULT (__attribute__((__stdcall__)) *get_attributes)( + IXMLElement2 *This, + IXMLElementCollection **pp); +} IXMLElement2Vtbl; +struct IXMLElement2 { + IXMLElement2Vtbl* lpVtbl; +}; +#define __IXMLDocument2_INTERFACE_DEFINED__ +extern const GUID IID_IXMLDocument2; +typedef struct IXMLDocument2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLDocument2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLDocument2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLDocument2 *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLDocument2 *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLDocument2 *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLDocument2 *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLDocument2 *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_root)( + IXMLDocument2 *This, + IXMLElement2 **p); + HRESULT (__attribute__((__stdcall__)) *get_fileSize)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_fileModifiedDate)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_fileUpdatedDate)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_URL)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_URL)( + IXMLDocument2 *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *get_mimeType)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_readyState)( + IXMLDocument2 *This, + LONG *pl); + HRESULT (__attribute__((__stdcall__)) *get_charset)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *put_charset)( + IXMLDocument2 *This, + BSTR p); + HRESULT (__attribute__((__stdcall__)) *get_version)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_doctype)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_dtdURL)( + IXMLDocument2 *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *createElement)( + IXMLDocument2 *This, + VARIANT vType, + VARIANT var, + IXMLElement2 **ppElem); + HRESULT (__attribute__((__stdcall__)) *get_async)( + IXMLDocument2 *This, + VARIANT_BOOL *pf); + HRESULT (__attribute__((__stdcall__)) *put_async)( + IXMLDocument2 *This, + VARIANT_BOOL f); +} IXMLDocument2Vtbl; +struct IXMLDocument2 { + IXMLDocument2Vtbl* lpVtbl; +}; +typedef enum tagXMLEMEM_TYPE { + XMLELEMTYPE_ELEMENT = 0, + XMLELEMTYPE_TEXT = 1, + XMLELEMTYPE_COMMENT = 2, + XMLELEMTYPE_DOCUMENT = 3, + XMLELEMTYPE_DTD = 4, + XMLELEMTYPE_PI = 5, + XMLELEMTYPE_OTHER = 6 +} XMLELEM_TYPE; +typedef struct _xml_error { + UINT _nLine; + BSTR _pchBuf; + BSTR _cchBuf; + UINT _ich; + BSTR _pszFound; + BSTR _pszExpected; + DWORD _reserved1; + DWORD _reserved2; +} XML_ERROR; +#define __IXMLAttribute_INTERFACE_DEFINED__ +extern const GUID IID_IXMLAttribute; +typedef struct IXMLAttributeVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLAttribute *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLAttribute *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLAttribute *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLAttribute *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLAttribute *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLAttribute *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLAttribute *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *get_name)( + IXMLAttribute *This, + BSTR *p); + HRESULT (__attribute__((__stdcall__)) *get_value)( + IXMLAttribute *This, + BSTR *p); +} IXMLAttributeVtbl; +struct IXMLAttribute { + IXMLAttributeVtbl* lpVtbl; +}; +#define __IXMLError_INTERFACE_DEFINED__ +extern const GUID IID_IXMLError; +typedef struct IXMLErrorVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLError *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLError *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLError *This); + HRESULT (__attribute__((__stdcall__)) *GetErrorInfo)( + IXMLError *This, + XML_ERROR *pErrorReturn); +} IXMLErrorVtbl; +struct IXMLError { + IXMLErrorVtbl* lpVtbl; +}; +#define __IXMLElementNotificationSink_INTERFACE_DEFINED__ +extern const GUID IID_IXMLElementNotificationSink; +typedef struct IXMLElementNotificationSinkVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IXMLElementNotificationSink *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IXMLElementNotificationSink *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IXMLElementNotificationSink *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IXMLElementNotificationSink *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IXMLElementNotificationSink *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IXMLElementNotificationSink *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IXMLElementNotificationSink *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + HRESULT (__attribute__((__stdcall__)) *ChildAdded)( + IXMLElementNotificationSink *This, + IDispatch *pChildElem); +} IXMLElementNotificationSinkVtbl; +struct IXMLElementNotificationSink { + IXMLElementNotificationSinkVtbl* lpVtbl; +}; +extern const GUID CLSID_XMLDocument; +ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); +void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *); +ULONG __attribute__((__stdcall__)) VARIANT_UserSize (ULONG *, ULONG, VARIANT *); +unsigned char * __attribute__((__stdcall__)) VARIANT_UserMarshal (ULONG *, unsigned char *, VARIANT *); +unsigned char * __attribute__((__stdcall__)) VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *); +void __attribute__((__stdcall__)) VARIANT_UserFree (ULONG *, VARIANT *); +#define __IBindStatusCallbackMsg_FWD_DEFINED__ +typedef struct IBindStatusCallbackMsg IBindStatusCallbackMsg; +extern const IID CLSID_SBS_StdURLMoniker; +extern const IID CLSID_SBS_HttpProtocol; +extern const IID CLSID_SBS_FtpProtocol; +extern const IID CLSID_SBS_GopherProtocol; +extern const IID CLSID_SBS_HttpSProtocol; +extern const IID CLSID_SBS_FileProtocol; +extern const IID CLSID_SBS_MkProtocol; +extern const IID CLSID_SBS_UrlMkBindCtx; +extern const IID CLSID_SBS_SoftDistExt; +extern const IID CLSID_SBS_CdlProtocol; +extern const IID CLSID_SBS_ClassInstallFilter; +extern const IID CLSID_SBS_InternetSecurityManager; +extern const IID CLSID_SBS_InternetZoneManager; +#define BINDF_DONTUSECACHE BINDF_GETNEWESTVERSION +#define BINDF_DONTPUTINCACHE BINDF_NOWRITECACHE +#define BINDF_NOCOPYDATA BINDF_PULLDATA +#define INVALID_P_ROOT_SECURITY_ID ((BYTE*)-1) +#define PI_DOCFILECLSIDLOOKUP PI_CLSIDLOOKUP +extern const IID IID_IAsyncMoniker; +extern const IID CLSID_StdURLMoniker; +extern const IID CLSID_HttpProtocol; +extern const IID CLSID_FtpProtocol; +extern const IID CLSID_GopherProtocol; +extern const IID CLSID_HttpSProtocol; +extern const IID CLSID_FileProtocol; +extern const IID CLSID_MkProtocol; +extern const IID CLSID_StdURLProtocol; +extern const IID CLSID_UrlMkBindCtx; +extern const IID CLSID_CdlProtocol; +extern const IID CLSID_ClassInstallFilter; +extern const IID IID_IAsyncBindCtx; +#define SZ_URLCONTEXT OLESTR("URL Context") +#define SZ_ASYNC_CALLEE OLESTR("AsyncCallee") +#define MKSYS_URLMONIKER 6 +#define URL_MK_LEGACY 0 +#define URL_MK_UNIFORM 1 +#define URL_MK_NO_CANONICALIZE 2 +extern HRESULT __attribute__((__stdcall__)) CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk); +extern HRESULT __attribute__((__stdcall__)) CreateURLMonikerEx(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk, DWORD dwFlags); +extern HRESULT __attribute__((__stdcall__)) GetClassURL(LPCWSTR szURL, CLSID *pClsID); +extern HRESULT __attribute__((__stdcall__)) CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEFetc, IBindCtx **ppBC); +extern HRESULT __attribute__((__stdcall__)) CreateURLMonikerEx2(LPMONIKER pMkCtx, IUri *pUri, LPMONIKER *ppmk, DWORD dwFlags); +extern HRESULT __attribute__((__stdcall__)) CreateAsyncBindCtxEx(IBindCtx *pbc, DWORD dwOptions, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEnum, IBindCtx **ppBC, DWORD reserved); +extern HRESULT __attribute__((__stdcall__)) MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk); +extern HRESULT __attribute__((__stdcall__)) RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb, IBindStatusCallback **ppBSCBPrev, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) RevokeBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb); +extern HRESULT __attribute__((__stdcall__)) GetClassFileOrMime(LPBC pBC, LPCWSTR szFilename, LPVOID pBuffer, DWORD cbSize, LPCWSTR szMime, DWORD dwReserved, CLSID *pclsid); +extern HRESULT __attribute__((__stdcall__)) IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoGetClassObjectFromURL(const IID *const rCLASSID, LPCWSTR szCODE, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szTYPE, LPBINDCTX pBindCtx, DWORD dwClsContext, LPVOID pvReserved, const IID *const riid, LPVOID *ppv); +extern HRESULT __attribute__((__stdcall__)) IEInstallScope(LPDWORD pdwScope); +extern HRESULT __attribute__((__stdcall__)) FaultInIEFeature(HWND hWnd, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, DWORD dwFlags); +extern HRESULT __attribute__((__stdcall__)) GetComponentIDFromCLSSPEC(uCLSSPEC *pClassspec, LPSTR *ppszComponentID); +#define FIEF_FLAG_FORCE_JITUI 0x1 +#define FIEF_FLAG_PEEK 0x2 +#define FIEF_FLAG_SKIP_INSTALLED_VERSION_CHECK 0x4 +extern HRESULT __attribute__((__stdcall__)) IsAsyncMoniker(IMoniker *pmk); +extern HRESULT __attribute__((__stdcall__)) CreateURLBinding(LPCWSTR lpszUrl, IBindCtx *pbc, IBinding **ppBdg); +extern HRESULT __attribute__((__stdcall__)) RegisterMediaTypes(UINT ctypes, const LPCSTR *rgszTypes, CLIPFORMAT *rgcfTypes); +extern HRESULT __attribute__((__stdcall__)) FindMediaType(LPCSTR rgszTypes, CLIPFORMAT *rgcfTypes); +extern HRESULT __attribute__((__stdcall__)) CreateFormatEnumerator(UINT cfmtetc, FORMATETC *rgfmtetc, IEnumFORMATETC **ppenumfmtetc); +extern HRESULT __attribute__((__stdcall__)) RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved); +extern HRESULT __attribute__((__stdcall__)) RevokeFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc); +extern HRESULT __attribute__((__stdcall__)) RegisterMediaTypeClass(LPBC pBC,UINT ctypes, const LPCSTR *rgszTypes, CLSID *rgclsID, DWORD reserved); +extern HRESULT __attribute__((__stdcall__)) FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved); +extern HRESULT __attribute__((__stdcall__)) UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD *pdwBufferLengthOut, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer, DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags, LPWSTR *ppwzMimeOut, DWORD dwReserved); +#define FMFD_DEFAULT 0x0 +#define FMFD_URLASFILENAME 0x1 +#define FMFD_ENABLEMIMESNIFFING 0x2 +#define FMFD_IGNOREMIMETEXTPLAIN 0x4 +#define FMFD_SERVERMIME 0x8 +#define FMFD_RESPECTTEXTPLAIN 0x10 +#define FMFD_RETURNUPDATEDIMGMIMES 0x20 +#define UAS_EXACTLEGACY 0x1000 +extern HRESULT __attribute__((__stdcall__)) ObtainUserAgentString(DWORD dwOption, LPSTR pszUAOut, DWORD *cbSize); +extern HRESULT __attribute__((__stdcall__)) CompareSecurityIds(BYTE *pbSecurityId1, DWORD dwLen1, BYTE *pbSecurityId2, DWORD dwLen2, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CompatFlagsFromClsid(CLSID *pclsid, LPDWORD pdwCompatFlags, LPDWORD pdwMiscStatusFlags); +#define URLMON_OPTION_USERAGENT 0x10000001 +#define URLMON_OPTION_USERAGENT_REFRESH 0x10000002 +#define URLMON_OPTION_URL_ENCODING 0x10000004 +#define URLMON_OPTION_USE_BINDSTRINGCREDS 0x10000008 +#define URLMON_OPTION_USE_BROWSERAPPSDOCUMENTS 0x10000010 +#define CF_NULL 0 +#define CFSTR_MIME_NULL NULL +#define CFSTR_MIME_TEXT (TEXT("text/plain")) +#define CFSTR_MIME_RICHTEXT (TEXT("text/richtext")) +#define CFSTR_MIME_MANIFEST (TEXT("text/cache-manifest")) +#define CFSTR_MIME_WEBVTT (TEXT("text/vtt")) +#define CFSTR_MIME_X_BITMAP (TEXT("image/x-xbitmap")) +#define CFSTR_MIME_POSTSCRIPT (TEXT("application/postscript")) +#define CFSTR_MIME_AIFF (TEXT("audio/aiff")) +#define CFSTR_MIME_BASICAUDIO (TEXT("audio/basic")) +#define CFSTR_MIME_WAV (TEXT("audio/wav")) +#define CFSTR_MIME_X_WAV (TEXT("audio/x-wav")) +#define CFSTR_MIME_GIF (TEXT("image/gif")) +#define CFSTR_MIME_PJPEG (TEXT("image/pjpeg")) +#define CFSTR_MIME_JPEG (TEXT("image/jpeg")) +#define CFSTR_MIME_TIFF (TEXT("image/tiff")) +#define CFSTR_MIME_JPEG_XR (TEXT("image/vnd.ms-photo")) +#define CFSTR_MIME_PNG (TEXT("image/png")) +#define CFSTR_MIME_X_PNG (TEXT("image/x-png")) +#define CFSTR_MIME_X_ICON (TEXT("image/x-icon")) +#define CFSTR_MIME_SVG_XML (TEXT("image/svg+xml")) +#define CFSTR_MIME_BMP (TEXT("image/bmp")) +#define CFSTR_MIME_X_EMF (TEXT("image/x-emf")) +#define CFSTR_MIME_X_WMF (TEXT("image/x-wmf")) +#define CFSTR_MIME_AVI (TEXT("video/avi")) +#define CFSTR_MIME_MPEG (TEXT("video/mpeg")) +#define CFSTR_MIME_FRACTALS (TEXT("application/fractals")) +#define CFSTR_MIME_RAWDATA (TEXT("application/octet-stream")) +#define CFSTR_MIME_RAWDATASTRM (TEXT("application/octet-stream")) +#define CFSTR_MIME_PDF (TEXT("application/pdf")) +#define CFSTR_MIME_HTA (TEXT("application/hta")) +#define CFSTR_MIME_APP_XML (TEXT("application/xml")) +#define CFSTR_MIME_XHTML (TEXT("application/xhtml+xml")) +#define CFSTR_MIME_X_AIFF (TEXT("audio/x-aiff")) +#define CFSTR_MIME_X_REALAUDIO (TEXT("audio/x-pn-realaudio")) +#define CFSTR_MIME_XBM (TEXT("image/xbm")) +#define CFSTR_MIME_QUICKTIME (TEXT("video/quicktime")) +#define CFSTR_MIME_X_MSVIDEO (TEXT("video/x-msvideo")) +#define CFSTR_MIME_X_SGI_MOVIE (TEXT("video/x-sgi-movie")) +#define CFSTR_MIME_HTML (TEXT("text/html")) +#define CFSTR_MIME_XML (TEXT("text/xml")) +#define CFSTR_MIME_TTML (TEXT("application/ttml+xml")) +#define CFSTR_MIME_TTAF (TEXT("application/ttaf+xml")) +#define MK_S_ASYNCHRONOUS _HRESULT_TYPEDEF_(0x401E8L) +#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS +#define INET_E_INVALID_URL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002)) +#define INET_E_NO_SESSION _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0003)) +#define INET_E_CANNOT_CONNECT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0004)) +#define INET_E_RESOURCE_NOT_FOUND _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0005)) +#define INET_E_OBJECT_NOT_FOUND _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0006)) +#define INET_E_DATA_NOT_AVAILABLE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0007)) +#define INET_E_DOWNLOAD_FAILURE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0008)) +#define INET_E_AUTHENTICATION_REQUIRED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0009)) +#define INET_E_NO_VALID_MEDIA _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000A)) +#define INET_E_CONNECTION_TIMEOUT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000B)) +#define INET_E_INVALID_REQUEST _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000C)) +#define INET_E_UNKNOWN_PROTOCOL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000D)) +#define INET_E_SECURITY_PROBLEM _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000E)) +#define INET_E_CANNOT_LOAD_DATA _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000F)) +#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0010)) +#define INET_E_INVALID_CERTIFICATE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0019)) +#define INET_E_REDIRECT_FAILED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014)) +#define INET_E_REDIRECT_TO_DIR _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0015)) +#define INET_E_CANNOT_LOCK_REQUEST _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0016)) +#define INET_E_USE_EXTEND_BINDING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0017)) +#define INET_E_TERMINATED_BIND _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0018)) +#define INET_E_RESERVED_1 _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001A)) +#define INET_E_BLOCKED_REDIRECT_XSECURITYID _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001B)) +#define INET_E_DOMINJECTIONVALIDATION _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001C)) +#define INET_E_ERROR_FIRST _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002)) +#define INET_E_CODE_DOWNLOAD_DECLINED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0100)) +#define INET_E_RESULT_DISPATCHED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0200)) +#define INET_E_CANNOT_REPLACE_SFP_FILE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0300)) +#define INET_E_CODE_INSTALL_SUPPRESSED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0400)) +#define INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0500)) +#define INET_E_DOWNLOAD_BLOCKED_BY_INPRIVATE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0501)) +#define INET_E_CODE_INSTALL_BLOCKED_IMMERSIVE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0502)) +#define INET_E_FORBIDFRAMING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0503)) +#define INET_E_CODE_INSTALL_BLOCKED_ARM _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0504)) +#define INET_E_BLOCKED_PLUGGABLE_PROTOCOL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0505)) +#define INET_E_ERROR_LAST INET_E_BLOCKED_PLUGGABLE_PROTOCOL +#define _LPPERSISTMONIKER_DEFINED +#define __IPersistMoniker_INTERFACE_DEFINED__ +typedef IPersistMoniker *LPPERSISTMONIKER; +extern const GUID IID_IPersistMoniker; +typedef struct IPersistMonikerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistMoniker *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistMoniker *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistMoniker *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistMoniker *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IPersistMoniker *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistMoniker *This, + WINBOOL fFullyAvailable, + IMoniker *pimkName, + LPBC pibc, + DWORD grfMode); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistMoniker *This, + IMoniker *pimkName, + LPBC pbc, + WINBOOL fRemember); + HRESULT (__attribute__((__stdcall__)) *SaveCompleted)( + IPersistMoniker *This, + IMoniker *pimkName, + LPBC pibc); + HRESULT (__attribute__((__stdcall__)) *GetCurMoniker)( + IPersistMoniker *This, + IMoniker **ppimkName); +} IPersistMonikerVtbl; +struct IPersistMoniker { + IPersistMonikerVtbl* lpVtbl; +}; +#define _LPMONIKERPROP_DEFINED +#define __IMonikerProp_INTERFACE_DEFINED__ +typedef IMonikerProp *LPMONIKERPROP; +typedef enum __WIDL_urlmon_generated_name_0000000F { + MIMETYPEPROP = 0x0, + USE_SRC_URL = 0x1, + CLASSIDPROP = 0x2, + TRUSTEDDOWNLOADPROP = 0x3, + POPUPLEVELPROP = 0x4 +} MONIKERPROPERTY; +extern const GUID IID_IMonikerProp; +typedef struct IMonikerPropVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IMonikerProp *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IMonikerProp *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IMonikerProp *This); + HRESULT (__attribute__((__stdcall__)) *PutProperty)( + IMonikerProp *This, + MONIKERPROPERTY mkp, + LPCWSTR val); +} IMonikerPropVtbl; +struct IMonikerProp { + IMonikerPropVtbl* lpVtbl; +}; +#define _LPBINDPROTOCOL_DEFINED +#define __IBindProtocol_INTERFACE_DEFINED__ +typedef IBindProtocol *LPBINDPROTOCOL; +extern const GUID IID_IBindProtocol; +typedef struct IBindProtocolVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBindProtocol *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBindProtocol *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBindProtocol *This); + HRESULT (__attribute__((__stdcall__)) *CreateBinding)( + IBindProtocol *This, + LPCWSTR szUrl, + IBindCtx *pbc, + IBinding **ppb); +} IBindProtocolVtbl; +struct IBindProtocol { + IBindProtocolVtbl* lpVtbl; +}; +#define _LPBINDING_DEFINED +#define __IBinding_INTERFACE_DEFINED__ +typedef IBinding *LPBINDING; +extern const GUID IID_IBinding; +typedef struct IBindingVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBinding *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBinding *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBinding *This); + HRESULT (__attribute__((__stdcall__)) *Abort)( + IBinding *This); + HRESULT (__attribute__((__stdcall__)) *Suspend)( + IBinding *This); + HRESULT (__attribute__((__stdcall__)) *Resume)( + IBinding *This); + HRESULT (__attribute__((__stdcall__)) *SetPriority)( + IBinding *This, + LONG nPriority); + HRESULT (__attribute__((__stdcall__)) *GetPriority)( + IBinding *This, + LONG *pnPriority); + HRESULT (__attribute__((__stdcall__)) *GetBindResult)( + IBinding *This, + CLSID *pclsidProtocol, + DWORD *pdwResult, + LPOLESTR *pszResult, + DWORD *pdwReserved); +} IBindingVtbl; +struct IBinding { + IBindingVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IBinding_RemoteGetBindResult_Proxy( + IBinding* This, + CLSID *pclsidProtocol, + DWORD *pdwResult, + LPOLESTR *pszResult, + DWORD dwReserved); +void __attribute__((__stdcall__)) IBinding_RemoteGetBindResult_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBinding_GetBindResult_Proxy( + IBinding* This, + CLSID *pclsidProtocol, + DWORD *pdwResult, + LPOLESTR *pszResult, + DWORD *pdwReserved); +HRESULT __attribute__((__stdcall__)) IBinding_GetBindResult_Stub( + IBinding* This, + CLSID *pclsidProtocol, + DWORD *pdwResult, + LPOLESTR *pszResult, + DWORD dwReserved); +#define _LPBINDSTATUSCALLBACK_DEFINED +#define __IBindStatusCallback_INTERFACE_DEFINED__ +typedef IBindStatusCallback *LPBINDSTATUSCALLBACK; +typedef enum __WIDL_urlmon_generated_name_00000010 { + BINDVERB_GET = 0x0, + BINDVERB_POST = 0x1, + BINDVERB_PUT = 0x2, + BINDVERB_CUSTOM = 0x3, + BINDVERB_RESERVED1 = 0x4 +} BINDVERB; +typedef enum __WIDL_urlmon_generated_name_00000011 { + BINDINFOF_URLENCODESTGMEDDATA = 0x1, + BINDINFOF_URLENCODEDEXTRAINFO = 0x2 +} BINDINFOF; +typedef enum __WIDL_urlmon_generated_name_00000012 { + BINDF_ASYNCHRONOUS = 0x1, + BINDF_ASYNCSTORAGE = 0x2, + BINDF_NOPROGRESSIVERENDERING = 0x4, + BINDF_OFFLINEOPERATION = 0x8, + BINDF_GETNEWESTVERSION = 0x10, + BINDF_NOWRITECACHE = 0x20, + BINDF_NEEDFILE = 0x40, + BINDF_PULLDATA = 0x80, + BINDF_IGNORESECURITYPROBLEM = 0x100, + BINDF_RESYNCHRONIZE = 0x200, + BINDF_HYPERLINK = 0x400, + BINDF_NO_UI = 0x800, + BINDF_SILENTOPERATION = 0x1000, + BINDF_PRAGMA_NO_CACHE = 0x2000, + BINDF_GETCLASSOBJECT = 0x4000, + BINDF_RESERVED_1 = 0x8000, + BINDF_FREE_THREADED = 0x10000, + BINDF_DIRECT_READ = 0x20000, + BINDF_FORMS_SUBMIT = 0x40000, + BINDF_GETFROMCACHE_IF_NET_FAIL = 0x80000, + BINDF_FROMURLMON = 0x100000, + BINDF_FWD_BACK = 0x200000, + BINDF_PREFERDEFAULTHANDLER = 0x400000, + BINDF_ENFORCERESTRICTED = 0x800000, + BINDF_RESERVED_2 = 0x80000000, + BINDF_RESERVED_3 = 0x1000000, + BINDF_RESERVED_4 = 0x2000000, + BINDF_RESERVED_5 = 0x4000000, + BINDF_RESERVED_6 = 0x8000000, + BINDF_RESERVED_7 = 0x40000000, + BINDF_RESERVED_8 = 0x20000000 +} BINDF; +typedef enum __WIDL_urlmon_generated_name_00000013 { + URL_ENCODING_NONE = 0x0, + URL_ENCODING_ENABLE_UTF8 = 0x10000000, + URL_ENCODING_DISABLE_UTF8 = 0x20000000 +} URL_ENCODING; +typedef struct _tagBINDINFO { + ULONG cbSize; + LPWSTR szExtraInfo; + STGMEDIUM stgmedData; + DWORD grfBindInfoF; + DWORD dwBindVerb; + LPWSTR szCustomVerb; + DWORD cbstgmedData; + DWORD dwOptions; + DWORD dwOptionsFlags; + DWORD dwCodePage; + SECURITY_ATTRIBUTES securityAttributes; + IID iid; + IUnknown *pUnk; + DWORD dwReserved; +} BINDINFO; +typedef struct _REMSECURITY_ATTRIBUTES { + DWORD nLength; + DWORD lpSecurityDescriptor; + WINBOOL bInheritHandle; +} REMSECURITY_ATTRIBUTES; +typedef struct _REMSECURITY_ATTRIBUTES *PREMSECURITY_ATTRIBUTES; +typedef struct _REMSECURITY_ATTRIBUTES *LPREMSECURITY_ATTRIBUTES; +typedef struct _tagRemBINDINFO { + ULONG cbSize; + LPWSTR szExtraInfo; + DWORD grfBindInfoF; + DWORD dwBindVerb; + LPWSTR szCustomVerb; + DWORD cbstgmedData; + DWORD dwOptions; + DWORD dwOptionsFlags; + DWORD dwCodePage; + REMSECURITY_ATTRIBUTES securityAttributes; + IID iid; + IUnknown *pUnk; + DWORD dwReserved; +} RemBINDINFO; +typedef struct tagRemFORMATETC { + DWORD cfFormat; + DWORD ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; +} RemFORMATETC; +typedef struct tagRemFORMATETC *LPREMFORMATETC; +typedef enum __WIDL_urlmon_generated_name_00000014 { + BINDINFO_OPTIONS_WININETFLAG = 0x10000, + BINDINFO_OPTIONS_ENABLE_UTF8 = 0x20000, + BINDINFO_OPTIONS_DISABLE_UTF8 = 0x40000, + BINDINFO_OPTIONS_USE_IE_ENCODING = 0x80000, + BINDINFO_OPTIONS_BINDTOOBJECT = 0x100000, + BINDINFO_OPTIONS_SECURITYOPTOUT = 0x200000, + BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN = 0x400000, + BINDINFO_OPTIONS_USEBINDSTRINGCREDS = 0x800000, + BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS = 0x1000000, + BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE = 0x2000000, + BINDINFO_WPC_DOWNLOADBLOCKED = 0x8000000, + BINDINFO_WPC_LOGGING_ENABLED = 0x10000000, + BINDINFO_OPTIONS_ALLOWCONNECTDATA = 0x20000000, + BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS = 0x40000000, + BINDINFO_OPTIONS_SHDOCVW_NAVIGATE = (int)0x80000000 +} BINDINFO_OPTIONS; +typedef enum __WIDL_urlmon_generated_name_00000015 { + BSCF_FIRSTDATANOTIFICATION = 0x1, + BSCF_INTERMEDIATEDATANOTIFICATION = 0x2, + BSCF_LASTDATANOTIFICATION = 0x4, + BSCF_DATAFULLYAVAILABLE = 0x8, + BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10, + BSCF_SKIPDRAINDATAFORFILEURLS = 0x20, + BSCF_64BITLENGTHDOWNLOAD = 0x40 +} BSCF; +typedef enum tagBINDSTATUS { + BINDSTATUS_FINDINGRESOURCE = 1, + BINDSTATUS_CONNECTING = 2, + BINDSTATUS_REDIRECTING = 3, + BINDSTATUS_BEGINDOWNLOADDATA = 4, + BINDSTATUS_DOWNLOADINGDATA = 5, + BINDSTATUS_ENDDOWNLOADDATA = 6, + BINDSTATUS_BEGINDOWNLOADCOMPONENTS = 7, + BINDSTATUS_INSTALLINGCOMPONENTS = 8, + BINDSTATUS_ENDDOWNLOADCOMPONENTS = 9, + BINDSTATUS_USINGCACHEDCOPY = 10, + BINDSTATUS_SENDINGREQUEST = 11, + BINDSTATUS_CLASSIDAVAILABLE = 12, + BINDSTATUS_MIMETYPEAVAILABLE = 13, + BINDSTATUS_CACHEFILENAMEAVAILABLE = 14, + BINDSTATUS_BEGINSYNCOPERATION = 15, + BINDSTATUS_ENDSYNCOPERATION = 16, + BINDSTATUS_BEGINUPLOADDATA = 17, + BINDSTATUS_UPLOADINGDATA = 18, + BINDSTATUS_ENDUPLOADDATA = 19, + BINDSTATUS_PROTOCOLCLASSID = 20, + BINDSTATUS_ENCODING = 21, + BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE = 22, + BINDSTATUS_CLASSINSTALLLOCATION = 23, + BINDSTATUS_DECODING = 24, + BINDSTATUS_LOADINGMIMEHANDLER = 25, + BINDSTATUS_CONTENTDISPOSITIONATTACH = 26, + BINDSTATUS_FILTERREPORTMIMETYPE = 27, + BINDSTATUS_CLSIDCANINSTANTIATE = 28, + BINDSTATUS_IUNKNOWNAVAILABLE = 29, + BINDSTATUS_DIRECTBIND = 30, + BINDSTATUS_RAWMIMETYPE = 31, + BINDSTATUS_PROXYDETECTING = 32, + BINDSTATUS_ACCEPTRANGES = 33, + BINDSTATUS_COOKIE_SENT = 34, + BINDSTATUS_COMPACT_POLICY_RECEIVED = 35, + BINDSTATUS_COOKIE_SUPPRESSED = 36, + BINDSTATUS_COOKIE_STATE_UNKNOWN = 37, + BINDSTATUS_COOKIE_STATE_ACCEPT = 38, + BINDSTATUS_COOKIE_STATE_REJECT = 39, + BINDSTATUS_COOKIE_STATE_PROMPT = 40, + BINDSTATUS_COOKIE_STATE_LEASH = 41, + BINDSTATUS_COOKIE_STATE_DOWNGRADE = 42, + BINDSTATUS_POLICY_HREF = 43, + BINDSTATUS_P3P_HEADER = 44, + BINDSTATUS_SESSION_COOKIE_RECEIVED = 45, + BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = 46, + BINDSTATUS_SESSION_COOKIES_ALLOWED = 47, + BINDSTATUS_CACHECONTROL = 48, + BINDSTATUS_CONTENTDISPOSITIONFILENAME = 49, + BINDSTATUS_MIMETEXTPLAINMISMATCH = 50, + BINDSTATUS_PUBLISHERAVAILABLE = 51, + BINDSTATUS_DISPLAYNAMEAVAILABLE = 52, + BINDSTATUS_SSLUX_NAVBLOCKED = 53, + BINDSTATUS_SERVER_MIMETYPEAVAILABLE = 54, + BINDSTATUS_SNIFFED_CLASSIDAVAILABLE = 55, + BINDSTATUS_64BIT_PROGRESS = 56, + BINDSTATUS_LAST = BINDSTATUS_64BIT_PROGRESS, + BINDSTATUS_RESERVED_0 = 57, + BINDSTATUS_RESERVED_1 = 58, + BINDSTATUS_RESERVED_2 = 59, + BINDSTATUS_RESERVED_3 = 60, + BINDSTATUS_RESERVED_4 = 61, + BINDSTATUS_RESERVED_5 = 62, + BINDSTATUS_RESERVED_6 = 63, + BINDSTATUS_RESERVED_7 = 64, + BINDSTATUS_RESERVED_8 = 65, + BINDSTATUS_RESERVED_9 = 66, + BINDSTATUS_LAST_PRIVATE = BINDSTATUS_RESERVED_9 +} BINDSTATUS; +extern const GUID IID_IBindStatusCallback; +typedef struct IBindStatusCallbackVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBindStatusCallback *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBindStatusCallback *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBindStatusCallback *This); + HRESULT (__attribute__((__stdcall__)) *OnStartBinding)( + IBindStatusCallback *This, + DWORD dwReserved, + IBinding *pib); + HRESULT (__attribute__((__stdcall__)) *GetPriority)( + IBindStatusCallback *This, + LONG *pnPriority); + HRESULT (__attribute__((__stdcall__)) *OnLowResource)( + IBindStatusCallback *This, + DWORD reserved); + HRESULT (__attribute__((__stdcall__)) *OnProgress)( + IBindStatusCallback *This, + ULONG ulProgress, + ULONG ulProgressMax, + ULONG ulStatusCode, + LPCWSTR szStatusText); + HRESULT (__attribute__((__stdcall__)) *OnStopBinding)( + IBindStatusCallback *This, + HRESULT hresult, + LPCWSTR szError); + HRESULT (__attribute__((__stdcall__)) *GetBindInfo)( + IBindStatusCallback *This, + DWORD *grfBINDF, + BINDINFO *pbindinfo); + HRESULT (__attribute__((__stdcall__)) *OnDataAvailable)( + IBindStatusCallback *This, + DWORD grfBSCF, + DWORD dwSize, + FORMATETC *pformatetc, + STGMEDIUM *pstgmed); + HRESULT (__attribute__((__stdcall__)) *OnObjectAvailable)( + IBindStatusCallback *This, + const IID *const riid, + IUnknown *punk); +} IBindStatusCallbackVtbl; +struct IBindStatusCallback { + IBindStatusCallbackVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IBindStatusCallback_RemoteGetBindInfo_Proxy( + IBindStatusCallback* This, + DWORD *grfBINDF, + RemBINDINFO *pbindinfo, + RemSTGMEDIUM *pstgmed); +void __attribute__((__stdcall__)) IBindStatusCallback_RemoteGetBindInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBindStatusCallback_RemoteOnDataAvailable_Proxy( + IBindStatusCallback* This, + DWORD grfBSCF, + DWORD dwSize, + RemFORMATETC *pformatetc, + RemSTGMEDIUM *pstgmed); +void __attribute__((__stdcall__)) IBindStatusCallback_RemoteOnDataAvailable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBindStatusCallback_GetBindInfo_Proxy( + IBindStatusCallback* This, + DWORD *grfBINDF, + BINDINFO *pbindinfo); +HRESULT __attribute__((__stdcall__)) IBindStatusCallback_GetBindInfo_Stub( + IBindStatusCallback* This, + DWORD *grfBINDF, + RemBINDINFO *pbindinfo, + RemSTGMEDIUM *pstgmed); +HRESULT __attribute__((__stdcall__)) IBindStatusCallback_OnDataAvailable_Proxy( + IBindStatusCallback* This, + DWORD grfBSCF, + DWORD dwSize, + FORMATETC *pformatetc, + STGMEDIUM *pstgmed); +HRESULT __attribute__((__stdcall__)) IBindStatusCallback_OnDataAvailable_Stub( + IBindStatusCallback* This, + DWORD grfBSCF, + DWORD dwSize, + RemFORMATETC *pformatetc, + RemSTGMEDIUM *pstgmed); +#define _LPBINDSTATUSCALLBACKEX_DEFINED +#define __IBindStatusCallbackEx_INTERFACE_DEFINED__ +typedef IBindStatusCallbackEx *LPBINDSTATUSCALLBACKEX; +typedef enum __WIDL_urlmon_generated_name_00000016 { + BINDF2_DISABLEBASICOVERHTTP = 0x1, + BINDF2_DISABLEAUTOCOOKIEHANDLING = 0x2, + BINDF2_READ_DATA_GREATER_THAN_4GB = 0x4, + BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID = 0x8, + BINDF2_SETDOWNLOADMODE = 0x20, + BINDF2_DISABLE_HTTP_REDIRECT_CACHING = 0x40, + BINDF2_KEEP_CALLBACK_MODULE_LOADED = 0x80, + BINDF2_ALLOW_PROXY_CRED_PROMPT = 0x100, + BINDF2_RESERVED_F = 0x20000, + BINDF2_RESERVED_E = 0x40000, + BINDF2_RESERVED_D = 0x80000, + BINDF2_RESERVED_C = 0x100000, + BINDF2_RESERVED_B = 0x200000, + BINDF2_RESERVED_A = 0x400000, + BINDF2_RESERVED_9 = 0x800000, + BINDF2_RESERVED_8 = 0x1000000, + BINDF2_RESERVED_7 = 0x2000000, + BINDF2_RESERVED_6 = 0x4000000, + BINDF2_RESERVED_5 = 0x8000000, + BINDF2_RESERVED_4 = 0x10000000, + BINDF2_RESERVED_3 = 0x20000000, + BINDF2_RESERVED_2 = 0x40000000, + BINDF2_RESERVED_1 = 0x80000000 +} BINDF2; +extern const GUID IID_IBindStatusCallbackEx; +typedef struct IBindStatusCallbackExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBindStatusCallbackEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBindStatusCallbackEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBindStatusCallbackEx *This); + HRESULT (__attribute__((__stdcall__)) *OnStartBinding)( + IBindStatusCallbackEx *This, + DWORD dwReserved, + IBinding *pib); + HRESULT (__attribute__((__stdcall__)) *GetPriority)( + IBindStatusCallbackEx *This, + LONG *pnPriority); + HRESULT (__attribute__((__stdcall__)) *OnLowResource)( + IBindStatusCallbackEx *This, + DWORD reserved); + HRESULT (__attribute__((__stdcall__)) *OnProgress)( + IBindStatusCallbackEx *This, + ULONG ulProgress, + ULONG ulProgressMax, + ULONG ulStatusCode, + LPCWSTR szStatusText); + HRESULT (__attribute__((__stdcall__)) *OnStopBinding)( + IBindStatusCallbackEx *This, + HRESULT hresult, + LPCWSTR szError); + HRESULT (__attribute__((__stdcall__)) *GetBindInfo)( + IBindStatusCallbackEx *This, + DWORD *grfBINDF, + BINDINFO *pbindinfo); + HRESULT (__attribute__((__stdcall__)) *OnDataAvailable)( + IBindStatusCallbackEx *This, + DWORD grfBSCF, + DWORD dwSize, + FORMATETC *pformatetc, + STGMEDIUM *pstgmed); + HRESULT (__attribute__((__stdcall__)) *OnObjectAvailable)( + IBindStatusCallbackEx *This, + const IID *const riid, + IUnknown *punk); + HRESULT (__attribute__((__stdcall__)) *GetBindInfoEx)( + IBindStatusCallbackEx *This, + DWORD *grfBINDF, + BINDINFO *pbindinfo, + DWORD *grfBINDF2, + DWORD *pdwReserved); +} IBindStatusCallbackExVtbl; +struct IBindStatusCallbackEx { + IBindStatusCallbackExVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IBindStatusCallbackEx_RemoteGetBindInfoEx_Proxy( + IBindStatusCallbackEx* This, + DWORD *grfBINDF, + RemBINDINFO *pbindinfo, + RemSTGMEDIUM *pstgmed, + DWORD *grfBINDF2, + DWORD *pdwReserved); +void __attribute__((__stdcall__)) IBindStatusCallbackEx_RemoteGetBindInfoEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBindStatusCallbackEx_GetBindInfoEx_Proxy( + IBindStatusCallbackEx* This, + DWORD *grfBINDF, + BINDINFO *pbindinfo, + DWORD *grfBINDF2, + DWORD *pdwReserved); +HRESULT __attribute__((__stdcall__)) IBindStatusCallbackEx_GetBindInfoEx_Stub( + IBindStatusCallbackEx* This, + DWORD *grfBINDF, + RemBINDINFO *pbindinfo, + RemSTGMEDIUM *pstgmed, + DWORD *grfBINDF2, + DWORD *pdwReserved); +#define _LPAUTHENTICATION_DEFINED +#define __IAuthenticate_INTERFACE_DEFINED__ +typedef IAuthenticate *LPAUTHENTICATION; +extern const GUID IID_IAuthenticate; +typedef struct IAuthenticateVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAuthenticate *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAuthenticate *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAuthenticate *This); + HRESULT (__attribute__((__stdcall__)) *Authenticate)( + IAuthenticate *This, + HWND *phwnd, + LPWSTR *pszUsername, + LPWSTR *pszPassword); +} IAuthenticateVtbl; +struct IAuthenticate { + IAuthenticateVtbl* lpVtbl; +}; +#define _LPAUTHENTICATIONEX_DEFINED +#define __IAuthenticateEx_INTERFACE_DEFINED__ +typedef IAuthenticateEx *LPAUTHENTICATIONEX; +typedef enum __WIDL_urlmon_generated_name_00000017 { + AUTHENTICATEF_PROXY = 0x1, + AUTHENTICATEF_BASIC = 0x2, + AUTHENTICATEF_HTTP = 0x4 +} AUTHENTICATEF; +typedef struct _tagAUTHENTICATEINFO { + DWORD dwFlags; + DWORD dwReserved; +} AUTHENTICATEINFO; +extern const GUID IID_IAuthenticateEx; +typedef struct IAuthenticateExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAuthenticateEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAuthenticateEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAuthenticateEx *This); + HRESULT (__attribute__((__stdcall__)) *Authenticate)( + IAuthenticateEx *This, + HWND *phwnd, + LPWSTR *pszUsername, + LPWSTR *pszPassword); + HRESULT (__attribute__((__stdcall__)) *AuthenticateEx)( + IAuthenticateEx *This, + HWND *phwnd, + LPWSTR *pszUsername, + LPWSTR *pszPassword, + AUTHENTICATEINFO *pauthinfo); +} IAuthenticateExVtbl; +struct IAuthenticateEx { + IAuthenticateExVtbl* lpVtbl; +}; +#define _LPHTTPNEGOTIATE_DEFINED +#define __IHttpNegotiate_INTERFACE_DEFINED__ +typedef IHttpNegotiate *LPHTTPNEGOTIATE; +extern const GUID IID_IHttpNegotiate; +typedef struct IHttpNegotiateVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IHttpNegotiate *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IHttpNegotiate *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IHttpNegotiate *This); + HRESULT (__attribute__((__stdcall__)) *BeginningTransaction)( + IHttpNegotiate *This, + LPCWSTR szURL, + LPCWSTR szHeaders, + DWORD dwReserved, + LPWSTR *pszAdditionalHeaders); + HRESULT (__attribute__((__stdcall__)) *OnResponse)( + IHttpNegotiate *This, + DWORD dwResponseCode, + LPCWSTR szResponseHeaders, + LPCWSTR szRequestHeaders, + LPWSTR *pszAdditionalRequestHeaders); +} IHttpNegotiateVtbl; +struct IHttpNegotiate { + IHttpNegotiateVtbl* lpVtbl; +}; +#define _LPHTTPNEGOTIATE2_DEFINED +#define __IHttpNegotiate2_INTERFACE_DEFINED__ +typedef IHttpNegotiate2 *LPHTTPNEGOTIATE2; +extern const GUID IID_IHttpNegotiate2; +typedef struct IHttpNegotiate2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IHttpNegotiate2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IHttpNegotiate2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IHttpNegotiate2 *This); + HRESULT (__attribute__((__stdcall__)) *BeginningTransaction)( + IHttpNegotiate2 *This, + LPCWSTR szURL, + LPCWSTR szHeaders, + DWORD dwReserved, + LPWSTR *pszAdditionalHeaders); + HRESULT (__attribute__((__stdcall__)) *OnResponse)( + IHttpNegotiate2 *This, + DWORD dwResponseCode, + LPCWSTR szResponseHeaders, + LPCWSTR szRequestHeaders, + LPWSTR *pszAdditionalRequestHeaders); + HRESULT (__attribute__((__stdcall__)) *GetRootSecurityId)( + IHttpNegotiate2 *This, + BYTE *pbSecurityId, + DWORD *pcbSecurityId, + DWORD_PTR dwReserved); +} IHttpNegotiate2Vtbl; +struct IHttpNegotiate2 { + IHttpNegotiate2Vtbl* lpVtbl; +}; +#define _LPHTTPNEGOTIATE3_DEFINED +#define __IHttpNegotiate3_INTERFACE_DEFINED__ +typedef IHttpNegotiate3 *LPHTTPNEGOTIATE3; +extern const GUID IID_IHttpNegotiate3; +typedef struct IHttpNegotiate3Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IHttpNegotiate3 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IHttpNegotiate3 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IHttpNegotiate3 *This); + HRESULT (__attribute__((__stdcall__)) *BeginningTransaction)( + IHttpNegotiate3 *This, + LPCWSTR szURL, + LPCWSTR szHeaders, + DWORD dwReserved, + LPWSTR *pszAdditionalHeaders); + HRESULT (__attribute__((__stdcall__)) *OnResponse)( + IHttpNegotiate3 *This, + DWORD dwResponseCode, + LPCWSTR szResponseHeaders, + LPCWSTR szRequestHeaders, + LPWSTR *pszAdditionalRequestHeaders); + HRESULT (__attribute__((__stdcall__)) *GetRootSecurityId)( + IHttpNegotiate3 *This, + BYTE *pbSecurityId, + DWORD *pcbSecurityId, + DWORD_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *GetSerializedClientCertContext)( + IHttpNegotiate3 *This, + BYTE **ppbCert, + DWORD *pcbCert); +} IHttpNegotiate3Vtbl; +struct IHttpNegotiate3 { + IHttpNegotiate3Vtbl* lpVtbl; +}; +#define _LPWININETFILESTREAM_DEFINED +#define __IWinInetFileStream_INTERFACE_DEFINED__ +typedef IWinInetFileStream *LPWININETFILESTREAM; +extern const GUID IID_IWinInetFileStream; +typedef struct IWinInetFileStreamVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWinInetFileStream *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWinInetFileStream *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWinInetFileStream *This); + HRESULT (__attribute__((__stdcall__)) *SetHandleForUnlock)( + IWinInetFileStream *This, + DWORD_PTR hWinInetLockHandle, + DWORD_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *SetDeleteFile)( + IWinInetFileStream *This, + DWORD_PTR dwReserved); +} IWinInetFileStreamVtbl; +struct IWinInetFileStream { + IWinInetFileStreamVtbl* lpVtbl; +}; +#define _LPWINDOWFORBINDINGUI_DEFINED +#define __IWindowForBindingUI_INTERFACE_DEFINED__ +typedef IWindowForBindingUI *LPWINDOWFORBINDINGUI; +extern const GUID IID_IWindowForBindingUI; +typedef struct IWindowForBindingUIVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWindowForBindingUI *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWindowForBindingUI *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWindowForBindingUI *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IWindowForBindingUI *This, + const GUID *const rguidReason, + HWND *phwnd); +} IWindowForBindingUIVtbl; +struct IWindowForBindingUI { + IWindowForBindingUIVtbl* lpVtbl; +}; +#define _LPCODEINSTALL_DEFINED +#define __ICodeInstall_INTERFACE_DEFINED__ +typedef ICodeInstall *LPCODEINSTALL; +typedef enum __WIDL_urlmon_generated_name_00000018 { + CIP_DISK_FULL = 0, + CIP_ACCESS_DENIED = 1, + CIP_NEWER_VERSION_EXISTS = 2, + CIP_OLDER_VERSION_EXISTS = 3, + CIP_NAME_CONFLICT = 4, + CIP_TRUST_VERIFICATION_COMPONENT_MISSING = 5, + CIP_EXE_SELF_REGISTERATION_TIMEOUT = 6, + CIP_UNSAFE_TO_ABORT = 7, + CIP_NEED_REBOOT = 8, + CIP_NEED_REBOOT_UI_PERMISSION = 9 +} CIP_STATUS; +extern const GUID IID_ICodeInstall; +typedef struct ICodeInstallVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICodeInstall *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICodeInstall *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICodeInstall *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + ICodeInstall *This, + const GUID *const rguidReason, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *OnCodeInstallProblem)( + ICodeInstall *This, + ULONG ulStatusCode, + LPCWSTR szDestination, + LPCWSTR szSource, + DWORD dwReserved); +} ICodeInstallVtbl; +struct ICodeInstall { + ICodeInstallVtbl* lpVtbl; +}; +#define _LPUri_DEFINED +#define __IUri_INTERFACE_DEFINED__ +typedef enum __WIDL_urlmon_generated_name_00000019 { + Uri_PROPERTY_ABSOLUTE_URI = 0, + Uri_PROPERTY_STRING_START = Uri_PROPERTY_ABSOLUTE_URI, + Uri_PROPERTY_AUTHORITY = 1, + Uri_PROPERTY_DISPLAY_URI = 2, + Uri_PROPERTY_DOMAIN = 3, + Uri_PROPERTY_EXTENSION = 4, + Uri_PROPERTY_FRAGMENT = 5, + Uri_PROPERTY_HOST = 6, + Uri_PROPERTY_PASSWORD = 7, + Uri_PROPERTY_PATH = 8, + Uri_PROPERTY_PATH_AND_QUERY = 9, + Uri_PROPERTY_QUERY = 10, + Uri_PROPERTY_RAW_URI = 11, + Uri_PROPERTY_SCHEME_NAME = 12, + Uri_PROPERTY_USER_INFO = 13, + Uri_PROPERTY_USER_NAME = 14, + Uri_PROPERTY_STRING_LAST = Uri_PROPERTY_USER_NAME, + Uri_PROPERTY_HOST_TYPE = 15, + Uri_PROPERTY_DWORD_START = Uri_PROPERTY_HOST_TYPE, + Uri_PROPERTY_PORT = 16, + Uri_PROPERTY_SCHEME = 17, + Uri_PROPERTY_ZONE = 18, + Uri_PROPERTY_DWORD_LAST = Uri_PROPERTY_ZONE +} Uri_PROPERTY; +typedef enum __WIDL_urlmon_generated_name_0000001A { + Uri_HOST_UNKNOWN = 0, + Uri_HOST_DNS = 1, + Uri_HOST_IPV4 = 2, + Uri_HOST_IPV6 = 3, + Uri_HOST_IDN = 4 +} Uri_HOST_TYPE; +extern const GUID IID_IUri; +typedef struct IUriVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IUri *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IUri *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IUri *This); + HRESULT (__attribute__((__stdcall__)) *GetPropertyBSTR)( + IUri *This, + Uri_PROPERTY uriProp, + BSTR *pbstrProperty, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetPropertyLength)( + IUri *This, + Uri_PROPERTY uriProp, + DWORD *pcchProperty, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetPropertyDWORD)( + IUri *This, + Uri_PROPERTY uriProp, + DWORD *pdwProperty, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *HasProperty)( + IUri *This, + Uri_PROPERTY uriProp, + WINBOOL *pfHasProperty); + HRESULT (__attribute__((__stdcall__)) *GetAbsoluteUri)( + IUri *This, + BSTR *pbstrAbsoluteUri); + HRESULT (__attribute__((__stdcall__)) *GetAuthority)( + IUri *This, + BSTR *pbstrAuthority); + HRESULT (__attribute__((__stdcall__)) *GetDisplayUri)( + IUri *This, + BSTR *pbstrDisplayString); + HRESULT (__attribute__((__stdcall__)) *GetDomain)( + IUri *This, + BSTR *pbstrDomain); + HRESULT (__attribute__((__stdcall__)) *GetExtension)( + IUri *This, + BSTR *pbstrExtension); + HRESULT (__attribute__((__stdcall__)) *GetFragment)( + IUri *This, + BSTR *pbstrFragment); + HRESULT (__attribute__((__stdcall__)) *GetHost)( + IUri *This, + BSTR *pbstrHost); + HRESULT (__attribute__((__stdcall__)) *GetPassword)( + IUri *This, + BSTR *pbstrPassword); + HRESULT (__attribute__((__stdcall__)) *GetPath)( + IUri *This, + BSTR *pbstrPath); + HRESULT (__attribute__((__stdcall__)) *GetPathAndQuery)( + IUri *This, + BSTR *pbstrPathAndQuery); + HRESULT (__attribute__((__stdcall__)) *GetQuery)( + IUri *This, + BSTR *pbstrQuery); + HRESULT (__attribute__((__stdcall__)) *GetRawUri)( + IUri *This, + BSTR *pbstrRawUri); + HRESULT (__attribute__((__stdcall__)) *GetSchemeName)( + IUri *This, + BSTR *pbstrSchemeName); + HRESULT (__attribute__((__stdcall__)) *GetUserInfo)( + IUri *This, + BSTR *pbstrUserInfo); + HRESULT (__attribute__((__stdcall__)) *GetUserNameA)( + IUri *This, + BSTR *pbstrUserName); + HRESULT (__attribute__((__stdcall__)) *GetHostType)( + IUri *This, + DWORD *pdwHostType); + HRESULT (__attribute__((__stdcall__)) *GetPort)( + IUri *This, + DWORD *pdwPort); + HRESULT (__attribute__((__stdcall__)) *GetScheme)( + IUri *This, + DWORD *pdwScheme); + HRESULT (__attribute__((__stdcall__)) *GetZone)( + IUri *This, + DWORD *pdwZone); + HRESULT (__attribute__((__stdcall__)) *GetProperties)( + IUri *This, + LPDWORD pdwFlags); + HRESULT (__attribute__((__stdcall__)) *IsEqual)( + IUri *This, + IUri *pUri, + WINBOOL *pfEqual); +} IUriVtbl; +struct IUri { + IUriVtbl* lpVtbl; +}; +extern HRESULT __attribute__((__stdcall__)) CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI); +extern HRESULT __attribute__((__stdcall__)) CreateUriWithFragment( +LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI); +extern HRESULT __attribute__((__stdcall__)) CreateUriFromMultiByteString(LPCSTR pszANSIInputUri, DWORD dwEncodingFlags, DWORD dwCodePage, DWORD dwCreateFlags, DWORD_PTR dwReserved, IUri **ppUri); +#define Uri_HAS_ABSOLUTE_URI (1 << Uri_PROPERTY_ABSOLUTE_URI) +#define Uri_HAS_AUTHORITY (1 << Uri_PROPERTY_AUTHORITY) +#define Uri_HAS_DISPLAY_URI (1 << Uri_PROPERTY_DISPLAY_URI) +#define Uri_HAS_DOMAIN (1 << Uri_PROPERTY_DOMAIN) +#define Uri_HAS_EXTENSION (1 << Uri_PROPERTY_EXTENSION) +#define Uri_HAS_FRAGMENT (1 << Uri_PROPERTY_FRAGMENT) +#define Uri_HAS_HOST (1 << Uri_PROPERTY_HOST) +#define Uri_HAS_PASSWORD (1 << Uri_PROPERTY_PASSWORD) +#define Uri_HAS_PATH (1 << Uri_PROPERTY_PATH) +#define Uri_HAS_QUERY (1 << Uri_PROPERTY_QUERY) +#define Uri_HAS_RAW_URI (1 << Uri_PROPERTY_RAW_URI) +#define Uri_HAS_SCHEME_NAME (1 << Uri_PROPERTY_SCHEME_NAME) +#define Uri_HAS_USER_NAME (1 << Uri_PROPERTY_USER_NAME) +#define Uri_HAS_PATH_AND_QUERY (1 << Uri_PROPERTY_PATH_AND_QUERY) +#define Uri_HAS_USER_INFO (1 << Uri_PROPERTY_USER_INFO) +#define Uri_HAS_HOST_TYPE (1 << Uri_PROPERTY_HOST_TYPE) +#define Uri_HAS_PORT (1 << Uri_PROPERTY_PORT) +#define Uri_HAS_SCHEME (1 << Uri_PROPERTY_SCHEME) +#define Uri_HAS_ZONE (1 << Uri_PROPERTY_ZONE) +#define Uri_CREATE_ALLOW_RELATIVE 0x1 +#define Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME 0x2 +#define Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME 0x4 +#define Uri_CREATE_NOFRAG 0x8 +#define Uri_CREATE_NO_CANONICALIZE 0x10 +#define Uri_CREATE_CANONICALIZE 0x100 +#define Uri_CREATE_FILE_USE_DOS_PATH 0x20 +#define Uri_CREATE_DECODE_EXTRA_INFO 0x40 +#define Uri_CREATE_NO_DECODE_EXTRA_INFO 0x80 +#define Uri_CREATE_CRACK_UNKNOWN_SCHEMES 0x200 +#define Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES 0x400 +#define Uri_CREATE_PRE_PROCESS_HTML_URI 0x800 +#define Uri_CREATE_NO_PRE_PROCESS_HTML_URI 0x1000 +#define Uri_CREATE_IE_SETTINGS 0x2000 +#define Uri_CREATE_NO_IE_SETTINGS 0x4000 +#define Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS 0x8000 +#define Uri_CREATE_NORMALIZE_INTL_CHARACTERS 0x10000 +#define Uri_CREATE_CANONICALIZE_ABSOLUTE 0x20000 +#define Uri_DISPLAY_NO_FRAGMENT 0x1 +#define Uri_PUNYCODE_IDN_HOST 0x2 +#define Uri_DISPLAY_IDN_HOST 0x4 +#define Uri_DISPLAY_NO_PUNYCODE 0x8 +#define Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 0x1 +#define Uri_ENCODING_USER_INFO_AND_PATH_IS_CP 0x2 +#define Uri_ENCODING_HOST_IS_IDN 0x4 +#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 0x8 +#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP 0x10 +#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 0x20 +#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP 0x40 +#define Uri_ENCODING_RFC (Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 | Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 | Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8) +#define UriBuilder_USE_ORIGINAL_FLAGS 0x1 +#define __IUriContainer_INTERFACE_DEFINED__ +extern const GUID IID_IUriContainer; +typedef struct IUriContainerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IUriContainer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IUriContainer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IUriContainer *This); + HRESULT (__attribute__((__stdcall__)) *GetIUri)( + IUriContainer *This, + IUri **ppIUri); +} IUriContainerVtbl; +struct IUriContainer { + IUriContainerVtbl* lpVtbl; +}; +#define __IUriBuilder_INTERFACE_DEFINED__ +extern const GUID IID_IUriBuilder; +typedef struct IUriBuilderVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IUriBuilder *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IUriBuilder *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IUriBuilder *This); + HRESULT (__attribute__((__stdcall__)) *CreateUriSimple)( + IUriBuilder *This, + DWORD dwAllowEncodingPropertyMask, + DWORD_PTR dwReserved, + IUri **ppIUri); + HRESULT (__attribute__((__stdcall__)) *CreateUri)( + IUriBuilder *This, + DWORD dwCreateFlags, + DWORD dwAllowEncodingPropertyMask, + DWORD_PTR dwReserved, + IUri **ppIUri); + HRESULT (__attribute__((__stdcall__)) *CreateUriWithFlags)( + IUriBuilder *This, + DWORD dwCreateFlags, + DWORD dwUriBuilderFlags, + DWORD dwAllowEncodingPropertyMask, + DWORD_PTR dwReserved, + IUri **ppIUri); + HRESULT (__attribute__((__stdcall__)) *GetIUri)( + IUriBuilder *This, + IUri **ppIUri); + HRESULT (__attribute__((__stdcall__)) *SetIUri)( + IUriBuilder *This, + IUri *pIUri); + HRESULT (__attribute__((__stdcall__)) *GetFragment)( + IUriBuilder *This, + DWORD *pcchFragment, + LPCWSTR *ppwzFragment); + HRESULT (__attribute__((__stdcall__)) *GetHost)( + IUriBuilder *This, + DWORD *pcchHost, + LPCWSTR *ppwzHost); + HRESULT (__attribute__((__stdcall__)) *GetPassword)( + IUriBuilder *This, + DWORD *pcchPassword, + LPCWSTR *ppwzPassword); + HRESULT (__attribute__((__stdcall__)) *GetPath)( + IUriBuilder *This, + DWORD *pcchPath, + LPCWSTR *ppwzPath); + HRESULT (__attribute__((__stdcall__)) *GetPort)( + IUriBuilder *This, + WINBOOL *pfHasPort, + DWORD *pdwPort); + HRESULT (__attribute__((__stdcall__)) *GetQuery)( + IUriBuilder *This, + DWORD *pcchQuery, + LPCWSTR *ppwzQuery); + HRESULT (__attribute__((__stdcall__)) *GetSchemeName)( + IUriBuilder *This, + DWORD *pcchSchemeName, + LPCWSTR *ppwzSchemeName); + HRESULT (__attribute__((__stdcall__)) *GetUserNameA)( + IUriBuilder *This, + DWORD *pcchUserName, + LPCWSTR *ppwzUserName); + HRESULT (__attribute__((__stdcall__)) *SetFragment)( + IUriBuilder *This, + LPCWSTR pwzNewValue); + HRESULT (__attribute__((__stdcall__)) *SetHost)( + IUriBuilder *This, + LPCWSTR pwzNewValue); + HRESULT (__attribute__((__stdcall__)) *SetPassword)( + IUriBuilder *This, + LPCWSTR pwzNewValue); + HRESULT (__attribute__((__stdcall__)) *SetPath)( + IUriBuilder *This, + LPCWSTR pwzNewValue); + HRESULT (__attribute__((__stdcall__)) *SetPort)( + IUriBuilder *This, + WINBOOL fHasPort, + DWORD dwNewValue); + HRESULT (__attribute__((__stdcall__)) *SetQuery)( + IUriBuilder *This, + LPCWSTR pwzNewValue); + HRESULT (__attribute__((__stdcall__)) *SetSchemeName)( + IUriBuilder *This, + LPCWSTR pwzNewValue); + HRESULT (__attribute__((__stdcall__)) *SetUserName)( + IUriBuilder *This, + LPCWSTR pwzNewValue); + HRESULT (__attribute__((__stdcall__)) *RemoveProperties)( + IUriBuilder *This, + DWORD dwPropertyMask); + HRESULT (__attribute__((__stdcall__)) *HasBeenModified)( + IUriBuilder *This, + WINBOOL *pfModified); +} IUriBuilderVtbl; +struct IUriBuilder { + IUriBuilderVtbl* lpVtbl; +}; +#define __IUriBuilderFactory_INTERFACE_DEFINED__ +extern const GUID IID_IUriBuilderFactory; +typedef struct IUriBuilderFactoryVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IUriBuilderFactory *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IUriBuilderFactory *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IUriBuilderFactory *This); + HRESULT (__attribute__((__stdcall__)) *CreateIUriBuilder)( + IUriBuilderFactory *This, + DWORD dwFlags, + DWORD_PTR dwReserved, + IUriBuilder **ppIUriBuilder); + HRESULT (__attribute__((__stdcall__)) *CreateInitializedIUriBuilder)( + IUriBuilderFactory *This, + DWORD dwFlags, + DWORD_PTR dwReserved, + IUriBuilder **ppIUriBuilder); +} IUriBuilderFactoryVtbl; +struct IUriBuilderFactory { + IUriBuilderFactoryVtbl* lpVtbl; +}; +extern HRESULT __attribute__((__stdcall__)) CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserved, IUriBuilder **ppIUriBuilder); +#define _LPWININETINFO_DEFINED +#define __IWinInetInfo_INTERFACE_DEFINED__ +typedef IWinInetInfo *LPWININETINFO; +extern const GUID IID_IWinInetInfo; +typedef struct IWinInetInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWinInetInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWinInetInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWinInetInfo *This); + HRESULT (__attribute__((__stdcall__)) *QueryOption)( + IWinInetInfo *This, + DWORD dwOption, + LPVOID pBuffer, + DWORD *pcbBuf); +} IWinInetInfoVtbl; +struct IWinInetInfo { + IWinInetInfoVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IWinInetInfo_RemoteQueryOption_Proxy( + IWinInetInfo* This, + DWORD dwOption, + BYTE *pBuffer, + DWORD *pcbBuf); +void __attribute__((__stdcall__)) IWinInetInfo_RemoteQueryOption_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IWinInetInfo_QueryOption_Proxy( + IWinInetInfo* This, + DWORD dwOption, + LPVOID pBuffer, + DWORD *pcbBuf); +HRESULT __attribute__((__stdcall__)) IWinInetInfo_QueryOption_Stub( + IWinInetInfo* This, + DWORD dwOption, + BYTE *pBuffer, + DWORD *pcbBuf); +#define WININETINFO_OPTION_LOCK_HANDLE 65534 +#define _LPHTTPSECURITY_DEFINED +#define __IHttpSecurity_INTERFACE_DEFINED__ +typedef IHttpSecurity *LPHTTPSECURITY; +extern const GUID IID_IHttpSecurity; +typedef struct IHttpSecurityVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IHttpSecurity *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IHttpSecurity *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IHttpSecurity *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IHttpSecurity *This, + const GUID *const rguidReason, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *OnSecurityProblem)( + IHttpSecurity *This, + DWORD dwProblem); +} IHttpSecurityVtbl; +struct IHttpSecurity { + IHttpSecurityVtbl* lpVtbl; +}; +#define _LPWININETHTTPINFO_DEFINED +#define __IWinInetHttpInfo_INTERFACE_DEFINED__ +typedef IWinInetHttpInfo *LPWININETHTTPINFO; +extern const GUID IID_IWinInetHttpInfo; +typedef struct IWinInetHttpInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWinInetHttpInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWinInetHttpInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWinInetHttpInfo *This); + HRESULT (__attribute__((__stdcall__)) *QueryOption)( + IWinInetHttpInfo *This, + DWORD dwOption, + LPVOID pBuffer, + DWORD *pcbBuf); + HRESULT (__attribute__((__stdcall__)) *QueryInfo)( + IWinInetHttpInfo *This, + DWORD dwOption, + LPVOID pBuffer, + DWORD *pcbBuf, + DWORD *pdwFlags, + DWORD *pdwReserved); +} IWinInetHttpInfoVtbl; +struct IWinInetHttpInfo { + IWinInetHttpInfoVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IWinInetHttpInfo_RemoteQueryInfo_Proxy( + IWinInetHttpInfo* This, + DWORD dwOption, + BYTE *pBuffer, + DWORD *pcbBuf, + DWORD *pdwFlags, + DWORD *pdwReserved); +void __attribute__((__stdcall__)) IWinInetHttpInfo_RemoteQueryInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IWinInetHttpInfo_QueryInfo_Proxy( + IWinInetHttpInfo* This, + DWORD dwOption, + LPVOID pBuffer, + DWORD *pcbBuf, + DWORD *pdwFlags, + DWORD *pdwReserved); +HRESULT __attribute__((__stdcall__)) IWinInetHttpInfo_QueryInfo_Stub( + IWinInetHttpInfo* This, + DWORD dwOption, + BYTE *pBuffer, + DWORD *pcbBuf, + DWORD *pdwFlags, + DWORD *pdwReserved); +#define _LPWININETHTTPTIMEOUTS_DEFINED +#define __IWinInetHttpTimeouts_INTERFACE_DEFINED__ +extern const GUID IID_IWinInetHttpTimeouts; +typedef struct IWinInetHttpTimeoutsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWinInetHttpTimeouts *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWinInetHttpTimeouts *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWinInetHttpTimeouts *This); + HRESULT (__attribute__((__stdcall__)) *GetRequestTimeouts)( + IWinInetHttpTimeouts *This, + DWORD *pdwConnectTimeout, + DWORD *pdwSendTimeout, + DWORD *pdwReceiveTimeout); +} IWinInetHttpTimeoutsVtbl; +struct IWinInetHttpTimeouts { + IWinInetHttpTimeoutsVtbl* lpVtbl; +}; +#define _LPWININETCACHEHINTS_DEFINED +#define __IWinInetCacheHints_INTERFACE_DEFINED__ +typedef IWinInetCacheHints *LPWININETCACHEHINTS; +extern const GUID IID_IWinInetCacheHints; +typedef struct IWinInetCacheHintsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWinInetCacheHints *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWinInetCacheHints *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWinInetCacheHints *This); + HRESULT (__attribute__((__stdcall__)) *SetCacheExtension)( + IWinInetCacheHints *This, + LPCWSTR pwzExt, + LPVOID pszCacheFile, + DWORD *pcbCacheFile, + DWORD *pdwWinInetError, + DWORD *pdwReserved); +} IWinInetCacheHintsVtbl; +struct IWinInetCacheHints { + IWinInetCacheHintsVtbl* lpVtbl; +}; +#define _LPWININETCACHEHINTS2_DEFINED +#define __IWinInetCacheHints2_INTERFACE_DEFINED__ +typedef IWinInetCacheHints2 *LPWININETCACHEHINTS2; +extern const GUID IID_IWinInetCacheHints2; +typedef struct IWinInetCacheHints2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWinInetCacheHints2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWinInetCacheHints2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWinInetCacheHints2 *This); + HRESULT (__attribute__((__stdcall__)) *SetCacheExtension)( + IWinInetCacheHints2 *This, + LPCWSTR pwzExt, + LPVOID pszCacheFile, + DWORD *pcbCacheFile, + DWORD *pdwWinInetError, + DWORD *pdwReserved); + HRESULT (__attribute__((__stdcall__)) *SetCacheExtension2)( + IWinInetCacheHints2 *This, + LPCWSTR pwzExt, + WCHAR *pwzCacheFile, + DWORD *pcchCacheFile, + DWORD *pdwWinInetError, + DWORD *pdwReserved); +} IWinInetCacheHints2Vtbl; +struct IWinInetCacheHints2 { + IWinInetCacheHints2Vtbl* lpVtbl; +}; +#define SID_IBindHost IID_IBindHost +#define SID_SBindHost IID_IBindHost +#define _LPBINDHOST_DEFINED +extern const GUID SID_BindHost; +#define __IBindHost_INTERFACE_DEFINED__ +typedef IBindHost *LPBINDHOST; +extern const GUID IID_IBindHost; +typedef struct IBindHostVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBindHost *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBindHost *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBindHost *This); + HRESULT (__attribute__((__stdcall__)) *CreateMoniker)( + IBindHost *This, + LPOLESTR szName, + IBindCtx *pBC, + IMoniker **ppmk, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *MonikerBindToStorage)( + IBindHost *This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + void **ppvObj); + HRESULT (__attribute__((__stdcall__)) *MonikerBindToObject)( + IBindHost *This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + void **ppvObj); +} IBindHostVtbl; +struct IBindHost { + IBindHostVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToStorage_Proxy( + IBindHost* This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + IUnknown **ppvObj); +void __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToStorage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToObject_Proxy( + IBindHost* This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + IUnknown **ppvObj); +void __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToObject_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToStorage_Proxy( + IBindHost* This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + void **ppvObj); +HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToStorage_Stub( + IBindHost* This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + IUnknown **ppvObj); +HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToObject_Proxy( + IBindHost* This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + void **ppvObj); +HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToObject_Stub( + IBindHost* This, + IMoniker *pMk, + IBindCtx *pBC, + IBindStatusCallback *pBSC, + const IID *const riid, + IUnknown **ppvObj); +#define URLOSTRM_USECACHEDCOPY_ONLY 0x1 +#define URLOSTRM_USECACHEDCOPY 0x2 +#define URLOSTRM_GETNEWESTVERSION 0x3 +struct IBindStatusCallback; +extern HRESULT __attribute__((__stdcall__)) HlinkSimpleNavigateToString(LPCWSTR szTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) HlinkSimpleNavigateToMoniker(IMoniker *pmkTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLDownloadToCacheFileA(LPUNKNOWN, LPCSTR, LPSTR, DWORD, DWORD, LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLDownloadToCacheFileW(LPUNKNOWN, LPCWSTR, LPWSTR, DWORD, DWORD, LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK); +extern HRESULT __attribute__((__stdcall__)) URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK); +#define URLOpenStream __MINGW_NAME_AW(URLOpenStream) +#define URLOpenPullStream __MINGW_NAME_AW(URLOpenPullStream) +#define URLDownloadToFile __MINGW_NAME_AW(URLDownloadToFile) +#define URLDownloadToCacheFile __MINGW_NAME_AW(URLDownloadToCacheFile) +#define URLOpenBlockingStream __MINGW_NAME_AW(URLOpenBlockingStream) +extern HRESULT __attribute__((__stdcall__)) HlinkGoBack(IUnknown *pUnk); +extern HRESULT __attribute__((__stdcall__)) HlinkGoForward(IUnknown *pUnk); +extern HRESULT __attribute__((__stdcall__)) HlinkNavigateString(IUnknown *pUnk, LPCWSTR szTarget); +extern HRESULT __attribute__((__stdcall__)) HlinkNavigateMoniker(IUnknown *pUnk, IMoniker *pmkTarget); +#define _LPIINTERNET +#define __IInternet_INTERFACE_DEFINED__ +typedef IInternet *LPIINTERNET; +extern const GUID IID_IInternet; +typedef struct IInternetVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternet *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternet *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternet *This); +} IInternetVtbl; +struct IInternet { + IInternetVtbl* lpVtbl; +}; +#define _LPIINTERNETBINDINFO +#define __IInternetBindInfo_INTERFACE_DEFINED__ +typedef IInternetBindInfo *LPIINTERNETBINDINFO; +typedef enum tagBINDSTRING { + BINDSTRING_HEADERS = 1, + BINDSTRING_ACCEPT_MIMES = 2, + BINDSTRING_EXTRA_URL = 3, + BINDSTRING_LANGUAGE = 4, + BINDSTRING_USERNAME = 5, + BINDSTRING_PASSWORD = 6, + BINDSTRING_UA_PIXELS = 7, + BINDSTRING_UA_COLOR = 8, + BINDSTRING_OS = 9, + BINDSTRING_USER_AGENT = 10, + BINDSTRING_ACCEPT_ENCODINGS = 11, + BINDSTRING_POST_COOKIE = 12, + BINDSTRING_POST_DATA_MIME = 13, + BINDSTRING_URL = 14, + BINDSTRING_IID = 15, + BINDSTRING_FLAG_BIND_TO_OBJECT = 16, + BINDSTRING_PTR_BIND_CONTEXT = 17, + BINDSTRING_XDR_ORIGIN = 18, + BINDSTRING_DOWNLOADPATH = 19, + BINDSTRING_ROOTDOC_URL = 20, + BINDSTRING_INITIAL_FILENAME = 21, + BINDSTRING_PROXY_USERNAME = 22, + BINDSTRING_PROXY_PASSWORD = 23 +} BINDSTRING; +extern const GUID IID_IInternetBindInfo; +typedef struct IInternetBindInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetBindInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetBindInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetBindInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetBindInfo)( + IInternetBindInfo *This, + DWORD *grfBINDF, + BINDINFO *pbindinfo); + HRESULT (__attribute__((__stdcall__)) *GetBindString)( + IInternetBindInfo *This, + ULONG ulStringType, + LPOLESTR *ppwzStr, + ULONG cEl, + ULONG *pcElFetched); +} IInternetBindInfoVtbl; +struct IInternetBindInfo { + IInternetBindInfoVtbl* lpVtbl; +}; +#define _LPIINTERNETBINDINFOEX +#define __IInternetBindInfoEx_INTERFACE_DEFINED__ +typedef IInternetBindInfoEx *LPIINTERNETBINDINFOEX; +extern const GUID IID_IInternetBindInfoEx; +typedef struct IInternetBindInfoExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetBindInfoEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetBindInfoEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetBindInfoEx *This); + HRESULT (__attribute__((__stdcall__)) *GetBindInfo)( + IInternetBindInfoEx *This, + DWORD *grfBINDF, + BINDINFO *pbindinfo); + HRESULT (__attribute__((__stdcall__)) *GetBindString)( + IInternetBindInfoEx *This, + ULONG ulStringType, + LPOLESTR *ppwzStr, + ULONG cEl, + ULONG *pcElFetched); + HRESULT (__attribute__((__stdcall__)) *GetBindInfoEx)( + IInternetBindInfoEx *This, + DWORD *grfBINDF, + BINDINFO *pbindinfo, + DWORD *grfBINDF2, + DWORD *pdwReserved); +} IInternetBindInfoExVtbl; +struct IInternetBindInfoEx { + IInternetBindInfoExVtbl* lpVtbl; +}; +#define _LPIINTERNETPROTOCOLROOT_DEFINED +#define __IInternetProtocolRoot_INTERFACE_DEFINED__ +typedef IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT; +typedef enum _tagPI_FLAGS { + PI_PARSE_URL = 0x1, + PI_FILTER_MODE = 0x2, + PI_FORCE_ASYNC = 0x4, + PI_USE_WORKERTHREAD = 0x8, + PI_MIMEVERIFICATION = 0x10, + PI_CLSIDLOOKUP = 0x20, + PI_DATAPROGRESS = 0x40, + PI_SYNCHRONOUS = 0x80, + PI_APARTMENTTHREADED = 0x100, + PI_CLASSINSTALL = 0x200, + PI_PASSONBINDCTX = 0x2000, + PI_NOMIMEHANDLER = 0x8000, + PI_LOADAPPDIRECT = 0x4000, + PD_FORCE_SWITCH = 0x10000, + PI_PREFERDEFAULTHANDLER = 0x20000 +} PI_FLAGS; +typedef struct _tagPROTOCOLDATA { + DWORD grfFlags; + DWORD dwState; + LPVOID pData; + ULONG cbData; +} PROTOCOLDATA; +typedef struct _tagStartParam { + IID iid; + IBindCtx *pIBindCtx; + IUnknown *pItf; +} StartParam; +extern const GUID IID_IInternetProtocolRoot; +typedef struct IInternetProtocolRootVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetProtocolRoot *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetProtocolRoot *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetProtocolRoot *This); + HRESULT (__attribute__((__stdcall__)) *Start)( + IInternetProtocolRoot *This, + LPCWSTR szUrl, + IInternetProtocolSink *pOIProtSink, + IInternetBindInfo *pOIBindInfo, + DWORD grfPI, + HANDLE_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *Continue)( + IInternetProtocolRoot *This, + PROTOCOLDATA *pProtocolData); + HRESULT (__attribute__((__stdcall__)) *Abort)( + IInternetProtocolRoot *This, + HRESULT hrReason, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *Terminate)( + IInternetProtocolRoot *This, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *Suspend)( + IInternetProtocolRoot *This); + HRESULT (__attribute__((__stdcall__)) *Resume)( + IInternetProtocolRoot *This); +} IInternetProtocolRootVtbl; +struct IInternetProtocolRoot { + IInternetProtocolRootVtbl* lpVtbl; +}; +#define _LPIINTERNETPROTOCOL_DEFINED +#define __IInternetProtocol_INTERFACE_DEFINED__ +typedef IInternetProtocol *LPIINTERNETPROTOCOL; +extern const GUID IID_IInternetProtocol; +typedef struct IInternetProtocolVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetProtocol *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetProtocol *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetProtocol *This); + HRESULT (__attribute__((__stdcall__)) *Start)( + IInternetProtocol *This, + LPCWSTR szUrl, + IInternetProtocolSink *pOIProtSink, + IInternetBindInfo *pOIBindInfo, + DWORD grfPI, + HANDLE_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *Continue)( + IInternetProtocol *This, + PROTOCOLDATA *pProtocolData); + HRESULT (__attribute__((__stdcall__)) *Abort)( + IInternetProtocol *This, + HRESULT hrReason, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *Terminate)( + IInternetProtocol *This, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *Suspend)( + IInternetProtocol *This); + HRESULT (__attribute__((__stdcall__)) *Resume)( + IInternetProtocol *This); + HRESULT (__attribute__((__stdcall__)) *Read)( + IInternetProtocol *This, + void *pv, + ULONG cb, + ULONG *pcbRead); + HRESULT (__attribute__((__stdcall__)) *Seek)( + IInternetProtocol *This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition); + HRESULT (__attribute__((__stdcall__)) *LockRequest)( + IInternetProtocol *This, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *UnlockRequest)( + IInternetProtocol *This); +} IInternetProtocolVtbl; +struct IInternetProtocol { + IInternetProtocolVtbl* lpVtbl; +}; +#define _LPIINTERNETPROTOCOLEX_DEFINED +#define __IInternetProtocolEx_INTERFACE_DEFINED__ +extern const GUID IID_IInternetProtocolEx; +typedef struct IInternetProtocolExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetProtocolEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetProtocolEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetProtocolEx *This); + HRESULT (__attribute__((__stdcall__)) *Start)( + IInternetProtocolEx *This, + LPCWSTR szUrl, + IInternetProtocolSink *pOIProtSink, + IInternetBindInfo *pOIBindInfo, + DWORD grfPI, + HANDLE_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *Continue)( + IInternetProtocolEx *This, + PROTOCOLDATA *pProtocolData); + HRESULT (__attribute__((__stdcall__)) *Abort)( + IInternetProtocolEx *This, + HRESULT hrReason, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *Terminate)( + IInternetProtocolEx *This, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *Suspend)( + IInternetProtocolEx *This); + HRESULT (__attribute__((__stdcall__)) *Resume)( + IInternetProtocolEx *This); + HRESULT (__attribute__((__stdcall__)) *Read)( + IInternetProtocolEx *This, + void *pv, + ULONG cb, + ULONG *pcbRead); + HRESULT (__attribute__((__stdcall__)) *Seek)( + IInternetProtocolEx *This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition); + HRESULT (__attribute__((__stdcall__)) *LockRequest)( + IInternetProtocolEx *This, + DWORD dwOptions); + HRESULT (__attribute__((__stdcall__)) *UnlockRequest)( + IInternetProtocolEx *This); + HRESULT (__attribute__((__stdcall__)) *StartEx)( + IInternetProtocolEx *This, + IUri *pUri, + IInternetProtocolSink *pOIProtSink, + IInternetBindInfo *pOIBindInfo, + DWORD grfPI, + HANDLE_PTR dwReserved); +} IInternetProtocolExVtbl; +struct IInternetProtocolEx { + IInternetProtocolExVtbl* lpVtbl; +}; +#define _LPIINTERNETPROTOCOLSINK_DEFINED +#define __IInternetProtocolSink_INTERFACE_DEFINED__ +typedef IInternetProtocolSink *LPIINTERNETPROTOCOLSINK; +extern const GUID IID_IInternetProtocolSink; +typedef struct IInternetProtocolSinkVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetProtocolSink *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetProtocolSink *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetProtocolSink *This); + HRESULT (__attribute__((__stdcall__)) *Switch)( + IInternetProtocolSink *This, + PROTOCOLDATA *pProtocolData); + HRESULT (__attribute__((__stdcall__)) *ReportProgress)( + IInternetProtocolSink *This, + ULONG ulStatusCode, + LPCWSTR szStatusText); + HRESULT (__attribute__((__stdcall__)) *ReportData)( + IInternetProtocolSink *This, + DWORD grfBSCF, + ULONG ulProgress, + ULONG ulProgressMax); + HRESULT (__attribute__((__stdcall__)) *ReportResult)( + IInternetProtocolSink *This, + HRESULT hrResult, + DWORD dwError, + LPCWSTR szResult); +} IInternetProtocolSinkVtbl; +struct IInternetProtocolSink { + IInternetProtocolSinkVtbl* lpVtbl; +}; +#define _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED +#define __IInternetProtocolSinkStackable_INTERFACE_DEFINED__ +typedef IInternetProtocolSinkStackable *LPIINTERNETPROTOCOLSINKStackable; +extern const GUID IID_IInternetProtocolSinkStackable; +typedef struct IInternetProtocolSinkStackableVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetProtocolSinkStackable *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetProtocolSinkStackable *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetProtocolSinkStackable *This); + HRESULT (__attribute__((__stdcall__)) *SwitchSink)( + IInternetProtocolSinkStackable *This, + IInternetProtocolSink *pOIProtSink); + HRESULT (__attribute__((__stdcall__)) *CommitSwitch)( + IInternetProtocolSinkStackable *This); + HRESULT (__attribute__((__stdcall__)) *RollbackSwitch)( + IInternetProtocolSinkStackable *This); +} IInternetProtocolSinkStackableVtbl; +struct IInternetProtocolSinkStackable { + IInternetProtocolSinkStackableVtbl* lpVtbl; +}; +#define _LPIINTERNETSESSION_DEFINED +#define __IInternetSession_INTERFACE_DEFINED__ +typedef IInternetSession *LPIINTERNETSESSION; +typedef enum _tagOIBDG_FLAGS { + OIBDG_APARTMENTTHREADED = 0x100, + OIBDG_DATAONLY = 0x1000 +} OIBDG_FLAGS; +extern const GUID IID_IInternetSession; +typedef struct IInternetSessionVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetSession *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetSession *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetSession *This); + HRESULT (__attribute__((__stdcall__)) *RegisterNameSpace)( + IInternetSession *This, + IClassFactory *pCF, + const IID *const rclsid, + LPCWSTR pwzProtocol, + ULONG cPatterns, + const LPCWSTR *ppwzPatterns, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *UnregisterNameSpace)( + IInternetSession *This, + IClassFactory *pCF, + LPCWSTR pszProtocol); + HRESULT (__attribute__((__stdcall__)) *RegisterMimeFilter)( + IInternetSession *This, + IClassFactory *pCF, + const IID *const rclsid, + LPCWSTR pwzType); + HRESULT (__attribute__((__stdcall__)) *UnregisterMimeFilter)( + IInternetSession *This, + IClassFactory *pCF, + LPCWSTR pwzType); + HRESULT (__attribute__((__stdcall__)) *CreateBinding)( + IInternetSession *This, + LPBC pBC, + LPCWSTR szUrl, + IUnknown *pUnkOuter, + IUnknown **ppUnk, + IInternetProtocol **ppOInetProt, + DWORD dwOption); + HRESULT (__attribute__((__stdcall__)) *SetSessionOption)( + IInternetSession *This, + DWORD dwOption, + LPVOID pBuffer, + DWORD dwBufferLength, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *GetSessionOption)( + IInternetSession *This, + DWORD dwOption, + LPVOID pBuffer, + DWORD *pdwBufferLength, + DWORD dwReserved); +} IInternetSessionVtbl; +struct IInternetSession { + IInternetSessionVtbl* lpVtbl; +}; +#define _LPIINTERNETTHREADSWITCH_DEFINED +#define __IInternetThreadSwitch_INTERFACE_DEFINED__ +typedef IInternetThreadSwitch *LPIINTERNETTHREADSWITCH; +extern const GUID IID_IInternetThreadSwitch; +typedef struct IInternetThreadSwitchVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetThreadSwitch *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetThreadSwitch *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetThreadSwitch *This); + HRESULT (__attribute__((__stdcall__)) *Prepare)( + IInternetThreadSwitch *This); + HRESULT (__attribute__((__stdcall__)) *Continue)( + IInternetThreadSwitch *This); +} IInternetThreadSwitchVtbl; +struct IInternetThreadSwitch { + IInternetThreadSwitchVtbl* lpVtbl; +}; +#define _LPIINTERNETPRIORITY_DEFINED +#define __IInternetPriority_INTERFACE_DEFINED__ +typedef IInternetPriority *LPIINTERNETPRIORITY; +extern const GUID IID_IInternetPriority; +typedef struct IInternetPriorityVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetPriority *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetPriority *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetPriority *This); + HRESULT (__attribute__((__stdcall__)) *SetPriority)( + IInternetPriority *This, + LONG nPriority); + HRESULT (__attribute__((__stdcall__)) *GetPriority)( + IInternetPriority *This, + LONG *pnPriority); +} IInternetPriorityVtbl; +struct IInternetPriority { + IInternetPriorityVtbl* lpVtbl; +}; +#define _LPIINTERNETPROTOCOLINFO_DEFINED +#define __IInternetProtocolInfo_INTERFACE_DEFINED__ +typedef IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO; +typedef enum _tagPARSEACTION { + PARSE_CANONICALIZE = 1, + PARSE_FRIENDLY = 2, + PARSE_SECURITY_URL = 3, + PARSE_ROOTDOCUMENT = 4, + PARSE_DOCUMENT = 5, + PARSE_ANCHOR = 6, + PARSE_ENCODE_IS_UNESCAPE = 7, + PARSE_DECODE_IS_ESCAPE = 8, + PARSE_PATH_FROM_URL = 9, + PARSE_URL_FROM_PATH = 10, + PARSE_MIME = 11, + PARSE_SERVER = 12, + PARSE_SCHEMA = 13, + PARSE_SITE = 14, + PARSE_DOMAIN = 15, + PARSE_LOCATION = 16, + PARSE_SECURITY_DOMAIN = 17, + PARSE_ESCAPE = 18, + PARSE_UNESCAPE = 19 +} PARSEACTION; +typedef enum _tagPSUACTION { + PSU_DEFAULT = 1, + PSU_SECURITY_URL_ONLY = 2 +} PSUACTION; +typedef enum _tagQUERYOPTION { + QUERY_EXPIRATION_DATE = 1, + QUERY_TIME_OF_LAST_CHANGE = 2, + QUERY_CONTENT_ENCODING = 3, + QUERY_CONTENT_TYPE = 4, + QUERY_REFRESH = 5, + QUERY_RECOMBINE = 6, + QUERY_CAN_NAVIGATE = 7, + QUERY_USES_NETWORK = 8, + QUERY_IS_CACHED = 9, + QUERY_IS_INSTALLEDENTRY = 10, + QUERY_IS_CACHED_OR_MAPPED = 11, + QUERY_USES_CACHE = 12, + QUERY_IS_SECURE = 13, + QUERY_IS_SAFE = 14, + QUERY_USES_HISTORYFOLDER = 15, + QUERY_IS_CACHED_AND_USABLE_OFFLINE = 16 +} QUERYOPTION; +extern const GUID IID_IInternetProtocolInfo; +typedef struct IInternetProtocolInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetProtocolInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetProtocolInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetProtocolInfo *This); + HRESULT (__attribute__((__stdcall__)) *ParseUrl)( + IInternetProtocolInfo *This, + LPCWSTR pwzUrl, + PARSEACTION ParseAction, + DWORD dwParseFlags, + LPWSTR pwzResult, + DWORD cchResult, + DWORD *pcchResult, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *CombineUrl)( + IInternetProtocolInfo *This, + LPCWSTR pwzBaseUrl, + LPCWSTR pwzRelativeUrl, + DWORD dwCombineFlags, + LPWSTR pwzResult, + DWORD cchResult, + DWORD *pcchResult, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *CompareUrl)( + IInternetProtocolInfo *This, + LPCWSTR pwzUrl1, + LPCWSTR pwzUrl2, + DWORD dwCompareFlags); + HRESULT (__attribute__((__stdcall__)) *QueryInfo)( + IInternetProtocolInfo *This, + LPCWSTR pwzUrl, + QUERYOPTION OueryOption, + DWORD dwQueryFlags, + LPVOID pBuffer, + DWORD cbBuffer, + DWORD *pcbBuf, + DWORD dwReserved); +} IInternetProtocolInfoVtbl; +struct IInternetProtocolInfo { + IInternetProtocolInfoVtbl* lpVtbl; +}; +#define PARSE_ENCODE PARSE_ENCODE_IS_UNESCAPE +#define PARSE_DECODE PARSE_DECODE_IS_ESCAPE +#define IOInet IInternet +#define IOInetBindInfo IInternetBindInfo +#define IOInetBindInfoEx IInternetBindInfoEx +#define IOInetProtocolRoot IInternetProtocolRoot +#define IOInetProtocol IInternetProtocol +#define IOInetProtocolEx IInternetProtocolEx +#define IOInetProtocolSink IInternetProtocolSink +#define IOInetProtocolInfo IInternetProtocolInfo +#define IOInetSession IInternetSession +#define IOInetPriority IInternetPriority +#define IOInetThreadSwitch IInternetThreadSwitch +#define IOInetProtocolSinkStackable IInternetProtocolSinkStackable +#define LPOINET LPIINTERNET +#define LPOINETPROTOCOLINFO LPIINTERNETPROTOCOLINFO +#define LPOINETBINDINFO LPIINTERNETBINDINFO +#define LPOINETPROTOCOLROOT LPIINTERNETPROTOCOLROOT +#define LPOINETPROTOCOL LPIINTERNETPROTOCOL +#define LPOINETPROTOCOLEX LPIINTERNETPROTOCOLEX +#define LPOINETPROTOCOLSINK LPIINTERNETPROTOCOLSINK +#define LPOINETSESSION LPIINTERNETSESSION +#define LPOINETTHREADSWITCH LPIINTERNETTHREADSWITCH +#define LPOINETPRIORITY LPIINTERNETPRIORITY +#define LPOINETPROTOCOLINFO LPIINTERNETPROTOCOLINFO +#define LPOINETPROTOCOLSINKSTACKABLE LPIINTERNETPROTOCOLSINKSTACKABLE +#define IID_IOInet IID_IInternet +#define IID_IOInetBindInfo IID_IInternetBindInfo +#define IID_IOInetBindInfoEx IID_IInternetBindInfoEx +#define IID_IOInetProtocolRoot IID_IInternetProtocolRoot +#define IID_IOInetProtocol IID_IInternetProtocol +#define IID_IOInetProtocolEx IID_IInternetProtocolEx +#define IID_IOInetProtocolSink IID_IInternetProtocolSink +#define IID_IOInetProtocolInfo IID_IInternetProtocolInfo +#define IID_IOInetSession IID_IInternetSession +#define IID_IOInetPriority IID_IInternetPriority +#define IID_IOInetThreadSwitch IID_IInternetThreadSwitch +#define IID_IOInetProtocolSinkStackable IID_IInternetProtocolSinkStackable +extern HRESULT __attribute__((__stdcall__)) CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD_PTR dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetCombineIUri (IUri *pBaseUri, IUri *pRelativeUri, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwFlags); +extern HRESULT __attribute__((__stdcall__)) CoInternetGetProtocolFlags(LPCWSTR pwzUrl, DWORD *pdwFlags, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOptions, DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD *pcbBuffer, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetGetSecurityUrl(LPCWSTR pwszUrl, LPWSTR *ppwszSecUrl, PSUACTION psuAction, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) AsyncInstallDistributionUnit(LPCWSTR szDistUnit, LPCWSTR szTYPE, LPCWSTR szExt, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szURL,IBindCtx *pbc, LPVOID pvReserved,DWORD flags); +extern HRESULT __attribute__((__stdcall__)) CoInternetGetSecurityUrlEx(IUri *pUri, IUri **ppSecUri, PSUACTION psuAction, DWORD_PTR dwReserved); +#define _INTERNETFEATURELIST_DEFINED +typedef enum _tagINTERNETFEATURELIST { + FEATURE_OBJECT_CACHING = 0, + FEATURE_ZONE_ELEVATION = 1, + FEATURE_MIME_HANDLING = 2, + FEATURE_MIME_SNIFFING = 3, + FEATURE_WINDOW_RESTRICTIONS = 4, + FEATURE_WEBOC_POPUPMANAGEMENT = 5, + FEATURE_BEHAVIORS = 6, + FEATURE_DISABLE_MK_PROTOCOL = 7, + FEATURE_LOCALMACHINE_LOCKDOWN = 8, + FEATURE_SECURITYBAND = 9, + FEATURE_RESTRICT_ACTIVEXINSTALL = 10, + FEATURE_VALIDATE_NAVIGATE_URL = 11, + FEATURE_RESTRICT_FILEDOWNLOAD = 12, + FEATURE_ADDON_MANAGEMENT = 13, + FEATURE_PROTOCOL_LOCKDOWN = 14, + FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15, + FEATURE_SAFE_BINDTOOBJECT = 16, + FEATURE_UNC_SAVEDFILECHECK = 17, + FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18, + FEATURE_TABBED_BROWSING = 19, + FEATURE_SSLUX = 20, + FEATURE_DISABLE_NAVIGATION_SOUNDS = 21, + FEATURE_DISABLE_LEGACY_COMPRESSION = 22, + FEATURE_FORCE_ADDR_AND_STATUS = 23, + FEATURE_XMLHTTP = 24, + FEATURE_DISABLE_TELNET_PROTOCOL = 25, + FEATURE_FEEDS = 26, + FEATURE_BLOCK_INPUT_PROMPTS = 27, + FEATURE_ENTRY_COUNT = 28 +} INTERNETFEATURELIST; +#define SET_FEATURE_ON_THREAD 0x1 +#define SET_FEATURE_ON_PROCESS 0x2 +#define SET_FEATURE_IN_REGISTRY 0x4 +#define SET_FEATURE_ON_THREAD_LOCALMACHINE 0x8 +#define SET_FEATURE_ON_THREAD_INTRANET 0x10 +#define SET_FEATURE_ON_THREAD_TRUSTED 0x20 +#define SET_FEATURE_ON_THREAD_INTERNET 0x40 +#define SET_FEATURE_ON_THREAD_RESTRICTED 0x80 +#define GET_FEATURE_FROM_THREAD 0x1 +#define GET_FEATURE_FROM_PROCESS 0x2 +#define GET_FEATURE_FROM_REGISTRY 0x4 +#define GET_FEATURE_FROM_THREAD_LOCALMACHINE 0x8 +#define GET_FEATURE_FROM_THREAD_INTRANET 0x10 +#define GET_FEATURE_FROM_THREAD_TRUSTED 0x20 +#define GET_FEATURE_FROM_THREAD_INTERNET 0x40 +#define GET_FEATURE_FROM_THREAD_RESTRICTED 0x80 +extern HRESULT __attribute__((__stdcall__)) CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, WINBOOL fEnable); +extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags); +extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, LPCWSTR szURL, IInternetSecurityManager *pSecMgr); +extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureEnabledForIUri(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, IUri *pIUri, IInternetSecurityManagerEx2 *pSecMgr); +extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWSTR szToURL, IInternetSecurityManager *pSecMgr, DWORD dwFlags); +extern HRESULT __attribute__((__stdcall__)) CopyStgMedium(const STGMEDIUM *pcstgmedSrc, STGMEDIUM *pstgmedDest); +extern HRESULT __attribute__((__stdcall__)) CopyBindInfo(const BINDINFO *pcbiSrc, BINDINFO *pbiDest); +extern void __attribute__((__stdcall__)) ReleaseBindInfo(BINDINFO *pbindinfo); +#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0011)) +#define INET_E_USE_DEFAULT_SETTING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0012)) +#define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLHANDLER +#define INET_E_QUERYOPTION_UNKNOWN _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0013)) +#define INET_E_REDIRECTING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014)) +#define OInetParseUrl CoInternetParseUrl +#define OInetCombineUrl CoInternetCombineUrl +#define OInetCombineUrlEx CoInternetCombineUrlEx +#define OInetCombineIUri CoInternetCombineIUri +#define OInetCompareUrl CoInternetCompareUrl +#define OInetQueryInfo CoInternetQueryInfo +#define OInetGetSession CoInternetGetSession +#define PROTOCOLFLAG_NO_PICS_CHECK 0x1 +extern HRESULT __attribute__((__stdcall__)) CoInternetCreateSecurityManager(IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved); +extern HRESULT __attribute__((__stdcall__)) CoInternetCreateZoneManager(IServiceProvider *pSP, IInternetZoneManager **ppZM, DWORD dwReserved); +extern const IID CLSID_InternetSecurityManager; +extern const IID CLSID_InternetZoneManager; +extern const IID CLSID_PersistentZoneIdentifier; +#define SID_SInternetSecurityManager IID_IInternetSecurityManager +#define SID_SInternetSecurityManagerEx IID_IInternetSecurityManagerEx +#define SID_SInternetSecurityManagerEx2 IID_IInternetSecurityManagerEx2 +#define SID_SInternetHostSecurityManager IID_IInternetHostSecurityManager +#define _LPINTERNETSECURITYMGRSITE_DEFINED +#define __IInternetSecurityMgrSite_INTERFACE_DEFINED__ +extern const GUID IID_IInternetSecurityMgrSite; +typedef struct IInternetSecurityMgrSiteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetSecurityMgrSite *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetSecurityMgrSite *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetSecurityMgrSite *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IInternetSecurityMgrSite *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *EnableModeless)( + IInternetSecurityMgrSite *This, + WINBOOL fEnable); +} IInternetSecurityMgrSiteVtbl; +struct IInternetSecurityMgrSite { + IInternetSecurityMgrSiteVtbl* lpVtbl; +}; +#define _LPINTERNETSECURITYMANANGER_DEFINED +#define __IInternetSecurityManager_INTERFACE_DEFINED__ +#define MUTZ_NOSAVEDFILECHECK 0x1 +#define MUTZ_ISFILE 0x2 +#define MUTZ_ACCEPT_WILDCARD_SCHEME 0x80 +#define MUTZ_ENFORCERESTRICTED 0x100 +#define MUTZ_RESERVED 0x200 +#define MUTZ_REQUIRESAVEDFILECHECK 0x400 +#define MUTZ_DONT_UNESCAPE 0x800 +#define MUTZ_DONT_USE_CACHE 0x1000 +#define MUTZ_FORCE_INTRANET_FLAGS 0x2000 +#define MUTZ_IGNORE_ZONE_MAPPINGS 0x4000 +#define MAX_SIZE_SECURITY_ID 512 +typedef enum __WIDL_urlmon_generated_name_0000001B { + PUAF_DEFAULT = 0x0, + PUAF_NOUI = 0x1, + PUAF_ISFILE = 0x2, + PUAF_WARN_IF_DENIED = 0x4, + PUAF_FORCEUI_FOREGROUND = 0x8, + PUAF_CHECK_TIFS = 0x10, + PUAF_DONTCHECKBOXINDIALOG = 0x20, + PUAF_TRUSTED = 0x40, + PUAF_ACCEPT_WILDCARD_SCHEME = 0x80, + PUAF_ENFORCERESTRICTED = 0x100, + PUAF_NOSAVEDFILECHECK = 0x200, + PUAF_REQUIRESAVEDFILECHECK = 0x400, + PUAF_DONT_USE_CACHE = 0x1000, + PUAF_RESERVED1 = 0x2000, + PUAF_RESERVED2 = 0x4000, + PUAF_LMZ_UNLOCKED = 0x10000, + PUAF_LMZ_LOCKED = 0x20000, + PUAF_DEFAULTZONEPOL = 0x40000, + PUAF_NPL_USE_LOCKED_IF_RESTRICTED = 0x80000, + PUAF_NOUIIFLOCKED = 0x100000, + PUAF_DRAGPROTOCOLCHECK = 0x200000 +} PUAF; +typedef enum __WIDL_urlmon_generated_name_0000001C { + PUAFOUT_DEFAULT = 0x0, + PUAFOUT_ISLOCKZONEPOLICY = 0x1 +} PUAFOUT; +typedef enum __WIDL_urlmon_generated_name_0000001D { + SZM_CREATE = 0x0, + SZM_DELETE = 0x1 +} SZM_FLAGS; +extern const GUID IID_IInternetSecurityManager; +typedef struct IInternetSecurityManagerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetSecurityManager *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetSecurityManager *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetSecurityManager *This); + HRESULT (__attribute__((__stdcall__)) *SetSecuritySite)( + IInternetSecurityManager *This, + IInternetSecurityMgrSite *pSite); + HRESULT (__attribute__((__stdcall__)) *GetSecuritySite)( + IInternetSecurityManager *This, + IInternetSecurityMgrSite **ppSite); + HRESULT (__attribute__((__stdcall__)) *MapUrlToZone)( + IInternetSecurityManager *This, + LPCWSTR pwszUrl, + DWORD *pdwZone, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetSecurityId)( + IInternetSecurityManager *This, + LPCWSTR pwszUrl, + BYTE *pbSecurityId, + DWORD *pcbSecurityId, + DWORD_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)( + IInternetSecurityManager *This, + LPCWSTR pwszUrl, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwFlags, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)( + IInternetSecurityManager *This, + LPCWSTR pwszUrl, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *SetZoneMapping)( + IInternetSecurityManager *This, + DWORD dwZone, + LPCWSTR lpszPattern, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneMappings)( + IInternetSecurityManager *This, + DWORD dwZone, + IEnumString **ppenumString, + DWORD dwFlags); +} IInternetSecurityManagerVtbl; +struct IInternetSecurityManager { + IInternetSecurityManagerVtbl* lpVtbl; +}; +#define _LPINTERNETSECURITYMANANGEREX_DEFINED +#define __IInternetSecurityManagerEx_INTERFACE_DEFINED__ +extern const GUID IID_IInternetSecurityManagerEx; +typedef struct IInternetSecurityManagerExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetSecurityManagerEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetSecurityManagerEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetSecurityManagerEx *This); + HRESULT (__attribute__((__stdcall__)) *SetSecuritySite)( + IInternetSecurityManagerEx *This, + IInternetSecurityMgrSite *pSite); + HRESULT (__attribute__((__stdcall__)) *GetSecuritySite)( + IInternetSecurityManagerEx *This, + IInternetSecurityMgrSite **ppSite); + HRESULT (__attribute__((__stdcall__)) *MapUrlToZone)( + IInternetSecurityManagerEx *This, + LPCWSTR pwszUrl, + DWORD *pdwZone, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetSecurityId)( + IInternetSecurityManagerEx *This, + LPCWSTR pwszUrl, + BYTE *pbSecurityId, + DWORD *pcbSecurityId, + DWORD_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)( + IInternetSecurityManagerEx *This, + LPCWSTR pwszUrl, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwFlags, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)( + IInternetSecurityManagerEx *This, + LPCWSTR pwszUrl, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *SetZoneMapping)( + IInternetSecurityManagerEx *This, + DWORD dwZone, + LPCWSTR lpszPattern, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneMappings)( + IInternetSecurityManagerEx *This, + DWORD dwZone, + IEnumString **ppenumString, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *ProcessUrlActionEx)( + IInternetSecurityManagerEx *This, + LPCWSTR pwszUrl, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwFlags, + DWORD dwReserved, + DWORD *pdwOutFlags); +} IInternetSecurityManagerExVtbl; +struct IInternetSecurityManagerEx { + IInternetSecurityManagerExVtbl* lpVtbl; +}; +#define _LPINTERNETSECURITYMANANGEREx2_DEFINED +#define __IInternetSecurityManagerEx2_INTERFACE_DEFINED__ +extern const GUID IID_IInternetSecurityManagerEx2; +typedef struct IInternetSecurityManagerEx2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetSecurityManagerEx2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetSecurityManagerEx2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetSecurityManagerEx2 *This); + HRESULT (__attribute__((__stdcall__)) *SetSecuritySite)( + IInternetSecurityManagerEx2 *This, + IInternetSecurityMgrSite *pSite); + HRESULT (__attribute__((__stdcall__)) *GetSecuritySite)( + IInternetSecurityManagerEx2 *This, + IInternetSecurityMgrSite **ppSite); + HRESULT (__attribute__((__stdcall__)) *MapUrlToZone)( + IInternetSecurityManagerEx2 *This, + LPCWSTR pwszUrl, + DWORD *pdwZone, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetSecurityId)( + IInternetSecurityManagerEx2 *This, + LPCWSTR pwszUrl, + BYTE *pbSecurityId, + DWORD *pcbSecurityId, + DWORD_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)( + IInternetSecurityManagerEx2 *This, + LPCWSTR pwszUrl, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwFlags, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)( + IInternetSecurityManagerEx2 *This, + LPCWSTR pwszUrl, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *SetZoneMapping)( + IInternetSecurityManagerEx2 *This, + DWORD dwZone, + LPCWSTR lpszPattern, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneMappings)( + IInternetSecurityManagerEx2 *This, + DWORD dwZone, + IEnumString **ppenumString, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *ProcessUrlActionEx)( + IInternetSecurityManagerEx2 *This, + LPCWSTR pwszUrl, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwFlags, + DWORD dwReserved, + DWORD *pdwOutFlags); + HRESULT (__attribute__((__stdcall__)) *MapUrlToZoneEx2)( + IInternetSecurityManagerEx2 *This, + IUri *pUri, + DWORD *pdwZone, + DWORD dwFlags, + LPWSTR *ppwszMappedUrl, + DWORD *pdwOutFlags); + HRESULT (__attribute__((__stdcall__)) *ProcessUrlActionEx2)( + IInternetSecurityManagerEx2 *This, + IUri *pUri, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwFlags, + DWORD_PTR dwReserved, + DWORD *pdwOutFlags); + HRESULT (__attribute__((__stdcall__)) *GetSecurityIdEx2)( + IInternetSecurityManagerEx2 *This, + IUri *pUri, + BYTE *pbSecurityId, + DWORD *pcbSecurityId, + DWORD_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicyEx2)( + IInternetSecurityManagerEx2 *This, + IUri *pUri, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD_PTR dwReserved); +} IInternetSecurityManagerEx2Vtbl; +struct IInternetSecurityManagerEx2 { + IInternetSecurityManagerEx2Vtbl* lpVtbl; +}; +#define __IZoneIdentifier_INTERFACE_DEFINED__ +extern const GUID IID_IZoneIdentifier; +typedef struct IZoneIdentifierVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IZoneIdentifier *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IZoneIdentifier *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IZoneIdentifier *This); + HRESULT (__attribute__((__stdcall__)) *GetId)( + IZoneIdentifier *This, + DWORD *pdwZone); + HRESULT (__attribute__((__stdcall__)) *SetId)( + IZoneIdentifier *This, + DWORD dwZone); + HRESULT (__attribute__((__stdcall__)) *Remove)( + IZoneIdentifier *This); +} IZoneIdentifierVtbl; +struct IZoneIdentifier { + IZoneIdentifierVtbl* lpVtbl; +}; +#define _LPINTERNETHOSTSECURITYMANANGER_DEFINED +#define __IInternetHostSecurityManager_INTERFACE_DEFINED__ +extern const GUID IID_IInternetHostSecurityManager; +typedef struct IInternetHostSecurityManagerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetHostSecurityManager *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetHostSecurityManager *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetHostSecurityManager *This); + HRESULT (__attribute__((__stdcall__)) *GetSecurityId)( + IInternetHostSecurityManager *This, + BYTE *pbSecurityId, + DWORD *pcbSecurityId, + DWORD_PTR dwReserved); + HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)( + IInternetHostSecurityManager *This, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwFlags, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)( + IInternetHostSecurityManager *This, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + BYTE *pContext, + DWORD cbContext, + DWORD dwReserved); +} IInternetHostSecurityManagerVtbl; +struct IInternetHostSecurityManager { + IInternetHostSecurityManagerVtbl* lpVtbl; +}; +#define URLACTION_MIN 0x1000 +#define URLACTION_DOWNLOAD_MIN 0x1000 +#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX 0x1001 +#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX 0x1004 +#define URLACTION_DOWNLOAD_CURR_MAX 0x1004 +#define URLACTION_DOWNLOAD_MAX 0x11FF +#define URLACTION_ACTIVEX_MIN 0x1200 +#define URLACTION_ACTIVEX_RUN 0x1200 +#define URLPOLICY_ACTIVEX_CHECK_LIST 0x10000 +#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY 0x1201 +#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY 0x1202 +#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY 0x1203 +#define URLACTION_SCRIPT_OVERRIDE_SAFETY 0x1401 +#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY 0x1204 +#define URLACTION_ACTIVEX_TREATASUNTRUSTED 0x1205 +#define URLACTION_ACTIVEX_NO_WEBOC_SCRIPT 0x1206 +#define URLACTION_ACTIVEX_OVERRIDE_REPURPOSEDETECTION 0x1207 +#define URLACTION_ACTIVEX_OVERRIDE_OPTIN 0x1208 +#define URLACTION_ACTIVEX_SCRIPTLET_RUN 0x1209 +#define URLACTION_ACTIVEX_DYNSRC_VIDEO_AND_ANIMATION 0x120A +#define URLACTION_ACTIVEX_OVERRIDE_DOMAINLIST 0x120B +#define URLACTION_ACTIVEX_CURR_MAX 0x120B +#define URLACTION_ACTIVEX_MAX 0x13ff +#define URLACTION_SCRIPT_MIN 0x1400 +#define URLACTION_SCRIPT_RUN 0x1400 +#define URLACTION_SCRIPT_JAVA_USE 0x1402 +#define URLACTION_SCRIPT_SAFE_ACTIVEX 0x1405 +#define URLACTION_CROSS_DOMAIN_DATA 0x1406 +#define URLACTION_SCRIPT_PASTE 0x1407 +#define URLACTION_ALLOW_XDOMAIN_SUBFRAME_RESIZE 0x1408 +#define URLACTION_SCRIPT_XSSFILTER 0x1409 +#define URLACTION_SCRIPT_NAVIGATE 0x140A +#define URLACTION_PLUGGABLE_PROTOCOL_XHR 0x140B +#define URLACTION_SCRIPT_CURR_MAX 0x140B +#define URLACTION_SCRIPT_MAX 0x15ff +#define URLACTION_HTML_MIN 0x1600 +#define URLACTION_HTML_SUBMIT_FORMS 0x1601 +#define URLACTION_HTML_SUBMIT_FORMS_FROM 0x1602 +#define URLACTION_HTML_SUBMIT_FORMS_TO 0x1603 +#define URLACTION_HTML_FONT_DOWNLOAD 0x1604 +#define URLACTION_HTML_JAVA_RUN 0x1605 +#define URLACTION_HTML_USERDATA_SAVE 0x1606 +#define URLACTION_HTML_SUBFRAME_NAVIGATE 0x1607 +#define URLACTION_HTML_META_REFRESH 0x1608 +#define URLACTION_HTML_MIXED_CONTENT 0x1609 +#define URLACTION_HTML_INCLUDE_FILE_PATH 0x160A +#define URLACTION_HTML_ALLOW_INJECTED_DYNAMIC_HTML 0x160B +#define URLACTION_HTML_REQUIRE_UTF8_DOCUMENT_CODEPAGE 0x160C +#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_CANVAS 0x160D +#define URLACTION_HTML_ALLOW_WINDOW_CLOSE 0x160E +#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_WEBWORKER 0x160F +#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_TEXTTRACK 0x1610 +#define URLACTION_HTML_ALLOW_INDEXEDDB 0x1611 +#define URLACTION_HTML_MAX 0x17ff +#define URLACTION_SHELL_MIN 0x1800 +#define URLACTION_SHELL_INSTALL_DTITEMS 0x1800 +#define URLACTION_SHELL_MOVE_OR_COPY 0x1802 +#define URLACTION_SHELL_FILE_DOWNLOAD 0x1803 +#define URLACTION_SHELL_VERB 0x1804 +#define URLACTION_SHELL_WEBVIEW_VERB 0x1805 +#define URLACTION_SHELL_SHELLEXECUTE 0x1806 +#define URLACTION_SHELL_EXECUTE_HIGHRISK 0x1806 +#define URLACTION_SHELL_EXECUTE_MODRISK 0x1807 +#define URLACTION_SHELL_EXECUTE_LOWRISK 0x1808 +#define URLACTION_SHELL_POPUPMGR 0x1809 +#define URLACTION_SHELL_RTF_OBJECTS_LOAD 0x180A +#define URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY 0x180B +#define URLACTION_SHELL_EXTENSIONSECURITY 0x180C +#define URLACTION_SHELL_SECURE_DRAGSOURCE 0x180D +#define URLACTION_SHELL_CURR_MAX 0x1811 +#define URLACTION_SHELL_MAX 0x19ff +#define URLACTION_NETWORK_MIN 0x1A00 +#define URLACTION_CREDENTIALS_USE 0x1A00 +#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK 0x0 +#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER 0x10000 +#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT 0x20000 +#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY 0x30000 +#define URLACTION_AUTHENTICATE_CLIENT 0x1A01 +#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK 0x0 +#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE 0x10000 +#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY 0x30000 +#define URLACTION_COOKIES 0x1A02 +#define URLACTION_COOKIES_SESSION 0x1A03 +#define URLACTION_CLIENT_CERT_PROMPT 0x1A04 +#define URLACTION_COOKIES_THIRD_PARTY 0x1A05 +#define URLACTION_COOKIES_SESSION_THIRD_PARTY 0x1A06 +#define URLACTION_COOKIES_ENABLED 0x1A10 +#define URLACTION_NETWORK_CURR_MAX 0x1A10 +#define URLACTION_NETWORK_MAX 0x1Bff +#define URLACTION_JAVA_MIN 0x1C00 +#define URLACTION_JAVA_PERMISSIONS 0x1C00 +#define URLPOLICY_JAVA_PROHIBIT 0x0 +#define URLPOLICY_JAVA_HIGH 0x10000 +#define URLPOLICY_JAVA_MEDIUM 0x20000 +#define URLPOLICY_JAVA_LOW 0x30000 +#define URLPOLICY_JAVA_CUSTOM 0x800000 +#define URLACTION_JAVA_CURR_MAX 0x1C00 +#define URLACTION_JAVA_MAX 0x1Cff +#define URLACTION_INFODELIVERY_MIN 0x1D00 +#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS 0x1D00 +#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS 0x1D01 +#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS 0x1D02 +#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS 0x1D03 +#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS 0x1D04 +#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS 0x1D05 +#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING 0x1D06 +#define URLACTION_INFODELIVERY_CURR_MAX 0x1D06 +#define URLACTION_INFODELIVERY_MAX 0x1Dff +#define URLACTION_CHANNEL_SOFTDIST_MIN 0x1E00 +#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS 0x1E05 +#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT 0x10000 +#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE 0x20000 +#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL 0x30000 +#define URLACTION_CHANNEL_SOFTDIST_MAX 0x1Eff +#define URLACTION_BEHAVIOR_MIN 0x2000 +#define URLACTION_BEHAVIOR_RUN 0x2000 +#define URLPOLICY_BEHAVIOR_CHECK_LIST 0x10000 +#define URLACTION_FEATURE_MIN 0x2100 +#define URLACTION_FEATURE_MIME_SNIFFING 0x2100 +#define URLACTION_FEATURE_ZONE_ELEVATION 0x2101 +#define URLACTION_FEATURE_WINDOW_RESTRICTIONS 0x2102 +#define URLACTION_FEATURE_SCRIPT_STATUS_BAR 0x2103 +#define URLACTION_FEATURE_FORCE_ADDR_AND_STATUS 0x2104 +#define URLACTION_FEATURE_BLOCK_INPUT_PROMPTS 0x2105 +#define URLACTION_FEATURE_DATA_BINDING 0x2106 +#define URLACTION_FEATURE_CROSSDOMAIN_FOCUS_CHANGE 0x2107 +#define URLACTION_AUTOMATIC_DOWNLOAD_UI_MIN 0x2200 +#define URLACTION_AUTOMATIC_DOWNLOAD_UI 0x2200 +#define URLACTION_AUTOMATIC_ACTIVEX_UI 0x2201 +#define URLACTION_ALLOW_RESTRICTEDPROTOCOLS 0x2300 +#define URLACTION_ALLOW_APEVALUATION 0x2301 +#define URLACTION_ALLOW_XHR_EVALUATION 0x2302 +#define URLACTION_WINDOWS_BROWSER_APPLICATIONS 0x2400 +#define URLACTION_XPS_DOCUMENTS 0x2401 +#define URLACTION_LOOSE_XAML 0x2402 +#define URLACTION_LOWRIGHTS 0x2500 +#define URLACTION_WINFX_SETUP 0x2600 +#define URLACTION_INPRIVATE_BLOCKING 0x2700 +#define URLACTION_ALLOW_AUDIO_VIDEO 0x2701 +#define URLACTION_ALLOW_ACTIVEX_FILTERING 0x2702 +#define URLACTION_ALLOW_STRUCTURED_STORAGE_SNIFFING 0x2703 +#define URLACTION_ALLOW_AUDIO_VIDEO_PLUGINS 0x2704 +#define URLACTION_ALLOW_ZONE_ELEVATION_VIA_OPT_OUT 0x2705 +#define URLACTION_ALLOW_ZONE_ELEVATION_OPT_OUT_ADDITION 0x2706 +#define URLACTION_ALLOW_CROSSDOMAIN_DROP_WITHIN_WINDOW 0x2708 +#define URLACTION_ALLOW_CROSSDOMAIN_DROP_ACROSS_WINDOWS 0x2709 +#define URLACTION_ALLOW_CROSSDOMAIN_APPCACHE_MANIFEST 0x270A +#define URLACTION_ALLOW_RENDER_LEGACY_DXTFILTERS 0x270B +#define URLPOLICY_ALLOW 0x0 +#define URLPOLICY_QUERY 0x1 +#define URLPOLICY_DISALLOW 0x3 +#define URLPOLICY_NOTIFY_ON_ALLOW 0x10 +#define URLPOLICY_NOTIFY_ON_DISALLOW 0x20 +#define URLPOLICY_LOG_ON_ALLOW 0x40 +#define URLPOLICY_LOG_ON_DISALLOW 0x80 +#define URLPOLICY_MASK_PERMISSIONS 0x0f +#define GetUrlPolicyPermissions(dw) (dw & URLPOLICY_MASK_PERMISSIONS) +#define SetUrlPolicyPermissions(dw,dw2) ((dw) = ((dw) & ~(URLPOLICY_MASK_PERMISSIONS)) | (dw2)) +#define URLPOLICY_DONTCHECKDLGBOX 0x100 +extern const GUID GUID_CUSTOM_LOCALMACHINEZONEUNLOCKED; +#define _LPINTERNETZONEMANAGER_DEFINED +#define __IInternetZoneManager_INTERFACE_DEFINED__ +typedef IInternetZoneManager *LPURLZONEMANAGER; +typedef enum tagURLZONE { + URLZONE_INVALID = -1, + URLZONE_PREDEFINED_MIN = 0, + URLZONE_LOCAL_MACHINE = 0, + URLZONE_INTRANET = 1, + URLZONE_TRUSTED = 2, + URLZONE_INTERNET = 3, + URLZONE_UNTRUSTED = 4, + URLZONE_PREDEFINED_MAX = 999, + URLZONE_USER_MIN = 1000, + URLZONE_USER_MAX = 10000 +} URLZONE; +#define URLZONE_ESC_FLAG 0x100 +typedef enum tagURLTEMPLATE { + URLTEMPLATE_CUSTOM = 0x0, + URLTEMPLATE_PREDEFINED_MIN = 0x10000, + URLTEMPLATE_LOW = 0x10000, + URLTEMPLATE_MEDLOW = 0x10500, + URLTEMPLATE_MEDIUM = 0x11000, + URLTEMPLATE_MEDHIGH = 0x11500, + URLTEMPLATE_HIGH = 0x12000, + URLTEMPLATE_PREDEFINED_MAX = 0x20000 +} URLTEMPLATE; +enum { + MAX_ZONE_PATH = 260, + MAX_ZONE_DESCRIPTION = 200 +}; +typedef enum __WIDL_urlmon_generated_name_0000001E { + ZAFLAGS_CUSTOM_EDIT = 0x1, + ZAFLAGS_ADD_SITES = 0x2, + ZAFLAGS_REQUIRE_VERIFICATION = 0x4, + ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x8, + ZAFLAGS_INCLUDE_INTRANET_SITES = 0x10, + ZAFLAGS_NO_UI = 0x20, + ZAFLAGS_SUPPORTS_VERIFICATION = 0x40, + ZAFLAGS_UNC_AS_INTRANET = 0x80, + ZAFLAGS_DETECT_INTRANET = 0x100, + ZAFLAGS_USE_LOCKED_ZONES = 0x10000, + ZAFLAGS_VERIFY_TEMPLATE_SETTINGS = 0x20000, + ZAFLAGS_NO_CACHE = 0x40000 +} ZAFLAGS; +typedef struct _ZONEATTRIBUTES { + ULONG cbSize; + WCHAR szDisplayName[260]; + WCHAR szDescription[200]; + WCHAR szIconPath[260]; + DWORD dwTemplateMinLevel; + DWORD dwTemplateRecommended; + DWORD dwTemplateCurrentLevel; + DWORD dwFlags; +} ZONEATTRIBUTES; +typedef struct _ZONEATTRIBUTES *LPZONEATTRIBUTES; +typedef enum _URLZONEREG { + URLZONEREG_DEFAULT = 0, + URLZONEREG_HKLM = 1, + URLZONEREG_HKCU = 2 +} URLZONEREG; +extern const GUID IID_IInternetZoneManager; +typedef struct IInternetZoneManagerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetZoneManager *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetZoneManager *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetZoneManager *This); + HRESULT (__attribute__((__stdcall__)) *GetZoneAttributes)( + IInternetZoneManager *This, + DWORD dwZone, + ZONEATTRIBUTES *pZoneAttributes); + HRESULT (__attribute__((__stdcall__)) *SetZoneAttributes)( + IInternetZoneManager *This, + DWORD dwZone, + ZONEATTRIBUTES *pZoneAttributes); + HRESULT (__attribute__((__stdcall__)) *GetZoneCustomPolicy)( + IInternetZoneManager *This, + DWORD dwZone, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *SetZoneCustomPolicy)( + IInternetZoneManager *This, + DWORD dwZone, + const GUID *const guidKey, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicy)( + IInternetZoneManager *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicy)( + IInternetZoneManager *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *PromptAction)( + IInternetZoneManager *This, + DWORD dwAction, + HWND hwndParent, + LPCWSTR pwszUrl, + LPCWSTR pwszText, + DWORD dwPromptFlags); + HRESULT (__attribute__((__stdcall__)) *LogAction)( + IInternetZoneManager *This, + DWORD dwAction, + LPCWSTR pwszUrl, + LPCWSTR pwszText, + DWORD dwLogFlags); + HRESULT (__attribute__((__stdcall__)) *CreateZoneEnumerator)( + IInternetZoneManager *This, + DWORD *pdwEnum, + DWORD *pdwCount, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneAt)( + IInternetZoneManager *This, + DWORD dwEnum, + DWORD dwIndex, + DWORD *pdwZone); + HRESULT (__attribute__((__stdcall__)) *DestroyZoneEnumerator)( + IInternetZoneManager *This, + DWORD dwEnum); + HRESULT (__attribute__((__stdcall__)) *CopyTemplatePoliciesToZone)( + IInternetZoneManager *This, + DWORD dwTemplate, + DWORD dwZone, + DWORD dwReserved); +} IInternetZoneManagerVtbl; +struct IInternetZoneManager { + IInternetZoneManagerVtbl* lpVtbl; +}; +#define _LPINTERNETZONEMANAGEREX_DEFINED +#define __IInternetZoneManagerEx_INTERFACE_DEFINED__ +extern const GUID IID_IInternetZoneManagerEx; +typedef struct IInternetZoneManagerExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetZoneManagerEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetZoneManagerEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetZoneManagerEx *This); + HRESULT (__attribute__((__stdcall__)) *GetZoneAttributes)( + IInternetZoneManagerEx *This, + DWORD dwZone, + ZONEATTRIBUTES *pZoneAttributes); + HRESULT (__attribute__((__stdcall__)) *SetZoneAttributes)( + IInternetZoneManagerEx *This, + DWORD dwZone, + ZONEATTRIBUTES *pZoneAttributes); + HRESULT (__attribute__((__stdcall__)) *GetZoneCustomPolicy)( + IInternetZoneManagerEx *This, + DWORD dwZone, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *SetZoneCustomPolicy)( + IInternetZoneManagerEx *This, + DWORD dwZone, + const GUID *const guidKey, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicy)( + IInternetZoneManagerEx *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicy)( + IInternetZoneManagerEx *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *PromptAction)( + IInternetZoneManagerEx *This, + DWORD dwAction, + HWND hwndParent, + LPCWSTR pwszUrl, + LPCWSTR pwszText, + DWORD dwPromptFlags); + HRESULT (__attribute__((__stdcall__)) *LogAction)( + IInternetZoneManagerEx *This, + DWORD dwAction, + LPCWSTR pwszUrl, + LPCWSTR pwszText, + DWORD dwLogFlags); + HRESULT (__attribute__((__stdcall__)) *CreateZoneEnumerator)( + IInternetZoneManagerEx *This, + DWORD *pdwEnum, + DWORD *pdwCount, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneAt)( + IInternetZoneManagerEx *This, + DWORD dwEnum, + DWORD dwIndex, + DWORD *pdwZone); + HRESULT (__attribute__((__stdcall__)) *DestroyZoneEnumerator)( + IInternetZoneManagerEx *This, + DWORD dwEnum); + HRESULT (__attribute__((__stdcall__)) *CopyTemplatePoliciesToZone)( + IInternetZoneManagerEx *This, + DWORD dwTemplate, + DWORD dwZone, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicyEx)( + IInternetZoneManagerEx *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicyEx)( + IInternetZoneManagerEx *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg, + DWORD dwFlags); +} IInternetZoneManagerExVtbl; +struct IInternetZoneManagerEx { + IInternetZoneManagerExVtbl* lpVtbl; +}; +#define _LPINTERNETZONEMANAGEREX2_DEFINED +#define SECURITY_IE_STATE_GREEN 0x0 +#define SECURITY_IE_STATE_RED 0x1 +#define __IInternetZoneManagerEx2_INTERFACE_DEFINED__ +extern const GUID IID_IInternetZoneManagerEx2; +typedef struct IInternetZoneManagerEx2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IInternetZoneManagerEx2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IInternetZoneManagerEx2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IInternetZoneManagerEx2 *This); + HRESULT (__attribute__((__stdcall__)) *GetZoneAttributes)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + ZONEATTRIBUTES *pZoneAttributes); + HRESULT (__attribute__((__stdcall__)) *SetZoneAttributes)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + ZONEATTRIBUTES *pZoneAttributes); + HRESULT (__attribute__((__stdcall__)) *GetZoneCustomPolicy)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + const GUID *const guidKey, + BYTE **ppPolicy, + DWORD *pcbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *SetZoneCustomPolicy)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + const GUID *const guidKey, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicy)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicy)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg); + HRESULT (__attribute__((__stdcall__)) *PromptAction)( + IInternetZoneManagerEx2 *This, + DWORD dwAction, + HWND hwndParent, + LPCWSTR pwszUrl, + LPCWSTR pwszText, + DWORD dwPromptFlags); + HRESULT (__attribute__((__stdcall__)) *LogAction)( + IInternetZoneManagerEx2 *This, + DWORD dwAction, + LPCWSTR pwszUrl, + LPCWSTR pwszText, + DWORD dwLogFlags); + HRESULT (__attribute__((__stdcall__)) *CreateZoneEnumerator)( + IInternetZoneManagerEx2 *This, + DWORD *pdwEnum, + DWORD *pdwCount, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneAt)( + IInternetZoneManagerEx2 *This, + DWORD dwEnum, + DWORD dwIndex, + DWORD *pdwZone); + HRESULT (__attribute__((__stdcall__)) *DestroyZoneEnumerator)( + IInternetZoneManagerEx2 *This, + DWORD dwEnum); + HRESULT (__attribute__((__stdcall__)) *CopyTemplatePoliciesToZone)( + IInternetZoneManagerEx2 *This, + DWORD dwTemplate, + DWORD dwZone, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicyEx)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicyEx)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + DWORD dwAction, + BYTE *pPolicy, + DWORD cbPolicy, + URLZONEREG urlZoneReg, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneAttributesEx)( + IInternetZoneManagerEx2 *This, + DWORD dwZone, + ZONEATTRIBUTES *pZoneAttributes, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetZoneSecurityState)( + IInternetZoneManagerEx2 *This, + DWORD dwZoneIndex, + WINBOOL fRespectPolicy, + LPDWORD pdwState, + WINBOOL *pfPolicyEncountered); + HRESULT (__attribute__((__stdcall__)) *GetIESecurityState)( + IInternetZoneManagerEx2 *This, + WINBOOL fRespectPolicy, + LPDWORD pdwState, + WINBOOL *pfPolicyEncountered, + WINBOOL fNoCache); + HRESULT (__attribute__((__stdcall__)) *FixUnsecureSettings)( + IInternetZoneManagerEx2 *This); +} IInternetZoneManagerEx2Vtbl; +struct IInternetZoneManagerEx2 { + IInternetZoneManagerEx2Vtbl* lpVtbl; +}; +extern const IID CLSID_SoftDistExt; +#define _LPSOFTDISTEXT_DEFINED +#define SOFTDIST_FLAG_USAGE_EMAIL 0x1 +#define SOFTDIST_FLAG_USAGE_PRECACHE 0x2 +#define SOFTDIST_FLAG_USAGE_AUTOINSTALL 0x4 +#define SOFTDIST_FLAG_DELETE_SUBSCRIPTION 0x8 +#define SOFTDIST_ADSTATE_NONE 0x0 +#define SOFTDIST_ADSTATE_AVAILABLE 0x1 +#define SOFTDIST_ADSTATE_DOWNLOADED 0x2 +#define SOFTDIST_ADSTATE_INSTALLED 0x3 +typedef struct _tagCODEBASEHOLD { + ULONG cbSize; + LPWSTR szDistUnit; + LPWSTR szCodeBase; + DWORD dwVersionMS; + DWORD dwVersionLS; + DWORD dwStyle; +} CODEBASEHOLD; +typedef struct _tagCODEBASEHOLD *LPCODEBASEHOLD; +typedef struct _tagSOFTDISTINFO { + ULONG cbSize; + DWORD dwFlags; + DWORD dwAdState; + LPWSTR szTitle; + LPWSTR szAbstract; + LPWSTR szHREF; + DWORD dwInstalledVersionMS; + DWORD dwInstalledVersionLS; + DWORD dwUpdateVersionMS; + DWORD dwUpdateVersionLS; + DWORD dwAdvertisedVersionMS; + DWORD dwAdvertisedVersionLS; + DWORD dwReserved; +} SOFTDISTINFO; +typedef struct _tagSOFTDISTINFO *LPSOFTDISTINFO; +#define __ISoftDistExt_INTERFACE_DEFINED__ +extern const GUID IID_ISoftDistExt; +typedef struct ISoftDistExtVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISoftDistExt *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISoftDistExt *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISoftDistExt *This); + HRESULT (__attribute__((__stdcall__)) *ProcessSoftDist)( + ISoftDistExt *This, + LPCWSTR szCDFURL, + IXMLElement *pSoftDistElement, + LPSOFTDISTINFO lpsdi); + HRESULT (__attribute__((__stdcall__)) *GetFirstCodeBase)( + ISoftDistExt *This, + LPWSTR *szCodeBase, + LPDWORD dwMaxSize); + HRESULT (__attribute__((__stdcall__)) *GetNextCodeBase)( + ISoftDistExt *This, + LPWSTR *szCodeBase, + LPDWORD dwMaxSize); + HRESULT (__attribute__((__stdcall__)) *AsyncInstallDistributionUnit)( + ISoftDistExt *This, + IBindCtx *pbc, + LPVOID pvReserved, + DWORD flags, + LPCODEBASEHOLD lpcbh); +} ISoftDistExtVtbl; +struct ISoftDistExt { + ISoftDistExtVtbl* lpVtbl; +}; +extern HRESULT __attribute__((__stdcall__)) GetSoftwareUpdateInfo(LPCWSTR szDistUnit, LPSOFTDISTINFO psdi); +extern HRESULT __attribute__((__stdcall__)) SetSoftwareUpdateAdvertisementState(LPCWSTR szDistUnit, DWORD dwAdState, DWORD dwAdvertisedVersionMS, DWORD dwAdvertisedVersionLS); +#define _LPCATALOGFILEINFO_DEFINED +#define __ICatalogFileInfo_INTERFACE_DEFINED__ +typedef ICatalogFileInfo *LPCATALOGFILEINFO; +extern const GUID IID_ICatalogFileInfo; +typedef struct ICatalogFileInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ICatalogFileInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ICatalogFileInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ICatalogFileInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetCatalogFile)( + ICatalogFileInfo *This, + LPSTR *ppszCatalogFile); + HRESULT (__attribute__((__stdcall__)) *GetJavaTrust)( + ICatalogFileInfo *This, + void **ppJavaTrust); +} ICatalogFileInfoVtbl; +struct ICatalogFileInfo { + ICatalogFileInfoVtbl* lpVtbl; +}; +#define _LPDATAFILTER_DEFINED +#define __IDataFilter_INTERFACE_DEFINED__ +typedef IDataFilter *LPDATAFILTER; +extern const GUID IID_IDataFilter; +typedef struct IDataFilterVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IDataFilter *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IDataFilter *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IDataFilter *This); + HRESULT (__attribute__((__stdcall__)) *DoEncode)( + IDataFilter *This, + DWORD dwFlags, + LONG lInBufferSize, + BYTE *pbInBuffer, + LONG lOutBufferSize, + BYTE *pbOutBuffer, + LONG lInBytesAvailable, + LONG *plInBytesRead, + LONG *plOutBytesWritten, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *DoDecode)( + IDataFilter *This, + DWORD dwFlags, + LONG lInBufferSize, + BYTE *pbInBuffer, + LONG lOutBufferSize, + BYTE *pbOutBuffer, + LONG lInBytesAvailable, + LONG *plInBytesRead, + LONG *plOutBytesWritten, + DWORD dwReserved); + HRESULT (__attribute__((__stdcall__)) *SetEncodingLevel)( + IDataFilter *This, + DWORD dwEncLevel); +} IDataFilterVtbl; +struct IDataFilter { + IDataFilterVtbl* lpVtbl; +}; +#define _LPENCODINGFILTERFACTORY_DEFINED +typedef struct _tagPROTOCOLFILTERDATA { + DWORD cbSize; + IInternetProtocolSink *pProtocolSink; + IInternetProtocol *pProtocol; + IUnknown *pUnk; + DWORD dwFilterFlags; +} PROTOCOLFILTERDATA; +#define __IEncodingFilterFactory_INTERFACE_DEFINED__ +typedef IEncodingFilterFactory *LPENCODINGFILTERFACTORY; +typedef struct _tagDATAINFO { + ULONG ulTotalSize; + ULONG ulavrPacketSize; + ULONG ulConnectSpeed; + ULONG ulProcessorSpeed; +} DATAINFO; +extern const GUID IID_IEncodingFilterFactory; +typedef struct IEncodingFilterFactoryVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEncodingFilterFactory *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEncodingFilterFactory *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEncodingFilterFactory *This); + HRESULT (__attribute__((__stdcall__)) *FindBestFilter)( + IEncodingFilterFactory *This, + LPCWSTR pwzCodeIn, + LPCWSTR pwzCodeOut, + DATAINFO info, + IDataFilter **ppDF); + HRESULT (__attribute__((__stdcall__)) *GetDefaultFilter)( + IEncodingFilterFactory *This, + LPCWSTR pwzCodeIn, + LPCWSTR pwzCodeOut, + IDataFilter **ppDF); +} IEncodingFilterFactoryVtbl; +struct IEncodingFilterFactory { + IEncodingFilterFactoryVtbl* lpVtbl; +}; +#define _HITLOGGING_DEFINED +WINBOOL __attribute__((__stdcall__)) IsLoggingEnabledA(LPCSTR pszUrl); +WINBOOL __attribute__((__stdcall__)) IsLoggingEnabledW(LPCWSTR pwszUrl); +#define IsLoggingEnabled __MINGW_NAME_AW(IsLoggingEnabled) +typedef struct _tagHIT_LOGGING_INFO { + DWORD dwStructSize; + LPSTR lpszLoggedUrlName; + SYSTEMTIME StartTime; + SYSTEMTIME EndTime; + LPSTR lpszExtendedInfo; +} HIT_LOGGING_INFO; +typedef struct _tagHIT_LOGGING_INFO *LPHIT_LOGGING_INFO; +WINBOOL __attribute__((__stdcall__)) WriteHitLogging(LPHIT_LOGGING_INFO lpLogginginfo); +#define CONFIRMSAFETYACTION_LOADOBJECT 0x1 +struct CONFIRMSAFETY { + CLSID clsid; + IUnknown *pUnk; + DWORD dwFlags; +}; +extern const GUID GUID_CUSTOM_CONFIRMOBJECTSAFETY; +#define _LPIWRAPPEDPROTOCOL_DEFINED +#define __IWrappedProtocol_INTERFACE_DEFINED__ +typedef IWrappedProtocol *LPIWRAPPEDPROTOCOL; +extern const GUID IID_IWrappedProtocol; +typedef struct IWrappedProtocolVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IWrappedProtocol *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IWrappedProtocol *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IWrappedProtocol *This); + HRESULT (__attribute__((__stdcall__)) *GetWrapperCode)( + IWrappedProtocol *This, + LONG *pnCode, + DWORD_PTR dwReserved); +} IWrappedProtocolVtbl; +struct IWrappedProtocol { + IWrappedProtocolVtbl* lpVtbl; +}; +#define _LPGETBINDHANDLE_DEFINED +#define __IGetBindHandle_INTERFACE_DEFINED__ +typedef IGetBindHandle *LPGETBINDHANDLE; +typedef enum __WIDL_urlmon_generated_name_0000001F { + BINDHANDLETYPES_APPCACHE = 0x0, + BINDHANDLETYPES_DEPENDENCY = 0x1, + BINDHANDLETYPES_COUNT = 0x2 +} BINDHANDLETYPES; +extern const GUID IID_IGetBindHandle; +typedef struct IGetBindHandleVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IGetBindHandle *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IGetBindHandle *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IGetBindHandle *This); + HRESULT (__attribute__((__stdcall__)) *GetBindHandle)( + IGetBindHandle *This, + BINDHANDLETYPES enumRequestedHandle, + HANDLE *pRetHandle); +} IGetBindHandleVtbl; +struct IGetBindHandle { + IGetBindHandleVtbl* lpVtbl; +}; +#define _XHRPLUGGABLEPROTOCOL_DEFINED +typedef struct _tagPROTOCOL_ARGUMENT { + LPCWSTR szMethod; + LPCWSTR szTargetUrl; +} PROTOCOL_ARGUMENT; +typedef struct _tagPROTOCOL_ARGUMENT *LPPROTOCOL_ARGUMENT; +#define _LPBINDCALLBACKREDIRECT_DEFINED +#define __IBindCallbackRedirect_INTERFACE_DEFINED__ +typedef IBindCallbackRedirect *LPBINDCALLBACKREDIRECT; +extern const GUID IID_IBindCallbackRedirect; +typedef struct IBindCallbackRedirectVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IBindCallbackRedirect *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IBindCallbackRedirect *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IBindCallbackRedirect *This); + HRESULT (__attribute__((__stdcall__)) *Redirect)( + IBindCallbackRedirect *This, + LPCWSTR lpcUrl, + VARIANT_BOOL *vbCancel); +} IBindCallbackRedirectVtbl; +struct IBindCallbackRedirect { + IBindCallbackRedirectVtbl* lpVtbl; +}; +ULONG __attribute__((__stdcall__)) STGMEDIUM_UserSize (ULONG *, ULONG, STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserMarshal (ULONG *, unsigned char *, STGMEDIUM *); +unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *); +void __attribute__((__stdcall__)) STGMEDIUM_UserFree (ULONG *, STGMEDIUM *); +ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *); +void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *); +ULONG __attribute__((__stdcall__)) HWND_UserSize (ULONG *, ULONG, HWND *); +unsigned char * __attribute__((__stdcall__)) HWND_UserMarshal (ULONG *, unsigned char *, HWND *); +unsigned char * __attribute__((__stdcall__)) HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *); +void __attribute__((__stdcall__)) HWND_UserFree (ULONG *, HWND *); +ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); +void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *); +#undef interface +#define interface struct +#define __propidl_h__ +#define __IPropertyStorage_FWD_DEFINED__ +typedef struct IPropertyStorage IPropertyStorage; +#define __IPropertySetStorage_FWD_DEFINED__ +typedef struct IPropertySetStorage IPropertySetStorage; +#define __IEnumSTATPROPSTG_FWD_DEFINED__ +typedef struct IEnumSTATPROPSTG IEnumSTATPROPSTG; +#define __IEnumSTATPROPSETSTG_FWD_DEFINED__ +typedef struct IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG; +#undef interface +#define interface struct +#undef interface +#define interface struct +#undef interface +#define interface struct +typedef struct tagVersionedStream { + GUID guidVersion; + IStream *pStream; +} VERSIONEDSTREAM; +typedef struct tagVersionedStream *LPVERSIONEDSTREAM; +#define PROPSETFLAG_DEFAULT (0) +#define PROPSETFLAG_NONSIMPLE (1) +#define PROPSETFLAG_ANSI (2) +#define PROPSETFLAG_UNBUFFERED (4) +#define PROPSETFLAG_CASE_SENSITIVE (8) +#define PROPSET_BEHAVIOR_CASE_SENSITIVE (1) +typedef struct tagPROPVARIANT PROPVARIANT; +typedef struct tagCAC { + ULONG cElems; + CHAR *pElems; +} CAC; +typedef struct tagCAUB { + ULONG cElems; + UCHAR *pElems; +} CAUB; +typedef struct tagCAI { + ULONG cElems; + SHORT *pElems; +} CAI; +typedef struct tagCAUI { + ULONG cElems; + USHORT *pElems; +} CAUI; +typedef struct tagCAL { + ULONG cElems; + LONG *pElems; +} CAL; +typedef struct tagCAUL { + ULONG cElems; + ULONG *pElems; +} CAUL; +typedef struct tagCAFLT { + ULONG cElems; + FLOAT *pElems; +} CAFLT; +typedef struct tagCADBL { + ULONG cElems; + DOUBLE *pElems; +} CADBL; +typedef struct tagCACY { + ULONG cElems; + CY *pElems; +} CACY; +typedef struct tagCADATE { + ULONG cElems; + DATE *pElems; +} CADATE; +typedef struct tagCABSTR { + ULONG cElems; + BSTR *pElems; +} CABSTR; +typedef struct tagCABSTRBLOB { + ULONG cElems; + BSTRBLOB *pElems; +} CABSTRBLOB; +typedef struct tagCABOOL { + ULONG cElems; + VARIANT_BOOL *pElems; +} CABOOL; +typedef struct tagCASCODE { + ULONG cElems; + SCODE *pElems; +} CASCODE; +typedef struct tagCAPROPVARIANT { + ULONG cElems; + PROPVARIANT *pElems; +} CAPROPVARIANT; +typedef struct tagCAH { + ULONG cElems; + LARGE_INTEGER *pElems; +} CAH; +typedef struct tagCAUH { + ULONG cElems; + ULARGE_INTEGER *pElems; +} CAUH; +typedef struct tagCALPSTR { + ULONG cElems; + LPSTR *pElems; +} CALPSTR; +typedef struct tagCALPWSTR { + ULONG cElems; + LPWSTR *pElems; +} CALPWSTR; +typedef struct tagCAFILETIME { + ULONG cElems; + FILETIME *pElems; +} CAFILETIME; +typedef struct tagCACLIPDATA { + ULONG cElems; + CLIPDATA *pElems; +} CACLIPDATA; +typedef struct tagCACLSID { + ULONG cElems; + CLSID *pElems; +} CACLSID; +typedef WORD PROPVAR_PAD1; +typedef WORD PROPVAR_PAD2; +typedef WORD PROPVAR_PAD3; +#define tag_inner_PROPVARIANT + struct tagPROPVARIANT { + __extension__ union { + __extension__ +struct { + VARTYPE vt; + PROPVAR_PAD1 wReserved1; + PROPVAR_PAD2 wReserved2; + PROPVAR_PAD3 wReserved3; + __extension__ union { + CHAR cVal; + UCHAR bVal; + SHORT iVal; + USHORT uiVal; + LONG lVal; + ULONG ulVal; + INT intVal; + UINT uintVal; + LARGE_INTEGER hVal; + ULARGE_INTEGER uhVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + FILETIME filetime; + CLSID *puuid; + CLIPDATA *pclipdata; + BSTR bstrVal; + BSTRBLOB bstrblobVal; + BLOB blob; + LPSTR pszVal; + LPWSTR pwszVal; + IUnknown *punkVal; + IDispatch *pdispVal; + IStream *pStream; + IStorage *pStorage; + LPVERSIONEDSTREAM pVersionedStream; + LPSAFEARRAY parray; + CAC cac; + CAUB caub; + CAI cai; + CAUI caui; + CAL cal; + CAUL caul; + CAH cah; + CAUH cauh; + CAFLT caflt; + CADBL cadbl; + CABOOL cabool; + CASCODE cascode; + CACY cacy; + CADATE cadate; + CAFILETIME cafiletime; + CACLSID cauuid; + CACLIPDATA caclipdata; + CABSTR cabstr; + CABSTRBLOB cabstrblob; + CALPSTR calpstr; + CALPWSTR calpwstr; + CAPROPVARIANT capropvar; + CHAR *pcVal; + UCHAR *pbVal; + SHORT *piVal; + USHORT *puiVal; + LONG *plVal; + ULONG *pulVal; + INT *pintVal; + UINT *puintVal; + FLOAT *pfltVal; + DOUBLE *pdblVal; + VARIANT_BOOL *pboolVal; + DECIMAL *pdecVal; + SCODE *pscode; + CY *pcyVal; + DATE *pdate; + BSTR *pbstrVal; + IUnknown **ppunkVal; + IDispatch **ppdispVal; + LPSAFEARRAY *pparray; + PROPVARIANT *pvarVal; + } ; +}; + DECIMAL decVal; + }; +}; +typedef struct tagPROPVARIANT * LPPROPVARIANT; +#define _REFPROPVARIANT_DEFINED +#define REFPROPVARIANT const PROPVARIANT * __MIDL_CONST +#define PID_DICTIONARY (0x0) +#define PID_CODEPAGE (0x1) +#define PID_FIRST_USABLE (0x2) +#define PID_FIRST_NAME_DEFAULT (0xfff) +#define PID_LOCALE (0x80000000) +#define PID_MODIFY_TIME (0x80000001) +#define PID_SECURITY (0x80000002) +#define PID_BEHAVIOR (0x80000003) +#define PID_ILLEGAL (0xffffffff) +#define PID_MIN_READONLY (0x80000000) +#define PID_MAX_READONLY (0xbfffffff) +#define PIDDI_THUMBNAIL __MSABI_LONG(0x2) +#define PIDSI_TITLE __MSABI_LONG(0x2) +#define PIDSI_SUBJECT __MSABI_LONG(0x3) +#define PIDSI_AUTHOR __MSABI_LONG(0x4) +#define PIDSI_KEYWORDS __MSABI_LONG(0x5) +#define PIDSI_COMMENTS __MSABI_LONG(0x6) +#define PIDSI_TEMPLATE __MSABI_LONG(0x7) +#define PIDSI_LASTAUTHOR __MSABI_LONG(0x8) +#define PIDSI_REVNUMBER __MSABI_LONG(0x9) +#define PIDSI_EDITTIME __MSABI_LONG(0xa) +#define PIDSI_LASTPRINTED __MSABI_LONG(0xb) +#define PIDSI_CREATE_DTM __MSABI_LONG(0xc) +#define PIDSI_LASTSAVE_DTM __MSABI_LONG(0xd) +#define PIDSI_PAGECOUNT __MSABI_LONG(0xe) +#define PIDSI_WORDCOUNT __MSABI_LONG(0xf) +#define PIDSI_CHARCOUNT __MSABI_LONG(0x10) +#define PIDSI_THUMBNAIL __MSABI_LONG(0x11) +#define PIDSI_APPNAME __MSABI_LONG(0x12) +#define PIDSI_DOC_SECURITY __MSABI_LONG(0x13) +#define PIDDSI_CATEGORY 0x00000002 +#define PIDDSI_PRESFORMAT 0x00000003 +#define PIDDSI_BYTECOUNT 0x00000004 +#define PIDDSI_LINECOUNT 0x00000005 +#define PIDDSI_PARCOUNT 0x00000006 +#define PIDDSI_SLIDECOUNT 0x00000007 +#define PIDDSI_NOTECOUNT 0x00000008 +#define PIDDSI_HIDDENCOUNT 0x00000009 +#define PIDDSI_MMCLIPCOUNT 0x0000000A +#define PIDDSI_SCALE 0x0000000B +#define PIDDSI_HEADINGPAIR 0x0000000C +#define PIDDSI_DOCPARTS 0x0000000D +#define PIDDSI_MANAGER 0x0000000E +#define PIDDSI_COMPANY 0x0000000F +#define PIDDSI_LINKSDIRTY 0x00000010 +#define PIDMSI_EDITOR __MSABI_LONG(0x2) +#define PIDMSI_SUPPLIER __MSABI_LONG(0x3) +#define PIDMSI_SOURCE __MSABI_LONG(0x4) +#define PIDMSI_SEQUENCE_NO __MSABI_LONG(0x5) +#define PIDMSI_PROJECT __MSABI_LONG(0x6) +#define PIDMSI_STATUS __MSABI_LONG(0x7) +#define PIDMSI_OWNER __MSABI_LONG(0x8) +#define PIDMSI_RATING __MSABI_LONG(0x9) +#define PIDMSI_PRODUCTION __MSABI_LONG(0xa) +#define PIDMSI_COPYRIGHT __MSABI_LONG(0xb) +enum PIDMSI_STATUS_VALUE { + PIDMSI_STATUS_NORMAL = 0, + PIDMSI_STATUS_NEW = 1, + PIDMSI_STATUS_PRELIM = 2, + PIDMSI_STATUS_DRAFT = 3, + PIDMSI_STATUS_INPROGRESS = 4, + PIDMSI_STATUS_EDIT = 5, + PIDMSI_STATUS_REVIEW = 6, + PIDMSI_STATUS_PROOF = 7, + PIDMSI_STATUS_FINAL = 8, + PIDMSI_STATUS_OTHER = 0x7fff +}; +#define PRSPEC_INVALID (0xffffffff) +#define PRSPEC_LPWSTR (0) +#define PRSPEC_PROPID (1) +typedef struct tagPROPSPEC { + ULONG ulKind; + union { + PROPID propid; + LPOLESTR lpwstr; + } ; +} PROPSPEC; +typedef struct tagSTATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; +} STATPROPSTG; +#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD((dwOSVer)) +#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD((dwOSVer))) +#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD((dwOSVer))) +#define PROPSETHDR_OSVERSION_UNKNOWN 0xffffffff +typedef struct tagSTATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD dwOSVersion; +} STATPROPSETSTG; +#define __IPropertyStorage_INTERFACE_DEFINED__ +extern const GUID IID_IPropertyStorage; +typedef struct IPropertyStorageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertyStorage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertyStorage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertyStorage *This); + HRESULT (__attribute__((__stdcall__)) *ReadMultiple)( + IPropertyStorage *This, + ULONG cpspec, + const PROPSPEC rgpspec[], + PROPVARIANT rgpropvar[]); + HRESULT (__attribute__((__stdcall__)) *WriteMultiple)( + IPropertyStorage *This, + ULONG cpspec, + const PROPSPEC rgpspec[], + const PROPVARIANT rgpropvar[], + PROPID propidNameFirst); + HRESULT (__attribute__((__stdcall__)) *DeleteMultiple)( + IPropertyStorage *This, + ULONG cpspec, + const PROPSPEC rgpspec[]); + HRESULT (__attribute__((__stdcall__)) *ReadPropertyNames)( + IPropertyStorage *This, + ULONG cpropid, + const PROPID rgpropid[], + LPOLESTR rglpwstrName[]); + HRESULT (__attribute__((__stdcall__)) *WritePropertyNames)( + IPropertyStorage *This, + ULONG cpropid, + const PROPID rgpropid[], + const LPOLESTR rglpwstrName[]); + HRESULT (__attribute__((__stdcall__)) *DeletePropertyNames)( + IPropertyStorage *This, + ULONG cpropid, + const PROPID rgpropid[]); + HRESULT (__attribute__((__stdcall__)) *Commit)( + IPropertyStorage *This, + DWORD grfCommitFlags); + HRESULT (__attribute__((__stdcall__)) *Revert)( + IPropertyStorage *This); + HRESULT (__attribute__((__stdcall__)) *Enum)( + IPropertyStorage *This, + IEnumSTATPROPSTG **ppenum); + HRESULT (__attribute__((__stdcall__)) *SetTimes)( + IPropertyStorage *This, + const FILETIME *pctime, + const FILETIME *patime, + const FILETIME *pmtime); + HRESULT (__attribute__((__stdcall__)) *SetClass)( + IPropertyStorage *This, + const IID *const clsid); + HRESULT (__attribute__((__stdcall__)) *Stat)( + IPropertyStorage *This, + STATPROPSETSTG *pstatpsstg); +} IPropertyStorageVtbl; +struct IPropertyStorage { + IPropertyStorageVtbl* lpVtbl; +}; +#define __IPropertySetStorage_INTERFACE_DEFINED__ +typedef IPropertySetStorage *LPPROPERTYSETSTORAGE; +extern const GUID IID_IPropertySetStorage; +typedef struct IPropertySetStorageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertySetStorage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertySetStorage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertySetStorage *This); + HRESULT (__attribute__((__stdcall__)) *Create)( + IPropertySetStorage *This, + const IID *const rfmtid, + const CLSID *pclsid, + DWORD grfFlags, + DWORD grfMode, + IPropertyStorage **ppprstg); + HRESULT (__attribute__((__stdcall__)) *Open)( + IPropertySetStorage *This, + const IID *const rfmtid, + DWORD grfMode, + IPropertyStorage **ppprstg); + HRESULT (__attribute__((__stdcall__)) *Delete)( + IPropertySetStorage *This, + const IID *const rfmtid); + HRESULT (__attribute__((__stdcall__)) *Enum)( + IPropertySetStorage *This, + IEnumSTATPROPSETSTG **ppenum); +} IPropertySetStorageVtbl; +struct IPropertySetStorage { + IPropertySetStorageVtbl* lpVtbl; +}; +#define __IEnumSTATPROPSTG_INTERFACE_DEFINED__ +typedef IEnumSTATPROPSTG *LPENUMSTATPROPSTG; +extern const GUID IID_IEnumSTATPROPSTG; +typedef struct IEnumSTATPROPSTGVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumSTATPROPSTG *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumSTATPROPSTG *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumSTATPROPSTG *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumSTATPROPSTG *This, + ULONG celt, + STATPROPSTG *rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumSTATPROPSTG *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumSTATPROPSTG *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumSTATPROPSTG *This, + IEnumSTATPROPSTG **ppenum); +} IEnumSTATPROPSTGVtbl; +struct IEnumSTATPROPSTG { + IEnumSTATPROPSTGVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSTG_RemoteNext_Proxy( + IEnumSTATPROPSTG* This, + ULONG celt, + STATPROPSTG *rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumSTATPROPSTG_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSTG_Next_Proxy( + IEnumSTATPROPSTG* This, + ULONG celt, + STATPROPSTG *rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSTG_Next_Stub( + IEnumSTATPROPSTG* This, + ULONG celt, + STATPROPSTG *rgelt, + ULONG *pceltFetched); +#define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ +typedef IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; +extern const GUID IID_IEnumSTATPROPSETSTG; +typedef struct IEnumSTATPROPSETSTGVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumSTATPROPSETSTG *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumSTATPROPSETSTG *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumSTATPROPSETSTG *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumSTATPROPSETSTG *This, + ULONG celt, + STATPROPSETSTG *rgelt, + ULONG *pceltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumSTATPROPSETSTG *This, + ULONG celt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumSTATPROPSETSTG *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumSTATPROPSETSTG *This, + IEnumSTATPROPSETSTG **ppenum); +} IEnumSTATPROPSETSTGVtbl; +struct IEnumSTATPROPSETSTG { + IEnumSTATPROPSETSTGVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_RemoteNext_Proxy( + IEnumSTATPROPSETSTG* This, + ULONG celt, + STATPROPSETSTG *rgelt, + ULONG *pceltFetched); +void __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_Next_Proxy( + IEnumSTATPROPSETSTG* This, + ULONG celt, + STATPROPSETSTG *rgelt, + ULONG *pceltFetched); +HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_Next_Stub( + IEnumSTATPROPSETSTG* This, + ULONG celt, + STATPROPSETSTG *rgelt, + ULONG *pceltFetched); +typedef IPropertyStorage *LPPROPERTYSTORAGE; + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) PropVariantCopy(PROPVARIANT *pvarDest,const PROPVARIANT *pvarSrc); + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) PropVariantClear(PROPVARIANT *pvar); + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) FreePropVariantArray(ULONG cVariants, PROPVARIANT *rgvars); +#define _PROPVARIANTINIT_DEFINED_ +#define PropVariantInit(pvar) memset ((pvar), 0, sizeof (PROPVARIANT)) + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgCreatePropStg(IUnknown *pUnk, const IID *const fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg); + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgOpenPropStg(IUnknown *pUnk, const IID *const fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg); + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) StgCreatePropSetStg(IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg); +#define CCH_MAX_PROPSTG_NAME 31 + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) FmtIdToPropStgName(const FMTID *pfmtid, LPOLESTR oszName); + extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) PropStgNameToFmtId(const LPOLESTR oszName, FMTID *pfmtid); +#define _SERIALIZEDPROPERTYVALUE_DEFINED_ +typedef struct tagSERIALIZEDPROPERTYVALUE { + DWORD dwType; + BYTE rgb[1]; +} SERIALIZEDPROPERTYVALUE; +extern SERIALIZEDPROPERTYVALUE * __attribute__((__stdcall__)) StgConvertVariantToProperty(const PROPVARIANT *pvar, USHORT CodePage, SERIALIZEDPROPERTYVALUE *pprop, ULONG *pcb, PROPID pid, BOOLEAN fReserved, ULONG *pcIndirect); +ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); +void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *); +ULONG __attribute__((__stdcall__)) LPSAFEARRAY_UserSize (ULONG *, ULONG, LPSAFEARRAY *); +unsigned char * __attribute__((__stdcall__)) LPSAFEARRAY_UserMarshal (ULONG *, unsigned char *, LPSAFEARRAY *); +unsigned char * __attribute__((__stdcall__)) LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *); +void __attribute__((__stdcall__)) LPSAFEARRAY_UserFree (ULONG *, LPSAFEARRAY *); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateStdProgressIndicator (HWND hwndParent, LPCOLESTR pszTitle, IBindStatusCallback *pIbscCaller, IBindStatusCallback **ppIbsc); +#pragma pack(pop) +#define _OLEAUTO_H_ +#pragma pack(push,8) +#define WINOLEAUTAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI +#define WINOLEAUTAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI +extern const IID IID_StdOle; +#define STDOLE_MAJORVERNUM 0x1 +#define STDOLE_MINORVERNUM 0x0 +#define STDOLE_LCID 0x0000 +#define STDOLE2_MAJORVERNUM 0x2 +#define STDOLE2_MINORVERNUM 0x0 +#define STDOLE2_LCID 0x0000 +#undef interface +#define interface struct + +extern __declspec (dllimport) BSTR __attribute__((__stdcall__)) SysAllocString(const OLECHAR *); +extern __declspec (dllimport) INT __attribute__((__stdcall__)) SysReAllocString(BSTR *,const OLECHAR *); +extern __declspec (dllimport) BSTR __attribute__((__stdcall__)) SysAllocStringLen(const OLECHAR *,UINT); +extern __declspec (dllimport) INT __attribute__((__stdcall__)) SysReAllocStringLen(BSTR *,const OLECHAR *,UINT); +extern __declspec (dllimport) void __attribute__((__stdcall__)) SysFreeString(BSTR); +extern __declspec (dllimport) UINT __attribute__((__stdcall__)) SysStringLen(BSTR); +extern __declspec (dllimport) UINT __attribute__((__stdcall__)) SysStringByteLen(BSTR bstr); +extern __declspec (dllimport) BSTR __attribute__((__stdcall__)) SysAllocStringByteLen(LPCSTR psz,UINT len); +extern __declspec (dllimport) INT __attribute__((__stdcall__)) DosDateTimeToVariantTime(USHORT wDosDate,USHORT wDosTime,DOUBLE *pvtime); +extern __declspec (dllimport) INT __attribute__((__stdcall__)) VariantTimeToDosDateTime(DOUBLE vtime,USHORT *pwDosDate,USHORT *pwDosTime); +extern __declspec (dllimport) INT __attribute__((__stdcall__)) SystemTimeToVariantTime(LPSYSTEMTIME lpSystemTime,DOUBLE *pvtime); +extern __declspec (dllimport) INT __attribute__((__stdcall__)) VariantTimeToSystemTime(DOUBLE vtime,LPSYSTEMTIME lpSystemTime); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayAllocDescriptor(UINT cDims,SAFEARRAY **ppsaOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayAllocDescriptorEx(VARTYPE vt,UINT cDims,SAFEARRAY **ppsaOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayAllocData(SAFEARRAY *psa); +extern __declspec (dllimport) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreate(VARTYPE vt,UINT cDims,SAFEARRAYBOUND *rgsabound); +extern __declspec (dllimport) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreateEx(VARTYPE vt,UINT cDims,SAFEARRAYBOUND *rgsabound,PVOID pvExtra); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayCopyData(SAFEARRAY *psaSource,SAFEARRAY *psaTarget); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayDestroyDescriptor(SAFEARRAY *psa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayDestroyData(SAFEARRAY *psa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayDestroy(SAFEARRAY *psa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayRedim(SAFEARRAY *psa,SAFEARRAYBOUND *psaboundNew); +extern __declspec (dllimport) UINT __attribute__((__stdcall__)) SafeArrayGetDim(SAFEARRAY *psa); +extern __declspec (dllimport) UINT __attribute__((__stdcall__)) SafeArrayGetElemsize(SAFEARRAY *psa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayGetUBound(SAFEARRAY *psa,UINT nDim,LONG *plUbound); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayGetLBound(SAFEARRAY *psa,UINT nDim,LONG *plLbound); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayLock(SAFEARRAY *psa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayUnlock(SAFEARRAY *psa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayAccessData(SAFEARRAY *psa,void **ppvData); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayUnaccessData(SAFEARRAY *psa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayGetElement(SAFEARRAY *psa,LONG *rgIndices,void *pv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayPutElement(SAFEARRAY *psa,LONG *rgIndices,void *pv); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayCopy(SAFEARRAY *psa,SAFEARRAY **ppsaOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayPtrOfIndex(SAFEARRAY *psa,LONG *rgIndices,void **ppvData); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArraySetRecordInfo(SAFEARRAY *psa,IRecordInfo *prinfo); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayGetRecordInfo(SAFEARRAY *psa,IRecordInfo **prinfo); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArraySetIID(SAFEARRAY *psa,const GUID *const guid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayGetIID(SAFEARRAY *psa,GUID *pguid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SafeArrayGetVartype(SAFEARRAY *psa,VARTYPE *pvt); +extern __declspec (dllimport) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreateVector(VARTYPE vt,LONG lLbound,ULONG cElements); +extern __declspec (dllimport) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreateVectorEx(VARTYPE vt,LONG lLbound,ULONG cElements,PVOID pvExtra); +extern __declspec (dllimport) void __attribute__((__stdcall__)) VariantInit(VARIANTARG *pvarg); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VariantClear(VARIANTARG *pvarg); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VariantCopy(VARIANTARG *pvargDest,VARIANTARG *pvargSrc); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VariantCopyInd(VARIANT *pvarDest,VARIANTARG *pvargSrc); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VariantChangeType(VARIANTARG *pvargDest,VARIANTARG *pvarSrc,USHORT wFlags,VARTYPE vt); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VariantChangeTypeEx(VARIANTARG *pvargDest,VARIANTARG *pvarSrc,LCID lcid,USHORT wFlags,VARTYPE vt); +#define VARIANT_NOVALUEPROP 0x01 +#define VARIANT_ALPHABOOL 0x02 +#define VARIANT_NOUSEROVERRIDE 0x04 +#define VARIANT_CALENDAR_HIJRI 0x08 +#define VARIANT_LOCALBOOL 0x10 +#define VARIANT_CALENDAR_THAI 0x20 +#define VARIANT_CALENDAR_GREGORIAN 0x40 +#define VARIANT_USE_NLS 0x80 +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VectorFromBstr (BSTR bstr,SAFEARRAY **ppsa); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) BstrFromVector (SAFEARRAY *psa,BSTR *pbstr); +#define VAR_TIMEVALUEONLY ((DWORD)0x00000001) +#define VAR_DATEVALUEONLY ((DWORD)0x00000002) +#define VAR_VALIDDATE ((DWORD)0x00000004) +#define VAR_CALENDAR_HIJRI ((DWORD)0x00000008) +#define VAR_LOCALBOOL ((DWORD)0x00000010) +#define VAR_FORMAT_NOSUBSTITUTE ((DWORD)0x00000020) +#define VAR_FOURDIGITYEARS ((DWORD)0x00000040) +#define LOCALE_USE_NLS 0x10000000 +#define VAR_CALENDAR_THAI ((DWORD)0x00000080) +#define VAR_CALENDAR_GREGORIAN ((DWORD)0x00000100) +#define VTDATEGRE_MAX 2958465 +#define VTDATEGRE_MIN -657434 +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromI2(SHORT sIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromI4(LONG lIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromI8(LONG64 i64In,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromR4(FLOAT fltIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromR8(DOUBLE dblIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromCy(CY cyIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromDate(DATE dateIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromDisp(IDispatch *pdispIn,LCID lcid,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromBool(VARIANT_BOOL boolIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromI1(CHAR cIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromUI2(USHORT uiIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromUI4(ULONG ulIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromUI8(ULONG64 ui64In,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI1FromDec(DECIMAL *pdecIn,BYTE *pbOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromUI1(BYTE bIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromI4(LONG lIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromI8(LONG64 i64In,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromR4(FLOAT fltIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromR8(DOUBLE dblIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromCy(CY cyIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromDate(DATE dateIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromDisp(IDispatch *pdispIn,LCID lcid,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromBool(VARIANT_BOOL boolIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromI1(CHAR cIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromUI2(USHORT uiIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromUI4(ULONG ulIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromUI8(ULONG64 ui64In,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI2FromDec(DECIMAL *pdecIn,SHORT *psOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromUI1(BYTE bIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromI2(SHORT sIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromI8(LONG64 i64In,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromR4(FLOAT fltIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromR8(DOUBLE dblIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromCy(CY cyIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromDate(DATE dateIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromDisp(IDispatch *pdispIn,LCID lcid,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromBool(VARIANT_BOOL boolIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromI1(CHAR cIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromUI2(USHORT uiIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromUI4(ULONG ulIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromUI8(ULONG64 ui64In,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromDec(DECIMAL *pdecIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI4FromInt(INT intIn,LONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromUI1(BYTE bIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromI2(SHORT sIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromI4(LONG lIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromR4(FLOAT fltIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromR8(DOUBLE dblIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromCy(CY cyIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromDate(DATE dateIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromStr(LPCOLESTR strIn,LCID lcid,unsigned long dwFlags,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromDisp(IDispatch *pdispIn,LCID lcid,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromBool(VARIANT_BOOL boolIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromI1(CHAR cIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromUI2(USHORT uiIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromUI4(ULONG ulIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromUI8(ULONG64 ui64In,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromDec(DECIMAL *pdecIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI8FromInt(INT intIn,LONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromUI1(BYTE bIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromI2(SHORT sIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromI4(LONG lIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromI8(LONG64 i64In,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromR8(DOUBLE dblIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromCy(CY cyIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromDate(DATE dateIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromDisp(IDispatch *pdispIn,LCID lcid,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromBool(VARIANT_BOOL boolIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromI1(CHAR cIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromUI2(USHORT uiIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromUI4(ULONG ulIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromUI8(ULONG64 ui64In,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR4FromDec(DECIMAL *pdecIn,FLOAT *pfltOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromUI1(BYTE bIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromI2(SHORT sIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromI4(LONG lIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromI8(LONG64 i64In,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromR4(FLOAT fltIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromCy(CY cyIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromDate(DATE dateIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromDisp(IDispatch *pdispIn,LCID lcid,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromBool(VARIANT_BOOL boolIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromI1(CHAR cIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromUI2(USHORT uiIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromUI4(ULONG ulIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromUI8(ULONG64 ui64In,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarR8FromDec(DECIMAL *pdecIn,DOUBLE *pdblOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromUI1(BYTE bIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromI2(SHORT sIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromI4(LONG lIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromI8(LONG64 i64In,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromR4(FLOAT fltIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromR8(DOUBLE dblIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromCy(CY cyIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromDisp(IDispatch *pdispIn,LCID lcid,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromBool(VARIANT_BOOL boolIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromI1(CHAR cIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromUI2(USHORT uiIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromUI4(ULONG ulIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromUI8(ULONG64 ui64In,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromDec(DECIMAL *pdecIn,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromUI1(BYTE bIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromI2(SHORT sIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromI4(LONG lIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromI8(LONG64 i64In,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromR4(FLOAT fltIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromR8(DOUBLE dblIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromDate(DATE dateIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromDisp(IDispatch *pdispIn,LCID lcid,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromBool(VARIANT_BOOL boolIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromI1(CHAR cIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromUI2(USHORT uiIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromUI4(ULONG ulIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromUI8(ULONG64 ui64In,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarCyFromDec(DECIMAL *pdecIn,CY *pcyOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromUI1(BYTE bVal,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromI2(SHORT iVal,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromI4(LONG lIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromI8(LONG64 i64In,LCID lcid,unsigned long dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromR4(FLOAT fltIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromR8(DOUBLE dblIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromCy(CY cyIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromDate(DATE dateIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromDisp(IDispatch *pdispIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromBool(VARIANT_BOOL boolIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromI1(CHAR cIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromUI2(USHORT uiIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromUI4(ULONG ulIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromUI8(ULONG64 ui64In,LCID lcid,unsigned long dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBstrFromDec(DECIMAL *pdecIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromUI1(BYTE bIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromI2(SHORT sIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromI4(LONG lIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromI8(LONG64 i64In,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromR4(FLOAT fltIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromR8(DOUBLE dblIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromDate(DATE dateIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromCy(CY cyIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromDisp(IDispatch *pdispIn,LCID lcid,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromI1(CHAR cIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromUI2(USHORT uiIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromUI4(ULONG ulIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromUI8(ULONG64 i64In,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarBoolFromDec(DECIMAL *pdecIn,VARIANT_BOOL *pboolOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromUI1(BYTE bIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromI2(SHORT uiIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromI4(LONG lIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromI8(LONG64 i64In,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromR4(FLOAT fltIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromR8(DOUBLE dblIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromDate(DATE dateIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromCy(CY cyIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromDisp(IDispatch *pdispIn,LCID lcid,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromBool(VARIANT_BOOL boolIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromUI2(USHORT uiIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromUI4(ULONG ulIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromUI8(ULONG64 i64In,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarI1FromDec(DECIMAL *pdecIn,CHAR *pcOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromUI1(BYTE bIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromI2(SHORT uiIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromI4(LONG lIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromI8(LONG64 i64In,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromR4(FLOAT fltIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromR8(DOUBLE dblIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromDate(DATE dateIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromCy(CY cyIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromDisp(IDispatch *pdispIn,LCID lcid,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromBool(VARIANT_BOOL boolIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromI1(CHAR cIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromUI4(ULONG ulIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromUI8(ULONG64 i64In,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI2FromDec(DECIMAL *pdecIn,USHORT *puiOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromUI1(BYTE bIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromI2(SHORT uiIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromI4(LONG lIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromI8(LONG64 i64In,ULONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromR4(FLOAT fltIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromR8(DOUBLE dblIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromDate(DATE dateIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromCy(CY cyIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromDisp(IDispatch *pdispIn,LCID lcid,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromBool(VARIANT_BOOL boolIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromI1(CHAR cIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromUI2(USHORT uiIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromUI8(ULONG64 ui64In,ULONG *plOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI4FromDec(DECIMAL *pdecIn,ULONG *pulOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromUI1(BYTE bIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromI2(SHORT sIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromI4(LONG lIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromI8(LONG64 ui64In,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromR4(FLOAT fltIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromR8(DOUBLE dblIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromCy(CY cyIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromDate(DATE dateIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromStr(LPCOLESTR strIn,LCID lcid,unsigned long dwFlags,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromDisp(IDispatch *pdispIn,LCID lcid,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromBool(VARIANT_BOOL boolIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromI1(CHAR cIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromUI2(USHORT uiIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromUI4(ULONG ulIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromDec(DECIMAL *pdecIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUI8FromInt(INT intIn,ULONG64 *pi64Out); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromUI1(BYTE bIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromI2(SHORT uiIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromI4(LONG lIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromI8(LONG64 i64In,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromR4(FLOAT fltIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromR8(DOUBLE dblIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromDate(DATE dateIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromCy(CY cyIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromDisp(IDispatch *pdispIn,LCID lcid,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromBool(VARIANT_BOOL boolIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromI1(CHAR cIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromUI2(USHORT uiIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromUI4(ULONG ulIn,DECIMAL *pdecOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDecFromUI8(ULONG64 ui64In,DECIMAL *pdecOut); +#define VarUI4FromUI4(in,pOut) (*(pOut) = (in)) +#define VarI4FromI4(in,pOut) (*(pOut) = (in)) +#define VarUI8FromUI8(in,pOut) (*(pOut) = (in)) +#define VarI8FromI8(in,pOut) (*(pOut) = (in)) +#define VarUI1FromInt VarUI1FromI4 +#define VarUI1FromUint VarUI1FromUI4 +#define VarI2FromInt VarI2FromI4 +#define VarI2FromUint VarI2FromUI4 +#define VarI4FromInt VarI4FromI4 +#define VarI4FromUint VarI4FromUI4 +#define VarI8FromInt VarI8FromI4 +#define VarI8FromUint VarI8FromUI4 +#define VarR4FromInt VarR4FromI4 +#define VarR4FromUint VarR4FromUI4 +#define VarR8FromInt VarR8FromI4 +#define VarR8FromUint VarR8FromUI4 +#define VarDateFromInt VarDateFromI4 +#define VarDateFromUint VarDateFromUI4 +#define VarCyFromInt VarCyFromI4 +#define VarCyFromUint VarCyFromUI4 +#define VarBstrFromInt VarBstrFromI4 +#define VarBstrFromUint VarBstrFromUI4 +#define VarBoolFromInt VarBoolFromI4 +#define VarBoolFromUint VarBoolFromUI4 +#define VarI1FromInt VarI1FromI4 +#define VarI1FromUint VarI1FromUI4 +#define VarUI2FromInt VarUI2FromI4 +#define VarUI2FromUint VarUI2FromUI4 +#define VarUI4FromInt VarUI4FromI4 +#define VarUI4FromUint VarUI4FromUI4 +#define VarDecFromInt VarDecFromI4 +#define VarDecFromUint VarDecFromUI4 +#define VarIntFromUI1 VarI4FromUI1 +#define VarIntFromI2 VarI4FromI2 +#define VarIntFromI4 VarI4FromI4 +#define VarIntFromI8 VarI4FromI8 +#define VarIntFromR4 VarI4FromR4 +#define VarIntFromR8 VarI4FromR8 +#define VarIntFromDate VarI4FromDate +#define VarIntFromCy VarI4FromCy +#define VarIntFromStr VarI4FromStr +#define VarIntFromDisp VarI4FromDisp +#define VarIntFromBool VarI4FromBool +#define VarIntFromI1 VarI4FromI1 +#define VarIntFromUI2 VarI4FromUI2 +#define VarIntFromUI4 VarI4FromUI4 +#define VarIntFromUI8 VarI4FromUI8 +#define VarIntFromDec VarI4FromDec +#define VarIntFromUint VarI4FromUI4 +#define VarUintFromUI1 VarUI4FromUI1 +#define VarUintFromI2 VarUI4FromI2 +#define VarUintFromI4 VarUI4FromI4 +#define VarUintFromI8 VarUI4FromI8 +#define VarUintFromR4 VarUI4FromR4 +#define VarUintFromR8 VarUI4FromR8 +#define VarUintFromDate VarUI4FromDate +#define VarUintFromCy VarUI4FromCy +#define VarUintFromStr VarUI4FromStr +#define VarUintFromDisp VarUI4FromDisp +#define VarUintFromBool VarUI4FromBool +#define VarUintFromI1 VarUI4FromI1 +#define VarUintFromUI2 VarUI4FromUI2 +#define VarUintFromUI4 VarUI4FromUI4 +#define VarUintFromUI8 VarUI4FromUI8 +#define VarUintFromDec VarUI4FromDec +#define VarUintFromInt VarUI4FromI4 +typedef struct { + INT cDig; + ULONG dwInFlags; + ULONG dwOutFlags; + INT cchUsed; + INT nBaseShift; + INT nPwr10; +} NUMPARSE; +#define NUMPRS_LEADING_WHITE 0x0001 +#define NUMPRS_TRAILING_WHITE 0x0002 +#define NUMPRS_LEADING_PLUS 0x0004 +#define NUMPRS_TRAILING_PLUS 0x0008 +#define NUMPRS_LEADING_MINUS 0x0010 +#define NUMPRS_TRAILING_MINUS 0x0020 +#define NUMPRS_HEX_OCT 0x0040 +#define NUMPRS_PARENS 0x0080 +#define NUMPRS_DECIMAL 0x0100 +#define NUMPRS_THOUSANDS 0x0200 +#define NUMPRS_CURRENCY 0x0400 +#define NUMPRS_EXPONENT 0x0800 +#define NUMPRS_USE_ALL 0x1000 +#define NUMPRS_STD 0x1FFF +#define NUMPRS_NEG 0x10000 +#define NUMPRS_INEXACT 0x20000 +#define VTBIT_I1 (1 << VT_I1) +#define VTBIT_UI1 (1 << VT_UI1) +#define VTBIT_I2 (1 << VT_I2) +#define VTBIT_UI2 (1 << VT_UI2) +#define VTBIT_I4 (1 << VT_I4) +#define VTBIT_UI4 (1 << VT_UI4) +#define VTBIT_I8 (1 << VT_I8) +#define VTBIT_UI8 (1 << VT_UI8) +#define VTBIT_R4 (1 << VT_R4) +#define VTBIT_R8 (1 << VT_R8) +#define VTBIT_CY (1 << VT_CY) +#define VTBIT_DECIMAL (1 << VT_DECIMAL) +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarParseNumFromStr(LPCOLESTR strIn,LCID lcid,ULONG dwFlags,NUMPARSE *pnumprs,BYTE *rgbDig); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarNumFromParseNum(NUMPARSE *pnumprs,BYTE *rgbDig,ULONG dwVtBits,VARIANT *pvar); +extern HRESULT __attribute__((__stdcall__)) VarAdd(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarAnd(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarCat(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarDiv(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarEqv(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarIdiv(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarImp(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarMod(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarMul(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarOr(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarPow(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarSub(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarXor(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarAbs(LPVARIANT pvarIn,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarFix(LPVARIANT pvarIn,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarInt(LPVARIANT pvarIn,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarNeg(LPVARIANT pvarIn,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarNot(LPVARIANT pvarIn,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarRound(LPVARIANT pvarIn,int cDecimals,LPVARIANT pvarResult); +extern HRESULT __attribute__((__stdcall__)) VarCmp(LPVARIANT pvarLeft,LPVARIANT pvarRight,LCID lcid,ULONG dwFlags); +extern HRESULT __attribute__((__stdcall__)) VarDecAdd(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecDiv(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecMul(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecSub(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecAbs(LPDECIMAL pdecIn,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecFix(LPDECIMAL pdecIn,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecInt(LPDECIMAL pdecIn,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecNeg(LPDECIMAL pdecIn,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecRound(LPDECIMAL pdecIn,int cDecimals,LPDECIMAL pdecResult); +extern HRESULT __attribute__((__stdcall__)) VarDecCmp(LPDECIMAL pdecLeft,LPDECIMAL pdecRight); +extern HRESULT __attribute__((__stdcall__)) VarDecCmpR8(LPDECIMAL pdecLeft,double dblRight); +extern HRESULT __attribute__((__stdcall__)) VarCyAdd(CY cyLeft,CY cyRight,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyMul(CY cyLeft,CY cyRight,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyMulI4(CY cyLeft,long lRight,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyMulI8(CY cyLeft,LONG64 lRight,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCySub(CY cyLeft,CY cyRight,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyAbs(CY cyIn,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyFix(CY cyIn,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyInt(CY cyIn,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyNeg(CY cyIn,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyRound(CY cyIn,int cDecimals,LPCY pcyResult); +extern HRESULT __attribute__((__stdcall__)) VarCyCmp(CY cyLeft,CY cyRight); +extern HRESULT __attribute__((__stdcall__)) VarCyCmpR8(CY cyLeft,double dblRight); +extern HRESULT __attribute__((__stdcall__)) VarBstrCat(BSTR bstrLeft,BSTR bstrRight,LPBSTR pbstrResult); +extern HRESULT __attribute__((__stdcall__)) VarBstrCmp(BSTR bstrLeft,BSTR bstrRight,LCID lcid,ULONG dwFlags); +extern HRESULT __attribute__((__stdcall__)) VarR8Pow(double dblLeft,double dblRight,double *pdblResult); +extern HRESULT __attribute__((__stdcall__)) VarR4CmpR8(float fltLeft,double dblRight); +extern HRESULT __attribute__((__stdcall__)) VarR8Round(double dblIn,int cDecimals,double *pdblResult); +#define VARCMP_LT 0 +#define VARCMP_EQ 1 +#define VARCMP_GT 2 +#define VARCMP_NULL 3 +#define VT_HARDTYPE VT_RESERVED +typedef struct { + SYSTEMTIME st; + USHORT wDayOfYear; +} UDATE; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromUdate(UDATE *pudateIn,ULONG dwFlags,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarDateFromUdateEx(UDATE *pudateIn,LCID lcid,ULONG dwFlags,DATE *pdateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarUdateFromDate(DATE dateIn,ULONG dwFlags,UDATE *pudateOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetAltMonthNames(LCID lcid,LPOLESTR **prgp); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarFormat(LPVARIANT pvarIn,LPOLESTR pstrFormat,int iFirstDay,int iFirstWeek,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarFormatDateTime(LPVARIANT pvarIn,int iNamedFormat,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarFormatNumber(LPVARIANT pvarIn,int iNumDig,int iIncLead,int iUseParens,int iGroup,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarFormatPercent(LPVARIANT pvarIn,int iNumDig,int iIncLead,int iUseParens,int iGroup,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarFormatCurrency(LPVARIANT pvarIn,int iNumDig,int iIncLead,int iUseParens,int iGroup,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarWeekdayName(int iWeekday,int fAbbrev,int iFirstDay,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarMonthName(int iMonth,int fAbbrev,ULONG dwFlags,BSTR *pbstrOut); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarFormatFromTokens(LPVARIANT pvarIn,LPOLESTR pstrFormat,LPBYTE pbTokCur,ULONG dwFlags,BSTR *pbstrOut,LCID lcid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) VarTokenizeFormatString(LPOLESTR pstrFormat,LPBYTE rgbTok,int cbTok,int iFirstDay,int iFirstWeek,LCID lcid,int *pcbActual); +#define DEFINED_LPTYPELIB +typedef ITypeLib *LPTYPELIB; +#define DEFINED_DISPID_MEMBERID +typedef LONG DISPID; +typedef DISPID MEMBERID; +#define MEMBERID_NIL DISPID_UNKNOWN +#define ID_DEFAULTINST -2 +#define DISPATCH_METHOD 0x1 +#define DISPATCH_PROPERTYGET 0x2 +#define DISPATCH_PROPERTYPUT 0x4 +#define DISPATCH_PROPERTYPUTREF 0x8 +#define DEFINDE_LPTYPEINFO +typedef ITypeInfo *LPTYPEINFO; +#define DEFINED_LPTYPECOMP +typedef ITypeComp *LPTYPECOMP; +#define DEFINED_LPCREATETYPELIB +typedef ICreateTypeLib *LPCREATETYPELIB; +#define DEFINE_LPCREATETYPEINFO +typedef ICreateTypeInfo *LPCREATETYPEINFO; +extern __declspec (dllimport) ULONG __attribute__((__stdcall__)) LHashValOfNameSysA(SYSKIND syskind,LCID lcid,LPCSTR szName); +extern __declspec (dllimport) ULONG __attribute__((__stdcall__)) LHashValOfNameSys(SYSKIND syskind,LCID lcid,const OLECHAR *szName); +#define LHashValOfName(lcid,szName) LHashValOfNameSys(SYS_WIN32,lcid,szName) +#define WHashValOfLHashVal(lhashval) ((USHORT) (0x0000ffff & (lhashval))) +#define IsHashValCompatible(lhashval1,lhashval2) ((WINBOOL) ((0x00ff0000 & (lhashval1))==(0x00ff0000 & (lhashval2)))) +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) LoadTypeLib(LPCOLESTR szFile,ITypeLib **pptlib); +typedef enum tagREGKIND { + REGKIND_DEFAULT,REGKIND_REGISTER,REGKIND_NONE +} REGKIND; +#define LOAD_TLB_AS_32BIT 0x20 +#define LOAD_TLB_AS_64BIT 0x40 +#define MASK_TO_RESET_TLB_BITS ~(LOAD_TLB_AS_32BIT | LOAD_TLB_AS_64BIT) +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) LoadTypeLibEx(LPCOLESTR szFile,REGKIND regkind,ITypeLib **pptlib); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) LoadRegTypeLib(const GUID *const rguid,WORD wVerMajor,WORD wVerMinor,LCID lcid,ITypeLib **pptlib); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) QueryPathOfRegTypeLib(const GUID *const guid,USHORT wMaj,USHORT wMin,LCID lcid,LPBSTR lpbstrPathName); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) RegisterTypeLib(ITypeLib *ptlib,LPCOLESTR szFullPath,LPCOLESTR szHelpDir); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) UnRegisterTypeLib(const GUID *const libID,WORD wVerMajor,WORD wVerMinor,LCID lcid,SYSKIND syskind); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateTypeLib(SYSKIND syskind,LPCOLESTR szFile,ICreateTypeLib **ppctlib); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateTypeLib2(SYSKIND syskind,LPCOLESTR szFile,ICreateTypeLib2 **ppctlib); +#define DEFINED_LPDISPATCH +typedef IDispatch *LPDISPATCH; +typedef struct tagPARAMDATA { + OLECHAR *szName; + VARTYPE vt; +} PARAMDATA,*LPPARAMDATA; +typedef struct tagMETHODDATA { + OLECHAR *szName; + PARAMDATA *ppdata; + DISPID dispid; + UINT iMeth; + CALLCONV cc; + UINT cArgs; + WORD wFlags; + VARTYPE vtReturn; +} METHODDATA,*LPMETHODDATA; +typedef struct tagINTERFACEDATA { + METHODDATA *pmethdata; + UINT cMembers; +} INTERFACEDATA,*LPINTERFACEDATA; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) DispGetParam(DISPPARAMS *pdispparams,UINT position,VARTYPE vtTarg,VARIANT *pvarResult,UINT *puArgErr); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) DispGetIDsOfNames(ITypeInfo *ptinfo,LPOLESTR *rgszNames,UINT cNames,DISPID *rgdispid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) DispInvoke(void *_this,ITypeInfo *ptinfo,DISPID dispidMember,WORD wFlags,DISPPARAMS *pparams,VARIANT *pvarResult,EXCEPINFO *pexcepinfo,UINT *puArgErr); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateDispTypeInfo(INTERFACEDATA *pidata,LCID lcid,ITypeInfo **pptinfo); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateStdDispatch(IUnknown *punkOuter,void *pvThis,ITypeInfo *ptinfo,IUnknown **ppunkStdDisp); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) DispCallFunc(void *pvInstance,ULONG_PTR oVft,CALLCONV cc,VARTYPE vtReturn,UINT cActuals,VARTYPE *prgvt,VARIANTARG **prgpvarg,VARIANT *pvargResult); +#define ACTIVEOBJECT_STRONG 0x0 +#define ACTIVEOBJECT_WEAK 0x1 +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) RegisterActiveObject(IUnknown *punk,const IID *const rclsid,DWORD dwFlags,DWORD *pdwRegister); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) RevokeActiveObject(DWORD dwRegister,void *pvReserved); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetActiveObject(const IID *const rclsid,void *pvReserved,IUnknown **ppunk); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SetErrorInfo(ULONG dwReserved,IErrorInfo *perrinfo); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetErrorInfo(ULONG dwReserved,IErrorInfo **pperrinfo); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateErrorInfo(ICreateErrorInfo **pperrinfo); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetRecordInfoFromTypeInfo(ITypeInfo *pTypeInfo,IRecordInfo **ppRecInfo); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetRecordInfoFromGuids(const GUID *const rGuidTypeLib,ULONG uVerMajor,ULONG uVerMinor,LCID lcid,const GUID *const rGuidTypeInfo,IRecordInfo **ppRecInfo); +extern __declspec (dllimport) ULONG __attribute__((__stdcall__)) OaBuildVersion(void); +extern __declspec (dllimport) void __attribute__((__stdcall__)) ClearCustData(LPCUSTDATA pCustData); +#define V_UNION(X,Y) ((X)->Y) +#define V_VT(X) ((X)->vt) +#define V_RECORDINFO(X) ((X)->pRecInfo) +#define V_RECORD(X) ((X)->pvRecord) +#define V_ISBYREF(X) (V_VT(X)&VT_BYREF) +#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY) +#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR) +#define V_NONE(X) V_I2(X) +#define V_UI1(X) V_UNION(X,bVal) +#define V_UI1REF(X) V_UNION(X,pbVal) +#define V_I2(X) V_UNION(X,iVal) +#define V_I2REF(X) V_UNION(X,piVal) +#define V_I4(X) V_UNION(X,lVal) +#define V_I4REF(X) V_UNION(X,plVal) +#define V_I8(X) V_UNION(X,llVal) +#define V_I8REF(X) V_UNION(X,pllVal) +#define V_R4(X) V_UNION(X,fltVal) +#define V_R4REF(X) V_UNION(X,pfltVal) +#define V_R8(X) V_UNION(X,dblVal) +#define V_R8REF(X) V_UNION(X,pdblVal) +#define V_I1(X) V_UNION(X,cVal) +#define V_I1REF(X) V_UNION(X,pcVal) +#define V_UI2(X) V_UNION(X,uiVal) +#define V_UI2REF(X) V_UNION(X,puiVal) +#define V_UI4(X) V_UNION(X,ulVal) +#define V_UI4REF(X) V_UNION(X,pulVal) +#define V_UI8(X) V_UNION(X,ullVal) +#define V_UI8REF(X) V_UNION(X,pullVal) +#define V_INT(X) V_UNION(X,intVal) +#define V_INTREF(X) V_UNION(X,pintVal) +#define V_UINT(X) V_UNION(X,uintVal) +#define V_UINTREF(X) V_UNION(X,puintVal) +#define V_INT_PTR(X) V_UNION(X,llVal) +#define V_UINT_PTR(X) V_UNION(X,ullVal) +#define V_INT_PTRREF(X) V_UNION(X,pllVal) +#define V_UINT_PTRREF(X) V_UNION(X,pullVal) +#define V_CY(X) V_UNION(X,cyVal) +#define V_CYREF(X) V_UNION(X,pcyVal) +#define V_DATE(X) V_UNION(X,date) +#define V_DATEREF(X) V_UNION(X,pdate) +#define V_BSTR(X) V_UNION(X,bstrVal) +#define V_BSTRREF(X) V_UNION(X,pbstrVal) +#define V_DISPATCH(X) V_UNION(X,pdispVal) +#define V_DISPATCHREF(X) V_UNION(X,ppdispVal) +#define V_ERROR(X) V_UNION(X,scode) +#define V_ERRORREF(X) V_UNION(X,pscode) +#define V_BOOL(X) V_UNION(X,boolVal) +#define V_BOOLREF(X) V_UNION(X,pboolVal) +#define V_UNKNOWN(X) V_UNION(X,punkVal) +#define V_UNKNOWNREF(X) V_UNION(X,ppunkVal) +#define V_VARIANTREF(X) V_UNION(X,pvarVal) +#define V_ARRAY(X) V_UNION(X,parray) +#define V_ARRAYREF(X) V_UNION(X,pparray) +#define V_BYREF(X) V_UNION(X,byref) +#define V_DECIMAL(X) V_UNION(X,decVal) +#define V_DECIMALREF(X) V_UNION(X,pdecVal) +#pragma pack(pop) + +#define E_DRAW VIEW_E_DRAW +#define DATA_E_FORMATETC DV_E_FORMATETC +#define OLEIVERB_PRIMARY (__MSABI_LONG(0)) +#define OLEIVERB_SHOW (-__MSABI_LONG(1)) +#define OLEIVERB_OPEN (-__MSABI_LONG(2)) +#define OLEIVERB_HIDE (-__MSABI_LONG(3)) +#define OLEIVERB_UIACTIVATE (-__MSABI_LONG(4)) +#define OLEIVERB_INPLACEACTIVATE (-__MSABI_LONG(5)) +#define OLEIVERB_DISCARDUNDOSTATE (-__MSABI_LONG(6)) +#define EMBDHLP_INPROC_HANDLER __MSABI_LONG(0x0000) +#define EMBDHLP_INPROC_SERVER __MSABI_LONG(0x0001) +#define EMBDHLP_CREATENOW __MSABI_LONG(0x00000000) +#define EMBDHLP_DELAYCREATE __MSABI_LONG(0x00010000) +#define OLECREATE_LEAVERUNNING 0x1 +#undef interface +#define interface struct +extern __declspec (dllimport) DWORD __attribute__((__stdcall__)) OleBuildVersion (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateDataAdviseHolder (LPDATAADVISEHOLDER *ppDAHolder); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) ReadClassStg (LPSTORAGE pStg, CLSID *pclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) WriteClassStg (LPSTORAGE pStg, const IID *const rclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) ReadClassStm (LPSTREAM pStm, CLSID *pclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) WriteClassStm (LPSTREAM pStm, const IID *const rclsid); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT *pcf, LPOLESTR *lplpszUserType); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleInitialize (LPVOID pvReserved); +extern __declspec (dllimport) void __attribute__((__stdcall__)) OleUninitialize (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleQueryLinkFromData (LPDATAOBJECT pSrcDataObject); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleQueryCreateFromData (LPDATAOBJECT pSrcDataObject); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreate (const IID *const rclsid, const IID *const riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateEx (const IID *const rclsid, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateFromData (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateFromDataEx (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateLinkFromData (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateLinkFromDataEx (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateStaticFromData (LPDATAOBJECT pSrcDataObj, const IID *const iid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateLink (LPMONIKER pmkLinkSrc, const IID *const riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateLinkEx (LPMONIKER pmkLinkSrc, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateLinkToFile (LPCOLESTR lpszFileName, const IID *const riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateLinkToFileEx (LPCOLESTR lpszFileName, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateFromFile (const IID *const rclsid, LPCOLESTR lpszFileName, const IID *const riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateFromFileEx (const IID *const rclsid, LPCOLESTR lpszFileName, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleLoad (LPSTORAGE pStg, const IID *const riid, LPOLECLIENTSITE pClientSite, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleSave (LPPERSISTSTORAGE pPS, LPSTORAGE pStg, WINBOOL fSameAsLoad); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleLoadFromStream (LPSTREAM pStm, const IID *const iidInterface, LPVOID *ppvObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleSaveToStream (LPPERSISTSTREAM pPStm, LPSTREAM pStm); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleSetContainedObject (LPUNKNOWN pUnknown, WINBOOL fContained); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleNoteObjectVisible (LPUNKNOWN pUnknown, WINBOOL fVisible); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) RegisterDragDrop (HWND hwnd, LPDROPTARGET pDropTarget); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) RevokeDragDrop (HWND hwnd); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) DoDragDrop (LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource, DWORD dwOKEffects, LPDWORD pdwEffect); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleSetClipboard (LPDATAOBJECT pDataObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleGetClipboard (LPDATAOBJECT *ppDataObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleFlushClipboard (void); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleIsCurrentClipboard (LPDATAOBJECT pDataObj); +extern __declspec (dllimport) HOLEMENU __attribute__((__stdcall__)) OleCreateMenuDescriptor (HMENU hmenuCombined, LPOLEMENUGROUPWIDTHS lpMenuWidths); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame, HWND hwndActiveObject, LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEACTIVEOBJECT lpActiveObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleDestroyMenuDescriptor (HOLEMENU holemenu); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg); +extern __declspec (dllimport) HANDLE __attribute__((__stdcall__)) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw, LPCRECT lprcBounds); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleRun (LPUNKNOWN pUnknown); +extern __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) OleIsRunning (LPOLEOBJECT pObject); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleLockRunning (LPUNKNOWN pUnknown, WINBOOL fLock, WINBOOL fLastUnlockCloses); +extern __declspec (dllimport) void __attribute__((__stdcall__)) ReleaseStgMedium (LPSTGMEDIUM); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateOleAdviseHolder (LPOLEADVISEHOLDER *ppOAHolder); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateDefaultHandler (const IID *const clsid, LPUNKNOWN pUnkOuter, const IID *const riid, LPVOID *lplpObj); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleCreateEmbeddingHelper (const IID *const clsid, LPUNKNOWN pUnkOuter, DWORD flags, LPCLASSFACTORY pCF, const IID *const riid, LPVOID *lplpObj); +extern __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) IsAccelerator (HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD *lpwCmd); +extern __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) OleGetIconOfFile (LPOLESTR lpszPath, WINBOOL fUseFileAsLabel); +extern __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) OleGetIconOfClass (const IID *const rclsid, LPOLESTR lpszLabel, WINBOOL fUseTypeAsLabel); +extern __declspec (dllimport) HGLOBAL __attribute__((__stdcall__)) OleMetafilePictFromIconAndLabel (HICON hIcon, LPOLESTR lpszLabel, LPOLESTR lpszSourceFile, UINT iIconIndex); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleRegGetUserType (const IID *const clsid, DWORD dwFormOfType, LPOLESTR *pszUserType); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleRegGetMiscStatus (const IID *const clsid, DWORD dwAspect, DWORD *pdwStatus); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleRegEnumFormatEtc (const IID *const clsid, DWORD dwDirection, LPENUMFORMATETC *ppenum); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleRegEnumVerbs (const IID *const clsid, LPENUMOLEVERB *ppenum); +typedef struct _OLESTREAM *LPOLESTREAM; +typedef struct _OLESTREAMVTBL { + DWORD (__attribute__((__stdcall__)) *Get) (LPOLESTREAM, void *, DWORD); + DWORD (__attribute__((__stdcall__)) *Put) (LPOLESTREAM, const void *, DWORD); +} OLESTREAMVTBL; +typedef OLESTREAMVTBL *LPOLESTREAMVTBL; +typedef struct _OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} OLESTREAM; +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleConvertOLESTREAMToIStorage (LPOLESTREAM lpolestream, LPSTORAGE pstg, const DVTARGETDEVICE *ptd); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleConvertIStorageToOLESTREAM (LPSTORAGE pstg, LPOLESTREAM lpolestream); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL *phglobal); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) CreateILockBytesOnHGlobal (HGLOBAL hGlobal, WINBOOL fDeleteOnRelease, LPLOCKBYTES *pplkbyt); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleDoAutoConvert (LPSTORAGE pStg, LPCLSID pClsidNew); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleGetAutoConvert (const IID *const clsidOld, LPCLSID pClsidNew); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleSetAutoConvert (const IID *const clsidOld, const IID *const clsidNew); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) GetConvertStg (LPSTORAGE pStg); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) SetConvertStg (LPSTORAGE pStg, WINBOOL fConvert); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleConvertIStorageToOLESTREAMEx (LPSTORAGE pstg, CLIPFORMAT cfFormat, LONG lWidth, LONG lHeight, DWORD dwSize, LPSTGMEDIUM pmedium, LPOLESTREAM polestm); +extern __declspec (dllimport) HRESULT __attribute__((__stdcall__)) OleConvertOLESTREAMToIStorageEx (LPOLESTREAM polestm, LPSTORAGE pstg, CLIPFORMAT *pcfFormat, LONG *plwWidth, LONG *plHeight, DWORD *pdwSize, LPSTGMEDIUM pmedium); +#pragma pack(pop) +extern const GUID GUID_DEVINTERFACE_DISK; +extern const GUID GUID_DEVINTERFACE_CDROM; +extern const GUID GUID_DEVINTERFACE_PARTITION; +extern const GUID GUID_DEVINTERFACE_TAPE; +extern const GUID GUID_DEVINTERFACE_WRITEONCEDISK; +extern const GUID GUID_DEVINTERFACE_VOLUME; +extern const GUID GUID_DEVINTERFACE_MEDIUMCHANGER; +extern const GUID GUID_DEVINTERFACE_FLOPPY; +extern const GUID GUID_DEVINTERFACE_CDCHANGER; +extern const GUID GUID_DEVINTERFACE_STORAGEPORT; +extern const GUID GUID_DEVINTERFACE_VMLUN; +extern const GUID GUID_DEVINTERFACE_SES; +extern const GUID GUID_DEVINTERFACE_ZNSDISK; +#define WDI_STORAGE_PREDICT_FAILURE_DPS_GUID {0xe9f2d03a,0x747c,0x41c2,{0xbb,0x9a,0x02,0xc6,0x2b,0x6d,0x5f,0xcb}}; +extern const GUID GUID_DEVINTERFACE_SERVICE_VOLUME; +extern const GUID GUID_DEVINTERFACE_HIDDEN_VOLUME; +extern const GUID GUID_DEVINTERFACE_UNIFIED_ACCESS_RPMB; +extern const GUID GUID_DEVINTERFACE_SCM_PHYSICAL_DEVICE; +extern const GUID GUID_SCM_PD_HEALTH_NOTIFICATION; +extern const GUID GUID_SCM_PD_PASSTHROUGH_INVDIMM; +extern const GUID GUID_DEVINTERFACE_COMPORT; +extern const GUID GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR; +#define DiskClassGuid GUID_DEVINTERFACE_DISK +#define CdRomClassGuid GUID_DEVINTERFACE_CDROM +#define PartitionClassGuid GUID_DEVINTERFACE_PARTITION +#define TapeClassGuid GUID_DEVINTERFACE_TAPE +#define WriteOnceDiskClassGuid GUID_DEVINTERFACE_WRITEONCEDISK +#define VolumeClassGuid GUID_DEVINTERFACE_VOLUME +#define MediumChangerClassGuid GUID_DEVINTERFACE_MEDIUMCHANGER +#define FloppyClassGuid GUID_DEVINTERFACE_FLOPPY +#define CdChangerClassGuid GUID_DEVINTERFACE_CDCHANGER +#define StoragePortClassGuid GUID_DEVINTERFACE_STORAGEPORT +#define HiddenVolumeClassGuid GUID_DEVINTERFACE_HIDDEN_VOLUME +#define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT +#define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR +#define _WINIOCTL_ +#define _DEVIOCTL_ +#define DEVICE_TYPE DWORD +#define FILE_DEVICE_BEEP 0x00000001 +#define FILE_DEVICE_CD_ROM 0x00000002 +#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 +#define FILE_DEVICE_CONTROLLER 0x00000004 +#define FILE_DEVICE_DATALINK 0x00000005 +#define FILE_DEVICE_DFS 0x00000006 +#define FILE_DEVICE_DISK 0x00000007 +#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008 +#define FILE_DEVICE_FILE_SYSTEM 0x00000009 +#define FILE_DEVICE_INPORT_PORT 0x0000000a +#define FILE_DEVICE_KEYBOARD 0x0000000b +#define FILE_DEVICE_MAILSLOT 0x0000000c +#define FILE_DEVICE_MIDI_IN 0x0000000d +#define FILE_DEVICE_MIDI_OUT 0x0000000e +#define FILE_DEVICE_MOUSE 0x0000000f +#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010 +#define FILE_DEVICE_NAMED_PIPE 0x00000011 +#define FILE_DEVICE_NETWORK 0x00000012 +#define FILE_DEVICE_NETWORK_BROWSER 0x00000013 +#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 +#define FILE_DEVICE_NULL 0x00000015 +#define FILE_DEVICE_PARALLEL_PORT 0x00000016 +#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017 +#define FILE_DEVICE_PRINTER 0x00000018 +#define FILE_DEVICE_SCANNER 0x00000019 +#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a +#define FILE_DEVICE_SERIAL_PORT 0x0000001b +#define FILE_DEVICE_SCREEN 0x0000001c +#define FILE_DEVICE_SOUND 0x0000001d +#define FILE_DEVICE_STREAMS 0x0000001e +#define FILE_DEVICE_TAPE 0x0000001f +#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020 +#define FILE_DEVICE_TRANSPORT 0x00000021 +#define FILE_DEVICE_UNKNOWN 0x00000022 +#define FILE_DEVICE_VIDEO 0x00000023 +#define FILE_DEVICE_VIRTUAL_DISK 0x00000024 +#define FILE_DEVICE_WAVE_IN 0x00000025 +#define FILE_DEVICE_WAVE_OUT 0x00000026 +#define FILE_DEVICE_8042_PORT 0x00000027 +#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 +#define FILE_DEVICE_BATTERY 0x00000029 +#define FILE_DEVICE_BUS_EXTENDER 0x0000002a +#define FILE_DEVICE_MODEM 0x0000002b +#define FILE_DEVICE_VDM 0x0000002c +#define FILE_DEVICE_MASS_STORAGE 0x0000002d +#define FILE_DEVICE_SMB 0x0000002e +#define FILE_DEVICE_KS 0x0000002f +#define FILE_DEVICE_CHANGER 0x00000030 +#define FILE_DEVICE_SMARTCARD 0x00000031 +#define FILE_DEVICE_ACPI 0x00000032 +#define FILE_DEVICE_DVD 0x00000033 +#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034 +#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035 +#define FILE_DEVICE_DFS_VOLUME 0x00000036 +#define FILE_DEVICE_SERENUM 0x00000037 +#define FILE_DEVICE_TERMSRV 0x00000038 +#define FILE_DEVICE_KSEC 0x00000039 +#define FILE_DEVICE_FIPS 0x0000003A +#define FILE_DEVICE_INFINIBAND 0x0000003B +#define FILE_DEVICE_VMBUS 0x0000003E +#define FILE_DEVICE_CRYPT_PROVIDER 0x0000003F +#define FILE_DEVICE_WPD 0x00000040 +#define FILE_DEVICE_BLUETOOTH 0x00000041 +#define FILE_DEVICE_MT_COMPOSITE 0x00000042 +#define FILE_DEVICE_MT_TRANSPORT 0x00000043 +#define FILE_DEVICE_BIOMETRIC 0x00000044 +#define FILE_DEVICE_PMI 0x00000045 +#define FILE_DEVICE_EHSTOR 0x00000046 +#define FILE_DEVICE_DEVAPI 0x00000047 +#define FILE_DEVICE_GPIO 0x00000048 +#define FILE_DEVICE_USBEX 0x00000049 +#define FILE_DEVICE_CONSOLE 0x00000050 +#define FILE_DEVICE_NFP 0x00000051 +#define FILE_DEVICE_SYSENV 0x00000052 +#define FILE_DEVICE_VIRTUAL_BLOCK 0x00000053 +#define FILE_DEVICE_POINT_OF_SERVICE 0x00000054 +#define FILE_DEVICE_STORAGE_REPLICATION 0x00000055 +#define FILE_DEVICE_TRUST_ENV 0x00000056 +#define FILE_DEVICE_UCM 0x00000057 +#define FILE_DEVICE_UCMTCPCI 0x00000058 +#define FILE_DEVICE_PERSISTENT_MEMORY 0x00000059 +#define FILE_DEVICE_NVDIMM 0x0000005a +#define FILE_DEVICE_HOLOGRAPHIC 0x0000005b +#define FILE_DEVICE_SDFXHCI 0x0000005c +#define FILE_DEVICE_UCMUCSI 0x0000005d +#define FILE_DEVICE_PRM 0x0000005e +#define FILE_DEVICE_EVENT_COLLECTOR 0x0000005f +#define FILE_DEVICE_USB4 0x00000060 +#define FILE_DEVICE_SOUNDWIRE 0x00000061 +#define CTL_CODE(DeviceType,Function,Method,Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) +#define DEVICE_TYPE_FROM_CTL_CODE(ctrlCode) (((DWORD)(ctrlCode & 0xffff0000)) >> 16) +#define METHOD_FROM_CTL_CODE(ctrlCode) ((DWORD)(ctrlCode & 3)) +#define METHOD_BUFFERED 0 +#define METHOD_IN_DIRECT 1 +#define METHOD_OUT_DIRECT 2 +#define METHOD_NEITHER 3 +#define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT +#define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT +#define FILE_ANY_ACCESS 0 +#define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS) +#define FILE_READ_ACCESS (0x0001) +#define FILE_WRITE_ACCESS (0x0002) +#define _NTDDSTOR_H_ +#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE +#define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_CHECK_VERIFY2 CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_LOAD_MEDIA2 CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_EJECTION_CONTROL CTL_CODE(IOCTL_STORAGE_BASE,0x0250,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_MCN_CONTROL CTL_CODE(IOCTL_STORAGE_BASE,0x0251,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE,0x0301,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0304,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_HOTPLUG_INFO CTL_CODE(IOCTL_STORAGE_BASE,0x0305,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_SET_HOTPLUG_INFO CTL_CODE(IOCTL_STORAGE_BASE,0x0306,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_BREAK_RESERVATION CTL_CODE(IOCTL_STORAGE_BASE,0x0405,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_PERSISTENT_RESERVE_IN CTL_CODE(IOCTL_STORAGE_BASE, 0x0406, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT CTL_CODE(IOCTL_STORAGE_BASE, 0x0407, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0420,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_NUMBER_EX CTL_CODE(IOCTL_STORAGE_BASE,0x0421,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE,0x0440,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_FAILURE_PREDICTION_CONFIG CTL_CODE(IOCTL_STORAGE_BASE,0x0441,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_COUNTERS CTL_CODE(IOCTL_STORAGE_BASE,0x442,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_READ_CAPACITY CTL_CODE(IOCTL_STORAGE_BASE,0x0450,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY CTL_CODE(IOCTL_STORAGE_BASE, 0x0470, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_DEVICE_TELEMETRY_NOTIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0471, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_DEVICE_TELEMETRY_QUERY_CAPS CTL_CODE(IOCTL_STORAGE_BASE, 0x0472, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY_RAW CTL_CODE(IOCTL_STORAGE_BASE, 0x0473, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD CTL_CODE(IOCTL_STORAGE_BASE, 0x0480, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_PROTOCOL_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x04F0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_SET_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x04FF, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES CTL_CODE(IOCTL_STORAGE_BASE, 0x0502, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_REINITIALIZE_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0590, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_GET_BC_PROPERTIES CTL_CODE(IOCTL_STORAGE_BASE, 0x0600, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_ALLOCATE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0601, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_FREE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0602, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_CHECK_PRIORITY_HINT_SUPPORT CTL_CODE(IOCTL_STORAGE_BASE, 0x0620, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_START_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0621, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_STOP_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0622, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define OBSOLETE_IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define OBSOLETE_IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_FIRMWARE_GET_INFO CTL_CODE(IOCTL_STORAGE_BASE, 0x0700, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_FIRMWARE_DOWNLOAD CTL_CODE(IOCTL_STORAGE_BASE, 0x0701, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_FIRMWARE_ACTIVATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0702, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_ENABLE_IDLE_POWER CTL_CODE(IOCTL_STORAGE_BASE, 0x0720, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_IDLE_POWERUP_REASON CTL_CODE(IOCTL_STORAGE_BASE, 0x0721, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_POWER_ACTIVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0722, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_POWER_IDLE CTL_CODE(IOCTL_STORAGE_BASE, 0x0723, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_EVENT_NOTIFICATION CTL_CODE(IOCTL_STORAGE_BASE, 0x0724, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_DEVICE_POWER_CAP CTL_CODE(IOCTL_STORAGE_BASE, 0x0725, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_RPMB_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x0726, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_ATTRIBUTE_MANAGEMENT CTL_CODE(IOCTL_STORAGE_BASE, 0x0727, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_DIAGNOSTIC CTL_CODE(IOCTL_STORAGE_BASE, 0x0728, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_PHYSICAL_ELEMENT_STATUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0729, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_REMOVE_ELEMENT_AND_TRUNCATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0730, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG CTL_CODE(IOCTL_STORAGE_BASE, 0x0731, METHOD_BUFFERED, FILE_ANY_ACCESS) +typedef struct _STORAGE_READ_CAPACITY { + ULONG Version; + ULONG Size; + ULONG BlockLength; + LARGE_INTEGER NumberOfBlocks; + LARGE_INTEGER DiskLength; +} STORAGE_READ_CAPACITY, *PSTORAGE_READ_CAPACITY; +#define IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define DeviceDsmActionFlag_NonDestructive 0x80000000 +#define DeviceDsmAction_None 0 +#define DeviceDsmAction_Trim 1 +#define DeviceDsmAction_Notification (2 | DeviceDsmActionFlag_NonDestructive) +#define IsDsmActionNonDestructive(x) ((BOOLEAN)(!!((x) & DeviceDsmActionFlag_NonDestructive))) +#define DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE __MSABI_LONG(0x00000001) +#define DEVICE_DSM_NOTIFY_FLAG_BEGIN 0x00000001 +#define DEVICE_DSM_NOTIFY_FLAG_END 0x00000002 +#define IOCTL_STORAGE_BC_VERSION 1 +#define STORAGE_PRIORITY_HINT_SUPPORTED 0x0001 + typedef DWORD DEVICE_DATA_MANAGEMENT_SET_ACTION; + typedef struct _DEVICE_MANAGE_DATA_SET_ATTRIBUTES { + DWORD Size; + DEVICE_DATA_MANAGEMENT_SET_ACTION Action; + DWORD Flags; + DWORD ParameterBlockOffset; + DWORD ParameterBlockLength; + DWORD DataSetRangesOffset; + DWORD DataSetRangesLength; + } DEVICE_MANAGE_DATA_SET_ATTRIBUTES, *PDEVICE_MANAGE_DATA_SET_ATTRIBUTES; + typedef struct _DEVICE_DATA_SET_RANGE { + LONGLONG StartingOffset; + DWORDLONG LengthInBytes; + } DEVICE_DATA_SET_RANGE, *PDEVICE_DATA_SET_RANGE; + typedef struct _DEVICE_DSM_NOTIFICATION_PARAMETERS { + ULONG Size; + ULONG Flags; + ULONG NumFileTypeIDs; + GUID FileTypeID[1]; + } DEVICE_DSM_NOTIFICATION_PARAMETERS, *PDEVICE_DSM_NOTIFICATION_PARAMETERS; + typedef struct _STORAGE_GET_BC_PROPERTIES_OUTPUT { + ULONG MaximumRequestsPerPeriod; + ULONG MinimumPeriod; + ULONGLONG MaximumRequestSize; + ULONG EstimatedTimePerRequest; + ULONG NumOutStandingRequests; + ULONGLONG RequestSize; + } STORAGE_GET_BC_PROPERTIES_OUTPUT, *PSTORAGE_GET_BC_PROPERTIES_OUTPUT; + typedef struct _STORAGE_ALLOCATE_BC_STREAM_INPUT { + ULONG Version; + ULONG RequestsPerPeriod; + ULONG Period; + BOOLEAN RetryFailures; + BOOLEAN Discardable; + BOOLEAN Reserved1[2]; + ULONG AccessType; + ULONG AccessMode; + } STORAGE_ALLOCATE_BC_STREAM_INPUT, *PSTORAGE_ALLOCATE_BC_STREAM_INPUT; + typedef struct _STORAGE_ALLOCATE_BC_STREAM_OUTPUT { + ULONGLONG RequestSize; + ULONG NumOutStandingRequests; + } STORAGE_ALLOCATE_BC_STREAM_OUTPUT, *PSTORAGE_ALLOCATE_BC_STREAM_OUTPUT; + typedef struct _STORAGE_PRIORITY_HINT_SUPPORT { + ULONG SupportFlags; + } STORAGE_PRIORITY_HINT_SUPPORT, *PSTORAGE_PRIORITY_HINT_SUPPORT; + typedef struct _STORAGE_MEDIA_SERIAL_NUMBER_DATA { + USHORT Reserved; + USHORT SerialNumberLength; + UCHAR SerialNumber[0]; + } STORAGE_MEDIA_SERIAL_NUMBER_DATA, *PSTORAGE_MEDIA_SERIAL_NUMBER_DATA; + typedef struct _PERSISTENT_RESERVE_COMMAND { + ULONG Version; + ULONG Size; + __extension__ union { + struct { + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + USHORT AllocationLength; + } PR_IN; + struct { + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR Type:4; + UCHAR Scope:4; + UCHAR ParameterList[0]; + } PR_OUT; + } ; + } PERSISTENT_RESERVE_COMMAND, *PPERSISTENT_RESERVE_COMMAND; + typedef struct _STORAGE_HOTPLUG_INFO { + DWORD Size; + BOOLEAN MediaRemovable; + BOOLEAN MediaHotplug; + BOOLEAN DeviceHotplug; + BOOLEAN WriteCacheEnableOverride; + } STORAGE_HOTPLUG_INFO,*PSTORAGE_HOTPLUG_INFO; + typedef struct _STORAGE_DEVICE_NUMBER { + DWORD DeviceType; + DWORD DeviceNumber; + DWORD PartitionNumber; + } STORAGE_DEVICE_NUMBER,*PSTORAGE_DEVICE_NUMBER; + typedef struct _STORAGE_DEVICE_NUMBERS { + DWORD Version; + DWORD Size; + DWORD NumberOfDevices; + STORAGE_DEVICE_NUMBER Devices[1]; + } STORAGE_DEVICE_NUMBERS,*PSTORAGE_DEVICE_NUMBERS; +#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT 0x1 +#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID 0x2 +#define STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID 0x4 + typedef struct _STORAGE_DEVICE_NUMBER_EX { + DWORD Version; + DWORD Size; + DWORD Flags; + DWORD DeviceType; + DWORD DeviceNumber; + GUID DeviceGuid; + DWORD PartitionNumber; + } STORAGE_DEVICE_NUMBER_EX,*PSTORAGE_DEVICE_NUMBER_EX; + typedef struct _STORAGE_BUS_RESET_REQUEST { + BYTE PathId; + } STORAGE_BUS_RESET_REQUEST,*PSTORAGE_BUS_RESET_REQUEST; + typedef struct STORAGE_BREAK_RESERVATION_REQUEST { + DWORD Length; + BYTE _unused; + BYTE PathId; + BYTE TargetId; + BYTE Lun; + } STORAGE_BREAK_RESERVATION_REQUEST,*PSTORAGE_BREAK_RESERVATION_REQUEST; + typedef struct _PREVENT_MEDIA_REMOVAL { + BOOLEAN PreventMediaRemoval; + } PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL; + typedef struct _CLASS_MEDIA_CHANGE_CONTEXT { + DWORD MediaChangeCount; + DWORD NewState; + } CLASS_MEDIA_CHANGE_CONTEXT,*PCLASS_MEDIA_CHANGE_CONTEXT; + typedef struct _TAPE_STATISTICS { + DWORD Version; + DWORD Flags; + LARGE_INTEGER RecoveredWrites; + LARGE_INTEGER UnrecoveredWrites; + LARGE_INTEGER RecoveredReads; + LARGE_INTEGER UnrecoveredReads; + BYTE CompressionRatioReads; + BYTE CompressionRatioWrites; + } TAPE_STATISTICS,*PTAPE_STATISTICS; +#define RECOVERED_WRITES_VALID 0x00000001 +#define UNRECOVERED_WRITES_VALID 0x00000002 +#define RECOVERED_READS_VALID 0x00000004 +#define UNRECOVERED_READS_VALID 0x00000008 +#define WRITE_COMPRESSION_INFO_VALID 0x00000010 +#define READ_COMPRESSION_INFO_VALID 0x00000020 + typedef struct _TAPE_GET_STATISTICS { + DWORD Operation; + } TAPE_GET_STATISTICS,*PTAPE_GET_STATISTICS; +#define TAPE_RETURN_STATISTICS __MSABI_LONG(0) +#define TAPE_RETURN_ENV_INFO __MSABI_LONG(1) +#define TAPE_RESET_STATISTICS __MSABI_LONG(2) + typedef enum _STORAGE_MEDIA_TYPE { + DDS_4mm = 0x20, + MiniQic, + Travan, + QIC, + MP_8mm, + AME_8mm, + AIT1_8mm, + DLT, + NCTP, + IBM_3480, + IBM_3490E, + IBM_Magstar_3590, + IBM_Magstar_MP, + STK_DATA_D3, + SONY_DTF, + DV_6mm, + DMI, + SONY_D2, + CLEANER_CARTRIDGE, + CD_ROM, + CD_R, + CD_RW, + DVD_ROM, + DVD_R, + DVD_RW, + MO_3_RW, + MO_5_WO, + MO_5_RW, + MO_5_LIMDOW, + PC_5_WO, + PC_5_RW, + PD_5_RW, + ABL_5_WO, + PINNACLE_APEX_5_RW, + SONY_12_WO, + PHILIPS_12_WO, + HITACHI_12_WO, + CYGNET_12_WO, + KODAK_14_WO, + MO_NFR_525, + NIKON_12_RW, + IOMEGA_ZIP, + IOMEGA_JAZ, + SYQUEST_EZ135, + SYQUEST_EZFLYER, + SYQUEST_SYJET, + AVATAR_F2, + MP2_8mm, + DST_S, + DST_M, + DST_L, + VXATape_1, + VXATape_2, + STK_9840, + LTO_Ultrium, + LTO_Accelis, + DVD_RAM, + AIT_8mm, + ADR_1, + ADR_2, + STK_9940, + SAIT, + VXATape + } STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE; +#define MEDIA_ERASEABLE 0x00000001 +#define MEDIA_WRITE_ONCE 0x00000002 +#define MEDIA_READ_ONLY 0x00000004 +#define MEDIA_READ_WRITE 0x00000008 +#define MEDIA_WRITE_PROTECTED 0x00000100 +#define MEDIA_CURRENTLY_MOUNTED 0x80000000 + typedef enum _STORAGE_BUS_TYPE { + BusTypeUnknown = 0x00, + BusTypeScsi = 0x1, + BusTypeAtapi = 0x2, + BusTypeAta = 0x3, + BusType1394 = 0x4, + BusTypeSsa = 0x5, + BusTypeFibre = 0x6, + BusTypeUsb = 0x7, + BusTypeRAID = 0x8, + BusTypeiScsi = 0x9, + BusTypeSas = 0xA, + BusTypeSata = 0xB, + BusTypeSd = 0xC, + BusTypeMmc = 0xD, + BusTypeMax, + BusTypeMaxReserved = 0x7F + } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE; +#define SupportsDeviceSharing(BusType) ((BusType == BusTypeScsi) || (BusType == BusTypeFibre) || (BusType == BusTypeiScsi) || (BusType == BusTypeSas) || (BusType == BusTypeSpaces)) + typedef struct _DEVICE_MEDIA_INFO { + union { + struct { + LARGE_INTEGER Cylinders; + STORAGE_MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; + DWORD NumberMediaSides; + DWORD MediaCharacteristics; + } DiskInfo; + struct { + LARGE_INTEGER Cylinders; + STORAGE_MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; + DWORD NumberMediaSides; + DWORD MediaCharacteristics; + } RemovableDiskInfo; + struct { + STORAGE_MEDIA_TYPE MediaType; + DWORD MediaCharacteristics; + DWORD CurrentBlockSize; + STORAGE_BUS_TYPE BusType; + union { + struct { + BYTE MediumType; + BYTE DensityCode; + } ScsiInformation; + } BusSpecificData; + } TapeInfo; + } DeviceSpecific; + } DEVICE_MEDIA_INFO,*PDEVICE_MEDIA_INFO; + typedef struct _GET_MEDIA_TYPES { + DWORD DeviceType; + DWORD MediaInfoCount; + DEVICE_MEDIA_INFO MediaInfo[1]; + } GET_MEDIA_TYPES,*PGET_MEDIA_TYPES; + typedef struct _STORAGE_PREDICT_FAILURE { + DWORD PredictFailure; + BYTE VendorSpecific[512]; + } STORAGE_PREDICT_FAILURE,*PSTORAGE_PREDICT_FAILURE; + typedef struct _STORAGE_FAILURE_PREDICTION_CONFIG { + DWORD Version; + DWORD Size; + BOOLEAN Set; + BOOLEAN Enabled; + WORD Reserved; + } STORAGE_FAILURE_PREDICTION_CONFIG,*PSTORAGE_FAILURE_PREDICTION_CONFIG; +#define STORAGE_FAILURE_PREDICTION_CONFIG_V1 1 +#define _NTDDDISK_H_ +#define IOCTL_DISK_BASE FILE_DEVICE_DISK +#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0x0000,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0003,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x0005,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE,0x0008,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE,0x0009,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,0x000a,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE,0x000b,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,0x000c,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,0x000d,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,0x000e,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,0x000f,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,0x0010,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x0018,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_CONTROLLER_NUMBER CTL_CODE(IOCTL_DISK_BASE,0x0011,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define SMART_GET_VERSION CTL_CODE(IOCTL_DISK_BASE,0x0020,METHOD_BUFFERED,FILE_READ_ACCESS) +#define SMART_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE,0x0021,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define SMART_RCV_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE,0x0022,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x0012,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x0013,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x0014,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x0015,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x0016,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x0017,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x0028,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_REASSIGN_BLOCKS_EX CTL_CODE(IOCTL_DISK_BASE,0x0029,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_UPDATE_DRIVE_SIZE CTL_CODE(IOCTL_DISK_BASE,0x0032,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x0034,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x0035,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x0036,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define OBSOLETE_DISK_GET_WRITE_CACHE_STATE CTL_CODE(IOCTL_DISK_BASE,0x0037,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0040,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x0050,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_RESET_SNAPSHOT_INFO CTL_CODE(IOCTL_DISK_BASE,0x0084,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_FORMAT_DRIVE CTL_CODE(IOCTL_DISK_BASE,0x00f3,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_SENSE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x00f8,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define PARTITION_ENTRY_UNUSED 0x00 +#define PARTITION_FAT_12 0x01 +#define PARTITION_XENIX_1 0x02 +#define PARTITION_XENIX_2 0x03 +#define PARTITION_FAT_16 0x04 +#define PARTITION_EXTENDED 0x05 +#define PARTITION_HUGE 0x06 +#define PARTITION_IFS 0x07 +#define PARTITION_OS2BOOTMGR 0x0A +#define PARTITION_FAT32 0x0B +#define PARTITION_FAT32_XINT13 0x0C +#define PARTITION_XINT13 0x0E +#define PARTITION_XINT13_EXTENDED 0x0F +#define PARTITION_PREP 0x41 +#define PARTITION_LDM 0x42 +#define PARTITION_UNIX 0x63 +#define VALID_NTFT 0xC0 +#define PARTITION_NTFT 0x80 +#define IsRecognizedPartition(PartitionType) (((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT_12)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_IFS)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_HUGE)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT32)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT32_XINT13)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_XINT13)) || ((PartitionType)==PARTITION_FAT_12) || ((PartitionType)==PARTITION_FAT_16) || ((PartitionType)==PARTITION_IFS) || ((PartitionType)==PARTITION_HUGE) || ((PartitionType)==PARTITION_FAT32) || ((PartitionType)==PARTITION_FAT32_XINT13) || ((PartitionType)==PARTITION_XINT13)) +#define IsContainerPartition(PartitionType) ((PartitionType==PARTITION_EXTENDED) || (PartitionType==PARTITION_XINT13_EXTENDED)) +#define IsFTPartition(PartitionType) (((PartitionType)&PARTITION_NTFT) && IsRecognizedPartition(PartitionType)) +typedef enum _MEDIA_TYPE { + Unknown,F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,F3_20Pt8_512,F3_720_512,F5_360_512,F5_320_512,F5_320_1024,F5_180_512,F5_160_512, + RemovableMedia,FixedMedia,F3_120M_512,F3_640_512,F5_640_512,F5_720_512,F3_1Pt2_512,F3_1Pt23_1024,F5_1Pt23_1024,F3_128Mb_512, + F3_230Mb_512,F8_256_128,F3_200Mb_512,F3_240M_512,F3_32M_512 +} MEDIA_TYPE,*PMEDIA_TYPE; +typedef struct _FORMAT_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; +} FORMAT_PARAMETERS,*PFORMAT_PARAMETERS; +typedef WORD BAD_TRACK_NUMBER; +typedef WORD *PBAD_TRACK_NUMBER; +typedef struct _FORMAT_EX_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD SectorNumber[1]; +} FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS; +typedef struct _DISK_GEOMETRY { + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; +} DISK_GEOMETRY,*PDISK_GEOMETRY; +#define WMI_DISK_GEOMETRY_GUID { 0x25007f51,0x57c2,0x11d1,{ 0xa5,0x28,0x0,0xa0,0xc9,0x6,0x29,0x10 } } +typedef struct _PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; +} PARTITION_INFORMATION,*PPARTITION_INFORMATION; +typedef struct _SET_PARTITION_INFORMATION { + BYTE PartitionType; +} SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION; +typedef struct _DRIVE_LAYOUT_INFORMATION { + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION PartitionEntry[1]; +} DRIVE_LAYOUT_INFORMATION,*PDRIVE_LAYOUT_INFORMATION; +typedef struct _VERIFY_INFORMATION { + LARGE_INTEGER StartingOffset; + DWORD Length; +} VERIFY_INFORMATION,*PVERIFY_INFORMATION; +typedef struct _REASSIGN_BLOCKS { + WORD Reserved; + WORD Count; + DWORD BlockNumber[1]; +} REASSIGN_BLOCKS,*PREASSIGN_BLOCKS; +#pragma pack(push,1) +typedef struct _REASSIGN_BLOCKS_EX { + WORD Reserved; + WORD Count; + LARGE_INTEGER BlockNumber[1]; +} REASSIGN_BLOCKS_EX,*PREASSIGN_BLOCKS_EX; +#pragma pack(pop) + +typedef enum _PARTITION_STYLE { + PARTITION_STYLE_MBR,PARTITION_STYLE_GPT,PARTITION_STYLE_RAW +} PARTITION_STYLE; +typedef struct _PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR Name [36]; +} PARTITION_INFORMATION_GPT,*PPARTITION_INFORMATION_GPT; +#define GPT_ATTRIBUTE_PLATFORM_REQUIRED (0x0000000000000001) +#define GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER (0x8000000000000000) +#define GPT_BASIC_DATA_ATTRIBUTE_HIDDEN (0x4000000000000000) +#define GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY (0x2000000000000000) +#define GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY (0x1000000000000000) +typedef struct _PARTITION_INFORMATION_MBR { + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; +} PARTITION_INFORMATION_MBR,*PPARTITION_INFORMATION_MBR; +typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR; +typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT; +typedef struct _SET_PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + __extension__ union { + SET_PARTITION_INFORMATION_MBR Mbr; + SET_PARTITION_INFORMATION_GPT Gpt; + } ; +} SET_PARTITION_INFORMATION_EX,*PSET_PARTITION_INFORMATION_EX; +typedef struct _CREATE_DISK_GPT { + GUID DiskId; + DWORD MaxPartitionCount; +} CREATE_DISK_GPT,*PCREATE_DISK_GPT; +typedef struct _CREATE_DISK_MBR { + DWORD Signature; +} CREATE_DISK_MBR,*PCREATE_DISK_MBR; +typedef struct _CREATE_DISK { + PARTITION_STYLE PartitionStyle; + __extension__ union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + } ; +} CREATE_DISK,*PCREATE_DISK; +typedef struct _GET_LENGTH_INFORMATION { + LARGE_INTEGER Length; +} GET_LENGTH_INFORMATION,*PGET_LENGTH_INFORMATION; +typedef struct _PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + __extension__ union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + } ; +} PARTITION_INFORMATION_EX,*PPARTITION_INFORMATION_EX; +typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + DWORD MaxPartitionCount; +} DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT; +typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { + DWORD Signature; +} DRIVE_LAYOUT_INFORMATION_MBR,*PDRIVE_LAYOUT_INFORMATION_MBR; +typedef struct _DRIVE_LAYOUT_INFORMATION_EX { + DWORD PartitionStyle; + DWORD PartitionCount; + __extension__ union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + } ; + PARTITION_INFORMATION_EX PartitionEntry[1]; +} DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX; +typedef enum _DETECTION_TYPE { + DetectNone,DetectInt13,DetectExInt13 +} DETECTION_TYPE; +typedef struct _DISK_INT13_INFO { + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; +} DISK_INT13_INFO,*PDISK_INT13_INFO; +typedef struct _DISK_EX_INT13_INFO { + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; +} DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO; +typedef struct _DISK_DETECTION_INFO { + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + __extension__ union { + __extension__ struct { + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; + } ; + } ; +} DISK_DETECTION_INFO,*PDISK_DETECTION_INFO; +typedef struct _DISK_PARTITION_INFO { + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + __extension__ union { + struct { + DWORD Signature; + DWORD CheckSum; + } Mbr; + struct { + GUID DiskId; + } Gpt; + } ; +} DISK_PARTITION_INFO,*PDISK_PARTITION_INFO; +#define DiskGeometryGetPartition(Geometry) ((PDISK_PARTITION_INFO)((Geometry)->Data)) +#define DiskGeometryGetDetect(Geometry) ((PDISK_DETECTION_INFO)(((DWORD_PTR)DiskGeometryGetPartition(Geometry)+ DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo))) +typedef struct _DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE Data[1]; +} DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX; +typedef struct _DISK_CONTROLLER_NUMBER { + DWORD ControllerNumber; + DWORD DiskNumber; +} DISK_CONTROLLER_NUMBER,*PDISK_CONTROLLER_NUMBER; +typedef enum { + EqualPriority,KeepPrefetchedData,KeepReadData +} DISK_CACHE_RETENTION_PRIORITY; +typedef struct _DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + __extension__ union { + struct { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } ScalarPrefetch; + struct { + WORD Minimum; + WORD Maximum; + } BlockPrefetch; + } ; +} DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION; +typedef struct _DISK_GROW_PARTITION { + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; +} DISK_GROW_PARTITION,*PDISK_GROW_PARTITION; +#define HIST_NO_OF_BUCKETS 24 +typedef struct _HISTOGRAM_BUCKET { + DWORD Reads; + DWORD Writes; +} HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET; +#define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET) +typedef struct _DISK_HISTOGRAM { + LARGE_INTEGER DiskSize; + LARGE_INTEGER Start; + LARGE_INTEGER End; + LARGE_INTEGER Average; + LARGE_INTEGER AverageRead; + LARGE_INTEGER AverageWrite; + DWORD Granularity; + DWORD Size; + DWORD ReadCount; + DWORD WriteCount; + PHISTOGRAM_BUCKET Histogram; +} DISK_HISTOGRAM,*PDISK_HISTOGRAM; +#define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM) +typedef struct _DISK_PERFORMANCE { + LARGE_INTEGER BytesRead; + LARGE_INTEGER BytesWritten; + LARGE_INTEGER ReadTime; + LARGE_INTEGER WriteTime; + LARGE_INTEGER IdleTime; + DWORD ReadCount; + DWORD WriteCount; + DWORD QueueDepth; + DWORD SplitCount; + LARGE_INTEGER QueryTime; + DWORD StorageDeviceNumber; + WCHAR StorageManagerName[8]; +} DISK_PERFORMANCE,*PDISK_PERFORMANCE; +typedef struct _DISK_RECORD { + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; +} DISK_RECORD,*PDISK_RECORD; +typedef struct _DISK_LOGGING { + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; +} DISK_LOGGING,*PDISK_LOGGING; +#define DISK_LOGGING_START 0 +#define DISK_LOGGING_STOP 1 +#define DISK_LOGGING_DUMP 2 +#define DISK_BINNING 3 +typedef enum _BIN_TYPES { + RequestSize,RequestLocation +} BIN_TYPES; +typedef struct _BIN_RANGE { + LARGE_INTEGER StartValue; + LARGE_INTEGER Length; +} BIN_RANGE,*PBIN_RANGE; +typedef struct _PERF_BIN { + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE BinsRanges[1]; +} PERF_BIN,*PPERF_BIN; +typedef struct _BIN_COUNT { + BIN_RANGE BinRange; + DWORD BinCount; +} BIN_COUNT,*PBIN_COUNT; +typedef struct _BIN_RESULTS { + DWORD NumberOfBins; + BIN_COUNT BinCounts[1]; +} BIN_RESULTS,*PBIN_RESULTS; +#pragma pack(push,1) +typedef struct _GETVERSIONINPARAMS { + BYTE bVersion; + BYTE bRevision; + BYTE bReserved; + BYTE bIDEDeviceMap; + DWORD fCapabilities; + DWORD dwReserved[4]; +} GETVERSIONINPARAMS,*PGETVERSIONINPARAMS,*LPGETVERSIONINPARAMS; +#pragma pack(pop) + +#define CAP_ATA_ID_CMD 1 +#define CAP_ATAPI_ID_CMD 2 +#define CAP_SMART_CMD 4 +#pragma pack(push,1) +typedef struct _IDEREGS { + BYTE bFeaturesReg; + BYTE bSectorCountReg; + BYTE bSectorNumberReg; + BYTE bCylLowReg; + BYTE bCylHighReg; + BYTE bDriveHeadReg; + BYTE bCommandReg; + BYTE bReserved; +} IDEREGS,*PIDEREGS,*LPIDEREGS; +#pragma pack(pop) + +#define ATAPI_ID_CMD 0xA1 +#define ID_CMD 0xEC +#define SMART_CMD 0xB0 +#define SMART_CYL_LOW 0x4F +#define SMART_CYL_HI 0xC2 +#pragma pack(push,1) +typedef struct _SENDCMDINPARAMS { + DWORD cBufferSize; + IDEREGS irDriveRegs; + BYTE bDriveNumber; + BYTE bReserved[3]; + DWORD dwReserved[4]; + BYTE bBuffer[1]; +} SENDCMDINPARAMS,*PSENDCMDINPARAMS,*LPSENDCMDINPARAMS; +#pragma pack(pop) + +#pragma pack(push,1) +typedef struct _DRIVERSTATUS { + BYTE bDriverError; + BYTE bIDEError; + BYTE bReserved[2]; + DWORD dwReserved[2]; +} DRIVERSTATUS,*PDRIVERSTATUS,*LPDRIVERSTATUS; +#pragma pack(pop) + +#define SMART_NO_ERROR 0 +#define SMART_IDE_ERROR 1 +#define SMART_INVALID_FLAG 2 +#define SMART_INVALID_COMMAND 3 +#define SMART_INVALID_BUFFER 4 +#define SMART_INVALID_DRIVE 5 +#define SMART_INVALID_IOCTL 6 +#define SMART_ERROR_NO_MEM 7 +#define SMART_INVALID_REGISTER 8 +#define SMART_NOT_SUPPORTED 9 +#define SMART_NO_IDE_DEVICE 10 +#define SMART_OFFLINE_ROUTINE_OFFLINE 0 +#define SMART_SHORT_SELFTEST_OFFLINE 1 +#define SMART_EXTENDED_SELFTEST_OFFLINE 2 +#define SMART_ABORT_OFFLINE_SELFTEST 127 +#define SMART_SHORT_SELFTEST_CAPTIVE 129 +#define SMART_EXTENDED_SELFTEST_CAPTIVE 130 +#pragma pack(push,1) +typedef struct _SENDCMDOUTPARAMS { + DWORD cBufferSize; + DRIVERSTATUS DriverStatus; + BYTE bBuffer[1]; +} SENDCMDOUTPARAMS,*PSENDCMDOUTPARAMS,*LPSENDCMDOUTPARAMS; +#pragma pack(pop) + +#define READ_ATTRIBUTE_BUFFER_SIZE 512 +#define IDENTIFY_BUFFER_SIZE 512 +#define READ_THRESHOLD_BUFFER_SIZE 512 +#define SMART_LOG_SECTOR_SIZE 512 +#define READ_ATTRIBUTES 0xD0 +#define READ_THRESHOLDS 0xD1 +#define ENABLE_DISABLE_AUTOSAVE 0xD2 +#define SAVE_ATTRIBUTE_VALUES 0xD3 +#define EXECUTE_OFFLINE_DIAGS 0xD4 +#define SMART_READ_LOG 0xD5 +#define SMART_WRITE_LOG 0xd6 +#define ENABLE_SMART 0xD8 +#define DISABLE_SMART 0xD9 +#define RETURN_SMART_STATUS 0xDA +#define ENABLE_DISABLE_AUTO_OFFLINE 0xDB +#define IOCTL_CHANGER_BASE FILE_DEVICE_CHANGER +#define IOCTL_CHANGER_GET_PARAMETERS CTL_CODE(IOCTL_CHANGER_BASE,0x0000,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_GET_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_GET_PRODUCT_DATA CTL_CODE(IOCTL_CHANGER_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_SET_ACCESS CTL_CODE(IOCTL_CHANGER_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_CHANGER_GET_ELEMENT_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0005,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_SET_POSITION CTL_CODE(IOCTL_CHANGER_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_EXCHANGE_MEDIUM CTL_CODE(IOCTL_CHANGER_BASE,0x0008,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_MOVE_MEDIUM CTL_CODE(IOCTL_CHANGER_BASE,0x0009,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_REINITIALIZE_TRANSPORT CTL_CODE(IOCTL_CHANGER_BASE,0x000A,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_CHANGER_QUERY_VOLUME_TAGS CTL_CODE(IOCTL_CHANGER_BASE,0x000B,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define MAX_VOLUME_ID_SIZE 36 +#define MAX_VOLUME_TEMPLATE_SIZE 40 +#define VENDOR_ID_LENGTH 8 +#define PRODUCT_ID_LENGTH 16 +#define REVISION_LENGTH 4 +#define SERIAL_NUMBER_LENGTH 32 +typedef enum _ELEMENT_TYPE { + AllElements,ChangerTransport,ChangerSlot,ChangerIEPort,ChangerDrive,ChangerDoor,ChangerKeypad,ChangerMaxElement +} ELEMENT_TYPE,*PELEMENT_TYPE; +typedef struct _CHANGER_ELEMENT { + ELEMENT_TYPE ElementType; + DWORD ElementAddress; +} CHANGER_ELEMENT,*PCHANGER_ELEMENT; +typedef struct _CHANGER_ELEMENT_LIST { + CHANGER_ELEMENT Element; + DWORD NumberOfElements; +} CHANGER_ELEMENT_LIST ,*PCHANGER_ELEMENT_LIST; +#define CHANGER_BAR_CODE_SCANNER_INSTALLED 0x00000001 +#define CHANGER_INIT_ELEM_STAT_WITH_RANGE 0x00000002 +#define CHANGER_CLOSE_IEPORT 0x00000004 +#define CHANGER_OPEN_IEPORT 0x00000008 +#define CHANGER_STATUS_NON_VOLATILE 0x00000010 +#define CHANGER_EXCHANGE_MEDIA 0x00000020 +#define CHANGER_CLEANER_SLOT 0x00000040 +#define CHANGER_LOCK_UNLOCK 0x00000080 +#define CHANGER_CARTRIDGE_MAGAZINE 0x00000100 +#define CHANGER_MEDIUM_FLIP 0x00000200 +#define CHANGER_POSITION_TO_ELEMENT 0x00000400 +#define CHANGER_REPORT_IEPORT_STATE 0x00000800 +#define CHANGER_STORAGE_DRIVE 0x00001000 +#define CHANGER_STORAGE_IEPORT 0x00002000 +#define CHANGER_STORAGE_SLOT 0x00004000 +#define CHANGER_STORAGE_TRANSPORT 0x00008000 +#define CHANGER_DRIVE_CLEANING_REQUIRED 0x00010000 +#define CHANGER_PREDISMOUNT_EJECT_REQUIRED 0x00020000 +#define CHANGER_CLEANER_ACCESS_NOT_VALID 0x00040000 +#define CHANGER_PREMOUNT_EJECT_REQUIRED 0x00080000 +#define CHANGER_VOLUME_IDENTIFICATION 0x00100000 +#define CHANGER_VOLUME_SEARCH 0x00200000 +#define CHANGER_VOLUME_ASSERT 0x00400000 +#define CHANGER_VOLUME_REPLACE 0x00800000 +#define CHANGER_VOLUME_UNDEFINE 0x01000000 +#define CHANGER_SERIAL_NUMBER_VALID 0x04000000 +#define CHANGER_DEVICE_REINITIALIZE_CAPABLE 0x08000000 +#define CHANGER_KEYPAD_ENABLE_DISABLE 0x10000000 +#define CHANGER_DRIVE_EMPTY_ON_DOOR_ACCESS 0x20000000 +#define CHANGER_RESERVED_BIT 0x80000000 +#define CHANGER_PREDISMOUNT_ALIGN_TO_SLOT 0x80000001 +#define CHANGER_PREDISMOUNT_ALIGN_TO_DRIVE 0x80000002 +#define CHANGER_CLEANER_AUTODISMOUNT 0x80000004 +#define CHANGER_TRUE_EXCHANGE_CAPABLE 0x80000008 +#define CHANGER_SLOTS_USE_TRAYS 0x80000010 +#define CHANGER_RTN_MEDIA_TO_ORIGINAL_ADDR 0x80000020 +#define CHANGER_CLEANER_OPS_NOT_SUPPORTED 0x80000040 +#define CHANGER_IEPORT_USER_CONTROL_OPEN 0x80000080 +#define CHANGER_IEPORT_USER_CONTROL_CLOSE 0x80000100 +#define CHANGER_MOVE_EXTENDS_IEPORT 0x80000200 +#define CHANGER_MOVE_RETRACTS_IEPORT 0x80000400 +#define CHANGER_TO_TRANSPORT 0x01 +#define CHANGER_TO_SLOT 0x02 +#define CHANGER_TO_IEPORT 0x04 +#define CHANGER_TO_DRIVE 0x08 +#define LOCK_UNLOCK_IEPORT 0x01 +#define LOCK_UNLOCK_DOOR 0x02 +#define LOCK_UNLOCK_KEYPAD 0x04 +typedef struct _GET_CHANGER_PARAMETERS { + DWORD Size; + WORD NumberTransportElements; + WORD NumberStorageElements; + WORD NumberCleanerSlots; + WORD NumberIEElements; + WORD NumberDataTransferElements; + WORD NumberOfDoors; + WORD FirstSlotNumber; + WORD FirstDriveNumber; + WORD FirstTransportNumber; + WORD FirstIEPortNumber; + WORD FirstCleanerSlotAddress; + WORD MagazineSize; + DWORD DriveCleanTimeout; + DWORD Features0; + DWORD Features1; + BYTE MoveFromTransport; + BYTE MoveFromSlot; + BYTE MoveFromIePort; + BYTE MoveFromDrive; + BYTE ExchangeFromTransport; + BYTE ExchangeFromSlot; + BYTE ExchangeFromIePort; + BYTE ExchangeFromDrive; + BYTE LockUnlockCapabilities; + BYTE PositionCapabilities; + BYTE Reserved1[2]; + DWORD Reserved2[2]; +} GET_CHANGER_PARAMETERS,*PGET_CHANGER_PARAMETERS; +typedef struct _CHANGER_PRODUCT_DATA { + BYTE VendorId[8]; + BYTE ProductId[16]; + BYTE Revision[4]; + BYTE SerialNumber[32]; + BYTE DeviceType; +} CHANGER_PRODUCT_DATA,*PCHANGER_PRODUCT_DATA; +#define LOCK_ELEMENT 0 +#define UNLOCK_ELEMENT 1 +#define EXTEND_IEPORT 2 +#define RETRACT_IEPORT 3 +typedef struct _CHANGER_SET_ACCESS { + CHANGER_ELEMENT Element; + DWORD Control; +} CHANGER_SET_ACCESS,*PCHANGER_SET_ACCESS; +typedef struct _CHANGER_READ_ELEMENT_STATUS { + CHANGER_ELEMENT_LIST ElementList; + BOOLEAN VolumeTagInfo; +} CHANGER_READ_ELEMENT_STATUS,*PCHANGER_READ_ELEMENT_STATUS; +typedef struct _CHANGER_ELEMENT_STATUS { + CHANGER_ELEMENT Element; + CHANGER_ELEMENT SrcElementAddress; + DWORD Flags; + DWORD ExceptionCode; + BYTE TargetId; + BYTE Lun; + WORD Reserved; + BYTE PrimaryVolumeID[36]; + BYTE AlternateVolumeID[36]; +} CHANGER_ELEMENT_STATUS,*PCHANGER_ELEMENT_STATUS; +typedef struct _CHANGER_ELEMENT_STATUS_EX { + CHANGER_ELEMENT Element; + CHANGER_ELEMENT SrcElementAddress; + DWORD Flags; + DWORD ExceptionCode; + BYTE TargetId; + BYTE Lun; + WORD Reserved; + BYTE PrimaryVolumeID[36]; + BYTE AlternateVolumeID[36]; + BYTE VendorIdentification[8]; + BYTE ProductIdentification[16]; + BYTE SerialNumber[32]; +} CHANGER_ELEMENT_STATUS_EX,*PCHANGER_ELEMENT_STATUS_EX; +#define ELEMENT_STATUS_FULL 0x00000001 +#define ELEMENT_STATUS_IMPEXP 0x00000002 +#define ELEMENT_STATUS_EXCEPT 0x00000004 +#define ELEMENT_STATUS_ACCESS 0x00000008 +#define ELEMENT_STATUS_EXENAB 0x00000010 +#define ELEMENT_STATUS_INENAB 0x00000020 +#define ELEMENT_STATUS_PRODUCT_DATA 0x00000040 +#define ELEMENT_STATUS_LUN_VALID 0x00001000 +#define ELEMENT_STATUS_ID_VALID 0x00002000 +#define ELEMENT_STATUS_NOT_BUS 0x00008000 +#define ELEMENT_STATUS_INVERT 0x00400000 +#define ELEMENT_STATUS_SVALID 0x00800000 +#define ELEMENT_STATUS_PVOLTAG 0x10000000 +#define ELEMENT_STATUS_AVOLTAG 0x20000000 +#define ERROR_LABEL_UNREADABLE 0x00000001 +#define ERROR_LABEL_QUESTIONABLE 0x00000002 +#define ERROR_SLOT_NOT_PRESENT 0x00000004 +#define ERROR_DRIVE_NOT_INSTALLED 0x00000008 +#define ERROR_TRAY_MALFUNCTION 0x00000010 +#define ERROR_INIT_STATUS_NEEDED 0x00000011 +#define ERROR_UNHANDLED_ERROR 0xFFFFFFFF +typedef struct _CHANGER_INITIALIZE_ELEMENT_STATUS { + CHANGER_ELEMENT_LIST ElementList; + BOOLEAN BarCodeScan; +} CHANGER_INITIALIZE_ELEMENT_STATUS,*PCHANGER_INITIALIZE_ELEMENT_STATUS; +typedef struct _CHANGER_SET_POSITION { + CHANGER_ELEMENT Transport; + CHANGER_ELEMENT Destination; + BOOLEAN Flip; +} CHANGER_SET_POSITION,*PCHANGER_SET_POSITION; +typedef struct _CHANGER_EXCHANGE_MEDIUM { + CHANGER_ELEMENT Transport; + CHANGER_ELEMENT Source; + CHANGER_ELEMENT Destination1; + CHANGER_ELEMENT Destination2; + BOOLEAN Flip1; + BOOLEAN Flip2; +} CHANGER_EXCHANGE_MEDIUM,*PCHANGER_EXCHANGE_MEDIUM; +typedef struct _CHANGER_MOVE_MEDIUM { + CHANGER_ELEMENT Transport; + CHANGER_ELEMENT Source; + CHANGER_ELEMENT Destination; + BOOLEAN Flip; +} CHANGER_MOVE_MEDIUM,*PCHANGER_MOVE_MEDIUM; +typedef struct _CHANGER_SEND_VOLUME_TAG_INFORMATION { + CHANGER_ELEMENT StartingElement; + DWORD ActionCode; + BYTE VolumeIDTemplate[40]; +} CHANGER_SEND_VOLUME_TAG_INFORMATION,*PCHANGER_SEND_VOLUME_TAG_INFORMATION; +typedef struct _READ_ELEMENT_ADDRESS_INFO { + DWORD NumberOfElements; + CHANGER_ELEMENT_STATUS ElementStatus[1]; +} READ_ELEMENT_ADDRESS_INFO,*PREAD_ELEMENT_ADDRESS_INFO; +#define SEARCH_ALL 0x0 +#define SEARCH_PRIMARY 0x1 +#define SEARCH_ALTERNATE 0x2 +#define SEARCH_ALL_NO_SEQ 0x4 +#define SEARCH_PRI_NO_SEQ 0x5 +#define SEARCH_ALT_NO_SEQ 0x6 +#define ASSERT_PRIMARY 0x8 +#define ASSERT_ALTERNATE 0x9 +#define REPLACE_PRIMARY 0xA +#define REPLACE_ALTERNATE 0xB +#define UNDEFINE_PRIMARY 0xC +#define UNDEFINE_ALTERNATE 0xD +typedef enum _CHANGER_DEVICE_PROBLEM_TYPE { + DeviceProblemNone,DeviceProblemHardware,DeviceProblemCHMError,DeviceProblemDoorOpen,DeviceProblemCalibrationError,DeviceProblemTargetFailure, + DeviceProblemCHMMoveError,DeviceProblemCHMZeroError,DeviceProblemCartridgeInsertError,DeviceProblemPositionError,DeviceProblemSensorError, + DeviceProblemCartridgeEjectError,DeviceProblemGripperError,DeviceProblemDriveError +} CHANGER_DEVICE_PROBLEM_TYPE,*PCHANGER_DEVICE_PROBLEM_TYPE; +#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_SERENUM_EXPOSE_HARDWARE CTL_CODE(FILE_DEVICE_SERENUM,128,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_SERENUM_REMOVE_HARDWARE CTL_CODE(FILE_DEVICE_SERENUM,129,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_SERENUM_PORT_DESC CTL_CODE(FILE_DEVICE_SERENUM,130,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_SERENUM_GET_PORT_NAME CTL_CODE(FILE_DEVICE_SERENUM,131,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define SERIAL_LSRMST_ESCAPE ((BYTE)0x00) +#define SERIAL_LSRMST_LSR_DATA ((BYTE)0x01) +#define SERIAL_LSRMST_LSR_NODATA ((BYTE)0x02) +#define SERIAL_LSRMST_MST ((BYTE)0x03) +#define SERIAL_IOC_FCR_FIFO_ENABLE ((DWORD)0x00000001) +#define SERIAL_IOC_FCR_RCVR_RESET ((DWORD)0x00000002) +#define SERIAL_IOC_FCR_XMIT_RESET ((DWORD)0x00000004) +#define SERIAL_IOC_FCR_DMA_MODE ((DWORD)0x00000008) +#define SERIAL_IOC_FCR_RES1 ((DWORD)0x00000010) +#define SERIAL_IOC_FCR_RES2 ((DWORD)0x00000020) +#define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB ((DWORD)0x00000040) +#define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB ((DWORD)0x00000080) +#define SERIAL_IOC_MCR_DTR ((DWORD)0x00000001) +#define SERIAL_IOC_MCR_RTS ((DWORD)0x00000002) +#define SERIAL_IOC_MCR_OUT1 ((DWORD)0x00000004) +#define SERIAL_IOC_MCR_OUT2 ((DWORD)0x00000008) +#define SERIAL_IOC_MCR_LOOP ((DWORD)0x00000010) +#define _FILESYSTEMFSCTL_ +#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,0,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,1,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,2,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,3,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM,4,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,5,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,10,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,11,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,12,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,14,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_SET_BOOTLOADER_ACCESSED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,19,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_MARK_AS_SYSTEM_HIVE FSCTL_SET_BOOTLOADER_ACCESSED +#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,20,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,21,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM,22,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,23,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,24,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,30,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,35,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,38,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +#define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,39,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,40,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,41,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,42,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,43,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,44,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,45,METHOD_NEITHER,FILE_READ_DATA) +#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,46,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,47,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +#define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,48,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,49,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,50,METHOD_BUFFERED,FILE_WRITE_DATA) +#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,51,METHOD_NEITHER,FILE_READ_DATA) +#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,52,METHOD_BUFFERED,FILE_WRITE_DATA) +#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,53,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,54,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,55,METHOD_NEITHER,FILE_SPECIAL_ACCESS) +#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,56,METHOD_NEITHER,FILE_SPECIAL_ACCESS) +#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,57,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,58,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,59,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,60,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,61,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,62,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,63,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,64,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,65,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM,66,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,68,METHOD_NEITHER,FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,69,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM,71,METHOD_OUT_DIRECT,FILE_READ_DATA) +#define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM,72,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) +typedef struct _PATHNAME_BUFFER { + DWORD PathNameLength; + WCHAR Name[1]; +} PATHNAME_BUFFER,*PPATHNAME_BUFFER; +typedef struct _FSCTL_QUERY_FAT_BPB_BUFFER { + BYTE First0x24BytesOfBootSector[0x24]; +} FSCTL_QUERY_FAT_BPB_BUFFER,*PFSCTL_QUERY_FAT_BPB_BUFFER; +typedef struct { + LARGE_INTEGER VolumeSerialNumber; + LARGE_INTEGER NumberSectors; + LARGE_INTEGER TotalClusters; + LARGE_INTEGER FreeClusters; + LARGE_INTEGER TotalReserved; + DWORD BytesPerSector; + DWORD BytesPerCluster; + DWORD BytesPerFileRecordSegment; + DWORD ClustersPerFileRecordSegment; + LARGE_INTEGER MftValidDataLength; + LARGE_INTEGER MftStartLcn; + LARGE_INTEGER Mft2StartLcn; + LARGE_INTEGER MftZoneStart; + LARGE_INTEGER MftZoneEnd; +} NTFS_VOLUME_DATA_BUFFER,*PNTFS_VOLUME_DATA_BUFFER; +typedef struct { + DWORD ByteCount; + WORD MajorVersion; + WORD MinorVersion; +} NTFS_EXTENDED_VOLUME_DATA,*PNTFS_EXTENDED_VOLUME_DATA; +typedef struct { + LARGE_INTEGER StartingLcn; +} STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER; +typedef struct { + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE Buffer[1]; +} VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER; +typedef struct { + LARGE_INTEGER StartingVcn; +} STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER; +typedef struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + struct { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } Extents[1]; +} RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER; +typedef struct { + LARGE_INTEGER FileReferenceNumber; +} NTFS_FILE_RECORD_INPUT_BUFFER,*PNTFS_FILE_RECORD_INPUT_BUFFER; +typedef struct { + LARGE_INTEGER FileReferenceNumber; + DWORD FileRecordLength; + BYTE FileRecordBuffer[1]; +} NTFS_FILE_RECORD_OUTPUT_BUFFER,*PNTFS_FILE_RECORD_OUTPUT_BUFFER; +typedef struct { + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} MOVE_FILE_DATA,*PMOVE_FILE_DATA; +typedef struct _MOVE_FILE_RECORD_DATA { + HANDLE FileHandle; + LARGE_INTEGER SourceFileRecord; + LARGE_INTEGER TargetFileRecord; +} MOVE_FILE_RECORD_DATA, *PMOVE_FILE_RECORD_DATA; +typedef struct _MOVE_FILE_DATA32 { + UINT32 FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} MOVE_FILE_DATA32,*PMOVE_FILE_DATA32; +typedef struct { + DWORD Restart; + SID Sid; +} FIND_BY_SID_DATA,*PFIND_BY_SID_DATA; +typedef struct { + DWORD NextEntryOffset; + DWORD FileIndex; + DWORD FileNameLength; + WCHAR FileName[1]; +} FIND_BY_SID_OUTPUT,*PFIND_BY_SID_OUTPUT; +typedef struct { + DWORDLONG StartFileReferenceNumber; + USN LowUsn; + USN HighUsn; +} MFT_ENUM_DATA,*PMFT_ENUM_DATA; +typedef struct { + DWORDLONG MaximumSize; + DWORDLONG AllocationDelta; +} CREATE_USN_JOURNAL_DATA,*PCREATE_USN_JOURNAL_DATA; +typedef struct { + USN StartUsn; + DWORD ReasonMask; + DWORD ReturnOnlyOnClose; + DWORDLONG Timeout; + DWORDLONG BytesToWaitFor; + DWORDLONG UsnJournalID; +} READ_USN_JOURNAL_DATA,*PREAD_USN_JOURNAL_DATA; +typedef struct { + DWORD RecordLength; + WORD MajorVersion; + WORD MinorVersion; + DWORDLONG FileReferenceNumber; + DWORDLONG ParentFileReferenceNumber; + USN Usn; + LARGE_INTEGER TimeStamp; + DWORD Reason; + DWORD SourceInfo; + DWORD SecurityId; + DWORD FileAttributes; + WORD FileNameLength; + WORD FileNameOffset; + WCHAR FileName[1]; +} USN_RECORD,*PUSN_RECORD; +#define USN_PAGE_SIZE (0x1000) +#define USN_REASON_DATA_OVERWRITE (0x00000001) +#define USN_REASON_DATA_EXTEND (0x00000002) +#define USN_REASON_DATA_TRUNCATION (0x00000004) +#define USN_REASON_NAMED_DATA_OVERWRITE (0x00000010) +#define USN_REASON_NAMED_DATA_EXTEND (0x00000020) +#define USN_REASON_NAMED_DATA_TRUNCATION (0x00000040) +#define USN_REASON_FILE_CREATE (0x00000100) +#define USN_REASON_FILE_DELETE (0x00000200) +#define USN_REASON_EA_CHANGE (0x00000400) +#define USN_REASON_SECURITY_CHANGE (0x00000800) +#define USN_REASON_RENAME_OLD_NAME (0x00001000) +#define USN_REASON_RENAME_NEW_NAME (0x00002000) +#define USN_REASON_INDEXABLE_CHANGE (0x00004000) +#define USN_REASON_BASIC_INFO_CHANGE (0x00008000) +#define USN_REASON_HARD_LINK_CHANGE (0x00010000) +#define USN_REASON_COMPRESSION_CHANGE (0x00020000) +#define USN_REASON_ENCRYPTION_CHANGE (0x00040000) +#define USN_REASON_OBJECT_ID_CHANGE (0x00080000) +#define USN_REASON_REPARSE_POINT_CHANGE (0x00100000) +#define USN_REASON_STREAM_CHANGE (0x00200000) +#define USN_REASON_TRANSACTED_CHANGE (0x00400000) +#define USN_REASON_CLOSE (0x80000000) +typedef struct { + DWORDLONG UsnJournalID; + USN FirstUsn; + USN NextUsn; + USN LowestValidUsn; + USN MaxUsn; + DWORDLONG MaximumSize; + DWORDLONG AllocationDelta; +} USN_JOURNAL_DATA,*PUSN_JOURNAL_DATA; +typedef struct { + DWORDLONG UsnJournalID; + DWORD DeleteFlags; +} DELETE_USN_JOURNAL_DATA,*PDELETE_USN_JOURNAL_DATA; +#define USN_DELETE_FLAG_DELETE (0x00000001) +#define USN_DELETE_FLAG_NOTIFY (0x00000002) +#define USN_DELETE_VALID_FLAGS (0x00000003) +typedef struct { + DWORD UsnSourceInfo; + HANDLE VolumeHandle; + DWORD HandleInfo; +} MARK_HANDLE_INFO,*PMARK_HANDLE_INFO; +typedef struct { + DWORD UsnSourceInfo; + UINT32 VolumeHandle; + DWORD HandleInfo; +} MARK_HANDLE_INFO32,*PMARK_HANDLE_INFO32; +#define USN_SOURCE_DATA_MANAGEMENT (0x00000001) +#define USN_SOURCE_AUXILIARY_DATA (0x00000002) +#define USN_SOURCE_REPLICATION_MANAGEMENT (0x00000004) +#define MARK_HANDLE_PROTECT_CLUSTERS (0x00000001) +#define MARK_HANDLE_TXF_SYSTEM_LOG (0x00000004) +#define MARK_HANDLE_NOT_TXF_SYSTEM_LOG (0x00000008) +#define MARK_HANDLE_REALTIME (0x00000020) +#define MARK_HANDLE_NOT_REALTIME (0x00000040) +typedef struct { + ACCESS_MASK DesiredAccess; + DWORD SecurityIds[1]; +} BULK_SECURITY_TEST_DATA,*PBULK_SECURITY_TEST_DATA; +#define VOLUME_IS_DIRTY (0x00000001) +#define VOLUME_UPGRADE_SCHEDULED (0x00000002) +#define VOLUME_SESSION_OPEN (0x00000004) +typedef struct _FILE_PREFETCH { + DWORD Type; + DWORD Count; + DWORDLONG Prefetch[1]; +} FILE_PREFETCH,*PFILE_PREFETCH; +typedef struct _FILE_PREFETCH_EX { + ULONG Type; + ULONG Count; + PVOID Context; + ULONGLONG Prefetch[1]; +} FILE_PREFETCH_EX, *PFILE_PREFETCH_EX; +#define FILE_PREFETCH_TYPE_FOR_CREATE 0x1 +#define FILE_PREFETCH_TYPE_FOR_DIRENUM 0x2 +#define FILE_PREFETCH_TYPE_FOR_CREATE_EX 0x3 +#define FILE_PREFETCH_TYPE_FOR_DIRENUM_EX 0x4 +#define FILE_PREFETCH_TYPE_MAX 0x4 +typedef struct _FILESYSTEM_STATISTICS { + WORD FileSystemType; + WORD Version; + DWORD SizeOfCompleteStructure; + DWORD UserFileReads; + DWORD UserFileReadBytes; + DWORD UserDiskReads; + DWORD UserFileWrites; + DWORD UserFileWriteBytes; + DWORD UserDiskWrites; + DWORD MetaDataReads; + DWORD MetaDataReadBytes; + DWORD MetaDataDiskReads; + DWORD MetaDataWrites; + DWORD MetaDataWriteBytes; + DWORD MetaDataDiskWrites; +} FILESYSTEM_STATISTICS,*PFILESYSTEM_STATISTICS; +#define FILESYSTEM_STATISTICS_TYPE_NTFS 1 +#define FILESYSTEM_STATISTICS_TYPE_FAT 2 +#define FILESYSTEM_STATISTICS_TYPE_EXFAT 3 +typedef struct _FAT_STATISTICS { + DWORD CreateHits; + DWORD SuccessfulCreates; + DWORD FailedCreates; + DWORD NonCachedReads; + DWORD NonCachedReadBytes; + DWORD NonCachedWrites; + DWORD NonCachedWriteBytes; + DWORD NonCachedDiskReads; + DWORD NonCachedDiskWrites; +} FAT_STATISTICS,*PFAT_STATISTICS; +typedef struct _EXFAT_STATISTICS { + DWORD CreateHits; + DWORD SuccessfulCreates; + DWORD FailedCreates; + DWORD NonCachedReads; + DWORD NonCachedReadBytes; + DWORD NonCachedWrites; + DWORD NonCachedWriteBytes; + DWORD NonCachedDiskReads; + DWORD NonCachedDiskWrites; +} EXFAT_STATISTICS, *PEXFAT_STATISTICS; +typedef struct _NTFS_STATISTICS { + DWORD LogFileFullExceptions; + DWORD OtherExceptions; + DWORD MftReads; + DWORD MftReadBytes; + DWORD MftWrites; + DWORD MftWriteBytes; + struct { + WORD Write; + WORD Create; + WORD SetInfo; + WORD Flush; + } MftWritesUserLevel; + WORD MftWritesFlushForLogFileFull; + WORD MftWritesLazyWriter; + WORD MftWritesUserRequest; + DWORD Mft2Writes; + DWORD Mft2WriteBytes; + struct { + WORD Write; + WORD Create; + WORD SetInfo; + WORD Flush; + } Mft2WritesUserLevel; + WORD Mft2WritesFlushForLogFileFull; + WORD Mft2WritesLazyWriter; + WORD Mft2WritesUserRequest; + DWORD RootIndexReads; + DWORD RootIndexReadBytes; + DWORD RootIndexWrites; + DWORD RootIndexWriteBytes; + DWORD BitmapReads; + DWORD BitmapReadBytes; + DWORD BitmapWrites; + DWORD BitmapWriteBytes; + WORD BitmapWritesFlushForLogFileFull; + WORD BitmapWritesLazyWriter; + WORD BitmapWritesUserRequest; + struct { + WORD Write; + WORD Create; + WORD SetInfo; + } BitmapWritesUserLevel; + DWORD MftBitmapReads; + DWORD MftBitmapReadBytes; + DWORD MftBitmapWrites; + DWORD MftBitmapWriteBytes; + WORD MftBitmapWritesFlushForLogFileFull; + WORD MftBitmapWritesLazyWriter; + WORD MftBitmapWritesUserRequest; + struct { + WORD Write; + WORD Create; + WORD SetInfo; + WORD Flush; + } MftBitmapWritesUserLevel; + DWORD UserIndexReads; + DWORD UserIndexReadBytes; + DWORD UserIndexWrites; + DWORD UserIndexWriteBytes; + DWORD LogFileReads; + DWORD LogFileReadBytes; + DWORD LogFileWrites; + DWORD LogFileWriteBytes; + struct { + DWORD Calls; + DWORD Clusters; + DWORD Hints; + DWORD RunsReturned; + DWORD HintsHonored; + DWORD HintsClusters; + DWORD Cache; + DWORD CacheClusters; + DWORD CacheMiss; + DWORD CacheMissClusters; + } Allocate; +} NTFS_STATISTICS,*PNTFS_STATISTICS; +typedef struct _FILE_OBJECTID_BUFFER { + BYTE ObjectId[16]; + __extension__ union { + __extension__ struct { + BYTE BirthVolumeId[16]; + BYTE BirthObjectId[16]; + BYTE DomainId[16]; + } ; + BYTE ExtendedInfo[48]; + } ; +} FILE_OBJECTID_BUFFER,*PFILE_OBJECTID_BUFFER; +typedef struct _FILE_SET_SPARSE_BUFFER { + BOOLEAN SetSparse; +} FILE_SET_SPARSE_BUFFER,*PFILE_SET_SPARSE_BUFFER; +typedef struct _FILE_ZERO_DATA_INFORMATION { + LARGE_INTEGER FileOffset; + LARGE_INTEGER BeyondFinalZero; +} FILE_ZERO_DATA_INFORMATION,*PFILE_ZERO_DATA_INFORMATION; +typedef struct _FILE_ALLOCATED_RANGE_BUFFER { + LARGE_INTEGER FileOffset; + LARGE_INTEGER Length; +} FILE_ALLOCATED_RANGE_BUFFER,*PFILE_ALLOCATED_RANGE_BUFFER; +typedef struct _ENCRYPTION_BUFFER { + DWORD EncryptionOperation; + BYTE Private[1]; +} ENCRYPTION_BUFFER,*PENCRYPTION_BUFFER; +#define FILE_SET_ENCRYPTION 0x00000001 +#define FILE_CLEAR_ENCRYPTION 0x00000002 +#define STREAM_SET_ENCRYPTION 0x00000003 +#define STREAM_CLEAR_ENCRYPTION 0x00000004 +#define MAXIMUM_ENCRYPTION_VALUE 0x00000004 +typedef struct _DECRYPTION_STATUS_BUFFER { + BOOLEAN NoEncryptedStreams; +} DECRYPTION_STATUS_BUFFER,*PDECRYPTION_STATUS_BUFFER; +#define ENCRYPTION_FORMAT_DEFAULT (0x01) +#define COMPRESSION_FORMAT_SPARSE (0x4000) +typedef struct _REQUEST_RAW_ENCRYPTED_DATA { + LONGLONG FileOffset; + DWORD Length; +} REQUEST_RAW_ENCRYPTED_DATA,*PREQUEST_RAW_ENCRYPTED_DATA; +typedef struct _ENCRYPTED_DATA_INFO { + DWORDLONG StartingFileOffset; + DWORD OutputBufferOffset; + DWORD BytesWithinFileSize; + DWORD BytesWithinValidDataLength; + WORD CompressionFormat; + BYTE DataUnitShift; + BYTE ChunkShift; + BYTE ClusterShift; + BYTE EncryptionFormat; + WORD NumberOfDataBlocks; + DWORD DataBlockSize[1]; +} ENCRYPTED_DATA_INFO; +typedef ENCRYPTED_DATA_INFO *PENCRYPTED_DATA_INFO; +typedef struct _PLEX_READ_DATA_REQUEST { + LARGE_INTEGER ByteOffset; + DWORD ByteLength; + DWORD PlexNumber; +} PLEX_READ_DATA_REQUEST,*PPLEX_READ_DATA_REQUEST; +typedef struct _SI_COPYFILE { + DWORD SourceFileNameLength; + DWORD DestinationFileNameLength; + DWORD Flags; + WCHAR FileNameBuffer[1]; +} SI_COPYFILE,*PSI_COPYFILE; +#define COPYFILE_SIS_LINK 0x0001 +#define COPYFILE_SIS_REPLACE 0x0002 +#define COPYFILE_SIS_FLAGS 0x0003 +typedef struct _STORAGE_DESCRIPTOR_HEADER { + DWORD Version; + DWORD Size; +} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER; +typedef enum _STORAGE_PROPERTY_ID { + StorageDeviceProperty = 0, + StorageAdapterProperty, + StorageDeviceIdProperty, + StorageDeviceUniqueIdProperty, + StorageDeviceWriteCacheProperty, + StorageMiniportProperty, + StorageAccessAlignmentProperty, + StorageDeviceSeekPenaltyProperty, + StorageDeviceTrimProperty, + StorageDeviceWriteAggregationProperty, + StorageDeviceDeviceTelemetryProperty, + StorageDeviceLBProvisioningProperty, + StorageDevicePowerProperty, + StorageDeviceCopyOffloadProperty, + StorageDeviceResiliencyProperty, + StorageDeviceMediumProductType, + StorageAdapterRpmbProperty, + StorageAdapterCryptoProperty, + StorageDeviceIoCapabilityProperty = 48, + StorageAdapterProtocolSpecificProperty, + StorageDeviceProtocolSpecificProperty, + StorageAdapterTemperatureProperty, + StorageDeviceTemperatureProperty, + StorageAdapterPhysicalTopologyProperty, + StorageDevicePhysicalTopologyProperty, + StorageDeviceAttributesProperty, + StorageDeviceManagementStatus, + StorageAdapterSerialNumberProperty, + StorageDeviceLocationProperty, + StorageDeviceNumaProperty, + StorageDeviceZonedDeviceProperty, + StorageDeviceUnsafeShutdownCount, + StorageDeviceEnduranceProperty, + StorageDeviceLedStateProperty, + StorageDeviceSelfEncryptionProperty = 64, + StorageFruIdProperty +} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID; +typedef enum _STORAGE_QUERY_TYPE { + PropertyStandardQuery = 0, + PropertyExistsQuery = 1, + PropertyMaskQuery = 2, + PropertyQueryMaxDefined = 3 +} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE; +typedef enum _STORAGE_SET_TYPE { + PropertyStandardSet = 0, + PropertyExistsSet, + PropertySetMaxDefined +} STORAGE_SET_TYPE, *PSTORAGE_SET_TYPE; +typedef struct _STORAGE_PROPERTY_QUERY { + STORAGE_PROPERTY_ID PropertyId; + STORAGE_QUERY_TYPE QueryType; + BYTE AdditionalParameters[1]; +} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY; +typedef struct _STORAGE_PROPERTY_SET { + STORAGE_PROPERTY_ID PropertyId; + STORAGE_SET_TYPE SetType; + BYTE AdditionalParameters[1]; +} STORAGE_PROPERTY_SET, *PSTORAGE_PROPERTY_SET; +typedef struct _STORAGE_DEVICE_DESCRIPTOR { + DWORD Version; + DWORD Size; + BYTE DeviceType; + BYTE DeviceTypeModifier; + BOOLEAN RemovableMedia; + BOOLEAN CommandQueueing; + DWORD VendorIdOffset; + DWORD ProductIdOffset; + DWORD ProductRevisionOffset; + DWORD SerialNumberOffset; + STORAGE_BUS_TYPE BusType; + DWORD RawPropertiesLength; + BYTE RawDeviceProperties[1]; +} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR; +typedef struct _STORAGE_ADAPTER_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD MaximumTransferLength; + DWORD MaximumPhysicalPages; + DWORD AlignmentMask; + BOOLEAN AdapterUsesPio; + BOOLEAN AdapterScansDown; + BOOLEAN CommandQueueing; + BOOLEAN AcceleratedTransfer; + BYTE BusType; + WORD BusMajorVersion; + WORD BusMinorVersion; +} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR; +typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD NumberOfIdentifiers; + BYTE Identifiers[1]; +} STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR; +typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION { + ULONGLONG GptAttributes; +} VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION; +#define FSCTL_MAKE_MEDIA_COMPATIBLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 76, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_DEFECT_MANAGEMENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_QUERY_SPARING_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_ON_DISK_VOLUME_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_VOLUME_COMPRESSION_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_TXFS_MODIFY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM,81, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_QUERY_RM_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,82, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_TXFS_ROLLFORWARD_REDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,84, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_ROLLFORWARD_UNDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,85, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_START_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM,86, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_SHUTDOWN_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_READ_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,88, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_TXFS_WRITE_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,89, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_CREATE_SECONDARY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM,90,METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_GET_METADATA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,91, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_TXFS_GET_TRANSACTED_VERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,92, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_TXFS_SAVEPOINT_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,94, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_CREATE_MINIVERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 95, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_TXFS_TRANSACTION_ACTIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,99, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_SET_ZERO_ON_DEALLOCATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_SET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_WAIT_FOR_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_INITIATE_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSC_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_SHRINK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_SET_SHORT_NAME_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFSR_SET_GHOST_HANDLE_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_TXFS_LIST_TRANSACTIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_QUERY_PAGEFILE_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_RESET_VOLUME_ALLOCATION_HINTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_TXFS_READ_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define SET_REPAIR_ENABLED 0x00000001 +#define SET_REPAIR_VOLUME_BITMAP_SCAN 0x00000002 +#define SET_REPAIR_DELETE_CROSSLINK 0x00000004 +#define SET_REPAIR_WARN_ABOUT_DATA_LOSS 0x00000008 +#define SET_REPAIR_DISABLED_AND_BUGCHECK_ON_CORRUPT 0x00000010 +typedef struct _FILE_MAKE_COMPATIBLE_BUFFER { + BOOLEAN CloseDisc; +} FILE_MAKE_COMPATIBLE_BUFFER, *PFILE_MAKE_COMPATIBLE_BUFFER; +typedef struct _FILE_SET_DEFECT_MGMT_BUFFER { + BOOLEAN Disable; +} FILE_SET_DEFECT_MGMT_BUFFER, *PFILE_SET_DEFECT_MGMT_BUFFER; +typedef struct _FILE_QUERY_SPARING_BUFFER { + ULONG SparingUnitBytes; + BOOLEAN SoftwareSparing; + ULONG TotalSpareBlocks; + ULONG FreeSpareBlocks; +} FILE_QUERY_SPARING_BUFFER, *PFILE_QUERY_SPARING_BUFFER; +typedef struct _FILE_QUERY_ON_DISK_VOL_INFO_BUFFER { + LARGE_INTEGER DirectoryCount; + LARGE_INTEGER FileCount; + WORD FsFormatMajVersion; + WORD FsFormatMinVersion; + WCHAR FsFormatName[12]; + LARGE_INTEGER FormatTime; + LARGE_INTEGER LastUpdateTime; + WCHAR CopyrightInfo[34]; + WCHAR AbstractInfo[34]; + WCHAR FormattingImplementationInfo[34]; + WCHAR LastModifyingImplementationInfo[34]; +} FILE_QUERY_ON_DISK_VOL_INFO_BUFFER, *PFILE_QUERY_ON_DISK_VOL_INFO_BUFFER; +#define SET_REPAIR_ENABLED 0x00000001 +#define SET_REPAIR_VOLUME_BITMAP_SCAN 0x00000002 +#define SET_REPAIR_DELETE_CROSSLINK 0x00000004 +#define SET_REPAIR_WARN_ABOUT_DATA_LOSS 0x00000008 +#define SET_REPAIR_DISABLED_AND_BUGCHECK_ON_CORRUPT 0x00000010 +#define SET_REPAIR_VALID_MASK 0x0000001F +typedef enum _SHRINK_VOLUME_REQUEST_TYPES { + ShrinkPrepare = 1, + ShrinkCommit, + ShrinkAbort +} SHRINK_VOLUME_REQUEST_TYPES; +typedef struct _SHRINK_VOLUME_INFORMATION { + SHRINK_VOLUME_REQUEST_TYPES ShrinkRequestType; + DWORDLONG Flags; + LONGLONG NewNumberOfSectors; +} SHRINK_VOLUME_INFORMATION, *PSHRINK_VOLUME_INFORMATION; +#define TXFS_RM_FLAG_LOGGING_MODE 0x00000001 +#define TXFS_RM_FLAG_RENAME_RM 0x00000002 +#define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000004 +#define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000008 +#define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000010 +#define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000020 +#define TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000040 +#define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000080 +#define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000100 +#define TXFS_RM_FLAG_GROW_LOG 0x00000400 +#define TXFS_RM_FLAG_SHRINK_LOG 0x00000800 +#define TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE 0x00001000 +#define TXFS_RM_FLAG_PRESERVE_CHANGES 0x00002000 +#define TXFS_RM_FLAG_RESET_RM_AT_NEXT_START 0x00004000 +#define TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START 0x00008000 +#define TXFS_RM_FLAG_PREFER_CONSISTENCY 0x00010000 +#define TXFS_RM_FLAG_PREFER_AVAILABILITY 0x00020000 +#define TXFS_LOGGING_MODE_SIMPLE 1 +#define TXFS_LOGGING_MODE_FULL 2 +#define TXFS_TRANSACTION_STATE_NONE 0 +#define TXFS_TRANSACTION_STATE_ACTIVE 1 +#define TXFS_TRANSACTION_STATE_PREPARED 2 +#define TXFS_TRANSACTION_STATE_NOTACTIVE 3 +#define TXFS_MODIFY_RM_VALID_FLAGS (TXFS_RM_FLAG_LOGGING_MODE | TXFS_RM_FLAG_RENAME_RM | TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX | TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN | TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | TXFS_RM_FLAG_SHRINK_LOG | TXFS_RM_FLAG_GROW_LOG | TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE | TXFS_RM_FLAG_PRESERVE_CHANGES | TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_PREFER_CONSISTENCY | TXFS_RM_FLAG_PREFER_AVAILABILITY) +typedef struct _TXFS_MODIFY_RM { + ULONG Flags; + ULONG LogContainerCountMax; + ULONG LogContainerCountMin; + ULONG LogContainerCount; + ULONG LogGrowthIncrement; + ULONG LogAutoShrinkPercentage; + ULONGLONG Reserved; + USHORT LoggingMode; +} TXFS_MODIFY_RM, *PTXFS_MODIFY_RM; +#define TXFS_RM_STATE_NOT_STARTED 0 +#define TXFS_RM_STATE_STARTING 1 +#define TXFS_RM_STATE_ACTIVE 2 +#define TXFS_RM_STATE_SHUTTING_DOWN 3 +#define TXFS_QUERY_RM_INFORMATION_VALID_FLAGS (TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_PREFER_CONSISTENCY | TXFS_RM_FLAG_PREFER_AVAILABILITY) +typedef struct _TXFS_QUERY_RM_INFORMATION { + ULONG BytesRequired; + ULONGLONG TailLsn; + ULONGLONG CurrentLsn; + ULONGLONG ArchiveTailLsn; + ULONGLONG LogContainerSize; + LARGE_INTEGER HighestVirtualClock; + ULONG LogContainerCount; + ULONG LogContainerCountMax; + ULONG LogContainerCountMin; + ULONG LogGrowthIncrement; + ULONG LogAutoShrinkPercentage; + ULONG Flags; + USHORT LoggingMode; + USHORT Reserved; + ULONG RmState; + ULONGLONG LogCapacity; + ULONGLONG LogFree; + ULONGLONG TopsSize; + ULONGLONG TopsUsed; + ULONGLONG TransactionCount; + ULONGLONG OnePCCount; + ULONGLONG TwoPCCount; + ULONGLONG NumberLogFileFull; + ULONGLONG OldestTransactionAge; + GUID RMName; + ULONG TmLogPathOffset; +} TXFS_QUERY_RM_INFORMATION, *PTXFS_QUERY_RM_INFORMATION; +#define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN 0x01 +#define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK 0x02 +#define TXFS_ROLLFORWARD_REDO_VALID_FLAGS (TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN | TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK) +typedef struct _TXFS_ROLLFORWARD_REDO_INFORMATION { + LARGE_INTEGER LastVirtualClock; + ULONGLONG LastRedoLsn; + ULONGLONG HighestRecoveryLsn; + ULONG Flags; +} TXFS_ROLLFORWARD_REDO_INFORMATION, *PTXFS_ROLLFORWARD_REDO_INFORMATION; +#define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000001 +#define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000002 +#define TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE 0x00000004 +#define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000008 +#define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000010 +#define TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000020 +#define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000040 +#define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000080 +#define TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT 0x00000200 +#define TXFS_START_RM_FLAG_LOGGING_MODE 0x00000400 +#define TXFS_START_RM_FLAG_PRESERVE_CHANGES 0x00000800 +#define TXFS_START_RM_FLAG_PREFER_CONSISTENCY 0x00001000 +#define TXFS_START_RM_FLAG_PREFER_AVAILABILITY 0x00002000 +#define TXFS_START_RM_VALID_FLAGS (TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX | TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN | TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE | TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT | TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | TXFS_START_RM_FLAG_LOGGING_MODE | TXFS_START_RM_FLAG_PRESERVE_CHANGES | TXFS_START_RM_FLAG_PREFER_CONSISTENCY | TXFS_START_RM_FLAG_PREFER_AVAILABILITY) +typedef struct _TXFS_START_RM_INFORMATION { + ULONG Flags; + ULONGLONG LogContainerSize; + ULONG LogContainerCountMin; + ULONG LogContainerCountMax; + ULONG LogGrowthIncrement; + ULONG LogAutoShrinkPercentage; + ULONG TmLogPathOffset; + USHORT TmLogPathLength; + USHORT LoggingMode; + USHORT LogPathLength; + USHORT Reserved; + WCHAR LogPath[1]; +} TXFS_START_RM_INFORMATION, *PTXFS_START_RM_INFORMATION; +typedef struct _TXFS_GET_METADATA_INFO_OUT { + struct { + LONGLONG LowPart; + LONGLONG HighPart; + } TxfFileId; + GUID LockingTransaction; + ULONGLONG LastLsn; + ULONG TransactionState; +} TXFS_GET_METADATA_INFO_OUT, *PTXFS_GET_METADATA_INFO_OUT; +#define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_CREATED 0x00000001 +#define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_DELETED 0x00000002 +typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY { + ULONGLONG Offset; + ULONG NameFlags; + LONGLONG FileId; + ULONG Reserved1; + ULONG Reserved2; + LONGLONG Reserved3; + WCHAR FileName[1]; +} TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY, *PTXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY; +typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES { + GUID KtmTransaction; + ULONGLONG NumberOfFiles; + ULONGLONG BufferSizeRequired; + ULONGLONG Offset; +} TXFS_LIST_TRANSACTION_LOCKED_FILES, *PTXFS_LIST_TRANSACTION_LOCKED_FILES; +typedef struct _TXFS_LIST_TRANSACTIONS_ENTRY { + GUID TransactionId; + ULONG TransactionState; + ULONG Reserved1; + ULONG Reserved2; + LONGLONG Reserved3; +} TXFS_LIST_TRANSACTIONS_ENTRY, *PTXFS_LIST_TRANSACTIONS_ENTRY; +typedef struct _TXFS_LIST_TRANSACTIONS { + ULONGLONG NumberOfTransactions; + ULONGLONG BufferSizeRequired; +} TXFS_LIST_TRANSACTIONS, *PTXFS_LIST_TRANSACTIONS; +typedef struct _TXFS_READ_BACKUP_INFORMATION_OUT { + __extension__ union { + ULONG BufferLength; + UCHAR Buffer; + } ; +} TXFS_READ_BACKUP_INFORMATION_OUT, *PTXFS_READ_BACKUP_INFORMATION_OUT; +typedef struct _TXFS_WRITE_BACKUP_INFORMATION { + UCHAR Buffer; +} TXFS_WRITE_BACKUP_INFORMATION, *PTXFS_WRITE_BACKUP_INFORMATION; +#define TXFS_TRANSACTED_VERSION_NONTRANSACTED 0xFFFFFFFE +#define TXFS_TRANSACTED_VERSION_UNCOMMITTED 0xFFFFFFFF +typedef struct _TXFS_GET_TRANSACTED_VERSION { + ULONG ThisBaseVersion; + ULONG LatestVersion; + USHORT ThisMiniVersion; + USHORT FirstMiniVersion; + USHORT LatestMiniVersion; +} TXFS_GET_TRANSACTED_VERSION, *PTXFS_GET_TRANSACTED_VERSION; +#define TXFS_SAVEPOINT_SET 1 +#define TXFS_SAVEPOINT_ROLLBACK 2 +#define TXFS_SAVEPOINT_CLEAR 4 +#define TXFS_SAVEPOINT_CLEAR_ALL 16 +typedef struct _TXFS_SAVEPOINT_INFORMATION { + HANDLE KtmTransaction; + ULONG ActionCode; + ULONG SavepointId; +} TXFS_SAVEPOINT_INFORMATION, *PTXFS_SAVEPOINT_INFORMATION; +typedef struct _TXFS_CREATE_MINIVERSION_INFO { + USHORT StructureVersion; + USHORT StructureLength; + ULONG BaseVersion; + USHORT MiniVersion; +} TXFS_CREATE_MINIVERSION_INFO, *PTXFS_CREATE_MINIVERSION_INFO; +typedef struct _TXFS_TRANSACTION_ACTIVE_INFO { + BOOLEAN TransactionsActiveAtSnapshot; +} TXFS_TRANSACTION_ACTIVE_INFO, *PTXFS_TRANSACTION_ACTIVE_INFO; +typedef enum _WRITE_CACHE_TYPE { + WriteCacheTypeUnknown = 0, + WriteCacheTypeNone = 1, + WriteCacheTypeWriteBack = 2, + WriteCacheTypeWriteThrough = 3 +} WRITE_CACHE_TYPE; +typedef enum _WRITE_CACHE_ENABLE { + WriteCacheEnableUnknown = 0, + WriteCacheDisabled = 1, + WriteCacheEnabled = 2 +} WRITE_CACHE_ENABLE; +typedef enum _WRITE_CACHE_CHANGE { + WriteCacheChangeUnknown = 0, + WriteCacheNotChangeable = 1, + WriteCacheChangeable = 2 +} WRITE_CACHE_CHANGE; +typedef enum _WRITE_THROUGH { + WriteThroughUnknown = 0, + WriteThroughNotSupported = 1, + WriteThroughSupported = 2 +} WRITE_THROUGH; +typedef struct _STORAGE_WRITE_CACHE_PROPERTY { + DWORD Version; + DWORD Size; + WRITE_CACHE_TYPE WriteCacheType; + WRITE_CACHE_ENABLE WriteCacheEnabled; + WRITE_CACHE_CHANGE WriteCacheChangeable; + WRITE_THROUGH WriteThroughSupported; + BOOLEAN FlushCacheSupported; + BOOLEAN UserDefinedPowerProtection; + BOOLEAN NVCacheEnabled; +} STORAGE_WRITE_CACHE_PROPERTY, *PSTORAGE_WRITE_CACHE_PROPERTY; +typedef enum _STORAGE_PORT_CODE_SET { + StoragePortCodeSetReserved = 0, + StoragePortCodeSetStorport = 1, + StoragePortCodeSetSCSIport = 2, + StoragePortCodeSetSpaceport = 3, + StoragePortCodeSetATAport = 4, + StoragePortCodeSetUSBport = 5, + StoragePortCodeSetSBP2port = 6, + StoragePortCodeSetSDport = 7 +} STORAGE_PORT_CODE_SET, *PSTORAGE_PORT_CODE_SET; +typedef struct _STORAGE_MINIPORT_DESCRIPTOR { + DWORD Version; + DWORD Size; + STORAGE_PORT_CODE_SET Portdriver; + BOOLEAN LUNResetSupported; + BOOLEAN TargetResetSupported; +} STORAGE_MINIPORT_DESCRIPTOR, *PSTORAGE_MINIPORT_DESCRIPTOR; +typedef enum _STORAGE_IDENTIFIER_CODE_SET { + StorageIdCodeSetReserved = 0, + StorageIdCodeSetBinary = 1, + StorageIdCodeSetAscii = 2, + StorageIdCodeSetUtf8 = 3 +} STORAGE_IDENTIFIER_CODE_SET, *PSTORAGE_IDENTIFIER_CODE_SET; +typedef enum _STORAGE_IDENTIFIER_TYPE { + StorageIdTypeVendorSpecific = 0, + StorageIdTypeVendorId = 1, + StorageIdTypeEUI64 = 2, + StorageIdTypeFCPHName = 3, + StorageIdTypePortRelative = 4, + StorageIdTypeTargetPortGroup = 5, + StorageIdTypeLogicalUnitGroup = 6, + StorageIdTypeMD5LogicalUnitIdentifier = 7, + StorageIdTypeScsiNameString = 8 +} STORAGE_IDENTIFIER_TYPE, *PSTORAGE_IDENTIFIER_TYPE; +#define StorageIdTypeNAA StorageIdTypeFCPHName +typedef enum _STORAGE_ID_NAA_FORMAT { + StorageIdNAAFormatIEEEExtended = 2, + StorageIdNAAFormatIEEERegistered = 3, + StorageIdNAAFormatIEEEERegisteredExtended = 5 +} STORAGE_ID_NAA_FORMAT, *PSTORAGE_ID_NAA_FORMAT; +typedef enum _STORAGE_ASSOCIATION_TYPE { + StorageIdAssocDevice = 0, + StorageIdAssocPort = 1, + StorageIdAssocTarget = 2 +} STORAGE_ASSOCIATION_TYPE, *PSTORAGE_ASSOCIATION_TYPE; +typedef struct _STORAGE_IDENTIFIER { + STORAGE_IDENTIFIER_CODE_SET CodeSet; + STORAGE_IDENTIFIER_TYPE Type; + USHORT IdentifierSize; + USHORT NextOffset; + STORAGE_ASSOCIATION_TYPE Association; + UCHAR Identifier[1]; +} STORAGE_IDENTIFIER, *PSTORAGE_IDENTIFIER; +typedef struct _STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD BytesPerCacheLine; + DWORD BytesOffsetForCacheAlignment; + DWORD BytesPerLogicalSector; + DWORD BytesPerPhysicalSector; + DWORD BytesOffsetForSectorAlignment; +} STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR, *PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR; +typedef struct _STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD MediumProductType; +} STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR, *PSTORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR; +typedef struct _DEVICE_SEEK_PENALTY_DESCRIPTOR { + DWORD Version; + DWORD Size; + BOOLEAN IncursSeekPenalty; +} DEVICE_SEEK_PENALTY_DESCRIPTOR, *PDEVICE_SEEK_PENALTY_DESCRIPTOR; +typedef struct _DEVICE_WRITE_AGGREGATION_DESCRIPTOR { + ULONG Version; + ULONG Size; + BOOLEAN BenefitsFromWriteAggregation; +} DEVICE_WRITE_AGGREGATION_DESCRIPTOR, *PDEVICE_WRITE_AGGREGATION_DESCRIPTOR; +typedef struct _DEVICE_TRIM_DESCRIPTOR { + DWORD Version; + DWORD Size; + BOOLEAN TrimEnabled; +} DEVICE_TRIM_DESCRIPTOR, *PDEVICE_TRIM_DESCRIPTOR; +typedef struct _DEVICE_LB_PROVISIONING_DESCRIPTOR { + DWORD Version; + DWORD Size; + BYTE ThinProvisioningEnabled : 1; + BYTE ThinProvisioningReadZeros : 1; + BYTE AnchorSupported : 3; + BYTE UnmapGranularityAlignmentValid : 1; + BYTE GetFreeSpaceSupported : 1; + BYTE MapSupported : 1; + BYTE Reserved1[7]; + DWORDLONG OptimalUnmapGranularity; + DWORDLONG UnmapGranularityAlignment; +} DEVICE_LB_PROVISIONING_DESCRIPTOR, *PDEVICE_LB_PROVISIONING_DESCRIPTOR; +#define DEVICE_LB_PROVISIONING_DESCRIPTOR_V1_SIZE RTL_SIZEOF_THROUGH_FIELD(DEVICE_LB_PROVISIONING_DESCRIPTOR, UnmapGranularityAlignment) +typedef struct _STORAGE_LB_PROVISIONING_MAP_RESOURCES { + DWORD Size; + DWORD Version; + BYTE AvailableMappingResourcesValid : 1; + BYTE UsedMappingResourcesValid : 1; + BYTE Reserved0 : 6; + BYTE Reserved1[3]; + BYTE AvailableMappingResourcesScope : 2; + BYTE UsedMappingResourcesScope : 2; + BYTE Reserved2 : 4; + BYTE Reserved3[3]; + DWORDLONG AvailableMappingResources; + DWORDLONG UsedMappingResources; +} STORAGE_LB_PROVISIONING_MAP_RESOURCES, *PSTORAGE_LB_PROVISIONING_MAP_RESOURCES; +typedef struct _DEVICE_POWER_DESCRIPTOR { + DWORD Version; + DWORD Size; + BOOLEAN DeviceAttentionSupported; + BOOLEAN AsynchronousNotificationSupported; + BOOLEAN IdlePowerManagementEnabled; + BOOLEAN D3ColdEnabled; + BOOLEAN D3ColdSupported; + BOOLEAN NoVerifyDuringIdlePower; + BYTE Reserved[2]; + DWORD IdleTimeoutInMS; +} DEVICE_POWER_DESCRIPTOR, *PDEVICE_POWER_DESCRIPTOR; +typedef struct _DEVICE_COPY_OFFLOAD_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD MaximumTokenLifetime; + DWORD DefaultTokenLifetime; + DWORDLONG MaximumTransferSize; + DWORDLONG OptimalTransferCount; + DWORD MaximumDataDescriptors; + DWORD MaximumTransferLengthPerDescriptor; + DWORD OptimalTransferLengthPerDescriptor; + WORD OptimalTransferLengthGranularity; + BYTE Reserved[2]; +} DEVICE_COPY_OFFLOAD_DESCRIPTOR, *PDEVICE_COPY_OFFLOAD_DESCRIPTOR; +typedef struct _STORAGE_DEVICE_RESILIENCY_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD NameOffset; + DWORD NumberOfLogicalCopies; + DWORD NumberOfPhysicalCopies; + DWORD PhysicalDiskRedundancy; + DWORD NumberOfColumns; + DWORD Interleave; +} STORAGE_DEVICE_RESILIENCY_DESCRIPTOR, *PSTORAGE_DEVICE_RESILIENCY_DESCRIPTOR; +typedef enum _STORAGE_RPMB_FRAME_TYPE { + StorageRpmbFrameTypeUnknown = 0, + StorageRpmbFrameTypeStandard, + StorageRpmbFrameTypeMax +} STORAGE_RPMB_FRAME_TYPE, *PSTORAGE_RPMB_FRAME_TYPE; +#define STORAGE_RPMB_DESCRIPTOR_VERSION_1 1 +#define STORAGE_RPMB_MINIMUM_RELIABLE_WRITE_SIZE 512 +typedef struct _STORAGE_RPMB_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD SizeInBytes; + DWORD MaxReliableWriteSizeInBytes; + STORAGE_RPMB_FRAME_TYPE FrameFormat; +} STORAGE_RPMB_DESCRIPTOR, *PSTORAGE_RPMB_DESCRIPTOR; +typedef enum _STORAGE_CRYPTO_ALGORITHM_ID { + StorageCryptoAlgorithmUnknown = 0, + StorageCryptoAlgorithmXTSAES = 1, + StorageCryptoAlgorithmBitlockerAESCBC, + StorageCryptoAlgorithmAESECB, + StorageCryptoAlgorithmESSIVAESCBC, + StorageCryptoAlgorithmMax +} STORAGE_CRYPTO_ALGORITHM_ID, *PSTORAGE_CRYPTO_ALGORITHM_ID; +typedef enum _STORAGE_CRYPTO_KEY_SIZE { + StorageCryptoKeySizeUnknown = 0, + StorageCryptoKeySize128Bits = 1, + StorageCryptoKeySize192Bits, + StorageCryptoKeySize256Bits, + StorageCryptoKeySize512Bits +} STORAGE_CRYPTO_KEY_SIZE, *PSTORAGE_CRYPTO_KEY_SIZE; +#define STORAGE_CRYPTO_CAPABILITY_VERSION_1 1 +typedef struct _STORAGE_CRYPTO_CAPABILITY { + DWORD Version; + DWORD Size; + DWORD CryptoCapabilityIndex; + STORAGE_CRYPTO_ALGORITHM_ID AlgorithmId; + STORAGE_CRYPTO_KEY_SIZE KeySize; + DWORD DataUnitSizeBitmask; +} STORAGE_CRYPTO_CAPABILITY, *PSTORAGE_CRYPTO_CAPABILITY; +#define STORAGE_CRYPTO_DESCRIPTOR_VERSION_1 1 +typedef struct _STORAGE_CRYPTO_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD NumKeysSupported; + DWORD NumCryptoCapabilities; + STORAGE_CRYPTO_CAPABILITY CryptoCapabilities[1]; +} STORAGE_CRYPTO_DESCRIPTOR, *PSTORAGE_CRYPTO_DESCRIPTOR; +#define STORAGE_TIER_NAME_LENGTH (256) +#define STORAGE_TIER_DESCRIPTION_LENGTH (512) +#define STORAGE_TIER_FLAG_NO_SEEK_PENALTY (0x00020000) +#define STORAGE_TIER_FLAG_WRITE_BACK_CACHE (0x00200000) +#define STORAGE_TIER_FLAG_READ_CACHE (0x00400000) +#define STORAGE_TIER_FLAG_PARITY (0x00800000) +#define STORAGE_TIER_FLAG_SMR (0x01000000) +typedef enum _STORAGE_TIER_MEDIA_TYPE { + StorageTierMediaTypeUnspecified = 0, + StorageTierMediaTypeDisk = 1, + StorageTierMediaTypeSsd = 2, + StorageTierMediaTypeScm = 4, + StorageTierMediaTypeMax +} STORAGE_TIER_MEDIA_TYPE, *PSTORAGE_TIER_MEDIA_TYPE; +typedef enum _STORAGE_TIER_CLASS { + StorageTierClassUnspecified = 0, + StorageTierClassCapacity, + StorageTierClassPerformance, + StorageTierClassMax +} STORAGE_TIER_CLASS, *PSTORAGE_TIER_CLASS; +typedef struct _STORAGE_TIER { + GUID Id; + WCHAR Name[(256)]; + WCHAR Description[(256)]; + DWORDLONG Flags; + DWORDLONG ProvisionedCapacity; + STORAGE_TIER_MEDIA_TYPE MediaType; + STORAGE_TIER_CLASS Class; +} STORAGE_TIER, *PSTORAGE_TIER; +typedef struct _STORAGE_DEVICE_TIERING_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD Flags; + DWORD TotalNumberOfTiers; + DWORD NumberOfTiersReturned; + STORAGE_TIER Tiers[1]; +} STORAGE_DEVICE_TIERING_DESCRIPTOR, *PSTORAGE_DEVICE_TIERING_DESCRIPTOR; +typedef struct _STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD NumberOfFaultDomains; + GUID FaultDomainIds[1]; +} STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR, *PSTORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR; +typedef enum _STORAGE_PROTOCOL_TYPE { + ProtocolTypeUnknown = 0x00, + ProtocolTypeScsi, + ProtocolTypeAta, + ProtocolTypeNvme, + ProtocolTypeSd, + ProtocolTypeUfs, + ProtocolTypeProprietary = 0x7E, + ProtocolTypeMaxReserved = 0x7F +} STORAGE_PROTOCOL_TYPE, *PSTORAGE_PROTOCOL_TYPE; +typedef enum _STORAGE_PROTOCOL_NVME_DATA_TYPE { + NVMeDataTypeUnknown = 0, + NVMeDataTypeIdentify, + NVMeDataTypeLogPage, + NVMeDataTypeFeature +} STORAGE_PROTOCOL_NVME_DATA_TYPE, *PSTORAGE_PROTOCOL_NVME_DATA_TYPE; +typedef enum _STORAGE_PROTOCOL_ATA_DATA_TYPE { + AtaDataTypeUnknown = 0, + AtaDataTypeIdentify, + AtaDataTypeLogPage +} STORAGE_PROTOCOL_ATA_DATA_TYPE, *PSTORAGE_PROTOCOL_ATA_DATA_TYPE; +typedef enum _STORAGE_PROTOCOL_UFS_DATA_TYPE { + UfsDataTypeUnknown = 0, + UfsDataTypeQueryDescriptor, + UfsDataTypeQueryAttribute, + UfsDataTypeQueryFlag, + UfsDataTypeQueryDmeAttribute, + UfsDataTypeQueryDmePeerAttribute, + UfsDataTypeMax +} STORAGE_PROTOCOL_UFS_DATA_TYPE, *PSTORAGE_PROTOCOL_UFS_DATA_TYPE; +typedef union _STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE { + __extension__ struct { + DWORD RetainAsynEvent : 1; + DWORD LogSpecificField : 4; + DWORD Reserved : 27; + }; + DWORD AsUlong; +} STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE, *PSTORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE; +typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA { + STORAGE_PROTOCOL_TYPE ProtocolType; + DWORD DataType; + DWORD ProtocolDataRequestValue; + DWORD ProtocolDataRequestSubValue; + DWORD ProtocolDataOffset; + DWORD ProtocolDataLength; + DWORD FixedProtocolReturnData; + DWORD ProtocolDataRequestSubValue2; + DWORD ProtocolDataRequestSubValue3; + DWORD ProtocolDataRequestSubValue4; +} STORAGE_PROTOCOL_SPECIFIC_DATA, *PSTORAGE_PROTOCOL_SPECIFIC_DATA; +typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA_EXT { + STORAGE_PROTOCOL_TYPE ProtocolType; + DWORD DataType; + DWORD ProtocolDataValue; + DWORD ProtocolDataSubValue; + DWORD ProtocolDataOffset; + DWORD ProtocolDataLength; + DWORD FixedProtocolReturnData; + DWORD ProtocolDataSubValue2; + DWORD ProtocolDataSubValue3; + DWORD ProtocolDataSubValue4; + DWORD ProtocolDataSubValue5; + DWORD Reserved[5]; +} STORAGE_PROTOCOL_SPECIFIC_DATA_EXT, *PSTORAGE_PROTOCOL_SPECIFIC_DATA_EXT; +typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR { + DWORD Version; + DWORD Size; + STORAGE_PROTOCOL_SPECIFIC_DATA ProtocolSpecificData; +} STORAGE_PROTOCOL_DATA_DESCRIPTOR, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR; +typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT { + DWORD Version; + DWORD Size; + STORAGE_PROTOCOL_SPECIFIC_DATA_EXT ProtocolSpecificData; +} STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT; +#define STORAGE_TEMPERATURE_VALUE_NOT_REPORTED 0x8000 +typedef struct _STORAGE_TEMPERATURE_INFO { + WORD Index; + SHORT Temperature; + SHORT OverThreshold; + SHORT UnderThreshold; + BOOLEAN OverThresholdChangable; + BOOLEAN UnderThresholdChangable; + BOOLEAN EventGenerated; + BYTE Reserved0; + DWORD Reserved1; +} STORAGE_TEMPERATURE_INFO, *PSTORAGE_TEMPERATURE_INFO; +typedef struct _STORAGE_TEMPERATURE_DATA_DESCRIPTOR { + DWORD Version; + DWORD Size; + SHORT CriticalTemperature; + SHORT WarningTemperature; + WORD InfoCount; + BYTE Reserved0[2]; + DWORD Reserved1[2]; + STORAGE_TEMPERATURE_INFO TemperatureInfo[1]; +} STORAGE_TEMPERATURE_DATA_DESCRIPTOR, *PSTORAGE_TEMPERATURE_DATA_DESCRIPTOR; +#define STORAGE_TEMPERATURE_THRESHOLD_FLAG_ADAPTER_REQUEST 0x0001 +typedef struct _STORAGE_TEMPERATURE_THRESHOLD { + DWORD Version; + DWORD Size; + WORD Flags; + WORD Index; + SHORT Threshold; + BOOLEAN OverThreshold; + BYTE Reserved; +} STORAGE_TEMPERATURE_THRESHOLD, *PSTORAGE_TEMPERATURE_THRESHOLD; +#define STORAGE_PROTOCOL_STRUCTURE_VERSION 0x1 +typedef struct _STORAGE_PROTOCOL_COMMAND { + DWORD Version; + DWORD Length; + STORAGE_PROTOCOL_TYPE ProtocolType; + DWORD Flags; + DWORD ReturnStatus; + DWORD ErrorCode; + DWORD CommandLength; + DWORD ErrorInfoLength; + DWORD DataToDeviceTransferLength; + DWORD DataFromDeviceTransferLength; + DWORD TimeOutValue; + DWORD ErrorInfoOffset; + DWORD DataToDeviceBufferOffset; + DWORD DataFromDeviceBufferOffset; + DWORD CommandSpecific; + DWORD Reserved0; + DWORD FixedProtocolReturnData; + DWORD Reserved1[3]; + BYTE Command[1]; +} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND; +#define STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST 0x80000000 +#define STORAGE_PROTOCOL_STATUS_PENDING 0x0 +#define STORAGE_PROTOCOL_STATUS_SUCCESS 0x1 +#define STORAGE_PROTOCOL_STATUS_ERROR 0x2 +#define STORAGE_PROTOCOL_STATUS_INVALID_REQUEST 0x3 +#define STORAGE_PROTOCOL_STATUS_NO_DEVICE 0x4 +#define STORAGE_PROTOCOL_STATUS_BUSY 0x5 +#define STORAGE_PROTOCOL_STATUS_DATA_OVERRUN 0x6 +#define STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES 0x7 +#define STORAGE_PROTOCOL_STATUS_THROTTLED_REQUEST 0x8 +#define STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED 0xFF +#define STORAGE_PROTOCOL_COMMAND_LENGTH_NVME 0x40 +#define STORAGE_PROTOCOL_SPECIFIC_NVME_ADMIN_COMMAND 0x01 +#define STORAGE_PROTOCOL_SPECIFIC_NVME_NVM_COMMAND 0x02 +#define FSCTL_QUERY_DIRECT_ACCESS_EXTENTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 230, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NOTIFY_STORAGE_SPACE_ALLOCATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 231, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SSDI_STORAGE_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 232, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GHOST_FILE_EXTENTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 235, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define FSCTL_QUERY_GHOSTED_FILE_EXTENTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 236, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_UNMAP_SPACE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 237, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_REFS_SMR_VOLUME_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 247, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_REFS_SMR_VOLUME_GC_PARAMETERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 248, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_REFS_FILE_STRICTLY_SEQUENTIAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 249, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_DIRECT_IMAGE_ORIGINAL_BASE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 233, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_READ_UNPRIVILEGED_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 234, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_START_VIRTUALIZATION_INSTANCE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 240, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_FILTER_FILE_IDENTIFIER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 241, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_START_VIRTUALIZATION_INSTANCE_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 256, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_REPARSE_POINT_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 259, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_STREAMS_QUERY_PARAMETERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 241, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_STREAMS_ASSOCIATE_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 242, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_STREAMS_QUERY_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 243, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 244, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_QUERY_VOLUME_NUMA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 245, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REFS_DEALLOCATE_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 246, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_QUERY_BAD_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 251, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_DAX_ALLOC_ALIGNMENT_HINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 252, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_CORRUPTED_REFS_CONTAINER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 253, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SCRUB_UNDISCOVERABLE_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 254, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NOTIFY_DATA_CHANGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 255, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_ENCRYPTION_KEY_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 257, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_VIRTUAL_STORAGE_SET_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 258, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REARRANGE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 264, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define FSCTL_VIRTUAL_STORAGE_PASSTHROUGH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 265, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTER_COUNT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 266, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_ENABLE_PER_IO_FLAGS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 267, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_VOLUME_BASE ((DWORD) 'V') +#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE,0,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE CTL_CODE(IOCTL_VOLUME_BASE,1,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_ONLINE CTL_CODE(IOCTL_VOLUME_BASE,2,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_VOLUME_OFFLINE CTL_CODE(IOCTL_VOLUME_BASE,3,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_VOLUME_IS_OFFLINE CTL_CODE(IOCTL_VOLUME_BASE,4,METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_VOLUME_IS_IO_CAPABLE CTL_CODE(IOCTL_VOLUME_BASE,5,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_QUERY_FAILOVER_SET CTL_CODE(IOCTL_VOLUME_BASE,6,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_QUERY_VOLUME_NUMBER CTL_CODE(IOCTL_VOLUME_BASE,7,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL CTL_CODE(IOCTL_VOLUME_BASE,8,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL CTL_CODE(IOCTL_VOLUME_BASE,9,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_IS_CLUSTERED CTL_CODE(IOCTL_VOLUME_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_VOLUME_GET_GPT_ATTRIBUTES CTL_CODE(IOCTL_VOLUME_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS) +typedef struct _DISK_EXTENT { + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} DISK_EXTENT,*PDISK_EXTENT; +typedef struct _VOLUME_DISK_EXTENTS { + DWORD NumberOfDiskExtents; + DISK_EXTENT Extents[1]; +} VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS; +#define _NTDDSCRD_H2_ + typedef WORD UWORD; +#define FILE_DEVICE_SMARTCARD 0x00000031 +#define SCARD_ATR_LENGTH 33 +#define SCARD_PROTOCOL_UNDEFINED 0x00000000 +#define SCARD_PROTOCOL_T0 0x00000001 +#define SCARD_PROTOCOL_T1 0x00000002 +#define SCARD_PROTOCOL_RAW 0x00010000 +#define SCARD_PROTOCOL_Tx (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1) +#define SCARD_PROTOCOL_DEFAULT 0x80000000 +#define SCARD_PROTOCOL_OPTIMAL 0x00000000 +#define SCARD_POWER_DOWN 0 +#define SCARD_COLD_RESET 1 +#define SCARD_WARM_RESET 2 +#define SCARD_CTL_CODE(code) CTL_CODE(FILE_DEVICE_SMARTCARD,(code),METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_SMARTCARD_POWER SCARD_CTL_CODE(1) +#define IOCTL_SMARTCARD_GET_ATTRIBUTE SCARD_CTL_CODE(2) +#define IOCTL_SMARTCARD_SET_ATTRIBUTE SCARD_CTL_CODE(3) +#define IOCTL_SMARTCARD_CONFISCATE SCARD_CTL_CODE(4) +#define IOCTL_SMARTCARD_TRANSMIT SCARD_CTL_CODE(5) +#define IOCTL_SMARTCARD_EJECT SCARD_CTL_CODE(6) +#define IOCTL_SMARTCARD_SWALLOW SCARD_CTL_CODE(7) +#define IOCTL_SMARTCARD_IS_PRESENT SCARD_CTL_CODE(10) +#define IOCTL_SMARTCARD_IS_ABSENT SCARD_CTL_CODE(11) +#define IOCTL_SMARTCARD_SET_PROTOCOL SCARD_CTL_CODE(12) +#define IOCTL_SMARTCARD_GET_STATE SCARD_CTL_CODE(14) +#define IOCTL_SMARTCARD_GET_LAST_ERROR SCARD_CTL_CODE(15) +#define IOCTL_SMARTCARD_GET_PERF_CNTR SCARD_CTL_CODE(16) +#define MAXIMUM_ATTR_STRING_LENGTH 32 +#define MAXIMUM_SMARTCARD_READERS 10 +#define SCARD_ATTR_VALUE(Class,Tag) ((((ULONG)(Class)) << 16) | ((ULONG)(Tag))) +#define SCARD_CLASS_VENDOR_INFO 1 +#define SCARD_CLASS_COMMUNICATIONS 2 +#define SCARD_CLASS_PROTOCOL 3 +#define SCARD_CLASS_POWER_MGMT 4 +#define SCARD_CLASS_SECURITY 5 +#define SCARD_CLASS_MECHANICAL 6 +#define SCARD_CLASS_VENDOR_DEFINED 7 +#define SCARD_CLASS_IFD_PROTOCOL 8 +#define SCARD_CLASS_ICC_STATE 9 +#define SCARD_CLASS_PERF 0x7ffe +#define SCARD_CLASS_SYSTEM 0x7fff +#define SCARD_ATTR_VENDOR_NAME SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0100) +#define SCARD_ATTR_VENDOR_IFD_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0101) +#define SCARD_ATTR_VENDOR_IFD_VERSION SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0102) +#define SCARD_ATTR_VENDOR_IFD_SERIAL_NO SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0103) +#define SCARD_ATTR_CHANNEL_ID SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS,0x0110) +#define SCARD_ATTR_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0120) +#define SCARD_ATTR_DEFAULT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0121) +#define SCARD_ATTR_MAX_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0122) +#define SCARD_ATTR_DEFAULT_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0123) +#define SCARD_ATTR_MAX_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0124) +#define SCARD_ATTR_MAX_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0125) +#define SCARD_ATTR_POWER_MGMT_SUPPORT SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT,0x0131) +#define SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY,0x0140) +#define SCARD_ATTR_USER_AUTH_INPUT_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY,0x0142) +#define SCARD_ATTR_CHARACTERISTICS SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL,0x0150) +#define SCARD_ATTR_CURRENT_PROTOCOL_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0201) +#define SCARD_ATTR_CURRENT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0202) +#define SCARD_ATTR_CURRENT_F SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0203) +#define SCARD_ATTR_CURRENT_D SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0204) +#define SCARD_ATTR_CURRENT_N SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0205) +#define SCARD_ATTR_CURRENT_W SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0206) +#define SCARD_ATTR_CURRENT_IFSC SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0207) +#define SCARD_ATTR_CURRENT_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0208) +#define SCARD_ATTR_CURRENT_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0209) +#define SCARD_ATTR_CURRENT_CWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020a) +#define SCARD_ATTR_CURRENT_EBC_ENCODING SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020b) +#define SCARD_ATTR_EXTENDED_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020c) +#define SCARD_ATTR_ICC_PRESENCE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0300) +#define SCARD_ATTR_ICC_INTERFACE_STATUS SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0301) +#define SCARD_ATTR_CURRENT_IO_STATE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0302) +#define SCARD_ATTR_ATR_STRING SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0303) +#define SCARD_ATTR_ICC_TYPE_PER_ATR SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0304) +#define SCARD_ATTR_ESC_RESET SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA000) +#define SCARD_ATTR_ESC_CANCEL SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA003) +#define SCARD_ATTR_ESC_AUTHREQUEST SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA005) +#define SCARD_ATTR_MAXINPUT SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA007) +#define SCARD_ATTR_DEVICE_UNIT SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0001) +#define SCARD_ATTR_DEVICE_IN_USE SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0002) +#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0003) +#define SCARD_ATTR_DEVICE_SYSTEM_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0004) +#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0005) +#define SCARD_ATTR_DEVICE_SYSTEM_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0006) +#define SCARD_ATTR_SUPRESS_T1_IFS_REQUEST SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0007) +#define SCARD_PERF_NUM_TRANSMISSIONS SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0001) +#define SCARD_PERF_BYTES_TRANSMITTED SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0002) +#define SCARD_PERF_TRANSMISSION_TIME SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0003) +#define SCARD_ATTR_DEVICE_FRIENDLY_NAME __MINGW_NAME_UAW(SCARD_ATTR_DEVICE_FRIENDLY_NAME) +#define SCARD_ATTR_DEVICE_SYSTEM_NAME __MINGW_NAME_UAW(SCARD_ATTR_DEVICE_SYSTEM_NAME) +#define SCARD_T0_HEADER_LENGTH 7 +#define SCARD_T0_CMD_LENGTH 5 +#define SCARD_T1_PROLOGUE_LENGTH 3 +#define SCARD_T1_EPILOGUE_LENGTH 2 +#define SCARD_T1_MAX_IFS 254 +#define SCARD_UNKNOWN 0 +#define SCARD_ABSENT 1 +#define SCARD_PRESENT 2 +#define SCARD_SWALLOWED 3 +#define SCARD_POWERED 4 +#define SCARD_NEGOTIABLE 5 +#define SCARD_SPECIFIC 6 + typedef struct _SCARD_IO_REQUEST { + DWORD dwProtocol; + DWORD cbPciLength; + } SCARD_IO_REQUEST,*PSCARD_IO_REQUEST,*LPSCARD_IO_REQUEST; + typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST; + typedef struct { + BYTE + bCla,bIns,bP1,bP2,bP3; + } SCARD_T0_COMMAND,*LPSCARD_T0_COMMAND; + typedef struct { + SCARD_IO_REQUEST ioRequest; + BYTE bSw1,bSw2; + __extension__ union { + SCARD_T0_COMMAND CmdBytes; + BYTE rgbHeader[5]; + }; + } SCARD_T0_REQUEST; + typedef SCARD_T0_REQUEST *PSCARD_T0_REQUEST,*LPSCARD_T0_REQUEST; + typedef struct { + SCARD_IO_REQUEST ioRequest; + } SCARD_T1_REQUEST; + typedef SCARD_T1_REQUEST *PSCARD_T1_REQUEST,*LPSCARD_T1_REQUEST; +#define SCARD_READER_SWALLOWS 0x00000001 +#define SCARD_READER_EJECTS 0x00000002 +#define SCARD_READER_CONFISCATES 0x00000004 +#define SCARD_READER_TYPE_SERIAL 0x01 +#define SCARD_READER_TYPE_PARALELL 0x02 +#define SCARD_READER_TYPE_KEYBOARD 0x04 +#define SCARD_READER_TYPE_SCSI 0x08 +#define SCARD_READER_TYPE_IDE 0x10 +#define SCARD_READER_TYPE_USB 0x20 +#define SCARD_READER_TYPE_PCMCIA 0x40 +#define SCARD_READER_TYPE_VENDOR 0xF0 +#define _LPCBYTE_DEFINED + typedef const BYTE *LPCBYTE; +#define WINSCARDAPI +#define WINSCARDDATA __declspec(dllimport) + __declspec(dllimport) extern const SCARD_IO_REQUEST g_rgSCardT0Pci,g_rgSCardT1Pci,g_rgSCardRawPci; +#define SCARD_PCI_T0 (&g_rgSCardT0Pci) +#define SCARD_PCI_T1 (&g_rgSCardT1Pci) +#define SCARD_PCI_RAW (&g_rgSCardRawPci) + typedef ULONG_PTR SCARDCONTEXT; + typedef SCARDCONTEXT *PSCARDCONTEXT,*LPSCARDCONTEXT; + typedef ULONG_PTR SCARDHANDLE; + typedef SCARDHANDLE *PSCARDHANDLE,*LPSCARDHANDLE; +#define SCARD_AUTOALLOCATE (DWORD)(-1) +#define SCARD_SCOPE_USER 0 +#define SCARD_SCOPE_TERMINAL 1 +#define SCARD_SCOPE_SYSTEM 2 + extern LONG __attribute__((__stdcall__)) SCardEstablishContext(DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2,LPSCARDCONTEXT phContext); + extern LONG __attribute__((__stdcall__)) SCardReleaseContext(SCARDCONTEXT hContext); + extern LONG __attribute__((__stdcall__)) SCardIsValidContext(SCARDCONTEXT hContext); +#define SCARD_ALL_READERS TEXT("SCard$AllReaders\000") +#define SCARD_DEFAULT_READERS TEXT("SCard$DefaultReaders\000") +#define SCARD_LOCAL_READERS TEXT("SCard$LocalReaders\000") +#define SCARD_SYSTEM_READERS TEXT("SCard$SystemReaders\000") +#define SCARD_PROVIDER_PRIMARY 1 +#define SCARD_PROVIDER_CSP 2 +#define SCardListReaderGroups __MINGW_NAME_AW(SCardListReaderGroups) +#define SCardListReaders __MINGW_NAME_AW(SCardListReaders) +#define SCardListCards __MINGW_NAME_AW(SCardListCards) +#define SCardListInterfaces __MINGW_NAME_AW(SCardListInterfaces) +#define SCardGetProviderId __MINGW_NAME_AW(SCardGetProviderId) +#define SCardGetCardTypeProviderName __MINGW_NAME_AW(SCardGetCardTypeProviderName) +#define SCardIntroduceReaderGroup __MINGW_NAME_AW(SCardIntroduceReaderGroup) +#define SCardForgetReaderGroup __MINGW_NAME_AW(SCardForgetReaderGroup) +#define SCardIntroduceReader __MINGW_NAME_AW(SCardIntroduceReader) +#define SCardForgetReader __MINGW_NAME_AW(SCardForgetReader) +#define SCardAddReaderToGroup __MINGW_NAME_AW(SCardAddReaderToGroup) +#define SCardRemoveReaderFromGroup __MINGW_NAME_AW(SCardRemoveReaderFromGroup) +#define SCardIntroduceCardType __MINGW_NAME_AW(SCardIntroduceCardType) +#define SCardSetCardTypeProviderName __MINGW_NAME_AW(SCardSetCardTypeProviderName) +#define SCardForgetCardType __MINGW_NAME_AW(SCardForgetCardType) + extern LONG __attribute__((__stdcall__)) SCardListReaderGroupsA(SCARDCONTEXT hContext,LPSTR mszGroups,LPDWORD pcchGroups); + extern LONG __attribute__((__stdcall__)) SCardListReaderGroupsW(SCARDCONTEXT hContext,LPWSTR mszGroups,LPDWORD pcchGroups); + extern LONG __attribute__((__stdcall__)) SCardListReadersA(SCARDCONTEXT hContext,LPCSTR mszGroups,LPSTR mszReaders,LPDWORD pcchReaders); + extern LONG __attribute__((__stdcall__)) SCardListReadersW(SCARDCONTEXT hContext,LPCWSTR mszGroups,LPWSTR mszReaders,LPDWORD pcchReaders); + extern LONG __attribute__((__stdcall__)) SCardListCardsA(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPSTR mszCards,LPDWORD pcchCards); + extern LONG __attribute__((__stdcall__)) SCardListCardsW(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPWSTR mszCards,LPDWORD pcchCards); +#define SCardListCardTypes SCardListCards + extern LONG __attribute__((__stdcall__)) SCardListInterfacesA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces); + extern LONG __attribute__((__stdcall__)) SCardListInterfacesW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces); + extern LONG __attribute__((__stdcall__)) SCardGetProviderIdA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidProviderId); + extern LONG __attribute__((__stdcall__)) SCardGetProviderIdW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidProviderId); + extern LONG __attribute__((__stdcall__)) SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPSTR szProvider,LPDWORD pcchProvider); + extern LONG __attribute__((__stdcall__)) SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPWSTR szProvider,LPDWORD pcchProvider); + extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardForgetReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardForgetReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szDeviceName); + extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szDeviceName); + extern LONG __attribute__((__stdcall__)) SCardForgetReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName); + extern LONG __attribute__((__stdcall__)) SCardForgetReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName); + extern LONG __attribute__((__stdcall__)) SCardAddReaderToGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardAddReaderToGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName); + extern LONG __attribute__((__stdcall__)) SCardIntroduceCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen); + extern LONG __attribute__((__stdcall__)) SCardIntroduceCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen); +#define PCSCardIntroduceCardType(hContext,szCardName,pbAtr,pbAtrMask,cbAtrLen,pguidPrimaryProvider,rgguidInterfaces,dwInterfaceCount) SCardIntroduceCardType(hContext,szCardName,pguidPrimaryProvider,rgguidInterfaces,dwInterfaceCount,pbAtr,pbAtrMask,cbAtrLen) + extern LONG __attribute__((__stdcall__)) SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPCSTR szProvider); + extern LONG __attribute__((__stdcall__)) SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPCWSTR szProvider); + extern LONG __attribute__((__stdcall__)) SCardForgetCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName); + extern LONG __attribute__((__stdcall__)) SCardForgetCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName); + extern LONG __attribute__((__stdcall__)) SCardFreeMemory(SCARDCONTEXT hContext,LPCVOID pvMem); + extern HANDLE __attribute__((__stdcall__)) SCardAccessStartedEvent(void); + extern void __attribute__((__stdcall__)) SCardReleaseStartedEvent(void); + typedef struct { + LPCSTR szReader; + LPVOID pvUserData; + DWORD dwCurrentState; + DWORD dwEventState; + DWORD cbAtr; + BYTE rgbAtr[36]; + } SCARD_READERSTATEA,*PSCARD_READERSTATEA,*LPSCARD_READERSTATEA; + typedef struct { + LPCWSTR szReader; + LPVOID pvUserData; + DWORD dwCurrentState; + DWORD dwEventState; + DWORD cbAtr; + BYTE rgbAtr[36]; + } SCARD_READERSTATEW,*PSCARD_READERSTATEW,*LPSCARD_READERSTATEW; + typedef SCARD_READERSTATEA SCARD_READERSTATE; + typedef PSCARD_READERSTATEA PSCARD_READERSTATE; + typedef LPSCARD_READERSTATEA LPSCARD_READERSTATE; +#define SCardLocateCards __MINGW_NAME_AW(SCardLocateCards) +#define SCardLocateCardsByATR __MINGW_NAME_AW(SCardLocateCardsByATR) +#define SCardGetStatusChange __MINGW_NAME_AW(SCardGetStatusChange) +#define SCardConnect __MINGW_NAME_AW(SCardConnect) +#define SCardStatus __MINGW_NAME_AW(SCardStatus) +#define SCARD_READERSTATE_A SCARD_READERSTATEA +#define SCARD_READERSTATE_W SCARD_READERSTATEW +#define PSCARD_READERSTATE_A PSCARD_READERSTATEA +#define PSCARD_READERSTATE_W PSCARD_READERSTATEW +#define LPSCARD_READERSTATE_A LPSCARD_READERSTATEA +#define LPSCARD_READERSTATE_W LPSCARD_READERSTATEW +#define SCARD_STATE_UNAWARE 0x00000000 +#define SCARD_STATE_IGNORE 0x00000001 +#define SCARD_STATE_CHANGED 0x00000002 +#define SCARD_STATE_UNKNOWN 0x00000004 +#define SCARD_STATE_UNAVAILABLE 0x00000008 +#define SCARD_STATE_EMPTY 0x00000010 +#define SCARD_STATE_PRESENT 0x00000020 +#define SCARD_STATE_ATRMATCH 0x00000040 +#define SCARD_STATE_EXCLUSIVE 0x00000080 +#define SCARD_STATE_INUSE 0x00000100 +#define SCARD_STATE_MUTE 0x00000200 +#define SCARD_STATE_UNPOWERED 0x00000400 + extern LONG __attribute__((__stdcall__)) SCardLocateCardsA(SCARDCONTEXT hContext,LPCSTR mszCards,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders); + extern LONG __attribute__((__stdcall__)) SCardLocateCardsW(SCARDCONTEXT hContext,LPCWSTR mszCards,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders); + typedef struct _SCARD_ATRMASK { + DWORD cbAtr; + BYTE rgbAtr[36]; + BYTE rgbMask[36]; + } SCARD_ATRMASK,*PSCARD_ATRMASK,*LPSCARD_ATRMASK; + extern LONG __attribute__((__stdcall__)) SCardLocateCardsByATRA(SCARDCONTEXT hContext,LPSCARD_ATRMASK rgAtrMasks,DWORD cAtrs,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders); + extern LONG __attribute__((__stdcall__)) SCardLocateCardsByATRW(SCARDCONTEXT hContext,LPSCARD_ATRMASK rgAtrMasks,DWORD cAtrs,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders); + extern LONG __attribute__((__stdcall__)) SCardGetStatusChangeA(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders); + extern LONG __attribute__((__stdcall__)) SCardGetStatusChangeW(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders); + extern LONG __attribute__((__stdcall__)) SCardCancel(SCARDCONTEXT hContext); +#define SCARD_SHARE_EXCLUSIVE 1 +#define SCARD_SHARE_SHARED 2 +#define SCARD_SHARE_DIRECT 3 +#define SCARD_LEAVE_CARD 0 +#define SCARD_RESET_CARD 1 +#define SCARD_UNPOWER_CARD 2 +#define SCARD_EJECT_CARD 3 + extern LONG __attribute__((__stdcall__)) SCardConnectA(SCARDCONTEXT hContext,LPCSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol); + extern LONG __attribute__((__stdcall__)) SCardConnectW(SCARDCONTEXT hContext,LPCWSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol); + extern LONG __attribute__((__stdcall__)) SCardReconnect(SCARDHANDLE hCard,DWORD dwShareMode,DWORD dwPreferredProtocols,DWORD dwInitialization,LPDWORD pdwActiveProtocol); + extern LONG __attribute__((__stdcall__)) SCardDisconnect(SCARDHANDLE hCard,DWORD dwDisposition); + extern LONG __attribute__((__stdcall__)) SCardBeginTransaction(SCARDHANDLE hCard); + extern LONG __attribute__((__stdcall__)) SCardEndTransaction(SCARDHANDLE hCard,DWORD dwDisposition); + extern LONG __attribute__((__stdcall__)) SCardCancelTransaction(SCARDHANDLE hCard); + extern LONG __attribute__((__stdcall__)) SCardState(SCARDHANDLE hCard,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen); + extern LONG __attribute__((__stdcall__)) SCardStatusA(SCARDHANDLE hCard,LPSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen); + extern LONG __attribute__((__stdcall__)) SCardStatusW(SCARDHANDLE hCard,LPWSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen); + extern LONG __attribute__((__stdcall__)) SCardTransmit(SCARDHANDLE hCard,LPCSCARD_IO_REQUEST pioSendPci,LPCBYTE pbSendBuffer,DWORD cbSendLength,LPSCARD_IO_REQUEST pioRecvPci,LPBYTE pbRecvBuffer,LPDWORD pcbRecvLength); + extern LONG __attribute__((__stdcall__)) SCardControl(SCARDHANDLE hCard,DWORD dwControlCode,LPCVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned); + extern LONG __attribute__((__stdcall__)) SCardGetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPBYTE pbAttr,LPDWORD pcbAttrLen); +#define SCardGetReaderCapabilities SCardGetAttrib + extern LONG __attribute__((__stdcall__)) SCardSetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPCBYTE pbAttr,DWORD cbAttrLen); +#define SCardSetReaderCapabilities SCardSetAttrib +#define SC_DLG_MINIMAL_UI 0x01 +#define SC_DLG_NO_UI 0x02 +#define SC_DLG_FORCE_UI 0x04 +#define SCERR_NOCARDNAME 0x4000 +#define SCERR_NOGUIDS 0x8000 +#define LPOCNCONNPROC __MINGW_NAME_AW(LPOCNCONNPROC) + typedef SCARDHANDLE (__attribute__((__stdcall__)) *LPOCNCONNPROCA) (SCARDCONTEXT,LPSTR,LPSTR,PVOID); + typedef SCARDHANDLE (__attribute__((__stdcall__)) *LPOCNCONNPROCW) (SCARDCONTEXT,LPWSTR,LPWSTR,PVOID); + typedef WINBOOL (__attribute__((__stdcall__)) *LPOCNCHKPROC) (SCARDCONTEXT,SCARDHANDLE,PVOID); + typedef void (__attribute__((__stdcall__)) *LPOCNDSCPROC) (SCARDCONTEXT,SCARDHANDLE,PVOID); + typedef struct { + DWORD dwStructSize; + LPSTR lpstrGroupNames; + DWORD nMaxGroupNames; + LPCGUID rgguidInterfaces; + DWORD cguidInterfaces; + LPSTR lpstrCardNames; + DWORD nMaxCardNames; + LPOCNCHKPROC lpfnCheck; + LPOCNCONNPROCA lpfnConnect; + LPOCNDSCPROC lpfnDisconnect; + LPVOID pvUserData; + DWORD dwShareMode; + DWORD dwPreferredProtocols; + } OPENCARD_SEARCH_CRITERIAA,*POPENCARD_SEARCH_CRITERIAA,*LPOPENCARD_SEARCH_CRITERIAA; + typedef struct { + DWORD dwStructSize; + LPWSTR lpstrGroupNames; + DWORD nMaxGroupNames; + LPCGUID rgguidInterfaces; + DWORD cguidInterfaces; + LPWSTR lpstrCardNames; + DWORD nMaxCardNames; + LPOCNCHKPROC lpfnCheck; + LPOCNCONNPROCW lpfnConnect; + LPOCNDSCPROC lpfnDisconnect; + LPVOID pvUserData; + DWORD dwShareMode; + DWORD dwPreferredProtocols; + } OPENCARD_SEARCH_CRITERIAW,*POPENCARD_SEARCH_CRITERIAW,*LPOPENCARD_SEARCH_CRITERIAW; + typedef OPENCARD_SEARCH_CRITERIAA OPENCARD_SEARCH_CRITERIA; + typedef POPENCARD_SEARCH_CRITERIAA POPENCARD_SEARCH_CRITERIA; + typedef LPOPENCARD_SEARCH_CRITERIAA LPOPENCARD_SEARCH_CRITERIA; + typedef struct { + DWORD dwStructSize; + SCARDCONTEXT hSCardContext; + HWND hwndOwner; + DWORD dwFlags; + LPCSTR lpstrTitle; + LPCSTR lpstrSearchDesc; + HICON hIcon; + POPENCARD_SEARCH_CRITERIAA pOpenCardSearchCriteria; + LPOCNCONNPROCA lpfnConnect; + LPVOID pvUserData; + DWORD dwShareMode; + DWORD dwPreferredProtocols; + LPSTR lpstrRdr; + DWORD nMaxRdr; + LPSTR lpstrCard; + DWORD nMaxCard; + DWORD dwActiveProtocol; + SCARDHANDLE hCardHandle; + } OPENCARDNAME_EXA,*POPENCARDNAME_EXA,*LPOPENCARDNAME_EXA; + typedef struct { + DWORD dwStructSize; + SCARDCONTEXT hSCardContext; + HWND hwndOwner; + DWORD dwFlags; + LPCWSTR lpstrTitle; + LPCWSTR lpstrSearchDesc; + HICON hIcon; + POPENCARD_SEARCH_CRITERIAW pOpenCardSearchCriteria; + LPOCNCONNPROCW lpfnConnect; + LPVOID pvUserData; + DWORD dwShareMode; + DWORD dwPreferredProtocols; + LPWSTR lpstrRdr; + DWORD nMaxRdr; + LPWSTR lpstrCard; + DWORD nMaxCard; + DWORD dwActiveProtocol; + SCARDHANDLE hCardHandle; + } OPENCARDNAME_EXW,*POPENCARDNAME_EXW,*LPOPENCARDNAME_EXW; + typedef OPENCARDNAME_EXA OPENCARDNAME_EX; + typedef POPENCARDNAME_EXA POPENCARDNAME_EX; + typedef LPOPENCARDNAME_EXA LPOPENCARDNAME_EX; +#define OPENCARDNAMEA_EX OPENCARDNAME_EXA +#define OPENCARDNAMEW_EX OPENCARDNAME_EXW +#define POPENCARDNAMEA_EX POPENCARDNAME_EXA +#define POPENCARDNAMEW_EX POPENCARDNAME_EXW +#define LPOPENCARDNAMEA_EX LPOPENCARDNAME_EXA +#define LPOPENCARDNAMEW_EX LPOPENCARDNAME_EXW +#define SCardUIDlgSelectCard __MINGW_NAME_AW(SCardUIDlgSelectCard) + extern LONG __attribute__((__stdcall__)) SCardUIDlgSelectCardA(LPOPENCARDNAME_EXA); + extern LONG __attribute__((__stdcall__)) SCardUIDlgSelectCardW(LPOPENCARDNAME_EXW); + typedef struct { + DWORD dwStructSize; + HWND hwndOwner; + SCARDCONTEXT hSCardContext; + LPSTR lpstrGroupNames; + DWORD nMaxGroupNames; + LPSTR lpstrCardNames; + DWORD nMaxCardNames; + LPCGUID rgguidInterfaces; + DWORD cguidInterfaces; + LPSTR lpstrRdr; + DWORD nMaxRdr; + LPSTR lpstrCard; + DWORD nMaxCard; + LPCSTR lpstrTitle; + DWORD dwFlags; + LPVOID pvUserData; + DWORD dwShareMode; + DWORD dwPreferredProtocols; + DWORD dwActiveProtocol; + LPOCNCONNPROCA lpfnConnect; + LPOCNCHKPROC lpfnCheck; + LPOCNDSCPROC lpfnDisconnect; + SCARDHANDLE hCardHandle; + } OPENCARDNAMEA,*POPENCARDNAMEA,*LPOPENCARDNAMEA; + typedef struct { + DWORD dwStructSize; + HWND hwndOwner; + SCARDCONTEXT hSCardContext; + LPWSTR lpstrGroupNames; + DWORD nMaxGroupNames; + LPWSTR lpstrCardNames; + DWORD nMaxCardNames; + LPCGUID rgguidInterfaces; + DWORD cguidInterfaces; + LPWSTR lpstrRdr; + DWORD nMaxRdr; + LPWSTR lpstrCard; + DWORD nMaxCard; + LPCWSTR lpstrTitle; + DWORD dwFlags; + LPVOID pvUserData; + DWORD dwShareMode; + DWORD dwPreferredProtocols; + DWORD dwActiveProtocol; + LPOCNCONNPROCW lpfnConnect; + LPOCNCHKPROC lpfnCheck; + LPOCNDSCPROC lpfnDisconnect; + SCARDHANDLE hCardHandle; + } OPENCARDNAMEW,*POPENCARDNAMEW,*LPOPENCARDNAMEW; + typedef OPENCARDNAMEA OPENCARDNAME; + typedef POPENCARDNAMEA POPENCARDNAME; + typedef LPOPENCARDNAMEA LPOPENCARDNAME; +#define OPENCARDNAME_A OPENCARDNAMEA +#define OPENCARDNAME_W OPENCARDNAMEW +#define POPENCARDNAME_A POPENCARDNAMEA +#define POPENCARDNAME_W POPENCARDNAMEW +#define LPOPENCARDNAME_A LPOPENCARDNAMEA +#define LPOPENCARDNAME_W LPOPENCARDNAMEW +#define GetOpenCardName __MINGW_NAME_AW(GetOpenCardName) + extern LONG __attribute__((__stdcall__)) GetOpenCardNameA(LPOPENCARDNAMEA); + extern LONG __attribute__((__stdcall__)) GetOpenCardNameW(LPOPENCARDNAMEW); + extern LONG __attribute__((__stdcall__)) SCardDlgExtendedError(void); + extern LONG __attribute__((__stdcall__)) SCardGetTransmitCount(SCARDHANDLE hCard,LPDWORD pcTransmitCount); + extern LONG __attribute__((__stdcall__)) SCardReadCacheA(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPSTR LookupName,PBYTE Data,DWORD *DataLen); + extern LONG __attribute__((__stdcall__)) SCardReadCacheW(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPWSTR LookupName,PBYTE Data,DWORD *DataLen); +#define SCardReadCache __MINGW_NAME_AW(SCardReadCache) + extern LONG __attribute__((__stdcall__)) SCardWriteCacheA(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPSTR LookupName,PBYTE Data,DWORD DataLen); + extern LONG __attribute__((__stdcall__)) SCardWriteCacheW(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPWSTR LookupName,PBYTE Data,DWORD DataLen); +#define SCardWriteCache __MINGW_NAME_AW(SCardWriteCache) +#define _WINSPOOL_ +#define _PRSHT_H_ +#define WINCOMMCTRLAPI DECLSPEC_IMPORT +#define CCSIZEOF_STRUCT(structname,member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) +#pragma pack(push,8) +#define SNDMSG SendMessage +#define MAXPROPPAGES 100 + struct _PSP; + struct _PROPSHEETPAGEA; + struct _PROPSHEETPAGEW; + typedef struct _PSP *HPROPSHEETPAGE; + typedef UINT (__attribute__((__stdcall__)) *LPFNPSPCALLBACKA)(HWND hwnd,UINT uMsg,struct _PROPSHEETPAGEA *ppsp); + typedef UINT (__attribute__((__stdcall__)) *LPFNPSPCALLBACKW)(HWND hwnd,UINT uMsg,struct _PROPSHEETPAGEW *ppsp); +#define LPFNPSPCALLBACK __MINGW_NAME_AW(LPFNPSPCALLBACK) +#define PSP_DEFAULT 0x00000000 +#define PSP_DLGINDIRECT 0x00000001 +#define PSP_USEHICON 0x00000002 +#define PSP_USEICONID 0x00000004 +#define PSP_USETITLE 0x00000008 +#define PSP_RTLREADING 0x00000010 +#define PSP_HASHELP 0x00000020 +#define PSP_USEREFPARENT 0x00000040 +#define PSP_USECALLBACK 0x00000080 +#define PSP_PREMATURE 0x00000400 +#define PSP_HIDEHEADER 0x00000800 +#define PSP_USEHEADERTITLE 0x00001000 +#define PSP_USEHEADERSUBTITLE 0x00002000 +#define PSP_USEFUSIONCONTEXT 0x00004000 +#define PSPCB_ADDREF 0 +#define PSPCB_RELEASE 1 +#define PSPCB_CREATE 2 +#define PROPSHEETPAGEA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA,pcRefParent) +#define PROPSHEETPAGEW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW,pcRefParent) +#define PROPSHEETPAGEA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA,pszHeaderSubTitle) +#define PROPSHEETPAGEW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW,pszHeaderSubTitle) + typedef LPCDLGTEMPLATE PROPSHEETPAGE_RESOURCE; +#define PROPSHEETPAGEA_V1_FIELDS DWORD dwSize,dwFlags; HINSTANCE hInstance; __C89_NAMELESS union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; __C89_NAMELESS union { HICON hIcon; LPCSTR pszIcon; } DUMMYUNIONNAME2; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent; +#define PROPSHEETPAGEW_V1_FIELDS DWORD dwSize, dwFlags; HINSTANCE hInstance; __C89_NAMELESS union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; __C89_NAMELESS union { HICON hIcon; LPCWSTR pszIcon; } DUMMYUNIONNAME2; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent; +#define _PROPSHEETPAGEA_V3 _PROPSHEETPAGEA +#define _PROPSHEETPAGEW_V3 _PROPSHEETPAGEW + typedef struct _PROPSHEETPAGEA_V1 { + DWORD dwSize,dwFlags; HINSTANCE hInstance; __extension__ union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCSTR pszIcon; } ; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent; + } PROPSHEETPAGEA_V1,*LPPROPSHEETPAGEA_V1; + typedef const PROPSHEETPAGEA_V1 *LPCPROPSHEETPAGEA_V1; + typedef struct _PROPSHEETPAGEA_V2 { + DWORD dwSize,dwFlags; HINSTANCE hInstance; __extension__ union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCSTR pszIcon; } ; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent; + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + } PROPSHEETPAGEA_V2,*LPPROPSHEETPAGEA_V2; + typedef const PROPSHEETPAGEA_V2 *LPCPROPSHEETPAGEA_V2; + typedef struct _PROPSHEETPAGEA { + DWORD dwSize,dwFlags; HINSTANCE hInstance; __extension__ union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCSTR pszIcon; } ; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent; + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + HANDLE hActCtx; + } PROPSHEETPAGEA_V3,*LPPROPSHEETPAGEA_V3; + typedef const PROPSHEETPAGEA_V3 *LPCPROPSHEETPAGEA_V3; + typedef struct _PROPSHEETPAGEW_V1 { + DWORD dwSize, dwFlags; HINSTANCE hInstance; __extension__ union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCWSTR pszIcon; } ; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent; + } PROPSHEETPAGEW_V1,*LPPROPSHEETPAGEW_V1; + typedef const PROPSHEETPAGEW_V1 *LPCPROPSHEETPAGEW_V1; + typedef struct _PROPSHEETPAGEW_V2 { + DWORD dwSize, dwFlags; HINSTANCE hInstance; __extension__ union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCWSTR pszIcon; } ; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent; + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + } PROPSHEETPAGEW_V2,*LPPROPSHEETPAGEW_V2; + typedef const PROPSHEETPAGEW_V2 *LPCPROPSHEETPAGEW_V2; + typedef struct _PROPSHEETPAGEW { + DWORD dwSize, dwFlags; HINSTANCE hInstance; __extension__ union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCWSTR pszIcon; } ; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent; + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + HANDLE hActCtx; + } PROPSHEETPAGEW_V3,*LPPROPSHEETPAGEW_V3; + typedef const PROPSHEETPAGEW_V3 *LPCPROPSHEETPAGEW_V3; + typedef PROPSHEETPAGEA_V3 PROPSHEETPAGEA_LATEST; + typedef PROPSHEETPAGEW_V3 PROPSHEETPAGEW_LATEST; + typedef LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA_LATEST; + typedef LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW_LATEST; + typedef LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA_LATEST; + typedef LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW_LATEST; + typedef PROPSHEETPAGEA_V3 PROPSHEETPAGEA; + typedef PROPSHEETPAGEW_V3 PROPSHEETPAGEW; + typedef LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA; + typedef LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW; + typedef LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA; + typedef LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW; +#define PROPSHEETPAGE __MINGW_NAME_AW(PROPSHEETPAGE) +#define LPPROPSHEETPAGE __MINGW_NAME_AW(LPPROPSHEETPAGE) +#define LPCPROPSHEETPAGE __MINGW_NAME_AW(LPCPROPSHEETPAGE) +#define PROPSHEETPAGE_V1_SIZE __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V1_SIZE) +#define PROPSHEETPAGE_V2_SIZE __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V2_SIZE) +#define PROPSHEETPAGE_V1 __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V1) +#define LPPROPSHEETPAGE_V1 __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_V1) +#define LPCPROPSHEETPAGE_V1 __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_V1) +#define PROPSHEETPAGE_V2 __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V2) +#define LPPROPSHEETPAGE_V2 __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_V2) +#define LPCPROPSHEETPAGE_V2 __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_V2) +#define PROPSHEETPAGE_V3 __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V3) +#define LPPROPSHEETPAGE_V3 __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_V3) +#define LPCPROPSHEETPAGE_V3 __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_V3) +#define PROPSHEETPAGE_LATEST __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_LATEST) +#define LPPROPSHEETPAGE_LATEST __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_LATEST) +#define LPCPROPSHEETPAGE_LATEST __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_LATEST) +#define PSH_DEFAULT 0x00000000 +#define PSH_PROPTITLE 0x00000001 +#define PSH_USEHICON 0x00000002 +#define PSH_USEICONID 0x00000004 +#define PSH_PROPSHEETPAGE 0x00000008 +#define PSH_WIZARDHASFINISH 0x00000010 +#define PSH_WIZARD 0x00000020 +#define PSH_USEPSTARTPAGE 0x00000040 +#define PSH_NOAPPLYNOW 0x00000080 +#define PSH_USECALLBACK 0x00000100 +#define PSH_HASHELP 0x00000200 +#define PSH_MODELESS 0x00000400 +#define PSH_RTLREADING 0x00000800 +#define PSH_WIZARDCONTEXTHELP 0x00001000 +#define PSH_WIZARD97 0x01000000 +#define PSH_WATERMARK 0x00008000 +#define PSH_USEHBMWATERMARK 0x00010000 +#define PSH_USEHPLWATERMARK 0x00020000 +#define PSH_STRETCHWATERMARK 0x00040000 +#define PSH_HEADER 0x00080000 +#define PSH_USEHBMHEADER 0x00100000 +#define PSH_USEPAGELANG 0x00200000 +#define PSH_WIZARD_LITE 0x00400000 +#define PSH_NOCONTEXTHELP 0x02000000 + typedef int (__attribute__((__stdcall__)) *PFNPROPSHEETCALLBACK)(HWND,UINT,LPARAM); +#define PROPSHEETHEADERA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA,pfnCallback) +#define PROPSHEETHEADERW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW,pfnCallback) +#define PROPSHEETHEADERA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA,DUMMYUNION5_MEMBER(hbmHeader)) +#define PROPSHEETHEADERW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW,DUMMYUNION5_MEMBER(hbmHeader)) + typedef struct _PROPSHEETHEADERA { + DWORD dwSize; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + __extension__ union { + HICON hIcon; + LPCSTR pszIcon; + } ; + LPCSTR pszCaption; + UINT nPages; + __extension__ union { + UINT nStartPage; + LPCSTR pStartPage; + } ; + __extension__ union { + LPCPROPSHEETPAGEA ppsp; + HPROPSHEETPAGE *phpage; + } ; + PFNPROPSHEETCALLBACK pfnCallback; + __extension__ union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; + } ; + HPALETTE hplWatermark; + __extension__ union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; + } ; + } PROPSHEETHEADERA,*LPPROPSHEETHEADERA; + typedef const PROPSHEETHEADERA *LPCPROPSHEETHEADERA; + typedef struct _PROPSHEETHEADERW { + DWORD dwSize; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + __extension__ union { + HICON hIcon; + LPCWSTR pszIcon; + } ; + LPCWSTR pszCaption; + UINT nPages; + __extension__ union { + UINT nStartPage; + LPCWSTR pStartPage; + } ; + __extension__ union { + LPCPROPSHEETPAGEW ppsp; + HPROPSHEETPAGE *phpage; + } ; + PFNPROPSHEETCALLBACK pfnCallback; + __extension__ union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; + } ; + HPALETTE hplWatermark; + __extension__ union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; + } ; + } PROPSHEETHEADERW,*LPPROPSHEETHEADERW; + typedef const PROPSHEETHEADERW *LPCPROPSHEETHEADERW; +#define PROPSHEETHEADER __MINGW_NAME_AW(PROPSHEETHEADER) +#define LPPROPSHEETHEADER __MINGW_NAME_AW(LPPROPSHEETHEADER) +#define LPCPROPSHEETHEADER __MINGW_NAME_AW(LPCPROPSHEETHEADER) +#define PROPSHEETHEADER_V1_SIZE __MINGW_NAME_AW_EXT(PROPSHEETHEADER,_V1_SIZE) +#define PROPSHEETHEADER_V2_SIZE __MINGW_NAME_AW_EXT(PROPSHEETHEADER,_V2_SIZE) +#define PSCB_INITIALIZED 1 +#define PSCB_PRECREATE 2 +#define PSCB_BUTTONPRESSED 3 + __declspec (dllimport) HPROPSHEETPAGE __attribute__((__stdcall__)) CreatePropertySheetPageA(LPCPROPSHEETPAGEA constPropSheetPagePointer); + __declspec (dllimport) HPROPSHEETPAGE __attribute__((__stdcall__)) CreatePropertySheetPageW(LPCPROPSHEETPAGEW constPropSheetPagePointer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DestroyPropertySheetPage(HPROPSHEETPAGE); + __declspec (dllimport) INT_PTR __attribute__((__stdcall__)) PropertySheetA(LPCPROPSHEETHEADERA); + __declspec (dllimport) INT_PTR __attribute__((__stdcall__)) PropertySheetW(LPCPROPSHEETHEADERW); +#define CreatePropertySheetPage __MINGW_NAME_AW(CreatePropertySheetPage) +#define PropertySheet __MINGW_NAME_AW(PropertySheet) + typedef WINBOOL (__attribute__((__stdcall__)) *LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE,LPARAM); + typedef WINBOOL (__attribute__((__stdcall__)) *LPFNADDPROPSHEETPAGES)(LPVOID,LPFNADDPROPSHEETPAGE,LPARAM); + typedef struct _PSHNOTIFY { + NMHDR hdr; + LPARAM lParam; + } PSHNOTIFY,*LPPSHNOTIFY; +#define PSN_FIRST (0U-200U) +#define PSN_LAST (0U-299U) +#define PSN_SETACTIVE (PSN_FIRST-0) +#define PSN_KILLACTIVE (PSN_FIRST-1) +#define PSN_APPLY (PSN_FIRST-2) +#define PSN_RESET (PSN_FIRST-3) +#define PSN_HELP (PSN_FIRST-5) +#define PSN_WIZBACK (PSN_FIRST-6) +#define PSN_WIZNEXT (PSN_FIRST-7) +#define PSN_WIZFINISH (PSN_FIRST-8) +#define PSN_QUERYCANCEL (PSN_FIRST-9) +#define PSN_GETOBJECT (PSN_FIRST-10) +#define PSN_TRANSLATEACCELERATOR (PSN_FIRST-12) +#define PSN_QUERYINITIALFOCUS (PSN_FIRST-13) +#define PSNRET_NOERROR 0 +#define PSNRET_INVALID 1 +#define PSNRET_INVALID_NOCHANGEPAGE 2 +#define PSNRET_MESSAGEHANDLED 3 +#define PSM_SETCURSEL (WM_USER + 101) +#define PropSheet_SetCurSel(hDlg,hpage,index) SNDMSG(hDlg,PSM_SETCURSEL,(WPARAM)index,(LPARAM)hpage) +#define PSM_REMOVEPAGE (WM_USER + 102) +#define PropSheet_RemovePage(hDlg,index,hpage) SNDMSG(hDlg,PSM_REMOVEPAGE,index,(LPARAM)hpage) +#define PSM_ADDPAGE (WM_USER + 103) +#define PropSheet_AddPage(hDlg,hpage) SNDMSG(hDlg,PSM_ADDPAGE,0,(LPARAM)hpage) +#define PSM_CHANGED (WM_USER + 104) +#define PropSheet_Changed(hDlg,hwnd) SNDMSG(hDlg,PSM_CHANGED,(WPARAM)hwnd,(LPARAM)0) +#define PSM_RESTARTWINDOWS (WM_USER + 105) +#define PropSheet_RestartWindows(hDlg) SNDMSG(hDlg,PSM_RESTARTWINDOWS,(WPARAM)0,(LPARAM)0) +#define PSM_REBOOTSYSTEM (WM_USER + 106) +#define PropSheet_RebootSystem(hDlg) SNDMSG(hDlg,PSM_REBOOTSYSTEM,(WPARAM)0,(LPARAM)0) +#define PSM_CANCELTOCLOSE (WM_USER + 107) +#define PropSheet_CancelToClose(hDlg) PostMessage(hDlg,PSM_CANCELTOCLOSE,(WPARAM)0,(LPARAM)0) +#define PSM_QUERYSIBLINGS (WM_USER + 108) +#define PropSheet_QuerySiblings(hDlg,wParam,lParam) SNDMSG(hDlg,PSM_QUERYSIBLINGS,wParam,lParam) +#define PSM_UNCHANGED (WM_USER + 109) +#define PropSheet_UnChanged(hDlg,hwnd) SNDMSG(hDlg,PSM_UNCHANGED,(WPARAM)hwnd,(LPARAM)0) +#define PSM_APPLY (WM_USER + 110) +#define PropSheet_Apply(hDlg) SNDMSG(hDlg,PSM_APPLY,(WPARAM)0,(LPARAM)0) +#define PSM_SETTITLEA (WM_USER + 111) +#define PSM_SETTITLEW (WM_USER + 120) +#define PSM_SETTITLE __MINGW_NAME_AW(PSM_SETTITLE) +#define PropSheet_SetTitle(hDlg,wStyle,lpszText) SNDMSG(hDlg,PSM_SETTITLE,wStyle,(LPARAM)(LPCTSTR)(lpszText)) +#define PSM_SETWIZBUTTONS (WM_USER + 112) +#define PropSheet_SetWizButtons(hDlg,dwFlags) PostMessage(hDlg,PSM_SETWIZBUTTONS,(WPARAM)0,(LPARAM)dwFlags) +#define PSWIZB_BACK 0x00000001 +#define PSWIZB_NEXT 0x00000002 +#define PSWIZB_FINISH 0x00000004 +#define PSWIZB_DISABLEDFINISH 0x00000008 +#define PSM_PRESSBUTTON (WM_USER + 113) +#define PropSheet_PressButton(hDlg,iButton) PostMessage(hDlg,PSM_PRESSBUTTON,(WPARAM)iButton,(LPARAM)0) +#define PSBTN_BACK 0 +#define PSBTN_NEXT 1 +#define PSBTN_FINISH 2 +#define PSBTN_OK 3 +#define PSBTN_APPLYNOW 4 +#define PSBTN_CANCEL 5 +#define PSBTN_HELP 6 +#define PSBTN_MAX 6 +#define PSM_SETCURSELID (WM_USER + 114) +#define PropSheet_SetCurSelByID(hDlg,id) SNDMSG(hDlg,PSM_SETCURSELID,0,(LPARAM)id) +#define PSM_SETFINISHTEXTA (WM_USER + 115) +#define PSM_SETFINISHTEXTW (WM_USER + 121) +#define PSM_SETFINISHTEXT __MINGW_NAME_AW(PSM_SETFINISHTEXT) +#define PropSheet_SetFinishText(hDlg,lpszText) SNDMSG(hDlg,PSM_SETFINISHTEXT,0,(LPARAM)lpszText) +#define PSM_GETTABCONTROL (WM_USER + 116) +#define PropSheet_GetTabControl(hDlg) (HWND)SNDMSG(hDlg,PSM_GETTABCONTROL,0,0) +#define PSM_ISDIALOGMESSAGE (WM_USER + 117) +#define PropSheet_IsDialogMessage(hDlg,pMsg) (WINBOOL)SNDMSG(hDlg,PSM_ISDIALOGMESSAGE,0,(LPARAM)pMsg) +#define PSM_GETCURRENTPAGEHWND (WM_USER + 118) +#define PropSheet_GetCurrentPageHwnd(hDlg) (HWND)SNDMSG(hDlg,PSM_GETCURRENTPAGEHWND,(WPARAM)0,(LPARAM)0) +#define PSM_INSERTPAGE (WM_USER + 119) +#define PropSheet_InsertPage(hDlg,index,hpage) SNDMSG(hDlg,PSM_INSERTPAGE,(WPARAM)(index),(LPARAM)(hpage)) +#define PSM_SETHEADERTITLEA (WM_USER + 125) +#define PSM_SETHEADERTITLEW (WM_USER + 126) +#define PSM_SETHEADERTITLE __MINGW_NAME_AW(PSM_SETHEADERTITLE) +#define PropSheet_SetHeaderTitle(hDlg,index,lpszText) SNDMSG(hDlg,PSM_SETHEADERTITLE,(WPARAM)(index),(LPARAM)(lpszText)) +#define PSM_SETHEADERSUBTITLEA (WM_USER + 127) +#define PSM_SETHEADERSUBTITLEW (WM_USER + 128) +#define PSM_SETHEADERSUBTITLE __MINGW_NAME_AW(PSM_SETHEADERSUBTITLE) +#define PropSheet_SetHeaderSubTitle(hDlg,index,lpszText) SNDMSG(hDlg,PSM_SETHEADERSUBTITLE,(WPARAM)(index),(LPARAM)(lpszText)) +#define PSM_HWNDTOINDEX (WM_USER + 129) +#define PropSheet_HwndToIndex(hDlg,hwnd) (int)SNDMSG(hDlg,PSM_HWNDTOINDEX,(WPARAM)(hwnd),0) +#define PSM_INDEXTOHWND (WM_USER + 130) +#define PropSheet_IndexToHwnd(hDlg,i) (HWND)SNDMSG(hDlg,PSM_INDEXTOHWND,(WPARAM)(i),0) +#define PSM_PAGETOINDEX (WM_USER + 131) +#define PropSheet_PageToIndex(hDlg,hpage) (int)SNDMSG(hDlg,PSM_PAGETOINDEX,0,(LPARAM)(hpage)) +#define PSM_INDEXTOPAGE (WM_USER + 132) +#define PropSheet_IndexToPage(hDlg,i) (HPROPSHEETPAGE)SNDMSG(hDlg,PSM_INDEXTOPAGE,(WPARAM)(i),0) +#define PSM_IDTOINDEX (WM_USER + 133) +#define PropSheet_IdToIndex(hDlg,id) (int)SNDMSG(hDlg,PSM_IDTOINDEX,0,(LPARAM)(id)) +#define PSM_INDEXTOID (WM_USER + 134) +#define PropSheet_IndexToId(hDlg,i) SNDMSG(hDlg,PSM_INDEXTOID,(WPARAM)(i),0) +#define PSM_GETRESULT (WM_USER + 135) +#define PropSheet_GetResult(hDlg) SNDMSG(hDlg,PSM_GETRESULT,0,0) +#define PSM_RECALCPAGESIZES (WM_USER + 136) +#define PropSheet_RecalcPageSizes(hDlg) SNDMSG(hDlg,PSM_RECALCPAGESIZES,0,0) +#define ID_PSRESTARTWINDOWS 0x2 +#define ID_PSREBOOTSYSTEM (ID_PSRESTARTWINDOWS | 0x1) +#define WIZ_CXDLG 276 +#define WIZ_CYDLG 140 +#define WIZ_CXBMP 80 +#define WIZ_BODYX 92 +#define WIZ_BODYCX 184 +#define PROP_SM_CXDLG 212 +#define PROP_SM_CYDLG 188 +#define PROP_MED_CXDLG 227 +#define PROP_MED_CYDLG 215 +#define PROP_LG_CXDLG 252 +#define PROP_LG_CYDLG 218 +#pragma pack(pop) + typedef struct _PRINTER_INFO_1A { + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; + } PRINTER_INFO_1A,*PPRINTER_INFO_1A,*LPPRINTER_INFO_1A; + typedef struct _PRINTER_INFO_1W { + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; + } PRINTER_INFO_1W,*PPRINTER_INFO_1W,*LPPRINTER_INFO_1W; + typedef PRINTER_INFO_1A PRINTER_INFO_1; + typedef PPRINTER_INFO_1A PPRINTER_INFO_1; + typedef LPPRINTER_INFO_1A LPPRINTER_INFO_1; + typedef struct _PRINTER_INFO_2A { + LPSTR pServerName; + LPSTR pPrinterName; + LPSTR pShareName; + LPSTR pPortName; + LPSTR pDriverName; + LPSTR pComment; + LPSTR pLocation; + LPDEVMODEA pDevMode; + LPSTR pSepFile; + LPSTR pPrintProcessor; + LPSTR pDatatype; + LPSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; + } PRINTER_INFO_2A,*PPRINTER_INFO_2A,*LPPRINTER_INFO_2A; + typedef struct _PRINTER_INFO_2W { + LPWSTR pServerName; + LPWSTR pPrinterName; + LPWSTR pShareName; + LPWSTR pPortName; + LPWSTR pDriverName; + LPWSTR pComment; + LPWSTR pLocation; + LPDEVMODEW pDevMode; + LPWSTR pSepFile; + LPWSTR pPrintProcessor; + LPWSTR pDatatype; + LPWSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; + } PRINTER_INFO_2W,*PPRINTER_INFO_2W,*LPPRINTER_INFO_2W; + typedef PRINTER_INFO_2A PRINTER_INFO_2; + typedef PPRINTER_INFO_2A PPRINTER_INFO_2; + typedef LPPRINTER_INFO_2A LPPRINTER_INFO_2; + typedef struct _PRINTER_INFO_3 { + PSECURITY_DESCRIPTOR pSecurityDescriptor; + } PRINTER_INFO_3,*PPRINTER_INFO_3,*LPPRINTER_INFO_3; + typedef struct _PRINTER_INFO_4A { + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; + } PRINTER_INFO_4A,*PPRINTER_INFO_4A,*LPPRINTER_INFO_4A; + typedef struct _PRINTER_INFO_4W { + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; + } PRINTER_INFO_4W,*PPRINTER_INFO_4W,*LPPRINTER_INFO_4W; + typedef PRINTER_INFO_4A PRINTER_INFO_4; + typedef PPRINTER_INFO_4A PPRINTER_INFO_4; + typedef LPPRINTER_INFO_4A LPPRINTER_INFO_4; + typedef struct _PRINTER_INFO_5A { + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; + } PRINTER_INFO_5A,*PPRINTER_INFO_5A,*LPPRINTER_INFO_5A; + typedef struct _PRINTER_INFO_5W { + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; + } PRINTER_INFO_5W,*PPRINTER_INFO_5W,*LPPRINTER_INFO_5W; + typedef PRINTER_INFO_5A PRINTER_INFO_5; + typedef PPRINTER_INFO_5A PPRINTER_INFO_5; + typedef LPPRINTER_INFO_5A LPPRINTER_INFO_5; + typedef struct _PRINTER_INFO_6 { + DWORD dwStatus; + } PRINTER_INFO_6,*PPRINTER_INFO_6,*LPPRINTER_INFO_6; + typedef struct _PRINTER_INFO_7A { + LPSTR pszObjectGUID; + DWORD dwAction; + } PRINTER_INFO_7A,*PPRINTER_INFO_7A,*LPPRINTER_INFO_7A; + typedef struct _PRINTER_INFO_7W { + LPWSTR pszObjectGUID; + DWORD dwAction; + } PRINTER_INFO_7W,*PPRINTER_INFO_7W,*LPPRINTER_INFO_7W; + typedef PRINTER_INFO_7A PRINTER_INFO_7; + typedef PPRINTER_INFO_7A PPRINTER_INFO_7; + typedef LPPRINTER_INFO_7A LPPRINTER_INFO_7; +#define DSPRINT_PUBLISH 0x00000001 +#define DSPRINT_UPDATE 0x00000002 +#define DSPRINT_UNPUBLISH 0x00000004 +#define DSPRINT_REPUBLISH 0x00000008 +#define DSPRINT_PENDING 0x80000000 + typedef struct _PRINTER_INFO_8A { + LPDEVMODEA pDevMode; + } PRINTER_INFO_8A,*PPRINTER_INFO_8A,*LPPRINTER_INFO_8A; + typedef struct _PRINTER_INFO_8W { + LPDEVMODEW pDevMode; + } PRINTER_INFO_8W,*PPRINTER_INFO_8W,*LPPRINTER_INFO_8W; + typedef PRINTER_INFO_8A PRINTER_INFO_8; + typedef PPRINTER_INFO_8A PPRINTER_INFO_8; + typedef LPPRINTER_INFO_8A LPPRINTER_INFO_8; + typedef struct _PRINTER_INFO_9A { + LPDEVMODEA pDevMode; + } PRINTER_INFO_9A,*PPRINTER_INFO_9A,*LPPRINTER_INFO_9A; + typedef struct _PRINTER_INFO_9W { + LPDEVMODEW pDevMode; + } PRINTER_INFO_9W,*PPRINTER_INFO_9W,*LPPRINTER_INFO_9W; + typedef PRINTER_INFO_9A PRINTER_INFO_9; + typedef PPRINTER_INFO_9A PPRINTER_INFO_9; + typedef LPPRINTER_INFO_9A LPPRINTER_INFO_9; +#define PRINTER_CONTROL_PAUSE 1 +#define PRINTER_CONTROL_RESUME 2 +#define PRINTER_CONTROL_PURGE 3 +#define PRINTER_CONTROL_SET_STATUS 4 +#define PRINTER_STATUS_PAUSED 0x00000001 +#define PRINTER_STATUS_ERROR 0x00000002 +#define PRINTER_STATUS_PENDING_DELETION 0x00000004 +#define PRINTER_STATUS_PAPER_JAM 0x00000008 +#define PRINTER_STATUS_PAPER_OUT 0x00000010 +#define PRINTER_STATUS_MANUAL_FEED 0x00000020 +#define PRINTER_STATUS_PAPER_PROBLEM 0x00000040 +#define PRINTER_STATUS_OFFLINE 0x00000080 +#define PRINTER_STATUS_IO_ACTIVE 0x00000100 +#define PRINTER_STATUS_BUSY 0x00000200 +#define PRINTER_STATUS_PRINTING 0x00000400 +#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x00000800 +#define PRINTER_STATUS_NOT_AVAILABLE 0x00001000 +#define PRINTER_STATUS_WAITING 0x00002000 +#define PRINTER_STATUS_PROCESSING 0x00004000 +#define PRINTER_STATUS_INITIALIZING 0x00008000 +#define PRINTER_STATUS_WARMING_UP 0x00010000 +#define PRINTER_STATUS_TONER_LOW 0x00020000 +#define PRINTER_STATUS_NO_TONER 0x00040000 +#define PRINTER_STATUS_PAGE_PUNT 0x00080000 +#define PRINTER_STATUS_USER_INTERVENTION 0x00100000 +#define PRINTER_STATUS_OUT_OF_MEMORY 0x00200000 +#define PRINTER_STATUS_DOOR_OPEN 0x00400000 +#define PRINTER_STATUS_SERVER_UNKNOWN 0x00800000 +#define PRINTER_STATUS_POWER_SAVE 0x01000000 +#define PRINTER_ATTRIBUTE_QUEUED 0x00000001 +#define PRINTER_ATTRIBUTE_DIRECT 0x00000002 +#define PRINTER_ATTRIBUTE_DEFAULT 0x00000004 +#define PRINTER_ATTRIBUTE_SHARED 0x00000008 +#define PRINTER_ATTRIBUTE_NETWORK 0x00000010 +#define PRINTER_ATTRIBUTE_HIDDEN 0x00000020 +#define PRINTER_ATTRIBUTE_LOCAL 0x00000040 +#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080 +#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100 +#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200 +#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400 +#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800 +#define PRINTER_ATTRIBUTE_RAW_ONLY 0x00001000 +#define PRINTER_ATTRIBUTE_PUBLISHED 0x00002000 +#define PRINTER_ATTRIBUTE_FAX 0x00004000 +#define PRINTER_ATTRIBUTE_TS 0x00008000 +#define NO_PRIORITY 0 +#define MAX_PRIORITY 99 +#define MIN_PRIORITY 1 +#define DEF_PRIORITY 1 + typedef struct _JOB_INFO_1A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pDatatype; + LPSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; + } JOB_INFO_1A,*PJOB_INFO_1A,*LPJOB_INFO_1A; + typedef struct _JOB_INFO_1W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pDatatype; + LPWSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; + } JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W; + typedef JOB_INFO_1A JOB_INFO_1; + typedef PJOB_INFO_1A PJOB_INFO_1; + typedef LPJOB_INFO_1A LPJOB_INFO_1; + typedef struct _JOB_INFO_2A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pNotifyName; + LPSTR pDatatype; + LPSTR pPrintProcessor; + LPSTR pParameters; + LPSTR pDriverName; + LPDEVMODEA pDevMode; + LPSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; + } JOB_INFO_2A,*PJOB_INFO_2A,*LPJOB_INFO_2A; + typedef struct _JOB_INFO_2W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pNotifyName; + LPWSTR pDatatype; + LPWSTR pPrintProcessor; + LPWSTR pParameters; + LPWSTR pDriverName; + LPDEVMODEW pDevMode; + LPWSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; + } JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W; + typedef JOB_INFO_2A JOB_INFO_2; + typedef PJOB_INFO_2A PJOB_INFO_2; + typedef LPJOB_INFO_2A LPJOB_INFO_2; + typedef struct _JOB_INFO_3 { + DWORD JobId; + DWORD NextJobId; + DWORD Reserved; + } JOB_INFO_3,*PJOB_INFO_3,*LPJOB_INFO_3; +#define JOB_CONTROL_PAUSE 1 +#define JOB_CONTROL_RESUME 2 +#define JOB_CONTROL_CANCEL 3 +#define JOB_CONTROL_RESTART 4 +#define JOB_CONTROL_DELETE 5 +#define JOB_CONTROL_SENT_TO_PRINTER 6 +#define JOB_CONTROL_LAST_PAGE_EJECTED 7 +#define JOB_STATUS_PAUSED 0x00000001 +#define JOB_STATUS_ERROR 0x00000002 +#define JOB_STATUS_DELETING 0x00000004 +#define JOB_STATUS_SPOOLING 0x00000008 +#define JOB_STATUS_PRINTING 0x00000010 +#define JOB_STATUS_OFFLINE 0x00000020 +#define JOB_STATUS_PAPEROUT 0x00000040 +#define JOB_STATUS_PRINTED 0x00000080 +#define JOB_STATUS_DELETED 0x00000100 +#define JOB_STATUS_BLOCKED_DEVQ 0x00000200 +#define JOB_STATUS_USER_INTERVENTION 0x00000400 +#define JOB_STATUS_RESTART 0x00000800 +#define JOB_STATUS_COMPLETE 0x00001000 +#define JOB_POSITION_UNSPECIFIED 0 + typedef struct _ADDJOB_INFO_1A { + LPSTR Path; + DWORD JobId; + } ADDJOB_INFO_1A,*PADDJOB_INFO_1A,*LPADDJOB_INFO_1A; + typedef struct _ADDJOB_INFO_1W { + LPWSTR Path; + DWORD JobId; + } ADDJOB_INFO_1W,*PADDJOB_INFO_1W,*LPADDJOB_INFO_1W; + typedef ADDJOB_INFO_1A ADDJOB_INFO_1; + typedef PADDJOB_INFO_1A PADDJOB_INFO_1; + typedef LPADDJOB_INFO_1A LPADDJOB_INFO_1; + typedef struct _DRIVER_INFO_1A { + LPSTR pName; + } DRIVER_INFO_1A,*PDRIVER_INFO_1A,*LPDRIVER_INFO_1A; + typedef struct _DRIVER_INFO_1W { + LPWSTR pName; + } DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W; + typedef DRIVER_INFO_1A DRIVER_INFO_1; + typedef PDRIVER_INFO_1A PDRIVER_INFO_1; + typedef LPDRIVER_INFO_1A LPDRIVER_INFO_1; + typedef struct _DRIVER_INFO_2A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + } DRIVER_INFO_2A,*PDRIVER_INFO_2A,*LPDRIVER_INFO_2A; + typedef struct _DRIVER_INFO_2W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + } DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W; + typedef DRIVER_INFO_2A DRIVER_INFO_2; + typedef PDRIVER_INFO_2A PDRIVER_INFO_2; + typedef LPDRIVER_INFO_2A LPDRIVER_INFO_2; + typedef struct _DRIVER_INFO_3A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + } DRIVER_INFO_3A,*PDRIVER_INFO_3A,*LPDRIVER_INFO_3A; + typedef struct _DRIVER_INFO_3W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + } DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W; + typedef DRIVER_INFO_3A DRIVER_INFO_3; + typedef PDRIVER_INFO_3A PDRIVER_INFO_3; + typedef LPDRIVER_INFO_3A LPDRIVER_INFO_3; + typedef struct _DRIVER_INFO_4A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + LPSTR pszzPreviousNames; + } DRIVER_INFO_4A,*PDRIVER_INFO_4A,*LPDRIVER_INFO_4A; + typedef struct _DRIVER_INFO_4W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + LPWSTR pszzPreviousNames; + } DRIVER_INFO_4W,*PDRIVER_INFO_4W,*LPDRIVER_INFO_4W; + typedef DRIVER_INFO_4A DRIVER_INFO_4; + typedef PDRIVER_INFO_4A PDRIVER_INFO_4; + typedef LPDRIVER_INFO_4A LPDRIVER_INFO_4; + typedef struct _DRIVER_INFO_5A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + DWORD dwDriverAttributes; + DWORD dwConfigVersion; + DWORD dwDriverVersion; + } DRIVER_INFO_5A,*PDRIVER_INFO_5A,*LPDRIVER_INFO_5A; + typedef struct _DRIVER_INFO_5W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + DWORD dwDriverAttributes; + DWORD dwConfigVersion; + DWORD dwDriverVersion; + } DRIVER_INFO_5W,*PDRIVER_INFO_5W,*LPDRIVER_INFO_5W; + typedef DRIVER_INFO_5A DRIVER_INFO_5; + typedef PDRIVER_INFO_5A PDRIVER_INFO_5; + typedef LPDRIVER_INFO_5A LPDRIVER_INFO_5; + typedef struct _DRIVER_INFO_6A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + LPSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPSTR pszMfgName; + LPSTR pszOEMUrl; + LPSTR pszHardwareID; + LPSTR pszProvider; + } DRIVER_INFO_6A,*PDRIVER_INFO_6A,*LPDRIVER_INFO_6A; + typedef struct _DRIVER_INFO_6W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + LPWSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPWSTR pszMfgName; + LPWSTR pszOEMUrl; + LPWSTR pszHardwareID; + LPWSTR pszProvider; + } DRIVER_INFO_6W,*PDRIVER_INFO_6W,*LPDRIVER_INFO_6W; + typedef DRIVER_INFO_6A DRIVER_INFO_6; + typedef PDRIVER_INFO_6A PDRIVER_INFO_6; + typedef LPDRIVER_INFO_6A LPDRIVER_INFO_6; +#define DRIVER_KERNELMODE 0x00000001 +#define DRIVER_USERMODE 0x00000002 +#define DPD_DELETE_UNUSED_FILES 0x00000001 +#define DPD_DELETE_SPECIFIC_VERSION 0x00000002 +#define DPD_DELETE_ALL_FILES 0x00000004 +#define APD_STRICT_UPGRADE 0x00000001 +#define APD_STRICT_DOWNGRADE 0x00000002 +#define APD_COPY_ALL_FILES 0x00000004 +#define APD_COPY_NEW_FILES 0x00000008 +#define APD_COPY_FROM_DIRECTORY 0x00000010 + typedef struct _DOC_INFO_1A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + } DOC_INFO_1A,*PDOC_INFO_1A,*LPDOC_INFO_1A; + typedef struct _DOC_INFO_1W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + } DOC_INFO_1W,*PDOC_INFO_1W,*LPDOC_INFO_1W; + typedef DOC_INFO_1A DOC_INFO_1; + typedef PDOC_INFO_1A PDOC_INFO_1; + typedef LPDOC_INFO_1A LPDOC_INFO_1; + typedef struct _FORM_INFO_1A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; + } FORM_INFO_1A,*PFORM_INFO_1A,*LPFORM_INFO_1A; + typedef struct _FORM_INFO_1W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; + } FORM_INFO_1W,*PFORM_INFO_1W,*LPFORM_INFO_1W; + typedef FORM_INFO_1A FORM_INFO_1; + typedef PFORM_INFO_1A PFORM_INFO_1; + typedef LPFORM_INFO_1A LPFORM_INFO_1; + typedef struct _DOC_INFO_2A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; + } DOC_INFO_2A,*PDOC_INFO_2A,*LPDOC_INFO_2A; + typedef struct _DOC_INFO_2W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; + } DOC_INFO_2W,*PDOC_INFO_2W,*LPDOC_INFO_2W; + typedef DOC_INFO_2A DOC_INFO_2; + typedef PDOC_INFO_2A PDOC_INFO_2; + typedef LPDOC_INFO_2A LPDOC_INFO_2; +#define DI_CHANNEL 1 +#define DI_READ_SPOOL_JOB 3 + typedef struct _DOC_INFO_3A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwFlags; + } DOC_INFO_3A,*PDOC_INFO_3A,*LPDOC_INFO_3A; + typedef struct _DOC_INFO_3W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwFlags; + } DOC_INFO_3W,*PDOC_INFO_3W,*LPDOC_INFO_3W; + typedef DOC_INFO_3A DOC_INFO_3; + typedef PDOC_INFO_3A PDOC_INFO_3; + typedef LPDOC_INFO_3A LPDOC_INFO_3; +#define DI_MEMORYMAP_WRITE 0x00000001 +#define FORM_USER 0x00000000 +#define FORM_BUILTIN 0x00000001 +#define FORM_PRINTER 0x00000002 + typedef struct _PRINTPROCESSOR_INFO_1A { + LPSTR pName; + } PRINTPROCESSOR_INFO_1A,*PPRINTPROCESSOR_INFO_1A,*LPPRINTPROCESSOR_INFO_1A; + typedef struct _PRINTPROCESSOR_INFO_1W { + LPWSTR pName; + } PRINTPROCESSOR_INFO_1W,*PPRINTPROCESSOR_INFO_1W,*LPPRINTPROCESSOR_INFO_1W; + typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; + typedef PPRINTPROCESSOR_INFO_1A PPRINTPROCESSOR_INFO_1; + typedef LPPRINTPROCESSOR_INFO_1A LPPRINTPROCESSOR_INFO_1; + typedef struct _PRINTPROCESSOR_CAPS_1 { + DWORD dwLevel; + DWORD dwNupOptions; + DWORD dwPageOrderFlags; + DWORD dwNumberOfCopies; + } PRINTPROCESSOR_CAPS_1,*PPRINTPROCESSOR_CAPS_1; +#define NORMAL_PRINT 0x00000000 +#define REVERSE_PRINT 0x00000001 + typedef struct _PORT_INFO_1A { + LPSTR pName; + } PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A; + typedef struct _PORT_INFO_1W { + LPWSTR pName; + } PORT_INFO_1W,*PPORT_INFO_1W,*LPPORT_INFO_1W; + typedef PORT_INFO_1A PORT_INFO_1; + typedef PPORT_INFO_1A PPORT_INFO_1; + typedef LPPORT_INFO_1A LPPORT_INFO_1; + typedef struct _PORT_INFO_2A { + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; + } PORT_INFO_2A,*PPORT_INFO_2A,*LPPORT_INFO_2A; + typedef struct _PORT_INFO_2W { + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; + } PORT_INFO_2W,*PPORT_INFO_2W,*LPPORT_INFO_2W; + typedef PORT_INFO_2A PORT_INFO_2; + typedef PPORT_INFO_2A PPORT_INFO_2; + typedef LPPORT_INFO_2A LPPORT_INFO_2; +#define PORT_TYPE_WRITE 0x0001 +#define PORT_TYPE_READ 0x0002 +#define PORT_TYPE_REDIRECTED 0x0004 +#define PORT_TYPE_NET_ATTACHED 0x0008 + typedef struct _PORT_INFO_3A { + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; + } PORT_INFO_3A,*PPORT_INFO_3A,*LPPORT_INFO_3A; + typedef struct _PORT_INFO_3W { + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; + } PORT_INFO_3W,*PPORT_INFO_3W,*LPPORT_INFO_3W; + typedef PORT_INFO_3A PORT_INFO_3; + typedef PPORT_INFO_3A PPORT_INFO_3; + typedef LPPORT_INFO_3A LPPORT_INFO_3; +#define PORT_STATUS_TYPE_ERROR 1 +#define PORT_STATUS_TYPE_WARNING 2 +#define PORT_STATUS_TYPE_INFO 3 +#define PORT_STATUS_OFFLINE 1 +#define PORT_STATUS_PAPER_JAM 2 +#define PORT_STATUS_PAPER_OUT 3 +#define PORT_STATUS_OUTPUT_BIN_FULL 4 +#define PORT_STATUS_PAPER_PROBLEM 5 +#define PORT_STATUS_NO_TONER 6 +#define PORT_STATUS_DOOR_OPEN 7 +#define PORT_STATUS_USER_INTERVENTION 8 +#define PORT_STATUS_OUT_OF_MEMORY 9 +#define PORT_STATUS_TONER_LOW 10 +#define PORT_STATUS_WARMING_UP 11 +#define PORT_STATUS_POWER_SAVE 12 + typedef struct _MONITOR_INFO_1A{ + LPSTR pName; + } MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A; + typedef struct _MONITOR_INFO_1W{ + LPWSTR pName; + } MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W; + typedef MONITOR_INFO_1A MONITOR_INFO_1; + typedef PMONITOR_INFO_1A PMONITOR_INFO_1; + typedef LPMONITOR_INFO_1A LPMONITOR_INFO_1; + typedef struct _MONITOR_INFO_2A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; + } MONITOR_INFO_2A,*PMONITOR_INFO_2A,*LPMONITOR_INFO_2A; + typedef struct _MONITOR_INFO_2W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; + } MONITOR_INFO_2W,*PMONITOR_INFO_2W,*LPMONITOR_INFO_2W; + typedef MONITOR_INFO_2A MONITOR_INFO_2; + typedef PMONITOR_INFO_2A PMONITOR_INFO_2; + typedef LPMONITOR_INFO_2A LPMONITOR_INFO_2; + typedef struct _DATATYPES_INFO_1A { + LPSTR pName; + } DATATYPES_INFO_1A,*PDATATYPES_INFO_1A,*LPDATATYPES_INFO_1A; + typedef struct _DATATYPES_INFO_1W { + LPWSTR pName; + } DATATYPES_INFO_1W,*PDATATYPES_INFO_1W,*LPDATATYPES_INFO_1W; + typedef DATATYPES_INFO_1A DATATYPES_INFO_1; + typedef PDATATYPES_INFO_1A PDATATYPES_INFO_1; + typedef LPDATATYPES_INFO_1A LPDATATYPES_INFO_1; + typedef struct _PRINTER_DEFAULTSA { + LPSTR pDatatype; + LPDEVMODEA pDevMode; + ACCESS_MASK DesiredAccess; + } PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA; + typedef struct _PRINTER_DEFAULTSW { + LPWSTR pDatatype; + LPDEVMODEW pDevMode; + ACCESS_MASK DesiredAccess; + } PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW; + typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS; + typedef PPRINTER_DEFAULTSA PPRINTER_DEFAULTS; + typedef LPPRINTER_DEFAULTSA LPPRINTER_DEFAULTS; + typedef struct _PRINTER_ENUM_VALUESA { + LPSTR pValueName; + DWORD cbValueName; + DWORD dwType; + LPBYTE pData; + DWORD cbData; + } PRINTER_ENUM_VALUESA,*PPRINTER_ENUM_VALUESA,*LPPRINTER_ENUM_VALUESA; + typedef struct _PRINTER_ENUM_VALUESW { + LPWSTR pValueName; + DWORD cbValueName; + DWORD dwType; + LPBYTE pData; + DWORD cbData; + } PRINTER_ENUM_VALUESW,*PPRINTER_ENUM_VALUESW,*LPPRINTER_ENUM_VALUESW; + typedef PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES; + typedef PPRINTER_ENUM_VALUESA PPRINTER_ENUM_VALUES; + typedef LPPRINTER_ENUM_VALUESA LPPRINTER_ENUM_VALUES; +#define EnumPrinters __MINGW_NAME_AW(EnumPrinters) + WINBOOL __attribute__((__stdcall__)) EnumPrintersA(DWORD Flags,LPSTR Name,DWORD Level,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumPrintersW(DWORD Flags,LPWSTR Name,DWORD Level,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); +#define PRINTER_ENUM_DEFAULT 0x00000001 +#define PRINTER_ENUM_LOCAL 0x00000002 +#define PRINTER_ENUM_CONNECTIONS 0x00000004 +#define PRINTER_ENUM_FAVORITE 0x00000004 +#define PRINTER_ENUM_NAME 0x00000008 +#define PRINTER_ENUM_REMOTE 0x00000010 +#define PRINTER_ENUM_SHARED 0x00000020 +#define PRINTER_ENUM_NETWORK 0x00000040 +#define PRINTER_ENUM_EXPAND 0x00004000 +#define PRINTER_ENUM_CONTAINER 0x00008000 +#define PRINTER_ENUM_ICONMASK 0x00ff0000 +#define PRINTER_ENUM_ICON1 0x00010000 +#define PRINTER_ENUM_ICON2 0x00020000 +#define PRINTER_ENUM_ICON3 0x00040000 +#define PRINTER_ENUM_ICON4 0x00080000 +#define PRINTER_ENUM_ICON5 0x00100000 +#define PRINTER_ENUM_ICON6 0x00200000 +#define PRINTER_ENUM_ICON7 0x00400000 +#define PRINTER_ENUM_ICON8 0x00800000 +#define PRINTER_ENUM_HIDE 0x01000000 +#define SPOOL_FILE_PERSISTENT 0x00000001 +#define SPOOL_FILE_TEMPORARY 0x00000002 +#define OpenPrinter __MINGW_NAME_AW(OpenPrinter) +#define ResetPrinter __MINGW_NAME_AW(ResetPrinter) +#define SetJob __MINGW_NAME_AW(SetJob) +#define GetJob __MINGW_NAME_AW(GetJob) +#define EnumJobs __MINGW_NAME_AW(EnumJobs) +#define AddPrinter __MINGW_NAME_AW(AddPrinter) +#define SetPrinter __MINGW_NAME_AW(SetPrinter) +#define GetPrinter __MINGW_NAME_AW(GetPrinter) +#define AddPrinterDriver __MINGW_NAME_AW(AddPrinterDriver) +#define AddPrinterDriverEx __MINGW_NAME_AW(AddPrinterDriverEx) +#define EnumPrinterDrivers __MINGW_NAME_AW(EnumPrinterDrivers) +#define GetPrinterDriver __MINGW_NAME_AW(GetPrinterDriver) +#define GetPrinterDriverDirectory __MINGW_NAME_AW(GetPrinterDriverDirectory) +#define DeletePrinterDriver __MINGW_NAME_AW(DeletePrinterDriver) +#define DeletePrinterDriverEx __MINGW_NAME_AW(DeletePrinterDriverEx) +#define AddPrintProcessor __MINGW_NAME_AW(AddPrintProcessor) +#define EnumPrintProcessors __MINGW_NAME_AW(EnumPrintProcessors) +#define GetPrintProcessorDirectory __MINGW_NAME_AW(GetPrintProcessorDirectory) +#define EnumPrintProcessorDatatypes __MINGW_NAME_AW(EnumPrintProcessorDatatypes) +#define DeletePrintProcessor __MINGW_NAME_AW(DeletePrintProcessor) +#define StartDocPrinter __MINGW_NAME_AW(StartDocPrinter) +#define AddJob __MINGW_NAME_AW(AddJob) +#define DocumentProperties __MINGW_NAME_AW(DocumentProperties) +#define AdvancedDocumentProperties __MINGW_NAME_AW(AdvancedDocumentProperties) +#define GetPrinterData __MINGW_NAME_AW(GetPrinterData) +#define GetPrinterDataEx __MINGW_NAME_AW(GetPrinterDataEx) +#define EnumPrinterData __MINGW_NAME_AW(EnumPrinterData) +#define EnumPrinterDataEx __MINGW_NAME_AW(EnumPrinterDataEx) +#define EnumPrinterKey __MINGW_NAME_AW(EnumPrinterKey) +#define SetPrinterData __MINGW_NAME_AW(SetPrinterData) +#define SetPrinterDataEx __MINGW_NAME_AW(SetPrinterDataEx) +#define DeletePrinterData __MINGW_NAME_AW(DeletePrinterData) +#define DeletePrinterDataEx __MINGW_NAME_AW(DeletePrinterDataEx) +#define DeletePrinterKey __MINGW_NAME_AW(DeletePrinterKey) + WINBOOL __attribute__((__stdcall__)) OpenPrinterA(LPSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSA pDefault); + WINBOOL __attribute__((__stdcall__)) OpenPrinterW(LPWSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSW pDefault); + WINBOOL __attribute__((__stdcall__)) ResetPrinterA(HANDLE hPrinter,LPPRINTER_DEFAULTSA pDefault); + WINBOOL __attribute__((__stdcall__)) ResetPrinterW(HANDLE hPrinter,LPPRINTER_DEFAULTSW pDefault); + WINBOOL __attribute__((__stdcall__)) SetJobA(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD Command); + WINBOOL __attribute__((__stdcall__)) SetJobW(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD Command); + WINBOOL __attribute__((__stdcall__)) GetJobA(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) GetJobW(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) EnumJobsA(HANDLE hPrinter,DWORD FirstJob,DWORD NoJobs,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumJobsW(HANDLE hPrinter,DWORD FirstJob,DWORD NoJobs,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + HANDLE __attribute__((__stdcall__)) AddPrinterA(LPSTR pName,DWORD Level,LPBYTE pPrinter); + HANDLE __attribute__((__stdcall__)) AddPrinterW(LPWSTR pName,DWORD Level,LPBYTE pPrinter); + WINBOOL __attribute__((__stdcall__)) DeletePrinter(HANDLE hPrinter); + WINBOOL __attribute__((__stdcall__)) SetPrinterA(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD Command); + WINBOOL __attribute__((__stdcall__)) SetPrinterW(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD Command); + WINBOOL __attribute__((__stdcall__)) GetPrinterA(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) GetPrinterW(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) AddPrinterDriverA(LPSTR pName,DWORD Level,LPBYTE pDriverInfo); + WINBOOL __attribute__((__stdcall__)) AddPrinterDriverW(LPWSTR pName,DWORD Level,LPBYTE pDriverInfo); + WINBOOL __attribute__((__stdcall__)) AddPrinterDriverExA(LPSTR pName,DWORD Level,LPBYTE pDriverInfo,DWORD dwFileCopyFlags); + WINBOOL __attribute__((__stdcall__)) AddPrinterDriverExW(LPWSTR pName,DWORD Level,LPBYTE pDriverInfo,DWORD dwFileCopyFlags); + WINBOOL __attribute__((__stdcall__)) EnumPrinterDriversA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumPrinterDriversW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) GetPrinterDriverA(HANDLE hPrinter,LPSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) GetPrinterDriverW(HANDLE hPrinter,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) GetPrinterDriverDirectoryA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pDriverDirectory,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) GetPrinterDriverDirectoryW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverDirectory,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverA(LPSTR pName,LPSTR pEnvironment,LPSTR pDriverName); + WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pDriverName); + WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverExA(LPSTR pName,LPSTR pEnvironment,LPSTR pDriverName,DWORD dwDeleteFlag,DWORD dwVersionFlag); + WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverExW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pDriverName,DWORD dwDeleteFlag,DWORD dwVersionFlag); + WINBOOL __attribute__((__stdcall__)) AddPrintProcessorA(LPSTR pName,LPSTR pEnvironment,LPSTR pPathName,LPSTR pPrintProcessorName); + WINBOOL __attribute__((__stdcall__)) AddPrintProcessorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPathName,LPWSTR pPrintProcessorName); + WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorsA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorsW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) GetPrintProcessorDirectoryA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) GetPrintProcessorDirectoryW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorDatatypesA(LPSTR pName,LPSTR pPrintProcessorName,DWORD Level,LPBYTE pDatatypes,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorDatatypesW(LPWSTR pName,LPWSTR pPrintProcessorName,DWORD Level,LPBYTE pDatatypes,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) DeletePrintProcessorA(LPSTR pName,LPSTR pEnvironment,LPSTR pPrintProcessorName); + WINBOOL __attribute__((__stdcall__)) DeletePrintProcessorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPrintProcessorName); + DWORD __attribute__((__stdcall__)) StartDocPrinterA(HANDLE hPrinter,DWORD Level,LPBYTE pDocInfo); + DWORD __attribute__((__stdcall__)) StartDocPrinterW(HANDLE hPrinter,DWORD Level,LPBYTE pDocInfo); + WINBOOL __attribute__((__stdcall__)) StartPagePrinter(HANDLE hPrinter); + WINBOOL __attribute__((__stdcall__)) WritePrinter(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pcWritten); + WINBOOL __attribute__((__stdcall__)) FlushPrinter(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pcWritten,DWORD cSleep); + WINBOOL __attribute__((__stdcall__)) EndPagePrinter(HANDLE hPrinter); + WINBOOL __attribute__((__stdcall__)) AbortPrinter(HANDLE hPrinter); + WINBOOL __attribute__((__stdcall__)) ReadPrinter(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pNoBytesRead); + WINBOOL __attribute__((__stdcall__)) EndDocPrinter(HANDLE hPrinter); + WINBOOL __attribute__((__stdcall__)) AddJobA(HANDLE hPrinter,DWORD Level,LPBYTE pData,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) AddJobW(HANDLE hPrinter,DWORD Level,LPBYTE pData,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) ScheduleJob(HANDLE hPrinter,DWORD JobId); + WINBOOL __attribute__((__stdcall__)) PrinterProperties(HWND hWnd,HANDLE hPrinter); + LONG __attribute__((__stdcall__)) DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,LPSTR pDeviceName,PDEVMODEA pDevModeOutput,PDEVMODEA pDevModeInput,DWORD fMode); + LONG __attribute__((__stdcall__)) DocumentPropertiesW(HWND hWnd,HANDLE hPrinter,LPWSTR pDeviceName,PDEVMODEW pDevModeOutput,PDEVMODEW pDevModeInput,DWORD fMode); + LONG __attribute__((__stdcall__)) AdvancedDocumentPropertiesA(HWND hWnd,HANDLE hPrinter,LPSTR pDeviceName,PDEVMODEA pDevModeOutput,PDEVMODEA pDevModeInput); + LONG __attribute__((__stdcall__)) AdvancedDocumentPropertiesW(HWND hWnd,HANDLE hPrinter,LPWSTR pDeviceName,PDEVMODEW pDevModeOutput,PDEVMODEW pDevModeInput); + LONG ExtDeviceMode(HWND hWnd,HANDLE hInst,LPDEVMODEA pDevModeOutput,LPSTR pDeviceName,LPSTR pPort,LPDEVMODEA pDevModeInput,LPSTR pProfile,DWORD fMode); + DWORD __attribute__((__stdcall__)) GetPrinterDataA(HANDLE hPrinter,LPSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded); + DWORD __attribute__((__stdcall__)) GetPrinterDataW(HANDLE hPrinter,LPWSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded); + DWORD __attribute__((__stdcall__)) GetPrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPCSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded); + DWORD __attribute__((__stdcall__)) GetPrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded); + DWORD __attribute__((__stdcall__)) EnumPrinterDataA(HANDLE hPrinter,DWORD dwIndex,LPSTR pValueName,DWORD cbValueName,LPDWORD pcbValueName,LPDWORD pType,LPBYTE pData,DWORD cbData,LPDWORD pcbData); + DWORD __attribute__((__stdcall__)) EnumPrinterDataW(HANDLE hPrinter,DWORD dwIndex,LPWSTR pValueName,DWORD cbValueName,LPDWORD pcbValueName,LPDWORD pType,LPBYTE pData,DWORD cbData,LPDWORD pcbData); + DWORD __attribute__((__stdcall__)) EnumPrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPBYTE pEnumValues,DWORD cbEnumValues,LPDWORD pcbEnumValues,LPDWORD pnEnumValues); + DWORD __attribute__((__stdcall__)) EnumPrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPBYTE pEnumValues,DWORD cbEnumValues,LPDWORD pcbEnumValues,LPDWORD pnEnumValues); + DWORD __attribute__((__stdcall__)) EnumPrinterKeyA(HANDLE hPrinter,LPCSTR pKeyName,LPSTR pSubkey,DWORD cbSubkey,LPDWORD pcbSubkey); + DWORD __attribute__((__stdcall__)) EnumPrinterKeyW(HANDLE hPrinter,LPCWSTR pKeyName,LPWSTR pSubkey,DWORD cbSubkey,LPDWORD pcbSubkey); + DWORD __attribute__((__stdcall__)) SetPrinterDataA(HANDLE hPrinter,LPSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData); + DWORD __attribute__((__stdcall__)) SetPrinterDataW(HANDLE hPrinter,LPWSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData); + DWORD __attribute__((__stdcall__)) SetPrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPCSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData); + DWORD __attribute__((__stdcall__)) SetPrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData); + DWORD __attribute__((__stdcall__)) DeletePrinterDataA(HANDLE hPrinter,LPSTR pValueName); + DWORD __attribute__((__stdcall__)) DeletePrinterDataW(HANDLE hPrinter,LPWSTR pValueName); + DWORD __attribute__((__stdcall__)) DeletePrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPCSTR pValueName); + DWORD __attribute__((__stdcall__)) DeletePrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName); + DWORD __attribute__((__stdcall__)) DeletePrinterKeyA(HANDLE hPrinter,LPCSTR pKeyName); + DWORD __attribute__((__stdcall__)) DeletePrinterKeyW(HANDLE hPrinter,LPCWSTR pKeyName); +#define PRINTER_NOTIFY_TYPE 0x00 +#define JOB_NOTIFY_TYPE 0x01 +#define PRINTER_NOTIFY_FIELD_SERVER_NAME 0x00 +#define PRINTER_NOTIFY_FIELD_PRINTER_NAME 0x01 +#define PRINTER_NOTIFY_FIELD_SHARE_NAME 0x02 +#define PRINTER_NOTIFY_FIELD_PORT_NAME 0x03 +#define PRINTER_NOTIFY_FIELD_DRIVER_NAME 0x04 +#define PRINTER_NOTIFY_FIELD_COMMENT 0x05 +#define PRINTER_NOTIFY_FIELD_LOCATION 0x06 +#define PRINTER_NOTIFY_FIELD_DEVMODE 0x07 +#define PRINTER_NOTIFY_FIELD_SEPFILE 0x08 +#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x09 +#define PRINTER_NOTIFY_FIELD_PARAMETERS 0x0A +#define PRINTER_NOTIFY_FIELD_DATATYPE 0x0B +#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C +#define PRINTER_NOTIFY_FIELD_ATTRIBUTES 0x0D +#define PRINTER_NOTIFY_FIELD_PRIORITY 0x0E +#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x0F +#define PRINTER_NOTIFY_FIELD_START_TIME 0x10 +#define PRINTER_NOTIFY_FIELD_UNTIL_TIME 0x11 +#define PRINTER_NOTIFY_FIELD_STATUS 0x12 +#define PRINTER_NOTIFY_FIELD_STATUS_STRING 0x13 +#define PRINTER_NOTIFY_FIELD_CJOBS 0x14 +#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM 0x15 +#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES 0x16 +#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED 0x17 +#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES 0x18 +#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED 0x19 +#define PRINTER_NOTIFY_FIELD_OBJECT_GUID 0x1A +#define JOB_NOTIFY_FIELD_PRINTER_NAME 0x00 +#define JOB_NOTIFY_FIELD_MACHINE_NAME 0x01 +#define JOB_NOTIFY_FIELD_PORT_NAME 0x02 +#define JOB_NOTIFY_FIELD_USER_NAME 0x03 +#define JOB_NOTIFY_FIELD_NOTIFY_NAME 0x04 +#define JOB_NOTIFY_FIELD_DATATYPE 0x05 +#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x06 +#define JOB_NOTIFY_FIELD_PARAMETERS 0x07 +#define JOB_NOTIFY_FIELD_DRIVER_NAME 0x08 +#define JOB_NOTIFY_FIELD_DEVMODE 0x09 +#define JOB_NOTIFY_FIELD_STATUS 0x0A +#define JOB_NOTIFY_FIELD_STATUS_STRING 0x0B +#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C +#define JOB_NOTIFY_FIELD_DOCUMENT 0x0D +#define JOB_NOTIFY_FIELD_PRIORITY 0x0E +#define JOB_NOTIFY_FIELD_POSITION 0x0F +#define JOB_NOTIFY_FIELD_SUBMITTED 0x10 +#define JOB_NOTIFY_FIELD_START_TIME 0x11 +#define JOB_NOTIFY_FIELD_UNTIL_TIME 0x12 +#define JOB_NOTIFY_FIELD_TIME 0x13 +#define JOB_NOTIFY_FIELD_TOTAL_PAGES 0x14 +#define JOB_NOTIFY_FIELD_PAGES_PRINTED 0x15 +#define JOB_NOTIFY_FIELD_TOTAL_BYTES 0x16 +#define JOB_NOTIFY_FIELD_BYTES_PRINTED 0x17 + typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE { + WORD Type; + WORD Reserved0; + DWORD Reserved1; + DWORD Reserved2; + DWORD Count; + PWORD pFields; + } PRINTER_NOTIFY_OPTIONS_TYPE,*PPRINTER_NOTIFY_OPTIONS_TYPE,*LPPRINTER_NOTIFY_OPTIONS_TYPE; +#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01 + typedef struct _PRINTER_NOTIFY_OPTIONS { + DWORD Version; + DWORD Flags; + DWORD Count; + PPRINTER_NOTIFY_OPTIONS_TYPE pTypes; + } PRINTER_NOTIFY_OPTIONS,*PPRINTER_NOTIFY_OPTIONS,*LPPRINTER_NOTIFY_OPTIONS; +#define PRINTER_NOTIFY_INFO_DISCARDED 0x01 + typedef struct _PRINTER_NOTIFY_INFO_DATA { + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; + union { + DWORD adwData[2]; + struct { + DWORD cbBuf; + LPVOID pBuf; + } Data; + } NotifyData; + } PRINTER_NOTIFY_INFO_DATA,*PPRINTER_NOTIFY_INFO_DATA,*LPPRINTER_NOTIFY_INFO_DATA; + typedef struct _PRINTER_NOTIFY_INFO { + DWORD Version; + DWORD Flags; + DWORD Count; + PRINTER_NOTIFY_INFO_DATA aData[1]; + } PRINTER_NOTIFY_INFO,*PPRINTER_NOTIFY_INFO,*LPPRINTER_NOTIFY_INFO; + typedef struct _BINARY_CONTAINER{ + DWORD cbBuf; + LPBYTE pData; + } BINARY_CONTAINER,*PBINARY_CONTAINER; + typedef struct _BIDI_DATA{ + DWORD dwBidiType; + union { + WINBOOL bData; + LONG iData; + LPWSTR sData; + FLOAT fData; + BINARY_CONTAINER biData; + } u; + } BIDI_DATA,*PBIDI_DATA,*LPBIDI_DATA; + typedef struct _BIDI_REQUEST_DATA{ + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; + } BIDI_REQUEST_DATA ,*PBIDI_REQUEST_DATA ,*LPBIDI_REQUEST_DATA; + typedef struct _BIDI_REQUEST_CONTAINER{ + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_REQUEST_DATA aData[1 ]; + }BIDI_REQUEST_CONTAINER,*PBIDI_REQUEST_CONTAINER,*LPBIDI_REQUEST_CONTAINER; + typedef struct _BIDI_RESPONSE_DATA{ + DWORD dwResult; + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; + } BIDI_RESPONSE_DATA,*PBIDI_RESPONSE_DATA,*LPBIDI_RESPONSE_DATA; + typedef struct _BIDI_RESPONSE_CONTAINER{ + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_RESPONSE_DATA aData[1 ]; + } BIDI_RESPONSE_CONTAINER,*PBIDI_RESPONSE_CONTAINER,*LPBIDI_RESPONSE_CONTAINER; +#define BIDI_ACTION_ENUM_SCHEMA L"EnumSchema" +#define BIDI_ACTION_GET L"Get" +#define BIDI_ACTION_SET L"Set" +#define BIDI_ACTION_GET_ALL L"GetAll" + typedef enum { + BIDI_NULL = 0,BIDI_INT = 1,BIDI_FLOAT = 2,BIDI_BOOL = 3,BIDI_STRING = 4,BIDI_TEXT = 5,BIDI_ENUM = 6,BIDI_BLOB = 7 + } BIDI_TYPE; +#define BIDI_ACCESS_ADMINISTRATOR 0x1 +#define BIDI_ACCESS_USER 0x2 +#define ERROR_BIDI_STATUS_OK 0 +#define ERROR_BIDI_NOT_SUPPORTED ERROR_NOT_SUPPORTED +#define ERROR_BIDI_ERROR_BASE 13000 +#define ERROR_BIDI_STATUS_WARNING (ERROR_BIDI_ERROR_BASE + 1) +#define ERROR_BIDI_SCHEMA_READ_ONLY (ERROR_BIDI_ERROR_BASE + 2) +#define ERROR_BIDI_SERVER_OFFLINE (ERROR_BIDI_ERROR_BASE + 3) +#define ERROR_BIDI_DEVICE_OFFLINE (ERROR_BIDI_ERROR_BASE + 4) +#define ERROR_BIDI_SCHEMA_NOT_SUPPORTED (ERROR_BIDI_ERROR_BASE + 5) + DWORD __attribute__((__stdcall__)) WaitForPrinterChange(HANDLE hPrinter,DWORD Flags); + HANDLE __attribute__((__stdcall__)) FindFirstPrinterChangeNotification(HANDLE hPrinter,DWORD fdwFlags,DWORD fdwOptions,LPVOID pPrinterNotifyOptions); + WINBOOL __attribute__((__stdcall__)) FindNextPrinterChangeNotification(HANDLE hChange,PDWORD pdwChange,LPVOID pPrinterNotifyOptions,LPVOID *ppPrinterNotifyInfo); + WINBOOL __attribute__((__stdcall__)) FreePrinterNotifyInfo (PPRINTER_NOTIFY_INFO pPrinterNotifyInfo); + WINBOOL __attribute__((__stdcall__)) FindClosePrinterChangeNotification(HANDLE hChange); +#define PRINTER_CHANGE_ADD_PRINTER 0x00000001 +#define PRINTER_CHANGE_SET_PRINTER 0x00000002 +#define PRINTER_CHANGE_DELETE_PRINTER 0x00000004 +#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008 +#define PRINTER_CHANGE_PRINTER 0x000000FF +#define PRINTER_CHANGE_ADD_JOB 0x00000100 +#define PRINTER_CHANGE_SET_JOB 0x00000200 +#define PRINTER_CHANGE_DELETE_JOB 0x00000400 +#define PRINTER_CHANGE_WRITE_JOB 0x00000800 +#define PRINTER_CHANGE_JOB 0x0000FF00 +#define PRINTER_CHANGE_ADD_FORM 0x00010000 +#define PRINTER_CHANGE_SET_FORM 0x00020000 +#define PRINTER_CHANGE_DELETE_FORM 0x00040000 +#define PRINTER_CHANGE_FORM 0x00070000 +#define PRINTER_CHANGE_ADD_PORT 0x00100000 +#define PRINTER_CHANGE_CONFIGURE_PORT 0x00200000 +#define PRINTER_CHANGE_DELETE_PORT 0x00400000 +#define PRINTER_CHANGE_PORT 0x00700000 +#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x01000000 +#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x04000000 +#define PRINTER_CHANGE_PRINT_PROCESSOR 0x07000000 +#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000 +#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000 +#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000 +#define PRINTER_CHANGE_PRINTER_DRIVER 0x70000000 +#define PRINTER_CHANGE_TIMEOUT 0x80000000 +#define PRINTER_CHANGE_ALL 0x7777FFFF +#define PrinterMessageBox __MINGW_NAME_AW(PrinterMessageBox) +#define AddForm __MINGW_NAME_AW(AddForm) +#define DeleteForm __MINGW_NAME_AW(DeleteForm) +#define GetForm __MINGW_NAME_AW(GetForm) +#define SetForm __MINGW_NAME_AW(SetForm) +#define EnumForms __MINGW_NAME_AW(EnumForms) +#define EnumMonitors __MINGW_NAME_AW(EnumMonitors) +#define AddMonitor __MINGW_NAME_AW(AddMonitor) +#define DeleteMonitor __MINGW_NAME_AW(DeleteMonitor) +#define EnumPorts __MINGW_NAME_AW(EnumPorts) +#define AddPort __MINGW_NAME_AW(AddPort) +#define ConfigurePort __MINGW_NAME_AW(ConfigurePort) +#define DeletePort __MINGW_NAME_AW(DeletePort) +#define GetDefaultPrinter __MINGW_NAME_AW(GetDefaultPrinter) +#define SetDefaultPrinter __MINGW_NAME_AW(SetDefaultPrinter) +#define SetPort __MINGW_NAME_AW(SetPort) +#define AddPrinterConnection __MINGW_NAME_AW(AddPrinterConnection) +#define DeletePrinterConnection __MINGW_NAME_AW(DeletePrinterConnection) + DWORD __attribute__((__stdcall__)) PrinterMessageBoxA(HANDLE hPrinter,DWORD Error,HWND hWnd,LPSTR pText,LPSTR pCaption,DWORD dwType); + DWORD __attribute__((__stdcall__)) PrinterMessageBoxW(HANDLE hPrinter,DWORD Error,HWND hWnd,LPWSTR pText,LPWSTR pCaption,DWORD dwType); +#define PRINTER_ERROR_INFORMATION 0x80000000 +#define PRINTER_ERROR_WARNING 0x40000000 +#define PRINTER_ERROR_SEVERE 0x20000000 +#define PRINTER_ERROR_OUTOFPAPER 0x00000001 +#define PRINTER_ERROR_JAM 0x00000002 +#define PRINTER_ERROR_OUTOFTONER 0x00000004 + WINBOOL __attribute__((__stdcall__)) ClosePrinter(HANDLE hPrinter); + WINBOOL __attribute__((__stdcall__)) AddFormA(HANDLE hPrinter,DWORD Level,LPBYTE pForm); + WINBOOL __attribute__((__stdcall__)) AddFormW(HANDLE hPrinter,DWORD Level,LPBYTE pForm); + WINBOOL __attribute__((__stdcall__)) DeleteFormA(HANDLE hPrinter,LPSTR pFormName); + WINBOOL __attribute__((__stdcall__)) DeleteFormW(HANDLE hPrinter,LPWSTR pFormName); + WINBOOL __attribute__((__stdcall__)) GetFormA(HANDLE hPrinter,LPSTR pFormName,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) GetFormW(HANDLE hPrinter,LPWSTR pFormName,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded); + WINBOOL __attribute__((__stdcall__)) SetFormA(HANDLE hPrinter,LPSTR pFormName,DWORD Level,LPBYTE pForm); + WINBOOL __attribute__((__stdcall__)) SetFormW(HANDLE hPrinter,LPWSTR pFormName,DWORD Level,LPBYTE pForm); + WINBOOL __attribute__((__stdcall__)) EnumFormsA(HANDLE hPrinter,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumFormsW(HANDLE hPrinter,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumMonitorsA(LPSTR pName,DWORD Level,LPBYTE pMonitor,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumMonitorsW(LPWSTR pName,DWORD Level,LPBYTE pMonitor,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) AddMonitorA(LPSTR pName,DWORD Level,LPBYTE pMonitorInfo); + WINBOOL __attribute__((__stdcall__)) AddMonitorW(LPWSTR pName,DWORD Level,LPBYTE pMonitorInfo); + WINBOOL __attribute__((__stdcall__)) DeleteMonitorA(LPSTR pName,LPSTR pEnvironment,LPSTR pMonitorName); + WINBOOL __attribute__((__stdcall__)) DeleteMonitorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pMonitorName); + WINBOOL __attribute__((__stdcall__)) EnumPortsA(LPSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) EnumPortsW(LPWSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned); + WINBOOL __attribute__((__stdcall__)) AddPortA(LPSTR pName,HWND hWnd,LPSTR pMonitorName); + WINBOOL __attribute__((__stdcall__)) AddPortW(LPWSTR pName,HWND hWnd,LPWSTR pMonitorName); + WINBOOL __attribute__((__stdcall__)) ConfigurePortA(LPSTR pName,HWND hWnd,LPSTR pPortName); + WINBOOL __attribute__((__stdcall__)) ConfigurePortW(LPWSTR pName,HWND hWnd,LPWSTR pPortName); + WINBOOL __attribute__((__stdcall__)) DeletePortA(LPSTR pName,HWND hWnd,LPSTR pPortName); + WINBOOL __attribute__((__stdcall__)) DeletePortW(LPWSTR pName,HWND hWnd,LPWSTR pPortName); + WINBOOL __attribute__((__stdcall__)) XcvDataW(HANDLE hXcv,PCWSTR pszDataName,PBYTE pInputData,DWORD cbInputData,PBYTE pOutputData,DWORD cbOutputData,PDWORD pcbOutputNeeded,PDWORD pdwStatus); +#define XcvData XcvDataW + WINBOOL __attribute__((__stdcall__)) GetDefaultPrinterA(LPSTR pszBuffer,LPDWORD pcchBuffer); + WINBOOL __attribute__((__stdcall__)) GetDefaultPrinterW(LPWSTR pszBuffer,LPDWORD pcchBuffer); + WINBOOL __attribute__((__stdcall__)) SetDefaultPrinterA(LPCSTR pszPrinter); + WINBOOL __attribute__((__stdcall__)) SetDefaultPrinterW(LPCWSTR pszPrinter); + WINBOOL __attribute__((__stdcall__)) SetPortA(LPSTR pName,LPSTR pPortName,DWORD dwLevel,LPBYTE pPortInfo); + WINBOOL __attribute__((__stdcall__)) SetPortW(LPWSTR pName,LPWSTR pPortName,DWORD dwLevel,LPBYTE pPortInfo); + WINBOOL __attribute__((__stdcall__)) AddPrinterConnectionA(LPSTR pName); + WINBOOL __attribute__((__stdcall__)) AddPrinterConnectionW(LPWSTR pName); + WINBOOL __attribute__((__stdcall__)) DeletePrinterConnectionA(LPSTR pName); + WINBOOL __attribute__((__stdcall__)) DeletePrinterConnectionW(LPWSTR pName); + HANDLE __attribute__((__stdcall__)) ConnectToPrinterDlg(HWND hwnd,DWORD Flags); + typedef struct _PROVIDOR_INFO_1A{ + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; + } PROVIDOR_INFO_1A,*PPROVIDOR_INFO_1A,*LPPROVIDOR_INFO_1A; + typedef struct _PROVIDOR_INFO_1W{ + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; + } PROVIDOR_INFO_1W,*PPROVIDOR_INFO_1W,*LPPROVIDOR_INFO_1W; + typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1; + typedef PPROVIDOR_INFO_1A PPROVIDOR_INFO_1; + typedef LPPROVIDOR_INFO_1A LPPROVIDOR_INFO_1; + typedef struct _PROVIDOR_INFO_2A{ + LPSTR pOrder; + } PROVIDOR_INFO_2A,*PPROVIDOR_INFO_2A,*LPPROVIDOR_INFO_2A; + typedef struct _PROVIDOR_INFO_2W{ + LPWSTR pOrder; + } PROVIDOR_INFO_2W,*PPROVIDOR_INFO_2W,*LPPROVIDOR_INFO_2W; + typedef PROVIDOR_INFO_2A PROVIDOR_INFO_2; + typedef PPROVIDOR_INFO_2A PPROVIDOR_INFO_2; + typedef LPPROVIDOR_INFO_2A LPPROVIDOR_INFO_2; +#define AddPrintProvidor __MINGW_NAME_AW(AddPrintProvidor) +#define DeletePrintProvidor __MINGW_NAME_AW(DeletePrintProvidor) +#define IsValidDevmode __MINGW_NAME_AW(IsValidDevmode) + WINBOOL __attribute__((__stdcall__)) AddPrintProvidorA(LPSTR pName,DWORD level,LPBYTE pProvidorInfo); + WINBOOL __attribute__((__stdcall__)) AddPrintProvidorW(LPWSTR pName,DWORD level,LPBYTE pProvidorInfo); + WINBOOL __attribute__((__stdcall__)) DeletePrintProvidorA(LPSTR pName,LPSTR pEnvironment,LPSTR pPrintProvidorName); + WINBOOL __attribute__((__stdcall__)) DeletePrintProvidorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPrintProvidorName); + WINBOOL __attribute__((__stdcall__)) IsValidDevmodeA (PDEVMODEA pDevmode,size_t DevmodeSize); + WINBOOL __attribute__((__stdcall__)) IsValidDevmodeW (PDEVMODEW pDevmode,size_t DevmodeSize); +#define SPLREG_DEFAULT_SPOOL_DIRECTORY TEXT("DefaultSpoolDirectory") +#define SPLREG_PORT_THREAD_PRIORITY_DEFAULT TEXT("PortThreadPriorityDefault") +#define SPLREG_PORT_THREAD_PRIORITY TEXT("PortThreadPriority") +#define SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT TEXT("SchedulerThreadPriorityDefault") +#define SPLREG_SCHEDULER_THREAD_PRIORITY TEXT("SchedulerThreadPriority") +#define SPLREG_BEEP_ENABLED TEXT("BeepEnabled") +#define SPLREG_NET_POPUP TEXT("NetPopup") +#define SPLREG_RETRY_POPUP TEXT("RetryPopup") +#define SPLREG_NET_POPUP_TO_COMPUTER TEXT("NetPopupToComputer") +#define SPLREG_EVENT_LOG TEXT("EventLog") +#define SPLREG_MAJOR_VERSION TEXT("MajorVersion") +#define SPLREG_MINOR_VERSION TEXT("MinorVersion") +#define SPLREG_ARCHITECTURE TEXT("Architecture") +#define SPLREG_OS_VERSION TEXT("OSVersion") +#define SPLREG_OS_VERSIONEX TEXT("OSVersionEx") +#define SPLREG_DS_PRESENT TEXT("DsPresent") +#define SPLREG_DS_PRESENT_FOR_USER TEXT("DsPresentForUser") +#define SPLREG_REMOTE_FAX TEXT("RemoteFax") +#define SPLREG_RESTART_JOB_ON_POOL_ERROR TEXT("RestartJobOnPoolError") +#define SPLREG_RESTART_JOB_ON_POOL_ENABLED TEXT("RestartJobOnPoolEnabled") +#define SPLREG_DNS_MACHINE_NAME TEXT("DNSMachineName") +#define SPLREG_ALLOW_USER_MANAGEFORMS TEXT("AllowUserManageForms") +#define SPLREG_WEBSHAREMGMT TEXT("WebShareMgmt") +#define SERVER_ACCESS_ADMINISTER 0x00000001 +#define SERVER_ACCESS_ENUMERATE 0x00000002 +#define PRINTER_ACCESS_ADMINISTER 0x00000004 +#define PRINTER_ACCESS_USE 0x00000008 +#define JOB_ACCESS_ADMINISTER 0x00000010 +#define JOB_ACCESS_READ 0x00000020 +#define SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE) +#define SERVER_READ (STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE) +#define SERVER_WRITE (STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE) +#define SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE) +#define PRINTER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE) +#define PRINTER_READ (STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE) +#define PRINTER_WRITE (STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE) +#define PRINTER_EXECUTE (STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE) +#define JOB_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER | JOB_ACCESS_READ) +#define JOB_READ (STANDARD_RIGHTS_READ | JOB_ACCESS_READ) +#define JOB_WRITE (STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER) +#define JOB_EXECUTE (STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER) +#define SPLDS_SPOOLER_KEY TEXT("DsSpooler") +#define SPLDS_DRIVER_KEY TEXT("DsDriver") +#define SPLDS_USER_KEY TEXT("DsUser") +#define SPLDS_ASSET_NUMBER TEXT("assetNumber") +#define SPLDS_BYTES_PER_MINUTE TEXT("bytesPerMinute") +#define SPLDS_DESCRIPTION TEXT("description") +#define SPLDS_DRIVER_NAME TEXT("driverName") +#define SPLDS_DRIVER_VERSION TEXT("driverVersion") +#define SPLDS_LOCATION TEXT("location") +#define SPLDS_PORT_NAME TEXT("portName") +#define SPLDS_PRINT_ATTRIBUTES TEXT("printAttributes") +#define SPLDS_PRINT_BIN_NAMES TEXT("printBinNames") +#define SPLDS_PRINT_COLLATE TEXT("printCollate") +#define SPLDS_PRINT_COLOR TEXT("printColor") +#define SPLDS_PRINT_DUPLEX_SUPPORTED TEXT("printDuplexSupported") +#define SPLDS_PRINT_END_TIME TEXT("printEndTime") +#define SPLDS_PRINTER_CLASS TEXT("printQueue") +#define SPLDS_PRINTER_NAME TEXT("printerName") +#define SPLDS_PRINT_KEEP_PRINTED_JOBS TEXT("printKeepPrintedJobs") +#define SPLDS_PRINT_LANGUAGE TEXT("printLanguage") +#define SPLDS_PRINT_MAC_ADDRESS TEXT("printMACAddress") +#define SPLDS_PRINT_MAX_X_EXTENT TEXT("printMaxXExtent") +#define SPLDS_PRINT_MAX_Y_EXTENT TEXT("printMaxYExtent") +#define SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED TEXT("printMaxResolutionSupported") +#define SPLDS_PRINT_MEDIA_READY TEXT("printMediaReady") +#define SPLDS_PRINT_MEDIA_SUPPORTED TEXT("printMediaSupported") +#define SPLDS_PRINT_MEMORY TEXT("printMemory") +#define SPLDS_PRINT_MIN_X_EXTENT TEXT("printMinXExtent") +#define SPLDS_PRINT_MIN_Y_EXTENT TEXT("printMinYExtent") +#define SPLDS_PRINT_NETWORK_ADDRESS TEXT("printNetworkAddress") +#define SPLDS_PRINT_NOTIFY TEXT("printNotify") +#define SPLDS_PRINT_NUMBER_UP TEXT("printNumberUp") +#define SPLDS_PRINT_ORIENTATIONS_SUPPORTED TEXT("printOrientationsSupported") +#define SPLDS_PRINT_OWNER TEXT("printOwner") +#define SPLDS_PRINT_PAGES_PER_MINUTE TEXT("printPagesPerMinute") +#define SPLDS_PRINT_RATE TEXT("printRate") +#define SPLDS_PRINT_RATE_UNIT TEXT("printRateUnit") +#define SPLDS_PRINT_SEPARATOR_FILE TEXT("printSeparatorFile") +#define SPLDS_PRINT_SHARE_NAME TEXT("printShareName") +#define SPLDS_PRINT_SPOOLING TEXT("printSpooling") +#define SPLDS_PRINT_STAPLING_SUPPORTED TEXT("printStaplingSupported") +#define SPLDS_PRINT_START_TIME TEXT("printStartTime") +#define SPLDS_PRINT_STATUS TEXT("printStatus") +#define SPLDS_PRIORITY TEXT("priority") +#define SPLDS_SERVER_NAME TEXT("serverName") +#define SPLDS_SHORT_SERVER_NAME TEXT("shortServerName") +#define SPLDS_UNC_NAME TEXT("uNCName") +#define SPLDS_URL TEXT("url") +#define SPLDS_FLAGS TEXT("flags") +#define SPLDS_VERSION_NUMBER TEXT("versionNumber") +#define SPLDS_PRINTER_NAME_ALIASES TEXT("printerNameAliases") +#define SPLDS_PRINTER_LOCATIONS TEXT("printerLocations") +#define SPLDS_PRINTER_MODEL TEXT("printerModel") +#define AddPrinterConnection2 __MINGW_NAME_AW(AddPrinterConnection2) +#define DeletePrinterDriverPackage __MINGW_NAME_AW(DeletePrinterDriverPackage) +#define DocumentEvent __MINGW_NAME_AW(DocumentEvent) +#define PRINTER_CONNECTION_MISMATCH 0x00000020 +#define PRINTER_CONNECTION_NO_UI 0x00000040 +typedef enum tagPRINTER_OPTION_FLAGS { + PRINTER_OPTION_NO_CACHE, + PRINTER_OPTION_CACHE, + PRINTER_OPTION_CLIENT_CHANGE +} PRINTER_OPTION_FLAGS; +typedef enum tagEPrintXPSJobOperation { + kJobProduction, + kJobConsumption +} EPrintXPSJobOperation; +typedef enum tagEPrintXPSJobProgress { + kAddingDocumentSequence, + kDocumentSequenceAdded, + kAddingFixedDocument, + kFixedDocumentAdded, + kAddingFixedPage, + kFixedPageAdded, + kResourceAdded, + kFontAdded, + kImageAdded, + kXpsDocumentCommitted +} EPrintXPSJobProgress; +typedef struct _PRINTER_CONNECTION_INFO_1 { + DWORD dwFlags; + LPTSTR pszDriverName; +} PRINTER_CONNECTION_INFO_1, *PPRINTER_CONNECTION_INFO_1; + WINBOOL AddPrinterConnection2W(HWND hWnd,LPCWSTR pszName,DWORD dwLevel,PVOID pConnectionInfo); + WINBOOL AddPrinterConnection2A(HWND hWnd,LPCSTR pszName,DWORD dwLevel,PVOID pConnectionInfo); +HRESULT __attribute__((__stdcall__)) DeletePrinterDriverPackageA( + LPCSTR pszServer, + LPCSTR pszInfPath, + LPCSTR pszEnvironment +); +HRESULT __attribute__((__stdcall__)) DeletePrinterDriverPackageW( + LPCWSTR pszServer, + LPCWSTR pszInfPath, + LPCWSTR pszEnvironment +); +HRESULT DocumentEventA( + HANDLE hPrinter, + HDC hdc, + INT iEsc, + ULONG cbIn, + PVOID pvIn, + ULONG cbOut, + PVOID pvOut +); +HRESULT DocumentEventW( + HANDLE hPrinter, + HDC hdc, + INT iEsc, + ULONG cbIn, + PVOID pvIn, + ULONG cbOut, + PVOID pvOut +); +typedef struct _DRIVER_INFO_8W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + LPWSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPWSTR pszMfgName; + LPWSTR pszOEMUrl; + LPWSTR pszHardwareID; + LPWSTR pszProvider; + LPWSTR pszPrintProcessor; + LPWSTR pszVendorSetup; + LPWSTR pszzColorProfiles; + LPWSTR pszInfPath; + DWORD dwPrinterDriverAttributes; + LPWSTR pszzCoreDriverDependencies; + FILETIME ftMinInboxDriverVerDate; + DWORDLONG dwlMinInboxDriverVerVersion; +} DRIVER_INFO_8W, *PDRIVER_INFO_8W, *LPDRIVER_INFO_8W; +typedef struct _DRIVER_INFO_8A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + LPSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPSTR pszMfgName; + LPSTR pszOEMUrl; + LPSTR pszHardwareID; + LPSTR pszProvider; + LPSTR pszPrintProcessor; + LPSTR pszVendorSetup; + LPSTR pszzColorProfiles; + LPSTR pszInfPath; + DWORD dwPrinterDriverAttributes; + LPSTR pszzCoreDriverDependencies; + FILETIME ftMinInboxDriverVerDate; + DWORDLONG dwlMinInboxDriverVerVersion; +} DRIVER_INFO_8A, *PDRIVER_INFO_8A, *LPDRIVER_INFO_8A; +typedef struct _FORM_INFO_2A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; + LPCSTR pKeyword; + DWORD StringType; + LPCSTR pMuiDll; + DWORD dwResourceId; + LPCSTR pDisplayName; + LANGID wLangId; +} FORM_INFO_2A, *PFORM_INFO_2A; +typedef struct _FORM_INFO_2W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; + LPCSTR pKeyword; + DWORD StringType; + LPCWSTR pMuiDll; + DWORD dwResourceId; + LPCWSTR pDisplayName; + LANGID wLangId; +} FORM_INFO_2W, *PFORM_INFO_2W; +typedef DRIVER_INFO_8A DRIVER_INFO_8; +typedef PDRIVER_INFO_8A PDRIVER_INFO_8; +typedef LPDRIVER_INFO_8A LPDRIVER_INFO_8; +typedef FORM_INFO_2A FORM_INFO_2; +typedef PFORM_INFO_2A PFORM_INFO_2; +typedef struct _PRINTPROCESSOR_CAPS_2 { + DWORD dwLevel; + DWORD dwNupOptions; + DWORD dwPageOrderFlags; + DWORD dwNumberOfCopies; + DWORD dwNupDirectionCaps; + DWORD dwNupBorderCaps; + DWORD dwBookletHandlingCaps; + DWORD dwDuplexHandlingCaps; + DWORD dwScalingCaps; +} PRINTPROCESSOR_CAPS_2, *PPRINTPROCESSOR_CAPS_2; +HRESULT ReportJobProcessingProgress( + HANDLE printerHandle, + ULONG jobId, + EPrintXPSJobOperation jobOperation, + EPrintXPSJobProgress jobProgress +); +typedef struct _CORE_PRINTER_DRIVERA { + GUID CoreDriverGUID; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + CHAR szPackageID[260]; +} CORE_PRINTER_DRIVERA, *PCORE_PRINTER_DRIVERA; +typedef struct _CORE_PRINTER_DRIVERW { + GUID CoreDriverGUID; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + WCHAR szPackageID[260]; +} CORE_PRINTER_DRIVERW, *PCORE_PRINTER_DRIVERW; +typedef struct _PRINTER_OPTIONS { + UINT cbSize; + DWORD dwFlags; +} PRINTER_OPTIONS, *PPRINTER_OPTIONS; +typedef CORE_PRINTER_DRIVERA CORE_PRINTER_DRIVER; +typedef PCORE_PRINTER_DRIVERA PCORE_PRINTER_DRIVER; +#define GetCorePrinterDrivers __MINGW_NAME_AW(GetCorePrinterDrivers) +#define GetPrinterDriver2 __MINGW_NAME_AW(GetPrinterDriver2) +#define GetPrinterDriverPackagePath __MINGW_NAME_AW(GetPrinterDriverPackagePath) +#define GetSpoolFileHandle __MINGW_NAME_AW(GetSpoolFileHandle) +HRESULT __attribute__((__stdcall__)) GetCorePrinterDriversA( + LPCSTR pszServer, + LPCSTR pszEnvironment, + LPCSTR pszzCoreDriverDependencies, + DWORD cCorePrinterDrivers, + PCORE_PRINTER_DRIVERA pCorePrinterDrivers +); +HRESULT __attribute__((__stdcall__)) GetCorePrinterDriversW( + LPCWSTR pszServer, + LPCWSTR pszEnvironment, + LPCWSTR pszzCoreDriverDependencies, + DWORD cCorePrinterDrivers, + PCORE_PRINTER_DRIVERW pCorePrinterDrivers +); +WINBOOL __attribute__((__stdcall__)) GetPrinterDriver2A( + HWND hWnd, + HANDLE hPrinter, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +WINBOOL __attribute__((__stdcall__)) GetPrinterDriver2W( + HWND hWnd, + HANDLE hPrinter, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +HRESULT __attribute__((__stdcall__)) GetPrinterDriverPackagePathA( + LPCSTR pszServer, + LPCSTR pszEnvironment, + LPCSTR pszLanguage, + LPCSTR pszPackageID, + LPSTR pszDriverPackageCab, + DWORD cchDriverPackageCab, + LPDWORD pcchRequiredSize +); +HRESULT __attribute__((__stdcall__)) GetPrinterDriverPackagePathW( + LPCWSTR pszServer, + LPCWSTR pszEnvironment, + LPCWSTR pszLanguage, + LPCWSTR pszPackageID, + LPWSTR pszDriverPackageCab, + DWORD cchDriverPackageCab, + LPDWORD pcchRequiredSize +); +HANDLE __attribute__((__stdcall__)) GetSpoolFileHandleA( + HANDLE hPrinter +); +HANDLE __attribute__((__stdcall__)) GetSpoolFileHandleW( + HANDLE hPrinter +); +HANDLE __attribute__((__stdcall__)) CommitSpoolData( + HANDLE hPrinter, + HANDLE hSpoolFile, + DWORD cbCommit +); +WINBOOL __attribute__((__stdcall__)) CloseSpoolFileHandle( + HANDLE hPrinter, + HANDLE hSpoolFile +); +WINBOOL __attribute__((__stdcall__)) OpenPrinter2A( + LPCSTR pPrinterName, + LPHANDLE phPrinter, + LPPRINTER_DEFAULTS pDefault, + PPRINTER_OPTIONS pOptions +); +WINBOOL __attribute__((__stdcall__)) OpenPrinter2W( + LPCWSTR pPrinterName, + LPHANDLE phPrinter, + LPPRINTER_DEFAULTS pDefault, + PPRINTER_OPTIONS pOptions +); +#define OpenPrinter2 __MINGW_NAME_AW(OpenPrinter2) +HRESULT __attribute__((__stdcall__)) UploadPrinterDriverPackageA( + LPCSTR pszServer, + LPCSTR pszInfPath, + LPCSTR pszEnvironment, + DWORD dwFlags, + HWND hwnd, + LPSTR pszDestInfPath, + PULONG pcchDestInfPath +); +HRESULT __attribute__((__stdcall__)) UploadPrinterDriverPackageW( + LPCWSTR pszServer, + LPCWSTR pszInfPath, + LPCWSTR pszEnvironment, + DWORD dwFlags, + HWND hwnd, + LPWSTR pszDestInfPath, + PULONG pcchDestInfPath +); +#define UploadPrinterDriverPackage __MINGW_NAME_AW(UploadPrinterDriverPackage) + +#define _INC_COMMDLG +extern const GUID IID_IPrintDialogCallback; +extern const GUID IID_IPrintDialogServices; +#define WINCOMMDLGAPI DECLSPEC_IMPORT + typedef UINT_PTR (__attribute__((__stdcall__)) *LPOFNHOOKPROC) (HWND,UINT,WPARAM,LPARAM); +#define CDSIZEOF_STRUCT(structname,member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) + typedef struct tagOFN_NT4A { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + } OPENFILENAME_NT4A,*LPOPENFILENAME_NT4A; + typedef struct tagOFN_NT4W { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + } OPENFILENAME_NT4W,*LPOPENFILENAME_NT4W; + typedef OPENFILENAME_NT4A OPENFILENAME_NT4; + typedef LPOPENFILENAME_NT4A LPOPENFILENAME_NT4; + typedef struct tagOFNA { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + } OPENFILENAMEA,*LPOPENFILENAMEA; + typedef struct tagOFNW { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + } OPENFILENAMEW,*LPOPENFILENAMEW; + typedef OPENFILENAMEA OPENFILENAME; + typedef LPOPENFILENAMEA LPOPENFILENAME; +#define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName) +#define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName) +#define OPENFILENAME_SIZE_VERSION_400 __MINGW_NAME_AW(OPENFILENAME_SIZE_VERSION_400) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetOpenFileNameA(LPOPENFILENAMEA); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetOpenFileNameW(LPOPENFILENAMEW); +#define GetOpenFileName __MINGW_NAME_AW(GetOpenFileName) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSaveFileNameA(LPOPENFILENAMEA); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetSaveFileNameW(LPOPENFILENAMEW); +#define GetSaveFileName __MINGW_NAME_AW(GetSaveFileName) + __declspec (dllimport) short __attribute__((__stdcall__)) GetFileTitleA(LPCSTR,LPSTR,WORD); + __declspec (dllimport) short __attribute__((__stdcall__)) GetFileTitleW(LPCWSTR,LPWSTR,WORD); +#define GetFileTitle __MINGW_NAME_AW(GetFileTitle) +#define OFN_READONLY 0x1 +#define OFN_OVERWRITEPROMPT 0x2 +#define OFN_HIDEREADONLY 0x4 +#define OFN_NOCHANGEDIR 0x8 +#define OFN_SHOWHELP 0x10 +#define OFN_ENABLEHOOK 0x20 +#define OFN_ENABLETEMPLATE 0x40 +#define OFN_ENABLETEMPLATEHANDLE 0x80 +#define OFN_NOVALIDATE 0x100 +#define OFN_ALLOWMULTISELECT 0x200 +#define OFN_EXTENSIONDIFFERENT 0x400 +#define OFN_PATHMUSTEXIST 0x800 +#define OFN_FILEMUSTEXIST 0x1000 +#define OFN_CREATEPROMPT 0x2000 +#define OFN_SHAREAWARE 0x4000 +#define OFN_NOREADONLYRETURN 0x8000 +#define OFN_NOTESTFILECREATE 0x10000 +#define OFN_NONETWORKBUTTON 0x20000 +#define OFN_NOLONGNAMES 0x40000 +#define OFN_EXPLORER 0x80000 +#define OFN_NODEREFERENCELINKS 0x100000 +#define OFN_LONGNAMES 0x200000 +#define OFN_ENABLEINCLUDENOTIFY 0x400000 +#define OFN_ENABLESIZING 0x800000 +#define OFN_DONTADDTORECENT 0x2000000 +#define OFN_FORCESHOWHIDDEN 0x10000000 +#define OFN_EX_NOPLACESBAR 0x1 +#define OFN_SHAREFALLTHROUGH 2 +#define OFN_SHARENOWARN 1 +#define OFN_SHAREWARN 0 + typedef UINT_PTR (__attribute__((__stdcall__)) *LPCCHOOKPROC) (HWND,UINT,WPARAM,LPARAM); + typedef struct _OFNOTIFYA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; + } OFNOTIFYA,*LPOFNOTIFYA; + typedef struct _OFNOTIFYW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; + } OFNOTIFYW,*LPOFNOTIFYW; + typedef OFNOTIFYA OFNOTIFY; + typedef LPOFNOTIFYA LPOFNOTIFY; + typedef struct _OFNOTIFYEXA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPVOID psf; + LPVOID pidl; + } OFNOTIFYEXA,*LPOFNOTIFYEXA; + typedef struct _OFNOTIFYEXW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPVOID psf; + LPVOID pidl; + } OFNOTIFYEXW,*LPOFNOTIFYEXW; + typedef OFNOTIFYEXA OFNOTIFYEX; + typedef LPOFNOTIFYEXA LPOFNOTIFYEX; +#define CDN_FIRST (0U-601U) +#define CDN_LAST (0U-699U) +#define CDN_INITDONE (CDN_FIRST) +#define CDN_SELCHANGE (CDN_FIRST - 1) +#define CDN_FOLDERCHANGE (CDN_FIRST - 2) +#define CDN_SHAREVIOLATION (CDN_FIRST - 3) +#define CDN_HELP (CDN_FIRST - 4) +#define CDN_FILEOK (CDN_FIRST - 5) +#define CDN_TYPECHANGE (CDN_FIRST - 6) +#define CDN_INCLUDEITEM (CDN_FIRST - 7) +#define CDM_FIRST (WM_USER + 100) +#define CDM_LAST (WM_USER + 200) +#define CDM_GETSPEC (CDM_FIRST) +#define CommDlg_OpenSave_GetSpecA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETSPEC,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz) +#define CommDlg_OpenSave_GetSpecW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETSPEC,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz) +#define CommDlg_OpenSave_GetSpec __MINGW_NAME_AW(CommDlg_OpenSave_GetSpec) +#define CDM_GETFILEPATH (CDM_FIRST + 1) +#define CommDlg_OpenSave_GetFilePathA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFILEPATH,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz) +#define CommDlg_OpenSave_GetFilePathW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFILEPATH,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz) +#define CommDlg_OpenSave_GetFilePath __MINGW_NAME_AW(CommDlg_OpenSave_GetFilePath) +#define CDM_GETFOLDERPATH (CDM_FIRST + 2) +#define CommDlg_OpenSave_GetFolderPathA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERPATH,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz) +#define CommDlg_OpenSave_GetFolderPathW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERPATH,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz) +#define CommDlg_OpenSave_GetFolderPath __MINGW_NAME_AW(CommDlg_OpenSave_GetFolderPath) +#define CDM_GETFOLDERIDLIST (CDM_FIRST + 3) +#define CommDlg_OpenSave_GetFolderIDList(_hdlg,_pidl,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERIDLIST,(WPARAM)_cbmax,(LPARAM)(LPVOID)_pidl) +#define CDM_SETCONTROLTEXT (CDM_FIRST + 4) +#define CommDlg_OpenSave_SetControlText(_hdlg,_id,_text) (void)SNDMSG(_hdlg,CDM_SETCONTROLTEXT,(WPARAM)_id,(LPARAM)(LPSTR)_text) +#define CDM_HIDECONTROL (CDM_FIRST + 5) +#define CommDlg_OpenSave_HideControl(_hdlg,_id) (void)SNDMSG(_hdlg,CDM_HIDECONTROL,(WPARAM)_id,0) +#define CDM_SETDEFEXT (CDM_FIRST + 6) +#define CommDlg_OpenSave_SetDefExt(_hdlg,_pszext) (void)SNDMSG(_hdlg,CDM_SETDEFEXT,0,(LPARAM)(LPSTR)_pszext) + typedef struct tagCHOOSECOLORA { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF *lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + } CHOOSECOLORA,*LPCHOOSECOLORA; + typedef struct tagCHOOSECOLORW { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF *lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + } CHOOSECOLORW,*LPCHOOSECOLORW; + typedef CHOOSECOLORA CHOOSECOLOR; + typedef LPCHOOSECOLORA LPCHOOSECOLOR; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChooseColorA(LPCHOOSECOLORA); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChooseColorW(LPCHOOSECOLORW); +#define ChooseColor __MINGW_NAME_AW(ChooseColor) +#define CC_RGBINIT 0x1 +#define CC_FULLOPEN 0x2 +#define CC_PREVENTFULLOPEN 0x4 +#define CC_SHOWHELP 0x8 +#define CC_ENABLEHOOK 0x10 +#define CC_ENABLETEMPLATE 0x20 +#define CC_ENABLETEMPLATEHANDLE 0x40 +#define CC_SOLIDCOLOR 0x80 +#define CC_ANYCOLOR 0x100 + typedef UINT_PTR (__attribute__((__stdcall__)) *LPFRHOOKPROC) (HWND,UINT,WPARAM,LPARAM); + typedef struct tagFINDREPLACEA { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + } FINDREPLACEA,*LPFINDREPLACEA; + typedef struct tagFINDREPLACEW { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + } FINDREPLACEW,*LPFINDREPLACEW; + typedef FINDREPLACEA FINDREPLACE; + typedef LPFINDREPLACEA LPFINDREPLACE; +#define FR_DOWN 0x1 +#define FR_WHOLEWORD 0x2 +#define FR_MATCHCASE 0x4 +#define FR_FINDNEXT 0x8 +#define FR_REPLACE 0x10 +#define FR_REPLACEALL 0x20 +#define FR_DIALOGTERM 0x40 +#define FR_SHOWHELP 0x80 +#define FR_ENABLEHOOK 0x100 +#define FR_ENABLETEMPLATE 0x200 +#define FR_NOUPDOWN 0x400 +#define FR_NOMATCHCASE 0x800 +#define FR_NOWHOLEWORD 0x1000 +#define FR_ENABLETEMPLATEHANDLE 0x2000 +#define FR_HIDEUPDOWN 0x4000 +#define FR_HIDEMATCHCASE 0x8000 +#define FR_HIDEWHOLEWORD 0x10000 +#define FR_RAW 0x20000 +#define FR_MATCHDIAC 0x20000000 +#define FR_MATCHKASHIDA 0x40000000 +#define FR_MATCHALEFHAMZA 0x80000000 + __declspec (dllimport) HWND __attribute__((__stdcall__)) FindTextA(LPFINDREPLACEA); + __declspec (dllimport) HWND __attribute__((__stdcall__)) FindTextW(LPFINDREPLACEW); +#define FindText __MINGW_NAME_AW(FindText) + __declspec (dllimport) HWND __attribute__((__stdcall__)) ReplaceTextA(LPFINDREPLACEA); + __declspec (dllimport) HWND __attribute__((__stdcall__)) ReplaceTextW(LPFINDREPLACEW); +#define ReplaceText __MINGW_NAME_AW(ReplaceText) + typedef UINT_PTR (__attribute__((__stdcall__)) *LPCFHOOKPROC) (HWND,UINT,WPARAM,LPARAM); + typedef struct tagCHOOSEFONTA { + DWORD lStructSize; + HWND hwndOwner; + HDC hDC; + LPLOGFONTA lpLogFont; + INT iPointSize; + DWORD Flags; + COLORREF rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + HINSTANCE hInstance; + LPSTR lpszStyle; + WORD nFontType; + WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; + } CHOOSEFONTA,*LPCHOOSEFONTA; + typedef struct tagCHOOSEFONTW { + DWORD lStructSize; + HWND hwndOwner; + HDC hDC; + LPLOGFONTW lpLogFont; + INT iPointSize; + DWORD Flags; + COLORREF rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + HINSTANCE hInstance; + LPWSTR lpszStyle; + WORD nFontType; + WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; + } CHOOSEFONTW,*LPCHOOSEFONTW; + typedef CHOOSEFONTA CHOOSEFONT; + typedef LPCHOOSEFONTA LPCHOOSEFONT; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChooseFontA(LPCHOOSEFONTA); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChooseFontW(LPCHOOSEFONTW); +#define ChooseFont __MINGW_NAME_AW(ChooseFont) +#define CF_SCREENFONTS 0x1 +#define CF_PRINTERFONTS 0x2 +#define CF_BOTH (CF_SCREENFONTS | CF_PRINTERFONTS) +#define CF_SHOWHELP __MSABI_LONG(0x4) +#define CF_ENABLEHOOK __MSABI_LONG(0x8) +#define CF_ENABLETEMPLATE __MSABI_LONG(0x10) +#define CF_ENABLETEMPLATEHANDLE __MSABI_LONG(0x20) +#define CF_INITTOLOGFONTSTRUCT __MSABI_LONG(0x40) +#define CF_USESTYLE __MSABI_LONG(0x80) +#define CF_EFFECTS __MSABI_LONG(0x100) +#define CF_APPLY __MSABI_LONG(0x200) +#define CF_ANSIONLY __MSABI_LONG(0x400) +#define CF_SCRIPTSONLY CF_ANSIONLY +#define CF_NOVECTORFONTS __MSABI_LONG(0x800) +#define CF_NOOEMFONTS CF_NOVECTORFONTS +#define CF_NOSIMULATIONS __MSABI_LONG(0x1000) +#define CF_LIMITSIZE __MSABI_LONG(0x2000) +#define CF_FIXEDPITCHONLY __MSABI_LONG(0x4000) +#define CF_WYSIWYG __MSABI_LONG(0x8000) +#define CF_FORCEFONTEXIST __MSABI_LONG(0x10000) +#define CF_SCALABLEONLY __MSABI_LONG(0x20000) +#define CF_TTONLY __MSABI_LONG(0x40000) +#define CF_NOFACESEL __MSABI_LONG(0x80000) +#define CF_NOSTYLESEL __MSABI_LONG(0x100000) +#define CF_NOSIZESEL __MSABI_LONG(0x200000) +#define CF_SELECTSCRIPT __MSABI_LONG(0x400000) +#define CF_NOSCRIPTSEL __MSABI_LONG(0x800000) +#define CF_NOVERTFONTS __MSABI_LONG(0x1000000) +#define SIMULATED_FONTTYPE 0x8000 +#define PRINTER_FONTTYPE 0x4000 +#define SCREEN_FONTTYPE 0x2000 +#define BOLD_FONTTYPE 0x100 +#define ITALIC_FONTTYPE 0x200 +#define REGULAR_FONTTYPE 0x400 +#define PS_OPENTYPE_FONTTYPE 0x10000 +#define TT_OPENTYPE_FONTTYPE 0x20000 +#define TYPE1_FONTTYPE 0x40000 +#define WM_CHOOSEFONT_GETLOGFONT (WM_USER + 1) +#define WM_CHOOSEFONT_SETLOGFONT (WM_USER + 101) +#define WM_CHOOSEFONT_SETFLAGS (WM_USER + 102) +#define LBSELCHSTRINGA "commdlg_LBSelChangedNotify" +#define SHAREVISTRINGA "commdlg_ShareViolation" +#define FILEOKSTRINGA "commdlg_FileNameOK" +#define COLOROKSTRINGA "commdlg_ColorOK" +#define SETRGBSTRINGA "commdlg_SetRGBColor" +#define HELPMSGSTRINGA "commdlg_help" +#define FINDMSGSTRINGA "commdlg_FindReplace" +#define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify" +#define SHAREVISTRINGW L"commdlg_ShareViolation" +#define FILEOKSTRINGW L"commdlg_FileNameOK" +#define COLOROKSTRINGW L"commdlg_ColorOK" +#define SETRGBSTRINGW L"commdlg_SetRGBColor" +#define HELPMSGSTRINGW L"commdlg_help" +#define FINDMSGSTRINGW L"commdlg_FindReplace" +#define LBSELCHSTRING __MINGW_NAME_AW(LBSELCHSTRING) +#define SHAREVISTRING __MINGW_NAME_AW(SHAREVISTRING) +#define FILEOKSTRING __MINGW_NAME_AW(FILEOKSTRING) +#define COLOROKSTRING __MINGW_NAME_AW(COLOROKSTRING) +#define SETRGBSTRING __MINGW_NAME_AW(SETRGBSTRING) +#define HELPMSGSTRING __MINGW_NAME_AW(HELPMSGSTRING) +#define FINDMSGSTRING __MINGW_NAME_AW(FINDMSGSTRING) +#define CD_LBSELNOITEMS -1 +#define CD_LBSELCHANGE 0 +#define CD_LBSELSUB 1 +#define CD_LBSELADD 2 + typedef UINT_PTR (__attribute__((__stdcall__)) *LPPRINTHOOKPROC) (HWND,UINT,WPARAM,LPARAM); + typedef UINT_PTR (__attribute__((__stdcall__)) *LPSETUPHOOKPROC) (HWND,UINT,WPARAM,LPARAM); + typedef struct tagPDA { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + LPARAM lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCSTR lpPrintTemplateName; + LPCSTR lpSetupTemplateName; + HGLOBAL hPrintTemplate; + HGLOBAL hSetupTemplate; + } PRINTDLGA,*LPPRINTDLGA; + typedef struct tagPDW { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + LPARAM lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCWSTR lpPrintTemplateName; + LPCWSTR lpSetupTemplateName; + HGLOBAL hPrintTemplate; + HGLOBAL hSetupTemplate; + } PRINTDLGW,*LPPRINTDLGW; + typedef PRINTDLGA PRINTDLG; + typedef LPPRINTDLGA LPPRINTDLG; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PrintDlgA(LPPRINTDLGA); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PrintDlgW(LPPRINTDLGW); +#define PrintDlg __MINGW_NAME_AW(PrintDlg) +#undef INTERFACE +#define INTERFACE IPrintDialogCallback + typedef struct IPrintDialogCallback { struct IPrintDialogCallbackVtbl *lpVtbl; } IPrintDialogCallback; typedef struct IPrintDialogCallbackVtbl IPrintDialogCallbackVtbl; struct IPrintDialogCallbackVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface) (IPrintDialogCallback *This, const IID *const riid,LPVOID *ppvObj) ; + ULONG (__attribute__((__stdcall__)) *AddRef) (IPrintDialogCallback *This) ; + ULONG (__attribute__((__stdcall__)) *Release) (IPrintDialogCallback *This) ; + HRESULT (__attribute__((__stdcall__)) *InitDone) (IPrintDialogCallback *This) ; + HRESULT (__attribute__((__stdcall__)) *SelectionChange) (IPrintDialogCallback *This) ; + HRESULT (__attribute__((__stdcall__)) *HandleMessage) (IPrintDialogCallback *This, HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pResult) ; + }; +#undef INTERFACE +#define INTERFACE IPrintDialogServices + typedef struct IPrintDialogServices { struct IPrintDialogServicesVtbl *lpVtbl; } IPrintDialogServices; typedef struct IPrintDialogServicesVtbl IPrintDialogServicesVtbl; struct IPrintDialogServicesVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface) (IPrintDialogServices *This, const IID *const riid,LPVOID *ppvObj) ; + ULONG (__attribute__((__stdcall__)) *AddRef) (IPrintDialogServices *This) ; + ULONG (__attribute__((__stdcall__)) *Release) (IPrintDialogServices *This) ; + HRESULT (__attribute__((__stdcall__)) *GetCurrentDevMode) (IPrintDialogServices *This, LPDEVMODE pDevMode,UINT *pcbSize) ; + HRESULT (__attribute__((__stdcall__)) *GetCurrentPrinterName) (IPrintDialogServices *This, LPTSTR pPrinterName,UINT *pcchSize) ; + HRESULT (__attribute__((__stdcall__)) *GetCurrentPortName) (IPrintDialogServices *This, LPTSTR pPortName,UINT *pcchSize) ; + }; + typedef struct tagPRINTPAGERANGE { + DWORD nFromPage; + DWORD nToPage; + } PRINTPAGERANGE,*LPPRINTPAGERANGE; + typedef struct tagPDEXA { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE *lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } PRINTDLGEXA,*LPPRINTDLGEXA; + typedef struct tagPDEXW { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCWSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE *lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } PRINTDLGEXW,*LPPRINTDLGEXW; + typedef PRINTDLGEXA PRINTDLGEX; + typedef LPPRINTDLGEXA LPPRINTDLGEX; + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) PrintDlgExA(LPPRINTDLGEXA); + __declspec (dllimport) HRESULT __attribute__((__stdcall__)) PrintDlgExW(LPPRINTDLGEXW); +#define PrintDlgEx __MINGW_NAME_AW(PrintDlgEx) +#define PD_ALLPAGES 0x0 +#define PD_SELECTION 0x1 +#define PD_PAGENUMS 0x2 +#define PD_NOSELECTION 0x4 +#define PD_NOPAGENUMS 0x8 +#define PD_COLLATE 0x10 +#define PD_PRINTTOFILE 0x20 +#define PD_PRINTSETUP 0x40 +#define PD_NOWARNING 0x80 +#define PD_RETURNDC 0x100 +#define PD_RETURNIC 0x200 +#define PD_RETURNDEFAULT 0x400 +#define PD_SHOWHELP 0x800 +#define PD_ENABLEPRINTHOOK 0x1000 +#define PD_ENABLESETUPHOOK 0x2000 +#define PD_ENABLEPRINTTEMPLATE 0x4000 +#define PD_ENABLESETUPTEMPLATE 0x8000 +#define PD_ENABLEPRINTTEMPLATEHANDLE 0x10000 +#define PD_ENABLESETUPTEMPLATEHANDLE 0x20000 +#define PD_USEDEVMODECOPIES 0x40000 +#define PD_USEDEVMODECOPIESANDCOLLATE 0x40000 +#define PD_DISABLEPRINTTOFILE 0x80000 +#define PD_HIDEPRINTTOFILE 0x100000 +#define PD_NONETWORKBUTTON 0x200000 +#define PD_CURRENTPAGE 0x400000 +#define PD_NOCURRENTPAGE 0x800000 +#define PD_EXCLUSIONFLAGS 0x1000000 +#define PD_USELARGETEMPLATE 0x10000000 +#define PD_EXCL_COPIESANDCOLLATE (DM_COPIES | DM_COLLATE) +#define START_PAGE_GENERAL 0xffffffff +#define PD_RESULT_CANCEL 0 +#define PD_RESULT_PRINT 1 +#define PD_RESULT_APPLY 2 + typedef struct tagDEVNAMES { + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; + } DEVNAMES,*LPDEVNAMES; +#define DN_DEFAULTPRN 0x1 + __declspec (dllimport) DWORD __attribute__((__stdcall__)) CommDlgExtendedError(void); +#define WM_PSD_PAGESETUPDLG (WM_USER) +#define WM_PSD_FULLPAGERECT (WM_USER+1) +#define WM_PSD_MINMARGINRECT (WM_USER+2) +#define WM_PSD_MARGINRECT (WM_USER+3) +#define WM_PSD_GREEKTEXTRECT (WM_USER+4) +#define WM_PSD_ENVSTAMPRECT (WM_USER+5) +#define WM_PSD_YAFULLPAGERECT (WM_USER+6) + typedef UINT_PTR (__attribute__((__stdcall__)) *LPPAGEPAINTHOOK)(HWND,UINT,WPARAM,LPARAM); + typedef UINT_PTR (__attribute__((__stdcall__)) *LPPAGESETUPHOOK)(HWND,UINT,WPARAM,LPARAM); + typedef struct tagPSDA { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; + } PAGESETUPDLGA,*LPPAGESETUPDLGA; + typedef struct tagPSDW { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCWSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; + } PAGESETUPDLGW,*LPPAGESETUPDLGW; + typedef PAGESETUPDLGA PAGESETUPDLG; + typedef LPPAGESETUPDLGA LPPAGESETUPDLG; + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PageSetupDlgA(LPPAGESETUPDLGA); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) PageSetupDlgW(LPPAGESETUPDLGW); +#define PageSetupDlg __MINGW_NAME_AW(PageSetupDlg) +#define PSD_DEFAULTMINMARGINS 0x0 +#define PSD_INWININIINTLMEASURE 0x0 +#define PSD_MINMARGINS 0x1 +#define PSD_MARGINS 0x2 +#define PSD_INTHOUSANDTHSOFINCHES 0x4 +#define PSD_INHUNDREDTHSOFMILLIMETERS 0x8 +#define PSD_DISABLEMARGINS 0x10 +#define PSD_DISABLEPRINTER 0x20 +#define PSD_NOWARNING 0x80 +#define PSD_DISABLEORIENTATION 0x100 +#define PSD_RETURNDEFAULT 0x400 +#define PSD_DISABLEPAPER 0x200 +#define PSD_SHOWHELP 0x800 +#define PSD_ENABLEPAGESETUPHOOK 0x2000 +#define PSD_ENABLEPAGESETUPTEMPLATE 0x8000 +#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x20000 +#define PSD_ENABLEPAGEPAINTHOOK 0x40000 +#define PSD_DISABLEPAGEPAINTING 0x80000 +#define PSD_NONETWORKBUTTON 0x200000 +#define __STRALIGN_H_ +#define _STRALIGN_USE_SECURE_CRT 0 +#define WSTR_ALIGNED(s) (((DWORD_PTR)(s) & 1) == 0) + LPUWSTR __attribute__((__stdcall__)) uaw_CharUpperW(LPUWSTR String); + int __attribute__((__stdcall__)) uaw_lstrcmpW(PCUWSTR String1,PCUWSTR String2); + int __attribute__((__stdcall__)) uaw_lstrcmpiW(PCUWSTR String1,PCUWSTR String2); + int __attribute__((__stdcall__)) uaw_lstrlenW(LPCUWSTR String); + PUWSTR __attribute__((__cdecl__)) uaw_wcschr(PCUWSTR String,WCHAR Character); + PUWSTR __attribute__((__cdecl__)) uaw_wcscpy(PUWSTR Destination,PCUWSTR Source); + int __attribute__((__cdecl__)) uaw_wcsicmp(PCUWSTR String1,PCUWSTR String2); + size_t __attribute__((__cdecl__)) uaw_wcslen(PCUWSTR String); + PUWSTR __attribute__((__cdecl__)) uaw_wcsrchr(PCUWSTR String,WCHAR Character); + LPUWSTR ua_CharUpperW(LPUWSTR String); + extern inline __attribute__((__gnu_inline__)) LPUWSTR ua_CharUpperW(LPUWSTR String) { + if((((DWORD_PTR)(String) & 1) == 0)) return CharUpperW((PWSTR)String); + return uaw_CharUpperW(String); + } + int ua_lstrcmpW(LPCUWSTR String1,LPCUWSTR String2); + int ua_lstrcmpiW(LPCUWSTR String1,LPCUWSTR String2); + int ua_lstrlenW(LPCUWSTR String); + extern inline __attribute__((__gnu_inline__)) int ua_lstrcmpW(LPCUWSTR String1,LPCUWSTR String2) { + if((((DWORD_PTR)(String1) & 1) == 0) && (((DWORD_PTR)(String2) & 1) == 0)) + return lstrcmpW((LPCWSTR)String1,(LPCWSTR)String2); + return uaw_lstrcmpW(String1,String2); + } + extern inline __attribute__((__gnu_inline__)) int ua_lstrcmpiW(LPCUWSTR String1,LPCUWSTR String2) { + if((((DWORD_PTR)(String1) & 1) == 0) && (((DWORD_PTR)(String2) & 1) == 0)) + return lstrcmpiW((LPCWSTR)String1,(LPCWSTR)String2); + return uaw_lstrcmpiW(String1,String2); + } + extern inline __attribute__((__gnu_inline__)) int ua_lstrlenW(LPCUWSTR String) { + if((((DWORD_PTR)(String) & 1) == 0)) return lstrlenW((PCWSTR)String); + return uaw_lstrlenW(String); + } + typedef WCHAR *PUWSTR_C; + PUWSTR_C ua_wcschr(PCUWSTR String,WCHAR Character); + PUWSTR_C ua_wcsrchr(PCUWSTR String,WCHAR Character); + PUWSTR ua_wcscpy(PUWSTR Destination,PCUWSTR Source); + size_t ua_wcslen(PCUWSTR String); + extern inline __attribute__((__gnu_inline__)) PUWSTR_C ua_wcschr(PCUWSTR String,WCHAR Character) { + if((((DWORD_PTR)(String) & 1) == 0)) return (PUWSTR_C)wcschr((PCWSTR)String,Character); + return (PUWSTR_C)uaw_wcschr(String,Character); + } + extern inline __attribute__((__gnu_inline__)) PUWSTR_C ua_wcsrchr(PCUWSTR String,WCHAR Character) { + if((((DWORD_PTR)(String) & 1) == 0)) return (PUWSTR_C)wcsrchr((PCWSTR)String,Character); + return (PUWSTR_C)uaw_wcsrchr(String,Character); + } + extern inline __attribute__((__gnu_inline__)) PUWSTR ua_wcscpy(PUWSTR Destination,PCUWSTR Source) { + if((((DWORD_PTR)(Source) & 1) == 0) && (((DWORD_PTR)(Destination) & 1) == 0)) + return wcscpy((PWSTR)Destination,(PCWSTR)Source); + return uaw_wcscpy(Destination,Source); + } + extern inline __attribute__((__gnu_inline__)) size_t ua_wcslen(PCUWSTR String) { + if((((DWORD_PTR)(String) & 1) == 0)) return wcslen((PCWSTR)String); + return uaw_wcslen(String); + } + int ua_wcsicmp(LPCUWSTR String1,LPCUWSTR String2); + extern inline __attribute__((__gnu_inline__)) int ua_wcsicmp(LPCUWSTR String1,LPCUWSTR String2) { + if((((DWORD_PTR)(String1) & 1) == 0) && (((DWORD_PTR)(String2) & 1) == 0)) + return _wcsicmp((LPCWSTR)String1,(LPCWSTR)String2); + return uaw_wcsicmp(String1,String2); + } +#define __UA_WCSLEN ua_wcslen +#define __UA_WSTRSIZE(s) ((__UA_WCSLEN(s)+1)*sizeof(WCHAR)) +#define __UA_STACKCOPY(p,s) memcpy(_alloca(s),p,s) +#define WSTR_ALIGNED_STACK_COPY(d,s) { PCUWSTR __ua_src; ULONG __ua_size; PWSTR __ua_dst; __ua_src = (s); if(WSTR_ALIGNED(__ua_src)) { __ua_dst = (PWSTR)__ua_src; } else { __ua_size = __UA_WSTRSIZE(__ua_src); __ua_dst = (PWSTR)_alloca(__ua_size); memcpy(__ua_dst,__ua_src,__ua_size); } *(d) = (PCWSTR)__ua_dst; } +#define ASTR_ALIGNED_STACK_COPY(d,s) (*(d) = (PCSTR)(s)) +#define __UA_STRUC_ALIGNED(t,s) (((DWORD_PTR)(s) & (TYPE_ALIGNMENT(t)-1))==0) +#define STRUC_ALIGNED_STACK_COPY(t,s) __UA_STRUC_ALIGNED(t,s) ? ((t const *)(s)) : ((t const *)__UA_STACKCOPY((s),sizeof(t))) +#define TSTR_ALIGNED_STACK_COPY(d,s) ASTR_ALIGNED_STACK_COPY(d,s) +#define TSTR_ALIGNED(x) TRUE +#define ua_CharUpper CharUpperA +#define ua_lstrcmp lstrcmpA +#define ua_lstrcmpi lstrcmpiA +#define ua_lstrlen lstrlenA +#define ua_tcscpy strcpy +#define __STRALIGN_H_S_ +#define _WINSVC_ +#define SERVICES_ACTIVE_DATABASEW L"ServicesActive" +#define SERVICES_FAILED_DATABASEW L"ServicesFailed" +#define SERVICES_ACTIVE_DATABASEA "ServicesActive" +#define SERVICES_FAILED_DATABASEA "ServicesFailed" +#define SC_GROUP_IDENTIFIERW L'+' +#define SC_GROUP_IDENTIFIERA '+' +#define SERVICES_ACTIVE_DATABASE __MINGW_NAME_AW(SERVICES_ACTIVE_DATABASE) +#define SERVICES_FAILED_DATABASE __MINGW_NAME_AW(SERVICES_FAILED_DATABASE) +#define SC_GROUP_IDENTIFIER __MINGW_NAME_AW(SC_GROUP_IDENTIFIER) +#define SERVICE_NO_CHANGE 0xffffffff +#define SERVICE_ACTIVE 0x00000001 +#define SERVICE_INACTIVE 0x00000002 +#define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE) +#define SERVICE_CONTROL_STOP 0x00000001 +#define SERVICE_CONTROL_PAUSE 0x00000002 +#define SERVICE_CONTROL_CONTINUE 0x00000003 +#define SERVICE_CONTROL_INTERROGATE 0x00000004 +#define SERVICE_CONTROL_SHUTDOWN 0x00000005 +#define SERVICE_CONTROL_PARAMCHANGE 0x00000006 +#define SERVICE_CONTROL_NETBINDADD 0x00000007 +#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008 +#define SERVICE_CONTROL_NETBINDENABLE 0x00000009 +#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A +#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B +#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C +#define SERVICE_CONTROL_POWEREVENT 0x0000000D +#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E +#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F +#define SERVICE_CONTROL_TIMECHANGE 0x00000010 +#define SERVICE_CONTROL_USER_LOGOFF 0x00000011 +#define SERVICE_CONTROL_TRIGGEREVENT 0x00000020 +#define SERVICE_CONTROL_LOWRESOURCES 0x00000060 +#define SERVICE_CONTROL_SYSTEMLOWRESOURCES 0x00000061 +#define SERVICE_STOPPED 0x00000001 +#define SERVICE_START_PENDING 0x00000002 +#define SERVICE_STOP_PENDING 0x00000003 +#define SERVICE_RUNNING 0x00000004 +#define SERVICE_CONTINUE_PENDING 0x00000005 +#define SERVICE_PAUSE_PENDING 0x00000006 +#define SERVICE_PAUSED 0x00000007 +#define SERVICE_ACCEPT_STOP 0x00000001 +#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002 +#define SERVICE_ACCEPT_SHUTDOWN 0x00000004 +#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008 +#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010 +#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020 +#define SERVICE_ACCEPT_POWEREVENT 0x00000040 +#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080 +#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100 +#define SERVICE_ACCEPT_TIMECHANGE 0x00000200 +#define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400 +#define SERVICE_ACCEPT_USER_LOGOFF 0x00000800 +#define SERVICE_ACCEPT_LOWRESOURCES 0x00002000 +#define SERVICE_ACCEPT_SYSTEMLOWRESOURCES 0x00004000 +#define SC_MANAGER_CONNECT 0x0001 +#define SC_MANAGER_CREATE_SERVICE 0x0002 +#define SC_MANAGER_ENUMERATE_SERVICE 0x0004 +#define SC_MANAGER_LOCK 0x0008 +#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010 +#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020 +#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG) +#define SERVICE_QUERY_CONFIG 0x0001 +#define SERVICE_CHANGE_CONFIG 0x0002 +#define SERVICE_QUERY_STATUS 0x0004 +#define SERVICE_ENUMERATE_DEPENDENTS 0x0008 +#define SERVICE_START 0x0010 +#define SERVICE_STOP 0x0020 +#define SERVICE_PAUSE_CONTINUE 0x0040 +#define SERVICE_INTERROGATE 0x0080 +#define SERVICE_USER_DEFINED_CONTROL 0x0100 +#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL) +#define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001 +#define SERVICE_CONFIG_DESCRIPTION 1 +#define SERVICE_CONFIG_FAILURE_ACTIONS 2 +#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3 +#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4 +#define SERVICE_CONFIG_SERVICE_SID_INFO 5 +#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6 +#define SERVICE_CONFIG_PRESHUTDOWN_INFO 7 +#define SERVICE_CONFIG_TRIGGER_INFO 8 +#define SERVICE_CONFIG_PREFERRED_NODE 9 +#define SERVICE_CONFIG_LAUNCH_PROTECTED 12 +#define SERVICE_NOTIFY_STATUS_CHANGE_1 1 +#define SERVICE_NOTIFY_STATUS_CHANGE_2 2 +#define SERVICE_NOTIFY_STATUS_CHANGE SERVICE_NOTIFY_STATUS_CHANGE_2 +#define SERVICE_NOTIFY_STOPPED 0x00000001 +#define SERVICE_NOTIFY_START_PENDING 0x00000002 +#define SERVICE_NOTIFY_STOP_PENDING 0x00000004 +#define SERVICE_NOTIFY_RUNNING 0x00000008 +#define SERVICE_NOTIFY_CONTINUE_PENDING 0x00000010 +#define SERVICE_NOTIFY_PAUSE_PENDING 0x00000020 +#define SERVICE_NOTIFY_PAUSED 0x00000040 +#define SERVICE_NOTIFY_CREATED 0x00000080 +#define SERVICE_NOTIFY_DELETED 0x00000100 +#define SERVICE_NOTIFY_DELETE_PENDING 0x00000200 +#define SERVICE_STOP_REASON_FLAG_MIN 0x00000000 +#define SERVICE_STOP_REASON_FLAG_UNPLANNED 0x10000000 +#define SERVICE_STOP_REASON_FLAG_CUSTOM 0x20000000 +#define SERVICE_STOP_REASON_FLAG_PLANNED 0x40000000 +#define SERVICE_STOP_REASON_FLAG_MAX 0x80000000 +#define SERVICE_STOP_REASON_MAJOR_MIN 0x00000000 +#define SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000 +#define SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000 +#define SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000 +#define SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000 +#define SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000 +#define SERVICE_STOP_REASON_MAJOR_NONE 0x00060000 +#define SERVICE_STOP_REASON_MAJOR_MAX 0x00070000 +#define SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM 0x00400000 +#define SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM 0x00ff0000 +#define SERVICE_STOP_REASON_MINOR_MIN 0x00000000 +#define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001 +#define SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002 +#define SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003 +#define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004 +#define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005 +#define SERVICE_STOP_REASON_MINOR_HUNG 0x00000006 +#define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007 +#define SERVICE_STOP_REASON_MINOR_DISK 0x00000008 +#define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009 +#define SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a +#define SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b +#define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c +#define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d +#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e +#define SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f +#define SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010 +#define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011 +#define SERVICE_STOP_REASON_MINOR_WMI 0x00000012 +#define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013 +#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL 0x00000014 +#define SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015 +#define SERVICE_STOP_REASON_MINOR_MMC 0x00000016 +#define SERVICE_STOP_REASON_MINOR_NONE 0x00000017 +#define SERVICE_STOP_REASON_MINOR_MEMOTYLIMIT 0x00000018 +#define SERVICE_STOP_REASON_MINOR_MAX 0x00000019 +#define SERVICE_STOP_REASON_MINOR_MIN_CUSTOM 0x00000100 +#define SERVICE_STOP_REASON_MINOR_MAX_CUSTOM 0x0000FFFF +#define SERVICE_CONTROL_STATUS_REASON_INFO 1 +#define SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL 1 +#define SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 2 +#define SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 3 +#define SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 4 +#define SERVICE_TRIGGER_TYPE_GROUP_POLICY 5 +#define SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 6 +#define SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE 7 +#define SERVICE_TRIGGER_TYPE_CUSTOM 20 +#define SERVICE_TRIGGER_TYPE_AGGREGATE 30 +#define SERVICE_TRIGGER_DATA_TYPE_BINARY 1 +#define SERVICE_TRIGGER_DATA_TYPE_STRING 2 +#define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3 +#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4 +#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5 +#define SERVICE_START_REASON_DEMAND 0x00000001 +#define SERVICE_START_REASON_AUTO 0x00000002 +#define SERVICE_START_REASON_TRIGGER 0x00000004 +#define SERVICE_START_REASON_RESTART_ON_FAILURE 0x00000008 +#define SERVICE_START_REASON_DELAYEDAUTO 0x00000010 +#define SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON 1 +#define SERVICE_LAUNCH_PROTECTED_NONE 0 +#define SERVICE_LAUNCH_PROTECTED_WINDOWS 1 +#define SERVICE_LAUNCH_PROTECTED_WINDOWS_LIGHT 2 +#define SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT 3 + typedef struct _SERVICE_DESCRIPTIONA { + LPSTR lpDescription; + } SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA; + typedef struct _SERVICE_DESCRIPTIONW { + LPWSTR lpDescription; + } SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW; + typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; + typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION; + typedef enum _SC_ACTION_TYPE { + SC_ACTION_NONE = 0,SC_ACTION_RESTART = 1,SC_ACTION_REBOOT = 2,SC_ACTION_RUN_COMMAND = 3 + } SC_ACTION_TYPE; + typedef struct _SC_ACTION { + SC_ACTION_TYPE Type; + DWORD Delay; + } SC_ACTION,*LPSC_ACTION; + typedef struct _SERVICE_FAILURE_ACTIONSA { + DWORD dwResetPeriod; + LPSTR lpRebootMsg; + LPSTR lpCommand; + DWORD cActions; + SC_ACTION *lpsaActions; + } SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA; + typedef struct _SERVICE_FAILURE_ACTIONSW { + DWORD dwResetPeriod; + LPWSTR lpRebootMsg; + LPWSTR lpCommand; + DWORD cActions; + SC_ACTION *lpsaActions; + } SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW; + typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; + typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS; + struct SC_HANDLE__ { int unused; }; typedef struct SC_HANDLE__ *SC_HANDLE; + typedef SC_HANDLE *LPSC_HANDLE; + struct SERVICE_STATUS_HANDLE__ { int unused; }; typedef struct SERVICE_STATUS_HANDLE__ *SERVICE_STATUS_HANDLE; + typedef enum _SC_STATUS_TYPE { + SC_STATUS_PROCESS_INFO = 0 + } SC_STATUS_TYPE; + typedef enum _SC_ENUM_TYPE { + SC_ENUM_PROCESS_INFO = 0 + } SC_ENUM_TYPE; + typedef struct _SERVICE_STATUS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; + } SERVICE_STATUS,*LPSERVICE_STATUS; + typedef struct _SERVICE_STATUS_PROCESS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; + DWORD dwProcessId; + DWORD dwServiceFlags; + } SERVICE_STATUS_PROCESS,*LPSERVICE_STATUS_PROCESS; + typedef struct _ENUM_SERVICE_STATUSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; + } ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA; + typedef struct _ENUM_SERVICE_STATUSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; + } ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW; + typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; + typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS; + typedef struct _ENUM_SERVICE_STATUS_PROCESSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA; + typedef struct _ENUM_SERVICE_STATUS_PROCESSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW; + typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; + typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS; + typedef LPVOID SC_LOCK; + typedef struct _QUERY_SERVICE_LOCK_STATUSA { + DWORD fIsLocked; + LPSTR lpLockOwner; + DWORD dwLockDuration; + } QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA; + typedef struct _QUERY_SERVICE_LOCK_STATUSW { + DWORD fIsLocked; + LPWSTR lpLockOwner; + DWORD dwLockDuration; + } QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW; + typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; + typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS; + typedef struct _QUERY_SERVICE_CONFIGA { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPSTR lpBinaryPathName; + LPSTR lpLoadOrderGroup; + DWORD dwTagId; + LPSTR lpDependencies; + LPSTR lpServiceStartName; + LPSTR lpDisplayName; + } QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA; + typedef struct _QUERY_SERVICE_CONFIGW { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPWSTR lpBinaryPathName; + LPWSTR lpLoadOrderGroup; + DWORD dwTagId; + LPWSTR lpDependencies; + LPWSTR lpServiceStartName; + LPWSTR lpDisplayName; + } QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW; + typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; + typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG; + typedef void (__attribute__((__stdcall__)) *LPSERVICE_MAIN_FUNCTIONW)(DWORD dwNumServicesArgs,LPWSTR *lpServiceArgVectors); + typedef void (__attribute__((__stdcall__)) *LPSERVICE_MAIN_FUNCTIONA)(DWORD dwNumServicesArgs,LPSTR *lpServiceArgVectors); +#define LPSERVICE_MAIN_FUNCTION __MINGW_NAME_AW(LPSERVICE_MAIN_FUNCTION) + typedef struct _SERVICE_TABLE_ENTRYA { + LPSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONA lpServiceProc; + } SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA; + typedef struct _SERVICE_TABLE_ENTRYW { + LPWSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONW lpServiceProc; + } SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW; + typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; + typedef LPSERVICE_TABLE_ENTRYA LPSERVICE_TABLE_ENTRY; + typedef void (__attribute__((__stdcall__)) *LPHANDLER_FUNCTION)(DWORD dwControl); + typedef DWORD (__attribute__((__stdcall__)) *LPHANDLER_FUNCTION_EX)(DWORD dwControl,DWORD dwEventType,LPVOID lpEventData,LPVOID lpContext); +#define ChangeServiceConfig __MINGW_NAME_AW(ChangeServiceConfig) +#define ChangeServiceConfig2 __MINGW_NAME_AW(ChangeServiceConfig2) +#define CreateService __MINGW_NAME_AW(CreateService) +#define EnumDependentServices __MINGW_NAME_AW(EnumDependentServices) +#define EnumServicesStatus __MINGW_NAME_AW(EnumServicesStatus) +#define EnumServicesStatusEx __MINGW_NAME_AW(EnumServicesStatusEx) +#define GetServiceKeyName __MINGW_NAME_AW(GetServiceKeyName) +#define GetServiceDisplayName __MINGW_NAME_AW(GetServiceDisplayName) +#define OpenSCManager __MINGW_NAME_AW(OpenSCManager) +#define OpenService __MINGW_NAME_AW(OpenService) +#define QueryServiceConfig __MINGW_NAME_AW(QueryServiceConfig) +#define QueryServiceConfig2 __MINGW_NAME_AW(QueryServiceConfig2) +#define QueryServiceLockStatus __MINGW_NAME_AW(QueryServiceLockStatus) +#define RegisterServiceCtrlHandler __MINGW_NAME_AW(RegisterServiceCtrlHandler) +#define RegisterServiceCtrlHandlerEx __MINGW_NAME_AW(RegisterServiceCtrlHandlerEx) +#define StartServiceCtrlDispatcher __MINGW_NAME_AW(StartServiceCtrlDispatcher) +#define StartService __MINGW_NAME_AW(StartService) + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfigA(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword,LPCSTR lpDisplayName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfigW(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword,LPCWSTR lpDisplayName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) CloseServiceHandle(SC_HANDLE hSCObject); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ControlService(SC_HANDLE hService,DWORD dwControl,LPSERVICE_STATUS lpServiceStatus); + __declspec (dllimport) SC_HANDLE __attribute__((__stdcall__)) CreateServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPCSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword); + __declspec (dllimport) SC_HANDLE __attribute__((__stdcall__)) CreateServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPCWSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) DeleteService(SC_HANDLE hService); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDependentServicesA(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumDependentServicesW(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusA(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusW(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusExA(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCSTR pszGroupName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusExW(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCWSTR pszGroupName); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetServiceKeyNameA(SC_HANDLE hSCManager,LPCSTR lpDisplayName,LPSTR lpServiceName,LPDWORD lpcchBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetServiceKeyNameW(SC_HANDLE hSCManager,LPCWSTR lpDisplayName,LPWSTR lpServiceName,LPDWORD lpcchBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetServiceDisplayNameA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPSTR lpDisplayName,LPDWORD lpcchBuffer); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) GetServiceDisplayNameW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPWSTR lpDisplayName,LPDWORD lpcchBuffer); + __declspec (dllimport) SC_LOCK __attribute__((__stdcall__)) LockServiceDatabase(SC_HANDLE hSCManager); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) NotifyBootConfigStatus(WINBOOL BootAcceptable); + __declspec (dllimport) SC_HANDLE __attribute__((__stdcall__)) OpenSCManagerA(LPCSTR lpMachineName,LPCSTR lpDatabaseName,DWORD dwDesiredAccess); + __declspec (dllimport) SC_HANDLE __attribute__((__stdcall__)) OpenSCManagerW(LPCWSTR lpMachineName,LPCWSTR lpDatabaseName,DWORD dwDesiredAccess); + __declspec (dllimport) SC_HANDLE __attribute__((__stdcall__)) OpenServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,DWORD dwDesiredAccess); + __declspec (dllimport) SC_HANDLE __attribute__((__stdcall__)) OpenServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,DWORD dwDesiredAccess); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceConfigA(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGA lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceConfigW(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGW lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceLockStatusA(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceLockStatusW(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceStatus(SC_HANDLE hService,LPSERVICE_STATUS lpServiceStatus); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) QueryServiceStatusEx(SC_HANDLE hService,SC_STATUS_TYPE InfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded); + __declspec (dllimport) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerA(LPCSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc); + __declspec (dllimport) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc); + __declspec (dllimport) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerExA(LPCSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext); + __declspec (dllimport) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus,LPSERVICE_STATUS lpServiceStatus); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA *lpServiceStartTable); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) StartServiceCtrlDispatcherW(const SERVICE_TABLE_ENTRYW *lpServiceStartTable); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) StartServiceA(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCSTR *lpServiceArgVectors); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) StartServiceW(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCWSTR *lpServiceArgVectors); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) UnlockServiceDatabase(SC_LOCK ScLock); +typedef void( __attribute__((__stdcall__)) * PFN_SC_NOTIFY_CALLBACK ) ( + PVOID pParameter +); +typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSA { + DWORD dwReason; + LPSTR pszComment; + SERVICE_STATUS_PROCESS ServiceStatus; +} SERVICE_CONTROL_STATUS_REASON_PARAMSA, *PSERVICE_CONTROL_STATUS_REASON_PARAMSA; +typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSW { + DWORD dwReason; + LPWSTR pszComment; + SERVICE_STATUS_PROCESS ServiceStatus; +} SERVICE_CONTROL_STATUS_REASON_PARAMSW, *PSERVICE_CONTROL_STATUS_REASON_PARAMSW; +typedef SERVICE_CONTROL_STATUS_REASON_PARAMSA SERVICE_CONTROL_STATUS_REASON_PARAMS; +typedef PSERVICE_CONTROL_STATUS_REASON_PARAMSA PSERVICE_CONTROL_STATUS_REASON_PARAMS; +#define SERVICE_STOP_REASON_FLAG_CUSTOM 0x20000000 +#define SERVICE_STOP_REASON_FLAG_PLANNED 0x40000000 +#define SERVICE_STOP_REASON_FLAG_UNPLANNED 0x10000000 +#define SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000 +#define SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000 +#define SERVICE_STOP_REASON_MAJOR_NONE 0x00060000 +#define SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000 +#define SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000 +#define SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000 +#define SERVICE_STOP_REASON_MINOR_DISK 0x00000008 +#define SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a +#define SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b +#define SERVICE_STOP_REASON_MINOR_HUNG 0x00000006 +#define SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003 +#define SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002 +#define SERVICE_STOP_REASON_MINOR_MMC 0x00000016 +#define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011 +#define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009 +#define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001 +#define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c +#define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005 +#define SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010 +#define SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f +#define SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015 +#define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d +#define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013 +#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e +#define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007 +#define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004 +#define SERVICE_STOP_REASON_MINOR_WMI 0x00000012 +typedef struct _SERVICE_NOTIFYA { + DWORD dwVersion; + PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback; + PVOID pContext; + DWORD dwNotificationStatus; + SERVICE_STATUS_PROCESS ServiceStatus; + DWORD dwNotificationTriggered; + LPSTR pszServiceNames; +} SERVICE_NOTIFYA, *PSERVICE_NOTIFYA; +typedef struct _SERVICE_NOTIFYW { + DWORD dwVersion; + PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback; + PVOID pContext; + DWORD dwNotificationStatus; + SERVICE_STATUS_PROCESS ServiceStatus; + DWORD dwNotificationTriggered; + LPWSTR pszServiceNames; +} SERVICE_NOTIFYW, *PSERVICE_NOTIFYW; +typedef SERVICE_NOTIFYA SERVICE_NOTIFY; +typedef PSERVICE_NOTIFYA PSERVICE_NOTIFY; +#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3 +#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4 +#define SERVICE_CONFIG_SERVICE_SID_INFO 5 +#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6 +#define SERVICE_CONFIG_PRESHUTDOWN_INFO 7 +typedef struct _SERVICE_DELAYED_AUTO_START_INFO { + WINBOOL fDelayedAutostart; +} SERVICE_DELAYED_AUTO_START_INFO, *LPSERVICE_DELAYED_AUTO_START_INFO; +typedef struct _SERVICE_FAILURE_ACTIONS_FLAG { + WINBOOL fFailureActionsOnNonCrashFailures; +} SERVICE_FAILURE_ACTIONS_FLAG, *LPSERVICE_FAILURE_ACTIONS_FLAG; +typedef struct _SERVICE_PRESHUTDOWN_INFO { + DWORD dwPreshutdownTimeout; +} SERVICE_PRESHUTDOWN_INFO, *LPSERVICE_PRESHUTDOWN_INFO; +typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOA { + LPSTR pmszRequiredPrivileges; +} SERVICE_REQUIRED_PRIVILEGES_INFOA, *LPSERVICE_REQUIRED_PRIVILEGES_INFOA; +typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOW { + LPWSTR pmszRequiredPrivileges; +} SERVICE_REQUIRED_PRIVILEGES_INFOW, *LPSERVICE_REQUIRED_PRIVILEGES_INFOW; +typedef SERVICE_REQUIRED_PRIVILEGES_INFOA SERVICE_REQUIRED_PRIVILEGES_INFO; +#define SERVICE_SID_TYPE_NONE 0x00000000 +#define SERVICE_SID_TYPE_RESTRICTED 0x00000003 +#define SERVICE_SID_TYPE_UNRESTRICTED 0x00000001 +typedef struct _SERVICE_SID_INFO { + DWORD dwServiceSidType; +} SERVICE_SID_INFO, *LPSERVICE_SID_INFO; +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ControlServiceExA( + SC_HANDLE hService, + DWORD dwControl, + DWORD dwInfoLevel, + PVOID pControlParams +); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) ControlServiceExW( + SC_HANDLE hService, + DWORD dwControl, + DWORD dwInfoLevel, + PVOID pControlParams +); +#define ControlServiceEx __MINGW_NAME_AW(ControlServiceEx) +#define NotifyServiceStatusChange __MINGW_NAME_AW(NotifyServiceStatusChange) +DWORD __attribute__((__stdcall__)) NotifyServiceStatusChangeA( + SC_HANDLE hService, + DWORD dwNotifyMask, + PSERVICE_NOTIFYA pNotifyBuffer +); +DWORD __attribute__((__stdcall__)) NotifyServiceStatusChangeW( + SC_HANDLE hService, + DWORD dwNotifyMask, + PSERVICE_NOTIFYW pNotifyBuffer +); +#define _MCX_H_ +typedef struct _MODEMDEVCAPS { + DWORD dwActualSize; + DWORD dwRequiredSize; + DWORD dwDevSpecificOffset; + DWORD dwDevSpecificSize; + DWORD dwModemProviderVersion; + DWORD dwModemManufacturerOffset; + DWORD dwModemManufacturerSize; + DWORD dwModemModelOffset; + DWORD dwModemModelSize; + DWORD dwModemVersionOffset; + DWORD dwModemVersionSize; + DWORD dwDialOptions; + DWORD dwCallSetupFailTimer; + DWORD dwInactivityTimeout; + DWORD dwSpeakerVolume; + DWORD dwSpeakerMode; + DWORD dwModemOptions; + DWORD dwMaxDTERate; + DWORD dwMaxDCERate; + BYTE abVariablePortion[1]; +} MODEMDEVCAPS,*PMODEMDEVCAPS,*LPMODEMDEVCAPS; +typedef struct _MODEMSETTINGS { + DWORD dwActualSize; + DWORD dwRequiredSize; + DWORD dwDevSpecificOffset; + DWORD dwDevSpecificSize; + DWORD dwCallSetupFailTimer; + DWORD dwInactivityTimeout; + DWORD dwSpeakerVolume; + DWORD dwSpeakerMode; + DWORD dwPreferredModemOptions; + DWORD dwNegotiatedModemOptions; + DWORD dwNegotiatedDCERate; + BYTE abVariablePortion [1]; +} MODEMSETTINGS,*PMODEMSETTINGS,*LPMODEMSETTINGS; +#define DIALOPTION_BILLING 0x00000040 +#define DIALOPTION_QUIET 0x00000080 +#define DIALOPTION_DIALTONE 0x00000100 +#define MDMVOLFLAG_LOW 0x00000001 +#define MDMVOLFLAG_MEDIUM 0x00000002 +#define MDMVOLFLAG_HIGH 0x00000004 +#define MDMVOL_LOW 0x00000000 +#define MDMVOL_MEDIUM 0x00000001 +#define MDMVOL_HIGH 0x00000002 +#define MDMSPKRFLAG_OFF 0x00000001 +#define MDMSPKRFLAG_DIAL 0x00000002 +#define MDMSPKRFLAG_ON 0x00000004 +#define MDMSPKRFLAG_CALLSETUP 0x00000008 +#define MDMSPKR_OFF 0x00000000 +#define MDMSPKR_DIAL 0x00000001 +#define MDMSPKR_ON 0x00000002 +#define MDMSPKR_CALLSETUP 0x00000003 +#define MDM_COMPRESSION 0x00000001 +#define MDM_ERROR_CONTROL 0x00000002 +#define MDM_FORCED_EC 0x00000004 +#define MDM_CELLULAR 0x00000008 +#define MDM_FLOWCONTROL_HARD 0x00000010 +#define MDM_FLOWCONTROL_SOFT 0x00000020 +#define MDM_CCITT_OVERRIDE 0x00000040 +#define MDM_SPEED_ADJUST 0x00000080 +#define MDM_TONE_DIAL 0x00000100 +#define MDM_BLIND_DIAL 0x00000200 +#define MDM_V23_OVERRIDE 0x00000400 +#define MDM_DIAGNOSTICS 0x00000800 +#define MDM_MASK_BEARERMODE 0x0000f000 +#define MDM_SHIFT_BEARERMODE 12 +#define MDM_MASK_PROTOCOLID 0x000f0000 +#define MDM_SHIFT_PROTOCOLID 16 +#define MDM_MASK_PROTOCOLDATA 0x0ff00000 +#define MDM_SHIFT_PROTOCOLDATA 20 +#define MDM_MASK_PROTOCOLINFO (MDM_MASK_PROTOCOLID|MDM_MASK_PROTOCOLDATA) +#define MDM_SHIFT_PROTOCOLINFO MDM_SHIFT_PROTOCOLID +#define MDM_MASK_EXTENDEDINFO (MDM_MASK_BEARERMODE|MDM_MASK_PROTOCOLINFO) +#define MDM_SHIFT_EXTENDEDINFO MDM_SHIFT_BEARERMODE +#define MDM_GET_BEARERMODE(_dwOptions) (((_dwOptions)&MDM_MASK_BEARERMODE) >> MDM_SHIFT_BEARERMODE) +#define MDM_SET_BEARERMODE(_dwOptions,_bm) (((_dwOptions) &= ~MDM_MASK_BEARERMODE),((_dwOptions) |= (((_bm)<> MDM_SHIFT_PROTOCOLID) +#define MDM_SET_PROTOCOLID(_dwOptions,_prot) (((_dwOptions) &= ~MDM_MASK_PROTOCOLID),((_dwOptions) |= (((_prot)<> MDM_SHIFT_PROTOCOLDATA) +#define MDM_SET_PROTOCOLDATA(_dwOptions,_pd) (((_dwOptions) &= ~MDM_MASK_PROTOCOLDATA),((_dwOptions) |= (((_pd)<tv_sec || (tvp)->tv_usec) +#define timercmp(tvp,uvp,cmp) ((tvp)->tv_sec cmp (uvp)->tv_sec || ((tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)) +#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 +#define _BSDTYPES_DEFINED + +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +#undef u_long +typedef unsigned long u_long; +__extension__ +typedef unsigned long long u_int64; + +typedef struct in_addr { + union { + struct { u_char s_b1, s_b2, s_b3, s_b4; } S_un_b; + struct { u_short s_w1, s_w2; } S_un_w; + u_long S_addr; + } S_un; +} IN_ADDR, *PIN_ADDR, *LPIN_ADDR; +#define s_addr S_un.S_addr +#define s_host S_un.S_un_b.s_b2 +#define s_net S_un.S_un_b.s_b1 +#define s_imp S_un.S_un_w.s_w2 +#define s_impno S_un.S_un_b.s_b4 +#define s_lh S_un.S_un_b.s_b3 +#define ___WSA_SOCKET_TYPES_H +typedef UINT_PTR SOCKET; +#define INVALID_SOCKET (SOCKET)(~0) +#define SOCKET_ERROR (-1) +#define ___WSA_FD_TYPES_H +typedef struct fd_set +{ + u_int fd_count; + SOCKET fd_array[2048]; +} fd_set; +int __attribute__((__stdcall__)) __WSAFDIsSet(SOCKET,fd_set *); +#define FD_CLR(fd,set) do { u_int __i; for(__i = 0; __i < ((fd_set *)(set))->fd_count; __i++) { if (((fd_set *)(set))->fd_array[__i] == fd) { while (__i < ((fd_set *)(set))->fd_count - 1) { ((fd_set *)(set))->fd_array[__i] = ((fd_set *)(set))->fd_array[__i + 1]; __i++; } ((fd_set *)(set))->fd_count--; break; } } } while(0) +#define FD_ZERO(set) (((fd_set *)(set))->fd_count = 0) +#define FD_ISSET(fd,set) __WSAFDIsSet((SOCKET)(fd),(fd_set *)(set)) +#define FD_SET(fd,set) do { u_int __i; for(__i = 0; __i < ((fd_set *)(set))->fd_count; __i++) { if (((fd_set *)(set))->fd_array[__i] == (fd)) { break; } } if (__i == ((fd_set *)(set))->fd_count) { if (((fd_set *)(set))->fd_count < FD_SETSIZE) { ((fd_set *)(set))->fd_array[__i] = (fd); ((fd_set *)(set))->fd_count++; } } } while(0) +typedef struct fd_set FD_SET; +typedef struct fd_set *PFD_SET; +typedef struct fd_set *LPFD_SET; +#define _MINGW_IP_TYPES_H +#define h_addr h_addr_list[0] +struct hostent { + char *h_name; + char **h_aliases; + short h_addrtype; + short h_length; + char **h_addr_list; +}; +struct netent { + char *n_name; + char **n_aliases; + short n_addrtype; + u_long n_net; +}; +struct servent { + char *s_name; + char **s_aliases; + char *s_proto; + short s_port; +}; +struct protoent { + char *p_name; + char **p_aliases; + short p_proto; +}; +struct sockproto { + u_short sp_family; + u_short sp_protocol; +}; +struct linger { + u_short l_onoff; + u_short l_linger; +}; +struct sockaddr { + u_short sa_family; + char sa_data[14]; +}; +struct sockaddr_in { + short sin_family; + u_short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; +}; +typedef struct hostent HOSTENT; +typedef struct hostent *PHOSTENT; +typedef struct hostent *LPHOSTENT; +typedef struct servent SERVENT; +typedef struct servent *PSERVENT; +typedef struct servent *LPSERVENT; +typedef struct protoent PROTOENT; +typedef struct protoent *PPROTOENT; +typedef struct protoent *LPPROTOENT; +typedef struct sockaddr SOCKADDR; +typedef struct sockaddr *PSOCKADDR; +typedef struct sockaddr *LPSOCKADDR; +typedef struct sockaddr_in SOCKADDR_IN; +typedef struct sockaddr_in *PSOCKADDR_IN; +typedef struct sockaddr_in *LPSOCKADDR_IN; +typedef struct linger LINGER; +typedef struct linger *PLINGER; +typedef struct linger *LPLINGER; +typedef struct timeval TIMEVAL; +typedef struct timeval *PTIMEVAL; +typedef struct timeval *LPTIMEVAL; +#define __MINGW_WSADATA_H +#define WSADESCRIPTION_LEN 256 +#define WSASYS_STATUS_LEN 128 +typedef struct WSAData { + WORD wVersion; + WORD wHighVersion; + unsigned short iMaxSockets; + unsigned short iMaxUdpDg; + char *lpVendorInfo; + char szDescription[256 +1]; + char szSystemStatus[128 +1]; +} WSADATA, *LPWSADATA; +#define _WS2DEF_ +typedef enum _SCOPE_LEVEL { + ScopeLevelInterface = 1, + ScopeLevelLink = 2, + ScopeLevelSubnet = 3, + ScopeLevelAdmin = 4, + ScopeLevelSite = 5, + ScopeLevelOrganization = 8, + ScopeLevelGlobal = 14, + ScopeLevelCount = 16 +} SCOPE_LEVEL; +typedef struct _SCOPE_ID { + __extension__ union { + __extension__ struct { + ULONG Zone : 28; + ULONG Level : 4; + }; + ULONG Value; + }; +} SCOPE_ID, *PSCOPE_ID; +#define IOCPARM_MASK 0x7f +#define IOC_VOID 0x20000000 +#define IOC_OUT 0x40000000 +#define IOC_IN 0x80000000 +#define IOC_INOUT (IOC_IN|IOC_OUT) +#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) +#define _IOR(x,y,t) (IOC_OUT|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define _IOW(x,y,t) (IOC_IN|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define FIONREAD _IOR('f',127,u_long) +#define FIONBIO _IOW('f',126,u_long) +#define FIOASYNC _IOW('f',125,u_long) +#define SIOCSHIWAT _IOW('s',0,u_long) +#define SIOCGHIWAT _IOR('s',1,u_long) +#define SIOCSLOWAT _IOW('s',2,u_long) +#define SIOCGLOWAT _IOR('s',3,u_long) +#define SIOCATMARK _IOR('s',7,u_long) +#define IPPROTO_IP 0 +#define IPPROTO_HOPOPTS 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_IGMP 2 +#define IPPROTO_GGP 3 +#define IPPROTO_IPV4 4 +#define IPPROTO_ST 5 +#define IPPROTO_TCP 6 +#define IPPROTO_CBT 7 +#define IPPROTO_EGP 8 +#define IPPROTO_IGP 9 +#define IPPROTO_PUP 12 +#define IPPROTO_UDP 17 +#define IPPROTO_IDP 22 +#define IPPROTO_RDP 27 +#define IPPROTO_IPV6 41 +#define IPPROTO_ROUTING 43 +#define IPPROTO_FRAGMENT 44 +#define IPPROTO_ESP 50 +#define IPPROTO_AH 51 +#define IPPROTO_ICMPV6 58 +#define IPPROTO_NONE 59 +#define IPPROTO_DSTOPTS 60 +#define IPPROTO_ND 77 +#define IPPROTO_ICLFXBM 78 +#define IPPROTO_PIM 103 +#define IPPROTO_PGM 113 +#define IPPROTO_L2TP 115 +#define IPPROTO_SCTP 132 +#define IPPROTO_RAW 255 +#define IPPROTO_MAX 256 +#define IPPORT_ECHO 7 +#define IPPORT_DISCARD 9 +#define IPPORT_SYSTAT 11 +#define IPPORT_DAYTIME 13 +#define IPPORT_NETSTAT 15 +#define IPPORT_FTP 21 +#define IPPORT_TELNET 23 +#define IPPORT_SMTP 25 +#define IPPORT_TIMESERVER 37 +#define IPPORT_NAMESERVER 42 +#define IPPORT_WHOIS 43 +#define IPPORT_MTP 57 +#define IPPORT_TFTP 69 +#define IPPORT_RJE 77 +#define IPPORT_FINGER 79 +#define IPPORT_TTYLINK 87 +#define IPPORT_SUPDUP 95 +#define IPPORT_EXECSERVER 512 +#define IPPORT_LOGINSERVER 513 +#define IPPORT_CMDSERVER 514 +#define IPPORT_EFSSERVER 520 +#define IPPORT_BIFFUDP 512 +#define IPPORT_WHOSERVER 513 +#define IPPORT_ROUTESERVER 520 +#define IPPORT_RESERVED 1024 +#define IMPLINK_IP 155 +#define IMPLINK_LOWEXPER 156 +#define IMPLINK_HIGHEXPER 158 +#define IN_CLASSA(i) (((__LONG32)(i) & 0x80000000)==0) +#define IN_CLASSA_NET 0xff000000 +#define IN_CLASSA_NSHIFT 24 +#define IN_CLASSA_HOST 0x00ffffff +#define IN_CLASSA_MAX 128 +#define IN_CLASSB(i) (((__LONG32)(i) & 0xc0000000)==0x80000000) +#define IN_CLASSB_NET 0xffff0000 +#define IN_CLASSB_NSHIFT 16 +#define IN_CLASSB_HOST 0x0000ffff +#define IN_CLASSB_MAX 65536 +#define IN_CLASSC(i) (((__LONG32)(i) & 0xe0000000)==0xc0000000) +#define IN_CLASSC_NET 0xffffff00 +#define IN_CLASSC_NSHIFT 8 +#define IN_CLASSC_HOST 0x000000ff +#define IN_CLASSD(i) (((__LONG32)(i) & 0xf0000000)==0xe0000000) +#define IN_CLASSD_NET 0xf0000000 +#define IN_CLASSD_NSHIFT 28 +#define IN_CLASSD_HOST 0x0fffffff +#define IN_MULTICAST(i) IN_CLASSD(i) +#define INADDR_ANY (u_long)0x00000000 +#define INADDR_LOOPBACK 0x7f000001 +#define INADDR_BROADCAST (u_long)0xffffffff +#define INADDR_NONE 0xffffffff +#define ADDR_ANY INADDR_ANY +#define FROM_PROTOCOL_INFO (-1) +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 +#define SOCK_RDM 4 +#define SOCK_SEQPACKET 5 +#define SO_DEBUG 0x0001 +#define SO_ACCEPTCONN 0x0002 +#define SO_REUSEADDR 0x0004 +#define SO_KEEPALIVE 0x0008 +#define SO_DONTROUTE 0x0010 +#define SO_BROADCAST 0x0020 +#define SO_USELOOPBACK 0x0040 +#define SO_LINGER 0x0080 +#define SO_OOBINLINE 0x0100 +#define SO_DONTLINGER (int)(~SO_LINGER) +#define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR)) +#define SO_SNDBUF 0x1001 +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_SNDTIMEO 0x1005 +#define SO_RCVTIMEO 0x1006 +#define SO_ERROR 0x1007 +#define SO_TYPE 0x1008 +#define SO_GROUP_ID 0x2001 +#define SO_GROUP_PRIORITY 0x2002 +#define SO_MAX_MSG_SIZE 0x2003 +#define SO_PROTOCOL_INFOA 0x2004 +#define SO_PROTOCOL_INFOW 0x2005 +#define SO_PROTOCOL_INFO __MINGW_NAME_AW(SO_PROTOCOL_INFO) +#define PVD_CONFIG 0x3001 +#define SO_CONDITIONAL_ACCEPT 0x3002 +#define TCP_NODELAY 0x0001 +#define AF_UNSPEC 0 +#define AF_UNIX 1 +#define AF_INET 2 +#define AF_IMPLINK 3 +#define AF_PUP 4 +#define AF_CHAOS 5 +#define AF_NS 6 +#define AF_IPX AF_NS +#define AF_ISO 7 +#define AF_OSI AF_ISO +#define AF_ECMA 8 +#define AF_DATAKIT 9 +#define AF_CCITT 10 +#define AF_SNA 11 +#define AF_DECnet 12 +#define AF_DLI 13 +#define AF_LAT 14 +#define AF_HYLINK 15 +#define AF_APPLETALK 16 +#define AF_NETBIOS 17 +#define AF_VOICEVIEW 18 +#define AF_FIREFOX 19 +#define AF_UNKNOWN1 20 +#define AF_BAN 21 +#define AF_ATM 22 +#define AF_INET6 23 +#define AF_CLUSTER 24 +#define AF_12844 25 +#define AF_IRDA 26 +#define AF_NETDES 28 +#define AF_TCNPROCESS 29 +#define AF_TCNMESSAGE 30 +#define AF_ICLFXBM 31 +#define AF_BTH 32 +#define AF_MAX 33 +#define _SS_MAXSIZE 128 +#define _SS_ALIGNSIZE (8) +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short)) +#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) + struct sockaddr_storage { + short ss_family; + char __ss_pad1[((8) - sizeof (short))]; + __extension__ long long __ss_align; + char __ss_pad2[(128 - (sizeof (short) + ((8) - sizeof (short)) + (8)))]; + }; +#define PF_UNSPEC AF_UNSPEC +#define PF_UNIX AF_UNIX +#define PF_INET AF_INET +#define PF_IMPLINK AF_IMPLINK +#define PF_PUP AF_PUP +#define PF_CHAOS AF_CHAOS +#define PF_NS AF_NS +#define PF_IPX AF_IPX +#define PF_ISO AF_ISO +#define PF_OSI AF_OSI +#define PF_ECMA AF_ECMA +#define PF_DATAKIT AF_DATAKIT +#define PF_CCITT AF_CCITT +#define PF_SNA AF_SNA +#define PF_DECnet AF_DECnet +#define PF_DLI AF_DLI +#define PF_LAT AF_LAT +#define PF_HYLINK AF_HYLINK +#define PF_APPLETALK AF_APPLETALK +#define PF_VOICEVIEW AF_VOICEVIEW +#define PF_FIREFOX AF_FIREFOX +#define PF_UNKNOWN1 AF_UNKNOWN1 +#define PF_BAN AF_BAN +#define PF_ATM AF_ATM +#define PF_INET6 AF_INET6 +#define PF_BTH AF_BTH +#define PF_MAX AF_MAX +#define SOL_SOCKET 0xffff +#define SOMAXCONN 0x7fffffff +#define MSG_OOB 0x1 +#define MSG_PEEK 0x2 +#define MSG_DONTROUTE 0x4 +#define MSG_WAITALL 0x8 +#define MSG_PARTIAL 0x8000 +#define MSG_INTERRUPT 0x10 +#define MSG_MAXIOVLEN 16 +#define MAXGETHOSTSTRUCT 1024 +#define FD_READ_BIT 0 +#define FD_READ (1 << FD_READ_BIT) +#define FD_WRITE_BIT 1 +#define FD_WRITE (1 << FD_WRITE_BIT) +#define FD_OOB_BIT 2 +#define FD_OOB (1 << FD_OOB_BIT) +#define FD_ACCEPT_BIT 3 +#define FD_ACCEPT (1 << FD_ACCEPT_BIT) +#define FD_CONNECT_BIT 4 +#define FD_CONNECT (1 << FD_CONNECT_BIT) +#define FD_CLOSE_BIT 5 +#define FD_CLOSE (1 << FD_CLOSE_BIT) +#define FD_QOS_BIT 6 +#define FD_QOS (1 << FD_QOS_BIT) +#define FD_GROUP_QOS_BIT 7 +#define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT) +#define FD_ROUTING_INTERFACE_CHANGE_BIT 8 +#define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT) +#define FD_ADDRESS_LIST_CHANGE_BIT 9 +#define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT) +#define FD_MAX_EVENTS 10 +#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1) +#define __WSA_ERR_MACROS_DEFINED +#define h_errno WSAGetLastError() +#define HOST_NOT_FOUND WSAHOST_NOT_FOUND +#define TRY_AGAIN WSATRY_AGAIN +#define NO_RECOVERY WSANO_RECOVERY +#define NO_DATA WSANO_DATA +#define WSANO_ADDRESS WSANO_DATA +#define NO_ADDRESS WSANO_ADDRESS + +#define WSAEVENT HANDLE +#define LPWSAEVENT LPHANDLE +#define WSAOVERLAPPED OVERLAPPED + typedef struct _OVERLAPPED *LPWSAOVERLAPPED; +#define WSA_IO_PENDING (ERROR_IO_PENDING) +#define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE) +#define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE) +#define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER) +#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY) +#define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED) +#define WSA_INVALID_EVENT ((WSAEVENT)NULL) +#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS) +#define WSA_WAIT_FAILED (WAIT_FAILED) +#define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0) +#define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION) +#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT) +#define WSA_INFINITE (INFINITE) + typedef struct _WSABUF { + u_long len; + char *buf; + } WSABUF,*LPWSABUF; +#define __QOS_H_ +typedef ULONG SERVICETYPE; +#define SERVICETYPE_NOTRAFFIC 0x00000000 +#define SERVICETYPE_BESTEFFORT 0x00000001 +#define SERVICETYPE_CONTROLLEDLOAD 0x00000002 +#define SERVICETYPE_GUARANTEED 0x00000003 +#define SERVICETYPE_NETWORK_UNAVAILABLE 0x00000004 +#define SERVICETYPE_GENERAL_INFORMATION 0x00000005 +#define SERVICETYPE_NOCHANGE 0x00000006 +#define SERVICETYPE_NONCONFORMING 0x00000009 +#define SERVICETYPE_NETWORK_CONTROL 0x0000000A +#define SERVICETYPE_QUALITATIVE 0x0000000D +#define SERVICE_BESTEFFORT 0x80010000 +#define SERVICE_CONTROLLEDLOAD 0x80020000 +#define SERVICE_GUARANTEED 0x80040000 +#define SERVICE_QUALITATIVE 0x80200000 +#define SERVICE_NO_TRAFFIC_CONTROL 0x81000000 +#define SERVICE_NO_QOS_SIGNALING 0x40000000 + typedef struct _flowspec { + ULONG TokenRate; + ULONG TokenBucketSize; + ULONG PeakBandwidth; + ULONG Latency; + ULONG DelayVariation; + SERVICETYPE ServiceType; + ULONG MaxSduSize; + ULONG MinimumPolicedSize; + } FLOWSPEC,*PFLOWSPEC,*LPFLOWSPEC; +#define QOS_NOT_SPECIFIED 0xFFFFFFFF +#define POSITIVE_INFINITY_RATE 0xFFFFFFFE + typedef struct _QOS_OBJECT_HDR { + ULONG ObjectType; + ULONG ObjectLength; + } QOS_OBJECT_HDR, *LPQOS_OBJECT_HDR; +#define QOS_GENERAL_ID_BASE 2000 +#define QOS_OBJECT_END_OF_LIST (0x00000001 + QOS_GENERAL_ID_BASE) +#define QOS_OBJECT_SD_MODE (0x00000002 + QOS_GENERAL_ID_BASE) +#define QOS_OBJECT_SHAPING_RATE (0x00000003 + QOS_GENERAL_ID_BASE) +#define QOS_OBJECT_DESTADDR (0x00000004 + QOS_GENERAL_ID_BASE) + typedef struct _QOS_SD_MODE { + QOS_OBJECT_HDR ObjectHdr; + ULONG ShapeDiscardMode; + } QOS_SD_MODE, *LPQOS_SD_MODE; +#define TC_NONCONF_BORROW 0 +#define TC_NONCONF_SHAPE 1 +#define TC_NONCONF_DISCARD 2 +#define TC_NONCONF_BORROW_PLUS 3 + typedef struct _QOS_SHAPING_RATE { + QOS_OBJECT_HDR ObjectHdr; + ULONG ShapingRate; + } QOS_SHAPING_RATE, *LPQOS_SHAPING_RATE; + + typedef struct _QualityOfService { + FLOWSPEC SendingFlowspec; + FLOWSPEC ReceivingFlowspec; + WSABUF ProviderSpecific; + } QOS,*LPQOS; +#define CF_ACCEPT 0x0000 +#define CF_REJECT 0x0001 +#define CF_DEFER 0x0002 +#define SD_RECEIVE 0x00 +#define SD_SEND 0x01 +#define SD_BOTH 0x02 +typedef unsigned int GROUP; +#define SG_UNCONSTRAINED_GROUP 0x01 +#define SG_CONSTRAINED_GROUP 0x02 + typedef struct _WSANETWORKEVENTS { + long lNetworkEvents; + int iErrorCode[10]; + } WSANETWORKEVENTS,*LPWSANETWORKEVENTS; +#define MAX_PROTOCOL_CHAIN 7 +#define BASE_PROTOCOL 1 +#define LAYERED_PROTOCOL 0 + typedef struct _WSAPROTOCOLCHAIN { + int ChainLen; + DWORD ChainEntries[7]; + } WSAPROTOCOLCHAIN,*LPWSAPROTOCOLCHAIN; +#define WSAPROTOCOL_LEN 255 + typedef struct _WSAPROTOCOL_INFOA { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + CHAR szProtocol[255 +1]; + } WSAPROTOCOL_INFOA,*LPWSAPROTOCOL_INFOA; + typedef struct _WSAPROTOCOL_INFOW { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + WCHAR szProtocol[255 +1]; + } WSAPROTOCOL_INFOW,*LPWSAPROTOCOL_INFOW; + typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO; + typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO; +#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001 +#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002 +#define PFL_HIDDEN 0x00000004 +#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008 +#define PFL_NETWORKDIRECT_PROVIDER 0x00000010 +#define XP1_CONNECTIONLESS 0x00000001 +#define XP1_GUARANTEED_DELIVERY 0x00000002 +#define XP1_GUARANTEED_ORDER 0x00000004 +#define XP1_MESSAGE_ORIENTED 0x00000008 +#define XP1_PSEUDO_STREAM 0x00000010 +#define XP1_GRACEFUL_CLOSE 0x00000020 +#define XP1_EXPEDITED_DATA 0x00000040 +#define XP1_CONNECT_DATA 0x00000080 +#define XP1_DISCONNECT_DATA 0x00000100 +#define XP1_SUPPORT_BROADCAST 0x00000200 +#define XP1_SUPPORT_MULTIPOINT 0x00000400 +#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800 +#define XP1_MULTIPOINT_DATA_PLANE 0x00001000 +#define XP1_QOS_SUPPORTED 0x00002000 +#define XP1_INTERRUPT 0x00004000 +#define XP1_UNI_SEND 0x00008000 +#define XP1_UNI_RECV 0x00010000 +#define XP1_IFS_HANDLES 0x00020000 +#define XP1_PARTIAL_MESSAGE 0x00040000 +#define XP1_SAN_SUPPORT_SDP 0x00080000 +#define BIGENDIAN 0x0000 +#define LITTLEENDIAN 0x0001 +#define SECURITY_PROTOCOL_NONE 0x0000 +#define JL_SENDER_ONLY 0x01 +#define JL_RECEIVER_ONLY 0x02 +#define JL_BOTH 0x04 +#define WSA_FLAG_OVERLAPPED 0x01 +#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02 +#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04 +#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08 +#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10 +#define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40 +#define WSA_FLAG_NO_HANDLE_INHERIT 0x80 +#define WSA_FLAG_REGISTERED_IO 0x100 +#define IOC_UNIX 0x00000000 +#define IOC_WS2 0x08000000 +#define IOC_PROTOCOL 0x10000000 +#define IOC_VENDOR 0x18000000 +#define _WSAIO(x,y) (IOC_VOID|(x)|(y)) +#define _WSAIOR(x,y) (IOC_OUT|(x)|(y)) +#define _WSAIOW(x,y) (IOC_IN|(x)|(y)) +#define _WSAIORW(x,y) (IOC_INOUT|(x)|(y)) +#define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1) +#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2) +#define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3) +#define SIO_FLUSH _WSAIO(IOC_WS2,4) +#define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5) +#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6) +#define SIO_GET_QOS _WSAIORW(IOC_WS2,7) +#define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8) +#define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9) +#define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10) +#define SIO_SET_QOS _WSAIOW(IOC_WS2,11) +#define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12) +#define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13) +#define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20) +#define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21) +#define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22) +#define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23) +#define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24) +#define SIO_ADDRESS_LIST_SORT _WSAIORW(IOC_WS2,25) +#define SIO_RESERVED_1 _WSAIOW(IOC_WS2,26) +#define SIO_RESERVED_2 _WSAIOW(IOC_WS2,33) + typedef int (__attribute__((__stdcall__)) *LPCONDITIONPROC)(LPWSABUF lpCallerId,LPWSABUF lpCallerData,LPQOS lpSQOS,LPQOS lpGQOS,LPWSABUF lpCalleeId,LPWSABUF lpCalleeData,GROUP *g,DWORD_PTR dwCallbackData); + typedef void (__attribute__((__stdcall__)) *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwError,DWORD cbTransferred,LPWSAOVERLAPPED lpOverlapped,DWORD dwFlags); +#define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25) + typedef enum _WSACOMPLETIONTYPE { + NSP_NOTIFY_IMMEDIATELY = 0, + NSP_NOTIFY_HWND, + NSP_NOTIFY_EVENT, + NSP_NOTIFY_PORT, + NSP_NOTIFY_APC + } WSACOMPLETIONTYPE,*PWSACOMPLETIONTYPE,*LPWSACOMPLETIONTYPE; + typedef struct _WSACOMPLETION { + WSACOMPLETIONTYPE Type; + union { + struct { + HWND hWnd; + UINT uMsg; + WPARAM context; + } WindowMessage; + struct { + LPWSAOVERLAPPED lpOverlapped; + } Event; + struct { + LPWSAOVERLAPPED lpOverlapped; + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc; + } Apc; + struct { + LPWSAOVERLAPPED lpOverlapped; + HANDLE hPort; + ULONG_PTR Key; + } Port; + } Parameters; + } WSACOMPLETION,*PWSACOMPLETION,*LPWSACOMPLETION; +#define TH_NETDEV 0x00000001 +#define TH_TAPI 0x00000002 + typedef struct sockaddr_storage SOCKADDR_STORAGE; + typedef struct sockaddr_storage *PSOCKADDR_STORAGE; + typedef struct sockaddr_storage *LPSOCKADDR_STORAGE; + typedef u_short ADDRESS_FAMILY; +#define SERVICE_MULTIPLE (0x00000001) +#define NS_ALL (0) +#define NS_SAP (1) +#define NS_NDS (2) +#define NS_PEER_BROWSE (3) +#define NS_SLP (5) +#define NS_DHCP (6) +#define NS_TCPIP_LOCAL (10) +#define NS_TCPIP_HOSTS (11) +#define NS_DNS (12) +#define NS_NETBT (13) +#define NS_WINS (14) +#define NS_NLA (15) +#define NS_BTH (16) +#define NS_NBP (20) +#define NS_MS (30) +#define NS_STDA (31) +#define NS_NTDS (32) +#define NS_EMAIL (37) +#define NS_PNRPNAME (38) +#define NS_PNRPCLOUD (39) +#define NS_X500 (40) +#define NS_NIS (41) +#define NS_NISPLUS (42) +#define NS_WRQ (50) +#define NS_NETDES (60) +#define RES_UNUSED_1 (0x00000001) +#define RES_FLUSH_CACHE (0x00000002) +#define RES_SERVICE (0x00000004) +#define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket" +#define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket" +#define SERVICE_TYPE_VALUE_SAPIDA "SapId" +#define SERVICE_TYPE_VALUE_SAPIDW L"SapId" +#define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort" +#define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort" +#define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort" +#define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort" +#define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId" +#define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId" +#define SERVICE_TYPE_VALUE_SAPID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_SAPID) +#define SERVICE_TYPE_VALUE_TCPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_TCPPORT) +#define SERVICE_TYPE_VALUE_UDPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_UDPPORT) +#define SERVICE_TYPE_VALUE_OBJECTID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_OBJECTID) +#define __CSADDR_DEFINED__ + typedef struct _SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; + } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS; + typedef struct _CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; + } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO; + typedef struct _SOCKET_ADDRESS_LIST { + INT iAddressCount; + SOCKET_ADDRESS Address[1]; + } SOCKET_ADDRESS_LIST,*PSOCKET_ADDRESS_LIST,*LPSOCKET_ADDRESS_LIST; + typedef struct _AFPROTOCOLS { + INT iAddressFamily; + INT iProtocol; + } AFPROTOCOLS,*PAFPROTOCOLS,*LPAFPROTOCOLS; + typedef enum _WSAEcomparator { + COMP_EQUAL = 0, + COMP_NOTLESS + } WSAECOMPARATOR,*PWSAECOMPARATOR,*LPWSAECOMPARATOR; + typedef struct _WSAVersion { + DWORD dwVersion; + WSAECOMPARATOR ecHow; + } WSAVERSION,*PWSAVERSION,*LPWSAVERSION; + typedef struct _WSAQuerySetA { + DWORD dwSize; + LPSTR lpszServiceInstanceName; + LPGUID lpServiceClassId; + LPWSAVERSION lpVersion; + LPSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; + } WSAQUERYSETA,*PWSAQUERYSETA,*LPWSAQUERYSETA; + typedef struct _WSAQuerySetW { + DWORD dwSize; + LPWSTR lpszServiceInstanceName; + LPGUID lpServiceClassId; + LPWSAVERSION lpVersion; + LPWSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPWSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPWSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; + } WSAQUERYSETW,*PWSAQUERYSETW,*LPWSAQUERYSETW; + typedef WSAQUERYSETA WSAQUERYSET; + typedef PWSAQUERYSETA PWSAQUERYSET; + typedef LPWSAQUERYSETA LPWSAQUERYSET; +#define LUP_DEEP 0x0001 +#define LUP_CONTAINERS 0x0002 +#define LUP_NOCONTAINERS 0x0004 +#define LUP_NEAREST 0x0008 +#define LUP_RETURN_NAME 0x0010 +#define LUP_RETURN_TYPE 0x0020 +#define LUP_RETURN_VERSION 0x0040 +#define LUP_RETURN_COMMENT 0x0080 +#define LUP_RETURN_ADDR 0x0100 +#define LUP_RETURN_BLOB 0x0200 +#define LUP_RETURN_ALIASES 0x0400 +#define LUP_RETURN_QUERY_STRING 0x0800 +#define LUP_RETURN_ALL 0x0FF0 +#define LUP_RES_SERVICE 0x8000 +#define LUP_FLUSHCACHE 0x1000 +#define LUP_FLUSHPREVIOUS 0x2000 +#define LUP_NON_AUTHORITATIVE 0x4000 +#define LUP_SECURE 0x8000 +#define LUP_RETURN_PREFERRED_NAMES 0x10000 +#define LUP_DNS_ONLY 0x20000 +#define LUP_ADDRCONFIG 0x100000 +#define LUP_DUAL_ADDR 0x200000 +#define LUP_FILESERVER 0x400000 +#define LUP_DISABLE_IDN_ENCODING 0x00800000 +#define LUP_API_ANSI 0x01000000 +#define LUP_RESOLUTION_HANDLE 0x80000000 +#define LUP_RES_RESERVICE 0x8000 +#define RESULT_IS_ALIAS 0x0001 +#define RESULT_IS_ADDED 0x0010 +#define RESULT_IS_CHANGED 0x0020 +#define RESULT_IS_DELETED 0x0040 + typedef enum _WSAESETSERVICEOP { + RNRSERVICE_REGISTER = 0, + RNRSERVICE_DEREGISTER, + RNRSERVICE_DELETE + } WSAESETSERVICEOP,*PWSAESETSERVICEOP,*LPWSAESETSERVICEOP; + typedef struct _WSANSClassInfoA { + LPSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; + } WSANSCLASSINFOA,*PWSANSCLASSINFOA,*LPWSANSCLASSINFOA; + typedef struct _WSANSClassInfoW { + LPWSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; + } WSANSCLASSINFOW,*PWSANSCLASSINFOW,*LPWSANSCLASSINFOW; + typedef WSANSCLASSINFOA WSANSCLASSINFO; + typedef PWSANSCLASSINFOA PWSANSCLASSINFO; + typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO; + typedef struct _WSAServiceClassInfoA { + LPGUID lpServiceClassId; + LPSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOA lpClassInfos; + } WSASERVICECLASSINFOA,*PWSASERVICECLASSINFOA,*LPWSASERVICECLASSINFOA; + typedef struct _WSAServiceClassInfoW { + LPGUID lpServiceClassId; + LPWSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOW lpClassInfos; + } WSASERVICECLASSINFOW,*PWSASERVICECLASSINFOW,*LPWSASERVICECLASSINFOW; + typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO; + typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO; + typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO; + typedef struct _WSANAMESPACE_INFOA { + GUID NSProviderId; + DWORD dwNameSpace; + WINBOOL fActive; + DWORD dwVersion; + LPSTR lpszIdentifier; + } WSANAMESPACE_INFOA,*PWSANAMESPACE_INFOA,*LPWSANAMESPACE_INFOA; + typedef struct _WSANAMESPACE_INFOW { + GUID NSProviderId; + DWORD dwNameSpace; + WINBOOL fActive; + DWORD dwVersion; + LPWSTR lpszIdentifier; + } WSANAMESPACE_INFOW,*PWSANAMESPACE_INFOW,*LPWSANAMESPACE_INFOW; + typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO; + typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO; + typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO; + typedef struct _WSAMSG { + LPSOCKADDR name; + INT namelen; + LPWSABUF lpBuffers; + DWORD dwBufferCount; + WSABUF Control; + DWORD dwFlags; + } WSAMSG,*PWSAMSG,*LPWSAMSG; +#define WSADuplicateSocket __MINGW_NAME_AW(WSADuplicateSocket) +#define WSAEnumProtocols __MINGW_NAME_AW(WSAEnumProtocols) +#define WSAAddressToString __MINGW_NAME_AW(WSAAddressToString) +#define WSASocket __MINGW_NAME_AW(WSASocket) +#define WSAStringToAddress __MINGW_NAME_AW(WSAStringToAddress) +#define WSALookupServiceBegin __MINGW_NAME_AW(WSALookupServiceBegin) +#define WSALookupServiceNext __MINGW_NAME_AW(WSALookupServiceNext) +#define WSAInstallServiceClass __MINGW_NAME_AW(WSAInstallServiceClass) +#define WSAGetServiceClassInfo __MINGW_NAME_AW(WSAGetServiceClassInfo) +#define WSAEnumNameSpaceProviders __MINGW_NAME_AW(WSAEnumNameSpaceProviders) +#define WSAGetServiceClassNameByClassId __MINGW_NAME_AW(WSAGetServiceClassNameByClassId) +#define WSASetService __MINGW_NAME_AW(WSASetService) + __declspec (dllimport) SOCKET __attribute__((__stdcall__)) accept(SOCKET s,struct sockaddr *addr,int *addrlen); + __declspec (dllimport) int __attribute__((__stdcall__)) bind(SOCKET s,const struct sockaddr *name,int namelen); + __declspec (dllimport) int __attribute__((__stdcall__)) closesocket(SOCKET s); + __declspec (dllimport) int __attribute__((__stdcall__)) connect(SOCKET s,const struct sockaddr *name,int namelen); + __declspec (dllimport) int __attribute__((__stdcall__)) ioctlsocket(SOCKET s,long cmd,u_long *argp); + __declspec (dllimport) int __attribute__((__stdcall__)) getpeername(SOCKET s,struct sockaddr *name,int *namelen); + __declspec (dllimport) int __attribute__((__stdcall__)) getsockname(SOCKET s,struct sockaddr *name,int *namelen); + __declspec (dllimport) int __attribute__((__stdcall__)) getsockopt(SOCKET s,int level,int optname,char *optval,int *optlen); + __declspec (dllimport) u_long __attribute__((__stdcall__)) htonl(u_long hostlong); + __declspec (dllimport) u_short __attribute__((__stdcall__)) htons(u_short hostshort); + __declspec (dllimport) unsigned long __attribute__((__stdcall__)) inet_addr(const char *cp); + __declspec (dllimport) char *__attribute__((__stdcall__)) inet_ntoa(struct in_addr in); + __declspec (dllimport) int __attribute__((__stdcall__)) listen(SOCKET s,int backlog); + __declspec (dllimport) u_long __attribute__((__stdcall__)) ntohl(u_long netlong); + __declspec (dllimport) u_short __attribute__((__stdcall__)) ntohs(u_short netshort); + __declspec (dllimport) int __attribute__((__stdcall__)) recv(SOCKET s,char *buf,int len,int flags); + __declspec (dllimport) int __attribute__((__stdcall__)) recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen); + __declspec (dllimport) int __attribute__((__stdcall__)) select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const TIMEVAL *timeout); + __declspec (dllimport) int __attribute__((__stdcall__)) send(SOCKET s,const char *buf,int len,int flags); + __declspec (dllimport) int __attribute__((__stdcall__)) sendto(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen); + __declspec (dllimport) int __attribute__((__stdcall__)) setsockopt(SOCKET s,int level,int optname,const char *optval,int optlen); + __declspec (dllimport) int __attribute__((__stdcall__)) shutdown(SOCKET s,int how); + __declspec (dllimport) SOCKET __attribute__((__stdcall__)) socket(int af,int type,int protocol); + __declspec (dllimport) struct hostent *__attribute__((__stdcall__)) gethostbyaddr(const char *addr,int len,int type); + __declspec (dllimport) struct hostent *__attribute__((__stdcall__)) gethostbyname(const char *name); + __declspec (dllimport) int __attribute__((__stdcall__)) gethostname(char *name,int namelen); + __declspec (dllimport) int __attribute__((__stdcall__)) GetHostNameW(PWSTR name, int namelen); + __declspec (dllimport) struct servent *__attribute__((__stdcall__)) getservbyport(int port,const char *proto); + __declspec (dllimport) struct servent *__attribute__((__stdcall__)) getservbyname(const char *name,const char *proto); + __declspec (dllimport) struct protoent *__attribute__((__stdcall__)) getprotobynumber(int number); + __declspec (dllimport) struct protoent *__attribute__((__stdcall__)) getprotobyname(const char *name); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData); + __declspec (dllimport) int __attribute__((__stdcall__)) WSACleanup(void); + __declspec (dllimport) void __attribute__((__stdcall__)) WSASetLastError(int iError); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAGetLastError(void); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSAIsBlocking(void); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAUnhookBlockingHook(void); + __declspec (dllimport) FARPROC __attribute__((__stdcall__)) WSASetBlockingHook(FARPROC lpBlockFunc); + __declspec (dllimport) int __attribute__((__stdcall__)) WSACancelBlockingCall(void); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) WSAAsyncGetServByName(HWND hWnd,u_int wMsg,const char *name,const char *proto,char *buf,int buflen); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) WSAAsyncGetServByPort(HWND hWnd,u_int wMsg,int port,const char *proto,char *buf,int buflen); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) WSAAsyncGetProtoByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) WSAAsyncGetProtoByNumber(HWND hWnd,u_int wMsg,int number,char *buf,int buflen); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) WSAAsyncGetHostByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) WSAAsyncGetHostByAddr(HWND hWnd,u_int wMsg,const char *addr,int len,int type,char *buf,int buflen); + __declspec (dllimport) int __attribute__((__stdcall__)) WSACancelAsyncRequest(HANDLE hAsyncTaskHandle); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAAsyncSelect(SOCKET s,HWND hWnd,u_int wMsg,long lEvent); + __declspec (dllimport) SOCKET __attribute__((__stdcall__)) WSAAccept(SOCKET s,struct sockaddr *addr,LPINT addrlen,LPCONDITIONPROC lpfnCondition,DWORD_PTR dwCallbackData); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSACloseEvent(HANDLE hEvent); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAConnect(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS); + __declspec (dllimport) HANDLE __attribute__((__stdcall__)) WSACreateEvent(void); + __declspec (dllimport) int __attribute__((__stdcall__)) WSADuplicateSocketA(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOA lpProtocolInfo); + __declspec (dllimport) int __attribute__((__stdcall__)) WSADuplicateSocketW(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOW lpProtocolInfo); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAEnumNetworkEvents(SOCKET s,HANDLE hEventObject,LPWSANETWORKEVENTS lpNetworkEvents); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAEnumProtocolsA(LPINT lpiProtocols,LPWSAPROTOCOL_INFOA lpProtocolBuffer,LPDWORD lpdwBufferLength); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAEnumProtocolsW(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAEventSelect(SOCKET s,HANDLE hEventObject,long lNetworkEvents); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSAGetOverlappedResult(SOCKET s,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,WINBOOL fWait,LPDWORD lpdwFlags); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSAGetQOSByName(SOCKET s,LPWSABUF lpQOSName,LPQOS lpQOS); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAHtonl(SOCKET s,u_long hostlong,u_long *lpnetlong); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAHtons(SOCKET s,u_short hostshort,u_short *lpnetshort); + __declspec (dllimport) int __attribute__((__stdcall__)) WSAIoctl(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) SOCKET __attribute__((__stdcall__)) WSAJoinLeaf(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,DWORD dwFlags); + __declspec (dllimport) int __attribute__((__stdcall__)) WSANtohl(SOCKET s,u_long netlong,u_long *lphostlong); + __declspec (dllimport) int __attribute__((__stdcall__)) WSANtohs(SOCKET s,u_short netshort,u_short *lphostshort); + __declspec (dllimport) int __attribute__((__stdcall__)) WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) int __attribute__((__stdcall__)) WSARecvDisconnect(SOCKET s,LPWSABUF lpInboundDisconnectData); + __declspec (dllimport) int __attribute__((__stdcall__)) WSARecvFrom(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSAResetEvent(HANDLE hEvent); + __declspec (dllimport) int __attribute__((__stdcall__)) WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) int __attribute__((__stdcall__)) WSASendDisconnect(SOCKET s,LPWSABUF lpOutboundDisconnectData); + __declspec (dllimport) int __attribute__((__stdcall__)) WSASendTo(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + __declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSASetEvent(HANDLE hEvent); + __declspec (dllimport) SOCKET __attribute__((__stdcall__)) WSASocketA(int af,int type,int protocol,LPWSAPROTOCOL_INFOA lpProtocolInfo,GROUP g,DWORD dwFlags); + __declspec (dllimport) SOCKET __attribute__((__stdcall__)) WSASocketW(int af,int type,int protocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUP g,DWORD dwFlags); + __declspec (dllimport) DWORD __attribute__((__stdcall__)) WSAWaitForMultipleEvents(DWORD cEvents,const HANDLE *lphEvents,WINBOOL fWaitAll,DWORD dwTimeout,WINBOOL fAlertable); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAAddressToStringA(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSTR lpszAddressString,LPDWORD lpdwAddressStringLength); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAAddressToStringW(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPWSTR lpszAddressString,LPDWORD lpdwAddressStringLength); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAStringToAddressA(LPSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAStringToAddressW(LPWSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSALookupServiceNextA(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETA lpqsResults); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSALookupServiceNextW(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETW lpqsResults); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSANSPIoctl(HANDLE hLookup,DWORD dwControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSACOMPLETION lpCompletion); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSALookupServiceEnd(HANDLE hLookup); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAInstallServiceClassA(LPWSASERVICECLASSINFOA lpServiceClassInfo); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAInstallServiceClassW(LPWSASERVICECLASSINFOW lpServiceClassInfo); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSARemoveServiceClass(LPGUID lpServiceClassId); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAGetServiceClassInfoA(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOA lpServiceClassInfo); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAGetServiceClassInfoW(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOW lpServiceClassInfo); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersA(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOA lpnspBuffer); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersW(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOW lpnspBuffer); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAGetServiceClassNameByClassIdA(LPGUID lpServiceClassId,LPSTR lpszServiceClassName,LPDWORD lpdwBufferLength); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAGetServiceClassNameByClassIdW(LPGUID lpServiceClassId,LPWSTR lpszServiceClassName,LPDWORD lpdwBufferLength); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSASetServiceA(LPWSAQUERYSETA lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSASetServiceW(LPWSAQUERYSETW lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags); + __declspec (dllimport) INT __attribute__((__stdcall__)) WSAProviderConfigChange(LPHANDLE lpNotificationHandle,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); +#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error) +#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error) +#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam) +#define WSAGETASYNCERROR(lParam) HIWORD(lParam) +#define WSAGETSELECTEVENT(lParam) LOWORD(lParam) +#define WSAGETSELECTERROR(lParam) HIWORD(lParam) +typedef struct _WSANAMESPACE_INFOEXA { + GUID NSProviderId; + DWORD dwNameSpace; + WINBOOL fActive; + DWORD dwVersion; + LPSTR lpszIdentifier; + BLOB ProviderSpecific; +} WSANAMESPACE_INFOEXA, *PWSANAMESPACE_INFOEXA, *LPWSANAMESPACE_INFOEXA; +typedef struct _WSANAMESPACE_INFOEXW { + GUID NSProviderId; + DWORD dwNameSpace; + WINBOOL fActive; + DWORD dwVersion; + LPWSTR lpszIdentifier; + BLOB ProviderSpecific; +} WSANAMESPACE_INFOEXW, *PWSANAMESPACE_INFOEXW, *LPWSANAMESPACE_INFOEXW; +typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX; +typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX; +typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX; +typedef struct _WSAQUERYSET2A { + DWORD dwSize; + LPSTR lpszServiceInstanceName; + LPWSAVERSION lpVersion; + LPSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; +} WSAQUERYSET2A, *PWSAQUERYSET2A, *LPWSAQUERYSET2A; +typedef struct _WSAQUERYSET2W { + DWORD dwSize; + LPWSTR lpszServiceInstanceName; + LPWSAVERSION lpVersion; + LPWSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPTSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPWSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; +} WSAQUERYSET2W, *PWSAQUERYSET2W, *LPWSAQUERYSET2W; +#define POLLRDNORM 0x0100 +#define POLLRDBAND 0x0200 +#define POLLIN (POLLRDNORM | POLLRDBAND) +#define POLLPRI 0x0400 +#define POLLWRNORM 0x0010 +#define POLLOUT (POLLWRNORM) +#define POLLWRBAND 0x0020 +#define POLLERR 0x0001 +#define POLLHUP 0x0002 +#define POLLNVAL 0x0004 +typedef struct pollfd { + SOCKET fd; + short events; + short revents; +} WSAPOLLFD, *PWSAPOLLFD, *LPWSAPOLLFD; +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSAConnectByList( + SOCKET s, + PSOCKET_ADDRESS_LIST SocketAddressList, + LPDWORD LocalAddressLength, + LPSOCKADDR LocalAddress, + LPDWORD RemoteAddressLength, + LPSOCKADDR RemoteAddress, + const TIMEVAL *timeout, + LPWSAOVERLAPPED Reserved +); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSAConnectByNameA( + SOCKET s, + LPSTR nodename, + LPSTR servicename, + LPDWORD LocalAddressLength, + LPSOCKADDR LocalAddress, + LPDWORD RemoteAddressLength, + LPSOCKADDR RemoteAddress, + const TIMEVAL *timeout, + LPWSAOVERLAPPED Reserved +); +__declspec (dllimport) WINBOOL __attribute__((__stdcall__)) WSAConnectByNameW( + SOCKET s, + LPWSTR nodename, + LPWSTR servicename, + LPDWORD LocalAddressLength, + LPSOCKADDR LocalAddress, + LPDWORD RemoteAddressLength, + LPSOCKADDR RemoteAddress, + const TIMEVAL *timeout, + LPWSAOVERLAPPED Reserved +); +#define WSAConnectByName __MINGW_NAME_AW(WSAConnectByName) +INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersExA( + LPDWORD lpdwBufferLength, + LPWSANAMESPACE_INFOEXA lpnspBuffer +); +INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersExW( + LPDWORD lpdwBufferLength, + LPWSANAMESPACE_INFOEXW lpnspBuffer +); +#define WSAEnumNameSpaceProvidersEx __MINGW_NAME_AW(WSAEnumNameSpaceProvidersEx) +int __attribute__((__stdcall__)) WSAPoll( + WSAPOLLFD fdarray[], + ULONG nfds, + INT timeout +); +int __attribute__((__stdcall__)) WSASendMsg( + SOCKET s, + LPWSAMSG lpMsg, + DWORD dwFlags, + LPDWORD lpNumberOfBytesSent, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine +); +typedef struct SOCK_NOTIFY_REGISTRATION { + SOCKET socket; + PVOID completionKey; + UINT16 eventFilter; + UINT8 operation; + UINT8 triggerFlags; + DWORD registrationResult; +} SOCK_NOTIFY_REGISTRATION; +#define SOCK_NOTIFY_REGISTER_EVENT_NONE 0x00 +#define SOCK_NOTIFY_REGISTER_EVENT_IN 0x01 +#define SOCK_NOTIFY_REGISTER_EVENT_OUT 0x02 +#define SOCK_NOTIFY_REGISTER_EVENT_HANGUP 0x04 +#define SOCK_NOTIFY_REGISTER_EVENTS_ALL (SOCK_NOTIFY_REGISTER_EVENT_IN | SOCK_NOTIFY_REGISTER_EVENT_OUT | SOCK_NOTIFY_REGISTER_EVENT_HANGUP) +#define SOCK_NOTIFY_EVENT_IN SOCK_NOTIFY_REGISTER_EVENT_IN +#define SOCK_NOTIFY_EVENT_OUT SOCK_NOTIFY_REGISTER_EVENT_OUT +#define SOCK_NOTIFY_EVENT_HANGUP SOCK_NOTIFY_REGISTER_EVENT_HANGUP +#define SOCK_NOTIFY_EVENT_ERR 0x40 +#define SOCK_NOTIFY_EVENT_REMOVE 0x80 +#define SOCK_NOTIFY_EVENTS_ALL (SOCK_NOTIFY_REGISTER_EVENTS_ALL | SOCK_NOTIFY_EVENT_ERR | SOCK_NOTIFY_EVENT_REMOVE) +#define SOCK_NOTIFY_OP_NONE 0x00 +#define SOCK_NOTIFY_OP_ENABLE 0x01 +#define SOCK_NOTIFY_OP_DISABLE 0x02 +#define SOCK_NOTIFY_OP_REMOVE 0x04 +#define SOCK_NOTIFY_TRIGGER_ONESHOT 0x01 +#define SOCK_NOTIFY_TRIGGER_PERSISTENT 0x02 +#define SOCK_NOTIFY_TRIGGER_LEVEL 0x04 +#define SOCK_NOTIFY_TRIGGER_EDGE 0x08 +#define SOCK_NOTIFY_TRIGGER_ALL (SOCK_NOTIFY_TRIGGER_ONESHOT | SOCK_NOTIFY_TRIGGER_PERSISTENT | SOCK_NOTIFY_TRIGGER_LEVEL | SOCK_NOTIFY_TRIGGER_EDGE) +#define _WS2TCPIP_H_ +#define _WS2IPDEF_ + +typedef struct in6_addr { + union { + u_char Byte[16]; + u_short Word[8]; + } u; +} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR; +#define in_addr6 in6_addr +#define _S6_un u +#define _S6_u8 Byte +#define s6_addr _S6_un._S6_u8 +#define s6_bytes u.Byte +#define s6_words u.Word +#define IP_OPTIONS 1 +#define IP_HDRINCL 2 +#define IP_TOS 3 +#define IP_TTL 4 +#define IP_MULTICAST_IF 9 +#define IP_MULTICAST_TTL 10 +#define IP_MULTICAST_LOOP 11 +#define IP_ADD_MEMBERSHIP 12 +#define IP_DROP_MEMBERSHIP 13 +#define IP_DONTFRAGMENT 14 +#define IP_ADD_SOURCE_MEMBERSHIP 15 +#define IP_DROP_SOURCE_MEMBERSHIP 16 +#define IP_BLOCK_SOURCE 17 +#define IP_UNBLOCK_SOURCE 18 +#define IP_PKTINFO 19 +#define IP_HOPLIMIT 21 +#define IP_RECVTTL 21 +#define IP_RECEIVE_BROADCAST 22 +#define IP_RECVIF 24 +#define IP_RECVDSTADDR 25 +#define IP_IFLIST 28 +#define IP_ADD_IFLIST 29 +#define IP_DEL_IFLIST 30 +#define IP_UNICAST_IF 31 +#define IP_RTHDR 32 +#define IP_GET_IFLIST 33 +#define IP_RECVRTHDR 38 +#define IP_TCLASS 39 +#define IP_RECVTCLASS 40 +#define IP_RECVTOS 40 +#define IP_ORIGINAL_ARRIVAL_IF 47 +#define IP_ECN 50 +#define IP_PKTINFO_EX 51 +#define IP_WFP_REDIRECT_RECORDS 60 +#define IP_WFP_REDIRECT_CONTEXT 70 +#define IP_MTU_DISCOVER 71 +#define IP_MTU 73 +#define IP_NRT_INTERFACE 74 +#define IP_RECVERR 75 +#define IP_USER_MTU 76 +#define IP_UNSPECIFIED_TYPE_OF_SERVICE -1 +#define IP_UNSPECIFIED_USER_MTU MAXULONG +#define IPV6_ADDRESS_BITS RTL_BITS_OF(IN6_ADDR) +#define IPV6_HOPOPTS 1 +#define IPV6_HDRINCL 2 +#define IPV6_UNICAST_HOPS 4 +#define IPV6_MULTICAST_IF 9 +#define IPV6_MULTICAST_HOPS 10 +#define IPV6_MULTICAST_LOOP 11 +#define IPV6_ADD_MEMBERSHIP 12 +#define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP +#define IPV6_DROP_MEMBERSHIP 13 +#define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP +#define IPV6_DONTFRAG 14 +#define IPV6_PKTINFO 19 +#define IPV6_HOPLIMIT 21 +#define IPV6_PROTECTION_LEVEL 23 +#define IPV6_RECVIF 24 +#define IPV6_RECVDSTADDR 25 +#define IPV6_CHECKSUM 26 +#define IPV6_V6ONLY 27 +#define IPV6_IFLIST 28 +#define IPV6_ADD_IFLIST 29 +#define IPV6_DEL_IFLIST 30 +#define IPV6_UNICAST_IF 31 +#define IPV6_RTHDR 32 +#define IPV6_GET_IFLIST 33 +#define IPV6_RECVRTHDR 38 +#define IPV6_TCLASS 39 +#define IPV6_RECVTCLASS 40 +#define IPV6_ECN 50 +#define IPV6_PKTINFO_EX 51 +#define IPV6_WFP_REDIRECT_RECORDS 60 +#define IPV6_WFP_REDIRECT_CONTEXT 70 +#define IPV6_MTU_DISCOVER 71 +#define IPV6_MTU 72 +#define IPV6_NRT_INTERFACE 74 +#define IPV6_RECVERR 75 +#define IPV6_USER_MTU 76 +#define IP_UNSPECIFIED_HOP_LIMIT -1 +#define IP_PROTECTION_LEVEL IPV6_PROTECTION_LEVEL +#define PROTECTION_LEVEL_UNRESTRICTED 10 +#define PROTECTION_LEVEL_EDGERESTRICTED 20 +#define PROTECTION_LEVEL_RESTRICTED 30 +#define PROTECTION_LEVEL_DEFAULT ((UINT)-1) +typedef struct ipv6_mreq { + struct in6_addr ipv6mr_multiaddr; + unsigned int ipv6mr_interface; +} IPV6_MREQ; +struct sockaddr_in6_old { + short sin6_family; + u_short sin6_port; + u_long sin6_flowinfo; + struct in6_addr sin6_addr; +}; +typedef union sockaddr_gen { + struct sockaddr Address; + struct sockaddr_in AddressIn; + struct sockaddr_in6_old AddressIn6; +} sockaddr_gen; +struct sockaddr_in6 { + short sin6_family; + u_short sin6_port; + u_long sin6_flowinfo; + struct in6_addr sin6_addr; + __extension__ union { + u_long sin6_scope_id; + SCOPE_ID sin6_scope_struct; + }; +}; +typedef struct sockaddr_in6 SOCKADDR_IN6; +typedef struct sockaddr_in6 *PSOCKADDR_IN6; +typedef struct sockaddr_in6 *LPSOCKADDR_IN6; +typedef struct _INTERFACE_INFO { + u_long iiFlags; + sockaddr_gen iiAddress; + sockaddr_gen iiBroadcastAddress; + sockaddr_gen iiNetmask; +} INTERFACE_INFO,*LPINTERFACE_INFO; +typedef struct _INTERFACE_INFO_EX { + u_long iiFlags; + SOCKET_ADDRESS iiAddress; + SOCKET_ADDRESS iiBroadcastAddress; + SOCKET_ADDRESS iiNetmask; +} INTERFACE_INFO_EX, *LPINTERFACE_INFO_EX; +#define IFF_UP 0x00000001 +#define IFF_BROADCAST 0x00000002 +#define IFF_LOOPBACK 0x00000004 +#define IFF_POINTTOPOINT 0x00000008 +#define IFF_MULTICAST 0x00000010 +typedef enum _PMTUD_STATE { + IP_PMTUDISC_NOT_SET, + IP_PMTUDISC_DO, + IP_PMTUDISC_DONT, + IP_PMTUDISC_PROBE, + IP_PMTUDISC_MAX +} PMTUD_STATE, *PPMTUD_STATE; +#define MCAST_JOIN_GROUP 41 +#define MCAST_LEAVE_GROUP 42 +#define MCAST_BLOCK_SOURCE 43 +#define MCAST_UNBLOCK_SOURCE 44 +#define MCAST_JOIN_SOURCE_GROUP 45 +#define MCAST_LEAVE_SOURCE_GROUP 46 +typedef enum _MULTICAST_MODE_TYPE { + MCAST_INCLUDE = 0, + MCAST_EXCLUDE +} MULTICAST_MODE_TYPE; +typedef struct ip_mreq_source { + IN_ADDR imr_multiaddr; + IN_ADDR imr_sourceaddr; + IN_ADDR imr_interface; +} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE; +typedef struct ip_msfilter { + IN_ADDR imsf_multiaddr; + IN_ADDR imsf_interface; + MULTICAST_MODE_TYPE imsf_fmode; + ULONG imsf_numsrc; + IN_ADDR imsf_slist[1]; +} IP_MSFILTER, *PIP_MSFILTER; +#define IP_MSFILTER_SIZE(NumSources) (sizeof(IP_MSFILTER) - sizeof(IN_ADDR) + (NumSources) * sizeof(IN_ADDR)) +typedef struct _sockaddr_in6_pair { + PSOCKADDR_IN6 SourceAddress; + PSOCKADDR_IN6 DestinationAddress; +} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR; +typedef union _SOCKADDR_INET { + SOCKADDR_IN Ipv4; + SOCKADDR_IN6 Ipv6; + ADDRESS_FAMILY si_family; +} SOCKADDR_INET, *PSOCKADDR_INET; +typedef struct group_filter { + ULONG gf_interface; + SOCKADDR_STORAGE gf_group; + MULTICAST_MODE_TYPE gf_fmode; + ULONG gf_numsrc; + SOCKADDR_STORAGE gf_slist[1]; +} GROUP_FILTER, *PGROUP_FILTER; +typedef struct group_req { + ULONG gr_interface; + SOCKADDR_STORAGE gr_group; +} GROUP_REQ, *PGROUP_REQ; +typedef struct group_source_req { + ULONG gsr_interface; + SOCKADDR_STORAGE gsr_group; + SOCKADDR_STORAGE gsr_source; +} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ; +#define WS2TCPIP_INLINE __CRT_INLINE +int IN6_ADDR_EQUAL(const struct in6_addr *,const struct in6_addr *); +extern inline __attribute__((__gnu_inline__)) int IN6_ADDR_EQUAL(const struct in6_addr *a, const struct in6_addr *b) { + return !memcmp(a, b, sizeof(struct in6_addr)); +} +#define IN6_ARE_ADDR_EQUAL IN6_ADDR_EQUAL +#define TCP_OFFLOAD_NO_PREFERENCE 0 +#define TCP_OFFLOAD_NOT_PREFERRED 1 +#define TCP_OFFLOAD_PREFERRED 2 +#define TCP_EXPEDITED_1122 0x0002 +#define TCP_KEEPALIVE 3 +#define TCP_MAXSEG 4 +#define TCP_MAXRT 5 +#define TCP_STDURG 6 +#define TCP_NOURG 7 +#define TCP_ATMARK 8 +#define TCP_NOSYNRETRIES 9 +#define TCP_TIMESTAMPS 10 +#define TCP_OFFLOAD_PREFERENCE 11 +#define TCP_CONGESTION_ALGORITHM 12 +#define TCP_DELAY_FIN_ACK 13 +#define TCP_MAXRTMS 14 +#define TCP_FASTOPEN 15 +#define TCP_KEEPCNT 16 +#define TCP_KEEPIDLE TCP_KEEPALIVE +#define TCP_KEEPINTVL 17 +#define TCP_FAIL_CONNECT_ON_ICMP_ERROR 18 +#define TCP_ICMP_ERROR_INFO 19 +#define _MINGW_IP_MREQ1_H +typedef struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +} IP_MREQ, *PIP_MREQ; +#define SIO_GET_INTERFACE_LIST _IOR('t',127,u_long) +#define SIO_GET_INTERFACE_LIST_EX _IOR('t',126,u_long) +#define SIO_SET_MULTICAST_FILTER _IOW('t',125,u_long) +#define SIO_GET_MULTICAST_FILTER _IOW('t',124 | IOC_IN,u_long) +#define UDP_NOCHECKSUM 1 +#define UDP_CHECKSUM_COVERAGE 20 +#define SS_PORT(ssp) (((struct sockaddr_in*)(ssp))->sin_port) +#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } +#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } + extern const struct in6_addr in6addr_any; + extern const struct in6_addr in6addr_loopback; +int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *); +int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *); +int IN6_IS_ADDR_MULTICAST(const struct in6_addr *); +int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *); +int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *); +int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *); +int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *); +int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *); +int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *); +int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *); +int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *); +int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *); +int IN6ADDR_ISANY(const struct sockaddr_in6 *); +int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *); +void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *); +void IN6_SET_ADDR_LOOPBACK(struct in6_addr *); +void IN6ADDR_SETANY(struct sockaddr_in6 *); +void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *); +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0) && (a->u.Word[6]==0) && (a->u.Word[7]==0)); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0) && (a->u.Word[6]==0) && (a->u.Word[7]==0x0100)); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MULTICAST(const struct in6_addr *a) { return (a->u.Byte[0]==0xff); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *a) { return ((a->u.Byte[0]==0xfe) && ((a->u.Byte[1] & 0xc0)==0x80)); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *a) { return ((a->u.Byte[0]==0xfe) && ((a->u.Byte[1] & 0xc0)==0xc0)); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0xffff)); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0) && !((a->u.Word[6]==0) && (a->u.Byte[14]==0) && ((a->u.Byte[15]==0) || (a->u.Byte[15]==1)))); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==1); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==2); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==5); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==8); } +extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==0xe); } +extern inline __attribute__((__gnu_inline__)) int IN6ADDR_ISANY(const struct sockaddr_in6 *a) { return ((a->sin6_family==23) && IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr)); } +extern inline __attribute__((__gnu_inline__)) int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *a) { return ((a->sin6_family==23) && IN6_IS_ADDR_LOOPBACK(&a->sin6_addr)); } +extern inline __attribute__((__gnu_inline__)) void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *a) { memset(a->u.Byte,0,sizeof(struct in6_addr)); } +extern inline __attribute__((__gnu_inline__)) void IN6_SET_ADDR_LOOPBACK(struct in6_addr *a) { + memset(a->u.Byte,0,sizeof(struct in6_addr)); + a->u.Byte[15] = 1; +} +extern inline __attribute__((__gnu_inline__)) void IN6ADDR_SETANY(struct sockaddr_in6 *a) { + a->sin6_family = 23; + a->sin6_port = 0; + a->sin6_flowinfo = 0; + IN6_SET_ADDR_UNSPECIFIED(&a->sin6_addr); + a->sin6_scope_id = 0; +} +extern inline __attribute__((__gnu_inline__)) void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *a) { + a->sin6_family = 23; + a->sin6_port = 0; + a->sin6_flowinfo = 0; + IN6_SET_ADDR_LOOPBACK(&a->sin6_addr); + a->sin6_scope_id = 0; +} +#define IN6_IS_ADDR_UNSPECIFIED IN6_IS_ADDR_UNSPECIFIED +#define IN6_IS_ADDR_LOOPBACK IN6_IS_ADDR_LOOPBACK +#define IN6_IS_ADDR_MULTICAST IN6_IS_ADDR_MULTICAST +#define IN6_IS_ADDR_LINKLOCAL IN6_IS_ADDR_LINKLOCAL +#define IN6_IS_ADDR_SITELOCAL IN6_IS_ADDR_SITELOCAL +#define IN6_IS_ADDR_V4MAPPED IN6_IS_ADDR_V4MAPPED +#define IN6_IS_ADDR_V4COMPAT IN6_IS_ADDR_V4COMPAT +#define IN6_IS_ADDR_MC_NODELOCAL IN6_IS_ADDR_MC_NODELOCAL +#define IN6_IS_ADDR_MC_LINKLOCAL IN6_IS_ADDR_MC_LINKLOCAL +#define IN6_IS_ADDR_MC_SITELOCAL IN6_IS_ADDR_MC_SITELOCAL +#define IN6_IS_ADDR_MC_ORGLOCAL IN6_IS_ADDR_MC_ORGLOCAL +#define IN6_IS_ADDR_MC_GLOBAL IN6_IS_ADDR_MC_GLOBAL +typedef struct in_pktinfo { + IN_ADDR ipi_addr; + UINT ipi_ifindex; +} IN_PKTINFO; +extern void __C_ASSERT__(int [(sizeof(IN_PKTINFO)==8)?1:-1]); +typedef struct in6_pktinfo { + IN6_ADDR ipi6_addr; + UINT ipi6_ifindex; +} IN6_PKTINFO; +extern void __C_ASSERT__(int [(sizeof(IN6_PKTINFO)==20)?1:-1]); +#define EAI_AGAIN WSATRY_AGAIN +#define EAI_BADFLAGS WSAEINVAL +#define EAI_FAIL WSANO_RECOVERY +#define EAI_FAMILY WSAEAFNOSUPPORT +#define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY +#define EAI_NONAME WSAHOST_NOT_FOUND +#define EAI_SERVICE WSATYPE_NOT_FOUND +#define EAI_SOCKTYPE WSAESOCKTNOSUPPORT +#define EAI_NODATA 11004 +typedef struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char *ai_canonname; + struct sockaddr *ai_addr; + struct addrinfo *ai_next; +} ADDRINFOA,*PADDRINFOA; +typedef struct addrinfoW { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + PWSTR ai_canonname; + struct sockaddr *ai_addr; + struct addrinfoW *ai_next; +} ADDRINFOW,*PADDRINFOW; +typedef ADDRINFOA ADDRINFOT,*PADDRINFOT; +typedef ADDRINFOA ADDRINFO,*LPADDRINFO; +#define AI_PASSIVE 0x00000001 +#define AI_CANONNAME 0x00000002 +#define AI_NUMERICHOST 0x00000004 +#define AI_NUMERICSERV 0x00000008 +#define AI_ALL 0x00000100 +#define AI_ADDRCONFIG 0x00000400 +#define AI_V4MAPPED 0x00000800 +#define AI_NON_AUTHORITATIVE 0x00004000 +#define AI_SECURE 0x00008000 +#define AI_RETURN_PREFERRED_NAMES 0x00010000 +#define GetAddrInfo __MINGW_NAME_AW(GetAddrInfo) + __declspec (dllimport) int __attribute__((__stdcall__)) getaddrinfo(const char *nodename,const char *servname,const struct addrinfo *hints,struct addrinfo **res); + __declspec (dllimport) int __attribute__((__stdcall__)) GetAddrInfoW(PCWSTR pNodeName,PCWSTR pServiceName,const ADDRINFOW *pHints,PADDRINFOW *ppResult); +#define GetAddrInfoA getaddrinfo +#define FreeAddrInfo __MINGW_NAME_AW(FreeAddrInfo) + __declspec (dllimport) void __attribute__((__stdcall__)) freeaddrinfo(LPADDRINFO pAddrInfo); + __declspec (dllimport) void __attribute__((__stdcall__)) FreeAddrInfoW(PADDRINFOW pAddrInfo); +#define FreeAddrInfoA freeaddrinfo + typedef int socklen_t; +#define GetNameInfo __MINGW_NAME_AW(GetNameInfo) + __declspec (dllimport) int __attribute__((__stdcall__)) getnameinfo(const struct sockaddr *sa,socklen_t salen,char *host,DWORD hostlen,char *serv,DWORD servlen,int flags); + __declspec (dllimport) INT __attribute__((__stdcall__)) GetNameInfoW(const SOCKADDR *pSockaddr,socklen_t SockaddrLength,PWCHAR pNodeBuffer,DWORD NodeBufferSize,PWCHAR pServiceBuffer,DWORD ServiceBufferSize,INT Flags); +#define GetNameInfoA getnameinfo +#define gai_strerror __MINGW_NAME_AW(gai_strerror) +#define GAI_STRERROR_BUFFER_SIZE 1024 +char *gai_strerrorA (int); +WCHAR *gai_strerrorW(int); +#define NI_MAXHOST 1025 +#define NI_MAXSERV 32 +#define INET_ADDRSTRLEN 22 +#define INET6_ADDRSTRLEN 65 +#define NI_NOFQDN 0x01 +#define NI_NUMERICHOST 0x02 +#define NI_NAMEREQD 0x04 +#define NI_NUMERICSERV 0x08 +#define NI_DGRAM 0x10 +#define _MSTCPIP_ +#define _TRANSPORT_SETTING_COMMON_ +typedef struct TRANSPORT_SETTING_ID { + GUID Guid; +} TRANSPORT_SETTING_ID, *PTRANSPORT_SETTING_ID; +struct tcp_keepalive { + u_long onoff; + u_long keepalivetime; + u_long keepaliveinterval; +}; +typedef enum { + CONTROL_CHANNEL_TRIGGER_STATUS_INVALID = 0, + CONTROL_CHANNEL_TRIGGER_STATUS_SOFTWARE_SLOT_ALLOCATED = 1, + CONTROL_CHANNEL_TRIGGER_STATUS_HARDWARE_SLOT_ALLOCATED = 2, + CONTROL_CHANNEL_TRIGGER_STATUS_POLICY_ERROR = 3, + CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR = 4, + CONTROL_CHANNEL_TRIGGER_STATUS_TRANSPORT_DISCONNECTED = 5, + CONTROL_CHANNEL_TRIGGER_STATUS_SERVICE_UNAVAILABLE = 6 +} CONTROL_CHANNEL_TRIGGER_STATUS, *PCONTROL_CHANNEL_TRIGGER_STATUS; +#define CONTROL_CHANNEL_TRIGGER_STATUS_MAX CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR +typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT { + TRANSPORT_SETTING_ID TransportSettingId; + GUID BrokerEventGuid; +} REAL_TIME_NOTIFICATION_SETTING_INPUT, *PREAL_TIME_NOTIFICATION_SETTING_INPUT; +typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT_EX { + TRANSPORT_SETTING_ID TransportSettingId; + GUID BrokerEventGuid; + BOOLEAN Unmark; +} REAL_TIME_NOTIFICATION_SETTING_INPUT_EX, *PREAL_TIME_NOTIFICATION_SETTING_INPUT_EX; +typedef struct _REAL_TIME_NOTIFICATION_SETTING_OUTPUT { + CONTROL_CHANNEL_TRIGGER_STATUS ChannelStatus; +} REAL_TIME_NOTIFICATION_SETTING_OUTPUT, *PREAL_TIME_NOTIFICATION_SETTING_OUTPUT; +typedef struct _ASSOCIATE_NAMERES_CONTEXT_INPUT { + TRANSPORT_SETTING_ID TransportSettingId; + UINT64 Handle; +} ASSOCIATE_NAMERES_CONTEXT_INPUT, *PASSOCIATE_NAMERES_CONTEXT_INPUT; +#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) +#define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2) +#define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3) +#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) +#define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5) +#define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6) +#define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7) +#define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8) +#define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9) +#define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10) +#define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11) +#define SIO_RCVALL_MCAST_IF _WSAIOW(IOC_VENDOR,13) +#define SIO_RCVALL_IF _WSAIOW(IOC_VENDOR,14) +#define SIO_LOOPBACK_FAST_PATH _WSAIOW(IOC_VENDOR,16) +#define SIO_TCP_INITIAL_RTO _WSAIOW(IOC_VENDOR,17) +#define SIO_APPLY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,19) +#define SIO_QUERY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,20) +#define SIO_TCP_SET_ICW _WSAIOW(IOC_VENDOR,22) +#define SIO_TCP_SET_ACK_FREQUENCY _WSAIOW(IOC_VENDOR,23) +typedef enum { + RCVALL_OFF = 0, + RCVALL_ON = 1, + RCVALL_SOCKETLEVELONLY = 2, + RCVALL_IPLEVEL = 3 +} RCVALL_VALUE, *PRCVALL_VALUE; +#define RCVALL_MAX RCVALL_IPLEVEL +typedef struct { + RCVALL_VALUE Mode; + ULONG Interface; +} RCVALL_IF, *PRCVALL_IF; +#define TCP_INITIAL_RTO_UNSPECIFIED_RTT ((USHORT) -1) +#define TCP_INITIAL_RTO_UNSPECIFIED_MAX_SYN_RETRANSMISSIONS ((UCHAR) -1) +#define TCP_INITIAL_RTO_DEFAULT_RTT (0) +#define TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS (0) +#define TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS ((UCHAR) -2) +typedef struct _TCP_INITIAL_RTO_PARAMETERS { + USHORT Rtt; + UCHAR MaxSynRetransmissions; +} TCP_INITIAL_RTO_PARAMETERS, *PTCP_INITIAL_RTO_PARAMETERS; +typedef enum { + TCP_ICW_LEVEL_DEFAULT = 0, + TCP_ICW_LEVEL_HIGH = 1, + TCP_ICW_LEVEL_VERY_HIGH = 2, + TCP_ICW_LEVEL_AGGRESSIVE = 3, + TCP_ICW_LEVEL_EXPERIMENTAL = 4, + TCP_ICW_LEVEL_COMPAT = 254, + TCP_ICW_LEVEL_MAX = 255 +} TCP_ICW_LEVEL, *PTCP_ICW_LEVEL; +typedef struct _TCP_ICW_PARAMETERS { + TCP_ICW_LEVEL Level; +} TCP_ICW_PARAMETERS, *PTCP_ICW_PARAMETERS; +typedef struct _TCP_ACK_FREQUENCY_PARAMETERS { + UCHAR TcpDelayedAckFrequency; +} TCP_ACK_FREQUENCY_PARAMETERS, *PTCP_ACK_FREQUENCY_PARAMETERS; +#define SIO_ACQUIRE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 100) +#define SIO_RELEASE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 101) +#define SIO_ASSOCIATE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 102) +typedef struct _INET_PORT_RANGE { + USHORT StartPort; + USHORT NumberOfPorts; +} INET_PORT_RANGE, *PINET_PORT_RANGE; +typedef struct _INET_PORT_RANGE INET_PORT_RESERVATION, *PINET_PORT_RESERVATION; +typedef struct { + ULONG64 Token; +} INET_PORT_RESERVATION_TOKEN, *PINET_PORT_RESERVATION_TOKEN; +#define INVALID_PORT_RESERVATION_TOKEN ((ULONG64)0) +typedef struct { + INET_PORT_RESERVATION; + INET_PORT_RESERVATION_TOKEN; +} INET_PORT_RESERVATION_INSTANCE, *PINET_PORT_RESERVATION_INSTANCE; +typedef struct { + ULONG OwningPid; +} INET_PORT_RESERVATION_INFORMATION, *PINET_PORT_RESERVATION_INFORMATION; +typedef enum _SOCKET_SECURITY_PROTOCOL { + SOCKET_SECURITY_PROTOCOL_DEFAULT, + SOCKET_SECURITY_PROTOCOL_IPSEC, + SOCKET_SECURITY_PROTOCOL_INVALID +} SOCKET_SECURITY_PROTOCOL; +#define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION 0x1 +#define SOCKET_SETTINGS_ALLOW_INSECURE 0x2 +typedef enum _SOCKET_USAGE_TYPE { + SYSTEM_CRITICAL_SOCKET = 1 +} SOCKET_USAGE_TYPE; +typedef struct _SOCKET_PEER_TARGET_NAME { + SOCKET_SECURITY_PROTOCOL SecurityProtocol; + SOCKADDR_STORAGE PeerAddress; + ULONG PeerTargetNameStringLen; + wchar_t AllStrings[]; +} SOCKET_PEER_TARGET_NAME; +#define SOCKET_INFO_CONNECTION_SECURED 0x00000001 +#define SOCKET_INFO_CONNECTION_ENCRYPTED 0x00000002 +#define SOCKET_INFO_CONNECTION_IMPERSONATED 0x00000004 +typedef struct _SOCKET_SECURITY_QUERY_INFO { + SOCKET_SECURITY_PROTOCOL SecurityProtocol; + ULONG Flags; + UINT64 PeerApplicationAccessTokenHandle; + UINT64 PeerMachineAccessTokenHandle; +} SOCKET_SECURITY_QUERY_INFO; +typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE { + SOCKET_SECURITY_PROTOCOL SecurityProtocol; + SOCKADDR_STORAGE PeerAddress; + ULONG PeerTokenAccessMask; +} SOCKET_SECURITY_QUERY_TEMPLATE; +typedef struct _SOCKET_SECURITY_SETTINGS { + SOCKET_SECURITY_PROTOCOL SecurityProtocol; + ULONG SecurityFlags; +} SOCKET_SECURITY_SETTINGS; +#define SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION 0x00000001 +typedef struct _SOCKET_SECURITY_SETTINGS_IPSEC { + SOCKET_SECURITY_PROTOCOL SecurityProtocol; + ULONG SecurityFlags; + ULONG IpsecFlags; + GUID AuthipMMPolicyKey; + GUID AuthipQMPolicyKey; + GUID Reserved; + UINT64 Reserved2; + ULONG UserNameStringLen; + ULONG DomainNameStringLen; + ULONG PasswordStringLen; + wchar_t AllStrings[]; +} SOCKET_SECURITY_SETTINGS_IPSEC; +#define RtlIpv6AddressToString __MINGW_NAME_AW(RtlIpv6AddressToString) +#define RtlIpv6AddressToStringEx __MINGW_NAME_AW(RtlIpv6AddressToStringEx) +LPSTR RtlIpv6AddressToStringA(const IN6_ADDR *Addr, LPSTR S); +LPWSTR RtlIpv6AddressToStringW(const IN6_ADDR *Addr, LPWSTR S); +LONG RtlIpv6AddressToStringExA(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); +LONG RtlIpv6AddressToStringExW(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); +#define RtlIpv4AddressToString __MINGW_NAME_AW(RtlIpv4AddressToString) +LPSTR RtlIpv4AddressToStringA(const IN_ADDR *Addr, LPSTR S); +LPWSTR RtlIpv4AddressToStringW(const IN_ADDR *Addr, LPWSTR S); +#define RtlIpv4AddressToStringEx __MINGW_NAME_AW(RtlIpv4AddressToStringEx) +LONG RtlIpv4AddressToStringExA(const IN_ADDR *Address, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); +LONG RtlIpv4AddressToStringExW(const IN_ADDR *Address, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); +#define RtlIpv4StringToAddress __MINGW_NAME_AW(RtlIpv4StringToAddress) +LONG RtlIpv4StringToAddressA(PCSTR S, BOOLEAN Strict, LPSTR *Terminator, IN_ADDR *Addr); +LONG RtlIpv4StringToAddressW(PCWSTR S, BOOLEAN Strict, LPWSTR *Terminator, IN_ADDR *Addr); +#define RtlIpv4StringToAddressEx __MINGW_NAME_AW(RtlIpv4StringToAddressEx) +LONG RtlIpv4StringToAddressExA(PCSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); +LONG RtlIpv4StringToAddressExW(PCWSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); +#define RtlIpv6StringToAddressEx __MINGW_NAME_AW(RtlIpv6StringToAddressEx) +LONG RtlIpv6StringToAddressExA(PCSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); +LONG RtlIpv6StringToAddressExW(PCWSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); +#define ADDRINFOEX __MINGW_NAME_AW(ADDRINFOEX) +#define PADDRINFOEX __MINGW_NAME_AW(PADDRINFOEX) +#define GetAddrInfoEx __MINGW_NAME_AW(GetAddrInfoEx) +#define SetAddrInfoEx __MINGW_NAME_AW(SetAddrInfoEx) + typedef struct addrinfoexA { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + LPCSTR ai_canonname; + struct sockaddr *ai_addr; + void *ai_blob; + size_t ai_bloblen; + LPGUID ai_provider; + struct addrinfoexA *ai_next; + } ADDRINFOEXA, *PADDRINFOEXA; + typedef struct addrinfoexW { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + LPCWSTR ai_canonname; + struct sockaddr *ai_addr; + void *ai_blob; + size_t ai_bloblen; + LPGUID ai_provider; + struct addrinfoexW *ai_next; + } ADDRINFOEXW, *PADDRINFOEXW; + typedef void (__attribute__((__stdcall__)) * LPLOOKUPSERVICE_COMPLETION_ROUTINE)( + DWORD dwError, + DWORD dwBytes, + LPWSAOVERLAPPED lpOverlapped + ); +__declspec (dllimport) int __attribute__((__stdcall__)) GetAddrInfoExA(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace, + LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult, + PTIMEVAL timeout,LPOVERLAPPED lpOverlapped, + LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine, + LPHANDLE lpNameHandle); +__declspec (dllimport) int __attribute__((__stdcall__)) GetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace, + LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult, + PTIMEVAL timeout,LPOVERLAPPED lpOverlapped, + LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine, + LPHANDLE lpNameHandle); +__declspec (dllimport) int __attribute__((__stdcall__)) SetAddrInfoExA(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses, + DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace, + LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped, + LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine, + LPHANDLE lpNameHandle); +__declspec (dllimport) int __attribute__((__stdcall__)) SetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses, + DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace, + LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped, + LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine, + LPHANDLE lpNameHandle); +__declspec (dllimport) void __attribute__((__stdcall__)) FreeAddrInfoEx(PADDRINFOEXA pAddrInfo); +__declspec (dllimport) void __attribute__((__stdcall__)) FreeAddrInfoExW(PADDRINFOEXW pAddrInfo); +#define FreeAddrInfoExA FreeAddrInfoEx +__declspec (dllimport) int __attribute__((__stdcall__)) WSAImpersonateSocketPeer( + SOCKET Socket, + const struct sockaddr *PeerAddress, + ULONG peerAddressLen +); +__declspec (dllimport) int __attribute__((__stdcall__)) WSAQuerySocketSecurity( + SOCKET Socket, + const SOCKET_SECURITY_QUERY_TEMPLATE *SecurityQueryTemplate, + ULONG SecurityQueryTemplateLen, + SOCKET_SECURITY_QUERY_INFO *SecurityQueryInfo, + ULONG *SecurityQueryInfoLen, + LPWSAOVERLAPPED Overlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine +); +__declspec (dllimport) int __attribute__((__stdcall__)) WSARevertImpersonation(void); +__declspec (dllimport) int __attribute__((__stdcall__)) WSASetSocketPeerTargetName( + SOCKET Socket, + const SOCKET_PEER_TARGET_NAME *PeerTargetName, + ULONG PeerTargetNameLen, + LPWSAOVERLAPPED Overlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine +); +__declspec (dllimport) int __attribute__((__stdcall__)) WSASetSocketSecurity( + SOCKET Socket, + const SOCKET_SECURITY_SETTINGS *SecuritySettings, + ULONG SecuritySettingsLen, + LPWSAOVERLAPPED Overlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine +); +#define InetNtopA inet_ntop +__declspec (dllimport) LPCWSTR __attribute__((__stdcall__)) InetNtopW(INT Family, LPCVOID pAddr, LPWSTR pStringBuf, size_t StringBufSIze); +__declspec (dllimport) LPCSTR __attribute__((__stdcall__)) inet_ntop(INT Family, LPCVOID pAddr, LPSTR pStringBuf, size_t StringBufSize); +#define InetNtop __MINGW_NAME_AW(InetNtop) +#define InetPtonA inet_pton +__declspec (dllimport) INT __attribute__((__stdcall__)) InetPtonW(INT Family, LPCWSTR pStringBuf, PVOID pAddr); +__declspec (dllimport) INT __attribute__((__stdcall__)) inet_pton(INT Family, LPCSTR pStringBuf, PVOID pAddr); +#define InetPton __MINGW_NAME_AW(InetPton) + +#define __IPHLPAPI_H__ +#define __ROUTING_IPRTRMIB_H__ +#define __ROUTING_MPRADMIN_H__ +#define NETCONS_INCLUDED +#define CNLEN 15 +#define LM20_CNLEN 15 +#define DNLEN CNLEN +#define LM20_DNLEN LM20_CNLEN +#define UNCLEN (CNLEN+2) +#define LM20_UNCLEN (LM20_CNLEN+2) +#define NNLEN 80 +#define LM20_NNLEN 12 +#define RMLEN (UNCLEN+1+NNLEN) +#define LM20_RMLEN (LM20_UNCLEN+1+LM20_NNLEN) +#define SNLEN 80 +#define LM20_SNLEN 15 +#define STXTLEN 256 +#define LM20_STXTLEN 63 +#define PATHLEN 256 +#define LM20_PATHLEN 256 +#define DEVLEN 80 +#define LM20_DEVLEN 8 +#define EVLEN 16 +#define UNLEN 256 +#define LM20_UNLEN 20 +#define GNLEN UNLEN +#define LM20_GNLEN LM20_UNLEN +#define PWLEN 256 +#define LM20_PWLEN 14 +#define SHPWLEN 8 +#define CLTYPE_LEN 12 +#define MAXCOMMENTSZ 256 +#define LM20_MAXCOMMENTSZ 48 +#define QNLEN NNLEN +#define LM20_QNLEN LM20_NNLEN +#define ALERTSZ 128 +#define MAXDEVENTRIES (sizeof (int)*8) +#define NETBIOS_NAME_LEN 16 +#define MAX_PREFERRED_LENGTH ((DWORD) -1) +#define CRYPT_KEY_LEN 7 +#define CRYPT_TXT_LEN 8 +#define ENCRYPTED_PWLEN 16 +#define SESSION_PWLEN 24 +#define SESSION_CRYPT_KLEN 21 +#define PARMNUM_ALL 0 +#define PARM_ERROR_UNKNOWN ((DWORD) (-1)) +#define PARM_ERROR_NONE 0 +#define PARMNUM_BASE_INFOLEVEL 1000 +#define LMSTR LPWSTR +#define LMCSTR LPCWSTR +#define MESSAGE_FILENAME TEXT("NETMSG") +#define OS2MSG_FILENAME TEXT("BASE") +#define HELP_MSG_FILENAME TEXT("NETH") +#define BACKUP_MSG_FILENAME TEXT("BAK.MSG") +#define NET_API_STATUS DWORD +#define API_RET_TYPE NET_API_STATUS +#define NET_API_FUNCTION WINAPI +#define PLATFORM_ID_DOS 300 +#define PLATFORM_ID_OS2 400 +#define PLATFORM_ID_NT 500 +#define PLATFORM_ID_OSF 600 +#define PLATFORM_ID_VMS 700 +#define MIN_LANMAN_MESSAGE_ID NERR_BASE +#define MAX_LANMAN_MESSAGE_ID 5899 +#define _RAS_H_ +#undef interface +#define interface struct +#define __naptypes_h__ +#undef interface +#define interface struct +#undef interface +#define interface struct +#define __ocidl_h__ +#define __IEnumConnections_FWD_DEFINED__ +typedef struct IEnumConnections IEnumConnections; +#define __IConnectionPoint_FWD_DEFINED__ +typedef struct IConnectionPoint IConnectionPoint; +#define __IEnumConnectionPoints_FWD_DEFINED__ +typedef struct IEnumConnectionPoints IEnumConnectionPoints; +#define __IConnectionPointContainer_FWD_DEFINED__ +typedef struct IConnectionPointContainer IConnectionPointContainer; +#define __IClassFactory2_FWD_DEFINED__ +typedef struct IClassFactory2 IClassFactory2; +#define __IProvideClassInfo_FWD_DEFINED__ +typedef struct IProvideClassInfo IProvideClassInfo; +#define __IProvideClassInfo2_FWD_DEFINED__ +typedef struct IProvideClassInfo2 IProvideClassInfo2; +#define __IProvideMultipleClassInfo_FWD_DEFINED__ +typedef struct IProvideMultipleClassInfo IProvideMultipleClassInfo; +#define __IOleControl_FWD_DEFINED__ +typedef struct IOleControl IOleControl; +#define __IOleControlSite_FWD_DEFINED__ +typedef struct IOleControlSite IOleControlSite; +#define __IPropertyPage_FWD_DEFINED__ +typedef struct IPropertyPage IPropertyPage; +#define __IPropertyPage2_FWD_DEFINED__ +typedef struct IPropertyPage2 IPropertyPage2; +#define __IPropertyPageSite_FWD_DEFINED__ +typedef struct IPropertyPageSite IPropertyPageSite; +#define __IPropertyNotifySink_FWD_DEFINED__ +typedef struct IPropertyNotifySink IPropertyNotifySink; +#define __ISpecifyPropertyPages_FWD_DEFINED__ +typedef struct ISpecifyPropertyPages ISpecifyPropertyPages; +#define __IPersistMemory_FWD_DEFINED__ +typedef struct IPersistMemory IPersistMemory; +#define __IPersistStreamInit_FWD_DEFINED__ +typedef struct IPersistStreamInit IPersistStreamInit; +#define __IPersistPropertyBag_FWD_DEFINED__ +typedef struct IPersistPropertyBag IPersistPropertyBag; +#define __ISimpleFrameSite_FWD_DEFINED__ +typedef struct ISimpleFrameSite ISimpleFrameSite; +#define __IFont_FWD_DEFINED__ +typedef struct IFont IFont; +#define __IPicture_FWD_DEFINED__ +typedef struct IPicture IPicture; +#define __IPicture2_FWD_DEFINED__ +typedef struct IPicture2 IPicture2; +#define __IFontEventsDisp_FWD_DEFINED__ +typedef struct IFontEventsDisp IFontEventsDisp; +#define __IFontDisp_FWD_DEFINED__ +typedef struct IFontDisp IFontDisp; +#define __IPictureDisp_FWD_DEFINED__ +typedef struct IPictureDisp IPictureDisp; +#define __IOleInPlaceObjectWindowless_FWD_DEFINED__ +typedef struct IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless; +#define __IOleInPlaceSiteEx_FWD_DEFINED__ +typedef struct IOleInPlaceSiteEx IOleInPlaceSiteEx; +#define __IOleInPlaceSiteWindowless_FWD_DEFINED__ +typedef struct IOleInPlaceSiteWindowless IOleInPlaceSiteWindowless; +#define __IViewObjectEx_FWD_DEFINED__ +typedef struct IViewObjectEx IViewObjectEx; +#define __IOleUndoUnit_FWD_DEFINED__ +typedef struct IOleUndoUnit IOleUndoUnit; +#define __IOleParentUndoUnit_FWD_DEFINED__ +typedef struct IOleParentUndoUnit IOleParentUndoUnit; +#define __IEnumOleUndoUnits_FWD_DEFINED__ +typedef struct IEnumOleUndoUnits IEnumOleUndoUnits; +#define __IOleUndoManager_FWD_DEFINED__ +typedef struct IOleUndoManager IOleUndoManager; +#define __IPointerInactive_FWD_DEFINED__ +typedef struct IPointerInactive IPointerInactive; +#define __IObjectWithSite_FWD_DEFINED__ +typedef struct IObjectWithSite IObjectWithSite; +#define __IPerPropertyBrowsing_FWD_DEFINED__ +typedef struct IPerPropertyBrowsing IPerPropertyBrowsing; +#define __IPropertyBag2_FWD_DEFINED__ +typedef struct IPropertyBag2 IPropertyBag2; +#define __IPersistPropertyBag2_FWD_DEFINED__ +typedef struct IPersistPropertyBag2 IPersistPropertyBag2; +#define __IAdviseSinkEx_FWD_DEFINED__ +typedef struct IAdviseSinkEx IAdviseSinkEx; +#define __IQuickActivate_FWD_DEFINED__ +typedef struct IQuickActivate IQuickActivate; +#undef interface +#define interface struct +#undef interface +#define interface struct +#undef interface +#define interface struct +#undef interface +#define interface struct +#undef interface +#define interface struct +#define __IOleControlTypes_INTERFACE_DEFINED__ +extern RPC_IF_HANDLE IOleControlTypes_v1_0_c_ifspec; +extern RPC_IF_HANDLE IOleControlTypes_v1_0_s_ifspec; +typedef enum tagUASFLAGS { + UAS_NORMAL = 0x0, + UAS_BLOCKED = 0x1, + UAS_NOPARENTENABLE = 0x2, + UAS_MASK = 0x3 +} UASFLAGS; +typedef enum tagREADYSTATE { + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 +} READYSTATE; +#define __IEnumConnections_INTERFACE_DEFINED__ +typedef IEnumConnections *PENUMCONNECTIONS; +typedef IEnumConnections *LPENUMCONNECTIONS; +typedef struct tagCONNECTDATA { + IUnknown *pUnk; + DWORD dwCookie; +} CONNECTDATA; +typedef struct tagCONNECTDATA *PCONNECTDATA; +typedef struct tagCONNECTDATA *LPCONNECTDATA; +extern const GUID IID_IEnumConnections; +typedef struct IEnumConnectionsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumConnections *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumConnections *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumConnections *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumConnections *This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG *pcFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumConnections *This, + ULONG cConnections); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumConnections *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumConnections *This, + IEnumConnections **ppEnum); +} IEnumConnectionsVtbl; +struct IEnumConnections { + IEnumConnectionsVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumConnections_RemoteNext_Proxy( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG *pcFetched); +void __attribute__((__stdcall__)) IEnumConnections_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumConnections_Next_Proxy( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG *pcFetched); +HRESULT __attribute__((__stdcall__)) IEnumConnections_Next_Stub( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG *pcFetched); +#define __IConnectionPoint_INTERFACE_DEFINED__ +typedef IConnectionPoint *PCONNECTIONPOINT; +typedef IConnectionPoint *LPCONNECTIONPOINT; +extern const GUID IID_IConnectionPoint; +typedef struct IConnectionPointVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IConnectionPoint *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IConnectionPoint *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IConnectionPoint *This); + HRESULT (__attribute__((__stdcall__)) *GetConnectionInterface)( + IConnectionPoint *This, + IID *pIID); + HRESULT (__attribute__((__stdcall__)) *GetConnectionPointContainer)( + IConnectionPoint *This, + IConnectionPointContainer **ppCPC); + HRESULT (__attribute__((__stdcall__)) *Advise)( + IConnectionPoint *This, + IUnknown *pUnkSink, + DWORD *pdwCookie); + HRESULT (__attribute__((__stdcall__)) *Unadvise)( + IConnectionPoint *This, + DWORD dwCookie); + HRESULT (__attribute__((__stdcall__)) *EnumConnections)( + IConnectionPoint *This, + IEnumConnections **ppEnum); +} IConnectionPointVtbl; +struct IConnectionPoint { + IConnectionPointVtbl* lpVtbl; +}; +#define __IEnumConnectionPoints_INTERFACE_DEFINED__ +typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS; +typedef IEnumConnectionPoints *LPENUMCONNECTIONPOINTS; +extern const GUID IID_IEnumConnectionPoints; +typedef struct IEnumConnectionPointsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumConnectionPoints *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumConnectionPoints *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumConnectionPoints *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumConnectionPoints *This, + ULONG cConnections, + LPCONNECTIONPOINT *ppCP, + ULONG *pcFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumConnectionPoints *This, + ULONG cConnections); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumConnectionPoints *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumConnectionPoints *This, + IEnumConnectionPoints **ppEnum); +} IEnumConnectionPointsVtbl; +struct IEnumConnectionPoints { + IEnumConnectionPointsVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumConnectionPoints_RemoteNext_Proxy( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT *ppCP, + ULONG *pcFetched); +void __attribute__((__stdcall__)) IEnumConnectionPoints_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumConnectionPoints_Next_Proxy( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT *ppCP, + ULONG *pcFetched); +HRESULT __attribute__((__stdcall__)) IEnumConnectionPoints_Next_Stub( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT *ppCP, + ULONG *pcFetched); +#define __IConnectionPointContainer_INTERFACE_DEFINED__ +typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER; +typedef IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER; +extern const GUID IID_IConnectionPointContainer; +typedef struct IConnectionPointContainerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IConnectionPointContainer *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IConnectionPointContainer *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IConnectionPointContainer *This); + HRESULT (__attribute__((__stdcall__)) *EnumConnectionPoints)( + IConnectionPointContainer *This, + IEnumConnectionPoints **ppEnum); + HRESULT (__attribute__((__stdcall__)) *FindConnectionPoint)( + IConnectionPointContainer *This, + const IID *const riid, + IConnectionPoint **ppCP); +} IConnectionPointContainerVtbl; +struct IConnectionPointContainer { + IConnectionPointContainerVtbl* lpVtbl; +}; +#define __IClassFactory2_INTERFACE_DEFINED__ +typedef IClassFactory2 *LPCLASSFACTORY2; +typedef struct tagLICINFO { + LONG cbLicInfo; + WINBOOL fRuntimeKeyAvail; + WINBOOL fLicVerified; +} LICINFO; +typedef struct tagLICINFO *LPLICINFO; +extern const GUID IID_IClassFactory2; +typedef struct IClassFactory2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IClassFactory2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IClassFactory2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IClassFactory2 *This); + HRESULT (__attribute__((__stdcall__)) *CreateInstance)( + IClassFactory2 *This, + IUnknown *pUnkOuter, + const IID *const riid, + void **ppvObject); + HRESULT (__attribute__((__stdcall__)) *LockServer)( + IClassFactory2 *This, + WINBOOL fLock); + HRESULT (__attribute__((__stdcall__)) *GetLicInfo)( + IClassFactory2 *This, + LICINFO *pLicInfo); + HRESULT (__attribute__((__stdcall__)) *RequestLicKey)( + IClassFactory2 *This, + DWORD dwReserved, + BSTR *pBstrKey); + HRESULT (__attribute__((__stdcall__)) *CreateInstanceLic)( + IClassFactory2 *This, + IUnknown *pUnkOuter, + IUnknown *pUnkReserved, + const IID *const riid, + BSTR bstrKey, + PVOID *ppvObj); +} IClassFactory2Vtbl; +struct IClassFactory2 { + IClassFactory2Vtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IClassFactory2_RemoteCreateInstanceLic_Proxy( + IClassFactory2* This, + const IID *const riid, + BSTR bstrKey, + IUnknown **ppvObj); +void __attribute__((__stdcall__)) IClassFactory2_RemoteCreateInstanceLic_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IClassFactory2_CreateInstanceLic_Proxy( + IClassFactory2* This, + IUnknown *pUnkOuter, + IUnknown *pUnkReserved, + const IID *const riid, + BSTR bstrKey, + PVOID *ppvObj); +HRESULT __attribute__((__stdcall__)) IClassFactory2_CreateInstanceLic_Stub( + IClassFactory2* This, + const IID *const riid, + BSTR bstrKey, + IUnknown **ppvObj); +#define __IProvideClassInfo_INTERFACE_DEFINED__ +typedef IProvideClassInfo *LPPROVIDECLASSINFO; +extern const GUID IID_IProvideClassInfo; +typedef struct IProvideClassInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IProvideClassInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IProvideClassInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IProvideClassInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetClassInfoA)( + IProvideClassInfo *This, + ITypeInfo **ppTI); +} IProvideClassInfoVtbl; +struct IProvideClassInfo { + IProvideClassInfoVtbl* lpVtbl; +}; +#define __IProvideClassInfo2_INTERFACE_DEFINED__ +typedef IProvideClassInfo2 *LPPROVIDECLASSINFO2; +typedef enum tagGUIDKIND { + GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1 +} GUIDKIND; +extern const GUID IID_IProvideClassInfo2; +typedef struct IProvideClassInfo2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IProvideClassInfo2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IProvideClassInfo2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IProvideClassInfo2 *This); + HRESULT (__attribute__((__stdcall__)) *GetClassInfoA)( + IProvideClassInfo2 *This, + ITypeInfo **ppTI); + HRESULT (__attribute__((__stdcall__)) *GetGUID)( + IProvideClassInfo2 *This, + DWORD dwGuidKind, + GUID *pGUID); +} IProvideClassInfo2Vtbl; +struct IProvideClassInfo2 { + IProvideClassInfo2Vtbl* lpVtbl; +}; +#define __IProvideMultipleClassInfo_INTERFACE_DEFINED__ +#define MULTICLASSINFO_GETTYPEINFO 0x1 +#define MULTICLASSINFO_GETNUMRESERVEDDISPIDS 0x2 +#define MULTICLASSINFO_GETIIDPRIMARY 0x4 +#define MULTICLASSINFO_GETIIDSOURCE 0x8 +#define TIFLAGS_EXTENDDISPATCHONLY 0x1 +typedef IProvideMultipleClassInfo *LPPROVIDEMULTIPLECLASSINFO; +extern const GUID IID_IProvideMultipleClassInfo; +typedef struct IProvideMultipleClassInfoVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IProvideMultipleClassInfo *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IProvideMultipleClassInfo *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IProvideMultipleClassInfo *This); + HRESULT (__attribute__((__stdcall__)) *GetClassInfoA)( + IProvideMultipleClassInfo *This, + ITypeInfo **ppTI); + HRESULT (__attribute__((__stdcall__)) *GetGUID)( + IProvideMultipleClassInfo *This, + DWORD dwGuidKind, + GUID *pGUID); + HRESULT (__attribute__((__stdcall__)) *GetMultiTypeInfoCount)( + IProvideMultipleClassInfo *This, + ULONG *pcti); + HRESULT (__attribute__((__stdcall__)) *GetInfoOfIndex)( + IProvideMultipleClassInfo *This, + ULONG iti, + DWORD dwFlags, + ITypeInfo **pptiCoClass, + DWORD *pdwTIFlags, + ULONG *pcdispidReserved, + IID *piidPrimary, + IID *piidSource); +} IProvideMultipleClassInfoVtbl; +struct IProvideMultipleClassInfo { + IProvideMultipleClassInfoVtbl* lpVtbl; +}; +#define __IOleControl_INTERFACE_DEFINED__ +typedef IOleControl *LPOLECONTROL; +typedef struct tagCONTROLINFO { + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; +} CONTROLINFO; +typedef struct tagCONTROLINFO *LPCONTROLINFO; +typedef enum tagCTRLINFO { + CTRLINFO_EATS_RETURN = 1, + CTRLINFO_EATS_ESCAPE = 2 +} CTRLINFO; +extern const GUID IID_IOleControl; +typedef struct IOleControlVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleControl *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleControl *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleControl *This); + HRESULT (__attribute__((__stdcall__)) *GetControlInfo)( + IOleControl *This, + CONTROLINFO *pCI); + HRESULT (__attribute__((__stdcall__)) *OnMnemonic)( + IOleControl *This, + MSG *pMsg); + HRESULT (__attribute__((__stdcall__)) *OnAmbientPropertyChange)( + IOleControl *This, + DISPID dispID); + HRESULT (__attribute__((__stdcall__)) *FreezeEvents)( + IOleControl *This, + WINBOOL bFreeze); +} IOleControlVtbl; +struct IOleControl { + IOleControlVtbl* lpVtbl; +}; +#define __IOleControlSite_INTERFACE_DEFINED__ +typedef IOleControlSite *LPOLECONTROLSITE; +typedef struct tagPOINTF { + FLOAT x; + FLOAT y; +} POINTF; +typedef struct tagPOINTF *LPPOINTF; +typedef enum tagXFORMCOORDS { + XFORMCOORDS_POSITION = 0x1, + XFORMCOORDS_SIZE = 0x2, + XFORMCOORDS_HIMETRICTOCONTAINER = 0x4, + XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8, + XFORMCOORDS_EVENTCOMPAT = 0x10 +} XFORMCOORDS; +extern const GUID IID_IOleControlSite; +typedef struct IOleControlSiteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleControlSite *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleControlSite *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleControlSite *This); + HRESULT (__attribute__((__stdcall__)) *OnControlInfoChanged)( + IOleControlSite *This); + HRESULT (__attribute__((__stdcall__)) *LockInPlaceActive)( + IOleControlSite *This, + WINBOOL fLock); + HRESULT (__attribute__((__stdcall__)) *GetExtendedControl)( + IOleControlSite *This, + IDispatch **ppDisp); + HRESULT (__attribute__((__stdcall__)) *TransformCoords)( + IOleControlSite *This, + POINTL *pPtlHimetric, + POINTF *pPtfContainer, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)( + IOleControlSite *This, + MSG *pMsg, + DWORD grfModifiers); + HRESULT (__attribute__((__stdcall__)) *OnFocus)( + IOleControlSite *This, + WINBOOL fGotFocus); + HRESULT (__attribute__((__stdcall__)) *ShowPropertyFrame)( + IOleControlSite *This); +} IOleControlSiteVtbl; +struct IOleControlSite { + IOleControlSiteVtbl* lpVtbl; +}; +#define __IPropertyPage_INTERFACE_DEFINED__ +typedef IPropertyPage *LPPROPERTYPAGE; +typedef struct tagPROPPAGEINFO { + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; +} PROPPAGEINFO; +typedef struct tagPROPPAGEINFO *LPPROPPAGEINFO; +extern const GUID IID_IPropertyPage; +typedef struct IPropertyPageVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertyPage *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertyPage *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertyPage *This); + HRESULT (__attribute__((__stdcall__)) *SetPageSite)( + IPropertyPage *This, + IPropertyPageSite *pPageSite); + HRESULT (__attribute__((__stdcall__)) *Activate)( + IPropertyPage *This, + HWND hWndParent, + LPCRECT pRect, + WINBOOL bModal); + HRESULT (__attribute__((__stdcall__)) *Deactivate)( + IPropertyPage *This); + HRESULT (__attribute__((__stdcall__)) *GetPageInfo)( + IPropertyPage *This, + PROPPAGEINFO *pPageInfo); + HRESULT (__attribute__((__stdcall__)) *SetObjects)( + IPropertyPage *This, + ULONG cObjects, + IUnknown **ppUnk); + HRESULT (__attribute__((__stdcall__)) *Show)( + IPropertyPage *This, + UINT nCmdShow); + HRESULT (__attribute__((__stdcall__)) *Move)( + IPropertyPage *This, + LPCRECT pRect); + HRESULT (__attribute__((__stdcall__)) *IsPageDirty)( + IPropertyPage *This); + HRESULT (__attribute__((__stdcall__)) *Apply)( + IPropertyPage *This); + HRESULT (__attribute__((__stdcall__)) *Help)( + IPropertyPage *This, + LPCOLESTR pszHelpDir); + HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)( + IPropertyPage *This, + MSG *pMsg); +} IPropertyPageVtbl; +struct IPropertyPage { + IPropertyPageVtbl* lpVtbl; +}; +#define __IPropertyPage2_INTERFACE_DEFINED__ +typedef IPropertyPage2 *LPPROPERTYPAGE2; +extern const GUID IID_IPropertyPage2; +typedef struct IPropertyPage2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertyPage2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertyPage2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertyPage2 *This); + HRESULT (__attribute__((__stdcall__)) *SetPageSite)( + IPropertyPage2 *This, + IPropertyPageSite *pPageSite); + HRESULT (__attribute__((__stdcall__)) *Activate)( + IPropertyPage2 *This, + HWND hWndParent, + LPCRECT pRect, + WINBOOL bModal); + HRESULT (__attribute__((__stdcall__)) *Deactivate)( + IPropertyPage2 *This); + HRESULT (__attribute__((__stdcall__)) *GetPageInfo)( + IPropertyPage2 *This, + PROPPAGEINFO *pPageInfo); + HRESULT (__attribute__((__stdcall__)) *SetObjects)( + IPropertyPage2 *This, + ULONG cObjects, + IUnknown **ppUnk); + HRESULT (__attribute__((__stdcall__)) *Show)( + IPropertyPage2 *This, + UINT nCmdShow); + HRESULT (__attribute__((__stdcall__)) *Move)( + IPropertyPage2 *This, + LPCRECT pRect); + HRESULT (__attribute__((__stdcall__)) *IsPageDirty)( + IPropertyPage2 *This); + HRESULT (__attribute__((__stdcall__)) *Apply)( + IPropertyPage2 *This); + HRESULT (__attribute__((__stdcall__)) *Help)( + IPropertyPage2 *This, + LPCOLESTR pszHelpDir); + HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)( + IPropertyPage2 *This, + MSG *pMsg); + HRESULT (__attribute__((__stdcall__)) *EditProperty)( + IPropertyPage2 *This, + DISPID dispID); +} IPropertyPage2Vtbl; +struct IPropertyPage2 { + IPropertyPage2Vtbl* lpVtbl; +}; +#define __IPropertyPageSite_INTERFACE_DEFINED__ +typedef IPropertyPageSite *LPPROPERTYPAGESITE; +typedef enum tagPROPPAGESTATUS { + PROPPAGESTATUS_DIRTY = 0x1, + PROPPAGESTATUS_VALIDATE = 0x2, + PROPPAGESTATUS_CLEAN = 0x4 +} PROPPAGESTATUS; +extern const GUID IID_IPropertyPageSite; +typedef struct IPropertyPageSiteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertyPageSite *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertyPageSite *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertyPageSite *This); + HRESULT (__attribute__((__stdcall__)) *OnStatusChange)( + IPropertyPageSite *This, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *GetLocaleID)( + IPropertyPageSite *This, + LCID *pLocaleID); + HRESULT (__attribute__((__stdcall__)) *GetPageContainer)( + IPropertyPageSite *This, + IUnknown **ppUnk); + HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)( + IPropertyPageSite *This, + MSG *pMsg); +} IPropertyPageSiteVtbl; +struct IPropertyPageSite { + IPropertyPageSiteVtbl* lpVtbl; +}; +#define __IPropertyNotifySink_INTERFACE_DEFINED__ +typedef IPropertyNotifySink *LPPROPERTYNOTIFYSINK; +extern const GUID IID_IPropertyNotifySink; +typedef struct IPropertyNotifySinkVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertyNotifySink *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertyNotifySink *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertyNotifySink *This); + HRESULT (__attribute__((__stdcall__)) *OnChanged)( + IPropertyNotifySink *This, + DISPID dispID); + HRESULT (__attribute__((__stdcall__)) *OnRequestEdit)( + IPropertyNotifySink *This, + DISPID dispID); +} IPropertyNotifySinkVtbl; +struct IPropertyNotifySink { + IPropertyNotifySinkVtbl* lpVtbl; +}; +#define __ISpecifyPropertyPages_INTERFACE_DEFINED__ +typedef ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; +typedef struct tagCAUUID { + ULONG cElems; + GUID *pElems; +} CAUUID; +typedef struct tagCAUUID *LPCAUUID; +extern const GUID IID_ISpecifyPropertyPages; +typedef struct ISpecifyPropertyPagesVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISpecifyPropertyPages *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISpecifyPropertyPages *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISpecifyPropertyPages *This); + HRESULT (__attribute__((__stdcall__)) *GetPages)( + ISpecifyPropertyPages *This, + CAUUID *pPages); +} ISpecifyPropertyPagesVtbl; +struct ISpecifyPropertyPages { + ISpecifyPropertyPagesVtbl* lpVtbl; +}; +#define __IPersistMemory_INTERFACE_DEFINED__ +typedef IPersistMemory *LPPERSISTMEMORY; +extern const GUID IID_IPersistMemory; +typedef struct IPersistMemoryVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistMemory *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistMemory *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistMemory *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistMemory *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IPersistMemory *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistMemory *This, + LPVOID pMem, + ULONG cbSize); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistMemory *This, + LPVOID pMem, + WINBOOL fClearDirty, + ULONG cbSize); + HRESULT (__attribute__((__stdcall__)) *GetSizeMax)( + IPersistMemory *This, + ULONG *pCbSize); + HRESULT (__attribute__((__stdcall__)) *InitNew)( + IPersistMemory *This); +} IPersistMemoryVtbl; +struct IPersistMemory { + IPersistMemoryVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IPersistMemory_RemoteLoad_Proxy( + IPersistMemory* This, + BYTE *pMem, + ULONG cbSize); +void __attribute__((__stdcall__)) IPersistMemory_RemoteLoad_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IPersistMemory_RemoteSave_Proxy( + IPersistMemory* This, + BYTE *pMem, + WINBOOL fClearDirty, + ULONG cbSize); +void __attribute__((__stdcall__)) IPersistMemory_RemoteSave_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IPersistMemory_Load_Proxy( + IPersistMemory* This, + LPVOID pMem, + ULONG cbSize); +HRESULT __attribute__((__stdcall__)) IPersistMemory_Load_Stub( + IPersistMemory* This, + BYTE *pMem, + ULONG cbSize); +HRESULT __attribute__((__stdcall__)) IPersistMemory_Save_Proxy( + IPersistMemory* This, + LPVOID pMem, + WINBOOL fClearDirty, + ULONG cbSize); +HRESULT __attribute__((__stdcall__)) IPersistMemory_Save_Stub( + IPersistMemory* This, + BYTE *pMem, + WINBOOL fClearDirty, + ULONG cbSize); +#define __IPersistStreamInit_INTERFACE_DEFINED__ +typedef IPersistStreamInit *LPPERSISTSTREAMINIT; +extern const GUID IID_IPersistStreamInit; +typedef struct IPersistStreamInitVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistStreamInit *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistStreamInit *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistStreamInit *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistStreamInit *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IPersistStreamInit *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistStreamInit *This, + LPSTREAM pStm); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistStreamInit *This, + LPSTREAM pStm, + WINBOOL fClearDirty); + HRESULT (__attribute__((__stdcall__)) *GetSizeMax)( + IPersistStreamInit *This, + ULARGE_INTEGER *pCbSize); + HRESULT (__attribute__((__stdcall__)) *InitNew)( + IPersistStreamInit *This); +} IPersistStreamInitVtbl; +struct IPersistStreamInit { + IPersistStreamInitVtbl* lpVtbl; +}; +#define __IPersistPropertyBag_INTERFACE_DEFINED__ +typedef IPersistPropertyBag *LPPERSISTPROPERTYBAG; +extern const GUID IID_IPersistPropertyBag; +typedef struct IPersistPropertyBagVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistPropertyBag *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistPropertyBag *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistPropertyBag *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistPropertyBag *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *InitNew)( + IPersistPropertyBag *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistPropertyBag *This, + IPropertyBag *pPropBag, + IErrorLog *pErrorLog); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistPropertyBag *This, + IPropertyBag *pPropBag, + WINBOOL fClearDirty, + WINBOOL fSaveAllProperties); +} IPersistPropertyBagVtbl; +struct IPersistPropertyBag { + IPersistPropertyBagVtbl* lpVtbl; +}; +#define __ISimpleFrameSite_INTERFACE_DEFINED__ +typedef ISimpleFrameSite *LPSIMPLEFRAMESITE; +extern const GUID IID_ISimpleFrameSite; +typedef struct ISimpleFrameSiteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + ISimpleFrameSite *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + ISimpleFrameSite *This); + ULONG (__attribute__((__stdcall__)) *Release)( + ISimpleFrameSite *This); + HRESULT (__attribute__((__stdcall__)) *PreMessageFilter)( + ISimpleFrameSite *This, + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT *plResult, + DWORD *pdwCookie); + HRESULT (__attribute__((__stdcall__)) *PostMessageFilter)( + ISimpleFrameSite *This, + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT *plResult, + DWORD dwCookie); +} ISimpleFrameSiteVtbl; +struct ISimpleFrameSite { + ISimpleFrameSiteVtbl* lpVtbl; +}; +#define __IFont_INTERFACE_DEFINED__ +typedef IFont *LPFONT; +typedef TEXTMETRICW TEXTMETRICOLE; +typedef TEXTMETRICOLE *LPTEXTMETRICOLE; +extern const GUID IID_IFont; +typedef struct IFontVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IFont *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IFont *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IFont *This); + HRESULT (__attribute__((__stdcall__)) *get_Name)( + IFont *This, + BSTR *pName); + HRESULT (__attribute__((__stdcall__)) *put_Name)( + IFont *This, + BSTR name); + HRESULT (__attribute__((__stdcall__)) *get_Size)( + IFont *This, + CY *pSize); + HRESULT (__attribute__((__stdcall__)) *put_Size)( + IFont *This, + CY size); + HRESULT (__attribute__((__stdcall__)) *get_Bold)( + IFont *This, + WINBOOL *pBold); + HRESULT (__attribute__((__stdcall__)) *put_Bold)( + IFont *This, + WINBOOL bold); + HRESULT (__attribute__((__stdcall__)) *get_Italic)( + IFont *This, + WINBOOL *pItalic); + HRESULT (__attribute__((__stdcall__)) *put_Italic)( + IFont *This, + WINBOOL italic); + HRESULT (__attribute__((__stdcall__)) *get_Underline)( + IFont *This, + WINBOOL *pUnderline); + HRESULT (__attribute__((__stdcall__)) *put_Underline)( + IFont *This, + WINBOOL underline); + HRESULT (__attribute__((__stdcall__)) *get_Strikethrough)( + IFont *This, + WINBOOL *pStrikethrough); + HRESULT (__attribute__((__stdcall__)) *put_Strikethrough)( + IFont *This, + WINBOOL strikethrough); + HRESULT (__attribute__((__stdcall__)) *get_Weight)( + IFont *This, + SHORT *pWeight); + HRESULT (__attribute__((__stdcall__)) *put_Weight)( + IFont *This, + SHORT weight); + HRESULT (__attribute__((__stdcall__)) *get_Charset)( + IFont *This, + SHORT *pCharset); + HRESULT (__attribute__((__stdcall__)) *put_Charset)( + IFont *This, + SHORT charset); + HRESULT (__attribute__((__stdcall__)) *get_hFont)( + IFont *This, + HFONT *phFont); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IFont *This, + IFont **ppFont); + HRESULT (__attribute__((__stdcall__)) *IsEqual)( + IFont *This, + IFont *pFontOther); + HRESULT (__attribute__((__stdcall__)) *SetRatio)( + IFont *This, + LONG cyLogical, + LONG cyHimetric); + HRESULT (__attribute__((__stdcall__)) *QueryTextMetrics)( + IFont *This, + TEXTMETRICOLE *pTM); + HRESULT (__attribute__((__stdcall__)) *AddRefHfont)( + IFont *This, + HFONT hFont); + HRESULT (__attribute__((__stdcall__)) *ReleaseHfont)( + IFont *This, + HFONT hFont); + HRESULT (__attribute__((__stdcall__)) *SetHdc)( + IFont *This, + HDC hDC); +} IFontVtbl; +struct IFont { + IFontVtbl* lpVtbl; +}; +#define __IPicture_INTERFACE_DEFINED__ +typedef IPicture *LPPICTURE; +typedef enum tagPictureAttributes { + PICTURE_SCALABLE = 0x1, + PICTURE_TRANSPARENT = 0x2 +} PICTUREATTRIBUTES; +typedef UINT OLE_HANDLE; +typedef LONG OLE_XPOS_HIMETRIC; +typedef LONG OLE_YPOS_HIMETRIC; +typedef LONG OLE_XSIZE_HIMETRIC; +typedef LONG OLE_YSIZE_HIMETRIC; +extern const GUID IID_IPicture; +typedef struct IPictureVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPicture *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPicture *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPicture *This); + HRESULT (__attribute__((__stdcall__)) *get_Handle)( + IPicture *This, + OLE_HANDLE *pHandle); + HRESULT (__attribute__((__stdcall__)) *get_hPal)( + IPicture *This, + OLE_HANDLE *phPal); + HRESULT (__attribute__((__stdcall__)) *get_Type)( + IPicture *This, + SHORT *pType); + HRESULT (__attribute__((__stdcall__)) *get_Width)( + IPicture *This, + OLE_XSIZE_HIMETRIC *pWidth); + HRESULT (__attribute__((__stdcall__)) *get_Height)( + IPicture *This, + OLE_YSIZE_HIMETRIC *pHeight); + HRESULT (__attribute__((__stdcall__)) *Render)( + IPicture *This, + HDC hDC, + LONG x, + LONG y, + LONG cx, + LONG cy, + OLE_XPOS_HIMETRIC xSrc, + OLE_YPOS_HIMETRIC ySrc, + OLE_XSIZE_HIMETRIC cxSrc, + OLE_YSIZE_HIMETRIC cySrc, + LPCRECT pRcWBounds); + HRESULT (__attribute__((__stdcall__)) *set_hPal)( + IPicture *This, + OLE_HANDLE hPal); + HRESULT (__attribute__((__stdcall__)) *get_CurDC)( + IPicture *This, + HDC *phDC); + HRESULT (__attribute__((__stdcall__)) *SelectPicture)( + IPicture *This, + HDC hDCIn, + HDC *phDCOut, + OLE_HANDLE *phBmpOut); + HRESULT (__attribute__((__stdcall__)) *get_KeepOriginalFormat)( + IPicture *This, + WINBOOL *pKeep); + HRESULT (__attribute__((__stdcall__)) *put_KeepOriginalFormat)( + IPicture *This, + WINBOOL keep); + HRESULT (__attribute__((__stdcall__)) *PictureChanged)( + IPicture *This); + HRESULT (__attribute__((__stdcall__)) *SaveAsFile)( + IPicture *This, + LPSTREAM pStream, + WINBOOL fSaveMemCopy, + LONG *pCbSize); + HRESULT (__attribute__((__stdcall__)) *get_Attributes)( + IPicture *This, + DWORD *pDwAttr); +} IPictureVtbl; +struct IPicture { + IPictureVtbl* lpVtbl; +}; +#define __IPicture2_INTERFACE_DEFINED__ +typedef IPicture2 *LPPICTURE2; +typedef UINT_PTR HHANDLE; +extern const GUID IID_IPicture2; +typedef struct IPicture2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPicture2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPicture2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPicture2 *This); + HRESULT (__attribute__((__stdcall__)) *get_Handle)( + IPicture2 *This, + HHANDLE *pHandle); + HRESULT (__attribute__((__stdcall__)) *get_hPal)( + IPicture2 *This, + HHANDLE *phPal); + HRESULT (__attribute__((__stdcall__)) *get_Type)( + IPicture2 *This, + SHORT *pType); + HRESULT (__attribute__((__stdcall__)) *get_Width)( + IPicture2 *This, + OLE_XSIZE_HIMETRIC *pWidth); + HRESULT (__attribute__((__stdcall__)) *get_Height)( + IPicture2 *This, + OLE_YSIZE_HIMETRIC *pHeight); + HRESULT (__attribute__((__stdcall__)) *Render)( + IPicture2 *This, + HDC hDC, + LONG x, + LONG y, + LONG cx, + LONG cy, + OLE_XPOS_HIMETRIC xSrc, + OLE_YPOS_HIMETRIC ySrc, + OLE_XSIZE_HIMETRIC cxSrc, + OLE_YSIZE_HIMETRIC cySrc, + LPCRECT pRcWBounds); + HRESULT (__attribute__((__stdcall__)) *set_hPal)( + IPicture2 *This, + HHANDLE hPal); + HRESULT (__attribute__((__stdcall__)) *get_CurDC)( + IPicture2 *This, + HDC *phDC); + HRESULT (__attribute__((__stdcall__)) *SelectPicture)( + IPicture2 *This, + HDC hDCIn, + HDC *phDCOut, + HHANDLE *phBmpOut); + HRESULT (__attribute__((__stdcall__)) *get_KeepOriginalFormat)( + IPicture2 *This, + WINBOOL *pKeep); + HRESULT (__attribute__((__stdcall__)) *put_KeepOriginalFormat)( + IPicture2 *This, + WINBOOL keep); + HRESULT (__attribute__((__stdcall__)) *PictureChanged)( + IPicture2 *This); + HRESULT (__attribute__((__stdcall__)) *SaveAsFile)( + IPicture2 *This, + LPSTREAM pStream, + WINBOOL fSaveMemCopy, + LONG *pCbSize); + HRESULT (__attribute__((__stdcall__)) *get_Attributes)( + IPicture2 *This, + DWORD *pDwAttr); +} IPicture2Vtbl; +struct IPicture2 { + IPicture2Vtbl* lpVtbl; +}; +#define __IFontEventsDisp_INTERFACE_DEFINED__ +typedef IFontEventsDisp *LPFONTEVENTS; +extern const GUID IID_IFontEventsDisp; +typedef struct IFontEventsDispVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IFontEventsDisp *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IFontEventsDisp *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IFontEventsDisp *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IFontEventsDisp *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IFontEventsDisp *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IFontEventsDisp *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IFontEventsDisp *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); +} IFontEventsDispVtbl; +struct IFontEventsDisp { + IFontEventsDispVtbl* lpVtbl; +}; +#define __IFontDisp_INTERFACE_DEFINED__ +typedef IFontDisp *LPFONTDISP; +extern const GUID IID_IFontDisp; +typedef struct IFontDispVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IFontDisp *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IFontDisp *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IFontDisp *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IFontDisp *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IFontDisp *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IFontDisp *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IFontDisp *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); +} IFontDispVtbl; +struct IFontDisp { + IFontDispVtbl* lpVtbl; +}; +#define __IPictureDisp_INTERFACE_DEFINED__ +typedef IPictureDisp *LPPICTUREDISP; +extern const GUID IID_IPictureDisp; +typedef struct IPictureDispVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPictureDisp *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPictureDisp *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPictureDisp *This); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)( + IPictureDisp *This, + UINT *pctinfo); + HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)( + IPictureDisp *This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)( + IPictureDisp *This, + const IID *const riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + HRESULT (__attribute__((__stdcall__)) *Invoke)( + IPictureDisp *This, + DISPID dispIdMember, + const IID *const riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); +} IPictureDispVtbl; +struct IPictureDisp { + IPictureDispVtbl* lpVtbl; +}; +#define __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__ +typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS; +extern const GUID IID_IOleInPlaceObjectWindowless; +typedef struct IOleInPlaceObjectWindowlessVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceObjectWindowless *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceObjectWindowless *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceObjectWindowless *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceObjectWindowless *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceObjectWindowless *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *InPlaceDeactivate)( + IOleInPlaceObjectWindowless *This); + HRESULT (__attribute__((__stdcall__)) *UIDeactivate)( + IOleInPlaceObjectWindowless *This); + HRESULT (__attribute__((__stdcall__)) *SetObjectRects)( + IOleInPlaceObjectWindowless *This, + LPCRECT lprcPosRect, + LPCRECT lprcClipRect); + HRESULT (__attribute__((__stdcall__)) *ReactivateAndUndo)( + IOleInPlaceObjectWindowless *This); + HRESULT (__attribute__((__stdcall__)) *OnWindowMessage)( + IOleInPlaceObjectWindowless *This, + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT *plResult); + HRESULT (__attribute__((__stdcall__)) *GetDropTarget)( + IOleInPlaceObjectWindowless *This, + IDropTarget **ppDropTarget); +} IOleInPlaceObjectWindowlessVtbl; +struct IOleInPlaceObjectWindowless { + IOleInPlaceObjectWindowlessVtbl* lpVtbl; +}; +#define __IOleInPlaceSiteEx_INTERFACE_DEFINED__ +typedef IOleInPlaceSiteEx *LPOLEINPLACESITEEX; +typedef enum tagACTIVATEFLAGS { + ACTIVATE_WINDOWLESS = 1 +} ACTIVATEFLAGS; +extern const GUID IID_IOleInPlaceSiteEx; +typedef struct IOleInPlaceSiteExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceSiteEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceSiteEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceSiteEx *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceSiteEx *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceSiteEx *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *CanInPlaceActivate)( + IOleInPlaceSiteEx *This); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivate)( + IOleInPlaceSiteEx *This); + HRESULT (__attribute__((__stdcall__)) *OnUIActivate)( + IOleInPlaceSiteEx *This); + HRESULT (__attribute__((__stdcall__)) *GetWindowContext)( + IOleInPlaceSiteEx *This, + IOleInPlaceFrame **ppFrame, + IOleInPlaceUIWindow **ppDoc, + LPRECT lprcPosRect, + LPRECT lprcClipRect, + LPOLEINPLACEFRAMEINFO lpFrameInfo); + HRESULT (__attribute__((__stdcall__)) *Scroll)( + IOleInPlaceSiteEx *This, + SIZE scrollExtant); + HRESULT (__attribute__((__stdcall__)) *OnUIDeactivate)( + IOleInPlaceSiteEx *This, + WINBOOL fUndoable); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivate)( + IOleInPlaceSiteEx *This); + HRESULT (__attribute__((__stdcall__)) *DiscardUndoState)( + IOleInPlaceSiteEx *This); + HRESULT (__attribute__((__stdcall__)) *DeactivateAndUndo)( + IOleInPlaceSiteEx *This); + HRESULT (__attribute__((__stdcall__)) *OnPosRectChange)( + IOleInPlaceSiteEx *This, + LPCRECT lprcPosRect); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivateEx)( + IOleInPlaceSiteEx *This, + WINBOOL *pfNoRedraw, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivateEx)( + IOleInPlaceSiteEx *This, + WINBOOL fNoRedraw); + HRESULT (__attribute__((__stdcall__)) *RequestUIActivate)( + IOleInPlaceSiteEx *This); +} IOleInPlaceSiteExVtbl; +struct IOleInPlaceSiteEx { + IOleInPlaceSiteExVtbl* lpVtbl; +}; +#define __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__ +typedef IOleInPlaceSiteWindowless *LPOLEINPLACESITEWINDOWLESS; +typedef enum tagOLEDCFLAGS { + OLEDC_NODRAW = 0x1, + OLEDC_PAINTBKGND = 0x2, + OLEDC_OFFSCREEN = 0x4 +} OLEDCFLAGS; +extern const GUID IID_IOleInPlaceSiteWindowless; +typedef struct IOleInPlaceSiteWindowlessVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleInPlaceSiteWindowless *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleInPlaceSiteWindowless *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *GetWindow)( + IOleInPlaceSiteWindowless *This, + HWND *phwnd); + HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)( + IOleInPlaceSiteWindowless *This, + WINBOOL fEnterMode); + HRESULT (__attribute__((__stdcall__)) *CanInPlaceActivate)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivate)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *OnUIActivate)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *GetWindowContext)( + IOleInPlaceSiteWindowless *This, + IOleInPlaceFrame **ppFrame, + IOleInPlaceUIWindow **ppDoc, + LPRECT lprcPosRect, + LPRECT lprcClipRect, + LPOLEINPLACEFRAMEINFO lpFrameInfo); + HRESULT (__attribute__((__stdcall__)) *Scroll)( + IOleInPlaceSiteWindowless *This, + SIZE scrollExtant); + HRESULT (__attribute__((__stdcall__)) *OnUIDeactivate)( + IOleInPlaceSiteWindowless *This, + WINBOOL fUndoable); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivate)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *DiscardUndoState)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *DeactivateAndUndo)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *OnPosRectChange)( + IOleInPlaceSiteWindowless *This, + LPCRECT lprcPosRect); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivateEx)( + IOleInPlaceSiteWindowless *This, + WINBOOL *pfNoRedraw, + DWORD dwFlags); + HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivateEx)( + IOleInPlaceSiteWindowless *This, + WINBOOL fNoRedraw); + HRESULT (__attribute__((__stdcall__)) *RequestUIActivate)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *CanWindowlessActivate)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *GetCapture)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *SetCapture)( + IOleInPlaceSiteWindowless *This, + WINBOOL fCapture); + HRESULT (__attribute__((__stdcall__)) *GetFocus)( + IOleInPlaceSiteWindowless *This); + HRESULT (__attribute__((__stdcall__)) *SetFocus)( + IOleInPlaceSiteWindowless *This, + WINBOOL fFocus); + HRESULT (__attribute__((__stdcall__)) *GetDC)( + IOleInPlaceSiteWindowless *This, + LPCRECT pRect, + DWORD grfFlags, + HDC *phDC); + HRESULT (__attribute__((__stdcall__)) *ReleaseDC)( + IOleInPlaceSiteWindowless *This, + HDC hDC); + HRESULT (__attribute__((__stdcall__)) *InvalidateRect)( + IOleInPlaceSiteWindowless *This, + LPCRECT pRect, + WINBOOL fErase); + HRESULT (__attribute__((__stdcall__)) *InvalidateRgn)( + IOleInPlaceSiteWindowless *This, + HRGN hRGN, + WINBOOL fErase); + HRESULT (__attribute__((__stdcall__)) *ScrollRect)( + IOleInPlaceSiteWindowless *This, + INT dx, + INT dy, + LPCRECT pRectScroll, + LPCRECT pRectClip); + HRESULT (__attribute__((__stdcall__)) *AdjustRect)( + IOleInPlaceSiteWindowless *This, + LPRECT prc); + HRESULT (__attribute__((__stdcall__)) *OnDefWindowMessage)( + IOleInPlaceSiteWindowless *This, + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT *plResult); +} IOleInPlaceSiteWindowlessVtbl; +struct IOleInPlaceSiteWindowless { + IOleInPlaceSiteWindowlessVtbl* lpVtbl; +}; +#define __IViewObjectEx_INTERFACE_DEFINED__ +typedef IViewObjectEx *LPVIEWOBJECTEX; +typedef enum tagVIEWSTATUS { + VIEWSTATUS_OPAQUE = 1, + VIEWSTATUS_SOLIDBKGND = 2, + VIEWSTATUS_DVASPECTOPAQUE = 4, + VIEWSTATUS_DVASPECTTRANSPARENT = 8, + VIEWSTATUS_SURFACE = 16, + VIEWSTATUS_3DSURFACE = 32 +} VIEWSTATUS; +typedef enum tagHITRESULT { + HITRESULT_OUTSIDE = 0, + HITRESULT_TRANSPARENT = 1, + HITRESULT_CLOSE = 2, + HITRESULT_HIT = 3 +} HITRESULT; +typedef enum tagDVASPECT2 { + DVASPECT_OPAQUE = 16, + DVASPECT_TRANSPARENT = 32 +} DVASPECT2; +typedef struct tagExtentInfo { + ULONG cb; + DWORD dwExtentMode; + SIZEL sizelProposed; +} DVEXTENTINFO; +typedef enum tagExtentMode { + DVEXTENT_CONTENT = 0, + DVEXTENT_INTEGRAL = 1 +} DVEXTENTMODE; +typedef enum tagAspectInfoFlag { + DVASPECTINFOFLAG_CANOPTIMIZE = 1 +} DVASPECTINFOFLAG; +typedef struct tagAspectInfo { + ULONG cb; + DWORD dwFlags; +} DVASPECTINFO; +extern const GUID IID_IViewObjectEx; +typedef struct IViewObjectExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IViewObjectEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IViewObjectEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IViewObjectEx *This); + HRESULT (__attribute__((__stdcall__)) *Draw)( + IViewObjectEx *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue), + ULONG_PTR dwContinue); + HRESULT (__attribute__((__stdcall__)) *GetColorSet)( + IViewObjectEx *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hicTargetDev, + LOGPALETTE **ppColorSet); + HRESULT (__attribute__((__stdcall__)) *Freeze)( + IViewObjectEx *This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DWORD *pdwFreeze); + HRESULT (__attribute__((__stdcall__)) *Unfreeze)( + IViewObjectEx *This, + DWORD dwFreeze); + HRESULT (__attribute__((__stdcall__)) *SetAdvise)( + IViewObjectEx *This, + DWORD aspects, + DWORD advf, + IAdviseSink *pAdvSink); + HRESULT (__attribute__((__stdcall__)) *GetAdvise)( + IViewObjectEx *This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink); + HRESULT (__attribute__((__stdcall__)) *GetExtent)( + IViewObjectEx *This, + DWORD dwDrawAspect, + LONG lindex, + DVTARGETDEVICE *ptd, + LPSIZEL lpsizel); + HRESULT (__attribute__((__stdcall__)) *GetRect)( + IViewObjectEx *This, + DWORD dwAspect, + LPRECTL pRect); + HRESULT (__attribute__((__stdcall__)) *GetViewStatus)( + IViewObjectEx *This, + DWORD *pdwStatus); + HRESULT (__attribute__((__stdcall__)) *QueryHitPoint)( + IViewObjectEx *This, + DWORD dwAspect, + LPCRECT pRectBounds, + POINT ptlLoc, + LONG lCloseHint, + DWORD *pHitResult); + HRESULT (__attribute__((__stdcall__)) *QueryHitRect)( + IViewObjectEx *This, + DWORD dwAspect, + LPCRECT pRectBounds, + LPCRECT pRectLoc, + LONG lCloseHint, + DWORD *pHitResult); + HRESULT (__attribute__((__stdcall__)) *GetNaturalExtent)( + IViewObjectEx *This, + DWORD dwAspect, + LONG lindex, + DVTARGETDEVICE *ptd, + HDC hicTargetDev, + DVEXTENTINFO *pExtentInfo, + LPSIZEL pSizel); +} IViewObjectExVtbl; +struct IViewObjectEx { + IViewObjectExVtbl* lpVtbl; +}; +#define __IOleUndoUnit_INTERFACE_DEFINED__ +typedef IOleUndoUnit *LPOLEUNDOUNIT; +extern const GUID IID_IOleUndoUnit; +typedef struct IOleUndoUnitVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleUndoUnit *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleUndoUnit *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleUndoUnit *This); + HRESULT (__attribute__((__stdcall__)) *Do)( + IOleUndoUnit *This, + IOleUndoManager *pUndoManager); + HRESULT (__attribute__((__stdcall__)) *GetDescription)( + IOleUndoUnit *This, + BSTR *pBstr); + HRESULT (__attribute__((__stdcall__)) *GetUnitType)( + IOleUndoUnit *This, + CLSID *pClsid, + LONG *plID); + HRESULT (__attribute__((__stdcall__)) *OnNextAdd)( + IOleUndoUnit *This); +} IOleUndoUnitVtbl; +struct IOleUndoUnit { + IOleUndoUnitVtbl* lpVtbl; +}; +#define __IOleParentUndoUnit_INTERFACE_DEFINED__ +typedef IOleParentUndoUnit *LPOLEPARENTUNDOUNIT; +extern const GUID IID_IOleParentUndoUnit; +typedef struct IOleParentUndoUnitVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleParentUndoUnit *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleParentUndoUnit *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleParentUndoUnit *This); + HRESULT (__attribute__((__stdcall__)) *Do)( + IOleParentUndoUnit *This, + IOleUndoManager *pUndoManager); + HRESULT (__attribute__((__stdcall__)) *GetDescription)( + IOleParentUndoUnit *This, + BSTR *pBstr); + HRESULT (__attribute__((__stdcall__)) *GetUnitType)( + IOleParentUndoUnit *This, + CLSID *pClsid, + LONG *plID); + HRESULT (__attribute__((__stdcall__)) *OnNextAdd)( + IOleParentUndoUnit *This); + HRESULT (__attribute__((__stdcall__)) *Open)( + IOleParentUndoUnit *This, + IOleParentUndoUnit *pPUU); + HRESULT (__attribute__((__stdcall__)) *Close)( + IOleParentUndoUnit *This, + IOleParentUndoUnit *pPUU, + WINBOOL fCommit); + HRESULT (__attribute__((__stdcall__)) *Add)( + IOleParentUndoUnit *This, + IOleUndoUnit *pUU); + HRESULT (__attribute__((__stdcall__)) *FindUnit)( + IOleParentUndoUnit *This, + IOleUndoUnit *pUU); + HRESULT (__attribute__((__stdcall__)) *GetParentState)( + IOleParentUndoUnit *This, + DWORD *pdwState); +} IOleParentUndoUnitVtbl; +struct IOleParentUndoUnit { + IOleParentUndoUnitVtbl* lpVtbl; +}; +#define __IEnumOleUndoUnits_INTERFACE_DEFINED__ +typedef IEnumOleUndoUnits *LPENUMOLEUNDOUNITS; +extern const GUID IID_IEnumOleUndoUnits; +typedef struct IEnumOleUndoUnitsVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IEnumOleUndoUnits *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IEnumOleUndoUnits *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IEnumOleUndoUnits *This); + HRESULT (__attribute__((__stdcall__)) *Next)( + IEnumOleUndoUnits *This, + ULONG cElt, + IOleUndoUnit **rgElt, + ULONG *pcEltFetched); + HRESULT (__attribute__((__stdcall__)) *Skip)( + IEnumOleUndoUnits *This, + ULONG cElt); + HRESULT (__attribute__((__stdcall__)) *Reset)( + IEnumOleUndoUnits *This); + HRESULT (__attribute__((__stdcall__)) *Clone)( + IEnumOleUndoUnits *This, + IEnumOleUndoUnits **ppEnum); +} IEnumOleUndoUnitsVtbl; +struct IEnumOleUndoUnits { + IEnumOleUndoUnitsVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IEnumOleUndoUnits_RemoteNext_Proxy( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit **rgElt, + ULONG *pcEltFetched); +void __attribute__((__stdcall__)) IEnumOleUndoUnits_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IEnumOleUndoUnits_Next_Proxy( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit **rgElt, + ULONG *pcEltFetched); +HRESULT __attribute__((__stdcall__)) IEnumOleUndoUnits_Next_Stub( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit **rgElt, + ULONG *pcEltFetched); +#define __IOleUndoManager_INTERFACE_DEFINED__ +#define SID_SOleUndoManager IID_IOleUndoManager +typedef IOleUndoManager *LPOLEUNDOMANAGER; +extern const GUID IID_IOleUndoManager; +typedef struct IOleUndoManagerVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IOleUndoManager *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IOleUndoManager *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IOleUndoManager *This); + HRESULT (__attribute__((__stdcall__)) *Open)( + IOleUndoManager *This, + IOleParentUndoUnit *pPUU); + HRESULT (__attribute__((__stdcall__)) *Close)( + IOleUndoManager *This, + IOleParentUndoUnit *pPUU, + WINBOOL fCommit); + HRESULT (__attribute__((__stdcall__)) *Add)( + IOleUndoManager *This, + IOleUndoUnit *pUU); + HRESULT (__attribute__((__stdcall__)) *GetOpenParentState)( + IOleUndoManager *This, + DWORD *pdwState); + HRESULT (__attribute__((__stdcall__)) *DiscardFrom)( + IOleUndoManager *This, + IOleUndoUnit *pUU); + HRESULT (__attribute__((__stdcall__)) *UndoTo)( + IOleUndoManager *This, + IOleUndoUnit *pUU); + HRESULT (__attribute__((__stdcall__)) *RedoTo)( + IOleUndoManager *This, + IOleUndoUnit *pUU); + HRESULT (__attribute__((__stdcall__)) *EnumUndoable)( + IOleUndoManager *This, + IEnumOleUndoUnits **ppEnum); + HRESULT (__attribute__((__stdcall__)) *EnumRedoable)( + IOleUndoManager *This, + IEnumOleUndoUnits **ppEnum); + HRESULT (__attribute__((__stdcall__)) *GetLastUndoDescription)( + IOleUndoManager *This, + BSTR *pBstr); + HRESULT (__attribute__((__stdcall__)) *GetLastRedoDescription)( + IOleUndoManager *This, + BSTR *pBstr); + HRESULT (__attribute__((__stdcall__)) *Enable)( + IOleUndoManager *This, + WINBOOL fEnable); +} IOleUndoManagerVtbl; +struct IOleUndoManager { + IOleUndoManagerVtbl* lpVtbl; +}; +#define __IPointerInactive_INTERFACE_DEFINED__ +typedef IPointerInactive *LPPOINTERINACTIVE; +typedef enum tagPOINTERINACTIVE { + POINTERINACTIVE_ACTIVATEONENTRY = 1, + POINTERINACTIVE_DEACTIVATEONLEAVE = 2, + POINTERINACTIVE_ACTIVATEONDRAG = 4 +} POINTERINACTIVE; +extern const GUID IID_IPointerInactive; +typedef struct IPointerInactiveVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPointerInactive *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPointerInactive *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPointerInactive *This); + HRESULT (__attribute__((__stdcall__)) *GetActivationPolicy)( + IPointerInactive *This, + DWORD *pdwPolicy); + HRESULT (__attribute__((__stdcall__)) *OnInactiveMouseMove)( + IPointerInactive *This, + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD grfKeyState); + HRESULT (__attribute__((__stdcall__)) *OnInactiveSetCursor)( + IPointerInactive *This, + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD dwMouseMsg, + WINBOOL fSetAlways); +} IPointerInactiveVtbl; +struct IPointerInactive { + IPointerInactiveVtbl* lpVtbl; +}; +#define __IObjectWithSite_INTERFACE_DEFINED__ +typedef IObjectWithSite *LPOBJECTWITHSITE; +extern const GUID IID_IObjectWithSite; +typedef struct IObjectWithSiteVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IObjectWithSite *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IObjectWithSite *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IObjectWithSite *This); + HRESULT (__attribute__((__stdcall__)) *SetSite)( + IObjectWithSite *This, + IUnknown *pUnkSite); + HRESULT (__attribute__((__stdcall__)) *GetSite)( + IObjectWithSite *This, + const IID *const riid, + void **ppvSite); +} IObjectWithSiteVtbl; +struct IObjectWithSite { + IObjectWithSiteVtbl* lpVtbl; +}; +#define __IPerPropertyBrowsing_INTERFACE_DEFINED__ +typedef IPerPropertyBrowsing *LPPERPROPERTYBROWSING; +typedef struct tagCALPOLESTR { + ULONG cElems; + LPOLESTR *pElems; +} CALPOLESTR; +typedef struct tagCALPOLESTR *LPCALPOLESTR; +typedef struct tagCADWORD { + ULONG cElems; + DWORD *pElems; +} CADWORD; +typedef struct tagCADWORD *LPCADWORD; +extern const GUID IID_IPerPropertyBrowsing; +typedef struct IPerPropertyBrowsingVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPerPropertyBrowsing *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPerPropertyBrowsing *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPerPropertyBrowsing *This); + HRESULT (__attribute__((__stdcall__)) *GetDisplayString)( + IPerPropertyBrowsing *This, + DISPID dispID, + BSTR *pBstr); + HRESULT (__attribute__((__stdcall__)) *MapPropertyToPage)( + IPerPropertyBrowsing *This, + DISPID dispID, + CLSID *pClsid); + HRESULT (__attribute__((__stdcall__)) *GetPredefinedStrings)( + IPerPropertyBrowsing *This, + DISPID dispID, + CALPOLESTR *pCaStringsOut, + CADWORD *pCaCookiesOut); + HRESULT (__attribute__((__stdcall__)) *GetPredefinedValue)( + IPerPropertyBrowsing *This, + DISPID dispID, + DWORD dwCookie, + VARIANT *pVarOut); +} IPerPropertyBrowsingVtbl; +struct IPerPropertyBrowsing { + IPerPropertyBrowsingVtbl* lpVtbl; +}; +#define __IPropertyBag2_INTERFACE_DEFINED__ +typedef IPropertyBag2 *LPPROPERTYBAG2; +typedef enum tagPROPBAG2_TYPE { + PROPBAG2_TYPE_UNDEFINED = 0, + PROPBAG2_TYPE_DATA = 1, + PROPBAG2_TYPE_URL = 2, + PROPBAG2_TYPE_OBJECT = 3, + PROPBAG2_TYPE_STREAM = 4, + PROPBAG2_TYPE_STORAGE = 5, + PROPBAG2_TYPE_MONIKER = 6 +} PROPBAG2_TYPE; +typedef struct tagPROPBAG2 { + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; +} PROPBAG2; +extern const GUID IID_IPropertyBag2; +typedef struct IPropertyBag2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPropertyBag2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPropertyBag2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPropertyBag2 *This); + HRESULT (__attribute__((__stdcall__)) *Read)( + IPropertyBag2 *This, + ULONG cProperties, + PROPBAG2 *pPropBag, + IErrorLog *pErrLog, + VARIANT *pvarValue, + HRESULT *phrError); + HRESULT (__attribute__((__stdcall__)) *Write)( + IPropertyBag2 *This, + ULONG cProperties, + PROPBAG2 *pPropBag, + VARIANT *pvarValue); + HRESULT (__attribute__((__stdcall__)) *CountProperties)( + IPropertyBag2 *This, + ULONG *pcProperties); + HRESULT (__attribute__((__stdcall__)) *GetPropertyInfo)( + IPropertyBag2 *This, + ULONG iProperty, + ULONG cProperties, + PROPBAG2 *pPropBag, + ULONG *pcProperties); + HRESULT (__attribute__((__stdcall__)) *LoadObject)( + IPropertyBag2 *This, + LPCOLESTR pstrName, + DWORD dwHint, + IUnknown *pUnkObject, + IErrorLog *pErrLog); +} IPropertyBag2Vtbl; +struct IPropertyBag2 { + IPropertyBag2Vtbl* lpVtbl; +}; +#define __IPersistPropertyBag2_INTERFACE_DEFINED__ +typedef IPersistPropertyBag2 *LPPERSISTPROPERTYBAG2; +extern const GUID IID_IPersistPropertyBag2; +typedef struct IPersistPropertyBag2Vtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IPersistPropertyBag2 *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IPersistPropertyBag2 *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IPersistPropertyBag2 *This); + HRESULT (__attribute__((__stdcall__)) *GetClassID)( + IPersistPropertyBag2 *This, + CLSID *pClassID); + HRESULT (__attribute__((__stdcall__)) *InitNew)( + IPersistPropertyBag2 *This); + HRESULT (__attribute__((__stdcall__)) *Load)( + IPersistPropertyBag2 *This, + IPropertyBag2 *pPropBag, + IErrorLog *pErrLog); + HRESULT (__attribute__((__stdcall__)) *Save)( + IPersistPropertyBag2 *This, + IPropertyBag2 *pPropBag, + WINBOOL fClearDirty, + WINBOOL fSaveAllProperties); + HRESULT (__attribute__((__stdcall__)) *IsDirty)( + IPersistPropertyBag2 *This); +} IPersistPropertyBag2Vtbl; +struct IPersistPropertyBag2 { + IPersistPropertyBag2Vtbl* lpVtbl; +}; +#define __IAdviseSinkEx_INTERFACE_DEFINED__ +typedef IAdviseSinkEx *LPADVISESINKEX; +extern const GUID IID_IAdviseSinkEx; +typedef struct IAdviseSinkExVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IAdviseSinkEx *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IAdviseSinkEx *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IAdviseSinkEx *This); + void (__attribute__((__stdcall__)) *OnDataChange)( + IAdviseSinkEx *This, + FORMATETC *pFormatetc, + STGMEDIUM *pStgmed); + void (__attribute__((__stdcall__)) *OnViewChange)( + IAdviseSinkEx *This, + DWORD dwAspect, + LONG lindex); + void (__attribute__((__stdcall__)) *OnRename)( + IAdviseSinkEx *This, + IMoniker *pmk); + void (__attribute__((__stdcall__)) *OnSave)( + IAdviseSinkEx *This); + void (__attribute__((__stdcall__)) *OnClose)( + IAdviseSinkEx *This); + void (__attribute__((__stdcall__)) *OnViewStatusChange)( + IAdviseSinkEx *This, + DWORD dwViewStatus); +} IAdviseSinkExVtbl; +struct IAdviseSinkEx { + IAdviseSinkExVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IAdviseSinkEx_RemoteOnViewStatusChange_Proxy( + IAdviseSinkEx* This, + DWORD dwViewStatus); +void __attribute__((__stdcall__)) IAdviseSinkEx_RemoteOnViewStatusChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +void __attribute__((__stdcall__)) IAdviseSinkEx_OnViewStatusChange_Proxy( + IAdviseSinkEx* This, + DWORD dwViewStatus); +HRESULT __attribute__((__stdcall__)) IAdviseSinkEx_OnViewStatusChange_Stub( + IAdviseSinkEx* This, + DWORD dwViewStatus); +#define __IQuickActivate_INTERFACE_DEFINED__ +typedef IQuickActivate *LPQUICKACTIVATE; +typedef enum tagQACONTAINERFLAGS { + QACONTAINER_SHOWHATCHING = 0x1, + QACONTAINER_SHOWGRABHANDLES = 0x2, + QACONTAINER_USERMODE = 0x4, + QACONTAINER_DISPLAYASDEFAULT = 0x8, + QACONTAINER_UIDEAD = 0x10, + QACONTAINER_AUTOCLIP = 0x20, + QACONTAINER_MESSAGEREFLECT = 0x40, + QACONTAINER_SUPPORTSMNEMONICS = 0x80 +} QACONTAINERFLAGS; +typedef DWORD OLE_COLOR; +typedef struct tagQACONTAINER { + ULONG cbSize; + IOleClientSite *pClientSite; + IAdviseSinkEx *pAdviseSink; + IPropertyNotifySink *pPropertyNotifySink; + IUnknown *pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + IFont *pFont; + IOleUndoManager *pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + IBindHost *pBindHost; + IOleControlSite *pOleControlSite; + IServiceProvider *pServiceProvider; +} QACONTAINER; +typedef struct tagQACONTROL { + ULONG cbSize; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; +} QACONTROL; +extern const GUID IID_IQuickActivate; +typedef struct IQuickActivateVtbl { + HRESULT (__attribute__((__stdcall__)) *QueryInterface)( + IQuickActivate *This, + const IID *const riid, + void **ppvObject); + ULONG (__attribute__((__stdcall__)) *AddRef)( + IQuickActivate *This); + ULONG (__attribute__((__stdcall__)) *Release)( + IQuickActivate *This); + HRESULT (__attribute__((__stdcall__)) *QuickActivate)( + IQuickActivate *This, + QACONTAINER *pQaContainer, + QACONTROL *pQaControl); + HRESULT (__attribute__((__stdcall__)) *SetContentExtent)( + IQuickActivate *This, + LPSIZEL pSizel); + HRESULT (__attribute__((__stdcall__)) *GetContentExtent)( + IQuickActivate *This, + LPSIZEL pSizel); +} IQuickActivateVtbl; +struct IQuickActivate { + IQuickActivateVtbl* lpVtbl; +}; +HRESULT __attribute__((__stdcall__)) IQuickActivate_RemoteQuickActivate_Proxy( + IQuickActivate* This, + QACONTAINER *pQaContainer, + QACONTROL *pQaControl); +void __attribute__((__stdcall__)) IQuickActivate_RemoteQuickActivate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT __attribute__((__stdcall__)) IQuickActivate_QuickActivate_Proxy( + IQuickActivate* This, + QACONTAINER *pQaContainer, + QACONTROL *pQaControl); +HRESULT __attribute__((__stdcall__)) IQuickActivate_QuickActivate_Stub( + IQuickActivate* This, + QACONTAINER *pQaContainer, + QACONTROL *pQaControl); +ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); +unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); +void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *); +ULONG __attribute__((__stdcall__)) HACCEL_UserSize (ULONG *, ULONG, HACCEL *); +unsigned char * __attribute__((__stdcall__)) HACCEL_UserMarshal (ULONG *, unsigned char *, HACCEL *); +unsigned char * __attribute__((__stdcall__)) HACCEL_UserUnmarshal(ULONG *, unsigned char *, HACCEL *); +void __attribute__((__stdcall__)) HACCEL_UserFree (ULONG *, HACCEL *); +ULONG __attribute__((__stdcall__)) HWND_UserSize (ULONG *, ULONG, HWND *); +unsigned char * __attribute__((__stdcall__)) HWND_UserMarshal (ULONG *, unsigned char *, HWND *); +unsigned char * __attribute__((__stdcall__)) HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *); +void __attribute__((__stdcall__)) HWND_UserFree (ULONG *, HWND *); +ULONG __attribute__((__stdcall__)) HFONT_UserSize (ULONG *, ULONG, HFONT *); +unsigned char * __attribute__((__stdcall__)) HFONT_UserMarshal (ULONG *, unsigned char *, HFONT *); +unsigned char * __attribute__((__stdcall__)) HFONT_UserUnmarshal(ULONG *, unsigned char *, HFONT *); +void __attribute__((__stdcall__)) HFONT_UserFree (ULONG *, HFONT *); +ULONG __attribute__((__stdcall__)) HDC_UserSize (ULONG *, ULONG, HDC *); +unsigned char * __attribute__((__stdcall__)) HDC_UserMarshal (ULONG *, unsigned char *, HDC *); +unsigned char * __attribute__((__stdcall__)) HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *); +void __attribute__((__stdcall__)) HDC_UserFree (ULONG *, HDC *); +ULONG __attribute__((__stdcall__)) HRGN_UserSize (ULONG *, ULONG, HRGN *); +unsigned char * __attribute__((__stdcall__)) HRGN_UserMarshal (ULONG *, unsigned char *, HRGN *); +unsigned char * __attribute__((__stdcall__)) HRGN_UserUnmarshal(ULONG *, unsigned char *, HRGN *); +void __attribute__((__stdcall__)) HRGN_UserFree (ULONG *, HRGN *); +ULONG __attribute__((__stdcall__)) VARIANT_UserSize (ULONG *, ULONG, VARIANT *); +unsigned char * __attribute__((__stdcall__)) VARIANT_UserMarshal (ULONG *, unsigned char *, VARIANT *); +unsigned char * __attribute__((__stdcall__)) VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *); +void __attribute__((__stdcall__)) VARIANT_UserFree (ULONG *, VARIANT *); +ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *); +unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *); +void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *); +ULONG __attribute__((__stdcall__)) HPALETTE_UserSize (ULONG *, ULONG, HPALETTE *); +unsigned char * __attribute__((__stdcall__)) HPALETTE_UserMarshal (ULONG *, unsigned char *, HPALETTE *); +unsigned char * __attribute__((__stdcall__)) HPALETTE_UserUnmarshal(ULONG *, unsigned char *, HPALETTE *); +void __attribute__((__stdcall__)) HPALETTE_UserFree (ULONG *, HPALETTE *); +#define __INapTypes_INTERFACE_DEFINED__ +extern RPC_IF_HANDLE INapTypes_v0_0_c_ifspec; +extern RPC_IF_HANDLE INapTypes_v0_0_s_ifspec; +#define freshSoHRequest (0x1) +#define shaFixup (0x1) +#define percentageNotSupported (101) +#define maxSoHAttributeCount (100) +#define maxSoHAttributeSize (4000) +#define minNetworkSoHSize (12) +#define maxNetworkSoHSize (4000) +#define maxDwordCountPerSoHAttribute (maxSoHAttributeSize / sizeof(DWORD)) +#define maxIpv4CountPerSoHAttribute (maxSoHAttributeSize / 4) +#define maxIpv6CountPerSoHAttribute (maxSoHAttributeSize / 16) +#define maxStringLength (1024) +#define maxStringLengthInBytes ((maxStringLength + 1) * sizeof(WCHAR)) +#define maxSystemHealthEntityCount (20) +#define maxEnforcerCount (20) +#define maxPrivateDataSize (200) +#define maxConnectionCountPerEnforcer (20) +#define maxCachedSoHCount ((maxSystemHealthEntityCount * maxEnforcerCount) * maxConnectionCountPerEnforcer) +#define failureCategoryCount (5) +#define ComponentTypeEnforcementClientSoH (0x1) +#define ComponentTypeEnforcementClientRp (0x2) +typedef enum tagIsolationState { + isolationStateNotRestricted = 1, + isolationStateInProbation = 2, + isolationStateRestrictedAccess = 3 +} IsolationState; +typedef enum tagExtendedIsolationState { + extendedIsolationStateNoData = 0x0, + extendedIsolationStateTransition = 0x1, + extendedIsolationStateInfected = 0x2, + extendedIsolationStateUnknown = 0x3 +} ExtendedIsolationState; +typedef enum tagNapTracingLevel { + tracingLevelUndefined = 0, + tracingLevelBasic = 1, + tracingLevelAdvanced = 2, + tracingLevelDebug = 3 +} NapTracingLevel; +typedef enum tagFailureCategory { + failureCategoryNone = 0, + failureCategoryOther = 1, + failureCategoryClientComponent = 2, + failureCategoryClientCommunication = 3, + failureCategoryServerComponent = 4, + failureCategoryServerCommunication = 5 +} FailureCategory; +typedef enum tagFixupState { + fixupStateSuccess = 0, + fixupStateInProgress = 1, + fixupStateCouldNotUpdate = 2 +} FixupState; +typedef enum tagNapNotifyType { + napNotifyTypeUnknown = 0, + napNotifyTypeServiceState = 1, + napNotifyTypeQuarState = 2 +} NapNotifyType; +typedef enum tagRemoteConfigurationType { + remoteConfigTypeMachine = 1, + remoteConfigTypeConfigBlob = 2 +} RemoteConfigurationType; +typedef FILETIME ProbationTime; +typedef UINT32 MessageId; +typedef UINT32 NapComponentId; +typedef NapComponentId SystemHealthEntityId; +typedef NapComponentId EnforcementEntityId; +typedef struct tagCountedString { + UINT16 length; + WCHAR *string; +} CountedString; +typedef CountedString StringCorrelationId; +typedef struct tagIsolationInfo { + IsolationState isolationState; + ProbationTime probEndTime; + CountedString failureUrl; +} IsolationInfo; +typedef struct tagIsolationInfoEx { + IsolationState isolationState; + ExtendedIsolationState extendedIsolationState; + ProbationTime probEndTime; + CountedString failureUrl; +} IsolationInfoEx; +typedef struct tagFailureCategoryMapping { + WINBOOL mappingCompliance[5]; +} FailureCategoryMapping; +typedef UINT16 SystemHealthEntityCount; +typedef UINT16 EnforcementEntityCount; +typedef struct tagCorrelationId { + GUID connId; + FILETIME timeStamp; +} CorrelationId; +typedef GUID ConnectionId; +typedef UINT8 Percentage; +typedef struct tagResultCodes { + UINT16 count; + HRESULT *results; +} ResultCodes; +typedef struct tagIpv4Address { + BYTE addr[4]; +} Ipv4Address; +typedef struct tagIpv6Address { + BYTE addr[16]; +} Ipv6Address; +typedef struct tagFixupInfo { + FixupState state; + Percentage percentage; + ResultCodes resultCodes; + MessageId fixupMsgId; +} FixupInfo; +typedef struct tagSystemHealthAgentState { + SystemHealthEntityId id; + ResultCodes shaResultCodes; + FailureCategory failureCategory; + FixupInfo fixupInfo; +} SystemHealthAgentState; +typedef struct tagSoHAttribute { + UINT16 type; + UINT16 size; + BYTE *value; +} SoHAttribute; +typedef struct tagSoH { + UINT16 count; + SoHAttribute *attributes; +} SoH; +typedef struct tagSoH SoHRequest; +typedef struct tagSoH SoHResponse; +typedef struct tagNetworkSoH { + UINT16 size; + BYTE *data; +} NetworkSoH; +typedef struct tagNetworkSoH NetworkSoHRequest; +typedef struct tagNetworkSoH NetworkSoHResponse; +typedef struct tagPrivateData { + UINT16 size; + BYTE *data; +} PrivateData; +typedef struct tagNapComponentRegistrationInfo { + NapComponentId id; + CountedString friendlyName; + CountedString description; + CountedString version; + CountedString vendorName; + CLSID infoClsid; + CLSID configClsid; + FILETIME registrationDate; + UINT32 componentType; +} NapComponentRegistrationInfo; +typedef struct in_addr RASIPV4ADDR; +typedef struct in6_addr RASIPV6ADDR; +#pragma pack(push,4) + +#define RAS_MaxDeviceType 16 +#define RAS_MaxPhoneNumber 128 +#define RAS_MaxIpAddress 15 +#define RAS_MaxIpxAddress 21 +#define RAS_MaxEntryName 256 +#define RAS_MaxDeviceName 128 +#define RAS_MaxCallbackNumber RAS_MaxPhoneNumber +#define RAS_MaxAreaCode 10 +#define RAS_MaxPadType 32 +#define RAS_MaxX25Address 200 +#define RAS_MaxFacilities 200 +#define RAS_MaxUserData 200 +#define RAS_MaxReplyMessage 1024 +#define RAS_MaxDnsSuffix 256 + struct HRASCONN__ { int unused; }; typedef struct HRASCONN__ *HRASCONN; +#define LPHRASCONN HRASCONN* +#define RASCF_AllUsers 0x00000001 +#define RASCF_GlobalCreds 0x00000002 +#define RASCONNW struct tagRASCONNW + struct tagRASCONNW { + DWORD dwSize; + HRASCONN hrasconn; + WCHAR szEntryName[256 + 1 ]; + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + WCHAR szPhonebook [260 ]; + DWORD dwSubEntry; + GUID guidEntry; + DWORD dwFlags; + LUID luid; + }; +#define RASCONNA struct tagRASCONNA + struct tagRASCONNA { + DWORD dwSize; + HRASCONN hrasconn; + CHAR szEntryName[256 + 1 ]; + CHAR szDeviceType[16 + 1 ]; + CHAR szDeviceName[128 + 1 ]; + CHAR szPhonebook [260 ]; + DWORD dwSubEntry; + GUID guidEntry; + DWORD dwFlags; + LUID luid; + }; +#define RASCONN __MINGW_NAME_AW(RASCONN) +#define LPRASCONNW RASCONNW* +#define LPRASCONNA RASCONNA* +#define LPRASCONN RASCONN* +#define RASCS_PAUSED 0x1000 +#define RASCS_DONE 0x2000 +#define RASCONNSTATE enum tagRASCONNSTATE + enum tagRASCONNSTATE { + RASCS_OpenPort = 0,RASCS_PortOpened,RASCS_ConnectDevice,RASCS_DeviceConnected,RASCS_AllDevicesConnected,RASCS_Authenticate, + RASCS_AuthNotify,RASCS_AuthRetry,RASCS_AuthCallback,RASCS_AuthChangePassword,RASCS_AuthProject,RASCS_AuthLinkSpeed, + RASCS_AuthAck,RASCS_ReAuthenticate,RASCS_Authenticated,RASCS_PrepareForCallback,RASCS_WaitForModemReset,RASCS_WaitForCallback,RASCS_Projected, + RASCS_StartAuthentication,RASCS_CallbackComplete,RASCS_LogonNetwork,RASCS_SubEntryConnected, + RASCS_SubEntryDisconnected,RASCS_Interactive = 0x1000,RASCS_RetryAuthentication,RASCS_CallbackSetByCaller,RASCS_PasswordExpired, + RASCS_InvokeEapUI,RASCS_Connected = 0x2000,RASCS_Disconnected + }; +#define LPRASCONNSTATE RASCONNSTATE* +#define RASCONNSTATUSW struct tagRASCONNSTATUSW + struct tagRASCONNSTATUSW { + DWORD dwSize; + enum tagRASCONNSTATE rasconnstate; + DWORD dwError; + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + WCHAR szPhoneNumber[128 + 1 ]; + }; +#define RASCONNSTATUSA struct tagRASCONNSTATUSA + struct tagRASCONNSTATUSA { + DWORD dwSize; + enum tagRASCONNSTATE rasconnstate; + DWORD dwError; + CHAR szDeviceType[16 + 1 ]; + CHAR szDeviceName[128 + 1 ]; + CHAR szPhoneNumber[128 + 1 ]; + }; +#define RASCONNSTATUS __MINGW_NAME_AW(RASCONNSTATUS) +#define LPRASCONNSTATUSW RASCONNSTATUSW* +#define LPRASCONNSTATUSA RASCONNSTATUSA* +#define LPRASCONNSTATUS RASCONNSTATUS* +#define RASDIALPARAMSW struct tagRASDIALPARAMSW + struct tagRASDIALPARAMSW { + DWORD dwSize; + WCHAR szEntryName[256 + 1 ]; + WCHAR szPhoneNumber[128 + 1 ]; + WCHAR szCallbackNumber[128 + 1 ]; + WCHAR szUserName[256 + 1 ]; + WCHAR szPassword[256 + 1 ]; + WCHAR szDomain[15 + 1 ]; + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + }; +#define RASDIALPARAMSA struct tagRASDIALPARAMSA + struct tagRASDIALPARAMSA { + DWORD dwSize; + CHAR szEntryName[256 + 1 ]; + CHAR szPhoneNumber[128 + 1 ]; + CHAR szCallbackNumber[128 + 1 ]; + CHAR szUserName[256 + 1 ]; + CHAR szPassword[256 + 1 ]; + CHAR szDomain[15 + 1 ]; + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + }; +#define RASDIALPARAMS __MINGW_NAME_AW(RASDIALPARAMS) +#define LPRASDIALPARAMSW RASDIALPARAMSW* +#define LPRASDIALPARAMSA RASDIALPARAMSA* +#define LPRASDIALPARAMS RASDIALPARAMS* +#define RASEAPINFO struct tagRASEAPINFO + struct tagRASEAPINFO { + DWORD dwSizeofEapInfo; + BYTE *pbEapInfo; + }; +#define RASDIALEXTENSIONS struct tagRASDIALEXTENSIONS + struct tagRASDIALEXTENSIONS { + DWORD dwSize; + DWORD dwfOptions; + HWND hwndParent; + ULONG_PTR reserved; + ULONG_PTR reserved1; + struct tagRASEAPINFO RasEapInfo; + }; +#define LPRASDIALEXTENSIONS RASDIALEXTENSIONS* +#define RDEOPT_UsePrefixSuffix 0x00000001 +#define RDEOPT_PausedStates 0x00000002 +#define RDEOPT_IgnoreModemSpeaker 0x00000004 +#define RDEOPT_SetModemSpeaker 0x00000008 +#define RDEOPT_IgnoreSoftwareCompression 0x00000010 +#define RDEOPT_SetSoftwareCompression 0x00000020 +#define RDEOPT_DisableConnectedUI 0x00000040 +#define RDEOPT_DisableReconnectUI 0x00000080 +#define RDEOPT_DisableReconnect 0x00000100 +#define RDEOPT_NoUser 0x00000200 +#define RDEOPT_PauseOnScript 0x00000400 +#define RDEOPT_Router 0x00000800 +#define RDEOPT_CustomDial 0x00001000 +#define RDEOPT_UseCustomScripting 0x00002000 +#define REN_User 0x00000000 +#define REN_AllUsers 0x00000001 +#define RASENTRYNAMEW struct tagRASENTRYNAMEW + struct tagRASENTRYNAMEW { + DWORD dwSize; + WCHAR szEntryName[256 + 1 ]; + DWORD dwFlags; + WCHAR szPhonebookPath[260 + 1]; + }; +#define RASENTRYNAMEA struct tagRASENTRYNAMEA + struct tagRASENTRYNAMEA { + DWORD dwSize; + CHAR szEntryName[256 + 1 ]; + DWORD dwFlags; + CHAR szPhonebookPath[260 + 1]; + }; +#define RASENTRYNAME __MINGW_NAME_AW(RASENTRYNAME) +#define LPRASENTRYNAMEW RASENTRYNAMEW* +#define LPRASENTRYNAMEA RASENTRYNAMEA* +#define LPRASENTRYNAME RASENTRYNAME* +#define RASPROJECTION enum tagRASPROJECTION + enum tagRASPROJECTION { + RASP_Amb = 0x10000,RASP_PppNbf = 0x803F,RASP_PppIpx = 0x802B,RASP_PppIp = 0x8021, + RASP_PppCcp = 0x80FD,RASP_PppLcp = 0xC021,RASP_Slip = 0x20000 + }; +#define LPRASPROJECTION RASPROJECTION * +#define RASAMBW struct tagRASAMBW + struct tagRASAMBW { + DWORD dwSize; + DWORD dwError; + WCHAR szNetBiosError[16 + 1 ]; + BYTE bLana; + }; +#define RASAMBA struct tagRASAMBA + struct tagRASAMBA { + DWORD dwSize; + DWORD dwError; + CHAR szNetBiosError[16 + 1 ]; + BYTE bLana; + }; +#define RASAMB __MINGW_NAME_AW(RASAMB) +#define LPRASAMBW RASAMBW* +#define LPRASAMBA RASAMBA* +#define LPRASAMB RASAMB* +#define RASPPPNBFW struct tagRASPPPNBFW + struct tagRASPPPNBFW { + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + WCHAR szNetBiosError[16 + 1 ]; + WCHAR szWorkstationName[16 + 1 ]; + BYTE bLana; + }; +#define RASPPPNBFA struct tagRASPPPNBFA + struct tagRASPPPNBFA { + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + CHAR szNetBiosError[16 + 1 ]; + CHAR szWorkstationName[16 + 1 ]; + BYTE bLana; + }; +#define RASPPPNBF __MINGW_NAME_AW(RASPPPNBF) +#define LPRASPPPNBFW RASPPPNBFW* +#define LPRASPPPNBFA RASPPPNBFA* +#define LPRASPPPNBF RASPPPNBF* +#define RASPPPIPXW struct tagRASIPXW + struct tagRASIPXW { + DWORD dwSize; + DWORD dwError; + WCHAR szIpxAddress[21 + 1 ]; + }; +#define RASPPPIPXA struct tagRASPPPIPXA + struct tagRASPPPIPXA { + DWORD dwSize; + DWORD dwError; + CHAR szIpxAddress[21 + 1 ]; + }; +#define RASPPPIPX __MINGW_NAME_AW(RASPPPIPX) +#define LPRASPPPIPXW RASPPPIPXW * +#define LPRASPPPIPXA RASPPPIPXA * +#define LPRASPPPIPX RASPPPIPX * +#define RASIPO_VJ 0x00000001 +#define RASPPPIPW struct tagRASPPPIPW + struct tagRASPPPIPW { + DWORD dwSize; + DWORD dwError; + WCHAR szIpAddress[15 + 1 ]; + WCHAR szServerIpAddress[15 + 1 ]; + DWORD dwOptions; + DWORD dwServerOptions; + }; +#define RASPPPIPA struct tagRASPPPIPA + struct tagRASPPPIPA { + DWORD dwSize; + DWORD dwError; + CHAR szIpAddress[15 + 1 ]; + CHAR szServerIpAddress[15 + 1 ]; + DWORD dwOptions; + DWORD dwServerOptions; + }; +#define RASPPPIP __MINGW_NAME_AW(RASPPPIP) +#define LPRASPPPIPW RASPPPIPW* +#define LPRASPPPIPA RASPPPIPA* +#define LPRASPPPIP RASPPPIP* +#define RASLCPAP_PAP 0xC023 +#define RASLCPAP_SPAP 0xC027 +#define RASLCPAP_CHAP 0xC223 +#define RASLCPAP_EAP 0xC227 +#define RASLCPAD_CHAP_MD5 0x05 +#define RASLCPAD_CHAP_MS 0x80 +#define RASLCPAD_CHAP_MSV2 0x81 +#define RASLCPO_PFC 0x00000001 +#define RASLCPO_ACFC 0x00000002 +#define RASLCPO_SSHF 0x00000004 +#define RASLCPO_DES_56 0x00000008 +#define RASLCPO_3_DES 0x00000010 +#define RASPPPLCPW struct tagRASPPPLCPW + struct tagRASPPPLCPW { + DWORD dwSize; + WINBOOL fBundled; + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + WINBOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + WCHAR szReplyMessage[1024]; + DWORD dwOptions; + DWORD dwServerOptions; + }; +#define RASPPPLCPA struct tagRASPPPLCPA + struct tagRASPPPLCPA { + DWORD dwSize; + WINBOOL fBundled; + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + WINBOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + CHAR szReplyMessage[1024]; + DWORD dwOptions; + DWORD dwServerOptions; + }; +#define RASPPPLCP __MINGW_NAME_AW(RASPPPLCP) +#define LPRASPPPLCPW RASPPPLCPW * +#define LPRASPPPLCPA RASPPPLCPA * +#define LPRASPPPLCP RASPPPLCP * +#define RASSLIPW struct tagRASSLIPW + struct tagRASSLIPW { + DWORD dwSize; + DWORD dwError; + WCHAR szIpAddress[15 + 1 ]; + }; +#define RASSLIPA struct tagRASSLIPA + struct tagRASSLIPA { + DWORD dwSize; + DWORD dwError; + CHAR szIpAddress[15 + 1 ]; + }; +#define RASSLIP __MINGW_NAME_AW(RASSLIP) +#define LPRASSLIPW RASSLIPW* +#define LPRASSLIPA RASSLIPA* +#define LPRASSLIP RASSLIP* +#define RASCCPCA_MPPC 0x00000006 +#define RASCCPCA_STAC 0x00000005 +#define RASCCPO_Compression 0x00000001 +#define RASCCPO_HistoryLess 0x00000002 +#define RASCCPO_Encryption56bit 0x00000010 +#define RASCCPO_Encryption40bit 0x00000020 +#define RASCCPO_Encryption128bit 0x00000040 +#define RASPPPCCP struct tagRASPPPCCP + struct tagRASPPPCCP { + DWORD dwSize; + DWORD dwError; + DWORD dwCompressionAlgorithm; + DWORD dwOptions; + DWORD dwServerCompressionAlgorithm; + DWORD dwServerOptions; + }; +#define LPRASPPPCCP RASPPPCCP * +#define RASDIALEVENT "RasDialEvent" +#define WM_RASDIALEVENT 0xCCCD + typedef void (__attribute__((__stdcall__)) *RASDIALFUNC)(UINT,enum tagRASCONNSTATE,DWORD); + typedef void (__attribute__((__stdcall__)) *RASDIALFUNC1)(HRASCONN,UINT,enum tagRASCONNSTATE,DWORD,DWORD); + typedef DWORD (__attribute__((__stdcall__)) *RASDIALFUNC2)(ULONG_PTR,DWORD,HRASCONN,UINT,enum tagRASCONNSTATE,DWORD,DWORD); +#define RASDEVINFOW struct tagRASDEVINFOW + struct tagRASDEVINFOW { + DWORD dwSize; + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + }; +#define RASDEVINFOA struct tagRASDEVINFOA + struct tagRASDEVINFOA { + DWORD dwSize; + CHAR szDeviceType[16 + 1 ]; + CHAR szDeviceName[128 + 1 ]; + }; +#define RASDEVINFO __MINGW_NAME_AW(RASDEVINFO) +#define LPRASDEVINFOW RASDEVINFOW* +#define LPRASDEVINFOA RASDEVINFOA* +#define LPRASDEVINFO RASDEVINFO* + + struct RASCTRYINFO { + DWORD dwSize; + DWORD dwCountryID; + DWORD dwNextCountryID; + DWORD dwCountryCode; + DWORD dwCountryNameOffset; + }; +#define RASCTRYINFOW RASCTRYINFO +#define RASCTRYINFOA RASCTRYINFO +#define LPRASCTRYINFOW RASCTRYINFOW* +#define LPRASCTRYINFOA RASCTRYINFOW* +#define LPRASCTRYINFO RASCTRYINFO* + + struct RASIPADDR { + BYTE a; + BYTE b; + BYTE c; + BYTE d; + }; +#define ET_None 0 +#define ET_Require 1 +#define ET_RequireMax 2 +#define ET_Optional 3 +#define VS_Default 0 +#define VS_PptpOnly 1 +#define VS_PptpFirst 2 +#define VS_L2tpOnly 3 +#define VS_L2tpFirst 4 +#define RASENTRYA struct tagRASENTRYA + struct tagRASENTRYA { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + CHAR szAreaCode[10 + 1 ]; + CHAR szLocalPhoneNumber[128 + 1 ]; + DWORD dwAlternateOffset; + struct RASIPADDR ipaddr; + struct RASIPADDR ipaddrDns; + struct RASIPADDR ipaddrDnsAlt; + struct RASIPADDR ipaddrWins; + struct RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + CHAR szScript[260 ]; + CHAR szAutodialDll[260 ]; + CHAR szAutodialFunc[260 ]; + CHAR szDeviceType[16 + 1 ]; + CHAR szDeviceName[128 + 1 ]; + CHAR szX25PadType[32 + 1 ]; + CHAR szX25Address[200 + 1 ]; + CHAR szX25Facilities[200 + 1 ]; + CHAR szX25UserData[200 + 1 ]; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + CHAR szCustomDialDll[260]; + DWORD dwVpnStrategy; + DWORD dwfOptions2; + DWORD dwfOptions3; + CHAR szDnsSuffix[256]; + DWORD dwTcpWindowSize; + CHAR szPrerequisitePbk[260]; + CHAR szPrerequisiteEntry[256 + 1]; + DWORD dwRedialCount; + DWORD dwRedialPause; + }; +#define RASENTRYW struct tagRASENTRYW + struct tagRASENTRYW { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + WCHAR szAreaCode[10 + 1 ]; + WCHAR szLocalPhoneNumber[128 + 1 ]; + DWORD dwAlternateOffset; + struct RASIPADDR ipaddr; + struct RASIPADDR ipaddrDns; + struct RASIPADDR ipaddrDnsAlt; + struct RASIPADDR ipaddrWins; + struct RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + WCHAR szScript[260 ]; + WCHAR szAutodialDll[260 ]; + WCHAR szAutodialFunc[260 ]; + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + WCHAR szX25PadType[32 + 1 ]; + WCHAR szX25Address[200 + 1 ]; + WCHAR szX25Facilities[200 + 1 ]; + WCHAR szX25UserData[200 + 1 ]; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + WCHAR szCustomDialDll[260]; + DWORD dwVpnStrategy; + DWORD dwfOptions2; + DWORD dwfOptions3; + WCHAR szDnsSuffix[256]; + DWORD dwTcpWindowSize; + WCHAR szPrerequisitePbk[260]; + WCHAR szPrerequisiteEntry[256 + 1]; + DWORD dwRedialCount; + DWORD dwRedialPause; + }; +#define RASENTRY __MINGW_NAME_AW(RASENTRY) +#define LPRASENTRYW RASENTRYW* +#define LPRASENTRYA RASENTRYA* +#define LPRASENTRY RASENTRY* +#define RASEO_UseCountryAndAreaCodes 0x00000001 +#define RASEO_SpecificIpAddr 0x00000002 +#define RASEO_SpecificNameServers 0x00000004 +#define RASEO_IpHeaderCompression 0x00000008 +#define RASEO_RemoteDefaultGateway 0x00000010 +#define RASEO_DisableLcpExtensions 0x00000020 +#define RASEO_TerminalBeforeDial 0x00000040 +#define RASEO_TerminalAfterDial 0x00000080 +#define RASEO_ModemLights 0x00000100 +#define RASEO_SwCompression 0x00000200 +#define RASEO_RequireEncryptedPw 0x00000400 +#define RASEO_RequireMsEncryptedPw 0x00000800 +#define RASEO_RequireDataEncryption 0x00001000 +#define RASEO_NetworkLogon 0x00002000 +#define RASEO_UseLogonCredentials 0x00004000 +#define RASEO_PromoteAlternates 0x00008000 +#define RASEO_SecureLocalFiles 0x00010000 +#define RASEO_RequireEAP 0x00020000 +#define RASEO_RequirePAP 0x00040000 +#define RASEO_RequireSPAP 0x00080000 +#define RASEO_Custom 0x00100000 +#define RASEO_PreviewPhoneNumber 0x00200000 +#define RASEO_SharedPhoneNumbers 0x00800000 +#define RASEO_PreviewUserPw 0x01000000 +#define RASEO_PreviewDomain 0x02000000 +#define RASEO_ShowDialingProgress 0x04000000 +#define RASEO_RequireCHAP 0x08000000 +#define RASEO_RequireMsCHAP 0x10000000 +#define RASEO_RequireMsCHAP2 0x20000000 +#define RASEO_RequireW95MSCHAP 0x40000000 +#define RASEO_CustomScript 0x80000000 +#define RASEO2_SecureFileAndPrint 0x00000001 +#define RASEO2_SecureClientForMSNet 0x00000002 +#define RASEO2_DontNegotiateMultilink 0x00000004 +#define RASEO2_DontUseRasCredentials 0x00000008 +#define RASEO2_UsePreSharedKey 0x00000010 +#define RASEO2_Internet 0x00000020 +#define RASEO2_DisableNbtOverIP 0x00000040 +#define RASEO2_UseGlobalDeviceSettings 0x00000080 +#define RASEO2_ReconnectIfDropped 0x00000100 +#define RASEO2_SharePhoneNumbers 0x00000200 +#define RASNP_NetBEUI 0x00000001 +#define RASNP_Ipx 0x00000002 +#define RASNP_Ip 0x00000004 +#define RASFP_Ppp 0x00000001 +#define RASFP_Slip 0x00000002 +#define RASFP_Ras 0x00000004 +#define RASDT_Modem TEXT("modem") +#define RASDT_Isdn TEXT("isdn") +#define RASDT_X25 TEXT("x25") +#define RASDT_Vpn TEXT("vpn") +#define RASDT_Pad TEXT("pad") +#define RASDT_Generic TEXT("GENERIC") +#define RASDT_Serial TEXT("SERIAL") +#define RASDT_FrameRelay TEXT("FRAMERELAY") +#define RASDT_Atm TEXT("ATM") +#define RASDT_Sonet TEXT("SONET") +#define RASDT_SW56 TEXT("SW56") +#define RASDT_Irda TEXT("IRDA") +#define RASDT_Parallel TEXT("PARALLEL") +#define RASDT_PPPoE TEXT("PPPoE") +#define RASET_Phone 1 +#define RASET_Vpn 2 +#define RASET_Direct 3 +#define RASET_Internet 4 +#define RASET_Broadband 5 + typedef WINBOOL (__attribute__((__stdcall__)) *ORASADFUNC)(HWND,LPSTR,DWORD,LPDWORD); +#define RASCN_Connection 0x00000001 +#define RASCN_Disconnection 0x00000002 +#define RASCN_BandwidthAdded 0x00000004 +#define RASCN_BandwidthRemoved 0x00000008 +#define RASEDM_DialAll 1 +#define RASEDM_DialAsNeeded 2 +#define RASIDS_Disabled 0xffffffff +#define RASIDS_UseGlobalValue 0 +#define RASADPARAMS struct tagRASADPARAMS + struct tagRASADPARAMS { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + }; +#define LPRASADPARAMS RASADPARAMS* +#define RASADFLG_PositionDlg 0x00000001 + typedef WINBOOL (__attribute__((__stdcall__)) *RASADFUNCA)(LPSTR,LPSTR,struct tagRASADPARAMS*,LPDWORD); + typedef WINBOOL (__attribute__((__stdcall__)) *RASADFUNCW)(LPWSTR,LPWSTR,struct tagRASADPARAMS*,LPDWORD); +#define RASADFUNC __MINGW_NAME_AW(RASADFUNC) +#define RASSUBENTRYA struct tagRASSUBENTRYA + struct tagRASSUBENTRYA { + DWORD dwSize; + DWORD dwfFlags; + CHAR szDeviceType[16 + 1 ]; + CHAR szDeviceName[128 + 1 ]; + CHAR szLocalPhoneNumber[128 + 1 ]; + DWORD dwAlternateOffset; + }; +#define RASSUBENTRYW struct tagRASSUBENTRYW + struct tagRASSUBENTRYW { + DWORD dwSize; + DWORD dwfFlags; + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + WCHAR szLocalPhoneNumber[128 + 1 ]; + DWORD dwAlternateOffset; + }; +#define RASSUBENTRY __MINGW_NAME_AW(RASSUBENTRY) +#define LPRASSUBENTRYW RASSUBENTRYW* +#define LPRASSUBENTRYA RASSUBENTRYA* +#define LPRASSUBENTRY RASSUBENTRY* +#define RASCREDENTIALSA struct tagRASCREDENTIALSA + struct tagRASCREDENTIALSA { + DWORD dwSize; + DWORD dwMask; + CHAR szUserName[256 + 1 ]; + CHAR szPassword[256 + 1 ]; + CHAR szDomain[15 + 1 ]; + }; +#define RASCREDENTIALSW struct tagRASCREDENTIALSW + struct tagRASCREDENTIALSW { + DWORD dwSize; + DWORD dwMask; + WCHAR szUserName[256 + 1 ]; + WCHAR szPassword[256 + 1 ]; + WCHAR szDomain[15 + 1 ]; + }; +#define RASCREDENTIALS __MINGW_NAME_AW(RASCREDENTIALS) +#define LPRASCREDENTIALSW RASCREDENTIALSW* +#define LPRASCREDENTIALSA RASCREDENTIALSA* +#define LPRASCREDENTIALS RASCREDENTIALS* +#define RASCM_UserName 0x00000001 +#define RASCM_Password 0x00000002 +#define RASCM_Domain 0x00000004 +#define RASCM_DefaultCreds 0x00000008 +#define RASCM_PreSharedKey 0x00000010 +#define RASCM_ServerPreSharedKey 0x00000020 +#define RASCM_DDMPreSharedKey 0x00000040 +#define RASAUTODIALENTRYA struct tagRASAUTODIALENTRYA + struct tagRASAUTODIALENTRYA { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + CHAR szEntry[256 + 1]; + }; +#define RASAUTODIALENTRYW struct tagRASAUTODIALENTRYW + struct tagRASAUTODIALENTRYW { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + WCHAR szEntry[256 + 1]; + }; +#define RASAUTODIALENTRY __MINGW_NAME_AW(RASAUTODIALENTRY) +#define LPRASAUTODIALENTRYW RASAUTODIALENTRYW* +#define LPRASAUTODIALENTRYA RASAUTODIALENTRYA* +#define LPRASAUTODIALENTRY RASAUTODIALENTRY* +#define RASADP_DisableConnectionQuery 0 +#define RASADP_LoginSessionDisable 1 +#define RASADP_SavedAddressesLimit 2 +#define RASADP_FailedConnectionTimeout 3 +#define RASADP_ConnectionQueryTimeout 4 +#define RASEAPF_NonInteractive 0x00000002 +#define RASEAPF_Logon 0x00000004 +#define RASEAPF_Preview 0x00000008 +#define RASEAPUSERIDENTITYA struct tagRASEAPUSERIDENTITYA + struct tagRASEAPUSERIDENTITYA { + CHAR szUserName[256 + 1 ]; + DWORD dwSizeofEapInfo; + BYTE pbEapInfo[1 ]; + }; +#define RASEAPUSERIDENTITYW struct tagRASEAPUSERIDENTITYW + struct tagRASEAPUSERIDENTITYW { + WCHAR szUserName[256 + 1 ]; + DWORD dwSizeofEapInfo; + BYTE pbEapInfo[1 ]; + }; +#define RASEAPUSERIDENTITY __MINGW_NAME_AW(RASEAPUSERIDENTITY) +#define LPRASEAPUSERIDENTITYW RASEAPUSERIDENTITYW* +#define LPRASEAPUSERIDENTITYA RASEAPUSERIDENTITYA* + typedef DWORD (__attribute__((__stdcall__)) *PFNRASGETBUFFER) (PBYTE *ppBuffer,PDWORD pdwSize); + typedef DWORD (__attribute__((__stdcall__)) *PFNRASFREEBUFFER) (PBYTE pBufer); + typedef DWORD (__attribute__((__stdcall__)) *PFNRASSENDBUFFER) (HANDLE hPort,PBYTE pBuffer,DWORD dwSize); + typedef DWORD (__attribute__((__stdcall__)) *PFNRASRECEIVEBUFFER) (HANDLE hPort,PBYTE pBuffer,PDWORD pdwSize,DWORD dwTimeOut,HANDLE hEvent); + typedef DWORD (__attribute__((__stdcall__)) *PFNRASRETRIEVEBUFFER) (HANDLE hPort,PBYTE pBuffer,PDWORD pdwSize); + typedef DWORD (__attribute__((__stdcall__)) *RasCustomScriptExecuteFn) (HANDLE hPort,LPCWSTR lpszPhonebook,LPCWSTR lpszEntryName,PFNRASGETBUFFER pfnRasGetBuffer,PFNRASFREEBUFFER pfnRasFreeBuffer,PFNRASSENDBUFFER pfnRasSendBuffer,PFNRASRECEIVEBUFFER pfnRasReceiveBuffer,PFNRASRETRIEVEBUFFER pfnRasRetrieveBuffer,HWND hWnd,struct tagRASDIALPARAMSA *pRasDialParams,PVOID pvReserved); +#define RASCOMMSETTINGS struct tagRASCOMMSETTINGS + struct tagRASCOMMSETTINGS { + DWORD dwSize; + BYTE bParity; + BYTE bStop; + BYTE bByteSize; + BYTE bAlign; + }; + typedef DWORD (__attribute__((__stdcall__)) *PFNRASSETCOMMSETTINGS) (HANDLE hPort,struct tagRASCOMMSETTINGS *pRasCommSettings,PVOID pvReserved); +#define RASCUSTOMSCRIPTEXTENSIONS struct tagRASCUSTOMSCRIPTEXTENSIONS + struct tagRASCUSTOMSCRIPTEXTENSIONS { + DWORD dwSize; + PFNRASSETCOMMSETTINGS pfnRasSetCommSettings; + }; + DWORD __attribute__((__stdcall__)) RasDialA(struct tagRASDIALEXTENSIONS*,LPCSTR,struct tagRASDIALPARAMSA*,DWORD,LPVOID,HRASCONN*); + DWORD __attribute__((__stdcall__)) RasDialW(struct tagRASDIALEXTENSIONS*,LPCWSTR,struct tagRASDIALPARAMSW*,DWORD,LPVOID,HRASCONN*); + DWORD __attribute__((__stdcall__)) RasEnumConnectionsA(struct tagRASCONNA*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasEnumConnectionsW(struct tagRASCONNW*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasEnumEntriesA(LPCSTR,LPCSTR,struct tagRASENTRYNAMEA*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasEnumEntriesW(LPCWSTR,LPCWSTR,struct tagRASENTRYNAMEW*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetConnectStatusA(HRASCONN,struct tagRASCONNSTATUSA*); + DWORD __attribute__((__stdcall__)) RasGetConnectStatusW(HRASCONN,struct tagRASCONNSTATUSW*); + DWORD __attribute__((__stdcall__)) RasGetErrorStringA(UINT,LPSTR,DWORD); + DWORD __attribute__((__stdcall__)) RasGetErrorStringW(UINT,LPWSTR,DWORD); + DWORD __attribute__((__stdcall__)) RasHangUpA(HRASCONN); + DWORD __attribute__((__stdcall__)) RasHangUpW(HRASCONN); + DWORD __attribute__((__stdcall__)) RasGetProjectionInfoA(HRASCONN,enum tagRASPROJECTION,LPVOID,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetProjectionInfoW(HRASCONN,enum tagRASPROJECTION,LPVOID,LPDWORD); + DWORD __attribute__((__stdcall__)) RasCreatePhonebookEntryA(HWND,LPCSTR); + DWORD __attribute__((__stdcall__)) RasCreatePhonebookEntryW(HWND,LPCWSTR); + DWORD __attribute__((__stdcall__)) RasEditPhonebookEntryA(HWND,LPCSTR,LPCSTR); + DWORD __attribute__((__stdcall__)) RasEditPhonebookEntryW(HWND,LPCWSTR,LPCWSTR); + DWORD __attribute__((__stdcall__)) RasSetEntryDialParamsA(LPCSTR,struct tagRASDIALPARAMSA*,WINBOOL); + DWORD __attribute__((__stdcall__)) RasSetEntryDialParamsW(LPCWSTR,struct tagRASDIALPARAMSW*,WINBOOL); + DWORD __attribute__((__stdcall__)) RasGetEntryDialParamsA(LPCSTR,struct tagRASDIALPARAMSA*,LPBOOL); + DWORD __attribute__((__stdcall__)) RasGetEntryDialParamsW(LPCWSTR,struct tagRASDIALPARAMSW*,LPBOOL); + DWORD __attribute__((__stdcall__)) RasEnumDevicesA(struct tagRASDEVINFOA*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasEnumDevicesW(struct tagRASDEVINFOW*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetCountryInfoA(struct RASCTRYINFO*,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetCountryInfoW(struct RASCTRYINFO*,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetEntryPropertiesA(LPCSTR,LPCSTR,struct tagRASENTRYA*,LPDWORD,LPBYTE,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetEntryPropertiesW(LPCWSTR,LPCWSTR,struct tagRASENTRYW*,LPDWORD,LPBYTE,LPDWORD); + DWORD __attribute__((__stdcall__)) RasSetEntryPropertiesA(LPCSTR,LPCSTR,struct tagRASENTRYA*,DWORD,LPBYTE,DWORD); + DWORD __attribute__((__stdcall__)) RasSetEntryPropertiesW(LPCWSTR,LPCWSTR,struct tagRASENTRYW*,DWORD,LPBYTE,DWORD); + DWORD __attribute__((__stdcall__)) RasRenameEntryA(LPCSTR,LPCSTR,LPCSTR); + DWORD __attribute__((__stdcall__)) RasRenameEntryW(LPCWSTR,LPCWSTR,LPCWSTR); + DWORD __attribute__((__stdcall__)) RasDeleteEntryA(LPCSTR,LPCSTR); + DWORD __attribute__((__stdcall__)) RasDeleteEntryW(LPCWSTR,LPCWSTR); + DWORD __attribute__((__stdcall__)) RasValidateEntryNameA(LPCSTR,LPCSTR); + DWORD __attribute__((__stdcall__)) RasValidateEntryNameW(LPCWSTR,LPCWSTR); + DWORD __attribute__((__stdcall__)) RasConnectionNotificationA(HRASCONN,HANDLE,DWORD); + DWORD __attribute__((__stdcall__)) RasConnectionNotificationW(HRASCONN,HANDLE,DWORD); + DWORD __attribute__((__stdcall__)) RasGetSubEntryHandleA(HRASCONN,DWORD,HRASCONN*); + DWORD __attribute__((__stdcall__)) RasGetSubEntryHandleW(HRASCONN,DWORD,HRASCONN*); + DWORD __attribute__((__stdcall__)) RasGetCredentialsA(LPCSTR,LPCSTR,struct tagRASCREDENTIALSA*); + DWORD __attribute__((__stdcall__)) RasGetCredentialsW(LPCWSTR,LPCWSTR,struct tagRASCREDENTIALSW*); + DWORD __attribute__((__stdcall__)) RasSetCredentialsA(LPCSTR,LPCSTR,struct tagRASCREDENTIALSA*,WINBOOL); + DWORD __attribute__((__stdcall__)) RasSetCredentialsW(LPCWSTR,LPCWSTR,struct tagRASCREDENTIALSW*,WINBOOL); + DWORD __attribute__((__stdcall__)) RasGetSubEntryPropertiesA(LPCSTR,LPCSTR,DWORD,struct tagRASSUBENTRYA*,LPDWORD,LPBYTE,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetSubEntryPropertiesW(LPCWSTR,LPCWSTR,DWORD,struct tagRASSUBENTRYW*,LPDWORD,LPBYTE,LPDWORD); + DWORD __attribute__((__stdcall__)) RasSetSubEntryPropertiesA(LPCSTR,LPCSTR,DWORD,struct tagRASSUBENTRYA*,DWORD,LPBYTE,DWORD); + DWORD __attribute__((__stdcall__)) RasSetSubEntryPropertiesW(LPCWSTR,LPCWSTR,DWORD,struct tagRASSUBENTRYW*,DWORD,LPBYTE,DWORD); + DWORD __attribute__((__stdcall__)) RasGetAutodialAddressA(LPCSTR,LPDWORD,struct tagRASAUTODIALENTRYA*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetAutodialAddressW(LPCWSTR,LPDWORD,struct tagRASAUTODIALENTRYW*,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasSetAutodialAddressA(LPCSTR,DWORD,struct tagRASAUTODIALENTRYA*,DWORD,DWORD); + DWORD __attribute__((__stdcall__)) RasSetAutodialAddressW(LPCWSTR,DWORD,struct tagRASAUTODIALENTRYW*,DWORD,DWORD); + DWORD __attribute__((__stdcall__)) RasEnumAutodialAddressesA(LPSTR *,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasEnumAutodialAddressesW(LPWSTR *,LPDWORD,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetAutodialEnableA(DWORD,LPBOOL); + DWORD __attribute__((__stdcall__)) RasGetAutodialEnableW(DWORD,LPBOOL); + DWORD __attribute__((__stdcall__)) RasSetAutodialEnableA(DWORD,WINBOOL); + DWORD __attribute__((__stdcall__)) RasSetAutodialEnableW(DWORD,WINBOOL); + DWORD __attribute__((__stdcall__)) RasGetAutodialParamA(DWORD,LPVOID,LPDWORD); + DWORD __attribute__((__stdcall__)) RasGetAutodialParamW(DWORD,LPVOID,LPDWORD); + DWORD __attribute__((__stdcall__)) RasSetAutodialParamA(DWORD,LPVOID,DWORD); + DWORD __attribute__((__stdcall__)) RasSetAutodialParamW(DWORD,LPVOID,DWORD); + typedef struct _RAS_STATS { + DWORD dwSize; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwCompressionRatioIn; + DWORD dwCompressionRatioOut; + DWORD dwBps; + DWORD dwConnectDuration; + } RAS_STATS,*PRAS_STATS; + typedef DWORD (__attribute__((__stdcall__)) *RasCustomHangUpFn)(HRASCONN hRasConn); + typedef DWORD (__attribute__((__stdcall__)) *RasCustomDialFn)(HINSTANCE hInstDll,struct tagRASDIALEXTENSIONS* lpRasDialExtensions,LPCWSTR lpszPhonebook,struct tagRASDIALPARAMSA* lpRasDialParams,DWORD dwNotifierType,LPVOID lpvNotifier,HRASCONN* lphRasConn,DWORD dwFlags); + typedef DWORD (__attribute__((__stdcall__)) *RasCustomDeleteEntryNotifyFn)(LPCWSTR lpszPhonebook,LPCWSTR lpszEntry,DWORD dwFlags); +#define RCD_SingleUser 0 +#define RCD_AllUsers 0x00000001 +#define RCD_Eap 0x00000002 +#define RCD_Logon 0x00000004 + DWORD __attribute__((__stdcall__)) RasInvokeEapUI(HRASCONN,DWORD,struct tagRASDIALEXTENSIONS*,HWND); + DWORD __attribute__((__stdcall__)) RasGetLinkStatistics(HRASCONN hRasConn,DWORD dwSubEntry,RAS_STATS *lpStatistics); + DWORD __attribute__((__stdcall__)) RasGetConnectionStatistics(HRASCONN hRasConn,RAS_STATS *lpStatistics); + DWORD __attribute__((__stdcall__)) RasClearLinkStatistics(HRASCONN hRasConn,DWORD dwSubEntry); + DWORD __attribute__((__stdcall__)) RasClearConnectionStatistics(HRASCONN hRasConn); + DWORD __attribute__((__stdcall__)) RasGetEapUserDataA(HANDLE hToken,LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbEapData,DWORD *pdwSizeofEapData); + DWORD __attribute__((__stdcall__)) RasGetEapUserDataW(HANDLE hToken,LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbEapData,DWORD *pdwSizeofEapData); + DWORD __attribute__((__stdcall__)) RasSetEapUserDataA(HANDLE hToken,LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbEapData,DWORD dwSizeofEapData); + DWORD __attribute__((__stdcall__)) RasSetEapUserDataW(HANDLE hToken,LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbEapData,DWORD dwSizeofEapData); + DWORD __attribute__((__stdcall__)) RasGetCustomAuthDataA(LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbCustomAuthData,DWORD *pdwSizeofCustomAuthData); + DWORD __attribute__((__stdcall__)) RasGetCustomAuthDataW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbCustomAuthData,DWORD *pdwSizeofCustomAuthData); + DWORD __attribute__((__stdcall__)) RasSetCustomAuthDataA(LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbCustomAuthData,DWORD dwSizeofCustomAuthData); + DWORD __attribute__((__stdcall__)) RasSetCustomAuthDataW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbCustomAuthData,DWORD dwSizeofCustomAuthData); + DWORD __attribute__((__stdcall__)) RasGetEapUserIdentityW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,DWORD dwFlags,HWND hwnd,struct tagRASEAPUSERIDENTITYW* *ppRasEapUserIdentity); + DWORD __attribute__((__stdcall__)) RasGetEapUserIdentityA(LPCSTR pszPhonebook,LPCSTR pszEntry,DWORD dwFlags,HWND hwnd,struct tagRASEAPUSERIDENTITYA* *ppRasEapUserIdentity); + void __attribute__((__stdcall__)) RasFreeEapUserIdentityW(struct tagRASEAPUSERIDENTITYW* pRasEapUserIdentity); + void __attribute__((__stdcall__)) RasFreeEapUserIdentityA(struct tagRASEAPUSERIDENTITYA* pRasEapUserIdentity); + DWORD __attribute__((__stdcall__)) RasDeleteSubEntryA(LPCSTR pszPhonebook,LPCSTR pszEntry,DWORD dwSubentryId); + DWORD __attribute__((__stdcall__)) RasDeleteSubEntryW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,DWORD dwSubEntryId); +#define RasDial __MINGW_NAME_AW(RasDial) +#define RasEnumConnections __MINGW_NAME_AW(RasEnumConnections) +#define RasEnumEntries __MINGW_NAME_AW(RasEnumEntries) +#define RasGetConnectStatus __MINGW_NAME_AW(RasGetConnectStatus) +#define RasGetErrorString __MINGW_NAME_AW(RasGetErrorString) +#define RasHangUp __MINGW_NAME_AW(RasHangUp) +#define RasGetProjectionInfo __MINGW_NAME_AW(RasGetProjectionInfo) +#define RasCreatePhonebookEntry __MINGW_NAME_AW(RasCreatePhonebookEntry) +#define RasEditPhonebookEntry __MINGW_NAME_AW(RasEditPhonebookEntry) +#define RasSetEntryDialParams __MINGW_NAME_AW(RasSetEntryDialParams) +#define RasGetEntryDialParams __MINGW_NAME_AW(RasGetEntryDialParams) +#define RasEnumDevices __MINGW_NAME_AW(RasEnumDevices) +#define RasGetCountryInfo __MINGW_NAME_AW(RasGetCountryInfo) +#define RasGetEntryProperties __MINGW_NAME_AW(RasGetEntryProperties) +#define RasSetEntryProperties __MINGW_NAME_AW(RasSetEntryProperties) +#define RasRenameEntry __MINGW_NAME_AW(RasRenameEntry) +#define RasDeleteEntry __MINGW_NAME_AW(RasDeleteEntry) +#define RasValidateEntryName __MINGW_NAME_AW(RasValidateEntryName) +#define RasGetSubEntryHandle __MINGW_NAME_AW(RasGetSubEntryHandle) +#define RasConnectionNotification __MINGW_NAME_AW(RasConnectionNotification) +#define RasGetSubEntryProperties __MINGW_NAME_AW(RasGetSubEntryProperties) +#define RasSetSubEntryProperties __MINGW_NAME_AW(RasSetSubEntryProperties) +#define RasGetCredentials __MINGW_NAME_AW(RasGetCredentials) +#define RasSetCredentials __MINGW_NAME_AW(RasSetCredentials) +#define RasGetAutodialAddress __MINGW_NAME_AW(RasGetAutodialAddress) +#define RasSetAutodialAddress __MINGW_NAME_AW(RasSetAutodialAddress) +#define RasEnumAutodialAddresses __MINGW_NAME_AW(RasEnumAutodialAddresses) +#define RasGetAutodialEnable __MINGW_NAME_AW(RasGetAutodialEnable) +#define RasSetAutodialEnable __MINGW_NAME_AW(RasSetAutodialEnable) +#define RasGetAutodialParam __MINGW_NAME_AW(RasGetAutodialParam) +#define RasSetAutodialParam __MINGW_NAME_AW(RasSetAutodialParam) +#define RasGetEapUserData __MINGW_NAME_AW(RasGetEapUserData) +#define RasSetEapUserData __MINGW_NAME_AW(RasSetEapUserData) +#define RasGetCustomAuthData __MINGW_NAME_AW(RasGetCustomAuthData) +#define RasSetCustomAuthData __MINGW_NAME_AW(RasSetCustomAuthData) +#define RasGetEapUserIdentity __MINGW_NAME_AW(RasGetEapUserIdentity) +#define RasFreeEapUserIdentity __MINGW_NAME_AW(RasFreeEapUserIdentity) +#define RasDeleteSubEntry __MINGW_NAME_AW(RasDeleteSubEntry) +typedef struct _tagRasNapState { + DWORD dwSize; + DWORD dwFlags; + IsolationState isolationState; + ProbationTime probationTime; +} RASNAPSTATE, *LPRASNAPSTATE; +typedef struct _RASPPPIPV6 { + DWORD dwSize; + DWORD dwError; + BYTE bLocalInterfaceIdentifier[8]; + BYTE bPeerInterfaceIdentifier[8]; + BYTE bLocalCompressionProtocol[2]; + BYTE bPeerCompressionProtocol[2]; +} RASPPPIPV6, *LPRASPPPIPV6; +DWORD rasgetnapstatus( + HRASCONN hRasConn, + LPRASNAPSTATE pNapState +); +#pragma pack(pop) +#define RRAS_SERVICE_NAME TEXT("RemoteAccess") +#define PID_IPX 0x0000002B +#define PID_IP 0x00000021 +#define PID_NBF 0x0000003F +#define PID_ATALK 0x00000029 +#define MAX_INTERFACE_NAME_LEN 256 +#define MAX_TRANSPORT_NAME_LEN 40 +#define MAX_MEDIA_NAME 16 +#define MAX_PORT_NAME 16 +#define MAX_DEVICE_NAME 128 +#define MAX_PHONE_NUMBER_LEN 128 +#define MAX_DEVICETYPE_NAME 16 + typedef enum _ROUTER_INTERFACE_TYPE { + ROUTER_IF_TYPE_CLIENT,ROUTER_IF_TYPE_HOME_ROUTER,ROUTER_IF_TYPE_FULL_ROUTER,ROUTER_IF_TYPE_DEDICATED,ROUTER_IF_TYPE_INTERNAL, + ROUTER_IF_TYPE_LOOPBACK,ROUTER_IF_TYPE_TUNNEL1,ROUTER_IF_TYPE_DIALOUT + } ROUTER_INTERFACE_TYPE; + typedef enum _ROUTER_CONNECTION_STATE { + ROUTER_IF_STATE_UNREACHABLE,ROUTER_IF_STATE_DISCONNECTED,ROUTER_IF_STATE_CONNECTING,ROUTER_IF_STATE_CONNECTED + } ROUTER_CONNECTION_STATE; +#define MPR_INTERFACE_OUT_OF_RESOURCES 0x00000001 +#define MPR_INTERFACE_ADMIN_DISABLED 0x00000002 +#define MPR_INTERFACE_CONNECTION_FAILURE 0x00000004 +#define MPR_INTERFACE_SERVICE_PAUSED 0x00000008 +#define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION 0x00000010 +#define MPR_INTERFACE_NO_MEDIA_SENSE 0x00000020 +#define MPR_INTERFACE_NO_DEVICE 0x00000040 + typedef struct _MPR_INTERFACE_0 { + WCHAR wszInterfaceName[256 +1]; + HANDLE hInterface; + WINBOOL fEnabled; + ROUTER_INTERFACE_TYPE dwIfType; + ROUTER_CONNECTION_STATE dwConnectionState; + DWORD fUnReachabilityReasons; + DWORD dwLastError; + } MPR_INTERFACE_0,*PMPR_INTERFACE_0; + typedef struct _MPR_IPINIP_INTERFACE_0 { + WCHAR wszFriendlyName[256 +1]; + GUID Guid; + } MPR_IPINIP_INTERFACE_0,*PMPR_IPINIP_INTERFACE_0; + typedef struct _MPR_INTERFACE_1 { + WCHAR wszInterfaceName[256 +1]; + HANDLE hInterface; + WINBOOL fEnabled; + ROUTER_INTERFACE_TYPE dwIfType; + ROUTER_CONNECTION_STATE dwConnectionState; + DWORD fUnReachabilityReasons; + DWORD dwLastError; + LPWSTR lpwsDialoutHoursRestriction; + } MPR_INTERFACE_1,*PMPR_INTERFACE_1; +#define MPR_MaxDeviceType RAS_MaxDeviceType +#define MPR_MaxPhoneNumber RAS_MaxPhoneNumber +#define MPR_MaxIpAddress RAS_MaxIpAddress +#define MPR_MaxIpxAddress RAS_MaxIpxAddress +#define MPR_MaxEntryName RAS_MaxEntryName +#define MPR_MaxDeviceName RAS_MaxDeviceName +#define MPR_MaxCallbackNumber RAS_MaxCallbackNumber +#define MPR_MaxAreaCode RAS_MaxAreaCode +#define MPR_MaxPadType RAS_MaxPadType +#define MPR_MaxX25Address RAS_MaxX25Address +#define MPR_MaxFacilities RAS_MaxFacilities +#define MPR_MaxUserData RAS_MaxUserData +#define MPRIO_SpecificIpAddr RASEO_SpecificIpAddr +#define MPRIO_SpecificNameServers RASEO_SpecificNameServers +#define MPRIO_IpHeaderCompression RASEO_IpHeaderCompression +#define MPRIO_RemoteDefaultGateway RASEO_RemoteDefaultGateway +#define MPRIO_DisableLcpExtensions RASEO_DisableLcpExtensions +#define MPRIO_SwCompression RASEO_SwCompression +#define MPRIO_RequireEncryptedPw RASEO_RequireEncryptedPw +#define MPRIO_RequireMsEncryptedPw RASEO_RequireMsEncryptedPw +#define MPRIO_RequireDataEncryption RASEO_RequireDataEncryption +#define MPRIO_NetworkLogon RASEO_NetworkLogon +#define MPRIO_PromoteAlternates RASEO_PromoteAlternates +#define MPRIO_SecureLocalFiles RASEO_SecureLocalFiles +#define MPRIO_RequireEAP RASEO_RequireEAP +#define MPRIO_RequirePAP RASEO_RequirePAP +#define MPRIO_RequireSPAP RASEO_RequireSPAP +#define MPRIO_SharedPhoneNumbers RASEO_SharedPhoneNumbers +#define MPRIO_RequireCHAP RASEO_RequireCHAP +#define MPRIO_RequireMsCHAP RASEO_RequireMsCHAP +#define MPRIO_RequireMsCHAP2 RASEO_RequireMsCHAP2 +#define MPRIO_IpSecPreSharedKey 0x80000000 +#define MPRNP_Ipx RASNP_Ipx +#define MPRNP_Ip RASNP_Ip +#define MPRDT_Modem RASDT_Modem +#define MPRDT_Isdn RASDT_Isdn +#define MPRDT_X25 RASDT_X25 +#define MPRDT_Vpn RASDT_Vpn +#define MPRDT_Pad RASDT_Pad +#define MPRDT_Generic RASDT_Generic +#define MPRDT_Serial RASDT_Serial +#define MPRDT_FrameRelay RASDT_FrameRelay +#define MPRDT_Atm RASDT_Atm +#define MPRDT_Sonet RASDT_Sonet +#define MPRDT_SW56 RASDT_SW56 +#define MPRDT_Irda RASDT_Irda +#define MPRDT_Parallel RASDT_Parallel +#define MPRET_Phone RASET_Phone +#define MPRET_Vpn RASET_Vpn +#define MPRET_Direct RASET_Direct +#define MPRDM_DialFirst 0 +#define MPRDM_DialAll RASEDM_DialAll +#define MPRDM_DialAsNeeded RASEDM_DialAsNeeded +#define MPRIDS_Disabled RASIDS_Disabled +#define MPRIDS_UseGlobalValue RASIDS_UseGlobalValue +#define MPR_ET_None ET_None +#define MPR_ET_Require ET_Require +#define MPR_ET_RequireMax ET_RequireMax +#define MPR_ET_Optional ET_Optional +#define MPR_VS_Default VS_Default +#define MPR_VS_PptpOnly VS_PptpOnly +#define MPR_VS_PptpFirst VS_PptpFirst +#define MPR_VS_L2tpOnly VS_L2tpOnly +#define MPR_VS_L2tpFirst VS_L2tpFirst + typedef struct _MPR_INTERFACE_2 { + WCHAR wszInterfaceName[256 +1]; + HANDLE hInterface; + WINBOOL fEnabled; + ROUTER_INTERFACE_TYPE dwIfType; + ROUTER_CONNECTION_STATE dwConnectionState; + DWORD fUnReachabilityReasons; + DWORD dwLastError; + DWORD dwfOptions; + WCHAR szLocalPhoneNumber[128 + 1 ]; + PWCHAR szAlternates; + DWORD ipaddr; + DWORD ipaddrDns; + DWORD ipaddrDnsAlt; + DWORD ipaddrWins; + DWORD ipaddrWinsAlt; + DWORD dwfNetProtocols; + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + WCHAR szX25PadType[32 + 1 ]; + WCHAR szX25Address[200 + 1 ]; + WCHAR szX25Facilities[200 + 1 ]; + WCHAR szX25UserData[200 + 1 ]; + DWORD dwChannels; + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + DWORD dwCustomAuthDataSize; + LPBYTE lpbCustomAuthData; + GUID guidId; + DWORD dwVpnStrategy; + } MPR_INTERFACE_2,*PMPR_INTERFACE_2; + typedef struct _MPR_INTERFACE_3 { + WCHAR wszInterfaceName[256 +1]; + HANDLE hInterface; + WINBOOL fEnabled; + ROUTER_INTERFACE_TYPE dwIfType; + ROUTER_CONNECTION_STATE dwConnectionState; + DWORD fUnReachabilityReasons; + DWORD dwLastError; + DWORD dwfOptions; + WCHAR szLocalPhoneNumber[128 + 1]; + PWCHAR szAlternates; + DWORD ipaddr; + DWORD ipaddrDns; + DWORD ipaddrDnsAlt; + DWORD ipaddrWins; + DWORD ipaddrWinsAlt; + DWORD dwfNetProtocols; + WCHAR szDeviceType[16 + 1]; + WCHAR szDeviceName[128 + 1]; + WCHAR szX25PadType[32 + 1]; + WCHAR szX25Address[200 + 1]; + WCHAR szX25Facilities[200 + 1]; + WCHAR szX25UserData[200 + 1]; + DWORD dwChannels; + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + DWORD dwCustomAuthDataSize; + LPBYTE lpbCustomAuthData; + GUID guidId; + DWORD dwVpnStrategy; + ULONG AddressCount; + IN6_ADDR ipv6addrDns; + IN6_ADDR ipv6addrDnsAlt; + IN6_ADDR * ipv6addr; + } MPR_INTERFACE_3, *PMPR_INTERFACE_3; + typedef struct _MPR_DEVICE_0 { + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + } MPR_DEVICE_0,*PMPR_DEVICE_0; + typedef struct _MPR_DEVICE_1 { + WCHAR szDeviceType[16 + 1 ]; + WCHAR szDeviceName[128 + 1 ]; + WCHAR szLocalPhoneNumber[128 + 1 ]; + PWCHAR szAlternates; + } MPR_DEVICE_1,*PMPR_DEVICE_1; + typedef struct _MPR_CREDENTIALSEX_0 { + DWORD dwSize; + LPBYTE lpbCredentialsInfo; + } MPR_CREDENTIALSEX_0,*PMPR_CREDENTIALSEX_0; + typedef struct _MPR_CREDENTIALSEX_1 { + DWORD dwSize; + LPBYTE lpbCredentialsInfo; + } MPR_CREDENTIALSEX_1,*PMPR_CREDENTIALSEX_1; + typedef struct _MPR_TRANSPORT_0 { + DWORD dwTransportId; + HANDLE hTransport; + WCHAR wszTransportName[40 +1]; + } MPR_TRANSPORT_0,*PMPR_TRANSPORT_0; + typedef struct _MPR_IFTRANSPORT_0 + { + DWORD dwTransportId; + HANDLE hIfTransport; + WCHAR wszIfTransportName[40 +1]; + } + MPR_IFTRANSPORT_0,*PMPR_IFTRANSPORT_0; + typedef struct _MPR_SERVER_0 + { + WINBOOL fLanOnlyMode; + DWORD dwUpTime; + DWORD dwTotalPorts; + DWORD dwPortsInUse; + } + MPR_SERVER_0,*PMPR_SERVER_0; +#define MPR_ENABLE_RAS_ON_DEVICE 0x00000001 +#define MPR_ENABLE_ROUTING_ON_DEVICE 0x00000002 + typedef struct _MPR_SERVER_1 { + DWORD dwNumPptpPorts; + DWORD dwPptpPortFlags; + DWORD dwNumL2tpPorts; + DWORD dwL2tpPortFlags; + } MPR_SERVER_1,*PMPR_SERVER_1; + typedef enum _RAS_PORT_CONDITION { + RAS_PORT_NON_OPERATIONAL,RAS_PORT_DISCONNECTED,RAS_PORT_CALLING_BACK,RAS_PORT_LISTENING,RAS_PORT_AUTHENTICATING,RAS_PORT_AUTHENTICATED, + RAS_PORT_INITIALIZING + } RAS_PORT_CONDITION; + typedef enum _RAS_HARDWARE_CONDITION { + RAS_HARDWARE_OPERATIONAL,RAS_HARDWARE_FAILURE + } RAS_HARDWARE_CONDITION; + typedef struct _RAS_PORT_0 { + HANDLE hPort; + HANDLE hConnection; + RAS_PORT_CONDITION dwPortCondition; + DWORD dwTotalNumberOfCalls; + DWORD dwConnectDuration; + WCHAR wszPortName[16 + 1 ]; + WCHAR wszMediaName[16 + 1 ]; + WCHAR wszDeviceName[128 + 1 ]; + WCHAR wszDeviceType[16 + 1 ]; + } RAS_PORT_0,*PRAS_PORT_0; + typedef struct _RAS_PORT_1 { + HANDLE hPort; + HANDLE hConnection; + RAS_HARDWARE_CONDITION dwHardwareCondition; + DWORD dwLineSpeed; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwCompressionRatioIn; + DWORD dwCompressionRatioOut; + } RAS_PORT_1,*PRAS_PORT_1; +#define IPADDRESSLEN 15 +#define IPXADDRESSLEN 22 +#define ATADDRESSLEN 32 +#define MAXIPADRESSLEN 64 + typedef struct _PPP_NBFCP_INFO { + DWORD dwError; + WCHAR wszWksta[16 + 1 ]; + } PPP_NBFCP_INFO; + typedef struct _PPP_IPCP_INFO { + DWORD dwError; + WCHAR wszAddress[15 + 1 ]; + WCHAR wszRemoteAddress[15 + 1 ]; + } PPP_IPCP_INFO; +#define PPP_IPCP_VJ 0x00000001 + typedef struct _PPP_IPCP_INFO2 { + DWORD dwError; + WCHAR wszAddress[15 + 1 ]; + WCHAR wszRemoteAddress[15 + 1 ]; + DWORD dwOptions; + DWORD dwRemoteOptions; + } PPP_IPCP_INFO2; + typedef struct _PPP_IPXCP_INFO { + DWORD dwError; + WCHAR wszAddress[22 + 1 ]; + } PPP_IPXCP_INFO; + typedef struct _PPP_ATCP_INFO { + DWORD dwError; + WCHAR wszAddress[32 + 1 ]; + } PPP_ATCP_INFO; + typedef struct _PPP_INFO { + PPP_NBFCP_INFO nbf; + PPP_IPCP_INFO ip; + PPP_IPXCP_INFO ipx; + PPP_ATCP_INFO at; + } PPP_INFO; +#define RASCCPCA_MPPC 0x00000006 +#define RASCCPCA_STAC 0x00000005 +#define PPP_CCP_COMPRESSION 0x00000001 +#define PPP_CCP_ENCRYPTION40BITOLD 0x00000010 +#define PPP_CCP_ENCRYPTION40BIT 0x00000020 +#define PPP_CCP_ENCRYPTION128BIT 0x00000040 +#define PPP_CCP_ENCRYPTION56BIT 0x00000080 +#define PPP_CCP_HISTORYLESS 0x01000000 + typedef struct _PPP_CCP_INFO { + DWORD dwError; + DWORD dwCompressionAlgorithm; + DWORD dwOptions; + DWORD dwRemoteCompressionAlgorithm; + DWORD dwRemoteOptions; + } PPP_CCP_INFO; +#define PPP_LCP_PAP 0xC023 +#define PPP_LCP_SPAP 0xC027 +#define PPP_LCP_CHAP 0xC223 +#define PPP_LCP_EAP 0xC227 +#define PPP_LCP_CHAP_MD5 0x05 +#define PPP_LCP_CHAP_MS 0x80 +#define PPP_LCP_CHAP_MSV2 0x81 +#define PPP_LCP_MULTILINK_FRAMING 0x00000001 +#define PPP_LCP_PFC 0x00000002 +#define PPP_LCP_ACFC 0x00000004 +#define PPP_LCP_SSHF 0x00000008 +#define PPP_LCP_DES_56 0x00000010 +#define PPP_LCP_3_DES 0x00000020 + typedef struct _PPP_LCP_INFO { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwRemoteAuthenticationProtocol; + DWORD dwRemoteAuthenticationData; + DWORD dwTerminateReason; + DWORD dwRemoteTerminateReason; + DWORD dwOptions; + DWORD dwRemoteOptions; + DWORD dwEapTypeId; + DWORD dwRemoteEapTypeId; + } PPP_LCP_INFO; + typedef struct _PPP_INFO_2 { + PPP_NBFCP_INFO nbf; + PPP_IPCP_INFO2 ip; + PPP_IPXCP_INFO ipx; + PPP_ATCP_INFO at; + PPP_CCP_INFO ccp; + PPP_LCP_INFO lcp; + } PPP_INFO_2; +#define RAS_FLAGS_PPP_CONNECTION 0x00000001 +#define RAS_FLAGS_MESSENGER_PRESENT 0x00000002 +#define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008 + typedef struct _RAS_CONNECTION_0 { + HANDLE hConnection; + HANDLE hInterface; + DWORD dwConnectDuration; + ROUTER_INTERFACE_TYPE dwInterfaceType; + DWORD dwConnectionFlags; + WCHAR wszInterfaceName[256 + 1 ]; + WCHAR wszUserName[256 + 1 ]; + WCHAR wszLogonDomain[15 + 1 ]; + WCHAR wszRemoteComputer[16 + 1 ]; + } RAS_CONNECTION_0,*PRAS_CONNECTION_0; + typedef struct _RAS_CONNECTION_1 { + HANDLE hConnection; + HANDLE hInterface; + PPP_INFO PppInfo; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwCompressionRatioIn; + DWORD dwCompressionRatioOut; + } RAS_CONNECTION_1,*PRAS_CONNECTION_1; + typedef struct _RAS_CONNECTION_2 { + HANDLE hConnection; + WCHAR wszUserName[256 + 1 ]; + ROUTER_INTERFACE_TYPE dwInterfaceType; + GUID guid; + PPP_INFO_2 PppInfo2; + } RAS_CONNECTION_2,*PRAS_CONNECTION_2; +#define RASPRIV_NoCallback 0x01 +#define RASPRIV_AdminSetCallback 0x02 +#define RASPRIV_CallerSetCallback 0x04 +#define RASPRIV_DialinPrivilege 0x08 +#define RASPRIV2_DialinPolicy 0x1 +#define RASPRIV_CallbackType (RASPRIV_AdminSetCallback | RASPRIV_CallerSetCallback | RASPRIV_NoCallback) + typedef struct _RAS_USER_0 { + BYTE bfPrivilege; + WCHAR wszPhoneNumber[128 + 1]; + } RAS_USER_0,*PRAS_USER_0; + typedef struct _RAS_USER_1 { + BYTE bfPrivilege; + WCHAR wszPhoneNumber[128 + 1]; + BYTE bfPrivilege2; + } RAS_USER_1,*PRAS_USER_1; + typedef HANDLE RAS_SERVER_HANDLE; + typedef HANDLE MPR_SERVER_HANDLE; + typedef HANDLE MIB_SERVER_HANDLE; + DWORD __attribute__((__stdcall__)) MprAdminConnectionEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); + DWORD __attribute__((__stdcall__)) MprAdminPortEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); + DWORD __attribute__((__stdcall__)) MprAdminConnectionGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminPortGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hPort,LPBYTE *lplpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminConnectionClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hConnection); + DWORD __attribute__((__stdcall__)) MprAdminPortClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hPort); + DWORD __attribute__((__stdcall__)) MprAdminPortReset(RAS_SERVER_HANDLE hRasServer,HANDLE hPort); + DWORD __attribute__((__stdcall__)) MprAdminPortDisconnect(RAS_SERVER_HANDLE hRasServer,HANDLE hPort); + WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewConnection(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1); + WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewConnection2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2); + WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewLink (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1); + void __attribute__((__stdcall__)) MprAdminConnectionHangupNotification(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1); + void __attribute__((__stdcall__)) MprAdminConnectionHangupNotification2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2); + DWORD __attribute__((__stdcall__)) MprAdminConnectionRemoveQuarantine(HANDLE hRasServer,HANDLE hRasConnection,WINBOOL fIsIpAddress); + void __attribute__((__stdcall__)) MprAdminLinkHangupNotification (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1); + DWORD __attribute__((__stdcall__)) MprAdminGetIpAddressForUser (WCHAR *lpwszUserName,WCHAR *lpwszPortName,DWORD *lpdwIpAddress,WINBOOL *bNotifyRelease); + void __attribute__((__stdcall__)) MprAdminReleaseIpAddress (WCHAR *lpszUserName,WCHAR *lpszPortName,DWORD *lpdwIpAddress); + DWORD __attribute__((__stdcall__)) MprAdminInitializeDll(void); + DWORD __attribute__((__stdcall__)) MprAdminTerminateDll(void); + DWORD __attribute__((__stdcall__)) MprAdminUserGetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminUserSetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,const LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminSendUserMessage(MPR_SERVER_HANDLE hMprServer,HANDLE hConnection,LPWSTR lpwszMessage); + DWORD __attribute__((__stdcall__)) MprAdminGetPDCServer(const WCHAR *lpszDomain,const WCHAR *lpszServer,LPWSTR lpszPDCServer); + WINBOOL __attribute__((__stdcall__)) MprAdminIsServiceRunning(LPWSTR lpwsServerName); + DWORD __attribute__((__stdcall__)) MprAdminServerConnect(LPWSTR lpwsServerName,MPR_SERVER_HANDLE *phMprServer); + void __attribute__((__stdcall__)) MprAdminServerDisconnect(MPR_SERVER_HANDLE hMprServer); + DWORD __attribute__((__stdcall__)) MprAdminServerGetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminServerSetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminBufferFree(LPVOID pBuffer); + DWORD __attribute__((__stdcall__)) MprAdminGetErrorString(DWORD dwError,LPWSTR *lpwsErrorString); + DWORD __attribute__((__stdcall__)) MprAdminServerGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminEstablishDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,WINBOOL bEnable); + DWORD __attribute__((__stdcall__)) MprAdminIsDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,PBOOL pbIsRasServer); + DWORD __attribute__((__stdcall__)) MprAdminTransportCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath); + DWORD __attribute__((__stdcall__)) MprAdminTransportSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize); + DWORD __attribute__((__stdcall__)) MprAdminTransportGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize); + DWORD __attribute__((__stdcall__)) MprAdminDeviceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,LPDWORD lpdwTotalEntries); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetHandle(MPR_SERVER_HANDLE hMprServer,LPWSTR lpwsInterfaceName,HANDLE *phInterface,WINBOOL fIncludeClientInterfaces); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phInterface); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceDelete(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceDeviceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE *lplpBuffer); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceDeviceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE lplpBuffer); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportRemove(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportAdd(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE *ppInterfaceInfo,LPDWORD lpdwpInterfaceInfoSize); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); + DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameEnum(PWCHAR pwszMachineName,LPBYTE *lplpBuffer,LPDWORD lpdwEntriesRead); + DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameFree(LPVOID lpBuffer); + DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameCreate(PWCHAR pwszMachineName,PMPR_IPINIP_INTERFACE_0 pNameInformation); + DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameDelete(PWCHAR pwszMachineName,GUID *pGuid); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceSetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsDomainName,LPWSTR lpwsPassword); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsPassword,LPWSTR lpwsDomainName); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceSetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceConnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,HANDLE hEvent,WINBOOL fSynchronous); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceDisconnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceUpdateRoutes(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,HANDLE hEvent); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceQueryUpdateResult(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,LPDWORD lpdwUpdateResult); + DWORD __attribute__((__stdcall__)) MprAdminInterfaceUpdatePhonebookInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface); + DWORD __attribute__((__stdcall__)) MprAdminRegisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification); + DWORD __attribute__((__stdcall__)) MprAdminDeregisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification); + DWORD __attribute__((__stdcall__)) MprAdminMIBServerConnect(LPWSTR lpwsServerName,MIB_SERVER_HANDLE *phMibServer); + void __attribute__((__stdcall__)) MprAdminMIBServerDisconnect(MIB_SERVER_HANDLE hMibServer); + DWORD __attribute__((__stdcall__)) MprAdminMIBEntryCreate(MIB_SERVER_HANDLE hMibServer,DWORD dwPid,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize); + DWORD __attribute__((__stdcall__)) MprAdminMIBEntryDelete(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize); + DWORD __attribute__((__stdcall__)) MprAdminMIBEntrySet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize); + DWORD __attribute__((__stdcall__)) MprAdminMIBEntryGet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize); + DWORD __attribute__((__stdcall__)) MprAdminMIBEntryGetFirst(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize); + DWORD __attribute__((__stdcall__)) MprAdminMIBEntryGetNext(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize); + DWORD __attribute__((__stdcall__)) MprAdminMIBGetTrapInfo(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize); + DWORD __attribute__((__stdcall__)) MprAdminMIBSetTrapInfo(DWORD dwProtocolId,DWORD dwRoutingPid,HANDLE hEvent,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize); + DWORD __attribute__((__stdcall__)) MprAdminMIBBufferFree(LPVOID pBuffer); + DWORD __attribute__((__stdcall__)) MprConfigServerInstall(DWORD dwLevel,PVOID pBuffer); + DWORD __attribute__((__stdcall__)) MprConfigServerConnect(LPWSTR lpwsServerName,HANDLE *phMprConfig); + void __attribute__((__stdcall__)) MprConfigServerDisconnect(HANDLE hMprConfig); + DWORD __attribute__((__stdcall__)) MprConfigServerRefresh(HANDLE hMprConfig); + DWORD __attribute__((__stdcall__)) MprConfigBufferFree(LPVOID pBuffer); + DWORD __attribute__((__stdcall__)) MprConfigServerGetInfo(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpbBuffer); + DWORD __attribute__((__stdcall__)) MprConfigServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprConfigServerBackup(HANDLE hMprConfig,LPWSTR lpwsPath); + DWORD __attribute__((__stdcall__)) MprConfigServerRestore(HANDLE hMprConfig,LPWSTR lpwsPath); + DWORD __attribute__((__stdcall__)) MprConfigTransportCreate(HANDLE hMprConfig,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath,HANDLE *phRouterTransport); + DWORD __attribute__((__stdcall__)) MprConfigTransportDelete(HANDLE hMprConfig,HANDLE hRouterTransport); + DWORD __attribute__((__stdcall__)) MprConfigTransportGetHandle(HANDLE hMprConfig,DWORD dwTransportId,HANDLE *phRouterTransport); + DWORD __attribute__((__stdcall__)) MprConfigTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath); + DWORD __attribute__((__stdcall__)) MprConfigTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize,LPWSTR *lplpwsDLLPath); + DWORD __attribute__((__stdcall__)) MprConfigTransportEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceCreate(HANDLE hMprConfig,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phRouterInterface); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceDelete(HANDLE hMprConfig,HANDLE hRouterInterface); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceGetHandle(HANDLE hMprConfig,LPWSTR lpwsInterfaceName,HANDLE *phRouterInterface); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,LPDWORD lpdwBufferSize); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE lpbBuffer); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportAdd(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize,HANDLE *phRouterIfTransport); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportRemove(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportGetHandle(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,HANDLE *phRouterIfTransport); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE *ppInterfaceInfo,LPDWORD lpdwInterfaceInfoSize); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize); + DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportEnum(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); + DWORD __attribute__((__stdcall__)) MprConfigGetFriendlyName(HANDLE hMprConfig,PWCHAR pszGuidName,PWCHAR pszBuffer,DWORD dwBufferSize); + DWORD __attribute__((__stdcall__)) MprConfigGetGuidName(HANDLE hMprConfig,PWCHAR pszFriendlyName,PWCHAR pszBuffer,DWORD dwBufferSize); + DWORD __attribute__((__stdcall__)) MprInfoCreate(DWORD dwVersion,LPVOID *lplpNewHeader); + DWORD __attribute__((__stdcall__)) MprInfoDelete(LPVOID lpHeader); + DWORD __attribute__((__stdcall__)) MprInfoRemoveAll(LPVOID lpHeader,LPVOID *lplpNewHeader); + DWORD __attribute__((__stdcall__)) MprInfoDuplicate(LPVOID lpHeader,LPVOID *lplpNewHeader); + DWORD __attribute__((__stdcall__)) MprInfoBlockAdd(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader); + DWORD __attribute__((__stdcall__)) MprInfoBlockRemove(LPVOID lpHeader,DWORD dwInfoType,LPVOID *lplpNewHeader); + DWORD __attribute__((__stdcall__)) MprInfoBlockSet(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader); + DWORD __attribute__((__stdcall__)) MprInfoBlockFind(LPVOID lpHeader,DWORD dwInfoType,LPDWORD lpdwItemSize,LPDWORD lpdwItemCount,LPBYTE *lplpItemData); + DWORD __attribute__((__stdcall__)) MprInfoBlockQuerySize(LPVOID lpHeader); +#define MprInfoBlockExists(h,t) (MprInfoBlockFind((h),(t),NULL,NULL,NULL)==NO_ERROR) +typedef enum _RAS_QUARANTINE_STATE { + RAS_QUAR_STATE_NORMAL, + RAS_QUAR_STATE_QUARANTINE, + RAS_QUAR_STATE_PROBATION, + RAS_QUAR_STATE_NOT_CAPABLE +} RAS_QUARANTINE_STATE; +typedef struct _MPR_FILTER_0 { + WINBOOL fEnabled; +} MPR_FILTER_0, *PMPR_FILTER_0; +typedef struct _MPR_SERVER_2 { + DWORD dwNumPptpPorts; + DWORD dwPptpPortFlags; + DWORD dwNumL2tpPorts; + DWORD dwL2tpPortFlags; + DWORD dwNumSstpPorts; + DWORD dwSstpPortFlags; +} MPR_SERVER_2, *PMPR_SERVER_2; +typedef struct _PPP_IPV6CP_INFO { + DWORD dwVersion; + DWORD dwSize; + DWORD dwError; + BYTE bInterfaceIdentifier[8]; + BYTE bRemoteInterfaceIdentifier[8]; + DWORD dwOptions; + DWORD dwRemoteOptions; + BYTE bPrefix[8]; + DWORD dwPrefixLength; +} PPP_IPV6_CP_INFO, *PPPP_IPV6_CP_INFO; +typedef struct _PPP_INFO_3 { + PPP_NBFCP_INFO nbf; + PPP_IPCP_INFO2 ip; + PPP_IPV6_CP_INFO ipv6; + PPP_CCP_INFO ccp; + PPP_LCP_INFO lcp; +} PPP_INFO_3; +typedef struct _RAS_CONNECTION_3 { + DWORD dwVersion; + DWORD dwSize; + HANDLE hConnection; + WCHAR wszUserName[256 + 1]; + ROUTER_INTERFACE_TYPE dwInterfaceType; + GUID guid; + PPP_INFO_3 PppInfo3; + RAS_QUARANTINE_STATE rasQuarState; + FILETIME timer; +} RAS_CONNECTION_3, *PRAS_CONNECTION_3; +WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewConnection3( + RAS_CONNECTION_0 *pRasConnection0, + RAS_CONNECTION_1 *pRasConnection1, + RAS_CONNECTION_2 *pRasConnection2, + RAS_CONNECTION_3 *pRasConnection3 +); +WINBOOL __attribute__((__stdcall__)) MprAdminAcceptReauthentication( + RAS_CONNECTION_0 *pRasConnection0, + RAS_CONNECTION_1 *pRasConnection1, + RAS_CONNECTION_2 *pRasConnection2, + RAS_CONNECTION_3 *pRasConnection3 +); +void __attribute__((__stdcall__)) MprAdminConnectionHangupNotification3( + RAS_CONNECTION_0 *pRasConnection0, + RAS_CONNECTION_1 *pRasConnection1, + RAS_CONNECTION_2 *pRasConnection2, + RAS_CONNECTION_3 *pRasConnection3 +); +DWORD __attribute__((__stdcall__)) MprAdminGetIpv6AddressForUser( + WCHAR *lpwszUserName, + WCHAR *lpwszPortName, + IN6_ADDR *lpdwIpv6Address, + WINBOOL *bNotifyRelease +); +DWORD __attribute__((__stdcall__)) MprAdminReleaseIpv6AddressForUser( + WCHAR *lpwszUserName, + WCHAR *lpwszPortName, + IN6_ADDR *lpdwIpv6Address +); +DWORD __attribute__((__stdcall__)) MprConfigFilterGetInfo( + HANDLE hMprConfig, + DWORD dwLevel, + DWORD dwTransportId, + LPBYTE lpBuffer +); +DWORD __attribute__((__stdcall__)) MprConfigFilterSetInfo( + HANDLE hMprConfig, + DWORD dwLevel, + DWORD dwTransportId, + LPBYTE lpBuffer +); +#define _NLDEF_ +typedef enum { + NldsInvalid, + NldsTentative, + NldsDuplicate, + NldsDeprecated, + NldsPreferred, + IpDadStateInvalid = 0, + IpDadStateTentative, + IpDadStateDuplicate, + IpDadStateDeprecated, + IpDadStatePreferred, +} NL_DAD_STATE; +#define MAKE_ROUTE_PROTOCOL(N,V) MIB_IPPROTO_ ## N = V, PROTO_IP_ ## N = V +typedef enum { + RouteProtocolOther = 1, + RouteProtocolLocal = 2, + RouteProtocolNetMgmt = 3, + RouteProtocolIcmp = 4, + RouteProtocolEgp = 5, + RouteProtocolGgp = 6, + RouteProtocolHello = 7, + RouteProtocolRip = 8, + RouteProtocolIsIs = 9, + RouteProtocolEsIs = 10, + RouteProtocolCisco = 11, + RouteProtocolBbn = 12, + RouteProtocolOspf = 13, + RouteProtocolBgp = 14, + MIB_IPPROTO_OTHER = 1, PROTO_IP_OTHER = 1, + MIB_IPPROTO_LOCAL = 2, PROTO_IP_LOCAL = 2, + MIB_IPPROTO_NETMGMT = 3, PROTO_IP_NETMGMT = 3, + MIB_IPPROTO_ICMP = 4, PROTO_IP_ICMP = 4, + MIB_IPPROTO_EGP = 5, PROTO_IP_EGP = 5, + MIB_IPPROTO_GGP = 6, PROTO_IP_GGP = 6, + MIB_IPPROTO_HELLO = 7, PROTO_IP_HELLO = 7, + MIB_IPPROTO_RIP = 8, PROTO_IP_RIP = 8, + MIB_IPPROTO_IS_IS = 9, PROTO_IP_IS_IS = 9, + MIB_IPPROTO_ES_IS = 10, PROTO_IP_ES_IS = 10, + MIB_IPPROTO_CISCO = 11, PROTO_IP_CISCO = 11, + MIB_IPPROTO_BBN = 12, PROTO_IP_BBN = 12, + MIB_IPPROTO_OSPF = 13, PROTO_IP_OSPF = 13, + MIB_IPPROTO_BGP = 14, PROTO_IP_BGP = 14, + MIB_IPPROTO_NT_AUTOSTATIC = 10002, PROTO_IP_NT_AUTOSTATIC = 10002, + MIB_IPPROTO_NT_STATIC = 10006, PROTO_IP_NT_STATIC = 10006, + MIB_IPPROTO_NT_STATIC_NON_DOD = 10007, PROTO_IP_NT_STATIC_NON_DOD = 10007 +} NL_ROUTE_PROTOCOL,*PNL_ROUTE_PROTOCOL; +typedef enum { + IpPrefixOriginOther = 0, + IpPrefixOriginManual, + IpPrefixOriginWellKnown, + IpPrefixOriginDhcp, + IpPrefixOriginRouterAdvertisement, + IpPrefixOriginUnchanged = 16 +} NL_PREFIX_ORIGIN; +typedef enum { + NlsoOther = 0, + NlsoManual, + NlsoWellKnown, + NlsoDhcp, + NlsoLinkLayerAddress, + NlsoRandom, + IpSuffixOriginOther = 0, + IpSuffixOriginManual, + IpSuffixOriginWellKnown, + IpSuffixOriginDhcp, + IpSuffixOriginLinkLayerAddress, + IpSuffixOriginRandom, + IpSuffixOriginUnchanged = 16 +} NL_SUFFIX_ORIGIN; +typedef enum { + NlatUnspecified, + NlatUnicast, + NlatAnycast, + NlatMulticast, + NlatBroadcast, + NlatInvalid +} NL_ADDRESS_TYPE, *PNL_ADDRESS_TYPE; +typedef enum _NL_ROUTE_ORIGIN { + NlroManual, + NlroWellKnown, + NlroDHCP, + NlroRouterAdvertisement, + Nlro6to4, +} NL_ROUTE_ORIGIN, *PNL_ROUTE_ORIGIN; +typedef enum _NL_NEIGHBOR_STATE { + NlnsUnreachable, + NlnsIncomplete, + NlnsProbe, + NlnsDelay, + NlnsStale, + NlnsReachable, + NlnsPermanent, + NlnsMaximum, +} NL_NEIGHBOR_STATE, *PNL_NEIGHBOR_STATE; +typedef enum _NL_LINK_LOCAL_ADDRESS_BEHAVIOR { + LinkLocalAlwaysOff = 0, + LinkLocalDelayed, + LinkLocalAlwaysOn, + LinkLocalUnchanged = -1 +} NL_LINK_LOCAL_ADDRESS_BEHAVIOR; +typedef enum _NL_ROUTER_DISCOVERY_BEHAVIOR { + RouterDiscoveryDisabled = 0, + RouterDiscoveryEnabled, + RouterDiscoveryDhcp, + RouterDiscoveryUnchanged = -1 +} NL_ROUTER_DISCOVERY_BEHAVIOR; +typedef enum _NL_BANDWIDTH_FLAG { + NlbwDisabled = 0, + NlbwEnabled, + NlbwUnchanged = -1 +} NL_BANDWIDTH_FLAG, *PNL_BANDWIDTH_FLAG; +typedef enum _NL_INTERFACE_NETWORK_CATEGORY_STATE { + NlincCategoryUnknown = 0, + NlincPublic = 1, + NlincPrivate = 2, + NlincDomainAuthenticated = 3, + NlincCategoryStateMax +} NL_INTERFACE_NETWORK_CATEGORY_STATE, *PNL_INTERFACE_NETWORK_CATEGORY_STATE; +typedef struct _NL_INTERFACE_OFFLOAD_ROD { + BOOLEAN NlChecksumSupported : 1; + BOOLEAN NlOptionsSupported : 1; + BOOLEAN TlDatagramChecksumSupported : 1; + BOOLEAN TlStreamChecksumSupported : 1; + BOOLEAN TlStreamOptionsSupported : 1; + BOOLEAN FastPathCompatible : 1; + BOOLEAN TlLargeSendOffloadSupported : 1; + BOOLEAN TlGiantSendOffloadSupported : 1; +} NL_INTERFACE_OFFLOAD_ROD, *PNL_INTERFACE_OFFLOAD_ROD; +typedef struct _NL_PATH_BANDWIDTH_ROD { + ULONG64 Bandwidth; + ULONG64 Instability; + BOOLEAN BandwidthPeaked; +} NL_PATH_BANDWIDTH_ROD, *PNL_PATH_BANDWIDTH_ROD; +typedef enum _NL_NETWORK_CATEGORY { + NetworkCategoryPublic, + NetworkCategoryPrivate, + NetworkCategoryDomainAuthenticated, + NetworkCategoryUnchanged = -1, + NetworkCategoryUnknown = -1 +} NL_NETWORK_CATEGORY,*PNL_NETWORK_CATEGORY; +typedef struct _NL_BANDWIDTH_INFORMATION { + ULONG64 Bandwidth; + ULONG64 Instability; + BOOLEAN BandwidthPeaked; +} NL_BANDWIDTH_INFORMATION, *PNL_BANDWIDTH_INFORMATION; +#define NlpoOther IpPrefixOriginOther +#define NlpoManual IpPrefixOriginManual +#define NlpoWellKnown IpPrefixOriginWellKnown +#define NlpoDhcp IpPrefixOriginDhcp +#define NlpoRouterAdvertisement IpPrefixOriginRouterAdvertisement +#define NL_MAX_METRIC_COMPONENT ((((ULONG) 1) << 31) - 1) +#define NET_IF_CURRENT_SESSION ((ULONG)-1) +#define __IPIFCONS_H__ +typedef ULONG IFTYPE; +#define MIN_IF_TYPE 1 +#define IF_TYPE_OTHER 1 +#define IF_TYPE_REGULAR_1822 2 +#define IF_TYPE_HDH_1822 3 +#define IF_TYPE_DDN_X25 4 +#define IF_TYPE_RFC877_X25 5 +#define IF_TYPE_ETHERNET_CSMACD 6 +#define IF_TYPE_IS088023_CSMACD 7 +#define IF_TYPE_ISO88024_TOKENBUS 8 +#define IF_TYPE_ISO88025_TOKENRING 9 +#define IF_TYPE_ISO88026_MAN 10 +#define IF_TYPE_STARLAN 11 +#define IF_TYPE_PROTEON_10MBIT 12 +#define IF_TYPE_PROTEON_80MBIT 13 +#define IF_TYPE_HYPERCHANNEL 14 +#define IF_TYPE_FDDI 15 +#define IF_TYPE_LAP_B 16 +#define IF_TYPE_SDLC 17 +#define IF_TYPE_DS1 18 +#define IF_TYPE_E1 19 +#define IF_TYPE_BASIC_ISDN 20 +#define IF_TYPE_PRIMARY_ISDN 21 +#define IF_TYPE_PROP_POINT2POINT_SERIAL 22 +#define IF_TYPE_PPP 23 +#define IF_TYPE_SOFTWARE_LOOPBACK 24 +#define IF_TYPE_EON 25 +#define IF_TYPE_ETHERNET_3MBIT 26 +#define IF_TYPE_NSIP 27 +#define IF_TYPE_SLIP 28 +#define IF_TYPE_ULTRA 29 +#define IF_TYPE_DS3 30 +#define IF_TYPE_SIP 31 +#define IF_TYPE_FRAMERELAY 32 +#define IF_TYPE_RS232 33 +#define IF_TYPE_PARA 34 +#define IF_TYPE_ARCNET 35 +#define IF_TYPE_ARCNET_PLUS 36 +#define IF_TYPE_ATM 37 +#define IF_TYPE_MIO_X25 38 +#define IF_TYPE_SONET 39 +#define IF_TYPE_X25_PLE 40 +#define IF_TYPE_ISO88022_LLC 41 +#define IF_TYPE_LOCALTALK 42 +#define IF_TYPE_SMDS_DXI 43 +#define IF_TYPE_FRAMERELAY_SERVICE 44 +#define IF_TYPE_V35 45 +#define IF_TYPE_HSSI 46 +#define IF_TYPE_HIPPI 47 +#define IF_TYPE_MODEM 48 +#define IF_TYPE_AAL5 49 +#define IF_TYPE_SONET_PATH 50 +#define IF_TYPE_SONET_VT 51 +#define IF_TYPE_SMDS_ICIP 52 +#define IF_TYPE_PROP_VIRTUAL 53 +#define IF_TYPE_PROP_MULTIPLEXOR 54 +#define IF_TYPE_IEEE80212 55 +#define IF_TYPE_FIBRECHANNEL 56 +#define IF_TYPE_HIPPIINTERFACE 57 +#define IF_TYPE_FRAMERELAY_INTERCONNECT 58 +#define IF_TYPE_AFLANE_8023 59 +#define IF_TYPE_AFLANE_8025 60 +#define IF_TYPE_CCTEMUL 61 +#define IF_TYPE_FASTETHER 62 +#define IF_TYPE_ISDN 63 +#define IF_TYPE_V11 64 +#define IF_TYPE_V36 65 +#define IF_TYPE_G703_64K 66 +#define IF_TYPE_G703_2MB 67 +#define IF_TYPE_QLLC 68 +#define IF_TYPE_FASTETHER_FX 69 +#define IF_TYPE_CHANNEL 70 +#define IF_TYPE_IEEE80211 71 +#define IF_TYPE_IBM370PARCHAN 72 +#define IF_TYPE_ESCON 73 +#define IF_TYPE_DLSW 74 +#define IF_TYPE_ISDN_S 75 +#define IF_TYPE_ISDN_U 76 +#define IF_TYPE_LAP_D 77 +#define IF_TYPE_IPSWITCH 78 +#define IF_TYPE_RSRB 79 +#define IF_TYPE_ATM_LOGICAL 80 +#define IF_TYPE_DS0 81 +#define IF_TYPE_DS0_BUNDLE 82 +#define IF_TYPE_BSC 83 +#define IF_TYPE_ASYNC 84 +#define IF_TYPE_CNR 85 +#define IF_TYPE_ISO88025R_DTR 86 +#define IF_TYPE_EPLRS 87 +#define IF_TYPE_ARAP 88 +#define IF_TYPE_PROP_CNLS 89 +#define IF_TYPE_HOSTPAD 90 +#define IF_TYPE_TERMPAD 91 +#define IF_TYPE_FRAMERELAY_MPI 92 +#define IF_TYPE_X213 93 +#define IF_TYPE_ADSL 94 +#define IF_TYPE_RADSL 95 +#define IF_TYPE_SDSL 96 +#define IF_TYPE_VDSL 97 +#define IF_TYPE_ISO88025_CRFPRINT 98 +#define IF_TYPE_MYRINET 99 +#define IF_TYPE_VOICE_EM 100 +#define IF_TYPE_VOICE_FXO 101 +#define IF_TYPE_VOICE_FXS 102 +#define IF_TYPE_VOICE_ENCAP 103 +#define IF_TYPE_VOICE_OVERIP 104 +#define IF_TYPE_ATM_DXI 105 +#define IF_TYPE_ATM_FUNI 106 +#define IF_TYPE_ATM_IMA 107 +#define IF_TYPE_PPPMULTILINKBUNDLE 108 +#define IF_TYPE_IPOVER_CDLC 109 +#define IF_TYPE_IPOVER_CLAW 110 +#define IF_TYPE_STACKTOSTACK 111 +#define IF_TYPE_VIRTUALIPADDRESS 112 +#define IF_TYPE_MPC 113 +#define IF_TYPE_IPOVER_ATM 114 +#define IF_TYPE_ISO88025_FIBER 115 +#define IF_TYPE_TDLC 116 +#define IF_TYPE_GIGABITETHERNET 117 +#define IF_TYPE_HDLC 118 +#define IF_TYPE_LAP_F 119 +#define IF_TYPE_V37 120 +#define IF_TYPE_X25_MLP 121 +#define IF_TYPE_X25_HUNTGROUP 122 +#define IF_TYPE_TRANSPHDLC 123 +#define IF_TYPE_INTERLEAVE 124 +#define IF_TYPE_FAST 125 +#define IF_TYPE_IP 126 +#define IF_TYPE_DOCSCABLE_MACLAYER 127 +#define IF_TYPE_DOCSCABLE_DOWNSTREAM 128 +#define IF_TYPE_DOCSCABLE_UPSTREAM 129 +#define IF_TYPE_A12MPPSWITCH 130 +#define IF_TYPE_TUNNEL 131 +#define IF_TYPE_COFFEE 132 +#define IF_TYPE_CES 133 +#define IF_TYPE_ATM_SUBINTERFACE 134 +#define IF_TYPE_L2_VLAN 135 +#define IF_TYPE_L3_IPVLAN 136 +#define IF_TYPE_L3_IPXVLAN 137 +#define IF_TYPE_DIGITALPOWERLINE 138 +#define IF_TYPE_MEDIAMAILOVERIP 139 +#define IF_TYPE_DTM 140 +#define IF_TYPE_DCN 141 +#define IF_TYPE_IPFORWARD 142 +#define IF_TYPE_MSDSL 143 +#define IF_TYPE_IEEE1394 144 +#define IF_TYPE_RECEIVE_ONLY 145 +#define MAX_IF_TYPE 145 +#define IF_ACCESS_LOOPBACK 1 +#define IF_ACCESS_BROADCAST 2 +#define IF_ACCESS_POINTTOPOINT 3 +#define IF_ACCESS_POINTTOMULTIPOINT 4 +#define IF_CHECK_NONE 0x00 +#define IF_CHECK_MCAST 0x01 +#define IF_CHECK_SEND 0x02 +#define IF_CONNECTION_DEDICATED 1 +#define IF_CONNECTION_PASSIVE 2 +#define IF_CONNECTION_DEMAND 3 +#define IF_ADMIN_STATUS_UP 1 +#define IF_ADMIN_STATUS_DOWN 2 +#define IF_ADMIN_STATUS_TESTING 3 +#define IF_OPER_STATUS_NON_OPERATIONAL 0 +#define IF_OPER_STATUS_UNREACHABLE 1 +#define IF_OPER_STATUS_DISCONNECTED 2 +#define IF_OPER_STATUS_CONNECTING 3 +#define IF_OPER_STATUS_CONNECTED 4 +#define IF_OPER_STATUS_OPERATIONAL 5 +#define MIB_IF_TYPE_OTHER 1 +#define MIB_IF_TYPE_ETHERNET 6 +#define MIB_IF_TYPE_TOKENRING 9 +#define MIB_IF_TYPE_FDDI 15 +#define MIB_IF_TYPE_PPP 23 +#define MIB_IF_TYPE_LOOPBACK 24 +#define MIB_IF_TYPE_SLIP 28 +#define MIB_IF_ADMIN_STATUS_UP 1 +#define MIB_IF_ADMIN_STATUS_DOWN 2 +#define MIB_IF_ADMIN_STATUS_TESTING 3 +#define MIB_IF_OPER_STATUS_NON_OPERATIONAL 0 +#define MIB_IF_OPER_STATUS_UNREACHABLE 1 +#define MIB_IF_OPER_STATUS_DISCONNECTED 2 +#define MIB_IF_OPER_STATUS_CONNECTING 3 +#define MIB_IF_OPER_STATUS_CONNECTED 4 +#define MIB_IF_OPER_STATUS_OPERATIONAL 5 +#define _INC_UDPMIB +#define ANY_SIZE 1 +typedef struct _MIB_UDP6ROW { + IN6_ADDR dwLocalAddr; + DWORD dwLocalScopeId; + DWORD dwLocalPort; +} MIB_UDP6ROW, *PMIB_UDP6ROW; +typedef struct _MIB_UDP6TABLE { + DWORD dwNumEntries; + MIB_UDP6ROW table[1]; +} MIB_UDP6TABLE, *PMIB_UDP6TABLE; +#define _INC_TCPMIB +typedef int MIB_TCP_STATE; +typedef enum _TCP_CONNECTION_OFFLOAD_STATE { + TcpConnectionOffloadStateInHost = 0, + TcpConnectionOffloadStateOffloading = 1, + TcpConnectionOffloadStateOffloaded = 2, + TcpConnectionOffloadStateUploading = 3, + TcpConnectionOffloadStateMax = 4 +} TCP_CONNECTION_OFFLOAD_STATE; +typedef struct _MIB_TCP6ROW { + MIB_TCP_STATE State; + IN6_ADDR LocalAddr; + DWORD dwLocalScopeId; + DWORD dwLocalPort; + IN6_ADDR RemoteAddr; + DWORD dwRemoteScopeId; + DWORD dwRemotePort; +} MIB_TCP6ROW, *PMIB_TCP6ROW; +typedef struct _MIB_TCP6TABLE { + DWORD dwNumEntries; + MIB_TCP6ROW table[1]; +} MIB_TCP6TABLE, *PMIB_TCP6TABLE; +typedef struct _MIB_TCP6ROW2 { + IN6_ADDR LocalAddr; + DWORD dwLocalScopeId; + DWORD dwLocalPort; + IN6_ADDR RemoteAddr; + DWORD dwRemoteScopeId; + DWORD dwRemotePort; + MIB_TCP_STATE State; + DWORD dwOwningPid; + TCP_CONNECTION_OFFLOAD_STATE dwOffloadState; +} MIB_TCP6ROW2, *PMIB_TCP6ROW2; +typedef struct _MIB_TCP6TABLE2 { + DWORD dwNumEntries; + MIB_TCP6ROW2 table[1]; +} MIB_TCP6TABLE2, *PMIB_TCP6TABLE2; +typedef struct _MIB_TCPROW2 { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; + DWORD dwOwningPid; + TCP_CONNECTION_OFFLOAD_STATE dwOffloadState; +} MIB_TCPROW2, *PMIB_TCPROW2; +typedef struct _MIB_TCPTABLE2 { + DWORD dwNumEntries; + MIB_TCPROW2 table[1]; +} MIB_TCPTABLE2, *PMIB_TCPTABLE2; + +#define IPRTRMGR_PID 10000 +#define TCPIP_OWNING_MODULE_SIZE 16 +#define IF_NUMBER 0 +#define IF_TABLE (IF_NUMBER + 1) +#define IF_ROW (IF_TABLE + 1) +#define IP_STATS (IF_ROW + 1) +#define IP_ADDRTABLE (IP_STATS + 1) +#define IP_ADDRROW (IP_ADDRTABLE + 1) +#define IP_FORWARDNUMBER (IP_ADDRROW + 1) +#define IP_FORWARDTABLE (IP_FORWARDNUMBER + 1) +#define IP_FORWARDROW (IP_FORWARDTABLE + 1) +#define IP_NETTABLE (IP_FORWARDROW + 1) +#define IP_NETROW (IP_NETTABLE + 1) +#define ICMP_STATS (IP_NETROW + 1) +#define TCP_STATS (ICMP_STATS + 1) +#define TCP_TABLE (TCP_STATS + 1) +#define TCP_ROW (TCP_TABLE + 1) +#define UDP_STATS (TCP_ROW + 1) +#define UDP_TABLE (UDP_STATS + 1) +#define UDP_ROW (UDP_TABLE + 1) +#define MCAST_MFE (UDP_ROW + 1) +#define MCAST_MFE_STATS (MCAST_MFE + 1) +#define BEST_IF (MCAST_MFE_STATS + 1) +#define BEST_ROUTE (BEST_IF + 1) +#define PROXY_ARP (BEST_ROUTE + 1) +#define MCAST_IF_ENTRY (PROXY_ARP + 1) +#define MCAST_GLOBAL (MCAST_IF_ENTRY + 1) +#define IF_STATUS (MCAST_GLOBAL + 1) +#define MCAST_BOUNDARY (IF_STATUS + 1) +#define MCAST_SCOPE (MCAST_BOUNDARY + 1) +#define DEST_MATCHING (MCAST_SCOPE + 1) +#define DEST_LONGER (DEST_MATCHING + 1) +#define DEST_SHORTER (DEST_LONGER + 1) +#define ROUTE_MATCHING (DEST_SHORTER + 1) +#define ROUTE_LONGER (ROUTE_MATCHING + 1) +#define ROUTE_SHORTER (ROUTE_LONGER + 1) +#define ROUTE_STATE (ROUTE_SHORTER + 1) +#define MCAST_MFE_STATS_EX (ROUTE_STATE + 1) +#define IP6_STATS (MCAST_MFE_STATS_EX + 1) +#define UDP6_STATS (IP6_STATS + 1) +#define TCP6_STATS (UDP6_STATS + 1) +#define NUMBER_OF_EXPORTED_VARIABLES (TCP6_STATS + 1) +typedef struct _MIB_OPAQUE_QUERY { + DWORD dwVarId; + DWORD rgdwVarIndex[1]; +} MIB_OPAQUE_QUERY,*PMIB_OPAQUE_QUERY; +typedef struct _MIB_IFNUMBER { + DWORD dwValue; +} MIB_IFNUMBER,*PMIB_IFNUMBER; +#define MAXLEN_IFDESCR 256 +#define MAXLEN_PHYSADDR 8 +typedef struct _MIB_IFROW { + WCHAR wszName[256]; + DWORD dwIndex; + DWORD dwType; + DWORD dwMtu; + DWORD dwSpeed; + DWORD dwPhysAddrLen; + BYTE bPhysAddr[8]; + DWORD dwAdminStatus; + DWORD dwOperStatus; + DWORD dwLastChange; + DWORD dwInOctets; + DWORD dwInUcastPkts; + DWORD dwInNUcastPkts; + DWORD dwInDiscards; + DWORD dwInErrors; + DWORD dwInUnknownProtos; + DWORD dwOutOctets; + DWORD dwOutUcastPkts; + DWORD dwOutNUcastPkts; + DWORD dwOutDiscards; + DWORD dwOutErrors; + DWORD dwOutQLen; + DWORD dwDescrLen; + BYTE bDescr[256]; +} MIB_IFROW,*PMIB_IFROW; +typedef struct _MIB_IFTABLE { + DWORD dwNumEntries; + MIB_IFROW table[1]; +} MIB_IFTABLE,*PMIB_IFTABLE; +#define SIZEOF_IFTABLE(X) (FIELD_OFFSET(MIB_IFTABLE,table[0]) + ((X) *sizeof(MIB_IFROW)) + ALIGN_SIZE) +typedef struct _MIBICMPSTATS { + DWORD dwMsgs; + DWORD dwErrors; + DWORD dwDestUnreachs; + DWORD dwTimeExcds; + DWORD dwParmProbs; + DWORD dwSrcQuenchs; + DWORD dwRedirects; + DWORD dwEchos; + DWORD dwEchoReps; + DWORD dwTimestamps; + DWORD dwTimestampReps; + DWORD dwAddrMasks; + DWORD dwAddrMaskReps; +} MIBICMPSTATS,*PMIBICMPSTATS; +typedef struct _MIBICMPINFO { + MIBICMPSTATS icmpInStats; + MIBICMPSTATS icmpOutStats; +} MIBICMPINFO; +typedef struct _MIB_ICMP { + MIBICMPINFO stats; +} MIB_ICMP,*PMIB_ICMP; +typedef enum { + ICMP6_DST_UNREACH = 1,ICMP6_PACKET_TOO_BIG = 2,ICMP6_TIME_EXCEEDED = 3,ICMP6_PARAM_PROB = 4,ICMP6_ECHO_REQUEST = 128, + ICMP6_ECHO_REPLY = 129,ICMP6_MEMBERSHIP_QUERY = 130,ICMP6_MEMBERSHIP_REPORT = 131,ICMP6_MEMBERSHIP_REDUCTION = 132, + ND_ROUTER_SOLICIT = 133,ND_ROUTER_ADVERT = 134,ND_NEIGHBOR_SOLICIT = 135,ND_NEIGHBOR_ADVERT = 136,ND_REDIRECT = 137 +} ICMP6_TYPE,*PICMP6_TYPE; +typedef enum { + ICMP4_ECHO_REPLY = 0,ICMP4_DST_UNREACH = 3,ICMP4_SOURCE_QUENCH = 4,ICMP4_REDIRECT = 5,ICMP4_ECHO_REQUEST = 8,ICMP4_ROUTER_ADVERT = 9, + ICMP4_ROUTER_SOLICIT = 10,ICMP4_TIME_EXCEEDED = 11,ICMP4_PARAM_PROB = 12,ICMP4_TIMESTAMP_REQUEST = 13,ICMP4_TIMESTAMP_REPLY = 14, + ICMP4_MASK_REQUEST = 17,ICMP4_MASK_REPLY = 18 +} ICMP4_TYPE,*PICMP4_TYPE; +typedef struct _MIBICMPSTATS_EX { + DWORD dwMsgs; + DWORD dwErrors; + DWORD rgdwTypeCount[256]; +} MIBICMPSTATS_EX,*PMIBICMPSTATS_EX; +typedef struct _MIB_ICMP_EX { + MIBICMPSTATS_EX icmpInStats; + MIBICMPSTATS_EX icmpOutStats; +} MIB_ICMP_EX,*PMIB_ICMP_EX; +typedef struct _MIB_UDPSTATS { + DWORD dwInDatagrams; + DWORD dwNoPorts; + DWORD dwInErrors; + DWORD dwOutDatagrams; + DWORD dwNumAddrs; +} MIB_UDPSTATS,*PMIB_UDPSTATS; +typedef struct _MIB_UDPROW { + DWORD dwLocalAddr; + DWORD dwLocalPort; +} MIB_UDPROW,*PMIB_UDPROW; +typedef MIB_UDPROW MIB_UDPROW_BASIC,*PMIB_UDPROW_BASIC; +typedef struct _MIB_UDPROW_OWNER_PID { + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwOwningPid; +} MIB_UDPROW_OWNER_PID,*PMIB_UDPROW_OWNER_PID; +typedef struct _MIB_UDPROW_OWNER_MODULE { + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwOwningPid; + LARGE_INTEGER liCreateTimestamp; + __extension__ union { + __extension__ struct { + DWORD SpecificPortBind : 1; + }; + DWORD dwFlags; + }; + ULONGLONG OwningModuleInfo[16]; +} MIB_UDPROW_OWNER_MODULE,*PMIB_UDPROW_OWNER_MODULE; +typedef struct _MIB_UDP6ROW_OWNER_PID { + UCHAR ucLocalAddr[16]; + DWORD dwLocalScopeId; + DWORD dwLocalPort; + DWORD dwOwningPid; +} MIB_UDP6ROW_OWNER_PID,*PMIB_UDP6ROW_OWNER_PID; +typedef struct _MIB_UDP6ROW_OWNER_MODULE { + UCHAR ucLocalAddr[16]; + DWORD dwLocalScopeId; + DWORD dwLocalPort; + DWORD dwOwningPid; + LARGE_INTEGER liCreateTimestamp; + __extension__ union { + __extension__ struct { + DWORD SpecificPortBind : 1; + }; + DWORD dwFlags; + }; + ULONGLONG OwningModuleInfo[16]; +} MIB_UDP6ROW_OWNER_MODULE,*PMIB_UDP6ROW_OWNER_MODULE; +typedef struct _MIB_UDPTABLE { + DWORD dwNumEntries; + MIB_UDPROW table[1]; +} MIB_UDPTABLE,*PMIB_UDPTABLE; +typedef MIB_UDPTABLE MIB_UDPTABLE_BASIC,*PMIB_UDPTABLE_BASIC; +#define SIZEOF_UDPTABLE(X) (FIELD_OFFSET(MIB_UDPTABLE,table[0]) + ((X) *sizeof(MIB_UDPROW)) + ALIGN_SIZE) +#define SIZEOF_UDPTABLE_BASIC(X) SIZEOF_UDPTABLE(X) +typedef struct _MIB_UDPTABLE_OWNER_PID { + DWORD dwNumEntries; + MIB_UDPROW_OWNER_PID table[1]; +} MIB_UDPTABLE_OWNER_PID,*PMIB_UDPTABLE_OWNER_PID; +#define SIZEOF_UDPTABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_UDPTABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_UDPROW_OWNER_PID)) + ALIGN_SIZE) +typedef struct _MIB_UDPTABLE_OWNER_MODULE { + DWORD dwNumEntries; + MIB_UDPROW_OWNER_MODULE table[1]; +} MIB_UDPTABLE_OWNER_MODULE,*PMIB_UDPTABLE_OWNER_MODULE; +#define SIZEOF_UDPTABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_UDPTABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_UDPROW_OWNER_MODULE)) + ALIGN_SIZE) +typedef struct _MIB_UDP6TABLE_OWNER_PID { + DWORD dwNumEntries; + MIB_UDP6ROW_OWNER_PID table[1]; +} MIB_UDP6TABLE_OWNER_PID,*PMIB_UDP6TABLE_OWNER_PID; +#define SIZEOF_UDP6TABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_UDP6ROW_OWNER_PID)) + ALIGN_SIZE) +typedef struct _MIB_UDP6TABLE_OWNER_MODULE { + DWORD dwNumEntries; + MIB_UDP6ROW_OWNER_MODULE table[1]; +} MIB_UDP6TABLE_OWNER_MODULE,*PMIB_UDP6TABLE_OWNER_MODULE; +#define SIZEOF_UDP6TABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_UDP6ROW_OWNER_MODULE)) + ALIGN_SIZE) +typedef struct _MIB_TCPSTATS { + DWORD dwRtoAlgorithm; + DWORD dwRtoMin; + DWORD dwRtoMax; + DWORD dwMaxConn; + DWORD dwActiveOpens; + DWORD dwPassiveOpens; + DWORD dwAttemptFails; + DWORD dwEstabResets; + DWORD dwCurrEstab; + DWORD dwInSegs; + DWORD dwOutSegs; + DWORD dwRetransSegs; + DWORD dwInErrs; + DWORD dwOutRsts; + DWORD dwNumConns; +} MIB_TCPSTATS,*PMIB_TCPSTATS; +#define MIB_TCP_RTO_OTHER 1 +#define MIB_TCP_RTO_CONSTANT 2 +#define MIB_TCP_RTO_RSRE 3 +#define MIB_TCP_RTO_VANJ 4 +#define MIB_TCP_MAXCONN_DYNAMIC (DWORD)-1 +typedef enum _TCP_TABLE_CLASS { + TCP_TABLE_BASIC_LISTENER, + TCP_TABLE_BASIC_CONNECTIONS, + TCP_TABLE_BASIC_ALL, + TCP_TABLE_OWNER_PID_LISTENER, + TCP_TABLE_OWNER_PID_CONNECTIONS, + TCP_TABLE_OWNER_PID_ALL, + TCP_TABLE_OWNER_MODULE_LISTENER, + TCP_TABLE_OWNER_MODULE_CONNECTIONS, + TCP_TABLE_OWNER_MODULE_ALL +} TCP_TABLE_CLASS, *PTCP_TABLE_CLASS; +typedef struct _MIB_TCPROW { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; +} MIB_TCPROW,*PMIB_TCPROW; +typedef MIB_TCPROW MIB_TCPROW_BASIC,*PMIB_TCPROW_BASIC; +typedef struct _MIB_TCPROW_OWNER_PID { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; + DWORD dwOwningPid; +} MIB_TCPROW_OWNER_PID,*PMIB_TCPROW_OWNER_PID; +typedef struct _MIB_TCPROW_OWNER_MODULE { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; + DWORD dwOwningPid; + LARGE_INTEGER liCreateTimestamp; + ULONGLONG OwningModuleInfo[16]; +} MIB_TCPROW_OWNER_MODULE,*PMIB_TCPROW_OWNER_MODULE; +typedef struct _MIB_TCP6ROW_OWNER_PID { + UCHAR ucLocalAddr[16]; + DWORD dwLocalScopeId; + DWORD dwLocalPort; + UCHAR ucRemoteAddr[16]; + DWORD dwRemoteScopeId; + DWORD dwRemotePort; + DWORD dwState; + DWORD dwOwningPid; +} MIB_TCP6ROW_OWNER_PID,*PMIB_TCP6ROW_OWNER_PID; +typedef struct _MIB_TCP6ROW_OWNER_MODULE { + UCHAR ucLocalAddr[16]; + DWORD dwLocalScopeId; + DWORD dwLocalPort; + UCHAR ucRemoteAddr[16]; + DWORD dwRemoteScopeId; + DWORD dwRemotePort; + DWORD dwState; + DWORD dwOwningPid; + LARGE_INTEGER liCreateTimestamp; + ULONGLONG OwningModuleInfo[16]; +} MIB_TCP6ROW_OWNER_MODULE,*PMIB_TCP6ROW_OWNER_MODULE; +#define MIB_TCP_STATE_CLOSED 1 +#define MIB_TCP_STATE_LISTEN 2 +#define MIB_TCP_STATE_SYN_SENT 3 +#define MIB_TCP_STATE_SYN_RCVD 4 +#define MIB_TCP_STATE_ESTAB 5 +#define MIB_TCP_STATE_FIN_WAIT1 6 +#define MIB_TCP_STATE_FIN_WAIT2 7 +#define MIB_TCP_STATE_CLOSE_WAIT 8 +#define MIB_TCP_STATE_CLOSING 9 +#define MIB_TCP_STATE_LAST_ACK 10 +#define MIB_TCP_STATE_TIME_WAIT 11 +#define MIB_TCP_STATE_DELETE_TCB 12 +typedef struct _MIB_TCPTABLE { + DWORD dwNumEntries; + MIB_TCPROW table[1]; +} MIB_TCPTABLE,*PMIB_TCPTABLE; +typedef MIB_TCPTABLE MIB_TCPTABLE_BASIC,*PMIB_TCPTABLE_BASIC; +#define SIZEOF_TCPTABLE(X) (FIELD_OFFSET(MIB_TCPTABLE,table[0]) + ((X) *sizeof(MIB_TCPROW)) + ALIGN_SIZE) +#define SIZEOF_TCPTABLE_BASIC(X) SIZEOF_TCPTABLE(X) +typedef struct _MIB_TCPTABLE_OWNER_PID { + DWORD dwNumEntries; + MIB_TCPROW_OWNER_PID table[1]; +} MIB_TCPTABLE_OWNER_PID,*PMIB_TCPTABLE_OWNER_PID; +#define SIZEOF_TCPTABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_TCPTABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_TCPROW_OWNER_PID)) + ALIGN_SIZE) +typedef struct _MIB_TCPTABLE_OWNER_MODULE { + DWORD dwNumEntries; + MIB_TCPROW_OWNER_MODULE table[1]; +} MIB_TCPTABLE_OWNER_MODULE,*PMIB_TCPTABLE_OWNER_MODULE; +#define SIZEOF_TCPTABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_TCPTABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_TCPROW_OWNER_MODULE)) + ALIGN_SIZE) +typedef struct _MIB_TCP6TABLE_OWNER_PID { + DWORD dwNumEntries; + MIB_TCP6ROW_OWNER_PID table[1]; +} MIB_TCP6TABLE_OWNER_PID,*PMIB_TCP6TABLE_OWNER_PID; +#define SIZEOF_TCP6TABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_TCP6ROW_OWNER_PID)) + ALIGN_SIZE) +typedef struct _MIB_TCP6TABLE_OWNER_MODULE { + DWORD dwNumEntries; + MIB_TCP6ROW_OWNER_MODULE table[1]; +} MIB_TCP6TABLE_OWNER_MODULE,*PMIB_TCP6TABLE_OWNER_MODULE; +#define SIZEOF_TCP6TABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_TCP6ROW_OWNER_PID)) + ALIGN_SIZE) +#define MIB_SECURITY_TCP_SYN_ATTACK 0x00000001 +#define MIB_USE_CURRENT_TTL ((DWORD)-1) +#define MIB_USE_CURRENT_FORWARDING ((DWORD)-1) +typedef struct _MIB_IPSTATS { + DWORD dwForwarding; + DWORD dwDefaultTTL; + DWORD dwInReceives; + DWORD dwInHdrErrors; + DWORD dwInAddrErrors; + DWORD dwForwDatagrams; + DWORD dwInUnknownProtos; + DWORD dwInDiscards; + DWORD dwInDelivers; + DWORD dwOutRequests; + DWORD dwRoutingDiscards; + DWORD dwOutDiscards; + DWORD dwOutNoRoutes; + DWORD dwReasmTimeout; + DWORD dwReasmReqds; + DWORD dwReasmOks; + DWORD dwReasmFails; + DWORD dwFragOks; + DWORD dwFragFails; + DWORD dwFragCreates; + DWORD dwNumIf; + DWORD dwNumAddr; + DWORD dwNumRoutes; +} MIB_IPSTATS,*PMIB_IPSTATS; +#define MIB_IP_FORWARDING 1 +#define MIB_IP_NOT_FORWARDING 2 +#define MIB_IPADDR_PRIMARY 0x0001 +#define MIB_IPADDR_DYNAMIC 0x0004 +#define MIB_IPADDR_DISCONNECTED 0x0008 +#define MIB_IPADDR_DELETED 0x0040 +#define MIB_IPADDR_TRANSIENT 0x0080 +typedef struct _MIB_IPADDRROW { + DWORD dwAddr; + DWORD dwIndex; + DWORD dwMask; + DWORD dwBCastAddr; + DWORD dwReasmSize; + unsigned short unused1; + unsigned short wType; +} MIB_IPADDRROW,*PMIB_IPADDRROW; +typedef struct _MIB_IPADDRTABLE { + DWORD dwNumEntries; + MIB_IPADDRROW table[1]; +} MIB_IPADDRTABLE,*PMIB_IPADDRTABLE; +#define SIZEOF_IPADDRTABLE(X) (FIELD_OFFSET(MIB_IPADDRTABLE,table[0]) + ((X) *sizeof(MIB_IPADDRROW)) + ALIGN_SIZE) +typedef struct _MIB_IPFORWARDNUMBER { + DWORD dwValue; +} MIB_IPFORWARDNUMBER,*PMIB_IPFORWARDNUMBER; +typedef struct _MIB_IPFORWARDROW { + DWORD dwForwardDest; + DWORD dwForwardMask; + DWORD dwForwardPolicy; + DWORD dwForwardNextHop; + DWORD dwForwardIfIndex; + DWORD dwForwardType; + DWORD dwForwardProto; + DWORD dwForwardAge; + DWORD dwForwardNextHopAS; + DWORD dwForwardMetric1; + DWORD dwForwardMetric2; + DWORD dwForwardMetric3; + DWORD dwForwardMetric4; + DWORD dwForwardMetric5; +} MIB_IPFORWARDROW,*PMIB_IPFORWARDROW; +#define MIB_IPROUTE_TYPE_OTHER 1 +#define MIB_IPROUTE_TYPE_INVALID 2 +#define MIB_IPROUTE_TYPE_DIRECT 3 +#define MIB_IPROUTE_TYPE_INDIRECT 4 +#define MIB_IPROUTE_METRIC_UNUSED (DWORD)-1 +#define MIB_IPPROTO_OTHER 1 +#define MIB_IPPROTO_LOCAL 2 +#define MIB_IPPROTO_NETMGMT 3 +#define MIB_IPPROTO_ICMP 4 +#define MIB_IPPROTO_EGP 5 +#define MIB_IPPROTO_GGP 6 +#define MIB_IPPROTO_HELLO 7 +#define MIB_IPPROTO_RIP 8 +#define MIB_IPPROTO_IS_IS 9 +#define MIB_IPPROTO_ES_IS 10 +#define MIB_IPPROTO_CISCO 11 +#define MIB_IPPROTO_BBN 12 +#define MIB_IPPROTO_OSPF 13 +#define MIB_IPPROTO_BGP 14 +#define MIB_IPPROTO_NT_AUTOSTATIC 10002 +#define MIB_IPPROTO_NT_STATIC 10006 +#define MIB_IPPROTO_NT_STATIC_NON_DOD 10007 +typedef struct _MIB_IPFORWARDTABLE { + DWORD dwNumEntries; + MIB_IPFORWARDROW table[1]; +} MIB_IPFORWARDTABLE,*PMIB_IPFORWARDTABLE; +#define SIZEOF_IPFORWARDTABLE(X) (FIELD_OFFSET(MIB_IPFORWARDTABLE,table[0]) + ((X) *sizeof(MIB_IPFORWARDROW)) + ALIGN_SIZE) +typedef struct _MIB_IPNETROW { + DWORD dwIndex; + DWORD dwPhysAddrLen; + BYTE bPhysAddr[8]; + DWORD dwAddr; + DWORD dwType; +} MIB_IPNETROW,*PMIB_IPNETROW; +#define MIB_IPNET_TYPE_OTHER 1 +#define MIB_IPNET_TYPE_INVALID 2 +#define MIB_IPNET_TYPE_DYNAMIC 3 +#define MIB_IPNET_TYPE_STATIC 4 +typedef struct _MIB_IPNETTABLE { + DWORD dwNumEntries; + MIB_IPNETROW table[1]; +} MIB_IPNETTABLE,*PMIB_IPNETTABLE; +#define SIZEOF_IPNETTABLE(X) (FIELD_OFFSET(MIB_IPNETTABLE,table[0]) + ((X) *sizeof(MIB_IPNETROW)) + ALIGN_SIZE) +typedef struct _MIB_IPMCAST_OIF { + DWORD dwOutIfIndex; + DWORD dwNextHopAddr; + DWORD dwReserved; + DWORD dwReserved1; +} MIB_IPMCAST_OIF,*PMIB_IPMCAST_OIF; +typedef struct _MIB_IPMCAST_MFE { + DWORD dwGroup; + DWORD dwSource; + DWORD dwSrcMask; + DWORD dwUpStrmNgbr; + DWORD dwInIfIndex; + DWORD dwInIfProtocol; + DWORD dwRouteProtocol; + DWORD dwRouteNetwork; + DWORD dwRouteMask; + ULONG ulUpTime; + ULONG ulExpiryTime; + ULONG ulTimeOut; + ULONG ulNumOutIf; + DWORD fFlags; + DWORD dwReserved; + MIB_IPMCAST_OIF rgmioOutInfo[1]; +} MIB_IPMCAST_MFE,*PMIB_IPMCAST_MFE; +typedef struct _MIB_MFE_TABLE { + DWORD dwNumEntries; + MIB_IPMCAST_MFE table[1]; +} MIB_MFE_TABLE,*PMIB_MFE_TABLE; +#define SIZEOF_BASIC_MIB_MFE (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE,rgmioOutInfo[0])) +#define SIZEOF_MIB_MFE(X) (SIZEOF_BASIC_MIB_MFE + ((X) *sizeof(MIB_IPMCAST_OIF))) +typedef struct _MIB_IPMCAST_OIF_STATS { + DWORD dwOutIfIndex; + DWORD dwNextHopAddr; + DWORD dwDialContext; + ULONG ulTtlTooLow; + ULONG ulFragNeeded; + ULONG ulOutPackets; + ULONG ulOutDiscards; +} MIB_IPMCAST_OIF_STATS,*PMIB_IPMCAST_OIF_STATS; +typedef struct _MIB_IPMCAST_MFE_STATS { + DWORD dwGroup; + DWORD dwSource; + DWORD dwSrcMask; + DWORD dwUpStrmNgbr; + DWORD dwInIfIndex; + DWORD dwInIfProtocol; + DWORD dwRouteProtocol; + DWORD dwRouteNetwork; + DWORD dwRouteMask; + ULONG ulUpTime; + ULONG ulExpiryTime; + ULONG ulNumOutIf; + ULONG ulInPkts; + ULONG ulInOctets; + ULONG ulPktsDifferentIf; + ULONG ulQueueOverflow; + MIB_IPMCAST_OIF_STATS rgmiosOutStats[1]; +} MIB_IPMCAST_MFE_STATS,*PMIB_IPMCAST_MFE_STATS; +typedef struct _MIB_MFE_STATS_TABLE { + DWORD dwNumEntries; + MIB_IPMCAST_MFE_STATS table[1]; +} MIB_MFE_STATS_TABLE,*PMIB_MFE_STATS_TABLE; +#define SIZEOF_BASIC_MIB_MFE_STATS (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS,rgmiosOutStats[0])) +#define SIZEOF_MIB_MFE_STATS(X) (SIZEOF_BASIC_MIB_MFE_STATS + ((X) *sizeof(MIB_IPMCAST_OIF_STATS))) +typedef struct _MIB_IPMCAST_MFE_STATS_EX { + DWORD dwGroup; + DWORD dwSource; + DWORD dwSrcMask; + DWORD dwUpStrmNgbr; + DWORD dwInIfIndex; + DWORD dwInIfProtocol; + DWORD dwRouteProtocol; + DWORD dwRouteNetwork; + DWORD dwRouteMask; + ULONG ulUpTime; + ULONG ulExpiryTime; + ULONG ulNumOutIf; + ULONG ulInPkts; + ULONG ulInOctets; + ULONG ulPktsDifferentIf; + ULONG ulQueueOverflow; + ULONG ulUninitMfe; + ULONG ulNegativeMfe; + ULONG ulInDiscards; + ULONG ulInHdrErrors; + ULONG ulTotalOutPackets; + MIB_IPMCAST_OIF_STATS rgmiosOutStats[1]; +} MIB_IPMCAST_MFE_STATS_EX,*PMIB_IPMCAST_MFE_STATS_EX; +typedef struct _MIB_MFE_STATS_TABLE_EX { + DWORD dwNumEntries; + MIB_IPMCAST_MFE_STATS_EX table[1]; +} MIB_MFE_STATS_TABLE_EX,*PMIB_MFE_STATS_TABLE_EX; +#define SIZEOF_BASIC_MIB_MFE_STATS_EX (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS_EX,rgmiosOutStats[0])) +#define SIZEOF_MIB_MFE_STATS_EX(X) (SIZEOF_BASIC_MIB_MFE_STATS_EX + ((X) *sizeof(MIB_IPMCAST_OIF_STATS))) +typedef struct _MIB_IPMCAST_GLOBAL { + DWORD dwEnable; +} MIB_IPMCAST_GLOBAL,*PMIB_IPMCAST_GLOBAL; +typedef struct _MIB_IPMCAST_IF_ENTRY { + DWORD dwIfIndex; + DWORD dwTtl; + DWORD dwProtocol; + DWORD dwRateLimit; + ULONG ulInMcastOctets; + ULONG ulOutMcastOctets; +} MIB_IPMCAST_IF_ENTRY,*PMIB_IPMCAST_IF_ENTRY; +typedef struct _MIB_IPMCAST_IF_TABLE { + DWORD dwNumEntries; + MIB_IPMCAST_IF_ENTRY table[1]; +} MIB_IPMCAST_IF_TABLE,*PMIB_IPMCAST_IF_TABLE; +#define SIZEOF_MCAST_IF_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_IF_TABLE,table[0]) + ((X) *sizeof(MIB_IPMCAST_IF_ENTRY)) + ALIGN_SIZE) +typedef struct _MIB_IPMCAST_BOUNDARY { + DWORD dwIfIndex; + DWORD dwGroupAddress; + DWORD dwGroupMask; + DWORD dwStatus; +} MIB_IPMCAST_BOUNDARY,*PMIB_IPMCAST_BOUNDARY; +typedef struct _MIB_IPMCAST_BOUNDARY_TABLE { + DWORD dwNumEntries; + MIB_IPMCAST_BOUNDARY table[1]; +} MIB_IPMCAST_BOUNDARY_TABLE,*PMIB_IPMCAST_BOUNDARY_TABLE; +#define SIZEOF_BOUNDARY_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_BOUNDARY_TABLE,table[0]) + ((X) *sizeof(MIB_IPMCAST_BOUNDARY)) + ALIGN_SIZE) +typedef struct { + DWORD dwGroupAddress; + DWORD dwGroupMask; +} MIB_BOUNDARYROW,*PMIB_BOUNDARYROW; +typedef struct { + DWORD dwTtl; + DWORD dwRateLimit; +} MIB_MCAST_LIMIT_ROW,*PMIB_MCAST_LIMIT_ROW; +#define MAX_SCOPE_NAME_LEN 255 +#define SN_UNICODE +typedef WCHAR SN_CHAR; +typedef SN_CHAR SCOPE_NAME_BUFFER[255 +1],*SCOPE_NAME; +typedef struct _MIB_IPMCAST_SCOPE { + DWORD dwGroupAddress; + DWORD dwGroupMask; + SCOPE_NAME_BUFFER snNameBuffer; + DWORD dwStatus; +} MIB_IPMCAST_SCOPE,*PMIB_IPMCAST_SCOPE; +typedef struct _MIB_IPDESTROW { + __extension__ union { + DWORD dwForwardDest; + DWORD dwForwardMask; + DWORD dwForwardPolicy; + DWORD dwForwardNextHop; + DWORD dwForwardIfIndex; + DWORD dwForwardType; + DWORD dwForwardProto; + DWORD dwForwardAge; + DWORD dwForwardNextHopAS; + DWORD dwForwardMetric1; + DWORD dwForwardMetric2; + DWORD dwForwardMetric3; + DWORD dwForwardMetric4; + DWORD dwForwardMetric5; + }; + DWORD dwForwardPreference; + DWORD dwForwardViewSet; +} MIB_IPDESTROW,*PMIB_IPDESTROW; +typedef struct _MIB_IPDESTTABLE { + DWORD dwNumEntries; + MIB_IPDESTROW table[1]; +} MIB_IPDESTTABLE,*PMIB_IPDESTTABLE; +typedef struct _MIB_BEST_IF { + DWORD dwDestAddr; + DWORD dwIfIndex; +} MIB_BEST_IF,*PMIB_BEST_IF; +typedef struct _MIB_PROXYARP { + DWORD dwAddress; + DWORD dwMask; + DWORD dwIfIndex; +} MIB_PROXYARP,*PMIB_PROXYARP; +typedef struct _MIB_IFSTATUS { + DWORD dwIfIndex; + DWORD dwAdminStatus; + DWORD dwOperationalStatus; + WINBOOL bMHbeatActive; + WINBOOL bMHbeatAlive; +} MIB_IFSTATUS,*PMIB_IFSTATUS; +typedef struct _MIB_ROUTESTATE { + WINBOOL bRoutesSetToStack; +} MIB_ROUTESTATE,*PMIB_ROUTESTATE; +typedef struct _MIB_OPAQUE_INFO { + DWORD dwId; + __extension__ union { + ULONGLONG ullAlign; + BYTE rgbyData[1]; + }; +} MIB_OPAQUE_INFO,*PMIB_OPAQUE_INFO; +typedef struct _TCPIP_OWNER_MODULE_BASIC_INFO { + PWCHAR pModuleName; + PWCHAR pModulePath; +} TCPIP_OWNER_MODULE_BASIC_INFO, *PTCPIP_OWNER_MODULE_BASIC_INFO; +typedef enum _UDP_TABLE_CLASS { + UDP_TABLE_BASIC, + UDP_TABLE_OWNER_PID, + UDP_TABLE_OWNER_MODULE +} UDP_TABLE_CLASS, *PUDP_TABLE_CLASS; +typedef enum _TCPIP_OWNER_MODULE_INFO_CLASS { + TCPIP_OWNER_MODULE_INFO_BASIC +} TCPIP_OWNER_MODULE_INFO_CLASS, *PTCPIP_OWNER_MODULE_INFO_CLASS; +#define MAX_MIB_OFFSET 8 +#define MIB_INFO_SIZE(S) (MAX_MIB_OFFSET + sizeof(S)) +#define MIB_INFO_SIZE_IN_DWORDS(S) ((MIB_INFO_SIZE(S))/sizeof(DWORD) + 1) +#define DEFINE_MIB_BUFFER(X,Y,Z) DWORD __rgdwBuff[MIB_INFO_SIZE_IN_DWORDS(Y)]; PMIB_OPAQUE_INFO X = (PMIB_OPAQUE_INFO)__rgdwBuff; Y *Z = (Y *)(X->rgbyData) +#define CAST_MIB_INFO(X,Y,Z) Z = (Y)(X->rgbyData) +#define IP_EXPORT_INCLUDED 1 +typedef ULONG IPAddr; +typedef ULONG IPMask; +typedef ULONG IP_STATUS; +typedef struct in6_addr IPv6Addr; +typedef struct ip_option_information { + UCHAR Ttl; + UCHAR Tos; + UCHAR Flags; + UCHAR OptionsSize; + PUCHAR OptionsData; +} IP_OPTION_INFORMATION,*PIP_OPTION_INFORMATION; +typedef struct ip_option_information32 { + UCHAR Ttl; + UCHAR Tos; + UCHAR Flags; + UCHAR OptionsSize; + UCHAR *OptionsData; +} IP_OPTION_INFORMATION32,*PIP_OPTION_INFORMATION32; +typedef struct icmp_echo_reply { + IPAddr Address; + ULONG Status; + ULONG RoundTripTime; + USHORT DataSize; + USHORT Reserved; + PVOID Data; + struct ip_option_information Options; +} ICMP_ECHO_REPLY,*PICMP_ECHO_REPLY; +typedef struct icmp_echo_reply32 { + IPAddr Address; + ULONG Status; + ULONG RoundTripTime; + USHORT DataSize; + USHORT Reserved; + void *Data; + struct ip_option_information32 Options; +} ICMP_ECHO_REPLY32,*PICMP_ECHO_REPLY32; +typedef struct arp_send_reply { + IPAddr DestAddress; + IPAddr SrcAddress; +} ARP_SEND_REPLY,*PARP_SEND_REPLY; +typedef struct tcp_reserve_port_range { + USHORT UpperRange; + USHORT LowerRange; +} TCP_RESERVE_PORT_RANGE,*PTCP_RESERVE_PORT_RANGE; +#define MAX_ADAPTER_NAME 128 +typedef struct _IP_ADAPTER_INDEX_MAP { + ULONG Index; + WCHAR Name[128]; +} IP_ADAPTER_INDEX_MAP,*PIP_ADAPTER_INDEX_MAP; +typedef struct _IP_INTERFACE_INFO { + LONG NumAdapters; + IP_ADAPTER_INDEX_MAP Adapter[1]; +} IP_INTERFACE_INFO,*PIP_INTERFACE_INFO; +typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { + ULONG NumAdapters; + IPAddr Address[1]; +} IP_UNIDIRECTIONAL_ADAPTER_ADDRESS,*PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; +typedef struct _IP_ADAPTER_ORDER_MAP { + ULONG NumAdapters; + ULONG AdapterOrder[1]; +} IP_ADAPTER_ORDER_MAP,*PIP_ADAPTER_ORDER_MAP; +typedef struct _IP_MCAST_COUNTER_INFO { + ULONG64 InMcastOctets; + ULONG64 OutMcastOctets; + ULONG64 InMcastPkts; + ULONG64 OutMcastPkts; +} IP_MCAST_COUNTER_INFO,*PIP_MCAST_COUNTER_INFO; +typedef struct _IPV6_ADDRESS_EX { + USHORT sin6_port; + ULONG sin6_flowinfo; + USHORT sin6_addr[8]; + ULONG sin6_scope_id; +} IPV6_ADDRESS_EX, *PIPV6_ADDRESS_EX; +typedef struct icmpv6_echo_reply_lh { + IPV6_ADDRESS_EX Address; + ULONG Status; + unsigned int RoundTripTime; +} ICMPV6_ECHO_REPLY_LH, *PICMPV6_ECHO_REPLY_LH; +typedef ICMPV6_ECHO_REPLY_LH ICMPV6_ECHO_REPLY; +typedef ICMPV6_ECHO_REPLY_LH *PICMPV6_ECHO_REPLY; +#define IP_STATUS_BASE 11000 +#define IP_SUCCESS 0 +#define IP_BUF_TOO_SMALL (IP_STATUS_BASE + 1) +#define IP_DEST_NET_UNREACHABLE (IP_STATUS_BASE + 2) +#define IP_DEST_HOST_UNREACHABLE (IP_STATUS_BASE + 3) +#define IP_DEST_PROT_UNREACHABLE (IP_STATUS_BASE + 4) +#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5) +#define IP_NO_RESOURCES (IP_STATUS_BASE + 6) +#define IP_BAD_OPTION (IP_STATUS_BASE + 7) +#define IP_HW_ERROR (IP_STATUS_BASE + 8) +#define IP_PACKET_TOO_BIG (IP_STATUS_BASE + 9) +#define IP_REQ_TIMED_OUT (IP_STATUS_BASE + 10) +#define IP_BAD_REQ (IP_STATUS_BASE + 11) +#define IP_BAD_ROUTE (IP_STATUS_BASE + 12) +#define IP_TTL_EXPIRED_TRANSIT (IP_STATUS_BASE + 13) +#define IP_TTL_EXPIRED_REASSEM (IP_STATUS_BASE + 14) +#define IP_PARAM_PROBLEM (IP_STATUS_BASE + 15) +#define IP_SOURCE_QUENCH (IP_STATUS_BASE + 16) +#define IP_OPTION_TOO_BIG (IP_STATUS_BASE + 17) +#define IP_BAD_DESTINATION (IP_STATUS_BASE + 18) +#define IP_DEST_NO_ROUTE (IP_STATUS_BASE + 2) +#define IP_DEST_ADDR_UNREACHABLE (IP_STATUS_BASE + 3) +#define IP_DEST_PROHIBITED (IP_STATUS_BASE + 4) +#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5) +#define IP_HOP_LIMIT_EXCEEDED (IP_STATUS_BASE + 13) +#define IP_REASSEMBLY_TIME_EXCEEDED (IP_STATUS_BASE + 14) +#define IP_PARAMETER_PROBLEM (IP_STATUS_BASE + 15) +#define IP_DEST_UNREACHABLE (IP_STATUS_BASE + 40) +#define IP_TIME_EXCEEDED (IP_STATUS_BASE + 41) +#define IP_BAD_HEADER (IP_STATUS_BASE + 42) +#define IP_UNRECOGNIZED_NEXT_HEADER (IP_STATUS_BASE + 43) +#define IP_ICMP_ERROR (IP_STATUS_BASE + 44) +#define IP_DEST_SCOPE_MISMATCH (IP_STATUS_BASE + 45) +#define IP_ADDR_DELETED (IP_STATUS_BASE + 19) +#define IP_SPEC_MTU_CHANGE (IP_STATUS_BASE + 20) +#define IP_MTU_CHANGE (IP_STATUS_BASE + 21) +#define IP_UNLOAD (IP_STATUS_BASE + 22) +#define IP_ADDR_ADDED (IP_STATUS_BASE + 23) +#define IP_MEDIA_CONNECT (IP_STATUS_BASE + 24) +#define IP_MEDIA_DISCONNECT (IP_STATUS_BASE + 25) +#define IP_BIND_ADAPTER (IP_STATUS_BASE + 26) +#define IP_UNBIND_ADAPTER (IP_STATUS_BASE + 27) +#define IP_DEVICE_DOES_NOT_EXIST (IP_STATUS_BASE + 28) +#define IP_DUPLICATE_ADDRESS (IP_STATUS_BASE + 29) +#define IP_INTERFACE_METRIC_CHANGE (IP_STATUS_BASE + 30) +#define IP_RECONFIG_SECFLTR (IP_STATUS_BASE + 31) +#define IP_NEGOTIATING_IPSEC (IP_STATUS_BASE + 32) +#define IP_INTERFACE_WOL_CAPABILITY_CHANGE (IP_STATUS_BASE + 33) +#define IP_DUPLICATE_IPADD (IP_STATUS_BASE + 34) +#define IP_NO_FURTHER_SENDS (IP_STATUS_BASE + 35) +#define IP_GENERAL_FAILURE (IP_STATUS_BASE + 50) +#define MAX_IP_STATUS IP_GENERAL_FAILURE +#define IP_PENDING (IP_STATUS_BASE + 255) +#define IP_FLAG_REVERSE 0x1 +#define IP_FLAG_DF 0x2 +#define IP_OPT_EOL 0 +#define IP_OPT_NOP 1 +#define IP_OPT_SECURITY 0x82 +#define IP_OPT_LSRR 0x83 +#define IP_OPT_SSRR 0x89 +#define IP_OPT_RR 0x7 +#define IP_OPT_TS 0x44 +#define IP_OPT_SID 0x88 +#define IP_OPT_ROUTER_ALERT 0x94 +#define MAX_OPT_SIZE 40 +#define IP_TYPES_INCLUDED +#define _TIME_H_ +#define _TIMEB_H_ +#pragma pack(push,_CRT_PACKING) +#define _TIMEB_DEFINED + struct __timeb32 { + __time32_t time; + unsigned short millitm; + short timezone; + short dstflag; + }; + struct timeb { + time_t time; + unsigned short millitm; + short timezone; + short dstflag; + }; + struct __timeb64 { + __time64_t time; + unsigned short millitm; + short timezone; + short dstflag; + }; + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _ftime64(struct __timeb64 *_Time); + __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _ftime32(struct __timeb32 *_Time); +#define _timeb __timeb64 +#define _ftime _ftime64 +struct _timespec32 { + __time32_t tv_sec; + long tv_nsec; +}; +struct _timespec64 { + __time64_t tv_sec; + long tv_nsec; +}; + void __attribute__((__cdecl__)) ftime (struct timeb *); + extern inline __attribute__((__gnu_inline__)) void __attribute__((__cdecl__)) ftime(struct timeb *_Tmb) { + _ftime64((struct __timeb64 *)_Tmb); + } +#pragma pack(pop) +#define _TIMEB_H_S + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ftime32_s(struct __timeb32 *_Time); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ftime64_s(struct __timeb64 *_Time); +#define _ftime_s _ftime64_s + +#pragma pack(push,_CRT_PACKING) +#define _CLOCK_T_DEFINED + typedef long clock_t; +#define _TM_DEFINED + struct tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + }; +#define CLOCKS_PER_SEC 1000 +#define TIME_UTC 1 + __attribute__ ((__dllimport__)) int *__attribute__((__cdecl__)) __daylight(void); + __attribute__ ((__dllimport__)) long *__attribute__((__cdecl__)) __dstbias(void); + __attribute__ ((__dllimport__)) long *__attribute__((__cdecl__)) __timezone(void); + __attribute__ ((__dllimport__)) char **__attribute__((__cdecl__)) __tzname(void); +#define _daylight (* __daylight()) +#define _dstbias (* __dstbias()) +#define _timezone (* __timezone()) +#define _tzname (__tzname()) +#undef __MINGW_STRFTIME_FORMAT +#define __MINGW_STRFTIME_FORMAT strftime + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_daylight(int *_Daylight); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_dstbias(long *_Daylight_savings_bias); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_timezone(long *_Timezone); + __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_tzname(size_t *_ReturnValue,char *_Buffer,size_t _SizeInBytes,int _Index); + char *__attribute__((__cdecl__)) asctime(const struct tm *_Tm) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) asctime_s (char *_Buf,size_t _SizeInWords,const struct tm *_Tm); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ctime32(const __time32_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _ctime32_s (char *_Buf,size_t _SizeInBytes,const __time32_t *_Time); + clock_t __attribute__((__cdecl__)) clock(void); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _difftime32(__time32_t _Time1,__time32_t _Time2); + __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _gmtime32(const __time32_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _gmtime32_s (struct tm *_Tm,const __time32_t *_Time); + __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _localtime32(const __time32_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _localtime32_s (struct tm *_Tm,const __time32_t *_Time); + size_t __attribute__((__cdecl__)) strftime(char * __restrict__ _Buf,size_t _SizeInBytes,const char * __restrict__ _Format,const struct tm * __restrict__ _Tm) __attribute__((__format__ (strftime, 3, 0))); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _strftime_l(char * __restrict__ _Buf,size_t _Max_size,const char * __restrict__ _Format,const struct tm * __restrict__ _Tm,_locale_t _Locale); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strdate(char *_Buffer) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _strdate_s (char *_Buf,size_t _SizeInBytes); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strtime(char *_Buffer) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _strtime_s (char *_Buf ,size_t _SizeInBytes); + __attribute__ ((__dllimport__)) __time32_t __attribute__((__cdecl__)) _time32(__time32_t *_Time); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _timespec32_get(struct _timespec32 *_Ts, int _Base); + __attribute__ ((__dllimport__)) __time32_t __attribute__((__cdecl__)) _mktime32(struct tm *_Tm); + __attribute__ ((__dllimport__)) __time32_t __attribute__((__cdecl__)) _mkgmtime32(struct tm *_Tm); + void __attribute__((__cdecl__)) tzset(void) ; + void __attribute__((__cdecl__)) _tzset(void); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _difftime64(__time64_t _Time1,__time64_t _Time2); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ctime64(const __time64_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _ctime64_s (char *_Buf,size_t _SizeInBytes,const __time64_t *_Time); + __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _gmtime64(const __time64_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _gmtime64_s (struct tm *_Tm,const __time64_t *_Time); + __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _localtime64(const __time64_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _localtime64_s (struct tm *_Tm,const __time64_t *_Time); + __attribute__ ((__dllimport__)) __time64_t __attribute__((__cdecl__)) _mktime64(struct tm *_Tm); + __attribute__ ((__dllimport__)) __time64_t __attribute__((__cdecl__)) _mkgmtime64(struct tm *_Tm); + __attribute__ ((__dllimport__)) __time64_t __attribute__((__cdecl__)) _time64(__time64_t *_Time); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _timespec64_get(struct _timespec64 *_Ts, int _Base); + unsigned __attribute__((__cdecl__)) _getsystime(struct tm *_Tm); + unsigned __attribute__((__cdecl__)) _setsystime(struct tm *_Tm,unsigned _MilliSec); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wasctime(const struct tm *_Tm); + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _wasctime_s (wchar_t *_Buf,size_t _SizeInWords,const struct tm *_Tm); + wchar_t *__attribute__((__cdecl__)) _wctime32(const __time32_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _wctime32_s (wchar_t *_Buf,size_t _SizeInWords,const __time32_t *_Time); + size_t __attribute__((__cdecl__)) wcsftime(wchar_t * __restrict__ _Buf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,const struct tm * __restrict__ _Tm); + __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _wcsftime_l(wchar_t * __restrict__ _Buf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,const struct tm * __restrict__ _Tm,_locale_t _Locale); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wstrdate(wchar_t *_Buffer) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _wstrdate_s (wchar_t *_Buf,size_t _SizeInWords); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wstrtime(wchar_t *_Buffer) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _wstrtime_s (wchar_t *_Buf,size_t _SizeInWords); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wctime64(const __time64_t *_Time) ; + __declspec(dllimport) errno_t __attribute__((__cdecl__)) _wctime64_s (wchar_t *_Buf,size_t _SizeInWords,const __time64_t *_Time); +#define _INC_WTIME_INL + wchar_t *__attribute__((__cdecl__)) _wctime(const time_t *) ; + extern inline __attribute__((__gnu_inline__)) wchar_t *__attribute__((__cdecl__)) _wctime(const time_t *_Time) { return _wctime64(_Time); } +#define _INC_WTIME_S_INL + errno_t __attribute__((__cdecl__)) _wctime_s(wchar_t *, size_t, const time_t *); + extern inline __attribute__((__gnu_inline__)) errno_t __attribute__((__cdecl__)) _wctime_s (wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime64_s (_Buffer,_SizeInWords,_Time); } +#define _WTIME_DEFINED +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) time_t __attribute__((__cdecl__)) time(time_t *_Time) { return _time64(_Time); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) int __attribute__((__cdecl__)) timespec_get(struct timespec* _Ts, int _Base) { return _timespec64_get((struct _timespec64*)_Ts, _Base); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) double __attribute__((__cdecl__)) difftime(time_t _Time1,time_t _Time2) { return _difftime64(_Time1,_Time2); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) struct tm *__attribute__((__cdecl__)) localtime(const time_t *_Time) { return _localtime64(_Time); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) errno_t __attribute__((__cdecl__)) localtime_s(struct tm *_Tm,const time_t *_Time) { return _localtime64_s(_Tm,_Time); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) struct tm *__attribute__((__cdecl__)) gmtime(const time_t *_Time) { return _gmtime64(_Time); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) errno_t __attribute__((__cdecl__)) gmtime_s(struct tm *_Tm, const time_t *_Time) { return _gmtime64_s(_Tm, _Time); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) char *__attribute__((__cdecl__)) ctime(const time_t *_Time) { return _ctime64(_Time); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) errno_t __attribute__((__cdecl__)) ctime_s(char *_Buf,size_t _SizeInBytes,const time_t *_Time) { return _ctime64_s(_Buf,_SizeInBytes,_Time); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) time_t __attribute__((__cdecl__)) mktime(struct tm *_Tm) { return _mktime64(_Tm); } +static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__)) time_t __attribute__((__cdecl__)) _mkgmtime(struct tm *_Tm) { return _mkgmtime64(_Tm); } +#define CLK_TCK CLOCKS_PER_SEC +#define __MINGW_ATTRIB_DEPRECATED_UCRT __MINGW_ATTRIB_DEPRECATED_MSG( "Only provided for source compatibility; this variable might " "not always be accurate when linking to UCRT.") + __attribute__ ((__dllimport__)) extern int daylight __attribute__ ((__deprecated__("Only provided for source compatibility; this variable might " "not always be accurate when linking to UCRT."))); + __attribute__ ((__dllimport__)) extern long timezone __attribute__ ((__deprecated__("Only provided for source compatibility; this variable might " "not always be accurate when linking to UCRT."))); + __attribute__ ((__dllimport__)) extern char *tzname[2] __attribute__ ((__deprecated__("Only provided for source compatibility; this variable might " "not always be accurate when linking to UCRT."))); + void __attribute__((__cdecl__)) tzset(void) ; +#define _TIMEZONE_DEFINED +struct timezone { + int tz_minuteswest; + int tz_dsttime; +}; + extern int __attribute__((__cdecl__)) mingw_gettimeofday (struct timeval *p, struct timezone *z); +#pragma pack(pop) +#define WIN_PTHREADS_TIME_H +#define _POSIX_TIMERS 200809L +#define _POSIX_MONOTONIC_CLOCK 200809L +#define _POSIX_CPUTIME 200809L +#define _POSIX_THREAD_CPUTIME 200809L +typedef int clockid_t; +#define __clockid_t_defined 1 +#define TIMER_ABSTIME 1 +#define CLOCK_REALTIME 0 +#define CLOCK_MONOTONIC 1 +#define CLOCK_PROCESS_CPUTIME_ID 2 +#define CLOCK_THREAD_CPUTIME_ID 3 +#define CLOCK_REALTIME_COARSE 4 +#define WINPTHREAD_API + int __attribute__((__cdecl__)) nanosleep(const struct timespec *request, struct timespec *remain); + int __attribute__((__cdecl__)) clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *request, struct timespec *remain); + int __attribute__((__cdecl__)) clock_getres(clockid_t clock_id, struct timespec *res); + int __attribute__((__cdecl__)) clock_gettime(clockid_t clock_id, struct timespec *tp); + int __attribute__((__cdecl__)) clock_settime(clockid_t clock_id, const struct timespec *tp); +#define _INC_IFDEF +#define IF_MAX_STRING_SIZE 256 +#define IF_MAX_PHYS_ADDRESS_LENGTH 32 +typedef UINT32 NET_IF_COMPARTMENT_ID, *PNET_IF_COMPARTMENT_ID; +typedef ULONG NET_IFINDEX, *PNET_IFINDEX; +typedef UINT16 NET_IFTYPE, *PNET_IFTYPE; +#define NET_IFINDEX_UNSPECIFIED (NET_IFINDEX)(0) +typedef NET_IFINDEX IF_INDEX, *PIF_INDEX; +typedef GUID NET_IF_NETWORK_GUID; +typedef enum _IF_OPER_STATUS { + IfOperStatusUp = 1, + IfOperStatusDown, + IfOperStatusTesting, + IfOperStatusUnknown, + IfOperStatusDormant, + IfOperStatusNotPresent, + IfOperStatusLowerLayerDown +} IF_OPER_STATUS; +typedef enum _NET_IF_OPER_STATUS { + NET_IF_OPER_STATUS_UP = 1, + NET_IF_OPER_STATUS_DOWN, + NET_IF_OPER_STATUS_TESTING, + NET_IF_OPER_STATUS_UNKNOWN, + NET_IF_OPER_STATUS_DORMANT, + NET_IF_OPER_STATUS_NOT_PRESENT, + NET_IF_OPER_STATUS_LOWER_LAYER_DOWN +} NET_IF_OPER_STATUS, *PNET_IF_OPER_STATUS; +typedef enum _NET_IF_ADMIN_STATUS { + NET_IF_ADMIN_STATUS_UP = 1, + NET_IF_ADMIN_STATUS_DOWN, + NET_IF_ADMIN_STATUS_TESTING +} NET_IF_ADMIN_STATUS, *PNET_IF_ADMIN_STATUS; +typedef enum _NET_IF_MEDIA_CONNECT_STATE { + MediaConnectStateUnknown, + MediaConnectStateConnected, + MediaConnectStateDisconnected +} NET_IF_MEDIA_CONNECT_STATE, *PNET_IF_MEDIA_CONNECT_STATE; +typedef enum _NET_IF_ACCESS_TYPE { + NET_IF_ACCESS_LOOPBACK = 1, + NET_IF_ACCESS_BROADCAST, + NET_IF_ACCESS_POINT_TO_POINT, + NET_IF_ACCESS_POINT_TO_MULTI_POINT, + NET_IF_ACCESS_MAXIMUM +} NET_IF_ACCESS_TYPE, *PNET_IF_ACCESS_TYPE; +typedef enum _NET_IF_CONNECTION_TYPE { + NET_IF_CONNECTION_DEDICATED = 1, + NET_IF_CONNECTION_PASSIVE, + NET_IF_CONNECTION_DEMAND, + NET_IF_CONNECTION_MAXIMUM +} NET_IF_CONNECTION_TYPE, *PNET_IF_CONNECTION_TYPE; +typedef enum _NET_IF_DIRECTION_TYPE { + NET_IF_DIRECTION_SENDRECEIVE, + NET_IF_DIRECTION_SENDONLY, + NET_IF_DIRECTION_RECEIVEONLY, + NET_IF_DIRECTION_MAXIMUM +} NET_IF_DIRECTION_TYPE, *PNET_IF_DIRECTION_TYPE; +typedef enum _NET_IF_MEDIA_DUPLEX_STATE { + MediaDuplexStateUnknown, + MediaDuplexStateHalf, + MediaDuplexStateFull +} NET_IF_MEDIA_DUPLEX_STATE, *PNET_IF_MEDIA_DUPLEX_STATE; +typedef enum _TUNNEL_TYPE { + TUNNEL_TYPE_NONE = 0, + TUNNEL_TYPE_OTHER = 1, + TUNNEL_TYPE_DIRECT = 2, + TUNNEL_TYPE_6TO4 = 11, + TUNNEL_TYPE_ISATAP = 13, + TUNNEL_TYPE_TEREDO = 14, + TUNNEL_TYPE_IPHTTPS = 15 +} TUNNEL_TYPE, *PTUNNEL_TYPE; +typedef union _NET_LUID { + ULONG64 Value; + __extension__ struct { + ULONG64 Reserved :24; + ULONG64 NetLuidIndex :24; + ULONG64 IfType :16; + } Info; +} NET_LUID, *PNET_LUID; +typedef NET_LUID IF_LUID, *PIF_LUID; +typedef struct _IF_COUNTED_STRING_LH { + USHORT Length; + WCHAR String[256 + 1]; +} IF_COUNTED_STRING_LH, *PIF_COUNTED_STRING_LH; +typedef IF_COUNTED_STRING_LH IF_COUNTED_STRING; +typedef IF_COUNTED_STRING *PIF_COUNTED_STRING; +typedef struct _IF_PHYSICAL_ADDRESS_LH { + USHORT Length; + UCHAR Address[32]; +} IF_PHYSICAL_ADDRESS_LH, *PIF_PHYSICAL_ADDRESS_LH; +typedef IF_PHYSICAL_ADDRESS_LH IF_PHYSICAL_ADDRESS; +typedef IF_PHYSICAL_ADDRESS *PIF_PHYSICAL_ADDRESS; +#define MAX_ADAPTER_DESCRIPTION_LENGTH 128 +#define MAX_ADAPTER_NAME_LENGTH 256 +#define MAX_ADAPTER_ADDRESS_LENGTH 8 +#define DEFAULT_MINIMUM_ENTITIES 32 +#define MAX_HOSTNAME_LEN 128 +#define MAX_DOMAIN_NAME_LEN 128 +#define MAX_SCOPE_ID_LEN 256 +#define MAX_DHCPV6_DUID_LENGTH 130 +#define MAX_DNS_SUFFIX_STRING_LENGTH 256 +#define BROADCAST_NODETYPE 1 +#define PEER_TO_PEER_NODETYPE 2 +#define MIXED_NODETYPE 4 +#define HYBRID_NODETYPE 8 + typedef struct { + char String[4*4]; + } IP_ADDRESS_STRING,*PIP_ADDRESS_STRING,IP_MASK_STRING,*PIP_MASK_STRING; + typedef struct _IP_ADDR_STRING { + struct _IP_ADDR_STRING *Next; + IP_ADDRESS_STRING IpAddress; + IP_MASK_STRING IpMask; + DWORD Context; + } IP_ADDR_STRING,*PIP_ADDR_STRING; + typedef struct _IP_ADAPTER_INFO { + struct _IP_ADAPTER_INFO *Next; + DWORD ComboIndex; + char AdapterName[256 + 4]; + char Description[128 + 4]; + UINT AddressLength; + BYTE Address[8]; + DWORD Index; + UINT Type; + UINT DhcpEnabled; + PIP_ADDR_STRING CurrentIpAddress; + IP_ADDR_STRING IpAddressList; + IP_ADDR_STRING GatewayList; + IP_ADDR_STRING DhcpServer; + WINBOOL HaveWins; + IP_ADDR_STRING PrimaryWinsServer; + IP_ADDR_STRING SecondaryWinsServer; + __time64_t LeaseObtained; + __time64_t LeaseExpires; + } IP_ADAPTER_INFO,*PIP_ADAPTER_INFO; + typedef NL_PREFIX_ORIGIN IP_PREFIX_ORIGIN; + typedef NL_SUFFIX_ORIGIN IP_SUFFIX_ORIGIN; + typedef NL_DAD_STATE IP_DAD_STATE; + typedef struct _IP_ADAPTER_UNICAST_ADDRESS_XP { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Flags; + }; + }; + struct _IP_ADAPTER_UNICAST_ADDRESS_XP *Next; + SOCKET_ADDRESS Address; + IP_PREFIX_ORIGIN PrefixOrigin; + IP_SUFFIX_ORIGIN SuffixOrigin; + IP_DAD_STATE DadState; + ULONG ValidLifetime; + ULONG PreferredLifetime; + ULONG LeaseLifetime; + } IP_ADAPTER_UNICAST_ADDRESS_XP,*PIP_ADAPTER_UNICAST_ADDRESS_XP; + typedef struct _IP_ADAPTER_UNICAST_ADDRESS_LH { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Flags; + }; + }; + struct _IP_ADAPTER_UNICAST_ADDRESS_LH *Next; + SOCKET_ADDRESS Address; + IP_PREFIX_ORIGIN PrefixOrigin; + IP_SUFFIX_ORIGIN SuffixOrigin; + IP_DAD_STATE DadState; + ULONG ValidLifetime; + ULONG PreferredLifetime; + ULONG LeaseLifetime; + UINT8 OnLinkPrefixLength; + } IP_ADAPTER_UNICAST_ADDRESS_LH,*PIP_ADAPTER_UNICAST_ADDRESS_LH; + typedef IP_ADAPTER_UNICAST_ADDRESS_LH IP_ADAPTER_UNICAST_ADDRESS; + typedef IP_ADAPTER_UNICAST_ADDRESS_LH *PIP_ADAPTER_UNICAST_ADDRESS; + typedef struct _IP_ADAPTER_ANYCAST_ADDRESS_XP { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Flags; + }; + }; + struct _IP_ADAPTER_ANYCAST_ADDRESS_XP *Next; + SOCKET_ADDRESS Address; + } IP_ADAPTER_ANYCAST_ADDRESS_XP,*PIP_ADAPTER_ANYCAST_ADDRESS_XP; + typedef IP_ADAPTER_ANYCAST_ADDRESS_XP IP_ADAPTER_ANYCAST_ADDRESS; + typedef IP_ADAPTER_ANYCAST_ADDRESS_XP *PIP_ADAPTER_ANYCAST_ADDRESS; + typedef struct _IP_ADAPTER_MULTICAST_ADDRESS_XP { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Flags; + }; + }; + struct _IP_ADAPTER_MULTICAST_ADDRESS_XP *Next; + SOCKET_ADDRESS Address; + } IP_ADAPTER_MULTICAST_ADDRESS_XP,*PIP_ADAPTER_MULTICAST_ADDRESS_XP; + typedef IP_ADAPTER_MULTICAST_ADDRESS_XP IP_ADAPTER_MULTICAST_ADDRESS; + typedef IP_ADAPTER_MULTICAST_ADDRESS_XP *PIP_ADAPTER_MULTICAST_ADDRESS; +#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x01 +#define IP_ADAPTER_ADDRESS_TRANSIENT 0x02 +#define IP_ADAPTER_ADDRESS_PRIMARY 0x04 + typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS_XP { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Reserved; + }; + }; + struct _IP_ADAPTER_DNS_SERVER_ADDRESS_XP *Next; + SOCKET_ADDRESS Address; + } IP_ADAPTER_DNS_SERVER_ADDRESS_XP,*PIP_ADAPTER_DNS_SERVER_ADDRESS_XP; + typedef IP_ADAPTER_DNS_SERVER_ADDRESS_XP IP_ADAPTER_DNS_SERVER_ADDRESS; + typedef IP_ADAPTER_DNS_SERVER_ADDRESS_XP *PIP_ADAPTER_DNS_SERVER_ADDRESS; + typedef struct _IP_ADAPTER_PREFIX_XP { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Flags; + }; + }; + struct _IP_ADAPTER_PREFIX_XP *Next; + SOCKET_ADDRESS Address; + ULONG PrefixLength; + } IP_ADAPTER_PREFIX_XP,*PIP_ADAPTER_PREFIX_XP; + typedef IP_ADAPTER_PREFIX_XP IP_ADAPTER_PREFIX; + typedef IP_ADAPTER_PREFIX_XP *PIP_ADAPTER_PREFIX; + typedef struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Reserved; + }; + }; + struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH *Next; + SOCKET_ADDRESS Address; + } IP_ADAPTER_WINS_SERVER_ADDRESS_LH,*PIP_ADAPTER_WINS_SERVER_ADDRESS_LH; + typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH IP_ADAPTER_WINS_SERVER_ADDRESS; + typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH *PIP_ADAPTER_WINS_SERVER_ADDRESS; + typedef struct _IP_ADAPTER_GATEWAY_ADDRESS_LH { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD Reserved; + }; + }; + struct _IP_ADAPTER_GATEWAY_ADDRESS_LH *Next; + SOCKET_ADDRESS Address; + } IP_ADAPTER_GATEWAY_ADDRESS_LH,*PIP_ADAPTER_GATEWAY_ADDRESS_LH; + typedef IP_ADAPTER_GATEWAY_ADDRESS_LH IP_ADAPTER_GATEWAY_ADDRESS; + typedef IP_ADAPTER_GATEWAY_ADDRESS_LH *PIP_ADAPTER_GATEWAY_ADDRESS; + typedef struct _IP_ADAPTER_DNS_SUFFIX { + struct _IP_ADAPTER_DNS_SUFFIX *Next; + WCHAR String[256]; + } IP_ADAPTER_DNS_SUFFIX, *PIP_ADAPTER_DNS_SUFFIX; +#define IP_ADAPTER_DDNS_ENABLED 0x01 +#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x02 +#define IP_ADAPTER_DHCP_ENABLED 0x04 +#define IP_ADAPTER_RECEIVE_ONLY 0x08 +#define IP_ADAPTER_NO_MULTICAST 0x10 +#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x20 +#define IP_ADAPTER_NETBIOS_OVER_TCPIP_ENABLED 0x40 +#define IP_ADAPTER_IPV4_ENABLED 0x80 +#define IP_ADAPTER_IPV6_ENABLED 0x100 +#define IP_ADAPTER_IPV6_MANAGE_ADDRESS_CONFIG 0x200 + typedef struct _IP_ADAPTER_ADDRESSES_LH { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + IF_INDEX IfIndex; + }; + }; + struct _IP_ADAPTER_ADDRESSES_LH *Next; + PCHAR AdapterName; + PIP_ADAPTER_UNICAST_ADDRESS_LH FirstUnicastAddress; + PIP_ADAPTER_ANYCAST_ADDRESS_XP FirstAnycastAddress; + PIP_ADAPTER_MULTICAST_ADDRESS_XP FirstMulticastAddress; + PIP_ADAPTER_DNS_SERVER_ADDRESS_XP FirstDnsServerAddress; + PWCHAR DnsSuffix; + PWCHAR Description; + PWCHAR FriendlyName; + BYTE PhysicalAddress[8]; + ULONG PhysicalAddressLength; + __extension__ union { + ULONG Flags; + __extension__ struct { + ULONG DdnsEnabled : 1; + ULONG RegisterAdapterSuffix : 1; + ULONG Dhcpv4Enabled : 1; + ULONG ReceiveOnly : 1; + ULONG NoMulticast : 1; + ULONG Ipv6OtherStatefulConfig : 1; + ULONG NetbiosOverTcpipEnabled : 1; + ULONG Ipv4Enabled : 1; + ULONG Ipv6Enabled : 1; + ULONG Ipv6ManagedAddressConfigurationSupported : 1; + }; + }; + ULONG Mtu; + IFTYPE IfType; + IF_OPER_STATUS OperStatus; + IF_INDEX Ipv6IfIndex; + ULONG ZoneIndices[16]; + PIP_ADAPTER_PREFIX_XP FirstPrefix; + ULONG64 TransmitLinkSpeed; + ULONG64 ReceiveLinkSpeed; + PIP_ADAPTER_WINS_SERVER_ADDRESS_LH FirstWinsServerAddress; + PIP_ADAPTER_GATEWAY_ADDRESS_LH FirstGatewayAddress; + ULONG Ipv4Metric; + ULONG Ipv6Metric; + IF_LUID Luid; + SOCKET_ADDRESS Dhcpv4Server; + NET_IF_COMPARTMENT_ID CompartmentId; + NET_IF_NETWORK_GUID NetworkGuid; + NET_IF_CONNECTION_TYPE ConnectionType; + TUNNEL_TYPE TunnelType; + SOCKET_ADDRESS Dhcpv6Server; + BYTE Dhcpv6ClientDuid[130]; + ULONG Dhcpv6ClientDuidLength; + ULONG Dhcpv6Iaid; + } IP_ADAPTER_ADDRESSES_LH, *PIP_ADAPTER_ADDRESSES_LH; + typedef struct _IP_ADAPTER_ADDRESSES_XP { + __extension__ union { + ULONGLONG Alignment; + __extension__ struct { + ULONG Length; + DWORD IfIndex; + }; + }; + struct _IP_ADAPTER_ADDRESSES_XP *Next; + PCHAR AdapterName; + PIP_ADAPTER_UNICAST_ADDRESS_XP FirstUnicastAddress; + PIP_ADAPTER_ANYCAST_ADDRESS_XP FirstAnycastAddress; + PIP_ADAPTER_MULTICAST_ADDRESS_XP FirstMulticastAddress; + PIP_ADAPTER_DNS_SERVER_ADDRESS_XP FirstDnsServerAddress; + PWCHAR DnsSuffix; + PWCHAR Description; + PWCHAR FriendlyName; + BYTE PhysicalAddress[8]; + DWORD PhysicalAddressLength; + DWORD Flags; + DWORD Mtu; + DWORD IfType; + IF_OPER_STATUS OperStatus; + DWORD Ipv6IfIndex; + DWORD ZoneIndices[16]; + PIP_ADAPTER_PREFIX_XP FirstPrefix; + } IP_ADAPTER_ADDRESSES_XP,*PIP_ADAPTER_ADDRESSES_XP; + typedef IP_ADAPTER_ADDRESSES_LH IP_ADAPTER_ADDRESSES; + typedef IP_ADAPTER_ADDRESSES_LH *PIP_ADAPTER_ADDRESSES; +#define GAA_FLAG_SKIP_UNICAST 0x0001 +#define GAA_FLAG_SKIP_ANYCAST 0x0002 +#define GAA_FLAG_SKIP_MULTICAST 0x0004 +#define GAA_FLAG_SKIP_DNS_SERVER 0x0008 +#define GAA_FLAG_INCLUDE_PREFIX 0x0010 +#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020 +#define GAA_FLAG_INCLUDE_WINS_INFO 0x0040 +#define GAA_FLAG_INCLUDE_GATEWAYS 0x0080 +#define GAA_FLAG_INCLUDE_ALL_INTERFACES 0x0100 +#define GAA_FLAG_INCLUDE_ALL_COMPARTMENTS 0x0200 +#define GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER 0x0400 + typedef struct _IP_PER_ADAPTER_INFO { + UINT AutoconfigEnabled; + UINT AutoconfigActive; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; + } IP_PER_ADAPTER_INFO,*PIP_PER_ADAPTER_INFO; + typedef struct { + char HostName[128 + 4]; + char DomainName[128 + 4]; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; + UINT NodeType; + char ScopeId[256 + 4]; + UINT EnableRouting; + UINT EnableProxy; + UINT EnableDns; + } FIXED_INFO,*PFIXED_INFO; +#define IP_INTERFACE_NAME_INFO_DEFINED + typedef struct ip_interface_name_info { + ULONG Index; + ULONG MediaType; + UCHAR ConnectionType; + UCHAR AccessType; + GUID DeviceGuid; + GUID InterfaceGuid; + } IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO; +#define _INC_TCPESTATS +typedef struct _TCP_ESTATS_BANDWIDTH_ROD_v0 { + ULONG64 OutboundBandwidth; + ULONG64 InboundBandwidth; + ULONG64 OutboundInstability; + ULONG64 InboundInstability; + BOOLEAN OutboundBandwidthPeaked; + BOOLEAN InboundBandwidthPeaked; +} TCP_ESTATS_BANDWIDTH_ROD_v0, *PTCP_ESTATS_BANDWIDTH_ROD_v0; +typedef enum _TCP_BOOLEAN_OPTIONAL { + TcpBoolOptDisabled = 0, + TcpBoolOptEnabled = 1, + TcpBoolOptUnchanged = -1 +} TCP_BOOLEAN_OPTIONAL; +typedef struct _TCP_ESTATS_BANDWIDTH_RW_v0 { + TCP_BOOLEAN_OPTIONAL EnableCollectionOutbound; + TCP_BOOLEAN_OPTIONAL EnableCollectionInbound; +} TCP_ESTATS_BANDWIDTH_RW_v0, *PTCP_ESTATS_BANDWIDTH_RW_v0; +typedef struct _TCP_ESTATS_DATA_ROD_v0 { + ULONG64 DataBytesOut; + ULONG64 DataSegsOut; + ULONG64 DataBytesIn; + ULONG64 DataSegsIn; + ULONG64 SegsOut; + ULONG64 SegsIn; + ULONG SoftErrors; + ULONG SoftErrorReason; + ULONG SndUna; + ULONG SndNxt; + ULONG SndMax; + ULONG64 ThruBytesAcked; + ULONG RcvNxt; + ULONG64 ThruBytesReceived; +} TCP_ESTATS_DATA_ROD_v0, *PTCP_ESTATS_DATA_ROD_v0; +typedef struct _TCP_ESTATS_DATA_RW_v0 { + BOOLEAN EnableCollection; +} TCP_ESTATS_DATA_RW_v0, *PTCP_ESTATS_DATA_RW_v0; +typedef struct _TCP_ESTATS_FINE_RTT_ROD_v0 { + ULONG RttVar; + ULONG MaxRtt; + ULONG MinRtt; + ULONG SumRtt; +} TCP_ESTATS_FINE_RTT_ROD_v0, *PTCP_ESTATS_FINE_RTT_ROD_v0; +typedef struct _TCP_ESTATS_FINE_RTT_RW_v0 { + BOOLEAN EnableCollection; +} TCP_ESTATS_FINE_RTT_RW_v0, *PTCP_ESTATS_FINE_RTT_RW_v0; +typedef struct _TCP_ESTATS_OBS_REC_ROD_v0 { + ULONG CurRwinRcvd; + ULONG MaxRwinRcvd; + ULONG MinRwinRcvd; + UCHAR WinScaleRcvd; +} TCP_ESTATS_OBS_REC_ROD_v0, *PTCP_ESTATS_OBS_REC_ROD_v0; +typedef struct _TCP_ESTATS_OBS_REC_RW_v0 { + BOOLEAN EnableCollection; +} TCP_ESTATS_OBS_REC_RW_v0, *PTCP_ESTATS_OBS_REC_RW_v0; +typedef struct _TCP_ESTATS_PATH_ROD_v0 { + ULONG FastRetran; + ULONG Timeouts; + ULONG SubsequentTimeouts; + ULONG CurTimeoutCount; + ULONG AbruptTimeouts; + ULONG PktsRetrans; + ULONG BytesRetrans; + ULONG DupAcksIn; + ULONG SacksRcvd; + ULONG SackBlocksRcvd; + ULONG CongSignals; + ULONG PreCongSumCwnd; + ULONG PreCongSumRtt; + ULONG PostCongSumRtt; + ULONG PostCongCountRtt; + ULONG EcnSignals; + ULONG EceRcvd; + ULONG SendStall; + ULONG QuenchRcvd; + ULONG RetranThresh; + ULONG SndDupAckEpisodes; + ULONG SumBytesReordered; + ULONG NonRecovDa; + ULONG NonRecovDaEpisodes; + ULONG AckAfterFr; + ULONG DsackDups; + ULONG SampleRtt; + ULONG SmoothedRtt; + ULONG RttVar; + ULONG MaxRtt; + ULONG MinRtt; + ULONG SumRtt; + ULONG CountRtt; + ULONG CurRto; + ULONG MaxRto; + ULONG MinRto; + ULONG CurMss; + ULONG MaxMss; + ULONG MinMss; + ULONG SpuriousRtoDetections; +} TCP_ESTATS_PATH_ROD_v0, *PTCP_ESTATS_PATH_ROD_v0; +typedef struct _TCP_ESTATS_PATH_RW_v0 { + BOOLEAN EnableCollection; +} TCP_ESTATS_PATH_RW_v0, *PTCP_ESTATS_PATH_RW_v0; +typedef struct _TCP_ESTATS_REC_ROD_v0 { + ULONG CurRwinSent; + ULONG MaxRwinSent; + ULONG MinRwinSent; + ULONG LimRwin; + ULONG DupAckEpisodes; + ULONG DupAcksOut; + ULONG CeRcvd; + ULONG EcnSent; + ULONG EcnNoncesRcvd; + ULONG CurReasmQueue; + ULONG MaxReasmQueue; + SIZE_T CurAppRQueue; + SIZE_T MaxAppRQueue; + UCHAR WinScaleSent; +} TCP_ESTATS_REC_ROD_v0, *PTCP_ESTATS_REC_ROD_v0; +typedef struct _TCP_ESTATS_REC_RW_v0 { + BOOLEAN EnableCollection; +} TCP_ESTATS_REC_RW_v0, *PTCP_ESTATS_REC_RW_v0; +typedef struct _TCP_ESTATS_SEND_BUFF_ROD_v0 { + SIZE_T CurRetxQueue; + SIZE_T MaxRetxQueue; + SIZE_T CurAppWQueue; + SIZE_T MaxAppWQueue; +} TCP_ESTATS_SEND_BUFF_ROD_v0, *PTCP_ESTATS_SEND_BUFF_ROD_v0; +typedef struct _TCP_ESTATS_SEND_BUFF_RW_v0 { + BOOLEAN EnableCollection; +} TCP_ESTATS_SEND_BUFF_RW_v0, *PTCP_ESTATS_SEND_BUFF_RW_v0; +typedef struct _TCP_ESTATS_SND_CONG_ROD_v0 { + ULONG SndLimTransRwin; + ULONG SndLimTimeRwin; + SIZE_T SndLimBytesRwin; + ULONG SndLimTransCwnd; + ULONG SndLimTimeCwnd; + SIZE_T SndLimBytesCwnd; + ULONG SndLimTransSnd; + ULONG SndLimTimeSnd; + SIZE_T SndLimBytesSnd; + ULONG SlowStart; + ULONG CongAvoid; + ULONG OtherReductions; + ULONG CurCwnd; + ULONG MaxSsCwnd; + ULONG MaxCaCwnd; + ULONG CurSsthresh; + ULONG MaxSsthresh; + ULONG MinSsthresh; +} TCP_ESTATS_SND_CONG_ROD_v0, *PTCP_ESTATS_SND_CONG_ROD_v0; +typedef struct _TCP_ESTATS_SND_CONG_ROS_v0 { + ULONG LimCwnd; +} TCP_ESTATS_SND_CONG_ROS_v0, *PTCP_ESTATS_SND_CONG_ROS_v0; +typedef struct _TCP_ESTATS_SND_CONG_RW_v0 { + BOOLEAN EnableCollection; +} TCP_ESTATS_SND_CONG_RW_v0, *PTCP_ESTATS_SND_CONG_RW_v0; +typedef struct _TCP_ESTATS_SYN_OPTS_ROS_v0 { + BOOLEAN ActiveOpen; + ULONG MssRcvd; + ULONG MssSent; +} TCP_ESTATS_SYN_OPTS_ROS_v0, *PTCP_ESTATS_SYN_OPTS_ROS_v0; +typedef enum _TCP_ESTATS_TYPE { + TcpConnectionEstatsSynOpts, + TcpConnectionEstatsData, + TcpConnectionEstatsSndCong, + TcpConnectionEstatsPath, + TcpConnectionEstatsSendBuff, + TcpConnectionEstatsRec, + TcpConnectionEstatsObsRec, + TcpConnectionEstatsBandwidth, + TcpConnectionEstatsFineRtt, + TcpConnectionEstatsMaximum +} TCP_ESTATS_TYPE; + DWORD __attribute__((__stdcall__)) GetNumberOfInterfaces (PDWORD pdwNumIf); + DWORD __attribute__((__stdcall__)) GetIfEntry (PMIB_IFROW pIfRow); + DWORD __attribute__((__stdcall__)) GetIfTable (PMIB_IFTABLE pIfTable, PULONG pdwSize, WINBOOL bOrder); + DWORD __attribute__((__stdcall__)) GetIpAddrTable (PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize, WINBOOL bOrder); + ULONG __attribute__((__stdcall__)) GetIpNetTable (PMIB_IPNETTABLE IpNetTable, PULONG SizePointer, WINBOOL Order); + DWORD __attribute__((__stdcall__)) GetIpForwardTable (PMIB_IPFORWARDTABLE pIpForwardTable, PULONG pdwSize, WINBOOL bOrder); + ULONG __attribute__((__stdcall__)) GetTcpTable (PMIB_TCPTABLE TcpTable, PULONG SizePointer, WINBOOL Order); + DWORD __attribute__((__stdcall__)) GetExtendedTcpTable (PVOID pTcpTable, PDWORD pdwSize, WINBOOL bOrder, ULONG ulAf, TCP_TABLE_CLASS TableClass, ULONG Reserved); + DWORD __attribute__((__stdcall__)) GetOwnerModuleFromTcpEntry (PMIB_TCPROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize); + ULONG __attribute__((__stdcall__)) GetUdpTable (PMIB_UDPTABLE UdpTable, PULONG SizePointer, WINBOOL Order); + DWORD __attribute__((__stdcall__)) GetExtendedUdpTable (PVOID pUdpTable, PDWORD pdwSize, WINBOOL bOrder, ULONG ulAf, UDP_TABLE_CLASS TableClass, ULONG Reserved); + DWORD __attribute__((__stdcall__)) GetOwnerModuleFromUdpEntry (PMIB_UDPROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize); + ULONG __attribute__((__stdcall__)) GetTcpTable2 (PMIB_TCPTABLE2 TcpTable, PULONG SizePointer, WINBOOL Order); + ULONG __attribute__((__stdcall__)) GetTcp6Table (PMIB_TCP6TABLE TcpTable, PULONG SizePointer, WINBOOL Order); + ULONG __attribute__((__stdcall__)) GetTcp6Table2 (PMIB_TCP6TABLE2 TcpTable, PULONG SizePointer, WINBOOL Order); + ULONG __attribute__((__stdcall__)) GetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize); + ULONG __attribute__((__stdcall__)) SetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset); + ULONG __attribute__((__stdcall__)) GetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize); + ULONG __attribute__((__stdcall__)) SetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset); + ULONG __attribute__((__stdcall__)) GetUdp6Table (PMIB_UDP6TABLE Udp6Table, PULONG SizePointer, WINBOOL Order); + DWORD __attribute__((__stdcall__)) GetOwnerModuleFromTcp6Entry (PMIB_TCP6ROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize); + DWORD __attribute__((__stdcall__)) GetOwnerModuleFromUdp6Entry (PMIB_UDP6ROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize); + DWORD GetOwnerModuleFromPidAndInfo (ULONG ulPid, ULONGLONG *pInfo, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize); + ULONG __attribute__((__stdcall__)) GetIpStatistics (PMIB_IPSTATS Statistics); + ULONG __attribute__((__stdcall__)) GetIcmpStatistics (PMIB_ICMP Statistics); + ULONG __attribute__((__stdcall__)) GetTcpStatistics (PMIB_TCPSTATS Statistics); + ULONG __attribute__((__stdcall__)) GetUdpStatistics (PMIB_UDPSTATS Stats); + ULONG __attribute__((__stdcall__)) GetIpStatisticsEx (PMIB_IPSTATS Statistics, ULONG Family); + ULONG __attribute__((__stdcall__)) SetIpStatisticsEx (PMIB_IPSTATS Statistics, ULONG Family); + ULONG __attribute__((__stdcall__)) GetIcmpStatisticsEx (PMIB_ICMP_EX Statistics, ULONG Family); + ULONG __attribute__((__stdcall__)) GetTcpStatisticsEx (PMIB_TCPSTATS Statistics, ULONG Family); + ULONG __attribute__((__stdcall__)) GetUdpStatisticsEx (PMIB_UDPSTATS Statistics, ULONG Family); + DWORD __attribute__((__stdcall__)) SetIfEntry (PMIB_IFROW pIfRow); + DWORD __attribute__((__stdcall__)) CreateIpForwardEntry (PMIB_IPFORWARDROW pRoute); + DWORD __attribute__((__stdcall__)) SetIpForwardEntry (PMIB_IPFORWARDROW pRoute); + DWORD __attribute__((__stdcall__)) DeleteIpForwardEntry (PMIB_IPFORWARDROW pRoute); + DWORD __attribute__((__stdcall__)) SetIpStatistics (PMIB_IPSTATS pIpStats); + DWORD __attribute__((__stdcall__)) SetIpTTL (UINT nTTL); + DWORD __attribute__((__stdcall__)) CreateIpNetEntry (PMIB_IPNETROW pArpEntry); + DWORD __attribute__((__stdcall__)) SetIpNetEntry (PMIB_IPNETROW pArpEntry); + DWORD __attribute__((__stdcall__)) DeleteIpNetEntry (PMIB_IPNETROW pArpEntry); + DWORD __attribute__((__stdcall__)) FlushIpNetTable (DWORD dwIfIndex); + DWORD __attribute__((__stdcall__)) CreateProxyArpEntry (DWORD dwAddress, DWORD dwMask, DWORD dwIfIndex); + DWORD __attribute__((__stdcall__)) DeleteProxyArpEntry (DWORD dwAddress, DWORD dwMask, DWORD dwIfIndex); + DWORD __attribute__((__stdcall__)) SetTcpEntry (PMIB_TCPROW pTcpRow); + DWORD __attribute__((__stdcall__)) GetInterfaceInfo (PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen); + DWORD __attribute__((__stdcall__)) GetUniDirectionalAdapterInfo (PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, PULONG dwOutBufLen); +#define NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED + DWORD __attribute__((__stdcall__)) NhpAllocateAndGetInterfaceInfoFromStack (IP_INTERFACE_NAME_INFO **ppTable, PDWORD pdwCount, WINBOOL bOrder, HANDLE hHeap, DWORD dwFlags); + DWORD __attribute__((__stdcall__)) GetBestInterface (IPAddr dwDestAddr, PDWORD pdwBestIfIndex); + DWORD __attribute__((__stdcall__)) GetBestInterfaceEx (struct sockaddr *pDestAddr, PDWORD pdwBestIfIndex); + DWORD __attribute__((__stdcall__)) GetBestRoute (DWORD dwDestAddr, DWORD dwSourceAddr, PMIB_IPFORWARDROW pBestRoute); + DWORD __attribute__((__stdcall__)) NotifyAddrChange (PHANDLE Handle, LPOVERLAPPED overlapped); + DWORD __attribute__((__stdcall__)) NotifyRouteChange (PHANDLE Handle, LPOVERLAPPED overlapped); + WINBOOL __attribute__((__stdcall__)) CancelIPChangeNotify (LPOVERLAPPED notifyOverlapped); + DWORD __attribute__((__stdcall__)) GetAdapterIndex (LPWSTR AdapterName, PULONG IfIndex); + DWORD __attribute__((__stdcall__)) AddIPAddress (IPAddr Address, IPMask IpMask, DWORD IfIndex, PULONG NTEContext, PULONG NTEInstance); + DWORD __attribute__((__stdcall__)) DeleteIPAddress (ULONG NTEContext); + DWORD __attribute__((__stdcall__)) GetNetworkParams (PFIXED_INFO pFixedInfo, PULONG pOutBufLen); + ULONG __attribute__((__stdcall__)) GetAdaptersInfo (PIP_ADAPTER_INFO AdapterInfo, PULONG SizePointer); + PIP_ADAPTER_ORDER_MAP __attribute__((__stdcall__)) GetAdapterOrderMap (void); + ULONG __attribute__((__stdcall__)) GetAdaptersAddresses (ULONG Family, ULONG Flags, PVOID Reserved, PIP_ADAPTER_ADDRESSES AdapterAddresses, PULONG SizePointer); + DWORD __attribute__((__stdcall__)) GetPerAdapterInfo (ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen); + DWORD __attribute__((__stdcall__)) IpReleaseAddress (PIP_ADAPTER_INDEX_MAP AdapterInfo); + DWORD __attribute__((__stdcall__)) IpRenewAddress (PIP_ADAPTER_INDEX_MAP AdapterInfo); + DWORD __attribute__((__stdcall__)) SendARP (IPAddr DestIP, IPAddr SrcIP, PVOID pMacAddr, PULONG PhyAddrLen); + WINBOOL __attribute__((__stdcall__)) GetRTTAndHopCount (IPAddr DestIpAddress, PULONG HopCount, ULONG MaxHops, PULONG RTT); + DWORD __attribute__((__stdcall__)) GetFriendlyIfIndex (DWORD IfIndex); + DWORD __attribute__((__stdcall__)) EnableRouter (HANDLE *pHandle, OVERLAPPED *pOverlapped); + DWORD __attribute__((__stdcall__)) UnenableRouter (OVERLAPPED *pOverlapped, LPDWORD lpdwEnableCount); + DWORD __attribute__((__stdcall__)) DisableMediaSense (HANDLE *pHandle, OVERLAPPED *pOverLapped); + DWORD __attribute__((__stdcall__)) RestoreMediaSense (OVERLAPPED *pOverlapped, LPDWORD lpdwEnableCount); +#define NET_STRING_IPV4_ADDRESS 0x00000001 +#define NET_STRING_IPV4_SERVICE 0x00000002 +#define NET_STRING_IPV4_NETWORK 0x00000004 +#define NET_STRING_IPV6_ADDRESS 0x00000008 +#define NET_STRING_IPV6_ADDRESS_NO_SCOPE 0x00000010 +#define NET_STRING_IPV6_SERVICE 0x00000020 +#define NET_STRING_IPV6_SERVICE_NO_SCOPE 0x00000040 +#define NET_STRING_IPV6_NETWORK 0x00000080 +#define NET_STRING_NAMED_ADDRESS 0x00000100 +#define NET_STRING_NAMED_SERVICE 0x00000200 +#define NET_STRING_IP_ADDRESS (NET_STRING_IPV4_ADDRESS | NET_STRING_IPV6_ADDRESS) +#define NET_STRING_IP_ADDRESS_NO_SCOPE (NET_STRING_IPV4_ADDRESS | NET_STRING_IPV6_ADDRESS_NO_SCOPE) +#define NET_STRING_IP_SERVICE (NET_STRING_IPV4_SERVICE | NET_STRING_IPV6_SERVICE) +#define NET_STRING_IP_SERVICE_NO_SCOPE (NET_STRING_IPV4_SERVICE | NET_STRING_IPV6_SERVICE_NO_SCOPE) +#define NET_STRING_IP_NETWORK (NET_STRING_IPV4_NETWORK | NET_STRING_IPV6_NETWORK) +#define NET_STRING_ANY_ADDRESS (NET_STRING_NAMED_ADDRESS | NET_STRING_IP_ADDRESS) +#define NET_STRING_ANY_ADDRESS_NO_SCOPE (NET_STRING_NAMED_ADDRESS | NET_STRING_IP_ADDRESS_NO_SCOPE) +#define NET_STRING_ANY_SERVICE (NET_STRING_NAMED_SERVICE | NET_STRING_IP_SERVICE) +#define NET_STRING_ANY_SERVICE_NO_SCOPE (NET_STRING_NAMED_SERVICE | NET_STRING_IP_SERVICE_NO_SCOPE) + typedef enum NET_ADDRESS_FORMAT_ { + NET_ADDRESS_FORMAT_UNSPECIFIED = 0, + NET_ADDRESS_DNS_NAME, + NET_ADDRESS_IPV4, + NET_ADDRESS_IPV6 + } NET_ADDRESS_FORMAT; + DWORD __attribute__((__stdcall__)) GetIpErrorString (IP_STATUS ErrorCode, PWSTR Buffer, PDWORD Size); + ULONG __attribute__((__stdcall__)) ResolveNeighbor (SOCKADDR *NetworkAddress, PVOID PhysicalAddress, PULONG PhysicalAddressLength); + ULONG __attribute__((__stdcall__)) CreatePersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token); + ULONG __attribute__((__stdcall__)) CreatePersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token); + ULONG __attribute__((__stdcall__)) DeletePersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts); + ULONG __attribute__((__stdcall__)) DeletePersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts); + ULONG __attribute__((__stdcall__)) LookupPersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token); + ULONG __attribute__((__stdcall__)) LookupPersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token); +#define _NETIOAPI_H_ +#define NETIO_STATUS DWORD +#define NETIO_SUCCESS(x) ((x) == NO_ERROR) +#define NETIOAPI_API_ WINAPI +#define _NETIOAPI_SUCCESS_ +#define NETIOAPI_API NETIO_STATUS NETIOAPI_API_ +#define IF_NAMESIZE NDIS_IF_MAX_STRING_SIZE + typedef enum _MIB_NOTIFICATION_TYPE { + MibParameterNotification, + MibAddInstance, + MibDeleteInstance, + MibInitialNotification + } MIB_NOTIFICATION_TYPE,*PMIB_NOTIFICATION_TYPE; +#define _NTDDNDIS_ +#define NDIS_SUPPORT_NDIS6 0 +#define _DEVPROPDEF_H_ +typedef ULONG DEVPROPTYPE, *PDEVPROPTYPE; +#define DEVPROP_TYPEMOD_ARRAY 0x00001000 +#define DEVPROP_TYPEMOD_LIST 0x00002000 +#define DEVPROP_TYPE_EMPTY 0x00000000 +#define DEVPROP_TYPE_NULL 0x00000001 +#define DEVPROP_TYPE_SBYTE 0x00000002 +#define DEVPROP_TYPE_BYTE 0x00000003 +#define DEVPROP_TYPE_INT16 0x00000004 +#define DEVPROP_TYPE_UINT16 0x00000005 +#define DEVPROP_TYPE_INT32 0x00000006 +#define DEVPROP_TYPE_UINT32 0x00000007 +#define DEVPROP_TYPE_INT64 0x00000008 +#define DEVPROP_TYPE_UINT64 0x00000009 +#define DEVPROP_TYPE_FLOAT 0x0000000A +#define DEVPROP_TYPE_DOUBLE 0x0000000B +#define DEVPROP_TYPE_DECIMAL 0x0000000C +#define DEVPROP_TYPE_GUID 0x0000000D +#define DEVPROP_TYPE_CURRENCY 0x0000000E +#define DEVPROP_TYPE_DATE 0x0000000F +#define DEVPROP_TYPE_FILETIME 0x00000010 +#define DEVPROP_TYPE_BOOLEAN 0x00000011 +#define DEVPROP_TYPE_STRING 0x00000012 +#define DEVPROP_TYPE_STRING_LIST (DEVPROP_TYPE_STRING|DEVPROP_TYPEMOD_LIST) +#define DEVPROP_TYPE_SECURITY_DESCRIPTOR 0x00000013 +#define DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING 0x00000014 +#define DEVPROP_TYPE_DEVPROPKEY 0x00000015 +#define DEVPROP_TYPE_DEVPROPTYPE 0x00000016 +#define DEVPROP_TYPE_BINARY (DEVPROP_TYPE_BYTE|DEVPROP_TYPEMOD_ARRAY) +#define DEVPROP_TYPE_ERROR 0x00000017 +#define DEVPROP_TYPE_NTSTATUS 0x00000018 +#define DEVPROP_TYPE_STRING_INDIRECT 0x00000019 +#define MAX_DEVPROP_TYPE 0x00000019 +#define MAX_DEVPROP_TYPEMOD 0x00002000 +#define DEVPROP_MASK_TYPE 0x00000FFF +#define DEVPROP_MASK_TYPEMOD 0x0000F000 +typedef CHAR DEVPROP_BOOLEAN, *PDEVPROP_BOOLEAN; +#define DEVPROP_TRUE ((DEVPROP_BOOLEAN)-1) +#define DEVPROP_FALSE ((DEVPROP_BOOLEAN) 0) +#define DEVPROPKEY_DEFINED +typedef GUID DEVPROPGUID, *PDEVPROPGUID; +typedef ULONG DEVPROPID, *PDEVPROPID; +typedef struct _DEVPROPKEY { + DEVPROPGUID fmtid; + DEVPROPID pid; +} DEVPROPKEY, *PDEVPROPKEY; +#define DEVPROPID_FIRST_USABLE 2 +#define DEFINE_DEVPROPKEY(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8,pid) EXTERN_C const DEVPROPKEY name +#define IsEqualDevPropKey(a,b) (((a).pid == (b).pid) && IsEqualIID(&(a).fmtid, &(b).fmtid)) + +extern const DEVPROPKEY DEVPKEY_NAME; +extern const DEVPROPKEY DEVPKEY_Device_DeviceDesc; +extern const DEVPROPKEY DEVPKEY_Device_HardwareIds; +extern const DEVPROPKEY DEVPKEY_Device_CompatibleIds; +extern const DEVPROPKEY DEVPKEY_Device_Service; +extern const DEVPROPKEY DEVPKEY_Device_Class; +extern const DEVPROPKEY DEVPKEY_Device_ClassGuid; +extern const DEVPROPKEY DEVPKEY_Device_Driver; +extern const DEVPROPKEY DEVPKEY_Device_ConfigFlags; +extern const DEVPROPKEY DEVPKEY_Device_Manufacturer; +extern const DEVPROPKEY DEVPKEY_Device_FriendlyName; +extern const DEVPROPKEY DEVPKEY_Device_LocationInfo; +extern const DEVPROPKEY DEVPKEY_Device_PDOName; +extern const DEVPROPKEY DEVPKEY_Device_Capabilities; +extern const DEVPROPKEY DEVPKEY_Device_UINumber; +extern const DEVPROPKEY DEVPKEY_Device_UpperFilters; +extern const DEVPROPKEY DEVPKEY_Device_LowerFilters; +extern const DEVPROPKEY DEVPKEY_Device_BusTypeGuid; +extern const DEVPROPKEY DEVPKEY_Device_LegacyBusType; +extern const DEVPROPKEY DEVPKEY_Device_BusNumber; +extern const DEVPROPKEY DEVPKEY_Device_EnumeratorName; +extern const DEVPROPKEY DEVPKEY_Device_Security; +extern const DEVPROPKEY DEVPKEY_Device_SecuritySDS; +extern const DEVPROPKEY DEVPKEY_Device_DevType; +extern const DEVPROPKEY DEVPKEY_Device_Exclusive; +extern const DEVPROPKEY DEVPKEY_Device_Characteristics; +extern const DEVPROPKEY DEVPKEY_Device_Address; +extern const DEVPROPKEY DEVPKEY_Device_UINumberDescFormat; +extern const DEVPROPKEY DEVPKEY_Device_PowerData; +extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicy; +extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicyDefault; +extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicyOverride; +extern const DEVPROPKEY DEVPKEY_Device_InstallState; +extern const DEVPROPKEY DEVPKEY_Device_LocationPaths; +extern const DEVPROPKEY DEVPKEY_Device_BaseContainerId; +extern const DEVPROPKEY DEVPKEY_Device_InstanceId; +extern const DEVPROPKEY DEVPKEY_Device_DevNodeStatus; +extern const DEVPROPKEY DEVPKEY_Device_ProblemCode; +extern const DEVPROPKEY DEVPKEY_Device_EjectionRelations; +extern const DEVPROPKEY DEVPKEY_Device_RemovalRelations; +extern const DEVPROPKEY DEVPKEY_Device_PowerRelations; +extern const DEVPROPKEY DEVPKEY_Device_BusRelations; +extern const DEVPROPKEY DEVPKEY_Device_Parent; +extern const DEVPROPKEY DEVPKEY_Device_Children; +extern const DEVPROPKEY DEVPKEY_Device_Siblings; +extern const DEVPROPKEY DEVPKEY_Device_TransportRelations; +extern const DEVPROPKEY DEVPKEY_Device_ProblemStatus; +extern const DEVPROPKEY DEVPKEY_Device_Reported; +extern const DEVPROPKEY DEVPKEY_Device_Legacy; +extern const DEVPROPKEY DEVPKEY_Device_ContainerId; +extern const DEVPROPKEY DEVPKEY_Device_InLocalMachineContainer; +extern const DEVPROPKEY DEVPKEY_Device_Model; +extern const DEVPROPKEY DEVPKEY_Device_ModelId; +extern const DEVPROPKEY DEVPKEY_Device_FriendlyNameAttributes; +extern const DEVPROPKEY DEVPKEY_Device_ManufacturerAttributes; +extern const DEVPROPKEY DEVPKEY_Device_PresenceNotForDevice; +extern const DEVPROPKEY DEVPKEY_Device_SignalStrength; +extern const DEVPROPKEY DEVPKEY_Device_IsAssociateableByUserAction; +extern const DEVPROPKEY DEVPKEY_Device_ShowInUninstallUI; +extern const DEVPROPKEY DEVPKEY_Device_Numa_Proximity_Domain; +extern const DEVPROPKEY DEVPKEY_Device_DHP_Rebalance_Policy; +extern const DEVPROPKEY DEVPKEY_Device_Numa_Node; +extern const DEVPROPKEY DEVPKEY_Device_BusReportedDeviceDesc; +extern const DEVPROPKEY DEVPKEY_Device_IsPresent; +extern const DEVPROPKEY DEVPKEY_Device_HasProblem; +extern const DEVPROPKEY DEVPKEY_Device_ConfigurationId; +extern const DEVPROPKEY DEVPKEY_Device_ReportedDeviceIdsHash; +extern const DEVPROPKEY DEVPKEY_Device_PhysicalDeviceLocation; +extern const DEVPROPKEY DEVPKEY_Device_BiosDeviceName; +extern const DEVPROPKEY DEVPKEY_Device_DriverProblemDesc; +extern const DEVPROPKEY DEVPKEY_Device_DebuggerSafe; +extern const DEVPROPKEY DEVPKEY_Device_PostInstallInProgress; +extern const DEVPROPKEY DEVPKEY_Device_Stack; +extern const DEVPROPKEY DEVPKEY_Device_ExtendedConfigurationIds; +extern const DEVPROPKEY DEVPKEY_Device_IsRebootRequired; +extern const DEVPROPKEY DEVPKEY_Device_FirmwareDate; +extern const DEVPROPKEY DEVPKEY_Device_FirmwareVersion; +extern const DEVPROPKEY DEVPKEY_Device_FirmwareRevision; +extern const DEVPROPKEY DEVPKEY_Device_DependencyProviders; +extern const DEVPROPKEY DEVPKEY_Device_DependencyDependents; +extern const DEVPROPKEY DEVPKEY_Device_SoftRestartSupported; +extern const DEVPROPKEY DEVPKEY_Device_ExtendedAddress; +extern const DEVPROPKEY DEVPKEY_Device_SessionId; +extern const DEVPROPKEY DEVPKEY_Device_InstallDate; +extern const DEVPROPKEY DEVPKEY_Device_FirstInstallDate; +extern const DEVPROPKEY DEVPKEY_Device_LastArrivalDate; +extern const DEVPROPKEY DEVPKEY_Device_LastRemovalDate; +extern const DEVPROPKEY DEVPKEY_Device_DriverDate; +extern const DEVPROPKEY DEVPKEY_Device_DriverVersion; +extern const DEVPROPKEY DEVPKEY_Device_DriverDesc; +extern const DEVPROPKEY DEVPKEY_Device_DriverInfPath; +extern const DEVPROPKEY DEVPKEY_Device_DriverInfSection; +extern const DEVPROPKEY DEVPKEY_Device_DriverInfSectionExt; +extern const DEVPROPKEY DEVPKEY_Device_MatchingDeviceId; +extern const DEVPROPKEY DEVPKEY_Device_DriverProvider; +extern const DEVPROPKEY DEVPKEY_Device_DriverPropPageProvider; +extern const DEVPROPKEY DEVPKEY_Device_DriverCoInstallers; +extern const DEVPROPKEY DEVPKEY_Device_ResourcePickerTags; +extern const DEVPROPKEY DEVPKEY_Device_ResourcePickerExceptions; +extern const DEVPROPKEY DEVPKEY_Device_DriverRank; +extern const DEVPROPKEY DEVPKEY_Device_DriverLogoLevel; +extern const DEVPROPKEY DEVPKEY_Device_NoConnectSound; +extern const DEVPROPKEY DEVPKEY_Device_GenericDriverInstalled; +extern const DEVPROPKEY DEVPKEY_Device_AdditionalSoftwareRequested; +extern const DEVPROPKEY DEVPKEY_Device_SafeRemovalRequired; +extern const DEVPROPKEY DEVPKEY_Device_SafeRemovalRequiredOverride; +extern const DEVPROPKEY DEVPKEY_DrvPkg_Model; +extern const DEVPROPKEY DEVPKEY_DrvPkg_VendorWebSite; +extern const DEVPROPKEY DEVPKEY_DrvPkg_DetailedDescription; +extern const DEVPROPKEY DEVPKEY_DrvPkg_DocumentationLink; +extern const DEVPROPKEY DEVPKEY_DrvPkg_Icon; +extern const DEVPROPKEY DEVPKEY_DrvPkg_BrandingIcon; +extern const DEVPROPKEY DEVPKEY_DeviceClass_UpperFilters; +extern const DEVPROPKEY DEVPKEY_DeviceClass_LowerFilters; +extern const DEVPROPKEY DEVPKEY_DeviceClass_Security; +extern const DEVPROPKEY DEVPKEY_DeviceClass_SecuritySDS; +extern const DEVPROPKEY DEVPKEY_DeviceClass_DevType; +extern const DEVPROPKEY DEVPKEY_DeviceClass_Exclusive; +extern const DEVPROPKEY DEVPKEY_DeviceClass_Characteristics; +extern const DEVPROPKEY DEVPKEY_DeviceClass_Name; +extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassName; +extern const DEVPROPKEY DEVPKEY_DeviceClass_Icon; +extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassInstaller; +extern const DEVPROPKEY DEVPKEY_DeviceClass_PropPageProvider; +extern const DEVPROPKEY DEVPKEY_DeviceClass_NoInstallClass; +extern const DEVPROPKEY DEVPKEY_DeviceClass_NoDisplayClass; +extern const DEVPROPKEY DEVPKEY_DeviceClass_SilentInstall; +extern const DEVPROPKEY DEVPKEY_DeviceClass_NoUseClass; +extern const DEVPROPKEY DEVPKEY_DeviceClass_DefaultService; +extern const DEVPROPKEY DEVPKEY_DeviceClass_IconPath; +extern const DEVPROPKEY DEVPKEY_DeviceClass_DHPRebalanceOptOut; +extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassCoInstallers; +extern const DEVPROPKEY DEVPKEY_DeviceInterface_FriendlyName; +extern const DEVPROPKEY DEVPKEY_DeviceInterface_Enabled; +extern const DEVPROPKEY DEVPKEY_DeviceInterface_ClassGuid; +extern const DEVPROPKEY DEVPKEY_DeviceInterface_ReferenceString; +extern const DEVPROPKEY DEVPKEY_DeviceInterface_Restricted; +extern const DEVPROPKEY DEVPKEY_DeviceInterface_UnrestrictedAppCapabilities; +extern const DEVPROPKEY DEVPKEY_DeviceInterface_SchematicName; +extern const DEVPROPKEY DEVPKEY_DeviceInterfaceClass_DefaultInterface; +extern const DEVPROPKEY DEVPKEY_DeviceInterfaceClass_Name; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Address; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_DiscoveryMethod; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsEncrypted; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsAuthenticated; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsConnected; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsPaired; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Icon; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Version; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Last_Seen; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Last_Connected; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsShowInDisconnectedState; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsLocalMachine; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataPath; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsMetadataSearchInProgress; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataChecksum; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsNotInterestingForDisplay; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageOnDeviceConnect; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageFromExplorer; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_BaselineExperienceId; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsDeviceUniquelyIdentifiable; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_AssociationArray; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription1; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription2; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_HasProblem; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsSharedDevice; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsNetworkDevice; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsDefaultDevice; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataCabinet; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_RequiresPairingElevation; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_ExperienceId; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Singular; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Plural; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Icon; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Desc; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Icon; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_PrimaryCategory; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_UnpairUninstall; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_RequiresUninstallElevation; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceFunctionSubRank; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_AlwaysShowDeviceAsConnected; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_ConfigFlags; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_PrivilegedPackageFamilyNames; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_CustomPrivilegedPackageFamilyNames; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsRebootRequired; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_FriendlyName; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_Manufacturer; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_ModelName; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_ModelNumber; +extern const DEVPROPKEY DEVPKEY_DeviceContainer_InstallInProgress; +extern const DEVPROPKEY DEVPKEY_DevQuery_ObjectType; +#define DEVPKEY_Numa_Proximity_Domain DEVPKEY_Device_Numa_Proximity_Domain +#define DEVPKEY_DeviceDisplay_DiscoveryMethod DEVPKEY_DeviceContainer_DiscoveryMethod +#define DEVPKEY_DeviceDisplay_IsShowInDisconnectedState DEVPKEY_DeviceContainer_IsShowInDisconnectedState +#define DEVPKEY_DeviceDisplay_IsNotInterestingForDisplay DEVPKEY_DeviceContainer_IsNotInterestingForDisplay +#define DEVPKEY_DeviceDisplay_IsNetworkDevice DEVPKEY_DeviceContainer_IsNetworkDevice +#define DEVPKEY_DeviceDisplay_Category DEVPKEY_DeviceContainer_Category +#define DEVPKEY_DeviceDisplay_UnpairUninstall DEVPKEY_DeviceContainer_UnpairUninstall +#define DEVPKEY_DeviceDisplay_RequiresUninstallElevation DEVPKEY_DeviceContainer_RequiresUninstallElevation +#define DEVPKEY_DeviceDisplay_AlwaysShowDeviceAsConnected DEVPKEY_DeviceContainer_AlwaysShowDeviceAsConnected +#define _PCIPROP_ +#undef DEFINE_DEVPROPKEY +#define DEFINE_DEVPROPKEY(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8,pid) EXTERN_C const DEVPROPKEY name +#define DEFINE_PCI_ROOT_BUS_DEVPKEY(_DPKNAME,_PID) DEFINE_DEVPROPKEY ((_DPKNAME), 0xd817fc28, 0x793e, 0x4b9e, 0x99, 0x70, 0x46, 0x9d, 0x8b, 0xe6, 0x30, 0x73, (_PID)) +#define DEFINE_PCI_DEVICE_DEVPKEY(_DPKNAME,_PID) DEFINE_DEVPROPKEY ((_DPKNAME), 0x3ab22e31, 0x8264, 0x4b4e, 0x9a, 0xf5, 0xa8, 0xd2, 0xd8, 0xe3, 0x3e, 0x62, (_PID)) +extern const DEVPROPKEY (DEVPKEY_PciRootBus_SecondaryInterface); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_CurrentSpeedAndMode); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_SupportedSpeedsAndModes); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_DeviceIDMessagingCapable); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_SecondaryBusWidth); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_ExtendedConfigAvailable); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_ExtendedPCIConfigOpRegionSupport); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_ASPMSupport); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_ClockPowerManagementSupport); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCISegmentGroupsSupport); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_MSISupport); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressNativeHotPlugControl); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_SHPCNativeHotPlugControl); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressNativePMEControl); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressAERControl); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressCapabilityControl); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_NativePciExpressControl); +extern const DEVPROPKEY (DEVPKEY_PciRootBus_SystemMsiSupport); +extern const DEVPROPKEY (DEVPKEY_PciDevice_DeviceType); +extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentSpeedAndMode); +extern const DEVPROPKEY (DEVPKEY_PciDevice_BaseClass); +extern const DEVPROPKEY (DEVPKEY_PciDevice_SubClass); +extern const DEVPROPKEY (DEVPKEY_PciDevice_ProgIf); +extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentPayloadSize); +extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxPayloadSize); +extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxReadRequestSize); +extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentLinkSpeed); +extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentLinkWidth); +extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxLinkSpeed); +extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxLinkWidth); +extern const DEVPROPKEY (DEVPKEY_PciDevice_ExpressSpecVersion); +extern const DEVPROPKEY (DEVPKEY_PciDevice_InterruptSupport); +extern const DEVPROPKEY (DEVPKEY_PciDevice_InterruptMessageMaximum); +extern const DEVPROPKEY (DEVPKEY_PciDevice_BarTypes); +extern const DEVPROPKEY (DEVPKEY_PciDevice_AERCapabilityPresent); +extern const DEVPROPKEY (DEVPKEY_PciDevice_FirmwareErrorHandling); +extern const DEVPROPKEY (DEVPKEY_PciDevice_Uncorrectable_Error_Mask); +extern const DEVPROPKEY (DEVPKEY_PciDevice_Uncorrectable_Error_Severity); +extern const DEVPROPKEY (DEVPKEY_PciDevice_Correctable_Error_Mask); +extern const DEVPROPKEY (DEVPKEY_PciDevice_ECRC_Errors); +extern const DEVPROPKEY (DEVPKEY_PciDevice_Error_Reporting); +extern const DEVPROPKEY (DEVPKEY_PciDevice_RootError_Reporting); +extern const DEVPROPKEY (DEVPKEY_PciDevice_S0WakeupSupported); +extern const DEVPROPKEY (DEVPKEY_PciDevice_SriovSupport); +extern const DEVPROPKEY (DEVPKEY_PciDevice_Label_Id); +extern const DEVPROPKEY (DEVPKEY_PciDevice_Label_String); +extern const DEVPROPKEY (DEVPKEY_PciDevice_AcsSupport); +extern const DEVPROPKEY (DEVPKEY_PciDevice_AriSupport); +#define DevProp_PciRootBus_SecondaryInterface_PciConventional 0 +#define DevProp_PciRootBus_SecondaryInterface_PciXMode1 1 +#define DevProp_PciRootBus_SecondaryInterface_PciXMode2 2 +#define DevProp_PciRootBus_SecondaryInterface_PciExpress 3 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_Conventional_33Mhz 0 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_Conventional_66Mhz 1 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_66Mhz 2 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_100Mhz 3 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_133Mhz 4 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_66Mhz 5 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_100Mhz 6 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_133Mhz 7 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_66Mhz 8 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_100Mhz 9 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_133Mhz 10 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_66Mhz 11 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_100Mhz 12 +#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_133Mhz 13 +#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_Conventional_33Mhz 1 +#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_Conventional_66Mhz 2 +#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_66Mhz 4 +#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_133Mhz 8 +#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_266Mhz 16 +#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_533Mhz 32 +#define DevProp_PciRootBus_BusWidth_32Bits 0 +#define DevProp_PciRootBus_BusWidth_64Bits 1 +#define DevProp_PciDevice_DeviceType_PciConventional 0 +#define DevProp_PciDevice_DeviceType_PciX 1 +#define DevProp_PciDevice_DeviceType_PciExpressEndpoint 2 +#define DevProp_PciDevice_DeviceType_PciExpressLegacyEndpoint 3 +#define DevProp_PciDevice_DeviceType_PciExpressRootComplexIntegratedEndpoint 4 +#define DevProp_PciDevice_DeviceType_PciExpressTreatedAsPci 5 +#define DevProp_PciDevice_BridgeType_PciConventional 6 +#define DevProp_PciDevice_BridgeType_PciX 7 +#define DevProp_PciDevice_BridgeType_PciExpressRootPort 8 +#define DevProp_PciDevice_BridgeType_PciExpressUpstreamSwitchPort 9 +#define DevProp_PciDevice_BridgeType_PciExpressDownstreamSwitchPort 10 +#define DevProp_PciDevice_BridgeType_PciExpressToPciXBridge 11 +#define DevProp_PciDevice_BridgeType_PciXToExpressBridge 12 +#define DevProp_PciDevice_BridgeType_PciExpressTreatedAsPci 13 +#define DevProp_PciDevice_CurrentSpeedAndMode_Pci_Conventional_33MHz 0 +#define DevProp_PciDevice_CurrentSpeedAndMode_Pci_Conventional_66MHz 1 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode_Conventional_Pci 0x0 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_66Mhz 0x1 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_100Mhz 0x2 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_133MHZ 0x3 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_66Mhz 0x5 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_100Mhz 0x6 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_133Mhz 0x7 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_66MHz 0x9 +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_100MHz 0xa +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_133MHz 0xb +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_66MHz 0xd +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_100MHz 0xe +#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_133MHz 0xf +#define DevProp_PciExpressDevice_PayloadOrRequestSize_128Bytes 0 +#define DevProp_PciExpressDevice_PayloadOrRequestSize_256Bytes 1 +#define DevProp_PciExpressDevice_PayloadOrRequestSize_512Bytes 2 +#define DevProp_PciExpressDevice_PayloadOrRequestSize_1024Bytes 3 +#define DevProp_PciExpressDevice_PayloadOrRequestSize_2048Bytes 4 +#define DevProp_PciExpressDevice_PayloadOrRequestSize_4096Bytes 5 +#define DevProp_PciExpressDevice_LinkSpeed_TwoAndHalf_Gbps 1 +#define DevProp_PciExpressDevice_LinkSpeed_Five_Gbps 2 +#define DevProp_PciExpressDevice_LinkWidth_By_1 1 +#define DevProp_PciExpressDevice_LinkWidth_By_2 2 +#define DevProp_PciExpressDevice_LinkWidth_By_4 4 +#define DevProp_PciExpressDevice_LinkWidth_By_8 8 +#define DevProp_PciExpressDevice_LinkWidth_By_12 12 +#define DevProp_PciExpressDevice_LinkWidth_By_16 16 +#define DevProp_PciExpressDevice_LinkWidth_By_32 32 +#define DevProp_PciExpressDevice_LinkSpeed_TwoAndHalf_Gbps 1 +#define DevProp_PciExpressDevice_Spec_Version_10 1 +#define DevProp_PciExpressDevice_Spec_Version_11 2 +#define DevProp_PciDevice_InterruptType_LineBased 1 +#define DevProp_PciDevice_InterruptType_Msi 2 +#define DevProp_PciDevice_InterruptType_MsiX 4 +#define DevProp_PciDevice_IoBarCount(_PD) ((_PD) & 0xff) +#define DevProp_PciDevice_NonPrefetchable_MemoryBarCount(_PD) (((_PD) >> 8) & 0xff) +#define DevProp_PciDevice_32BitPrefetchable_MemoryBarCount(_PD) (((_PD) >> 16) & 0xff) +#define DevProp_PciDevice_64BitPrefetchable_MemoryBarCount(_PD) (((_PD) >> 24) & 0xff) +#define DevProp_PciDevice_SriovSupport_Ok 0x0 +#define DevProp_PciDevice_SriovSupport_MissingAcs 0x1 +#define DevProp_PciDevice_SriovSupport_MissingPfDriver 0x2 +#define DevProp_PciDevice_SriovSupport_NoBusResource 0x3 +#define DevProp_PciDevice_SriovSupport_DidntGetVfBarSpace 0x4 +#define DevProp_PciDevice_AcsSupport_Present 0x0 +#define DevProp_PciDevice_AcsSupport_NotNeeded 0x1 +#define DevProp_PciDevice_AcsSupport_Missing 0x2 +#define NDIS_SUPPORT_NDIS61 0 +#define NDIS_SUPPORT_NDIS620 0 +#define NDIS_SUPPORT_NDIS630 0 +#define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN" +#define _NDIS_CONTROL_CODE(request,method) CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS) +#define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE (0, METHOD_OUT_DIRECT) +#define IOCTL_NDIS_QUERY_ALL_STATS _NDIS_CONTROL_CODE (1, METHOD_OUT_DIRECT) +#define IOCTL_NDIS_DO_PNP_OPERATION _NDIS_CONTROL_CODE (2, METHOD_BUFFERED) +#define IOCTL_NDIS_QUERY_SELECTED_STATS _NDIS_CONTROL_CODE (3, METHOD_OUT_DIRECT) +#define IOCTL_NDIS_ENUMERATE_INTERFACES _NDIS_CONTROL_CODE (4, METHOD_BUFFERED) +#define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE (5, METHOD_BUFFERED) +#define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE (7, METHOD_OUT_DIRECT) +#define IOCTL_NDIS_GET_VERSION _NDIS_CONTROL_CODE (8, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED1 _NDIS_CONTROL_CODE (9, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED2 _NDIS_CONTROL_CODE (0xa, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED3 _NDIS_CONTROL_CODE (0xb, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED4 _NDIS_CONTROL_CODE (0xc, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED5 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xd, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_NDIS_RESERVED6 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xe, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define IOCTL_NDIS_RESERVED7 _NDIS_CONTROL_CODE (0xf, METHOD_OUT_DIRECT) +#define IOCTL_NDIS_RESERVED8 _NDIS_CONTROL_CODE (0x10, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED9 _NDIS_CONTROL_CODE (0x11, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED10 _NDIS_CONTROL_CODE (0x12, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED11 _NDIS_CONTROL_CODE (0x13, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED12 _NDIS_CONTROL_CODE (0x14, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED13 _NDIS_CONTROL_CODE (0x15, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED14 _NDIS_CONTROL_CODE (0x16, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED15 _NDIS_CONTROL_CODE (0x17, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED16 _NDIS_CONTROL_CODE (0x18, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED17 _NDIS_CONTROL_CODE (0x19, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED18 _NDIS_CONTROL_CODE (0x1a, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED19 _NDIS_CONTROL_CODE (0x1b, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED20 _NDIS_CONTROL_CODE (0x1c, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED21 _NDIS_CONTROL_CODE (0x1d, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED22 _NDIS_CONTROL_CODE (0x1e, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED23 _NDIS_CONTROL_CODE (0x1f, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED24 _NDIS_CONTROL_CODE (0x20, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED25 _NDIS_CONTROL_CODE (0x21, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED26 _NDIS_CONTROL_CODE (0x22, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED27 _NDIS_CONTROL_CODE (0x23, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED28 _NDIS_CONTROL_CODE (0x24, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED29 _NDIS_CONTROL_CODE (0x25, METHOD_BUFFERED) +#define IOCTL_NDIS_RESERVED30 _NDIS_CONTROL_CODE (0x26, METHOD_BUFFERED) + typedef ULONG NDIS_OID, *PNDIS_OID; + typedef struct _NDIS_STATISTICS_VALUE { + NDIS_OID Oid; + ULONG DataLength; + UCHAR Data[1]; + } NDIS_STATISTICS_VALUE; + typedef NDIS_STATISTICS_VALUE *PNDIS_STATISTICS_VALUE; + typedef struct _NDIS_STATISTICS_VALUE_EX { + NDIS_OID Oid; + ULONG DataLength; + ULONG Length; + UCHAR Data[1]; + } NDIS_STATISTICS_VALUE_EX; + typedef NDIS_STATISTICS_VALUE_EX *PNDIS_STATISTICS_VALUE_EX; + typedef struct _NDIS_VAR_DATA_DESC { + USHORT Length; + USHORT MaximumLength; + ULONG_PTR Offset; + } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC; +#define NDIS_OBJECT_TYPE_DEFAULT 0x80 +#define NDIS_OBJECT_TYPE_MINIPORT_INIT_PARAMETERS 0x81 +#define NDIS_OBJECT_TYPE_SG_DMA_DESCRIPTION 0x83 +#define NDIS_OBJECT_TYPE_MINIPORT_INTERRUPT 0x84 +#define NDIS_OBJECT_TYPE_DEVICE_OBJECT_ATTRIBUTES 0x85 +#define NDIS_OBJECT_TYPE_BIND_PARAMETERS 0x86 +#define NDIS_OBJECT_TYPE_OPEN_PARAMETERS 0x87 +#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88 +#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89 +#define NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS 0x8a +#define NDIS_OBJECT_TYPE_FILTER_DRIVER_CHARACTERISTICS 0x8b +#define NDIS_OBJECT_TYPE_FILTER_PARTIAL_CHARACTERISTICS 0x8c +#define NDIS_OBJECT_TYPE_FILTER_ATTRIBUTES 0x8d +#define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8e +#define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8f +#define NDIS_OBJECT_TYPE_CO_PROTOCOL_CHARACTERISTICS 0x90 +#define NDIS_OBJECT_TYPE_CO_MINIPORT_CHARACTERISTICS 0x91 +#define NDIS_OBJECT_TYPE_MINIPORT_PNP_CHARACTERISTICS 0x92 +#define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x93 +#define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x94 +#define NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS 0x95 +#define NDIS_OBJECT_TYPE_REQUEST_EX 0x96 +#define NDIS_OBJECT_TYPE_OID_REQUEST 0x96 +#define NDIS_OBJECT_TYPE_TIMER_CHARACTERISTICS 0x97 +#define NDIS_OBJECT_TYPE_STATUS_INDICATION 0x98 +#define NDIS_OBJECT_TYPE_FILTER_ATTACH_PARAMETERS 0x99 +#define NDIS_OBJECT_TYPE_FILTER_PAUSE_PARAMETERS 0x9a +#define NDIS_OBJECT_TYPE_FILTER_RESTART_PARAMETERS 0x9b +#define NDIS_OBJECT_TYPE_PORT_CHARACTERISTICS 0x9c +#define NDIS_OBJECT_TYPE_PORT_STATE 0x9d +#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 0x9e +#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 0x9f +#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES 0xa0 +#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES 0xa1 +#define NDIS_OBJECT_TYPE_RESTART_GENERAL_ATTRIBUTES 0xa2 +#define NDIS_OBJECT_TYPE_PROTOCOL_RESTART_PARAMETERS 0xa3 +#define NDIS_OBJECT_TYPE_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 0xa4 +#define NDIS_OBJECT_TYPE_CO_CALL_MANAGER_OPTIONAL_HANDLERS 0xa5 +#define NDIS_OBJECT_TYPE_CO_CLIENT_OPTIONAL_HANDLERS 0xa6 +#define NDIS_OBJECT_TYPE_OFFLOAD 0xa7 +#define NDIS_OBJECT_TYPE_OFFLOAD_ENCAPSULATION 0xa8 +#define NDIS_OBJECT_TYPE_CONFIGURATION_OBJECT 0xa9 +#define NDIS_OBJECT_TYPE_DRIVER_WRAPPER_OBJECT 0xaa +#define NDIS_OBJECT_TYPE_NSI_NETWORK_RW_STRUCT 0xac +#define NDIS_OBJECT_TYPE_NSI_COMPARTMENT_RW_STRUCT 0xad +#define NDIS_OBJECT_TYPE_NSI_INTERFACE_PERSIST_RW_STRUCT 0xae + typedef struct _NDIS_OBJECT_HEADER { + UCHAR Type; + UCHAR Revision; + USHORT Size; + } NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER; + typedef enum _NDIS_REQUEST_TYPE { + NdisRequestQueryInformation, + NdisRequestSetInformation, + NdisRequestQueryStatistics, + NdisRequestOpen, + NdisRequestClose, + NdisRequestSend, + NdisRequestTransferData, + NdisRequestReset, + NdisRequestGeneric1, + NdisRequestGeneric2, + NdisRequestGeneric3, + NdisRequestGeneric4 + } NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE; +#define NDIS_OBJECT_REVISION_1 1 +#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_RCV 0x00000001 +#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_RCV 0x00000002 +#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_RCV 0x00000004 +#define NDIS_STATISTICS_FLAGS_VALID_BYTES_RCV 0x00000008 +#define NDIS_STATISTICS_FLAGS_VALID_RCV_DISCARDS 0x00000010 +#define NDIS_STATISTICS_FLAGS_VALID_RCV_ERROR 0x00000020 +#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_XMIT 0x00000040 +#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_XMIT 0x00000080 +#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_XMIT 0x00000100 +#define NDIS_STATISTICS_FLAGS_VALID_BYTES_XMIT 0x00000200 +#define NDIS_STATISTICS_FLAGS_VALID_XMIT_ERROR 0x00000400 +#define NDIS_STATISTICS_FLAGS_VALID_XMIT_DISCARDS 0x00008000 +#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_RCV 0x00010000 +#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_RCV 0x00020000 +#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_RCV 0x00040000 +#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_XMIT 0x00080000 +#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_XMIT 0x00100000 +#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_XMIT 0x00200000 +#define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_RESET 0x00000001 +#define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_REINITIALIZE 0x00000002 +#define NDIS_STATISTICS_INFO_REVISION_1 1 +#define NDIS_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 1 +#define NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 1 +#define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 1 +#define NDIS_SIZEOF_STATISTICS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_STATISTICS_INFO, ifHCOutBroadcastOctets) +#define NDIS_SIZEOF_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_INTERRUPT_MODERATION_PARAMETERS, InterruptModeration) +#define NDIS_SIZEOF_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, TimeoutArray) +#define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxLinkWidth) + typedef struct _NDIS_STATISTICS_INFO { + NDIS_OBJECT_HEADER Header; + ULONG SupportedStatistics; + ULONG64 ifInDiscards; + ULONG64 ifInErrors; + ULONG64 ifHCInOctets; + ULONG64 ifHCInUcastPkts; + ULONG64 ifHCInMulticastPkts; + ULONG64 ifHCInBroadcastPkts; + ULONG64 ifHCOutOctets; + ULONG64 ifHCOutUcastPkts; + ULONG64 ifHCOutMulticastPkts; + ULONG64 ifHCOutBroadcastPkts; + ULONG64 ifOutErrors; + ULONG64 ifOutDiscards; + ULONG64 ifHCInUcastOctets; + ULONG64 ifHCInMulticastOctets; + ULONG64 ifHCInBroadcastOctets; + ULONG64 ifHCOutUcastOctets; + ULONG64 ifHCOutMulticastOctets; + ULONG64 ifHCOutBroadcastOctets; + } NDIS_STATISTICS_INFO, *PNDIS_STATISTICS_INFO; + typedef enum _NDIS_INTERRUPT_MODERATION { + NdisInterruptModerationUnknown, + NdisInterruptModerationNotSupported, + NdisInterruptModerationEnabled, + NdisInterruptModerationDisabled + } NDIS_INTERRUPT_MODERATION, *PNDIS_INTERRUPT_MODERATION; + typedef struct _NDIS_INTERRUPT_MODERATION_PARAMETERS { + NDIS_OBJECT_HEADER Header; + ULONG Flags; + NDIS_INTERRUPT_MODERATION InterruptModeration; + } NDIS_INTERRUPT_MODERATION_PARAMETERS, *PNDIS_INTERRUPT_MODERATION_PARAMETERS; + typedef struct _NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES { + NDIS_OBJECT_HEADER Header; + ULONG Flags; + ULONG TimeoutArrayLength; + ULONG TimeoutArray[1]; + } NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, *PNDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES; + typedef struct _NDIS_PCI_DEVICE_CUSTOM_PROPERTIES { + NDIS_OBJECT_HEADER Header; + UINT32 DeviceType; + UINT32 CurrentSpeedAndMode; + UINT32 CurrentPayloadSize; + UINT32 MaxPayloadSize; + UINT32 MaxReadRequestSize; + UINT32 CurrentLinkSpeed; + UINT32 CurrentLinkWidth; + UINT32 MaxLinkSpeed; + UINT32 MaxLinkWidth; + } NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, *PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES; +#define OID_GEN_SUPPORTED_LIST 0x00010101 +#define OID_GEN_HARDWARE_STATUS 0x00010102 +#define OID_GEN_MEDIA_SUPPORTED 0x00010103 +#define OID_GEN_MEDIA_IN_USE 0x00010104 +#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105 +#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106 +#define OID_GEN_LINK_SPEED 0x00010107 +#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108 +#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109 +#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010a +#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010b +#define OID_GEN_VENDOR_ID 0x0001010c +#define OID_GEN_VENDOR_DESCRIPTION 0x0001010d +#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010e +#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010f +#define OID_GEN_DRIVER_VERSION 0x00010110 +#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111 +#define OID_GEN_PROTOCOL_OPTIONS 0x00010112 +#define OID_GEN_MAC_OPTIONS 0x00010113 +#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114 +#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115 +#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116 +#define OID_GEN_SUPPORTED_GUIDS 0x00010117 +#define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118 +#define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119 +#define OID_GEN_MEDIA_CAPABILITIES 0x00010201 +#define OID_GEN_PHYSICAL_MEDIUM 0x00010202 +#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 +#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204 +#define OID_GEN_MAC_ADDRESS 0x00010205 +#define OID_GEN_MAX_LINK_SPEED 0x00010206 +#define OID_GEN_LINK_STATE 0x00010207 +#define OID_GEN_LINK_PARAMETERS 0x00010208 +#define OID_GEN_INTERRUPT_MODERATION 0x00010209 +#define OID_GEN_NDIS_RESERVED_3 0x0001020a +#define OID_GEN_NDIS_RESERVED_4 0x0001020b +#define OID_GEN_NDIS_RESERVED_5 0x0001020c +#define OID_GEN_ENUMERATE_PORTS 0x0001020d +#define OID_GEN_PORT_STATE 0x0001020e +#define OID_GEN_PORT_AUTHENTICATION_PARAMETERS 0x0001020f +#define OID_GEN_TIMEOUT_DPC_REQUEST_CAPABILITIES 0x00010210 +#define OID_GEN_PCI_DEVICE_CUSTOM_PROPERTIES 0x00010211 +#define OID_GEN_NDIS_RESERVED_6 0x00010212 +#define OID_GEN_PHYSICAL_MEDIUM_EX 0x00010213 +#define OID_GEN_MACHINE_NAME 0x0001021a +#define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021b +#define OID_GEN_VLAN_ID 0x0001021c +#define OID_GEN_RECEIVE_HASH 0x0001021f +#define OID_GEN_MINIPORT_RESTART_ATTRIBUTES 0x0001021d +#define OID_GEN_PROMISCUOUS_MODE 0x00010280 +#define OID_GEN_LAST_CHANGE 0x00010281 +#define OID_GEN_DISCONTINUITY_TIME 0x00010282 +#define OID_GEN_OPERATIONAL_STATUS 0x00010283 +#define OID_GEN_XMIT_LINK_SPEED 0x00010284 +#define OID_GEN_RCV_LINK_SPEED 0x00010285 +#define OID_GEN_UNKNOWN_PROTOS 0x00010286 +#define OID_GEN_INTERFACE_INFO 0x00010287 +#define OID_GEN_ADMIN_STATUS 0x00010288 +#define OID_GEN_ALIAS 0x00010289 +#define OID_GEN_MEDIA_CONNECT_STATUS_EX 0x0001028a +#define OID_GEN_LINK_SPEED_EX 0x0001028b +#define OID_GEN_MEDIA_DUPLEX_STATE 0x0001028c +#define OID_GEN_IP_OPER_STATUS 0x0001028d +#define OID_WWAN_DRIVER_CAPS 0x0e010100 +#define OID_WWAN_DEVICE_CAPS 0x0e010101 +#define OID_WWAN_READY_INFO 0x0e010102 +#define OID_WWAN_RADIO_STATE 0x0e010103 +#define OID_WWAN_PIN 0x0e010104 +#define OID_WWAN_PIN_LIST 0x0e010105 +#define OID_WWAN_HOME_PROVIDER 0x0e010106 +#define OID_WWAN_PREFERRED_PROVIDERS 0x0e010107 +#define OID_WWAN_VISIBLE_PROVIDERS 0x0e010108 +#define OID_WWAN_REGISTER_STATE 0x0e010109 +#define OID_WWAN_PACKET_SERVICE 0x0e01010a +#define OID_WWAN_SIGNAL_STATE 0x0e01010b +#define OID_WWAN_CONNECT 0x0e01010c +#define OID_WWAN_PROVISIONED_CONTEXTS 0x0e01010d +#define OID_WWAN_SERVICE_ACTIVATION 0x0e01010e +#define OID_WWAN_SMS_CONFIGURATION 0x0e01010f +#define OID_WWAN_SMS_READ 0x0e010110 +#define OID_WWAN_SMS_SEND 0x0e010111 +#define OID_WWAN_SMS_DELETE 0x0e010112 +#define OID_WWAN_SMS_STATUS 0x0e010113 +#define OID_WWAN_VENDOR_SPECIFIC 0x0e010114 +#define OID_GEN_XMIT_OK 0x00020101 +#define OID_GEN_RCV_OK 0x00020102 +#define OID_GEN_XMIT_ERROR 0x00020103 +#define OID_GEN_RCV_ERROR 0x00020104 +#define OID_GEN_RCV_NO_BUFFER 0x00020105 +#define OID_GEN_STATISTICS 0x00020106 +#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201 +#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202 +#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203 +#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204 +#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205 +#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206 +#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207 +#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208 +#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209 +#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020a +#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020b +#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020c +#define OID_GEN_RCV_CRC_ERROR 0x0002020d +#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020e +#define OID_GEN_GET_TIME_CAPS 0x0002020f +#define OID_GEN_GET_NETCARD_TIME 0x00020210 +#define OID_GEN_NETCARD_LOAD 0x00020211 +#define OID_GEN_DEVICE_PROFILE 0x00020212 +#define OID_GEN_INIT_TIME_MS 0x00020213 +#define OID_GEN_RESET_COUNTS 0x00020214 +#define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215 +#define OID_GEN_FRIENDLY_NAME 0x00020216 +#define OID_GEN_NDIS_RESERVED_1 0x00020217 +#define OID_GEN_NDIS_RESERVED_2 0x00020218 +#define OID_GEN_NDIS_RESERVED_5 0x0001020c +#define OID_GEN_BYTES_RCV 0x00020219 +#define OID_GEN_BYTES_XMIT 0x0002021a +#define OID_GEN_RCV_DISCARDS 0x0002021b +#define OID_GEN_XMIT_DISCARDS 0x0002021c +#define OID_GEN_CO_SUPPORTED_LIST OID_GEN_SUPPORTED_LIST +#define OID_GEN_CO_HARDWARE_STATUS OID_GEN_HARDWARE_STATUS +#define OID_GEN_CO_MEDIA_SUPPORTED OID_GEN_MEDIA_SUPPORTED +#define OID_GEN_CO_MEDIA_IN_USE OID_GEN_MEDIA_IN_USE +#define OID_GEN_CO_LINK_SPEED OID_GEN_LINK_SPEED +#define OID_GEN_CO_VENDOR_ID OID_GEN_VENDOR_ID +#define OID_GEN_CO_VENDOR_DESCRIPTION OID_GEN_VENDOR_DESCRIPTION +#define OID_GEN_CO_DRIVER_VERSION OID_GEN_DRIVER_VERSION +#define OID_GEN_CO_PROTOCOL_OPTIONS OID_GEN_PROTOCOL_OPTIONS +#define OID_GEN_CO_MAC_OPTIONS OID_GEN_MAC_OPTIONS +#define OID_GEN_CO_MEDIA_CONNECT_STATUS OID_GEN_MEDIA_CONNECT_STATUS +#define OID_GEN_CO_VENDOR_DRIVER_VERSION OID_GEN_VENDOR_DRIVER_VERSION +#define OID_GEN_CO_SUPPORTED_GUIDS OID_GEN_SUPPORTED_GUIDS +#define OID_GEN_CO_GET_TIME_CAPS OID_GEN_GET_TIME_CAPS +#define OID_GEN_CO_GET_NETCARD_TIME OID_GEN_GET_NETCARD_TIME +#define OID_GEN_CO_MINIMUM_LINK_SPEED 0x00020120 +#define OID_GEN_CO_XMIT_PDUS_OK OID_GEN_XMIT_OK +#define OID_GEN_CO_RCV_PDUS_OK OID_GEN_RCV_OK +#define OID_GEN_CO_XMIT_PDUS_ERROR OID_GEN_XMIT_ERROR +#define OID_GEN_CO_RCV_PDUS_ERROR OID_GEN_RCV_ERROR +#define OID_GEN_CO_RCV_PDUS_NO_BUFFER OID_GEN_RCV_NO_BUFFER +#define OID_GEN_CO_RCV_CRC_ERROR OID_GEN_RCV_CRC_ERROR +#define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH OID_GEN_TRANSMIT_QUEUE_LENGTH +#define OID_GEN_CO_BYTES_XMIT OID_GEN_DIRECTED_BYTES_XMIT +#define OID_GEN_CO_BYTES_RCV OID_GEN_DIRECTED_BYTES_RCV +#define OID_GEN_CO_NETCARD_LOAD OID_GEN_NETCARD_LOAD +#define OID_GEN_CO_DEVICE_PROFILE OID_GEN_DEVICE_PROFILE +#define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020221 +#define OID_802_3_PERMANENT_ADDRESS 0x01010101 +#define OID_802_3_CURRENT_ADDRESS 0x01010102 +#define OID_802_3_MULTICAST_LIST 0x01010103 +#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 +#define OID_802_3_MAC_OPTIONS 0x01010105 +#define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001 +#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101 +#define OID_802_3_XMIT_ONE_COLLISION 0x01020102 +#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103 +#define OID_802_3_XMIT_DEFERRED 0x01020201 +#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202 +#define OID_802_3_RCV_OVERRUN 0x01020203 +#define OID_802_3_XMIT_UNDERRUN 0x01020204 +#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205 +#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206 +#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207 +#define OID_802_3_ADD_MULTICAST_ADDRESS 0x01010208 +#define OID_802_3_DELETE_MULTICAST_ADDRESS 0x01010209 +#define OID_802_5_PERMANENT_ADDRESS 0x02010101 +#define OID_802_5_CURRENT_ADDRESS 0x02010102 +#define OID_802_5_CURRENT_FUNCTIONAL 0x02010103 +#define OID_802_5_CURRENT_GROUP 0x02010104 +#define OID_802_5_LAST_OPEN_STATUS 0x02010105 +#define OID_802_5_CURRENT_RING_STATUS 0x02010106 +#define OID_802_5_CURRENT_RING_STATE 0x02010107 +#define OID_802_5_LINE_ERRORS 0x02020101 +#define OID_802_5_LOST_FRAMES 0x02020102 +#define OID_802_5_BURST_ERRORS 0x02020201 +#define OID_802_5_AC_ERRORS 0x02020202 +#define OID_802_5_ABORT_DELIMETERS 0x02020203 +#define OID_802_5_FRAME_COPIED_ERRORS 0x02020204 +#define OID_802_5_FREQUENCY_ERRORS 0x02020205 +#define OID_802_5_TOKEN_ERRORS 0x02020206 +#define OID_802_5_INTERNAL_ERRORS 0x02020207 +#define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101 +#define OID_FDDI_LONG_CURRENT_ADDR 0x03010102 +#define OID_FDDI_LONG_MULTICAST_LIST 0x03010103 +#define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104 +#define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105 +#define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106 +#define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107 +#define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108 +#define OID_FDDI_ATTACHMENT_TYPE 0x03020101 +#define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102 +#define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103 +#define OID_FDDI_FRAME_ERRORS 0x03020104 +#define OID_FDDI_FRAMES_LOST 0x03020105 +#define OID_FDDI_RING_MGT_STATE 0x03020106 +#define OID_FDDI_LCT_FAILURES 0x03020107 +#define OID_FDDI_LEM_REJECTS 0x03020108 +#define OID_FDDI_LCONNECTION_STATE 0x03020109 +#define OID_FDDI_SMT_STATION_ID 0x03030201 +#define OID_FDDI_SMT_OP_VERSION_ID 0x03030202 +#define OID_FDDI_SMT_HI_VERSION_ID 0x03030203 +#define OID_FDDI_SMT_LO_VERSION_ID 0x03030204 +#define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205 +#define OID_FDDI_SMT_USER_DATA 0x03030206 +#define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207 +#define OID_FDDI_SMT_MAC_CT 0x03030208 +#define OID_FDDI_SMT_NON_MASTER_CT 0x03030209 +#define OID_FDDI_SMT_MASTER_CT 0x0303020a +#define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020b +#define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020c +#define OID_FDDI_SMT_CONFIG_POLICY 0x0303020d +#define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020e +#define OID_FDDI_SMT_T_NOTIFY 0x0303020f +#define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210 +#define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211 +#define OID_FDDI_SMT_PORT_INDEXES 0x03030212 +#define OID_FDDI_SMT_MAC_INDEXES 0x03030213 +#define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214 +#define OID_FDDI_SMT_ECM_STATE 0x03030215 +#define OID_FDDI_SMT_CF_STATE 0x03030216 +#define OID_FDDI_SMT_HOLD_STATE 0x03030217 +#define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218 +#define OID_FDDI_SMT_STATION_STATUS 0x03030219 +#define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021a +#define OID_FDDI_SMT_MSG_TIME_STAMP 0x0303021b +#define OID_FDDI_SMT_TRANSITION_TIME_STAMP 0x0303021c +#define OID_FDDI_SMT_SET_COUNT 0x0303021d +#define OID_FDDI_SMT_LAST_SET_STATION_ID 0x0303021e +#define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS 0x0303021f +#define OID_FDDI_MAC_BRIDGE_FUNCTIONS 0x03030220 +#define OID_FDDI_MAC_T_MAX_CAPABILITY 0x03030221 +#define OID_FDDI_MAC_TVX_CAPABILITY 0x03030222 +#define OID_FDDI_MAC_AVAILABLE_PATHS 0x03030223 +#define OID_FDDI_MAC_CURRENT_PATH 0x03030224 +#define OID_FDDI_MAC_UPSTREAM_NBR 0x03030225 +#define OID_FDDI_MAC_DOWNSTREAM_NBR 0x03030226 +#define OID_FDDI_MAC_OLD_UPSTREAM_NBR 0x03030227 +#define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR 0x03030228 +#define OID_FDDI_MAC_DUP_ADDRESS_TEST 0x03030229 +#define OID_FDDI_MAC_REQUESTED_PATHS 0x0303022a +#define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE 0x0303022b +#define OID_FDDI_MAC_INDEX 0x0303022c +#define OID_FDDI_MAC_SMT_ADDRESS 0x0303022d +#define OID_FDDI_MAC_LONG_GRP_ADDRESS 0x0303022e +#define OID_FDDI_MAC_SHORT_GRP_ADDRESS 0x0303022f +#define OID_FDDI_MAC_T_REQ 0x03030230 +#define OID_FDDI_MAC_T_NEG 0x03030231 +#define OID_FDDI_MAC_T_MAX 0x03030232 +#define OID_FDDI_MAC_TVX_VALUE 0x03030233 +#define OID_FDDI_MAC_T_PRI0 0x03030234 +#define OID_FDDI_MAC_T_PRI1 0x03030235 +#define OID_FDDI_MAC_T_PRI2 0x03030236 +#define OID_FDDI_MAC_T_PRI3 0x03030237 +#define OID_FDDI_MAC_T_PRI4 0x03030238 +#define OID_FDDI_MAC_T_PRI5 0x03030239 +#define OID_FDDI_MAC_T_PRI6 0x0303023a +#define OID_FDDI_MAC_FRAME_CT 0x0303023b +#define OID_FDDI_MAC_COPIED_CT 0x0303023c +#define OID_FDDI_MAC_TRANSMIT_CT 0x0303023d +#define OID_FDDI_MAC_TOKEN_CT 0x0303023e +#define OID_FDDI_MAC_ERROR_CT 0x0303023f +#define OID_FDDI_MAC_LOST_CT 0x03030240 +#define OID_FDDI_MAC_TVX_EXPIRED_CT 0x03030241 +#define OID_FDDI_MAC_NOT_COPIED_CT 0x03030242 +#define OID_FDDI_MAC_LATE_CT 0x03030243 +#define OID_FDDI_MAC_RING_OP_CT 0x03030244 +#define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD 0x03030245 +#define OID_FDDI_MAC_FRAME_ERROR_RATIO 0x03030246 +#define OID_FDDI_MAC_NOT_COPIED_THRESHOLD 0x03030247 +#define OID_FDDI_MAC_NOT_COPIED_RATIO 0x03030248 +#define OID_FDDI_MAC_RMT_STATE 0x03030249 +#define OID_FDDI_MAC_DA_FLAG 0x0303024a +#define OID_FDDI_MAC_UNDA_FLAG 0x0303024b +#define OID_FDDI_MAC_FRAME_ERROR_FLAG 0x0303024c +#define OID_FDDI_MAC_NOT_COPIED_FLAG 0x0303024d +#define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE 0x0303024e +#define OID_FDDI_MAC_HARDWARE_PRESENT 0x0303024f +#define OID_FDDI_MAC_MA_UNITDATA_ENABLE 0x03030250 +#define OID_FDDI_PATH_INDEX 0x03030251 +#define OID_FDDI_PATH_RING_LATENCY 0x03030252 +#define OID_FDDI_PATH_TRACE_STATUS 0x03030253 +#define OID_FDDI_PATH_SBA_PAYLOAD 0x03030254 +#define OID_FDDI_PATH_SBA_OVERHEAD 0x03030255 +#define OID_FDDI_PATH_CONFIGURATION 0x03030256 +#define OID_FDDI_PATH_T_R_MODE 0x03030257 +#define OID_FDDI_PATH_SBA_AVAILABLE 0x03030258 +#define OID_FDDI_PATH_TVX_LOWER_BOUND 0x03030259 +#define OID_FDDI_PATH_T_MAX_LOWER_BOUND 0x0303025a +#define OID_FDDI_PATH_MAX_T_REQ 0x0303025b +#define OID_FDDI_PORT_MY_TYPE 0x0303025c +#define OID_FDDI_PORT_NEIGHBOR_TYPE 0x0303025d +#define OID_FDDI_PORT_CONNECTION_POLICIES 0x0303025e +#define OID_FDDI_PORT_MAC_INDICATED 0x0303025f +#define OID_FDDI_PORT_CURRENT_PATH 0x03030260 +#define OID_FDDI_PORT_REQUESTED_PATHS 0x03030261 +#define OID_FDDI_PORT_MAC_PLACEMENT 0x03030262 +#define OID_FDDI_PORT_AVAILABLE_PATHS 0x03030263 +#define OID_FDDI_PORT_MAC_LOOP_TIME 0x03030264 +#define OID_FDDI_PORT_PMD_CLASS 0x03030265 +#define OID_FDDI_PORT_CONNECTION_CAPABILITIES 0x03030266 +#define OID_FDDI_PORT_INDEX 0x03030267 +#define OID_FDDI_PORT_MAINT_LS 0x03030268 +#define OID_FDDI_PORT_BS_FLAG 0x03030269 +#define OID_FDDI_PORT_PC_LS 0x0303026a +#define OID_FDDI_PORT_EB_ERROR_CT 0x0303026b +#define OID_FDDI_PORT_LCT_FAIL_CT 0x0303026c +#define OID_FDDI_PORT_LER_ESTIMATE 0x0303026d +#define OID_FDDI_PORT_LEM_REJECT_CT 0x0303026e +#define OID_FDDI_PORT_LEM_CT 0x0303026f +#define OID_FDDI_PORT_LER_CUTOFF 0x03030270 +#define OID_FDDI_PORT_LER_ALARM 0x03030271 +#define OID_FDDI_PORT_CONNNECT_STATE 0x03030272 +#define OID_FDDI_PORT_PCM_STATE 0x03030273 +#define OID_FDDI_PORT_PC_WITHHOLD 0x03030274 +#define OID_FDDI_PORT_LER_FLAG 0x03030275 +#define OID_FDDI_PORT_HARDWARE_PRESENT 0x03030276 +#define OID_FDDI_SMT_STATION_ACTION 0x03030277 +#define OID_FDDI_PORT_ACTION 0x03030278 +#define OID_FDDI_IF_DESCR 0x03030279 +#define OID_FDDI_IF_TYPE 0x0303027a +#define OID_FDDI_IF_MTU 0x0303027b +#define OID_FDDI_IF_SPEED 0x0303027c +#define OID_FDDI_IF_PHYS_ADDRESS 0x0303027d +#define OID_FDDI_IF_ADMIN_STATUS 0x0303027e +#define OID_FDDI_IF_OPER_STATUS 0x0303027f +#define OID_FDDI_IF_LAST_CHANGE 0x03030280 +#define OID_FDDI_IF_IN_OCTETS 0x03030281 +#define OID_FDDI_IF_IN_UCAST_PKTS 0x03030282 +#define OID_FDDI_IF_IN_NUCAST_PKTS 0x03030283 +#define OID_FDDI_IF_IN_DISCARDS 0x03030284 +#define OID_FDDI_IF_IN_ERRORS 0x03030285 +#define OID_FDDI_IF_IN_UNKNOWN_PROTOS 0x03030286 +#define OID_FDDI_IF_OUT_OCTETS 0x03030287 +#define OID_FDDI_IF_OUT_UCAST_PKTS 0x03030288 +#define OID_FDDI_IF_OUT_NUCAST_PKTS 0x03030289 +#define OID_FDDI_IF_OUT_DISCARDS 0x0303028a +#define OID_FDDI_IF_OUT_ERRORS 0x0303028b +#define OID_FDDI_IF_OUT_QLEN 0x0303028c +#define OID_FDDI_IF_SPECIFIC 0x0303028d +#define OID_WAN_PERMANENT_ADDRESS 0x04010101 +#define OID_WAN_CURRENT_ADDRESS 0x04010102 +#define OID_WAN_QUALITY_OF_SERVICE 0x04010103 +#define OID_WAN_PROTOCOL_TYPE 0x04010104 +#define OID_WAN_MEDIUM_SUBTYPE 0x04010105 +#define OID_WAN_HEADER_FORMAT 0x04010106 +#define OID_WAN_GET_INFO 0x04010107 +#define OID_WAN_SET_LINK_INFO 0x04010108 +#define OID_WAN_GET_LINK_INFO 0x04010109 +#define OID_WAN_LINE_COUNT 0x0401010a +#define OID_WAN_PROTOCOL_CAPS 0x0401010b +#define OID_WAN_GET_BRIDGE_INFO 0x0401020a +#define OID_WAN_SET_BRIDGE_INFO 0x0401020b +#define OID_WAN_GET_COMP_INFO 0x0401020c +#define OID_WAN_SET_COMP_INFO 0x0401020d +#define OID_WAN_GET_STATS_INFO 0x0401020e +#define OID_WAN_CO_GET_INFO 0x04010180 +#define OID_WAN_CO_SET_LINK_INFO 0x04010181 +#define OID_WAN_CO_GET_LINK_INFO 0x04010182 +#define OID_WAN_CO_GET_COMP_INFO 0x04010280 +#define OID_WAN_CO_SET_COMP_INFO 0x04010281 +#define OID_WAN_CO_GET_STATS_INFO 0x04010282 +#define OID_LTALK_CURRENT_NODE_ID 0x05010102 +#define OID_LTALK_IN_BROADCASTS 0x05020101 +#define OID_LTALK_IN_LENGTH_ERRORS 0x05020102 +#define OID_LTALK_OUT_NO_HANDLERS 0x05020201 +#define OID_LTALK_COLLISIONS 0x05020202 +#define OID_LTALK_DEFERS 0x05020203 +#define OID_LTALK_NO_DATA_ERRORS 0x05020204 +#define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205 +#define OID_LTALK_FCS_ERRORS 0x05020206 +#define OID_ARCNET_PERMANENT_ADDRESS 0x06010101 +#define OID_ARCNET_CURRENT_ADDRESS 0x06010102 +#define OID_ARCNET_RECONFIGURATIONS 0x06020201 +#define OID_TAPI_ACCEPT 0x07030101 +#define OID_TAPI_ANSWER 0x07030102 +#define OID_TAPI_CLOSE 0x07030103 +#define OID_TAPI_CLOSE_CALL 0x07030104 +#define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105 +#define OID_TAPI_CONFIG_DIALOG 0x07030106 +#define OID_TAPI_DEV_SPECIFIC 0x07030107 +#define OID_TAPI_DIAL 0x07030108 +#define OID_TAPI_DROP 0x07030109 +#define OID_TAPI_GET_ADDRESS_CAPS 0x0703010a +#define OID_TAPI_GET_ADDRESS_ID 0x0703010b +#define OID_TAPI_GET_ADDRESS_STATUS 0x0703010c +#define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010d +#define OID_TAPI_GET_CALL_INFO 0x0703010e +#define OID_TAPI_GET_CALL_STATUS 0x0703010f +#define OID_TAPI_GET_DEV_CAPS 0x07030110 +#define OID_TAPI_GET_DEV_CONFIG 0x07030111 +#define OID_TAPI_GET_EXTENSION_ID 0x07030112 +#define OID_TAPI_GET_ID 0x07030113 +#define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114 +#define OID_TAPI_MAKE_CALL 0x07030115 +#define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116 +#define OID_TAPI_OPEN 0x07030117 +#define OID_TAPI_PROVIDER_INITIALIZE 0x07030118 +#define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119 +#define OID_TAPI_SECURE_CALL 0x0703011a +#define OID_TAPI_SELECT_EXT_VERSION 0x0703011b +#define OID_TAPI_SEND_USER_USER_INFO 0x0703011c +#define OID_TAPI_SET_APP_SPECIFIC 0x0703011d +#define OID_TAPI_SET_CALL_PARAMS 0x0703011e +#define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011f +#define OID_TAPI_SET_DEV_CONFIG 0x07030120 +#define OID_TAPI_SET_MEDIA_MODE 0x07030121 +#define OID_TAPI_SET_STATUS_MESSAGES 0x07030122 +#define OID_TAPI_GATHER_DIGITS 0x07030123 +#define OID_TAPI_MONITOR_DIGITS 0x07030124 +#define OID_ATM_SUPPORTED_VC_RATES 0x08010101 +#define OID_ATM_SUPPORTED_SERVICE_CATEGORY 0x08010102 +#define OID_ATM_SUPPORTED_AAL_TYPES 0x08010103 +#define OID_ATM_HW_CURRENT_ADDRESS 0x08010104 +#define OID_ATM_MAX_ACTIVE_VCS 0x08010105 +#define OID_ATM_MAX_ACTIVE_VCI_BITS 0x08010106 +#define OID_ATM_MAX_ACTIVE_VPI_BITS 0x08010107 +#define OID_ATM_MAX_AAL0_PACKET_SIZE 0x08010108 +#define OID_ATM_MAX_AAL1_PACKET_SIZE 0x08010109 +#define OID_ATM_MAX_AAL34_PACKET_SIZE 0x0801010a +#define OID_ATM_MAX_AAL5_PACKET_SIZE 0x0801010b +#define OID_ATM_SIGNALING_VPIVCI 0x08010201 +#define OID_ATM_ASSIGNED_VPI 0x08010202 +#define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES 0x08010203 +#define OID_ATM_RELEASE_ACCESS_NET_RESOURCES 0x08010204 +#define OID_ATM_ILMI_VPIVCI 0x08010205 +#define OID_ATM_DIGITAL_BROADCAST_VPIVCI 0x08010206 +#define OID_ATM_GET_NEAREST_FLOW 0x08010207 +#define OID_ATM_ALIGNMENT_REQUIRED 0x08010208 +#define OID_ATM_LECS_ADDRESS 0x08010209 +#define OID_ATM_SERVICE_ADDRESS 0x0801020a +#define OID_ATM_CALL_PROCEEDING 0x0801020b +#define OID_ATM_CALL_ALERTING 0x0801020c +#define OID_ATM_PARTY_ALERTING 0x0801020d +#define OID_ATM_CALL_NOTIFY 0x0801020e +#define OID_ATM_MY_IP_NM_ADDRESS 0x0801020f +#define OID_ATM_RCV_CELLS_OK 0x08020101 +#define OID_ATM_XMIT_CELLS_OK 0x08020102 +#define OID_ATM_RCV_CELLS_DROPPED 0x08020103 +#define OID_ATM_RCV_INVALID_VPI_VCI 0x08020201 +#define OID_ATM_CELLS_HEC_ERROR 0x08020202 +#define OID_ATM_RCV_REASSEMBLY_ERROR 0x08020203 +#define OID_802_11_BSSID 0x0d010101 +#define OID_802_11_SSID 0x0d010102 +#define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0d010203 +#define OID_802_11_NETWORK_TYPE_IN_USE 0x0d010204 +#define OID_802_11_TX_POWER_LEVEL 0x0d010205 +#define OID_802_11_RSSI 0x0d010206 +#define OID_802_11_RSSI_TRIGGER 0x0d010207 +#define OID_802_11_INFRASTRUCTURE_MODE 0x0d010108 +#define OID_802_11_FRAGMENTATION_THRESHOLD 0x0d010209 +#define OID_802_11_RTS_THRESHOLD 0x0d01020a +#define OID_802_11_NUMBER_OF_ANTENNAS 0x0d01020b +#define OID_802_11_RX_ANTENNA_SELECTED 0x0d01020c +#define OID_802_11_TX_ANTENNA_SELECTED 0x0d01020d +#define OID_802_11_SUPPORTED_RATES 0x0d01020e +#define OID_802_11_DESIRED_RATES 0x0d010210 +#define OID_802_11_CONFIGURATION 0x0d010211 +#define OID_802_11_STATISTICS 0x0d020212 +#define OID_802_11_ADD_WEP 0x0d010113 +#define OID_802_11_REMOVE_WEP 0x0d010114 +#define OID_802_11_DISASSOCIATE 0x0d010115 +#define OID_802_11_POWER_MODE 0x0d010216 +#define OID_802_11_BSSID_LIST 0x0d010217 +#define OID_802_11_AUTHENTICATION_MODE 0x0d010118 +#define OID_802_11_PRIVACY_FILTER 0x0d010119 +#define OID_802_11_BSSID_LIST_SCAN 0x0d01011a +#define OID_802_11_WEP_STATUS 0x0d01011b +#define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS +#define OID_802_11_RELOAD_DEFAULTS 0x0d01011c +#define OID_802_11_ADD_KEY 0x0d01011d +#define OID_802_11_REMOVE_KEY 0x0d01011e +#define OID_802_11_ASSOCIATION_INFORMATION 0x0d01011f +#define OID_802_11_TEST 0x0d010120 +#define OID_802_11_MEDIA_STREAM_MODE 0x0d010121 +#define OID_802_11_CAPABILITY 0x0d010122 +#define OID_802_11_PMKID 0x0d010123 +#define OID_802_11_NON_BCAST_SSID_LIST 0x0d010124 +#define OID_802_11_RADIO_STATUS 0x0d010125 +#define NDIS_ETH_TYPE_IPV4 0x0800 +#define NDIS_ETH_TYPE_ARP 0x0806 +#define NDIS_ETH_TYPE_IPV6 0x86dd +#define NDIS_ETH_TYPE_802_1X 0x888e +#define NDIS_ETH_TYPE_802_1Q 0x8100 +#define NDIS_ETH_TYPE_SLOW_PROTOCOL 0x8809 +#define NDIS_802_11_LENGTH_SSID 32 +#define NDIS_802_11_LENGTH_RATES 8 +#define NDIS_802_11_LENGTH_RATES_EX 16 +#define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01 +#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02 +#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06 +#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0e +#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f +#define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01 +#define NDIS_802_11_AI_REQFI_CAPABILITIES 1 +#define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2 +#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4 +#define NDIS_802_11_AI_RESFI_CAPABILITIES 1 +#define NDIS_802_11_AI_RESFI_STATUSCODE 2 +#define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4 + typedef enum _NDIS_802_11_STATUS_TYPE { + Ndis802_11StatusType_Authentication, + Ndis802_11StatusType_MediaStreamMode, + Ndis802_11StatusType_PMKID_CandidateList, + Ndis802_11StatusTypeMax + } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE; + typedef UCHAR NDIS_802_11_MAC_ADDRESS[6]; + typedef struct _NDIS_802_11_STATUS_INDICATION { + NDIS_802_11_STATUS_TYPE StatusType; + } NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION; + typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST { + ULONG Length; + NDIS_802_11_MAC_ADDRESS Bssid; + ULONG Flags; + } NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST; + typedef struct _PMKID_CANDIDATE { + NDIS_802_11_MAC_ADDRESS BSSID; + ULONG Flags; + } PMKID_CANDIDATE, *PPMKID_CANDIDATE; + typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST { + ULONG Version; + ULONG NumCandidates; + PMKID_CANDIDATE CandidateList[1]; + } NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST; + typedef enum _NDIS_802_11_NETWORK_TYPE { + Ndis802_11FH, + Ndis802_11DS, + Ndis802_11OFDM5, + Ndis802_11OFDM24, + Ndis802_11Automode, + Ndis802_11NetworkTypeMax + } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE; + typedef struct _NDIS_802_11_NETWORK_TYPE_LIST { + ULONG NumberOfItems; + NDIS_802_11_NETWORK_TYPE NetworkType [1]; + } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST; + typedef enum _NDIS_802_11_POWER_MODE { + Ndis802_11PowerModeCAM, + Ndis802_11PowerModeMAX_PSP, + Ndis802_11PowerModeFast_PSP, + Ndis802_11PowerModeMax + } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE; + typedef ULONG NDIS_802_11_TX_POWER_LEVEL; + typedef LONG NDIS_802_11_RSSI; + typedef struct _NDIS_802_11_CONFIGURATION_FH { + ULONG Length; + ULONG HopPattern; + ULONG HopSet; + ULONG DwellTime; + } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH; + typedef struct _NDIS_802_11_CONFIGURATION { + ULONG Length; + ULONG BeaconPeriod; + ULONG ATIMWindow; + ULONG DSConfig; + NDIS_802_11_CONFIGURATION_FH FHConfig; + } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION; + typedef struct _NDIS_802_11_STATISTICS { + ULONG Length; + LARGE_INTEGER TransmittedFragmentCount; + LARGE_INTEGER MulticastTransmittedFrameCount; + LARGE_INTEGER FailedCount; + LARGE_INTEGER RetryCount; + LARGE_INTEGER MultipleRetryCount; + LARGE_INTEGER RTSSuccessCount; + LARGE_INTEGER RTSFailureCount; + LARGE_INTEGER ACKFailureCount; + LARGE_INTEGER FrameDuplicateCount; + LARGE_INTEGER ReceivedFragmentCount; + LARGE_INTEGER MulticastReceivedFrameCount; + LARGE_INTEGER FCSErrorCount; + LARGE_INTEGER TKIPLocalMICFailures; + LARGE_INTEGER TKIPICVErrorCount; + LARGE_INTEGER TKIPCounterMeasuresInvoked; + LARGE_INTEGER TKIPReplays; + LARGE_INTEGER CCMPFormatErrors; + LARGE_INTEGER CCMPReplays; + LARGE_INTEGER CCMPDecryptErrors; + LARGE_INTEGER FourWayHandshakeFailures; + LARGE_INTEGER WEPUndecryptableCount; + LARGE_INTEGER WEPICVErrorCount; + LARGE_INTEGER DecryptSuccessCount; + LARGE_INTEGER DecryptFailureCount; + } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS; + typedef ULONG NDIS_802_11_KEY_INDEX; + typedef ULONGLONG NDIS_802_11_KEY_RSC; + typedef struct _NDIS_802_11_KEY { + ULONG Length; + ULONG KeyIndex; + ULONG KeyLength; + NDIS_802_11_MAC_ADDRESS BSSID; + NDIS_802_11_KEY_RSC KeyRSC; + UCHAR KeyMaterial[1]; + } NDIS_802_11_KEY, *PNDIS_802_11_KEY; + typedef struct _NDIS_802_11_REMOVE_KEY { + ULONG Length; + ULONG KeyIndex; + NDIS_802_11_MAC_ADDRESS BSSID; + } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY; + typedef struct _NDIS_802_11_WEP { + ULONG Length; + ULONG KeyIndex; + ULONG KeyLength; + UCHAR KeyMaterial[1]; + } NDIS_802_11_WEP, *PNDIS_802_11_WEP; + typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE { + Ndis802_11IBSS, + Ndis802_11Infrastructure, + Ndis802_11AutoUnknown, + Ndis802_11InfrastructureMax + } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE; + typedef enum _NDIS_802_11_AUTHENTICATION_MODE { + Ndis802_11AuthModeOpen, + Ndis802_11AuthModeShared, + Ndis802_11AuthModeAutoSwitch, + Ndis802_11AuthModeWPA, + Ndis802_11AuthModeWPAPSK, + Ndis802_11AuthModeWPANone, + Ndis802_11AuthModeWPA2, + Ndis802_11AuthModeWPA2PSK, + Ndis802_11AuthModeMax + } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE; + typedef UCHAR NDIS_802_11_RATES[8]; + typedef UCHAR NDIS_802_11_RATES_EX[16]; + typedef struct _NDIS_802_11_SSID { + ULONG SsidLength; + UCHAR Ssid[32]; + } NDIS_802_11_SSID, *PNDIS_802_11_SSID; + typedef struct _NDIS_WLAN_BSSID { + ULONG Length; + NDIS_802_11_MAC_ADDRESS MacAddress; + UCHAR Reserved[2]; + NDIS_802_11_SSID Ssid; + ULONG Privacy; + NDIS_802_11_RSSI Rssi; + NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; + NDIS_802_11_CONFIGURATION Configuration; + NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; + NDIS_802_11_RATES SupportedRates; + } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID; + typedef struct _NDIS_802_11_BSSID_LIST { + ULONG NumberOfItems; + NDIS_WLAN_BSSID Bssid[1]; + } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST; + typedef struct _NDIS_WLAN_BSSID_EX { + ULONG Length; + NDIS_802_11_MAC_ADDRESS MacAddress; + UCHAR Reserved[2]; + NDIS_802_11_SSID Ssid; + ULONG Privacy; + NDIS_802_11_RSSI Rssi; + NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; + NDIS_802_11_CONFIGURATION Configuration; + NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; + NDIS_802_11_RATES_EX SupportedRates; + ULONG IELength; + UCHAR IEs[1]; + } NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX; + typedef struct _NDIS_802_11_BSSID_LIST_EX { + ULONG NumberOfItems; + NDIS_WLAN_BSSID_EX Bssid[1]; + } NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX; + typedef struct _NDIS_802_11_FIXED_IEs { + UCHAR Timestamp[8]; + USHORT BeaconInterval; + USHORT Capabilities; + } NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs; + typedef struct _NDIS_802_11_VARIABLE_IEs { + UCHAR ElementID; + UCHAR Length; + UCHAR data[1]; + } NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs; + typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD; + typedef ULONG NDIS_802_11_RTS_THRESHOLD; + typedef ULONG NDIS_802_11_ANTENNA; + typedef enum _NDIS_802_11_PRIVACY_FILTER { + Ndis802_11PrivFilterAcceptAll, + Ndis802_11PrivFilter8021xWEP + } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER; + typedef enum _NDIS_802_11_WEP_STATUS { + Ndis802_11WEPEnabled, + Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, + Ndis802_11WEPDisabled, + Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, + Ndis802_11WEPKeyAbsent, + Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, + Ndis802_11WEPNotSupported, + Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, + Ndis802_11Encryption2Enabled, + Ndis802_11Encryption2KeyAbsent, + Ndis802_11Encryption3Enabled, + Ndis802_11Encryption3KeyAbsent + } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS; + typedef enum _NDIS_802_11_RELOAD_DEFAULTS { + Ndis802_11ReloadWEPKeys + } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS; + typedef struct _NDIS_802_11_AI_REQFI { + USHORT Capabilities; + USHORT ListenInterval; + NDIS_802_11_MAC_ADDRESS CurrentAPAddress; + } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI; + typedef struct _NDIS_802_11_AI_RESFI { + USHORT Capabilities; + USHORT StatusCode; + USHORT AssociationId; + } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI; + typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION { + ULONG Length; + USHORT AvailableRequestFixedIEs; + NDIS_802_11_AI_REQFI RequestFixedIEs; + ULONG RequestIELength; + ULONG OffsetRequestIEs; + USHORT AvailableResponseFixedIEs; + NDIS_802_11_AI_RESFI ResponseFixedIEs; + ULONG ResponseIELength; + ULONG OffsetResponseIEs; + } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION; + typedef struct _NDIS_802_11_AUTHENTICATION_EVENT { + NDIS_802_11_STATUS_INDICATION Status; + NDIS_802_11_AUTHENTICATION_REQUEST Request[1]; + } NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT; + typedef struct _NDIS_802_11_TEST { + ULONG Length; + ULONG Type; + __extension__ union { + NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent; + NDIS_802_11_RSSI RssiTrigger; + }; + } NDIS_802_11_TEST, *PNDIS_802_11_TEST; + typedef enum _NDIS_802_11_MEDIA_STREAM_MODE { + Ndis802_11MediaStreamOff, + Ndis802_11MediaStreamOn, + } NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE; + typedef UCHAR NDIS_802_11_PMKID_VALUE[16]; + typedef struct _BSSID_INFO { + NDIS_802_11_MAC_ADDRESS BSSID; + NDIS_802_11_PMKID_VALUE PMKID; + } BSSID_INFO, *PBSSID_INFO; + typedef struct _NDIS_802_11_PMKID { + ULONG Length; + ULONG BSSIDInfoCount; + BSSID_INFO BSSIDInfo[1]; + } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID; + typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION { + NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported; + NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported; + } NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION; + typedef struct _NDIS_802_11_CAPABILITY { + ULONG Length; + ULONG Version; + ULONG NoOfPMKIDs; + ULONG NoOfAuthEncryptPairsSupported; + NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1]; + } NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY; + typedef struct _NDIS_802_11_NON_BCAST_SSID_LIST { + ULONG NumberOfItems; + NDIS_802_11_SSID Non_Bcast_Ssid[1]; + } NDIS_802_11_NON_BCAST_SSID_LIST, *PNDIS_802_11_NON_BCAST_SSID_LIST; + typedef enum _NDIS_802_11_RADIO_STATUS { + Ndis802_11RadioStatusOn, + Ndis802_11RadioStatusHardwareOff, + Ndis802_11RadioStatusSoftwareOff, + Ndis802_11RadioStatusHardwareSoftwareOff, + Ndis802_11RadioStatusMax + } NDIS_802_11_RADIO_STATUS, *PNDIS_802_11_RADIO_STATUS; +#define OID_IRDA_RECEIVING 0x0a010100 +#define OID_IRDA_TURNAROUND_TIME 0x0a010101 +#define OID_IRDA_SUPPORTED_SPEEDS 0x0a010102 +#define OID_IRDA_LINK_SPEED 0x0a010103 +#define OID_IRDA_MEDIA_BUSY 0x0a010104 +#define OID_IRDA_EXTRA_RCV_BOFS 0x0a010200 +#define OID_IRDA_RATE_SNIFF 0x0a010201 +#define OID_IRDA_UNICAST_LIST 0x0a010202 +#define OID_IRDA_MAX_UNICAST_LIST_SIZE 0x0a010203 +#define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE 0x0a010204 +#define OID_IRDA_MAX_SEND_WINDOW_SIZE 0x0a010205 +#define OID_IRDA_RESERVED1 0x0a01020a +#define OID_IRDA_RESERVED2 0x0a01020f +#define OID_1394_LOCAL_NODE_INFO 0x0c010101 +#define OID_1394_VC_INFO 0x0c010102 +#define OID_CO_ADD_PVC 0xfe000001 +#define OID_CO_DELETE_PVC 0xfe000002 +#define OID_CO_GET_CALL_INFORMATION 0xfe000003 +#define OID_CO_ADD_ADDRESS 0xfe000004 +#define OID_CO_DELETE_ADDRESS 0xfe000005 +#define OID_CO_GET_ADDRESSES 0xfe000006 +#define OID_CO_ADDRESS_CHANGE 0xfe000007 +#define OID_CO_SIGNALING_ENABLED 0xfe000008 +#define OID_CO_SIGNALING_DISABLED 0xfe000009 +#define OID_CO_AF_CLOSE 0xfe00000a +#define OID_CO_TAPI_CM_CAPS 0xfe001001 +#define OID_CO_TAPI_LINE_CAPS 0xfe001002 +#define OID_CO_TAPI_ADDRESS_CAPS 0xfe001003 +#define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS 0xfe001004 +#define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS 0xfe001005 +#define OID_CO_TAPI_TRANSLATE_TAPI_SAP 0xfe001006 +#define OID_CO_TAPI_GET_CALL_DIAGNOSTICS 0xfe001007 +#define OID_CO_TAPI_REPORT_DIGITS 0xfe001008 +#define OID_CO_TAPI_DONT_REPORT_DIGITS 0xfe001009 +#define OID_PNP_CAPABILITIES 0xfd010100 +#define OID_PNP_SET_POWER 0xfd010101 +#define OID_PNP_QUERY_POWER 0xfd010102 +#define OID_PNP_ADD_WAKE_UP_PATTERN 0xfd010103 +#define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xfd010104 +#define OID_PNP_WAKE_UP_PATTERN_LIST 0xfd010105 +#define OID_PNP_ENABLE_WAKE_UP 0xfd010106 +#define OID_PNP_WAKE_UP_OK 0xfd020200 +#define OID_PNP_WAKE_UP_ERROR 0xfd020201 +#define NDIS_PNP_WAKE_UP_MAGIC_PACKET 0x00000001 +#define NDIS_PNP_WAKE_UP_PATTERN_MATCH 0x00000002 +#define NDIS_PNP_WAKE_UP_LINK_CHANGE 0x00000004 +#define OID_TCP_TASK_OFFLOAD 0xfc010201 +#define OID_TCP_TASK_IPSEC_ADD_SA 0xfc010202 +#define OID_TCP_TASK_IPSEC_DELETE_SA 0xfc010203 +#define OID_TCP_SAN_SUPPORT 0xfc010204 +#define OID_TCP_TASK_IPSEC_ADD_UDPESP_SA 0xfc010205 +#define OID_TCP_TASK_IPSEC_DELETE_UDPESP_SA 0xfc010206 +#define OID_TCP4_OFFLOAD_STATS 0xfc010207 +#define OID_TCP6_OFFLOAD_STATS 0xfc010208 +#define OID_IP4_OFFLOAD_STATS 0xfc010209 +#define OID_IP6_OFFLOAD_STATS 0xfc01020a +#define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xfc01020b +#define OID_TCP_OFFLOAD_PARAMETERS 0xfc01020c +#define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020d +#define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xfc01020e +#define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020f +#define OID_OFFLOAD_ENCAPSULATION 0x0101010a +#define OID_FFP_SUPPORT 0xfc010210 +#define OID_FFP_FLUSH 0xfc010211 +#define OID_FFP_CONTROL 0xfc010212 +#define OID_FFP_PARAMS 0xfc010213 +#define OID_FFP_DATA 0xfc010214 +#define OID_FFP_DRIVER_STATS 0xfc020210 +#define OID_FFP_ADAPTER_STATS 0xfc020211 +#define OID_TCP_CONNECTION_OFFLOAD_PARAMETERS 0xfc030201 +#define OID_QOS_RESERVED1 0xfb010100 +#define OID_QOS_RESERVED2 0xfb010101 +#define OID_QOS_RESERVED3 0xfb010102 +#define OID_QOS_RESERVED4 0xfb010103 +#define OID_QOS_RESERVED5 0xfb010104 +#define OID_QOS_RESERVED6 0xfb010105 +#define OID_QOS_RESERVED7 0xfb010106 +#define OID_QOS_RESERVED8 0xfb010107 +#define OID_QOS_RESERVED9 0xfb010108 +#define OID_QOS_RESERVED10 0xfb010109 +#define OID_QOS_RESERVED11 0xfb01010a +#define OID_QOS_RESERVED12 0xfb01010b +#define OID_QOS_RESERVED13 0xfb01010c +#define OID_QOS_RESERVED14 0xfb01010d +#define OID_QOS_RESERVED15 0xfb01010e +#define OID_QOS_RESERVED16 0xfb01010f +#define OID_QOS_RESERVED17 0xfb010110 +#define OID_QOS_RESERVED18 0xfb010111 +#define OID_QOS_RESERVED19 0xfb010112 +#define OID_QOS_RESERVED20 0xfb010113 +#define OFFLOAD_MAX_SAS 3 +#define OFFLOAD_INBOUND_SA 0x0001 +#define OFFLOAD_OUTBOUND_SA 0x0002 + typedef struct NDIS_CO_DEVICE_PROFILE { + NDIS_VAR_DATA_DESC DeviceDescription; + NDIS_VAR_DATA_DESC DevSpecificInfo; + ULONG ulTAPISupplementaryPassThru; + ULONG ulAddressModes; + ULONG ulNumAddresses; + ULONG ulBearerModes; + ULONG ulMaxTxRate; + ULONG ulMinTxRate; + ULONG ulMaxRxRate; + ULONG ulMinRxRate; + ULONG ulMediaModes; + ULONG ulGenerateToneModes; + ULONG ulGenerateToneMaxNumFreq; + ULONG ulGenerateDigitModes; + ULONG ulMonitorToneMaxNumFreq; + ULONG ulMonitorToneMaxNumEntries; + ULONG ulMonitorDigitModes; + ULONG ulGatherDigitsMinTimeout; + ULONG ulGatherDigitsMaxTimeout; + ULONG ulDevCapFlags; + ULONG ulMaxNumActiveCalls; + ULONG ulAnswerMode; + ULONG ulUUIAcceptSize; + ULONG ulUUIAnswerSize; + ULONG ulUUIMakeCallSize; + ULONG ulUUIDropSize; + ULONG ulUUISendUserUserInfoSize; + ULONG ulUUICallInfoSize; + } NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE; + typedef ULONG SPI_TYPE; + typedef enum _OFFLOAD_OPERATION_E { + AUTHENTICATE = 1, + ENCRYPT + } OFFLOAD_OPERATION_E; + typedef struct _OFFLOAD_ALGO_INFO { + ULONG algoIdentifier; + ULONG algoKeylen; + ULONG algoRounds; + } OFFLOAD_ALGO_INFO, *POFFLOAD_ALGO_INFO; + typedef enum _OFFLOAD_CONF_ALGO { + OFFLOAD_IPSEC_CONF_NONE, + OFFLOAD_IPSEC_CONF_DES, + OFFLOAD_IPSEC_CONF_RESERVED, + OFFLOAD_IPSEC_CONF_3_DES, + OFFLOAD_IPSEC_CONF_MAX + } OFFLOAD_CONF_ALGO; + typedef enum _OFFLOAD_INTEGRITY_ALGO { + OFFLOAD_IPSEC_INTEGRITY_NONE, + OFFLOAD_IPSEC_INTEGRITY_MD5, + OFFLOAD_IPSEC_INTEGRITY_SHA, + OFFLOAD_IPSEC_INTEGRITY_MAX + } OFFLOAD_INTEGRITY_ALGO; + typedef struct _OFFLOAD_SECURITY_ASSOCIATION { + OFFLOAD_OPERATION_E Operation; + SPI_TYPE SPI; + OFFLOAD_ALGO_INFO IntegrityAlgo; + OFFLOAD_ALGO_INFO ConfAlgo; + OFFLOAD_ALGO_INFO Reserved; + } OFFLOAD_SECURITY_ASSOCIATION, *POFFLOAD_SECURITY_ASSOCIATION; + typedef struct _OFFLOAD_IPSEC_ADD_SA { + IPAddr SrcAddr; + IPMask SrcMask; + IPAddr DestAddr; + IPMask DestMask; + ULONG Protocol; + USHORT SrcPort; + USHORT DestPort; + IPAddr SrcTunnelAddr; + IPAddr DestTunnelAddr; + USHORT Flags; + SHORT NumSAs; + OFFLOAD_SECURITY_ASSOCIATION SecAssoc[3]; + HANDLE OffloadHandle; + ULONG KeyLen; + UCHAR KeyMat[1]; + } OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA; + typedef struct _OFFLOAD_IPSEC_DELETE_SA { + HANDLE OffloadHandle; + } OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA; + typedef enum _UDP_ENCAP_TYPE { + OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_IKE, + OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_OTHER + } UDP_ENCAP_TYPE, *PUDP_ENCAP_TYPE; + typedef struct _OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY { + UDP_ENCAP_TYPE UdpEncapType; + USHORT DstEncapPort; + } OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY, *POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY; + typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA { + IPAddr SrcAddr; + IPMask SrcMask; + IPAddr DstAddr; + IPMask DstMask; + ULONG Protocol; + USHORT SrcPort; + USHORT DstPort; + IPAddr SrcTunnelAddr; + IPAddr DstTunnelAddr; + USHORT Flags; + SHORT NumSAs; + OFFLOAD_SECURITY_ASSOCIATION SecAssoc[3]; + HANDLE OffloadHandle; + OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry; + HANDLE EncapTypeEntryOffldHandle; + ULONG KeyLen; + UCHAR KeyMat[1]; + } OFFLOAD_IPSEC_ADD_UDPESP_SA, *POFFLOAD_IPSEC_ADD_UDPESP_SA; + typedef struct _OFFLOAD_IPSEC_DELETE_UDPESP_SA { + HANDLE OffloadHandle; + HANDLE EncapTypeEntryOffldHandle; + } OFFLOAD_IPSEC_DELETE_UDPESP_SA, *POFFLOAD_IPSEC_DELETE_UDPESP_SA; + typedef ULONG NDIS_VLAN_ID; + typedef enum _NDIS_MEDIUM { + NdisMedium802_3, + NdisMedium802_5, + NdisMediumFddi, + NdisMediumWan, + NdisMediumLocalTalk, + NdisMediumDix, + NdisMediumArcnetRaw, + NdisMediumArcnet878_2, + NdisMediumAtm, + NdisMediumWirelessWan, + NdisMediumIrda, + NdisMediumBpc, + NdisMediumCoWan, + NdisMedium1394, + NdisMediumInfiniBand, + NdisMediumTunnel, + NdisMediumNative802_11, + NdisMediumLoopback, + NdisMediumMax + } NDIS_MEDIUM, *PNDIS_MEDIUM; + typedef enum _NDIS_PHYSICAL_MEDIUM { + NdisPhysicalMediumUnspecified, + NdisPhysicalMediumWirelessLan, + NdisPhysicalMediumCableModem, + NdisPhysicalMediumPhoneLine, + NdisPhysicalMediumPowerLine, + NdisPhysicalMediumDSL, + NdisPhysicalMediumFibreChannel, + NdisPhysicalMedium1394, + NdisPhysicalMediumWirelessWan, + NdisPhysicalMediumNative802_11, + NdisPhysicalMediumBluetooth, + NdisPhysicalMediumInfiniband, + NdisPhysicalMediumWiMax, + NdisPhysicalMediumUWB, + NdisPhysicalMedium802_3, + NdisPhysicalMedium802_5, + NdisPhysicalMediumIrda, + NdisPhysicalMediumWiredWAN, + NdisPhysicalMediumWiredCoWan, + NdisPhysicalMediumOther, + NdisPhysicalMediumMax + } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM; + typedef struct _TRANSPORT_HEADER_OFFSET { + USHORT ProtocolType; + USHORT HeaderOffset; + } TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET; + typedef struct _NETWORK_ADDRESS { + USHORT AddressLength; + USHORT AddressType; + UCHAR Address[1]; + } NETWORK_ADDRESS, *PNETWORK_ADDRESS; + typedef struct _NETWORK_ADDRESS_LIST { + LONG AddressCount; + USHORT AddressType; + NETWORK_ADDRESS Address[1]; + } NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST; + typedef struct _NETWORK_ADDRESS_IP { + USHORT sin_port; + ULONG in_addr; + UCHAR sin_zero[8]; + } NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP; +#define NDIS_PROTOCOL_ID_DEFAULT 0x00 +#define NDIS_PROTOCOL_ID_TCP_IP 0x02 +#define NDIS_PROTOCOL_ID_IPX 0x06 +#define NDIS_PROTOCOL_ID_NBF 0x07 +#define NDIS_PROTOCOL_ID_MAX 0x0f +#define NDIS_PROTOCOL_ID_MASK 0x0f +#define READABLE_LOCAL_CLOCK 0x00000001 +#define CLOCK_NETWORK_DERIVED 0x00000002 +#define CLOCK_PRECISION 0x00000004 +#define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008 +#define TIMED_SEND_CAPABLE 0x00000010 +#define TIME_STAMP_CAPABLE 0x00000020 +#define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001 +#define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002 +#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004 +#define WAN_PROTOCOL_KEEPS_STATS 0x00000001 +#define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP) +#define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX) + typedef struct _NETWORK_ADDRESS_IPX { + ULONG NetworkAddress; + UCHAR NodeAddress[6]; + USHORT Socket; + } NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX; + typedef enum _NDIS_HARDWARE_STATUS { + NdisHardwareStatusReady, + NdisHardwareStatusInitializing, + NdisHardwareStatusReset, + NdisHardwareStatusClosing, + NdisHardwareStatusNotReady + } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS; + typedef struct _GEN_GET_TIME_CAPS { + ULONG Flags; + ULONG ClockPrecision; + } GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS; + typedef struct _GEN_GET_NETCARD_TIME { + ULONGLONG ReadTime; + } GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME; + typedef struct _NDIS_PM_PACKET_PATTERN { + ULONG Priority; + ULONG Reserved; + ULONG MaskSize; + ULONG PatternOffset; + ULONG PatternSize; + ULONG PatternFlags; + } NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN; + typedef enum _NDIS_DEVICE_POWER_STATE { + NdisDeviceStateUnspecified = 0, + NdisDeviceStateD0, + NdisDeviceStateD1, + NdisDeviceStateD2, + NdisDeviceStateD3, + NdisDeviceStateMaximum + } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE; + typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES { + NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp; + NDIS_DEVICE_POWER_STATE MinPatternWakeUp; + NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp; + } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES; + typedef struct _NDIS_PNP_CAPABILITIES { + ULONG Flags; + NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities; + } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES; + typedef enum _NDIS_FDDI_ATTACHMENT_TYPE { + NdisFddiTypeIsolated = 1, + NdisFddiTypeLocalA, + NdisFddiTypeLocalB, + NdisFddiTypeLocalAB, + NdisFddiTypeLocalS, + NdisFddiTypeWrapA, + NdisFddiTypeWrapB, + NdisFddiTypeWrapAB, + NdisFddiTypeWrapS, + NdisFddiTypeCWrapA, + NdisFddiTypeCWrapB, + NdisFddiTypeCWrapS, + NdisFddiTypeThrough + } NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE; + typedef enum _NDIS_FDDI_RING_MGT_STATE { + NdisFddiRingIsolated = 1, + NdisFddiRingNonOperational, + NdisFddiRingOperational, + NdisFddiRingDetect, + NdisFddiRingNonOperationalDup, + NdisFddiRingOperationalDup, + NdisFddiRingDirected, + NdisFddiRingTrace + } NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE; + typedef enum _NDIS_FDDI_LCONNECTION_STATE { + NdisFddiStateOff = 1, + NdisFddiStateBreak, + NdisFddiStateTrace, + NdisFddiStateConnect, + NdisFddiStateNext, + NdisFddiStateSignal, + NdisFddiStateJoin, + NdisFddiStateVerify, + NdisFddiStateActive, + NdisFddiStateMaintenance + } NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE; + typedef enum _NDIS_WAN_MEDIUM_SUBTYPE { + NdisWanMediumHub, + NdisWanMediumX_25, + NdisWanMediumIsdn, + NdisWanMediumSerial, + NdisWanMediumFrameRelay, + NdisWanMediumAtm, + NdisWanMediumSonet, + NdisWanMediumSW56K, + NdisWanMediumPPTP, + NdisWanMediumL2TP, + NdisWanMediumIrda, + NdisWanMediumParallel, + NdisWanMediumPppoe, + NdisWanMediumSSTP, + NdisWanMediumAgileVPN, + } NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE; + typedef enum _NDIS_WAN_HEADER_FORMAT { + NdisWanHeaderNative, + NdisWanHeaderEthernet + } NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT; + typedef enum _NDIS_WAN_QUALITY { + NdisWanRaw, + NdisWanErrorControl, + NdisWanReliable + } NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY; + typedef struct _NDIS_WAN_PROTOCOL_CAPS { + ULONG Flags; + ULONG Reserved; + } NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS; + typedef enum _NDIS_802_5_RING_STATE { + NdisRingStateOpened = 1, + NdisRingStateClosed, + NdisRingStateOpening, + NdisRingStateClosing, + NdisRingStateOpenFailure, + NdisRingStateRingFailure + } NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE; + typedef enum _NDIS_MEDIA_STATE { + NdisMediaStateConnected, + NdisMediaStateDisconnected + } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE; + typedef ULONG Priority_802_3; + typedef struct _NDIS_CO_LINK_SPEED { + ULONG Outbound; + ULONG Inbound; + } NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED; +#define NDIS_LINK_SPEED_UNKNOWN NET_IF_LINK_SPEED_UNKNOWN + typedef struct _NDIS_LINK_SPEED { + ULONG64 XmitLinkSpeed; + ULONG64 RcvLinkSpeed; + } NDIS_LINK_SPEED, *PNDIS_LINK_SPEED; + typedef int NDIS_STATUS, *PNDIS_STATUS; +#define __WINDOT11_H__ +#define _INC_WLANTYPES +#define DOT11_SSID_MAX_LENGTH 32 +#define DOT11_AUTH_ALGORITHM_OPEN_SYSTEM DOT11_AUTH_ALGO_80211_OPEN +#define DOT11_AUTH_ALGORITHM_SHARED_KEY DOT11_AUTH_ALGO_80211_SHARED_KEY +#define DOT11_AUTH_ALGORITHM_WPA DOT11_AUTH_ALGO_WPA +#define DOT11_AUTH_ALGORITHM_WPA_PSK DOT11_AUTH_ALGO_WPA_PSK +#define DOT11_AUTH_ALGORITHM_WPA_NONE DOT11_AUTH_ALGO_WPA_NONE +#define DOT11_AUTH_ALGORITHM_RSNA DOT11_AUTH_ALGO_RSNA +#define DOT11_AUTH_ALGORITHM_RSNA_PSK DOT11_AUTH_ALGO_RSNA_PSK +#define DOT11_AUTH_ALGORITHM_WPA3 DOT11_AUTH_ALGO_WPA3 +#define DOT11_AUTH_ALGORITHM_WPA3_SAE DOT11_AUTH_ALGO_WPA3_SAE +typedef enum _DOT11_AUTH_ALGORITHM { + DOT11_AUTH_ALGO_80211_OPEN = 1, + DOT11_AUTH_ALGO_80211_SHARED_KEY = 2, + DOT11_AUTH_ALGO_WPA = 3, + DOT11_AUTH_ALGO_WPA_PSK = 4, + DOT11_AUTH_ALGO_WPA_NONE = 5, + DOT11_AUTH_ALGO_RSNA = 6, + DOT11_AUTH_ALGO_RSNA_PSK = 7, + DOT11_AUTH_ALGO_WPA3 = 8 + , DOT11_AUTH_ALGO_WPA3_SAE = 9 + , DOT11_AUTH_ALGO_IHV_START = 0x80000000 + , DOT11_AUTH_ALGO_IHV_END = 0xffffffff +} DOT11_AUTH_ALGORITHM; +typedef DOT11_AUTH_ALGORITHM *PDOT11_AUTH_ALGORITHM; +typedef enum _DOT11_CIPHER_ALGORITHM { + DOT11_CIPHER_ALGO_NONE = 0x00, + DOT11_CIPHER_ALGO_WEP40 = 0x01, + DOT11_CIPHER_ALGO_TKIP = 0x02, + DOT11_CIPHER_ALGO_CCMP = 0x04, + DOT11_CIPHER_ALGO_WEP104 = 0x05, + DOT11_CIPHER_ALGO_BIP = 0x06, + DOT11_CIPHER_ALGO_GCMP = 0x08, + DOT11_CIPHER_ALGO_GCMP_256 = 0x09, + DOT11_CIPHER_ALGO_CCMP_256 = 0x0a, + DOT11_CIPHER_ALGO_BIP_GMAC_128 = 0x0b, + DOT11_CIPHER_ALGO_BIP_GMAC_256 = 0x0c, + DOT11_CIPHER_ALGO_BIP_CMAC_256 = 0x0d, + DOT11_CIPHER_ALGO_WPA_USE_GROUP = 0x100, + DOT11_CIPHER_ALGO_RSN_USE_GROUP = 0x100, + DOT11_CIPHER_ALGO_WEP = 0x101, + DOT11_CIPHER_ALGO_IHV_START = 0x80000000, + DOT11_CIPHER_ALGO_IHV_END = 0xffffffff +} DOT11_CIPHER_ALGORITHM; +typedef DOT11_CIPHER_ALGORITHM *PDOT11_CIPHER_ALGORITHM; +typedef enum _DOT11_BSS_TYPE { + dot11_BSS_type_infrastructure = 1, + dot11_BSS_type_independent = 2, + dot11_BSS_type_any = 3 +} DOT11_BSS_TYPE, *PDOT11_BSS_TYPE; +typedef struct _DOT11_AUTH_CIPHER_PAIR { + DOT11_AUTH_ALGORITHM AuthAlgoId; + DOT11_CIPHER_ALGORITHM CipherAlgoId; +} DOT11_AUTH_CIPHER_PAIR, *PDOT11_AUTH_CIPHER_PAIR; +#define DOT11_OI_MAX_LENGTH 5 +#define DOT11_OI_MIN_LENGTH 3 +typedef struct _DOT11_OI { + USHORT OILength; + UCHAR OI[5]; +} DOT11_OI, *PDOT11_OI; +typedef struct DOT11_ACCESSNETWORKOPTIONS { + UINT8 AccessNetworkType; + UINT8 Internet; + UINT8 ASRA; + UINT8 ESR; + UINT8 UESA; +} DOT11_ACCESSNETWORKOPTIONS, *PDOT11_ACCESSNETWORKOPTIONS; +typedef struct _DOT11_SSID { + ULONG uSSIDLength; + UCHAR ucSSID[32]; +} DOT11_SSID, *PDOT11_SSID; +typedef struct DOT11_VENUEINFO { + UINT8 VenueGroup; + UINT8 VenueType; +} DOT11_VENUEINFO, *PDOT11_VENUEINFO; +#define DOT11_RATE_SET_MAX_LENGTH 126 +#define DOT11_BSSID_LIST_REVISION_1 1 +#define DOT11_HESSID_LENGTH 6 +typedef UCHAR DOT11_MAC_ADDRESS[6]; +typedef DOT11_MAC_ADDRESS *PDOT11_MAC_ADDRESS; +typedef struct DOT11_BSSID_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_MAC_ADDRESS BSSIDs[1]; +} DOT11_BSSID_LIST, *PDOT11_BSSID_LIST; +typedef UCHAR DOT11_HESSID[6]; +typedef DOT11_HESSID *PDOT11_HESSID; +typedef +enum _DOT11_PHY_TYPE { + dot11_phy_type_unknown = 0, + dot11_phy_type_any = dot11_phy_type_unknown, + dot11_phy_type_fhss = 1, + dot11_phy_type_dsss = 2, + dot11_phy_type_irbaseband = 3, + dot11_phy_type_ofdm = 4, + dot11_phy_type_hrdsss = 5, + dot11_phy_type_erp = 6, + dot11_phy_type_ht = 7, + dot11_phy_type_vht = 8, + dot11_phy_type_dmg = 9, + dot11_phy_type_he = 10, + dot11_phy_type_eht = 11, + dot11_phy_type_IHV_start = 0x80000000, + dot11_phy_type_IHV_end = 0xffffffff +} DOT11_PHY_TYPE, *PDOT11_PHY_TYPE; +typedef struct _DOT11_RATE_SET { + ULONG uRateSetLength; + UCHAR ucRateSet[126]; +} DOT11_RATE_SET, *PDOT11_RATE_SET; +typedef UCHAR DOT11_COUNTRY_OR_REGION_STRING[3]; +typedef DOT11_COUNTRY_OR_REGION_STRING *PDOT11_COUNTRY_OR_REGION_STRING; +typedef UCHAR DOT11_DIALOG_TOKEN; +typedef UCHAR DOT11_WFD_STATUS_CODE; +typedef UCHAR DOT11_WFD_MINOR_REASON_CODE; +typedef UCHAR DOT11_WFD_SERVICE_HASH[6]; +#define DOT11_WFD_SERVICE_NAME_MAX_LENGTH 255 +#define DOT11_WFD_APS2_SERVICE_TYPE_MAX_LENGTH 21 +#define DOT11_WFD_ASP2_INSTANCE_NAME_MAX_LENGTH 63 +#define DOT11_WFD_SERVICE_INFORMATION_MAX_LENGTH 65535 +#define DOT11_MAX_REQUESTED_SERVICE_INFORMATION_LENGTH 255 +#define DOT11_WFD_SESSION_INFO_MAX_LENGTH 144 +typedef struct _DOT11_WFD_SESSION_INFO { + USHORT uSessionInfoLength; + UCHAR ucSessionInfo[144]; +} DOT11_WFD_SESSION_INFO, *PDOT11_WFD_SESSION_INFO; +#define NDIS_PACKET_TYPE_MEDIA_SPECIFIC_MASK (0x0fff0000U) +#define NDIS_PACKET_TYPE_802_11_DIRECTED_DATA NDIS_PACKET_TYPE_DIRECTED +#define NDIS_PACKET_TYPE_802_11_BROADCAST_DATA NDIS_PACKET_TYPE_BROADCAST +#define NDIS_PACKET_TYPE_802_11_MULTICAST_DATA NDIS_PACKET_TYPE_MULTICAST +#define NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_DATA NDIS_PACKET_TYPE_ALL_MULTICAST +#define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_DATA NDIS_PACKET_TYPE_PROMISCUOUS +#define NDIS_PACKET_TYPE_802_11_RAW_DATA (0x00010000U) +#define NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT (0x00020000U) +#define NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT (0x00040000U) +#define NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT (0x00080000U) +#define NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT (0x00100000U) +#define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT (0x00200000U) +#define NDIS_PACKET_TYPE_802_11_RAW_MGMT (0x00400000U) +#define NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL (0x00800000U) +#define NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL (0x01000000U) +#define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL (0x02000000U) +#define NDIS_PACKET_TYPE_ALL_802_11_FILTERS (NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_MULTICAST | NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_BROADCAST | NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_802_11_RAW_DATA | NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT | NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT | NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT | NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT | NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT | NDIS_PACKET_TYPE_802_11_RAW_MGMT | NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL | NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL | NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL) +#define DOT11_MAX_PDU_SIZE 2346 +#define DOT11_MIN_PDU_SIZE (256) +#define DOT11_MAX_NUM_DEFAULT_KEY 4 +#define OID_DOT11_NDIS_START 0x0d010300 +#define NWF_MANDATORY_OID (0x01U) +#define NWF_OPTIONAL_OID (0x02U) +#define NWF_OPERATIONAL_OID (0x01U) +#define NWF_STATISTICS_OID (0x02U) +#define NWF_DEFINE_OID(Seq,o,m) ((0x0e000000U) | ((o) << 16) | ((m) << 8) | (Seq)) +#define OID_DOT11_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 0) +#define DOT11_HW_WEP_SUPPORTED_TX 0x00000001 +#define DOT11_HW_WEP_SUPPORTED_RX 0x00000002 +#define DOT11_HW_FRAGMENTATION_SUPPORTED 0x00000004 +#define DOT11_HW_DEFRAGMENTATION_SUPPORTED 0x00000008 +#define DOT11_HW_MSDU_AUTH_SUPPORTED_TX 0x00000010 +#define DOT11_HW_MSDU_AUTH_SUPPORTED_RX 0x00000020 +#define DOT11_CONF_ALGO_WEP_RC4 0x00000001 +#define DOT11_CONF_ALGO_TKIP 0x00000002 +#define DOT11_AUTH_ALGO_MICHAEL 0x00000001 +#define DOT11_OPERATION_MODE_UNKNOWN 0x00000000 +#define DOT11_OPERATION_MODE_STATION 0x00000001 +#define DOT11_OPERATION_MODE_AP 0x00000002 +#define DOT11_OPERATION_MODE_EXTENSIBLE_STATION 0x00000004 +#define DOT11_OPERATION_MODE_EXTENSIBLE_AP 0x00000008 +#define DOT11_OPERATION_MODE_WFD_DEVICE 0x00000010 +#define DOT11_OPERATION_MODE_WFD_GROUP_OWNER 0x00000020 +#define DOT11_OPERATION_MODE_WFD_CLIENT 0x00000040 +#define DOT11_OPERATION_MODE_MANUFACTURING 0x40000000 +#define DOT11_OPERATION_MODE_NETWORK_MONITOR 0x80000000 +#define DOT11_PACKET_TYPE_DIRECTED_CTRL 0x00000001 +#define DOT11_PACKET_TYPE_DIRECTED_MGMT 0x00000002 +#define DOT11_PACKET_TYPE_DIRECTED_DATA 0x00000004 +#define DOT11_PACKET_TYPE_MULTICAST_CTRL 0x00000008 +#define DOT11_PACKET_TYPE_MULTICAST_MGMT 0x00000010 +#define DOT11_PACKET_TYPE_MULTICAST_DATA 0x00000020 +#define DOT11_PACKET_TYPE_BROADCAST_CTRL 0x00000040 +#define DOT11_PACKET_TYPE_BROADCAST_MGMT 0x00000080 +#define DOT11_PACKET_TYPE_BROADCAST_DATA 0x00000100 +#define DOT11_PACKET_TYPE_PROMISCUOUS_CTRL 0x00000200 +#define DOT11_PACKET_TYPE_PROMISCUOUS_MGMT 0x00000400 +#define DOT11_PACKET_TYPE_PROMISCUOUS_DATA 0x00000800 +#define DOT11_PACKET_TYPE_ALL_MULTICAST_CTRL 0x00001000 +#define DOT11_PACKET_TYPE_ALL_MULTICAST_MGMT 0x00002000 +#define DOT11_PACKET_TYPE_ALL_MULTICAST_DATA 0x00004000 +#define DOT11_PACKET_TYPE_RESERVED (~ (DOT11_PACKET_TYPE_DIRECTED_CTRL | DOT11_PACKET_TYPE_DIRECTED_MGMT | DOT11_PACKET_TYPE_DIRECTED_DATA | DOT11_PACKET_TYPE_MULTICAST_CTRL | DOT11_PACKET_TYPE_MULTICAST_MGMT | DOT11_PACKET_TYPE_MULTICAST_DATA | DOT11_PACKET_TYPE_BROADCAST_CTRL | DOT11_PACKET_TYPE_BROADCAST_MGMT | DOT11_PACKET_TYPE_BROADCAST_DATA | DOT11_PACKET_TYPE_PROMISCUOUS_CTRL | DOT11_PACKET_TYPE_PROMISCUOUS_MGMT | DOT11_PACKET_TYPE_PROMISCUOUS_DATA | DOT11_PACKET_TYPE_ALL_MULTICAST_CTRL | DOT11_PACKET_TYPE_ALL_MULTICAST_MGMT | DOT11_PACKET_TYPE_ALL_MULTICAST_DATA | 0)) +#define OID_DOT11_CURRENT_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 1) +#define OID_DOT11_WEP_OFFLOAD (OID_DOT11_NDIS_START + 2) +#define OID_DOT11_WEP_UPLOAD (OID_DOT11_NDIS_START + 3) +#define OID_DOT11_DEFAULT_WEP_OFFLOAD (OID_DOT11_NDIS_START + 4) +#define OID_DOT11_DEFAULT_WEP_UPLOAD (OID_DOT11_NDIS_START + 5) +#define OID_DOT11_MPDU_MAX_LENGTH (OID_DOT11_NDIS_START + 6) +#define OID_DOT11_OPERATION_MODE_CAPABILITY (OID_DOT11_NDIS_START + 7) +#define OID_DOT11_CURRENT_OPERATION_MODE (OID_DOT11_NDIS_START + 8) +#define OID_DOT11_CURRENT_PACKET_FILTER (OID_DOT11_NDIS_START + 9) +typedef struct _DOT11_OFFLOAD_CAPABILITY { + ULONG uReserved; + ULONG uFlags; + ULONG uSupportedWEPAlgorithms; + ULONG uNumOfReplayWindows; + ULONG uMaxWEPKeyMappingLength; + ULONG uSupportedAuthAlgorithms; + ULONG uMaxAuthKeyMappingLength; +} DOT11_OFFLOAD_CAPABILITY, *PDOT11_OFFLOAD_CAPABILITY; +typedef struct _DOT11_CURRENT_OFFLOAD_CAPABILITY { + ULONG uReserved; + ULONG uFlags; +} DOT11_CURRENT_OFFLOAD_CAPABILITY, *PDOT11_CURRENT_OFFLOAD_CAPABILITY; +typedef enum _DOT11_OFFLOAD_TYPE { + dot11_offload_type_wep = 1, + dot11_offload_type_auth = 2 +} DOT11_OFFLOAD_TYPE, *PDOT11_OFFLOAD_TYPE; +typedef struct _DOT11_IV48_COUNTER { + ULONG uIV32Counter; + USHORT usIV16Counter; +} DOT11_IV48_COUNTER, *PDOT11_IV48_COUNTER; +typedef struct _DOT11_WEP_OFFLOAD { + ULONG uReserved; + HANDLE hOffloadContext; + HANDLE hOffload; + DOT11_OFFLOAD_TYPE dot11OffloadType; + ULONG dwAlgorithm; + BOOLEAN bRowIsOutbound; + BOOLEAN bUseDefault; + ULONG uFlags; + UCHAR ucMacAddress[6]; + ULONG uNumOfRWsOnPeer; + ULONG uNumOfRWsOnMe; + DOT11_IV48_COUNTER dot11IV48Counters[16]; + USHORT usDot11RWBitMaps[16]; + USHORT usKeyLength; + UCHAR ucKey[1]; +} DOT11_WEP_OFFLOAD, *PDOT11_WEP_OFFLOAD; +typedef struct _DOT11_WEP_UPLOAD { + ULONG uReserved; + DOT11_OFFLOAD_TYPE dot11OffloadType; + HANDLE hOffload; + ULONG uNumOfRWsUsed; + DOT11_IV48_COUNTER dot11IV48Counters[16]; + USHORT usDot11RWBitMaps[16]; +} DOT11_WEP_UPLOAD, *PDOT11_WEP_UPLOAD; +typedef enum _DOT11_KEY_DIRECTION { + dot11_key_direction_both = 1, + dot11_key_direction_inbound = 2, + dot11_key_direction_outbound = 3 +} DOT11_KEY_DIRECTION, *PDOT11_KEY_DIRECTION; +typedef struct _DOT11_DEFAULT_WEP_OFFLOAD { + ULONG uReserved; + HANDLE hOffloadContext; + HANDLE hOffload; + ULONG dwIndex; + DOT11_OFFLOAD_TYPE dot11OffloadType; + ULONG dwAlgorithm; + ULONG uFlags; + DOT11_KEY_DIRECTION dot11KeyDirection; + UCHAR ucMacAddress[6]; + ULONG uNumOfRWsOnMe; + DOT11_IV48_COUNTER dot11IV48Counters[16]; + USHORT usDot11RWBitMaps[16]; + USHORT usKeyLength; + UCHAR ucKey[1]; +} DOT11_DEFAULT_WEP_OFFLOAD, *PDOT11_DEFAULT_WEP_OFFLOAD; +typedef struct _DOT11_DEFAULT_WEP_UPLOAD { + ULONG uReserved; + DOT11_OFFLOAD_TYPE dot11OffloadType; + HANDLE hOffload; + ULONG uNumOfRWsUsed; + DOT11_IV48_COUNTER dot11IV48Counters[16]; + USHORT usDot11RWBitMaps[16]; +} DOT11_DEFAULT_WEP_UPLOAD, *PDOT11_DEFAULT_WEP_UPLOAD; +typedef struct _DOT11_OPERATION_MODE_CAPABILITY { + ULONG uReserved; + ULONG uMajorVersion; + ULONG uMinorVersion; + ULONG uNumOfTXBuffers; + ULONG uNumOfRXBuffers; + ULONG uOpModeCapability; +} DOT11_OPERATION_MODE_CAPABILITY, *PDOT11_OPERATION_MODE_CAPABILITY; +typedef struct _DOT11_CURRENT_OPERATION_MODE { + ULONG uReserved; + ULONG uCurrentOpMode; +} DOT11_CURRENT_OPERATION_MODE, *PDOT11_CURRENT_OPERATION_MODE; +typedef enum _DOT11_SCAN_TYPE { + dot11_scan_type_active = 1, + dot11_scan_type_passive = 2, + dot11_scan_type_auto = 3, + dot11_scan_type_forced = 0x80000000 +} DOT11_SCAN_TYPE, *PDOT11_SCAN_TYPE; +typedef struct _DOT11_SCAN_REQUEST { + DOT11_BSS_TYPE dot11BSSType; + DOT11_MAC_ADDRESS dot11BSSID; + DOT11_SSID dot11SSID; + DOT11_SCAN_TYPE dot11ScanType; + BOOLEAN bRestrictedScan; + BOOLEAN bUseRequestIE; + ULONG uRequestIDsOffset; + ULONG uNumOfRequestIDs; + ULONG uPhyTypesOffset; + ULONG uNumOfPhyTypes; + ULONG uIEsOffset; + ULONG uIEsLength; + UCHAR ucBuffer[1]; +} DOT11_SCAN_REQUEST, *PDOT11_SCAN_REQUEST; +typedef enum _CH_DESCRIPTION_TYPE { + ch_description_type_logical = 1, + ch_description_type_center_frequency = 2, + ch_description_type_phy_specific +} CH_DESCRIPTION_TYPE, *PCH_DESCRIPTION_TYPE; +typedef struct _DOT11_PHY_TYPE_INFO { + DOT11_PHY_TYPE dot11PhyType; + BOOLEAN bUseParameters; + ULONG uProbeDelay; + ULONG uMinChannelTime; + ULONG uMaxChannelTime; + CH_DESCRIPTION_TYPE ChDescriptionType; + ULONG uChannelListSize; + UCHAR ucChannelListBuffer[1]; +} DOT11_PHY_TYPE_INFO, *PDOT11_PHY_TYPE_INFO; +typedef struct _DOT11_SCAN_REQUEST_V2 { + DOT11_BSS_TYPE dot11BSSType; + DOT11_MAC_ADDRESS dot11BSSID; + DOT11_SCAN_TYPE dot11ScanType; + BOOLEAN bRestrictedScan; + ULONG udot11SSIDsOffset; + ULONG uNumOfdot11SSIDs; + BOOLEAN bUseRequestIE; + ULONG uRequestIDsOffset; + ULONG uNumOfRequestIDs; + ULONG uPhyTypeInfosOffset; + ULONG uNumOfPhyTypeInfos; + ULONG uIEsOffset; + ULONG uIEsLength; + UCHAR ucBuffer[1]; +} DOT11_SCAN_REQUEST_V2, *PDOT11_SCAN_REQUEST_V2; +typedef struct DOT11_PHY_TYPE_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_PHY_TYPE dot11PhyType[1]; +} DOT11_PHY_TYPE_LIST, *PDOT11_PHY_TYPE_LIST; +#define DOT11_PHY_TYPE_LIST_REVISION_1 1 +#define DOT11_CAPABILITY_INFO_ESS 0x0001 +#define DOT11_CAPABILITY_INFO_IBSS 0x0002 +#define DOT11_CAPABILITY_INFO_CF_POLLABLE 0x0004 +#define DOT11_CAPABILITY_INFO_CF_POLL_REQ 0x0008 +#define DOT11_CAPABILITY_INFO_PRIVACY 0x0010 +#define DOT11_CAPABILITY_SHORT_PREAMBLE 0x0020 +#define DOT11_CAPABILITY_PBCC 0x0040 +#define DOT11_CAPABILITY_CHANNEL_AGILITY 0x0080 +#define DOT11_CAPABILITY_SHORT_SLOT_TIME 0x0400 +#define DOT11_CAPABILITY_DSSSOFDM 0x2000 +#define OID_DOT11_ATIM_WINDOW (OID_DOT11_NDIS_START + 10) +#define OID_DOT11_SCAN_REQUEST (OID_DOT11_NDIS_START + 11) +#define OID_DOT11_CURRENT_PHY_TYPE (OID_DOT11_NDIS_START + 12) +#define OID_DOT11_JOIN_REQUEST (OID_DOT11_NDIS_START + 13) +#define OID_DOT11_START_REQUEST (OID_DOT11_NDIS_START + 14) +#define OID_DOT11_UPDATE_IE (OID_DOT11_NDIS_START + 15) +#define OID_DOT11_RESET_REQUEST (OID_DOT11_NDIS_START + 16) +typedef struct _DOT11_BSS_DESCRIPTION { + ULONG uReserved; + DOT11_MAC_ADDRESS dot11BSSID; + DOT11_BSS_TYPE dot11BSSType; + USHORT usBeaconPeriod; + ULONGLONG ullTimestamp; + USHORT usCapabilityInformation; + ULONG uBufferLength; + UCHAR ucBuffer[1]; +} DOT11_BSS_DESCRIPTION, *PDOT11_BSS_DESCRIPTION; +typedef struct _DOT11_JOIN_REQUEST { + ULONG uJoinFailureTimeout; + DOT11_RATE_SET OperationalRateSet; + ULONG uChCenterFrequency; + DOT11_BSS_DESCRIPTION dot11BSSDescription; +} DOT11_JOIN_REQUEST, *PDOT11_JOIN_REQUEST; +typedef struct _DOT11_START_REQUEST { + ULONG uStartFailureTimeout; + DOT11_RATE_SET OperationalRateSet; + ULONG uChCenterFrequency; + DOT11_BSS_DESCRIPTION dot11BSSDescription; +} DOT11_START_REQUEST, *PDOT11_START_REQUEST; +typedef enum _DOT11_UPDATE_IE_OP { + dot11_update_ie_op_create_replace = 1, + dot11_update_ie_op_delete = 2 +} DOT11_UPDATE_IE_OP, *PDOT11_UPDATE_IE_OP; +typedef struct _DOT11_UPDATE_IE { + DOT11_UPDATE_IE_OP dot11UpdateIEOp; + ULONG uBufferLength; + UCHAR ucBuffer[1]; +} DOT11_UPDATE_IE, *PDOT11_UPDATE_IE; +typedef enum _DOT11_RESET_TYPE { + dot11_reset_type_phy = 1, + dot11_reset_type_mac = 2, + dot11_reset_type_phy_and_mac = 3 +} DOT11_RESET_TYPE, *PDOT11_RESET_TYPE; +typedef struct _DOT11_RESET_REQUEST { + DOT11_RESET_TYPE dot11ResetType; + DOT11_MAC_ADDRESS dot11MacAddress; + BOOLEAN bSetDefaultMIB; +} DOT11_RESET_REQUEST, *PDOT11_RESET_REQUEST; +typedef struct _DOT11_OPTIONAL_CAPABILITY { + ULONG uReserved; + BOOLEAN bDot11PCF; + BOOLEAN bDot11PCFMPDUTransferToPC; + BOOLEAN bStrictlyOrderedServiceClass; +} DOT11_OPTIONAL_CAPABILITY, *PDOT11_OPTIONAL_CAPABILITY; +#define OID_DOT11_NIC_POWER_STATE (OID_DOT11_NDIS_START + 17) +#define OID_DOT11_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 18) +#define OID_DOT11_CURRENT_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 19) +#define OID_DOT11_STATION_ID (OID_DOT11_NDIS_START + 20) +#define OID_DOT11_MEDIUM_OCCUPANCY_LIMIT (OID_DOT11_NDIS_START + 21) +#define OID_DOT11_CF_POLLABLE (OID_DOT11_NDIS_START + 22) +#define OID_DOT11_CFP_PERIOD (OID_DOT11_NDIS_START + 23) +#define OID_DOT11_CFP_MAX_DURATION (OID_DOT11_NDIS_START + 24) +#define OID_DOT11_POWER_MGMT_MODE (OID_DOT11_NDIS_START + 25) +#define OID_DOT11_OPERATIONAL_RATE_SET (OID_DOT11_NDIS_START + 26) +#define OID_DOT11_BEACON_PERIOD (OID_DOT11_NDIS_START + 27) +#define OID_DOT11_DTIM_PERIOD (OID_DOT11_NDIS_START + 28) +#define OID_DOT11_WEP_ICV_ERROR_COUNT (OID_DOT11_NDIS_START + 29) +#define OID_DOT11_MAC_ADDRESS (OID_DOT11_NDIS_START + 30) +#define OID_DOT11_RTS_THRESHOLD (OID_DOT11_NDIS_START + 31) +#define OID_DOT11_SHORT_RETRY_LIMIT (OID_DOT11_NDIS_START + 32) +#define OID_DOT11_LONG_RETRY_LIMIT (OID_DOT11_NDIS_START + 33) +#define OID_DOT11_FRAGMENTATION_THRESHOLD (OID_DOT11_NDIS_START + 34) +#define OID_DOT11_MAX_TRANSMIT_MSDU_LIFETIME (OID_DOT11_NDIS_START + 35) +#define OID_DOT11_MAX_RECEIVE_LIFETIME (OID_DOT11_NDIS_START + 36) +#define OID_DOT11_COUNTERS_ENTRY (OID_DOT11_NDIS_START + 37) +typedef struct _DOT11_CURRENT_OPTIONAL_CAPABILITY { + ULONG uReserved; + BOOLEAN bDot11CFPollable; + BOOLEAN bDot11PCF; + BOOLEAN bDot11PCFMPDUTransferToPC; + BOOLEAN bStrictlyOrderedServiceClass; +} DOT11_CURRENT_OPTIONAL_CAPABILITY, *PDOT11_CURRENT_OPTIONAL_CAPABILITY; +typedef enum _DOT11_POWER_MODE { + dot11_power_mode_unknown = 0, + dot11_power_mode_active = 1, + dot11_power_mode_powersave = 2 +} DOT11_POWER_MODE, *PDOT11_POWER_MODE; +#define DOT11_POWER_SAVE_LEVEL_MAX_PSP 1 +#define DOT11_POWER_SAVE_LEVEL_FAST_PSP 2 +typedef struct _DOT11_POWER_MGMT_MODE { + DOT11_POWER_MODE dot11PowerMode; + ULONG uPowerSaveLevel; + USHORT usListenInterval; + USHORT usAID; + BOOLEAN bReceiveDTIMs; +} DOT11_POWER_MGMT_MODE, *PDOT11_POWER_MGMT_MODE; +typedef struct _DOT11_COUNTERS_ENTRY { + ULONG uTransmittedFragmentCount; + ULONG uMulticastTransmittedFrameCount; + ULONG uFailedCount; + ULONG uRetryCount; + ULONG uMultipleRetryCount; + ULONG uFrameDuplicateCount; + ULONG uRTSSuccessCount; + ULONG uRTSFailureCount; + ULONG uACKFailureCount; + ULONG uReceivedFragmentCount; + ULONG uMulticastReceivedFrameCount; + ULONG uFCSErrorCount; + ULONG uTransmittedFrameCount; +} DOT11_COUNTERS_ENTRY, *PDOT11_COUNTERS_ENTRY; +#define OID_DOT11_SUPPORTED_PHY_TYPES (OID_DOT11_NDIS_START + 38) +typedef struct _DOT11_SUPPORTED_PHY_TYPES { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_PHY_TYPE dot11PHYType[1]; +} DOT11_SUPPORTED_PHY_TYPES, *PDOT11_SUPPORTED_PHY_TYPES; +#define OID_DOT11_CURRENT_REG_DOMAIN (OID_DOT11_NDIS_START + 39) +#define OID_DOT11_TEMP_TYPE (OID_DOT11_NDIS_START + 40) +#define OID_DOT11_CURRENT_TX_ANTENNA (OID_DOT11_NDIS_START + 41) +#define OID_DOT11_DIVERSITY_SUPPORT (OID_DOT11_NDIS_START + 42) +#define OID_DOT11_CURRENT_RX_ANTENNA (OID_DOT11_NDIS_START + 43) +#define OID_DOT11_SUPPORTED_POWER_LEVELS (OID_DOT11_NDIS_START + 44) +#define OID_DOT11_CURRENT_TX_POWER_LEVEL (OID_DOT11_NDIS_START + 45) +#define OID_DOT11_HOP_TIME (OID_DOT11_NDIS_START + 46) +#define OID_DOT11_CURRENT_CHANNEL_NUMBER (OID_DOT11_NDIS_START + 47) +#define OID_DOT11_MAX_DWELL_TIME (OID_DOT11_NDIS_START + 48) +#define OID_DOT11_CURRENT_DWELL_TIME (OID_DOT11_NDIS_START + 49) +#define OID_DOT11_CURRENT_SET (OID_DOT11_NDIS_START + 50) +#define OID_DOT11_CURRENT_PATTERN (OID_DOT11_NDIS_START + 51) +#define OID_DOT11_CURRENT_INDEX (OID_DOT11_NDIS_START + 52) +#define OID_DOT11_CURRENT_CHANNEL (OID_DOT11_NDIS_START + 53) +#define OID_DOT11_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 54) +#define OID_DOT11_CURRENT_CCA_MODE (OID_DOT11_NDIS_START + 55) +#define OID_DOT11_ED_THRESHOLD (OID_DOT11_NDIS_START + 56) +#define OID_DOT11_CCA_WATCHDOG_TIMER_MAX (OID_DOT11_NDIS_START + 57) +#define OID_DOT11_CCA_WATCHDOG_COUNT_MAX (OID_DOT11_NDIS_START + 58) +#define OID_DOT11_CCA_WATCHDOG_TIMER_MIN (OID_DOT11_NDIS_START + 59) +#define OID_DOT11_CCA_WATCHDOG_COUNT_MIN (OID_DOT11_NDIS_START + 60) +#define OID_DOT11_REG_DOMAINS_SUPPORT_VALUE (OID_DOT11_NDIS_START + 61) +#define OID_DOT11_SUPPORTED_TX_ANTENNA (OID_DOT11_NDIS_START + 62) +#define OID_DOT11_SUPPORTED_RX_ANTENNA (OID_DOT11_NDIS_START + 63) +#define OID_DOT11_DIVERSITY_SELECTION_RX (OID_DOT11_NDIS_START + 64) +#define OID_DOT11_SUPPORTED_DATA_RATES_VALUE (OID_DOT11_NDIS_START + 65) +#define OID_DOT11_CURRENT_FREQUENCY (OID_DOT11_NDIS_START + 66) +#define OID_DOT11_TI_THRESHOLD (OID_DOT11_NDIS_START + 67) +#define OID_DOT11_FREQUENCY_BANDS_SUPPORTED (OID_DOT11_NDIS_START + 68) +#define OID_DOT11_SHORT_PREAMBLE_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 69) +#define OID_DOT11_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 70) +#define OID_DOT11_CHANNEL_AGILITY_PRESENT (OID_DOT11_NDIS_START + 71) +#define OID_DOT11_CHANNEL_AGILITY_ENABLED (OID_DOT11_NDIS_START + 72) +#define OID_DOT11_HR_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 73) +#define OID_DOT11_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 74) +#define OID_DOT11_MULTI_DOMAIN_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 75) +#define OID_DOT11_COUNTRY_STRING (OID_DOT11_NDIS_START + 76) +#define DOT11_REG_DOMAIN_OTHER 0x00000000 +#define DOT11_REG_DOMAIN_FCC 0x00000010 +#define DOT11_REG_DOMAIN_DOC 0x00000020 +#define DOT11_REG_DOMAIN_ETSI 0x00000030 +#define DOT11_REG_DOMAIN_SPAIN 0x00000031 +#define DOT11_REG_DOMAIN_FRANCE 0x00000032 +#define DOT11_REG_DOMAIN_MKK 0x00000040 +typedef enum _DOT11_TEMP_TYPE { + dot11_temp_type_unknown = 0, + dot11_temp_type_1 = 1, + dot11_temp_type_2 = 2 +} DOT11_TEMP_TYPE, *PDOT11_TEMP_TYPE; +typedef enum _DOT11_DIVERSITY_SUPPORT { + dot11_diversity_support_unknown = 0, + dot11_diversity_support_fixedlist = 1, + dot11_diversity_support_notsupported = 2, + dot11_diversity_support_dynamic = 3 +} DOT11_DIVERSITY_SUPPORT, *PDOT11_DIVERSITY_SUPPORT; +typedef struct _DOT11_SUPPORTED_POWER_LEVELS { + ULONG uNumOfSupportedPowerLevels; + ULONG uTxPowerLevelValues[8]; +} DOT11_SUPPORTED_POWER_LEVELS, *PDOT11_SUPPORTED_POWER_LEVELS; +#define DOT11_CCA_MODE_ED_ONLY 0x00000001 +#define DOT11_CCA_MODE_CS_ONLY 0x00000002 +#define DOT11_CCA_MODE_ED_and_CS 0x00000004 +#define DOT11_CCA_MODE_CS_WITH_TIMER 0x00000008 +#define DOT11_CCA_MODE_HRCS_AND_ED 0x00000010 +typedef struct _DOT11_REG_DOMAIN_VALUE { + ULONG uRegDomainsSupportIndex; + ULONG uRegDomainsSupportValue; +} DOT11_REG_DOMAIN_VALUE, *PDOT11_REG_DOMAIN_VALUE; +typedef struct _DOT11_REG_DOMAINS_SUPPORT_VALUE { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_REG_DOMAIN_VALUE dot11RegDomainValue[1]; +} DOT11_REG_DOMAINS_SUPPORT_VALUE, *PDOT11_REG_DOMAINS_SUPPORT_VALUE; +typedef struct _DOT11_SUPPORTED_ANTENNA { + ULONG uAntennaListIndex; + BOOLEAN bSupportedAntenna; +} DOT11_SUPPORTED_ANTENNA, *PDOT11_SUPPORTED_ANTENNA; +typedef struct _DOT11_SUPPORTED_ANTENNA_LIST { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_SUPPORTED_ANTENNA dot11SupportedAntenna[1]; +} DOT11_SUPPORTED_ANTENNA_LIST, *PDOT11_SUPPORTED_ANTENNA_LIST; +typedef struct _DOT11_DIVERSITY_SELECTION_RX { + ULONG uAntennaListIndex; + BOOLEAN bDiversitySelectionRX; +} DOT11_DIVERSITY_SELECTION_RX, *PDOT11_DIVERSITY_SELECTION_RX; +typedef struct _DOT11_DIVERSITY_SELECTION_RX_LIST { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_DIVERSITY_SELECTION_RX dot11DiversitySelectionRx[1]; +} DOT11_DIVERSITY_SELECTION_RX_LIST, *PDOT11_DIVERSITY_SELECTION_RX_LIST; +#define MAX_NUM_SUPPORTED_RATES 8 +#define MAX_NUM_SUPPORTED_RATES_V2 255 +typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE { + UCHAR ucSupportedTxDataRatesValue[8]; + UCHAR ucSupportedRxDataRatesValue[8]; +} DOT11_SUPPORTED_DATA_RATES_VALUE, *PDOT11_SUPPORTED_DATA_RATES_VALUE; +typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE_V2 { + UCHAR ucSupportedTxDataRatesValue[255]; + UCHAR ucSupportedRxDataRatesValue[255]; +} DOT11_SUPPORTED_DATA_RATES_VALUE_V2, *PDOT11_SUPPORTED_DATA_RATES_VALUE_V2; +typedef DOT11_SUPPORTED_DATA_RATES_VALUE_V2 DOT11_SUPPORTED_DATA_RATES_VALUE_V1, *PDOT11_SUPPORTED_DATA_RATES_VALUE_V1; +#define DOT11_FREQUENCY_BANDS_LOWER 0x00000001 +#define DOT11_FREQUENCY_BANDS_MIDDLE 0x00000002 +#define DOT11_FREQUENCY_BANDS_UPPER 0x00000004 +#define DOT11_HR_CCA_MODE_ED_ONLY 0x00000001 +#define DOT11_HR_CCA_MODE_CS_ONLY 0x00000002 +#define DOT11_HR_CCA_MODE_CS_AND_ED 0x00000004 +#define DOT11_HR_CCA_MODE_CS_WITH_TIMER 0x00000008 +#define DOT11_HR_CCA_MODE_HRCS_AND_ED 0x00000010 +typedef struct _DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY { + ULONG uMultiDomainCapabilityIndex; + ULONG uFirstChannelNumber; + ULONG uNumberOfChannels; + LONG lMaximumTransmitPowerLevel; +} DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY, *PDOT11_MULTI_DOMAIN_CAPABILITY_ENTRY; +typedef struct _DOT11_MD_CAPABILITY_ENTRY_LIST { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY dot11MDCapabilityEntry[1]; +} DOT11_MD_CAPABILITY_ENTRY_LIST, *PDOT11_MD_CAPABILITY_ENTRY_LIST; +#define OID_DOT11_MULTI_DOMAIN_CAPABILITY (OID_DOT11_NDIS_START + 77) +#define OID_DOT11_EHCC_PRIME_RADIX (OID_DOT11_NDIS_START + 78) +#define OID_DOT11_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX (OID_DOT11_NDIS_START + 79) +#define OID_DOT11_EHCC_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 80) +#define OID_DOT11_EHCC_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 81) +#define OID_DOT11_HOP_ALGORITHM_ADOPTED (OID_DOT11_NDIS_START + 82) +#define OID_DOT11_RANDOM_TABLE_FLAG (OID_DOT11_NDIS_START + 83) +#define OID_DOT11_NUMBER_OF_HOPPING_SETS (OID_DOT11_NDIS_START + 84) +#define OID_DOT11_HOP_MODULUS (OID_DOT11_NDIS_START + 85) +#define OID_DOT11_HOP_OFFSET (OID_DOT11_NDIS_START + 86) +#define OID_DOT11_HOPPING_PATTERN (OID_DOT11_NDIS_START + 87) +#define OID_DOT11_RANDOM_TABLE_FIELD_NUMBER (OID_DOT11_NDIS_START + 88) +#define OID_DOT11_WPA_TSC (OID_DOT11_NDIS_START + 89) +#define OID_DOT11_RSSI_RANGE (OID_DOT11_NDIS_START + 90) +#define OID_DOT11_RF_USAGE (OID_DOT11_NDIS_START + 91) +#define OID_DOT11_NIC_SPECIFIC_EXTENSION (OID_DOT11_NDIS_START + 92) +#define OID_DOT11_AP_JOIN_REQUEST (OID_DOT11_NDIS_START + 93) +#define OID_DOT11_ERP_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 94) +#define OID_DOT11_ERP_PBCC_OPTION_ENABLED (OID_DOT11_NDIS_START + 95) +#define OID_DOT11_DSSS_OFDM_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 96) +#define OID_DOT11_DSSS_OFDM_OPTION_ENABLED (OID_DOT11_NDIS_START + 97) +#define OID_DOT11_SHORT_SLOT_TIME_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 98) +#define OID_DOT11_SHORT_SLOT_TIME_OPTION_ENABLED (OID_DOT11_NDIS_START + 99) +#define OID_DOT11_MAX_MAC_ADDRESS_STATES (OID_DOT11_NDIS_START + 100) +#define OID_DOT11_RECV_SENSITIVITY_LIST (OID_DOT11_NDIS_START + 101) +typedef enum _DOT11_HOP_ALGO_ADOPTED { + dot11_hop_algo_current = 0, + dot11_hop_algo_hop_index = 1, + dot11_hop_algo_hcc = 2 +} DOT11_HOP_ALGO_ADOPTED, *PDOT11_HOP_ALGO_ADOPTED; +typedef struct _DOT11_HOPPING_PATTERN_ENTRY { + ULONG uHoppingPatternIndex; + ULONG uRandomTableFieldNumber; +} DOT11_HOPPING_PATTERN_ENTRY, *PDOT11_HOPPING_PATTERN_ENTRY; +typedef struct _DOT11_HOPPING_PATTERN_ENTRY_LIST { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_HOPPING_PATTERN_ENTRY dot11HoppingPatternEntry[1]; +} DOT11_HOPPING_PATTERN_ENTRY_LIST, *PDOT11_HOPPING_PATTERN_ENTRY_LIST; +typedef struct _DOT11_WPA_TSC { + ULONG uReserved; + DOT11_OFFLOAD_TYPE dot11OffloadType; + HANDLE hOffload; + DOT11_IV48_COUNTER dot11IV48Counter; +} DOT11_WPA_TSC, *PDOT11_WPA_TSC; +typedef struct _DOT11_RSSI_RANGE { + DOT11_PHY_TYPE dot11PhyType; + ULONG uRSSIMin; + ULONG uRSSIMax; +} DOT11_RSSI_RANGE, *PDOT11_RSSI_RANGE; +typedef struct _DOT11_NIC_SPECIFIC_EXTENSION { + ULONG uBufferLength; + ULONG uTotalBufferLength; + UCHAR ucBuffer[1]; +} DOT11_NIC_SPECIFIC_EXTENSION, *PDOT11_NIC_SPECIFIC_EXTENSION; +typedef struct _DOT11_AP_JOIN_REQUEST { + ULONG uJoinFailureTimeout; + DOT11_RATE_SET OperationalRateSet; + ULONG uChCenterFrequency; + DOT11_BSS_DESCRIPTION dot11BSSDescription; +} DOT11_AP_JOIN_REQUEST, *PDOT11_AP_JOIN_REQUEST; +typedef struct _DOT11_RECV_SENSITIVITY { + UCHAR ucDataRate; + LONG lRSSIMin; + LONG lRSSIMax; +} DOT11_RECV_SENSITIVITY, *PDOT11_RECV_SENSITIVITY; +typedef struct _DOT11_RECV_SENSITIVITY_LIST { + __extension__ union { + DOT11_PHY_TYPE dot11PhyType; + ULONG uPhyId; + }; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_RECV_SENSITIVITY dot11RecvSensitivity[1]; +} DOT11_RECV_SENSITIVITY_LIST, *PDOT11_RECV_SENSITIVITY_LIST; +#define OID_DOT11_WME_IMPLEMENTED (OID_DOT11_NDIS_START + 102) +#define OID_DOT11_WME_ENABLED (OID_DOT11_NDIS_START + 103) +#define OID_DOT11_WME_AC_PARAMETERS (OID_DOT11_NDIS_START + 104) +#define OID_DOT11_WME_UPDATE_IE (OID_DOT11_NDIS_START + 105) +#define OID_DOT11_QOS_TX_QUEUES_SUPPORTED (OID_DOT11_NDIS_START + 106) +#define OID_DOT11_QOS_TX_DURATION (OID_DOT11_NDIS_START + 107) +typedef enum _DOT11_AC_PARAM { + dot11_AC_param_BE = 0, + dot11_AC_param_BK = 1, + dot11_AC_param_VI = 2, + dot11_AC_param_VO = 3, + dot11_AC_param_max +} DOT11_AC_PARAM, *PDOT11_AC_PARAM; +typedef struct _DOT11_WME_AC_PARAMETERS { + UCHAR ucAccessCategoryIndex; + UCHAR ucAIFSN; + UCHAR ucECWmin; + UCHAR ucECWmax; + USHORT usTXOPLimit; +} DOT11_WME_AC_PARAMETERS, *PDOT11_WME_AC_PARAMETERS; +typedef struct _DOT11_WME_AC_PARAMTERS_LIST { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_WME_AC_PARAMETERS dot11WMEACParameters[1]; +} DOT11_WME_AC_PARAMETERS_LIST, *PDOT11_WME_AC_PARAMETERS_LIST; +typedef struct _DOT11_WME_UPDATE_IE { + ULONG uParamElemMinBeaconIntervals; + ULONG uWMEInfoElemOffset; + ULONG uWMEInfoElemLength; + ULONG uWMEParamElemOffset; + ULONG uWMEParamElemLength; + UCHAR ucBuffer[1]; +} DOT11_WME_UPDATE_IE, *PDOT11_WME_UPDATE_IE; +typedef struct _DOT11_QOS_TX_DURATION { + ULONG uNominalMSDUSize; + ULONG uMinPHYRate; + ULONG uDuration; +} DOT11_QOS_TX_DURATION, *PDOT11_QOS_TX_DURATION; +typedef struct _DOT11_QOS_TX_MEDIUM_TIME { + DOT11_MAC_ADDRESS dot11PeerAddress; + UCHAR ucQoSPriority; + ULONG uMediumTimeAdmited; +} DOT11_QOS_TX_MEDIUM_TIME, *PDOT11_QOS_TX_MEDIUM_TIME; +typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY { + ULONG uCenterFrequency; +} DOT11_SUPPORTED_OFDM_FREQUENCY, *PDOT11_SUPPORTED_OFDM_FREQUENCY; +typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY_LIST { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_SUPPORTED_OFDM_FREQUENCY dot11SupportedOFDMFrequency[1]; +} DOT11_SUPPORTED_OFDM_FREQUENCY_LIST, *PDOT11_SUPPORTED_OFDM_FREQUENCY_LIST; +typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL { + ULONG uChannel; +} DOT11_SUPPORTED_DSSS_CHANNEL, *PDOT11_SUPPORTED_DSSS_CHANNEL; +typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL_LIST { + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_SUPPORTED_DSSS_CHANNEL dot11SupportedDSSSChannel[1]; +} DOT11_SUPPORTED_DSSS_CHANNEL_LIST, *PDOT11_SUPPORTED_DSSS_CHANNEL_LIST; +typedef struct DOT11_BYTE_ARRAY { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfBytes; + ULONG uTotalNumOfBytes; + UCHAR ucBuffer[1]; +} DOT11_BYTE_ARRAY, *PDOT11_BYTE_ARRAY; +#define OID_DOT11_QOS_TX_MEDIUM_TIME (OID_DOT11_NDIS_START + 108) +#define OID_DOT11_SUPPORTED_OFDM_FREQUENCY_LIST (OID_DOT11_NDIS_START + 109) +#define OID_DOT11_SUPPORTED_DSSS_CHANNEL_LIST (OID_DOT11_NDIS_START + 110) +#define OID_DOT11_AUTO_CONFIG_ENABLED NWF_DEFINE_OID (120, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_ENUM_BSS_LIST NWF_DEFINE_OID (121, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_FLUSH_BSS_LIST NWF_DEFINE_OID (122, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_POWER_MGMT_REQUEST NWF_DEFINE_OID (123, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_DESIRED_SSID_LIST NWF_DEFINE_OID (124, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_EXCLUDED_MAC_ADDRESS_LIST NWF_DEFINE_OID (125, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define DOT11_PHY_AUTO_CONFIG_ENABLED_FLAG 0x00000001U +#define DOT11_MAC_AUTO_CONFIG_ENABLED_FLAG 0x00000002U +#define DOT11_BSS_ENTRY_BYTE_ARRAY_REVISION_1 1 +typedef union DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO { + ULONG uChCenterFrequency; + struct { + ULONG uHopPattern; + ULONG uHopSet; + ULONG uDwellTime; + } FHSS; +} DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO, *PDOT11_BSS_ENTRY_PHY_SPECIFIC_INFO; +typedef struct DOT11_BSS_ENTRY { + ULONG uPhyId; + DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo; + DOT11_MAC_ADDRESS dot11BSSID; + DOT11_BSS_TYPE dot11BSSType; + LONG lRSSI; + ULONG uLinkQuality; + BOOLEAN bInRegDomain; + USHORT usBeaconPeriod; + ULONGLONG ullTimestamp; + ULONGLONG ullHostTimestamp; + USHORT usCapabilityInformation; + ULONG uBufferLength; + UCHAR ucBuffer[1]; +} DOT11_BSS_ENTRY, *PDOT11_BSS_ENTRY; +#define DOT11_POWER_SAVING_NO_POWER_SAVING 0 +#define DOT11_POWER_SAVING_FAST_PSP 8 +#define DOT11_POWER_SAVING_MAX_PSP 16 +#define DOT11_POWER_SAVING_MAXIMUM_LEVEL 24 +#define DOT11_SSID_LIST_REVISION_1 1 +#define DOT11_MAC_ADDRESS_LIST_REVISION_1 1 +#define DOT11_PMKID_LIST_REVISION_1 1 +typedef struct DOT11_SSID_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_SSID SSIDs[1]; +} DOT11_SSID_LIST, *PDOT11_SSID_LIST; +typedef struct DOT11_MAC_ADDRESS_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_MAC_ADDRESS MacAddrs[1]; +} DOT11_MAC_ADDRESS_LIST, *PDOT11_MAC_ADDRESS_LIST; +#define OID_DOT11_DESIRED_BSSID_LIST NWF_DEFINE_OID (126, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_DESIRED_BSS_TYPE NWF_DEFINE_OID (127, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_PMKID_LIST NWF_DEFINE_OID (128, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID) +#define OID_DOT11_CONNECT_REQUEST NWF_DEFINE_OID (129, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_EXCLUDE_UNENCRYPTED NWF_DEFINE_OID (130, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_STATISTICS NWF_DEFINE_OID (131, NWF_STATISTICS_OID, NWF_MANDATORY_OID) +#define OID_DOT11_PRIVACY_EXEMPTION_LIST NWF_DEFINE_OID (132, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_ENABLED_AUTHENTICATION_ALGORITHM NWF_DEFINE_OID (133, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +typedef UCHAR DOT11_PMKID_VALUE[16]; +typedef struct DOT11_PMKID_ENTRY { + DOT11_MAC_ADDRESS BSSID; + DOT11_PMKID_VALUE PMKID; + ULONG uFlags; +} DOT11_PMKID_ENTRY, *PDOT11_PMKID_ENTRY; +typedef struct DOT11_PMKID_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_PMKID_ENTRY PMKIDs[1]; +} DOT11_PMKID_LIST, *PDOT11_PMKID_LIST; +#define DOT11_STATISTICS_UNKNOWN (ULONGLONG) (-1LL) +typedef struct DOT11_PHY_FRAME_STATISTICS { + ULONGLONG ullTransmittedFrameCount; + ULONGLONG ullMulticastTransmittedFrameCount; + ULONGLONG ullFailedCount; + ULONGLONG ullRetryCount; + ULONGLONG ullMultipleRetryCount; + ULONGLONG ullMaxTXLifetimeExceededCount; + ULONGLONG ullTransmittedFragmentCount; + ULONGLONG ullRTSSuccessCount; + ULONGLONG ullRTSFailureCount; + ULONGLONG ullACKFailureCount; + ULONGLONG ullReceivedFrameCount; + ULONGLONG ullMulticastReceivedFrameCount; + ULONGLONG ullPromiscuousReceivedFrameCount; + ULONGLONG ullMaxRXLifetimeExceededCount; + ULONGLONG ullFrameDuplicateCount; + ULONGLONG ullReceivedFragmentCount; + ULONGLONG ullPromiscuousReceivedFragmentCount; + ULONGLONG ullFCSErrorCount; +} DOT11_PHY_FRAME_STATISTICS, *PDOT11_PHY_FRAME_STATISTICS; +typedef struct DOT11_MAC_FRAME_STATISTICS { + ULONGLONG ullTransmittedFrameCount; + ULONGLONG ullReceivedFrameCount; + ULONGLONG ullTransmittedFailureFrameCount; + ULONGLONG ullReceivedFailureFrameCount; + ULONGLONG ullWEPExcludedCount; + ULONGLONG ullTKIPLocalMICFailures; + ULONGLONG ullTKIPReplays; + ULONGLONG ullTKIPICVErrorCount; + ULONGLONG ullCCMPReplays; + ULONGLONG ullCCMPDecryptErrors; + ULONGLONG ullWEPUndecryptableCount; + ULONGLONG ullWEPICVErrorCount; + ULONGLONG ullDecryptSuccessCount; + ULONGLONG ullDecryptFailureCount; +} DOT11_MAC_FRAME_STATISTICS, *PDOT11_MAC_FRAME_STATISTICS; +#define DOT11_STATISTICS_REVISION_1 1 +#define DOT11_PRIVACY_EXEMPTION_LIST_REVISION_1 1 +typedef struct DOT11_STATISTICS { + NDIS_OBJECT_HEADER Header; + ULONGLONG ullFourWayHandshakeFailures; + ULONGLONG ullTKIPCounterMeasuresInvoked; + ULONGLONG ullReserved; + DOT11_MAC_FRAME_STATISTICS MacUcastCounters; + DOT11_MAC_FRAME_STATISTICS MacMcastCounters; + DOT11_PHY_FRAME_STATISTICS PhyCounters[1]; +} DOT11_STATISTICS, *PDOT11_STATISTICS; +#define DOT11_EXEMPT_NO_EXEMPTION 0 +#define DOT11_EXEMPT_ALWAYS 1 +#define DOT11_EXEMPT_ON_KEY_MAPPING_KEY_UNAVAILABLE 2 +#define DOT11_EXEMPT_UNICAST 1 +#define DOT11_EXEMPT_MULTICAST 2 +#define DOT11_EXEMPT_BOTH 3 +typedef struct DOT11_PRIVACY_EXEMPTION { + USHORT usEtherType; + USHORT usExemptionActionType; + USHORT usExemptionPacketType; +} DOT11_PRIVACY_EXEMPTION, *PDOT11_PRIVACY_EXEMPTION; +typedef struct DOT11_PRIVACY_EXEMPTION_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_PRIVACY_EXEMPTION PrivacyExemptionEntries[1]; +} DOT11_PRIVACY_EXEMPTION_LIST, *PDOT11_PRIVACY_EXEMPTION_LIST; +#define DOT11_AUTH_ALGORITHM_LIST_REVISION_1 1 +#define DOT11_AUTH_CIPHER_PAIR_LIST_REVISION_1 1 +#define DOT11_CIPHER_ALGORITHM_LIST_REVISION_1 1 +#define DOT11_CIPHER_DEFAULT_KEY_VALUE_REVISION_1 1 +#define OID_DOT11_SUPPORTED_UNICAST_ALGORITHM_PAIR NWF_DEFINE_OID (134, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_ENABLED_UNICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (135, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_SUPPORTED_MULTICAST_ALGORITHM_PAIR NWF_DEFINE_OID (136, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_ENABLED_MULTICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (137, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_CIPHER_DEFAULT_KEY_ID NWF_DEFINE_OID (138, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_CIPHER_DEFAULT_KEY NWF_DEFINE_OID (139, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +typedef struct DOT11_AUTH_ALGORITHM_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_AUTH_ALGORITHM AlgorithmIds[1]; +} DOT11_AUTH_ALGORITHM_LIST, *PDOT11_AUTH_ALGORITHM_LIST; +typedef struct DOT11_AUTH_CIPHER_PAIR_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_AUTH_CIPHER_PAIR AuthCipherPairs[1]; +} DOT11_AUTH_CIPHER_PAIR_LIST, *PDOT11_AUTH_CIPHER_PAIR_LIST; +typedef struct DOT11_CIPHER_ALGORITHM_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_CIPHER_ALGORITHM AlgorithmIds[1]; +} DOT11_CIPHER_ALGORITHM_LIST, *PDOT11_CIPHER_ALGORITHM_LIST; +typedef struct DOT11_CIPHER_DEFAULT_KEY_VALUE { + NDIS_OBJECT_HEADER Header; + ULONG uKeyIndex; + DOT11_CIPHER_ALGORITHM AlgorithmId; + DOT11_MAC_ADDRESS MacAddr; + BOOLEAN bDelete; + BOOLEAN bStatic; + USHORT usKeyLength; + UCHAR ucKey[1]; +} DOT11_CIPHER_DEFAULT_KEY_VALUE, *PDOT11_CIPHER_DEFAULT_KEY_VALUE; +typedef struct DOT11_KEY_ALGO_TKIP_MIC { + UCHAR ucIV48Counter[6]; + ULONG ulTKIPKeyLength; + ULONG ulMICKeyLength; + UCHAR ucTKIPMICKeys[1]; +} DOT11_KEY_ALGO_TKIP_MIC, *PDOT11_KEY_ALGO_TKIP_MIC; +typedef struct DOT11_KEY_ALGO_CCMP { + UCHAR ucIV48Counter[6]; + ULONG ulCCMPKeyLength; + UCHAR ucCCMPKey[1]; +} DOT11_KEY_ALGO_CCMP, *PDOT11_KEY_ALGO_CCMP; +typedef struct DOT11_KEY_ALGO_GCMP { + UCHAR ucIV48Counter[6]; + ULONG ulGCMPKeyLength; + UCHAR ucGCMPKey[1]; +} DOT11_KEY_ALGO_GCMP, *PDOT11_KEY_ALGO_GCMP; +typedef struct DOT11_KEY_ALGO_GCMP_256 { + UCHAR ucIV48Counter[6]; + ULONG ulGCMP256KeyLength; + UCHAR ucGCMP256Key[1]; +} DOT11_KEY_ALGO_GCMP_256, *PDOT11_KEY_ALGO_GCMP_256; +typedef struct DOT11_KEY_ALGO_BIP { + UCHAR ucIPN[6]; + ULONG ulBIPKeyLength; + UCHAR ucBIPKey[1]; +} DOT11_KEY_ALGO_BIP, *PDOT11_KEY_ALGO_BIP; +typedef struct DOT11_KEY_ALGO_BIP_GMAC_256 { + UCHAR ucIPN[6]; + ULONG ulBIPGmac256KeyLength; + UCHAR ucBIPGmac256Key[1]; +} DOT11_KEY_ALGO_BIP_GMAC_256, *PDOT11_KEY_ALGO_BIP_GMAC_256; +#define DOT11_CIPHER_KEY_MAPPING_KEY_VALUE_BYTE_ARRAY_REVISION_1 1 +#define DOT11_ASSOCIATION_INFO_LIST_REVISION_1 1 +#define OID_DOT11_CIPHER_KEY_MAPPING_KEY NWF_DEFINE_OID (140, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_ENUM_ASSOCIATION_INFO NWF_DEFINE_OID (141, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +typedef enum DOT11_DIRECTION { + DOT11_DIR_INBOUND = 1, + DOT11_DIR_OUTBOUND, + DOT11_DIR_BOTH +} DOT11_DIRECTION, *PDOT11_DIRECTION; +typedef struct DOT11_CIPHER_KEY_MAPPING_KEY_VALUE { + DOT11_MAC_ADDRESS PeerMacAddr; + DOT11_CIPHER_ALGORITHM AlgorithmId; + DOT11_DIRECTION Direction; + BOOLEAN bDelete; + BOOLEAN bStatic; + USHORT usKeyLength; + UCHAR ucKey[1]; +} DOT11_CIPHER_KEY_MAPPING_KEY_VALUE, *PDOT11_CIPHER_KEY_MAPPING_KEY_VALUE; +typedef enum _DOT11_ASSOCIATION_STATE { + dot11_assoc_state_zero = 0, + dot11_assoc_state_unauth_unassoc = 1, + dot11_assoc_state_auth_unassoc = 2, + dot11_assoc_state_auth_assoc = 3 +} DOT11_ASSOCIATION_STATE, *PDOT11_ASSOCIATION_STATE; +typedef struct _DOT11_ASSOCIATION_INFO_EX { + DOT11_MAC_ADDRESS PeerMacAddress; + DOT11_MAC_ADDRESS BSSID; + USHORT usCapabilityInformation; + USHORT usListenInterval; + UCHAR ucPeerSupportedRates[255]; + USHORT usAssociationID; + DOT11_ASSOCIATION_STATE dot11AssociationState; + DOT11_POWER_MODE dot11PowerMode; + LARGE_INTEGER liAssociationUpTime; + ULONGLONG ullNumOfTxPacketSuccesses; + ULONGLONG ullNumOfTxPacketFailures; + ULONGLONG ullNumOfRxPacketSuccesses; + ULONGLONG ullNumOfRxPacketFailures; +} DOT11_ASSOCIATION_INFO_EX, *PDOT11_ASSOCIATION_INFO_EX; +typedef struct DOT11_ASSOCIATION_INFO_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_ASSOCIATION_INFO_EX dot11AssocInfo[1]; +} DOT11_ASSOCIATION_INFO_LIST, *PDOT11_ASSOCIATION_INFO_LIST; +typedef struct DOT11_PHY_ID_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + ULONG dot11PhyId[1]; +} DOT11_PHY_ID_LIST, *PDOT11_PHY_ID_LIST; +#define DOT11_PHY_ID_ANY (0xffffffffU) +#define OID_DOT11_DISCONNECT_REQUEST NWF_DEFINE_OID (142, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_UNICAST_USE_GROUP_ENABLED NWF_DEFINE_OID (143, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_HARDWARE_PHY_STATE NWF_DEFINE_OID (144, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_DESIRED_PHY_LIST NWF_DEFINE_OID (145, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_CURRENT_PHY_ID NWF_DEFINE_OID (146, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_MEDIA_STREAMING_ENABLED NWF_DEFINE_OID (147, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_UNREACHABLE_DETECTION_THRESHOLD NWF_DEFINE_OID (148, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_ACTIVE_PHY_LIST NWF_DEFINE_OID (149, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_EXTSTA_CAPABILITY NWF_DEFINE_OID (150, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define DOT11_PHY_ID_LIST_REVISION_1 1 +#define DOT11_EXTSTA_CAPABILITY_REVISION_1 1 +typedef struct DOT11_EXTSTA_CAPABILITY { + NDIS_OBJECT_HEADER Header; + ULONG uScanSSIDListSize; + ULONG uDesiredBSSIDListSize; + ULONG uDesiredSSIDListSize; + ULONG uExcludedMacAddressListSize; + ULONG uPrivacyExemptionListSize; + ULONG uKeyMappingTableSize; + ULONG uDefaultKeyTableSize; + ULONG uWEPKeyValueMaxLength; + ULONG uPMKIDCacheSize; + ULONG uMaxNumPerSTADefaultKeyTables; +} DOT11_EXTSTA_CAPABILITY, *PDOT11_EXTSTA_CAPABILITY; +typedef struct DOT11_DATA_RATE_MAPPING_ENTRY { + UCHAR ucDataRateIndex; + UCHAR ucDataRateFlag; + USHORT usDataRateValue; +} DOT11_DATA_RATE_MAPPING_ENTRY, *PDOT11_DATA_RATE_MAPPING_ENTRY; +typedef struct _DOT11_DATA_RATE_MAPPING_TABLE { + NDIS_OBJECT_HEADER Header; + ULONG uDataRateMappingLength; + DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[126]; +} DOT11_DATA_RATE_MAPPING_TABLE, *PDOT11_DATA_RATE_MAPPING_TABLE; +typedef struct DOT11_COUNTRY_OR_REGION_STRING_LIST { + NDIS_OBJECT_HEADER Header; + ULONG uNumOfEntries; + ULONG uTotalNumOfEntries; + DOT11_COUNTRY_OR_REGION_STRING CountryOrRegionStrings[1]; +} DOT11_COUNTRY_OR_REGION_STRING_LIST, *PDOT11_COUNTRY_OR_REGION_STRING_LIST; +typedef struct DOT11_PORT_STATE_NOTIFICATION { + NDIS_OBJECT_HEADER Header; + DOT11_MAC_ADDRESS PeerMac; + BOOLEAN bOpen; +} DOT11_PORT_STATE_NOTIFICATION, *PDOT11_PORT_STATE_NOTIFICATION; +typedef struct DOT11_IBSS_PARAMS { + NDIS_OBJECT_HEADER Header; + BOOLEAN bJoinOnly; + ULONG uIEsOffset; + ULONG uIEsLength; +} DOT11_IBSS_PARAMS, *PDOT11_IBSS_PARAMS; +typedef struct DOT11_QOS_PARAMS { + NDIS_OBJECT_HEADER Header; + UCHAR ucEnabledQoSProtocolFlags; +} DOT11_QOS_PARAMS, *PDOT11_QOS_PARAMS; +#define DOT11_DATA_RATE_NON_STANDARD 0x01U +#define DOT11_DATA_RATE_INDEX_MASK 0x7fU +#define DOT11_QOS_PROTOCOL_FLAG_WMM (0x01U) +#define DOT11_QOS_PROTOCOL_FLAG_11E (0x02U) +#define OID_DOT11_DATA_RATE_MAPPING_TABLE NWF_DEFINE_OID (151, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_SUPPORTED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (152, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_DESIRED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (153, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_PORT_STATE_NOTIFICATION NWF_DEFINE_OID (154, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID) +#define OID_DOT11_IBSS_PARAMS NWF_DEFINE_OID (155, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_QOS_PARAMS NWF_DEFINE_OID (156, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID) +#define OID_DOT11_SAFE_MODE_ENABLED NWF_DEFINE_OID (157, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_HIDDEN_NETWORK_ENABLED NWF_DEFINE_OID (158, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_ASSOCIATION_PARAMS NWF_DEFINE_OID (159, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) +#define OID_DOT11_SAFE_MODE_HT_ENABLED NWF_DEFINE_OID(160,NWF_OPERATIONAL_OID,NWF_MANDATORY_OID) +#define DOT11_DATA_RATE_MAPPING_TABLE_REVISION_1 1 +#define DOT11_COUNTRY_OR_REGION_STRING_LIST_REVISION_1 1 +#define DOT11_PORT_STATE_NOTIFICATION_REVISION_1 1 +#define DOT11_IBSS_PARAMS_REVISION_1 1 +#define DOT11_QOS_PARAMS_REVISION_1 1 +#define DOT11_ASSOCIATION_PARAMS_REVISION_1 1 +typedef struct DOT11_ASSOCIATION_PARAMS { + NDIS_OBJECT_HEADER Header; + DOT11_MAC_ADDRESS BSSID; + ULONG uAssocRequestIEsOffset; + ULONG uAssocRequestIEsLength; +} DOT11_ASSOCIATION_PARAMS, *PDOT11_ASSOCIATION_PARAMS; +#define DOT11_MAX_NUM_OF_FRAGMENTS 16 +#define DOT11_PRIORITY_CONTENTION 0 +#define DOT11_PRIORITY_CONTENTION_FREE 1 +#define DOT11_SERVICE_CLASS_REORDERABLE_MULTICAST 0 +#define DOT11_SERVICE_CLASS_STRICTLY_ORDERED 1 +#define DOT11_FLAGS_80211B_SHORT_PREAMBLE 0x00000001 +#define DOT11_FLAGS_80211B_PBCC 0x00000002 +#define DOT11_FLAGS_80211B_CHANNEL_AGILITY 0x00000004 +#define DOT11_FLAGS_PS_ON 0x00000008 +#define DOT11_FLAGS_80211G_DSSS_OFDM 0x00000010 +#define DOT11_FLAGS_80211G_USE_PROTECTION 0x00000020 +#define DOT11_FLAGS_80211G_NON_ERP_PRESENT 0x00000040 +#define DOT11_FLAGS_80211G_BARKER_PREAMBLE_MODE 0x00000080 +#define DOT11_WME_PACKET 0x00000100 +typedef struct _DOT11_FRAGMENT_DESCRIPTOR { + ULONG uOffset; + ULONG uLength; +} DOT11_FRAGMENT_DESCRIPTOR, *PDOT11_FRAGMENT_DESCRIPTOR; +typedef struct _DOT11_PER_MSDU_COUNTERS { + ULONG uTransmittedFragmentCount; + ULONG uRetryCount; + ULONG uRTSSuccessCount; + ULONG uRTSFailureCount; + ULONG uACKFailureCount; +} DOT11_PER_MSDU_COUNTERS, *PDOT11_PER_MSDU_COUNTERS; +typedef struct DOT11_PHY_ATTRIBUTES DOT11_PHY_ATTRIBUTES, *PDOT11_PHY_ATTRIBUTES; +typedef struct DOT11_HRDSSS_PHY_ATTRIBUTES { + BOOLEAN bShortPreambleOptionImplemented; + BOOLEAN bPBCCOptionImplemented; + BOOLEAN bChannelAgilityPresent; + ULONG uHRCCAModeSupported; +} DOT11_HRDSSS_PHY_ATTRIBUTES, *PDOT11_HRDSSS_PHY_ATTRIBUTES; +typedef struct DOT11_OFDM_PHY_ATTRIBUTES { + ULONG uFrequencyBandsSupported; +} DOT11_OFDM_PHY_ATTRIBUTES, *PDOT11_OFDM_PHY_ATTRIBUTES; +typedef struct DOT11_ERP_PHY_ATTRIBUTES { + __extension__ struct { + BOOLEAN bShortPreambleOptionImplemented; + BOOLEAN bPBCCOptionImplemented; + BOOLEAN bChannelAgilityPresent; + ULONG uHRCCAModeSupported; + }; + BOOLEAN bERPPBCCOptionImplemented; + BOOLEAN bDSSSOFDMOptionImplemented; + BOOLEAN bShortSlotTimeOptionImplemented; +} DOT11_ERP_PHY_ATTRIBUTES, *PDOT11_ERP_PHY_ATTRIBUTES; +#define DOT11_PHY_ATTRIBUTES_REVISION_1 1 +struct DOT11_PHY_ATTRIBUTES { + NDIS_OBJECT_HEADER Header; + DOT11_PHY_TYPE PhyType; + BOOLEAN bHardwarePhyState; + BOOLEAN bSoftwarePhyState; + BOOLEAN bCFPollable; + ULONG uMPDUMaxLength; + DOT11_TEMP_TYPE TempType; + DOT11_DIVERSITY_SUPPORT DiversitySupport; + __extension__ + union { + DOT11_HRDSSS_PHY_ATTRIBUTES HRDSSSAttributes; + DOT11_OFDM_PHY_ATTRIBUTES OFDMAttributes; + DOT11_ERP_PHY_ATTRIBUTES ERPAttributes; + } + ; + ULONG uNumberSupportedPowerLevels; + ULONG TxPowerLevels[8]; + ULONG uNumDataRateMappingEntries; + DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[126]; + DOT11_SUPPORTED_DATA_RATES_VALUE_V2 SupportedDataRatesValue; +}; +#define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_OID_SUPPORTED 0x1 +#define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_CERTIFIED 0x2 +#define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_RESERVED 0xc +#define DOT11_EXTSTA_ATTRIBUTES_REVISION_1 1 +#define DOT11_EXTSTA_ATTRIBUTES_REVISION_2 2 +#define DOT11_EXTSTA_ATTRIBUTES_REVISION_3 3 +#define DOT11_EXTSTA_ATTRIBUTES_REVISION_4 4 +typedef struct DOT11_EXTSTA_ATTRIBUTES DOT11_EXTSTA_ATTRIBUTES, *PDOT11_EXTSTA_ATTRIBUTES; +struct DOT11_EXTSTA_ATTRIBUTES { + NDIS_OBJECT_HEADER Header; + ULONG uScanSSIDListSize; + ULONG uDesiredBSSIDListSize; + ULONG uDesiredSSIDListSize; + ULONG uExcludedMacAddressListSize; + ULONG uPrivacyExemptionListSize; + ULONG uKeyMappingTableSize; + ULONG uDefaultKeyTableSize; + ULONG uWEPKeyValueMaxLength; + ULONG uPMKIDCacheSize; + ULONG uMaxNumPerSTADefaultKeyTables; + BOOLEAN bStrictlyOrderedServiceClassImplemented; + UCHAR ucSupportedQoSProtocolFlags; + BOOLEAN bSafeModeImplemented; + ULONG uNumSupportedCountryOrRegionStrings; + PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings; + ULONG uInfraNumSupportedUcastAlgoPairs; + PDOT11_AUTH_CIPHER_PAIR pInfraSupportedUcastAlgoPairs; + ULONG uInfraNumSupportedMcastAlgoPairs; + PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastAlgoPairs; + ULONG uAdhocNumSupportedUcastAlgoPairs; + PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedUcastAlgoPairs; + ULONG uAdhocNumSupportedMcastAlgoPairs; + PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedMcastAlgoPairs; + BOOLEAN bAutoPowerSaveMode; + ULONG uMaxNetworkOffloadListSize; + BOOLEAN bMFPCapable; + ULONG uInfraNumSupportedMcastMgmtAlgoPairs; + PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastMgmtAlgoPairs; +}; +typedef struct _DOT11_RECV_EXTENSION_INFO { + ULONG uVersion; + PVOID pvReserved; + DOT11_PHY_TYPE dot11PhyType; + ULONG uChCenterFrequency; + LONG lRSSI; + LONG lRSSIMin; + LONG lRSSIMax; + ULONG uRSSI; + UCHAR ucPriority; + UCHAR ucDataRate; + UCHAR ucPeerMacAddress[6]; + ULONG dwExtendedStatus; + HANDLE hWEPOffloadContext; + HANDLE hAuthOffloadContext; + USHORT usWEPAppliedMask; + USHORT usWPAMSDUPriority; + DOT11_IV48_COUNTER dot11LowestIV48Counter; + USHORT usDot11LeftRWBitMap; + DOT11_IV48_COUNTER dot11HighestIV48Counter; + USHORT usDot11RightRWBitMap; + USHORT usNumberOfMPDUsReceived; + USHORT usNumberOfFragments; + PVOID pNdisPackets[1]; +} DOT11_RECV_EXTENSION_INFO, *PDOT11_RECV_EXTENSION_INFO; +typedef struct _DOT11_RECV_EXTENSION_INFO_V2 { + ULONG uVersion; + PVOID pvReserved; + DOT11_PHY_TYPE dot11PhyType; + ULONG uChCenterFrequency; + LONG lRSSI; + ULONG uRSSI; + UCHAR ucPriority; + UCHAR ucDataRate; + UCHAR ucPeerMacAddress[6]; + ULONG dwExtendedStatus; + HANDLE hWEPOffloadContext; + HANDLE hAuthOffloadContext; + USHORT usWEPAppliedMask; + USHORT usWPAMSDUPriority; + DOT11_IV48_COUNTER dot11LowestIV48Counter; + USHORT usDot11LeftRWBitMap; + DOT11_IV48_COUNTER dot11HighestIV48Counter; + USHORT usDot11RightRWBitMap; + USHORT usNumberOfMPDUsReceived; + USHORT usNumberOfFragments; + PVOID pNdisPackets[1]; +} DOT11_RECV_EXTENSION_INFO_V2, *PDOT11_RECV_EXTENSION_INFO_V2; +#define DOT11_STATUS_SUCCESS 0x00000001 +#define DOT11_STATUS_RETRY_LIMIT_EXCEEDED 0x00000002 +#define DOT11_STATUS_UNSUPPORTED_PRIORITY 0x00000004 +#define DOT11_STATUS_UNSUPPORTED_SERVICE_CLASS 0x00000008 +#define DOT11_STATUS_UNAVAILABLE_PRIORITY 0x00000010 +#define DOT11_STATUS_UNAVAILABLE_SERVICE_CLASS 0x00000020 +#define DOT11_STATUS_XMIT_MSDU_TIMER_EXPIRED 0x00000040 +#define DOT11_STATUS_UNAVAILABLE_BSS 0x00000080 +#define DOT11_STATUS_EXCESSIVE_DATA_LENGTH 0x00000100 +#define DOT11_STATUS_ENCRYPTION_FAILED 0x00000200 +#define DOT11_STATUS_WEP_KEY_UNAVAILABLE 0x00000400 +#define DOT11_STATUS_ICV_VERIFIED 0x00000800 +#define DOT11_STATUS_PACKET_REASSEMBLED 0x00001000 +#define DOT11_STATUS_PACKET_NOT_REASSEMBLED 0x00002000 +#define DOT11_STATUS_GENERATE_AUTH_FAILED 0x00004000 +#define DOT11_STATUS_AUTH_NOT_VERIFIED 0x00008000 +#define DOT11_STATUS_AUTH_VERIFIED 0x00010000 +#define DOT11_STATUS_AUTH_FAILED 0x00020000 +#define DOT11_STATUS_PS_LIFETIME_EXPIRED 0x00040000 +typedef struct _DOT11_STATUS_INDICATION { + ULONG uStatusType; + NDIS_STATUS ndisStatus; +} DOT11_STATUS_INDICATION, *PDOT11_STATUS_INDICATION; +typedef struct DOT11_MPDU_MAX_LENGTH_INDICATION { + NDIS_OBJECT_HEADER Header; + ULONG uPhyId; + ULONG uMPDUMaxLength; +} DOT11_MPDU_MAX_LENGTH_INDICATION, *PDOT11_MPDU_MAX_LENGTH_INDICATION; +#define DOT11_MPDU_MAX_LENGTH_INDICATION_REVISION_1 1 +#define DOT11_ASSOCIATION_START_PARAMETERS_REVISION_1 1 +typedef struct DOT11_ASSOCIATION_START_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_MAC_ADDRESS MacAddr; + DOT11_SSID SSID; + ULONG uIHVDataOffset, uIHVDataSize; +} DOT11_ASSOCIATION_START_PARAMETERS, *PDOT11_ASSOCIATION_START_PARAMETERS; +typedef struct DOT11_ENCAP_ENTRY { + USHORT usEtherType; + USHORT usEncapType; +} DOT11_ENCAP_ENTRY, *PDOT11_ENCAP_ENTRY; +typedef enum DOT11_DS_INFO { + DOT11_DS_CHANGED, + DOT11_DS_UNCHANGED, + DOT11_DS_UNKNOWN +} DOT11_DS_INFO, *PDOT11_DS_INFO; +typedef ULONG DOT11_ASSOC_STATUS; +#define DOT11_ENCAP_RFC_1042 1 +#define DOT11_ENCAP_802_1H 2 +#define DOT11_STATUS_SCAN_CONFIRM 1 +#define DOT11_STATUS_JOIN_CONFIRM 2 +#define DOT11_STATUS_START_CONFIRM 3 +#define DOT11_STATUS_RESET_CONFIRM 4 +#define DOT11_STATUS_AP_JOIN_CONFIRM 5 +#define DOT11_STATUS_MPDU_MAX_LENGTH_CHANGED 6 +#define DOT11_ASSOC_STATUS_SUCCESS 0 +#define DOT11_ASSOC_STATUS_FAILURE 0x00000001U +#define DOT11_ASSOC_STATUS_UNREACHABLE 0x00000002U +#define DOT11_ASSOC_STATUS_RADIO_OFF 0x00000003U +#define DOT11_ASSOC_STATUS_PHY_DISABLED 0x00000004U +#define DOT11_ASSOC_STATUS_CANCELLED 0x00000005U +#define DOT11_ASSOC_STATUS_CANDIDATE_LIST_EXHAUSTED 0x00000006U +#define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_OS 0x00000007U +#define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_ROAMING 0x00000008U +#define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_RESET 0x00000009U +#define DOT11_ASSOC_STATUS_SYSTEM_ERROR 0x0000000aU +#define DOT11_ASSOC_STATUS_ROAMING_BETTER_AP_FOUND 0x0000000bU +#define DOT11_ASSOC_STATUS_ROAMING_ASSOCIATION_LOST 0x0000000cU +#define DOT11_ASSOC_STATUS_ROAMING_ADHOC 0x0000000dU +#define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED 0x00010000U +#define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED_START DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED +#define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED_END 0x0001ffffU +#define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED 0x00020000U +#define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED_START DOT11_ASSOC_STATUS_PEER_DISASSOCIATED +#define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED_END 0x0002ffffU +#define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE 0x00030000U +#define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE_START DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE +#define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE_END 0x0003ffffU +#define DOT11_ASSOC_STATUS_REASON_CODE_MASK 0xffffU +#define DOT11_ASSOC_STATUS_IHV_START 0x80000000U +#define DOT11_ASSOC_STATUS_IHV_END 0xffffffffU +#define DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_1 1 +#define DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_2 2 +typedef struct DOT11_ASSOCIATION_COMPLETION_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_MAC_ADDRESS MacAddr; + DOT11_ASSOC_STATUS uStatus; + BOOLEAN bReAssocReq; + BOOLEAN bReAssocResp; + ULONG uAssocReqOffset, uAssocReqSize; + ULONG uAssocRespOffset, uAssocRespSize; + ULONG uBeaconOffset, uBeaconSize; + ULONG uIHVDataOffset, uIHVDataSize; + DOT11_AUTH_ALGORITHM AuthAlgo; + DOT11_CIPHER_ALGORITHM UnicastCipher; + DOT11_CIPHER_ALGORITHM MulticastCipher; + ULONG uActivePhyListOffset, uActivePhyListSize; + BOOLEAN bFourAddressSupported; + BOOLEAN bPortAuthorized; + UCHAR ucActiveQoSProtocol; + DOT11_DS_INFO DSInfo; + ULONG uEncapTableOffset, uEncapTableSize; +} DOT11_ASSOCIATION_COMPLETION_PARAMETERS, *PDOT11_ASSOCIATION_COMPLETION_PARAMETERS; +#define DOT11_CONNECTION_STATUS_SUCCESS DOT11_ASSOC_STATUS_SUCCESS +#define DOT11_CONNECTION_STATUS_FAILURE DOT11_ASSOC_STATUS_FAILURE +#define DOT11_CONNECTION_STATUS_CANDIDATE_LIST_EXHAUSTED DOT11_ASSOC_STATUS_CANDIDATE_LIST_EXHAUSTED +#define DOT11_CONNECTION_STATUS_PHY_POWER_DOWN DOT11_ASSOC_STATUS_RADIO_OFF +#define DOT11_CONNECTION_STATUS_CANCELLED DOT11_ASSOC_STATUS_CANCELLED +#define DOT11_CONNECTION_STATUS_IHV_START DOT11_ASSOC_STATUS_IHV_START +#define DOT11_CONNECTION_STATUS_IHV_END DOT11_ASSOC_STATUS_IHV_END +#define DOT11_ROAMING_REASON_BETTER_AP_FOUND DOT11_ASSOC_STATUS_ROAMING_BETTER_AP_FOUND +#define DOT11_ROAMING_REASON_ASSOCIATION_LOST DOT11_ASSOC_STATUS_ROAMING_ASSOCIATION_LOST +#define DOT11_ROAMING_REASON_ADHOC DOT11_ASSOC_STATUS_ROAMING_ADHOC +#define DOT11_ROAMING_REASON_IHV_START DOT11_ASSOC_STATUS_IHV_START +#define DOT11_ROAMING_REASON_IHV_END DOT11_ASSOC_STATUS_IHV_END +#define DOT11_DISASSOC_REASON_OS DOT11_ASSOC_STATUS_DISASSOCIATED_BY_OS +#define DOT11_DISASSOC_REASON_PEER_UNREACHABLE DOT11_ASSOC_STATUS_UNREACHABLE +#define DOT11_DISASSOC_REASON_PEER_DEAUTHENTICATED DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED +#define DOT11_DISASSOC_REASON_PEER_DISASSOCIATED DOT11_ASSOC_STATUS_PEER_DISASSOCIATED +#define DOT11_DISASSOC_REASON_RADIO_OFF DOT11_ASSOC_STATUS_RADIO_OFF +#define DOT11_DISASSOC_REASON_PHY_DISABLED DOT11_ASSOC_STATUS_PHY_DISABLED +#define DOT11_DISASSOC_REASON_IHV_START DOT11_ASSOC_STATUS_IHV_START +#define DOT11_DISASSOC_REASON_IHV_END DOT11_ASSOC_STATUS_IHV_END +#define DOT11_CONNECTION_START_PARAMETERS_REVISION_1 1 +#define DOT11_CONNECTION_COMPLETION_PARAMETERS_REVISION_1 1 +#define DOT11_ROAMING_START_PARAMETERS_REVISION_1 1 +#define DOT11_ROAMING_COMPLETION_PARAMETERS_REVISION_1 1 +#define DOT11_DISASSOCIATION_PARAMETERS_REVISION_1 1 +#define DOT11_TKIPMIC_FAILURE_PARAMETERS_REVISION_1 1 +#define DOT11_PMKID_CANDIDATE_LIST_PARAMETERS_REVISION_1 1 +#define DOT11_PHY_STATE_PARAMETERS_REVISION_1 1 +#define DOT11_LINK_QUALITY_PARAMETERS_REVISION_1 1 +#define DOT11_EXTSTA_SEND_CONTEXT_REVISION_1 1 +#define DOT11_EXTSTA_RECV_CONTEXT_REVISION_1 1 +typedef struct DOT11_CONNECTION_START_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_BSS_TYPE BSSType; + DOT11_MAC_ADDRESS AdhocBSSID; + DOT11_SSID AdhocSSID; +} DOT11_CONNECTION_START_PARAMETERS, *PDOT11_CONNECTION_START_PARAMETERS; +typedef struct DOT11_CONNECTION_COMPLETION_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_ASSOC_STATUS uStatus; +} DOT11_CONNECTION_COMPLETION_PARAMETERS, *PDOT11_CONNECTION_COMPLETION_PARAMETERS; +typedef struct DOT11_ROAMING_START_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_MAC_ADDRESS AdhocBSSID; + DOT11_SSID AdhocSSID; + DOT11_ASSOC_STATUS uRoamingReason; +} DOT11_ROAMING_START_PARAMETERS, *PDOT11_ROAMING_START_PARAMETERS; +typedef struct DOT11_ROAMING_COMPLETION_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_ASSOC_STATUS uStatus; +} DOT11_ROAMING_COMPLETION_PARAMETERS, *PDOT11_ROAMING_COMPLETION_PARAMETERS; +typedef struct DOT11_DISASSOCIATION_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_MAC_ADDRESS MacAddr; + DOT11_ASSOC_STATUS uReason; + ULONG uIHVDataOffset, uIHVDataSize; +} DOT11_DISASSOCIATION_PARAMETERS, *PDOT11_DISASSOCIATION_PARAMETERS; +typedef struct DOT11_TKIPMIC_FAILURE_PARAMETERS { + NDIS_OBJECT_HEADER Header; + BOOLEAN bDefaultKeyFailure; + ULONG uKeyIndex; + DOT11_MAC_ADDRESS PeerMac; +} DOT11_TKIPMIC_FAILURE_PARAMETERS, *PDOT11_TKIPMIC_FAILURE_PARAMETERS; +typedef struct DOT11_PMKID_CANDIDATE_LIST_PARAMETERS { + NDIS_OBJECT_HEADER Header; + ULONG uCandidateListSize; + ULONG uCandidateListOffset; +} DOT11_PMKID_CANDIDATE_LIST_PARAMETERS, *PDOT11_PMKID_CANDIDATE_LIST_PARAMETERS; +typedef struct DOT11_BSSID_CANDIDATE { + DOT11_MAC_ADDRESS BSSID; + ULONG uFlags; +} DOT11_BSSID_CANDIDATE, *PDOT11_BSSID_CANDIDATE; +typedef struct DOT11_PHY_STATE_PARAMETERS { + NDIS_OBJECT_HEADER Header; + ULONG uPhyId; + BOOLEAN bHardwarePhyState; + BOOLEAN bSoftwarePhyState; +} DOT11_PHY_STATE_PARAMETERS, *PDOT11_PHY_STATE_PARAMETERS; +typedef struct DOT11_LINK_QUALITY_ENTRY { + DOT11_MAC_ADDRESS PeerMacAddr; + UCHAR ucLinkQuality; +} DOT11_LINK_QUALITY_ENTRY, *PDOT11_LINK_QUALITY_ENTRY; +typedef struct DOT11_LINK_QUALITY_PARAMETERS { + NDIS_OBJECT_HEADER Header; + ULONG uLinkQualityListSize; + ULONG uLinkQualityListOffset; +} DOT11_LINK_QUALITY_PARAMETERS, *PDOT11_LINK_QUALITY_PARAMETERS; +typedef struct DOT11_EXTSTA_SEND_CONTEXT { + NDIS_OBJECT_HEADER Header; + USHORT usExemptionActionType; + ULONG uPhyId; + ULONG uDelayedSleepValue; + PVOID pvMediaSpecificInfo; + ULONG uSendFlags; +} DOT11_EXTSTA_SEND_CONTEXT, *PDOT11_EXTSTA_SEND_CONTEXT; +typedef struct DOT11_EXTSTA_RECV_CONTEXT { + NDIS_OBJECT_HEADER Header; + ULONG uReceiveFlags; + ULONG uPhyId; + ULONG uChCenterFrequency; + USHORT usNumberOfMPDUsReceived; + LONG lRSSI; + UCHAR ucDataRate; + ULONG uSizeMediaSpecificInfo; + PVOID pvMediaSpecificInfo; + ULONGLONG ullTimestamp; +} DOT11_EXTSTA_RECV_CONTEXT, *PDOT11_EXTSTA_RECV_CONTEXT; +#define OID_DOT11_PRIVATE_OIDS_START (OID_DOT11_NDIS_START + 1024) +#define OID_DOT11_CURRENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 2) +#define OID_DOT11_PERMANENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 3) +#define OID_DOT11_MULTICAST_LIST (OID_DOT11_PRIVATE_OIDS_START + 4) +#define OID_DOT11_MAXIMUM_LIST_SIZE (OID_DOT11_PRIVATE_OIDS_START + 5) +#define DOT11_RECV_FLAG_RAW_PACKET 0x00000001U +#define DOT11_RECV_FLAG_RAW_PACKET_FCS_FAILURE 0x00000002U +#define DOT11_RECV_FLAG_RAW_PACKET_TIMESTAMP 0x00000004U +#define DOT11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x00000001U +#define DEFINE_NWF_GUID(NAME,ORD) DEFINE_GUID (NAME, 0x6cb9a43e + (ORD), 0xc45f, 0x4039, 0x9f, 0xe6, 0xd0, 0x8c, 0xb0, 0x57, 0x18, 0x4c) +extern const GUID GUID_NWF_OFFLOAD_CAPABILITY; +extern const GUID GUID_NWF_CURRENT_OFFLOAD_CAPABILITY; +extern const GUID GUID_NWF_WEP_OFFLOAD; +extern const GUID GUID_NWF_WEP_UPLOAD; +extern const GUID GUID_NWF_DEFAULT_WEP_OFFLOAD; +extern const GUID GUID_NWF_DEFAULT_WEP_UPLOAD; +extern const GUID GUID_NWF_MPDU_MAX_LENGTH; +extern const GUID GUID_NWF_OPERATION_MODE_CAPABILITY; +extern const GUID GUID_NWF_CURRENT_OPERATION_MODE; +extern const GUID GUID_NWF_CURRENT_PACKET_FILTER; +extern const GUID GUID_NWF_ATIM_WINDOW; +extern const GUID GUID_NWF_SCAN_REQUEST; +extern const GUID GUID_NWF_CURRENT_PHY_TYPE; +extern const GUID GUID_NWF_JOIN_REQUEST; +extern const GUID GUID_NWF_START_REQUEST; +extern const GUID GUID_NWF_UPDATE_IE; +extern const GUID GUID_NWF_RESET_REQUEST; +extern const GUID GUID_NWF_NIC_POWER_STATE; +extern const GUID GUID_NWF_OPTIONAL_CAPABILITY; +extern const GUID GUID_NWF_CURRENT_OPTIONAL_CAPABILITY; +extern const GUID GUID_NWF_STATION_ID; +extern const GUID GUID_NWF_MEDIUM_OCCUPANCY_LIMIT; +extern const GUID GUID_NWF_CF_POLLABLE; +extern const GUID GUID_NWF_CFP_PERIOD; +extern const GUID GUID_NWF_CFP_MAX_DURATION; +extern const GUID GUID_NWF_POWER_MGMT_MODE; +extern const GUID GUID_NWF_OPERATIONAL_RATE_SET; +extern const GUID GUID_NWF_BEACON_PERIOD; +extern const GUID GUID_NWF_DTIM_PERIOD; +extern const GUID GUID_NWF_WEP_ICV_ERROR_COUNT; +extern const GUID GUID_NWF_MAC_ADDRESS; +extern const GUID GUID_NWF_RTS_THRESHOLD; +extern const GUID GUID_NWF_SHORT_RETRY_LIMIT; +extern const GUID GUID_NWF_LONG_RETRY_LIMIT; +extern const GUID GUID_NWF_FRAGMENTATION_THRESHOLD; +extern const GUID GUID_NWF_MAX_TRANSMIT_MSDU_LIFETIME; +extern const GUID GUID_NWF_MAX_RECEIVE_LIFETIME; +extern const GUID GUID_NWF_COUNTERS_ENTRY; +extern const GUID GUID_NWF_SUPPORTED_PHY_TYPES; +extern const GUID GUID_NWF_CURRENT_REG_DOMAIN; +extern const GUID GUID_NWF_TEMP_TYPE; +extern const GUID GUID_NWF_CURRENT_TX_ANTENNA; +extern const GUID GUID_NWF_DIVERSITY_SUPPORT; +extern const GUID GUID_NWF_CURRENT_RX_ANTENNA; +extern const GUID GUID_NWF_SUPPORTED_POWER_LEVELS; +extern const GUID GUID_NWF_CURRENT_TX_POWER_LEVEL; +extern const GUID GUID_NWF_HOP_TIME; +extern const GUID GUID_NWF_CURRENT_CHANNEL_NUMBER; +extern const GUID GUID_NWF_MAX_DWELL_TIME; +extern const GUID GUID_NWF_CURRENT_DWELL_TIME; +extern const GUID GUID_NWF_CURRENT_SET; +extern const GUID GUID_NWF_CURRENT_PATTERN; +extern const GUID GUID_NWF_CURRENT_INDEX; +extern const GUID GUID_NWF_CURRENT_CHANNEL; +extern const GUID GUID_NWF_CCA_MODE_SUPPORTED; +extern const GUID GUID_NWF_CURRENT_CCA_MODE; +extern const GUID GUID_NWF_ED_THRESHOLD; +extern const GUID GUID_NWF_CCA_WATCHDOG_TIMER_MAX; +extern const GUID GUID_NWF_CCA_WATCHDOG_COUNT_MAX; +extern const GUID GUID_NWF_CCA_WATCHDOG_TIMER_MIN; +extern const GUID GUID_NWF_CCA_WATCHDOG_COUNT_MIN; +extern const GUID GUID_NWF_REG_DOMAINS_SUPPORT_VALUE; +extern const GUID GUID_NWF_SUPPORTED_TX_ANTENNA; +extern const GUID GUID_NWF_SUPPORTED_RX_ANTENNA; +extern const GUID GUID_NWF_DIVERSITY_SELECTION_RX; +extern const GUID GUID_NWF_SUPPORTED_DATA_RATES_VALUE; +extern const GUID GUID_NWF_CURRENT_FREQUENCY; +extern const GUID GUID_NWF_TI_THRESHOLD; +extern const GUID GUID_NWF_FREQUENCY_BANDS_SUPPORTED; +extern const GUID GUID_NWF_SHORT_PREAMBLE_OPTION_IMPLEMENTED; +extern const GUID GUID_NWF_PBCC_OPTION_IMPLEMENTED; +extern const GUID GUID_NWF_CHANNEL_AGILITY_PRESENT; +extern const GUID GUID_NWF_CHANNEL_AGILITY_ENABLED; +extern const GUID GUID_NWF_HR_CCA_MODE_SUPPORTED; +extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED; +extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY_ENABLED; +extern const GUID GUID_NWF_COUNTRY_STRING; +extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY; +extern const GUID GUID_NWF_EHCC_PRIME_RADIX; +extern const GUID GUID_NWF_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX; +extern const GUID GUID_NWF_EHCC_CAPABILITY_IMPLEMENTED; +extern const GUID GUID_NWF_EHCC_CAPABILITY_ENABLED; +extern const GUID GUID_NWF_HOP_ALGORITHM_ADOPTED; +extern const GUID GUID_NWF_RANDOM_TABLE_FLAG; +extern const GUID GUID_NWF_NUMBER_OF_HOPPING_SETS; +extern const GUID GUID_NWF_HOP_MODULUS; +extern const GUID GUID_NWF_HOP_OFFSET; +extern const GUID GUID_NWF_HOPPING_PATTERN; +extern const GUID GUID_NWF_RANDOM_TABLE_FIELD_NUMBER; +extern const GUID GUID_NWF_WPA_TSC; +extern const GUID GUID_NWF_RSSI_RANGE; +extern const GUID GUID_NWF_RF_USAGE; +extern const GUID GUID_NWF_NIC_SPECIFIC_EXTENSION; +extern const GUID GUID_NWF_AP_JOIN_REQUEST; +extern const GUID GUID_NWF_ERP_PBCC_OPTION_IMPLEMENTED; +extern const GUID GUID_NWF_ERP_PBCC_OPTION_ENABLED; +extern const GUID GUID_NWF_DSSS_OFDM_OPTION_IMPLEMENTED; +extern const GUID GUID_NWF_DSSS_OFDM_OPTION_ENABLED; +extern const GUID GUID_NWF_SHORT_SLOT_TIME_OPTION_IMPLEMENTED; +extern const GUID GUID_NWF_SHORT_SLOT_TIME_OPTION_ENABLED; +extern const GUID GUID_NWF_MAX_MAC_ADDRESS_STATES; +extern const GUID GUID_NWF_RECV_SENSITIVITY_LIST; +extern const GUID GUID_NWF_WME_IMPLEMENTED; +extern const GUID GUID_NWF_WME_ENABLED; +extern const GUID GUID_NWF_WME_AC_PARAMETERS; +extern const GUID GUID_NWF_WME_UPDATE_IE; +extern const GUID GUID_NWF_QOS_TX_QUEUES_SUPPORTED; +extern const GUID GUID_NWF_QOS_TX_DURATION; +extern const GUID GUID_NWF_QOS_TX_MEDIUM_TIME; +extern const GUID GUID_NWF_SUPPORTED_OFDM_FREQUENCY_LIST; +extern const GUID GUID_NWF_SUPPORTED_DSSS_CHANNEL_LIST; +extern const GUID GUID_NWF_AUTO_CONFIG_ENABLED; +extern const GUID GUID_NWF_ENUM_BSS_LIST; +extern const GUID GUID_NWF_FLUSH_BSS_LIST; +extern const GUID GUID_NWF_POWER_MGMT_REQUEST; +extern const GUID GUID_NWF_DESIRED_SSID_LIST; +extern const GUID GUID_NWF_EXCLUDED_MAC_ADDRESS_LIST; +extern const GUID GUID_NWF_DESIRED_BSSID_LIST; +extern const GUID GUID_NWF_DESIRED_BSS_TYPE; +extern const GUID GUID_NWF_PMKID_LIST; +extern const GUID GUID_NWF_CONNECT_REQUEST; +extern const GUID GUID_NWF_EXCLUDE_UNENCRYPTED; +extern const GUID GUID_NWF_STATISTICS; +extern const GUID GUID_NWF_PRIVACY_EXEMPTION_LIST; +extern const GUID GUID_NWF_ENABLED_AUTHENTICATION_ALGORITHM; +extern const GUID GUID_NWF_SUPPORTED_UNICAST_ALGORITHM_PAIR; +extern const GUID GUID_NWF_ENABLED_UNICAST_CIPHER_ALGORITHM; +extern const GUID GUID_NWF_SUPPORTED_MULTICAST_ALGORITHM_PAIR; +extern const GUID GUID_NWF_ENABLED_MULTICAST_CIPHER_ALGORITHM; +extern const GUID GUID_NWF_CIPHER_DEFAULT_KEY_ID; +extern const GUID GUID_NWF_CIPHER_DEFAULT_KEY; +extern const GUID GUID_NWF_CIPHER_KEY_MAPPING_KEY; +extern const GUID GUID_NWF_ENUM_ASSOCIATION_INFO; +extern const GUID GUID_NWF_DISCONNECT_REQUEST; +extern const GUID GUID_NWF_UNICAST_USE_GROUP_ENABLED; +extern const GUID GUID_NWF_PHY_STATE; +extern const GUID GUID_NWF_DESIRED_PHY_LIST; +extern const GUID GUID_NWF_CURRENT_PHY_ID; +extern const GUID GUID_NWF_MEDIA_STREAMING_ENABLED; +extern const GUID GUID_NWF_UNREACHABLE_DETECTION_THRESHOLD; +extern const GUID GUID_NWF_ACTIVE_PHY_LIST; +extern const GUID GUID_NWF_EXTSTA_CAPABILITY; +extern const GUID GUID_NWF_DATA_RATE_MAPPING_TABLE; +extern const GUID GUID_NWF_SUPPORTED_COUNTRY_OR_REGION_STRING; +extern const GUID GUID_NWF_DESIRED_COUNTRY_OR_REGION_STRING; +extern const GUID GUID_NWF_PORT_STATE_NOTIFICATION; +extern const GUID GUID_NWF_IBSS_PARAMS; +extern const GUID GUID_NWF_QOS_PARAMS; +extern const GUID GUID_NWF_SAFE_MODE_ENABLED; +extern const GUID GUID_NWF_HIDDEN_NETWORK_ENABLED; +extern const GUID GUID_NWF_ASSOCIATION_PARAMS; +extern const GUID GUID_NWF_CURRENT_ADDRESS; +extern const GUID GUID_NWF_PERMANENT_ADDRESS; +extern const GUID GUID_NWF_MULTICAST_LIST; +extern const GUID GUID_NWF_MAXIMUM_LIST_SIZE; +typedef struct _DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS { + NDIS_OBJECT_HEADER Header; + NDIS_STATUS Status; +} DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS, *PDOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS; +#define NWF_MANUFACTURING_OID (0x08U) +#define DOT11_SIZEOF_OFFLOAD_NETWORK_STATUS_PARAMETERS_REVISION_1 sizeof (DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS) +#define DOT11_MANUFACTURING_TEST_REVISION_1 1 +#define DOT11_MANUFACTURING_CALLBACK_REVISION_1 1 +#define DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS_REVISION_1 1 +#define OID_DOT11_MANUFACTURING_TEST NWF_DEFINE_OID (0x01, NWF_MANUFACTURING_OID, NWF_OPTIONAL_OID) +typedef enum _DOT11_MANUFACTURING_TEST_TYPE { + dot11_manufacturing_test_unknown = 0, + dot11_manufacturing_test_self_start = 1, + dot11_manufacturing_test_self_query_result = 2, + dot11_manufacturing_test_rx = 3, + dot11_manufacturing_test_tx = 4, + dot11_manufacturing_test_query_adc = 5, + dot11_manufacturing_test_set_data = 6, + dot11_manufacturing_test_query_data = 7, + dot11_manufacturing_test_sleep = 8, + dot11_manufacturing_test_awake = 9, + dot11_manufacturing_test_IHV_start = 0x80000000, + dot11_manufacturing_test_IHV_end = 0xffffffff +} DOT11_MANUFACTURING_TEST_TYPE, *PDOT11_MANUFACTURING_TEST_TYPE; +typedef struct _DOT11_MANUFACTURING_TEST { + DOT11_MANUFACTURING_TEST_TYPE dot11ManufacturingTestType; + ULONG uBufferLength; + UCHAR ucBuffer[1]; +} DOT11_MANUFACTURING_TEST, *PDOT11_MANUFACTURING_TEST; +typedef enum DOT11_MANUFACTURING_SELF_TEST_TYPE { + DOT11_MANUFACTURING_SELF_TEST_TYPE_INTERFACE = 1, + DOT11_MANUFACTURING_SELF_TEST_TYPE_RF_INTERFACE, + DOT11_MANUFACTURING_SELF_TEST_TYPE_BT_COEXISTENCE +} DOT11_MANUFACTURING_SELF_TEST_TYPE, *PDOT11_MANUFACTURING_SELF_TEST_TYPE; +typedef struct _DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS { + DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType; + ULONG uTestID; + ULONG uPinBitMask; + PVOID pvContext; + ULONG uBufferLength; + UCHAR ucBufferIn[1]; +} DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS, *PDOT11_MANUFACTURING_SELF_TEST_SET_PARAMS; +typedef struct _DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS { + DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType; + ULONG uTestID; + BOOLEAN bResult; + ULONG uPinFailedBitMask; + PVOID pvContext; + ULONG uBytesWrittenOut; + UCHAR ucBufferOut[1]; +} DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS, *PDOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS; +typedef enum DOT11_BAND { + dot11_band_2p4g = 1, + dot11_band_4p9g, + dot11_band_5g +} DOT11_BAND, *PDOT11_BAND; +typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX { + BOOLEAN bEnabled; + DOT11_BAND Dot11Band; + ULONG uChannel; + LONG PowerLevel; +} DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_RX; +typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX { + BOOLEAN bEnable; + BOOLEAN bOpenLoop; + DOT11_BAND Dot11Band; + ULONG uChannel; + ULONG uSetPowerLevel; + LONG ADCPowerLevel; +} DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_TX; +typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC { + DOT11_BAND Dot11Band; + ULONG uChannel; + LONG ADCPowerLevel; +} DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC; +typedef struct _DOT11_MANUFACTURING_TEST_SET_DATA { + ULONG uKey; + ULONG uOffset; + ULONG uBufferLength; + UCHAR ucBufferIn[1]; +} DOT11_MANUFACTURING_TEST_SET_DATA, *PDOT11_MANUFACTURING_TEST_SET_DATA; +typedef struct _DOT11_MANUFACTURING_TEST_QUERY_DATA { + ULONG uKey; + ULONG uOffset; + ULONG uBufferLength; + ULONG uBytesRead; + UCHAR ucBufferOut[1]; +} DOT11_MANUFACTURING_TEST_QUERY_DATA, *PDOT11_MANUFACTURING_TEST_QUERY_DATA; +typedef struct _DOT11_MANUFACTURING_TEST_SLEEP { + ULONG uSleepTime; + PVOID pvContext; +} DOT11_MANUFACTURING_TEST_SLEEP, *PDOT11_MANUFACTURING_TEST_SLEEP; +typedef enum _DOT11_MANUFACTURING_CALLBACK_TYPE { + dot11_manufacturing_callback_unknown = 0, + dot11_manufacturing_callback_self_test_complete = 1, + dot11_manufacturing_callback_sleep_complete = 2, + dot11_manufacturing_callback_IHV_start = 0x80000000, + dot11_manufacturing_callback_IHV_end = 0xffffffff +} DOT11_MANUFACTURING_CALLBACK_TYPE, *PDOT11_MANUFACTURING_CALLBACK_TYPE; +typedef struct DOT11_MANUFACTURING_CALLBACK_PARAMETERS { + NDIS_OBJECT_HEADER Header; + DOT11_MANUFACTURING_CALLBACK_TYPE dot11ManufacturingCallbackType; + ULONG uStatus; + PVOID pvContext; +} DOT11_MANUFACTURING_CALLBACK_PARAMETERS, *PDOT11_MANUFACTURING_CALLBACK_PARAMETERS; +#define fNDIS_GUID_TO_OID 0x00000001 +#define fNDIS_GUID_TO_STATUS 0x00000002 +#define fNDIS_GUID_ANSI_STRING 0x00000004 +#define fNDIS_GUID_UNICODE_STRING 0x00000008 +#define fNDIS_GUID_ARRAY 0x00000010 +#define fNDIS_GUID_ALLOW_READ 0x00000020 +#define fNDIS_GUID_ALLOW_WRITE 0x00000040 +#define fNDIS_GUID_METHOD 0x00000080 +#define fNDIS_GUID_NDIS_RESERVED 0x00000100 +#define fNDIS_GUID_SUPPORT_COMMON_HEADER 0x00000200 +#define NDIS_PACKET_TYPE_DIRECTED 0x00000001 +#define NDIS_PACKET_TYPE_MULTICAST 0x00000002 +#define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004 +#define NDIS_PACKET_TYPE_BROADCAST 0x00000008 +#define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010 +#define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020 +#define NDIS_PACKET_TYPE_SMT 0x00000040 +#define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080 +#define NDIS_PACKET_TYPE_GROUP 0x00001000 +#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000 +#define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000 +#define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000 +#define NDIS_PACKET_TYPE_NO_LOCAL 0x00010000 +#define NDIS_RING_SIGNAL_LOSS 0x00008000 +#define NDIS_RING_HARD_ERROR 0x00004000 +#define NDIS_RING_SOFT_ERROR 0x00002000 +#define NDIS_RING_TRANSMIT_BEACON 0x00001000 +#define NDIS_RING_LOBE_WIRE_FAULT 0x00000800 +#define NDIS_RING_AUTO_REMOVAL_ERROR 0x00000400 +#define NDIS_RING_REMOVE_RECEIVED 0x00000200 +#define NDIS_RING_COUNTER_OVERFLOW 0x00000100 +#define NDIS_RING_SINGLE_STATION 0x00000080 +#define NDIS_RING_RING_RECOVERY 0x00000040 +#define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001 +#define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002 +#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004 +#define NDIS_PROT_OPTION_SEND_RESTRICTED 0x00000008 +#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001 +#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002 +#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004 +#define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008 +#define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010 +#define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020 +#define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040 +#define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00000080 +#define NDIS_MAC_OPTION_RECEIVE_AT_DPC 0x00000100 +#define NDIS_MAC_OPTION_8021Q_VLAN 0x00000200 +#define NDIS_MAC_OPTION_RESERVED 0x80000000 +#define NDIS_MEDIA_CAP_TRANSMIT 0x00000001 +#define NDIS_MEDIA_CAP_RECEIVE 0x00000002 +#define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED 0x00000001 + typedef struct _NDIS_GUID { + GUID Guid; + __extension__ union { + NDIS_OID Oid; + NDIS_STATUS Status; + }; + ULONG Size; + ULONG Flags; + } NDIS_GUID, *PNDIS_GUID; + typedef struct _NDIS_IRDA_PACKET_INFO { + ULONG ExtraBOFs; + ULONG MinTurnAroundTime; + } NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO; +#define NDIS_MAKE_NET_LUID(PNLUID,IFTYPE,NLUIDIDX) { (PNLUID)->Info.IfType = IFTYPE; (PNLUID)->Info.NetLuidIndex = NLUIDIDX; (PNLUID)->Info.Reserved = 0; } +#define MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED 32 +#define NDIS_IF_MAX_STRING_SIZE IF_MAX_STRING_SIZE +#define NDIS_MAX_PHYS_ADDRESS_LENGTH IF_MAX_PHYS_ADDRESS_LENGTH +#define NDIS_LINK_STATE_XMIT_LINK_SPEED_AUTO_NEGOTIATED 0x00000001 +#define NDIS_LINK_STATE_RCV_LINK_SPEED_AUTO_NEGOTIATED 0x00000002 +#define NDIS_LINK_STATE_DUPLEX_AUTO_NEGOTIATED 0x00000004 +#define NDIS_LINK_STATE_PAUSE_FUNCTIONS_AUTO_NEGOTIATED 0x00000008 +#define NDIS_LINK_STATE_REVISION_1 1 +#define NDIS_LINK_PARAMETERS_REVISION_1 1 +#define NDIS_OPER_STATE_REVISION_1 1 +#define NDIS_IP_OPER_STATUS_INFO_REVISION_1 1 +#define NDIS_IP_OPER_STATE_REVISION_1 1 +#define NDIS_SIZEOF_LINK_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_STATE, AutoNegotiationFlags) +#define NDIS_SIZEOF_LINK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_PARAMETERS, AutoNegotiationFlags) +#define NDIS_SIZEOF_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OPER_STATE, OperationalStatusFlags) +#define NDIS_SIZEOF_IP_OPER_STATUS_INFO_REVISION_1 FIELD_OFFSET (NDIS_IP_OPER_STATUS_INFO, IpOperationalStatus) + MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED *sizeof (NDIS_IP_OPER_STATUS) +#define NDIS_SIZEOF_IP_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_IP_OPER_STATE, IpOperationalStatus) + typedef IF_COUNTED_STRING NDIS_IF_COUNTED_STRING, *PNDIS_IF_COUNTED_STRING; + typedef IF_PHYSICAL_ADDRESS NDIS_IF_PHYSICAL_ADDRESS, *PNDIS_IF_PHYSICAL_ADDRESS; + typedef NET_IF_MEDIA_CONNECT_STATE NDIS_MEDIA_CONNECT_STATE, *PNDIS_MEDIA_CONNECT_STATE; + typedef NET_IF_MEDIA_DUPLEX_STATE NDIS_MEDIA_DUPLEX_STATE, *PNDIS_MEDIA_DUPLEX_STATE; + typedef enum _NDIS_SUPPORTED_PAUSE_FUNCTIONS { + NdisPauseFunctionsUnsupported, + NdisPauseFunctionsSendOnly, + NdisPauseFunctionsReceiveOnly, + NdisPauseFunctionsSendAndReceive, + NdisPauseFunctionsUnknown + } NDIS_SUPPORTED_PAUSE_FUNCTIONS, *PNDIS_SUPPORTED_PAUSE_FUNCTIONS; + typedef struct _NDIS_LINK_STATE { + NDIS_OBJECT_HEADER Header; + NDIS_MEDIA_CONNECT_STATE MediaConnectState; + NDIS_MEDIA_DUPLEX_STATE MediaDuplexState; + ULONG64 XmitLinkSpeed; + ULONG64 RcvLinkSpeed; + NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions; + ULONG AutoNegotiationFlags; + } NDIS_LINK_STATE, *PNDIS_LINK_STATE; + typedef struct _NDIS_LINK_PARAMETERS { + NDIS_OBJECT_HEADER Header; + NDIS_MEDIA_DUPLEX_STATE MediaDuplexState; + ULONG64 XmitLinkSpeed; + ULONG64 RcvLinkSpeed; + NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions; + ULONG AutoNegotiationFlags; + } NDIS_LINK_PARAMETERS, *PNDIS_LINK_PARAMETERS; + typedef struct _NDIS_OPER_STATE { + NDIS_OBJECT_HEADER Header; + NET_IF_OPER_STATUS OperationalStatus; + ULONG OperationalStatusFlags; + } NDIS_OPER_STATE, *PNDIS_OPER_STATE; + typedef struct _NDIS_IP_OPER_STATUS { + ULONG AddressFamily; + NET_IF_OPER_STATUS OperationalStatus; + ULONG OperationalStatusFlags; + } NDIS_IP_OPER_STATUS, *PNDIS_IP_OPER_STATUS; + typedef struct _NDIS_IP_OPER_STATUS_INFO { + NDIS_OBJECT_HEADER Header; + ULONG Flags; + ULONG NumberofAddressFamiliesReturned; + NDIS_IP_OPER_STATUS IpOperationalStatus[32]; + } NDIS_IP_OPER_STATUS_INFO, *PNDIS_IP_OPER_STATUS_INFO; + typedef struct _NDIS_IP_OPER_STATE { + NDIS_OBJECT_HEADER Header; + ULONG Flags; + NDIS_IP_OPER_STATUS IpOperationalStatus; + } NDIS_IP_OPER_STATE, *PNDIS_IP_OPER_STATE; +#define NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 0 +#define NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED 1 +#define NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED 2 +#define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3 +#define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4 +#define NDIS_OFFLOAD_PARAMETERS_LSOV1_DISABLED 1 +#define NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED 2 +#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_DISABLED 1 +#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_ENABLED 2 +#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_ESP_ENABLED 3 +#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_AND_ESP_ENABLED 4 +#define NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED 1 +#define NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 2 +#define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_DISABLED 1 +#define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_ENABLED 2 +#define NDIS_OFFLOAD_PARAMETERS_REVISION_1 1 + typedef struct _NDIS_OFFLOAD_PARAMETERS { + NDIS_OBJECT_HEADER Header; + UCHAR IPv4Checksum; + UCHAR TCPIPv4Checksum; + UCHAR UDPIPv4Checksum; + UCHAR TCPIPv6Checksum; + UCHAR UDPIPv6Checksum; + UCHAR LsoV1; + UCHAR IPsecV1; + UCHAR LsoV2IPv4; + UCHAR LsoV2IPv6; + UCHAR TcpConnectionIPv4; + UCHAR TcpConnectionIPv6; + ULONG Flags; + } NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS; +#define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, Flags) +#define NDIS_OFFLOAD_NOT_SUPPORTED 0 +#define NDIS_OFFLOAD_SUPPORTED 1 +#define NDIS_OFFLOAD_SET_NO_CHANGE 0 +#define NDIS_OFFLOAD_SET_ON 1 +#define NDIS_OFFLOAD_SET_OFF 2 +#define NDIS_ENCAPSULATION_NOT_SUPPORTED 0x00000000 +#define NDIS_ENCAPSULATION_NULL 0x00000001 +#define NDIS_ENCAPSULATION_IEEE_802_3 0x00000002 +#define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q 0x00000004 +#define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB 0x00000008 +#define NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED 0x00000010 + typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V1 { + struct { + ULONG Encapsulation; + ULONG MaxOffLoadSize; + ULONG MinSegmentCount; + ULONG TcpOptions:2; + ULONG IpOptions:2; + } IPv4; + } NDIS_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V1; + typedef struct _NDIS_TCP_IP_CHECKSUM_OFFLOAD { + struct { + ULONG Encapsulation; + ULONG IpOptionsSupported:2; + ULONG TcpOptionsSupported:2; + ULONG TcpChecksum:2; + ULONG UdpChecksum:2; + ULONG IpChecksum:2; + } IPv4Transmit; + struct { + ULONG Encapsulation; + ULONG IpOptionsSupported:2; + ULONG TcpOptionsSupported:2; + ULONG TcpChecksum:2; + ULONG UdpChecksum:2; + ULONG IpChecksum:2; + } IPv4Receive; + struct { + ULONG Encapsulation; + ULONG IpExtensionHeadersSupported:2; + ULONG TcpOptionsSupported:2; + ULONG TcpChecksum:2; + ULONG UdpChecksum:2; + } IPv6Transmit; + struct { + ULONG Encapsulation; + ULONG IpExtensionHeadersSupported:2; + ULONG TcpOptionsSupported:2; + ULONG TcpChecksum:2; + ULONG UdpChecksum:2; + } IPv6Receive; + } NDIS_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_TCP_IP_CHECKSUM_OFFLOAD; + typedef struct _NDIS_IPSEC_OFFLOAD_V1 { + struct { + ULONG Encapsulation; + ULONG AhEspCombined; + ULONG TransportTunnelCombined; + ULONG IPv4Options; + ULONG Flags; + } Supported; + struct { + ULONG Md5 : 2; + ULONG Sha_1 : 2; + ULONG Transport : 2; + ULONG Tunnel : 2; + ULONG Send : 2; + ULONG Receive : 2; + } IPv4AH; + struct { + ULONG Des : 2; + ULONG Reserved : 2; + ULONG TripleDes : 2; + ULONG NullEsp : 2; + ULONG Transport : 2; + ULONG Tunnel : 2; + ULONG Send : 2; + ULONG Receive : 2; + } IPv4ESP; + } NDIS_IPSEC_OFFLOAD_V1, *PNDIS_IPSEC_OFFLOAD_V1; + typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V2 { + struct { + ULONG Encapsulation; + ULONG MaxOffLoadSize; + ULONG MinSegmentCount; + }IPv4; + struct { + ULONG Encapsulation; + ULONG MaxOffLoadSize; + ULONG MinSegmentCount; + ULONG IpExtensionHeadersSupported:2; + ULONG TcpOptionsSupported:2; + } IPv6; + } NDIS_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V2; +#define NDIS_OFFLOAD_FLAGS_GROUP_CHECKSUM_CAPABILITIES 0x1 +#define NDIS_MAXIMUM_PORTS 0x1000000 +#define NDIS_DEFAULT_PORT_NUMBER ((NDIS_PORT_NUMBER) 0) +#define NDIS_WMI_DEFAULT_METHOD_ID 1 +#define NDIS_WMI_OBJECT_TYPE_SET 0x01 +#define NDIS_WMI_OBJECT_TYPE_METHOD 0x02 +#define NDIS_WMI_OBJECT_TYPE_EVENT 0x03 +#define NDIS_WMI_OBJECT_TYPE_ENUM_ADAPTER 0x04 +#define NDIS_WMI_OBJECT_TYPE_OUTPUT_INFO 0x05 +#define NDIS_DEVICE_TYPE_ENDPOINT 0x00000001 +#define NDIS_OFFLOAD_REVISION_1 1 +#define NDIS_TCP_CONNECTION_OFFLOAD_REVISION_1 1 +#define NDIS_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 1 +#define NDIS_WMI_METHOD_HEADER_REVISION_1 1 +#define NDIS_WMI_SET_HEADER_REVISION_1 1 +#define NDIS_WMI_EVENT_HEADER_REVISION_1 1 +#define NDIS_WMI_ENUM_ADAPTER_REVISION_1 1 +#define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, Flags) +#define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, Flags) +#define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_CONNECTION_OFFLOAD, Flags) +#define NDIS_SIZEOF_WMI_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_TCP_CONNECTION_OFFLOAD, Flags) +#define NDIS_SIZEOF_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_AUTHENTICATION_PARAMETERS, RcvAuthorizationState) +#define NDIS_SIZEOF_WMI_METHOD_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_METHOD_HEADER, Padding) +#define NDIS_SIZEOF_WMI_SET_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_SET_HEADER, Padding) +#define NDIS_SIZEOF_WMI_EVENT_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_EVENT_HEADER, Padding) +#define NDIS_SIZEOF_WMI_ENUM_ADAPTER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_ENUM_ADAPTER, DeviceName) + typedef struct _NDIS_OFFLOAD { + NDIS_OBJECT_HEADER Header; + NDIS_TCP_IP_CHECKSUM_OFFLOAD Checksum; + NDIS_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1; + NDIS_IPSEC_OFFLOAD_V1 IPsecV1; + NDIS_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2; + ULONG Flags; + } NDIS_OFFLOAD, *PNDIS_OFFLOAD; + typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 { + struct { + ULONG Encapsulation; + ULONG MaxOffLoadSize; + ULONG MinSegmentCount; + ULONG TcpOptions; + ULONG IpOptions; + } IPv4; + } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1; + typedef struct _NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD { + struct { + ULONG Encapsulation; + ULONG IpOptionsSupported; + ULONG TcpOptionsSupported; + ULONG TcpChecksum; + ULONG UdpChecksum; + ULONG IpChecksum; + } IPv4Transmit; + struct { + ULONG Encapsulation; + ULONG IpOptionsSupported; + ULONG TcpOptionsSupported; + ULONG TcpChecksum; + ULONG UdpChecksum; + ULONG IpChecksum; + } IPv4Receive; + struct { + ULONG Encapsulation; + ULONG IpExtensionHeadersSupported; + ULONG TcpOptionsSupported; + ULONG TcpChecksum; + ULONG UdpChecksum; + } IPv6Transmit; + struct { + ULONG Encapsulation; + ULONG IpExtensionHeadersSupported; + ULONG TcpOptionsSupported; + ULONG TcpChecksum; + ULONG UdpChecksum; + } IPv6Receive; + } NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD; + typedef struct _NDIS_WMI_IPSEC_OFFLOAD_V1 { + struct { + ULONG Encapsulation; + ULONG AhEspCombined; + ULONG TransportTunnelCombined; + ULONG IPv4Options; + ULONG Flags; + } Supported; + struct { + ULONG Md5; + ULONG Sha_1; + ULONG Transport; + ULONG Tunnel; + ULONG Send; + ULONG Receive; + } IPv4AH; + struct { + ULONG Des; + ULONG Reserved; + ULONG TripleDes; + ULONG NullEsp; + ULONG Transport; + ULONG Tunnel; + ULONG Send; + ULONG Receive; + } IPv4ESP; + } NDIS_WMI_IPSEC_OFFLOAD_V1, *PNDIS_WMI_IPSEC_OFFLOAD_V1; + typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 { + struct { + ULONG Encapsulation; + ULONG MaxOffLoadSize; + ULONG MinSegmentCount; + } IPv4; + struct { + ULONG Encapsulation; + ULONG MaxOffLoadSize; + ULONG MinSegmentCount; + ULONG IpExtensionHeadersSupported; + ULONG TcpOptionsSupported; + } IPv6; + } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2; + typedef struct _NDIS_WMI_OFFLOAD { + NDIS_OBJECT_HEADER Header; + NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD Checksum; + NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1; + NDIS_WMI_IPSEC_OFFLOAD_V1 IPsecV1; + NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2; + ULONG Flags; + } NDIS_WMI_OFFLOAD, *PNDIS_WMI_OFFLOAD; + typedef struct _NDIS_TCP_CONNECTION_OFFLOAD { + NDIS_OBJECT_HEADER Header; + ULONG Encapsulation; + ULONG SupportIPv4:2; + ULONG SupportIPv6:2; + ULONG SupportIPv6ExtensionHeaders:2; + ULONG SupportSack:2; + ULONG TcpConnectionOffloadCapacity; + ULONG Flags; + } NDIS_TCP_CONNECTION_OFFLOAD, *PNDIS_TCP_CONNECTION_OFFLOAD; + typedef struct _NDIS_WMI_TCP_CONNECTION_OFFLOAD { + NDIS_OBJECT_HEADER Header; + ULONG Encapsulation; + ULONG SupportIPv4; + ULONG SupportIPv6; + ULONG SupportIPv6ExtensionHeaders; + ULONG SupportSack; + ULONG TcpConnectionOffloadCapacity; + ULONG Flags; + } NDIS_WMI_TCP_CONNECTION_OFFLOAD, *PNDIS_WMI_TCP_CONNECTION_OFFLOAD; + typedef ULONG NDIS_PORT_NUMBER, *PNDIS_PORT_NUMBER; + typedef enum _NDIS_PORT_TYPE { + NdisPortTypeUndefined, + NdisPortTypeBridge, + NdisPortTypeRasConnection, + NdisPortType8021xSupplicant, + NdisPortTypeMax, + } NDIS_PORT_TYPE, *PNDIS_PORT_TYPE; + typedef enum _NDIS_PORT_AUTHORIZATION_STATE { + NdisPortAuthorizationUnknown, + NdisPortAuthorized, + NdisPortUnauthorized, + NdisPortReauthorizing + } NDIS_PORT_AUTHORIZATION_STATE, *PNDIS_PORT_AUTHORIZATION_STATE; + typedef enum _NDIS_PORT_CONTROL_STATE { + NdisPortControlStateUnknown, + NdisPortControlStateControlled, + NdisPortControlStateUncontrolled + } NDIS_PORT_CONTROL_STATE, *PNDIS_PORT_CONTROL_STATE; + typedef NDIS_PORT_CONTROL_STATE NDIS_PORT_CONTROLL_STATE; + typedef PNDIS_PORT_CONTROL_STATE PNDIS_PORT_CONTROLL_STATE; + typedef struct _NDIS_PORT_AUTHENTICATION_PARAMETERS { + NDIS_OBJECT_HEADER Header; + NDIS_PORT_CONTROL_STATE SendControlState; + NDIS_PORT_CONTROL_STATE RcvControlState; + NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState; + NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState; + } NDIS_PORT_AUTHENTICATION_PARAMETERS, *PNDIS_PORT_AUTHENTICATION_PARAMETERS; + typedef enum _NDIS_NETWORK_CHANGE_TYPE { + NdisPossibleNetworkChange = 1, + NdisDefinitelyNetworkChange, + NdisNetworkChangeFromMediaConnect, + NdisNetworkChangeMax + } NDIS_NETWORK_CHANGE_TYPE, *PNDIS_NETWORK_CHANGE_TYPE; + typedef struct _NDIS_WMI_METHOD_HEADER { + NDIS_OBJECT_HEADER Header; + NDIS_PORT_NUMBER PortNumber; + NET_LUID NetLuid; + ULONG64 RequestId; + ULONG Timeout; + UCHAR Padding[4]; + } NDIS_WMI_METHOD_HEADER, *PNDIS_WMI_METHOD_HEADER; + typedef struct _NDIS_WMI_SET_HEADER { + NDIS_OBJECT_HEADER Header; + NDIS_PORT_NUMBER PortNumber; + NET_LUID NetLuid; + ULONG64 RequestId; + ULONG Timeout; + UCHAR Padding[4]; + } NDIS_WMI_SET_HEADER, *PNDIS_WMI_SET_HEADER; + typedef struct _NDIS_WMI_EVENT_HEADER { + NDIS_OBJECT_HEADER Header; + NET_IFINDEX IfIndex; + NET_LUID NetLuid; + ULONG64 RequestId; + NDIS_PORT_NUMBER PortNumber; + ULONG DeviceNameLength; + ULONG DeviceNameOffset; + UCHAR Padding[4]; + } NDIS_WMI_EVENT_HEADER, *PNDIS_WMI_EVENT_HEADER; + typedef struct _NDIS_WMI_ENUM_ADAPTER { + NDIS_OBJECT_HEADER Header; + NET_IFINDEX IfIndex; + NET_LUID NetLuid; + USHORT DeviceNameLength; + CHAR DeviceName[1]; + } NDIS_WMI_ENUM_ADAPTER, *PNDIS_WMI_ENUM_ADAPTER; +#define NDIS_WMI_OUTPUT_INFO_REVISION_1 1 + typedef struct NDIS_WMI_OUTPUT_INFO { + NDIS_OBJECT_HEADER Header; + ULONG Flags; + UCHAR SupportedRevision; + ULONG DataOffset; + } NDIS_WMI_OUTPUT_INFO, *PNDIS_WMI_OUTPUT_INFO; +#define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000 +#define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000 +#define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000 +#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100 +#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200 +#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400 +#define NdisHashFunctionToeplitz 0x00000001 +#define NdisHashFunctionReserved1 0x00000002 +#define NdisHashFunctionReserved2 0x00000004 +#define NdisHashFunctionReserved3 0x00000008 +#define NDIS_HASH_FUNCTION_MASK 0x000000ff +#define NDIS_HASH_TYPE_MASK 0x00ffff00 +#define NDIS_RSS_HASH_FUNC_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_FUNCTION_MASK)) +#define NDIS_RSS_HASH_TYPE_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_TYPE_MASK)) +#define NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC(HTYPE,HFCT) ((HTYPE) | (HFCT)) +#define NDIS_HASH_IPV4 0x00000100 +#define NDIS_HASH_TCP_IPV4 0x00000200 +#define NDIS_HASH_IPV6 0x00000400 +#define NDIS_HASH_IPV6_EX 0x00000800 +#define NDIS_HASH_TCP_IPV6 0x00001000 +#define NDIS_HASH_TCP_IPV6_EX 0x00002000 +#define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED 0x0001 +#define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED 0x0002 +#define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 0x0004 +#define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 0x0008 +#define NDIS_RSS_PARAM_FLAG_DISABLE_RSS 0x0010 +#define NDIS_RSS_INDIRECTION_TABLE_SIZE_REVISION_1 128 +#define NDIS_RSS_HASH_SECRET_KEY_SIZE_REVISION_1 40 +#define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_1 128 +#define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_1 40 +#define NDIS_RECEIVE_HASH_FLAG_ENABLE_HASH 0x00000001 +#define NDIS_RECEIVE_HASH_FLAG_HASH_INFO_UNCHANGED 0x00000002 +#define NDIS_RECEIVE_HASH_FLAG_HASH_KEY_UNCHANGED 0x00000004 +#define NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS 0x00000001 +#define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 1 +#define NDIS_RECEIVE_HASH_PARAMETERS_REVISION_1 1 +#define NDIS_PORT_STATE_REVISION_1 1 +#define NDIS_PORT_CHARACTERISTICS_REVISION_1 1 +#define NDIS_PORT_ARRAY_REVISION_1 1 +#define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 1 +#define NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_CAPABILITIES, NumberOfReceiveQueues) +#define NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_PARAMETERS, HashSecretKeyOffset) +#define NDIS_SIZEOF_RECEIVE_HASH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_HASH_PARAMETERS, HashSecretKeyOffset) +#define NDIS_SIZEOF_PORT_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_STATE, Flags) +#define NDIS_SIZEOF_PORT_CHARACTERISTICS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_CHARACTERISTICS, RcvAuthorizationState) +#define NDIS_SIZEOF_PORT_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_ARRAY, Ports) + typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES { + NDIS_OBJECT_HEADER Header; + ULONG CapabilitiesFlags; + ULONG NumberOfInterruptMessages; + ULONG NumberOfReceiveQueues; + } NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES; + typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS { + NDIS_OBJECT_HEADER Header; + USHORT Flags; + USHORT BaseCpuNumber; + ULONG HashInformation; + USHORT IndirectionTableSize; + ULONG IndirectionTableOffset; + USHORT HashSecretKeySize; + ULONG HashSecretKeyOffset; + } NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS; + typedef struct _NDIS_RECEIVE_HASH_PARAMETERS { + NDIS_OBJECT_HEADER Header; + ULONG Flags; + ULONG HashInformation; + USHORT HashSecretKeySize; + ULONG HashSecretKeyOffset; + } NDIS_RECEIVE_HASH_PARAMETERS, *PNDIS_RECEIVE_HASH_PARAMETERS; + typedef enum _NDIS_PROCESSOR_VENDOR { + NdisProcessorVendorUnknown, + NdisProcessorVendorGenuinIntel, + NdisProcessorVendorGenuineIntel = NdisProcessorVendorGenuinIntel, + NdisProcessorVendorAuthenticAMD + } NDIS_PROCESSOR_VENDOR, *PNDIS_PROCESSOR_VENDOR; + typedef struct _NDIS_PORT_STATE { + NDIS_OBJECT_HEADER Header; + NDIS_MEDIA_CONNECT_STATE MediaConnectState; + ULONG64 XmitLinkSpeed; + ULONG64 RcvLinkSpeed; + NET_IF_DIRECTION_TYPE Direction; + NDIS_PORT_CONTROL_STATE SendControlState; + NDIS_PORT_CONTROL_STATE RcvControlState; + NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState; + NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState; + ULONG Flags; + } NDIS_PORT_STATE, *PNDIS_PORT_STATE; + typedef struct _NDIS_PORT_CHARACTERISTICS { + NDIS_OBJECT_HEADER Header; + NDIS_PORT_NUMBER PortNumber; + ULONG Flags; + NDIS_PORT_TYPE Type; + NDIS_MEDIA_CONNECT_STATE MediaConnectState; + ULONG64 XmitLinkSpeed; + ULONG64 RcvLinkSpeed; + NET_IF_DIRECTION_TYPE Direction; + NDIS_PORT_CONTROL_STATE SendControlState; + NDIS_PORT_CONTROL_STATE RcvControlState; + NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState; + NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState; + } NDIS_PORT_CHARACTERISTICS, *PNDIS_PORT_CHARACTERISTICS; + typedef struct _NDIS_PORT NDIS_PORT, *PNDIS_PORT; + struct _NDIS_PORT { + PNDIS_PORT Next; + PVOID NdisReserved; + PVOID MiniportReserved; + PVOID ProtocolReserved; + NDIS_PORT_CHARACTERISTICS PortCharacteristics; + }; + typedef struct _NDIS_PORT_ARRAY { + NDIS_OBJECT_HEADER Header; + ULONG NumberOfPorts; + ULONG OffsetFirstPort; + ULONG ElementSize; + NDIS_PORT_CHARACTERISTICS Ports[1]; + } NDIS_PORT_ARRAY, *PNDIS_PORT_ARRAY; + +#define MIB_INVALID_TEREDO_PORT_NUMBER 0 + typedef enum _MIB_IF_TABLE_LEVEL { + MibIfTableNormal, + MibIfTableRaw + } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL; + typedef struct _MIB_IF_ROW2 { + NET_LUID InterfaceLuid; + NET_IFINDEX InterfaceIndex; + GUID InterfaceGuid; + WCHAR Alias[256 + 1]; + WCHAR Description[256 + 1]; + ULONG PhysicalAddressLength; + UCHAR PhysicalAddress[32]; + UCHAR PermanentPhysicalAddress[32]; + ULONG Mtu; + IFTYPE Type; + TUNNEL_TYPE TunnelType; + NDIS_MEDIUM MediaType; + NDIS_PHYSICAL_MEDIUM PhysicalMediumType; + NET_IF_ACCESS_TYPE AccessType; + NET_IF_DIRECTION_TYPE DirectionType; + struct { + BOOLEAN HardwareInterface : 1; + BOOLEAN FilterInterface : 1; + BOOLEAN ConnectorPresent : 1; + BOOLEAN NotAuthenticated : 1; + BOOLEAN NotMediaConnected : 1; + BOOLEAN Paused : 1; + BOOLEAN LowPower : 1; + BOOLEAN EndPointInterface : 1; + } InterfaceAndOperStatusFlags; + IF_OPER_STATUS OperStatus; + NET_IF_ADMIN_STATUS AdminStatus; + NET_IF_MEDIA_CONNECT_STATE MediaConnectState; + NET_IF_NETWORK_GUID NetworkGuid; + NET_IF_CONNECTION_TYPE ConnectionType; + ULONG64 TransmitLinkSpeed; + ULONG64 ReceiveLinkSpeed; + ULONG64 InOctets; + ULONG64 InUcastPkts; + ULONG64 InNUcastPkts; + ULONG64 InDiscards; + ULONG64 InErrors; + ULONG64 InUnknownProtos; + ULONG64 InUcastOctets; + ULONG64 InMulticastOctets; + ULONG64 InBroadcastOctets; + ULONG64 OutOctets; + ULONG64 OutUcastPkts; + ULONG64 OutNUcastPkts; + ULONG64 OutDiscards; + ULONG64 OutErrors; + ULONG64 OutUcastOctets; + ULONG64 OutMulticastOctets; + ULONG64 OutBroadcastOctets; + ULONG64 OutQLen; + } MIB_IF_ROW2,*PMIB_IF_ROW2; + typedef struct _MIB_IF_TABLE2 { + ULONG NumEntries; + MIB_IF_ROW2 Table[1]; + } MIB_IF_TABLE2, *PMIB_IF_TABLE2; + typedef struct _MIB_IPINTERFACE_ROW { + ADDRESS_FAMILY Family; + NET_LUID InterfaceLuid; + NET_IFINDEX InterfaceIndex; + ULONG MaxReassemblySize; + ULONG64 InterfaceIdentifier; + ULONG MinRouterAdvertisementInterval; + ULONG MaxRouterAdvertisementInterval; + BOOLEAN AdvertisingEnabled; + BOOLEAN ForwardingEnabled; + BOOLEAN WeakHostSend; + BOOLEAN WeakHostReceive; + BOOLEAN UseAutomaticMetric; + BOOLEAN UseNeighborUnreachabilityDetection; + BOOLEAN ManagedAddressConfigurationSupported; + BOOLEAN OtherStatefulConfigurationSupported; + BOOLEAN AdvertiseDefaultRoute; + NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior; + ULONG DadTransmits; + ULONG BaseReachableTime; + ULONG RetransmitTime; + ULONG PathMtuDiscoveryTimeout; + NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior; + ULONG LinkLocalAddressTimeout; + ULONG ZoneIndices[ScopeLevelCount]; + ULONG SitePrefixLength; + ULONG Metric; + ULONG NlMtu; + BOOLEAN Connected; + BOOLEAN SupportsWakeUpPatterns; + BOOLEAN SupportsNeighborDiscovery; + BOOLEAN SupportsRouterDiscovery; + ULONG ReachableTime; + NL_INTERFACE_OFFLOAD_ROD TransmitOffload; + NL_INTERFACE_OFFLOAD_ROD ReceiveOffload; + BOOLEAN DisableDefaultRoutes; + } MIB_IPINTERFACE_ROW,*PMIB_IPINTERFACE_ROW; + typedef struct _MIB_IPINTERFACE_TABLE { + ULONG NumEntries; + MIB_IPINTERFACE_ROW Table[1]; + } MIB_IPINTERFACE_TABLE,*PMIB_IPINTERFACE_TABLE; + typedef struct _MIB_IFSTACK_ROW { + NET_IFINDEX HigherLayerInterfaceIndex; + NET_IFINDEX LowerLayerInterfaceIndex; + } MIB_IFSTACK_ROW,*PMIB_IFSTACK_ROW; + typedef struct _MIB_INVERTEDIFSTACK_ROW { + NET_IFINDEX LowerLayerInterfaceIndex; + NET_IFINDEX HigherLayerInterfaceIndex; + } MIB_INVERTEDIFSTACK_ROW,*PMIB_INVERTEDIFSTACK_ROW; + typedef struct _MIB_IFSTACK_TABLE { + ULONG NumEntries; + MIB_IFSTACK_ROW Table[1]; + } MIB_IFSTACK_TABLE,*PMIB_IFSTACK_TABLE; + typedef struct _MIB_INVERTEDIFSTACK_TABLE { + ULONG NumEntries; + MIB_INVERTEDIFSTACK_ROW Table[1]; + } MIB_INVERTEDIFSTACK_TABLE,*PMIB_INVERTEDIFSTACK_TABLE; + typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES { + NL_BANDWIDTH_INFORMATION InboundBandwidthInformation; + NL_BANDWIDTH_INFORMATION OutboundBandwidthInformation; + } MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES, *PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES; + typedef struct _MIB_UNICASTIPADDRESS_ROW { + SOCKADDR_INET Address; + NET_LUID InterfaceLuid; + NET_IFINDEX InterfaceIndex; + NL_PREFIX_ORIGIN PrefixOrigin; + NL_SUFFIX_ORIGIN SuffixOrigin; + ULONG ValidLifetime; + ULONG PreferredLifetime; + UINT8 OnLinkPrefixLength; + BOOLEAN SkipAsSource; + NL_DAD_STATE DadState; + SCOPE_ID ScopeId; + LARGE_INTEGER CreationTimeStamp; + } MIB_UNICASTIPADDRESS_ROW,*PMIB_UNICASTIPADDRESS_ROW; + typedef struct _MIB_UNICASTIPADDRESS_TABLE { + ULONG NumEntries; + MIB_UNICASTIPADDRESS_ROW Table[1]; + } MIB_UNICASTIPADDRESS_TABLE,*PMIB_UNICASTIPADDRESS_TABLE; + typedef struct _MIB_ANYCASTIPADDRESS_ROW { + SOCKADDR_INET Address; + NET_LUID InterfaceLuid; + NET_IFINDEX InterfaceIndex; + SCOPE_ID ScopeId; + } MIB_ANYCASTIPADDRESS_ROW,*PMIB_ANYCASTIPADDRESS_ROW; + typedef struct _MIB_ANYCASTIPADDRESS_TABLE { + ULONG NumEntries; + MIB_ANYCASTIPADDRESS_ROW Table[1]; + } MIB_ANYCASTIPADDRESS_TABLE,*PMIB_ANYCASTIPADDRESS_TABLE; + typedef struct _MIB_MULTICASTIPADDRESS_ROW { + SOCKADDR_INET Address; + NET_IFINDEX InterfaceIndex; + NET_LUID InterfaceLuid; + SCOPE_ID ScopeId; + } MIB_MULTICASTIPADDRESS_ROW,*PMIB_MULTICASTIPADDRESS_ROW; + typedef struct _MIB_MULTICASTIPADDRESS_TABLE { + ULONG NumEntries; + MIB_MULTICASTIPADDRESS_ROW Table[1]; + } MIB_MULTICASTIPADDRESS_TABLE,*PMIB_MULTICASTIPADDRESS_TABLE; + typedef struct _IP_ADDRESS_PREFIX { + SOCKADDR_INET Prefix; + UINT8 PrefixLength; + } IP_ADDRESS_PREFIX,*PIP_ADDRESS_PREFIX; + typedef struct _MIB_IPFORWARD_ROW2 { + NET_LUID InterfaceLuid; + NET_IFINDEX InterfaceIndex; + IP_ADDRESS_PREFIX DestinationPrefix; + SOCKADDR_INET NextHop; + UCHAR SitePrefixLength; + ULONG ValidLifetime; + ULONG PreferredLifetime; + ULONG Metric; + NL_ROUTE_PROTOCOL Protocol; + BOOLEAN Loopback; + BOOLEAN AutoconfigureAddress; + BOOLEAN Publish; + BOOLEAN Immortal; + ULONG Age; + NL_ROUTE_ORIGIN Origin; + } MIB_IPFORWARD_ROW2,*PMIB_IPFORWARD_ROW2; + typedef struct _MIB_IPFORWARD_TABLE2 { + ULONG NumEntries; + MIB_IPFORWARD_ROW2 Table[1]; + } MIB_IPFORWARD_TABLE2,*PMIB_IPFORWARD_TABLE2; + typedef struct _MIB_IPPATH_ROW { + SOCKADDR_INET Source; + SOCKADDR_INET Destination; + NET_LUID InterfaceLuid; + NET_IFINDEX InterfaceIndex; + SOCKADDR_INET CurrentNextHop; + ULONG PathMtu; + ULONG RttMean; + ULONG RttDeviation; + __extension__ union { + ULONG LastReachable; + ULONG LastUnreachable; + }; + BOOLEAN IsReachable; + ULONG64 LinkTransmitSpeed; + ULONG64 LinkReceiveSpeed; + } MIB_IPPATH_ROW,*PMIB_IPPATH_ROW; + typedef struct _MIB_IPPATH_TABLE { + ULONG NumEntries; + MIB_IPPATH_ROW Table[1]; + } MIB_IPPATH_TABLE,*PMIB_IPPATH_TABLE; + typedef struct _MIB_IPNET_ROW2 { + SOCKADDR_INET Address; + NET_IFINDEX InterfaceIndex; + NET_LUID InterfaceLuid; + UCHAR PhysicalAddress[32]; + ULONG PhysicalAddressLength; + NL_NEIGHBOR_STATE State; + __extension__ union { + __extension__ struct { + BOOLEAN IsRouter : 1; + BOOLEAN IsUnreachable : 1; + }; + UCHAR Flags; + }; + union { + ULONG LastReachable; + ULONG LastUnreachable; + } ReachabilityTime; + } MIB_IPNET_ROW2, *PMIB_IPNET_ROW2; + typedef struct _MIB_IPNET_TABLE2 { + ULONG NumEntries; + MIB_IPNET_ROW2 Table[1]; + } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2; + typedef void (__attribute__((__stdcall__)) *PIPINTERFACE_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPINTERFACE_ROW Row, MIB_NOTIFICATION_TYPE NotificationType); + typedef void (__attribute__((__stdcall__)) *PUNICAST_IPADDRESS_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_ROW Row, MIB_NOTIFICATION_TYPE NotificationType); + typedef void (__attribute__((__stdcall__)) *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_TABLE AddressTable); + typedef void (__attribute__((__stdcall__)) *PTEREDO_PORT_CHANGE_CALLBACK) (PVOID CallerContext, USHORT Port, MIB_NOTIFICATION_TYPE NotificationType); + typedef void (__attribute__((__stdcall__)) *PIPFORWARD_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPFORWARD_ROW2 Row, MIB_NOTIFICATION_TYPE NotificationType); + DWORD __attribute__((__stdcall__)) GetIfEntry2 (PMIB_IF_ROW2 Row); + DWORD __attribute__((__stdcall__)) GetIfTable2 (PMIB_IF_TABLE2 *Table); + DWORD __attribute__((__stdcall__)) GetIfTable2Ex (MIB_IF_TABLE_LEVEL Level, PMIB_IF_TABLE2 *Table); + DWORD __attribute__((__stdcall__)) GetIfStackTable (PMIB_IFSTACK_TABLE *Table); + DWORD __attribute__((__stdcall__)) GetInvertedIfStackTable (PMIB_INVERTEDIFSTACK_TABLE *Table); + DWORD __attribute__((__stdcall__)) GetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row); + DWORD __attribute__((__stdcall__)) GetIpInterfaceTable (ADDRESS_FAMILY Family, PMIB_IPINTERFACE_TABLE *Table); + void __attribute__((__stdcall__)) InitializeIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row); + DWORD __attribute__((__stdcall__)) NotifyIpInterfaceChange (ADDRESS_FAMILY Family, PIPINTERFACE_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); + DWORD __attribute__((__stdcall__)) SetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row); + DWORD __attribute__((__stdcall__)) GetIpNetworkConnectionBandwidthEstimates (NET_IFINDEX InterfaceIndex, ADDRESS_FAMILY AddressFamily, PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES BandwidthEstimates); + DWORD __attribute__((__stdcall__)) CreateUnicastIpAddressEntry (const MIB_UNICASTIPADDRESS_ROW *Row); + DWORD __attribute__((__stdcall__)) DeleteUnicastIpAddressEntry (const MIB_UNICASTIPADDRESS_ROW *Row); + DWORD __attribute__((__stdcall__)) GetUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row); + DWORD __attribute__((__stdcall__)) GetUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table); + void __attribute__((__stdcall__)) InitializeUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row); + DWORD __attribute__((__stdcall__)) NotifyUnicastIpAddressChange (ADDRESS_FAMILY Family, PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); + DWORD __attribute__((__stdcall__)) CreateAnycastIpAddressEntry (const MIB_ANYCASTIPADDRESS_ROW *Row); + DWORD __attribute__((__stdcall__)) DeleteAnycastIpAddressEntry (const MIB_ANYCASTIPADDRESS_ROW *Row); + DWORD __attribute__((__stdcall__)) GetAnycastIpAddressEntry (PMIB_ANYCASTIPADDRESS_ROW Row); + DWORD __attribute__((__stdcall__)) GetAnycastIpAddressTable (ADDRESS_FAMILY Family, PMIB_ANYCASTIPADDRESS_TABLE *Table); + DWORD __attribute__((__stdcall__)) NotifyStableUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table, PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback, PVOID CallerContext, HANDLE *NotificationHandle); + DWORD __attribute__((__stdcall__)) SetUnicastIpAddressEntry (const MIB_UNICASTIPADDRESS_ROW *Row); + DWORD __attribute__((__stdcall__)) GetMulticastIpAddressEntry (PMIB_MULTICASTIPADDRESS_ROW Row); + DWORD __attribute__((__stdcall__)) GetMulticastIpAddressTable (ADDRESS_FAMILY Family, PMIB_MULTICASTIPADDRESS_TABLE *Table); + DWORD __attribute__((__stdcall__)) CreateIpForwardEntry2 (const MIB_IPFORWARD_ROW2 *Row); + DWORD __attribute__((__stdcall__)) DeleteIpForwardEntry2 (const MIB_IPFORWARD_ROW2 *Row); + DWORD __attribute__((__stdcall__)) GetBestRoute2 (NET_LUID *InterfaceLuid, NET_IFINDEX InterfaceIndex, const SOCKADDR_INET *SourceAddress, const SOCKADDR_INET *DestinationAddress, ULONG AddressSortOptions, PMIB_IPFORWARD_ROW2 BestRoute, SOCKADDR_INET *BestSourceAddress); + DWORD __attribute__((__stdcall__)) GetIpForwardEntry2 (PMIB_IPFORWARD_ROW2 Row); + DWORD __attribute__((__stdcall__)) GetIpForwardTable2 (ADDRESS_FAMILY Family, PMIB_IPFORWARD_TABLE2 *Table); + void __attribute__((__stdcall__)) InitializeIpForwardEntry (PMIB_IPFORWARD_ROW2 Row); + DWORD __attribute__((__stdcall__)) NotifyRouteChange2 (ADDRESS_FAMILY AddressFamily, PIPFORWARD_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); + DWORD __attribute__((__stdcall__)) SetIpForwardEntry2 (const MIB_IPFORWARD_ROW2 *Route); + DWORD __attribute__((__stdcall__)) FlushIpPathTable (ADDRESS_FAMILY Family); + DWORD __attribute__((__stdcall__)) GetIpPathEntry (PMIB_IPPATH_ROW Row); + DWORD __attribute__((__stdcall__)) GetIpPathTable (ADDRESS_FAMILY Family, PMIB_IPPATH_TABLE *Table); + DWORD __attribute__((__stdcall__)) CreateIpNetEntry2 (const MIB_IPNET_ROW2 *Row); + DWORD __attribute__((__stdcall__)) DeleteIpNetEntry2 (const MIB_IPNET_ROW2 *Row); + DWORD __attribute__((__stdcall__)) FlushIpNetTable2 (ADDRESS_FAMILY Family, NET_IFINDEX InterfaceIndex); + DWORD __attribute__((__stdcall__)) GetIpNetEntry2 (PMIB_IPNET_ROW2 Row); + DWORD __attribute__((__stdcall__)) GetIpNetTable2 (ADDRESS_FAMILY Family, PMIB_IPNET_TABLE2 *Table); + DWORD __attribute__((__stdcall__)) ResolveIpNetEntry2 (PMIB_IPNET_ROW2 Row, const SOCKADDR_INET *SourceAddress); + DWORD __attribute__((__stdcall__)) SetIpNetEntry2 (PMIB_IPNET_ROW2 Row); + DWORD __attribute__((__stdcall__)) NotifyTeredoPortChange (PTEREDO_PORT_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); + DWORD __attribute__((__stdcall__)) GetTeredoPort (USHORT *Port); + DWORD __attribute__((__stdcall__)) CancelMibChangeNotify2 (HANDLE NotificationHandle); + void __attribute__((__stdcall__)) FreeMibTable (PVOID Memory); + DWORD __attribute__((__stdcall__)) CreateSortedAddressPairs (const PSOCKADDR_IN6 SourceAddressList, ULONG SourceAddressCount, const PSOCKADDR_IN6 DestinationAddressList, ULONG DestinationAddressCount, ULONG AddressSortOptions, PSOCKADDR_IN6_PAIR *SortedAddressPairList, ULONG *SortedAddressPairCount); + DWORD __attribute__((__stdcall__)) ConvertInterfaceNameToLuidA (const CHAR *InterfaceName, NET_LUID *InterfaceLuid); + DWORD __attribute__((__stdcall__)) ConvertInterfaceNameToLuidW (const WCHAR *InterfaceName, NET_LUID *InterfaceLuid); + DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToNameA (const NET_LUID *InterfaceLuid, PSTR InterfaceName, SIZE_T Length); + DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToNameW (const NET_LUID *InterfaceLuid, PWSTR InterfaceName, SIZE_T Length); + DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToIndex (const NET_LUID *InterfaceLuid, PNET_IFINDEX InterfaceIndex); + DWORD __attribute__((__stdcall__)) ConvertInterfaceIndexToLuid (NET_IFINDEX InterfaceIndex, PNET_LUID InterfaceLuid); + DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToAlias (const NET_LUID *InterfaceLuid, PWSTR InterfaceAlias, SIZE_T Length); + DWORD __attribute__((__stdcall__)) ConvertInterfaceAliasToLuid (const WCHAR *InterfaceAlias, PNET_LUID InterfaceLuid); + DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToGuid (const NET_LUID *InterfaceLuid, GUID *InterfaceGuid); + DWORD __attribute__((__stdcall__)) ConvertInterfaceGuidToLuid (const GUID *InterfaceGuid, PNET_LUID InterfaceLuid); + NET_IFINDEX __attribute__((__stdcall__)) if_nametoindex (PCSTR InterfaceName); + PCHAR __attribute__((__stdcall__)) if_indextoname (NET_IFINDEX InterfaceIndex, PCHAR InterfaceName); + NET_IF_COMPARTMENT_ID __attribute__((__stdcall__)) GetCurrentThreadCompartmentId (void); + DWORD __attribute__((__stdcall__)) SetCurrentThreadCompartmentId (NET_IF_COMPARTMENT_ID CompartmentId); + NET_IF_COMPARTMENT_ID __attribute__((__stdcall__)) GetSessionCompartmentId (ULONG SessionId); + DWORD __attribute__((__stdcall__)) SetSessionCompartmentId (ULONG SessionId, NET_IF_COMPARTMENT_ID CompartmentId); + DWORD __attribute__((__stdcall__)) GetNetworkInformation (const NET_IF_NETWORK_GUID *NetworkGuid, PNET_IF_COMPARTMENT_ID CompartmentId, PULONG SiteId, PWCHAR NetworkName, ULONG Length); + DWORD __attribute__((__stdcall__)) SetNetworkInformation (const NET_IF_NETWORK_GUID *NetworkGuid, NET_IF_COMPARTMENT_ID CompartmentId, const WCHAR *NetworkName); + DWORD __attribute__((__stdcall__)) ConvertLengthToIpv4Mask (ULONG MaskLength, PULONG Mask); + DWORD __attribute__((__stdcall__)) ConvertIpv4MaskToLength (ULONG Mask, PUINT8 MaskLength); +#undef try +#undef except +#undef finally +#undef leave +#define _INC_DIRECT +#pragma pack(push,_CRT_PACKING) +#define _DISKFREE_T_DEFINED + struct _diskfree_t { + unsigned total_clusters; + unsigned avail_clusters; + unsigned sectors_per_cluster; + unsigned bytes_per_sector; + }; + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _getcwd(char *_DstBuf,int _SizeInBytes); + __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _getdcwd(int _Drive,char *_DstBuf,int _SizeInBytes); + char *__attribute__((__cdecl__)) _getdcwd_nolock(int _Drive,char *_DstBuf,int _SizeInBytes); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chdir(const char *_Path); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _mkdir(const char *_Path); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _rmdir(const char *_Path); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chdrive(int _Drive); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _getdrive(void); + __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _getdrives(void); +#define _GETDISKFREE_DEFINED + __attribute__ ((__dllimport__)) unsigned __attribute__((__cdecl__)) _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree); +#define _WDIRECT_DEFINED + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wgetcwd(wchar_t *_DstBuf,int _SizeInWords); + __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wgetdcwd(int _Drive,wchar_t *_DstBuf,int _SizeInWords); + wchar_t *__attribute__((__cdecl__)) _wgetdcwd_nolock(int _Drive,wchar_t *_DstBuf,int _SizeInWords); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wchdir(const wchar_t *_Path); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wmkdir(const wchar_t *_Path); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wrmdir(const wchar_t *_Path); +#define diskfree_t _diskfree_t + char *__attribute__((__cdecl__)) getcwd(char *_DstBuf,int _SizeInBytes) ; + int __attribute__((__cdecl__)) chdir(const char *_Path) ; + int __attribute__((__cdecl__)) mkdir(const char *_Path) ; + int __attribute__((__cdecl__)) rmdir(const char *_Path) ; +#pragma pack(pop) +#define _MATH_H_ +struct _exception; +#pragma pack(push,_CRT_PACKING) +#define _DOMAIN 1 +#define _SING 2 +#define _OVERFLOW 3 +#define _UNDERFLOW 4 +#define _TLOSS 5 +#define _PLOSS 6 +#define DOMAIN _DOMAIN +#define SING _SING +#define OVERFLOW _OVERFLOW +#define UNDERFLOW _UNDERFLOW +#define TLOSS _TLOSS +#define PLOSS _PLOSS +#define M_E 2.7182818284590452354 +#define M_LOG2E 1.4426950408889634074 +#define M_LOG10E 0.43429448190325182765 +#define M_LN2 0.69314718055994530942 +#define M_LN10 2.30258509299404568402 +#define M_PI 3.14159265358979323846 +#define M_PI_2 1.57079632679489661923 +#define M_PI_4 0.78539816339744830962 +#define M_1_PI 0.31830988618379067154 +#define M_2_PI 0.63661977236758134308 +#define M_2_SQRTPI 1.12837916709551257390 +#define M_SQRT2 1.41421356237309504880 +#define M_SQRT1_2 0.70710678118654752440 +#define __MINGW_FPCLASS_DEFINED 1 +#define _FPCLASS_SNAN 0x0001 +#define _FPCLASS_QNAN 0x0002 +#define _FPCLASS_NINF 0x0004 +#define _FPCLASS_NN 0x0008 +#define _FPCLASS_ND 0x0010 +#define _FPCLASS_NZ 0x0020 +#define _FPCLASS_PZ 0x0040 +#define _FPCLASS_PD 0x0080 +#define _FPCLASS_PN 0x0100 +#define _FPCLASS_PINF 0x0200 +#define __mingw_types_compatible_p(type1,type2) __builtin_types_compatible_p (type1, type2) +#define __mingw_choose_expr __builtin_choose_expr +#define __MINGW_SOFTMATH + typedef union __mingw_dbl_type_t { + double x; + unsigned long long val; + __extension__ struct { + unsigned int low, high; + } lh; + } __mingw_dbl_type_t; + typedef union __mingw_flt_type_t { + float x; + unsigned int val; + } __mingw_flt_type_t; + typedef union __mingw_ldbl_type_t + { + long double x; + __extension__ struct { + unsigned int low, high; + int sign_exponent : 16; + int res1 : 16; + int res0 : 32; + } lh; + } __mingw_ldbl_type_t; + extern double const _HUGE; +#define _HUGE _HUGE +#define HUGE_VAL __builtin_huge_val() +#define _EXCEPTION_DEFINED + struct _exception { + int type; + const char *name; + double arg1; + double arg2; + double retval; + }; + void __mingw_raise_matherr (int typ, const char *name, double a1, double a2, + double rslt); + void __mingw_setusermatherr (int (__attribute__((__cdecl__)) *)(struct _exception *)); + __attribute__ ((__dllimport__)) void __setusermatherr(int (__attribute__((__cdecl__)) *)(struct _exception *)); +#define __setusermatherr __mingw_setusermatherr + double __attribute__((__cdecl__)) sin(double _X); + double __attribute__((__cdecl__)) cos(double _X); + double __attribute__((__cdecl__)) tan(double _X); + double __attribute__((__cdecl__)) sinh(double _X); + double __attribute__((__cdecl__)) cosh(double _X); + double __attribute__((__cdecl__)) tanh(double _X); + double __attribute__((__cdecl__)) asin(double _X); + double __attribute__((__cdecl__)) acos(double _X); + double __attribute__((__cdecl__)) atan(double _X); + double __attribute__((__cdecl__)) atan2(double _Y,double _X); + double __attribute__((__cdecl__)) exp(double _X); + double __attribute__((__cdecl__)) log(double _X); + double __attribute__((__cdecl__)) log10(double _X); + double __attribute__((__cdecl__)) pow(double _X,double _Y); + double __attribute__((__cdecl__)) sqrt(double _X); + double __attribute__((__cdecl__)) ceil(double _X); + double __attribute__((__cdecl__)) floor(double _X); + extern float __attribute__((__cdecl__)) fabsf (float x); + extern long double __attribute__((__cdecl__)) fabsl (long double); + extern double __attribute__((__cdecl__)) fabs (double _X); + extern inline __attribute__((__gnu_inline__)) float __attribute__((__cdecl__)) fabsf (float x) + { + return __builtin_fabsf (x); + } + extern inline __attribute__((__gnu_inline__)) long double __attribute__((__cdecl__)) fabsl (long double x) + { + return __builtin_fabsl (x); + } + extern inline __attribute__((__gnu_inline__)) double __attribute__((__cdecl__)) fabs (double x) + { + return __builtin_fabs (x); + } + double __attribute__((__cdecl__)) ldexp(double _X,int _Y); + double __attribute__((__cdecl__)) frexp(double _X,int *_Y); + double __attribute__((__cdecl__)) modf(double _X,double *_Y); + double __attribute__((__cdecl__)) fmod(double _X,double _Y); + void __attribute__((__cdecl__)) sincos (double __x, double *p_sin, double *p_cos); + void __attribute__((__cdecl__)) sincosl (long double __x, long double *p_sin, long double *p_cos); + void __attribute__((__cdecl__)) sincosf (float __x, float *p_sin, float *p_cos); +#define EDOM 33 +#define ERANGE 34 +#define _COMPLEX_DEFINED + struct _complex { + double x; + double y; + }; + double __attribute__((__cdecl__)) _cabs(struct _complex _ComplexA); + double __attribute__((__cdecl__)) _hypot(double _X,double _Y); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _j0(double _X); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _j1(double _X); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _jn(int _X,double _Y); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _y0(double _X); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _y1(double _X); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _yn(int _X,double _Y); +#define _CRT_MATHERR_DEFINED + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _matherr (struct _exception *); +#define _SIGN_DEFINED + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _chgsign (double _X); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _copysign (double _Number,double _Sign); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _logb (double); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _nextafter (double, double); + __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _scalb (double, long); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _finite (double); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fpclass (double); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isnan (double); +__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) j0 (double) ; +__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) j1 (double) ; +__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) jn (int, double) ; +__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) y0 (double) ; +__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) y1 (double) ; +__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) yn (int, double) ; +__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) chgsign (double); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) finite (double); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) fpclass (double); +#define FP_SNAN _FPCLASS_SNAN +#define FP_QNAN _FPCLASS_QNAN +#define FP_NINF _FPCLASS_NINF +#define FP_PINF _FPCLASS_PINF +#define FP_NDENORM _FPCLASS_ND +#define FP_PDENORM _FPCLASS_PD +#define FP_NZERO _FPCLASS_NZ +#define FP_PZERO _FPCLASS_PZ +#define FP_NNORM _FPCLASS_NN +#define FP_PNORM _FPCLASS_PN +#define HUGE_VALF __builtin_huge_valf() +#define HUGE_VALL __builtin_huge_vall() +#define INFINITY __builtin_inff() +#define NAN __builtin_nanf("") +typedef float float_t; +typedef double double_t; +#define FP_NAN 0x0100 +#define FP_NORMAL 0x0400 +#define FP_INFINITE (FP_NAN | FP_NORMAL) +#define FP_ZERO 0x4000 +#define FP_SUBNORMAL (FP_NORMAL | FP_ZERO) + extern int __attribute__((__cdecl__)) __fpclassifyl (long double); + extern int __attribute__((__cdecl__)) __fpclassifyf (float); + extern int __attribute__((__cdecl__)) __fpclassify (double); + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __fpclassifyl (long double x) { + return __fpclassify(x); + } + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __fpclassify (double x) { + __mingw_dbl_type_t hlp; + unsigned int l, h; + hlp.x = x; + h = hlp.lh.high; + l = hlp.lh.low | (h & 0xfffff); + h &= 0x7ff00000; + if ((h | l) == 0) + return 0x4000; + if (!h) + return (0x0400 | 0x4000); + if (h == 0x7ff00000) + return (l ? 0x0100 : (0x0100 | 0x0400)); + return 0x0400; + } + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __fpclassifyf (float x) { + __mingw_flt_type_t hlp; + hlp.x = x; + hlp.val &= 0x7fffffff; + if (hlp.val == 0) + return 0x4000; + if (hlp.val < 0x800000) + return (0x0400 | 0x4000); + if (hlp.val >= 0x7f800000) + return (hlp.val > 0x7f800000 ? 0x0100 : (0x0100 | 0x0400)); + return 0x0400; + } +#define __dfp_expansion(__call,__fin,x) __fin +#define fpclassify(x) __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), double), __fpclassify(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), float), __fpclassifyf(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), long double), __fpclassifyl(x), __dfp_expansion(__fpclassify,(__builtin_trap(),0),x)))) +#define isfinite(x) ((fpclassify(x) & FP_NAN) == 0) +#define isinf(x) (fpclassify(x) == FP_INFINITE) + extern int __attribute__((__cdecl__)) __isnan (double); + extern int __attribute__((__cdecl__)) __isnanf (float); + extern int __attribute__((__cdecl__)) __isnanl (long double); + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __isnan (double _x) + { + __mingw_dbl_type_t hlp; + unsigned int l, h; + hlp.x = _x; + l = hlp.lh.low; + h = hlp.lh.high & 0x7fffffff; + h |= (l | -l) >> 31; + h = 0x7ff00000 - h; + return (int) h >> 31; + } + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __isnanf (float _x) + { + __mingw_flt_type_t hlp; + unsigned int i; + hlp.x = _x; + i = hlp.val & 0x7fffffff; + i = 0x7f800000 - i; + return (int) (i >> 31); + } + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __isnanl (long double _x) + { + return __isnan(_x); + } +#define isnan(x) __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), double), __isnan(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), float), __isnanf(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), long double), __isnanl(x), __dfp_expansion(__isnan,(__builtin_trap(),x),x)))) +#define isnormal(x) (fpclassify(x) == FP_NORMAL) + extern int __attribute__((__cdecl__)) __signbit (double); + extern int __attribute__((__cdecl__)) __signbitf (float); + extern int __attribute__((__cdecl__)) __signbitl (long double); + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __signbit (double x) { + __mingw_dbl_type_t hlp; + hlp.x = x; + return ((hlp.lh.high & 0x80000000) != 0); + } + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __signbitf (float x) { + __mingw_flt_type_t hlp; + hlp.x = x; + return ((hlp.val & 0x80000000) != 0); + } + extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __signbitl (long double x) { + return __signbit(x); + } +#define signbit(x) __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), double), __signbit(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), float), __signbitf(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), long double), __signbitl(x), __dfp_expansion(__signbit,(__builtin_trap(),x),x)))) + extern float __attribute__((__cdecl__)) sinf(float _X); + extern long double __attribute__((__cdecl__)) sinl(long double); + extern float __attribute__((__cdecl__)) cosf(float _X); + extern long double __attribute__((__cdecl__)) cosl(long double); + extern float __attribute__((__cdecl__)) tanf(float _X); + extern long double __attribute__((__cdecl__)) tanl(long double); + extern float __attribute__((__cdecl__)) asinf(float _X); + extern long double __attribute__((__cdecl__)) asinl(long double); + extern float __attribute__((__cdecl__)) acosf (float); + extern long double __attribute__((__cdecl__)) acosl (long double); + extern float __attribute__((__cdecl__)) atanf (float); + extern long double __attribute__((__cdecl__)) atanl (long double); + extern float __attribute__((__cdecl__)) atan2f (float, float); + extern long double __attribute__((__cdecl__)) atan2l (long double, long double); + extern float __attribute__((__cdecl__)) sinhf(float _X); + extern long double __attribute__((__cdecl__)) sinhl(long double); + extern float __attribute__((__cdecl__)) coshf(float _X); + extern long double __attribute__((__cdecl__)) coshl(long double); + extern float __attribute__((__cdecl__)) tanhf(float _X); + extern long double __attribute__((__cdecl__)) tanhl(long double); + extern double __attribute__((__cdecl__)) acosh (double); + extern float __attribute__((__cdecl__)) acoshf (float); + extern long double __attribute__((__cdecl__)) acoshl (long double); + extern double __attribute__((__cdecl__)) asinh (double); + extern float __attribute__((__cdecl__)) asinhf (float); + extern long double __attribute__((__cdecl__)) asinhl (long double); + extern double __attribute__((__cdecl__)) atanh (double); + extern float __attribute__((__cdecl__)) atanhf (float); + extern long double __attribute__((__cdecl__)) atanhl (long double); + extern float __attribute__((__cdecl__)) expf(float _X); + extern long double __attribute__((__cdecl__)) expl(long double); + extern double __attribute__((__cdecl__)) exp2(double); + extern float __attribute__((__cdecl__)) exp2f(float); + extern long double __attribute__((__cdecl__)) exp2l(long double); + extern double __attribute__((__cdecl__)) expm1(double); + extern float __attribute__((__cdecl__)) expm1f(float); + extern long double __attribute__((__cdecl__)) expm1l(long double); + extern float frexpf(float _X,int *_Y); + extern long double __attribute__((__cdecl__)) frexpl(long double,int *); +#define FP_ILOGB0 ((int)0x80000000) +#define FP_ILOGBNAN ((int)0x7fffffff) + extern int __attribute__((__cdecl__)) ilogb (double); + extern int __attribute__((__cdecl__)) ilogbf (float); + extern int __attribute__((__cdecl__)) ilogbl (long double); + extern float __attribute__((__cdecl__)) ldexpf(float _X,int _Y); + extern long double __attribute__((__cdecl__)) ldexpl (long double, int); + extern float __attribute__((__cdecl__)) logf (float); + extern long double __attribute__((__cdecl__)) logl(long double); + extern float __attribute__((__cdecl__)) log10f (float); + extern long double __attribute__((__cdecl__)) log10l(long double); + extern double __attribute__((__cdecl__)) log1p(double); + extern float __attribute__((__cdecl__)) log1pf(float); + extern long double __attribute__((__cdecl__)) log1pl(long double); + extern double __attribute__((__cdecl__)) log2 (double); + extern float __attribute__((__cdecl__)) log2f (float); + extern long double __attribute__((__cdecl__)) log2l (long double); + extern double __attribute__((__cdecl__)) logb (double); + extern float __attribute__((__cdecl__)) logbf (float); + extern long double __attribute__((__cdecl__)) logbl (long double); + extern float __attribute__((__cdecl__)) modff (float, float*); + extern long double __attribute__((__cdecl__)) modfl (long double, long double*); + extern double __attribute__((__cdecl__)) scalbn (double, int); + extern float __attribute__((__cdecl__)) scalbnf (float, int); + extern long double __attribute__((__cdecl__)) scalbnl (long double, int); + extern double __attribute__((__cdecl__)) scalbln (double, long); + extern float __attribute__((__cdecl__)) scalblnf (float, long); + extern long double __attribute__((__cdecl__)) scalblnl (long double, long); + extern double __attribute__((__cdecl__)) cbrt (double); + extern float __attribute__((__cdecl__)) cbrtf (float); + extern long double __attribute__((__cdecl__)) cbrtl (long double); + extern double __attribute__((__cdecl__)) hypot (double, double) ; + extern float __attribute__((__cdecl__)) hypotf (float x, float y); + extern long double __attribute__((__cdecl__)) hypotl (long double, long double); + extern float __attribute__((__cdecl__)) powf(float _X,float _Y); + extern long double __attribute__((__cdecl__)) powl (long double, long double); + extern float __attribute__((__cdecl__)) sqrtf (float); + extern long double sqrtl(long double); + extern double __attribute__((__cdecl__)) erf (double); + extern float __attribute__((__cdecl__)) erff (float); + extern long double __attribute__((__cdecl__)) erfl (long double); + extern double __attribute__((__cdecl__)) erfc (double); + extern float __attribute__((__cdecl__)) erfcf (float); + extern long double __attribute__((__cdecl__)) erfcl (long double); + extern double __attribute__((__cdecl__)) lgamma (double); + extern float __attribute__((__cdecl__)) lgammaf (float); + extern long double __attribute__((__cdecl__)) lgammal (long double); + extern int signgam; + extern double __attribute__((__cdecl__)) tgamma (double); + extern float __attribute__((__cdecl__)) tgammaf (float); + extern long double __attribute__((__cdecl__)) tgammal (long double); + extern float __attribute__((__cdecl__)) ceilf (float); + extern long double __attribute__((__cdecl__)) ceill (long double); + extern float __attribute__((__cdecl__)) floorf (float); + extern long double __attribute__((__cdecl__)) floorl (long double); + extern double __attribute__((__cdecl__)) nearbyint ( double); + extern float __attribute__((__cdecl__)) nearbyintf (float); + extern long double __attribute__((__cdecl__)) nearbyintl (long double); +extern double __attribute__((__cdecl__)) rint (double); +extern float __attribute__((__cdecl__)) rintf (float); +extern long double __attribute__((__cdecl__)) rintl (long double); +extern long __attribute__((__cdecl__)) lrint (double); +extern long __attribute__((__cdecl__)) lrintf (float); +extern long __attribute__((__cdecl__)) lrintl (long double); +__extension__ long long __attribute__((__cdecl__)) llrint (double); +__extension__ long long __attribute__((__cdecl__)) llrintf (float); +__extension__ long long __attribute__((__cdecl__)) llrintl (long double); + extern double __attribute__((__cdecl__)) round (double); + extern float __attribute__((__cdecl__)) roundf (float); + extern long double __attribute__((__cdecl__)) roundl (long double); + extern long __attribute__((__cdecl__)) lround (double); + extern long __attribute__((__cdecl__)) lroundf (float); + extern long __attribute__((__cdecl__)) lroundl (long double); + __extension__ long long __attribute__((__cdecl__)) llround (double); + __extension__ long long __attribute__((__cdecl__)) llroundf (float); + __extension__ long long __attribute__((__cdecl__)) llroundl (long double); + extern double __attribute__((__cdecl__)) trunc (double); + extern float __attribute__((__cdecl__)) truncf (float); + extern long double __attribute__((__cdecl__)) truncl (long double); + extern float __attribute__((__cdecl__)) fmodf (float, float); + extern long double __attribute__((__cdecl__)) fmodl (long double, long double); + extern double __attribute__((__cdecl__)) remainder (double, double); + extern float __attribute__((__cdecl__)) remainderf (float, float); + extern long double __attribute__((__cdecl__)) remainderl (long double, long double); + extern double __attribute__((__cdecl__)) remquo(double, double, int *); + extern float __attribute__((__cdecl__)) remquof(float, float, int *); + extern long double __attribute__((__cdecl__)) remquol(long double, long double, int *); + extern double __attribute__((__cdecl__)) copysign (double, double); + extern float __attribute__((__cdecl__)) copysignf (float, float); + extern long double __attribute__((__cdecl__)) copysignl (long double, long double); + extern inline __attribute__((__gnu_inline__)) double __attribute__((__cdecl__)) copysign (double x, double y) + { + __mingw_dbl_type_t hx, hy; + hx.x = x; hy.x = y; + hx.lh.high = (hx.lh.high & 0x7fffffff) | (hy.lh.high & 0x80000000); + return hx.x; + } + extern inline __attribute__((__gnu_inline__)) float __attribute__((__cdecl__)) copysignf (float x, float y) + { + __mingw_flt_type_t hx, hy; + hx.x = x; hy.x = y; + hx.val = (hx.val & 0x7fffffff) | (hy.val & 0x80000000); + return hx.x; + } + extern double __attribute__((__cdecl__)) nan(const char *tagp); + extern float __attribute__((__cdecl__)) nanf(const char *tagp); + extern long double __attribute__((__cdecl__)) nanl(const char *tagp); +#define _nan() nan("") +#define _nanf() nanf("") +#define _nanl() nanl("") + extern double __attribute__((__cdecl__)) nextafter (double, double); + extern float __attribute__((__cdecl__)) nextafterf (float, float); + extern long double __attribute__((__cdecl__)) nextafterl (long double, long double); + extern double __attribute__((__cdecl__)) nexttoward (double, long double); + extern float __attribute__((__cdecl__)) nexttowardf (float, long double); + extern long double __attribute__((__cdecl__)) nexttowardl (long double, long double); + extern double __attribute__((__cdecl__)) fdim (double x, double y); + extern float __attribute__((__cdecl__)) fdimf (float x, float y); + extern long double __attribute__((__cdecl__)) fdiml (long double x, long double y); + extern double __attribute__((__cdecl__)) fmax (double, double); + extern float __attribute__((__cdecl__)) fmaxf (float, float); + extern long double __attribute__((__cdecl__)) fmaxl (long double, long double); + extern double __attribute__((__cdecl__)) fmin (double, double); + extern float __attribute__((__cdecl__)) fminf (float, float); + extern long double __attribute__((__cdecl__)) fminl (long double, long double); + extern double __attribute__((__cdecl__)) fma (double, double, double); + extern float __attribute__((__cdecl__)) fmaf (float, float, float); + extern long double __attribute__((__cdecl__)) fmal (long double, long double, long double); +#define isgreater(x,y) __builtin_isgreater(x, y) +#define isgreaterequal(x,y) __builtin_isgreaterequal(x, y) +#define isless(x,y) __builtin_isless(x, y) +#define islessequal(x,y) __builtin_islessequal(x, y) +#define islessgreater(x,y) __builtin_islessgreater(x, y) +#define isunordered(x,y) __builtin_isunordered(x, y) + __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _copysignf (float _Number,float _Sign); + __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _chgsignf (float _X); + __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _logbf(float _X); + __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _nextafterf(float _X,float _Y); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _finitef(float _X); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isnanf(float _X); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fpclassf(float _X); + extern long double __attribute__((__cdecl__)) _chgsignl (long double); +#define _copysignl copysignl +#define _hypotl hypotl +#define matherr _matherr +#define HUGE _HUGE +#pragma pack(pop) +#define _INC_SIGNAL +#define WIN_PTHREADS_SIGNAL_H +#define pthread_sigmask(H,S1,S2) 0 +#define _SIG_ATOMIC_T_DEFINED + typedef int sig_atomic_t; +#define NSIG 23 +#define SIGINT 2 +#define SIGILL 4 +#define SIGABRT_COMPAT 6 +#define SIGFPE 8 +#define SIGSEGV 11 +#define SIGTERM 15 +#define SIGBREAK 21 +#define SIGABRT 22 +#define SIGABRT2 22 + typedef void (*__p_sig_fn_t)(int); +#define SIG_DFL (__p_sig_fn_t)0 +#define SIG_IGN (__p_sig_fn_t)1 +#define SIG_GET (__p_sig_fn_t)2 +#define SIG_SGE (__p_sig_fn_t)3 +#define SIG_ACK (__p_sig_fn_t)4 +#define SIG_ERR (__p_sig_fn_t)-1 + extern void **__attribute__((__cdecl__)) __pxcptinfoptrs(void); +#define _pxcptinfoptrs (*__pxcptinfoptrs()) + __p_sig_fn_t __attribute__((__cdecl__)) signal(int _SigNum,__p_sig_fn_t _Func); + int __attribute__((__cdecl__)) raise(int _SigNum); +#define _INC_UTIME +#pragma pack(push,_CRT_PACKING) +#define _UTIMBUF_DEFINED + struct _utimbuf { + time_t actime; + time_t modtime; + }; + struct __utimbuf32 { + __time32_t actime; + __time32_t modtime; + }; + struct __utimbuf64 { + __time64_t actime; + __time64_t modtime; + }; + struct utimbuf { + time_t actime; + time_t modtime; + }; + struct utimbuf32 { + __time32_t actime; + __time32_t modtime; + }; + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _utime32(const char *_Filename,struct __utimbuf32 *_Time); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _futime32(int _FileDes,struct __utimbuf32 *_Time); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wutime32(const wchar_t *_Filename,struct __utimbuf32 *_Time); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _utime64(const char *_Filename,struct __utimbuf64 *_Time); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _futime64(int _FileDes,struct __utimbuf64 *_Time); + __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wutime64(const wchar_t *_Filename,struct __utimbuf64 *_Time); +int __attribute__((__cdecl__)) _utime(const char *,struct _utimbuf *); +int __attribute__((__cdecl__)) _futime(int,struct _utimbuf *); +int __attribute__((__cdecl__)) _wutime(const wchar_t *,struct _utimbuf *); +extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _utime(const char *_Filename,struct _utimbuf *_Utimbuf) { + return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf); +} +extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _futime(int _Desc,struct _utimbuf *_Utimbuf) { + return _futime64(_Desc,(struct __utimbuf64 *)_Utimbuf); +} +extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _wutime(const wchar_t *_Filename,struct _utimbuf *_Utimbuf) { + return _wutime64(_Filename,(struct __utimbuf64 *)_Utimbuf); +} + int __attribute__((__cdecl__)) utime(const char *, struct utimbuf *); +extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) utime(const char *_Filename,struct utimbuf *_Utimbuf) { + return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf); +} +#pragma pack(pop) +#define rb_w32_iswinnt() TRUE +#define rb_w32_iswin95() FALSE +#define WNOHANG -1 +#define O_SHARE_DELETE 0x20000000 +typedef int clockid_t; +#define CLOCK_REALTIME 0 +#define CLOCK_MONOTONIC 1 +#undef utime +#undef lseek +#undef stat +#undef fstat +#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) +struct stati128 { + _dev_t st_dev; + unsigned long long st_ino; + long long st_inohigh; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + _dev_t st_rdev; + long long 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; +#undef isascii +#define isascii __isascii +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; +}; +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; +}; +#define IFNAMSIZ IF_NAMESIZE +#define IFF_POINTOPOINT IFF_POINTTOPOINT +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 __attribute__((__stdcall__)) rb_w32_accept(int, struct sockaddr *, int *); +extern int __attribute__((__stdcall__)) rb_w32_bind(int, const struct sockaddr *, int); +extern int __attribute__((__stdcall__)) 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 __attribute__((__stdcall__)) rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +extern int __attribute__((__stdcall__)) rb_w32_getpeername(int, struct sockaddr *, int *); +extern int __attribute__((__stdcall__)) rb_w32_getsockname(int, struct sockaddr *, int *); +extern int __attribute__((__stdcall__)) rb_w32_getsockopt(int, int, int, char *, int *); +extern int __attribute__((__stdcall__)) rb_w32_ioctlsocket(int, long, u_long *); +extern int __attribute__((__stdcall__)) rb_w32_listen(int, int); +extern int __attribute__((__stdcall__)) rb_w32_recv(int, char *, int, int); +extern int __attribute__((__stdcall__)) rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *); +extern int __attribute__((__stdcall__)) rb_w32_send(int, const char *, int, int); +extern int __attribute__((__stdcall__)) 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 __attribute__((__stdcall__)) rb_w32_setsockopt(int, int, int, const char *, int); +extern int __attribute__((__stdcall__)) rb_w32_shutdown(int, int); +extern int __attribute__((__stdcall__)) rb_w32_socket(int, int, int); +extern SOCKET rb_w32_get_osfhandle(int); +extern struct hostent *__attribute__((__stdcall__)) rb_w32_gethostbyaddr(const char *, int, int); +extern struct hostent *__attribute__((__stdcall__)) rb_w32_gethostbyname(const char *); +extern int __attribute__((__stdcall__)) rb_w32_gethostname(char *, int); +extern struct protoent *__attribute__((__stdcall__)) rb_w32_getprotobyname(const char *); +extern struct protoent *__attribute__((__stdcall__)) rb_w32_getprotobynumber(int); +extern struct servent *__attribute__((__stdcall__)) rb_w32_getservbyname(const char *, const char *); +extern struct servent *__attribute__((__stdcall__)) 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 *__attribute__((__stdcall__)) rb_w32_inet_ntop(int,const void *,char *,size_t); +extern int __attribute__((__stdcall__)) 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 pid_t waitpid(pid_t, int *, int); +extern pid_t wait(int *); +extern pid_t rb_w32_uspawn(int, const char *, const char*); +extern pid_t rb_w32_uaspawn(int, const char *, char *const *); +extern 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 pid_t rb_w32_getpid(void); +extern 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); +#define __CLANG_FLOAT_H +#define _MINGW_FLOAT_H_ +#define _MCW_DN 0x03000000 +#define _MCW_EM 0x0008001F +#define _MCW_IC 0x00040000 +#define _MCW_RC 0x00000300 +#define _MCW_PC 0x00030000 +#undef FLT_MANT_DIG +#undef DBL_MANT_DIG +#undef LDBL_MANT_DIG +#define FLT_MANT_DIG __FLT_MANT_DIG__ +#define DBL_MANT_DIG __DBL_MANT_DIG__ +#define LDBL_MANT_DIG __LDBL_MANT_DIG__ +#undef FLT_EVAL_METHOD +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#define _DN_SAVE 0x00000000 +#define _DN_FLUSH 0x01000000 +#define _EM_INVALID 0x00000010 +#define _EM_DENORMAL 0x00080000 +#define _EM_ZERODIVIDE 0x00000008 +#define _EM_OVERFLOW 0x00000004 +#define _EM_UNDERFLOW 0x00000002 +#define _EM_INEXACT 0x00000001 +#define _IC_AFFINE 0x00040000 +#define _IC_PROJECTIVE 0x00000000 +#define _RC_CHOP 0x00000300 +#define _RC_UP 0x00000200 +#define _RC_DOWN 0x00000100 +#define _RC_NEAR 0x00000000 +#define _PC_24 0x00020000 +#define _PC_53 0x00010000 +#define _PC_64 0x00000000 +#define _SW_UNEMULATED 0x0040 +#define _SW_SQRTNEG 0x0080 +#define _SW_STACKOVERFLOW 0x0200 +#define _SW_STACKUNDERFLOW 0x0400 +#define _FPE_INVALID 0x81 +#define _FPE_DENORMAL 0x82 +#define _FPE_ZERODIVIDE 0x83 +#define _FPE_OVERFLOW 0x84 +#define _FPE_UNDERFLOW 0x85 +#define _FPE_INEXACT 0x86 +#define _FPE_UNEMULATED 0x87 +#define _FPE_SQRTNEG 0x88 +#define _FPE_STACKOVERFLOW 0x8a +#define _FPE_STACKUNDERFLOW 0x8b +#define _FPE_EXPLICITGEN 0x8c +#define CW_DEFAULT _CW_DEFAULT +#define MCW_PC _MCW_PC +#define PC_24 _PC_24 +#define PC_53 _PC_53 +#define PC_64 _PC_64 +#define _CW_DEFAULT (_RC_NEAR+_EM_INVALID+_EM_ZERODIVIDE+_EM_OVERFLOW+_EM_UNDERFLOW+_EM_INEXACT+_EM_DENORMAL) +__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _controlfp (unsigned int _NewValue, unsigned int _Mask) ; +__declspec(dllimport) errno_t __attribute__((__cdecl__)) _controlfp_s(unsigned int *_CurrentState, unsigned int _NewValue, unsigned int _Mask); +__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _control87 (unsigned int _NewValue, unsigned int _Mask); +__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _clearfp (void); +__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _statusfp (void); +#define _clear87 _clearfp +#define _status87 _statusfp +void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _fpreset (void); +void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) fpreset (void); +__attribute__ ((__dllimport__)) int * __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) __fpecode(void); +#define _fpecode (*(__fpecode())) +#undef FLT_EVAL_METHOD +#undef FLT_ROUNDS +#undef FLT_RADIX +#undef FLT_MANT_DIG +#undef DBL_MANT_DIG +#undef LDBL_MANT_DIG +#undef DECIMAL_DIG +#undef FLT_DIG +#undef DBL_DIG +#undef LDBL_DIG +#undef FLT_MIN_EXP +#undef DBL_MIN_EXP +#undef LDBL_MIN_EXP +#undef FLT_MIN_10_EXP +#undef DBL_MIN_10_EXP +#undef LDBL_MIN_10_EXP +#undef FLT_MAX_EXP +#undef DBL_MAX_EXP +#undef LDBL_MAX_EXP +#undef FLT_MAX_10_EXP +#undef DBL_MAX_10_EXP +#undef LDBL_MAX_10_EXP +#undef FLT_MAX +#undef DBL_MAX +#undef LDBL_MAX +#undef FLT_EPSILON +#undef DBL_EPSILON +#undef LDBL_EPSILON +#undef FLT_MIN +#undef DBL_MIN +#undef LDBL_MIN +#undef FLT_TRUE_MIN +#undef DBL_TRUE_MIN +#undef LDBL_TRUE_MIN +#undef FLT_DECIMAL_DIG +#undef DBL_DECIMAL_DIG +#undef LDBL_DECIMAL_DIG +#undef FLT_HAS_SUBNORM +#undef DBL_HAS_SUBNORM +#undef LDBL_HAS_SUBNORM +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#define FLT_ROUNDS (__builtin_flt_rounds()) +#define FLT_RADIX __FLT_RADIX__ +#define FLT_MANT_DIG __FLT_MANT_DIG__ +#define DBL_MANT_DIG __DBL_MANT_DIG__ +#define LDBL_MANT_DIG __LDBL_MANT_DIG__ +#define DECIMAL_DIG __DECIMAL_DIG__ +#define FLT_DIG __FLT_DIG__ +#define DBL_DIG __DBL_DIG__ +#define LDBL_DIG __LDBL_DIG__ +#define FLT_MIN_EXP __FLT_MIN_EXP__ +#define DBL_MIN_EXP __DBL_MIN_EXP__ +#define LDBL_MIN_EXP __LDBL_MIN_EXP__ +#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ +#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ +#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ +#define FLT_MAX_EXP __FLT_MAX_EXP__ +#define DBL_MAX_EXP __DBL_MAX_EXP__ +#define LDBL_MAX_EXP __LDBL_MAX_EXP__ +#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ +#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ +#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ +#define FLT_MAX __FLT_MAX__ +#define DBL_MAX __DBL_MAX__ +#define LDBL_MAX __LDBL_MAX__ +#define FLT_EPSILON __FLT_EPSILON__ +#define DBL_EPSILON __DBL_EPSILON__ +#define LDBL_EPSILON __LDBL_EPSILON__ +#define FLT_MIN __FLT_MIN__ +#define DBL_MIN __DBL_MIN__ +#define LDBL_MIN __LDBL_MIN__ +#define FLT_TRUE_MIN __FLT_DENORM_MIN__ +#define DBL_TRUE_MIN __DBL_DENORM_MIN__ +#define LDBL_TRUE_MIN __LDBL_DENORM_MIN__ +#define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__ +#define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__ +#define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__ +#define FLT_HAS_SUBNORM __FLT_HAS_DENORM__ +#define DBL_HAS_SUBNORM __DBL_HAS_DENORM__ +#define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__ +#define FLT16_MANT_DIG __FLT16_MANT_DIG__ +#define FLT16_DECIMAL_DIG __FLT16_DECIMAL_DIG__ +#define FLT16_DIG __FLT16_DIG__ +#define FLT16_MIN_EXP __FLT16_MIN_EXP__ +#define FLT16_MIN_10_EXP __FLT16_MIN_10_EXP__ +#define FLT16_MAX_EXP __FLT16_MAX_EXP__ +#define FLT16_MAX_10_EXP __FLT16_MAX_10_EXP__ +#define FLT16_MAX __FLT16_MAX__ +#define FLT16_EPSILON __FLT16_EPSILON__ +#define FLT16_MIN __FLT16_MIN__ +#define FLT16_TRUE_MIN __FLT16_TRUE_MIN__ +#define S_IFLNK 0xa000 +#define SUFFIX +extern int rb_w32_ftruncate(int fd, long long length); +extern int rb_w32_truncate(const char *path, long long length); +extern int rb_w32_utruncate(const char *path, long long length); +#undef HAVE_FTRUNCATE +#define HAVE_FTRUNCATE 1 +#define ftruncate ftruncate64 +#undef HAVE_TRUNCATE +#define HAVE_TRUNCATE 1 +#define truncate rb_w32_utruncate +extern int ioctl (int, int, ...); +extern int getuid (void); +extern int geteuid (void); +extern int getgid (void); +extern int getegid (void); +extern int setuid (int); +extern int setgid (int); +extern char *rb_w32_strerror(int); +#define strerror(e) rb_w32_strerror(e) +#define PIPE_BUF 1024 +#define LOCK_SH 1 +#define LOCK_EX 2 +#define LOCK_NB 4 +#define LOCK_UN 8 +#define SIGKILL 9 +#define _INC_ERRNO +#define EPERM 1 +#define ENOENT 2 +#define ENOFILE ENOENT +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define EDEADLK 36 +#define ENAMETOOLONG 38 +#define ENOLCK 39 +#define ENOSYS 40 +#define ENOTEMPTY 41 +#define _SECURECRT_ERRCODE_VALUES_DEFINED +#define EINVAL 22 +#define ERANGE 34 +#define EILSEQ 42 +#define STRUNCATE 80 +#define EDEADLOCK EDEADLK +#define ENOTSUP 129 +#define EAFNOSUPPORT 102 +#define EADDRINUSE 100 +#define EADDRNOTAVAIL 101 +#define EISCONN 113 +#define ENOBUFS 119 +#define ECONNABORTED 106 +#define EALREADY 103 +#define ECONNREFUSED 107 +#define ECONNRESET 108 +#define EDESTADDRREQ 109 +#define EHOSTUNREACH 110 +#define EMSGSIZE 115 +#define ENETDOWN 116 +#define ENETRESET 117 +#define ENETUNREACH 118 +#define ENOPROTOOPT 123 +#define ENOTSOCK 128 +#define ENOTCONN 126 +#define ECANCELED 105 +#define EINPROGRESS 112 +#define EOPNOTSUPP 130 +#define EWOULDBLOCK 140 +#define EOWNERDEAD 133 +#define EPROTO 134 +#define EPROTONOSUPPORT 135 +#define EBADMSG 104 +#define EIDRM 111 +#define ENODATA 120 +#define ENOLINK 121 +#define ENOMSG 122 +#define ENOSR 124 +#define ENOSTR 125 +#define ENOTRECOVERABLE 127 +#define ETIME 137 +#define ETXTBSY 139 +#define ETIMEDOUT 138 +#define ELOOP 114 +#define EPROTOTYPE 136 +#define EOVERFLOW 132 +#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT +#define EPFNOSUPPORT WSAEPFNOSUPPORT +#define ESHUTDOWN WSAESHUTDOWN +#define ETOOMANYREFS WSAETOOMANYREFS +#define EHOSTDOWN WSAEHOSTDOWN +#define EPROCLIM WSAEPROCLIM +#define EUSERS WSAEUSERS +#define EDQUOT WSAEDQUOT +#define ESTALE WSAESTALE +#define EREMOTE WSAEREMOTE +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_SETFL 4 +#define F_DUPFD_CLOEXEC 67 +#define FD_CLOEXEC 1 +#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) +#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) +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 *); +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); +long long rb_w32_lseek(int, long long, int); +int rb_w32_uutime(const char *, const struct utimbuf *); +int rb_w32_uutimes(const char *, const struct timeval *); +int rb_w32_uutimensat(int , const char *, const struct timespec *, int ); +long rb_w32_write_console(uintptr_t, int); +int __attribute__((__stdcall__)) 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 *); +__attribute__((__deprecated__ ("by: " "rb_w32_ugetcwd"))) char *rb_w32_getcwd(char *, int); +__attribute__((__deprecated__ ("by: " "rb_w32_ugetenv"))) char *rb_w32_getenv(const char *); +__attribute__((__deprecated__ ("by: " "rb_w32_urename"))) int rb_w32_rename(const char *, const char *); +__attribute__((__deprecated__ ("by: " "rb_w32_uopen"))) int rb_w32_open(const char *, int, ...); +__attribute__((__deprecated__ ("by: " "rb_w32_uchown"))) int chown(const char *, int, int); +__attribute__((__deprecated__ ("by: " "rb_w32_ulink"))) int link(const char *, const char *); +__attribute__((__deprecated__ ("by: " "rb_w32_ureadlink"))) ssize_t readlink(const char *, char *, size_t); +__attribute__((__deprecated__ ("by: " "rb_w32_usymlink"))) int symlink(const char *src, const char *link); +__attribute__((__deprecated__ ("by: " "rb_w32_umkdir"))) int rb_w32_mkdir(const char *, int); +__attribute__((__deprecated__ ("by: " "rb_w32_urmdir"))) int rb_w32_rmdir(const char *); +__attribute__((__deprecated__ ("by: " "rb_w32_uunlink"))) int rb_w32_unlink(const char *); +__attribute__((__deprecated__ ("by: " "rb_w32_uutime"))) int rb_w32_utime(const char *, const struct utimbuf *); +__attribute__((__deprecated__ ("by: " "rb_w32_uutimes"))) int rb_w32_utimes(const char *, const struct timeval *); +__attribute__((__deprecated__ ("by: " "rb_w32_uutimensat"))) int rb_w32_utimensat(int, const char *, const struct timespec *, int); +__attribute__((__deprecated__ ("by: " "rb_w32_ustati128"))) int rb_w32_stati128(const char *, struct stati128 *); +__attribute__((__deprecated__ ("by: " "rb_w32_ulstati128"))) int rb_w32_lstati128(const char *, struct stati128 *); +__attribute__((__deprecated__ ("by: " "rb_w32_uaccess"))) int rb_w32_access(const char *, int); +__attribute__((__deprecated__ ("by: " "rb_w32_uspawn"))) pid_t rb_w32_spawn(int, const char *, const char*); +__attribute__((__deprecated__ ("by: " "rb_w32_uaspawn"))) pid_t rb_w32_aspawn(int, const char *, char *const *); +__attribute__((__deprecated__ ("by: " "rb_w32_uaspawn_flags"))) pid_t rb_w32_aspawn_flags(int, const char *, char *const *, DWORD); +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); +#pragma GCC visibility pop +static inline double +rb_w32_pow(double x, double y) +{ + return (double)powl(x, y); +} +#define pow rb_w32_pow +#define PATH_SEP ";" +#define PATH_SEP_CHAR PATH_SEP[0] +#define PATH_ENV "PATH" +#define ENV_IGNORECASE +#define CASEFOLD_FILESYSTEM 1 + +#define RUBY_MISSING_H 1 +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof + +#define _IEEEFP_H_ +#pragma GCC visibility push(default) +extern __declspec(dllimport) char *crypt(const char *, const char *); +extern __declspec(dllimport) int eaccess(const char*, int); +extern __declspec(dllimport) double tgamma(double); +extern __declspec(dllimport) double lgamma_r(double, int *); +#define HAVE_FINITE 1 +#define finite(x) isfinite(x) +extern __declspec(dllimport) size_t strlcpy(char *, const char*, size_t); +extern __declspec(dllimport) size_t strlcat(char *, const char*, size_t); +extern __declspec(dllimport) int ffs(int); +__attribute__((__format__(printf, 1, 2))) +extern __declspec(dllimport) void setproctitle(const char *fmt, ...); +#define explicit_bzero(b,len) SecureZeroMemory(b, len) +#pragma GCC visibility pop +#define RUBY +#define RB_GNUC_EXTENSION __extension__ +#define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; }) +#define RUBY_MBCHAR_MAXSIZE INT_MAX +#define FLUSH_REGISTER_WINDOWS ((void)0) + +#define RBIMPL_ANYARGS_H + +#define RBIMPL_ATTR_WEAKREF_H +#define RBIMPL_ATTR_WEAKREF(sym) __attribute__((__weakref__(# sym))) + +#define RBIMPL_INTERN_CLASS_H + +#define RBIMPL_VALUE_H + +#define RBIMPL_STATIC_ASSERT_H +#undef assert +#define __ASSERT_H_ +__attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) __attribute__ ((__noreturn__)) _wassert(const wchar_t *_Message,const wchar_t *_File,unsigned _Line); +__attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) __attribute__ ((__noreturn__)) _assert (const char *_Message, const char *_File, unsigned _Line); +#define assert(_Expression) ((void)0) +#define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert +#define RBIMPL_STATIC_ASSERT(name,expr) RBIMPL_STATIC_ASSERT0(expr, # name ": " # expr) + + +#define RUBY_BACKWARD2_LIMITS_H +typedef unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + VALUE; +typedef unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + 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 +__extension__ _Static_assert(4 == sizeof(int), "sizeof_int" ": " "SIZEOF_INT == sizeof(int)"); +__extension__ _Static_assert(4 == sizeof(long), "sizeof_long" ": " "SIZEOF_LONG == sizeof(long)"); +__extension__ _Static_assert(8 == sizeof( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop +), "sizeof_long_long" ": " "SIZEOF_LONG_LONG == sizeof(LONG_LONG)"); +__extension__ _Static_assert(8 == sizeof(void *), "sizeof_voidp" ": " "SIZEOF_VOIDP == sizeof(void *)"); +#pragma GCC visibility push(default) +VALUE rb_class_new(VALUE super); +VALUE rb_mod_init_copy(VALUE clone, VALUE orig); +void rb_check_inheritable(VALUE super); +VALUE rb_define_class_id(ID id, VALUE super); +VALUE rb_define_class_id_under(VALUE outer, ID id, VALUE super); +VALUE rb_module_new(void); +VALUE rb_refinement_new(void); +VALUE rb_define_module_id(ID id); +VALUE rb_define_module_id_under(VALUE outer, ID id); +VALUE rb_mod_included_modules(VALUE mod); +VALUE rb_mod_include_p(VALUE child, VALUE parent); +VALUE rb_mod_ancestors(VALUE mod); +VALUE rb_class_descendants(VALUE klass); +VALUE rb_class_subclasses(VALUE klass); +VALUE rb_class_instance_methods(int argc, const VALUE *argv, VALUE mod); +VALUE rb_class_public_instance_methods(int argc, const VALUE *argv, VALUE mod); +VALUE rb_class_protected_instance_methods(int argc, const VALUE *argv, VALUE mod); +VALUE rb_class_private_instance_methods(int argc, const VALUE *argv, VALUE mod); +VALUE rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj); +void rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(), int arity); +void rb_undef(VALUE mod, ID mid); +__attribute__((__nonnull__ ())) +void rb_define_protected_method(VALUE klass, const char *mid, VALUE (*func)(), int arity); +__attribute__((__nonnull__ ())) +void rb_define_private_method(VALUE klass, const char *mid, VALUE (*func)(), int arity); +__attribute__((__nonnull__ ())) +void rb_define_singleton_method(VALUE obj, const char *mid, VALUE(*func)(), int arity); +VALUE rb_singleton_class(VALUE obj); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_VM_H +#pragma GCC visibility push(default) +int rb_sourceline(void); +const char *rb_sourcefile(void); +int rb_frame_method_id_and_class(ID *idp, VALUE *klassp); +VALUE rb_check_funcall(VALUE recv, ID mid, int argc, const VALUE *argv); +VALUE rb_check_funcall_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); +VALUE rb_eval_cmd_kw(VALUE cmd, VALUE arg, int kw_splat); +VALUE rb_apply(VALUE recv, ID mid, VALUE args); +VALUE rb_obj_instance_eval(int argc, const VALUE *argv, VALUE recv); +VALUE rb_obj_instance_exec(int argc, const VALUE *argv, VALUE recv); +VALUE rb_mod_module_eval(int argc, const VALUE *argv, VALUE mod); +VALUE rb_mod_module_exec(int argc, const VALUE *argv, VALUE mod); +#define HAVE_RB_DEFINE_ALLOC_FUNC 1 +typedef VALUE (*rb_alloc_func_t)(VALUE klass); +void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func); +void rb_undef_alloc_func(VALUE klass); +rb_alloc_func_t rb_get_alloc_func(VALUE klass); +void rb_clear_constant_cache(void); +void rb_alias(VALUE klass, ID dst, ID src); +void rb_attr(VALUE klass, ID name, int need_reader, int need_writer, int honour_visibility); +__attribute__((__nonnull__ ())) +void rb_remove_method(VALUE klass, const char *name); +void rb_remove_method_id(VALUE klass, ID mid); +int rb_method_boundp(VALUE klass, ID id, int ex); +int rb_method_basic_definition_p(VALUE klass, ID mid); +int rb_obj_respond_to(VALUE obj, ID mid, int private_p); +int rb_respond_to(VALUE obj, ID mid); +__declspec(noreturn) +VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker); +void rb_backtrace(void); +VALUE rb_make_backtrace(void); +#pragma GCC visibility pop + +#define RBIMPL_METHOD_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +void rb_define_method(VALUE klass, const char *mid, VALUE (*func)(), int arity); +__attribute__((__nonnull__ ())) +void rb_define_module_function(VALUE klass, const char *mid, VALUE (*func)(), int arity); +__attribute__((__nonnull__ ())) +void rb_define_global_function(const char *mid, VALUE (*func)(), int arity); +__attribute__((__nonnull__ ())) +void rb_undef_method(VALUE klass, const char *name); +__attribute__((__nonnull__ ())) +void rb_define_alias(VALUE klass, const char *dst, const char *src); +__attribute__((__nonnull__ ())) +void rb_define_attr(VALUE klass, const char *name, int read, int write); +#pragma GCC visibility pop +#define RUBY_METHOD_FUNC(func) RBIMPL_CAST((VALUE (*)(ANYARGS))(func)) + +#define RBIMPL_ARITHMETIC_H + +#define RBIMPL_ARITHMETIC_CHAR_H + +#define RBIMPL_ARITHMETIC_INT_H + +#define RBIMPL_ARITHMETIC_FIXNUM_H +#define FIXABLE RB_FIXABLE +#define FIXNUM_MAX RUBY_FIXNUM_MAX +#define FIXNUM_MIN RUBY_FIXNUM_MIN +#define NEGFIXABLE RB_NEGFIXABLE +#define POSFIXABLE RB_POSFIXABLE +#define RB_POSFIXABLE(_) ((_) < RUBY_FIXNUM_MAX + 1) +#define RB_NEGFIXABLE(_) ((_) >= RUBY_FIXNUM_MIN) +#define RB_FIXABLE(_) (RB_POSFIXABLE(_) && RB_NEGFIXABLE(_)) +#define RUBY_FIXNUM_MAX (LONG_MAX / 2) +#define RUBY_FIXNUM_MIN (LONG_MIN / 2) + +#define RBIMPL_ARITHMETIC_INTPTR_T_H +#define rb_int_new rb_int2inum +#define rb_uint_new rb_uint2inum +#pragma GCC visibility push(default) +VALUE rb_int2big(intptr_t i); +VALUE rb_int2inum(intptr_t i); +VALUE rb_uint2big(uintptr_t i); +VALUE rb_uint2inum(uintptr_t i); +#pragma GCC visibility pop + +#define RBIMPL_ARITHMETIC_LONG_H + +#define RBIMPL_ATTR_ARTIFICIAL_H +#define RBIMPL_ATTR_ARTIFICIAL() __attribute__((__artificial__)) + +#define RBIMPL_ATTR_CONSTEXPR_H +#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0 +#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0 +#define RBIMPL_ATTR_CONSTEXPR(_) +#define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) RBIMPL_ATTR_CONSTEXPR(_) + +#define RBIMPL_SPECIAL_CONSTS_H + +#define RBIMPL_ATTR_ENUM_EXTENSIBILITY_H +#define RBIMPL_ATTR_ENUM_EXTENSIBILITY(_) __attribute__((__enum_extensibility__(_))) +#define USE_FLONUM 1 +#define RTEST RB_TEST +#define FIXNUM_P RB_FIXNUM_P +#define IMMEDIATE_P RB_IMMEDIATE_P +#define NIL_P RB_NIL_P +#define SPECIAL_CONST_P RB_SPECIAL_CONST_P +#define STATIC_SYM_P RB_STATIC_SYM_P +#define Qfalse RUBY_Qfalse +#define Qnil RUBY_Qnil +#define Qtrue RUBY_Qtrue +#define Qundef RUBY_Qundef +#define FIXNUM_FLAG RUBY_FIXNUM_FLAG +#define FLONUM_FLAG RUBY_FLONUM_FLAG +#define FLONUM_MASK RUBY_FLONUM_MASK +#define FLONUM_P RB_FLONUM_P +#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK +#define SYMBOL_FLAG RUBY_SYMBOL_FLAG +#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 +enum +__attribute__((__enum_extensibility__(closed))) +ruby_special_consts { + RUBY_Qfalse = 0x00, + RUBY_Qtrue = 0x14, + RUBY_Qnil = 0x08, + RUBY_Qundef = 0x34, + RUBY_IMMEDIATE_MASK = 0x07, + RUBY_FIXNUM_FLAG = 0x01, + RUBY_FLONUM_MASK = 0x03, + RUBY_FLONUM_FLAG = 0x02, + RUBY_SYMBOL_FLAG = 0x0c, + RUBY_SPECIAL_SHIFT = 8 +}; +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline _Bool +RB_TEST(VALUE obj) +{ + return obj & ~RUBY_Qnil; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline _Bool +RB_NIL_P(VALUE obj) +{ + return obj == RUBY_Qnil; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline _Bool +RB_FIXNUM_P(VALUE obj) +{ + return obj & RUBY_FIXNUM_FLAG; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline _Bool +RB_STATIC_SYM_P(VALUE obj) +{ + const VALUE mask = ~((9223372036854775807LL*2ULL+1ULL) << RUBY_SPECIAL_SHIFT); + return (obj & mask) == RUBY_SYMBOL_FLAG; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline _Bool +RB_FLONUM_P(VALUE obj) +{ + return (obj & RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline _Bool +RB_IMMEDIATE_P(VALUE obj) +{ + return obj & RUBY_IMMEDIATE_MASK; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline _Bool +RB_SPECIAL_CONST_P(VALUE obj) +{ + return RB_IMMEDIATE_P(obj) || ! RB_TEST(obj); +} +__attribute__((__const__)) +static inline VALUE +rb_special_const_p(VALUE obj) +{ + return RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue; +} +#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) +#define FIX2LONG RB_FIX2LONG +#define FIX2ULONG RB_FIX2ULONG +#define INT2FIX RB_INT2FIX +#define LONG2FIX RB_INT2FIX +#define LONG2NUM RB_LONG2NUM +#define NUM2LONG RB_NUM2LONG +#define NUM2ULONG RB_NUM2ULONG +#define RB_FIX2LONG rb_fix2long +#define RB_FIX2ULONG rb_fix2ulong +#define RB_LONG2FIX RB_INT2FIX +#define RB_LONG2NUM rb_long2num_inline +#define RB_NUM2LONG rb_num2long_inline +#define RB_NUM2ULONG rb_num2ulong_inline +#define RB_ULONG2NUM rb_ulong2num_inline +#define ULONG2NUM RB_ULONG2NUM +#define rb_fix_new RB_INT2FIX +#define rb_long2int rb_long2int_inline +#define RB_INT2FIX RB_INT2FIX +#pragma GCC visibility push(default) +__declspec(noreturn) +__attribute__((__cold__)) +void rb_out_of_int( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + num); +long rb_num2long(VALUE num); +unsigned long rb_num2ulong(VALUE num); +#pragma GCC visibility pop +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline VALUE +RB_INT2FIX(long i) +{ + ((void)0); + const unsigned long j = i; + const unsigned long k = 2 * j + RUBY_FIXNUM_FLAG; + const long l = k; + const +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + m = l; + const VALUE n = m; + ((void)0); + return n; +} +static inline int +rb_long2int_inline(long n) +{ + int i = ((int)n); + if (sizeof(long) <= sizeof(int)) { + __builtin_assume(i == n); + } + if (i != n) + rb_out_of_int(n); + return i; +} +__attribute__((__const__)) +static inline long +rbimpl_fix2long_by_idiv(VALUE x) +{ + ((void)0); + const +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + y = x - RUBY_FIXNUM_FLAG; + const +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + z = y / 2; + const long w = ((long)z); + ((void)0); + return w; +} +__attribute__((__const__)) +static inline long +rbimpl_fix2long_by_shift(VALUE x) +{ + ((void)0); + const +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + y = x; + const +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + z = y >> 1; + const long w = ((long)z); + ((void)0); + return w; +} +__attribute__((__const__)) +static inline _Bool +rbimpl_right_shift_is_arithmetic_p(void) +{ + return (-1 >> 1) == -1; +} +__attribute__((__const__)) +static inline long +rb_fix2long(VALUE x) +{ + if (rbimpl_right_shift_is_arithmetic_p()) { + return rbimpl_fix2long_by_shift(x); + } + else { + return rbimpl_fix2long_by_idiv(x); + } +} +__attribute__((__const__)) +static inline unsigned long +rb_fix2ulong(VALUE x) +{ + ((void)0); + return rb_fix2long(x); +} +static inline long +rb_num2long_inline(VALUE x) +{ + if (RB_FIXNUM_P(x)) + return rb_fix2long(x); + else + return rb_num2long(x); +} +static inline unsigned long +rb_num2ulong_inline(VALUE x) +{ + if (RB_FIXNUM_P(x)) + return rb_fix2ulong(x); + else + return rb_num2ulong(x); +} +static inline VALUE +rb_long2num_inline(long v) +{ + if ((((v) < (2147483647L / 2) + 1) && ((v) >= ((-2147483647L -1L) / 2)))) + return RB_INT2FIX(v); + else + return rb_int2big(v); +} +static inline VALUE +rb_ulong2num_inline(unsigned long v) +{ + if (((v) < (2147483647L / 2) + 1)) + return RB_INT2FIX(v); + else + return rb_uint2big(v); +} +#undef INT2FIX +#define INT2FIX(i) __builtin_choose_expr( __builtin_constant_p(i), RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(i)) +#define RB_INT2NUM rb_int2num_inline +#define RB_NUM2INT rb_num2int_inline +#define RB_UINT2NUM rb_uint2num_inline +#define FIX2INT RB_FIX2INT +#define FIX2UINT RB_FIX2UINT +#define INT2NUM RB_INT2NUM +#define NUM2INT RB_NUM2INT +#define NUM2UINT RB_NUM2UINT +#define UINT2NUM RB_UINT2NUM +#define RB_FIX2INT RB_FIX2INT +#define RB_NUM2UINT RB_NUM2UINT +#define RB_FIX2UINT RB_FIX2UINT +#pragma GCC visibility push(default) +long rb_num2int(VALUE num); +long rb_fix2int(VALUE num); +unsigned long rb_num2uint(VALUE num); +unsigned long rb_fix2uint(VALUE num); +#pragma GCC visibility pop +__attribute__((__artificial__)) +static inline int +RB_FIX2INT(VALUE x) +{ + long ret; + if (sizeof(int) < sizeof(long)) { + ret = rb_fix2int(x); + } + else { + ret = rb_fix2long(x); + } + return ((int)ret); +} +static inline int +rb_num2int_inline(VALUE x) +{ + long ret; + if (sizeof(int) == sizeof(long)) { + ret = rb_num2long_inline(x); + } + else if (RB_FIXNUM_P(x)) { + ret = rb_fix2int(x); + } + else { + ret = rb_num2int(x); + } + return ((int)ret); +} +__attribute__((__artificial__)) +static inline unsigned int +RB_NUM2UINT(VALUE x) +{ + unsigned long ret; + if (sizeof(int) < sizeof(long)) { + ret = rb_num2uint(x); + } + else { + ret = rb_num2ulong_inline(x); + } + return ((unsigned int)ret); +} +__attribute__((__artificial__)) +static inline unsigned int +RB_FIX2UINT(VALUE x) +{ + unsigned long ret; + if (sizeof(int) < sizeof(long)) { + ret = rb_fix2uint(x); + } + else { + ret = rb_fix2ulong(x); + } + return ((unsigned int)ret); +} +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-constant-out-of-range-compare" +static inline VALUE +rb_int2num_inline(int v) +{ + if ((((v) < (2147483647L / 2) + 1) && ((v) >= ((-2147483647L -1L) / 2)))) + return RB_INT2FIX(v); + else + return rb_int2big(v); +} +static inline VALUE +rb_uint2num_inline(unsigned int v) +{ + if (((v) < (2147483647L / 2) + 1)) + return RB_INT2FIX(v); + else + return rb_uint2big(v); +} +#pragma clang diagnostic pop + +#define RBIMPL_RSTRING_H + +#define RBIMPL_RBASIC_H + +#define RBIMPL_ATTR_NOALIAS_H +#define RBIMPL_ATTR_NOALIAS() __declspec(noalias) +#define RBASIC(obj) RBIMPL_CAST((struct RBasic *)(obj)) +#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)))) +enum ruby_rvalue_flags { + RVALUE_EMBED_LEN_MAX = 3 +}; +struct +__declspec(align(8)) +RBasic { + VALUE flags; + const VALUE klass; +}; +#pragma GCC visibility push(default) +VALUE rb_obj_hide(VALUE obj); +VALUE rb_obj_reveal(VALUE obj, VALUE klass); +#pragma GCC visibility pop +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline VALUE +RBASIC_CLASS(VALUE obj) +{ + ((void)0); + return ((struct RBasic *)(obj))->klass; +} + + +#define RBIMPL_FL_TYPE_H + +#define RBIMPL_ATTR_FLAG_ENUM_H +#define RBIMPL_ATTR_FLAG_ENUM() __attribute__((__flag_enum__)) + +#define RBIMPL_VALUE_TYPE_H + +#define RBIMPL_CONSTANT_P_H +#define RBIMPL_CONSTANT_P(expr) __builtin_constant_p(expr) + +#define RBIMPL_ERROR_H +typedef enum { + RB_WARN_CATEGORY_NONE, + RB_WARN_CATEGORY_DEPRECATED, + RB_WARN_CATEGORY_EXPERIMENTAL, + RB_WARN_CATEGORY_ALL_BITS = 0x6 +} rb_warning_category_t; +enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE}; +#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE +#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE +#pragma GCC visibility push(default) +VALUE rb_errinfo(void); +void rb_set_errinfo(VALUE err); +__declspec(noreturn) +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +void rb_raise(VALUE exc, const char *fmt, ...); +__declspec(noreturn) +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 2))) +void rb_fatal(const char *fmt, ...); +__attribute__((__cold__)) +__declspec(noreturn) +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 2))) +void rb_bug(const char *fmt, ...); +__declspec(noreturn) +__attribute__((__nonnull__ ())) +void rb_bug_errno(const char *msg, int err); +__declspec(noreturn) +void rb_sys_fail(const char *msg); +__declspec(noreturn) +void rb_sys_fail_str(VALUE msg); +__declspec(noreturn) +__attribute__((__nonnull__ (2))) +void rb_mod_sys_fail(VALUE mod, const char *msg); +__declspec(noreturn) +void rb_mod_sys_fail_str(VALUE mod, VALUE msg); +__declspec(noreturn) +void rb_readwrite_sys_fail(enum rb_io_wait_readwrite waiting, const char *msg); +__declspec(noreturn) +void rb_iter_break(void); +__declspec(noreturn) +void rb_iter_break_value(VALUE val); +__declspec(noreturn) +void rb_exit(int status); +__declspec(noreturn) +void rb_notimplement(void); +VALUE rb_syserr_new(int err, const char * msg); +VALUE rb_syserr_new_str(int n, VALUE arg); +__declspec(noreturn) +void rb_syserr_fail(int err, const char *msg); +__declspec(noreturn) +void rb_syserr_fail_str(int err, VALUE msg); +__declspec(noreturn) +__attribute__((__nonnull__ ())) +void rb_mod_syserr_fail(VALUE mod, int err, const char *msg); +__declspec(noreturn) +void rb_mod_syserr_fail_str(VALUE mod, int err, VALUE msg); +__declspec(noreturn) +void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite waiting, int err, const char *msg); +__attribute__((__cold__)) +__declspec(noreturn) +void rb_unexpected_type(VALUE self, int t); +VALUE *rb_ruby_verbose_ptr(void); +VALUE *rb_ruby_debug_ptr(void); +#define ruby_verbose (*rb_ruby_verbose_ptr()) +#define ruby_debug (*rb_ruby_debug_ptr()) +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 2))) +void rb_warning(const char *fmt, ...); +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +void rb_category_warning(rb_warning_category_t cat, const char *fmt, ...); +__attribute__((__nonnull__ (1, 3))) +__attribute__((__format__(printf, 3, 4))) +void rb_compile_warning(const char *file, int line, const char *fmt, ...); +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 2))) +void rb_sys_warning(const char *fmt, ...); +__attribute__((__cold__)) +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 2))) +void rb_warn(const char *fmt, ...); +__attribute__((__cold__)) +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +void rb_category_warn(rb_warning_category_t cat, const char *fmt, ...); +__attribute__((__nonnull__ (1, 3))) +__attribute__((__format__(printf, 3, 4))) +void rb_compile_warn(const char *file, int line, const char *fmt, ...); +__attribute__((__nonnull__ (2, 4))) +__attribute__((__format__(printf, 4, 5))) +void rb_category_compile_warn(rb_warning_category_t cat, const char *file, int line, const char *fmt, ...); +#pragma GCC visibility pop +#define T_ARRAY RUBY_T_ARRAY +#define T_BIGNUM RUBY_T_BIGNUM +#define T_CLASS RUBY_T_CLASS +#define T_COMPLEX RUBY_T_COMPLEX +#define T_DATA RUBY_T_DATA +#define T_FALSE RUBY_T_FALSE +#define T_FILE RUBY_T_FILE +#define T_FIXNUM RUBY_T_FIXNUM +#define T_FLOAT RUBY_T_FLOAT +#define T_HASH RUBY_T_HASH +#define T_ICLASS RUBY_T_ICLASS +#define T_IMEMO RUBY_T_IMEMO +#define T_MASK RUBY_T_MASK +#define T_MATCH RUBY_T_MATCH +#define T_MODULE RUBY_T_MODULE +#define T_MOVED RUBY_T_MOVED +#define T_NIL RUBY_T_NIL +#define T_NODE RUBY_T_NODE +#define T_NONE RUBY_T_NONE +#define T_OBJECT RUBY_T_OBJECT +#define T_RATIONAL RUBY_T_RATIONAL +#define T_REGEXP RUBY_T_REGEXP +#define T_STRING RUBY_T_STRING +#define T_STRUCT RUBY_T_STRUCT +#define T_SYMBOL RUBY_T_SYMBOL +#define T_TRUE RUBY_T_TRUE +#define T_UNDEF RUBY_T_UNDEF +#define T_ZOMBIE RUBY_T_ZOMBIE +#define BUILTIN_TYPE RB_BUILTIN_TYPE +#define DYNAMIC_SYM_P RB_DYNAMIC_SYM_P +#define RB_INTEGER_TYPE_P rb_integer_type_p +#define SYMBOL_P RB_SYMBOL_P +#define rb_type_p RB_TYPE_P +#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 +#define RBIMPL_ASSERT_TYPE(v,t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t))) +#define TYPE(_) RBIMPL_CAST((int)rb_type(_)) +enum +__attribute__((__enum_extensibility__(closed))) +ruby_value_type { + RUBY_T_NONE = 0x00, + RUBY_T_OBJECT = 0x01, + RUBY_T_CLASS = 0x02, + RUBY_T_MODULE = 0x03, + RUBY_T_FLOAT = 0x04, + RUBY_T_STRING = 0x05, + RUBY_T_REGEXP = 0x06, + RUBY_T_ARRAY = 0x07, + RUBY_T_HASH = 0x08, + RUBY_T_STRUCT = 0x09, + RUBY_T_BIGNUM = 0x0a, + RUBY_T_FILE = 0x0b, + RUBY_T_DATA = 0x0c, + RUBY_T_MATCH = 0x0d, + RUBY_T_COMPLEX = 0x0e, + RUBY_T_RATIONAL = 0x0f, + RUBY_T_NIL = 0x11, + RUBY_T_TRUE = 0x12, + RUBY_T_FALSE = 0x13, + RUBY_T_SYMBOL = 0x14, + RUBY_T_FIXNUM = 0x15, + RUBY_T_UNDEF = 0x16, + RUBY_T_IMEMO = 0x1a, + RUBY_T_NODE = 0x1b, + RUBY_T_ICLASS = 0x1c, + RUBY_T_ZOMBIE = 0x1d, + RUBY_T_MOVED = 0x1e, + RUBY_T_MASK = 0x1f +}; +#pragma GCC visibility push(default) +__attribute__((__cold__)) +void rb_check_type(VALUE obj, int t); +#pragma GCC visibility pop +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline enum ruby_value_type +RB_BUILTIN_TYPE(VALUE obj) +{ + ((void)0); + VALUE ret = ((struct RBasic *)(obj))->flags & RUBY_T_MASK; + return ((enum ruby_value_type)ret); +} +__attribute__((__pure__)) +static inline _Bool +rb_integer_type_p(VALUE obj) +{ + if (RB_FIXNUM_P(obj)) { + return 1; + } + else if (RB_SPECIAL_CONST_P(obj)) { + return 0; + } + else { + return RB_BUILTIN_TYPE(obj) == RUBY_T_BIGNUM; + } +} +__attribute__((__pure__)) +static inline enum ruby_value_type +rb_type(VALUE obj) +{ + if (! RB_SPECIAL_CONST_P(obj)) { + return RB_BUILTIN_TYPE(obj); + } + else if (obj == ((VALUE)RUBY_Qfalse)) { + return RUBY_T_FALSE; + } + else if (obj == ((VALUE)RUBY_Qnil)) { + return RUBY_T_NIL; + } + else if (obj == ((VALUE)RUBY_Qtrue)) { + return RUBY_T_TRUE; + } + else if (obj == ((VALUE)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 { + __builtin_assume(RB_FLONUM_P(obj)); + return RUBY_T_FLOAT; + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_FLOAT_TYPE_P(VALUE obj) +{ + if (RB_FLONUM_P(obj)) { + return 1; + } + else if (RB_SPECIAL_CONST_P(obj)) { + return 0; + } + else { + return RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT; + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_DYNAMIC_SYM_P(VALUE obj) +{ + if (RB_SPECIAL_CONST_P(obj)) { + return 0; + } + else { + return RB_BUILTIN_TYPE(obj) == RUBY_T_SYMBOL; + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_SYMBOL_P(VALUE obj) +{ + return RB_STATIC_SYM_P(obj) || RB_DYNAMIC_SYM_P(obj); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +__attribute__((__always_inline__)) inline +static _Bool +rbimpl_RB_TYPE_P_fastpath(VALUE obj, enum ruby_value_type t) +{ + if (t == RUBY_T_TRUE) { + return obj == ((VALUE)RUBY_Qtrue); + } + else if (t == RUBY_T_FALSE) { + return obj == ((VALUE)RUBY_Qfalse); + } + else if (t == RUBY_T_NIL) { + return obj == ((VALUE)RUBY_Qnil); + } + else if (t == RUBY_T_UNDEF) { + return obj == ((VALUE)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 0; + } + else if (t == RB_BUILTIN_TYPE(obj)) { + return 1; + } + else { + return 0; + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_TYPE_P(VALUE obj, enum ruby_value_type t) +{ + if (__builtin_constant_p(t)) { + return rbimpl_RB_TYPE_P_fastpath(obj, t); + } + else { + return t == rb_type(obj); + } +} +#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))) +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool rbimpl_rtypeddata_p(VALUE obj); +__attribute__((__artificial__)) +static inline void +Check_Type(VALUE v, enum ruby_value_type t) +{ + if ((__builtin_expect(!!(! (__builtin_constant_p(t) ? rbimpl_RB_TYPE_P_fastpath((v), (t)) : (RB_TYPE_P)((v), (t)))), 0))) { + goto unexpected_type; + } + else if (t == RUBY_T_DATA && rbimpl_rtypeddata_p(v)) { + goto unexpected_type; + } + else { + return; + } + unexpected_type: + rb_unexpected_type(v, t); +} +#define RBIMPL_HAVE_ENUM_ATTRIBUTE 1 +#define RBIMPL_WIDER_ENUM 1 +#define FL_SINGLETON RBIMPL_CAST((VALUE)RUBY_FL_SINGLETON) +#define FL_WB_PROTECTED RBIMPL_CAST((VALUE)RUBY_FL_WB_PROTECTED) +#define FL_PROMOTED0 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED0) +#define FL_PROMOTED1 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED1) +#define FL_FINALIZE RBIMPL_CAST((VALUE)RUBY_FL_FINALIZE) +#define FL_TAINT RBIMPL_CAST((VALUE)RUBY_FL_TAINT) +#define FL_SHAREABLE RBIMPL_CAST((VALUE)RUBY_FL_SHAREABLE) +#define FL_UNTRUSTED RBIMPL_CAST((VALUE)RUBY_FL_UNTRUSTED) +#define FL_SEEN_OBJ_ID RBIMPL_CAST((VALUE)RUBY_FL_SEEN_OBJ_ID) +#define FL_EXIVAR RBIMPL_CAST((VALUE)RUBY_FL_EXIVAR) +#define FL_FREEZE RBIMPL_CAST((VALUE)RUBY_FL_FREEZE) +#define FL_USHIFT RBIMPL_CAST((VALUE)RUBY_FL_USHIFT) +#define FL_USER0 RBIMPL_CAST((VALUE)RUBY_FL_USER0) +#define FL_USER1 RBIMPL_CAST((VALUE)RUBY_FL_USER1) +#define FL_USER2 RBIMPL_CAST((VALUE)RUBY_FL_USER2) +#define FL_USER3 RBIMPL_CAST((VALUE)RUBY_FL_USER3) +#define FL_USER4 RBIMPL_CAST((VALUE)RUBY_FL_USER4) +#define FL_USER5 RBIMPL_CAST((VALUE)RUBY_FL_USER5) +#define FL_USER6 RBIMPL_CAST((VALUE)RUBY_FL_USER6) +#define FL_USER7 RBIMPL_CAST((VALUE)RUBY_FL_USER7) +#define FL_USER8 RBIMPL_CAST((VALUE)RUBY_FL_USER8) +#define FL_USER9 RBIMPL_CAST((VALUE)RUBY_FL_USER9) +#define FL_USER10 RBIMPL_CAST((VALUE)RUBY_FL_USER10) +#define FL_USER11 RBIMPL_CAST((VALUE)RUBY_FL_USER11) +#define FL_USER12 RBIMPL_CAST((VALUE)RUBY_FL_USER12) +#define FL_USER13 RBIMPL_CAST((VALUE)RUBY_FL_USER13) +#define FL_USER14 RBIMPL_CAST((VALUE)RUBY_FL_USER14) +#define FL_USER15 RBIMPL_CAST((VALUE)RUBY_FL_USER15) +#define FL_USER16 RBIMPL_CAST((VALUE)RUBY_FL_USER16) +#define FL_USER17 RBIMPL_CAST((VALUE)RUBY_FL_USER17) +#define FL_USER18 RBIMPL_CAST((VALUE)RUBY_FL_USER18) +#define FL_USER19 RBIMPL_CAST((VALUE)(unsigned int)RUBY_FL_USER19) +#define ELTS_SHARED RUBY_ELTS_SHARED +#define RB_OBJ_FREEZE rb_obj_freeze_inline +#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 +#define FL_ABLE RB_FL_ABLE +#define FL_ALL RB_FL_ALL +#define FL_ALL_RAW RB_FL_ALL_RAW +#define FL_ANY RB_FL_ANY +#define FL_ANY_RAW RB_FL_ANY_RAW +#define FL_REVERSE RB_FL_REVERSE +#define FL_REVERSE_RAW RB_FL_REVERSE_RAW +#define FL_SET RB_FL_SET +#define FL_SET_RAW RB_FL_SET_RAW +#define FL_TEST RB_FL_TEST +#define FL_TEST_RAW RB_FL_TEST_RAW +#define FL_UNSET RB_FL_UNSET +#define FL_UNSET_RAW RB_FL_UNSET_RAW +#define OBJ_FREEZE RB_OBJ_FREEZE +#define OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW +#define OBJ_FROZEN RB_OBJ_FROZEN +#define OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW +#define OBJ_INFECT RB_OBJ_INFECT +#define OBJ_INFECT_RAW RB_OBJ_INFECT_RAW +#define OBJ_TAINT RB_OBJ_TAINT +#define OBJ_TAINTABLE RB_OBJ_TAINTABLE +#define OBJ_TAINTED RB_OBJ_TAINTED +#define OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW +#define OBJ_TAINT_RAW RB_OBJ_TAINT_RAW +#define OBJ_UNTRUST RB_OBJ_UNTRUST +#define OBJ_UNTRUSTED RB_OBJ_UNTRUSTED +enum ruby_fl_ushift { + RUBY_FL_USHIFT = 12 +}; +__extension__ +enum +__attribute__((__flag_enum__)) +ruby_fl_type { + RUBY_FL_WB_PROTECTED = (1<<5), + RUBY_FL_PROMOTED0 = (1<<5), + RUBY_FL_PROMOTED1 = (1<<6), + RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0 | RUBY_FL_PROMOTED1, + RUBY_FL_FINALIZE = (1<<7), + RUBY_FL_TAINT + __attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) + = (1<<8), + RUBY_FL_SHAREABLE = (1<<8), + RUBY_FL_UNTRUSTED + __attribute__((__deprecated__ ("trustedness turned out to be a wrong idea."))) + = (1<<8), + RUBY_FL_SEEN_OBJ_ID = (1<<9), + RUBY_FL_EXIVAR = (1<<10), + RUBY_FL_FREEZE = (1<<11), +#define RBIMPL_FL_USER_N(n) RUBY_FL_USER##n = (1<<(RUBY_FL_USHIFT+n)) + RUBY_FL_USER0 = (1<<(RUBY_FL_USHIFT+0)), + RUBY_FL_USER1 = (1<<(RUBY_FL_USHIFT+1)), + RUBY_FL_USER2 = (1<<(RUBY_FL_USHIFT+2)), + RUBY_FL_USER3 = (1<<(RUBY_FL_USHIFT+3)), + RUBY_FL_USER4 = (1<<(RUBY_FL_USHIFT+4)), + RUBY_FL_USER5 = (1<<(RUBY_FL_USHIFT+5)), + RUBY_FL_USER6 = (1<<(RUBY_FL_USHIFT+6)), + RUBY_FL_USER7 = (1<<(RUBY_FL_USHIFT+7)), + RUBY_FL_USER8 = (1<<(RUBY_FL_USHIFT+8)), + RUBY_FL_USER9 = (1<<(RUBY_FL_USHIFT+9)), + RUBY_FL_USER10 = (1<<(RUBY_FL_USHIFT+10)), + RUBY_FL_USER11 = (1<<(RUBY_FL_USHIFT+11)), + RUBY_FL_USER12 = (1<<(RUBY_FL_USHIFT+12)), + RUBY_FL_USER13 = (1<<(RUBY_FL_USHIFT+13)), + RUBY_FL_USER14 = (1<<(RUBY_FL_USHIFT+14)), + RUBY_FL_USER15 = (1<<(RUBY_FL_USHIFT+15)), + RUBY_FL_USER16 = (1<<(RUBY_FL_USHIFT+16)), + RUBY_FL_USER17 = (1<<(RUBY_FL_USHIFT+17)), + RUBY_FL_USER18 = (1<<(RUBY_FL_USHIFT+18)), + RUBY_FL_USER19 = (1<<(RUBY_FL_USHIFT+19)), +#undef RBIMPL_FL_USER_N +#undef RBIMPL_WIDER_ENUM + RUBY_ELTS_SHARED = RUBY_FL_USER2, + RUBY_FL_SINGLETON = RUBY_FL_USER0, +}; +enum { + RUBY_FL_DUPPED + __attribute__((__deprecated__ ("It seems there is no actual usage of this enum."))) + = (int)RUBY_T_MASK | (int)RUBY_FL_EXIVAR +}; +#undef RBIMPL_HAVE_ENUM_ATTRIBUTE +#pragma GCC visibility push(default) +void rb_obj_infect(VALUE victim, VALUE carrier); +void rb_freeze_singleton_class(VALUE klass); +#pragma GCC visibility pop +__attribute__((__pure__)) +__attribute__((__artificial__)) +__attribute__((__always_inline__)) inline +static _Bool +RB_FL_ABLE(VALUE obj) +{ + if (RB_SPECIAL_CONST_P(obj)) { + return 0; + } + else if ((__builtin_constant_p(RUBY_T_NODE) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_NODE)) : (RB_TYPE_P)((obj), (RUBY_T_NODE)))) { + return 0; + } + else { + return 1; + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline VALUE +RB_FL_TEST_RAW(VALUE obj, VALUE flags) +{ + ((void)0); + return ((struct RBasic *)(obj))->flags & flags; +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline VALUE +RB_FL_TEST(VALUE obj, VALUE flags) +{ + if (RB_FL_ABLE(obj)) { + return RB_FL_TEST_RAW(obj, flags); + } + else { + return 0ULL; + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_FL_ANY_RAW(VALUE obj, VALUE flags) +{ + return RB_FL_TEST_RAW(obj, flags); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_FL_ANY(VALUE obj, VALUE flags) +{ + return RB_FL_TEST(obj, flags); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_FL_ALL_RAW(VALUE obj, VALUE flags) +{ + return RB_FL_TEST_RAW(obj, flags) == flags; +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_FL_ALL(VALUE obj, VALUE flags) +{ + return RB_FL_TEST(obj, flags) == flags; +} +__declspec(noalias) +__attribute__((__artificial__)) +static inline void +rbimpl_fl_set_raw_raw(struct RBasic *obj, VALUE flags) +{ + obj->flags |= flags; +} +__attribute__((__artificial__)) +static inline void +RB_FL_SET_RAW(VALUE obj, VALUE flags) +{ + ((void)0); + rbimpl_fl_set_raw_raw(((struct RBasic *)(obj)), flags); +} +__attribute__((__artificial__)) +static inline void +RB_FL_SET(VALUE obj, VALUE flags) +{ + if (RB_FL_ABLE(obj)) { + RB_FL_SET_RAW(obj, flags); + } +} +__declspec(noalias) +__attribute__((__artificial__)) +static inline void +rbimpl_fl_unset_raw_raw(struct RBasic *obj, VALUE flags) +{ + obj->flags &= ~flags; +} +__attribute__((__artificial__)) +static inline void +RB_FL_UNSET_RAW(VALUE obj, VALUE flags) +{ + ((void)0); + rbimpl_fl_unset_raw_raw(((struct RBasic *)(obj)), flags); +} +__attribute__((__artificial__)) +static inline void +RB_FL_UNSET(VALUE obj, VALUE flags) +{ + if (RB_FL_ABLE(obj)) { + RB_FL_UNSET_RAW(obj, flags); + } +} +__declspec(noalias) +__attribute__((__artificial__)) +static inline void +rbimpl_fl_reverse_raw_raw(struct RBasic *obj, VALUE flags) +{ + obj->flags ^= flags; +} +__attribute__((__artificial__)) +static inline void +RB_FL_REVERSE_RAW(VALUE obj, VALUE flags) +{ + ((void)0); + rbimpl_fl_reverse_raw_raw(((struct RBasic *)(obj)), flags); +} +__attribute__((__artificial__)) +static inline void +RB_FL_REVERSE(VALUE obj, VALUE flags) +{ + if (RB_FL_ABLE(obj)) { + RB_FL_REVERSE_RAW(obj, flags); + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline _Bool +RB_OBJ_TAINTABLE(VALUE obj) +{ + return 0; +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline VALUE +RB_OBJ_TAINTED_RAW(VALUE obj) +{ + return 0; +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline _Bool +RB_OBJ_TAINTED(VALUE obj) +{ + return 0; +} +__attribute__((__artificial__)) +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline void +RB_OBJ_TAINT_RAW(VALUE obj) +{ + return; +} +__attribute__((__artificial__)) +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline void +RB_OBJ_TAINT(VALUE obj) +{ + return; +} +__attribute__((__artificial__)) +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline void +RB_OBJ_INFECT_RAW(VALUE dst, VALUE src) +{ + return; +} +__attribute__((__artificial__)) +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline void +RB_OBJ_INFECT(VALUE dst, VALUE src) +{ + return; +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline VALUE +RB_OBJ_FROZEN_RAW(VALUE obj) +{ + return RB_FL_TEST_RAW(obj, RUBY_FL_FREEZE); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_OBJ_FROZEN(VALUE obj) +{ + if (! RB_FL_ABLE(obj)) { + return 1; + } + else { + return RB_OBJ_FROZEN_RAW(obj); + } +} +__attribute__((__artificial__)) +static inline void +RB_OBJ_FREEZE_RAW(VALUE obj) +{ + RB_FL_SET_RAW(obj, RUBY_FL_FREEZE); +} +static inline void +rb_obj_freeze_inline(VALUE x) +{ + if (RB_FL_ABLE(x)) { + RB_OBJ_FREEZE_RAW(x); + if (RBASIC_CLASS(x) && !(((struct RBasic *)(x))->flags & RUBY_FL_SINGLETON)) { + rb_freeze_singleton_class(x); + } + } +} +#define RSTRING(obj) RBIMPL_CAST((struct RString *)(obj)) +#define RSTRING_NOEMBED RSTRING_NOEMBED +#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 +#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 +#define StringValue(v) rb_string_value(&(v)) +#define StringValuePtr(v) rb_string_value_ptr(&(v)) +#define StringValueCStr(v) rb_string_value_cstr(&(v)) +#define SafeStringValue(v) StringValue(v) +#define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v); } while (0) +enum ruby_rstring_flags { + RSTRING_NOEMBED = RUBY_FL_USER1, + RSTRING_EMBED_LEN_MASK = RUBY_FL_USER2 | RUBY_FL_USER3 | RUBY_FL_USER4 | + RUBY_FL_USER5 | RUBY_FL_USER6, + RSTRING_FSTR = RUBY_FL_USER17 +}; +enum ruby_rstring_consts { + RSTRING_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 2, + RSTRING_EMBED_LEN_MAX = ((int)(sizeof(VALUE[3]) / (sizeof(char)))) - 1 +}; +struct RString { + struct RBasic basic; + union { + struct { + long len; + char *ptr; + union { + long capa; + VALUE shared; + } aux; + } heap; + struct { + char ary[RSTRING_EMBED_LEN_MAX + 1]; + } embed; + } as; +}; +#pragma GCC visibility push(default) +VALUE rb_str_to_str(VALUE obj); +VALUE rb_string_value(volatile VALUE *ptr); +char *rb_string_value_ptr(volatile VALUE *ptr); +char *rb_string_value_cstr(volatile VALUE *ptr); +VALUE rb_str_export(VALUE obj); +VALUE rb_str_export_locale(VALUE obj); +__attribute__((__error__ ("rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead"))) +void rb_check_safe_str(VALUE); +#define Check_SafeStr(v) rb_check_safe_str(RBIMPL_CAST((VALUE)(v))) +void rb_debug_rstring_null_ptr(const char *func); +#pragma GCC visibility pop +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline long +RSTRING_EMBED_LEN(VALUE str) +{ + ((void)0); + ((void)0); + VALUE f = ((struct RBasic *)(str))->flags; + f &= RSTRING_EMBED_LEN_MASK; + f >>= RSTRING_EMBED_LEN_SHIFT; + return ((long)f); +} +#pragma clang diagnostic push +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline struct RString +rbimpl_rstring_getmem(VALUE str) +{ + ((void)0); + if (RB_FL_ANY_RAW(str, RSTRING_NOEMBED)) { + return *((struct RString *)(str)); + } + else { + struct RString retval; + retval.as.heap.len = RSTRING_EMBED_LEN(str); + retval.as.heap.ptr = ((struct RString *)(str))->as.embed.ary; + return retval; + } +} +#pragma clang diagnostic pop +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline long +RSTRING_LEN(VALUE str) +{ + return rbimpl_rstring_getmem(str).as.heap.len; +} +__attribute__((__artificial__)) +static inline char * +RSTRING_PTR(VALUE str) +{ + char *ptr = rbimpl_rstring_getmem(str).as.heap.ptr; + if ((__builtin_expect(!!(! ptr), 0))) { + rb_debug_rstring_null_ptr("RSTRING_PTR"); + } + return ptr; +} +__attribute__((__artificial__)) +static inline char * +RSTRING_END(VALUE str) +{ + struct RString buf = rbimpl_rstring_getmem(str); + if ((__builtin_expect(!!(! buf.as.heap.ptr), 0))) { + rb_debug_rstring_null_ptr("RSTRING_END"); + } + return &buf.as.heap.ptr[buf.as.heap.len]; +} +__attribute__((__artificial__)) +static inline int +RSTRING_LENINT(VALUE str) +{ + return rb_long2int_inline(RSTRING_LEN(str)); +} +#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; }) +#define RB_NUM2CHR rb_num2char_inline +#define NUM2CHR RB_NUM2CHR +#define CHR2FIX RB_CHR2FIX +#define RB_CHR2FIX RB_CHR2FIX +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline VALUE +RB_CHR2FIX(unsigned char c) +{ + return RB_INT2FIX(c); +} +static inline char +rb_num2char_inline(VALUE x) +{ + if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((x), (RUBY_T_STRING)) : (RB_TYPE_P)((x), (RUBY_T_STRING))) && (RSTRING_LEN(x)>=1)) + return RSTRING_PTR(x)[0]; + else + return ((char)rb_num2int_inline(x)); +} + +#define RBIMPL_ARITHMETIC_DOUBLE_H +#define NUM2DBL rb_num2dbl +#define RFLOAT_VALUE rb_float_value +#define DBL2NUM rb_float_new +#pragma GCC visibility push(default) +double rb_num2dbl(VALUE num); +__attribute__((__pure__)) +double rb_float_value(VALUE num); +VALUE rb_float_new(double d); +VALUE rb_float_new_in_heap(double d); +#pragma GCC visibility pop + + +#define RBIMPL_ARITHMETIC_GID_T_H + +#define RBIMPL_ARITHMETIC_LONG_LONG_H +#define RB_LL2NUM rb_ll2num_inline +#define RB_ULL2NUM rb_ull2num_inline +#define LL2NUM RB_LL2NUM +#define ULL2NUM RB_ULL2NUM +#define RB_NUM2LL rb_num2ll_inline +#define RB_NUM2ULL rb_num2ull_inline +#define NUM2LL RB_NUM2LL +#define NUM2ULL RB_NUM2ULL +#pragma GCC visibility push(default) +VALUE rb_ll2inum( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + num); +VALUE rb_ull2inum(unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + num); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + rb_num2ll(VALUE num); +unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + rb_num2ull(VALUE num); +#pragma GCC visibility pop +static inline VALUE +rb_ll2num_inline( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + n) +{ + if ((((n) < (2147483647L / 2) + 1) && ((n) >= ((-2147483647L -1L) / 2)))) return RB_INT2FIX((long)n); + return rb_ll2inum(n); +} +static inline VALUE +rb_ull2num_inline(unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + n) +{ + if (((n) < (2147483647L / 2) + 1)) return RB_INT2FIX((long)n); + return rb_ull2inum(n); +} +static inline +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop +rb_num2ll_inline(VALUE x) +{ + if (RB_FIXNUM_P(x)) + return rb_fix2long(x); + else + return rb_num2ll(x); +} +static inline unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop +rb_num2ull_inline(VALUE x) +{ + if (RB_FIXNUM_P(x)) + return rb_fix2long(x); + else + return rb_num2ull(x); +} + +#define RBIMPL_ARITHMETIC_MODE_T_H + +#define RBIMPL_ARITHMETIC_OFF_T_H + +#define RBIMPL_ARITHMETIC_PID_T_H + +#define RBIMPL_ARITHMETIC_SHORT_H +#define RB_NUM2SHORT rb_num2short_inline +#define RB_NUM2USHORT rb_num2ushort +#define NUM2SHORT RB_NUM2SHORT +#define NUM2USHORT RB_NUM2USHORT +#define USHORT2NUM RB_INT2FIX +#define RB_FIX2SHORT rb_fix2short +#define FIX2SHORT RB_FIX2SHORT +#pragma GCC visibility push(default) +short rb_num2short(VALUE num); +unsigned short rb_num2ushort(VALUE num); +short rb_fix2short(VALUE num); +unsigned short rb_fix2ushort(VALUE num); +#pragma GCC visibility pop +static inline short +rb_num2short_inline(VALUE x) +{ + if (RB_FIXNUM_P(x)) + return rb_fix2short(x); + else + return rb_num2short(x); +} + +#define RBIMPL_ARITHMETIC_SIZE_T_H +#define RB_SIZE2NUM RB_ULL2NUM +#define RB_SSIZE2NUM RB_LL2NUM +#define RB_NUM2SIZE RB_NUM2ULL +#define RB_NUM2SSIZE RB_NUM2LL +#define NUM2SIZET RB_NUM2SIZE +#define SIZET2NUM RB_SIZE2NUM +#define NUM2SSIZET RB_NUM2SSIZE +#define SSIZET2NUM RB_SSIZE2NUM + +#define RBIMPL_ARITHMERIC_ST_DATA_T_H +#define RUBY_ST_H 1 +#pragma GCC visibility push(default) +typedef unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + st_data_t; +#define ST_DATA_T_DEFINED +typedef struct st_table st_table; +typedef st_data_t 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[8 == (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_index_t (*hash)(st_data_t); +}; +#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT) +#define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0) +typedef struct st_table_entry st_table_entry; +struct st_table_entry; +struct st_table { + unsigned char entry_power, bin_power, size_ind; + unsigned int rebuilds_num; + const struct st_hash_type *type; + st_index_t num_entries; + st_index_t *bins; + st_index_t entries_start, entries_bound; + 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 *); +#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 *); +#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); +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 +__attribute__((__const__)) int rb_st_numcmp(st_data_t, st_data_t); +#define st_numcmp rb_st_numcmp +__attribute__((__const__)) st_index_t rb_st_numhash(st_data_t); +#define st_numhash rb_st_numhash +__attribute__((__pure__)) int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2); +#define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp +__attribute__((__pure__)) 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 +__attribute__((__pure__)) size_t rb_st_memsize(const st_table *); +#define st_memsize rb_st_memsize +__attribute__((__pure__)) st_index_t rb_st_hash(const void *ptr, size_t len, st_index_t h); +#define st_hash rb_st_hash +__attribute__((__const__)) st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i); +#define st_hash_uint32 rb_st_hash_uint32 +__attribute__((__const__)) st_index_t rb_st_hash_uint(st_index_t h, st_index_t i); +#define st_hash_uint rb_st_hash_uint +__attribute__((__const__)) st_index_t rb_st_hash_end(st_index_t h); +#define st_hash_end rb_st_hash_end +__attribute__((__const__)) 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); +#pragma GCC visibility pop + +#define ST2FIX RB_ST2FIX +#define RB_ST2FIX RB_ST2FIX +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline VALUE +RB_ST2FIX(st_data_t i) +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + x = i; + if (x >= 0) { + x &= (2147483647L / 2); + } + else { + x |= ((-2147483647L -1L) / 2); + } + ((void)0); + unsigned long y = ((unsigned long)x); + return RB_INT2FIX(y); +} + +#define RBIMPL_ARITHMETIC_UID_T_H + +#define RBIMPL_CORE_H + +#define RBIMPL_RARRAY_H + +#define RBIMPL_RGENGC_H +#undef USE_RGENGC +#define USE_RGENGC 1 +#define USE_RINCGC 1 +#define USE_RGENGC_LOGGING_WB_UNPROTECT 0 +#define RGENGC_WB_PROTECTED_ARRAY 1 +#define RGENGC_WB_PROTECTED_HASH 1 +#define RGENGC_WB_PROTECTED_STRUCT 1 +#define RGENGC_WB_PROTECTED_STRING 1 +#define RGENGC_WB_PROTECTED_OBJECT 1 +#define RGENGC_WB_PROTECTED_REGEXP 1 +#define RGENGC_WB_PROTECTED_CLASS 1 +#define RGENGC_WB_PROTECTED_FLOAT 1 +#define RGENGC_WB_PROTECTED_COMPLEX 1 +#define RGENGC_WB_PROTECTED_RATIONAL 1 +#define RGENGC_WB_PROTECTED_BIGNUM 1 +#define RGENGC_WB_PROTECTED_NODE_CREF 1 +#define RB_OBJ_WRITE(old,slot,young) RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__)) +#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 +#define OBJ_PROMOTED RB_OBJ_PROMOTED +#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT +#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__) +#define RB_OBJ_WB_UNPROTECT_FOR(type,obj) (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj) +#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging +#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW +#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED +#pragma GCC visibility push(default) +void rb_gc_writebarrier(VALUE old, VALUE young); +void rb_gc_writebarrier_unprotect(VALUE obj); +#pragma GCC visibility pop +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_OBJ_PROMOTED_RAW(VALUE obj) +{ + ((void)0); + return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RB_OBJ_PROMOTED(VALUE obj) +{ + if (! RB_FL_ABLE(obj)) { + return 0; + } + else { + return RB_OBJ_PROMOTED_RAW(obj); + } +} +static inline VALUE +rb_obj_wb_unprotect( + VALUE x, + [[maybe_unused]] + const char *filename, + [[maybe_unused]] + int line) +{ + rb_gc_writebarrier_unprotect(x); + return x; +} +static inline VALUE +rb_obj_written( + VALUE a, + [[maybe_unused]] + VALUE oldv, + VALUE b, + [[maybe_unused]] + const char *filename, + [[maybe_unused]] + int line) +{ + if (!RB_SPECIAL_CONST_P(b)) { + rb_gc_writebarrier(a, b); + } + return a; +} +static inline VALUE +rb_obj_write( + VALUE a, VALUE *slot, VALUE b, + [[maybe_unused]] + const char *filename, + [[maybe_unused]] + int line) +{ + *slot = b; + rb_obj_written(a, ((VALUE)RUBY_Qundef) , b, filename, line); + return a; +} +#define USE_TRANSIENT_HEAP 1 +#define RARRAY(obj) RBIMPL_CAST((struct RArray *)(obj)) +#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 +#define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG +#define RARRAY_LEN rb_array_len +#define RARRAY_CONST_PTR rb_array_const_ptr +#define RARRAY_CONST_PTR_TRANSIENT rb_array_const_ptr_transient +#define FIX_CONST_VALUE_PTR(x) (x) +#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 +enum ruby_rarray_flags { + RARRAY_EMBED_FLAG = RUBY_FL_USER1, + RARRAY_EMBED_LEN_MASK = RUBY_FL_USER4 | RUBY_FL_USER3 + , + RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13 +}; +enum ruby_rarray_consts { + RARRAY_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 3, + RARRAY_EMBED_LEN_MAX = ((int)(sizeof(VALUE[3]) / (sizeof(VALUE)))) +}; +struct RArray { + struct RBasic basic; + union { + struct { + long len; + union { + long capa; + const + VALUE shared_root; + } aux; + const VALUE *ptr; + } heap; + const VALUE ary[RARRAY_EMBED_LEN_MAX]; + } as; +}; +#pragma GCC visibility push(default) +VALUE *rb_ary_ptr_use_start(VALUE ary); +void rb_ary_ptr_use_end(VALUE a); +void rb_ary_detransient(VALUE a); +#pragma GCC visibility pop +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline long +RARRAY_EMBED_LEN(VALUE ary) +{ + ((void)0); + ((void)0); + VALUE f = ((struct RBasic *)(ary))->flags; + f &= RARRAY_EMBED_LEN_MASK; + f >>= RARRAY_EMBED_LEN_SHIFT; + return ((long)f); +} +__attribute__((__pure__)) +static inline long +rb_array_len(VALUE a) +{ + ((void)0); + if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) { + return RARRAY_EMBED_LEN(a); + } + else { + return ((struct RArray *)(a))->as.heap.len; + } +} +__attribute__((__artificial__)) +static inline int +RARRAY_LENINT(VALUE ary) +{ + return rb_long2int_inline(rb_array_len(ary)); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RARRAY_TRANSIENT_P(VALUE ary) +{ + ((void)0); + return RB_FL_ANY_RAW(ary, RARRAY_TRANSIENT_FLAG); +} +__attribute__((__pure__)) +static inline const VALUE * +rb_array_const_ptr_transient(VALUE a) +{ + ((void)0); + if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) { + return (((struct RArray *)(a))->as.ary); + } + else { + return (((struct RArray *)(a))->as.heap.ptr); + } +} +static inline const VALUE * +rb_array_const_ptr(VALUE a) +{ + ((void)0); + if (RARRAY_TRANSIENT_P(a)) { + rb_ary_detransient(a); + } + return rb_array_const_ptr_transient(a); +} +static inline VALUE * +rb_array_ptr_use_start(VALUE a, + [[maybe_unused]] + int allow_transient) +{ + ((void)0); + if (!allow_transient) { + if (RARRAY_TRANSIENT_P(a)) { + rb_ary_detransient(a); + } + } + return rb_ary_ptr_use_start(a); +} +static inline void +rb_array_ptr_use_end(VALUE a, + [[maybe_unused]] + int allow_transient) +{ + ((void)0); + rb_ary_ptr_use_end(a); +} +#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) +#define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0) +#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0) +#define RARRAY_PTR_USE(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(0, ary, ptr_name, expr) +#define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1) +#define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1) +#define RARRAY_PTR_USE_TRANSIENT(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(1, ary, ptr_name, expr) +static inline VALUE * +RARRAY_PTR(VALUE ary) +{ + ((void)0); + VALUE tmp = (1 ? rb_obj_wb_unprotect(ary, "../ruby-3.1.5/include/ruby/internal/core/rarray.h", 555) : ary); + return ((VALUE *)rb_array_const_ptr(tmp)); +} +static inline void +RARRAY_ASET(VALUE ary, long i, VALUE v) +{ + do { ((void)0); const VALUE rbimpl_ary = (ary); VALUE *ptr = rb_array_ptr_use_start(rbimpl_ary, (1)); (rb_obj_write((VALUE)(ary), (VALUE *)(&ptr[i]), (VALUE)(v), "../ruby-3.1.5/include/ruby/internal/core/rarray.h", 574)); rb_array_ptr_use_end(rbimpl_ary, (1)); } while (0); +} +#define RARRAY_AREF(a,i) RARRAY_CONST_PTR_TRANSIENT(a)[i] + + +#define RBIMPL_RBIGNUM_H +#define RBIGNUM_SIGN rb_big_sign +#define RBIGNUM_POSITIVE_P RBIGNUM_POSITIVE_P +#define RBIGNUM_NEGATIVE_P RBIGNUM_NEGATIVE_P +#pragma GCC visibility push(default) +int rb_big_sign(VALUE num); +#pragma GCC visibility pop +static inline _Bool +RBIGNUM_POSITIVE_P(VALUE b) +{ + ((void)0); + return rb_big_sign(b); +} +static inline _Bool +RBIGNUM_NEGATIVE_P(VALUE b) +{ + ((void)0); + return ! RBIGNUM_POSITIVE_P(b); +} + +#define RBIMPL_RCLASS_H +#define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID +#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT +#define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT +#define RCLASS(obj) RBIMPL_CAST((struct RClass *)(obj)) +#define RMODULE RCLASS +#define RCLASS_SUPER rb_class_get_superclass +enum ruby_rmodule_flags { + RMODULE_IS_OVERLAID = RUBY_FL_USER2, + RMODULE_IS_REFINEMENT = RUBY_FL_USER3, + RMODULE_INCLUDED_INTO_REFINEMENT = RUBY_FL_USER4 +}; +struct RClass; +#pragma GCC visibility push(default) +VALUE rb_class_get_superclass(VALUE klass); +#pragma GCC visibility pop + +#define RBIMPL_RDATA_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define RUBY_UNTYPED_DATA_WARNING 1 +#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) +#define RDATA(obj) RBIMPL_CAST((struct RData *)(obj)) +#define DATA_PTR(obj) RDATA(obj)->data +#define RUBY_DEFAULT_FREE RBIMPL_DATA_FUNC(-1) +#define RUBY_NEVER_FREE RBIMPL_DATA_FUNC(0) +#define RUBY_UNTYPED_DATA_FUNC(f) f RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() +typedef void (*RUBY_DATA_FUNC)(void*); +struct RData { + struct RBasic basic; + RUBY_DATA_FUNC dmark; + RUBY_DATA_FUNC dfree; + void *data; +}; +#pragma GCC visibility push(default) +VALUE rb_data_object_wrap(VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree); +VALUE rb_data_object_zalloc(VALUE klass, size_t size, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree); +extern __declspec(dllimport) VALUE rb_cObject; +#pragma GCC visibility pop +#define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap( (klass), (sval), RBIMPL_DATA_FUNC(mark), RBIMPL_DATA_FUNC(free)) +#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( (void)(sval)) +#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; }) +#define Data_Get_Struct(obj,type,sval) ((sval) = RBIMPL_CAST((type*)rb_data_object_get(obj))) +__attribute__((__warning__ ("untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData"))) +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); +} +static inline void * +rb_data_object_get(VALUE obj) +{ + Check_Type(obj, RUBY_T_DATA); + return ((struct RData *)(obj))->data; +} +__attribute__((__warning__ ("untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData"))) +static inline void * +rb_data_object_get_warning(VALUE obj) +{ + return rb_data_object_get(obj); +} +#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))) +static inline VALUE +rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size) +{ + VALUE result = rb_data_object_zalloc( (klass), (size), ((void (*)(void *))(mark_func)), ((void (*)(void *))(free_func))); (*datap) = ((void *)((struct RData *)(result))->data); ((void)(*datap)); + return result; +} +__attribute__((__deprecated__ ("by: 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); +} +__attribute__((__deprecated__ ("by: rb_cObject. Will be removed in 3.1."))) +__attribute__((__pure__)) +static inline VALUE +rb_cData(void) +{ + return rb_cObject; +} +#define rb_cData rb_cData() +#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_ +#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_ +#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_ +#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_2, RUBY_UNTYPED_DATA_WARNING) + +#define RBIMPL_RFILE_H +struct rb_io_t; +struct RFile { + struct RBasic basic; + struct rb_io_t *fptr; +}; +#define RFILE(obj) RBIMPL_CAST((struct RFile *)(obj)) + +#define RBIMPL_RHASH_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__) +#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h) +#define RHASH_IFNONE(h) rb_hash_ifnone(h) +#define RHASH_SIZE(h) rb_hash_size_num(h) +#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0) +#define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone) +struct st_table; +#pragma GCC visibility push(default) +size_t rb_hash_size_num(VALUE hash); +struct st_table *rb_hash_tbl(VALUE hash, const char *file, int line); +VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone); +#pragma GCC visibility pop + +#define RBIMPL_ROBJECT_H +#define ROBJECT(obj) RBIMPL_CAST((struct RObject *)(obj)) +#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 +enum ruby_robject_flags { + ROBJECT_EMBED = RUBY_FL_USER1 +}; +enum ruby_robject_consts { + ROBJECT_EMBED_LEN_MAX = ((int)(sizeof(VALUE[3]) / (sizeof(VALUE)))) +}; +struct st_table; +struct RObject { + struct RBasic basic; + union { + struct { + uint32_t numiv; + VALUE *ivptr; + struct st_table *iv_index_tbl; + } heap; + VALUE ary[ROBJECT_EMBED_LEN_MAX]; + } as; +}; +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline uint32_t +ROBJECT_NUMIV(VALUE obj) +{ + ((void)0); + if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) { + return ROBJECT_EMBED_LEN_MAX; + } + else { + return ((struct RObject *)(obj))->as.heap.numiv; + } +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline VALUE * +ROBJECT_IVPTR(VALUE obj) +{ + ((void)0); + struct RObject *const ptr = ((struct RObject *)(obj)); + if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) { + return ptr->as.ary; + } + else { + return ptr->as.heap.ivptr; + } +} + +#define RBIMPL_RREGEXP_H +#define RREGEXP(obj) RBIMPL_CAST((struct RRegexp *)(obj)) +#define RREGEXP_PTR(obj) (RREGEXP(obj)->ptr) +#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 +struct re_patter_buffer; +struct RRegexp { + struct RBasic basic; + struct re_pattern_buffer *ptr; + const VALUE src; + unsigned long usecnt; +}; +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline VALUE +RREGEXP_SRC(VALUE rexp) +{ + ((void)0); + VALUE ret = ((struct RRegexp *)(rexp))->src; + ((void)0); + return ret; +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline char * +RREGEXP_SRC_PTR(VALUE rexp) +{ + return RSTRING_PTR(RREGEXP_SRC(rexp)); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline long +RREGEXP_SRC_LEN(VALUE rexp) +{ + return RSTRING_LEN(RREGEXP_SRC(rexp)); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline char * +RREGEXP_SRC_END(VALUE rexp) +{ + return RSTRING_END(RREGEXP_SRC(rexp)); +} + + +#define RBIMPL_RSTRUCT_H +#define RSTRUCT_PTR(st) rb_struct_ptr(st) +#define RSTRUCT_LEN RSTRUCT_LEN +#define RSTRUCT_SET RSTRUCT_SET +#define RSTRUCT_GET RSTRUCT_GET +#pragma GCC visibility push(default) +VALUE rb_struct_size(VALUE st); +VALUE rb_struct_aref(VALUE st, VALUE k); +VALUE rb_struct_aset(VALUE st, VALUE k, VALUE v); +#pragma GCC visibility pop +__attribute__((__artificial__)) +static inline long +RSTRUCT_LEN(VALUE st) +{ + ((void)0); + return rb_num2long_inline(rb_struct_size(st)); +} +__attribute__((__artificial__)) +static inline VALUE +RSTRUCT_SET(VALUE st, int k, VALUE v) +{ + ((void)0); + return rb_struct_aset(st, rb_int2num_inline(k), (v)); +} +__attribute__((__artificial__)) +static inline VALUE +RSTRUCT_GET(VALUE st, int k) +{ + ((void)0); + return rb_struct_aref(st, rb_int2num_inline(k)); +} + +#define RBIMPL_RTYPEDDATA_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define HAVE_TYPE_RB_DATA_TYPE_T 1 +#define HAVE_RB_DATA_TYPE_T_FUNCTION 1 +#define HAVE_RB_DATA_TYPE_T_PARENT 1 +#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE +#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE +#define RTYPEDDATA(obj) RBIMPL_CAST((struct RTypedData *)(obj)) +#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data) +#define Check_TypedStruct(v,t) rb_check_typeddata(RBIMPL_CAST((VALUE)(v)), (t)) +#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 +enum +__attribute__((__flag_enum__)) +rbimpl_typeddata_flags { + RUBY_TYPED_FREE_IMMEDIATELY = 1, + RUBY_TYPED_FROZEN_SHAREABLE = RUBY_FL_SHAREABLE, + RUBY_TYPED_WB_PROTECTED = RUBY_FL_WB_PROTECTED, + RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1 +}; +typedef struct rb_data_type_struct rb_data_type_t; +struct rb_data_type_struct { + const char *wrap_struct_name; + struct { + RUBY_DATA_FUNC dmark; + RUBY_DATA_FUNC dfree; + size_t (*dsize)(const void *); + RUBY_DATA_FUNC dcompact; + void *reserved[1]; + } function; + const rb_data_type_t *parent; + void *data; + VALUE flags; +}; +struct RTypedData { + struct RBasic basic; + const rb_data_type_t *type; + VALUE typed_flag; + void *data; +}; +#pragma GCC visibility push(default) +__attribute__((__nonnull__ (3))) +VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type); +VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type); +int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent); +int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type); +void *rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type); +#pragma GCC visibility pop +#define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type)) +#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( (void)(sval)) +#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; }) +#define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = RBIMPL_CAST((type *)rb_check_typeddata((obj), (data_type)))) +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +rbimpl_rtypeddata_p(VALUE obj) +{ + return ((struct RTypedData *)(obj))->typed_flag == 1; +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline _Bool +RTYPEDDATA_P(VALUE obj) +{ + return rbimpl_rtypeddata_p(obj); +} +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline const struct rb_data_type_struct * +RTYPEDDATA_TYPE(VALUE obj) +{ + return ((struct RTypedData *)(obj))->type; +} +static inline VALUE +rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size) +{ + VALUE result = rb_data_typed_object_zalloc(klass, size, type); (*datap) = ((void *)(((struct RTypedData *)(result))->data)); ((void)(*datap)); + return result; +} +__attribute__((__deprecated__ ("by: 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); +} + +#define RBIMPL_CTYPE_H +#define ISASCII rb_isascii +#define ISPRINT rb_isprint +#define ISGRAPH rb_isgraph +#define ISSPACE rb_isspace +#define ISUPPER rb_isupper +#define ISLOWER rb_islower +#define ISALNUM rb_isalnum +#define ISALPHA rb_isalpha +#define ISDIGIT rb_isdigit +#define ISXDIGIT rb_isxdigit +#define ISBLANK rb_isblank +#define ISCNTRL rb_iscntrl +#define ISPUNCT rb_ispunct +#define TOUPPER rb_toupper +#define TOLOWER rb_tolower +#define STRCASECMP st_locale_insensitive_strcasecmp +#define STRNCASECMP st_locale_insensitive_strncasecmp +#define STRTOUL ruby_strtoul +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2); +__attribute__((__nonnull__ ())) +int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n); +__attribute__((__nonnull__ (1))) +unsigned long ruby_strtoul(const char *str, char **endptr, int base); +#pragma GCC visibility pop +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isascii(int c) +{ + return '\0' <= c && c <= '\x7f'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isupper(int c) +{ + return 'A' <= c && c <= 'Z'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_islower(int c) +{ + return 'a' <= c && c <= 'z'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isalpha(int c) +{ + return rb_isupper(c) || rb_islower(c); +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isdigit(int c) +{ + return '0' <= c && c <= '9'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isalnum(int c) +{ + return rb_isalpha(c) || rb_isdigit(c); +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isxdigit(int c) +{ + return rb_isdigit(c) || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'); +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isblank(int c) +{ + return c == ' ' || c == '\t'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isspace(int c) +{ + return c == ' ' || ('\t' <= c && c <= '\r'); +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_iscntrl(int c) +{ + return ('\0' <= c && c < ' ') || c == '\x7f'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isprint(int c) +{ + return ' ' <= c && c <= '\x7e'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_ispunct(int c) +{ + return !rb_isalnum(c); +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_isgraph(int c) +{ + return '!' <= c && c <= '\x7e'; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_tolower(int c) +{ + return rb_isupper(c) ? (c|0x20) : c; +} +__attribute__((__const__)) +__attribute__((__artificial__)) +static inline int +rb_toupper(int c) +{ + return rb_islower(c) ? (c&0x5f) : c; +} + +#define RBIMPL_EVAL_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +VALUE rb_eval_string(const char *str); +__attribute__((__nonnull__ (1))) +VALUE rb_eval_string_protect(const char *str, int *state); +__attribute__((__nonnull__ (1))) +VALUE rb_eval_string_wrap(const char *str, int *state); +VALUE rb_funcall(VALUE recv, ID mid, int n, ...); +VALUE rb_funcallv(VALUE recv, ID mid, int argc, const VALUE *argv); +VALUE rb_funcallv_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); +VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, const VALUE *argv); +VALUE rb_funcallv_public_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); +#define rb_funcall2 rb_funcallv +#define rb_funcall3 rb_funcallv_public +VALUE rb_funcall_passing_block(VALUE recv, ID mid, int argc, const VALUE *argv); +VALUE rb_funcall_passing_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat); +VALUE rb_funcall_with_block(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval); +VALUE rb_funcall_with_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval, int kw_splat); +VALUE rb_call_super(int argc, const VALUE *argv); +VALUE rb_call_super_kw(int argc, const VALUE *argv, int kw_splat); +VALUE rb_current_receiver(void); +__attribute__((__nonnull__ (2))) +int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values); +__attribute__((__nonnull__ ())) +VALUE rb_extract_keywords(VALUE *orighash); +#pragma GCC visibility pop + +#define RBIMPL_EVENT_H +#define RUBY_EVENT_NONE 0x0000 +#define RUBY_EVENT_LINE 0x0001 +#define RUBY_EVENT_CLASS 0x0002 +#define RUBY_EVENT_END 0x0004 +#define RUBY_EVENT_CALL 0x0008 +#define RUBY_EVENT_RETURN 0x0010 +#define RUBY_EVENT_C_CALL 0x0020 +#define RUBY_EVENT_C_RETURN 0x0040 +#define RUBY_EVENT_RAISE 0x0080 +#define RUBY_EVENT_ALL 0x00ff +#define RUBY_EVENT_B_CALL 0x0100 +#define RUBY_EVENT_B_RETURN 0x0200 +#define RUBY_EVENT_THREAD_BEGIN 0x0400 +#define RUBY_EVENT_THREAD_END 0x0800 +#define RUBY_EVENT_FIBER_SWITCH 0x1000 +#define RUBY_EVENT_SCRIPT_COMPILED 0x2000 +#define RUBY_EVENT_TRACEPOINT_ALL 0xffff +#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000 +#define RUBY_INTERNAL_EVENT_SWITCH 0x040000 +#define RUBY_EVENT_SWITCH 0x040000 +#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000 +#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000 +#define RUBY_INTERNAL_EVENT_GC_START 0x400000 +#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000 +#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000 +#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000 +#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000 +#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000 +#define RUBY_INTERNAL_EVENT_MASK 0xffff0000 +typedef uint32_t rb_event_flag_t; +typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass); +#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1 +#pragma GCC visibility push(default) +void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data); +int rb_remove_event_hook(rb_event_hook_func_t func); +#pragma GCC visibility pop + + +#define RBIMPL_GC_H +#pragma GCC visibility push(default) +void rb_gc_register_address(VALUE *valptr); +void rb_global_variable(VALUE *); +void rb_gc_unregister_address(VALUE *valptr); +void rb_gc_register_mark_object(VALUE object); +#pragma GCC visibility pop + +#define RBIMPL_GLOB_H +#pragma GCC visibility push(default) +typedef int ruby_glob_func(const char *path, VALUE arg, void *enc); +__attribute__((__nonnull__ ())) +void rb_glob(const char *pattern, void (*func)(const char *path, VALUE arg, void *enc), VALUE arg); +__attribute__((__nonnull__ ())) +int ruby_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg); +__attribute__((__nonnull__ ())) +int ruby_brace_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg); +#pragma GCC visibility pop + +#define RBIMPL_GLOBALS_H +#pragma GCC visibility push(default) +#define RUBY_INTEGER_UNIFICATION 1 +extern __declspec(dllimport) VALUE rb_mKernel; +extern __declspec(dllimport) VALUE rb_mComparable; +extern __declspec(dllimport) VALUE rb_mEnumerable; +extern __declspec(dllimport) VALUE rb_mErrno; +extern __declspec(dllimport) VALUE rb_mFileTest; +extern __declspec(dllimport) VALUE rb_mGC; +extern __declspec(dllimport) VALUE rb_mMath; +extern __declspec(dllimport) VALUE rb_mProcess; +extern __declspec(dllimport) VALUE rb_mWaitReadable; +extern __declspec(dllimport) VALUE rb_mWaitWritable; +extern __declspec(dllimport) VALUE rb_cBasicObject; +extern __declspec(dllimport) VALUE rb_cObject; +extern __declspec(dllimport) VALUE rb_cArray; +extern __declspec(dllimport) VALUE rb_cBinding; +extern __declspec(dllimport) VALUE rb_cClass; +extern __declspec(dllimport) VALUE rb_cDir; +extern __declspec(dllimport) VALUE rb_cEncoding; +extern __declspec(dllimport) VALUE rb_cEnumerator; +extern __declspec(dllimport) VALUE rb_cFalseClass; +extern __declspec(dllimport) VALUE rb_cFile; +extern __declspec(dllimport) VALUE rb_cComplex; +extern __declspec(dllimport) VALUE rb_cFloat; +extern __declspec(dllimport) VALUE rb_cHash; +extern __declspec(dllimport) VALUE rb_cIO; +extern __declspec(dllimport) VALUE rb_cInteger; +extern __declspec(dllimport) VALUE rb_cMatch; +extern __declspec(dllimport) VALUE rb_cMethod; +extern __declspec(dllimport) VALUE rb_cModule; +extern __declspec(dllimport) VALUE rb_cRefinement; +extern __declspec(dllimport) VALUE rb_cNameErrorMesg; +extern __declspec(dllimport) VALUE rb_cNilClass; +extern __declspec(dllimport) VALUE rb_cNumeric; +extern __declspec(dllimport) VALUE rb_cProc; +extern __declspec(dllimport) VALUE rb_cRandom; +extern __declspec(dllimport) VALUE rb_cRange; +extern __declspec(dllimport) VALUE rb_cRational; +extern __declspec(dllimport) VALUE rb_cRegexp; +extern __declspec(dllimport) VALUE rb_cStat; +extern __declspec(dllimport) VALUE rb_cString; +extern __declspec(dllimport) VALUE rb_cStruct; +extern __declspec(dllimport) VALUE rb_cSymbol; +extern __declspec(dllimport) VALUE rb_cThread; +extern __declspec(dllimport) VALUE rb_cTime; +extern __declspec(dllimport) VALUE rb_cTrueClass; +extern __declspec(dllimport) VALUE rb_cUnboundMethod; +extern __declspec(dllimport) VALUE rb_eException; +extern __declspec(dllimport) VALUE rb_eStandardError; +extern __declspec(dllimport) VALUE rb_eSystemExit; +extern __declspec(dllimport) VALUE rb_eInterrupt; +extern __declspec(dllimport) VALUE rb_eSignal; +extern __declspec(dllimport) VALUE rb_eFatal; +extern __declspec(dllimport) VALUE rb_eArgError; +extern __declspec(dllimport) VALUE rb_eEOFError; +extern __declspec(dllimport) VALUE rb_eIndexError; +extern __declspec(dllimport) VALUE rb_eStopIteration; +extern __declspec(dllimport) VALUE rb_eKeyError; +extern __declspec(dllimport) VALUE rb_eRangeError; +extern __declspec(dllimport) VALUE rb_eIOError; +extern __declspec(dllimport) VALUE rb_eRuntimeError; +extern __declspec(dllimport) VALUE rb_eFrozenError; +extern __declspec(dllimport) VALUE rb_eSecurityError; +extern __declspec(dllimport) VALUE rb_eSystemCallError; +extern __declspec(dllimport) VALUE rb_eThreadError; +extern __declspec(dllimport) VALUE rb_eTypeError; +extern __declspec(dllimport) VALUE rb_eZeroDivError; +extern __declspec(dllimport) VALUE rb_eNotImpError; +extern __declspec(dllimport) VALUE rb_eNoMemError; +extern __declspec(dllimport) VALUE rb_eNoMethodError; +extern __declspec(dllimport) VALUE rb_eFloatDomainError; +extern __declspec(dllimport) VALUE rb_eLocalJumpError; +extern __declspec(dllimport) VALUE rb_eSysStackError; +extern __declspec(dllimport) VALUE rb_eRegexpError; +extern __declspec(dllimport) VALUE rb_eEncodingError; +extern __declspec(dllimport) VALUE rb_eEncCompatError; +extern __declspec(dllimport) VALUE rb_eNoMatchingPatternError; +extern __declspec(dllimport) VALUE rb_eNoMatchingPatternKeyError; +extern __declspec(dllimport) VALUE rb_eScriptError; +extern __declspec(dllimport) VALUE rb_eNameError; +extern __declspec(dllimport) VALUE rb_eSyntaxError; +extern __declspec(dllimport) VALUE rb_eLoadError; +extern __declspec(dllimport) VALUE rb_eMathDomainError; +extern __declspec(dllimport) VALUE rb_stdin; +extern __declspec(dllimport) VALUE rb_stdout; +extern __declspec(dllimport) VALUE rb_stderr; +__attribute__((__pure__)) +static inline VALUE +rb_class_of(VALUE obj) +{ + if (! RB_SPECIAL_CONST_P(obj)) { + return RBASIC_CLASS(obj); + } + else if (obj == ((VALUE)RUBY_Qfalse)) { + return rb_cFalseClass; + } + else if (obj == ((VALUE)RUBY_Qnil)) { + return rb_cNilClass; + } + else if (obj == ((VALUE)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; + } + __builtin_unreachable(); +} +#define CLASS_OF rb_class_of +#pragma GCC visibility pop + + +#define RBIMPL_INTERPRETER_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +void ruby_sysinit(int *argc, char ***argv); +void ruby_init(void); +void* ruby_options(int argc, char** argv); +int ruby_executable_node(void *n, int *status); +int ruby_run_node(void *n); +void ruby_show_version(void); +void ruby_show_copyright(void); +#define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame); +void ruby_init_stack(volatile VALUE *addr); +int ruby_setup(void); +int ruby_cleanup(int ex); +void ruby_finalize(void); +__declspec(noreturn) +void ruby_stop(int); +int ruby_stack_check(void); +size_t ruby_stack_length(VALUE **topnotch); +int ruby_exec_node(void *n); +void ruby_script(const char* name); +void ruby_set_script_name(VALUE name); +void ruby_prog_init(void); +void ruby_set_argv(int argc, char **argv); +void *ruby_process_options(int argc, char **argv); +void ruby_init_loadpath(void); +void ruby_incpush(const char *path); +void ruby_sig_finalize(void); +#pragma GCC visibility pop + +#define RBIMPL_ITERATOR_H +#pragma GCC visibility push(default) +#define RB_BLOCK_CALL_FUNC_STRICT 1 +#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1 +#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg +typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg); +typedef rb_block_call_func *rb_block_call_func_t; +VALUE rb_each(VALUE obj); +VALUE rb_yield(VALUE val); +VALUE rb_yield_values(int n, ...); +VALUE rb_yield_values2(int n, const VALUE *argv); +VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat); +VALUE rb_yield_splat(VALUE ary); +VALUE rb_yield_splat_kw(VALUE ary, int kw_splat); +VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg); +int rb_keyword_given_p(void); +int rb_block_given_p(void); +void rb_need_block(void); +__attribute__((__deprecated__ ("by: rb_block_call since 1.9"))) +VALUE rb_iterate(VALUE (*func1)(VALUE), VALUE data1, rb_block_call_func_t proc, VALUE data2); +VALUE rb_block_call(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2); +VALUE rb_block_call_kw(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2, int kw_splat); +VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2); +VALUE rb_rescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, ...); +VALUE rb_vrescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, va_list ap); +VALUE rb_ensure(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*e_proc)(VALUE), VALUE data2); +VALUE rb_catch(const char *tag, rb_block_call_func_t func, VALUE data); +VALUE rb_catch_obj(VALUE tag, rb_block_call_func_t func, VALUE data); +__declspec(noreturn) +void rb_throw(const char *tag, VALUE val); +__declspec(noreturn) +void rb_throw_obj(VALUE tag, VALUE val); +#pragma GCC visibility pop + +#define RBIMPL_MEMORY_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define DSIZE_T uint128_t +#define RUBY_ALLOCV_LIMIT 1024 +#define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; })) +#define RB_ALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xmalloc2((n), sizeof(type))) +#define RB_ALLOC(type) RBIMPL_CAST((type *)ruby_xmalloc(sizeof(type))) +#define RB_ZALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xcalloc((n), sizeof(type))) +#define RB_ZALLOC(type) (RB_ZALLOC_N(type, 1)) +#define RB_REALLOC_N(var,type,n) ((var) = RBIMPL_CAST((type *)ruby_xrealloc2((void *)(var), (n), sizeof(type)))) +#define ALLOCA_N(type,n) RBIMPL_CAST((type *)alloca(rbimpl_size_mul_or_raise(sizeof(type), (n)))) +#define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n))) +#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)))) +#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v)) +#define MEMZERO(p,type,n) memset((p), 0, rbimpl_size_mul_or_raise(sizeof(type), (n))) +#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n))) +#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n))) +#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n))) +#define ALLOC_N RB_ALLOC_N +#define ALLOC RB_ALLOC +#define ZALLOC_N RB_ZALLOC_N +#define ZALLOC RB_ZALLOC +#define REALLOC_N RB_REALLOC_N +#define ALLOCV RB_ALLOCV +#define ALLOCV_N RB_ALLOCV_N +#define ALLOCV_END RB_ALLOCV_END +struct rbimpl_size_mul_overflow_tag { + _Bool left; + size_t right; +}; +#pragma GCC visibility push(default) +__attribute__((__malloc__)) +__attribute__((__returns_nonnull__)) +__attribute__((__alloc_size__ (2))) +__attribute__((__nonnull__ ())) +void *rb_alloc_tmp_buffer(volatile VALUE *store, long len); +__attribute__((__malloc__)) +__attribute__((__returns_nonnull__)) +__attribute__((__alloc_size__ (2,3))) +__attribute__((__nonnull__ ())) +void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count); +void rb_free_tmp_buffer(volatile VALUE *store); +__declspec(noreturn) +void ruby_malloc_size_overflow(size_t x, size_t y); +#pragma GCC visibility pop +static inline int +rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c) +{ + __extension__ unsigned __int128 da, db, c2; + da = a; + db = b; + c2 = da * db; + if (c2 > max) return 1; + *c = ((size_t)c2); + return 0; +} +__attribute__((__const__)) +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 = { 0, 0, }; + ret.left = __builtin_mul_overflow(x, y, &ret.right); + return ret; +} +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 ((__builtin_expect(!!(! size.left), 1))) { + return size.right; + } + else { + ruby_malloc_size_overflow(x, y); + __builtin_unreachable(); + } +} +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); +} + + +#define RBIMPL_MODULE_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +VALUE rb_define_class(const char *name, VALUE super); +__attribute__((__nonnull__ ())) +VALUE rb_define_module(const char *name); +__attribute__((__nonnull__ ())) +VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super); +__attribute__((__nonnull__ ())) +VALUE rb_define_module_under(VALUE outer, const char *name); +void rb_include_module(VALUE klass, VALUE module); +void rb_extend_object(VALUE obj, VALUE mod); +void rb_prepend_module(VALUE klass, VALUE module); +#pragma GCC visibility pop + +#define RBIMPL_NEWOBJ_H +#define RB_NEWOBJ(obj,type) type *(obj) = RBIMPL_CAST((type *)rb_newobj()) +#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = RBIMPL_CAST((type *)rb_newobj_of(klass, flags)) +#define NEWOBJ RB_NEWOBJ +#define NEWOBJ_OF RB_NEWOBJ_OF +#define OBJSETUP rb_obj_setup +#define CLONESETUP rb_clone_setup +#define DUPSETUP rb_dup_setup +#pragma GCC visibility push(default) +VALUE rb_newobj(void); +VALUE rb_newobj_of(VALUE klass, VALUE flags); +VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type); +VALUE rb_obj_class(VALUE obj); +VALUE rb_singleton_class_clone(VALUE obj); +void rb_singleton_class_attached(VALUE klass, VALUE obj); +void rb_copy_generic_ivar(VALUE clone, VALUE obj); +#pragma GCC visibility pop +__attribute__((__deprecated__ ("This is no longer how Object#clone works."))) +static inline void +rb_clone_setup(VALUE clone, VALUE obj) +{ + return; +} +__attribute__((__deprecated__ ("This is no longer how Object#dup works."))) +static inline void +rb_dup_setup(VALUE dup, VALUE obj) +{ + return; +} + + +#define RBIMPL_SCAN_ARGS_H + +#define RBIMPL_ATTR_DIAGNOSE_IF_H +#define RBIMPL_ATTR_DIAGNOSE_IF(_,__,___) RBIMPL_WARNING_PUSH() RBIMPL_WARNING_IGNORED(-Wgcc-compat) __attribute__((__diagnose_if__(_, __, ___))) RBIMPL_WARNING_POP() + +#define RBIMPL_INTERN_ARRAY_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +__declspec(noalias) +void rb_mem_clear(VALUE *buf, long len) + ; +VALUE rb_assoc_new(VALUE car, VALUE cdr); +VALUE rb_check_array_type(VALUE obj); +VALUE rb_ary_new(void); +VALUE rb_ary_new_capa(long capa); +VALUE rb_ary_new_from_args(long n, ...); +VALUE rb_ary_new_from_values(long n, const VALUE *elts); +VALUE rb_ary_tmp_new(long capa); +void rb_ary_free(VALUE ary); +void rb_ary_modify(VALUE ary); +VALUE rb_ary_freeze(VALUE obj); +__attribute__((__pure__)) +VALUE rb_ary_shared_with_p(VALUE lhs, VALUE rhs); +VALUE rb_ary_aref(int argc, const VALUE *argv, VALUE ary); +VALUE rb_ary_subseq(VALUE ary, long beg, long len); +void rb_ary_store(VALUE ary, long key, VALUE val); +VALUE rb_ary_dup(VALUE ary); +VALUE rb_ary_resurrect(VALUE ary); +VALUE rb_ary_to_ary(VALUE obj); +VALUE rb_ary_to_s(VALUE ary); +VALUE rb_ary_cat(VALUE ary, const VALUE *train, long len); +VALUE rb_ary_push(VALUE ary, VALUE elem); +VALUE rb_ary_pop(VALUE ary); +VALUE rb_ary_shift(VALUE ary); +VALUE rb_ary_unshift(VALUE ary, VALUE elem); +__attribute__((__pure__)) +VALUE rb_ary_entry(VALUE ary, long off); +VALUE rb_ary_each(VALUE ary); +VALUE rb_ary_join(VALUE ary, VALUE sep); +VALUE rb_ary_reverse(VALUE ary); +VALUE rb_ary_rotate(VALUE ary, long rot); +VALUE rb_ary_sort(VALUE ary); +VALUE rb_ary_sort_bang(VALUE ary); +VALUE rb_ary_delete(VALUE ary, VALUE elem); +VALUE rb_ary_delete_at(VALUE ary, long pos); +VALUE rb_ary_clear(VALUE ary); +VALUE rb_ary_plus(VALUE lhs, VALUE rhs); +VALUE rb_ary_concat(VALUE lhs, VALUE rhs); +VALUE rb_ary_assoc(VALUE alist, VALUE key); +VALUE rb_ary_rassoc(VALUE alist, VALUE key); +VALUE rb_ary_includes(VALUE ary, VALUE elem); +VALUE rb_ary_cmp(VALUE lhs, VALUE rhs); +VALUE rb_ary_replace(VALUE copy, VALUE orig); +VALUE rb_get_values_at(VALUE obj, long olen, int argc, const VALUE *argv, VALUE (*func)(VALUE obj, long oidx)); +VALUE rb_ary_resize(VALUE ary, long len); +#define rb_ary_new2 rb_ary_new_capa +#define rb_ary_new3 rb_ary_new_from_args +#define rb_ary_new4 rb_ary_new_from_values +#pragma GCC visibility pop + +#define RBIMPL_INTERN_ERROR_H +#define UNLIMITED_ARGUMENTS (-1) +#define rb_exc_new2 rb_exc_new_cstr +#define rb_exc_new3 rb_exc_new_str +#define rb_check_trusted rb_check_trusted +#define rb_check_trusted_inline rb_check_trusted +#define rb_check_arity rb_check_arity +#pragma GCC visibility push(default) +VALUE rb_exc_new(VALUE etype, const char *ptr, long len); +__attribute__((__nonnull__ ())) +VALUE rb_exc_new_cstr(VALUE etype, const char *str); +VALUE rb_exc_new_str(VALUE etype, VALUE str); +__declspec(noreturn) +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 2))) +void rb_loaderror(const char *fmt, ...); +__declspec(noreturn) +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +void rb_loaderror_with_path(VALUE path, const char *fmt, ...); +__declspec(noreturn) +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +void rb_name_error(ID name, const char *fmt, ...); +__declspec(noreturn) +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +void rb_name_error_str(VALUE name, const char *fmt, ...); +__declspec(noreturn) +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +void rb_frozen_error_raise(VALUE recv, const char *fmt, ...); +__declspec(noreturn) +__attribute__((__nonnull__ ())) +void rb_invalid_str(const char *str, const char *type); +__declspec(noreturn) +__attribute__((__nonnull__ ())) +void rb_error_frozen(const char *what); +__declspec(noreturn) +void rb_error_frozen_object(VALUE what); +void rb_error_untrusted(VALUE); +void rb_check_frozen(VALUE obj); +void rb_check_trusted(VALUE); +void rb_check_copyable(VALUE obj, VALUE orig); +__declspec(noreturn) +static void rb_error_arity(int argc, int min, int max); +#pragma GCC visibility pop +#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) +static inline void +rb_check_frozen_inline(VALUE obj) +{ + if ((__builtin_expect(!!(RB_OBJ_FROZEN(obj)), 0))) { + rb_error_frozen_object(obj); + } +} +#define rb_check_frozen rb_check_frozen_inline +static inline int +rb_check_arity(int argc, int min, int max) +{ + if ((argc < min) || (max != (-1) && argc > max)) + rb_error_arity(argc, min, max); + return argc; +} + +#define RBIMPL_INTERN_HASH_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +void rb_st_foreach_safe(struct st_table *st, st_foreach_callback_func *func, st_data_t arg); +#define st_foreach_safe rb_st_foreach_safe +VALUE rb_check_hash_type(VALUE obj); +__attribute__((__nonnull__ ())) +void rb_hash_foreach(VALUE hash, int (*func)(VALUE key, VALUE val, VALUE arg), VALUE arg); +VALUE rb_hash(VALUE obj); +VALUE rb_hash_new(void); +VALUE rb_hash_dup(VALUE hash); +VALUE rb_hash_freeze(VALUE obj); +VALUE rb_hash_aref(VALUE hash, VALUE key); +VALUE rb_hash_lookup(VALUE hash, VALUE key); +VALUE rb_hash_lookup2(VALUE hash, VALUE key, VALUE def); +VALUE rb_hash_fetch(VALUE hash, VALUE key); +VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val); +VALUE rb_hash_clear(VALUE hash); +VALUE rb_hash_delete_if(VALUE hash); +VALUE rb_hash_delete(VALUE hash, VALUE key); +void rb_hash_bulk_insert(long argc, const VALUE *argv, VALUE hash); +typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value); +VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func); +int rb_path_check(const char *path); +int rb_env_path_tainted(void); +VALUE rb_env_clear(void); +VALUE rb_hash_size(VALUE hash); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_PROC_H +#pragma GCC visibility push(default) +VALUE rb_block_proc(void); +VALUE rb_block_lambda(void); +VALUE rb_proc_new(rb_block_call_func_t func, VALUE callback_arg); +VALUE rb_obj_is_proc(VALUE recv); +VALUE rb_proc_call(VALUE recv, VALUE args); +VALUE rb_proc_call_kw(VALUE recv, VALUE args, int kw_splat); +VALUE rb_proc_call_with_block(VALUE recv, int argc, const VALUE *argv, VALUE proc); +VALUE rb_proc_call_with_block_kw(VALUE recv, int argc, const VALUE *argv, VALUE proc, int kw_splat); +int rb_proc_arity(VALUE recv); +VALUE rb_proc_lambda_p(VALUE recv); +VALUE rb_binding_new(void); +VALUE rb_obj_method(VALUE recv, VALUE mid); +VALUE rb_obj_is_method(VALUE recv); +VALUE rb_method_call(int argc, const VALUE *argv, VALUE recv); +VALUE rb_method_call_kw(int argc, const VALUE *argv, VALUE recv, int kw_splat); +VALUE rb_method_call_with_block(int argc, const VALUE *argv, VALUE recv, VALUE proc); +VALUE rb_method_call_with_block_kw(int argc, const VALUE *argv, VALUE recv, VALUE proc, int kw_splat); +int rb_mod_method_arity(VALUE mod, ID mid); +int rb_obj_method_arity(VALUE obj, ID mid); +__attribute__((__nonnull__ (1))) +VALUE rb_protect(VALUE (*func)(VALUE args), VALUE args, int *state); +#pragma GCC visibility pop +#define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0 +#define RB_SCAN_ARGS_KEYWORDS 1 +#define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3 +#define RB_NO_KEYWORDS 0 +#define RB_PASS_KEYWORDS 1 +#define RB_PASS_CALLED_KEYWORDS rb_keyword_given_p() +#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1 +#pragma GCC visibility push(default) +__attribute__((__nonnull__ (2, 3))) +int rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...); +__attribute__((__nonnull__ (3, 4))) +int rb_scan_args_kw(int kw_splat, int argc, const VALUE *argv, const char *fmt, ...); +__attribute__((__error__ ("bad scan arg format"))) +void rb_scan_args_bad_format(const char*); +__attribute__((__error__ ("variable argument length doesn't match"))) +void rb_scan_args_length_mismatch(const char*,int); +#pragma GCC visibility pop +#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) +#define rb_scan_args_verify(fmt,varc) RBIMPL_ASSERT_NOTHING +static inline _Bool +rb_scan_args_keyword_p(int kw_flag, VALUE last) +{ + switch (kw_flag) { + case 0: + return !! rb_keyword_given_p(); + case 1: + return 1; + case 3: + return (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((last), (RUBY_T_HASH)) : (RB_TYPE_P)((last), (RUBY_T_HASH))); + default: + return 0; + } +} +__attribute__((__always_inline__)) inline +static _Bool +rb_scan_args_lead_p(const char *fmt) +{ + return (((unsigned char)((fmt[0])-'0'))<10); +} +__attribute__((__always_inline__)) inline +static int +rb_scan_args_n_lead(const char *fmt) +{ + return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0); +} +__attribute__((__always_inline__)) inline +static _Bool +rb_scan_args_opt_p(const char *fmt) +{ + return (rb_scan_args_lead_p(fmt) && (((unsigned char)((fmt[1])-'0'))<10)); +} +__attribute__((__always_inline__)) inline +static int +rb_scan_args_n_opt(const char *fmt) +{ + return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0); +} +__attribute__((__always_inline__)) inline +static int +rb_scan_args_var_idx(const char *fmt) +{ + return (!rb_scan_args_lead_p(fmt) ? 0 : !(((unsigned char)((fmt[1])-'0'))<10) ? 1 : 2); +} +__attribute__((__always_inline__)) inline +static _Bool +rb_scan_args_f_var(const char *fmt) +{ + return (fmt[rb_scan_args_var_idx(fmt)]=='*'); +} +__attribute__((__always_inline__)) inline +static int +rb_scan_args_trail_idx(const char *fmt) +{ + const int idx = rb_scan_args_var_idx(fmt); + return idx+(fmt[idx]=='*'); +} +__attribute__((__always_inline__)) inline +static int +rb_scan_args_n_trail(const char *fmt) +{ + const int idx = rb_scan_args_trail_idx(fmt); + return ((((unsigned char)((fmt[idx])-'0'))<10) ? fmt[idx]-'0' : 0); +} +__attribute__((__always_inline__)) inline +static int +rb_scan_args_hash_idx(const char *fmt) +{ + const int idx = rb_scan_args_trail_idx(fmt); + return idx+(((unsigned char)((fmt[idx])-'0'))<10); +} +__attribute__((__always_inline__)) inline +static _Bool +rb_scan_args_f_hash(const char *fmt) +{ + return (fmt[rb_scan_args_hash_idx(fmt)]==':'); +} +__attribute__((__always_inline__)) inline +static int +rb_scan_args_block_idx(const char *fmt) +{ + const int idx = rb_scan_args_hash_idx(fmt); + return idx+(fmt[idx]==':'); +} +__attribute__((__always_inline__)) inline +static _Bool +rb_scan_args_f_block(const char *fmt) +{ + return (fmt[rb_scan_args_block_idx(fmt)]=='&'); +} +#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) +__attribute__((__always_inline__)) inline +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[], const char *fmt [[maybe_unused]], int varc [[maybe_unused]]) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + __attribute__((__diagnose_if__((!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!='*' ? (!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!=':' ? ((fmt)[0]!='&' ? ((fmt)[0] ? -1 : (0)) : ((fmt)[(0)+1] ? -1 : ((0)+1))) : ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)))) : ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+((fmt)[0]-'0'))) : ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+((fmt)[0]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+1)+((fmt)[(0)+1]-'0'))+1)+1)))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!='*' ? (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+(fmt)[0]-'0')) : ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)+1)))))) : ((fmt)[((0)+1)+1]!='*' ? (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(((0)+1)+1)+1])-'0'))<10) ? ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)+1)))) : ((fmt)[((((0)+1)+1)+1)+1]!=':' ? ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1))) : ((fmt)[(((((0)+1)+1)+1)+1)+1]!='&' ? ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)) : ((fmt)[((((((0)+1)+1)+1)+1)+1)+1] ? -1 : (((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)+1)))))))) < 0, "bad scan arg format", "error"))) +#pragma clang diagnostic pop +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + __attribute__((__diagnose_if__((!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!='*' ? (!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!=':' ? ((fmt)[0]!='&' ? ((fmt)[0] ? -1 : (0)) : ((fmt)[(0)+1] ? -1 : ((0)+1))) : ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)))) : ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+((fmt)[0]-'0'))) : ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+((fmt)[0]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+1)+((fmt)[(0)+1]-'0'))+1)+1)))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!='*' ? (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+(fmt)[0]-'0')) : ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)+1)))))) : ((fmt)[((0)+1)+1]!='*' ? (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(((0)+1)+1)+1])-'0'))<10) ? ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)+1)))) : ((fmt)[((((0)+1)+1)+1)+1]!=':' ? ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1))) : ((fmt)[(((((0)+1)+1)+1)+1)+1]!='&' ? ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)) : ((fmt)[((((((0)+1)+1)+1)+1)+1)+1] ? -1 : (((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)+1)))))))) != varc, "variable argument length doesn't match", "error"))) +#pragma clang diagnostic pop +{ + int i, argi = 0, vari = 0; + VALUE *var, hash = ((VALUE)RUBY_Qnil); +#define rb_scan_args_next_param() vars[vari++] + const int n_mand = n_lead + n_trail; + 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; + } + for (i = 0; i < n_lead; i++) { + var = vars[vari++]; + if (var) *var = argv[argi]; + argi++; + } + for (i = 0; i < n_opt; i++) { + var = vars[vari++]; + if (argi < argc - n_trail) { + if (var) *var = argv[argi]; + argi++; + } + else { + if (var) *var = ((VALUE)RUBY_Qnil); + } + } + if (f_var) { + int n_var = argc - argi - n_trail; + var = vars[vari++]; + 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(); + } + } + for (i = 0; i < n_trail; i++) { + var = vars[vari++]; + if (var) *var = argv[argi]; + argi++; + } + if (f_hash) { + var = vars[vari++]; + if (var) *var = hash; + } + if (f_block) { + var = vars[vari++]; + if (rb_block_given_p()) { + *var = rb_block_proc(); + } + else { + *var = ((VALUE)RUBY_Qnil); + } + } + if (argi == argc) { + return argc; + } + argc_error: + rb_error_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt); + __builtin_unreachable(); +#undef rb_scan_args_next_param +} +#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__))) + + +#define RBIMPL_SYMBOL_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define RB_ID2SYM rb_id2sym +#define RB_SYM2ID rb_sym2id +#define ID2SYM RB_ID2SYM +#define SYM2ID RB_SYM2ID +#define CONST_ID_CACHE RUBY_CONST_ID_CACHE +#define CONST_ID RUBY_CONST_ID +#define rb_intern_const rb_intern_const +#pragma GCC visibility push(default) +ID rb_sym2id(VALUE obj); +VALUE rb_id2sym(ID id); +__attribute__((__nonnull__ ())) +ID rb_intern(const char *name); +ID rb_intern2(const char *name, long len); +ID rb_intern_str(VALUE str); +const char *rb_id2name(ID id); +__attribute__((__nonnull__ ())) +ID rb_check_id(volatile VALUE *namep); +ID rb_to_id(VALUE str); +VALUE rb_id2str(ID id); +VALUE rb_sym2str(VALUE id); +VALUE rb_to_symbol(VALUE name); +__attribute__((__nonnull__ ())) +VALUE rb_check_symbol(volatile VALUE *namep); +#pragma GCC visibility pop +__attribute__((__pure__)) +__attribute__((__nonnull__ ())) +static inline ID +rb_intern_const(const char *str) +{ + size_t len = strlen(str); + return rb_intern2(str, ((long)len)); +} +__declspec(noalias) +__attribute__((__nonnull__ ())) +static inline ID +rbimpl_intern_const(ID *ptr, const char *str) +{ + while (! *ptr) { + *ptr = rb_intern_const(str); + } + return *ptr; +} +#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; } +#define RUBY_CONST_ID(var,str) do { static ID rbimpl_id; (var) = rbimpl_intern_const(&rbimpl_id, (str)); } while (0) +#define rb_intern(str) (RBIMPL_CONSTANT_P(str) ? __extension__ ({ static ID rbimpl_id; rbimpl_intern_const(&rbimpl_id, (str)); }) : (rb_intern)(str)) + +#define RBIMPL_VARIABLE_H +#pragma GCC visibility push(default) +typedef VALUE rb_gvar_getter_t(ID id, VALUE *data); +typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data); +typedef void rb_gvar_marker_t(VALUE *var); +rb_gvar_getter_t rb_gvar_undef_getter; +rb_gvar_setter_t rb_gvar_undef_setter; +rb_gvar_marker_t rb_gvar_undef_marker; +rb_gvar_getter_t rb_gvar_val_getter; +rb_gvar_setter_t rb_gvar_val_setter; +rb_gvar_marker_t rb_gvar_val_marker; +rb_gvar_getter_t rb_gvar_var_getter; +rb_gvar_setter_t rb_gvar_var_setter; +rb_gvar_marker_t rb_gvar_var_marker; +__declspec(noreturn) +rb_gvar_setter_t rb_gvar_readonly_setter; +__attribute__((__nonnull__ ())) +void rb_define_variable(const char *name, VALUE *var); +__attribute__((__nonnull__ (1))) +void rb_define_virtual_variable(const char *name, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter); +__attribute__((__nonnull__ (1))) +void rb_define_hooked_variable(const char *name, VALUE *var, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter); +__attribute__((__nonnull__ ())) +void rb_define_readonly_variable(const char *name, const VALUE *var); +__attribute__((__nonnull__ ())) +void rb_define_const(VALUE klass, const char *name, VALUE val); +__attribute__((__nonnull__ ())) +void rb_define_global_const(const char *name, VALUE val); +__attribute__((__nonnull__ ())) +void rb_deprecate_constant(VALUE mod, const char *name); +__attribute__((__nonnull__ ())) +VALUE rb_gv_set(const char *name, VALUE val); +__attribute__((__nonnull__ ())) +VALUE rb_gv_get(const char *name); +__attribute__((__nonnull__ ())) +VALUE rb_iv_get(VALUE obj, const char *name); +__attribute__((__nonnull__ ())) +VALUE rb_iv_set(VALUE obj, const char *name, VALUE val); +#pragma GCC visibility pop + +#define RUBY_BACKWARD2_INTTYPES_H +#define PRI_INT_PREFIX "" +#define PRI_LONG_PREFIX "l" +#define PRI_SHORT_PREFIX "h" +#define PRI_64_PREFIX PRI_LL_PREFIX +#define RUBY_PRI_VALUE_MARK "\v" +#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 +#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" +#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" +#pragma GCC visibility push(default) +#define USE_SYMBOL_AS_METHOD_NAME 1 +VALUE rb_get_path(VALUE obj); +#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v)) +VALUE rb_get_path_no_checksafe(VALUE); +#define FilePathStringValue(v) ((v) = rb_get_path(v)) +#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 : (argc) == (vargc)) +__attribute__((__error__ (" argument length doesn't match"))) int rb_varargs_bad_length(int,int); +#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)) +const char *rb_class2name(VALUE klass); +const char *rb_obj_classname(VALUE obj); +void rb_p(VALUE obj); +VALUE rb_equal(VALUE lhs, VALUE rhs); +VALUE rb_require(const char *feature); + +#define RUBY_INTERN_H 1 + +#define RBIMPL_INTERN_BIGNUM_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#pragma GCC visibility push(default) +VALUE rb_big_new(size_t len, int sign); +int rb_bigzero_p(VALUE x); +VALUE rb_big_clone(VALUE num); +void rb_big_2comp(VALUE num); +VALUE rb_big_norm(VALUE x); +void rb_big_resize(VALUE big, size_t len); +__attribute__((__nonnull__ ())) +VALUE rb_cstr_to_inum(const char *str, int base, int badcheck); +VALUE rb_str_to_inum(VALUE str, int base, int badcheck); +__attribute__((__nonnull__ ())) +VALUE rb_cstr2inum(const char *str, int base); +VALUE rb_str2inum(VALUE str, int base); +VALUE rb_big2str(VALUE x, int base); +long rb_big2long(VALUE x); +#define rb_big2int(x) rb_big2long(x) +unsigned long rb_big2ulong(VALUE x); +#define rb_big2uint(x) rb_big2ulong(x) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + rb_big2ll(VALUE); +unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + rb_big2ull(VALUE); +__attribute__((__nonnull__ ())) +void rb_big_pack(VALUE val, unsigned long *buf, long num_longs); +__attribute__((__nonnull__ ())) +VALUE rb_big_unpack(unsigned long *buf, long num_longs); +__attribute__((__nonnull__ ())) +int rb_uv_to_utf8(char buf[6], unsigned long uv); +VALUE rb_dbl2big(double d); +double rb_big2dbl(VALUE x); +VALUE rb_big_cmp(VALUE lhs, VALUE rhs); +VALUE rb_big_eq(VALUE lhs, VALUE rhs); +VALUE rb_big_eql(VALUE lhs, VALUE rhs); +VALUE rb_big_plus(VALUE x, VALUE y); +VALUE rb_big_minus(VALUE x, VALUE y); +VALUE rb_big_mul(VALUE x, VALUE y); +VALUE rb_big_div(VALUE x, VALUE y); +VALUE rb_big_idiv(VALUE x, VALUE y); +VALUE rb_big_modulo(VALUE x, VALUE y); +VALUE rb_big_divmod(VALUE x, VALUE y); +VALUE rb_big_pow(VALUE x, VALUE y); +VALUE rb_big_and(VALUE x, VALUE y); +VALUE rb_big_or(VALUE x, VALUE y); +VALUE rb_big_xor(VALUE x, VALUE y); +VALUE rb_big_lshift(VALUE x, VALUE y); +VALUE rb_big_rshift(VALUE x, VALUE y); +#define INTEGER_PACK_MSWORD_FIRST 0x01 +#define INTEGER_PACK_LSWORD_FIRST 0x02 +#define INTEGER_PACK_MSBYTE_FIRST 0x10 +#define INTEGER_PACK_LSBYTE_FIRST 0x20 +#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40 +#define INTEGER_PACK_2COMP 0x80 +#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400 +#define INTEGER_PACK_FORCE_BIGNUM 0x100 +#define INTEGER_PACK_NEGATIVE 0x200 +#define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST) +#define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST) +__attribute__((__nonnull__ ())) +int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags); +__attribute__((__nonnull__ ())) +VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags); +size_t rb_absint_size(VALUE val, int *nlz_bits_ret); +size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret); +int rb_absint_singlebit_p(VALUE val); +#pragma GCC visibility pop + + +#define RBIMPL_INTERN_COMPAR_H +#pragma GCC visibility push(default) +int rb_cmpint(VALUE val, VALUE a, VALUE b); +__attribute__((__cold__)) +__declspec(noreturn) +void rb_cmperr(VALUE a, VALUE b); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_COMPLEX_H +#pragma GCC visibility push(default) +VALUE rb_complex_raw(VALUE real, VALUE imag); +#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0)) +#define rb_complex_raw2(x,y) rb_complex_raw((x), (y)) +VALUE rb_complex_new(VALUE real, VALUE imag); +#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0)) +#define rb_complex_new2(x,y) rb_complex_new((x), (y)) +VALUE rb_complex_new_polar(VALUE abs, VALUE arg); +__attribute__((__deprecated__ ("by: rb_complex_new_polar"))) +VALUE rb_complex_polar(VALUE abs, VALUE arg); +__attribute__((__pure__)) +VALUE rb_complex_real(VALUE z); +__attribute__((__pure__)) +VALUE rb_complex_imag(VALUE z); +VALUE rb_complex_plus(VALUE x, VALUE y); +VALUE rb_complex_minus(VALUE x, VALUE y); +VALUE rb_complex_mul(VALUE x, VALUE y); +VALUE rb_complex_div(VALUE x, VALUE y); +VALUE rb_complex_uminus(VALUE z); +VALUE rb_complex_conjugate(VALUE z); +VALUE rb_complex_abs(VALUE z); +VALUE rb_complex_arg(VALUE z); +VALUE rb_complex_pow(VALUE base, VALUE exp); +VALUE rb_dbl_complex_new(double real, double imag); +#define rb_complex_add rb_complex_plus +#define rb_complex_sub rb_complex_minus +#define rb_complex_nagate rb_complex_uminus +VALUE rb_Complex(VALUE real, VALUE imag); +#define rb_Complex1(x) rb_Complex((x), INT2FIX(0)) +#define rb_Complex2(x,y) rb_Complex((x), (y)) +#pragma GCC visibility pop + +#define RBIMPL_INTERN_CONT_H +#pragma GCC visibility push(default) +VALUE rb_fiber_new(rb_block_call_func_t func, VALUE callback_obj); +VALUE rb_fiber_current(void); +VALUE rb_fiber_alive_p(VALUE fiber); +VALUE rb_obj_is_fiber(VALUE obj); +VALUE rb_fiber_resume(VALUE fiber, int argc, const VALUE *argv); +VALUE rb_fiber_resume_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat); +VALUE rb_fiber_yield(int argc, const VALUE *argv); +VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat); +VALUE rb_fiber_transfer(VALUE fiber, int argc, const VALUE *argv); +VALUE rb_fiber_transfer_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat); +VALUE rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_DIR_H +#pragma GCC visibility push(default) +VALUE rb_dir_getwd(void); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_ENUM_H +#pragma GCC visibility push(default) +VALUE rb_enum_values_pack(int argc, const VALUE *argv); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_ENUMERATOR_H + +#define RBIMPL_INTERN_EVAL_H +#pragma GCC visibility push(default) +__declspec(noreturn) +void rb_exc_raise(VALUE exc); +__declspec(noreturn) +void rb_exc_fatal(VALUE exc); +__declspec(noreturn) +VALUE rb_f_exit(int argc, const VALUE *argv); +__declspec(noreturn) +VALUE rb_f_abort(int argc, const VALUE *argv); +__declspec(noreturn) +void rb_interrupt(void); +ID rb_frame_this_func(void); +__declspec(noreturn) +void rb_jump_tag(int state); +void rb_obj_call_init(VALUE obj, int argc, const VALUE *argv); +void rb_obj_call_init_kw(VALUE, int, const VALUE*, int); +ID rb_frame_callee(void); +VALUE rb_make_exception(int argc, const VALUE *argv); +void rb_set_end_proc(void (*func)(VALUE arg), VALUE arg); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +typedef VALUE rb_enumerator_size_func(VALUE recv, VALUE argv, VALUE eobj); +typedef struct { + VALUE begin; + VALUE end; + VALUE step; + int exclude_end; +} rb_arithmetic_sequence_components_t; +VALUE rb_enumeratorize(VALUE recv, VALUE meth, int argc, const VALUE *argv); +VALUE rb_enumeratorize_with_size(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func); +VALUE rb_enumeratorize_with_size_kw(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func, int kw_splat); +__attribute__((__nonnull__ ())) +int rb_arithmetic_sequence_extract(VALUE as, rb_arithmetic_sequence_components_t *buf); +__attribute__((__nonnull__ ())) +VALUE rb_arithmetic_sequence_beg_len_step(VALUE as, long *begp, long *lenp, long *stepp, long len, int err); +#pragma GCC visibility pop +#define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn)) +#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)) +#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) +#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) +#define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0) +#define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat) + +#define RBIMPL_INTERN_FILE_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +VALUE rb_file_s_expand_path(int argc, const VALUE *argv); +VALUE rb_file_expand_path(VALUE fname, VALUE dname); +__attribute__((__nonnull__ ())) +VALUE rb_file_s_absolute_path(int argc, const VALUE *argv); +VALUE rb_file_absolute_path(VALUE fname, VALUE dname); +VALUE rb_file_dirname(VALUE fname); +__attribute__((__nonnull__ ())) +int rb_find_file_ext(VALUE *feature, const char *const *exts); +VALUE rb_find_file(VALUE path); +VALUE rb_file_directory_p(VALUE _, VALUE path); +VALUE rb_str_encode_ospath(VALUE path); +__attribute__((__nonnull__ ())) +__attribute__((__pure__)) +int rb_is_absolute_path(const char *path); +long long rb_file_size(VALUE file); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_GC_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#pragma GCC visibility push(default) +__attribute__((__cold__)) +__declspec(noreturn) +void rb_memerror(void); +__attribute__((__pure__)) +int rb_during_gc(void); +__attribute__((__nonnull__ (1))) +void rb_gc_mark_locations(const VALUE *start, const VALUE *end); +void rb_mark_tbl(struct st_table *tbl); +void rb_mark_tbl_no_pin(struct st_table *tbl); +void rb_mark_set(struct st_table *tbl); +void rb_mark_hash(struct st_table *tbl); +void rb_gc_update_tbl_refs(st_table *ptr); +void rb_gc_mark_maybe(VALUE obj); +void rb_gc_mark(VALUE obj); +void rb_gc_mark_movable(VALUE obj); +VALUE rb_gc_location(VALUE obj); +__attribute__((__deprecated__ ("this is now a no-op function"))) +void rb_gc_force_recycle(VALUE obj); +void rb_gc(void); +void rb_gc_copy_finalizer(VALUE dst, VALUE src); +VALUE rb_gc_enable(void); +VALUE rb_gc_disable(void); +VALUE rb_gc_start(void); +VALUE rb_define_finalizer(VALUE obj, VALUE block); +VALUE rb_undefine_finalizer(VALUE obj); +size_t rb_gc_count(void); +size_t rb_gc_stat(VALUE key_or_buf); +VALUE rb_gc_latest_gc_info(VALUE key_or_buf); +void rb_gc_adjust_memory_usage(ssize_t diff); +#pragma GCC visibility pop + + +#define RBIMPL_INTERN_IO_H +#pragma GCC visibility push(default) +#define rb_defout rb_stdout +extern __declspec(dllimport) VALUE rb_fs; +extern __declspec(dllimport) VALUE rb_output_fs; +extern __declspec(dllimport) VALUE rb_rs; +extern __declspec(dllimport) VALUE rb_default_rs; +extern __declspec(dllimport) VALUE rb_output_rs; +VALUE rb_io_write(VALUE io, VALUE str); +VALUE rb_io_gets(VALUE io); +VALUE rb_io_getbyte(VALUE io); +VALUE rb_io_ungetc(VALUE io, VALUE c); +VALUE rb_io_ungetbyte(VALUE io, VALUE b); +VALUE rb_io_close(VALUE io); +VALUE rb_io_flush(VALUE io); +VALUE rb_io_eof(VALUE io); +VALUE rb_io_binmode(VALUE io); +VALUE rb_io_ascii8bit_binmode(VALUE io); +VALUE rb_io_addstr(VALUE io, VALUE str); +VALUE rb_io_printf(int argc, const VALUE *argv, VALUE io); +VALUE rb_io_print(int argc, const VALUE *argv, VALUE io); +VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io); +VALUE rb_io_fdopen(int fd, int flags, const char *path); +__attribute__((__nonnull__ ())) +VALUE rb_file_open(const char *fname, const char *fmode); +__attribute__((__nonnull__ ())) +VALUE rb_file_open_str(VALUE fname, const char *fmode); +VALUE rb_gets(void); +__attribute__((__nonnull__ ())) +void rb_write_error(const char *str); +void rb_write_error2(const char *str, long len); +void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds); +__attribute__((__nonnull__ ())) +int rb_pipe(int *pipes); +int rb_reserved_fd_p(int fd); +#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd) +int rb_cloexec_open(const char *pathname, int flags, mode_t mode); +int rb_cloexec_dup(int oldfd); +int rb_cloexec_dup2(int oldfd, int newfd); +__attribute__((__nonnull__ ())) +int rb_cloexec_pipe(int fildes[2]); +int rb_cloexec_fcntl_dupfd(int fd, int minfd); +void rb_update_max_fd(int fd); +void rb_fd_fix_cloexec(int fd); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_LOAD_H +#pragma GCC visibility push(default) +void rb_load(VALUE path, int wrap); +void rb_load_protect(VALUE path, int wrap, int *state); +__attribute__((__nonnull__ ())) +int rb_provided(const char *feature); +__attribute__((__nonnull__ (1))) +int rb_feature_provided(const char *feature, const char **loading); +__attribute__((__nonnull__ ())) +void rb_provide(const char *feature); +VALUE rb_f_require(VALUE self, VALUE feature); +VALUE rb_require_string(VALUE feature); +void rb_ext_ractor_safe(_Bool flag); +#define RB_EXT_RACTOR_SAFE(f) rb_ext_ractor_safe(f) +#define HAVE_RB_EXT_RACTOR_SAFE 1 +#pragma GCC visibility pop + +#define RBIMPL_INTERN_MARSHAL_H +#pragma GCC visibility push(default) +VALUE rb_marshal_dump(VALUE obj, VALUE port); +VALUE rb_marshal_load(VALUE port); +void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE)); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_NUMERIC_H +#define RB_NUM_COERCE_FUNCS_NEED_OPID 1 +#pragma GCC visibility push(default) +__declspec(noreturn) +__attribute__((__cold__)) +void rb_num_zerodiv(void); +VALUE rb_num_coerce_bin(VALUE lhs, VALUE rhs, ID op); +VALUE rb_num_coerce_cmp(VALUE lhs, VALUE rhs, ID op); +VALUE rb_num_coerce_relop(VALUE lhs, VALUE rhs, ID op); +VALUE rb_num_coerce_bit(VALUE lhs, VALUE rhs, ID op); +VALUE rb_num2fix(VALUE val); +VALUE rb_fix2str(VALUE val, int base); +__attribute__((__const__)) +VALUE rb_dbl_cmp(double lhs, double rhs); +extern __declspec(dllimport) VALUE rb_int_positive_pow(long x, unsigned long y); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_OBJECT_H +#pragma GCC visibility push(default) +#define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1)) +#define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig) +VALUE rb_class_new_instance_pass_kw(int argc, const VALUE *argv, VALUE klass); +VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass); +VALUE rb_class_new_instance_kw(int argc, const VALUE *argv, VALUE klass, int kw_splat); +int rb_eql(VALUE lhs, VALUE rhs); +VALUE rb_any_to_s(VALUE obj); +VALUE rb_inspect(VALUE obj); +VALUE rb_obj_is_instance_of(VALUE obj, VALUE klass); +VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass); +VALUE rb_obj_alloc(VALUE klass); +VALUE rb_obj_clone(VALUE obj); +VALUE rb_obj_dup(VALUE obj); +VALUE rb_obj_init_copy(VALUE src, VALUE dst); +VALUE rb_obj_taint(VALUE obj); +__attribute__((__pure__)) +VALUE rb_obj_tainted(VALUE obj); +VALUE rb_obj_untaint(VALUE obj); +VALUE rb_obj_untrust(VALUE obj); +__attribute__((__pure__)) +VALUE rb_obj_untrusted(VALUE obj); +VALUE rb_obj_trust(VALUE obj); +VALUE rb_obj_freeze(VALUE obj); +__attribute__((__pure__)) +VALUE rb_obj_frozen_p(VALUE obj); +VALUE rb_obj_id(VALUE obj); +__attribute__((__const__)) +VALUE rb_memory_id(VALUE obj); +__attribute__((__pure__)) +VALUE rb_class_real(VALUE klass); +__attribute__((__pure__)) +VALUE rb_class_inherited_p(VALUE scion, VALUE ascendant); +__attribute__((__pure__)) +VALUE rb_class_superclass(VALUE klass); +__attribute__((__nonnull__ ())) +VALUE rb_convert_type(VALUE val, int type, const char *name, const char *mid); +__attribute__((__nonnull__ ())) +VALUE rb_check_convert_type(VALUE val, int type, const char *name, const char *mid); +__attribute__((__nonnull__ ())) +VALUE rb_check_to_integer(VALUE val, const char *mid); +VALUE rb_check_to_float(VALUE val); +VALUE rb_to_int(VALUE val); +VALUE rb_check_to_int(VALUE val); +VALUE rb_Integer(VALUE val); +VALUE rb_to_float(VALUE val); +VALUE rb_Float(VALUE val); +VALUE rb_String(VALUE val); +VALUE rb_Array(VALUE val); +VALUE rb_Hash(VALUE val); +__attribute__((__nonnull__ ())) +double rb_cstr_to_dbl(const char *str, int mode); +double rb_str_to_dbl(VALUE str, int mode); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_PARSE_H +#pragma GCC visibility push(default) +ID rb_id_attrset(ID id); +__attribute__((__const__)) +int rb_is_const_id(ID id); +__attribute__((__const__)) +int rb_is_global_id(ID id); +__attribute__((__const__)) +int rb_is_instance_id(ID id); +__attribute__((__const__)) +int rb_is_attrset_id(ID id); +__attribute__((__const__)) +int rb_is_class_id(ID id); +__attribute__((__const__)) +int rb_is_local_id(ID id); +__attribute__((__const__)) +int rb_is_junk_id(ID); +__attribute__((__nonnull__ ())) +int rb_symname_p(const char *str); +VALUE rb_backref_get(void); +void rb_backref_set(VALUE md); +VALUE rb_lastline_get(void); +void rb_lastline_set(VALUE str); +VALUE rb_sym_all_symbols(void); +#pragma GCC visibility pop + + +#define RBIMPL_INTERN_PROCESS_H +#pragma GCC visibility push(default) +void rb_last_status_set(int status, pid_t pid); +VALUE rb_last_status_get(void); +__attribute__((__nonnull__ ())) +int rb_proc_exec(const char *cmd); +__declspec(noreturn) +VALUE rb_f_exec(int argc, const VALUE *argv); +pid_t rb_waitpid(pid_t pid, int *status, int flags); +void rb_syswait(pid_t pid); +pid_t rb_spawn(int argc, const VALUE *argv); +pid_t rb_spawn_err(int argc, const VALUE *argv, char *errbuf, size_t buflen); +VALUE rb_proc_times(VALUE _); +VALUE rb_detach_process(pid_t pid); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_RANDOM_H +#pragma GCC visibility push(default) +unsigned int rb_genrand_int32(void); +double rb_genrand_real(void); +void rb_reset_random_seed(void); +VALUE rb_random_bytes(VALUE rnd, long n); +unsigned int rb_random_int32(VALUE rnd); +double rb_random_real(VALUE rnd); +unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit); +unsigned long rb_genrand_ulong_limited(unsigned long i); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_RANGE_H +#pragma GCC visibility push(default) +VALUE rb_range_new(VALUE beg, VALUE end, int excl); +__attribute__((__nonnull__ ())) +VALUE rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err); +__attribute__((__nonnull__ ())) +int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_RATIONAL_H +#pragma GCC visibility push(default) +VALUE rb_rational_raw(VALUE num, VALUE den); +#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1)) +#define rb_rational_raw2(x,y) rb_rational_raw((x), (y)) +VALUE rb_rational_new(VALUE num, VALUE den); +#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1)) +#define rb_rational_new2(x,y) rb_rational_new((x), (y)) +VALUE rb_Rational(VALUE num, VALUE den); +#define rb_Rational1(x) rb_Rational((x), INT2FIX(1)) +#define rb_Rational2(x,y) rb_Rational((x), (y)) +__attribute__((__pure__)) +VALUE rb_rational_num(VALUE rat); +__attribute__((__pure__)) +VALUE rb_rational_den(VALUE rat); +VALUE rb_flt_rationalize_with_prec(VALUE flt, VALUE prec); +VALUE rb_flt_rationalize(VALUE flt); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_RE_H +#pragma GCC visibility push(default) +#define rb_memcmp memcmp +int rb_memcicmp(const void *s1,const void *s2, long n); +void rb_match_busy(VALUE md); +VALUE rb_reg_nth_defined(int n, VALUE md); +VALUE rb_reg_nth_match(int n, VALUE md); +int rb_reg_backref_number(VALUE match, VALUE backref); +VALUE rb_reg_last_match(VALUE md); +VALUE rb_reg_match_pre(VALUE md); +VALUE rb_reg_match_post(VALUE md); +VALUE rb_reg_match_last(VALUE md); +#define HAVE_RB_REG_NEW_STR 1 +VALUE rb_reg_new_str(VALUE src, int opts); +__attribute__((__nonnull__ ())) +VALUE rb_reg_new(const char *src, long len, int opts); +VALUE rb_reg_alloc(void); +VALUE rb_reg_init_str(VALUE re, VALUE s, int options); +VALUE rb_reg_match(VALUE re, VALUE str); +VALUE rb_reg_match2(VALUE re); +int rb_reg_options(VALUE re); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_RUBY_H +#pragma GCC visibility push(default) +#define rb_argv rb_get_argv() +extern __declspec(dllimport) VALUE rb_argv0; +VALUE rb_get_argv(void); +__attribute__((__nonnull__ ())) +void *rb_load_file(const char *file); +void *rb_load_file_str(VALUE file); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_SELECT_H + +#define RBIMPL_INTERN_SELECT_WIN32_H +#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 +#pragma GCC visibility push(default) +struct timeval; +typedef struct { + int capa; + fd_set *fdset; +} rb_fdset_t; +__attribute__((__nonnull__ ())) +void rb_fd_init(rb_fdset_t *f); +__attribute__((__nonnull__ ())) +void rb_fd_term(rb_fdset_t *f); +__attribute__((__nonnull__ ())) +void rb_fd_set(int fd, rb_fdset_t *f); +__attribute__((__nonnull__ ())) +void rb_w32_fd_copy(rb_fdset_t *dst, const fd_set *src, int max); +__attribute__((__nonnull__ ())) +void rb_w32_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src); +#pragma GCC visibility pop +__attribute__((__nonnull__ ())) +__declspec(noalias) +static inline void +rb_fd_zero(rb_fdset_t *f) +{ + f->fdset->fd_count = 0; +} +__attribute__((__nonnull__ ())) +static inline void +rb_fd_clr(int n, rb_fdset_t *f) +{ + rb_w32_fdclr(n, f->fdset); +} +__attribute__((__nonnull__ ())) +static inline int +rb_fd_isset(int n, rb_fdset_t *f) +{ + return rb_w32_fdisset(n, f->fdset); +} +__attribute__((__nonnull__ ())) +static inline void +rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int n) +{ + rb_w32_fd_copy(dst, src, n); +} +__attribute__((__nonnull__ ())) +static inline void +rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src) +{ + rb_w32_fd_dup(dst, src); +} +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 : ((void*)0), + wfds ? wfds->fdset : ((void*)0), + efds ? efds->fdset : ((void*)0), + timeout); +} +__attribute__((__nonnull__ ())) +__attribute__((__pure__)) +static inline fd_set * +rb_fd_ptr(const rb_fdset_t *f) +{ + return f->fdset; +} +__attribute__((__nonnull__ ())) +__attribute__((__pure__)) +static inline int +rb_fd_max(const rb_fdset_t *f) +{ + const fd_set *p = f->fdset; + ((void)0); + return p->fd_count; +} + +#define rb_fd_resize(n,f) ((void)(f)) +#pragma GCC visibility push(default) +struct timeval; +int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_SIGNAL_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +VALUE rb_f_kill(int argc, const VALUE *argv); +__attribute__((__pure__)) +const char *ruby_signal_name(int signo); +void ruby_default_signal(int sig); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_SPRINTF_H +#pragma GCC visibility push(default) +VALUE rb_f_sprintf(int argc, const VALUE *argv); +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 2))) +VALUE rb_sprintf(const char *fmt, ...); +__attribute__((__nonnull__ (1))) +__attribute__((__format__(printf, 1, 0))) +VALUE rb_vsprintf(const char *fmt, va_list ap); +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +VALUE rb_str_catf(VALUE dst, const char *fmt, ...); +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 0))) +VALUE rb_str_vcatf(VALUE dst, const char *fmt, va_list ap); +VALUE rb_str_format(int argc, const VALUE *argv, VALUE fmt); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_STRING_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#pragma GCC visibility push(default) +VALUE rb_str_new(const char *ptr, long len); +VALUE rb_str_new_cstr(const char *ptr); +VALUE rb_str_new_shared(VALUE str); +VALUE rb_str_new_frozen(VALUE str); +VALUE rb_str_new_with_class(VALUE obj, const char *ptr, long len); +VALUE rb_tainted_str_new_cstr(const char *ptr); +VALUE rb_tainted_str_new(const char *ptr, long len); +VALUE rb_external_str_new(const char *ptr, long len); +__attribute__((__nonnull__ ())) +VALUE rb_external_str_new_cstr(const char *ptr); +VALUE rb_locale_str_new(const char *ptr, long len); +__attribute__((__nonnull__ ())) +VALUE rb_locale_str_new_cstr(const char *ptr); +VALUE rb_filesystem_str_new(const char *ptr, long len); +__attribute__((__nonnull__ ())) +VALUE rb_filesystem_str_new_cstr(const char *ptr); +VALUE rb_str_buf_new(long capa); +__attribute__((__nonnull__ ())) +VALUE rb_str_buf_new_cstr(const char *ptr); +VALUE rb_str_tmp_new(long len); +VALUE rb_usascii_str_new(const char *ptr, long len); +VALUE rb_usascii_str_new_cstr(const char *ptr); +VALUE rb_utf8_str_new(const char *ptr, long len); +VALUE rb_utf8_str_new_cstr(const char *ptr); +VALUE rb_str_new_static(const char *ptr, long len); +VALUE rb_usascii_str_new_static(const char *ptr, long len); +VALUE rb_utf8_str_new_static(const char *ptr, long len); +VALUE rb_str_to_interned_str(VALUE str); +VALUE rb_interned_str(const char *ptr, long len); +__attribute__((__nonnull__ ())) +VALUE rb_interned_str_cstr(const char *ptr); +void rb_str_free(VALUE str); +void rb_str_shared_replace(VALUE dst, VALUE src); +VALUE rb_str_buf_append(VALUE dst, VALUE src); +VALUE rb_str_buf_cat(VALUE, const char*, long); +VALUE rb_str_buf_cat2(VALUE, const char*); +__attribute__((__nonnull__ ())) +VALUE rb_str_buf_cat_ascii(VALUE dst, const char *src); +VALUE rb_obj_as_string(VALUE obj); +VALUE rb_check_string_type(VALUE obj); +void rb_must_asciicompat(VALUE obj); +VALUE rb_str_dup(VALUE str); +VALUE rb_str_resurrect(VALUE str); +VALUE rb_str_locktmp(VALUE str); +VALUE rb_str_unlocktmp(VALUE str); +VALUE rb_str_dup_frozen(VALUE); +#define rb_str_dup_frozen rb_str_new_frozen +VALUE rb_str_plus(VALUE lhs, VALUE rhs); +VALUE rb_str_times(VALUE str, VALUE num); +long rb_str_sublen(VALUE str, long pos); +VALUE rb_str_substr(VALUE str, long beg, long len); +VALUE rb_str_subseq(VALUE str, long beg, long len); +char *rb_str_subpos(VALUE str, long beg, long *len); +void rb_str_modify(VALUE str); +void rb_str_modify_expand(VALUE str, long capa); +VALUE rb_str_freeze(VALUE str); +void rb_str_set_len(VALUE str, long len); +VALUE rb_str_resize(VALUE str, long len); +VALUE rb_str_cat(VALUE dst, const char *src, long srclen); +VALUE rb_str_cat_cstr(VALUE dst, const char *src); +VALUE rb_str_cat2(VALUE, const char*); +VALUE rb_str_append(VALUE dst, VALUE src); +VALUE rb_str_concat(VALUE dst, VALUE src); +st_index_t rb_memhash(const void *ptr, long len); +st_index_t rb_hash_start(st_index_t i); +#define rb_hash_uint32(h,i) st_hash_uint32((h), (i)) +#define rb_hash_uint(h,i) st_hash_uint((h), (i)) +#define rb_hash_end(h) st_hash_end(h) +st_index_t rb_str_hash(VALUE str); +int rb_str_hash_cmp(VALUE str1, VALUE str2); +int rb_str_comparable(VALUE str1, VALUE str2); +int rb_str_cmp(VALUE lhs, VALUE rhs); +VALUE rb_str_equal(VALUE str1, VALUE str2); +VALUE rb_str_drop_bytes(VALUE str, long len); +void rb_str_update(VALUE dst, long beg, long len, VALUE src); +VALUE rb_str_replace(VALUE dst, VALUE src); +VALUE rb_str_inspect(VALUE str); +VALUE rb_str_dump(VALUE str); +VALUE rb_str_split(VALUE str, const char *delim); +rb_gvar_setter_t rb_str_setter; +VALUE rb_str_intern(VALUE str); +VALUE rb_sym_to_s(VALUE sym); +long rb_str_strlen(VALUE str); +VALUE rb_str_length(VALUE); +long rb_str_offset(VALUE str, long pos); +__attribute__((__pure__)) +size_t rb_str_capacity(VALUE str); +VALUE rb_str_ellipsize(VALUE str, long len); +VALUE rb_str_scrub(VALUE str, VALUE repl); +VALUE rb_str_succ(VALUE orig); +__attribute__((__nonnull__ ())) +static inline long +rbimpl_strlen(const char *str) +{ + return ((long)strlen(str)); +} +__attribute__((__nonnull__ ())) +static inline VALUE +rbimpl_str_new_cstr(const char *str) +{ + long len = rbimpl_strlen(str); + return rb_str_new_static(str, len); +} +__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea."))) +static inline VALUE +rbimpl_tainted_str_new_cstr(const char *str) +{ + long len = rbimpl_strlen(str); + return rb_tainted_str_new(str, len); +} +__attribute__((__nonnull__ ())) +static inline VALUE +rbimpl_usascii_str_new_cstr(const char *str) +{ + long len = rbimpl_strlen(str); + return rb_usascii_str_new_static(str, len); +} +__attribute__((__nonnull__ ())) +static inline VALUE +rbimpl_utf8_str_new_cstr(const char *str) +{ + long len = rbimpl_strlen(str); + return rb_utf8_str_new_static(str, len); +} +__attribute__((__nonnull__ ())) +static inline VALUE +rbimpl_external_str_new_cstr(const char *str) +{ + long len = rbimpl_strlen(str); + return rb_external_str_new(str, len); +} +__attribute__((__nonnull__ ())) +static inline VALUE +rbimpl_locale_str_new_cstr(const char *str) +{ + long len = rbimpl_strlen(str); + return rb_locale_str_new(str, len); +} +__attribute__((__nonnull__ ())) +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); +} +__attribute__((__nonnull__ ())) +static inline VALUE +rbimpl_str_cat_cstr(VALUE buf, const char *str) +{ + long len = rbimpl_strlen(str); + return rb_str_cat(buf, str, len); +} +__attribute__((__nonnull__ ())) +static inline VALUE +rbimpl_exc_new_cstr(VALUE exc, const char *str) +{ + long len = rbimpl_strlen(str); + return rb_exc_new(exc, str, len); +} +#define rb_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_str_new_static : rb_str_new) ((str), (len))) +#define rb_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_new_cstr : rb_str_new_cstr) (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))) +#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))) +#define rb_tainted_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_tainted_str_new_cstr : rb_tainted_str_new_cstr) (str)) +#define rb_usascii_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_usascii_str_new_cstr : rb_usascii_str_new_cstr) (str)) +#define rb_utf8_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_utf8_str_new_cstr : rb_utf8_str_new_cstr) (str)) +#define rb_external_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_external_str_new_cstr : rb_external_str_new_cstr) (str)) +#define rb_locale_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_locale_str_new_cstr : rb_locale_str_new_cstr) (str)) +#define rb_str_buf_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_buf_new_cstr : rb_str_buf_new_cstr) (str)) +#define rb_str_cat_cstr(buf,str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((buf), (str))) +#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 +#define rb_str_new3 rb_str_new_shared +#define rb_str_new4 rb_str_new_frozen +#define rb_str_new5 rb_str_new_with_class +#define rb_tainted_str_new2 rb_tainted_str_new_cstr +#define rb_str_buf_new2 rb_str_buf_new_cstr +#define rb_usascii_str_new2 rb_usascii_str_new_cstr +#define rb_str_buf_cat rb_str_cat +#define rb_str_buf_cat2 rb_str_cat_cstr +#define rb_str_cat2 rb_str_cat_cstr +#define rb_strlen_lit(str) (sizeof(str "") - 1) +#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str)) +#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str)) +#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str)) +#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) +#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str) +#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str) +#define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc) +#pragma GCC visibility pop + +#define RBIMPL_INTERN_STRUCT_H +#pragma GCC visibility push(default) +VALUE rb_struct_new(VALUE klass, ...); +VALUE rb_struct_define(const char *name, ...); +__attribute__((__nonnull__ (2))) +VALUE rb_struct_define_under(VALUE space, const char *name, ...); +VALUE rb_struct_alloc(VALUE klass, VALUE values); +VALUE rb_struct_initialize(VALUE self, VALUE values); +VALUE rb_struct_getmember(VALUE self, ID key); +VALUE rb_struct_s_members(VALUE klass); +VALUE rb_struct_members(VALUE self); +VALUE rb_struct_alloc_noinit(VALUE klass); +VALUE rb_struct_define_without_accessor(const char *name, VALUE super, rb_alloc_func_t func, ...); +__attribute__((__nonnull__ (2))) +VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_THREAD_H +#pragma GCC visibility push(default) +struct timeval; +void rb_thread_schedule(void); +int rb_thread_wait_fd(int fd); +int rb_thread_fd_writable(int fd); +void rb_thread_fd_close(int fd); +int rb_thread_alone(void); +void rb_thread_sleep(int sec); +void rb_thread_sleep_forever(void); +void rb_thread_sleep_deadly(void); +VALUE rb_thread_stop(void); +VALUE rb_thread_wakeup(VALUE thread); +VALUE rb_thread_wakeup_alive(VALUE thread); +VALUE rb_thread_run(VALUE thread); +VALUE rb_thread_kill(VALUE thread); +__attribute__((__nonnull__ (1))) +VALUE rb_thread_create(VALUE (*f)(void *g), void *g); +void rb_thread_wait_for(struct timeval time); +VALUE rb_thread_current(void); +VALUE rb_thread_main(void); +VALUE rb_thread_local_aref(VALUE thread, ID key); +VALUE rb_thread_local_aset(VALUE thread, ID key, VALUE val); +void rb_thread_atfork(void); +void rb_thread_atfork_before_exec(void); +VALUE rb_exec_recursive(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h); +VALUE rb_exec_recursive_paired(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h); +VALUE rb_exec_recursive_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h); +VALUE rb_exec_recursive_paired_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h); +typedef void rb_unblock_function_t(void *); +typedef VALUE rb_blocking_function_t(void *); +void rb_thread_check_ints(void); +int rb_thread_interrupted(VALUE thval); +#define RUBY_UBF_IO RBIMPL_CAST((rb_unblock_function_t *)-1) +#define RUBY_UBF_PROCESS RBIMPL_CAST((rb_unblock_function_t *)-1) +VALUE rb_mutex_new(void); +VALUE rb_mutex_locked_p(VALUE mutex); +VALUE rb_mutex_trylock(VALUE mutex); +VALUE rb_mutex_lock(VALUE mutex); +VALUE rb_mutex_unlock(VALUE mutex); +VALUE rb_mutex_sleep(VALUE self, VALUE timeout); +VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_TIME_H +#pragma GCC visibility push(default) +struct timespec; +struct timeval; +__attribute__((__nonnull__ ())) +void rb_timespec_now(struct timespec *ts); +VALUE rb_time_new(time_t sec, long usec); +VALUE rb_time_nano_new(time_t sec, long nsec); +__attribute__((__nonnull__ ())) +VALUE rb_time_timespec_new(const struct timespec *ts, int offset); +VALUE rb_time_num_new(VALUE timev, VALUE off); +struct timeval rb_time_interval(VALUE num); +struct timeval rb_time_timeval(VALUE time); +struct timespec rb_time_timespec(VALUE time); +struct timespec rb_time_timespec_interval(VALUE num); +VALUE rb_time_utc_offset(VALUE time); +#pragma GCC visibility pop + +#define RBIMPL_INTERN_VARIABLE_H +#pragma GCC visibility push(default) +VALUE rb_mod_name(VALUE mod); +VALUE rb_class_path(VALUE mod); +VALUE rb_class_path_cached(VALUE mod); +__attribute__((__nonnull__ ())) +void rb_set_class_path(VALUE klass, VALUE space, const char *name); +void rb_set_class_path_string(VALUE klass, VALUE space, VALUE name); +VALUE rb_path_to_class(VALUE path); +__attribute__((__nonnull__ ())) +VALUE rb_path2class(const char *path); +VALUE rb_class_name(VALUE obj); +VALUE rb_autoload_load(VALUE space, ID name); +VALUE rb_autoload_p(VALUE space, ID name); +VALUE rb_f_trace_var(int argc, const VALUE *argv); +VALUE rb_f_untrace_var(int argc, const VALUE *argv); +VALUE rb_f_global_variables(void); +void rb_alias_variable(ID dst, ID src); +void rb_free_generic_ivar(VALUE obj); +VALUE rb_ivar_get(VALUE obj, ID name); +VALUE rb_ivar_set(VALUE obj, ID name, VALUE val); +VALUE rb_ivar_defined(VALUE obj, ID name); +void rb_ivar_foreach(VALUE obj, int (*func)(ID name, VALUE val, st_data_t arg), st_data_t arg); +st_index_t rb_ivar_count(VALUE obj); +VALUE rb_attr_get(VALUE obj, ID name); +VALUE rb_obj_instance_variables(VALUE obj); +VALUE rb_obj_remove_instance_variable(VALUE obj, VALUE name); +void *rb_mod_const_at(VALUE, void*); +void *rb_mod_const_of(VALUE, void*); +VALUE rb_const_list(void*); +VALUE rb_mod_constants(int argc, const VALUE *argv, VALUE recv); +VALUE rb_mod_remove_const(VALUE space, VALUE name); +int rb_const_defined(VALUE space, ID name); +int rb_const_defined_at(VALUE space, ID name); +int rb_const_defined_from(VALUE space, ID name); +VALUE rb_const_get(VALUE space, ID name); +VALUE rb_const_get_at(VALUE space, ID name); +VALUE rb_const_get_from(VALUE space, ID name); +void rb_const_set(VALUE space, ID name, VALUE val); +VALUE rb_const_remove(VALUE space, ID name); +VALUE rb_cvar_defined(VALUE klass, ID name); +void rb_cvar_set(VALUE klass, ID name, VALUE val); +VALUE rb_cvar_get(VALUE klass, ID name); +__attribute__((__nonnull__ ())) +VALUE rb_cvar_find(VALUE klass, ID name, VALUE *front); +__attribute__((__nonnull__ ())) +void rb_cv_set(VALUE klass, const char *name, VALUE val); +__attribute__((__nonnull__ ())) +VALUE rb_cv_get(VALUE klass, const char *name); +__attribute__((__nonnull__ ())) +void rb_define_class_variable(VALUE, const char*, VALUE); +VALUE rb_mod_class_variables(int argc, const VALUE *argv, VALUE recv); +VALUE rb_mod_remove_cvar(VALUE mod, VALUE name); +#pragma GCC visibility pop +#define RUBY_VM 1 +#define HAVE_NATIVETHREAD +int ruby_native_thread_p(void); +#define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();} +__attribute__((__nonnull__ (3))) +__attribute__((__format__(printf, 3, 4))) +int ruby_snprintf(char *str, size_t n, char const *fmt, ...); +__attribute__((__nonnull__ (3))) +__attribute__((__format__(printf, 3, 0))) +int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap); + +#define RUBY_SUBST_H 1 +#undef snprintf +#undef vsnprintf +#define snprintf ruby_snprintf +#define vsnprintf ruby_vsnprintf +#pragma GCC visibility pop + +#define RUBY_VM_CORE_H +#define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG) +#define VM_CHECK_MODE N_OR_RUBY_DEBUG(0) +#define VMDEBUG 0 +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof + + + +#define RUBY_TOPLEVEL_ASSERT_H +#undef assert +#define assert RUBY_ASSERT_NDEBUG +#define VM_ASSERT(expr) ((void)0) +#define VM_UNREACHABLE(func) UNREACHABLE +#define _INC_SETJMP +#pragma pack(push,_CRT_PACKING) +#define _JBLEN 24 +#define _JBTYPE unsigned __int64 + typedef struct __JUMP_BUFFER { + unsigned long long Frame; + unsigned long long Reserved; + unsigned long long X19; + unsigned long long X20; + unsigned long long X21; + unsigned long long X22; + unsigned long long X23; + unsigned long long X24; + unsigned long long X25; + unsigned long long X26; + unsigned long long X27; + unsigned long long X28; + unsigned long long Fp; + unsigned long long Lr; + unsigned long long Sp; + unsigned long Fpcr; + unsigned long Fpsr; + double D[8]; + } _JUMP_BUFFER; + typedef unsigned long long jmp_buf[24]; +#define _JMP_BUF_DEFINED +__attribute__ ((__dllimport__)) __attribute__ ((__noreturn__)) __attribute__ ((__nothrow__)) void __attribute__((__cdecl__)) longjmp(jmp_buf _Buf,int _Value); +void * __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) mingw_getsp (void); +#define _setjmp __intrinsic_setjmpex +#define setjmp(BUF) _setjmp((BUF), __builtin_sponentry()) + int __attribute__((__cdecl__)) __attribute__ ((__nothrow__,__returns_twice__)) __intrinsic_setjmpex(jmp_buf _Buf, void *_Ctx); + int __attribute__((__cdecl__)) __attribute__ ((__nothrow__,__returns_twice__)) _setjmp3(jmp_buf _Buf, void *_Ctx); +#pragma pack(pop) +#define CCAN_LIST_H +#undef assert +#define assert(_Expression) ((void)0) +#define CCAN_STR_H +#define stringify(expr) stringify_1(expr) +#define stringify_1(expr) #expr +#define CCAN_CONTAINER_OF_H +#define CCAN_CHECK_TYPE_H +#define check_type(expr,type) ((typeof(expr) *)0 != (type *)0) +#define check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0) +#define container_of(member_ptr,containing_type,member) ((containing_type *) ((char *)(member_ptr) - container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member)) +static inline char *container_of_or_null_(void *member_ptr, size_t offset) +{ + return member_ptr ? (char *)member_ptr - offset : ((void*)0); +} +#define container_of_or_null(member_ptr,containing_type,member) ((containing_type *) container_of_or_null_(member_ptr, container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member)) +#define container_off(containing_type,member) offsetof(containing_type, member) +#define container_of_var(member_ptr,container_var,member) container_of(member_ptr, typeof(*container_var), member) +#define container_off_var(var,member) container_off(typeof(*var), member) +struct list_node +{ + struct list_node *next, *prev; +}; +struct list_head +{ + struct list_node n; +}; +#define LIST_LOC __FILE__ ":" stringify(__LINE__) +#define list_debug(h,loc) ((void)loc, h) +#define list_debug_node(n,loc) ((void)loc, n) +#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } } +#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name) +static inline void list_head_init(struct list_head *h) +{ + h->n.next = h->n.prev = &h->n; +} +static inline void list_node_init(struct list_node *n) +{ + n->next = n->prev = n; +} +#define list_add_after(h,p,n) list_add_after_(h, p, n, LIST_LOC) +static inline void list_add_after_(struct list_head *h, + struct list_node *p, + struct list_node *n, + const char *abortstr) +{ + n->next = p->next; + n->prev = p; + p->next->prev = n; + p->next = n; + (void)((void)abortstr, h); +} +#define list_add(h,n) list_add_(h, n, LIST_LOC) +static inline void list_add_(struct list_head *h, + struct list_node *n, + const char *abortstr) +{ + list_add_after_(h, &h->n, n, abortstr); +} +#define list_add_before(h,p,n) list_add_before_(h, p, n, LIST_LOC) +static inline void list_add_before_(struct list_head *h, + struct list_node *p, + struct list_node *n, + const char *abortstr) +{ + n->next = p; + n->prev = p->prev; + p->prev->next = n; + p->prev = n; + (void)((void)abortstr, h); +} +#define list_add_tail(h,n) list_add_tail_(h, n, LIST_LOC) +static inline void list_add_tail_(struct list_head *h, + struct list_node *n, + const char *abortstr) +{ + list_add_before_(h, &h->n, n, abortstr); +} +#define list_empty(h) list_empty_(h, LIST_LOC) +static inline int list_empty_(const struct list_head *h, const char* abortstr) +{ + (void)((void)abortstr, h); + return h->n.next == &h->n; +} +#define list_empty_nodebug(h) list_empty(h) +static inline _Bool list_empty_nocheck(const struct list_head *h) +{ + return h->n.next == &h->n; +} +#define list_del(n) list_del_(n, LIST_LOC) +static inline void list_del_(struct list_node *n, const char* abortstr) +{ + (void)((void)abortstr, n); + n->next->prev = n->prev; + n->prev->next = n->next; +} +#define list_del_init(n) list_del_init_(n, LIST_LOC) +static inline void list_del_init_(struct list_node *n, const char *abortstr) +{ + list_del_(n, abortstr); + list_node_init(n); +} +static inline void list_del_from(struct list_head *h, struct list_node *n) +{ + ((void)0); + list_del_(n, "../ruby-3.1.5/ccan/list/list.h" ":" "329"); +} +#define list_swap(o,n) list_swap_(o, n, LIST_LOC) +static inline void list_swap_(struct list_node *o, + struct list_node *n, + const char* abortstr) +{ + (void)((void)abortstr, o); + *n = *o; + n->next->prev = n; + n->prev->next = n; +} +#define list_entry(n,type,member) container_of(n, type, member) +#define list_top(h,type,member) ((type *)list_top_((h), list_off_(type, member))) +static inline const void *list_top_(const struct list_head *h, size_t off) +{ + if (list_empty_(h, "../ruby-3.1.5/ccan/list/list.h" ":" "399")) + return ((void*)0); + return (const char *)h->n.next - off; +} +#define list_pop(h,type,member) ((type *)list_pop_((h), list_off_(type, member))) +static inline const void *list_pop_(const struct list_head *h, size_t off) +{ + struct list_node *n; + if (list_empty_(h, "../ruby-3.1.5/ccan/list/list.h" ":" "425")) + return ((void*)0); + n = h->n.next; + list_del_(n, "../ruby-3.1.5/ccan/list/list.h" ":" "428"); + return (const char *)n - off; +} +#define list_tail(h,type,member) ((type *)list_tail_((h), list_off_(type, member))) +static inline const void *list_tail_(const struct list_head *h, size_t off) +{ + if (list_empty_(h, "../ruby-3.1.5/ccan/list/list.h" ":" "451")) + return ((void*)0); + return (const char *)h->n.prev - off; +} +#define list_for_each(h,i,member) list_for_each_off(h, i, list_off_var_(i, member)) +#define list_for_each_rev(h,i,member) list_for_each_rev_off(h, i, list_off_var_(i, member)) +#define list_for_each_rev_safe(h,i,nxt,member) list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member)) +#define list_for_each_safe(h,i,nxt,member) list_for_each_safe_off(h, i, nxt, list_off_var_(i, member)) +#define list_next(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.next, list_off_var_((i), member))) +#define list_prev(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.prev, list_off_var_((i), member))) +#define list_append_list(t,f) list_append_list_(t, f, __FILE__ ":" stringify(__LINE__)) +static inline void list_append_list_(struct list_head *to, + struct list_head *from, + const char *abortstr) +{ + struct list_node *from_tail = ((void)abortstr, from)->n.prev; + struct list_node *to_tail = ((void)abortstr, to)->n.prev; + to->n.prev = from_tail; + from_tail->next = &to->n; + to_tail->next = &from->n; + from->n.prev = to_tail; + list_del_(&from->n, "../ruby-3.1.5/ccan/list/list.h" ":" "600"); + list_head_init(from); +} +#define list_prepend_list(t,f) list_prepend_list_(t, f, LIST_LOC) +static inline void list_prepend_list_(struct list_head *to, + struct list_head *from, + const char *abortstr) +{ + struct list_node *from_tail = ((void)abortstr, from)->n.prev; + struct list_node *to_head = ((void)abortstr, to)->n.next; + to->n.next = &from->n; + from->n.prev = &to->n; + to_head->prev = from_tail; + from_tail->next = to_head; + list_del_(&from->n, "../ruby-3.1.5/ccan/list/list.h" ":" "632"); + list_head_init(from); +} +#define list_for_each_off_dir_(h,i,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)); list_node_from_off_((void *)i, (off)) != &(h)->n; i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, (off))) +#define list_for_each_safe_off_dir_(h,i,nxt,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)), nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off)); list_node_from_off_(i, (off)) != &(h)->n; i = nxt, nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off))) +#define list_for_each_off(h,i,off) list_for_each_off_dir_((h),(i),(off),next) +#define list_for_each_rev_off(h,i,off) list_for_each_off_dir_((h),(i),(off),prev) +#define list_for_each_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),next) +#define list_for_each_rev_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev) +#define list_entry_off(n,type,off) ((type *)list_node_from_off_((n), (off))) +#define list_head_off(h,type,off) ((type *)list_head_off((h), (off))) +#define list_tail_off(h,type,off) ((type *)list_tail_((h), (off))) +#define list_add_off(h,n,off) list_add((h), list_node_from_off_((n), (off))) +#define list_del_off(n,off) list_del(list_node_from_off_((n), (off))) +#define list_del_from_off(h,n,off) list_del_from(h, list_node_from_off_((n), (off))) +static inline void *list_node_to_off_(struct list_node *node, size_t off) +{ + return (void *)((char *)node - off); +} +static inline struct list_node *list_node_from_off_(void *ptr, size_t off) +{ + return (struct list_node *)((char *)ptr + off); +} +#define list_off_(type,member) (container_off(type, member) + check_type(((type *)0)->member, struct list_node)) +#define list_off_var_(var,member) (container_off_var(var, member) + check_type(var->member, struct list_node)) +#define list_typeof(var) typeof(var) +static inline void *list_entry_or_null(const struct list_head *h, + const struct list_node *n, + size_t off) +{ + if (n == &h->n) + return ((void*)0); + return (char *)n - off; +} +#define RUBY_ID_H +enum ruby_id_types { + RUBY_ID_STATIC_SYM = 0x01, + RUBY_ID_LOCAL = 0x00, + RUBY_ID_INSTANCE = (0x01<<1), + RUBY_ID_GLOBAL = (0x03<<1), + RUBY_ID_ATTRSET = (0x04<<1), + RUBY_ID_CONST = (0x05<<1), + RUBY_ID_CLASS = (0x06<<1), + RUBY_ID_JUNK = (0x07<<1), + RUBY_ID_INTERNAL = RUBY_ID_JUNK, + RUBY_ID_SCOPE_SHIFT = 4, + RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1) +}; +#define ID_STATIC_SYM RUBY_ID_STATIC_SYM +#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT +#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK +#define ID_LOCAL RUBY_ID_LOCAL +#define ID_INSTANCE RUBY_ID_INSTANCE +#define ID_GLOBAL RUBY_ID_GLOBAL +#define ID_ATTRSET RUBY_ID_ATTRSET +#define ID_CONST RUBY_ID_CONST +#define ID_CLASS RUBY_ID_CLASS +#define ID_JUNK RUBY_ID_JUNK +#define ID_INTERNAL RUBY_ID_INTERNAL +#define symIFUNC ID2SYM(idIFUNC) +#define symCFUNC ID2SYM(idCFUNC) +#define RUBY_TOKEN_DOT2 128 +#define RUBY_TOKEN_DOT3 129 +#define RUBY_TOKEN_BDOT2 130 +#define RUBY_TOKEN_BDOT3 131 +#define RUBY_TOKEN_UPLUS 132 +#define RUBY_TOKEN_UMINUS 133 +#define RUBY_TOKEN_POW 134 +#define RUBY_TOKEN_CMP 135 +#define RUBY_TOKEN_LSHFT 136 +#define RUBY_TOKEN_RSHFT 137 +#define RUBY_TOKEN_LEQ 138 +#define RUBY_TOKEN_GEQ 139 +#define RUBY_TOKEN_EQ 140 +#define RUBY_TOKEN_EQQ 141 +#define RUBY_TOKEN_NEQ 142 +#define RUBY_TOKEN_MATCH 143 +#define RUBY_TOKEN_NMATCH 144 +#define RUBY_TOKEN_AREF 145 +#define RUBY_TOKEN_ASET 146 +#define RUBY_TOKEN_COLON2 147 +#define RUBY_TOKEN_ANDOP 148 +#define RUBY_TOKEN_OROP 149 +#define RUBY_TOKEN_ANDDOT 150 +#define RUBY_TOKEN(t) RUBY_TOKEN_##t +#define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<> RUBY_ID_SCOPE_SHIFT +}; + +#define RUBY_INTERNAL_H 1 +#define LIKELY(x) RB_LIKELY(x) +#define UNLIKELY(x) RB_UNLIKELY(x) +#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0]))) +#define roomof(x,y) (((x) + (y) - 1) / (y)) +#define type_roomof(x,y) roomof(sizeof(x), sizeof(y)) +#define ACCESS_ONCE(type,x) (*((volatile type *)&(x))) +#undef RARRAY_AREF +#undef RClass +#undef RCLASS_SUPER +#undef NEWOBJ_OF +#undef RB_NEWOBJ_OF +#undef RB_OBJ_WRITE +#undef RHASH_IFNONE +#undef RHASH_SIZE +#undef RHASH_TBL +#undef RHASH_EMPTY_P +#undef ROBJECT_IV_INDEX_TBL +#undef RSTRUCT_LEN +#undef RSTRUCT_PTR +#undef RSTRUCT_SET +#undef RSTRUCT_GET +#define rb_ary_new_from_args(...) rb_nonexistent_symbol(__VA_ARGS__) +#define rb_io_fptr_finalize(...) rb_nonexistent_symbol(__VA_ARGS__) +#define rb_fstring_cstr(...) rb_nonexistent_symbol(__VA_ARGS__) +#define rb_sym_intern_ascii_cstr(...) rb_nonexistent_symbol(__VA_ARGS__) +#define rb_funcallv(...) rb_nonexistent_symbol(__VA_ARGS__) +#define rb_method_basic_definition_p(...) rb_nonexistent_symbol(__VA_ARGS__) +void rb_obj_info_dump(VALUE obj); +void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func); +#pragma GCC visibility push(default) +void ruby_debug_breakpoint(void); +__attribute__((__format__(printf, (1), (2)))) void ruby_debug_printf(const char*, ...); +#pragma GCC visibility pop +#define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING) +#define rp_m(msg,obj) do { fputs((msg), stderr); rb_obj_info_dump((VALUE)(obj)); } while (0) +#define bp() ruby_debug_breakpoint() +#define RBOOL(v) ((v) ? Qtrue : Qfalse) +#define RB_BIGNUM_TYPE_P(x) RB_TYPE_P((x), T_BIGNUM) + +#define INTERNAL_ARRAY_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof + +#define INTERNAL_STATIC_ASSERT_H +#define STATIC_ASSERT RBIMPL_STATIC_ASSERT +#define ARRAY_DEBUG (0+RUBY_DEBUG) +#define RARRAY_PTR_IN_USE_FLAG FL_USER14 +VALUE rb_ary_last(int, const VALUE *, VALUE); +void rb_ary_set_len(VALUE, long); +void rb_ary_delete_same(VALUE, VALUE); +VALUE rb_ary_tmp_new_fill(long capa); +VALUE rb_ary_at(VALUE, VALUE); +size_t rb_ary_memsize(VALUE); +VALUE rb_to_array_type(VALUE obj); +VALUE rb_to_array(VALUE obj); +void rb_ary_cancel_sharing(VALUE ary); +static inline VALUE rb_ary_entry_internal(VALUE ary, long offset); +static inline _Bool ARY_PTR_USING_P(VALUE ary); +static inline void RARY_TRANSIENT_SET(VALUE ary); +static inline void RARY_TRANSIENT_UNSET(VALUE ary); +#pragma GCC visibility push(default) +VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *); +VALUE rb_check_to_array(VALUE ary); +VALUE rb_ary_behead(VALUE, long); +VALUE rb_ary_aref1(VALUE ary, VALUE i); +struct rb_execution_context_struct; +VALUE rb_ec_ary_new_from_values(struct rb_execution_context_struct *ec, long n, const VALUE *elts); +#pragma GCC visibility pop +static inline VALUE +rb_ary_entry_internal(VALUE ary, long offset) +{ + long len = rb_array_len(ary); + const VALUE *ptr = rb_array_const_ptr_transient(ary); + if (len == 0) return ((VALUE)RUBY_Qnil); + if (offset < 0) { + offset += len; + if (offset < 0) return ((VALUE)RUBY_Qnil); + } + else if (len <= offset) { + return ((VALUE)RUBY_Qnil); + } + return ptr[offset]; +} +static inline _Bool +ARY_PTR_USING_P(VALUE ary) +{ + return RB_FL_TEST_RAW(ary, ((VALUE)RUBY_FL_USER14)); +} +static inline void +RARY_TRANSIENT_SET(VALUE ary) +{ + RB_FL_SET_RAW(ary, RARRAY_TRANSIENT_FLAG); +} +static inline void +RARY_TRANSIENT_UNSET(VALUE ary) +{ + RB_FL_UNSET_RAW(ary, RARRAY_TRANSIENT_FLAG); +} +#undef rb_ary_new_from_args +#undef RARRAY_AREF +__attribute__((__pure__)) +__attribute__((__artificial__)) +static inline VALUE +RARRAY_AREF(VALUE ary, long i) +{ + ((void)0); + return rb_array_const_ptr_transient(ary)[i]; +} + +#define INTERNAL_SERIAL_H +typedef unsigned +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + rb_serial_t; +#define SERIALT2NUM ULL2NUM +#define PRI_SERIALT_PREFIX PRI_LL_PREFIX +#define SIZEOF_SERIAL_T SIZEOF_LONG_LONG + +#define INTERNAL_VM_H +#undef rb_funcallv +#undef rb_method_basic_definition_p +struct rb_callable_method_entry_struct; +struct rb_method_definition_struct; +struct rb_execution_context_struct; +struct rb_control_frame_struct; +struct rb_callinfo; +enum method_missing_reason { + MISSING_NOENTRY = 0x00, + MISSING_PRIVATE = 0x01, + MISSING_PROTECTED = 0x02, + MISSING_FCALL = 0x04, + MISSING_VCALL = 0x08, + MISSING_SUPER = 0x10, + MISSING_MISSING = 0x20, + MISSING_NONE = 0x40 +}; +rb_serial_t rb_next_class_serial(void); +VALUE rb_obj_is_thread(VALUE obj); +void rb_vm_mark(void *ptr); +void rb_vm_each_stack_value(void *ptr, void (*cb)(VALUE, void*), void *ctx); +__attribute__((__pure__)) VALUE rb_vm_top_self(void); +void rb_vm_inc_const_missing_count(void); +const void **rb_vm_get_insns_address_table(void); +VALUE rb_source_location(int *pline); +const char *rb_source_location_cstr(int *pline); +static void rb_vm_pop_cfunc_frame(void); +int rb_vm_add_root_module(VALUE module); +void rb_vm_check_redefinition_by_prepend(VALUE klass); +int rb_vm_check_optimizable_mid(VALUE mid); +VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements); +static VALUE ruby_vm_special_exception_copy(VALUE); +__attribute__((__pure__)) st_table *rb_vm_fstring_table(void); +#pragma GCC visibility push(default) +VALUE rb_vm_exec(struct rb_execution_context_struct *, _Bool); +#pragma GCC visibility pop +VALUE rb_current_realfilepath(void); +VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE); +typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE); +VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv, + rb_check_funcall_hook *hook, VALUE arg); +VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *argv, + rb_check_funcall_hook *hook, VALUE arg, int kw_splat); +const char *rb_type_str(enum ruby_value_type type); +VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE); +VALUE rb_check_funcall_basic_kw(VALUE, ID, VALUE, int, const VALUE*, int); +VALUE rb_yield_1(VALUE val); +VALUE rb_yield_force_blockarg(VALUE values); +VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv, + rb_block_call_func_t bl_proc, int min_argc, int max_argc, + VALUE data2); +void rb_check_stack_overflow(void); +VALUE rb_equal_opt(VALUE obj1, VALUE obj2); +VALUE rb_eql_opt(VALUE obj1, VALUE obj2); +struct rb_iseq_struct; +#pragma GCC visibility push(default) +const struct rb_callcache *rb_vm_search_method_slowpath(const struct rb_callinfo *ci, VALUE klass); +#pragma GCC visibility pop +struct rb_execution_context_struct; +#pragma GCC visibility push(default) +int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID id, int priv); +#pragma GCC visibility pop +void rb_print_backtrace(void); +VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval); +VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval); +VALUE rb_vm_backtrace(int argc, const VALUE * argv, struct rb_execution_context_struct * ec); +VALUE rb_vm_backtrace_locations(int argc, const VALUE * argv, struct rb_execution_context_struct * ec); +VALUE rb_make_backtrace(void); +void rb_backtrace_print_as_bugreport(void); +int rb_backtrace_p(VALUE obj); +VALUE rb_backtrace_to_str_ary(VALUE obj); +VALUE rb_backtrace_to_location_ary(VALUE obj); +void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output); +int rb_frame_info_p(VALUE obj); +int rb_get_node_id_from_frame_info(VALUE obj); +const struct rb_iseq_struct *rb_get_iseq_from_frame_info(VALUE obj); +#pragma GCC visibility push(default) +VALUE rb_ec_backtrace_object(const struct rb_execution_context_struct *ec); +void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self); +#pragma GCC visibility pop +#define RUBY_DTRACE_CREATE_HOOK(name,arg) RUBY_DTRACE_HOOK(name##_CREATE, arg) +#define RUBY_DTRACE_HOOK(name,arg) do { if (UNLIKELY(RUBY_DTRACE_##name##_ENABLED())) { int dtrace_line; const char *dtrace_file = rb_source_location_cstr(&dtrace_line); if (!dtrace_file) dtrace_file = ""; RUBY_DTRACE_##name(arg, dtrace_file, dtrace_line); } } while (0) + +#define RUBY_METHOD_H 1 + +#define INTERNAL_IMEMO_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof + + +#define INTERNAL_GC_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof + + +#define INTERNAL_COMPILERS_H + +#define RUBY_BACKWARD2_GCC_VERSION_SINCE_H +#define GCC_VERSION_SINCE(x,y,z) RBIMPL_COMPILER_SINCE(GCC, (x), (y), (z)) +#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)))))) + +#define MSC_VERSION_SINCE(_) RBIMPL_COMPILER_SINCE(MSVC, (_) / 100, (_) % 100, 0) +#define MSC_VERSION_BEFORE(_) RBIMPL_COMPILER_BEFORE(MSVC, (_) / 100, (_) % 100, 0) +#define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj) +#define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj) +#define rb_obj_builtin_type(obj) __extension__({ VALUE arg_obj = (obj); RB_SPECIAL_CONST_P(arg_obj) ? -1 : (int)RB_BUILTIN_TYPE(arg_obj); }) +#define FLEX_ARY_LEN +#define BITFIELD(type,name,size) type name : size +struct rb_execution_context_struct; +struct rb_objspace; +#define RVALUE_SIZE (sizeof(struct RBasic) + sizeof(VALUE[RBIMPL_RVALUE_EMBED_LEN_MAX])) +#define RB_RVARGC_NEWOBJ_OF(var,T,c,f,s) T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? rb_wb_protected_newobj_of((c), (f) & ~FL_WB_PROTECTED, s) : rb_wb_unprotected_newobj_of((c), (f), s)) +#define RB_RVARGC_EC_NEWOBJ_OF(ec,var,T,c,f,s) T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? rb_ec_wb_protected_newobj_of((ec), (c), (f) & ~FL_WB_PROTECTED, s) : rb_wb_unprotected_newobj_of((c), (f), s)) +#define RB_NEWOBJ_OF(var,T,c,f) RB_RVARGC_NEWOBJ_OF(var, T, c, f, RVALUE_SIZE) +#define RB_EC_NEWOBJ_OF(ec,var,T,c,f) RB_RVARGC_EC_NEWOBJ_OF(ec, var, T, c, f, RVALUE_SIZE) +#define NEWOBJ_OF(var,T,c,f) RB_NEWOBJ_OF((var), T, (c), (f)) +#define RVARGC_NEWOBJ_OF(var,T,c,f,s) RB_RVARGC_NEWOBJ_OF((var), T, (c), (f), (s)) +#define RB_OBJ_GC_FLAGS_MAX 6 + +#define INTERNAL_WARNINGS_H +#define COMPILER_WARNING_PUSH RBIMPL_WARNING_PUSH() +#define COMPILER_WARNING_POP RBIMPL_WARNING_POP() +#define COMPILER_WARNING_ERROR(flag) RBIMPL_WARNING_ERROR(flag) +#define COMPILER_WARNING_IGNORED(flag) RBIMPL_WARNING_IGNORED(flag) +#define UNALIGNED_MEMBER_ACCESS(expr) __extension__({ COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Waddress-of-packed-member); __typeof__(expr) unaligned_member_access_result = (expr); COMPILER_WARNING_POP; unaligned_member_access_result; }) +#define UNALIGNED_MEMBER_PTR(ptr,mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem) +#define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), UNALIGNED_MEMBER_ACCESS((VALUE *)(slot)), (VALUE)(b), __FILE__, __LINE__) +#define SIZE_POOL_COUNT 1 +typedef struct ractor_newobj_size_pool_cache { + struct RVALUE *freelist; + struct heap_page *using_page; +} rb_ractor_newobj_size_pool_cache_t; +typedef struct ractor_newobj_cache { + rb_ractor_newobj_size_pool_cache_t size_pool_caches[1]; +} rb_ractor_newobj_cache_t; +extern VALUE *ruby_initial_gc_stress_ptr; +extern int ruby_disable_gc; +__attribute__((__malloc__)) void *ruby_mimmalloc(size_t size); +void ruby_mimfree(void *ptr); +void rb_objspace_set_event_hook(const rb_event_flag_t event); +VALUE rb_objspace_gc_enable(struct rb_objspace *); +VALUE rb_objspace_gc_disable(struct rb_objspace *); +void ruby_gc_set_params(void); +void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj); +__attribute__((__alloc_align__(1))) +__attribute__((__malloc__)) void *rb_aligned_malloc(size_t, size_t) __attribute__((__alloc_size__ (2))); +size_t rb_size_mul_or_raise(size_t, size_t, VALUE); +size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE); +__attribute__((__malloc__)) void *rb_xmalloc_mul_add(size_t, size_t, size_t); +void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t); +__attribute__((__malloc__)) void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t); +__attribute__((__malloc__)) void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t); +static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2))); +static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3))); +static inline void ruby_sized_xfree_inlined(void *ptr, size_t size); +VALUE rb_class_allocate_instance(VALUE klass); +void rb_gc_ractor_newobj_cache_clear(rb_ractor_newobj_cache_t *newobj_cache); +size_t rb_gc_obj_slot_size(VALUE obj); +_Bool rb_gc_size_allocatable_p(size_t size); +int rb_objspace_garbage_object_p(VALUE obj); +#pragma GCC visibility push(default) +const char *rb_objspace_data_type_name(VALUE obj); +VALUE rb_wb_protected_newobj_of(VALUE, VALUE, size_t); +VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE, size_t); +VALUE rb_ec_wb_protected_newobj_of(struct rb_execution_context_struct *ec, VALUE klass, VALUE flags, size_t); +size_t rb_obj_memsize_of(VALUE); +void rb_gc_verify_internal_consistency(void); +size_t rb_obj_gc_flags(VALUE, ID[], size_t); +void rb_gc_mark_values(long n, const VALUE *values); +void rb_gc_mark_vm_stack_values(long n, const VALUE *values); +void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2))); +void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3))); +void ruby_sized_xfree(void *x, size_t size); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +int rb_ec_stack_check(struct rb_execution_context_struct *ec); +void rb_gc_writebarrier_remember(VALUE obj); +const char *rb_obj_info(VALUE obj); +#pragma GCC visibility pop +static inline void * +ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) +{ + return ruby_xrealloc(ptr, new_size); +} +static inline void * +ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) +{ + return ruby_xrealloc2(ptr, new_count, elemsiz); +} +static inline void +ruby_sized_xfree_inlined(void *ptr, size_t size) +{ + ruby_xfree(ptr); +} +#define SIZED_REALLOC_N(x,y,z,w) REALLOC_N(x, y, z) +#define ruby_sized_xrealloc ruby_sized_xrealloc_inlined +#define ruby_sized_xrealloc2 ruby_sized_xrealloc2_inlined +#define ruby_sized_xfree ruby_sized_xfree_inlined +#define IMEMO_DEBUG 0 +#define IMEMO_MASK 0x0f +#define IMEMO_FL_USHIFT (FL_USHIFT + 4) +#define IMEMO_FL_USER0 FL_USER4 +#define IMEMO_FL_USER1 FL_USER5 +#define IMEMO_FL_USER2 FL_USER6 +#define IMEMO_FL_USER3 FL_USER7 +#define IMEMO_FL_USER4 FL_USER8 +#define IMEMO_FL_USER5 FL_USER9 +enum imemo_type { + imemo_env = 0, + imemo_cref = 1, + imemo_svar = 2, + imemo_throw_data = 3, + imemo_ifunc = 4, + imemo_memo = 5, + imemo_ment = 6, + imemo_iseq = 7, + imemo_tmpbuf = 8, + imemo_ast = 9, + imemo_parser_strterm = 10, + imemo_callinfo = 11, + imemo_callcache = 12, + imemo_constcache = 13, +}; +struct vm_svar { + VALUE flags; + const VALUE cref_or_me; + const VALUE lastline; + const VALUE backref; + const VALUE others; +}; +struct vm_throw_data { + VALUE flags; + VALUE reserved; + const VALUE throw_obj; + const struct rb_control_frame_struct *catch_frame; + int throw_state; +}; +#define THROW_DATA_CONSUMED IMEMO_FL_USER0 +struct vm_ifunc_argc { + int min, max; +}; +struct vm_ifunc { + VALUE flags; + VALUE reserved; + rb_block_call_func_t func; + const void *data; + struct vm_ifunc_argc argc; +}; +struct rb_imemo_tmpbuf_struct { + VALUE flags; + VALUE reserved; + VALUE *ptr; + struct rb_imemo_tmpbuf_struct *next; + size_t cnt; +}; +struct MEMO { + VALUE flags; + VALUE reserved; + const VALUE v1; + const VALUE v2; + union { + long cnt; + long state; + const VALUE value; + void (*func)(void); + } u3; +}; +#define THROW_DATA_P(err) imemo_throw_data_p((VALUE)err) +#define MEMO_CAST(m) ((struct MEMO *)(m)) +#define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0)) +#define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value)) +#define NEW_MEMO_FOR(type,value) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value)) +#define NEW_PARTIAL_MEMO_FOR(type,value,member) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), rb_ary_set_len((value), offsetof(type, member) / sizeof(VALUE)), MEMO_FOR(type, value)) +typedef struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t; +VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0); +rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt); +struct vm_ifunc *rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc); +void rb_strterm_mark(VALUE obj); +static inline enum imemo_type imemo_type(VALUE imemo); +static inline int imemo_type_p(VALUE imemo, enum imemo_type imemo_type); +static inline _Bool imemo_throw_data_p(VALUE imemo); +static inline struct vm_ifunc *rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data); +static inline VALUE rb_imemo_tmpbuf_auto_free_pointer(void); +static inline void *RB_IMEMO_TMPBUF_PTR(VALUE v); +static inline void *rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr); +static inline VALUE rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str); +static inline void MEMO_V1_SET(struct MEMO *m, VALUE v); +static inline void MEMO_V2_SET(struct MEMO *m, VALUE v); +#pragma GCC visibility push(default) +VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0); +const char *rb_imemo_name(enum imemo_type type); +#pragma GCC visibility pop +static inline enum imemo_type +imemo_type(VALUE imemo) +{ + return (((struct RBasic *)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f; +} +static inline int +imemo_type_p(VALUE imemo, enum imemo_type imemo_type) +{ + if ((__builtin_expect(!!(!RB_SPECIAL_CONST_P(imemo)), 1))) { + const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK; + const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO; + return expected_type == (((struct RBasic *)(imemo))->flags & mask); + } + else { + return 0; + } +} +#define IMEMO_TYPE_P(v,t) imemo_type_p((VALUE)v, t) +static inline _Bool +imemo_throw_data_p(VALUE imemo) +{ + return (__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((imemo), (RUBY_T_IMEMO)) : (RB_TYPE_P)((imemo), (RUBY_T_IMEMO))); +} +static inline struct vm_ifunc * +rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data) +{ + return rb_vm_ifunc_new(func, data, 0, (-1)); +} +static inline VALUE +rb_imemo_tmpbuf_auto_free_pointer(void) +{ + return rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0); +} +static inline void * +RB_IMEMO_TMPBUF_PTR(VALUE v) +{ + const struct rb_imemo_tmpbuf_struct *p = (const void *)v; + return p->ptr; +} +static inline void * +rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr) +{ + return ((rb_imemo_tmpbuf_t *)v)->ptr = ptr; +} +static inline VALUE +rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str) +{ + const void *src; + VALUE imemo; + rb_imemo_tmpbuf_t *tmpbuf; + void *dst; + size_t len; + rb_string_value(&(str)); + imemo = rb_imemo_tmpbuf_auto_free_pointer(); + tmpbuf = (rb_imemo_tmpbuf_t *)imemo; + len = RSTRING_LEN(str); + src = RSTRING_PTR(str); + dst = ruby_xmalloc(len); + memcpy(dst, src, len); + tmpbuf->ptr = dst; + return imemo; +} +static inline void +MEMO_V1_SET(struct MEMO *m, VALUE v) +{ + rb_obj_write((VALUE)(m), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&m->v1)) unaligned_member_access_result = ((VALUE *)(&m->v1)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(v), "../ruby-3.1.5/internal/imemo.h", 234); +} +static inline void +MEMO_V2_SET(struct MEMO *m, VALUE v) +{ + rb_obj_write((VALUE)(m), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&m->v2)) unaligned_member_access_result = ((VALUE *)(&m->v2)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(v), "../ruby-3.1.5/internal/imemo.h", 240); +} +#define END_OF_ENUMERATION(key) +typedef enum { + METHOD_VISI_UNDEF = 0x00, + METHOD_VISI_PUBLIC = 0x01, + METHOD_VISI_PRIVATE = 0x02, + METHOD_VISI_PROTECTED = 0x03, + METHOD_VISI_MASK = 0x03 +} rb_method_visibility_t; +typedef struct rb_scope_visi_struct { + rb_method_visibility_t method_visi : 3; + unsigned int module_func : 1; +} rb_scope_visibility_t; +typedef struct rb_cref_struct { + VALUE flags; + VALUE refinements; + VALUE klass_or_self; + struct rb_cref_struct * next; + const rb_scope_visibility_t scope_visi; +} rb_cref_t; +typedef struct rb_method_entry_struct { + VALUE flags; + VALUE defined_class; + struct rb_method_definition_struct * const def; + ID called_id; + VALUE owner; +} rb_method_entry_t; +typedef struct rb_callable_method_entry_struct { + VALUE flags; + const VALUE defined_class; + struct rb_method_definition_struct * const def; + ID called_id; + const VALUE owner; +} rb_callable_method_entry_t; +#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0)) +#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2)) +#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3) +#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags |= IMEMO_FL_USER3) +#define METHOD_ENTRY_CACHED(me) ((me)->flags & IMEMO_FL_USER4) +#define METHOD_ENTRY_CACHED_SET(me) ((me)->flags |= IMEMO_FL_USER4) +#define METHOD_ENTRY_INVALIDATED(me) ((me)->flags & IMEMO_FL_USER5) +#define METHOD_ENTRY_INVALIDATED_SET(me) ((me)->flags |= IMEMO_FL_USER5) +#define METHOD_ENTRY_CACHEABLE(me) !(METHOD_ENTRY_VISI(me) == METHOD_VISI_PROTECTED) +static inline void +METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi) +{ + ((void)0); + me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)); +} +static inline void +METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic) +{ + ((void)0); + me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)); +} +static inline void +METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic) +{ + ((void)0); + ((void)0); + me->flags = + (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) | + ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2))); +} +static inline void +METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src) +{ + dst->flags = + (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6) + |((VALUE)RUBY_FL_USER7))) | + (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7))); +} +typedef enum { + VM_METHOD_TYPE_ISEQ, + VM_METHOD_TYPE_CFUNC, + VM_METHOD_TYPE_ATTRSET, + VM_METHOD_TYPE_IVAR, + VM_METHOD_TYPE_BMETHOD, + VM_METHOD_TYPE_ZSUPER, + VM_METHOD_TYPE_ALIAS, + VM_METHOD_TYPE_UNDEF, + VM_METHOD_TYPE_NOTIMPLEMENTED, + VM_METHOD_TYPE_OPTIMIZED, + VM_METHOD_TYPE_MISSING, + VM_METHOD_TYPE_REFINED, +} rb_method_type_t; +#define VM_METHOD_TYPE_MINIMUM_BITS 4 +__extension__ _Static_assert(VM_METHOD_TYPE_REFINED <= (1<<4), "VM_METHOD_TYPE_MINIMUM_BITS" ": " "VM_METHOD_TYPE_REFINED <= (1<def || (me)->def->type == VM_METHOD_TYPE_UNDEF) +#define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me)) +void rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi); +void rb_add_method_cfunc(VALUE klass, ID mid, VALUE (*func)(), int argc, rb_method_visibility_t visi); +void rb_add_method_iseq(VALUE klass, ID mid, const rb_iseq_t *iseq, rb_cref_t *cref, rb_method_visibility_t visi); +void rb_add_method_optimized(VALUE klass, ID mid, enum method_optimized_type, unsigned int index, rb_method_visibility_t visi); +void rb_add_refined_method_entry(VALUE refined_class, ID mid); +rb_method_entry_t *rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex); +rb_method_entry_t *rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi, const rb_method_definition_t *def); +const rb_method_entry_t *rb_method_entry_at(VALUE obj, ID id); +const rb_method_entry_t *rb_method_entry(VALUE klass, ID id); +const rb_method_entry_t *rb_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class); +const rb_method_entry_t *rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class); +const rb_method_entry_t *rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me); +#pragma GCC visibility push(default) +const rb_method_entry_t *rb_resolve_me_location(const rb_method_entry_t *, VALUE[5]); +#pragma GCC visibility pop +const rb_callable_method_entry_t *rb_callable_method_entry(VALUE klass, ID id); +const rb_callable_method_entry_t *rb_callable_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class); +const rb_callable_method_entry_t *rb_callable_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class); +int rb_method_entry_arity(const rb_method_entry_t *me); +int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2); +st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me); +VALUE rb_method_entry_location(const rb_method_entry_t *me); +void rb_free_method_entry(const rb_method_entry_t *me); +const rb_method_entry_t *rb_method_entry_clone(const rb_method_entry_t *me); +const rb_callable_method_entry_t *rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID called_id, VALUE defined_class); +void rb_method_entry_copy(rb_method_entry_t *dst, const rb_method_entry_t *src); +void rb_method_table_insert(VALUE klass, struct rb_id_table *table, ID method_id, const rb_method_entry_t *me); +void rb_scope_visibility_set(rb_method_visibility_t); +VALUE rb_unnamed_parameters(int arity); +void rb_clear_method_cache(VALUE klass_or_module, ID mid); +void rb_clear_method_cache_all(void); + +#define RUBY_NODE_H 1 +enum node_type { + NODE_SCOPE, + NODE_BLOCK, + NODE_IF, + NODE_UNLESS, + NODE_CASE, + NODE_CASE2, + NODE_CASE3, + NODE_WHEN, + NODE_IN, + NODE_WHILE, + NODE_UNTIL, + NODE_ITER, + NODE_FOR, + NODE_FOR_MASGN, + NODE_BREAK, + NODE_NEXT, + NODE_REDO, + NODE_RETRY, + NODE_BEGIN, + NODE_RESCUE, + NODE_RESBODY, + NODE_ENSURE, + NODE_AND, + NODE_OR, + NODE_MASGN, + NODE_LASGN, + NODE_DASGN, + NODE_GASGN, + NODE_IASGN, + NODE_CDECL, + NODE_CVASGN, + NODE_OP_ASGN1, + NODE_OP_ASGN2, + NODE_OP_ASGN_AND, + NODE_OP_ASGN_OR, + NODE_OP_CDECL, + NODE_CALL, + NODE_OPCALL, + NODE_FCALL, + NODE_VCALL, + NODE_QCALL, + NODE_SUPER, + NODE_ZSUPER, + NODE_LIST, + NODE_ZLIST, + NODE_VALUES, + NODE_HASH, + NODE_RETURN, + NODE_YIELD, + NODE_LVAR, + NODE_DVAR, + NODE_GVAR, + NODE_IVAR, + NODE_CONST, + NODE_CVAR, + NODE_NTH_REF, + NODE_BACK_REF, + NODE_MATCH, + NODE_MATCH2, + NODE_MATCH3, + NODE_LIT, + NODE_STR, + NODE_DSTR, + NODE_XSTR, + NODE_DXSTR, + NODE_EVSTR, + NODE_DREGX, + NODE_ONCE, + NODE_ARGS, + NODE_ARGS_AUX, + NODE_OPT_ARG, + NODE_KW_ARG, + NODE_POSTARG, + NODE_ARGSCAT, + NODE_ARGSPUSH, + NODE_SPLAT, + NODE_BLOCK_PASS, + NODE_DEFN, + NODE_DEFS, + NODE_ALIAS, + NODE_VALIAS, + NODE_UNDEF, + NODE_CLASS, + NODE_MODULE, + NODE_SCLASS, + NODE_COLON2, + NODE_COLON3, + NODE_DOT2, + NODE_DOT3, + NODE_FLIP2, + NODE_FLIP3, + NODE_SELF, + NODE_NIL, + NODE_TRUE, + NODE_FALSE, + NODE_ERRINFO, + NODE_DEFINED, + NODE_POSTEXE, + NODE_DSYM, + NODE_ATTRASGN, + NODE_LAMBDA, + NODE_ARYPTN, + NODE_HSHPTN, + NODE_FNDPTN, + NODE_LAST +}; +typedef struct rb_code_position_struct { + int lineno; + int column; +} rb_code_position_t; +typedef struct rb_code_location_struct { + rb_code_position_t beg_pos; + rb_code_position_t end_pos; +} rb_code_location_t; +static inline rb_code_location_t +code_loc_gen(const rb_code_location_t *loc1, const rb_code_location_t *loc2) +{ + rb_code_location_t loc; + loc.beg_pos = loc1->beg_pos; + loc.end_pos = loc2->end_pos; + return loc; +} +typedef struct rb_ast_id_table { + int size; + ID ids[]; +} rb_ast_id_table_t; +typedef struct RNode { + VALUE flags; + union { + struct RNode *node; + ID id; + VALUE value; + rb_ast_id_table_t *tbl; + } u1; + union { + struct RNode *node; + ID id; + long argc; + VALUE value; + } u2; + union { + struct RNode *node; + ID id; + long state; + struct rb_args_info *args; + struct rb_ary_pattern_info *apinfo; + struct rb_fnd_pattern_info *fpinfo; + VALUE value; + } u3; + rb_code_location_t nd_loc; + int node_id; +} NODE; +#define RNODE(obj) ((struct RNode *)(obj)) +#define NODE_FL_NEWLINE (((VALUE)1)<<7) +#define NODE_TYPESHIFT 8 +#define NODE_TYPEMASK (((VALUE)0x7f)<flags & NODE_TYPEMASK)>>NODE_TYPESHIFT)) +#define nd_set_type(n,t) rb_node_set_type(n, t) +#define nd_init_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<flags)>>NODE_LSHIFT) +#define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<nd_loc.beg_pos.column)) +#define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v)) +#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno)) +#define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v)) +#define nd_first_loc(n) ((n)->nd_loc.beg_pos) +#define nd_set_first_loc(n,v) (nd_first_loc(n) = (v)) +#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column)) +#define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v)) +#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno)) +#define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v)) +#define nd_last_loc(n) ((n)->nd_loc.end_pos) +#define nd_set_last_loc(n,v) (nd_last_loc(n) = (v)) +#define nd_node_id(n) ((n)->node_id) +#define nd_set_node_id(n,id) ((n)->node_id = (id)) +#define nd_head u1.node +#define nd_alen u2.argc +#define nd_next u3.node +#define nd_cond u1.node +#define nd_body u2.node +#define nd_else u3.node +#define nd_resq u2.node +#define nd_ensr u3.node +#define nd_1st u1.node +#define nd_2nd u2.node +#define nd_stts u1.node +#define nd_entry u3.id +#define nd_vid u1.id +#define nd_var u1.node +#define nd_iter u3.node +#define nd_value u2.node +#define nd_aid u3.id +#define nd_lit u1.value +#define nd_recv u1.node +#define nd_mid u2.id +#define nd_args u3.node +#define nd_ainfo u3.args +#define nd_defn u3.node +#define nd_cpath u1.node +#define nd_super u3.node +#define nd_beg u1.node +#define nd_end u2.node +#define nd_state u3.state +#define nd_nth u2.argc +#define nd_alias u1.id +#define nd_orig u2.id +#define nd_undef u2.node +#define nd_brace u2.argc +#define nd_pconst u1.node +#define nd_pkwargs u2.node +#define nd_pkwrestarg u3.node +#define nd_apinfo u3.apinfo +#define nd_fpinfo u3.fpinfo +#define nd_tbl u1.tbl +#define nd_pid u1.id +#define nd_plen u2.argc +#define nd_cflag u2.id +#define nd_cval u3.value +#define nd_rval u2.value +#define nd_tag u1.id +#define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc) +#define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc) +#define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc) +#define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc) +#define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc) +#define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc) +#define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc) +#define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc) +#define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc) +#define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc) +#define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc) +#define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc) +#define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc) +#define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc) +#define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc) +#define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc) +#define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc) +#define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc) +#define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc) +#define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc) +#define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc) +#define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc) +#define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc) +#define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc) +#define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc) +#define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc) +#define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc) +#define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc) +#define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc) +#define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc) +#define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc) +#define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc) +#define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc) +#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,v,loc) +#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc) +#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc) +#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc) +#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc) +#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc) +#define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc) +#define NEW_OP_ASGN2(r,t,i,o,val,loc) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o,t,loc),loc) +#define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc) +#define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc) +#define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc) +#define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc) +#define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,v,loc) +#define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc) +#define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc) +#define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc) +#define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc) +#define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc) +#define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc) +#define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc) +#define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc) +#define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc) +#define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc) +#define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc) +#define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc) +#define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc) +#define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc) +#define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc) +#define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc) +#define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc) +#define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc) +#define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc) +#define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc) +#define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc) +#define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc) +#define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc) +#define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc) +#define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc) +#define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc) +#define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc) +#define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc) +#define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc) +#define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc) +#define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc) +#define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc) +#define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc) +#define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc) +#define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc) +#define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc) +#define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc) +#define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc) +#define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc) +#define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc) +#define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc) +#define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc) +#define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc) +#define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc) +#define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc) +#define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc) +#define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc) +#define NEW_PREEXE(b,loc) NEW_SCOPE(b,loc) +#define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc) +#define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc) +#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1) +#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD) +#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1) +#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST) +#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1) +#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1) +VALUE rb_node_case_when_optimizable_literal(const NODE *const node); +#pragma GCC visibility push(default) +typedef struct node_buffer_struct node_buffer_t; +typedef struct rb_ast_body_struct { + const NODE *root; + VALUE compile_option; + VALUE script_lines; +} rb_ast_body_t; +typedef struct rb_ast_struct { + VALUE flags; + node_buffer_t *node_buffer; + rb_ast_body_t body; +} rb_ast_t; +rb_ast_t *rb_ast_new(void); +void rb_ast_mark(rb_ast_t*); +void rb_ast_update_references(rb_ast_t*); +void rb_ast_dispose(rb_ast_t*); +void rb_ast_free(rb_ast_t*); +size_t rb_ast_memsize(const rb_ast_t*); +void rb_ast_add_mark_object(rb_ast_t*, VALUE); +NODE *rb_ast_newnode(rb_ast_t*, enum node_type type); +void rb_ast_delete_node(rb_ast_t*, NODE *n); +rb_ast_id_table_t *rb_ast_new_local_table(rb_ast_t*, int); +rb_ast_id_table_t *rb_ast_resize_latest_local_table(rb_ast_t*, int); +VALUE rb_parser_new(void); +VALUE rb_parser_end_seen_p(VALUE); +VALUE rb_parser_encoding(VALUE); +VALUE rb_parser_set_yydebug(VALUE, VALUE); +VALUE rb_parser_dump_tree(const NODE *node, int comment); +void rb_parser_set_options(VALUE, int, int, int, int); +rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int); +rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line); +rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line); +rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line); +void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2); +const char *ruby_node_name(int node); +const struct kwtable *rb_reserved_word(const char *, unsigned int); +struct rb_args_info { + NODE *pre_init; + NODE *post_init; + int pre_args_num; + int post_args_num; + ID first_post_arg; + ID rest_arg; + ID block_arg; + NODE *kw_args; + NODE *kw_rest_arg; + NODE *opt_args; + unsigned int no_kwarg: 1; + unsigned int ruby2_keywords: 1; + VALUE imemo; +}; +struct rb_ary_pattern_info { + NODE *pre_args; + NODE *rest_arg; + NODE *post_args; +}; +struct rb_fnd_pattern_info { + NODE *pre_rest_arg; + NODE *args; + NODE *post_rest_arg; +}; +struct parser_params; +void *rb_parser_malloc(struct parser_params *, size_t); +void *rb_parser_realloc(struct parser_params *, void *, size_t); +void *rb_parser_calloc(struct parser_params *, size_t, size_t); +void rb_parser_free(struct parser_params *, void *); +__attribute__((__format__(printf, (2), (3)))) void rb_parser_printf(struct parser_params *parser, const char *fmt, ...); +void rb_ast_node_type_change(NODE *n, enum node_type type); +#pragma GCC visibility pop +static inline VALUE +rb_node_set_type(NODE *n, enum node_type t) +{ + return (n)->flags=(((n)->flags&~(((VALUE)0x7f)<<8))|((((unsigned long)(t))<<8)&(((VALUE)0x7f)<<8))); +} +static inline _Bool +nd_type_p(const NODE *n, enum node_type t) +{ + return (enum node_type)((int) (((n)->flags & (((VALUE)0x7f)<<8))>>8)) == t; +} + +#define RUBY_ATOMIC_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define RUBY_ATOMIC_GENERIC_MACRO 1 +typedef unsigned int rb_atomic_t; +#define RUBY_ATOMIC_FETCH_ADD(var,val) rbimpl_atomic_fetch_add(&(var), (val)) +#define RUBY_ATOMIC_FETCH_SUB(var,val) rbimpl_atomic_fetch_sub(&(var), (val)) +#define RUBY_ATOMIC_OR(var,val) rbimpl_atomic_or(&(var), (val)) +#define RUBY_ATOMIC_EXCHANGE(var,val) rbimpl_atomic_exchange(&(var), (val)) +#define RUBY_ATOMIC_CAS(var,oldval,newval) rbimpl_atomic_cas(&(var), (oldval), (newval)) +#define RUBY_ATOMIC_SET(var,val) rbimpl_atomic_set(&(var), (val)) +#define RUBY_ATOMIC_ADD(var,val) rbimpl_atomic_add(&(var), (val)) +#define RUBY_ATOMIC_SUB(var,val) rbimpl_atomic_sub(&(var), (val)) +#define RUBY_ATOMIC_INC(var) rbimpl_atomic_inc(&(var)) +#define RUBY_ATOMIC_DEC(var) rbimpl_atomic_dec(&(var)) +#define RUBY_ATOMIC_SIZE_INC(var) rbimpl_atomic_size_inc(&(var)) +#define RUBY_ATOMIC_SIZE_DEC(var) rbimpl_atomic_size_dec(&(var)) +#define RUBY_ATOMIC_SIZE_EXCHANGE(var,val) rbimpl_atomic_size_exchange(&(var), (val)) +#define RUBY_ATOMIC_SIZE_CAS(var,oldval,newval) rbimpl_atomic_size_cas(&(var), (oldval), (newval)) +#define RUBY_ATOMIC_SIZE_ADD(var,val) rbimpl_atomic_size_add(&(var), (val)) +#define RUBY_ATOMIC_SIZE_SUB(var,val) rbimpl_atomic_size_sub(&(var), (val)) +#define RUBY_ATOMIC_PTR_EXCHANGE(var,val) RBIMPL_CAST(rbimpl_atomic_ptr_exchange((void **)&(var), (void *)val)) +#define RUBY_ATOMIC_PTR_CAS(var,oldval,newval) RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (oldval), (newval))) +#define RUBY_ATOMIC_VALUE_EXCHANGE(var,val) rbimpl_atomic_value_exchange(&(var), (val)) +#define RUBY_ATOMIC_VALUE_CAS(var,oldval,newval) rbimpl_atomic_value_cas(&(var), (oldval), (newval)) +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline rb_atomic_t +rbimpl_atomic_fetch_add(volatile rb_atomic_t *ptr, rb_atomic_t val) +{ + return __atomic_fetch_add(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_add(volatile rb_atomic_t *ptr, rb_atomic_t val) +{ + __atomic_add_fetch(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_size_add(volatile size_t *ptr, size_t val) +{ + __atomic_add_fetch(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_inc(volatile rb_atomic_t *ptr) +{ + rbimpl_atomic_add(ptr, 1); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_size_inc(volatile size_t *ptr) +{ + rbimpl_atomic_size_add(ptr, 1); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline rb_atomic_t +rbimpl_atomic_fetch_sub(volatile rb_atomic_t *ptr, rb_atomic_t val) +{ + return __atomic_fetch_sub(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_sub(volatile rb_atomic_t *ptr, rb_atomic_t val) +{ + __atomic_sub_fetch(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_size_sub(volatile size_t *ptr, size_t val) +{ + __atomic_sub_fetch(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_dec(volatile rb_atomic_t *ptr) +{ + rbimpl_atomic_sub(ptr, 1); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_size_dec(volatile size_t *ptr) +{ + rbimpl_atomic_size_sub(ptr, 1); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_or(volatile rb_atomic_t *ptr, rb_atomic_t val) +{ + __atomic_or_fetch(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline rb_atomic_t +rbimpl_atomic_exchange(volatile rb_atomic_t *ptr, rb_atomic_t val) +{ + return __atomic_exchange_n(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline size_t +rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val) +{ + return __atomic_exchange_n(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void * +rbimpl_atomic_ptr_exchange(void *volatile *ptr, const void *val) +{ + PVOID *pptr = ((PVOID *)ptr); + PVOID pval = ((PVOID)val); + return _InterlockedExchangePointer(pptr, pval); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline VALUE +rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val) +{ + __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)"); + const size_t sval = ((size_t)val); + volatile size_t *const sptr = ((volatile size_t *)ptr); + const size_t sret = rbimpl_atomic_size_exchange(sptr, sval); + return ((VALUE)sret); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void +rbimpl_atomic_set(volatile rb_atomic_t *ptr, rb_atomic_t val) +{ + __atomic_store_n(ptr, val, 5); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline rb_atomic_t +rbimpl_atomic_cas(volatile rb_atomic_t *ptr, rb_atomic_t oldval, rb_atomic_t newval) +{ + __atomic_compare_exchange_n( + ptr, &oldval, newval, 0, 5, 5); + return oldval; +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline size_t +rbimpl_atomic_size_cas(volatile size_t *ptr, size_t oldval, size_t newval) +{ + __atomic_compare_exchange_n( + ptr, &oldval, newval, 0, 5, 5); + return oldval; +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline void * +rbimpl_atomic_ptr_cas(void **ptr, const void *oldval, const void *newval) +{ + PVOID *pptr = ((PVOID *)ptr); + PVOID pold = ((PVOID)oldval); + PVOID pnew = ((PVOID)newval); + return _InterlockedCompareExchangePointer(pptr, pnew, pold); +} +__attribute__((__artificial__)) +__declspec(noalias) +__attribute__((__nonnull__ (1))) +static inline VALUE +rbimpl_atomic_value_cas(volatile VALUE *ptr, VALUE oldval, VALUE newval) +{ + __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)"); + const size_t snew = ((size_t)newval); + const size_t sold = ((size_t)oldval); + volatile size_t *const sptr = ((volatile size_t *)ptr); + const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew); + return ((VALUE)sret); +} +#define ATOMIC_ADD(var,val) RUBY_ATOMIC_ADD(var, val) +#define ATOMIC_CAS(var,oldval,newval) RUBY_ATOMIC_CAS(var, oldval, newval) +#define ATOMIC_DEC(var) RUBY_ATOMIC_DEC(var) +#define ATOMIC_EXCHANGE(var,val) RUBY_ATOMIC_EXCHANGE(var, val) +#define ATOMIC_FETCH_ADD(var,val) RUBY_ATOMIC_FETCH_ADD(var, val) +#define ATOMIC_FETCH_SUB(var,val) RUBY_ATOMIC_FETCH_SUB(var, val) +#define ATOMIC_INC(var) RUBY_ATOMIC_INC(var) +#define ATOMIC_OR(var,val) RUBY_ATOMIC_OR(var, val) +#define ATOMIC_PTR_CAS(var,oldval,newval) RUBY_ATOMIC_PTR_CAS(var, oldval, newval) +#define ATOMIC_PTR_EXCHANGE(var,val) RUBY_ATOMIC_PTR_EXCHANGE(var, val) +#define ATOMIC_SET(var,val) RUBY_ATOMIC_SET(var, val) +#define ATOMIC_SIZE_ADD(var,val) RUBY_ATOMIC_SIZE_ADD(var, val) +#define ATOMIC_SIZE_CAS(var,oldval,newval) RUBY_ATOMIC_SIZE_CAS(var, oldval, newval) +#define ATOMIC_SIZE_DEC(var) RUBY_ATOMIC_SIZE_DEC(var) +#define ATOMIC_SIZE_EXCHANGE(var,val) RUBY_ATOMIC_SIZE_EXCHANGE(var, val) +#define ATOMIC_SIZE_INC(var) RUBY_ATOMIC_SIZE_INC(var) +#define ATOMIC_SIZE_SUB(var,val) RUBY_ATOMIC_SIZE_SUB(var, val) +#define ATOMIC_SUB(var,val) RUBY_ATOMIC_SUB(var, val) +#define ATOMIC_VALUE_CAS(var,oldval,val) RUBY_ATOMIC_VALUE_CAS(var, oldval, val) +#define ATOMIC_VALUE_EXCHANGE(var,val) RUBY_ATOMIC_VALUE_EXCHANGE(var, val) + +#define RUBY_VM_OPTS_H +#define OPT_TAILCALL_OPTIMIZATION 0 +#define OPT_PEEPHOLE_OPTIMIZATION 1 +#define OPT_SPECIALISED_INSTRUCTION 1 +#define OPT_INLINE_CONST_CACHE 1 +#define OPT_FROZEN_STRING_LITERAL 0 +#define OPT_DEBUG_FROZEN_STRING_LITERAL 0 +#define OPT_THREADED_CODE 0 +#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0) +#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1) +#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2) +#define OPT_CHECKED_RUN 1 +#define OPT_INLINE_METHOD_CACHE 1 +#define OPT_GLOBAL_METHOD_CACHE 1 +#define OPT_BLOCKINLINING 0 +#define OPT_IC_FOR_IVAR 1 +#define OPT_OPERANDS_UNIFICATION 1 +#define OPT_INSTRUCTIONS_UNIFICATION 0 +#define OPT_UNIFY_ALL_COMBINATION 0 +#define OPT_STACK_CACHING 0 +#define OPT_SUPPORT_JOKE 0 +#define OPT_SUPPORT_CALL_C_FUNCTION 0 +#define VM_COLLECT_USAGE_DETAILS 0 + +#define RUBY_DARRAY_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define rb_darray(T) struct { rb_darray_meta_t meta; T data[]; } * +#define rb_darray_get(ary,idx) ((ary)->data[(idx)]) +#define rb_darray_set(ary,idx,element) ((ary)->data[(idx)] = (element)) +#define rb_darray_ref(ary,idx) (&((ary)->data[(idx)])) +#define rb_darray_append(ptr_to_ary,element) ( rb_darray_ensure_space((ptr_to_ary), sizeof(**(ptr_to_ary)), sizeof((*(ptr_to_ary))->data[0])) ? ( rb_darray_set(*(ptr_to_ary), (*(ptr_to_ary))->meta.size, (element)), ++((*(ptr_to_ary))->meta.size), 1 ) : 0) +#define rb_darray_back(ary) ((ary)->data[(ary)->meta.size - 1]) +#define rb_darray_pop_back(ary) ((ary)->meta.size--) +#define rb_darray_remove_unordered(ary,idx) do { rb_darray_set(ary, idx, rb_darray_back(ary)); rb_darray_pop_back(ary); } while (0); +#define rb_darray_foreach(ary,idx_name,elem_ptr_var) for (int idx_name = 0; idx_name < rb_darray_size(ary) && ((elem_ptr_var) = rb_darray_ref(ary, idx_name)); ++idx_name) +#define rb_darray_for(ary,idx_name) for (int idx_name = 0; idx_name < rb_darray_size(ary); ++idx_name) +#define rb_darray_make(ptr_to_ary,size) rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), sizeof((*(ptr_to_ary))->data[0])) +#define rb_darray_clear(ary) (ary->meta.size = 0) +typedef struct rb_darray_meta { + int32_t size; + int32_t capa; +} rb_darray_meta_t; +static inline int32_t +rb_darray_size(const void *ary) +{ + const rb_darray_meta_t *meta = ary; + return meta ? meta->size : 0; +} +static inline int32_t +rb_darray_capa(const void *ary) +{ + const rb_darray_meta_t *meta = ary; + return meta ? meta->capa : 0; +} +static inline void +rb_darray_free(void *ary) +{ + free(ary); +} +static inline size_t +rb_darray_buffer_size(int32_t capacity, size_t header_size, size_t element_size) +{ + if (capacity == 0) return 0; + return header_size + (size_t)capacity * element_size; +} +static inline int +rb_darray_ensure_space(void *ptr_to_ary, size_t header_size, size_t element_size) +{ + rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary; + rb_darray_meta_t *meta = *ptr_to_ptr_to_meta; + int32_t current_capa = rb_darray_capa(meta); + if (rb_darray_size(meta) < current_capa) return 1; + int32_t new_capa; + if (current_capa == 0) { + new_capa = 1; + } + else { + int64_t doubled = 2 * (int64_t)current_capa; + new_capa = (int32_t)doubled; + if (new_capa != doubled) return 0; + } + size_t current_buffer_size = rb_darray_buffer_size(current_capa, header_size, element_size); + size_t new_buffer_size = rb_darray_buffer_size(new_capa, header_size, element_size); + if (new_buffer_size <= current_buffer_size) return 0; + rb_darray_meta_t *doubled_ary = realloc(meta, new_buffer_size); + if (!doubled_ary) return 0; + if (meta == ((void*)0)) { + doubled_ary->size = 0; + } + doubled_ary->capa = new_capa; + memcpy(ptr_to_ary, &doubled_ary, sizeof(doubled_ary)); + return 1; +} +static inline int +rb_darray_make_impl(void *ptr_to_ary, int32_t array_size, size_t header_size, size_t element_size) +{ + rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary; + if (array_size < 0) return 0; + if (array_size == 0) { + *ptr_to_ptr_to_meta = ((void*)0); + return 1; + } + size_t buffer_size = rb_darray_buffer_size(array_size, header_size, element_size); + rb_darray_meta_t *meta = calloc(buffer_size, 1); + if (!meta) return 0; + meta->size = array_size; + meta->capa = array_size; + memcpy(ptr_to_ary, &meta, sizeof(meta)); + return 1; +} + + +#define RUBY_THREAD_NATIVE_H 1 +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; +#pragma GCC visibility push(default) +rb_nativethread_id_t rb_nativethread_self(void); +void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock); +void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock); +void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock); +void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock); +void rb_native_mutex_lock(rb_nativethread_lock_t *lock); +int rb_native_mutex_trylock(rb_nativethread_lock_t *lock); +void rb_native_mutex_unlock(rb_nativethread_lock_t *lock); +void rb_native_mutex_initialize(rb_nativethread_lock_t *lock); +void rb_native_mutex_destroy(rb_nativethread_lock_t *lock); +void rb_native_cond_signal(rb_nativethread_cond_t *cond); +void rb_native_cond_broadcast(rb_nativethread_cond_t *cond); +void rb_native_cond_wait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex); +void rb_native_cond_timedwait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex, unsigned long msec); +void rb_native_cond_initialize(rb_nativethread_cond_t *cond); +void rb_native_cond_destroy(rb_nativethread_cond_t *cond); +#pragma GCC visibility pop + +#define RUBY_THREAD_WIN32_H +#define USE_VM_CLOCK 1 +__declspec (dllimport) BOOL __attribute__((__stdcall__)) +TryEnterCriticalSection( LPCRITICAL_SECTION lpCriticalSection); +struct rb_thread_cond_struct { + struct cond_event_entry *next; + struct cond_event_entry *prev; +}; +typedef struct native_thread_data_struct { + HANDLE interrupt_event; +} native_thread_data_t; +typedef struct rb_global_vm_lock_struct { + HANDLE lock; +} rb_global_vm_lock_t; +typedef DWORD native_tls_key_t; +static inline void * +native_tls_get(native_tls_key_t key) +{ + void *ptr = TlsGetValue(key); + if ((__builtin_expect(!!(ptr == ((void*)0)), 0))) { + rb_bug("TlsGetValue() returns NULL"); + } + return ptr; +} +static inline void +native_tls_set(native_tls_key_t key, void *ptr) +{ + if ((__builtin_expect(!!(TlsSetValue(key, ptr) == 0), 0))) { + rb_bug("TlsSetValue() error"); + } +} +#pragma GCC visibility push(default) +extern __declspec(dllimport) native_tls_key_t ruby_current_ec_key; +#pragma GCC visibility pop + +#define RUBY_VM_THREAD_MODEL 2 +#define VM_INSN_INFO_TABLE_IMPL 2 +#define RUBY_NSIG NSIG +#define RUBY_SIGCHLD (0) +#define SIGCHLD_LOSSY (0) +#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY) +#define RB_ALTSTACK_INIT(var,altstack) +#define RB_ALTSTACK_FREE(var) +#define RB_ALTSTACK(var) (0) +void rb_vm_encoded_insn_data_table_init(void); +typedef unsigned long rb_num_t; +typedef signed long rb_snum_t; +enum ruby_tag_type { + RUBY_TAG_NONE = 0x0, + RUBY_TAG_RETURN = 0x1, + RUBY_TAG_BREAK = 0x2, + RUBY_TAG_NEXT = 0x3, + RUBY_TAG_RETRY = 0x4, + RUBY_TAG_REDO = 0x5, + RUBY_TAG_RAISE = 0x6, + RUBY_TAG_THROW = 0x7, + RUBY_TAG_FATAL = 0x8, + RUBY_TAG_MASK = 0xf +}; +#define TAG_NONE RUBY_TAG_NONE +#define TAG_RETURN RUBY_TAG_RETURN +#define TAG_BREAK RUBY_TAG_BREAK +#define TAG_NEXT RUBY_TAG_NEXT +#define TAG_RETRY RUBY_TAG_RETRY +#define TAG_REDO RUBY_TAG_REDO +#define TAG_RAISE RUBY_TAG_RAISE +#define TAG_THROW RUBY_TAG_THROW +#define TAG_FATAL RUBY_TAG_FATAL +#define TAG_MASK RUBY_TAG_MASK +enum ruby_vm_throw_flags { + VM_THROW_NO_ESCAPE_FLAG = 0x8000, + VM_THROW_STATE_MASK = 0xff +}; +struct rb_thread_struct; +struct rb_control_frame_struct; +typedef struct rb_compile_option_struct rb_compile_option_t; +union ic_serial_entry { + rb_serial_t raw; + VALUE data[2]; +}; +struct iseq_inline_constant_cache_entry { + VALUE flags; + VALUE value; + union ic_serial_entry ic_serial; + const rb_cref_t *ic_cref; +}; +__extension__ _Static_assert((__builtin_offsetof(struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= sizeof(struct RObject), "sizeof_iseq_inline_constant_cache_entry" ": " "(offsetof(struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= sizeof(struct RObject)"); +#define GET_IC_SERIAL(ice) (ice)->ic_serial.raw +#define SET_IC_SERIAL(ice,v) (ice)->ic_serial.raw = (v) +struct iseq_inline_constant_cache { + struct iseq_inline_constant_cache_entry *entry; + unsigned get_insn_idx; +}; +struct iseq_inline_iv_cache_entry { + struct rb_iv_index_tbl_entry *entry; +}; +struct iseq_inline_cvar_cache_entry { + struct rb_cvar_class_tbl_entry *entry; +}; +union iseq_inline_storage_entry { + struct { + struct rb_thread_struct *running_thread; + VALUE value; + } once; + struct iseq_inline_constant_cache ic_cache; + struct iseq_inline_iv_cache_entry iv_cache; +}; +struct rb_calling_info { + const struct rb_callinfo *ci; + const struct rb_callcache *cc; + VALUE block_handler; + VALUE recv; + int argc; + int kw_splat; +}; +struct rb_execution_context_struct; +#define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj) +#define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type)) +typedef struct rb_iseq_location_struct { + VALUE pathobj; + VALUE base_label; + VALUE label; + VALUE first_lineno; + int node_id; + rb_code_location_t code_location; +} rb_iseq_location_t; +#define PATHOBJ_PATH 0 +#define PATHOBJ_REALPATH 1 +static inline VALUE +pathobj_path(VALUE pathobj) +{ + if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((pathobj), (RUBY_T_STRING)) : (RB_TYPE_P)((pathobj), (RUBY_T_STRING)))) { + return pathobj; + } + else { + ((void)0); + return RARRAY_AREF(pathobj, 0); + } +} +static inline VALUE +pathobj_realpath(VALUE pathobj) +{ + if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((pathobj), (RUBY_T_STRING)) : (RB_TYPE_P)((pathobj), (RUBY_T_STRING)))) { + return pathobj; + } + else { + ((void)0); + return RARRAY_AREF(pathobj, 1); + } +} +struct rb_mjit_unit; +typedef struct { rb_darray_meta_t meta; struct yjit_block_version * data[]; } * rb_yjit_block_array_t; +typedef struct { rb_darray_meta_t meta; rb_yjit_block_array_t data[]; } * rb_yjit_block_array_array_t; +struct rb_iseq_constant_body { + enum iseq_type { + ISEQ_TYPE_TOP, + ISEQ_TYPE_METHOD, + ISEQ_TYPE_BLOCK, + ISEQ_TYPE_CLASS, + ISEQ_TYPE_RESCUE, + ISEQ_TYPE_ENSURE, + ISEQ_TYPE_EVAL, + ISEQ_TYPE_MAIN, + ISEQ_TYPE_PLAIN + } type; + unsigned int iseq_size; + VALUE *iseq_encoded; + struct { + struct { + unsigned int has_lead : 1; + unsigned int has_opt : 1; + unsigned int has_rest : 1; + unsigned int has_post : 1; + unsigned int has_kw : 1; + unsigned int has_kwrest : 1; + unsigned int has_block : 1; + unsigned int ambiguous_param0 : 1; + unsigned int accepts_no_kwarg : 1; + unsigned int ruby2_keywords: 1; + } flags; + unsigned int size; + int lead_num; + int opt_num; + int rest_start; + int post_start; + int post_num; + int block_start; + const VALUE *opt_table; + const struct rb_iseq_param_keyword { + int num; + int required_num; + int bits_start; + int rest_start; + const ID *table; + VALUE *default_values; + } *keyword; + } param; + rb_iseq_location_t location; + struct iseq_insn_info { + const struct iseq_insn_info_entry *body; + unsigned int *positions; + unsigned int size; + struct succ_index_table *succ_index_table; + } insns_info; + const ID *local_table; + struct iseq_catch_table *catch_table; + const struct rb_iseq_struct *parent_iseq; + struct rb_iseq_struct *local_iseq; + union iseq_inline_storage_entry *is_entries; + struct rb_call_data *call_data; + struct { + rb_snum_t flip_count; + VALUE script_lines; + VALUE coverage; + VALUE pc2branchindex; + VALUE *original_iseq; + } variable; + unsigned int local_table_size; + unsigned int is_size; + unsigned int ci_size; + unsigned int stack_max; + char catch_except_p; + _Bool builtin_inline_p; + struct rb_id_table *outer_variables; + const rb_iseq_t *mandatory_only_iseq; + VALUE (*jit_func)(struct rb_execution_context_struct *, + struct rb_control_frame_struct *); + long unsigned total_calls; + struct rb_mjit_unit *jit_unit; + rb_yjit_block_array_array_t yjit_blocks; +}; +struct rb_iseq_struct { + VALUE flags; + VALUE wrapper; + struct rb_iseq_constant_body *body; + union { + struct iseq_compile_data *compile_data; + struct { + VALUE obj; + int index; + } loader; + struct { + struct rb_hook_list_struct *local_hooks; + rb_event_flag_t global_trace_events; + } exec; + } aux; +}; +#define EXTSTATIC 0 +#define USE_LAZY_LOAD 0 +static inline const rb_iseq_t * +rb_iseq_check(const rb_iseq_t *iseq) +{ + return iseq; +} +static inline const rb_iseq_t * +def_iseq_ptr(rb_method_definition_t *def) +{ + return rb_iseq_check(def->body.iseq.iseqptr); +} +enum ruby_special_exceptions { + ruby_error_reenter, + ruby_error_nomemory, + ruby_error_sysstack, + ruby_error_stackfatal, + ruby_error_stream_closed, + ruby_special_error_count +}; +enum ruby_basic_operators { + BOP_PLUS, + BOP_MINUS, + BOP_MULT, + BOP_DIV, + BOP_MOD, + BOP_EQ, + BOP_EQQ, + BOP_LT, + BOP_LE, + BOP_LTLT, + BOP_AREF, + BOP_ASET, + BOP_LENGTH, + BOP_SIZE, + BOP_EMPTY_P, + BOP_NIL_P, + BOP_SUCC, + BOP_GT, + BOP_GE, + BOP_NOT, + BOP_NEQ, + BOP_MATCH, + BOP_FREEZE, + BOP_UMINUS, + BOP_MAX, + BOP_MIN, + BOP_CALL, + BOP_AND, + BOP_OR, + BOP_LAST_ +}; +#define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr)) +struct rb_vm_struct; +typedef void rb_vm_at_exit_func(struct rb_vm_struct*); +typedef struct rb_at_exit_list { + rb_vm_at_exit_func *func; + struct rb_at_exit_list *next; +} rb_at_exit_list; +struct rb_objspace; +struct rb_objspace *rb_objspace_alloc(void); +void rb_objspace_free(struct rb_objspace *); +void rb_objspace_call_finalizer(struct rb_objspace *); +typedef struct rb_hook_list_struct { + struct rb_event_hook_struct *hooks; + rb_event_flag_t events; + unsigned int running; + _Bool need_clean; + _Bool is_local; +} rb_hook_list_t; +typedef const struct rb_builtin_function *RB_BUILTIN; +typedef struct rb_vm_struct { + VALUE self; + struct { + struct list_head set; + unsigned int cnt; + unsigned int blocking_cnt; + struct rb_ractor_struct *main_ractor; + struct rb_thread_struct *main_thread; + struct { + rb_nativethread_lock_t lock; + struct rb_ractor_struct *lock_owner; + unsigned int lock_rec; + _Bool barrier_waiting; + unsigned int barrier_cnt; + rb_nativethread_cond_t barrier_cond; + rb_nativethread_cond_t terminate_cond; + _Bool terminate_waiting; + } sync; + } ractor; + rb_serial_t fork_gen; + rb_nativethread_lock_t waitpid_lock; + struct list_head waiting_pids; + struct list_head waiting_grps; + struct list_head waiting_fds; + volatile int ubf_async_safe; + unsigned int running: 1; + unsigned int thread_abort_on_exception: 1; + unsigned int thread_report_on_exception: 1; + unsigned int thread_ignore_deadlock: 1; + VALUE mark_object_ary; + const VALUE special_exceptions[ruby_special_error_count]; + VALUE top_self; + VALUE load_path; + VALUE load_path_snapshot; + VALUE load_path_check_cache; + VALUE expanded_load_path; + VALUE loaded_features; + VALUE loaded_features_snapshot; + VALUE loaded_features_realpaths; + VALUE loaded_features_realpath_map; + struct st_table *loaded_features_index; + struct st_table *loading_table; + struct { + VALUE cmd[23]; + } trap_list; + struct st_table *ensure_rollback_table; + struct rb_postponed_job_struct *postponed_job_buffer; + rb_atomic_t postponed_job_index; + int src_encoding_index; + struct list_head workqueue; + rb_nativethread_lock_t workqueue_lock; + VALUE orig_progname, progname; + VALUE coverages, me2counter; + int coverage_mode; + st_table * defined_module_hash; + struct rb_objspace *objspace; + rb_at_exit_list *at_exit; + st_table *frozen_strings; + const struct rb_builtin_function *builtin_function_table; + int builtin_inline_index; + struct rb_id_table *negative_cme_table; + st_table *overloaded_cme_table; +#define VM_GLOBAL_CC_CACHE_TABLE_SIZE 1023 + const struct rb_callcache *global_cc_cache_table[1023]; + uint32_t clock; + struct { + size_t thread_vm_stack_size; + size_t thread_machine_stack_size; + size_t fiber_vm_stack_size; + size_t fiber_machine_stack_size; + } default_params; + short redefined_flag[BOP_LAST_]; +} rb_vm_t; +#define RUBY_VM_SIZE_ALIGN 4096 +#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE)) +#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE)) +#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE)) +#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) +#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE)) +#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE)) +#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE)) +#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) +#define INTEGER_REDEFINED_OP_FLAG (1 << 0) +#define FLOAT_REDEFINED_OP_FLAG (1 << 1) +#define STRING_REDEFINED_OP_FLAG (1 << 2) +#define ARRAY_REDEFINED_OP_FLAG (1 << 3) +#define HASH_REDEFINED_OP_FLAG (1 << 4) +#define SYMBOL_REDEFINED_OP_FLAG (1 << 6) +#define TIME_REDEFINED_OP_FLAG (1 << 7) +#define REGEXP_REDEFINED_OP_FLAG (1 << 8) +#define NIL_REDEFINED_OP_FLAG (1 << 9) +#define TRUE_REDEFINED_OP_FLAG (1 << 10) +#define FALSE_REDEFINED_OP_FLAG (1 << 11) +#define PROC_REDEFINED_OP_FLAG (1 << 12) +#define BASIC_OP_UNREDEFINED_P(op,klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0)) +#define VM_DEBUG_BP_CHECK 0 +#define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0) +struct rb_captured_block { + VALUE self; + const VALUE *ep; + union { + const rb_iseq_t *iseq; + const struct vm_ifunc *ifunc; + VALUE val; + } code; +}; +enum rb_block_handler_type { + block_handler_type_iseq, + block_handler_type_ifunc, + block_handler_type_symbol, + block_handler_type_proc +}; +enum rb_block_type { + block_type_iseq, + block_type_ifunc, + block_type_symbol, + block_type_proc +}; +struct rb_block { + union { + struct rb_captured_block captured; + VALUE symbol; + VALUE proc; + } as; + enum rb_block_type type; +}; +typedef struct rb_control_frame_struct { + const VALUE *pc; + VALUE *sp; + const rb_iseq_t *iseq; + VALUE self; + const VALUE *ep; + const void *block_code; + VALUE *__bp__; + void *jit_return; +} rb_control_frame_t; +extern const rb_data_type_t ruby_threadptr_data_type; +static inline struct rb_thread_struct * +rb_thread_ptr(VALUE thval) +{ + return (struct rb_thread_struct *)rb_check_typeddata(thval, &ruby_threadptr_data_type); +} +enum rb_thread_status { + THREAD_RUNNABLE, + THREAD_STOPPED, + THREAD_STOPPED_FOREVER, + THREAD_KILLED +}; +typedef jmp_buf rb_jmpbuf_t; +struct rb_vm_tag { + VALUE tag; + VALUE retval; + rb_jmpbuf_t buf; + struct rb_vm_tag *prev; + enum ruby_tag_type state; + unsigned int lock_rec; +}; +__extension__ _Static_assert(__builtin_offsetof(struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0"); +__extension__ _Static_assert(__builtin_offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag), "rb_vm_tag_buf_end" ": " "offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag)"); +struct rb_unblock_callback { + rb_unblock_function_t *func; + void *arg; +}; +struct rb_mutex_struct; +typedef struct rb_ensure_entry { + VALUE marker; + VALUE (*e_proc)(VALUE); + VALUE data2; +} rb_ensure_entry_t; +typedef struct rb_ensure_list { + struct rb_ensure_list *next; + struct rb_ensure_entry entry; +} rb_ensure_list_t; +typedef char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) * 2 + 3]; +typedef struct rb_fiber_struct rb_fiber_t; +struct rb_waiting_list { + struct rb_waiting_list *next; + struct rb_thread_struct *thread; + struct rb_fiber_struct *fiber; +}; +struct rb_execution_context_struct { + VALUE *vm_stack; + size_t vm_stack_size; + rb_control_frame_t *cfp; + struct rb_vm_tag *tag; + rb_atomic_t interrupt_flag; + rb_atomic_t interrupt_mask; + uint32_t checked_clock; + rb_fiber_t *fiber_ptr; + struct rb_thread_struct *thread_ptr; + struct rb_id_table *local_storage; + VALUE local_storage_recursive_hash; + VALUE local_storage_recursive_hash_for_trace; + const VALUE *root_lep; + VALUE root_svar; + rb_ensure_list_t *ensure_list; + struct rb_trace_arg_struct *trace_arg; + VALUE errinfo; + VALUE passed_block_handler; + uint8_t raised_flag; + enum method_missing_reason method_missing_reason : 8; + VALUE private_const_reference; + struct { + VALUE *stack_start; + VALUE *stack_end; + size_t stack_maxsize; + __declspec(align(8)) jmp_buf regs; + } machine; +}; +typedef struct rb_execution_context_struct rb_execution_context_t; +#define rb_execution_context_t rb_execution_context_t +#define VM_CORE_H_EC_DEFINED 1 +void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size); +void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size); +void rb_ec_clear_vm_stack(rb_execution_context_t *ec); +struct rb_ext_config { + _Bool ractor_safe; +}; +typedef struct rb_ractor_struct rb_ractor_t; +typedef struct rb_thread_struct { + struct list_node lt_node; + VALUE self; + rb_ractor_t *ractor; + rb_vm_t *vm; + rb_execution_context_t *ec; + VALUE last_status; + struct rb_calling_info *calling; + VALUE top_self; + VALUE top_wrapper; + rb_nativethread_id_t thread_id; + enum rb_thread_status status : 2; + unsigned int to_kill : 1; + unsigned int abort_on_exception: 1; + unsigned int report_on_exception: 1; + unsigned int pending_interrupt_queue_checked: 1; + int8_t priority; + uint32_t running_time_us; + native_thread_data_t native_thread_data; + void *blocking_region_buffer; + VALUE thgroup; + VALUE value; + VALUE pending_interrupt_queue; + VALUE pending_interrupt_mask_stack; + rb_nativethread_lock_t interrupt_lock; + struct rb_unblock_callback unblock; + VALUE locking_mutex; + struct rb_mutex_struct *keeping_mutexes; + struct rb_waiting_list *join_list; + union { + struct { + VALUE proc; + VALUE args; + int kw_splat; + } proc; + struct { + VALUE (*func)(void *); + void *arg; + } func; + } invoke_arg; + enum thread_invoke_type { + thread_invoke_type_none = 0, + thread_invoke_type_proc, + thread_invoke_type_ractor_proc, + thread_invoke_type_func + } invoke_type; + VALUE stat_insn_usage; + rb_fiber_t *root_fiber; + VALUE scheduler; + unsigned blocking; + VALUE name; + struct rb_ext_config ext_config; +} rb_thread_t; +typedef enum { + VM_DEFINECLASS_TYPE_CLASS = 0x00, + VM_DEFINECLASS_TYPE_SINGLETON_CLASS = 0x01, + VM_DEFINECLASS_TYPE_MODULE = 0x02, + VM_DEFINECLASS_TYPE_MASK = 0x07 +} rb_vm_defineclass_type_t; +#define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK) +#define VM_DEFINECLASS_FLAG_SCOPED 0x08 +#define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10 +#define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED) +#define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS) +#pragma GCC visibility push(default) +rb_iseq_t *rb_iseq_new (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum iseq_type); +rb_iseq_t *rb_iseq_new_top (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent); +rb_iseq_t *rb_iseq_new_main (const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent, int opt); +rb_iseq_t *rb_iseq_new_eval (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, int isolated_depth); +rb_iseq_t *rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, int isolated_depth, + enum iseq_type, const rb_compile_option_t*); +struct iseq_link_anchor; +struct rb_iseq_new_with_callback_callback_func { + VALUE flags; + VALUE reserved; + void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *); + const void *data; +}; +static inline struct rb_iseq_new_with_callback_callback_func * +rb_iseq_new_with_callback_new_callback( + void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *), const void *ptr) +{ + VALUE memo = rb_imemo_new(imemo_ifunc, (VALUE)func, (VALUE)ptr, ((VALUE)RUBY_Qundef), ((VALUE)RUBY_Qfalse)); + return (struct rb_iseq_new_with_callback_callback_func *)memo; +} +rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_callback_func * ifunc, + VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, + const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*); +VALUE rb_iseq_disasm(const rb_iseq_t *iseq); +int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child); +VALUE rb_iseq_coverage(const rb_iseq_t *iseq); +extern __declspec(dllimport) VALUE rb_cISeq; +extern __declspec(dllimport) VALUE rb_cRubyVM; +extern __declspec(dllimport) VALUE rb_mRubyVMFrozenCore; +extern __declspec(dllimport) VALUE rb_block_param_proxy; +#pragma GCC visibility pop +#define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr)) +typedef struct { + const struct rb_block block; + unsigned int is_from_method: 1; + unsigned int is_lambda: 1; + unsigned int is_isolated: 1; +} rb_proc_t; +#pragma GCC visibility push(default) +VALUE rb_proc_isolate(VALUE self); +VALUE rb_proc_isolate_bang(VALUE self); +VALUE rb_proc_ractor_make_shareable(VALUE self); +#pragma GCC visibility pop +typedef struct { + VALUE flags; + rb_iseq_t *iseq; + const VALUE *ep; + const VALUE *env; + unsigned int env_size; +} rb_env_t; +extern const rb_data_type_t ruby_binding_data_type; +#define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr)) +typedef struct { + const struct rb_block block; + const VALUE pathobj; + unsigned short first_lineno; +} rb_binding_t; +enum vm_check_match_type { + VM_CHECKMATCH_TYPE_WHEN = 1, + VM_CHECKMATCH_TYPE_CASE = 2, + VM_CHECKMATCH_TYPE_RESCUE = 3 +}; +#define VM_CHECKMATCH_TYPE_MASK 0x03 +#define VM_CHECKMATCH_ARRAY 0x04 +enum vm_special_object_type { + VM_SPECIAL_OBJECT_VMCORE = 1, + VM_SPECIAL_OBJECT_CBASE, + VM_SPECIAL_OBJECT_CONST_BASE +}; +enum vm_svar_index { + VM_SVAR_LASTLINE = 0, + VM_SVAR_BACKREF = 1, + VM_SVAR_EXTRA_START = 2, + VM_SVAR_FLIPFLOP_START = 2 +}; +typedef struct iseq_inline_constant_cache *IC; +typedef struct iseq_inline_iv_cache_entry *IVC; +typedef struct iseq_inline_cvar_cache_entry *ICVARC; +typedef union iseq_inline_storage_entry *ISE; +typedef const struct rb_callinfo *CALL_INFO; +typedef const struct rb_callcache *CALL_CACHE; +typedef struct rb_call_data *CALL_DATA; +typedef VALUE CDHASH; +typedef rb_control_frame_t * + (__attribute__ ((__fastcall__)) *rb_insn_func_t)(rb_execution_context_t *, rb_control_frame_t *); +#define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag)) +#define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask)) +#define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01) +#define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03) +#define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01) +enum { + VM_FRAME_MAGIC_METHOD = 0x11110001, + VM_FRAME_MAGIC_BLOCK = 0x22220001, + VM_FRAME_MAGIC_CLASS = 0x33330001, + VM_FRAME_MAGIC_TOP = 0x44440001, + VM_FRAME_MAGIC_CFUNC = 0x55550001, + VM_FRAME_MAGIC_IFUNC = 0x66660001, + VM_FRAME_MAGIC_EVAL = 0x77770001, + VM_FRAME_MAGIC_RESCUE = 0x78880001, + VM_FRAME_MAGIC_DUMMY = 0x79990001, + VM_FRAME_MAGIC_MASK = 0x7fff0001, + VM_FRAME_FLAG_FINISH = 0x0020, + VM_FRAME_FLAG_BMETHOD = 0x0040, + VM_FRAME_FLAG_CFRAME = 0x0080, + VM_FRAME_FLAG_LAMBDA = 0x0100, + VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM = 0x0200, + VM_FRAME_FLAG_CFRAME_KW = 0x0400, + VM_FRAME_FLAG_PASSED = 0x0800, + VM_ENV_FLAG_LOCAL = 0x0002, + VM_ENV_FLAG_ESCAPED = 0x0004, + VM_ENV_FLAG_WB_REQUIRED = 0x0008, + VM_ENV_FLAG_ISOLATED = 0x0010, +}; +#define VM_ENV_DATA_SIZE ( 3) +#define VM_ENV_DATA_INDEX_ME_CREF (-2) +#define VM_ENV_DATA_INDEX_SPECVAL (-1) +#define VM_ENV_DATA_INDEX_FLAGS ( 0) +#define VM_ENV_DATA_INDEX_ENV ( 1) +#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE) +static inline void VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value); +static inline void +VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag) +{ + VALUE flags = ep[( 0)]; + ((void)0); + VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag); +} +static inline void +VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag) +{ + VALUE flags = ep[( 0)]; + ((void)0); + VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag); +} +static inline unsigned long +VM_ENV_FLAGS(const VALUE *ep, long flag) +{ + VALUE flags = ep[( 0)]; + ((void)0); + return flags & flag; +} +static inline unsigned long +VM_FRAME_TYPE(const rb_control_frame_t *cfp) +{ + return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK); +} +static inline int +VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp) +{ + return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0; +} +static inline int +VM_FRAME_CFRAME_KW_P(const rb_control_frame_t *cfp) +{ + return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_KW) != 0; +} +static inline int +VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp) +{ + return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0; +} +static inline int +VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp) +{ + return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0; +} +static inline int +rb_obj_is_iseq(VALUE iseq) +{ + return imemo_type_p(iseq, imemo_iseq); +} +static inline int +VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp) +{ + int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0; + ((void)0); + return cframe_p; +} +static inline int +VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp) +{ + return !VM_FRAME_CFRAME_P(cfp); +} +#define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC) +#define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep) +#define VM_BLOCK_HANDLER_NONE 0 +static inline int +VM_ENV_LOCAL_P(const VALUE *ep) +{ + return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0; +} +static inline const VALUE * +VM_ENV_PREV_EP(const VALUE *ep) +{ + ((void)0); + return ((void *)(((ep[(-1)])) & ~0x03)); +} +static inline VALUE +VM_ENV_BLOCK_HANDLER(const VALUE *ep) +{ + ((void)0); + return ep[(-1)]; +} +static inline int +VM_ENV_ESCAPED_P(const VALUE *ep) +{ + ((void)0); + return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0; +} +__attribute__((__nonnull__ (1))) +static inline VALUE +VM_ENV_ENVVAL(const VALUE *ep) +{ + VALUE envval = ep[( 1)]; + ((void)0); + ((void)0); + return envval; +} +__attribute__((__nonnull__ (1))) +static inline const rb_env_t * +VM_ENV_ENVVAL_PTR(const VALUE *ep) +{ + return (const rb_env_t *)VM_ENV_ENVVAL(ep); +} +static inline const rb_env_t * +vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq) +{ + rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq); + env->env_size = env_size; + env_ep[( 1)] = (VALUE)env; + return env; +} +static inline void +VM_FORCE_WRITE(const VALUE *ptr, VALUE v) +{ + *((VALUE *)ptr) = v; +} +static inline void +VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value) +{ + ((void)0); + VM_FORCE_WRITE(ptr, special_const_value); +} +static inline void +VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v) +{ + ((void)0); + VM_FORCE_WRITE(&ep[index], v); +} +const VALUE *rb_vm_ep_local_ep(const VALUE *ep); +const VALUE *rb_vm_proc_local_ep(VALUE proc); +void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep); +void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src); +VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp); +#define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1) +#define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1) +#define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp)) +static inline const rb_control_frame_t * +RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec) +{ + return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size); +} +static inline int +RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp) +{ + return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp)); +} +static inline int +VM_BH_ISEQ_BLOCK_P(VALUE block_handler) +{ + if ((block_handler & 0x03) == 0x01) { + return 1; + } + else { + return 0; + } +} +static inline VALUE +VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured) +{ + VALUE block_handler = ((VALUE)(captured) | (0x01)); + ((void)0); + return block_handler; +} +static inline const struct rb_captured_block * +VM_BH_TO_ISEQ_BLOCK(VALUE block_handler) +{ + struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03)); + ((void)0); + return captured; +} +static inline int +VM_BH_IFUNC_P(VALUE block_handler) +{ + if ((block_handler & 0x03) == 0x03) { + return 1; + } + else { + return 0; + } +} +static inline VALUE +VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured) +{ + VALUE block_handler = ((VALUE)(captured) | (0x03)); + ((void)0); + return block_handler; +} +static inline const struct rb_captured_block * +VM_BH_TO_IFUNC_BLOCK(VALUE block_handler) +{ + struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03)); + ((void)0); + return captured; +} +static inline const struct rb_captured_block * +VM_BH_TO_CAPT_BLOCK(VALUE block_handler) +{ + struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03)); + ((void)0); + return captured; +} +static inline enum rb_block_handler_type +vm_block_handler_type(VALUE block_handler) +{ + if (VM_BH_ISEQ_BLOCK_P(block_handler)) { + return block_handler_type_iseq; + } + else if (VM_BH_IFUNC_P(block_handler)) { + return block_handler_type_ifunc; + } + else if (RB_SYMBOL_P(block_handler)) { + return block_handler_type_symbol; + } + else { + ((void)0); + return block_handler_type_proc; + } +} +static inline void +vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler) +{ + ((void)0); +} +static inline int +vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler) +{ + return ((VALUE) cfp->block_code) == block_handler; +} +static inline enum rb_block_type +vm_block_type(const struct rb_block *block) +{ + return block->type; +} +static inline void +vm_block_type_set(const struct rb_block *block, enum rb_block_type type) +{ + struct rb_block *mb = (struct rb_block *)block; + mb->type = type; +} +static inline const struct rb_block * +vm_proc_block(VALUE procval) +{ + ((void)0); + return &((rb_proc_t *)(((struct RTypedData *)(procval))->data))->block; +} +static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block); +static inline const VALUE *vm_block_ep(const struct rb_block *block); +static inline const rb_iseq_t * +vm_proc_iseq(VALUE procval) +{ + return vm_block_iseq(vm_proc_block(procval)); +} +static inline const VALUE * +vm_proc_ep(VALUE procval) +{ + return vm_block_ep(vm_proc_block(procval)); +} +static inline const rb_iseq_t * +vm_block_iseq(const struct rb_block *block) +{ + switch (vm_block_type(block)) { + case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq); + case block_type_proc: return vm_proc_iseq(block->as.proc); + case block_type_ifunc: + case block_type_symbol: return ((void*)0); + } + __builtin_unreachable(); + return ((void*)0); +} +static inline const VALUE * +vm_block_ep(const struct rb_block *block) +{ + switch (vm_block_type(block)) { + case block_type_iseq: + case block_type_ifunc: return block->as.captured.ep; + case block_type_proc: return vm_proc_ep(block->as.proc); + case block_type_symbol: return ((void*)0); + } + __builtin_unreachable(); + return ((void*)0); +} +static inline VALUE +vm_block_self(const struct rb_block *block) +{ + switch (vm_block_type(block)) { + case block_type_iseq: + case block_type_ifunc: + return block->as.captured.self; + case block_type_proc: + return vm_block_self(vm_proc_block(block->as.proc)); + case block_type_symbol: + return ((VALUE)RUBY_Qundef); + } + __builtin_unreachable(); + return ((VALUE)RUBY_Qundef); +} +static inline VALUE +VM_BH_TO_SYMBOL(VALUE block_handler) +{ + ((void)0); + return block_handler; +} +static inline VALUE +VM_BH_FROM_SYMBOL(VALUE symbol) +{ + ((void)0); + return symbol; +} +static inline VALUE +VM_BH_TO_PROC(VALUE block_handler) +{ + ((void)0); + return block_handler; +} +static inline VALUE +VM_BH_FROM_PROC(VALUE procval) +{ + ((void)0); + return procval; +} +VALUE rb_thread_alloc(VALUE klass); +VALUE rb_binding_alloc(VALUE klass); +VALUE rb_proc_alloc(VALUE klass); +VALUE rb_proc_dup(VALUE self); +extern void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp); +extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc); +extern void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp +); +#define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp) +#define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp)) +void rb_vm_bugreport(const void *); +typedef void (*ruby_sighandler_t)(int); +__attribute__((__format__(printf, 4, 5))) +__declspec(noreturn) void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *, const char *fmt, ...); +#pragma GCC visibility push(default) +VALUE rb_iseq_eval(const rb_iseq_t *iseq); +VALUE rb_iseq_eval_main(const rb_iseq_t *iseq); +VALUE rb_iseq_path(const rb_iseq_t *iseq); +VALUE rb_iseq_realpath(const rb_iseq_t *iseq); +#pragma GCC visibility pop +VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath); +void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath); +int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp); +void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause); +VALUE rb_vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, int argc, const VALUE *argv, int kw_splat, VALUE block_handler); +VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda); +static inline VALUE +rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass) +{ + return rb_vm_make_proc_lambda(ec, captured, klass, 0); +} +static inline VALUE +rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass) +{ + return rb_vm_make_proc_lambda(ec, captured, klass, 1); +} +VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp); +VALUE rb_vm_env_local_variables(const rb_env_t *env); +const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env); +const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars); +void rb_vm_inc_const_missing_count(void); +VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc, + const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat); +static void rb_vm_pop_frame(rb_execution_context_t *ec); +void rb_gvl_destroy(rb_global_vm_lock_t *gvl); +void rb_thread_start_timer_thread(void); +void rb_thread_stop_timer_thread(void); +void rb_thread_reset_timer_thread(void); +void rb_thread_wakeup_timer_thread(int); +static inline void +rb_vm_living_threads_init(rb_vm_t *vm) +{ + list_head_init(&vm->waiting_fds); + list_head_init(&vm->waiting_pids); + list_head_init(&vm->workqueue); + list_head_init(&vm->waiting_grps); + list_head_init(&vm->ractor.set); +} +typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE); +rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp); +rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp); +int rb_vm_get_sourceline(const rb_control_frame_t *); +void rb_vm_stack_to_heap(rb_execution_context_t *ec); +void ruby_thread_init_stack(rb_thread_t *th); +rb_thread_t * ruby_thread_from_native(void); +int ruby_thread_set_native(rb_thread_t *th); +int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp); +void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp); +static VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler); +void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg); +#define rb_vm_register_special_exception(sp,e,m) rb_vm_register_special_exception_str(sp, e, rb_usascii_str_new_static((m), (long)rb_strlen_lit(m))) +void rb_gc_mark_machine_stack(const rb_execution_context_t *ec); +void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr); +static const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp); +#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack] +#define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) do { STATIC_ASSERT(sizeof_sp, sizeof(*(sp)) == sizeof(VALUE)); STATIC_ASSERT(sizeof_cfp, sizeof(*(cfp)) == sizeof(rb_control_frame_t)); const struct rb_control_frame_struct *bound = (void *)&(sp)[(margin)]; if (UNLIKELY((cfp) <= &bound[1])) { vm_stackoverflow(); } } while (0) +#define CHECK_VM_STACK_OVERFLOW(cfp,margin) CHECK_VM_STACK_OVERFLOW0((cfp), (cfp)->sp, (margin)) +VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr); +rb_execution_context_t *rb_vm_main_ractor_ec(rb_vm_t *vm); +#pragma GCC visibility push(default) +extern __declspec(dllimport) struct rb_ractor_struct *ruby_single_main_ractor; +extern __declspec(dllimport) rb_vm_t *ruby_current_vm_ptr; +extern __declspec(dllimport) rb_event_flag_t ruby_vm_event_flags; +extern __declspec(dllimport) rb_event_flag_t ruby_vm_event_enabled_global_flags; +extern __declspec(dllimport) unsigned int ruby_vm_event_local_num; +#pragma GCC visibility pop +#define GET_VM() rb_current_vm() +#define GET_RACTOR() rb_current_ractor() +#define GET_THREAD() rb_current_thread() +#define GET_EC() rb_current_execution_context(true) +static inline rb_thread_t * +rb_ec_thread_ptr(const rb_execution_context_t *ec) +{ + return ec->thread_ptr; +} +static inline rb_ractor_t * +rb_ec_ractor_ptr(const rb_execution_context_t *ec) +{ + const rb_thread_t *th = rb_ec_thread_ptr(ec); + if (th) { + ((void)0); + return th->ractor; + } + else { + return ((void*)0); + } +} +static inline rb_vm_t * +rb_ec_vm_ptr(const rb_execution_context_t *ec) +{ + const rb_thread_t *th = rb_ec_thread_ptr(ec); + if (th) { + return th->vm; + } + else { + return ((void*)0); + } +} +static inline rb_execution_context_t * +rb_current_execution_context(_Bool expect_ec) +{ + rb_execution_context_t *ec = native_tls_get(ruby_current_ec_key); + ((void)0); + return ec; +} +static inline rb_thread_t * +rb_current_thread(void) +{ + const rb_execution_context_t *ec = rb_current_execution_context(1); + return rb_ec_thread_ptr(ec); +} +static inline rb_ractor_t * +rb_current_ractor(void) +{ + if (ruby_single_main_ractor) { + return ruby_single_main_ractor; + } + else { + const rb_execution_context_t *ec = rb_current_execution_context(1); + return rb_ec_ractor_ptr(ec); + } +} +static inline rb_vm_t * +rb_current_vm(void) +{ + return ruby_current_vm_ptr; +} +void rb_ec_vm_lock_rec_release(const rb_execution_context_t *ec, + unsigned int recorded_lock_rec, + unsigned int current_lock_rec); +static inline unsigned int +rb_ec_vm_lock_rec(const rb_execution_context_t *ec) +{ + rb_vm_t *vm = rb_ec_vm_ptr(ec); + if (vm->ractor.sync.lock_owner != rb_ec_ractor_ptr(ec)) { + return 0; + } + else { + return vm->ractor.sync.lock_rec; + } +} +enum { + TIMER_INTERRUPT_MASK = 0x01, + PENDING_INTERRUPT_MASK = 0x02, + POSTPONED_JOB_INTERRUPT_MASK = 0x04, + TRAP_INTERRUPT_MASK = 0x08, + TERMINATE_INTERRUPT_MASK = 0x10, + VM_BARRIER_INTERRUPT_MASK = 0x20, +}; +#define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK) +#define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK) +#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK) +#define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK) +#define RUBY_VM_SET_TERMINATE_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TERMINATE_INTERRUPT_MASK) +#define RUBY_VM_SET_VM_BARRIER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, VM_BARRIER_INTERRUPT_MASK) +#define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK)) +static inline _Bool +RUBY_VM_INTERRUPTED_ANY(rb_execution_context_t *ec) +{ + uint32_t current_clock = rb_ec_vm_ptr(ec)->clock; + if (current_clock != ec->checked_clock) { + ec->checked_clock = current_clock; + rbimpl_atomic_or(&((ec)->interrupt_flag), (TIMER_INTERRUPT_MASK)); + } + return ec->interrupt_flag & ~(ec)->interrupt_mask; +} +VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt); +int rb_signal_buff_size(void); +int rb_signal_exec(rb_thread_t *th, int sig); +void rb_threadptr_check_signal(rb_thread_t *mth); +void rb_threadptr_signal_raise(rb_thread_t *th, int sig); +void rb_threadptr_signal_exit(rb_thread_t *th); +int rb_threadptr_execute_interrupts(rb_thread_t *, int); +void rb_threadptr_interrupt(rb_thread_t *th); +void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th); +void rb_threadptr_pending_interrupt_clear(rb_thread_t *th); +void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v); +VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec); +void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo); +void rb_execution_context_update(const rb_execution_context_t *ec); +void rb_execution_context_mark(const rb_execution_context_t *ec); +void rb_fiber_close(rb_fiber_t *fib); +void Init_native_thread(rb_thread_t *th); +int rb_vm_check_ints_blocking(rb_execution_context_t *ec); +void rb_vm_cond_wait(rb_vm_t *vm, rb_nativethread_cond_t *cond); +void rb_vm_cond_timedwait(rb_vm_t *vm, rb_nativethread_cond_t *cond, unsigned long msec); +#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec) +static inline void +rb_vm_check_ints(rb_execution_context_t *ec) +{ + ((void)0); + if ((__builtin_expect(!!(RUBY_VM_INTERRUPTED_ANY(ec)), 0))) { + rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0); + } +} +struct rb_trace_arg_struct { + rb_event_flag_t event; + rb_execution_context_t *ec; + const rb_control_frame_t *cfp; + VALUE self; + ID id; + ID called_id; + VALUE klass; + VALUE data; + int klass_solved; + int lineno; + VALUE path; +}; +void rb_hook_list_mark(rb_hook_list_t *hooks); +void rb_hook_list_free(rb_hook_list_t *hooks); +void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line); +void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval); +void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p); +#define EXEC_EVENT_HOOK_ORIG(ec_,hooks_,flag_,self_,id_,called_id_,klass_,data_,pop_p_) do { const rb_event_flag_t flag_arg_ = (flag_); rb_hook_list_t *hooks_arg_ = (hooks_); if (UNLIKELY((hooks_arg_)->events & (flag_arg_))) { rb_exec_event_hook_orig(ec_, hooks_arg_, flag_arg_, self_, id_, called_id_, klass_, data_, pop_p_); } } while (0) +static inline void +rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag, + VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p) +{ + struct rb_trace_arg_struct trace_arg; + ((void)0); + trace_arg.event = flag; + trace_arg.ec = ec; + trace_arg.cfp = ec->cfp; + trace_arg.self = self; + trace_arg.id = id; + trace_arg.called_id = called_id; + trace_arg.klass = klass; + trace_arg.data = data; + trace_arg.path = ((VALUE)RUBY_Qundef); + trace_arg.klass_solved = 0; + rb_exec_event_hooks(&trace_arg, hooks, pop_p); +} +struct rb_ractor_pub { + VALUE self; + uint32_t id; + rb_hook_list_t hooks; +}; +static inline rb_hook_list_t * +rb_ec_ractor_hooks(const rb_execution_context_t *ec) +{ + struct rb_ractor_pub *cr_pub = (struct rb_ractor_pub *)rb_ec_ractor_ptr(ec); + return &cr_pub->hooks; +} +#define EXEC_EVENT_HOOK(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 0) +#define EXEC_EVENT_HOOK_AND_POP_FRAME(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 1) +static inline void +rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script) +{ + do { const rb_event_flag_t flag_arg_ = (0x2000); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, ec->cfp->self, 0, 0, 0, RB_NIL_P(eval_script) ? (VALUE)iseq : rb_ary_new_from_args(2, eval_script, (VALUE)iseq), 0); } } while (0); +} +void rb_vm_trap_exit(rb_vm_t *vm); +#pragma GCC visibility push(default) +int rb_thread_check_trap_pending(void); +#define RUBY_EVENT_COVERAGE_LINE 0x010000 +#define RUBY_EVENT_COVERAGE_BRANCH 0x020000 +extern VALUE rb_get_coverages(void); +extern void rb_set_coverages(VALUE, int, VALUE); +extern void rb_clear_coverages(void); +extern void rb_reset_coverages(void); +extern void rb_resume_coverages(void); +extern void rb_suspend_coverages(void); +void rb_postponed_job_flush(rb_vm_t *vm); +extern __declspec(dllimport) VALUE rb_eRactorUnsafeError; +extern __declspec(dllimport) VALUE rb_eRactorIsolationError; +#pragma GCC visibility pop + +static inline void +vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler) +{ + vm_block_handler_verify(block_handler); + ec->passed_block_handler = block_handler; +} +static inline void +pass_passed_block_handler(rb_execution_context_t *ec) +{ + VALUE block_handler = rb_vm_frame_block_handler(ec->cfp); + vm_passed_block_handler_set(ec, block_handler); + VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED); +} +#define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec) +#define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC()) +#define ruby_setjmp(env) RUBY_SETJMP(env) +#define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val)) +#define SAVE_ROOT_JMPBUF(th,stmt) do if (true) { stmt; } else if (th) { } while (0) +#define EC_PUSH_TAG(ec) do { rb_execution_context_t * const _ec = (ec); struct rb_vm_tag _tag; _tag.state = TAG_NONE; _tag.tag = Qundef; _tag.prev = _ec->tag; _tag.lock_rec = rb_ec_vm_lock_rec(_ec); +#define EC_POP_TAG() _ec->tag = _tag.prev; } while (0) +#define EC_TMPPOP_TAG() _ec->tag = _tag.prev +#define EC_REPUSH_TAG() (void)(_ec->tag = &_tag) +#define VAR_FROM_MEMORY(var) __extension__(*(__typeof__(var) volatile *)&(var)) +#define VAR_INITIALIZED(var) ((var) = VAR_FROM_MEMORY(var)) +#define VAR_NOCLOBBERED(var) volatile var +static inline void +rb_ec_vm_lock_rec_check(const rb_execution_context_t *ec, unsigned int recorded_lock_rec) +{ + unsigned int current_lock_rec = rb_ec_vm_lock_rec(ec); + if (current_lock_rec != recorded_lock_rec) { + rb_ec_vm_lock_rec_release(ec, recorded_lock_rec, current_lock_rec); + } +} +static inline int +rb_ec_tag_state(const rb_execution_context_t *ec) +{ + struct rb_vm_tag *tag = ec->tag; + enum ruby_tag_type state = tag->state; + tag->state = RUBY_TAG_NONE; + rb_ec_vm_lock_rec_check(ec, tag->lock_rec); + return state; +} +__declspec(noreturn) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st); +static inline void +rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st) +{ + ec->tag->state = st; + longjmp(((ec->tag->buf)),(1)); +} +#define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0)) +#define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st) +#define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc) +#define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1 +#define CREF_FL_OMOD_SHARED IMEMO_FL_USER2 +#define CREF_FL_SINGLETON IMEMO_FL_USER3 +static inline int CREF_SINGLETON(const rb_cref_t *cref); +static inline VALUE +CREF_CLASS(const rb_cref_t *cref) +{ + if (CREF_SINGLETON(cref)) { + return rb_class_of(cref->klass_or_self); + } + else { + return cref->klass_or_self; + } +} +static inline VALUE +CREF_CLASS_FOR_DEFINITION(const rb_cref_t *cref) +{ + if (CREF_SINGLETON(cref)) { + return rb_singleton_class(cref->klass_or_self); + } + else { + return cref->klass_or_self; + } +} +static inline rb_cref_t * +CREF_NEXT(const rb_cref_t *cref) +{ + return cref->next; +} +static inline const rb_scope_visibility_t * +CREF_SCOPE_VISI(const rb_cref_t *cref) +{ + return &cref->scope_visi; +} +static inline VALUE +CREF_REFINEMENTS(const rb_cref_t *cref) +{ + return cref->refinements; +} +static inline void +CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs) +{ + rb_obj_write((VALUE)(cref), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&cref->refinements)) unaligned_member_access_result = ((VALUE *)(&cref->refinements)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(refs), "../ruby-3.1.5/eval_intern.h", 223); +} +static inline int +CREF_PUSHED_BY_EVAL(const rb_cref_t *cref) +{ + return cref->flags & ((VALUE)RUBY_FL_USER5); +} +static inline void +CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref) +{ + cref->flags |= ((VALUE)RUBY_FL_USER5); +} +static inline int +CREF_SINGLETON(const rb_cref_t *cref) +{ + return cref->flags & ((VALUE)RUBY_FL_USER7); +} +static inline void +CREF_SINGLETON_SET(rb_cref_t *cref) +{ + cref->flags |= ((VALUE)RUBY_FL_USER7); +} +static inline int +CREF_OMOD_SHARED(const rb_cref_t *cref) +{ + return cref->flags & ((VALUE)RUBY_FL_USER6); +} +static inline void +CREF_OMOD_SHARED_SET(rb_cref_t *cref) +{ + cref->flags |= ((VALUE)RUBY_FL_USER6); +} +static inline void +CREF_OMOD_SHARED_UNSET(rb_cref_t *cref) +{ + cref->flags &= ~((VALUE)RUBY_FL_USER6); +} +enum { + RAISED_EXCEPTION = 1, + RAISED_STACKOVERFLOW = 2, + RAISED_NOMEMORY = 4 +}; +#define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f)) +#define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f)) +#define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0) +#define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0) +int rb_ec_set_raised(rb_execution_context_t *ec); +int rb_ec_reset_raised(rb_execution_context_t *ec); +int rb_ec_stack_check(rb_execution_context_t *ec); +VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self); +VALUE rb_make_exception(int argc, const VALUE *argv); +__declspec(noreturn) void rb_method_name_error(VALUE, VALUE); +__declspec(noreturn) void rb_fiber_start(rb_fiber_t*); +__declspec(noreturn) void rb_print_undef(VALUE, ID, rb_method_visibility_t); +__declspec(noreturn) void rb_print_undef_str(VALUE, VALUE); +__declspec(noreturn) void rb_print_inaccessible(VALUE, ID, rb_method_visibility_t); +__declspec(noreturn) void rb_vm_localjump_error(const char *,VALUE, int); +__declspec(noreturn) void rb_vm_jump_tag_but_local_jump(int); +VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val); +rb_cref_t *rb_vm_cref(void); +rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void); +VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename); +void rb_vm_set_progname(VALUE filename); +VALUE rb_vm_cbase(void); +VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec); +VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n); +VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n, _Bool skip_internal); +static inline void +translit_char(char *p, int from, int to) +{ + while (*p) { + if ((unsigned char)*p == from) + *p = to; + p = CharNextA(p); + } +} + +#define RUBY_GC_H 1 +#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mov\t%0, sp" : "=r" (*(p))) +#define RB_GC_SAVE_MACHINE_CONTEXT(th) do { FLUSH_REGISTER_WINDOWS; setjmp((th)->ec->machine.regs); SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); } while (0) +#define RUBY_MARK_FREE_DEBUG 0 +#define RUBY_MARK_ENTER(msg) +#define RUBY_MARK_LEAVE(msg) +#define RUBY_FREE_ENTER(msg) +#define RUBY_FREE_LEAVE(msg) +#define RUBY_GC_INFO if(0)printf +#define RUBY_MARK_MOVABLE_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0) +#define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0) +#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;} +#define STACK_UPPER(x,a,b) (b) +#define STACK_GROW_DIR_DETECTION +#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b)) +#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0) +const char *rb_obj_info(VALUE obj); +const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj); +VALUE rb_gc_disable_no_rest(void); +struct rb_thread_struct; +#pragma GCC visibility push(default) +size_t rb_objspace_data_type_memsize(VALUE obj); +void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data); +void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data); +int rb_objspace_markable_object_p(VALUE obj); +int rb_objspace_internal_object_p(VALUE obj); +int rb_objspace_marked_object_p(VALUE obj); +void rb_objspace_each_objects( + int (*callback)(void *start, void *end, size_t stride, void *data), + void *data); +void rb_objspace_each_objects_without_setup( + int (*callback)(void *, void *, size_t, void *), + void *data); +#pragma GCC visibility pop + + +#define INTERNAL_COMPILE_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +struct rb_iseq_struct; +int rb_dvar_defined(ID, const struct rb_iseq_struct *); +int rb_local_defined(ID, const struct rb_iseq_struct *); +const char *rb_insns_name(int i); +VALUE rb_insns_name_array(void); +int rb_iseq_cdhash_cmp(VALUE val, VALUE lit); +st_index_t rb_iseq_cdhash_hash(VALUE a); +int rb_vm_insn_addr2insn(const void *); +int rb_vm_insn_decode(const VALUE encoded); +extern _Bool ruby_vm_keep_script_lines; +#pragma GCC visibility push(default) +rb_event_flag_t rb_iseq_event_flags(const struct rb_iseq_struct *iseq, size_t pos); +#pragma GCC visibility pop + +#define INTERNAL_CONT_H +struct rb_thread_struct; +struct rb_fiber_struct; +void rb_fiber_reset_root_local_storage(struct rb_thread_struct *); +void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(VALUE), VALUE (*rollback_func)(VALUE)); +void rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber); +VALUE rb_fiberptr_self(struct rb_fiber_struct *fiber); +unsigned int rb_fiberptr_blocking(struct rb_fiber_struct *fiber); + +#define INTERNAL_ERROR_H + +#define INTERNAL_STRING_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof + +#define RUBY_ENCODING_H 1 + +#define RUBY_INTERNAL_ENCODING_CODERANGE_H +#pragma GCC visibility push(default) +enum ruby_coderange_type { + RUBY_ENC_CODERANGE_UNKNOWN = 0, + RUBY_ENC_CODERANGE_7BIT = ((int)RUBY_FL_USER8), + RUBY_ENC_CODERANGE_VALID = ((int)RUBY_FL_USER9), + RUBY_ENC_CODERANGE_BROKEN = ((int)(RUBY_FL_USER8|RUBY_FL_USER9)), + RUBY_ENC_CODERANGE_MASK = (RUBY_ENC_CODERANGE_7BIT| + RUBY_ENC_CODERANGE_VALID| + RUBY_ENC_CODERANGE_BROKEN) +}; +__attribute__((__const__)) +static inline int +rb_enc_coderange_clean_p(int cr) +{ + return (cr ^ (cr >> 1)) & RUBY_ENC_CODERANGE_7BIT; +} +__attribute__((__const__)) +static inline _Bool +RB_ENC_CODERANGE_CLEAN_P(enum ruby_coderange_type cr) +{ + return rb_enc_coderange_clean_p(cr); +} +__attribute__((__pure__)) +static inline enum ruby_coderange_type +RB_ENC_CODERANGE(VALUE obj) +{ + VALUE ret = RB_FL_TEST_RAW(obj, RUBY_ENC_CODERANGE_MASK); + return ((enum ruby_coderange_type)ret); +} +__attribute__((__pure__)) +static inline _Bool +RB_ENC_CODERANGE_ASCIIONLY(VALUE obj) +{ + return RB_ENC_CODERANGE(obj) == RUBY_ENC_CODERANGE_7BIT; +} +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); +} +static inline void +RB_ENC_CODERANGE_CLEAR(VALUE obj) +{ + RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK); +} +__attribute__((__const__)) +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 +#define ENC_CODERANGE_UNKNOWN RUBY_ENC_CODERANGE_UNKNOWN +#define ENC_CODERANGE_7BIT RUBY_ENC_CODERANGE_7BIT +#define ENC_CODERANGE_VALID RUBY_ENC_CODERANGE_VALID +#define ENC_CODERANGE_BROKEN RUBY_ENC_CODERANGE_BROKEN +#define ENC_CODERANGE_CLEAN_P(cr) RB_ENC_CODERANGE_CLEAN_P(cr) +#define ENC_CODERANGE(obj) RB_ENC_CODERANGE(obj) +#define ENC_CODERANGE_ASCIIONLY(obj) RB_ENC_CODERANGE_ASCIIONLY(obj) +#define ENC_CODERANGE_SET(obj,cr) RB_ENC_CODERANGE_SET(obj,cr) +#define ENC_CODERANGE_CLEAR(obj) RB_ENC_CODERANGE_CLEAR(obj) +#define ENC_CODERANGE_AND(a,b) RB_ENC_CODERANGE_AND(a, b) +#define ENCODING_CODERANGE_SET(obj,encindex,cr) RB_ENCODING_CODERANGE_SET(obj, encindex, cr) +#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 +#pragma GCC visibility pop + +#define RUBY_INTERNAL_ENCODING_CTYPE_H + +#define ONIGMO_H +#define ONIGMO_VERSION_MAJOR 6 +#define ONIGMO_VERSION_MINOR 1 +#define ONIGMO_VERSION_TEENY 3 +#define ONIG_EXTERN RUBY_EXTERN +#pragma GCC visibility push(default) +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define UChar OnigUChar +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) +typedef unsigned int OnigCaseFoldType; +extern __declspec(dllimport) OnigCaseFoldType OnigDefaultCaseFoldFlag; +#define OnigCodePointMaskWidth 3 +#define OnigCodePointMask ((1<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) +extern __declspec(dllimport) +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) +extern __declspec(dllimport) +OnigUChar* onigenc_step_back(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n); +extern __declspec(dllimport) +int onigenc_init(void); +extern __declspec(dllimport) +int onigenc_set_default_encoding(OnigEncoding enc); +extern __declspec(dllimport) +OnigEncoding onigenc_get_default_encoding(void); +extern __declspec(dllimport) +OnigUChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev); +extern __declspec(dllimport) +OnigUChar* onigenc_get_prev_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); +extern __declspec(dllimport) +OnigUChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); +extern __declspec(dllimport) +OnigUChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); +extern __declspec(dllimport) +int onigenc_strlen(OnigEncoding enc, const OnigUChar* p, const OnigUChar* end); +extern __declspec(dllimport) +int onigenc_strlen_null(OnigEncoding enc, const OnigUChar* p); +extern __declspec(dllimport) +int onigenc_str_bytelen_null(OnigEncoding enc, const OnigUChar* p); +#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 +#define ONIG_MAX_ERROR_MESSAGE_LEN 90 +typedef unsigned int OnigOptionType; +#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE +#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) +#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) +#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) +#define ONIG_OPTION_NEWLINE_CRLF (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1) +#define ONIG_OPTION_MAXBIT ONIG_OPTION_NEWLINE_CRLF +#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)) +typedef struct { + unsigned int op; + unsigned int op2; + unsigned int behavior; + OnigOptionType options; + OnigMetaCharTableType meta_char_table; +} OnigSyntaxType; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxASIS; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxPosixBasic; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxPosixExtended; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxEmacs; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxGrep; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxGnuRegex; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxJava; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxPerl58; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxPerl58_NG; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxPerl; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxRuby; +extern __declspec(dllimport) const OnigSyntaxType OnigSyntaxPython; +#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) +extern __declspec(dllimport) const OnigSyntaxType* OnigDefaultSyntax; +#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax +#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) +#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) +#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) +#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) +#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) +#define ONIG_SYN_OP_BRACKET_CC (1U<<17) +#define ONIG_SYN_OP_ESC_W_WORD (1U<<18) +#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) +#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) +#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) +#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) +#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) +#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) +#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) +#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) +#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) +#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) +#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) +#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) +#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31) +#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) +#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) +#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) +#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) +#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) +#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) +#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) +#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) +#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) +#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) +#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) +#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) +#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) +#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) +#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) +#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) +#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) +#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) +#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK (1U<<21) +#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22) +#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE (1U<<23) +#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24) +#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<25) +#define ONIG_SYN_OP2_ESC_G_BRACE_BACKREF (1U<<26) +#define ONIG_SYN_OP2_QMARK_SUBEXP_CALL (1U<<27) +#define ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET (1U<<28) +#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION (1U<<29) +#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30) +#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT (1U<<31) +#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) +#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0) +#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1) +#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2) +#define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3) +#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4) +#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) +#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) +#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) +#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) +#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) +#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10) +#define ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP (1U<<11) +#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) +#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) +#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) +#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) +#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) +#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) +#define ONIG_SYN_WARN_CC_DUP (1U<<26) +#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 +#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) +#define ONIG_NORMAL 0 +#define ONIG_MISMATCH -1 +#define ONIG_NO_SUPPORT_CONFIG -2 +#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 +#define ONIGERR_INVALID_ARGUMENT -30 +#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 +#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 +#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]) +struct re_registers { + int allocated; + int num_regs; + OnigPosition* beg; + OnigPosition* end; +}; +#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 { + unsigned char* p; + unsigned int used; + unsigned int alloc; + int num_mem; + int num_repeat; + int num_null_check; + int num_comb_exp_check; + int num_call; + unsigned int capture_history; + unsigned int bt_mem_start; + unsigned int bt_mem_end; + 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; + int optimize; + int threshold_len; + int anchor; + OnigDistance anchor_dmin; + OnigDistance anchor_dmax; + int sub_anchor; + unsigned char *exact; + unsigned char *exact_end; + unsigned char map[256]; + int *int_map; + int *int_map_backward; + OnigDistance dmin; + OnigDistance dmax; + struct re_pattern_buffer* chain; +} OnigRegexType; +typedef OnigRegexType* OnigRegex; +typedef OnigRegexType regex_t; +typedef struct { + int num_of_elements; + OnigEncoding pattern_enc; + OnigEncoding target_enc; + const OnigSyntaxType* syntax; + OnigOptionType option; + OnigCaseFoldType case_fold_flag; +} OnigCompileInfo; +extern __declspec(dllimport) +int onig_initialize(OnigEncoding encodings[], int n); +extern __declspec(dllimport) +int onig_init(void); +extern __declspec(dllimport) +int onig_error_code_to_str(OnigUChar* s, OnigPosition err_code, ...); +extern __declspec(dllimport) +void onig_set_warn_func(OnigWarnFunc f); +extern __declspec(dllimport) +void onig_set_verb_warn_func(OnigWarnFunc f); +extern __declspec(dllimport) +int onig_new(OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo); +extern __declspec(dllimport) +int onig_reg_init(OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax); +extern __declspec(dllimport) +int onig_new_without_alloc(OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo); +extern __declspec(dllimport) +int onig_new_deluxe(OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo); +extern __declspec(dllimport) +void onig_free(OnigRegex); +extern __declspec(dllimport) +void onig_free_body(OnigRegex); +extern __declspec(dllimport) +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); +extern __declspec(dllimport) +OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option); +extern __declspec(dllimport) +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); +extern __declspec(dllimport) +OnigPosition onig_match(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option); +extern __declspec(dllimport) +OnigRegion* onig_region_new(void); +extern __declspec(dllimport) +void onig_region_init(OnigRegion* region); +extern __declspec(dllimport) +void onig_region_free(OnigRegion* region, int free_self); +extern __declspec(dllimport) +void onig_region_copy(OnigRegion* to, const OnigRegion* from); +extern __declspec(dllimport) +void onig_region_clear(OnigRegion* region); +extern __declspec(dllimport) +int onig_region_resize(OnigRegion* region, int n); +extern __declspec(dllimport) +int onig_region_set(OnigRegion* region, int at, int beg, int end); +extern __declspec(dllimport) +int onig_name_to_group_numbers(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums); +extern __declspec(dllimport) +int onig_name_to_backref_number(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, const OnigRegion *region); +extern __declspec(dllimport) +int onig_foreach_name(OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg); +extern __declspec(dllimport) +int onig_number_of_names(const OnigRegexType *reg); +extern __declspec(dllimport) +int onig_number_of_captures(const OnigRegexType *reg); +extern __declspec(dllimport) +int onig_number_of_capture_histories(const OnigRegexType *reg); +extern __declspec(dllimport) +int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg); +extern __declspec(dllimport) +int onig_noname_group_capture_is_active(const OnigRegexType *reg); +extern __declspec(dllimport) +OnigEncoding onig_get_encoding(const OnigRegexType *reg); +extern __declspec(dllimport) +OnigOptionType onig_get_options(const OnigRegexType *reg); +extern __declspec(dllimport) +OnigCaseFoldType onig_get_case_fold_flag(const OnigRegexType *reg); +extern __declspec(dllimport) +const OnigSyntaxType* onig_get_syntax(const OnigRegexType *reg); +extern __declspec(dllimport) +int onig_set_default_syntax(const OnigSyntaxType* syntax); +extern __declspec(dllimport) +void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from); +extern __declspec(dllimport) +unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax); +extern __declspec(dllimport) +unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax); +extern __declspec(dllimport) +unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax); +extern __declspec(dllimport) +OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax); +extern __declspec(dllimport) +void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op); +extern __declspec(dllimport) +void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2); +extern __declspec(dllimport) +void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior); +extern __declspec(dllimport) +void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options); +extern __declspec(dllimport) +int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code); +extern __declspec(dllimport) +void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from); +extern __declspec(dllimport) +OnigCaseFoldType onig_get_default_case_fold_flag(void); +extern __declspec(dllimport) +int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag); +extern __declspec(dllimport) +unsigned int onig_get_match_stack_limit_size(void); +extern __declspec(dllimport) +int onig_set_match_stack_limit_size(unsigned int size); +extern __declspec(dllimport) +unsigned int onig_get_parse_depth_limit(void); +extern __declspec(dllimport) +int onig_set_parse_depth_limit(unsigned int depth); +extern __declspec(dllimport) +int onig_end(void); +extern __declspec(dllimport) +const char* onig_version(void); +extern __declspec(dllimport) +const char* onig_copyright(void); +#pragma GCC visibility pop + +#define RUBY_INTERNAL_ENCODING_ENCODING_H + +#define ONIGURUMA_H +#define ONIGURUMA +#define ONIGURUMA_VERSION_MAJOR ONIGMO_VERSION_MAJOR +#define ONIGURUMA_VERSION_MINOR ONIGMO_VERSION_MINOR +#define ONIGURUMA_VERSION_TEENY ONIGMO_VERSION_TEENY +#pragma GCC visibility push(default) +extern __declspec(dllimport) VALUE rb_cEncoding; +enum ruby_encoding_consts { + RUBY_ENCODING_INLINE_MAX = 127, + RUBY_ENCODING_SHIFT = (RUBY_FL_USHIFT+10), + RUBY_ENCODING_MASK = (RUBY_ENCODING_INLINE_MAX<> RUBY_ENCODING_SHIFT; + return ((int)ret); +} +#define ENCODING_SET_INLINED(obj,i) RB_ENCODING_SET_INLINED(obj,i) +#define ENCODING_SET(obj,i) RB_ENCODING_SET(obj,i) +#define ENCODING_GET_INLINED(obj) RB_ENCODING_GET_INLINED(obj) +#define ENCODING_GET(obj) RB_ENCODING_GET(obj) +#define ENCODING_IS_ASCII8BIT(obj) RB_ENCODING_IS_ASCII8BIT(obj) +#define ENCODING_MAXNAMELEN RUBY_ENCODING_MAXNAMELEN +typedef const OnigEncodingType rb_encoding; +__declspec(noalias) +int rb_char_to_option_kcode(int c, int *option, int *kcode); +int rb_enc_replicate(const char *name, rb_encoding *src); +int rb_define_dummy_encoding(const char *name); +__attribute__((__pure__)) +int rb_enc_dummy_p(rb_encoding *enc); +__attribute__((__pure__)) +int rb_enc_to_index(rb_encoding *enc); +int rb_enc_get_index(VALUE obj); +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; + } +} +void rb_enc_set_index(VALUE obj, int encindex); +static inline void +RB_ENCODING_SET(VALUE obj, int encindex) +{ + rb_enc_set_index(obj, encindex); +} +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); +} +__attribute__((__pure__)) +int rb_enc_capable(VALUE obj); +int rb_enc_find_index(const char *name); +int rb_enc_alias(const char *alias, const char *orig); +int rb_to_encoding_index(VALUE obj); +rb_encoding *rb_to_encoding(VALUE obj); +rb_encoding *rb_find_encoding(VALUE obj); +rb_encoding *rb_enc_get(VALUE obj); +rb_encoding *rb_enc_compatible(VALUE str1, VALUE str2); +rb_encoding *rb_enc_check(VALUE str1,VALUE str2); +VALUE rb_enc_associate_index(VALUE obj, int encindex); +VALUE rb_enc_associate(VALUE obj, rb_encoding *enc); +void rb_enc_copy(VALUE dst, VALUE src); +rb_encoding *rb_enc_from_index(int idx); +rb_encoding *rb_enc_find(const char *name); +static inline const char * +rb_enc_name(rb_encoding *enc) +{ + return enc->name; +} +static inline int +rb_enc_mbminlen(rb_encoding *enc) +{ + return enc->min_enc_len; +} +static inline int +rb_enc_mbmaxlen(rb_encoding *enc) +{ + return enc->max_enc_len; +} +int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc); +int rb_enc_fast_mbclen(const char *p, const char *e, rb_encoding *enc); +int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc); +#define MBCLEN_CHARFOUND_P(ret) ONIGENC_MBCLEN_CHARFOUND_P(ret) +#define MBCLEN_CHARFOUND_LEN(ret) ONIGENC_MBCLEN_CHARFOUND_LEN(ret) +#define MBCLEN_INVALID_P(ret) ONIGENC_MBCLEN_INVALID_P(ret) +#define MBCLEN_NEEDMORE_P(ret) ONIGENC_MBCLEN_NEEDMORE_P(ret) +#define MBCLEN_NEEDMORE_LEN(ret) ONIGENC_MBCLEN_NEEDMORE_LEN(ret) +int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc); +unsigned int rb_enc_codepoint_len(const char *p, const char *e, int *len, rb_encoding *enc); +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); +} +static inline OnigCodePoint +rb_enc_mbc_to_codepoint(const char *p, const char *e, rb_encoding *enc) +{ + const OnigUChar *up = ((const OnigUChar *)p); + const OnigUChar *ue = ((const OnigUChar *)e); + return (enc)->mbc_to_code((up),(ue),enc); +} +int rb_enc_codelen(int code, rb_encoding *enc); +static inline int +rb_enc_code_to_mbclen(int c, rb_encoding *enc) +{ + OnigCodePoint uc = ((OnigCodePoint)c); + return (enc)->code_to_mbclen(uc,enc); +} +static inline int +rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc) +{ + OnigCodePoint uc = ((OnigCodePoint)c); + OnigUChar *ubuf = ((OnigUChar *)buf); + return (enc)->code_to_mbc(uc,ubuf,enc); +} +static inline char * +rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc) +{ + const OnigUChar *us = ((const OnigUChar *)s); + const OnigUChar *up = ((const OnigUChar *)p); + const OnigUChar *ue = ((const OnigUChar *)e); + OnigUChar *ur = onigenc_get_prev_char_head(enc, us, up, ue); + return ((char *)ur); +} +static inline char * +rb_enc_left_char_head(const char *s, const char *p, const char *e, rb_encoding *enc) +{ + const OnigUChar *us = ((const OnigUChar *)s); + const OnigUChar *up = ((const OnigUChar *)p); + const OnigUChar *ue = ((const OnigUChar *)e); + OnigUChar *ur = onigenc_get_left_adjust_char_head(enc, us, up, ue); + return ((char *)ur); +} +static inline char * +rb_enc_right_char_head(const char *s, const char *p, const char *e, rb_encoding *enc) +{ + const OnigUChar *us = ((const OnigUChar *)s); + const OnigUChar *up = ((const OnigUChar *)p); + const OnigUChar *ue = ((const OnigUChar *)e); + OnigUChar *ur = onigenc_get_right_adjust_char_head(enc, us, up, ue); + return ((char *)ur); +} +static inline char * +rb_enc_step_back(const char *s, const char *p, const char *e, int n, rb_encoding *enc) +{ + const OnigUChar *us = ((const OnigUChar *)s); + const OnigUChar *up = ((const OnigUChar *)p); + const OnigUChar *ue = ((const OnigUChar *)e); + const OnigUChar *ur = onigenc_step_back(enc, us, up, ue, n); + return ((char *)ur); +} +static inline int +rb_enc_asciicompat_inline(rb_encoding *enc) +{ + return rb_enc_mbminlen(enc)==1 && !rb_enc_dummy_p(enc); +} +static inline _Bool +rb_enc_asciicompat(rb_encoding *enc) +{ + if (rb_enc_mbminlen(enc) != 1) { + return 0; + } + else if (rb_enc_dummy_p(enc)) { + return 0; + } + else { + return 1; + } +} +static inline _Bool +rb_enc_str_asciicompat_p(VALUE str) +{ + rb_encoding *enc = rb_enc_get(str); + return rb_enc_asciicompat(enc); +} +VALUE rb_enc_from_encoding(rb_encoding *enc); +__attribute__((__pure__)) +int rb_enc_unicode_p(rb_encoding *enc); +__attribute__((__returns_nonnull__)) +rb_encoding *rb_ascii8bit_encoding(void); +__attribute__((__returns_nonnull__)) +rb_encoding *rb_utf8_encoding(void); +__attribute__((__returns_nonnull__)) +rb_encoding *rb_usascii_encoding(void); +rb_encoding *rb_locale_encoding(void); +rb_encoding *rb_filesystem_encoding(void); +rb_encoding *rb_default_external_encoding(void); +rb_encoding *rb_default_internal_encoding(void); +__attribute__((__const__)) +int rb_ascii8bit_encindex(void); +static inline _Bool +RB_ENCODING_IS_ASCII8BIT(VALUE obj) +{ + return RB_ENCODING_GET_INLINED(obj) == rb_ascii8bit_encindex(); +} +__attribute__((__const__)) +int rb_utf8_encindex(void); +__attribute__((__const__)) +int rb_usascii_encindex(void); +int rb_locale_encindex(void); +int rb_filesystem_encindex(void); +VALUE rb_enc_default_external(void); +VALUE rb_enc_default_internal(void); +void rb_enc_set_default_external(VALUE encoding); +void rb_enc_set_default_internal(VALUE encoding); +VALUE rb_locale_charmap(VALUE klass); +#pragma GCC visibility pop +#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 +#pragma GCC visibility push(default) +static inline _Bool +rb_enc_is_newline(const char *p, const char *e, rb_encoding *enc) +{ + OnigUChar *up = ((OnigUChar *)p); + OnigUChar *ue = ((OnigUChar *)e); + return (enc)->is_mbc_newline((up),(ue),enc); +} +static inline _Bool +rb_enc_isctype(OnigCodePoint c, OnigCtype t, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,t,enc); +} +static inline _Bool +rb_enc_isascii(OnigCodePoint c, rb_encoding *enc) +{ + return ((c) < 128); +} +static inline _Bool +rb_enc_isalpha(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,1,enc); +} +static inline _Bool +rb_enc_islower(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,6,enc); +} +static inline _Bool +rb_enc_isupper(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,10,enc); +} +static inline _Bool +rb_enc_ispunct(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,8,enc); +} +static inline _Bool +rb_enc_isalnum(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,13,enc); +} +static inline _Bool +rb_enc_isprint(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,7,enc); +} +static inline _Bool +rb_enc_isspace(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,9,enc); +} +static inline _Bool +rb_enc_isdigit(OnigCodePoint c, rb_encoding *enc) +{ + return (enc)->is_code_ctype(c,4,enc); +} +__attribute__((__const__)) +int rb_enc_toupper(int c, rb_encoding *enc); +__attribute__((__const__)) +int rb_enc_tolower(int c, rb_encoding *enc); +#pragma GCC visibility pop +#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 + + +#define RUBY_INTERNAL_ENCODING_PATHNAME_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ ())) +char *rb_enc_path_next(const char *path, const char *end, rb_encoding *enc); +__attribute__((__nonnull__ ())) +char *rb_enc_path_skip_prefix(const char *path, const char *end, rb_encoding *enc); +__attribute__((__nonnull__ ())) +char *rb_enc_path_last_separator(const char *path, const char *end, rb_encoding *enc); +__attribute__((__nonnull__ ())) +char *rb_enc_path_end(const char *path, const char *end, rb_encoding *enc); +__attribute__((__nonnull__ (1, 4))) +const char *ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encoding *enc); +__attribute__((__nonnull__ (1, 3))) +const char *ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc); +#pragma GCC visibility pop + +#define RUBY_INTERNAL_ENCODING_RE_H +#pragma GCC visibility push(default) +VALUE rb_enc_reg_new(const char *ptr, long len, rb_encoding *enc, int opts); +#pragma GCC visibility pop + +#define RUBY_INTERNAL_ENCODING_SPRINTF_H +#pragma GCC visibility push(default) +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 3))) +VALUE rb_enc_sprintf(rb_encoding *enc, const char *fmt, ...); +__attribute__((__nonnull__ (2))) +__attribute__((__format__(printf, 2, 0))) +VALUE rb_enc_vsprintf(rb_encoding *enc, const char *fmt, va_list ap); +__declspec(noreturn) +__attribute__((__nonnull__ (3))) +__attribute__((__format__(printf, 3, 4))) +void rb_enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...); +#pragma GCC visibility pop + +#define RUBY_INTERNAL_ENCODING_STRING_H +#pragma GCC visibility push(default) +VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc); +__attribute__((__nonnull__ (1))) +VALUE rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc); +VALUE rb_enc_str_new_static(const char *ptr, long len, rb_encoding *enc); +VALUE rb_enc_interned_str(const char *ptr, long len, rb_encoding *enc); +__attribute__((__nonnull__ (1))) +VALUE rb_enc_interned_str_cstr(const char *ptr, rb_encoding *enc); +long rb_enc_strlen(const char *head, const char *tail, rb_encoding *enc); +char *rb_enc_nth(const char *head, const char *tail, long nth, rb_encoding *enc); +VALUE rb_obj_encoding(VALUE obj); +VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc); +VALUE rb_enc_uint_chr(unsigned int code, rb_encoding *enc); +VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *enc); +VALUE rb_str_export_to_enc(VALUE obj, rb_encoding *enc); +VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to); +VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts); +int rb_enc_str_coderange(VALUE str); +long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr); +int rb_enc_str_asciionly_p(VALUE str); +__attribute__((__nonnull__ ())) +long rb_memsearch(const void *x, long m, const void *y, long n, rb_encoding *enc); +__attribute__((__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))) +#pragma GCC visibility pop + +#define RUBY_INTERNAL_ENCODING_SYMBOL_H +#pragma GCC visibility push(default) +ID rb_intern3(const char *name, long len, rb_encoding *enc); +__attribute__((__nonnull__ ())) +int rb_enc_symname_p(const char *str, rb_encoding *enc); +int rb_enc_symname2_p(const char *name, long len, rb_encoding *enc); +ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc); +VALUE rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc); +#pragma GCC visibility pop + +#define RUBY_INTERNAL_ENCODING_TRANSCODE_H +#pragma GCC visibility push(default) +typedef enum { + econv_invalid_byte_sequence, + econv_undefined_conversion, + econv_destination_buffer_full, + econv_source_buffer_empty, + econv_finished, + econv_after_output, + econv_incomplete_input +} rb_econv_result_t; +typedef struct rb_econv_t rb_econv_t; +VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts); +int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding); +int rb_econv_prepare_options(VALUE opthash, VALUE *ecopts, int ecflags); +int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts); +rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags); +rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts); +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); +void rb_econv_close(rb_econv_t *ec); +int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname); +int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name); +int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name); +VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags); +int rb_econv_insert_output(rb_econv_t *ec, + const unsigned char *str, size_t len, const char *str_encoding); +const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec); +void rb_econv_check_error(rb_econv_t *ec); +VALUE rb_econv_make_exception(rb_econv_t *ec); +int rb_econv_putbackable(rb_econv_t *ec); +void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n); +const char *rb_econv_asciicompat_encoding(const char *encname); +VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags); +VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags); +VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags); +VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags); +VALUE rb_econv_append(rb_econv_t *ec, const char *bytesrc, long bytesize, VALUE dst, int flags); +void rb_econv_binmode(rb_econv_t *ec); +enum ruby_econv_flag_type { + RUBY_ECONV_ERROR_HANDLER_MASK = 0x000000ff, + RUBY_ECONV_INVALID_MASK = 0x0000000f, + RUBY_ECONV_INVALID_REPLACE = 0x00000002, + RUBY_ECONV_UNDEF_MASK = 0x000000f0, + RUBY_ECONV_UNDEF_REPLACE = 0x00000020, + RUBY_ECONV_UNDEF_HEX_CHARREF = 0x00000030, + RUBY_ECONV_DECORATOR_MASK = 0x0000ff00, + RUBY_ECONV_NEWLINE_DECORATOR_MASK = 0x00003f00, + RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK = 0x00000f00, + RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK = 0x00003000, + RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR = 0x00000100, + RUBY_ECONV_CRLF_NEWLINE_DECORATOR = 0x00001000, + RUBY_ECONV_CR_NEWLINE_DECORATOR = 0x00002000, + RUBY_ECONV_XML_TEXT_DECORATOR = 0x00004000, + RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR = 0x00008000, + RUBY_ECONV_STATEFUL_DECORATOR_MASK = 0x00f00000, + RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR = 0x00100000, + RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR = + RUBY_ECONV_CRLF_NEWLINE_DECORATOR, +#define ECONV_ERROR_HANDLER_MASK RUBY_ECONV_ERROR_HANDLER_MASK +#define ECONV_INVALID_MASK RUBY_ECONV_INVALID_MASK +#define ECONV_INVALID_REPLACE RUBY_ECONV_INVALID_REPLACE +#define ECONV_UNDEF_MASK RUBY_ECONV_UNDEF_MASK +#define ECONV_UNDEF_REPLACE RUBY_ECONV_UNDEF_REPLACE +#define ECONV_UNDEF_HEX_CHARREF RUBY_ECONV_UNDEF_HEX_CHARREF +#define ECONV_DECORATOR_MASK RUBY_ECONV_DECORATOR_MASK +#define ECONV_NEWLINE_DECORATOR_MASK RUBY_ECONV_NEWLINE_DECORATOR_MASK +#define ECONV_NEWLINE_DECORATOR_READ_MASK RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK +#define ECONV_NEWLINE_DECORATOR_WRITE_MASK RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK +#define ECONV_UNIVERSAL_NEWLINE_DECORATOR RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR +#define ECONV_CRLF_NEWLINE_DECORATOR RUBY_ECONV_CRLF_NEWLINE_DECORATOR +#define ECONV_CR_NEWLINE_DECORATOR RUBY_ECONV_CR_NEWLINE_DECORATOR +#define ECONV_XML_TEXT_DECORATOR RUBY_ECONV_XML_TEXT_DECORATOR +#define ECONV_XML_ATTR_CONTENT_DECORATOR RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR +#define ECONV_STATEFUL_DECORATOR_MASK RUBY_ECONV_STATEFUL_DECORATOR_MASK +#define ECONV_XML_ATTR_QUOTE_DECORATOR RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR +#define ECONV_DEFAULT_NEWLINE_DECORATOR RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR + RUBY_ECONV_PARTIAL_INPUT = 0x00010000, + RUBY_ECONV_AFTER_OUTPUT = 0x00020000, +#define ECONV_PARTIAL_INPUT RUBY_ECONV_PARTIAL_INPUT +#define ECONV_AFTER_OUTPUT RUBY_ECONV_AFTER_OUTPUT + RUBY_ECONV_FLAGS_PLACEHOLDER +}; +#pragma GCC visibility pop +#define STR_NOEMBED FL_USER1 +#define STR_SHARED FL_USER2 +#undef rb_fstring_cstr +VALUE rb_fstring(VALUE); +VALUE rb_fstring_cstr(const char *str); +VALUE rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc); +int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p); +int rb_str_symname_p(VALUE); +VALUE rb_str_quote_unprintable(VALUE); +char *rb_str_fill_terminator(VALUE str, const int termlen); +void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen); +VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg); +VALUE rb_str_chomp_string(VALUE str, VALUE chomp); +VALUE rb_external_str_with_enc(VALUE str, rb_encoding *eenc); +VALUE rb_str_cat_conv_enc_opts(VALUE newstr, long ofs, const char *ptr, long len, + rb_encoding *from, int ecflags, VALUE ecopts); +VALUE rb_enc_str_scrub(rb_encoding *enc, VALUE str, VALUE repl); +VALUE rb_str_escape(VALUE str); +size_t rb_str_memsize(VALUE); +char *rb_str_to_cstr(VALUE str); +const char *ruby_escaped_char(int c); +void rb_str_make_independent(VALUE str); +int rb_enc_str_coderange_scan(VALUE str, rb_encoding *enc); +static inline _Bool STR_EMBED_P(VALUE str); +static inline _Bool STR_SHARED_P(VALUE str); +static inline VALUE QUOTE(VALUE v); +static inline VALUE QUOTE_ID(ID v); +static inline _Bool is_ascii_string(VALUE str); +static inline _Bool is_broken_string(VALUE str); +static inline VALUE rb_str_eql_internal(const VALUE str1, const VALUE str2); +#pragma GCC visibility push(default) +VALUE rb_str_tmp_frozen_acquire(VALUE str); +void rb_str_tmp_frozen_release(VALUE str, VALUE tmp); +VALUE rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encoding *enc); +VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE); +VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +VALUE rb_fstring_new(const char *ptr, long len); +VALUE rb_obj_as_string_result(VALUE str, VALUE obj); +VALUE rb_str_opt_plus(VALUE x, VALUE y); +VALUE rb_str_concat_literals(size_t num, const VALUE *strary); +VALUE rb_str_eql(VALUE str1, VALUE str2); +VALUE rb_id_quote_unprintable(ID); +VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc); +struct rb_execution_context_struct; +VALUE rb_ec_str_resurrect(struct rb_execution_context_struct *ec, VALUE str); +#pragma GCC visibility pop +#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str)) +#define rb_fstring_literal(str) rb_fstring_lit(str) +#define rb_fstring_enc_lit(str,enc) rb_fstring_enc_new((str), rb_strlen_lit(str), (enc)) +#define rb_fstring_enc_literal(str,enc) rb_fstring_enc_lit(str, enc) +static inline VALUE +QUOTE(VALUE v) +{ + return rb_str_quote_unprintable(v); +} +static inline VALUE +QUOTE_ID(ID i) +{ + return rb_id_quote_unprintable(i); +} +static inline _Bool +STR_EMBED_P(VALUE str) +{ + return ! RB_FL_TEST_RAW(str, ((VALUE)RUBY_FL_USER1)); +} +static inline _Bool +STR_SHARED_P(VALUE str) +{ + return RB_FL_ALL_RAW(str, ((VALUE)RUBY_FL_USER1) | RUBY_ELTS_SHARED); +} +static inline _Bool +is_ascii_string(VALUE str) +{ + return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_7BIT; +} +static inline _Bool +is_broken_string(VALUE str) +{ + return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_BROKEN; +} +static inline VALUE +rb_str_eql_internal(const VALUE str1, const VALUE str2) +{ + const long len = RSTRING_LEN(str1); + const char *ptr1, *ptr2; + if (len != RSTRING_LEN(str2)) return ((VALUE)RUBY_Qfalse); + if (!rb_str_comparable(str1, str2)) return ((VALUE)RUBY_Qfalse); + if ((ptr1 = RSTRING_PTR(str1)) == (ptr2 = RSTRING_PTR(str2))) + return ((VALUE)RUBY_Qtrue); + if (memcmp(ptr1, ptr2, len) == 0) + return ((VALUE)RUBY_Qtrue); + return ((VALUE)RUBY_Qfalse); +} +#define rb_fstring_cstr(str) (__builtin_constant_p(str) ? rb_fstring_new((str), (long)strlen(str)) : (rb_fstring_cstr)(str)) +#undef Check_Type +#define rb_raise_static(e,m) rb_raise_cstr_i((e), rb_str_new_static((m), rb_strlen_lit(m))) +#define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path) +#define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path)) +#define rb_syserr_new_path(err,path) rb_syserr_new_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path)) +extern long rb_backtrace_length_limit; +extern VALUE rb_eEAGAIN; +extern VALUE rb_eEWOULDBLOCK; +extern VALUE rb_eEINPROGRESS; +__attribute__((__format__(printf, 3, 0))) +void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args); +__declspec(noreturn) void rb_async_bug_errno(const char *,int); +const char *rb_builtin_type_name(int t); +const char *rb_builtin_class_name(VALUE x); +__attribute__((__format__(printf, (1), (3)))) void rb_warn_deprecated(const char *fmt, const char *suggest, ...); +__attribute__((__format__(printf, (2), (4)))) void rb_warn_deprecated_to_remove(const char *removal, const char *fmt, const char *suggest, ...); +#define rb_warn_deprecated_to_remove_at(removal,...) rb_warn_deprecated_to_remove(#removal, __VA_ARGS__) +#define RUBY_VERSION_SINCE(major,minor) 0 +#define RUBY_VERSION_BEFORE(major,minor) 0 +#define RBIMPL_TODO0(x) +#define RBIMPL_TODO(message) RBIMPL_TODO0("TODO: " message) +__attribute__((__format__(printf, 6, 0))) +VALUE rb_syntax_error_append(VALUE, VALUE, int, int, rb_encoding*, const char*, va_list); +__attribute__((__format__(printf, (2), (3)))) void rb_enc_warn(rb_encoding *enc, const char *fmt, ...); +__attribute__((__format__(printf, (2), (3)))) void rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...); +__attribute__((__format__(printf, (3), (4)))) void rb_syserr_enc_warning(int err, rb_encoding *enc, const char *fmt, ...); +rb_warning_category_t rb_warning_category_from_name(VALUE category); +_Bool rb_warning_category_enabled_p(rb_warning_category_t category); +VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method); +VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv); +VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name); +__attribute__((__format__(printf, (1), (2)))) VALUE rb_warning_string(const char *fmt, ...); +__attribute__((__format__(printf, 2, 0))) +__declspec(noreturn) void rb_vraise(VALUE, const char *, va_list); +__declspec(noreturn) static inline void rb_raise_cstr(VALUE etype, const char *mesg); +__declspec(noreturn) static inline void rb_raise_cstr_i(VALUE etype, VALUE mesg); +__declspec(noreturn) static inline void rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name); +__declspec(noreturn) static inline void rb_name_err_raise(const char *mesg, VALUE recv, VALUE name); +__declspec(noreturn) static inline void rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name); +static inline void Check_Type(VALUE v, enum ruby_value_type t); +static inline _Bool rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type); +#define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline +#pragma GCC visibility push(default) +int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data); +__declspec(noreturn) void rb_sys_fail_path_in(const char *func_name, VALUE path); +__declspec(noreturn) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path); +VALUE rb_syserr_new_path_in(const char *func_name, int n, VALUE path); +#pragma GCC visibility pop +static inline void +rb_raise_cstr_i(VALUE etype, VALUE mesg) +{ + VALUE exc = rb_exc_new_str(etype, mesg); + rb_exc_raise(exc); +} +static inline void +rb_raise_cstr(VALUE etype, const char *mesg) +{ + VALUE str = ((__builtin_constant_p(mesg) ? rbimpl_str_new_cstr : rb_str_new_cstr) (mesg)); + rb_raise_cstr_i(etype, str); +} +static inline void +rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name) +{ + VALUE exc = rb_name_err_new(mesg, recv, name); + rb_exc_raise(exc); +} +static inline void +rb_name_err_raise(const char *mesg, VALUE recv, VALUE name) +{ + VALUE str = (__builtin_constant_p(mesg) ? rb_fstring_new((mesg), (long)strlen(mesg)) : (rb_fstring_cstr)(mesg)); + rb_name_err_raise_str(str, recv, name); +} +static inline void +rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name) +{ + VALUE exc = rb_key_err_new(mesg, recv, name); + rb_exc_raise(exc); +} +static inline _Bool +rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type) +{ + return (__builtin_constant_p(RUBY_T_DATA) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_DATA)) : (RB_TYPE_P)((obj), (RUBY_T_DATA))) && RTYPEDDATA_P(obj) && (RTYPEDDATA_TYPE(obj) == data_type); +} + +#define INTERNAL_EVAL_H +#define id_signo ruby_static_id_signo +#define id_status ruby_static_id_status +extern ID ruby_static_id_signo; +extern ID ruby_static_id_status; +VALUE rb_refinement_module_get_refined_class(VALUE module); +void rb_class_modify_check(VALUE); +__declspec(noreturn) VALUE rb_f_raise(int argc, VALUE *argv); +VALUE rb_get_backtrace(VALUE info); +void rb_call_end_proc(VALUE data); +void rb_mark_end_proc(void); + +#define INTERNAL_INITS_H +void Init_class_hierarchy(void); +void Init_enc(void); +void Init_ext(void); +void Init_File(void); +void Init_heap(void); +int Init_enc_set_filesystem_encoding(void); +void Init_newline(void); +void Init_BareVM(void); +void Init_vm_objects(void); +void Init_vm_backtrace(void); +void Init_vm_eval(void); +void Init_vm_stack_canary(void); +void Init_eval_method(void); +void rb_call_inits(void); + +#define INTERNAL_OBJECT_H + +#define INTERNAL_CLASS_H + +#define RUBY_ID_TABLE_H 1 +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +struct rb_id_table; +enum rb_id_table_iterator_result { + ID_TABLE_CONTINUE = ST_CONTINUE, + ID_TABLE_STOP = ST_STOP, + ID_TABLE_DELETE = ST_DELETE, + ID_TABLE_REPLACE = ST_REPLACE, + ID_TABLE_ITERATOR_RESULT_END +}; +struct rb_id_table *rb_id_table_create(size_t size); +void rb_id_table_free(struct rb_id_table *tbl); +void rb_id_table_clear(struct rb_id_table *tbl); +size_t rb_id_table_size(const struct rb_id_table *tbl); +size_t rb_id_table_memsize(const struct rb_id_table *tbl); +int rb_id_table_insert(struct rb_id_table *tbl, ID id, VALUE val); +int rb_id_table_lookup(struct rb_id_table *tbl, ID id, VALUE *valp); +int rb_id_table_delete(struct rb_id_table *tbl, ID id); +typedef enum rb_id_table_iterator_result rb_id_table_update_callback_func_t(ID *id, VALUE *val, void *data, int existing); +typedef enum rb_id_table_iterator_result rb_id_table_foreach_func_t(ID id, VALUE val, void *data); +typedef enum rb_id_table_iterator_result rb_id_table_foreach_values_func_t(VALUE val, void *data); +void rb_id_table_foreach(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, void *data); +void rb_id_table_foreach_with_replace(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, rb_id_table_update_callback_func_t *replace, void *data); +void rb_id_table_foreach_values(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, void *data); +struct rb_subclass_entry { + VALUE klass; + struct rb_subclass_entry *next; + struct rb_subclass_entry *prev; +}; +struct rb_iv_index_tbl_entry { + uint32_t index; + rb_serial_t class_serial; + VALUE class_value; +}; +struct rb_cvar_class_tbl_entry { + uint32_t index; + rb_serial_t global_cvar_state; + const rb_cref_t * cref; + VALUE class_value; +}; +struct rb_classext_struct { + struct st_table *iv_index_tbl; + struct st_table *iv_tbl; + struct rb_id_table *m_tbl; + struct rb_id_table *const_tbl; + struct rb_id_table *callable_m_tbl; + struct rb_id_table *cc_tbl; + struct rb_id_table *cvc_tbl; + struct rb_subclass_entry *subclasses; + struct rb_subclass_entry *subclass_entry; + struct rb_subclass_entry *module_subclass_entry; + const VALUE origin_; + const VALUE refined_class; + rb_alloc_func_t allocator; + const VALUE includer; +}; +struct RClass { + struct RBasic basic; + VALUE super; + struct rb_classext_struct *ptr; + rb_serial_t class_serial; +}; +typedef struct rb_subclass_entry rb_subclass_entry_t; +typedef struct rb_classext_struct rb_classext_t; +#define RCLASS_EXT(c) (RCLASS(c)->ptr) +#define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl) +#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl) +#define RCLASS_M_TBL(c) (RCLASS_EXT(c)->m_tbl) +#define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl) +#define RCLASS_CC_TBL(c) (RCLASS_EXT(c)->cc_tbl) +#define RCLASS_CVC_TBL(c) (RCLASS_EXT(c)->cvc_tbl) +#define RCLASS_IV_INDEX_TBL(c) (RCLASS_EXT(c)->iv_index_tbl) +#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_) +#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class) +#define RCLASS_SERIAL(c) (RCLASS(c)->class_serial) +#define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer) +#define RCLASS_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->subclass_entry) +#define RCLASS_MODULE_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->module_subclass_entry) +#define RCLASS_ALLOCATOR(c) (RCLASS_EXT(c)->allocator) +#define RCLASS_SUBCLASSES(c) (RCLASS_EXT(c)->subclasses) +#define RICLASS_IS_ORIGIN FL_USER5 +#define RCLASS_CLONED FL_USER6 +#define RICLASS_ORIGIN_SHARED_MTBL FL_USER8 +void rb_class_subclass_add(VALUE super, VALUE klass); +void rb_class_remove_from_super_subclasses(VALUE); +void rb_class_remove_subclass_head(VALUE); +int rb_singleton_class_internal_p(VALUE sklass); +VALUE rb_class_boot(VALUE); +VALUE rb_class_s_alloc(VALUE klass); +VALUE rb_module_s_alloc(VALUE klass); +void rb_module_set_initialized(VALUE module); +void rb_module_check_initializable(VALUE module); +VALUE rb_make_metaclass(VALUE, VALUE); +VALUE rb_include_class_new(VALUE, VALUE); +void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE); +void rb_class_detach_subclasses(VALUE); +void rb_class_detach_module_subclasses(VALUE); +void rb_class_remove_from_module_subclasses(VALUE); +VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj); +VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj); +VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj); +VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj); +VALUE rb_special_singleton_class(VALUE); +VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach); +VALUE rb_singleton_class_get(VALUE obj); +void rb_undef_methods_from(VALUE klass, VALUE super); +static inline void RCLASS_SET_ORIGIN(VALUE klass, VALUE origin); +static inline void RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass); +static inline VALUE RCLASS_SUPER(VALUE klass); +static inline VALUE RCLASS_SET_SUPER(VALUE klass, VALUE super); +static inline void RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass); +#pragma GCC visibility push(default) +VALUE rb_class_inherited(VALUE, VALUE); +VALUE rb_keyword_error_new(const char *, VALUE); +#pragma GCC visibility pop +static inline void +RCLASS_SET_ORIGIN(VALUE klass, VALUE origin) +{ + rb_obj_write((VALUE)(klass), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&((((struct RClass *)(klass))->ptr)->origin_))) unaligned_member_access_result = ((VALUE *)(&((((struct RClass *)(klass))->ptr)->origin_))); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(origin), "../ruby-3.1.5/internal/class.h", 161); + if (klass != origin) RB_FL_SET(origin, ((VALUE)RUBY_FL_USER5)); +} +static inline void +RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass) +{ + RB_FL_SET(iclass, ((VALUE)RUBY_FL_USER8)); +} +static inline _Bool +RICLASS_OWNS_M_TBL_P(VALUE iclass) +{ + return RB_FL_TEST_RAW(iclass, ((VALUE)RUBY_FL_USER5) | ((VALUE)RUBY_FL_USER8)) == ((VALUE)RUBY_FL_USER5); +} +static inline void +RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass) +{ + rb_obj_write((VALUE)(iclass), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&((((struct RClass *)(iclass))->ptr)->includer))) unaligned_member_access_result = ((VALUE *)(&((((struct RClass *)(iclass))->ptr)->includer))); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(klass), "../ruby-3.1.5/internal/class.h", 180); +} +static inline VALUE +RCLASS_SUPER(VALUE klass) +{ + return ((struct RClass *)(klass))->super; +} +static inline VALUE +RCLASS_SET_SUPER(VALUE klass, VALUE super) +{ + if (super) { + rb_class_remove_from_super_subclasses(klass); + rb_class_subclass_add(super, klass); + } + rb_obj_write((VALUE)(klass), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&((struct RClass *)(klass))->super)) unaligned_member_access_result = ((VALUE *)(&((struct RClass *)(klass))->super)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(super), "../ruby-3.1.5/internal/class.h", 196); + return super; +} +VALUE rb_class_search_ancestor(VALUE klass, VALUE super); +__declspec(noreturn) void rb_undefined_alloc(VALUE klass); +double rb_num_to_dbl(VALUE val); +VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound); +VALUE rb_immutable_obj_clone(int, VALUE *, VALUE); +VALUE rb_check_convert_type_with_id(VALUE,int,const char*,ID); +int rb_bool_expected(VALUE, const char *); +static inline void RBASIC_CLEAR_CLASS(VALUE obj); +static inline void RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass); +static inline void RBASIC_SET_CLASS(VALUE obj, VALUE klass); +static inline struct st_table *ROBJECT_IV_INDEX_TBL_inline(VALUE obj); +#pragma GCC visibility push(default) +int rb_opts_exception_p(VALUE opts, int default_value); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +__attribute__((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2); +__attribute__((__const__)) VALUE rb_obj_not(VALUE obj); +VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2); +void rb_obj_copy_ivar(VALUE dest, VALUE obj); +VALUE rb_false(VALUE obj); +VALUE rb_convert_type_with_id(VALUE v, int t, const char* nam, ID mid); +VALUE rb_obj_size(VALUE self, VALUE args, VALUE obj); +VALUE rb_get_freeze_opt(int argc, VALUE *argv); +#pragma GCC visibility pop +static inline void +RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass) +{ + const VALUE *ptr = &((struct RBasic *)(obj))->klass; + *(VALUE *)ptr = klass; +} +static inline void +RBASIC_CLEAR_CLASS(VALUE obj) +{ + RBASIC_SET_CLASS_RAW(obj, 0); +} +static inline void +RBASIC_SET_CLASS(VALUE obj, VALUE klass) +{ + VALUE oldv = RBASIC_CLASS(obj); + RBASIC_SET_CLASS_RAW(obj, klass); + (rb_obj_written((VALUE)(obj), (VALUE)(oldv), (VALUE)(klass), "../ruby-3.1.5/internal/object.h", 65)); +} +__attribute__((__pure__)) +static inline struct st_table * +ROBJECT_IV_INDEX_TBL_inline(VALUE obj) +{ + if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) { + VALUE klass = rb_obj_class(obj); + return ((((struct RClass *)(klass))->ptr)->iv_index_tbl); + } + else { + const struct RObject *const ptr = ((struct RObject *)(obj)); + return ptr->as.heap.iv_index_tbl; + } +} +#define ROBJECT_IV_INDEX_TBL ROBJECT_IV_INDEX_TBL_inline + +#define INTERNAL_PARSE_H +struct rb_iseq_struct; +VALUE rb_parser_set_yydebug(VALUE, VALUE); +void *rb_parser_load_file(VALUE parser, VALUE name); +void rb_parser_keep_script_lines(VALUE vparser); +#pragma GCC visibility push(default) +VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int); +#pragma GCC visibility pop + +#define INTERNAL_PROC_H +struct rb_block; +struct rb_iseq_struct; +VALUE rb_proc_location(VALUE self); +st_index_t rb_hash_proc(st_index_t hash, VALUE proc); +int rb_block_pair_yield_optimizable(void); +int rb_block_arity(void); +int rb_block_min_max_arity(int *max); +VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info); +VALUE rb_callable_receiver(VALUE); +#pragma GCC visibility push(default) +VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val); +VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc); +VALUE rb_iseq_location(const struct rb_iseq_struct *iseq); +VALUE rb_sym_to_proc(VALUE sym); +#pragma GCC visibility pop + +#define INTERNAL_RE_H +VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline); +VALUE rb_reg_check_preprocess(VALUE); +long rb_reg_search0(VALUE, VALUE, long, int, int); +VALUE rb_reg_match_p(VALUE re, VALUE str, long pos); +_Bool rb_reg_start_with_p(VALUE re, VALUE str); +VALUE rb_reg_hash(VALUE re); +VALUE rb_reg_equal(VALUE re1, VALUE re2); +void rb_backref_set_string(VALUE string, long pos, long len); +void rb_match_unbusy(VALUE); +int rb_match_count(VALUE match); +int rb_match_nth_defined(int nth, VALUE match); +#pragma GCC visibility push(default) +VALUE rb_reg_new_ary(VALUE ary, int options); +#pragma GCC visibility pop + +#define INTERNAL_SYMBOL_H +#undef rb_sym_intern_ascii_cstr +VALUE rb_to_symbol_type(VALUE obj); +VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc); +VALUE rb_sym_intern_ascii(const char *ptr, long len); +VALUE rb_sym_intern_ascii_cstr(const char *ptr); +int rb_is_const_name(VALUE name); +int rb_is_class_name(VALUE name); +int rb_is_instance_name(VALUE name); +int rb_is_local_name(VALUE name); +__attribute__((__pure__)) int rb_is_const_sym(VALUE sym); +__attribute__((__pure__)) int rb_is_attrset_sym(VALUE sym); +ID rb_make_internal_id(void); +ID rb_make_temporary_id(size_t n); +void rb_gc_free_dsymbol(VALUE); +#define rb_sym_intern_ascii_cstr(ptr) (__builtin_constant_p(ptr) ? rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : rb_sym_intern_ascii_cstr(ptr)) + +#define INTERNAL_THREAD_H +struct rb_thread_struct; +#define COVERAGE_INDEX_LINES 0 +#define COVERAGE_INDEX_BRANCHES 1 +#define COVERAGE_TARGET_LINES 1 +#define COVERAGE_TARGET_BRANCHES 2 +#define COVERAGE_TARGET_METHODS 4 +#define COVERAGE_TARGET_ONESHOT_LINES 8 +VALUE rb_obj_is_mutex(VALUE obj); +VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg); +void rb_thread_execute_interrupts(VALUE th); +VALUE rb_get_coverages(void); +int rb_get_coverage_mode(void); +VALUE rb_default_coverage(int); +VALUE rb_thread_shield_new(void); +_Bool rb_thread_shield_owned(VALUE self); +VALUE rb_thread_shield_wait(VALUE self); +VALUE rb_thread_shield_release(VALUE self); +VALUE rb_thread_shield_destroy(VALUE self); +int rb_thread_to_be_killed(VALUE thread); +void rb_mutex_allow_trap(VALUE self, int val); +VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data); +VALUE rb_mutex_owned_p(VALUE self); +int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout); +#pragma GCC visibility push(default) +VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd); +int ruby_thread_has_gvl_p(void); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing); +#pragma GCC visibility pop + + +#define INTERNAL_SANITIZERS_H +#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE_ADDRESS(NOINLINE(x)) +#define __asan_poison_memory_region(x,y) +#define __asan_unpoison_memory_region(x,y) +#define __asan_region_is_poisoned(x,y) 0 +#define __msan_allocated_memory(x,y) ((void)(x), (void)(y)) +#define __msan_poison(x,y) ((void)(x), (void)(y)) +#define __msan_unpoison(x,y) ((void)(x), (void)(y)) +#define __msan_unpoison_string(x) ((void)(x)) +#define VALGRIND_MAKE_MEM_DEFINED(p,n) 0 +#define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0 + +#define RUBY_ISEQ_H 1 +extern __declspec(dllimport) const int ruby_api_version[]; +#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0]) +#define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1]) +#define USE_ISEQ_NODE_ID 1 +extern const ID rb_iseq_shared_exc_local_tbl[]; +#define ISEQ_COVERAGE(iseq) iseq->body->variable.coverage +#define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &iseq->body->variable.coverage, cov) +#define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES) +#define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES) +#define ISEQ_PC2BRANCHINDEX(iseq) iseq->body->variable.pc2branchindex +#define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &iseq->body->variable.pc2branchindex, h) +#define ISEQ_FLIP_CNT(iseq) (iseq)->body->variable.flip_count +static inline rb_snum_t +ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq) +{ + rb_snum_t cnt = iseq->body->variable.flip_count; + iseq->body->variable.flip_count += 1; + return cnt; +} +static inline VALUE * +ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq) +{ + return iseq->body->variable.original_iseq; +} +static inline void +ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq) +{ + void *ptr = iseq->body->variable.original_iseq; + iseq->body->variable.original_iseq = ((void*)0); + if (ptr) { + ruby_xfree(ptr); + } +} +static inline VALUE * +ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size) +{ + return iseq->body->variable.original_iseq = + ((VALUE *)ruby_xmalloc2((size), sizeof(VALUE))); +} +#define ISEQ_TRACE_EVENTS (RUBY_EVENT_LINE | RUBY_EVENT_CLASS | RUBY_EVENT_END | RUBY_EVENT_CALL | RUBY_EVENT_RETURN| RUBY_EVENT_C_CALL| RUBY_EVENT_C_RETURN| RUBY_EVENT_B_CALL| RUBY_EVENT_B_RETURN| RUBY_EVENT_COVERAGE_LINE| RUBY_EVENT_COVERAGE_BRANCH) +#define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1 +#define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2 +#define ISEQ_TRANSLATED IMEMO_FL_USER3 +#define ISEQ_MARKABLE_ISEQ IMEMO_FL_USER4 +#define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW(((VALUE)iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0) +struct iseq_compile_data { + const VALUE err_info; + const VALUE catch_table_ary; + struct iseq_label_data *start_label; + struct iseq_label_data *end_label; + struct iseq_label_data *redo_label; + const rb_iseq_t *current_block; + struct iseq_compile_data_ensure_node_stack *ensure_node_stack; + struct { + struct iseq_compile_data_storage *storage_head; + struct iseq_compile_data_storage *storage_current; + } node; + struct { + struct iseq_compile_data_storage *storage_head; + struct iseq_compile_data_storage *storage_current; + } insn; + _Bool in_rescue; + int loopval_popped; + int last_line; + int label_no; + int node_level; + int isolated_depth; + unsigned int ci_index; + const rb_compile_option_t *option; + struct rb_id_table *ivar_cache_table; + const struct rb_builtin_function *builtin_function_table; + const NODE *root_node; +}; +static inline struct iseq_compile_data * +ISEQ_COMPILE_DATA(const rb_iseq_t *iseq) +{ + if (iseq->flags & ((VALUE)RUBY_FL_USER6)) { + return iseq->aux.compile_data; + } + else { + return ((void*)0); + } +} +static inline void +ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq) +{ + iseq->aux.compile_data = (((struct iseq_compile_data *)ruby_xcalloc((1), sizeof(struct iseq_compile_data)))); + iseq->flags |= ((VALUE)RUBY_FL_USER6); +} +static inline void +ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq) +{ + iseq->flags &= ~((VALUE)RUBY_FL_USER6); + iseq->aux.compile_data = ((void*)0); +} +static inline rb_iseq_t * +iseq_imemo_alloc(void) +{ + return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0); +} +VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt); +void rb_ibf_load_iseq_complete(rb_iseq_t *iseq); +const rb_iseq_t *rb_iseq_ibf_load(VALUE str); +const rb_iseq_t *rb_iseq_ibf_load_bytes(const char *cstr, size_t); +VALUE rb_iseq_ibf_load_extra_data(VALUE str); +void rb_iseq_init_trace(rb_iseq_t *iseq); +int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, _Bool target_bmethod); +int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval); +const rb_iseq_t *rb_iseq_load_iseq(VALUE fname); +unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body); +int rb_vm_insn_addr2opcode(const void *addr); +#pragma GCC visibility push(default) +VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node); +VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc); +VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq); +void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, + VALUE locals, VALUE args, + VALUE exception, VALUE body); +void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena); +VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt); +VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc); +unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos); +int rb_iseq_node_id(const rb_iseq_t *iseq, size_t pos); +void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events); +void rb_iseq_trace_set_all(rb_event_flag_t turnon_events); +void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq); +struct rb_iseq_constant_body *rb_iseq_constant_body_alloc(void); +VALUE rb_iseqw_new(const rb_iseq_t *iseq); +const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw); +VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq); +int rb_iseq_from_eval_p(const rb_iseq_t *iseq); +VALUE rb_iseq_type(const rb_iseq_t *iseq); +VALUE rb_iseq_label(const rb_iseq_t *iseq); +VALUE rb_iseq_base_label(const rb_iseq_t *iseq); +VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq); +VALUE rb_iseq_method_name(const rb_iseq_t *iseq); +void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column); +void rb_iseq_remove_coverage_all(void); +const rb_iseq_t *rb_method_iseq(VALUE body); +const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc); +struct rb_compile_option_struct { + unsigned int inline_const_cache: 1; + unsigned int peephole_optimization: 1; + unsigned int tailcall_optimization: 1; + unsigned int specialized_instruction: 1; + unsigned int operands_unification: 1; + unsigned int instructions_unification: 1; + unsigned int stack_caching: 1; + unsigned int frozen_string_literal: 1; + unsigned int debug_frozen_string_literal: 1; + unsigned int coverage_enabled: 1; + int debug_level; +}; +struct iseq_insn_info_entry { + int line_no; + int node_id; + rb_event_flag_t events; +}; +struct iseq_catch_table_entry { + enum catch_type { + CATCH_TYPE_RESCUE = __builtin_choose_expr( __builtin_constant_p(1), ((VALUE)(1)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(1)), + CATCH_TYPE_ENSURE = __builtin_choose_expr( __builtin_constant_p(2), ((VALUE)(2)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(2)), + CATCH_TYPE_RETRY = __builtin_choose_expr( __builtin_constant_p(3), ((VALUE)(3)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(3)), + CATCH_TYPE_BREAK = __builtin_choose_expr( __builtin_constant_p(4), ((VALUE)(4)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(4)), + CATCH_TYPE_REDO = __builtin_choose_expr( __builtin_constant_p(5), ((VALUE)(5)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(5)), + CATCH_TYPE_NEXT = __builtin_choose_expr( __builtin_constant_p(6), ((VALUE)(6)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(6)) + } type; + rb_iseq_t *iseq; + unsigned int start; + unsigned int end; + unsigned int cont; + unsigned int sp; +}; +struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[];} __attribute__((packed)); +static inline int +iseq_catch_table_bytes(int n) +{ + enum { + catch_table_entry_size = sizeof(struct iseq_catch_table_entry), + catch_table_entries_max = (2147483647 - __builtin_offsetof(struct iseq_catch_table, entries)) / catch_table_entry_size + }; + if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n); + return (int)(__builtin_offsetof(struct iseq_catch_table, entries) + + n * catch_table_entry_size); +} +#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512) +struct iseq_compile_data_storage { + struct iseq_compile_data_storage *next; + unsigned int pos; + unsigned int size; + char buff[]; +}; +enum defined_type { + DEFINED_NOT_DEFINED, + DEFINED_NIL = 1, + DEFINED_IVAR, + DEFINED_LVAR, + DEFINED_GVAR, + DEFINED_CVAR, + DEFINED_CONST, + DEFINED_METHOD, + DEFINED_YIELD, + DEFINED_ZSUPER, + DEFINED_SELF, + DEFINED_TRUE, + DEFINED_FALSE, + DEFINED_ASGN, + DEFINED_EXPR, + DEFINED_REF, + DEFINED_FUNC, + DEFINED_CONST_FROM +}; +VALUE rb_iseq_defined_string(enum defined_type type); +VALUE rb_iseq_local_variables(const rb_iseq_t *iseq); +#pragma GCC visibility pop + +#define RUBY_MJIT_H 1 +#define USE_DEBUG_COUNTER 0 +#define RUBY_DEBUG_COUNTER_H 1 +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +enum rb_debug_counter_type { +#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_##name, +RB_DEBUG_COUNTER_mc_inline_hit, +RB_DEBUG_COUNTER_mc_inline_miss_klass, +RB_DEBUG_COUNTER_mc_inline_miss_invalidated, +RB_DEBUG_COUNTER_mc_inline_miss_empty, +RB_DEBUG_COUNTER_mc_inline_miss_same_cc, +RB_DEBUG_COUNTER_mc_inline_miss_same_cme, +RB_DEBUG_COUNTER_mc_inline_miss_same_def, +RB_DEBUG_COUNTER_mc_inline_miss_diff, +RB_DEBUG_COUNTER_cvar_write_inline_hit, +RB_DEBUG_COUNTER_cvar_read_inline_hit, +RB_DEBUG_COUNTER_cvar_inline_miss, +RB_DEBUG_COUNTER_cvar_class_invalidate, +RB_DEBUG_COUNTER_cvar_include_invalidate, +RB_DEBUG_COUNTER_mc_cme_complement, +RB_DEBUG_COUNTER_mc_cme_complement_hit, +RB_DEBUG_COUNTER_mc_search, +RB_DEBUG_COUNTER_mc_search_notfound, +RB_DEBUG_COUNTER_mc_search_super, +RB_DEBUG_COUNTER_ci_packed, +RB_DEBUG_COUNTER_ci_kw, +RB_DEBUG_COUNTER_ci_nokw, +RB_DEBUG_COUNTER_ci_runtime, +RB_DEBUG_COUNTER_cc_new, +RB_DEBUG_COUNTER_cc_temp, +RB_DEBUG_COUNTER_cc_found_in_ccs, +RB_DEBUG_COUNTER_cc_not_found_in_ccs, +RB_DEBUG_COUNTER_cc_ent_invalidate, +RB_DEBUG_COUNTER_cc_cme_invalidate, +RB_DEBUG_COUNTER_cc_invalidate_leaf, +RB_DEBUG_COUNTER_cc_invalidate_leaf_ccs, +RB_DEBUG_COUNTER_cc_invalidate_leaf_callable, +RB_DEBUG_COUNTER_cc_invalidate_tree, +RB_DEBUG_COUNTER_cc_invalidate_tree_cme, +RB_DEBUG_COUNTER_cc_invalidate_tree_callable, +RB_DEBUG_COUNTER_cc_invalidate_negative, +RB_DEBUG_COUNTER_ccs_free, +RB_DEBUG_COUNTER_ccs_maxlen, +RB_DEBUG_COUNTER_ccs_found, +RB_DEBUG_COUNTER_ccs_not_found, +RB_DEBUG_COUNTER_call0_public, +RB_DEBUG_COUNTER_call0_other, +RB_DEBUG_COUNTER_gccct_hit, +RB_DEBUG_COUNTER_gccct_miss, +RB_DEBUG_COUNTER_gccct_null, +RB_DEBUG_COUNTER_iseq_num, +RB_DEBUG_COUNTER_iseq_cd_num, +RB_DEBUG_COUNTER_ccf_general, +RB_DEBUG_COUNTER_ccf_iseq_setup, +RB_DEBUG_COUNTER_ccf_iseq_setup_0start, +RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start, +RB_DEBUG_COUNTER_ccf_iseq_fix, +RB_DEBUG_COUNTER_ccf_iseq_opt, +RB_DEBUG_COUNTER_ccf_iseq_kw1, +RB_DEBUG_COUNTER_ccf_iseq_kw2, +RB_DEBUG_COUNTER_ccf_cfunc, +RB_DEBUG_COUNTER_ccf_cfunc_with_frame, +RB_DEBUG_COUNTER_ccf_ivar, +RB_DEBUG_COUNTER_ccf_attrset, +RB_DEBUG_COUNTER_ccf_method_missing, +RB_DEBUG_COUNTER_ccf_zsuper, +RB_DEBUG_COUNTER_ccf_bmethod, +RB_DEBUG_COUNTER_ccf_opt_send, +RB_DEBUG_COUNTER_ccf_opt_call, +RB_DEBUG_COUNTER_ccf_opt_block_call, +RB_DEBUG_COUNTER_ccf_opt_struct_aref, +RB_DEBUG_COUNTER_ccf_opt_struct_aset, +RB_DEBUG_COUNTER_ccf_super_method, +RB_DEBUG_COUNTER_frame_push, +RB_DEBUG_COUNTER_frame_push_method, +RB_DEBUG_COUNTER_frame_push_block, +RB_DEBUG_COUNTER_frame_push_class, +RB_DEBUG_COUNTER_frame_push_top, +RB_DEBUG_COUNTER_frame_push_cfunc, +RB_DEBUG_COUNTER_frame_push_ifunc, +RB_DEBUG_COUNTER_frame_push_eval, +RB_DEBUG_COUNTER_frame_push_rescue, +RB_DEBUG_COUNTER_frame_push_dummy, +RB_DEBUG_COUNTER_frame_R2R, +RB_DEBUG_COUNTER_frame_R2C, +RB_DEBUG_COUNTER_frame_C2C, +RB_DEBUG_COUNTER_frame_C2R, +RB_DEBUG_COUNTER_ivar_get_ic_hit, +RB_DEBUG_COUNTER_ivar_get_ic_miss, +RB_DEBUG_COUNTER_ivar_get_ic_miss_serial, +RB_DEBUG_COUNTER_ivar_get_ic_miss_unset, +RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject, +RB_DEBUG_COUNTER_ivar_set_ic_hit, +RB_DEBUG_COUNTER_ivar_set_ic_miss, +RB_DEBUG_COUNTER_ivar_set_ic_miss_serial, +RB_DEBUG_COUNTER_ivar_set_ic_miss_unset, +RB_DEBUG_COUNTER_ivar_set_ic_miss_iv_hit, +RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject, +RB_DEBUG_COUNTER_ivar_get_base, +RB_DEBUG_COUNTER_ivar_set_base, +RB_DEBUG_COUNTER_lvar_get, +RB_DEBUG_COUNTER_lvar_get_dynamic, +RB_DEBUG_COUNTER_lvar_set, +RB_DEBUG_COUNTER_lvar_set_dynamic, +RB_DEBUG_COUNTER_lvar_set_slowpath, +RB_DEBUG_COUNTER_gc_count, +RB_DEBUG_COUNTER_gc_minor_newobj, +RB_DEBUG_COUNTER_gc_minor_malloc, +RB_DEBUG_COUNTER_gc_minor_method, +RB_DEBUG_COUNTER_gc_minor_capi, +RB_DEBUG_COUNTER_gc_minor_stress, +RB_DEBUG_COUNTER_gc_major_nofree, +RB_DEBUG_COUNTER_gc_major_oldgen, +RB_DEBUG_COUNTER_gc_major_shady, +RB_DEBUG_COUNTER_gc_major_force, +RB_DEBUG_COUNTER_gc_major_oldmalloc, +RB_DEBUG_COUNTER_gc_enter_start, +RB_DEBUG_COUNTER_gc_enter_mark_continue, +RB_DEBUG_COUNTER_gc_enter_sweep_continue, +RB_DEBUG_COUNTER_gc_enter_rest, +RB_DEBUG_COUNTER_gc_enter_finalizer, +RB_DEBUG_COUNTER_gc_isptr_trial, +RB_DEBUG_COUNTER_gc_isptr_range, +RB_DEBUG_COUNTER_gc_isptr_align, +RB_DEBUG_COUNTER_gc_isptr_maybe, +RB_DEBUG_COUNTER_obj_newobj, +RB_DEBUG_COUNTER_obj_newobj_slowpath, +RB_DEBUG_COUNTER_obj_newobj_wb_unprotected, +RB_DEBUG_COUNTER_obj_free, +RB_DEBUG_COUNTER_obj_promote, +RB_DEBUG_COUNTER_obj_wb_unprotect, +RB_DEBUG_COUNTER_obj_obj_embed, +RB_DEBUG_COUNTER_obj_obj_transient, +RB_DEBUG_COUNTER_obj_obj_ptr, +RB_DEBUG_COUNTER_obj_str_ptr, +RB_DEBUG_COUNTER_obj_str_embed, +RB_DEBUG_COUNTER_obj_str_shared, +RB_DEBUG_COUNTER_obj_str_nofree, +RB_DEBUG_COUNTER_obj_str_fstr, +RB_DEBUG_COUNTER_obj_ary_embed, +RB_DEBUG_COUNTER_obj_ary_transient, +RB_DEBUG_COUNTER_obj_ary_ptr, +RB_DEBUG_COUNTER_obj_ary_extracapa, +RB_DEBUG_COUNTER_obj_ary_shared_create, +RB_DEBUG_COUNTER_obj_ary_shared, +RB_DEBUG_COUNTER_obj_ary_shared_root_occupied, +RB_DEBUG_COUNTER_obj_hash_empty, +RB_DEBUG_COUNTER_obj_hash_1, +RB_DEBUG_COUNTER_obj_hash_2, +RB_DEBUG_COUNTER_obj_hash_3, +RB_DEBUG_COUNTER_obj_hash_4, +RB_DEBUG_COUNTER_obj_hash_5_8, +RB_DEBUG_COUNTER_obj_hash_g8, +RB_DEBUG_COUNTER_obj_hash_null, +RB_DEBUG_COUNTER_obj_hash_ar, +RB_DEBUG_COUNTER_obj_hash_st, +RB_DEBUG_COUNTER_obj_hash_transient, +RB_DEBUG_COUNTER_obj_hash_force_convert, +RB_DEBUG_COUNTER_obj_struct_embed, +RB_DEBUG_COUNTER_obj_struct_transient, +RB_DEBUG_COUNTER_obj_struct_ptr, +RB_DEBUG_COUNTER_obj_data_empty, +RB_DEBUG_COUNTER_obj_data_xfree, +RB_DEBUG_COUNTER_obj_data_imm_free, +RB_DEBUG_COUNTER_obj_data_zombie, +RB_DEBUG_COUNTER_obj_match_under4, +RB_DEBUG_COUNTER_obj_match_ge4, +RB_DEBUG_COUNTER_obj_match_ge8, +RB_DEBUG_COUNTER_obj_match_ptr, +RB_DEBUG_COUNTER_obj_iclass_ptr, +RB_DEBUG_COUNTER_obj_class_ptr, +RB_DEBUG_COUNTER_obj_module_ptr, +RB_DEBUG_COUNTER_obj_bignum_ptr, +RB_DEBUG_COUNTER_obj_bignum_embed, +RB_DEBUG_COUNTER_obj_float, +RB_DEBUG_COUNTER_obj_complex, +RB_DEBUG_COUNTER_obj_rational, +RB_DEBUG_COUNTER_obj_regexp_ptr, +RB_DEBUG_COUNTER_obj_file_ptr, +RB_DEBUG_COUNTER_obj_symbol, +RB_DEBUG_COUNTER_obj_imemo_ment, +RB_DEBUG_COUNTER_obj_imemo_iseq, +RB_DEBUG_COUNTER_obj_imemo_env, +RB_DEBUG_COUNTER_obj_imemo_tmpbuf, +RB_DEBUG_COUNTER_obj_imemo_ast, +RB_DEBUG_COUNTER_obj_imemo_cref, +RB_DEBUG_COUNTER_obj_imemo_svar, +RB_DEBUG_COUNTER_obj_imemo_throw_data, +RB_DEBUG_COUNTER_obj_imemo_ifunc, +RB_DEBUG_COUNTER_obj_imemo_memo, +RB_DEBUG_COUNTER_obj_imemo_parser_strterm, +RB_DEBUG_COUNTER_obj_imemo_callinfo, +RB_DEBUG_COUNTER_obj_imemo_callcache, +RB_DEBUG_COUNTER_obj_imemo_constcache, +RB_DEBUG_COUNTER_artable_hint_hit, +RB_DEBUG_COUNTER_artable_hint_miss, +RB_DEBUG_COUNTER_artable_hint_notfound, +RB_DEBUG_COUNTER_heap_xmalloc, +RB_DEBUG_COUNTER_heap_xrealloc, +RB_DEBUG_COUNTER_heap_xfree, +RB_DEBUG_COUNTER_theap_alloc, +RB_DEBUG_COUNTER_theap_alloc_fail, +RB_DEBUG_COUNTER_theap_evacuate, +RB_DEBUG_COUNTER_vm_sync_lock, +RB_DEBUG_COUNTER_vm_sync_lock_enter, +RB_DEBUG_COUNTER_vm_sync_lock_enter_nb, +RB_DEBUG_COUNTER_vm_sync_lock_enter_cr, +RB_DEBUG_COUNTER_vm_sync_barrier, +RB_DEBUG_COUNTER_mjit_exec, +RB_DEBUG_COUNTER_mjit_exec_not_added, +RB_DEBUG_COUNTER_mjit_exec_not_ready, +RB_DEBUG_COUNTER_mjit_exec_not_compiled, +RB_DEBUG_COUNTER_mjit_exec_call_func, +RB_DEBUG_COUNTER_mjit_add_iseq_to_process, +RB_DEBUG_COUNTER_mjit_unload_units, +RB_DEBUG_COUNTER_mjit_frame_VM2VM, +RB_DEBUG_COUNTER_mjit_frame_VM2JT, +RB_DEBUG_COUNTER_mjit_frame_JT2JT, +RB_DEBUG_COUNTER_mjit_frame_JT2VM, +RB_DEBUG_COUNTER_mjit_cancel, +RB_DEBUG_COUNTER_mjit_cancel_ivar_inline, +RB_DEBUG_COUNTER_mjit_cancel_exivar_inline, +RB_DEBUG_COUNTER_mjit_cancel_send_inline, +RB_DEBUG_COUNTER_mjit_cancel_opt_insn, +RB_DEBUG_COUNTER_mjit_cancel_invalidate_all, +RB_DEBUG_COUNTER_mjit_cancel_leave, +RB_DEBUG_COUNTER_mjit_length_unit_queue, +RB_DEBUG_COUNTER_mjit_length_active_units, +RB_DEBUG_COUNTER_mjit_length_compact_units, +RB_DEBUG_COUNTER_mjit_length_stale_units, +RB_DEBUG_COUNTER_mjit_compile_failures, + RB_DEBUG_COUNTER_MAX +#undef RB_DEBUG_COUNTER +}; +#define RB_DEBUG_COUNTER_INC(type) ((void)0) +#define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (!!(cond)) +#define RB_DEBUG_COUNTER_INC_IF(type,cond) (!!(cond)) +#define RB_DEBUG_COUNTER_ADD(type,num) ((void)0) +#define RB_DEBUG_COUNTER_SETMAX(type,num) 0 +void rb_debug_counter_show_results(const char *msg); +#pragma GCC visibility push(default) +size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr); +void ruby_debug_counter_reset(void); +void ruby_debug_counter_show_at_exit(int enable); +#pragma GCC visibility pop + +#define RUBY_H 1 +#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 +#define HAVE_RUBY_WIN32_H 1 + + +#define YJIT_H 1 +#define YJIT_STATS RUBY_DEBUG +#define YJIT_SUPPORTED_P 0 +struct rb_yjit_options { + _Bool yjit_enabled; + unsigned exec_mem_size; + unsigned call_threshold; + _Bool greedy_versioning; + _Bool no_type_prop; + unsigned max_versions; + _Bool gen_stats; + _Bool test_backend; +}; +_Bool rb_yjit_enabled_p(void); +unsigned rb_yjit_call_threshold(void); +void rb_yjit_invalidate_all_method_lookup_assumptions(void); +void rb_yjit_method_lookup_change(VALUE klass, ID mid); +void rb_yjit_cme_invalidate(VALUE cme); +void rb_yjit_collect_vm_usage_insn(int insn); +void rb_yjit_collect_binding_alloc(void); +void rb_yjit_collect_binding_set(void); +_Bool rb_yjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec); +void rb_yjit_init(struct rb_yjit_options *options); +void rb_yjit_bop_redefined(VALUE klass, const rb_method_entry_t *me, enum ruby_basic_operators bop); +void rb_yjit_constant_state_changed(void); +void rb_yjit_iseq_mark(const struct rb_iseq_constant_body *body); +void rb_yjit_iseq_update_references(const struct rb_iseq_constant_body *body); +void rb_yjit_iseq_free(const struct rb_iseq_constant_body *body); +void rb_yjit_before_ractor_spawn(void); +void rb_yjit_constant_ic_update(const rb_iseq_t *const iseq, IC ic); +void rb_yjit_tracing_invalidate_all(void); +enum rb_mjit_iseq_func { + NOT_ADDED_JIT_ISEQ_FUNC = 0, + NOT_READY_JIT_ISEQ_FUNC = 1, + NOT_COMPILED_JIT_ISEQ_FUNC = 2, + LAST_JIT_ISEQ_FUNC = 3 +}; +struct mjit_options { + char on; + char save_temps; + char warnings; + char debug; + char* debug_flags; + unsigned int wait; + unsigned int min_calls; + int verbose; + int max_cache_size; +}; +struct rb_mjit_compile_info { + _Bool disable_ivar_cache; + _Bool disable_exivar_cache; + _Bool disable_send_cache; + _Bool disable_inlining; + _Bool disable_const_cache; +}; +typedef VALUE (*mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *); +#pragma GCC visibility push(default) +extern __declspec(dllimport) struct mjit_options mjit_opts; +extern __declspec(dllimport) _Bool mjit_call_p; +extern void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq); +extern VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body); +extern struct rb_mjit_compile_info* rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body); +extern void rb_mjit_recompile_send(const rb_iseq_t *iseq); +extern void rb_mjit_recompile_ivar(const rb_iseq_t *iseq); +extern void rb_mjit_recompile_exivar(const rb_iseq_t *iseq); +extern void rb_mjit_recompile_inlining(const rb_iseq_t *iseq); +extern void rb_mjit_recompile_const(const rb_iseq_t *iseq); +#pragma GCC visibility pop +extern void mjit_cancel_all(const char *reason); +extern _Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id); +extern void mjit_init(const struct mjit_options *opts); +extern void mjit_gc_start_hook(void); +extern void mjit_gc_exit_hook(void); +extern void mjit_free_iseq(const rb_iseq_t *iseq); +extern void mjit_update_references(const rb_iseq_t *iseq); +extern void mjit_mark(void); +extern struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec); +extern void mjit_cont_free(struct mjit_cont *cont); +extern void mjit_mark_cc_entries(const struct rb_iseq_constant_body *const body); +__declspec(noinline) static __attribute__((__cold__)) VALUE mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body); +static VALUE +mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body) +{ + uintptr_t func_i = (uintptr_t)(body->jit_func); + __builtin_assume(func_i <= LAST_JIT_ISEQ_FUNC); + switch ((enum rb_mjit_iseq_func)func_i) { + case NOT_ADDED_JIT_ISEQ_FUNC: + ((void)0); + if (body->total_calls == mjit_opts.min_calls) { + rb_mjit_add_iseq_to_process(iseq); + if ((__builtin_expect(!!(mjit_opts.wait), 0))) { + return rb_mjit_wait_call(ec, body); + } + } + break; + case NOT_READY_JIT_ISEQ_FUNC: + ((void)0); + break; + case NOT_COMPILED_JIT_ISEQ_FUNC: + ((void)0); + break; + default: + break; + } + return ((VALUE)RUBY_Qundef); +} +static inline VALUE +mjit_exec(rb_execution_context_t *ec) +{ + const rb_iseq_t *iseq = ec->cfp->iseq; + struct rb_iseq_constant_body *body = iseq->body; + _Bool yjit_enabled = 0; + if (mjit_call_p || yjit_enabled) { + body->total_calls++; + } + if (!(mjit_call_p || yjit_enabled)) + return ((VALUE)RUBY_Qundef); + ((void)0); + mjit_func_t func = body->jit_func; + if (yjit_enabled && func == 0) { + return ((VALUE)RUBY_Qundef); + } + if ((__builtin_expect(!!((uintptr_t)func <= LAST_JIT_ISEQ_FUNC), 0))) { + ((void)0); + return mjit_exec_slowpath(ec, iseq, body); + } + ((void)0); + ((void)0); + return func(ec, ec->cfp); +} +void mjit_child_after_fork(void); +#define mjit_enabled true +VALUE mjit_pause(_Bool wait_p); +VALUE mjit_resume(void); +void mjit_finish(_Bool close_handle_p); + +#define RUBY_VM_H 1 +#pragma GCC visibility push(default) +typedef struct rb_vm_struct ruby_vm_t; +int ruby_vm_destruct(ruby_vm_t *vm); +void ruby_vm_at_exit(void(*func)(ruby_vm_t *)); +#pragma GCC visibility pop + + +#define RUBY_VM_CALLINFO_H + +enum vm_call_flag_bits { + VM_CALL_ARGS_SPLAT_bit, + VM_CALL_ARGS_BLOCKARG_bit, + VM_CALL_FCALL_bit, + VM_CALL_VCALL_bit, + VM_CALL_ARGS_SIMPLE_bit, + VM_CALL_BLOCKISEQ_bit, + VM_CALL_KWARG_bit, + VM_CALL_KW_SPLAT_bit, + VM_CALL_TAILCALL_bit, + VM_CALL_SUPER_bit, + VM_CALL_ZSUPER_bit, + VM_CALL_OPT_SEND_bit, + VM_CALL_KW_SPLAT_MUT_bit, + VM_CALL__END +}; +#define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit) +#define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit) +#define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit) +#define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit) +#define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit) +#define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit) +#define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit) +#define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit) +#define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit) +#define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit) +#define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit) +#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit) +#define VM_CALL_KW_SPLAT_MUT (0x01 << VM_CALL_KW_SPLAT_MUT_bit) +struct rb_callinfo_kwarg { + int keyword_len; + VALUE keywords[]; +}; +static inline size_t +rb_callinfo_kwarg_bytes(int keyword_len) +{ + return rb_size_mul_add_or_raise( + keyword_len, + sizeof(VALUE), + sizeof(struct rb_callinfo_kwarg), + rb_eRuntimeError); +} +struct rb_callinfo { + VALUE flags; + const struct rb_callinfo_kwarg *kwarg; + VALUE mid; + VALUE flag; + VALUE argc; +}; +#define USE_EMBED_CI 1 +#define CI_EMBED_TAG_bits 1 +#define CI_EMBED_ARGC_bits 15 +#define CI_EMBED_FLAG_bits 16 +#define CI_EMBED_ID_bits 32 +#define CI_EMBED_FLAG 0x01 +#define CI_EMBED_ARGC_SHFT (CI_EMBED_TAG_bits) +#define CI_EMBED_ARGC_MASK ((((VALUE)1)<> (1 + 15 + 16)) & ((((VALUE)1)<<32) - 1); + } + else { + return (ID)ci->mid; + } +} +static inline unsigned int +vm_ci_flag(const struct rb_callinfo *ci) +{ + if (vm_ci_packed_p(ci)) { + return (unsigned int)((((VALUE)ci) >> (1 + 15)) & ((((VALUE)1)<<16) - 1)); + } + else { + return (unsigned int)ci->flag; + } +} +static inline unsigned int +vm_ci_argc(const struct rb_callinfo *ci) +{ + if (vm_ci_packed_p(ci)) { + return (unsigned int)((((VALUE)ci) >> (1)) & ((((VALUE)1)<<15) - 1)); + } + else { + return (unsigned int)ci->argc; + } +} +static inline const struct rb_callinfo_kwarg * +vm_ci_kwarg(const struct rb_callinfo *ci) +{ + if (vm_ci_packed_p(ci)) { + return ((void*)0); + } + else { + return ci->kwarg; + } +} +static inline void +vm_ci_dump(const struct rb_callinfo *ci) +{ + if (vm_ci_packed_p(ci)) { + ruby_debug_printf("packed_ci ID:%s flag:%x argc:%u\n", + rb_id2name(vm_ci_mid(ci)), vm_ci_flag(ci), vm_ci_argc(ci)); + } + else { + rb_obj_info_dump_loc((VALUE)(ci), "../ruby-3.1.5/vm_callinfo.h", 175, __func__); + } +} +#define vm_ci_new(mid,flag,argc,kwarg) vm_ci_new_(mid, flag, argc, kwarg, __FILE__, __LINE__) +#define vm_ci_new_runtime(mid,flag,argc,kwarg) vm_ci_new_runtime_(mid, flag, argc, kwarg, __FILE__, __LINE__) +#define VM_CI_EMBEDDABLE_P(mid,flag,argc,kwarg) (((mid ) & ~CI_EMBED_ID_MASK) ? false : ((flag) & ~CI_EMBED_FLAG_MASK) ? false : ((argc) & ~CI_EMBED_ARGC_MASK) ? false : (kwarg) ? false : true) +#define vm_ci_new_id(mid,flag,argc,must_zero) ((const struct rb_callinfo *) ((((VALUE)(mid )) << CI_EMBED_ID_SHFT) | (((VALUE)(flag)) << CI_EMBED_FLAG_SHFT) | (((VALUE)(argc)) << CI_EMBED_ARGC_SHFT) | RUBY_FIXNUM_FLAG)) +static inline const struct rb_callinfo * +vm_ci_new_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line) +{ + if ((((mid ) & ~((((VALUE)1)<<32) - 1)) ? 0 : ((flag) & ~((((VALUE)1)<<16) - 1)) ? 0 : ((argc) & ~((((VALUE)1)<<15) - 1)) ? 0 : (kwarg) ? 0 : 1)) { + ((void)0); + return ((const struct rb_callinfo *) ((((VALUE)(mid )) << (1 + 15 + 16)) | (((VALUE)(flag)) << (1 + 15)) | (((VALUE)(argc)) << (1)) | RUBY_FIXNUM_FLAG)); + } + const _Bool debug = 0; + if (debug) ruby_debug_printf("%s:%d ", file, line); + const struct rb_callinfo *ci = (const struct rb_callinfo *) + rb_imemo_new(imemo_callinfo, + (VALUE)mid, + (VALUE)flag, + (VALUE)argc, + (VALUE)kwarg); + if (debug) rb_obj_info_dump_loc((VALUE)(ci), "../ruby-3.1.5/vm_callinfo.h", 216, __func__); + if (kwarg) { + ((void)0); + } + else { + ((void)0); + } + ((void)0); + ((void)0); + return ci; +} +static inline const struct rb_callinfo * +vm_ci_new_runtime_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line) +{ + ((void)0); + return vm_ci_new_(mid, flag, argc, kwarg, file, line); +} +#define VM_CALLINFO_NOT_UNDER_GC IMEMO_FL_USER0 +static inline _Bool +vm_ci_markable(const struct rb_callinfo *ci) +{ + if (! ci) { + return 0; + } + else if (vm_ci_packed_p(ci)) { + return 1; + } + else { + ((void)0); + return ! RB_FL_ANY_RAW((VALUE)ci, ((VALUE)RUBY_FL_USER4)); + } +} +#define VM_CI_ON_STACK(mid_,flags_,argc_,kwarg_) (struct rb_callinfo) { .flags = T_IMEMO | (imemo_callinfo << FL_USHIFT) | VM_CALLINFO_NOT_UNDER_GC, .mid = mid_, .flag = flags_, .argc = argc_, .kwarg = kwarg_, } +typedef VALUE (*vm_call_handler)( + struct rb_execution_context_struct *ec, + struct rb_control_frame_struct *cfp, + struct rb_calling_info *calling); +struct rb_callcache { + const VALUE flags; + const VALUE klass; + const struct rb_callable_method_entry_struct * const cme_; + const vm_call_handler call_; + union { + const unsigned int attr_index; + const enum method_missing_reason method_missing_reason; + VALUE v; + } aux_; +}; +#define VM_CALLCACHE_UNMARKABLE IMEMO_FL_USER0 +#define VM_CALLCACHE_ON_STACK IMEMO_FL_USER1 +static inline const struct rb_callcache * +vm_cc_new(VALUE klass, + const struct rb_callable_method_entry_struct *cme, + vm_call_handler call) +{ + const struct rb_callcache *cc = (const struct rb_callcache *)rb_imemo_new(imemo_callcache, (VALUE)cme, (VALUE)call, 0, klass); + ((void)0); + return cc; +} +#define VM_CC_ON_STACK(clazz,call,aux,cme) (struct rb_callcache) { .flags = T_IMEMO | (imemo_callcache << FL_USHIFT) | VM_CALLCACHE_UNMARKABLE | VM_CALLCACHE_ON_STACK, .klass = clazz, .cme_ = cme, .call_ = call, .aux_ = aux, } +static inline _Bool +vm_cc_class_check(const struct rb_callcache *cc, VALUE klass) +{ + ((void)0); + ((void)0); + return cc->klass == klass; +} +static inline int +vm_cc_markable(const struct rb_callcache *cc) +{ + ((void)0); + return RB_FL_TEST_RAW((VALUE)cc, ((VALUE)RUBY_FL_USER4)) == 0; +} +static inline const struct rb_callable_method_entry_struct * +vm_cc_cme(const struct rb_callcache *cc) +{ + ((void)0); + ((void)0); + return cc->cme_; +} +static inline vm_call_handler +vm_cc_call(const struct rb_callcache *cc) +{ + ((void)0); + ((void)0); + return cc->call_; +} +static inline unsigned int +vm_cc_attr_index(const struct rb_callcache *cc) +{ + ((void)0); + return cc->aux_.attr_index; +} +static inline unsigned int +vm_cc_cmethod_missing_reason(const struct rb_callcache *cc) +{ + ((void)0); + return cc->aux_.method_missing_reason; +} +static inline _Bool +vm_cc_invalidated_p(const struct rb_callcache *cc) +{ + if (cc->klass && !((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))) { + return 0; + } + else { + return 1; + } +} +static inline _Bool +vm_cc_valid_p(const struct rb_callcache *cc, const rb_callable_method_entry_t *cc_cme, VALUE klass) +{ + ((void)0); + if (cc->klass == klass && !((cc_cme)->flags & ((VALUE)RUBY_FL_USER9))) { + return 1; + } + else { + return 0; + } +} +extern const struct rb_callcache *rb_vm_empty_cc(void); +extern const struct rb_callcache *rb_vm_empty_cc_for_super(void); +#define vm_cc_empty() rb_vm_empty_cc() +static inline void +vm_cc_call_set(const struct rb_callcache *cc, vm_call_handler call) +{ + ((void)0); + ((void)0); + *(vm_call_handler *)&cc->call_ = call; +} +static inline void +vm_cc_attr_index_set(const struct rb_callcache *cc, int index) +{ + ((void)0); + ((void)0); + *(int *)&cc->aux_.attr_index = index; +} +static inline void +vm_cc_method_missing_reason_set(const struct rb_callcache *cc, enum method_missing_reason reason) +{ + ((void)0); + ((void)0); + *(enum method_missing_reason *)&cc->aux_.method_missing_reason = reason; +} +static inline void +vm_cc_invalidate(const struct rb_callcache *cc) +{ + ((void)0); + ((void)0); + ((void)0); + *(VALUE *)&cc->klass = 0; + ((void)0); +} +struct rb_call_data { + const struct rb_callinfo *ci; + const struct rb_callcache *cc; +}; +struct rb_class_cc_entries { + int capa; + int len; + const struct rb_callable_method_entry_struct *cme; + struct rb_class_cc_entries_entry { + const struct rb_callinfo *ci; + const struct rb_callcache *cc; + } *entries; +}; +void rb_vm_ccs_free(struct rb_class_cc_entries *ccs); + +#define RUBY_DEBUG_H +#pragma GCC visibility push(default) +#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v)) +#define dp(v) ruby_debug_print_value(-1, 0, "", (v)) +#define dpi(i) ruby_debug_print_id(-1, 0, "", (i)) +#define dpn(n) ruby_debug_print_node(-1, 0, "", (n)) +struct RNode; +VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v); +ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id); +struct RNode *ruby_debug_print_node(int level, int debug_level, const char *header, const struct RNode *node); +int ruby_debug_print_indent(int level, int debug_level, int indent_level); +void ruby_debug_gc_check_func(void); +void ruby_set_debug_option(const char *str); +#pragma GCC visibility pop +#define RUBY_DEVEL 0 +extern enum ruby_debug_log_mode { + ruby_debug_log_disabled = 0x00, + ruby_debug_log_memory = 0x01, + ruby_debug_log_stderr = 0x02, + ruby_debug_log_file = 0x04, +} ruby_debug_log_mode; +__attribute__((__format__(printf, 4, 5))) +void ruby_debug_log(const char *file, int line, const char *func_name, const char *fmt, ...); +void ruby_debug_log_print(unsigned int n); +_Bool ruby_debug_log_filter(const char *func_name); +#define _RUBY_DEBUG_LOG(...) ruby_debug_log(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, "" __VA_ARGS__) +#define RUBY_DEBUG_LOG(...) +#define RUBY_DEBUG_LOG2(file,line,...) + +#define RUBY_VM_EXEC_H +typedef long OFFSET; +typedef unsigned long lindex_t; +typedef VALUE GENTRY; +typedef rb_iseq_t *ISEQ; +#define debugs +#define DEBUG_ENTER_INSN(insn) +#define DEBUG_END_INSN() +#define throwdebug if(0)ruby_debug_printf +#define USE_INSNS_COUNTER 0 +#define LABEL(x) INSN_LABEL_##x +#define ELABEL(x) INSN_ELABEL_##x +#define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x)) +#define INSN_ENTRY_SIG(insn) if (0) { ruby_debug_printf("exec: %s@(%"PRIdPTRDIFF", %"PRIdPTRDIFF")@%s:%u\n", #insn, (reg_pc - reg_cfp->iseq->body->iseq_encoded), (reg_cfp->pc - reg_cfp->iseq->body->iseq_encoded), RSTRING_PTR(rb_iseq_path(reg_cfp->iseq)), rb_iseq_line_no(reg_cfp->iseq, reg_pc - reg_cfp->iseq->body->iseq_encoded)); } if (USE_INSNS_COUNTER) vm_insns_counter_count_insn(BIN(insn)); +#define INSN_DISPATCH_SIG(insn) +#define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn); +#define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ; +#define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn); +#define INSN_DISPATCH() TC_DISPATCH(__START__) { +#define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); } +#define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__) +#define START_OF_ORIGINAL_INSN(x) if (0) goto start_of_##x; start_of_##x: +#define DISPATCH_ORIGINAL_INSN(x) goto start_of_##x; +#define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack) +#define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0) +#define SCREG(r) (reg_##r) +#define VM_DEBUG_STACKOVERFLOW 0 +#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin) +#define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name +#define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x) + +#define RUBY_INSNHELPER_H +#pragma GCC visibility push(default) +extern __declspec(dllimport) VALUE ruby_vm_const_missing_count; +extern __declspec(dllimport) rb_serial_t ruby_vm_global_constant_state; +extern __declspec(dllimport) rb_serial_t ruby_vm_class_serial; +extern __declspec(dllimport) rb_serial_t ruby_vm_global_cvar_state; +#pragma GCC visibility pop +#define COLLECT_USAGE_INSN(insn) +#define COLLECT_USAGE_OPERAND(insn,n,op) +#define COLLECT_USAGE_REGISTER(reg,s) +#define PUSH(x) (SET_SV(x), INC_SP(1)) +#define TOPN(n) (*(GET_SP()-(n)-1)) +#define POPN(n) (DEC_SP(n)) +#define POP() (DEC_SP(1)) +#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n)) +#define VM_REG_CFP (reg_cfp) +#define VM_REG_PC (VM_REG_CFP->pc) +#define VM_REG_SP (VM_REG_CFP->sp) +#define VM_REG_EP (VM_REG_CFP->ep) +#define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0) +#define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v) +#define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC)) +#define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x)))) +#define GET_CURRENT_INSN() (*GET_PC()) +#define GET_OPERAND(n) (GET_PC()[(n)]) +#define ADD_PC(n) (SET_PC(VM_REG_PC + (n))) +#define JUMP(dst) (SET_PC(VM_REG_PC + (dst))) +#define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP)) +#define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP)) +#define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x)))) +#define GET_LEP() (VM_EP_LEP(GET_EP())) +#define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP)) +#define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x)))) +#define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x)))) +#define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x)))) +#define SET_SV(x) (*GET_SP() = rb_ractor_confirm_belonging(x)) +#define GET_ISEQ() (GET_CFP()->iseq) +#define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03)) +#define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self)) +static inline void +CC_SET_FASTPATH(const struct rb_callcache *cc, vm_call_handler func, _Bool enabled) +{ + if ((__builtin_expect(!!(enabled), 1))) { + vm_cc_call_set(cc, func); + } +} +#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL]) +#define SETUP_CANARY(cond) if (cond) {} else {} +#define CHECK_CANARY(cond,insn) if (cond) {(void)(insn);} +#define PREV_CLASS_SERIAL() (ruby_vm_class_serial) +#define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial) +#define GET_GLOBAL_CONSTANT_STATE() (ruby_vm_global_constant_state) +#define INC_GLOBAL_CONSTANT_STATE() (++ruby_vm_global_constant_state) +#define GET_GLOBAL_CVAR_STATE() (ruby_vm_global_cvar_state) +#define INC_GLOBAL_CVAR_STATE() (++ruby_vm_global_cvar_state) +static inline struct vm_throw_data * +THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, int st) +{ + struct vm_throw_data *obj = (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, 0, 0); + obj->throw_state = st; + return obj; +} +static inline VALUE +THROW_DATA_VAL(const struct vm_throw_data *obj) +{ + ((void)0); + return obj->throw_obj; +} +static inline const rb_control_frame_t * +THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj) +{ + ((void)0); + return obj->catch_frame; +} +static inline int +THROW_DATA_STATE(const struct vm_throw_data *obj) +{ + ((void)0); + return obj->throw_state; +} +static inline int +THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj) +{ + ((void)0); + return obj->flags & ((VALUE)RUBY_FL_USER4); +} +static inline void +THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp) +{ + ((void)0); + obj->catch_frame = cfp; +} +static inline void +THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st) +{ + ((void)0); + obj->throw_state = st; +} +static inline void +THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj) +{ + if (imemo_throw_data_p((VALUE)obj) && + THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) { + obj->flags |= ((VALUE)RUBY_FL_USER4); + } +} +#define IS_ARGS_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_ARGS_SPLAT) +#define IS_ARGS_KEYWORD(ci) (vm_ci_flag(ci) & VM_CALL_KWARG) +#define IS_ARGS_KW_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT) +#define IS_ARGS_KW_OR_KW_SPLAT(ci) (vm_ci_flag(ci) & (VM_CALL_KWARG | VM_CALL_KW_SPLAT)) +#define IS_ARGS_KW_SPLAT_MUT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT_MUT) +static inline _Bool +vm_call_iseq_optimizable_p(const struct rb_callinfo *ci, const struct rb_callcache *cc) +{ + return !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) && + !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED); +} + + +#define RUBY_RACTOR_H 1 +struct rb_ractor_local_storage_type { + void (*mark)(void *ptr); + void (*free)(void *ptr); +}; +typedef struct rb_ractor_local_key_struct *rb_ractor_local_key_t; +#pragma GCC visibility push(default) +extern __declspec(dllimport) VALUE rb_cRactor; +VALUE rb_ractor_stdin(void); +VALUE rb_ractor_stdout(void); +VALUE rb_ractor_stderr(void); +void rb_ractor_stdin_set(VALUE io); +void rb_ractor_stdout_set(VALUE io); +void rb_ractor_stderr_set(VALUE io); +rb_ractor_local_key_t rb_ractor_local_storage_value_newkey(void); +VALUE rb_ractor_local_storage_value(rb_ractor_local_key_t key); +_Bool rb_ractor_local_storage_value_lookup(rb_ractor_local_key_t key, VALUE *val); +void rb_ractor_local_storage_value_set(rb_ractor_local_key_t key, VALUE val); +extern __declspec(dllimport) const struct rb_ractor_local_storage_type rb_ractor_local_storage_type_free; +#define RB_RACTOR_LOCAL_STORAGE_TYPE_FREE (&rb_ractor_local_storage_type_free) +rb_ractor_local_key_t rb_ractor_local_storage_ptr_newkey(const struct rb_ractor_local_storage_type *type); +void *rb_ractor_local_storage_ptr(rb_ractor_local_key_t key); +void rb_ractor_local_storage_ptr_set(rb_ractor_local_key_t key, void *ptr); +VALUE rb_ractor_make_shareable(VALUE obj); +VALUE rb_ractor_make_shareable_copy(VALUE obj); +#pragma GCC visibility pop +#define RB_OBJ_SHAREABLE_P(obj) FL_TEST_RAW((obj), RUBY_FL_SHAREABLE) +static inline _Bool +rb_ractor_shareable_p(VALUE obj) +{ + _Bool rb_ractor_shareable_p_continue(VALUE obj); + if (RB_SPECIAL_CONST_P(obj)) { + return 1; + } + else if (RB_FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)) { + return 1; + } + else { + return rb_ractor_shareable_p_continue(obj); + } +} +#define RACTOR_CHECK_MODE (0 || VM_CHECK_MODE || RUBY_DEBUG) +enum rb_ractor_basket_type { + basket_type_none, + basket_type_ref, + basket_type_copy, + basket_type_move, + basket_type_will, + basket_type_deleted, + basket_type_reserved, +}; +struct rb_ractor_basket { + _Bool exception; + enum rb_ractor_basket_type type; + VALUE v; + VALUE sender; +}; +struct rb_ractor_queue { + struct rb_ractor_basket *baskets; + int start; + int cnt; + int size; + unsigned int serial; + unsigned int reserved_cnt; +}; +struct rb_ractor_waiting_list { + int cnt; + int size; + rb_ractor_t **ractors; +}; +struct rb_ractor_sync { + rb_nativethread_lock_t lock; + rb_nativethread_cond_t cond; + struct rb_ractor_queue incoming_queue; + struct rb_ractor_waiting_list taking_ractors; + _Bool incoming_port_closed; + _Bool outgoing_port_closed; + struct ractor_wait { + enum ractor_wait_status { + wait_none = 0x00, + wait_receiving = 0x01, + wait_taking = 0x02, + wait_yielding = 0x04, + wait_moving = 0x08, + } status; + enum ractor_wakeup_status { + wakeup_none, + wakeup_by_send, + wakeup_by_yield, + wakeup_by_take, + wakeup_by_close, + wakeup_by_interrupt, + wakeup_by_retry, + } wakeup_status; + struct rb_ractor_basket yielded_basket; + struct rb_ractor_basket taken_basket; + } wait; +}; +struct rb_ractor_struct { + struct rb_ractor_pub pub; + struct rb_ractor_sync sync; + VALUE receiving_mutex; + _Bool yield_atexit; + rb_nativethread_cond_t barrier_wait_cond; + struct { + struct list_head set; + unsigned int cnt; + unsigned int blocking_cnt; + unsigned int sleeper; + rb_global_vm_lock_t gvl; + rb_execution_context_t *running_ec; + rb_thread_t *main; + } threads; + VALUE thgroup_default; + VALUE name; + VALUE loc; + enum ractor_status { + ractor_created, + ractor_running, + ractor_blocking, + ractor_terminated, + } status_; + struct list_node vmlr_node; + st_table *local_storage; + struct rb_id_table *idkey_local_storage; + VALUE r_stdin; + VALUE r_stdout; + VALUE r_stderr; + VALUE verbose; + VALUE debug; + rb_ractor_newobj_cache_t newobj_cache; + struct gc_mark_func_data_struct { + void *data; + void (*mark_func)(VALUE v, void *data); + } *mfd; +}; +static inline VALUE +rb_ractor_self(const rb_ractor_t *r) +{ + return r->pub.self; +} +rb_ractor_t *rb_ractor_main_alloc(void); +void rb_ractor_main_setup(rb_vm_t *vm, rb_ractor_t *main_ractor, rb_thread_t *main_thread); +void rb_ractor_atexit(rb_execution_context_t *ec, VALUE result); +void rb_ractor_atexit_exception(rb_execution_context_t *ec); +void rb_ractor_teardown(rb_execution_context_t *ec); +void rb_ractor_receive_parameters(rb_execution_context_t *ec, rb_ractor_t *g, int len, VALUE *ptr); +void rb_ractor_send_parameters(rb_execution_context_t *ec, rb_ractor_t *g, VALUE args); +VALUE rb_thread_create_ractor(rb_ractor_t *g, VALUE args, VALUE proc); +rb_global_vm_lock_t *rb_ractor_gvl(rb_ractor_t *); +int rb_ractor_living_thread_num(const rb_ractor_t *); +VALUE rb_ractor_thread_list(rb_ractor_t *r); +_Bool rb_ractor_p(VALUE rv); +void rb_ractor_living_threads_init(rb_ractor_t *r); +void rb_ractor_living_threads_insert(rb_ractor_t *r, rb_thread_t *th); +void rb_ractor_living_threads_remove(rb_ractor_t *r, rb_thread_t *th); +void rb_ractor_blocking_threads_inc(rb_ractor_t *r, const char *file, int line); +void rb_ractor_blocking_threads_dec(rb_ractor_t *r, const char *file, int line); +void rb_ractor_vm_barrier_interrupt_running_thread(rb_ractor_t *r); +void rb_ractor_terminate_interrupt_main_thread(rb_ractor_t *r); +void rb_ractor_terminate_all(void); +_Bool rb_ractor_main_p_(void); +void rb_ractor_finish_marking(void); +void rb_ractor_atfork(rb_vm_t *vm, rb_thread_t *th); +VALUE rb_ractor_ensure_shareable(VALUE obj, VALUE name); +#pragma GCC visibility push(default) +_Bool rb_ractor_shareable_p_continue(VALUE obj); +void rb_ractor_local_storage_delkey(rb_ractor_local_key_t key); +#pragma GCC visibility pop +static inline _Bool +rb_ractor_main_p(void) +{ + if (ruby_single_main_ractor) { + return 1; + } + else { + return rb_ractor_main_p_(); + } +} +static inline _Bool +rb_ractor_status_p(rb_ractor_t *r, enum ractor_status status) +{ + return r->status_ == status; +} +static inline void +rb_ractor_sleeper_threads_inc(rb_ractor_t *r) +{ + r->threads.sleeper++; +} +static inline void +rb_ractor_sleeper_threads_dec(rb_ractor_t *r) +{ + r->threads.sleeper--; +} +static inline void +rb_ractor_sleeper_threads_clear(rb_ractor_t *r) +{ + r->threads.sleeper = 0; +} +static inline int +rb_ractor_sleeper_thread_num(rb_ractor_t *r) +{ + return r->threads.sleeper; +} +static inline void +rb_ractor_thread_switch(rb_ractor_t *cr, rb_thread_t *th) +{ + if (cr->threads.running_ec != th->ec) { + if (0) { + ruby_debug_printf("rb_ractor_thread_switch ec:%p->%p\n", + (void *)cr->threads.running_ec, (void *)th->ec); + } + } + else { + return; + } + if (cr->threads.running_ec != th->ec) { + th->running_time_us = 0; + } + cr->threads.running_ec = th->ec; + ((void)0); +} +static inline void +rb_ractor_set_current_ec(rb_ractor_t *cr, rb_execution_context_t *ec) +{ + native_tls_set(ruby_current_ec_key, ec); + if (cr->threads.running_ec != ec) { + if (0) { + ruby_debug_printf("rb_ractor_set_current_ec ec:%p->%p\n", + (void *)cr->threads.running_ec, (void *)ec); + } + } + else { + ((void)0); + } + cr->threads.running_ec = ec; +} +void rb_vm_ractor_blocking_cnt_inc(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line); +void rb_vm_ractor_blocking_cnt_dec(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line); +static inline uint32_t +rb_ractor_id(const rb_ractor_t *r) +{ + return r->pub.id; +} +#define rb_ractor_confirm_belonging(obj) obj + +#define RUBY_VM_SYNC_H +#define LOCATION_ARGS void +#define LOCATION_PARAMS +#define APPEND_LOCATION_ARGS +#define APPEND_LOCATION_PARAMS +_Bool rb_vm_locked_p(void); +void rb_vm_lock_body(void); +void rb_vm_unlock_body(void); +struct rb_ractor_struct; +void rb_vm_lock_enter_body_cr(struct rb_ractor_struct *cr, unsigned int *lev ); +void rb_vm_lock_enter_body_nb(unsigned int *lev ); +void rb_vm_lock_enter_body(unsigned int *lev ); +void rb_vm_lock_leave_body(unsigned int *lev ); +void rb_vm_barrier(void); +extern __declspec(dllimport) struct rb_ractor_struct *ruby_single_main_ractor; +static inline _Bool +rb_multi_ractor_p(void) +{ + if ((__builtin_expect(!!(ruby_single_main_ractor), 1))) { + ((void)0); + return 0; + } + else { + return 1; + } +} +static inline void +rb_vm_lock(const char *file, int line) +{ + ((void)0); + if (rb_multi_ractor_p()) { + rb_vm_lock_body(); + } +} +static inline void +rb_vm_unlock(const char *file, int line) +{ + if (rb_multi_ractor_p()) { + rb_vm_unlock_body(); + } +} +static inline void +rb_vm_lock_enter(unsigned int *lev, const char *file, int line) +{ + ((void)0); + if (rb_multi_ractor_p()) { + rb_vm_lock_enter_body(lev ); + } +} +static inline void +rb_vm_lock_enter_nb(unsigned int *lev, const char *file, int line) +{ + ((void)0); + if (rb_multi_ractor_p()) { + rb_vm_lock_enter_body_nb(lev ); + } +} +static inline void +rb_vm_lock_leave(unsigned int *lev, const char *file, int line) +{ + if (rb_multi_ractor_p()) { + rb_vm_lock_leave_body(lev ); + } +} +static inline void +rb_vm_lock_enter_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line) +{ + ((void)0); + rb_vm_lock_enter_body_cr(cr, levp ); +} +static inline void +rb_vm_lock_leave_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line) +{ + rb_vm_lock_leave_body(levp ); +} +#define RB_VM_LOCKED_P() rb_vm_locked_p() +#define RB_VM_LOCK() rb_vm_lock(__FILE__, __LINE__) +#define RB_VM_UNLOCK() rb_vm_unlock(__FILE__, __LINE__) +#define RB_VM_LOCK_ENTER_CR_LEV(cr,levp) rb_vm_lock_enter_cr(cr, levp, __FILE__, __LINE__) +#define RB_VM_LOCK_LEAVE_CR_LEV(cr,levp) rb_vm_lock_leave_cr(cr, levp, __FILE__, __LINE__) +#define RB_VM_LOCK_ENTER_LEV(levp) rb_vm_lock_enter(levp, __FILE__, __LINE__) +#define RB_VM_LOCK_LEAVE_LEV(levp) rb_vm_lock_leave(levp, __FILE__, __LINE__) +#define RB_VM_LOCK_ENTER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV(&_lev); +#define RB_VM_LOCK_LEAVE() RB_VM_LOCK_LEAVE_LEV(&_lev); } +#define RB_VM_LOCK_ENTER_LEV_NB(levp) rb_vm_lock_enter_nb(levp, __FILE__, __LINE__) +#define RB_VM_LOCK_ENTER_NO_BARRIER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV_NB(&_lev); +#define RB_VM_LOCK_LEAVE_NO_BARRIER() RB_VM_LOCK_LEAVE_LEV(&_lev); } +#define ASSERT_vm_locking() +#define ASSERT_vm_unlocking() + + +#define BUILTIN_H_INCLUDED +struct rb_builtin_function { + const void * const func_ptr; + const int argc; + const int index; + const char * const name; + void (*compiler)(FILE *, long, unsigned, _Bool); +}; +#define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity,_compiler) { .name = #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i, .compiler = _compiler, } +void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table); +static inline void rb_builtin_function_check_arity0(VALUE (*f)(rb_execution_context_t *ec, VALUE self)){} +static inline void rb_builtin_function_check_arity1(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE)){} +static inline void rb_builtin_function_check_arity2(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity3(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity4(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity5(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity6(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity7(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity8(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity9(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity10(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity11(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity12(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity13(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity14(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +static inline void rb_builtin_function_check_arity15(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){} +__attribute__((__pure__)) VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index); +VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index); +__attribute__((__pure__)) static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index); +static inline VALUE +rb_vm_lvar(rb_execution_context_t *ec, int index) +{ + return ec->cfp->ep[index]; +} +struct builtin_binary { + const char *feature; + const unsigned char *bin; + size_t bin_size; +}; +#define _PROBES_H +#define DTRACE_PROBES_DISABLED 1 +#define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0 +#define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0) +#define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0 +#define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0) +#define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0 +#define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0) +#define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0 +#define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0) +#define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0 +#define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0) +#define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0 +#define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0) +#define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0 +#define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0) +#define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0 +#define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0) +#define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0 +#define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0) +#define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0 +#define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0) +#define RUBY_DTRACE_RAISE_ENABLED() 0 +#define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0) +#define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0 +#define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0) +#define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0 +#define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0) +#define RUBY_DTRACE_HASH_CREATE_ENABLED() 0 +#define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0) +#define RUBY_DTRACE_STRING_CREATE_ENABLED() 0 +#define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0) +#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0 +#define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0) +#define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0 +#define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0) +#define RUBY_DTRACE_PARSE_END_ENABLED() 0 +#define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0) +#define RUBY_DTRACE_INSN_ENABLED() 0 +#define RUBY_DTRACE_INSN(insns_name) do {} while (0) +#define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0 +#define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0) +#define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0 +#define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0) +#define RUBY_DTRACE_GC_MARK_END_ENABLED() 0 +#define RUBY_DTRACE_GC_MARK_END() do {} while (0) +#define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0 +#define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0) +#define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0 +#define RUBY_DTRACE_GC_SWEEP_END() do {} while (0) + + +#define RUBY_PROBES_HELPER_H +struct ruby_dtrace_method_hook_args { + const char *classname; + const char *methodname; + const char *filename; + int line_no; + volatile VALUE klass; + volatile VALUE name; +}; +#pragma GCC visibility push(default) +__declspec(noinline) int rb_dtrace_setup(rb_execution_context_t *, VALUE, ID, struct ruby_dtrace_method_hook_args *); +#pragma GCC visibility pop +#define RUBY_DTRACE_METHOD_HOOK(name,ec,klazz,id) do { if (UNLIKELY(RUBY_DTRACE_##name##_ENABLED())) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, klazz, id, &args)) { RUBY_DTRACE_##name(args.classname, args.methodname, args.filename, args.line_no); } } } while (0) +#define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id) +#define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id) +#define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id) +#define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id) + +VALUE rb_str_concat_literals(size_t, const VALUE*); +__attribute__ ((__visibility__("default"))) extern +VALUE rb_vm_exec(rb_execution_context_t *, _Bool); +__attribute__((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *); +static inline const VALUE * +VM_EP_LEP(const VALUE *ep) +{ + while (!VM_ENV_LOCAL_P(ep)) { + ep = VM_ENV_PREV_EP(ep); + } + return ep; +} +static inline const rb_control_frame_t * +rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep) +{ + if (!ep) { + return ((void*)0); + } + else { + const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec); + while (cfp < eocfp) { + if (cfp->ep == ep) { + return cfp; + } + cfp = ((cfp)+1); + } + return ((void*)0); + } +} +const VALUE * +rb_vm_ep_local_ep(const VALUE *ep) +{ + return VM_EP_LEP(ep); +} +__attribute__((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp); +static inline const VALUE * +VM_CF_LEP(const rb_control_frame_t * const cfp) +{ + return VM_EP_LEP(cfp->ep); +} +static inline const VALUE * +VM_CF_PREV_EP(const rb_control_frame_t * const cfp) +{ + return VM_ENV_PREV_EP(cfp->ep); +} +__attribute__((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp); +static inline VALUE +VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp) +{ + const VALUE *ep = VM_CF_LEP(cfp); + return VM_ENV_BLOCK_HANDLER(ep); +} +int +rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp) +{ + return VM_FRAME_CFRAME_KW_P(cfp); +} +VALUE +rb_vm_frame_block_handler(const rb_control_frame_t *cfp) +{ + return VM_CF_BLOCK_HANDLER(cfp); +} +static struct rb_captured_block * +VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp) +{ + ((void)0); + return (struct rb_captured_block *)&cfp->self; +} +static rb_control_frame_t * +VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured) +{ + rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3)); + ((void)0); + ((void)0); + return cfp; +} +static int +VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp) +{ + const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp); + return ((void *)((block_handler) & ~0x03)) == captured; +} +static VALUE +vm_passed_block_handler(rb_execution_context_t *ec) +{ + VALUE block_handler = ec->passed_block_handler; + ec->passed_block_handler = 0; + vm_block_handler_verify(block_handler); + return block_handler; +} +static rb_cref_t * +vm_cref_new0(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int use_prev_prev, int singleton) +{ + VALUE refinements = ((VALUE)RUBY_Qnil); + int omod_shared = 0; + rb_cref_t *cref; + union { + rb_scope_visibility_t visi; + VALUE value; + } scope_visi; + scope_visi.visi.method_visi = visi; + scope_visi.visi.module_func = module_func; + if (prev_cref != ((void*)0) && prev_cref != (void *)1 ) { + refinements = CREF_REFINEMENTS(prev_cref); + if (!RB_NIL_P(refinements)) { + omod_shared = 1; + CREF_OMOD_SHARED_SET(prev_cref); + } + } + ((void)0); + cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements); + if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref); + if (omod_shared) CREF_OMOD_SHARED_SET(cref); + if (singleton) CREF_SINGLETON_SET(cref); + return cref; +} +static rb_cref_t * +vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int singleton) +{ + return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0, singleton); +} +static rb_cref_t * +vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval) +{ + return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1, 0); +} +static int +ref_delete_symkey(VALUE key, VALUE value, VALUE unused) +{ + return RB_SYMBOL_P(key) ? ST_DELETE : ST_CONTINUE; +} +static rb_cref_t * +vm_cref_dup(const rb_cref_t *cref) +{ + const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref); + rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref; + int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref); + int singleton = CREF_SINGLETON(cref); + new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton); + if (!RB_NIL_P(CREF_REFINEMENTS(cref))) { + VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref)); + rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil)); + CREF_REFINEMENTS_SET(new_cref, ref); + CREF_OMOD_SHARED_UNSET(new_cref); + } + return new_cref; +} +rb_cref_t * +rb_vm_cref_dup_without_refinements(const rb_cref_t *cref) +{ + const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref); + rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref; + int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref); + int singleton = CREF_SINGLETON(cref); + new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton); + if (!RB_NIL_P(CREF_REFINEMENTS(cref))) { + CREF_REFINEMENTS_SET(new_cref, ((VALUE)RUBY_Qnil)); + CREF_OMOD_SHARED_UNSET(new_cref); + } + return new_cref; +} +static rb_cref_t * +vm_cref_new_toplevel(rb_execution_context_t *ec) +{ + rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void*)0), 0, 0); + VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper; + if (top_wrapper) { + cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0, 0); + } + return cref; +} +rb_cref_t * +rb_vm_cref_new_toplevel(void) +{ + return vm_cref_new_toplevel(rb_current_execution_context(1)); +} +static void +vm_cref_dump(const char *mesg, const rb_cref_t *cref) +{ + ruby_debug_printf("vm_cref_dump: %s (%p)\n", mesg, (void *)cref); + while (cref) { + ruby_debug_printf("= cref| klass: %s\n", RSTRING_PTR(rb_class_path(CREF_CLASS(cref)))); + cref = CREF_NEXT(cref); + } +} +void +rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep) +{ + *((const VALUE **)&dst->as.captured.ep) = ep; + (rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "../ruby-3.1.5/vm.c", 353)); +} +static void +vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval) +{ + const rb_env_t *env = (rb_env_t *)envval; + rb_obj_write((VALUE)(bindval), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&bind->block.as.captured.code.iseq)) unaligned_member_access_result = ((VALUE *)(&bind->block.as.captured.code.iseq)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(env->iseq), "../ruby-3.1.5/vm.c", 360); + rb_vm_block_ep_update(bindval, &bind->block, env->ep); +} +static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp); +extern VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, + int argc, const VALUE *argv, int kw_splat, VALUE block_handler, + const rb_callable_method_entry_t *me); +static VALUE vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler); + +#define CONSTANT_H +typedef enum { + CONST_DEPRECATED = 0x100, + CONST_VISIBILITY_MASK = 0xff, + CONST_PUBLIC = 0x00, + CONST_PRIVATE, + CONST_VISIBILITY_MAX +} rb_const_flag_t; +#define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE) +#define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC) +#define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED) +typedef struct rb_const_entry_struct { + rb_const_flag_t flag; + int line; + VALUE value; + VALUE file; +} rb_const_entry_t; +VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj); +VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj); +VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj); +void rb_free_const_table(struct rb_id_table *tbl); +VALUE rb_const_source_location(VALUE, ID); +#pragma GCC visibility push(default) +int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag); +rb_const_entry_t *rb_const_lookup(VALUE klass, ID id); +VALUE rb_public_const_get_at(VALUE klass, ID id); +VALUE rb_public_const_get_from(VALUE klass, ID id); +int rb_public_const_defined_from(VALUE klass, ID id); +VALUE rb_const_source_location_at(VALUE, ID); +#pragma GCC visibility pop + +#define INTERNAL_COMPAR_H +#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString) +enum { + cmp_opt_Integer, + cmp_opt_String, + cmp_opt_Float, + cmp_optimizable_count +}; +struct cmp_opt_data { + unsigned int opt_methods; + unsigned int opt_inited; +}; +#define NEW_CMP_OPT_MEMO(type,value) NEW_PARTIAL_MEMO_FOR(type, value, cmp_opt) +#define CMP_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(cmp_opt_,type)) +#define CMP_OPTIMIZABLE(data,type) (((data).opt_inited & CMP_OPTIMIZABLE_BIT(type)) ? ((data).opt_methods & CMP_OPTIMIZABLE_BIT(type)) : (((data).opt_inited |= CMP_OPTIMIZABLE_BIT(type)), rb_method_basic_definition_p(TOKEN_PASTE(rb_c,type), id_cmp) && ((data).opt_methods |= CMP_OPTIMIZABLE_BIT(type)))) +#define OPTIMIZED_CMP(a,b,data) ((FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(data, Integer)) ? (((long)a > (long)b) ? 1 : ((long)a < (long)b) ? -1 : 0) : (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(data, String)) ? rb_str_cmp(a, b) : (RB_FLOAT_TYPE_P(a) && RB_FLOAT_TYPE_P(b) && CMP_OPTIMIZABLE(data, Float)) ? rb_float_cmp(a, b) : rb_cmpint(rb_funcallv(a, id_cmp, 1, &b), a, b)) +VALUE rb_invcmp(VALUE, VALUE); + +#define INTERNAL_HASH_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE +struct ar_table_struct; +typedef unsigned char ar_hint_t; +enum ruby_rhash_flags { + RHASH_PASS_AS_KEYWORDS = ((VALUE)RUBY_FL_USER1), + RHASH_PROC_DEFAULT = ((VALUE)RUBY_FL_USER2), + RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3), + RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)), + RHASH_AR_TABLE_SIZE_SHIFT = (((VALUE)RUBY_FL_USHIFT)+4), + RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)), + RHASH_AR_TABLE_BOUND_SHIFT = (((VALUE)RUBY_FL_USHIFT)+8), + RHASH_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER12), +#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19) + RHASH_LEV_SHIFT = (((VALUE)RUBY_FL_USHIFT) + 13), + RHASH_LEV_MAX = 127, +}; +struct RHash { + struct RBasic basic; + union { + st_table *st; + struct ar_table_struct *ar; + } as; + const VALUE ifnone; + union { + ar_hint_t ary[8]; + VALUE word; + } ar_hint; +}; +#define RHASH(obj) ((struct RHash *)(obj)) +void rb_hash_st_table_set(VALUE hash, st_table *st); +VALUE rb_hash_default_value(VALUE hash, VALUE key); +VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc); +long rb_dbl_long_hash(double d); +st_table *rb_init_identtable(void); +VALUE rb_to_hash_type(VALUE obj); +VALUE rb_hash_key_str(VALUE); +VALUE rb_hash_values(VALUE hash); +VALUE rb_hash_rehash(VALUE hash); +int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val); +VALUE rb_hash_set_pair(VALUE hash, VALUE pair); +int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval); +int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg); +int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg); +extern st_table *rb_hash_st_table(VALUE hash); +VALUE rb_ident_hash_new_with_size(st_index_t size); +static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h); +static inline VALUE RHASH_IFNONE(VALUE h); +static inline size_t RHASH_SIZE(VALUE h); +static inline _Bool RHASH_EMPTY_P(VALUE h); +static inline _Bool RHASH_AR_TABLE_P(VALUE h); +static inline _Bool RHASH_ST_TABLE_P(VALUE h); +static inline struct ar_table_struct *RHASH_AR_TABLE(VALUE h); +static inline st_table *RHASH_ST_TABLE(VALUE h); +static inline size_t RHASH_ST_SIZE(VALUE h); +static inline void RHASH_ST_CLEAR(VALUE h); +static inline _Bool RHASH_TRANSIENT_P(VALUE h); +static inline void RHASH_SET_TRANSIENT_FLAG(VALUE h); +static inline void RHASH_UNSET_TRANSIENT_FLAG(VALUE h); +#pragma GCC visibility push(default) +VALUE rb_hash_delete_entry(VALUE hash, VALUE key); +VALUE rb_ident_hash_new(void); +int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +VALUE rb_hash_new_with_size(st_index_t size); +VALUE rb_hash_resurrect(VALUE hash); +int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval); +VALUE rb_hash_keys(VALUE hash); +VALUE rb_hash_has_key(VALUE hash, VALUE key); +VALUE rb_hash_compare_by_id_p(VALUE hash); +st_table *rb_hash_tbl_raw(VALUE hash, const char *file, int line); +#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h, __FILE__, __LINE__) +#pragma GCC visibility pop +VALUE rb_hash_compare_by_id(VALUE hash); +static inline _Bool +RHASH_AR_TABLE_P(VALUE h) +{ + return ! RB_FL_TEST_RAW(h, RHASH_ST_TABLE_FLAG); +} +static inline struct ar_table_struct * +RHASH_AR_TABLE(VALUE h) +{ + return ((struct RHash *)(h))->as.ar; +} +static inline st_table * +RHASH_ST_TABLE(VALUE h) +{ + return ((struct RHash *)(h))->as.st; +} +static inline VALUE +RHASH_IFNONE(VALUE h) +{ + return ((struct RHash *)(h))->ifnone; +} +static inline size_t +RHASH_SIZE(VALUE h) +{ + if (RHASH_AR_TABLE_P(h)) { + return RHASH_AR_TABLE_SIZE_RAW(h); + } + else { + return RHASH_ST_SIZE(h); + } +} +static inline _Bool +RHASH_EMPTY_P(VALUE h) +{ + return RHASH_SIZE(h) == 0; +} +static inline _Bool +RHASH_ST_TABLE_P(VALUE h) +{ + return ! RHASH_AR_TABLE_P(h); +} +static inline size_t +RHASH_ST_SIZE(VALUE h) +{ + return RHASH_ST_TABLE(h)->num_entries; +} +static inline void +RHASH_ST_CLEAR(VALUE h) +{ + RB_FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG); + ((struct RHash *)(h))->as.ar = ((void*)0); +} +static inline unsigned +RHASH_AR_TABLE_SIZE_RAW(VALUE h) +{ + VALUE ret = RB_FL_TEST_RAW(h, RHASH_AR_TABLE_SIZE_MASK); + ret >>= RHASH_AR_TABLE_SIZE_SHIFT; + return (unsigned)ret; +} +static inline _Bool +RHASH_TRANSIENT_P(VALUE h) +{ + return RB_FL_TEST_RAW(h, RHASH_TRANSIENT_FLAG); +} +static inline void +RHASH_SET_TRANSIENT_FLAG(VALUE h) +{ + RB_FL_SET_RAW(h, RHASH_TRANSIENT_FLAG); +} +static inline void +RHASH_UNSET_TRANSIENT_FLAG(VALUE h) +{ + RB_FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG); +} + +#define INTERNAL_NUMERIC_H + +#define INTERNAL_BIGNUM_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define BDIGIT unsigned int +#define SIZEOF_BDIGIT SIZEOF_INT +#define BDIGIT_DBL unsigned LONG_LONG +#define BDIGIT_DBL_SIGNED LONG_LONG +#define PRI_BDIGIT_PREFIX "" +#define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX +#define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT +#define PRIdBDIGIT PRI_BDIGIT_PREFIX"d" +#define PRIiBDIGIT PRI_BDIGIT_PREFIX"i" +#define PRIoBDIGIT PRI_BDIGIT_PREFIX"o" +#define PRIuBDIGIT PRI_BDIGIT_PREFIX"u" +#define PRIxBDIGIT PRI_BDIGIT_PREFIX"x" +#define PRIXBDIGIT PRI_BDIGIT_PREFIX"X" +#define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d" +#define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i" +#define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o" +#define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u" +#define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x" +#define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X" +#define RBIGNUM(obj) ((struct RBignum *)(obj)) +#define BIGNUM_SIGN_BIT FL_USER1 +#define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2) +#define BIGNUM_EMBED_LEN_NUMBITS 3 +#define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT) +#define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3) +#define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RBIMPL_RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT) +enum rb_int_parse_flags { + RB_INT_PARSE_SIGN = 0x01, + RB_INT_PARSE_UNDERSCORE = 0x02, + RB_INT_PARSE_PREFIX = 0x04, + RB_INT_PARSE_ALL = 0x07, + RB_INT_PARSE_DEFAULT = 0x07, +}; +struct RBignum { + struct RBasic basic; + union { + struct { + size_t len; + unsigned int *digits; + } heap; + unsigned int ary[(8*3/4)]; + } as; +}; +extern const char ruby_digitmap[]; +double rb_big_fdiv_double(VALUE x, VALUE y); +VALUE rb_big_uminus(VALUE x); +VALUE rb_big_hash(VALUE); +VALUE rb_big_odd_p(VALUE); +VALUE rb_big_even_p(VALUE); +size_t rb_big_size(VALUE); +VALUE rb_integer_float_cmp(VALUE x, VALUE y); +VALUE rb_integer_float_eq(VALUE x, VALUE y); +VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception); +VALUE rb_big_comp(VALUE x); +VALUE rb_big_aref(VALUE x, VALUE y); +VALUE rb_big_abs(VALUE x); +VALUE rb_big_size_m(VALUE big); +VALUE rb_big_bit_length(VALUE big); +VALUE rb_big_remainder(VALUE x, VALUE y); +VALUE rb_big_gt(VALUE x, VALUE y); +VALUE rb_big_ge(VALUE x, VALUE y); +VALUE rb_big_lt(VALUE x, VALUE y); +VALUE rb_big_le(VALUE x, VALUE y); +VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num); +VALUE rb_big_isqrt(VALUE n); +static inline _Bool BIGNUM_SIGN(VALUE b); +static inline _Bool BIGNUM_POSITIVE_P(VALUE b); +static inline _Bool BIGNUM_NEGATIVE_P(VALUE b); +static inline void BIGNUM_SET_SIGN(VALUE b, _Bool sign); +static inline void BIGNUM_NEGATE(VALUE b); +static inline size_t BIGNUM_LEN(VALUE b); +static inline unsigned int *BIGNUM_DIGITS(VALUE b); +static inline int BIGNUM_LENINT(VALUE b); +static inline _Bool BIGNUM_EMBED_P(VALUE b); +#pragma GCC visibility push(default) +VALUE rb_big_mul_normal(VALUE x, VALUE y); +VALUE rb_big_mul_balance(VALUE x, VALUE y); +VALUE rb_big_mul_karatsuba(VALUE x, VALUE y); +VALUE rb_big_mul_toom3(VALUE x, VALUE y); +VALUE rb_big_sq_fast(VALUE x); +VALUE rb_big_divrem_normal(VALUE x, VALUE y); +VALUE rb_big2str_poweroftwo(VALUE x, int base); +VALUE rb_big2str_generic(VALUE x, int base); +VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck); +VALUE rb_str2big_normal(VALUE arg, int base, int badcheck); +VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck); +VALUE rb_big_mul_gmp(VALUE x, VALUE y); +VALUE rb_big_divrem_gmp(VALUE x, VALUE y); +VALUE rb_big2str_gmp(VALUE x, int base); +VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck); +VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +VALUE rb_int128t2big(__int128 n); +#pragma GCC visibility pop +static inline _Bool +BIGNUM_SIGN(VALUE b) +{ + return RB_FL_TEST_RAW(b, ((VALUE)RUBY_FL_USER1)); +} +static inline _Bool +BIGNUM_POSITIVE_P(VALUE b) +{ + return BIGNUM_SIGN(b); +} +static inline _Bool +BIGNUM_NEGATIVE_P(VALUE b) +{ + return ! BIGNUM_POSITIVE_P(b); +} +static inline void +BIGNUM_SET_SIGN(VALUE b, _Bool sign) +{ + if (sign) { + RB_FL_SET_RAW(b, ((VALUE)RUBY_FL_USER1)); + } + else { + RB_FL_UNSET_RAW(b, ((VALUE)RUBY_FL_USER1)); + } +} +static inline void +BIGNUM_NEGATE(VALUE b) +{ + RB_FL_REVERSE_RAW(b, ((VALUE)RUBY_FL_USER1)); +} +static inline size_t +BIGNUM_LEN(VALUE b) +{ + if (! BIGNUM_EMBED_P(b)) { + return ((struct RBignum *)(b))->as.heap.len; + } + else { + size_t ret = ((struct RBasic *)(b))->flags; + ret &= (~(~(VALUE)0U << 3) << (((VALUE)RUBY_FL_USHIFT)+3)); + ret >>= (((VALUE)RUBY_FL_USHIFT)+3); + return ret; + } +} +static inline int +BIGNUM_LENINT(VALUE b) +{ + return rb_long2int_inline(BIGNUM_LEN(b)); +} +static inline unsigned int * +BIGNUM_DIGITS(VALUE b) +{ + if (BIGNUM_EMBED_P(b)) { + return ((struct RBignum *)(b))->as.ary; + } + else { + return ((struct RBignum *)(b))->as.heap.digits; + } +} +static inline _Bool +BIGNUM_EMBED_P(VALUE b) +{ + return RB_FL_TEST_RAW(b, ((VALUE)((VALUE)RUBY_FL_USER2))); +} + +#define INTERNAL_BITS_H +#define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2)) +#define SIGNED_INTEGER_TYPE_P(T) (0 > ((T)0)-1) +#define SIGNED_INTEGER_MIN(T) ((sizeof(T) == sizeof(int8_t)) ? ((T)INT8_MIN) : ((sizeof(T) == sizeof(int16_t)) ? ((T)INT16_MIN) : ((sizeof(T) == sizeof(int32_t)) ? ((T)INT32_MIN) : ((sizeof(T) == sizeof(int64_t)) ? ((T)INT64_MIN) : 0)))) +#define SIGNED_INTEGER_MAX(T) ((T)(SIGNED_INTEGER_MIN(T) ^ ((T)~(T)0))) +#define UNSIGNED_INTEGER_MAX(T) ((T)~(T)0) +#define MUL_OVERFLOW_P(a,b) __extension__ ({ __typeof__(a) c; __builtin_mul_overflow((a), (b), &c); }) +#define MUL_OVERFLOW_SIGNED_INTEGER_P(a,b,min,max) ( (a) == 0 ? 0 : (a) == -1 ? (b) < -(max) : (a) > 0 ? ((b) > 0 ? (max) / (a) < (b) : (min) / (a) > (b)) : ((b) > 0 ? (min) / (a) < (b) : (max) / (a) > (b))) +#define MUL_OVERFLOW_FIXNUM_P(a,b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, FIXNUM_MIN, FIXNUM_MAX) +#define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b) +#define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b) +#define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b) +#define bit_length(x) (unsigned int) (sizeof(x) <= sizeof(int32_t) ? 32 - nlz_int32((uint32_t)(x)) : sizeof(x) <= sizeof(int64_t) ? 64 - nlz_int64((uint64_t)(x)) : 128 - nlz_int128((uint128_t)(x))) +#define swap16 ruby_swap16 +#define swap32 ruby_swap32 +#define swap64 ruby_swap64 +static inline uint16_t ruby_swap16(uint16_t); +static inline uint32_t ruby_swap32(uint32_t); +static inline uint64_t ruby_swap64(uint64_t); +static inline unsigned nlz_int(unsigned x); +static inline unsigned nlz_long(unsigned long x); +static inline unsigned nlz_long_long(unsigned long long x); +static inline unsigned nlz_intptr(uintptr_t x); +static inline unsigned nlz_int32(uint32_t x); +static inline unsigned nlz_int64(uint64_t x); +static inline unsigned nlz_int128(unsigned __int128 x); +static inline unsigned rb_popcount32(uint32_t x); +static inline unsigned rb_popcount64(uint64_t x); +static inline unsigned rb_popcount_intptr(uintptr_t x); +static inline int ntz_int32(uint32_t x); +static inline int ntz_int64(uint64_t x); +static inline int ntz_intptr(uintptr_t x); +static inline VALUE RUBY_BIT_ROTL(VALUE, int); +static inline VALUE RUBY_BIT_ROTR(VALUE, int); +static inline uint16_t +ruby_swap16(uint16_t x) +{ + return __builtin_bswap16(x); +} +static inline uint32_t +ruby_swap32(uint32_t x) +{ + return __builtin_bswap32(x); +} +static inline uint64_t +ruby_swap64(uint64_t x) +{ + return __builtin_bswap64(x); +} +static inline unsigned int +nlz_int32(uint32_t x) +{ + __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32"); + return x ? (unsigned int)__builtin_clz(x) : 32; +} +static inline unsigned int +nlz_int64(uint64_t x) +{ + if (x == 0) { + return 64; + } + else if (sizeof(long) * 8 == 64) { + return (unsigned int)__builtin_clzl((unsigned long)x); + } + else if (sizeof(long long) * 8 == 64) { + return (unsigned int)__builtin_clzll((unsigned long long)x); + } + else { + __builtin_unreachable(); + } +} +static inline unsigned int +nlz_int128(unsigned __int128 x) +{ + uint64_t y = (uint64_t)(x >> 64); + if (x == 0) { + return 128; + } + else if (y == 0) { + return (unsigned int)nlz_int64(x) + 64; + } + else { + return (unsigned int)nlz_int64(y); + } +} +static inline unsigned int +nlz_int(unsigned int x) +{ + if (sizeof(unsigned int) * 8 == 32) { + return nlz_int32((uint32_t)x); + } + else if (sizeof(unsigned int) * 8 == 64) { + return nlz_int64((uint64_t)x); + } + else { + __builtin_unreachable(); + } +} +static inline unsigned int +nlz_long(unsigned long x) +{ + if (sizeof(unsigned long) * 8 == 32) { + return nlz_int32((uint32_t)x); + } + else if (sizeof(unsigned long) * 8 == 64) { + return nlz_int64((uint64_t)x); + } + else { + __builtin_unreachable(); + } +} +static inline unsigned int +nlz_long_long(unsigned long long x) +{ + if (sizeof(unsigned long long) * 8 == 64) { + return nlz_int64((uint64_t)x); + } + else if (sizeof(unsigned long long) * 8 == 128) { + return nlz_int128((unsigned __int128)x); + } + else { + __builtin_unreachable(); + } +} +static inline unsigned int +nlz_intptr(uintptr_t x) +{ + if (sizeof(uintptr_t) == sizeof(unsigned int)) { + return nlz_int((unsigned int)x); + } + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + return nlz_long((unsigned long)x); + } + if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + return nlz_long_long((unsigned long long)x); + } + else { + __builtin_unreachable(); + } +} +static inline unsigned int +rb_popcount32(uint32_t x) +{ + __extension__ _Static_assert(sizeof(int) * 8 >= 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT >= 32"); + return (unsigned int)__builtin_popcount(x); +} +static inline unsigned int +rb_popcount64(uint64_t x) +{ + if (sizeof(long) * 8 == 64) { + return (unsigned int)__builtin_popcountl((unsigned long)x); + } + else if (sizeof(long long) * 8 == 64) { + return (unsigned int)__builtin_popcountll((unsigned long long)x); + } + else { + __builtin_unreachable(); + } +} +static inline unsigned int +rb_popcount_intptr(uintptr_t x) +{ + if (sizeof(uintptr_t) * 8 == 64) { + return rb_popcount64((uint64_t)x); + } + else if (sizeof(uintptr_t) * 8 == 32) { + return rb_popcount32((uint32_t)x); + } + else { + __builtin_unreachable(); + } +} +static inline int +ntz_int32(uint32_t x) +{ + __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32"); + return x ? (unsigned)__builtin_ctz(x) : 32; +} +static inline int +ntz_int64(uint64_t x) +{ + if (x == 0) { + return 64; + } + else if (sizeof(long) * 8 == 64) { + return (unsigned)__builtin_ctzl((unsigned long)x); + } + else if (sizeof(long long) * 8 == 64) { + return (unsigned)__builtin_ctzll((unsigned long long)x); + } + else { + __builtin_unreachable(); + } +} +static inline int +ntz_intptr(uintptr_t x) +{ + if (sizeof(uintptr_t) * 8 == 64) { + return ntz_int64((uint64_t)x); + } + else if (sizeof(uintptr_t) * 8 == 32) { + return ntz_int32((uint32_t)x); + } + else { + __builtin_unreachable(); + } +} +static inline VALUE +RUBY_BIT_ROTL(VALUE v, int n) +{ + return __builtin_rotateleft64(v, n); +} +static inline VALUE +RUBY_BIT_ROTR(VALUE v, int n) +{ + return __builtin_rotateright64(v, n); +} + +#define INTERNAL_FIXNUM_H +#define DLONG LONG_LONG +#define DL2NUM(x) LL2NUM(x) +static inline long rb_overflowed_fix_to_int(long x); +static inline VALUE rb_fix_plus_fix(VALUE x, VALUE y); +static inline VALUE rb_fix_minus_fix(VALUE x, VALUE y); +static inline VALUE rb_fix_mul_fix(VALUE x, VALUE y); +static inline void rb_fix_divmod_fix(VALUE x, VALUE y, VALUE *divp, VALUE *modp); +static inline VALUE rb_fix_div_fix(VALUE x, VALUE y); +static inline VALUE rb_fix_mod_fix(VALUE x, VALUE y); +static inline _Bool FIXNUM_POSITIVE_P(VALUE num); +static inline _Bool FIXNUM_NEGATIVE_P(VALUE num); +static inline _Bool FIXNUM_ZERO_P(VALUE num); +static inline long +rb_overflowed_fix_to_int(long x) +{ + return (long)((unsigned long)(x >> 1) ^ (1LU << (4 * 8 - 1))); +} +static inline VALUE +rb_fix_plus_fix(VALUE x, VALUE y) +{ + long lz; + if (__builtin_add_overflow((long)x, (long)y-1, &lz)) { + return rb_int2big(rb_overflowed_fix_to_int(lz)); + } + else { + return (VALUE)lz; + } +} +static inline VALUE +rb_fix_minus_fix(VALUE x, VALUE y) +{ + long lz; + if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) { + return rb_int2big(rb_overflowed_fix_to_int(lz)); + } + else { + return (VALUE)lz; + } +} +static inline VALUE +rb_fix_mul_fix(VALUE x, VALUE y) +{ + long lx = rb_fix2long(x); + long ly = rb_fix2long(y); + return rb_ll2num_inline(( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )lx * ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )ly); +} +static inline void +rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp) +{ + long x = rb_fix2long(a); + long y = rb_fix2long(b); + long div, mod; + if (x == ((-2147483647L -1L) / 2) && y == -1) { + if (divp) *divp = rb_long2num_inline(-((-2147483647L -1L) / 2)); + if (modp) *modp = RB_INT2FIX(0); + return; + } + div = x / y; + mod = x % y; + if (y > 0 ? mod < 0 : mod > 0) { + mod += y; + div -= 1; + } + if (divp) *divp = RB_INT2FIX(div); + if (modp) *modp = RB_INT2FIX(mod); +} +static inline VALUE +rb_fix_div_fix(VALUE x, VALUE y) +{ + VALUE div; + rb_fix_divmod_fix(x, y, &div, ((void*)0)); + return div; +} +static inline VALUE +rb_fix_mod_fix(VALUE x, VALUE y) +{ + VALUE mod; + rb_fix_divmod_fix(x, y, ((void*)0), &mod); + return mod; +} +static inline _Bool +FIXNUM_POSITIVE_P(VALUE num) +{ + return ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )num > ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )__builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)); +} +static inline _Bool +FIXNUM_NEGATIVE_P(VALUE num) +{ + return ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )num < 0; +} +static inline _Bool +FIXNUM_ZERO_P(VALUE num) +{ + return num == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)); +} +#define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down) +#define ROUND_FUNC(mode,name) ROUND_TO(mode, name##_half_even, name##_half_up, name##_half_down) +#define ROUND_CALL(mode,name,args) ROUND_TO(mode, name##_half_even args, name##_half_up args, name##_half_down args) +#define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP +enum ruby_num_rounding_mode { + RUBY_NUM_ROUND_HALF_UP, + RUBY_NUM_ROUND_HALF_EVEN, + RUBY_NUM_ROUND_HALF_DOWN, + RUBY_NUM_ROUND_DEFAULT = RUBY_NUM_ROUND_HALF_UP, +}; +typedef double rb_float_value_type; +struct RFloat { + struct RBasic basic; + rb_float_value_type float_value; +}; +#define RFLOAT(obj) ((struct RFloat *)(obj)) +int rb_num_to_uint(VALUE val, unsigned int *ret); +VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl); +double ruby_float_step_size(double beg, double end, double unit, int excl); +int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless); +int rb_num_negative_p(VALUE); +VALUE rb_int_succ(VALUE num); +VALUE rb_float_uminus(VALUE num); +VALUE rb_int_plus(VALUE x, VALUE y); +VALUE rb_float_plus(VALUE x, VALUE y); +VALUE rb_int_minus(VALUE x, VALUE y); +VALUE rb_float_minus(VALUE x, VALUE y); +VALUE rb_int_mul(VALUE x, VALUE y); +VALUE rb_float_mul(VALUE x, VALUE y); +VALUE rb_float_div(VALUE x, VALUE y); +VALUE rb_int_idiv(VALUE x, VALUE y); +VALUE rb_int_modulo(VALUE x, VALUE y); +VALUE rb_int2str(VALUE num, int base); +VALUE rb_fix_plus(VALUE x, VALUE y); +VALUE rb_int_gt(VALUE x, VALUE y); +VALUE rb_float_gt(VALUE x, VALUE y); +VALUE rb_int_ge(VALUE x, VALUE y); +enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts); +double rb_int_fdiv_double(VALUE x, VALUE y); +VALUE rb_int_pow(VALUE x, VALUE y); +VALUE rb_float_pow(VALUE x, VALUE y); +VALUE rb_int_cmp(VALUE x, VALUE y); +VALUE rb_int_equal(VALUE x, VALUE y); +VALUE rb_int_divmod(VALUE x, VALUE y); +VALUE rb_int_and(VALUE x, VALUE y); +VALUE rb_int_lshift(VALUE x, VALUE y); +VALUE rb_int_div(VALUE x, VALUE y); +int rb_int_positive_p(VALUE num); +int rb_int_negative_p(VALUE num); +VALUE rb_check_integer_type(VALUE); +VALUE rb_num_pow(VALUE x, VALUE y); +VALUE rb_float_ceil(VALUE num, int ndigits); +VALUE rb_float_floor(VALUE x, int ndigits); +VALUE rb_float_abs(VALUE flt); +static inline VALUE rb_num_compare_with_zero(VALUE num, ID mid); +static inline int rb_num_positive_int_p(VALUE num); +static inline int rb_num_negative_int_p(VALUE num); +static inline double rb_float_flonum_value(VALUE v); +static inline double rb_float_noflonum_value(VALUE v); +static inline double rb_float_value_inline(VALUE v); +static inline VALUE rb_float_new_inline(double d); +static inline _Bool INT_POSITIVE_P(VALUE num); +static inline _Bool INT_NEGATIVE_P(VALUE num); +static inline _Bool FLOAT_ZERO_P(VALUE num); +#define rb_float_value rb_float_value_inline +#define rb_float_new rb_float_new_inline +#pragma GCC visibility push(default) +#pragma GCC visibility pop +#pragma GCC visibility push(default) +VALUE rb_flo_div_flo(VALUE x, VALUE y); +double ruby_float_mod(double x, double y); +VALUE rb_float_equal(VALUE x, VALUE y); +int rb_float_cmp(VALUE x, VALUE y); +VALUE rb_float_eql(VALUE x, VALUE y); +VALUE rb_fix_aref(VALUE fix, VALUE idx); +VALUE rb_int_zero_p(VALUE num); +VALUE rb_int_even_p(VALUE num); +VALUE rb_int_odd_p(VALUE num); +VALUE rb_int_abs(VALUE num); +VALUE rb_int_bit_length(VALUE num); +VALUE rb_int_uminus(VALUE num); +VALUE rb_int_comp(VALUE num); +#pragma GCC visibility pop +static inline _Bool +INT_POSITIVE_P(VALUE num) +{ + if (RB_FIXNUM_P(num)) { + return FIXNUM_POSITIVE_P(num); + } + else { + return BIGNUM_POSITIVE_P(num); + } +} +static inline _Bool +INT_NEGATIVE_P(VALUE num) +{ + if (RB_FIXNUM_P(num)) { + return FIXNUM_NEGATIVE_P(num); + } + else { + return BIGNUM_NEGATIVE_P(num); + } +} +static inline _Bool +FLOAT_ZERO_P(VALUE num) +{ + return rb_float_value_inline(num) == 0.0; +} +static inline VALUE +rb_num_compare_with_zero(VALUE num, ID mid) +{ + VALUE zero = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)); + VALUE r = rb_check_funcall(num, mid, 1, &zero); + if (r == ((VALUE)RUBY_Qundef)) { + rb_cmperr(num, zero); + } + return r; +} +static inline int +rb_num_positive_int_p(VALUE num) +{ + const ID mid = '>'; + if (RB_FIXNUM_P(num)) { + if (rb_method_basic_definition_p(rb_cInteger, mid)) + return FIXNUM_POSITIVE_P(num); + } + else if ((__builtin_constant_p(RUBY_T_BIGNUM) ? rbimpl_RB_TYPE_P_fastpath((num), (RUBY_T_BIGNUM)) : (RB_TYPE_P)((num), (RUBY_T_BIGNUM)))) { + if (rb_method_basic_definition_p(rb_cInteger, mid)) + return BIGNUM_POSITIVE_P(num); + } + return RB_TEST(rb_num_compare_with_zero(num, mid)); +} +static inline int +rb_num_negative_int_p(VALUE num) +{ + const ID mid = '<'; + if (RB_FIXNUM_P(num)) { + if (rb_method_basic_definition_p(rb_cInteger, mid)) + return FIXNUM_NEGATIVE_P(num); + } + else if ((__builtin_constant_p(RUBY_T_BIGNUM) ? rbimpl_RB_TYPE_P_fastpath((num), (RUBY_T_BIGNUM)) : (RB_TYPE_P)((num), (RUBY_T_BIGNUM)))) { + if (rb_method_basic_definition_p(rb_cInteger, mid)) + return BIGNUM_NEGATIVE_P(num); + } + return RB_TEST(rb_num_compare_with_zero(num, mid)); +} +static inline double +rb_float_flonum_value(VALUE v) +{ + if (v != (VALUE)0x8000000000000002) { + union { + double d; + VALUE v; + } t; + VALUE b63 = (v >> 63); + t.v = RUBY_BIT_ROTR((2 - b63) | (v & ~(VALUE)0x03), 3); + return t.d; + } + return 0.0; +} +static inline double +rb_float_noflonum_value(VALUE v) +{ + return ((struct RFloat *)(v))->float_value; +} +static inline double +rb_float_value_inline(VALUE v) +{ + if (RB_FLONUM_P(v)) { + return rb_float_flonum_value(v); + } + return rb_float_noflonum_value(v); +} +static inline VALUE +rb_float_new_inline(double d) +{ + union { + double d; + VALUE v; + } t; + int bits; + t.d = d; + bits = (int)((VALUE)(t.v >> 60) & 0x7); + if (t.v != 0x3000000000000000 && + !((bits-3) & ~0x01)) { + return (RUBY_BIT_ROTL(t.v, 3) & ~(VALUE)0x01) | 0x02; + } + else if (t.v == (VALUE)0) { + return 0x8000000000000002; + } + return rb_float_new_in_heap(d); +} + + +#define INTERNAL_RANDOM_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +int ruby_fill_random_bytes(void *, size_t, int); + +#define INTERNAL_VARIABLE_H +#define __STDDEF_H +#define __need_ptrdiff_t +#define __need_size_t +#define __need_rsize_t +#define __need_wchar_t +#define __need_NULL +#define __need_offsetof +#undef __need_ptrdiff_t +#undef __need_size_t +#undef __need_rsize_t +#undef __need_wchar_t +#undef NULL +#define NULL ((void*)0) +#undef __need_NULL +#undef __need_offsetof +#define ROBJECT_TRANSIENT_FLAG FL_USER13 +void rb_gc_mark_global_tbl(void); +void rb_gc_update_global_tbl(void); +size_t rb_generic_ivar_memsize(VALUE); +VALUE rb_search_class_path(VALUE); +VALUE rb_attr_delete(VALUE, ID); +VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef); +void rb_autoload_str(VALUE mod, ID id, VALUE file); +VALUE rb_autoload_at_p(VALUE, ID, int); +__declspec(noreturn) VALUE rb_mod_const_missing(VALUE,VALUE); +rb_gvar_getter_t *rb_gvar_getter_function_of(ID); +rb_gvar_setter_t *rb_gvar_setter_function_of(ID); +void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_); +void rb_gvar_ractor_local(const char *name); +static inline _Bool ROBJ_TRANSIENT_P(VALUE obj); +static inline void ROBJ_TRANSIENT_SET(VALUE obj); +static inline void ROBJ_TRANSIENT_UNSET(VALUE obj); +uint32_t rb_obj_ensure_iv_index_mapping(VALUE obj, ID id); +#pragma GCC visibility push(default) +void rb_mark_generic_ivar(VALUE); +void rb_mv_generic_ivar(VALUE src, VALUE dst); +VALUE rb_const_missing(VALUE klass, VALUE name); +int rb_class_ivar_set(VALUE klass, ID vid, VALUE value); +void rb_iv_tbl_copy(VALUE dst, VALUE src); +#pragma GCC visibility pop +#pragma GCC visibility push(default) +VALUE rb_gvar_get(ID); +VALUE rb_gvar_set(ID, VALUE); +VALUE rb_gvar_defined(ID); +void rb_const_warn_if_deprecated(const rb_const_entry_t *, VALUE, ID); +void rb_init_iv_list(VALUE obj); +#pragma GCC visibility pop +static inline _Bool +ROBJ_TRANSIENT_P(VALUE obj) +{ + return RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_USER13)); +} +static inline void +ROBJ_TRANSIENT_SET(VALUE obj) +{ + RB_FL_SET_RAW(obj, ((VALUE)RUBY_FL_USER13)); +} +static inline void +ROBJ_TRANSIENT_UNSET(VALUE obj) +{ + RB_FL_UNSET_RAW(obj, ((VALUE)RUBY_FL_USER13)); +} + +#define INTERNAL_STRUCT_H +enum { + RSTRUCT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX, + RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1), + RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1), + RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3), +}; +struct RStruct { + struct RBasic basic; + union { + struct { + long len; + const VALUE *ptr; + } heap; + const VALUE ary[RSTRUCT_EMBED_LEN_MAX]; + } as; +}; +#define RSTRUCT(obj) ((struct RStruct *)(obj)) +#define RSTRUCT_LEN internal_RSTRUCT_LEN +#define RSTRUCT_SET internal_RSTRUCT_SET +#define RSTRUCT_GET internal_RSTRUCT_GET +VALUE rb_struct_init_copy(VALUE copy, VALUE s); +VALUE rb_struct_lookup(VALUE s, VALUE idx); +VALUE rb_struct_s_keyword_init(VALUE klass); +static inline const VALUE *rb_struct_const_heap_ptr(VALUE st); +static inline _Bool RSTRUCT_TRANSIENT_P(VALUE st); +static inline void RSTRUCT_TRANSIENT_SET(VALUE st); +static inline void RSTRUCT_TRANSIENT_UNSET(VALUE st); +static inline long RSTRUCT_EMBED_LEN(VALUE st); +static inline long internal_RSTRUCT_LEN(VALUE st); +static inline int RSTRUCT_LENINT(VALUE st); +static inline const VALUE *RSTRUCT_CONST_PTR(VALUE st); +static inline void internal_RSTRUCT_SET(VALUE st, long k, VALUE v); +static inline VALUE internal_RSTRUCT_GET(VALUE st, long k); +static inline _Bool +RSTRUCT_TRANSIENT_P(VALUE st) +{ + return RB_FL_TEST_RAW(st, RSTRUCT_TRANSIENT_FLAG); +} +static inline void +RSTRUCT_TRANSIENT_SET(VALUE st) +{ + RB_FL_SET_RAW(st, RSTRUCT_TRANSIENT_FLAG); +} +static inline void +RSTRUCT_TRANSIENT_UNSET(VALUE st) +{ + RB_FL_UNSET_RAW(st, RSTRUCT_TRANSIENT_FLAG); +} +static inline long +RSTRUCT_EMBED_LEN(VALUE st) +{ + long ret = RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK); + ret >>= RSTRUCT_EMBED_LEN_SHIFT; + return ret; +} +static inline long +internal_RSTRUCT_LEN(VALUE st) +{ + if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) { + return RSTRUCT_EMBED_LEN(st); + } + else { + return ((struct RStruct *)(st))->as.heap.len; + } +} +static inline int +RSTRUCT_LENINT(VALUE st) +{ + return rb_long2int_inline(internal_RSTRUCT_LEN(st)); +} +static inline const VALUE * +RSTRUCT_CONST_PTR(VALUE st) +{ + const struct RStruct *p = ((struct RStruct *)(st)); + if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) { + return p->as.ary; + } + else { + return p->as.heap.ptr; + } +} +static inline void +internal_RSTRUCT_SET(VALUE st, long k, VALUE v) +{ + rb_obj_write((VALUE)(st), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&RSTRUCT_CONST_PTR(st)[k])) unaligned_member_access_result = ((VALUE *)(&RSTRUCT_CONST_PTR(st)[k])); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(v), "../ruby-3.1.5/internal/struct.h", 137); +} +static inline VALUE +internal_RSTRUCT_GET(VALUE st, long k) +{ + return RSTRUCT_CONST_PTR(st)[k]; +} +static inline const VALUE * +rb_struct_const_heap_ptr(VALUE st) +{ + return ((struct RStruct *)(st))->as.heap.ptr; +} + +#define RUBY_TOPLEVEL_VARIABLE_H +struct gen_ivtbl { + uint32_t numiv; + VALUE ivptr[]; +}; +int rb_ivar_generic_ivtbl_lookup(VALUE obj, struct gen_ivtbl **); +VALUE rb_ivar_generic_lookup_with_index(VALUE obj, ID id, uint32_t index); +#define BIN(n) YARVINSN_##n +enum ruby_vminsn_type { + YARVINSN_nop, + YARVINSN_getlocal, + YARVINSN_setlocal, + YARVINSN_getblockparam, + YARVINSN_setblockparam, + YARVINSN_getblockparamproxy, + YARVINSN_getspecial, + YARVINSN_setspecial, + YARVINSN_getinstancevariable, + YARVINSN_setinstancevariable, + YARVINSN_getclassvariable, + YARVINSN_setclassvariable, + YARVINSN_getconstant, + YARVINSN_setconstant, + YARVINSN_getglobal, + YARVINSN_setglobal, + YARVINSN_putnil, + YARVINSN_putself, + YARVINSN_putobject, + YARVINSN_putspecialobject, + YARVINSN_putstring, + YARVINSN_concatstrings, + YARVINSN_anytostring, + YARVINSN_toregexp, + YARVINSN_intern, + YARVINSN_newarray, + YARVINSN_newarraykwsplat, + YARVINSN_duparray, + YARVINSN_duphash, + YARVINSN_expandarray, + YARVINSN_concatarray, + YARVINSN_splatarray, + YARVINSN_newhash, + YARVINSN_newrange, + YARVINSN_pop, + YARVINSN_dup, + YARVINSN_dupn, + YARVINSN_swap, + YARVINSN_topn, + YARVINSN_setn, + YARVINSN_adjuststack, + YARVINSN_defined, + YARVINSN_checkmatch, + YARVINSN_checkkeyword, + YARVINSN_checktype, + YARVINSN_defineclass, + YARVINSN_definemethod, + YARVINSN_definesmethod, + YARVINSN_send, + YARVINSN_opt_send_without_block, + YARVINSN_objtostring, + YARVINSN_opt_str_freeze, + YARVINSN_opt_nil_p, + YARVINSN_opt_str_uminus, + YARVINSN_opt_newarray_max, + YARVINSN_opt_newarray_min, + YARVINSN_invokesuper, + YARVINSN_invokeblock, + YARVINSN_leave, + YARVINSN_throw, + YARVINSN_jump, + YARVINSN_branchif, + YARVINSN_branchunless, + YARVINSN_branchnil, + YARVINSN_opt_getinlinecache, + YARVINSN_opt_setinlinecache, + YARVINSN_once, + YARVINSN_opt_case_dispatch, + YARVINSN_opt_plus, + YARVINSN_opt_minus, + YARVINSN_opt_mult, + YARVINSN_opt_div, + YARVINSN_opt_mod, + YARVINSN_opt_eq, + YARVINSN_opt_neq, + YARVINSN_opt_lt, + YARVINSN_opt_le, + YARVINSN_opt_gt, + YARVINSN_opt_ge, + YARVINSN_opt_ltlt, + YARVINSN_opt_and, + YARVINSN_opt_or, + YARVINSN_opt_aref, + YARVINSN_opt_aset, + YARVINSN_opt_aset_with, + YARVINSN_opt_aref_with, + YARVINSN_opt_length, + YARVINSN_opt_size, + YARVINSN_opt_empty_p, + YARVINSN_opt_succ, + YARVINSN_opt_not, + YARVINSN_opt_regexpmatch2, + YARVINSN_invokebuiltin, + YARVINSN_opt_invokebuiltin_delegate, + YARVINSN_opt_invokebuiltin_delegate_leave, + YARVINSN_getlocal_WC_0, + YARVINSN_getlocal_WC_1, + YARVINSN_setlocal_WC_0, + YARVINSN_setlocal_WC_1, + YARVINSN_putobject_INT2FIX_0_, + YARVINSN_putobject_INT2FIX_1_, + YARVINSN_trace_nop, + YARVINSN_trace_getlocal, + YARVINSN_trace_setlocal, + YARVINSN_trace_getblockparam, + YARVINSN_trace_setblockparam, + YARVINSN_trace_getblockparamproxy, + YARVINSN_trace_getspecial, + YARVINSN_trace_setspecial, + YARVINSN_trace_getinstancevariable, + YARVINSN_trace_setinstancevariable, + YARVINSN_trace_getclassvariable, + YARVINSN_trace_setclassvariable, + YARVINSN_trace_getconstant, + YARVINSN_trace_setconstant, + YARVINSN_trace_getglobal, + YARVINSN_trace_setglobal, + YARVINSN_trace_putnil, + YARVINSN_trace_putself, + YARVINSN_trace_putobject, + YARVINSN_trace_putspecialobject, + YARVINSN_trace_putstring, + YARVINSN_trace_concatstrings, + YARVINSN_trace_anytostring, + YARVINSN_trace_toregexp, + YARVINSN_trace_intern, + YARVINSN_trace_newarray, + YARVINSN_trace_newarraykwsplat, + YARVINSN_trace_duparray, + YARVINSN_trace_duphash, + YARVINSN_trace_expandarray, + YARVINSN_trace_concatarray, + YARVINSN_trace_splatarray, + YARVINSN_trace_newhash, + YARVINSN_trace_newrange, + YARVINSN_trace_pop, + YARVINSN_trace_dup, + YARVINSN_trace_dupn, + YARVINSN_trace_swap, + YARVINSN_trace_topn, + YARVINSN_trace_setn, + YARVINSN_trace_adjuststack, + YARVINSN_trace_defined, + YARVINSN_trace_checkmatch, + YARVINSN_trace_checkkeyword, + YARVINSN_trace_checktype, + YARVINSN_trace_defineclass, + YARVINSN_trace_definemethod, + YARVINSN_trace_definesmethod, + YARVINSN_trace_send, + YARVINSN_trace_opt_send_without_block, + YARVINSN_trace_objtostring, + YARVINSN_trace_opt_str_freeze, + YARVINSN_trace_opt_nil_p, + YARVINSN_trace_opt_str_uminus, + YARVINSN_trace_opt_newarray_max, + YARVINSN_trace_opt_newarray_min, + YARVINSN_trace_invokesuper, + YARVINSN_trace_invokeblock, + YARVINSN_trace_leave, + YARVINSN_trace_throw, + YARVINSN_trace_jump, + YARVINSN_trace_branchif, + YARVINSN_trace_branchunless, + YARVINSN_trace_branchnil, + YARVINSN_trace_opt_getinlinecache, + YARVINSN_trace_opt_setinlinecache, + YARVINSN_trace_once, + YARVINSN_trace_opt_case_dispatch, + YARVINSN_trace_opt_plus, + YARVINSN_trace_opt_minus, + YARVINSN_trace_opt_mult, + YARVINSN_trace_opt_div, + YARVINSN_trace_opt_mod, + YARVINSN_trace_opt_eq, + YARVINSN_trace_opt_neq, + YARVINSN_trace_opt_lt, + YARVINSN_trace_opt_le, + YARVINSN_trace_opt_gt, + YARVINSN_trace_opt_ge, + YARVINSN_trace_opt_ltlt, + YARVINSN_trace_opt_and, + YARVINSN_trace_opt_or, + YARVINSN_trace_opt_aref, + YARVINSN_trace_opt_aset, + YARVINSN_trace_opt_aset_with, + YARVINSN_trace_opt_aref_with, + YARVINSN_trace_opt_length, + YARVINSN_trace_opt_size, + YARVINSN_trace_opt_empty_p, + YARVINSN_trace_opt_succ, + YARVINSN_trace_opt_not, + YARVINSN_trace_opt_regexpmatch2, + YARVINSN_trace_invokebuiltin, + YARVINSN_trace_opt_invokebuiltin_delegate, + YARVINSN_trace_opt_invokebuiltin_delegate_leave, + YARVINSN_trace_getlocal_WC_0, + YARVINSN_trace_getlocal_WC_1, + YARVINSN_trace_setlocal_WC_0, + YARVINSN_trace_setlocal_WC_1, + YARVINSN_trace_putobject_INT2FIX_0_, + YARVINSN_trace_putobject_INT2FIX_1_, + VM_INSTRUCTION_SIZE +}; +#define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_##array, numberof(array) == VM_INSTRUCTION_SIZE) +extern rb_method_definition_t *rb_method_definition_create(rb_method_type_t type, ID mid); +extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts); +extern int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2); +extern VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj, + int argc, const VALUE *argv, int priv); +static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp); +static VALUE +ruby_vm_special_exception_copy(VALUE exc) +{ + VALUE e = rb_obj_alloc(rb_class_real(RBASIC_CLASS(exc))); + rb_obj_copy_ivar(e, exc); + return e; +} +__declspec(noreturn) static void ec_stack_overflow(rb_execution_context_t *ec, int); +static void +ec_stack_overflow(rb_execution_context_t *ec, int setup) +{ + VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack]; + ec->raised_flag = RAISED_STACKOVERFLOW; + if (setup) { + VALUE at = rb_ec_backtrace_object(ec); + mesg = ruby_vm_special_exception_copy(mesg); + rb_ivar_set(mesg, idBt, at); + rb_ivar_set(mesg, idBt_locations, at); + } + ec->errinfo = mesg; + rb_ec_tag_jump(ec, RUBY_TAG_RAISE); +} +__declspec(noreturn) static void vm_stackoverflow(void); +__declspec(noinline) static __attribute__((__cold__)) void vm_stackoverflow(void); +static void +vm_stackoverflow(void) +{ + ec_stack_overflow(rb_current_execution_context(1), 1); +} +__declspec(noreturn) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit); +static void +rb_ec_stack_overflow(rb_execution_context_t *ec, int crit) +{ + if (rb_during_gc()) { + rb_bug("system stack overflow during GC. Faulty native extension?"); + } + if (crit) { + ec->raised_flag = RAISED_STACKOVERFLOW; + ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal]; + rb_ec_tag_jump(ec, RUBY_TAG_RAISE); + } + ec_stack_overflow(ec, 0); +} +#define vm_check_canary(ec,sp) +#define vm_check_frame(a,b,c,d) +#define vm_push_frame_debug_counter_inc(ec,cfp,t) +__extension__ _Static_assert((-2) == -2, "VM_ENV_DATA_INDEX_ME_CREF" ": " "VM_ENV_DATA_INDEX_ME_CREF == -2"); +__extension__ _Static_assert((-1) == -1, "VM_ENV_DATA_INDEX_SPECVAL" ": " "VM_ENV_DATA_INDEX_SPECVAL == -1"); +__extension__ _Static_assert(( 0) == -0, "VM_ENV_DATA_INDEX_FLAGS" ": " "VM_ENV_DATA_INDEX_FLAGS == -0"); +static void +vm_push_frame(rb_execution_context_t *ec, + const rb_iseq_t *iseq, + VALUE type, + VALUE self, + VALUE specval, + VALUE cref_or_me, + const VALUE *pc, + VALUE *sp, + int local_size, + int stack_max) +{ + rb_control_frame_t *const cfp = ((ec->cfp)-1); + ; + ((void)0); + do { __extension__ _Static_assert(sizeof(*(sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*(sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*(cfp)) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*(cfp)) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&(sp)[(local_size + stack_max)]; if ((__builtin_expect(!!((cfp) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0); + ; + for (int i=0; i < local_size; i++) { + *sp++ = ((VALUE)RUBY_Qnil); + } + *sp++ = cref_or_me; + *sp++ = specval ; + *sp++ = type; + *cfp = (const struct rb_control_frame_struct) { + .pc = pc, + .sp = sp, + .iseq = iseq, + .self = self, + .ep = sp - 1, + .block_code = ((void*)0), + .__bp__ = sp, + .jit_return = ((void*)0) + }; + ec->cfp = cfp; + if (0 == 2) { + rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp); + } + ; +} +static inline int +vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep) +{ + VALUE flags = ep[( 0)]; + if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency(); + if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp); + rb_vm_check_ints(ec); + ec->cfp = ((cfp)+1); + return flags & VM_FRAME_FLAG_FINISH; +} +static void +rb_vm_pop_frame(rb_execution_context_t *ec) +{ + vm_pop_frame(ec, ec->cfp, ec->cfp->ep); +} +static inline VALUE +rb_arity_error_new(int argc, int min, int max) +{ + VALUE err_mess = 0; + if (min == max) { + err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d)", argc, min); + } + else if (max == (-1)) { + err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d+)", argc, min); + } + else { + err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d..%d)", argc, min, max); + } + return rb_exc_new_str(rb_eArgError, err_mess); +} +static void +rb_error_arity(int argc, int min, int max) +{ + rb_exc_raise(rb_arity_error_new(argc, min, max)); +} +__declspec(noinline) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v); +static void +vm_env_write_slowpath(const VALUE *ep, int index, VALUE v) +{ + rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep)); + VM_FORCE_WRITE(&ep[index], v); + VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED); + ((void)0); +} +static inline void +vm_env_write(const VALUE *ep, int index, VALUE v) +{ + VALUE flags = ep[( 0)]; + if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) { + VM_STACK_ENV_WRITE(ep, index, v); + } + else { + vm_env_write_slowpath(ep, index, v); + } +} +static VALUE +rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler) +{ + if (block_handler == 0) { + return ((VALUE)RUBY_Qnil); + } + else { + switch (vm_block_handler_type(block_handler)) { + case block_handler_type_iseq: + case block_handler_type_ifunc: + return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc); + case block_handler_type_symbol: + return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler)); + case block_handler_type_proc: + return VM_BH_TO_PROC(block_handler); + default: + __builtin_unreachable(); + } + } +} +static inline struct vm_svar * +lep_svar(const rb_execution_context_t *ec, const VALUE *lep) +{ + VALUE svar; + if (lep && (ec == ((void*)0) || ec->root_lep != lep)) { + svar = lep[(-2)]; + } + else { + svar = ec->root_svar; + } + ((void)0); + return (struct vm_svar *)svar; +} +static inline void +lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar) +{ + ((void)0); + if (lep && (ec == ((void*)0) || ec->root_lep != lep)) { + vm_env_write(lep, (-2), (VALUE)svar); + } + else { + rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ec->root_svar)) unaligned_member_access_result = ((VALUE *)(&ec->root_svar)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(svar), "../ruby-3.1.5/vm_insnhelper.c", 544); + } +} +static VALUE +lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key) +{ + const struct vm_svar *svar = lep_svar(ec, lep); + if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil); + switch (key) { + case VM_SVAR_LASTLINE: + return svar->lastline; + case VM_SVAR_BACKREF: + return svar->backref; + default: { + const VALUE ary = svar->others; + if (RB_NIL_P(ary)) { + return ((VALUE)RUBY_Qnil); + } + else { + return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START); + } + } + } +} +static struct vm_svar * +svar_new(VALUE obj) +{ + return (struct vm_svar *)rb_imemo_new(imemo_svar, ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), obj); +} +static void +lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val) +{ + struct vm_svar *svar = lep_svar(ec, lep); + if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) { + lep_svar_write(ec, lep, svar = svar_new((VALUE)svar)); + } + switch (key) { + case VM_SVAR_LASTLINE: + rb_obj_write((VALUE)(svar), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&svar->lastline)) unaligned_member_access_result = ((VALUE *)(&svar->lastline)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(val), "../ruby-3.1.5/vm_insnhelper.c", 590); + return; + case VM_SVAR_BACKREF: + rb_obj_write((VALUE)(svar), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&svar->backref)) unaligned_member_access_result = ((VALUE *)(&svar->backref)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(val), "../ruby-3.1.5/vm_insnhelper.c", 593); + return; + default: { + VALUE ary = svar->others; + if (RB_NIL_P(ary)) { + rb_obj_write((VALUE)(svar), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&svar->others)) unaligned_member_access_result = ((VALUE *)(&svar->others)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(ary = rb_ary_new()), "../ruby-3.1.5/vm_insnhelper.c", 599); + } + rb_ary_store(ary, key - VM_SVAR_EXTRA_START, val); + } + } +} +static inline VALUE +vm_getspecial(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, rb_num_t type) +{ + VALUE val; + if (type == 0) { + val = lep_svar_get(ec, lep, key); + } + else { + VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF); + if (type & 0x01) { + switch (type >> 1) { + case '&': + val = rb_reg_last_match(backref); + break; + case '`': + val = rb_reg_match_pre(backref); + break; + case '\'': + val = rb_reg_match_post(backref); + break; + case '+': + val = rb_reg_match_last(backref); + break; + default: + rb_bug("unexpected back-ref"); + } + } + else { + val = rb_reg_nth_match((int)(type >> 1), backref); + } + } + return val; +} +__attribute__((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar); +static rb_callable_method_entry_t * +check_method_entry(VALUE obj, int can_be_svar) +{ + if (obj == ((VALUE)RUBY_Qfalse)) return ((void*)0); + switch (imemo_type(obj)) { + case imemo_ment: + return (rb_callable_method_entry_t *)obj; + case imemo_cref: + return ((void*)0); + case imemo_svar: + if (can_be_svar) { + return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0); + } + default: + return ((void*)0); + } +} +static const rb_callable_method_entry_t * +rb_vm_frame_method_entry(const rb_control_frame_t *cfp) +{ + const VALUE *ep = cfp->ep; + rb_callable_method_entry_t *me; + while (!VM_ENV_LOCAL_P(ep)) { + if ((me = check_method_entry(ep[(-2)], 0)) != ((void*)0)) return me; + ep = VM_ENV_PREV_EP(ep); + } + return check_method_entry(ep[(-2)], 1); +} +static const rb_iseq_t * +method_entry_iseqptr(const rb_callable_method_entry_t *me) +{ + switch (me->def->type) { + case VM_METHOD_TYPE_ISEQ: + return me->def->body.iseq.iseqptr; + default: + return ((void*)0); + } +} +static rb_cref_t * +method_entry_cref(const rb_callable_method_entry_t *me) +{ + switch (me->def->type) { + case VM_METHOD_TYPE_ISEQ: + return me->def->body.iseq.cref; + default: + return ((void*)0); + } +} +__attribute__((__pure__)) static rb_cref_t *check_cref(VALUE, int); +static rb_cref_t * +check_cref(VALUE obj, int can_be_svar) +{ + if (obj == ((VALUE)RUBY_Qfalse)) return ((void*)0); + switch (imemo_type(obj)) { + case imemo_ment: + return method_entry_cref((rb_callable_method_entry_t *)obj); + case imemo_cref: + return (rb_cref_t *)obj; + case imemo_svar: + if (can_be_svar) { + return check_cref(((struct vm_svar *)obj)->cref_or_me, 0); + } + default: + return ((void*)0); + } +} +static inline rb_cref_t * +vm_env_cref(const VALUE *ep) +{ + rb_cref_t *cref; + while (!VM_ENV_LOCAL_P(ep)) { + if ((cref = check_cref(ep[(-2)], 0)) != ((void*)0)) return cref; + ep = VM_ENV_PREV_EP(ep); + } + return check_cref(ep[(-2)], 1); +} +static int +is_cref(const VALUE v, int can_be_svar) +{ + if ((__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((v), (RUBY_T_IMEMO)) : (RB_TYPE_P)((v), (RUBY_T_IMEMO)))) { + switch (imemo_type(v)) { + case imemo_cref: + return 1; + case imemo_svar: + if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0); + default: + break; + } + } + return 0; +} +static int +vm_env_cref_by_cref(const VALUE *ep) +{ + while (!VM_ENV_LOCAL_P(ep)) { + if (is_cref(ep[(-2)], 0)) return 1; + ep = VM_ENV_PREV_EP(ep); + } + return is_cref(ep[(-2)], 1); +} +static rb_cref_t * +cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent) +{ + const VALUE v = *vptr; + rb_cref_t *cref, *new_cref; + if ((__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((v), (RUBY_T_IMEMO)) : (RB_TYPE_P)((v), (RUBY_T_IMEMO)))) { + switch (imemo_type(v)) { + case imemo_cref: + cref = (rb_cref_t *)v; + new_cref = vm_cref_dup(cref); + if (parent) { + rb_obj_write((VALUE)(parent), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(vptr)) unaligned_member_access_result = ((VALUE *)(vptr)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(new_cref), "../ruby-3.1.5/vm_insnhelper.c", 785); + } + else { + VM_FORCE_WRITE(vptr, (VALUE)new_cref); + } + return (rb_cref_t *)new_cref; + case imemo_svar: + if (can_be_svar) { + return cref_replace_with_duplicated_cref_each_frame(&((struct vm_svar *)v)->cref_or_me, 0, v); + } + case imemo_ment: + rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable"); + default: + break; + } + } + return 0; +} +static rb_cref_t * +vm_cref_replace_with_duplicated_cref(const VALUE *ep) +{ + if (vm_env_cref_by_cref(ep)) { + rb_cref_t *cref; + VALUE envval; + while (!VM_ENV_LOCAL_P(ep)) { + envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse); + if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void*)0)) { + return cref; + } + ep = VM_ENV_PREV_EP(ep); + } + envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse); + return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval); + } + else { + rb_bug("vm_cref_dup: unreachable"); + } +} +static rb_cref_t * +vm_get_cref(const VALUE *ep) +{ + rb_cref_t *cref = vm_env_cref(ep); + if (cref != ((void*)0)) { + return cref; + } + else { + rb_bug("vm_get_cref: unreachable"); + } +} +rb_cref_t * +rb_vm_get_cref(const VALUE *ep) +{ + return vm_get_cref(ep); +} +static rb_cref_t * +vm_ec_cref(const rb_execution_context_t *ec) +{ + const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp); + if (cfp == ((void*)0)) { + return ((void*)0); + } + return vm_get_cref(cfp->ep); +} +static const rb_cref_t * +vm_get_const_key_cref(const VALUE *ep) +{ + const rb_cref_t *cref = vm_get_cref(ep); + const rb_cref_t *key_cref = cref; + while (cref) { + if (RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) || + RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_USER6))) { + return key_cref; + } + cref = CREF_NEXT(cref); + } + return ((void*)0); +} +void +rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr) +{ + rb_cref_t *new_cref; + while (cref) { + if (CREF_CLASS(cref) == old_klass) { + new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0); + *new_cref_ptr = new_cref; + return; + } + new_cref = vm_cref_new_use_prev(CREF_CLASS(cref), METHOD_VISI_UNDEF, 0, cref, 0); + cref = CREF_NEXT(cref); + *new_cref_ptr = new_cref; + new_cref_ptr = &new_cref->next; + } + *new_cref_ptr = ((void*)0); +} +static rb_cref_t * +vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval, int singleton) +{ + rb_cref_t *prev_cref = ((void*)0); + if (ep) { + prev_cref = vm_env_cref(ep); + } + else { + rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp); + if (cfp) { + prev_cref = vm_env_cref(cfp->ep); + } + } + return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval, singleton); +} +static inline VALUE +vm_get_cbase(const VALUE *ep) +{ + const rb_cref_t *cref = vm_get_cref(ep); + return CREF_CLASS_FOR_DEFINITION(cref); +} +static inline VALUE +vm_get_const_base(const VALUE *ep) +{ + const rb_cref_t *cref = vm_get_cref(ep); + while (cref) { + if (!CREF_PUSHED_BY_EVAL(cref)) { + return CREF_CLASS_FOR_DEFINITION(cref); + } + cref = CREF_NEXT(cref); + } + return ((VALUE)RUBY_Qundef); +} +static inline void +vm_check_if_namespace(VALUE klass) +{ + if (!(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS))) && !(__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_MODULE)) : (RB_TYPE_P)((klass), (RUBY_T_MODULE)))) { + rb_raise(rb_eTypeError, "%+""ll""i" "\v"" is not a class/module", klass); + } +} +static inline void +vm_ensure_not_refinement_module(VALUE self) +{ + if ((__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((self), (RUBY_T_MODULE)) : (RB_TYPE_P)((self), (RUBY_T_MODULE))) && RB_FL_TEST(self, RMODULE_IS_REFINEMENT)) { + rb_warn("not defined at the refinement, but at the outer class/module"); + } +} +static inline VALUE +vm_get_iclass(const rb_control_frame_t *cfp, VALUE klass) +{ + return klass; +} +static inline VALUE +vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, _Bool allow_nil, int is_defined) +{ + void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id); + VALUE val; + if (RB_NIL_P(orig_klass) && allow_nil) { + const rb_cref_t *root_cref = vm_get_cref(ec->cfp->ep); + const rb_cref_t *cref; + VALUE klass = ((VALUE)RUBY_Qnil); + while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) { + root_cref = CREF_NEXT(root_cref); + } + cref = root_cref; + while (cref && CREF_NEXT(cref)) { + if (CREF_PUSHED_BY_EVAL(cref)) { + klass = ((VALUE)RUBY_Qnil); + } + else { + klass = CREF_CLASS(cref); + } + cref = CREF_NEXT(cref); + if (!RB_NIL_P(klass)) { + VALUE av, am = 0; + rb_const_entry_t *ce; + search_continue: + if ((ce = rb_const_lookup(klass, id))) { + rb_const_warn_if_deprecated(ce, klass, id); + val = ce->value; + if (val == ((VALUE)RUBY_Qundef)) { + if (am == klass) break; + am = klass; + if (is_defined) return 1; + if (rb_autoloading_value(klass, id, &av, ((void*)0))) return av; + rb_autoload_load(klass, id); + goto search_continue; + } + else { + if (is_defined) { + return 1; + } + else { + if ((__builtin_expect(!!(!rb_ractor_main_p()), 0))) { + if (!rb_ractor_shareable_p(val)) { + rb_raise(rb_eRactorIsolationError, + "can not access non-shareable objects in constant %""ll""i" "\v""::%s by non-main ractor.", rb_class_path(klass), rb_id2name(id)); + } + } + return val; + } + } + } + } + } + if (root_cref && !RB_NIL_P(CREF_CLASS(root_cref))) { + klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref)); + } + else { + klass = rb_class_of(ec->cfp->self); + } + if (is_defined) { + return rb_const_defined(klass, id); + } + else { + return rb_const_get(klass, id); + } + } + else { + vm_check_if_namespace(orig_klass); + if (is_defined) { + return rb_public_const_defined_from(orig_klass, id); + } + else { + return rb_public_const_get_from(orig_klass, id); + } + } +} +static inline VALUE +vm_get_cvar_base(const rb_cref_t *cref, const rb_control_frame_t *cfp, int top_level_raise) +{ + VALUE klass; + if (!cref) { + rb_bug("vm_get_cvar_base: no cref"); + } + while (CREF_NEXT(cref) && + (RB_NIL_P(CREF_CLASS(cref)) || RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) || + CREF_PUSHED_BY_EVAL(cref) || CREF_SINGLETON(cref))) { + cref = CREF_NEXT(cref); + } + if (top_level_raise && !CREF_NEXT(cref)) { + rb_raise(rb_eRuntimeError, "class variable access from toplevel"); + } + klass = vm_get_iclass(cfp, CREF_CLASS(cref)); + if (RB_NIL_P(klass)) { + rb_raise(rb_eTypeError, "no class variables available"); + } + return klass; +} +static VALUE +vm_search_const_defined_class(const VALUE cbase, ID id) +{ + if (rb_const_defined_at(cbase, id)) return cbase; + if (cbase == rb_cObject) { + VALUE tmp = RCLASS_SUPER(cbase); + while (tmp) { + if (rb_const_defined_at(tmp, id)) return tmp; + tmp = RCLASS_SUPER(tmp); + } + } + return 0; +} +static _Bool +iv_index_tbl_lookup(struct st_table *iv_index_tbl, ID id, struct rb_iv_index_tbl_entry **ent) +{ + int found; + st_data_t ent_data; + if (iv_index_tbl == ((void*)0)) return 0; + { unsigned int _lev; rb_vm_lock_enter(&_lev, "../ruby-3.1.5/vm_insnhelper.c", 1090);; + { + found = rb_st_lookup(iv_index_tbl, (st_data_t)id, &ent_data); + } + rb_vm_lock_leave(&_lev, "../ruby-3.1.5/vm_insnhelper.c", 1094); }; + if (found) *ent = (struct rb_iv_index_tbl_entry *)ent_data; + return found ? 1 : 0; +} +__attribute__ ((__always_inline__)) static void fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, struct rb_iv_index_tbl_entry *ent); +static inline void +fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, struct rb_iv_index_tbl_entry *ent) +{ + if (!is_attr) { + ic->entry = ent; + (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "../ruby-3.1.5/vm_insnhelper.c", 1108)); + } + else { + vm_cc_attr_index_set(cc, (int)ent->index + 1); + } +} +__attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, const rb_iseq_t *, IVC, const struct rb_callcache *, int); +static inline VALUE +vm_getivar(VALUE obj, ID id, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr) +{ + VALUE val = ((VALUE)RUBY_Qundef); + if (RB_SPECIAL_CONST_P(obj)) { + } + else if ((__builtin_expect(!!(is_attr ? (!!(vm_cc_attr_index(cc) > 0)) : (!!(ic->entry && ic->entry->class_serial == (((struct RClass *)(((struct RBasic *)(obj))->klass))->class_serial)))), 1))) { + uint32_t index = !is_attr ? ic->entry->index : (vm_cc_attr_index(cc) - 1); + ((void)0); + if ((__builtin_expect(!!(RB_BUILTIN_TYPE(obj) == RUBY_T_OBJECT), 1)) && + (__builtin_expect(!!(index < ROBJECT_NUMIV(obj)), 1))) { + val = ROBJECT_IVPTR(obj)[index]; + ((void)0); + } + else if (RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_EXIVAR))) { + val = rb_ivar_generic_lookup_with_index(obj, id, index); + } + goto ret; + } + else { + struct rb_iv_index_tbl_entry *ent; + if (RB_BUILTIN_TYPE(obj) == RUBY_T_OBJECT) { + struct st_table *iv_index_tbl = ROBJECT_IV_INDEX_TBL_inline(obj); + if (iv_index_tbl && iv_index_tbl_lookup(iv_index_tbl, id, &ent)) { + fill_ivar_cache(iseq, ic, cc, is_attr, ent); + if (ent->index < ROBJECT_NUMIV(obj)) { + val = ROBJECT_IVPTR(obj)[ent->index]; + ((void)0); + } + } + } + else if (RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_EXIVAR))) { + struct st_table *iv_index_tbl = ((((struct RClass *)(rb_obj_class(obj)))->ptr)->iv_index_tbl); + if (iv_index_tbl && iv_index_tbl_lookup(iv_index_tbl, id, &ent)) { + fill_ivar_cache(iseq, ic, cc, is_attr, ent); + val = rb_ivar_generic_lookup_with_index(obj, id, ent->index); + } + } + else { + goto general_path; + } + ret: + if ((__builtin_expect(!!(val != ((VALUE)RUBY_Qundef)), 1))) { + return val; + } + else { + return ((VALUE)RUBY_Qnil); + } + } + general_path: + ((void)0); + if (is_attr) { + return rb_attr_get(obj, id); + } + else { + return rb_ivar_get(obj, id); + } +} +__attribute__ ((__always_inline__)) static VALUE vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr); +__declspec(noinline) static VALUE vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic); +__declspec(noinline) static VALUE vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc); +static VALUE +vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr) +{ + do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0); + if ((__builtin_constant_p(RUBY_T_OBJECT) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_OBJECT)) : (RB_TYPE_P)((obj), (RUBY_T_OBJECT)))) { + struct st_table *iv_index_tbl = ROBJECT_IV_INDEX_TBL_inline(obj); + struct rb_iv_index_tbl_entry *ent; + if (iv_index_tbl_lookup(iv_index_tbl, id, &ent)) { + if (!is_attr) { + ic->entry = ent; + (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "../ruby-3.1.5/vm_insnhelper.c", 1212)); + } + else if (ent->index >= 2147483647) { + rb_raise(rb_eArgError, "too many instance variables"); + } + else { + vm_cc_attr_index_set(cc, (int)(ent->index + 1)); + } + uint32_t index = ent->index; + if ((__builtin_expect(!!(index >= ROBJECT_NUMIV(obj)), 0))) { + rb_init_iv_list(obj); + } + VALUE *ptr = ROBJECT_IVPTR(obj); + rb_obj_write((VALUE)(obj), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index])); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(val), "../ruby-3.1.5/vm_insnhelper.c", 1227); + ((void)0); + return val; + } + } + ((void)0); + return rb_ivar_set(obj, id, val); +} +static VALUE +vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic) +{ + return vm_setivar_slowpath(obj, id, val, iseq, ic, ((void*)0), 0); +} +static VALUE +vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc) +{ + return vm_setivar_slowpath(obj, id, val, ((void*)0), ((void*)0), cc, 1); +} +static inline VALUE +vm_setivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr) +{ + if ((__builtin_expect(!!((__builtin_constant_p(RUBY_T_OBJECT) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_OBJECT)) : (RB_TYPE_P)((obj), (RUBY_T_OBJECT)))), 1)) && + (__builtin_expect(!!(!RB_OBJ_FROZEN_RAW(obj)), 1))) { + ((void)0); + if ((__builtin_expect(!!((!is_attr && (!!(ic->entry && ic->entry->class_serial == (((struct RClass *)(((struct RBasic *)(obj))->klass))->class_serial)))) || ( is_attr && (!!(vm_cc_attr_index(cc) > 0)))), 1))) { + uint32_t index = !is_attr ? ic->entry->index : vm_cc_attr_index(cc)-1; + if ((__builtin_expect(!!(index >= ROBJECT_NUMIV(obj)), 0))) { + rb_init_iv_list(obj); + } + VALUE *ptr = ROBJECT_IVPTR(obj); + rb_obj_write((VALUE)(obj), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index])); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(val), "../ruby-3.1.5/vm_insnhelper.c", 1268); + ((void)0); + return val; + } + } + else { + ((void)0); + } + if (is_attr) { + return vm_setivar_slowpath_attr(obj, id, val, cc); + } + else { + return vm_setivar_slowpath_ivar(obj, id, val, iseq, ic); + } +} +static VALUE +update_classvariable_cache(const rb_iseq_t *iseq, VALUE klass, ID id, const rb_cref_t * cref, ICVARC ic) +{ + VALUE defined_class = 0; + VALUE cvar_value = rb_cvar_find(klass, id, &defined_class); + if ((__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((defined_class), (RUBY_T_ICLASS)) : (RB_TYPE_P)((defined_class), (RUBY_T_ICLASS)))) { + defined_class = ((struct RBasic *)(defined_class))->klass; + } + struct rb_id_table *rb_cvc_tbl = ((((struct RClass *)(defined_class))->ptr)->cvc_tbl); + if (!rb_cvc_tbl) { + rb_bug("the cvc table should be set"); + } + VALUE ent_data; + if (!rb_id_table_lookup(rb_cvc_tbl, id, &ent_data)) { + rb_bug("should have cvar cache entry"); + } + struct rb_cvar_class_tbl_entry *ent = (void *)ent_data; + ent->global_cvar_state = (ruby_vm_global_cvar_state); + ent->cref = cref; + ic->entry = ent; + ((void)0); + (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->cref), "../ruby-3.1.5/vm_insnhelper.c", 1312)); + (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "../ruby-3.1.5/vm_insnhelper.c", 1313)); + (rb_obj_written((VALUE)(ent->class_value), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->cref), "../ruby-3.1.5/vm_insnhelper.c", 1314)); + return cvar_value; +} +static inline VALUE +vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, ICVARC ic) +{ + const rb_cref_t *cref; + cref = vm_get_cref(((((reg_cfp)->ep)))); + if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state) && ic->entry->cref == cref && (__builtin_expect(!!(rb_ractor_main_p()), 1))) { + VALUE v = ((VALUE)RUBY_Qundef); + ((void)0); + if (rb_st_lookup(((((struct RClass *)(ic->entry->class_value))->ptr)->iv_tbl), (st_data_t)id, &v) && + (__builtin_expect(!!(rb_ractor_main_p()), 1))) { + return v; + } + } + VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1); + return update_classvariable_cache(iseq, klass, id, cref, ic); +} +VALUE +rb_vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, ICVARC ic) +{ + return vm_getclassvariable(iseq, cfp, id, ic); +} +static inline void +vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, VALUE val, ICVARC ic) +{ + const rb_cref_t *cref; + cref = vm_get_cref(((((reg_cfp)->ep)))); + if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state) && ic->entry->cref == cref && (__builtin_expect(!!(rb_ractor_main_p()), 1))) { + ((void)0); + rb_class_ivar_set(ic->entry->class_value, id, val); + return; + } + VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1); + rb_cvar_set(klass, id, val); + update_classvariable_cache(iseq, klass, id, cref, ic); +} +void +rb_vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, VALUE val, ICVARC ic) +{ + vm_setclassvariable(iseq, cfp, id, val, ic); +} +static inline VALUE +vm_getinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, IVC ic) +{ + return vm_getivar(obj, id, iseq, ic, ((void*)0), 0); +} +static inline void +vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic) +{ + vm_setivar(obj, id, val, iseq, ic, 0, 0); +} +void +rb_vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic) +{ + vm_setinstancevariable(iseq, obj, id, val, ic); +} +VALUE +rb_vm_set_ivar_idx(VALUE obj, uint32_t index, VALUE val) +{ + ((void)0); + do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0); + ((void)0); + if ((__builtin_expect(!!(index >= ROBJECT_NUMIV(obj)), 0))) { + rb_init_iv_list(obj); + } + VALUE *ptr = ROBJECT_IVPTR(obj); + rb_obj_write((VALUE)(obj), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index])); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(val), "../ruby-3.1.5/vm_insnhelper.c", 1408); + return val; +} +static VALUE +vm_throw_continue(const rb_execution_context_t *ec, VALUE err) +{ + if (RB_FIXNUM_P(err)) { + ec->tag->state = RB_FIX2INT(err); + } + else if (RB_SYMBOL_P(err)) { + ec->tag->state = RUBY_TAG_THROW; + } + else if (imemo_throw_data_p((VALUE)err)) { + ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err); + } + else { + ec->tag->state = RUBY_TAG_RAISE; + } + return err; +} +static VALUE +vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state, + const int flag, const VALUE throwobj) +{ + const rb_control_frame_t *escape_cfp = ((void*)0); + const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec); + if (flag != 0) { + } + else if (state == RUBY_TAG_BREAK) { + int is_orphan = 1; + const VALUE *ep = ((((reg_cfp)->ep))); + const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq); + escape_cfp = reg_cfp; + while (base_iseq->body->type != ISEQ_TYPE_BLOCK) { + if (escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) { + escape_cfp = ((escape_cfp)+1); + ep = escape_cfp->ep; + base_iseq = escape_cfp->iseq; + } + else { + ep = VM_ENV_PREV_EP(ep); + base_iseq = base_iseq->body->parent_iseq; + escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep); + ((void)0); + } + } + if (VM_FRAME_LAMBDA_P(escape_cfp)) { + is_orphan = 0; + state = RUBY_TAG_RETURN; + } + else { + ep = VM_ENV_PREV_EP(ep); + while (escape_cfp < eocfp) { + if (escape_cfp->ep == ep) { + const rb_iseq_t *const iseq = escape_cfp->iseq; + const VALUE epc = escape_cfp->pc - iseq->body->iseq_encoded; + const struct iseq_catch_table *const ct = iseq->body->catch_table; + unsigned int i; + if (!ct) break; + for (i=0; i < ct->size; i++) { + const struct iseq_catch_table_entry *const entry = + __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__(&(ct)->entries[i]) unaligned_member_access_result = (&(ct)->entries[i]); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }); + if (entry->type == CATCH_TYPE_BREAK && + entry->iseq == base_iseq && + entry->start < epc && entry->end >= epc) { + if (entry->cont == epc) { + is_orphan = 0; + } + break; + } + } + break; + } + escape_cfp = ((escape_cfp)+1); + } + } + if (is_orphan) { + rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK); + } + } + else if (state == RUBY_TAG_RETRY) { + const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep)))); + escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep); + } + else if (state == RUBY_TAG_RETURN) { + const VALUE *current_ep = ((((reg_cfp)->ep))); + const VALUE *target_ep = ((void*)0), *target_lep, *ep = current_ep; + int in_class_frame = 0; + int toplevel = 1; + escape_cfp = reg_cfp; + while (!VM_ENV_LOCAL_P(ep)) { + if (VM_ENV_FLAGS(ep, VM_FRAME_FLAG_LAMBDA) && target_ep == ((void*)0)) { + target_ep = ep; + } + ep = VM_ENV_PREV_EP(ep); + } + target_lep = ep; + while (escape_cfp < eocfp) { + const VALUE *lep = VM_CF_LEP(escape_cfp); + if (!target_lep) { + target_lep = lep; + } + if (lep == target_lep && + VM_FRAME_RUBYFRAME_P(escape_cfp) && + escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) { + in_class_frame = 1; + target_lep = 0; + } + if (lep == target_lep) { + if (VM_FRAME_LAMBDA_P(escape_cfp)) { + toplevel = 0; + if (in_class_frame) { + goto valid_return; + } + else { + const VALUE *tep = current_ep; + while (target_lep != tep) { + if (escape_cfp->ep == tep) { + if (tep == target_ep) { + goto valid_return; + } + else { + goto unexpected_return; + } + } + tep = VM_ENV_PREV_EP(tep); + } + } + } + else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) { + switch (escape_cfp->iseq->body->type) { + case ISEQ_TYPE_TOP: + case ISEQ_TYPE_MAIN: + if (toplevel) { + if (in_class_frame) goto unexpected_return; + if (target_ep == ((void*)0)) { + goto valid_return; + } + else { + goto unexpected_return; + } + } + break; + case ISEQ_TYPE_EVAL: + case ISEQ_TYPE_CLASS: + toplevel = 0; + break; + default: + break; + } + } + } + if (escape_cfp->ep == target_lep && escape_cfp->iseq->body->type == ISEQ_TYPE_METHOD) { + if (target_ep == ((void*)0)) { + goto valid_return; + } + else { + goto unexpected_return; + } + } + escape_cfp = ((escape_cfp)+1); + } + unexpected_return:; + rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN); + valid_return:; + } + else { + rb_bug("isns(throw): unsupported throw type"); + } + ec->tag->state = state; + return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state); +} +static VALUE +vm_throw(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + rb_num_t throw_state, VALUE throwobj) +{ + const int state = (int)(throw_state & VM_THROW_STATE_MASK); + const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG); + if (state != 0) { + return vm_throw_start(ec, reg_cfp, state, flag, throwobj); + } + else { + return vm_throw_continue(ec, throwobj); + } +} +static inline void +vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag) +{ + int is_splat = flag & 0x01; + rb_num_t space_size = num + is_splat; + VALUE *base = sp - 1; + const VALUE *ptr; + rb_num_t len; + const VALUE obj = ary; + if (!(__builtin_constant_p(RUBY_T_ARRAY) ? rbimpl_RB_TYPE_P_fastpath((ary), (RUBY_T_ARRAY)) : (RB_TYPE_P)((ary), (RUBY_T_ARRAY))) && RB_NIL_P(ary = rb_check_array_type(ary))) { + ary = obj; + ptr = &ary; + len = 1; + } + else { + ptr = rb_array_const_ptr_transient(ary); + len = (rb_num_t)rb_array_len(ary); + } + if (space_size == 0) { + } + else if (flag & 0x02) { + rb_num_t i = 0, j; + if (len < num) { + for (i=0; i len) { + *bptr = rb_ary_new(); + } + else { + *bptr = rb_ary_new_from_values(len - num, ptr + num); + } + } + } + (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; })); +} +static VALUE vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling); +static VALUE vm_mtbl_dump(VALUE klass, ID target_mid); +static struct rb_class_cc_entries * +vm_ccs_create(VALUE klass, struct rb_id_table *cc_tbl, ID mid, const rb_callable_method_entry_t *cme) +{ + struct rb_class_cc_entries *ccs = ((struct rb_class_cc_entries *)ruby_xmalloc(sizeof(struct rb_class_cc_entries))); + ccs->capa = 0; + ccs->len = 0; + ccs->cme = cme; + (((rb_callable_method_entry_t *)cme)->flags |= ((VALUE)RUBY_FL_USER8)); + ccs->entries = ((void*)0); + rb_id_table_insert(cc_tbl, mid, (VALUE)ccs); + (rb_obj_written((VALUE)(klass), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cme), "../ruby-3.1.5/vm_insnhelper.c", 1710)); + return ccs; +} +static void +vm_ccs_push(VALUE klass, struct rb_class_cc_entries *ccs, const struct rb_callinfo *ci, const struct rb_callcache *cc) +{ + if (! vm_cc_markable(cc)) { + return; + } + else if (! vm_ci_markable(ci)) { + return; + } + if ((__builtin_expect(!!(ccs->len == ccs->capa), 0))) { + if (ccs->capa == 0) { + ccs->capa = 1; + ccs->entries = ((struct rb_class_cc_entries_entry *)ruby_xmalloc2((ccs->capa), sizeof(struct rb_class_cc_entries_entry))); + } + else { + ccs->capa *= 2; + ((ccs->entries) = ((struct rb_class_cc_entries_entry *)ruby_xrealloc2((void *)(ccs->entries), (ccs->capa), sizeof(struct rb_class_cc_entries_entry)))); + } + } + ((void)0); + const int pos = ccs->len++; + rb_obj_write((VALUE)(klass), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ccs->entries[pos].ci)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].ci)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(ci), "../ruby-3.1.5/vm_insnhelper.c", 1737); + rb_obj_write((VALUE)(klass), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ccs->entries[pos].cc)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].cc)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(cc), "../ruby-3.1.5/vm_insnhelper.c", 1738); + if (0) { + } +} +static const struct rb_callcache * +vm_search_method_slowpath0(VALUE cd_owner, struct rb_call_data *cd, VALUE klass) +{ + const struct rb_callcache *cc = rb_vm_search_method_slowpath(cd->ci, klass); + cd->cc = cc; + const struct rb_callcache *empty_cc = + rb_vm_empty_cc(); + if (cd_owner && cc != empty_cc) (rb_obj_written((VALUE)(cd_owner), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cc), "../ruby-3.1.5/vm_insnhelper.c", 1919)); + ((void)0); + return cc; +} +static const struct rb_callcache * +vm_search_method_fastpath(VALUE cd_owner, struct rb_call_data *cd, VALUE klass) +{ + const struct rb_callcache *cc = cd->cc; + if ((__builtin_expect(!!(vm_cc_class_check(cc, klass)), 1))) { + if ((__builtin_expect(!!(!((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))), 1))) { + ((void)0); + ((void)0); + ((void)0); + return cc; + } + ((void)0); + } + else { + ((void)0); + } + return vm_search_method_slowpath0(cd_owner, cd, klass); +} +static const struct rb_callcache * +vm_search_method(VALUE cd_owner, struct rb_call_data *cd, VALUE recv) +{ + VALUE klass = rb_class_of(recv); + ((void)0); + ((void)0); + return vm_search_method_fastpath(cd_owner, cd, klass); +} +static inline int +check_cfunc(const rb_callable_method_entry_t *me, VALUE (*func)()) +{ + if (! me) { + return 0; + } + else { + ((void)0); + ((void)0); + ((void)0); + if (me->def->type != VM_METHOD_TYPE_CFUNC) { + return 0; + } + else { + return me->def->body.cfunc.func == func; + } + } +} +static inline int +vm_method_cfunc_is(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv, VALUE (*func)()) +{ + ((void)0); + const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv); + return check_cfunc(vm_cc_cme(cc), func); +} +#define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t##_REDEFINED_OP_FLAG) +static inline _Bool +FIXNUM_2_P(VALUE a, VALUE b) +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + x = a; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + y = b; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + z = x & y & 1; + return z == 1; +} +static inline _Bool +FLONUM_2_P(VALUE a, VALUE b) +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + x = a; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + y = b; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + z = ((x ^ 2) | (y ^ 2)) & 3; + return !z; +} +static VALUE +opt_equality_specialized(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 0))) == 0), 1)))) { + goto compare_by_identity; + } + else if (FLONUM_2_P(recv, obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) { + goto compare_by_identity; + } + else if (RB_STATIC_SYM_P(recv) && RB_STATIC_SYM_P(obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1)))) { + goto compare_by_identity; + } + else if (RB_SPECIAL_CONST_P(recv)) { + } + else if (RBASIC_CLASS(recv) == rb_cFloat && RB_FLOAT_TYPE_P(obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) { + double a = rb_float_value_inline(recv); + double b = rb_float_value_inline(obj); + return ((a == b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (RBASIC_CLASS(recv) == rb_cString && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) { + if (recv == obj) { + return ((VALUE)RUBY_Qtrue); + } + else if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_STRING)) : (RB_TYPE_P)((obj), (RUBY_T_STRING)))) { + return rb_str_eql_internal(obj, recv); + } + } + return ((VALUE)RUBY_Qundef); + compare_by_identity: + return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); +} +static VALUE +opt_equality(const rb_iseq_t *cd_owner, VALUE recv, VALUE obj, CALL_DATA cd) +{ + ((void)0); + VALUE val = opt_equality_specialized(recv, obj); + if (val != ((VALUE)RUBY_Qundef)) return val; + if (!vm_method_cfunc_is(cd_owner, cd, recv, rb_obj_equal)) { + return ((VALUE)RUBY_Qundef); + } + else { + return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } +} +#undef EQ_UNREDEFINED_P +extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *, int kw_splat); +extern VALUE rb_vm_call_with_refinements(rb_execution_context_t *, VALUE, ID, int, const VALUE *, int); +static VALUE +check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type) +{ + switch (type) { + case VM_CHECKMATCH_TYPE_WHEN: + return pattern; + case VM_CHECKMATCH_TYPE_RESCUE: + if (!rb_obj_is_kind_of(pattern, rb_cModule)) { + rb_raise(rb_eTypeError, "class or module required for rescue clause"); + } + case VM_CHECKMATCH_TYPE_CASE: { + return rb_vm_call_with_refinements(ec, pattern, idEqq, 1, &target, 0); + } + default: + rb_bug("check_match: unreachable"); + } +} +#define CHECK_CMP_NAN(a,b) +static inline VALUE +double_cmp_lt(double a, double b) +{ + ; + return ((a < b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); +} +static inline VALUE +double_cmp_le(double a, double b) +{ + ; + return ((a <= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); +} +static inline VALUE +double_cmp_gt(double a, double b) +{ + ; + return ((a > b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); +} +static inline VALUE +double_cmp_ge(double a, double b) +{ + ; + return ((a >= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); +} +static inline VALUE * +vm_base_ptr(const rb_control_frame_t *cfp) +{ + return cfp->__bp__; +} +__declspec(noreturn) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc); +__declspec(noreturn) static void argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc); +__declspec(noreturn) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys); +VALUE rb_keyword_error_new(const char *error, VALUE keys); +static VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, + enum method_missing_reason call_status, int kw_splat); +__attribute__ ((__visibility__("default"))) extern +const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me); +struct args_info { + VALUE *argv; + int argc; + int rest_index; + int rest_dupped; + const struct rb_callinfo_kwarg *kw_arg; + VALUE *kw_argv; + VALUE rest; +}; +enum arg_setup_type { + arg_setup_method, + arg_setup_block +}; +static inline void +arg_rest_dup(struct args_info *args) +{ + if (!args->rest_dupped) { + args->rest = rb_ary_dup(args->rest); + args->rest_dupped = 1; + } +} +static inline int +args_argc(struct args_info *args) +{ + if (args->rest == ((VALUE)RUBY_Qfalse)) { + return args->argc; + } + else { + return args->argc + RARRAY_LENINT(args->rest) - args->rest_index; + } +} +static inline void +args_extend(struct args_info *args, const int min_argc) +{ + int i; + if (args->rest) { + arg_rest_dup(args); + ((void)0); + for (i=args->argc + RARRAY_LENINT(args->rest); irest, ((VALUE)RUBY_Qnil)); + } + } + else { + for (i=args->argc; iargv[args->argc++] = ((VALUE)RUBY_Qnil); + } + } +} +static inline void +args_reduce(struct args_info *args, int over_argc) +{ + if (args->rest) { + const long len = rb_array_len(args->rest); + if (len > over_argc) { + arg_rest_dup(args); + rb_ary_resize(args->rest, len - over_argc); + return; + } + else { + args->rest = ((VALUE)RUBY_Qfalse); + over_argc -= len; + } + } + ((void)0); + args->argc -= over_argc; +} +static inline int +args_check_block_arg0(struct args_info *args) +{ + VALUE ary = ((VALUE)RUBY_Qnil); + if (args->rest && rb_array_len(args->rest) == 1) { + VALUE arg0 = RARRAY_AREF(args->rest, 0); + ary = rb_check_array_type(arg0); + } + else if (args->argc == 1) { + VALUE arg0 = args->argv[0]; + ary = rb_check_array_type(arg0); + args->argv[0] = arg0; + } + if (!RB_NIL_P(ary)) { + args->rest = ary; + args->rest_index = 0; + args->argc = 0; + return 1; + } + return 0; +} +static inline void +args_copy(struct args_info *args) +{ + if (args->rest != ((VALUE)RUBY_Qfalse)) { + int argc = args->argc; + args->argc = 0; + arg_rest_dup(args); + while (args->rest_index > 0 && argc > 0) { + RARRAY_ASET(args->rest, --args->rest_index, args->argv[--argc]); + } + while (argc > 0) { + rb_ary_unshift(args->rest, args->argv[--argc]); + } + } + else if (args->argc > 0) { + args->rest = rb_ary_new_from_values(args->argc, args->argv); + args->rest_index = 0; + args->rest_dupped = 1; + args->argc = 0; + } +} +static inline const VALUE * +args_rest_argv(struct args_info *args) +{ + return rb_array_const_ptr_transient(args->rest) + args->rest_index; +} +static inline VALUE +args_rest_array(struct args_info *args) +{ + VALUE ary; + if (args->rest) { + ary = rb_ary_behead(args->rest, args->rest_index); + args->rest_index = 0; + args->rest = 0; + } + else { + ary = rb_ary_new(); + } + return ary; +} +static int +args_kw_argv_to_hash(struct args_info *args) +{ + const struct rb_callinfo_kwarg *kw_arg = args->kw_arg; + const VALUE *const passed_keywords = kw_arg->keywords; + const int kw_len = kw_arg->keyword_len; + VALUE h = rb_hash_new_with_size(kw_len); + const int kw_start = args->argc - kw_len; + const VALUE * const kw_argv = args->argv + kw_start; + int i; + args->argc = kw_start + 1; + for (i=0; iargv[args->argc - 1] = h; + return args->argc; +} +static inline void +args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals) +{ + if (args->argc >= argc) { + args->argc -= argc; + args->argv += argc; + } + else { + int i, j; + const VALUE *argv = args_rest_argv(args); + for (i=args->argc, j=0; irest_index += argc - args->argc; + args->argc = 0; + } +} +static inline void +args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals) +{ + long len; + len = rb_array_len(args->rest); + memcpy((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))); + rb_ary_resize(args->rest, len - argc); +} +static inline int +args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals) +{ + int i; + if (args->argc >= opt_max) { + args->argc -= opt_max; + args->argv += opt_max; + i = opt_max; + } + else { + int j; + i = args->argc; + args->argc = 0; + if (args->rest) { + int len = RARRAY_LENINT(args->rest); + const VALUE *argv = rb_array_const_ptr_transient(args->rest); + for (; irest_index < len; i++, args->rest_index++) { + locals[i] = argv[args->rest_index]; + } + } + for (j=i; jbody->param.keyword->table; + const int req_key_num = iseq->body->param.keyword->required_num; + const int key_num = iseq->body->param.keyword->num; + const VALUE * const default_values = iseq->body->param.keyword->default_values; + VALUE missing = 0; + int i, di, found = 0; + int unspecified_bits = 0; + VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil); + for (i=0; ibody->param.flags.has_kwrest) { + const int rest_hash_index = key_num + 1; + locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values); + } + else { + if (found != passed_keyword_len) { + VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values); + argument_kw_error(ec, iseq, "unknown", keys); + } + } + if (RB_NIL_P(unspecified_bits_value)) { + unspecified_bits_value = __builtin_choose_expr( __builtin_constant_p(unspecified_bits), ((VALUE)(unspecified_bits)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(unspecified_bits)); + } + locals[key_num] = unspecified_bits_value; +} +static inline void +args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals, int kw_flag) +{ + if (RB_NIL_P(keyword_hash)) { + keyword_hash = rb_hash_new(); + } + else if (!(kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) { + keyword_hash = rb_hash_dup(keyword_hash); + } + locals[0] = keyword_hash; +} +static inline void +args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals) +{ + VALUE block_handler = calling->block_handler; + *locals = rb_vm_bh_to_procval(ec, block_handler); +} +struct fill_values_arg { + VALUE *keys; + VALUE *vals; + int argc; +}; +static int +fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr) +{ + struct fill_values_arg *arg = (struct fill_values_arg *)ptr; + int i = arg->argc++; + arg->keys[i] = (VALUE)key; + arg->vals[i] = (VALUE)val; + return ST_CONTINUE; +} +static inline int +ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq, unsigned int * kw_flag, VALUE * converted_keyword_hash) +{ + if (!(__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((keyword_hash), (RUBY_T_HASH)))) { + keyword_hash = rb_to_hash_type(keyword_hash); + } + if (!(*kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit)) && + (iseq->body->param.flags.has_kwrest || + iseq->body->param.flags.ruby2_keywords)) { + *kw_flag |= (0x01 << VM_CALL_KW_SPLAT_MUT_bit); + keyword_hash = rb_hash_dup(keyword_hash); + } + *converted_keyword_hash = keyword_hash; + return !(iseq->body->param.flags.has_kw) && + !(iseq->body->param.flags.has_kwrest) && + RHASH_EMPTY_P(keyword_hash); +} +static int +setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq, + struct rb_calling_info *const calling, + const struct rb_callinfo *ci, + VALUE * const locals, const enum arg_setup_type arg_setup_type) +{ + const int min_argc = iseq->body->param.lead_num + iseq->body->param.post_num; + const int max_argc = (iseq->body->param.flags.has_rest == 0) ? min_argc + iseq->body->param.opt_num : (-1); + int given_argc; + unsigned int kw_flag = vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit)); + int opt_pc = 0, allow_autosplat = !kw_flag; + struct args_info args_body, *args; + VALUE keyword_hash = ((VALUE)RUBY_Qnil); + VALUE * const orig_sp = ec->cfp->sp; + unsigned int i; + VALUE flag_keyword_hash = 0; + VALUE converted_keyword_hash = 0; + ; + for (i=calling->argc; ibody->param.size; i++) { + locals[i] = ((VALUE)RUBY_Qnil); + } + ec->cfp->sp = &locals[i]; + args = &args_body; + given_argc = args->argc = calling->argc; + args->argv = locals; + args->rest_dupped = 0; + if (kw_flag & (0x01 << VM_CALL_KWARG_bit)) { + args->kw_arg = vm_ci_kwarg(ci); + if (iseq->body->param.flags.has_kw) { + int kw_len = args->kw_arg->keyword_len; + args->kw_argv = ((VALUE *)__builtin_alloca((rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len))))); + args->argc -= kw_len; + given_argc -= kw_len; + memcpy((args->kw_argv), (locals + args->argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len))); + } + else { + args->kw_argv = ((void*)0); + given_argc = args_kw_argv_to_hash(args); + kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit); + } + } + else { + args->kw_arg = ((void*)0); + args->kw_argv = ((void*)0); + } + if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) { + VALUE rest_last = 0; + int len; + args->rest = locals[--args->argc]; + args->rest_index = 0; + len = RARRAY_LENINT(args->rest); + given_argc += len - 1; + rest_last = RARRAY_AREF(args->rest, len - 1); + if (!kw_flag && len > 0) { + if ((__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((rest_last), (RUBY_T_HASH)) : (RB_TYPE_P)((rest_last), (RUBY_T_HASH))) && + (((struct RHash *)rest_last)->basic.flags & RHASH_PASS_AS_KEYWORDS)) { + rest_last = rb_hash_dup(rest_last); + kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit); + } + else { + rest_last = 0; + } + } + if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) { + if (ignore_keyword_hash_p(rest_last, iseq, &kw_flag, &converted_keyword_hash)) { + arg_rest_dup(args); + rb_ary_pop(args->rest); + given_argc--; + kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit)); + } + else { + if (rest_last != converted_keyword_hash) { + rest_last = converted_keyword_hash; + arg_rest_dup(args); + RARRAY_ASET(args->rest, len - 1, rest_last); + } + if (iseq->body->param.flags.ruby2_keywords && rest_last) { + flag_keyword_hash = rest_last; + } + else if (iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest) { + arg_rest_dup(args); + rb_ary_pop(args->rest); + given_argc--; + keyword_hash = rest_last; + } + } + } + } + else { + if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) { + VALUE last_arg = args->argv[args->argc-1]; + if (ignore_keyword_hash_p(last_arg, iseq, &kw_flag, &converted_keyword_hash)) { + args->argc--; + given_argc--; + kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit)); + } + else { + if (last_arg != converted_keyword_hash) { + last_arg = converted_keyword_hash; + args->argv[args->argc-1] = last_arg; + } + if (iseq->body->param.flags.ruby2_keywords) { + flag_keyword_hash = last_arg; + } + else if (iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest) { + args->argc--; + given_argc--; + keyword_hash = last_arg; + } + } + } + args->rest = ((VALUE)RUBY_Qfalse); + } + if (flag_keyword_hash && (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((flag_keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((flag_keyword_hash), (RUBY_T_HASH)))) { + ((struct RHash *)flag_keyword_hash)->basic.flags |= RHASH_PASS_AS_KEYWORDS; + } + if (kw_flag && iseq->body->param.flags.accepts_no_kwarg) { + rb_raise(rb_eArgError, "no keywords accepted"); + } + switch (arg_setup_type) { + case arg_setup_method: + break; + case arg_setup_block: + if (given_argc == (RB_NIL_P(keyword_hash) ? 1 : 2) && + allow_autosplat && + (min_argc > 0 || iseq->body->param.opt_num > 1) && + !iseq->body->param.flags.ambiguous_param0 && + args_check_block_arg0(args)) { + given_argc = RARRAY_LENINT(args->rest); + } + break; + } + if (given_argc < min_argc) { + if (arg_setup_type == arg_setup_block) { + do { __extension__ _Static_assert(sizeof(*((ec->cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((ec->cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((ec->cfp)->sp)[((min_argc))]; if ((__builtin_expect(!!(((ec->cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0); + given_argc = min_argc; + args_extend(args, min_argc); + } + else { + argument_arity_error(ec, iseq, given_argc, min_argc, max_argc); + } + } + if (given_argc > max_argc && max_argc != (-1)) { + if (arg_setup_type == arg_setup_block) { + args_reduce(args, given_argc - max_argc); + given_argc = max_argc; + } + else { + argument_arity_error(ec, iseq, given_argc, min_argc, max_argc); + } + } + if (iseq->body->param.flags.has_lead) { + args_setup_lead_parameters(args, iseq->body->param.lead_num, locals + 0); + } + if (iseq->body->param.flags.has_rest || iseq->body->param.flags.has_post){ + args_copy(args); + } + if (iseq->body->param.flags.has_post) { + args_setup_post_parameters(args, iseq->body->param.post_num, locals + iseq->body->param.post_start); + } + if (iseq->body->param.flags.has_opt) { + int opt = args_setup_opt_parameters(args, iseq->body->param.opt_num, locals + iseq->body->param.lead_num); + opt_pc = (int)iseq->body->param.opt_table[opt]; + } + if (iseq->body->param.flags.has_rest) { + args_setup_rest_parameter(args, locals + iseq->body->param.rest_start); + } + if (iseq->body->param.flags.has_kw) { + VALUE * const klocals = locals + iseq->body->param.keyword->bits_start - iseq->body->param.keyword->num; + if (args->kw_argv != ((void*)0)) { + const struct rb_callinfo_kwarg *kw_arg = args->kw_arg; + args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals); + } + else if (!RB_NIL_P(keyword_hash)) { + int kw_len = rb_long2int_inline(RHASH_SIZE(keyword_hash)); + struct fill_values_arg arg; + arg.keys = args->kw_argv = ((VALUE *)__builtin_alloca((rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len * 2))))); + arg.vals = arg.keys + kw_len; + arg.argc = 0; + rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg); + ((void)0); + args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals); + } + else { + ((void)0); + args_setup_kw_parameters(ec, iseq, ((void*)0), 0, ((void*)0), klocals); + } + } + else if (iseq->body->param.flags.has_kwrest) { + args_setup_kw_rest_parameter(keyword_hash, locals + iseq->body->param.keyword->rest_start, kw_flag); + } + else if (!RB_NIL_P(keyword_hash) && RHASH_SIZE(keyword_hash) > 0 && arg_setup_type == arg_setup_method) { + argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash)); + } + if (iseq->body->param.flags.has_block) { + if (iseq->body->local_iseq == iseq) { + } + else { + args_setup_block_parameter(ec, calling, locals + iseq->body->param.block_start); + } + } + ec->cfp->sp = orig_sp; + return opt_pc; +} +static void +raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc) +{ + VALUE at; + if (iseq) { + vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) , + 0 , ((VALUE)RUBY_Qfalse) , + iseq->body->iseq_encoded, + ec->cfp->sp, 0, 0 ); + at = rb_ec_backtrace_object(ec); + rb_backtrace_use_iseq_first_lineno_for_last_location(at); + rb_vm_pop_frame(ec); + } + else { + at = rb_ec_backtrace_object(ec); + } + rb_ivar_set(exc, idBt_locations, at); + rb_exc_set_backtrace(exc, at); + rb_exc_raise(exc); +} +static void +argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc) +{ + VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc); + if (iseq->body->param.flags.has_kw) { + const struct rb_iseq_param_keyword *const kw = iseq->body->param.keyword; + const ID *keywords = kw->table; + int req_key_num = kw->required_num; + if (req_key_num > 0) { + static const char required[] = "; required keywords"; + VALUE mesg = rb_attr_get(exc, idMesg); + rb_str_resize(mesg, RSTRING_LEN(mesg)-1); + rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1)); + ((__builtin_constant_p(":") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (":"))); + do { + ((__builtin_constant_p(" ") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (" "))); + rb_str_append(mesg, rb_id2str(*keywords++)); + ((__builtin_constant_p(",") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (","))); + } while (--req_key_num); + RSTRING_PTR(mesg)[RSTRING_LEN(mesg)-1] = ')'; + } + } + raise_argument_error(ec, iseq, exc); +} +static void +argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys) +{ + raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys)); +} +static inline void +vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + int argc = calling->argc; + VALUE *argv = cfp->sp - argc; + VALUE ary = argv[argc-1]; + ; + cfp->sp--; + if (!RB_NIL_P(ary)) { + const VALUE *ptr = rb_array_const_ptr_transient(ary); + long len = rb_array_len(ary), i; + do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((len))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0); + for (i = 0; i < len; i++) { + *cfp->sp++ = ptr[i]; + } + calling->argc += i - 1; + } +} +static inline void +vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci) +{ + const VALUE *const passed_keywords = vm_ci_kwarg(ci)->keywords; + const int kw_len = vm_ci_kwarg(ci)->keyword_len; + const VALUE h = rb_hash_new_with_size(kw_len); + VALUE *sp = cfp->sp; + int i; + for (i=0; isp -= kw_len - 1; + calling->argc -= kw_len - 1; + calling->kw_splat = 1; +} +static VALUE +vm_to_proc(VALUE proc) +{ + if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) { + VALUE b; + const rb_callable_method_entry_t *me = + rb_callable_method_entry_with_refinements(rb_class_of(proc), idTo_proc, ((void*)0)); + if (me) { + b = rb_vm_call0(rb_current_execution_context(1), proc, idTo_proc, 0, ((void*)0), me, 0); + } + else { + b = rb_check_convert_type_with_id(proc, RUBY_T_DATA, "Proc", idTo_proc); + } + if (RB_NIL_P(b) || !rb_obj_is_proc(b)) { + rb_raise(rb_eTypeError, + "wrong argument type %s (expected Proc)", + rb_obj_classname(proc)); + } + return b; + } + else { + return proc; + } +} +static VALUE +refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg) +{ + VALUE obj; + ID mid; + const rb_callable_method_entry_t *me = 0; + rb_execution_context_t *ec; + const VALUE symbol = RARRAY_AREF(callback_arg, 0); + const VALUE refinements = RARRAY_AREF(callback_arg, 1); + int kw_splat = rb_keyword_given_p(); + VALUE klass; + if (argc-- < 1) { + rb_raise(rb_eArgError, "no receiver given"); + } + obj = *argv++; + mid = rb_sym2id(symbol); + for (klass = rb_class_of(obj); klass; klass = RCLASS_SUPER(klass)) { + me = rb_callable_method_entry(klass, mid); + if (me) { + me = rb_resolve_refined_method_callable(refinements, me); + if (me) break; + } + } + ec = rb_current_execution_context(1); + if (!RB_NIL_P(blockarg)) { + vm_passed_block_handler_set(ec, blockarg); + } + if (!me) { + return method_missing(ec, obj, mid, argc, argv, MISSING_NOENTRY, kw_splat); + } + return rb_vm_call0(ec, obj, mid, argc, argv, me, kw_splat); +} +static VALUE +vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + const struct rb_callinfo *ci, const rb_iseq_t *blockiseq, const int is_super) +{ + if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) { + VALUE block_code = *(--reg_cfp->sp); + if (RB_NIL_P(block_code)) { + return 0; + } + else if (block_code == rb_block_param_proxy) { + ((void)0); + VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp); + reg_cfp->block_code = (const void *) handler; + return handler; + } + else if (RB_SYMBOL_P(block_code) && rb_method_basic_definition_p(rb_cSymbol, idTo_proc)) { + const rb_cref_t *cref = vm_env_cref(reg_cfp->ep); + if (cref && !RB_NIL_P(cref->refinements)) { + VALUE ref = cref->refinements; + VALUE func = rb_hash_lookup(ref, block_code); + if (RB_NIL_P(func)) { + VALUE callback_arg = rb_ary_tmp_new(2); + rb_ary_push(callback_arg, block_code); + rb_ary_push(callback_arg, ref); + RB_OBJ_FREEZE_RAW(callback_arg); + func = rb_func_lambda_new(refine_sym_proc_call, callback_arg, 1, (-1)); + rb_hash_aset(ref, block_code, func); + } + block_code = func; + } + return block_code; + } + else { + return vm_to_proc(block_code); + } + } + else if (blockiseq != ((void*)0)) { + struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp); + captured->code.iseq = blockiseq; + return VM_BH_FROM_ISEQ_BLOCK(captured); + } + else { + if (is_super) { + return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]); + } + else { + return 0; + } + } +} + +static inline VALUE vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc, int param_size, int local_size); +__attribute__ ((__always_inline__)) static VALUE vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me, int opt_pc, int param_size, int local_size); +static inline VALUE vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc); +static VALUE vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling); +static VALUE vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling); +static VALUE vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling); +static inline VALUE vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling); +static vm_call_handler vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size); +static VALUE +vm_call_iseq_setup_tailcall_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_tailcall(ec, cfp, calling, 0); +} +static VALUE +vm_call_iseq_setup_normal_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + const struct rb_callcache *cc = calling->cc; + const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def); + int param = iseq->body->param.size; + int local = iseq->body->local_table_size; + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local); +} +static _Bool +rb_simple_iseq_p(const rb_iseq_t *iseq) +{ + return iseq->body->param.flags.has_opt == 0 && + iseq->body->param.flags.has_rest == 0 && + iseq->body->param.flags.has_post == 0 && + iseq->body->param.flags.has_kw == 0 && + iseq->body->param.flags.has_kwrest == 0 && + iseq->body->param.flags.accepts_no_kwarg == 0 && + iseq->body->param.flags.has_block == 0; +} +__attribute__ ((__visibility__("default"))) extern _Bool +rb_iseq_only_optparam_p(const rb_iseq_t *iseq) +{ + return iseq->body->param.flags.has_opt == 1 && + iseq->body->param.flags.has_rest == 0 && + iseq->body->param.flags.has_post == 0 && + iseq->body->param.flags.has_kw == 0 && + iseq->body->param.flags.has_kwrest == 0 && + iseq->body->param.flags.accepts_no_kwarg == 0 && + iseq->body->param.flags.has_block == 0; +} +__attribute__ ((__visibility__("default"))) extern _Bool +rb_iseq_only_kwparam_p(const rb_iseq_t *iseq) +{ + return iseq->body->param.flags.has_opt == 0 && + iseq->body->param.flags.has_rest == 0 && + iseq->body->param.flags.has_post == 0 && + iseq->body->param.flags.has_kw == 1 && + iseq->body->param.flags.has_kwrest == 0 && + iseq->body->param.flags.has_block == 0; +} +static _Bool +rb_splat_or_kwargs_p(const struct rb_callinfo *__restrict__ ci) +{ + return (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))); +} +static inline void +CALLER_SETUP_ARG(struct rb_control_frame_struct *__restrict__ cfp, + struct rb_calling_info *__restrict__ calling, + const struct rb_callinfo *__restrict__ ci) +{ + if ((__builtin_expect(!!((vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) { + VALUE final_hash; + vm_caller_setup_arg_splat(cfp, calling); + if (!(vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))) && + calling->argc > 0 && + (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath(((final_hash = *(cfp->sp - 1))), (RUBY_T_HASH)) : (RB_TYPE_P)(((final_hash = *(cfp->sp - 1))), (RUBY_T_HASH))) && + (((struct RHash *)final_hash)->basic.flags & RHASH_PASS_AS_KEYWORDS)) { + *(cfp->sp - 1) = rb_hash_dup(final_hash); + calling->kw_splat = 1; + } + } + if ((__builtin_expect(!!((vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)))), 0))) { + if ((vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit))) { + vm_caller_setup_arg_kw(cfp, calling, ci); + } + else { + VALUE keyword_hash = cfp->sp[-1]; + if (!(__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((keyword_hash), (RUBY_T_HASH)))) { + cfp->sp[-1] = rb_hash_dup(rb_to_hash_type(keyword_hash)); + } + else if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) { + cfp->sp[-1] = rb_hash_dup(keyword_hash); + } + } + } +} +static inline void +CALLER_REMOVE_EMPTY_KW_SPLAT(struct rb_control_frame_struct *__restrict__ cfp, + struct rb_calling_info *__restrict__ calling, + const struct rb_callinfo *__restrict__ ci) +{ + if ((__builtin_expect(!!(calling->kw_splat), 0))) { + if (RHASH_EMPTY_P(cfp->sp[-1])) { + cfp->sp--; + calling->argc--; + calling->kw_splat = 0; + } + } +} +#define USE_OPT_HIST 0 +static VALUE +vm_call_iseq_setup_normal_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp, + struct rb_calling_info *calling) +{ + const struct rb_callcache *cc = calling->cc; + const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def); + const int lead_num = iseq->body->param.lead_num; + const int opt = calling->argc - lead_num; + const int opt_num = iseq->body->param.opt_num; + const int opt_pc = (int)iseq->body->param.opt_table[opt]; + const int param = iseq->body->param.size; + const int local = iseq->body->local_table_size; + const int delta = opt_num - opt; + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param - delta, local); +} +static VALUE +vm_call_iseq_setup_tailcall_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp, + struct rb_calling_info *calling) +{ + const struct rb_callcache *cc = calling->cc; + const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def); + const int lead_num = iseq->body->param.lead_num; + const int opt = calling->argc - lead_num; + const int opt_pc = (int)iseq->body->param.opt_table[opt]; + ((void)0); + return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc); +} +static void +args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq, + VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords, + VALUE *const locals); +static VALUE +vm_call_iseq_setup_kwparm_kwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp, + struct rb_calling_info *calling) +{ + const struct rb_callinfo *ci = calling->ci; + const struct rb_callcache *cc = calling->cc; + ((void)0); + ((void)0); + const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def); + const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword; + const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci); + const int ci_kw_len = kw_arg->keyword_len; + const VALUE * const ci_keywords = kw_arg->keywords; + VALUE *argv = cfp->sp - calling->argc; + VALUE *const klocals = argv + kw_param->bits_start - kw_param->num; + const int lead_num = iseq->body->param.lead_num; + VALUE * const ci_kws = ((VALUE *)__builtin_alloca((rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))))); + memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))); + args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals); + int param = iseq->body->param.size; + int local = iseq->body->local_table_size; + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local); +} +static VALUE +vm_call_iseq_setup_kwparm_nokwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp, + struct rb_calling_info *calling) +{ + const struct rb_callinfo *__attribute__ ((__unused__)) ci = calling->ci; + const struct rb_callcache *cc = calling->cc; + ((void)0); + ((void)0); + const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def); + const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword; + VALUE * const argv = cfp->sp - calling->argc; + VALUE * const klocals = argv + kw_param->bits_start - kw_param->num; + int i; + for (i=0; inum; i++) { + klocals[i] = kw_param->default_values[i]; + } + klocals[i] = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)); + int param = iseq->body->param.size; + int local = iseq->body->local_table_size; + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local); +} +static inline int +vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, + const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size) +{ + const struct rb_callinfo *ci = calling->ci; + const struct rb_callcache *cc = calling->cc; + _Bool cacheable_ci = vm_ci_markable(ci); + if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) { + if ((__builtin_expect(!!(rb_simple_iseq_p(iseq)), 1))) { + rb_control_frame_t *cfp = ec->cfp; + CALLER_SETUP_ARG(cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci); + if (calling->argc != iseq->body->param.lead_num) { + argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num); + } + ((void)0); + ((void)0); + CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size), cacheable_ci && vm_call_iseq_optimizable_p(ci, cc)); + return 0; + } + else if (rb_iseq_only_optparam_p(iseq)) { + rb_control_frame_t *cfp = ec->cfp; + CALLER_SETUP_ARG(cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci); + const int lead_num = iseq->body->param.lead_num; + const int opt_num = iseq->body->param.opt_num; + const int argc = calling->argc; + const int opt = argc - lead_num; + if (opt < 0 || opt > opt_num) { + argument_arity_error(ec, iseq, argc, lead_num, lead_num + opt_num); + } + if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) { + CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start, + !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) && + cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED)); + } + else { + CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start, + !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) && + cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED)); + } + ((void)0); + for (int i=argc; ibody->param.opt_table[opt]; + } + else if (rb_iseq_only_kwparam_p(iseq) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))) { + const int lead_num = iseq->body->param.lead_num; + const int argc = calling->argc; + const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword; + if (vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) { + const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci); + if (argc - kw_arg->keyword_len == lead_num) { + const int ci_kw_len = kw_arg->keyword_len; + const VALUE * const ci_keywords = kw_arg->keywords; + VALUE * const ci_kws = ((VALUE *)__builtin_alloca((rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))))); + memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))); + VALUE *const klocals = argv + kw_param->bits_start - kw_param->num; + args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals); + CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg, + cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED)); + return 0; + } + } + else if (argc == lead_num) { + VALUE *const klocals = argv + kw_param->bits_start - kw_param->num; + args_setup_kw_parameters(ec, iseq, ((void*)0), 0, ((void*)0), klocals); + if (klocals[kw_param->num] == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0))) { + CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg, + cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED)); + } + return 0; + } + } + } + return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method); +} +static VALUE +vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + const struct rb_callcache *cc = calling->cc; + const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def); + const int param_size = iseq->body->param.size; + const int local_size = iseq->body->local_table_size; + const int opt_pc = vm_callee_setup_arg(ec, calling, def_iseq_ptr(vm_cc_cme(cc)->def), cfp->sp - calling->argc, param_size, local_size); + return vm_call_iseq_setup_2(ec, cfp, calling, opt_pc, param_size, local_size); +} +static inline VALUE +vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, + int opt_pc, int param_size, int local_size) +{ + const struct rb_callinfo *ci = calling->ci; + const struct rb_callcache *cc = calling->cc; + if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) { + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param_size, local_size); + } + else { + return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc); + } +} +static inline VALUE +vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me, + int opt_pc, int param_size, int local_size) +{ + const rb_iseq_t *iseq = def_iseq_ptr(me->def); + VALUE *argv = cfp->sp - calling->argc; + VALUE *sp = argv + param_size; + cfp->sp = argv - 1 ; + vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv, + calling->block_handler, (VALUE)me, + iseq->body->iseq_encoded + opt_pc, sp, + local_size - param_size, + iseq->body->stack_max); + return ((VALUE)RUBY_Qundef); +} +static inline VALUE +vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc) +{ + const struct rb_callcache *cc = calling->cc; + unsigned int i; + VALUE *argv = cfp->sp - calling->argc; + const rb_callable_method_entry_t *me = vm_cc_cme(cc); + const rb_iseq_t *iseq = def_iseq_ptr(me->def); + VALUE *src_argv = argv; + VALUE *sp_orig, *sp; + VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0; + if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) { + struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1)); + const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler); + dst_captured->code.val = src_captured->code.val; + if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) { + calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured); + } + else { + calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured); + } + } + vm_pop_frame(ec, cfp, cfp->ep); + cfp = ec->cfp; + sp_orig = sp = cfp->sp; + sp[0] = calling->recv; + sp++; + for (i=0; i < iseq->body->param.size; i++) { + *sp++ = src_argv[i]; + } + vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag, + calling->recv, calling->block_handler, (VALUE)me, + iseq->body->iseq_encoded + opt_pc, sp, + iseq->body->local_table_size - iseq->body->param.size, + iseq->body->stack_max); + cfp->sp = sp_orig; + return ((VALUE)RUBY_Qundef); +} +static void +ractor_unsafe_check(void) +{ + if (!rb_ractor_main_p()) { + rb_raise(rb_eRactorUnsafeError, "ractor unsafe method called from not main ractor"); + } +} +static VALUE +call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + return (*func)(recv, rb_ary_new_from_values(argc, argv)); +} +static VALUE +call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + return (*func)(argc, argv, recv); +} +static VALUE +call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func; + return (*f)(recv); +} +static VALUE +call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func; + return (*f)(recv, argv[0]); +} +static VALUE +call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1]); +} +static VALUE +call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2]); +} +static VALUE +call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3]); +} +static VALUE +call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]); +} +static VALUE +call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]); +} +static VALUE +call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]); +} +static VALUE +call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]); +} +static VALUE +call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]); +} +static VALUE +call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]); +} +static VALUE +call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]); +} +static VALUE +call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]); +} +static VALUE +call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]); +} +static VALUE +call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]); +} +static VALUE +call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + ractor_unsafe_check(); + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]); +} +static VALUE +ractor_safe_call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + return (*func)(recv, rb_ary_new_from_values(argc, argv)); +} +static VALUE +ractor_safe_call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + return (*func)(argc, argv, recv); +} +static VALUE +ractor_safe_call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func; + return (*f)(recv); +} +static VALUE +ractor_safe_call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func; + return (*f)(recv, argv[0]); +} +static VALUE +ractor_safe_call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1]); +} +static VALUE +ractor_safe_call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2]); +} +static VALUE +ractor_safe_call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3]); +} +static VALUE +ractor_safe_call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]); +} +static VALUE +ractor_safe_call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]); +} +static VALUE +ractor_safe_call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]); +} +static VALUE +ractor_safe_call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]); +} +static VALUE +ractor_safe_call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]); +} +static VALUE +ractor_safe_call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]); +} +static VALUE +ractor_safe_call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]); +} +static VALUE +ractor_safe_call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]); +} +static VALUE +ractor_safe_call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]); +} +static VALUE +ractor_safe_call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]); +} +static VALUE +ractor_safe_call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)()) +{ + VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func; + return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]); +} +static inline int +vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp) +{ + const int ov_flags = RAISED_STACKOVERFLOW; + if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1; + if ((((ec)->raised_flag & (ov_flags)) != 0)) { + ((ec)->raised_flag &= ~(ov_flags)); + return 1; + } + return 0; +} +#define CHECK_CFP_CONSISTENCY(func) (LIKELY(vm_cfp_consistent_p(ec, reg_cfp)) ? (void)0 : rb_bug(func ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1))) +static inline +const rb_method_cfunc_t * +vm_method_cfunc_entry(const rb_callable_method_entry_t *me) +{ + return __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__(&(me->def)->body.cfunc) unaligned_member_access_result = (&(me->def)->body.cfunc); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }); +} +static VALUE +vm_call_cfunc_with_frame(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + const struct rb_callinfo *ci = calling->ci; + const struct rb_callcache *cc = calling->cc; + VALUE val; + const rb_callable_method_entry_t *me = vm_cc_cme(cc); + const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me); + int len = cfunc->argc; + VALUE recv = calling->recv; + VALUE block_handler = calling->block_handler; + VALUE frame_type = VM_FRAME_MAGIC_CFUNC | VM_FRAME_FLAG_CFRAME | VM_ENV_FLAG_LOCAL; + int argc = calling->argc; + int orig_argc = argc; + if ((__builtin_expect(!!(calling->kw_splat), 0))) { + frame_type |= VM_FRAME_FLAG_CFRAME_KW; + } + do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0); + do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); + vm_push_frame(ec, ((void*)0), frame_type, recv, + block_handler, (VALUE)me, + 0, ec->cfp->sp, 0, 0); + if (len >= 0) rb_check_arity(argc, len, len); + reg_cfp->sp -= orig_argc + 1; + val = (*cfunc->invoker)(recv, argc, reg_cfp->sp + 1, cfunc->func); + ((__builtin_expect(!!(vm_cfp_consistent_p(ec, reg_cfp)), 1)) ? (void)0 : rb_bug("vm_call_cfunc" ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1))); + rb_vm_pop_frame(ec); + do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, val, 0); } } while (0); + do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0); + return val; +} +static VALUE +vm_call_cfunc(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + const struct rb_callinfo *ci = calling->ci; + ((void)0); + CALLER_SETUP_ARG(reg_cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(reg_cfp, calling, ci); + CC_SET_FASTPATH(calling->cc, vm_call_cfunc_with_frame, !rb_splat_or_kwargs_p(ci) && !calling->kw_splat); + return vm_call_cfunc_with_frame(ec, reg_cfp, calling); +} +static VALUE +vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + const struct rb_callcache *cc = calling->cc; + ((void)0); + cfp->sp -= 1; + return vm_getivar(calling->recv, vm_cc_cme(cc)->def->body.attr.id, ((void*)0), ((void*)0), cc, 1); +} +static VALUE +vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + const struct rb_callcache *cc = calling->cc; + ((void)0); + VALUE val = *(cfp->sp - 1); + cfp->sp -= 2; + return vm_setivar(calling->recv, vm_cc_cme(cc)->def->body.attr.id, val, ((void*)0), ((void*)0), cc, 1); +} +_Bool +rb_vm_call_ivar_attrset_p(const vm_call_handler ch) +{ + return (ch == vm_call_ivar || ch == vm_call_attrset); +} +static inline VALUE +vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, const VALUE *argv) +{ + rb_proc_t *proc; + VALUE val; + const struct rb_callcache *cc = calling->cc; + const rb_callable_method_entry_t *cme = vm_cc_cme(cc); + VALUE procv = cme->def->body.bmethod.proc; + if (!RB_FL_TEST_RAW((procv), RUBY_FL_SHAREABLE) && + cme->def->body.bmethod.defined_ractor != rb_ractor_self(rb_ec_ractor_ptr(ec))) { + rb_raise(rb_eRuntimeError, "defined with an un-shareable Proc in a different Ractor"); + } + (((proc)) = (rb_proc_t*)((struct RData *)(((procv))))->data); + val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->kw_splat, calling->block_handler, vm_cc_cme(cc)); + return val; +} +static VALUE +vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + VALUE *argv; + int argc; + const struct rb_callinfo *ci = calling->ci; + CALLER_SETUP_ARG(cfp, calling, ci); + argc = calling->argc; + argv = ((VALUE *)__builtin_alloca((rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))))); + memcpy((argv), (cfp->sp - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))); + cfp->sp += - argc - 1; + return vm_call_bmethod_body(ec, calling, argv); +} +__attribute__ ((__visibility__("default"))) extern VALUE +rb_find_defined_class_by_owner(VALUE current_class, VALUE target_owner) +{ + VALUE klass = current_class; + if ((__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_ICLASS)) : (RB_TYPE_P)((klass), (RUBY_T_ICLASS))) && RB_FL_TEST(klass, ((VALUE)RUBY_FL_USER5)) && + (__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((RBASIC_CLASS(klass)), (RUBY_T_CLASS)) : (RB_TYPE_P)((RBASIC_CLASS(klass)), (RUBY_T_CLASS)))) { + klass = RBASIC_CLASS(klass); + } + while (RB_TEST(klass)) { + VALUE owner = (__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_ICLASS)) : (RB_TYPE_P)((klass), (RUBY_T_ICLASS))) ? RBASIC_CLASS(klass) : klass; + if (owner == target_owner) { + return klass; + } + klass = RCLASS_SUPER(klass); + } + return current_class; +} +static const rb_callable_method_entry_t * +aliased_callable_method_entry(const rb_callable_method_entry_t *me) +{ + const rb_method_entry_t *orig_me = me->def->body.alias.original_me; + const rb_callable_method_entry_t *cme; + if (orig_me->defined_class == 0) { + VALUE defined_class = rb_find_defined_class_by_owner(me->defined_class, orig_me->owner); + ((void)0); + cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class); + if (me->def->alias_count + me->def->complemented_count == 0) { + rb_obj_write((VALUE)(me), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&me->def->body.alias.original_me)) unaligned_member_access_result = ((VALUE *)(&me->def->body.alias.original_me)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(cme), "../ruby-3.1.5/vm_insnhelper.c", 3166); + } + else { + rb_method_definition_t *def = + rb_method_definition_create(VM_METHOD_TYPE_ALIAS, me->def->original_id); + rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme); + } + } + else { + cme = (const rb_callable_method_entry_t *)orig_me; + } + ((void)0); + return cme; +} +const rb_callable_method_entry_t * +rb_aliased_callable_method_entry(const rb_callable_method_entry_t *me) +{ + return aliased_callable_method_entry(me); +} +static VALUE +vm_call_alias(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = aliased_callable_method_entry(vm_cc_cme(calling->cc)), .call_ = vm_call_general, .aux_ = { 0 }, }; + return vm_call_method_each_type(ec, cfp, calling); +} +static enum method_missing_reason +ci_missing_reason(const struct rb_callinfo *ci) +{ + enum method_missing_reason stati128 = MISSING_NOENTRY; + if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stati128 |= MISSING_VCALL; + if (vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit)) stati128 |= MISSING_FCALL; + if (vm_ci_flag(ci) & (0x01 << VM_CALL_SUPER_bit)) stati128 |= MISSING_SUPER; + return stati128; +} +static VALUE +vm_call_symbol(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE symbol) +{ + __builtin_assume(calling->argc >= 0); + enum method_missing_reason missing_reason = MISSING_NOENTRY; + int argc = calling->argc; + VALUE recv = calling->recv; + VALUE klass = rb_class_of(recv); + ID mid = rb_check_id(&symbol); + int flags = (0x01 << VM_CALL_FCALL_bit) | + (0x01 << VM_CALL_OPT_SEND_bit) | + (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0); + if ((__builtin_expect(!!(! mid), 0))) { + mid = idMethodMissing; + missing_reason = ci_missing_reason(ci); + ec->method_missing_reason = missing_reason; + int i = argc; + do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0); + (((reg_cfp)->sp) += (((1)))); + memmove((&(*(((((reg_cfp)->sp)))-(i - 1)-1))), (&(*(((((reg_cfp)->sp)))-(i)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i))); + argc = ++calling->argc; + if (rb_method_basic_definition_p(klass, idMethodMissing)) { + (*(((((reg_cfp)->sp)))-(i)-1)) = symbol; + int priv = vm_ci_flag(ci) & ((0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_VCALL_bit)); + const VALUE *argv = (((((reg_cfp)->sp)))-(argc)); + VALUE exc = rb_make_no_method_exception( + rb_eNoMethodError, 0, recv, argc, argv, priv); + rb_exc_raise(exc); + } + else { + (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(symbol); + } + } + calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = mid, .flag = flags, .argc = argc, .kwarg = vm_ci_kwarg(ci), }; + calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = klass, .cme_ = rb_callable_method_entry_with_refinements(klass, mid, ((void*)0)), .call_ = vm_call_general, .aux_ = { .method_missing_reason = missing_reason }, }; + return vm_call_method(ec, reg_cfp, calling); +} +static VALUE +vm_call_opt_send(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + int i; + VALUE sym; + CALLER_SETUP_ARG(reg_cfp, calling, calling->ci); + i = calling->argc - 1; + if (calling->argc == 0) { + rb_raise(rb_eArgError, "no method name given"); + } + else { + sym = (*(((((reg_cfp)->sp)))-(i)-1)); + if (i > 0) { + memmove((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i))); + } + calling->argc -= 1; + (((reg_cfp)->sp) -= (((1)))); + return vm_call_symbol(ec, reg_cfp, calling, calling->ci, sym); + } +} +static VALUE +vm_call_method_missing_body(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, + const struct rb_callinfo *orig_ci, enum method_missing_reason reason) +{ + ((void)0); + VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc)); + unsigned int argc; + CALLER_SETUP_ARG(reg_cfp, calling, orig_ci); + argc = calling->argc + 1; + unsigned int flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0); + calling->argc = argc; + do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0); + ; + if (argc > 1) { + memmove((argv+1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc-1))); + } + argv[0] = rb_id2sym(vm_ci_mid(orig_ci)); + (((reg_cfp)->sp) += (((1)))); + ec->method_missing_reason = reason; + calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = idMethodMissing, .flag = flag, .argc = argc, .kwarg = vm_ci_kwarg(orig_ci), }; + calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = rb_callable_method_entry_without_refinements(rb_class_of(calling->recv), idMethodMissing, ((void*)0)), .call_ = vm_call_general, .aux_ = { 0 }, }; + return vm_call_method(ec, reg_cfp, calling); +} +static VALUE +vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + return vm_call_method_missing_body(ec, reg_cfp, calling, calling->ci, vm_cc_cmethod_missing_reason(calling->cc)); +} +static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me); +static VALUE +vm_call_zsuper(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, VALUE klass) +{ + klass = RCLASS_SUPER(klass); + const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, vm_ci_mid(calling->ci)) : ((void*)0); + if (cme == ((void*)0)) { + return vm_call_method_nome(ec, cfp, calling); + } + if (cme->def->type == VM_METHOD_TYPE_REFINED && + cme->def->body.refined.orig_me) { + cme = refined_method_callable_without_refinement(cme); + } + calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = cme, .call_ = vm_call_general, .aux_ = { 0 }, }; + return vm_call_method_each_type(ec, cfp, calling); +} +static inline VALUE +find_refinement(VALUE refinements, VALUE klass) +{ + if (RB_NIL_P(refinements)) { + return ((VALUE)RUBY_Qnil); + } + return rb_hash_lookup(refinements, klass); +} +__attribute__((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp); +static rb_control_frame_t * +current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp) +{ + rb_control_frame_t *top_cfp = cfp; + if (cfp->iseq && cfp->iseq->body->type == ISEQ_TYPE_BLOCK) { + const rb_iseq_t *local_iseq = cfp->iseq->body->local_iseq; + do { + cfp = ((cfp)+1); + if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) { + return top_cfp; + } + } while (cfp->iseq != local_iseq); + } + return cfp; +} +static const rb_callable_method_entry_t * +refined_method_callable_without_refinement(const rb_callable_method_entry_t *me) +{ + const rb_method_entry_t *orig_me = me->def->body.refined.orig_me; + const rb_callable_method_entry_t *cme; + if (orig_me->defined_class == 0) { + cme = ((void*)0); + rb_notimplement(); + } + else { + cme = (const rb_callable_method_entry_t *)orig_me; + } + ((void)0); + if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) { + cme = ((void*)0); + } + return cme; +} +static const rb_callable_method_entry_t * +search_refined_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ID mid = vm_ci_mid(calling->ci); + const rb_cref_t *cref = vm_get_cref(cfp->ep); + const struct rb_callcache * const cc = calling->cc; + const rb_callable_method_entry_t *cme = vm_cc_cme(cc); + for (; cref; cref = CREF_NEXT(cref)) { + const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref), vm_cc_cme(cc)->owner); + if (RB_NIL_P(refinement)) continue; + const rb_callable_method_entry_t *const ref_me = + rb_callable_method_entry(refinement, mid); + if (ref_me) { + if (vm_cc_call(cc) == vm_call_super_method) { + const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp); + const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp); + if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) { + continue; + } + } + if (cme->def->type != VM_METHOD_TYPE_REFINED || + cme->def != ref_me->def) { + cme = ref_me; + } + if (ref_me->def->type != VM_METHOD_TYPE_REFINED) { + return cme; + } + } + else { + return ((void*)0); + } + } + if (vm_cc_cme(cc)->def->body.refined.orig_me) { + return refined_method_callable_without_refinement(vm_cc_cme(cc)); + } + else { + VALUE klass = RCLASS_SUPER(vm_cc_cme(cc)->defined_class); + const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, mid) : ((void*)0); + return cme; + } +} +static VALUE +vm_call_refined(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + struct rb_callcache *ref_cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = search_refined_method(ec, cfp, calling), .call_ = vm_call_general, .aux_ = { 0 }, }; + if (vm_cc_cme(ref_cc)) { + calling->cc= ref_cc; + return vm_call_method(ec, cfp, calling); + } + else { + return vm_call_method_nome(ec, cfp, calling); + } +} +static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, _Bool is_lambda, VALUE block_handler); +__declspec(noinline) static VALUE vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler); +static VALUE +vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler) +{ + int argc = calling->argc; + if (argc > 0) memmove((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))); + (((reg_cfp)->sp) -= (((1)))); + return vm_invoke_block(ec, reg_cfp, calling, ci, 0, block_handler); +} +static VALUE +vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + const struct rb_callinfo *ci = calling->ci; + VALUE procval = calling->recv; + return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval)); +} +static VALUE +vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp)); + const struct rb_callinfo *ci = calling->ci; + if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) { + return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler); + } + else { + calling->recv = rb_vm_bh_to_procval(ec, block_handler); + calling->cc = rb_vm_search_method_slowpath(ci, rb_class_of(calling->recv)); + return vm_call_general(ec, reg_cfp, calling); + } +} +static VALUE +vm_call_opt_struct_aref0(rb_execution_context_t *ec, struct rb_calling_info *calling) +{ + VALUE recv = calling->recv; + ((void)0); + ((void)0); + ((void)0); + const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index; + return internal_RSTRUCT_GET(recv, off); +} +static VALUE +vm_call_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + VALUE ret = vm_call_opt_struct_aref0(ec, calling); + reg_cfp->sp -= 1; + return ret; +} +static VALUE +vm_call_opt_struct_aset0(rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE val) +{ + VALUE recv = calling->recv; + ((void)0); + ((void)0); + ((void)0); + rb_check_frozen_inline(recv); + const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index; + internal_RSTRUCT_SET(recv, off, val); + return val; +} +static VALUE +vm_call_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + VALUE ret = vm_call_opt_struct_aset0(ec, calling, *(reg_cfp->sp - 1)); + reg_cfp->sp -= 2; + return ret; +} +__declspec(noinline) static VALUE vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, const struct rb_callcache *cc); +static VALUE +vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, + const struct rb_callinfo *ci, const struct rb_callcache *cc) +{ + switch (vm_cc_cme(cc)->def->body.optimized.type) { + case OPTIMIZED_METHOD_TYPE_SEND: + CC_SET_FASTPATH(cc, vm_call_opt_send, 1); + return vm_call_opt_send(ec, cfp, calling); + case OPTIMIZED_METHOD_TYPE_CALL: + CC_SET_FASTPATH(cc, vm_call_opt_call, 1); + return vm_call_opt_call(ec, cfp, calling); + case OPTIMIZED_METHOD_TYPE_BLOCK_CALL: + CC_SET_FASTPATH(cc, vm_call_opt_block_call, 1); + return vm_call_opt_block_call(ec, cfp, calling); + case OPTIMIZED_METHOD_TYPE_STRUCT_AREF: + CALLER_SETUP_ARG(cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci); + rb_check_arity(calling->argc, 0, 0); + CC_SET_FASTPATH(cc, vm_call_opt_struct_aref, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit))); + return vm_call_opt_struct_aref(ec, cfp, calling); + case OPTIMIZED_METHOD_TYPE_STRUCT_ASET: + CALLER_SETUP_ARG(cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci); + rb_check_arity(calling->argc, 1, 1); + CC_SET_FASTPATH(cc, vm_call_opt_struct_aset, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit))); + return vm_call_opt_struct_aset(ec, cfp, calling); + default: + rb_bug("vm_call_method: unsupported optimized method type (%d)", vm_cc_cme(cc)->def->body.optimized.type); + } +} +#define VM_CALL_METHOD_ATTR(var,func,nohook) if (UNLIKELY(ruby_vm_event_flags & (RUBY_EVENT_C_CALL | RUBY_EVENT_C_RETURN))) { EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_CALL, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, Qundef); var = func; EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_RETURN, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (var)); } else { nohook; var = func; } +static VALUE +vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + const struct rb_callinfo *ci = calling->ci; + const struct rb_callcache *cc = calling->cc; + const rb_callable_method_entry_t *cme = vm_cc_cme(cc); + VALUE v; + switch (cme->def->type) { + case VM_METHOD_TYPE_ISEQ: + CC_SET_FASTPATH(cc, vm_call_iseq_setup, 1); + return vm_call_iseq_setup(ec, cfp, calling); + case VM_METHOD_TYPE_NOTIMPLEMENTED: + case VM_METHOD_TYPE_CFUNC: + CC_SET_FASTPATH(cc, vm_call_cfunc, 1); + return vm_call_cfunc(ec, cfp, calling); + case VM_METHOD_TYPE_ATTRSET: + CALLER_SETUP_ARG(cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci); + rb_check_arity(calling->argc, 1, 1); + vm_cc_attr_index_set(cc, 0); + const unsigned int aset_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KWARG_bit)); + if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_attrset(ec, cfp, calling); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_attrset, !(vm_ci_flag(ci) & aset_mask)); v = vm_call_attrset(ec, cfp, calling); }; + return v; + case VM_METHOD_TYPE_IVAR: + CALLER_SETUP_ARG(cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci); + rb_check_arity(calling->argc, 0, 0); + vm_cc_attr_index_set(cc, 0); + const unsigned int ivar_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)); + if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_ivar(ec, cfp, calling); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_ivar, !(vm_ci_flag(ci) & ivar_mask)); v = vm_call_ivar(ec, cfp, calling); }; + return v; + case VM_METHOD_TYPE_MISSING: + vm_cc_method_missing_reason_set(cc, 0); + CC_SET_FASTPATH(cc, vm_call_method_missing, 1); + return vm_call_method_missing(ec, cfp, calling); + case VM_METHOD_TYPE_BMETHOD: + CC_SET_FASTPATH(cc, vm_call_bmethod, 1); + return vm_call_bmethod(ec, cfp, calling); + case VM_METHOD_TYPE_ALIAS: + CC_SET_FASTPATH(cc, vm_call_alias, 1); + return vm_call_alias(ec, cfp, calling); + case VM_METHOD_TYPE_OPTIMIZED: + return vm_call_optimized(ec, cfp, calling, ci, cc); + case VM_METHOD_TYPE_UNDEF: + break; + case VM_METHOD_TYPE_ZSUPER: + return vm_call_zsuper(ec, cfp, calling, ((((struct RClass *)(vm_cc_cme(cc)->defined_class))->ptr)->origin_)); + case VM_METHOD_TYPE_REFINED: + return vm_call_refined(ec, cfp, calling); + } + rb_bug("vm_call_method: unsupported method type (%d)", vm_cc_cme(cc)->def->type); +} +__declspec(noreturn) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status); +static VALUE +vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + const struct rb_callinfo *ci = calling->ci; + const int stati128 = ci_missing_reason(ci); + if (vm_ci_mid(ci) == idMethodMissing) { + rb_control_frame_t *reg_cfp = cfp; + VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc)); + vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stati128); + } + else { + return vm_call_method_missing_body(ec, cfp, calling, ci, stati128); + } +} +static inline VALUE +vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + const struct rb_callinfo *ci = calling->ci; + const struct rb_callcache *cc = calling->cc; + ((void)0); + if (vm_cc_cme(cc) != ((void*)0)) { + switch ((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) { + case METHOD_VISI_PUBLIC: + return vm_call_method_each_type(ec, cfp, calling); + case METHOD_VISI_PRIVATE: + if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit))) { + enum method_missing_reason stati128 = MISSING_PRIVATE; + if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stati128 |= MISSING_VCALL; + vm_cc_method_missing_reason_set(cc, stati128); + CC_SET_FASTPATH(cc, vm_call_method_missing, 1); + return vm_call_method_missing(ec, cfp, calling); + } + return vm_call_method_each_type(ec, cfp, calling); + case METHOD_VISI_PROTECTED: + if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_OPT_SEND_bit))) { + if (!rb_obj_is_kind_of(cfp->self, vm_cc_cme(cc)->defined_class)) { + vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED); + return vm_call_method_missing(ec, cfp, calling); + } + else { + ((void)0); + struct rb_callcache cc_on_stack = *cc; + RB_FL_SET_RAW((VALUE)&cc_on_stack, ((VALUE)RUBY_FL_USER4)); + calling->cc = &cc_on_stack; + return vm_call_method_each_type(ec, cfp, calling); + } + } + return vm_call_method_each_type(ec, cfp, calling); + default: + rb_bug("unreachable"); + } + } + else { + return vm_call_method_nome(ec, cfp, calling); + } +} +static VALUE +vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_method(ec, reg_cfp, calling); +} +void +rb_vm_cc_general(const struct rb_callcache *cc) +{ + ((void)0); + ((void)0); + *(vm_call_handler *)&cc->call_ = vm_call_general; +} +static VALUE +vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling) +{ + ((void)0); + if (ec == ((void*)0)) rb_bug("unreachable"); + ((void)0); + return vm_call_method(ec, reg_cfp, calling); +} +static inline VALUE +vm_search_normal_superclass(VALUE klass) +{ + if (RB_BUILTIN_TYPE(klass) == RUBY_T_ICLASS && + RB_FL_TEST_RAW(((struct RBasic *)(klass))->klass, RMODULE_IS_REFINEMENT)) { + klass = ((struct RBasic *)(klass))->klass; + } + klass = ((((struct RClass *)(klass))->ptr)->origin_); + return RCLASS_SUPER(klass); +} +__declspec(noreturn) static void vm_super_outside(void); +static void +vm_super_outside(void) +{ + rb_raise(rb_eNoMethodError, "super called outside of method"); +} +static const struct rb_callcache * +empty_cc_for_super(void) +{ + return rb_vm_empty_cc_for_super(); +} +static const struct rb_callcache * +vm_search_super_method(const rb_control_frame_t *reg_cfp, struct rb_call_data *cd, VALUE recv) +{ + VALUE current_defined_class; + const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp); + if (!me) { + vm_super_outside(); + } + current_defined_class = me->defined_class; + if (!RB_NIL_P(((((struct RClass *)(current_defined_class))->ptr)->refined_class))) { + current_defined_class = ((((struct RClass *)(current_defined_class))->ptr)->refined_class); + } + if (RB_BUILTIN_TYPE(current_defined_class) != RUBY_T_MODULE && + !RB_FL_TEST_RAW(current_defined_class, RMODULE_INCLUDED_INTO_REFINEMENT) && + reg_cfp->iseq != method_entry_iseqptr(me) && + !rb_obj_is_kind_of(recv, current_defined_class)) { + VALUE m = (__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((current_defined_class), (RUBY_T_ICLASS)) : (RB_TYPE_P)((current_defined_class), (RUBY_T_ICLASS))) ? + ((((struct RClass *)(current_defined_class))->ptr)->includer) : current_defined_class; + if (m) { + rb_raise(rb_eTypeError, + "self has wrong type to call super in this context: " + "%""ll""i" "\v"" (expected %""ll""i" "\v"")", + rb_obj_class(recv), m); + } + } + if (me->def->type == VM_METHOD_TYPE_BMETHOD && (vm_ci_flag(cd->ci) & (0x01 << VM_CALL_ZSUPER_bit))) { + rb_raise(rb_eRuntimeError, + "implicit argument passing of super from method defined" + " by define_method() is not supported." + " Specify all arguments explicitly."); + } + ID mid = me->def->original_id; + cd->ci = vm_ci_new_runtime_(mid, vm_ci_flag(cd->ci), vm_ci_argc(cd->ci), vm_ci_kwarg(cd->ci), "../ruby-3.1.5/vm_insnhelper.c", 3877); + (rb_obj_written((VALUE)(reg_cfp->iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cd->ci), "../ruby-3.1.5/vm_insnhelper.c", 3879)); + const struct rb_callcache *cc; + VALUE klass = vm_search_normal_superclass(me->defined_class); + if (!klass) { + cc = vm_cc_new(klass, ((void*)0), vm_call_method_missing); + rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(cc), "../ruby-3.1.5/vm_insnhelper.c", 3888); + } + else { + cc = vm_search_method_fastpath((VALUE)reg_cfp->iseq, cd, klass); + const rb_callable_method_entry_t *cached_cme = vm_cc_cme(cc); + if (cached_cme == ((void*)0)) { + cd->cc = empty_cc_for_super(); + } + else if (cached_cme->called_id != mid) { + const rb_callable_method_entry_t *cme = rb_callable_method_entry(klass, mid); + if (cme) { + cc = vm_cc_new(klass, cme, vm_call_super_method); + rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(cc), "../ruby-3.1.5/vm_insnhelper.c", 3903); + } + else { + cd->cc = cc = empty_cc_for_super(); + } + } + else { + switch (cached_cme->def->type) { + case VM_METHOD_TYPE_REFINED: + case VM_METHOD_TYPE_ATTRSET: + case VM_METHOD_TYPE_IVAR: + vm_cc_call_set(cc, vm_call_super_method); + break; + default: + break; + } + } + } + ((void)0); + return cc; +} +static inline int +block_proc_is_lambda(const VALUE procval) +{ + rb_proc_t *proc; + if (procval) { + (((proc)) = (rb_proc_t*)((struct RData *)(((procval))))->data); + return proc->is_lambda; + } + else { + return 0; + } +} +static VALUE +vm_yield_with_cfunc(rb_execution_context_t *ec, + const struct rb_captured_block *captured, + VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler, + const rb_callable_method_entry_t *me) +{ + int is_lambda = 0; + VALUE val, arg, blockarg; + int frame_flag; + const struct vm_ifunc *ifunc = captured->code.ifunc; + if (is_lambda) { + arg = rb_ary_new_from_values(argc, argv); + } + else if (argc == 0) { + arg = ((VALUE)RUBY_Qnil); + } + else { + arg = argv[0]; + } + blockarg = rb_vm_bh_to_procval(ec, block_handler); + frame_flag = VM_FRAME_MAGIC_IFUNC | VM_FRAME_FLAG_CFRAME | (me ? VM_FRAME_FLAG_BMETHOD : 0); + if (kw_splat) { + frame_flag |= VM_FRAME_FLAG_CFRAME_KW; + } + vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc, + frame_flag, + self, + ((VALUE)((captured->ep)) | (0x01)), + (VALUE)me, + 0, ec->cfp->sp, 0, 0); + val = (*ifunc->func)(arg, (VALUE)ifunc->data, argc, argv, blockarg); + rb_vm_pop_frame(ec); + return val; +} +static VALUE +vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, int kw_splat, VALUE block_handler) +{ + return rb_sym_proc_call(rb_sym2id(symbol), argc, argv, kw_splat, rb_vm_bh_to_procval(ec, block_handler)); +} +static inline int +vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary) +{ + int i; + long len = rb_array_len(ary); + do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((iseq->body->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0); + for (i=0; ibody->param.lead_num; i++) { + argv[i] = RARRAY_AREF(ary, i); + } + return i; +} +static inline VALUE +vm_callee_setup_block_arg_arg0_check(VALUE *argv) +{ + VALUE ary, arg0 = argv[0]; + ary = rb_check_array_type(arg0); + ((void)0); + return ary; +} +static int +vm_callee_setup_block_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_callinfo *ci, const rb_iseq_t *iseq, VALUE *argv, const enum arg_setup_type arg_setup_type) +{ + if (rb_simple_iseq_p(iseq)) { + rb_control_frame_t *cfp = ec->cfp; + VALUE arg0; + CALLER_SETUP_ARG(cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci); + if (arg_setup_type == arg_setup_block && + calling->argc == 1 && + iseq->body->param.flags.has_lead && + !iseq->body->param.flags.ambiguous_param0 && + !RB_NIL_P(arg0 = vm_callee_setup_block_arg_arg0_check(argv))) { + calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0); + } + if (calling->argc != iseq->body->param.lead_num) { + if (arg_setup_type == arg_setup_block) { + if (calling->argc < iseq->body->param.lead_num) { + int i; + do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((iseq->body->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0); + for (i=calling->argc; ibody->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil); + calling->argc = iseq->body->param.lead_num; + } + else if (calling->argc > iseq->body->param.lead_num) { + calling->argc = iseq->body->param.lead_num; + } + } + else { + argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num); + } + } + return 0; + } + else { + return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type); + } +} +static int +vm_yield_setup_args(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int argc, VALUE *argv, int kw_splat, VALUE block_handler, enum arg_setup_type arg_setup_type) +{ + struct rb_calling_info calling_entry, *calling; + calling = &calling_entry; + calling->argc = argc; + calling->block_handler = block_handler; + calling->kw_splat = kw_splat; + calling->recv = ((VALUE)RUBY_Qundef); + struct rb_callinfo dummy_ci = (struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = 0, .flag = (kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0), .argc = 0, .kwarg = 0, }; + return vm_callee_setup_block_arg(ec, calling, &dummy_ci, iseq, argv, arg_setup_type); +} +static VALUE +vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, + _Bool is_lambda, VALUE block_handler) +{ + const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler); + const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq); + const int arg_size = iseq->body->param.size; + VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc; + int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block); + (((reg_cfp)->sp) = (((rsp)))); + vm_push_frame(ec, iseq, + VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0), + captured->self, + ((VALUE)((captured->ep)) | (0x01)), 0, + iseq->body->iseq_encoded + opt_pc, + rsp + arg_size, + iseq->body->local_table_size - arg_size, iseq->body->stack_max); + return ((VALUE)RUBY_Qundef); +} +static VALUE +vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, + __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler) +{ + if (calling->argc < 1) { + rb_raise(rb_eArgError, "no receiver given"); + } + else { + VALUE symbol = VM_BH_TO_SYMBOL(block_handler); + CALLER_SETUP_ARG(reg_cfp, calling, ci); + calling->recv = (*(((((reg_cfp)->sp)))-(--calling->argc)-1)); + return vm_call_symbol(ec, reg_cfp, calling, ci, symbol); + } +} +static VALUE +vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, + __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler) +{ + VALUE val; + int argc; + const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler); + CALLER_SETUP_ARG(ec->cfp, calling, ci); + CALLER_REMOVE_EMPTY_KW_SPLAT(ec->cfp, calling, ci); + argc = calling->argc; + val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), calling->kw_splat, calling->block_handler, ((void*)0)); + ((((reg_cfp)->sp) -= (((argc))))); + return val; +} +static VALUE +vm_proc_to_block_handler(VALUE procval) +{ + const struct rb_block *block = vm_proc_block(procval); + switch (vm_block_type(block)) { + case block_type_iseq: + return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured); + case block_type_ifunc: + return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured); + case block_type_symbol: + return VM_BH_FROM_SYMBOL(block->as.symbol); + case block_type_proc: + return VM_BH_FROM_PROC(block->as.proc); + } + __builtin_unreachable(); + return ((VALUE)RUBY_Qundef); +} +static VALUE +vm_invoke_proc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, + _Bool is_lambda, VALUE block_handler) +{ + while (vm_block_handler_type(block_handler) == block_handler_type_proc) { + VALUE proc = VM_BH_TO_PROC(block_handler); + is_lambda = block_proc_is_lambda(proc); + block_handler = vm_proc_to_block_handler(proc); + } + return vm_invoke_block(ec, reg_cfp, calling, ci, is_lambda, block_handler); +} +static inline VALUE +vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, + _Bool is_lambda, VALUE block_handler) +{ + VALUE (*func)(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, + struct rb_calling_info *calling, const struct rb_callinfo *ci, + _Bool is_lambda, VALUE block_handler); + switch (vm_block_handler_type(block_handler)) { + case block_handler_type_iseq: func = vm_invoke_iseq_block; break; + case block_handler_type_ifunc: func = vm_invoke_ifunc_block; break; + case block_handler_type_proc: func = vm_invoke_proc_block; break; + case block_handler_type_symbol: func = vm_invoke_symbol_block; break; + default: rb_bug("vm_invoke_block: unreachable"); + } + return func(ec, reg_cfp, calling, ci, is_lambda, block_handler); +} +static VALUE +vm_make_proc_with_iseq(const rb_iseq_t *blockiseq) +{ + const rb_execution_context_t *ec = rb_current_execution_context(1); + const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp); + struct rb_captured_block *captured; + if (cfp == 0) { + rb_bug("vm_make_proc_with_iseq: unreachable"); + } + captured = VM_CFP_TO_CAPTURED_BLOCK(cfp); + captured->code.iseq = blockiseq; + return rb_vm_make_proc(ec, captured, rb_cProc); +} +static VALUE +vm_once_exec(VALUE iseq) +{ + VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq); + return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil)); +} +static VALUE +vm_once_clear(VALUE data) +{ + union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data; + is->once.running_thread = ((void*)0); + return ((VALUE)RUBY_Qnil); +} +static _Bool +check_respond_to_missing(VALUE obj, VALUE v) +{ + VALUE args[2]; + VALUE r; + args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse); + r = rb_check_funcall(v, idRespond_to_missing, 2, args); + if (r != ((VALUE)RUBY_Qundef) && RB_TEST(r)) { + return 1; + } + else { + return 0; + } +} +static _Bool +vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v) +{ + VALUE klass; + enum defined_type type = (enum defined_type)op_type; + switch (type) { + case DEFINED_IVAR: + return rb_ivar_defined((((((reg_cfp)))->self)), rb_sym2id(obj)); + break; + case DEFINED_GVAR: + return rb_gvar_defined(rb_sym2id(obj)); + break; + case DEFINED_CVAR: { + const rb_cref_t *cref = vm_get_cref(((((reg_cfp)->ep)))); + klass = vm_get_cvar_base(cref, (((reg_cfp))), 0); + return rb_cvar_defined(klass, rb_sym2id(obj)); + break; + } + case DEFINED_CONST: + case DEFINED_CONST_FROM: { + _Bool allow_nil = type == DEFINED_CONST; + klass = v; + return vm_get_ev_const(ec, klass, rb_sym2id(obj), allow_nil, 1); + break; + } + case DEFINED_FUNC: + klass = rb_class_of(v); + return rb_ec_obj_respond_to(ec, v, rb_sym2id(obj), 1); + break; + case DEFINED_METHOD:{ + VALUE klass = rb_class_of(v); + const rb_method_entry_t *me = rb_method_entry_with_refinements(klass, rb_sym2id(obj), ((void*)0)); + if (me) { + switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) { + case METHOD_VISI_PRIVATE: + break; + case METHOD_VISI_PROTECTED: + if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(me->defined_class))) { + break; + } + case METHOD_VISI_PUBLIC: + return 1; + break; + default: + rb_bug("vm_defined: unreachable: %u", (unsigned int)(rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))); + } + } + else { + return check_respond_to_missing(obj, v); + } + break; + } + case DEFINED_YIELD: + if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) { + return 1; + } + break; + case DEFINED_ZSUPER: + { + const rb_callable_method_entry_t *me = rb_vm_frame_method_entry((((reg_cfp)))); + if (me) { + VALUE klass = vm_search_normal_superclass(me->defined_class); + ID id = me->def->original_id; + return rb_method_boundp(klass, id, 0); + } + } + break; + case DEFINED_REF:{ + return vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), RB_FIX2INT(obj)) != ((VALUE)RUBY_Qnil); + break; + } + default: + rb_bug("unimplemented defined? type (VM)"); + break; + } + return 0; +} +_Bool +rb_vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v) +{ + return vm_defined(ec, reg_cfp, op_type, obj, v); +} +static const VALUE * +vm_get_ep(const VALUE *const reg_ep, rb_num_t lv) +{ + rb_num_t i; + const VALUE *ep = reg_ep; + for (i = 0; i < lv; i++) { + ep = ((VALUE *)((ep)[(-1)] & ~0x03)); + } + return ep; +} +static VALUE +vm_get_special_object(const VALUE *const reg_ep, + enum vm_special_object_type type) +{ + switch (type) { + case VM_SPECIAL_OBJECT_VMCORE: + return rb_mRubyVMFrozenCore; + case VM_SPECIAL_OBJECT_CBASE: + return vm_get_cbase(reg_ep); + case VM_SPECIAL_OBJECT_CONST_BASE: + return vm_get_const_base(reg_ep); + default: + rb_bug("putspecialobject insn: unknown value_type %d", type); + } +} +static VALUE +vm_concat_array(VALUE ary1, VALUE ary2st) +{ + const VALUE ary2 = ary2st; + VALUE tmp1 = rb_check_to_array(ary1); + VALUE tmp2 = rb_check_to_array(ary2); + if (RB_NIL_P(tmp1)) { + tmp1 = rb_ary_new_from_args(1, ary1); + } + if (RB_NIL_P(tmp2)) { + tmp2 = rb_ary_new_from_args(1, ary2); + } + if (tmp1 == ary1) { + tmp1 = rb_ary_dup(ary1); + } + return rb_ary_concat(tmp1, tmp2); +} +static VALUE +vm_splat_array(VALUE flag, VALUE ary) +{ + VALUE tmp = rb_check_to_array(ary); + if (RB_NIL_P(tmp)) { + return rb_ary_new_from_args(1, ary); + } + else if (RB_TEST(flag)) { + return rb_ary_dup(tmp); + } + else { + return tmp; + } +} +VALUE +rb_vm_splat_array(VALUE flag, VALUE ary) +{ + return vm_splat_array(flag, ary); +} +static VALUE +vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag) +{ + enum vm_check_match_type type = ((int)flag) & 0x03; + if (flag & 0x04) { + long i; + const long n = rb_array_len(pattern); + for (i = 0; i < n; i++) { + VALUE v = RARRAY_AREF(pattern, i); + VALUE c = check_match(ec, v, target, type); + if (RB_TEST(c)) { + return c; + } + } + return ((VALUE)RUBY_Qfalse); + } + else { + return check_match(ec, pattern, target, type); + } +} +static VALUE +vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep) +{ + const VALUE kw_bits = *(ep - bits); + if (RB_FIXNUM_P(kw_bits)) { + unsigned int b = (unsigned int)rb_fix2ulong(kw_bits); + if ((idx < (32-1)) && (b & (0x01 << idx))) + return ((VALUE)RUBY_Qfalse); + } + else { + ((void)0); + if (rb_hash_has_key(kw_bits, __builtin_choose_expr( __builtin_constant_p(idx), ((VALUE)(idx)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(idx)))) return ((VALUE)RUBY_Qfalse); + } + return ((VALUE)RUBY_Qtrue); +} +static void +vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec) +{ + if (0 || + 0 || + 0 || + 0) { + switch (flag) { + case 0x0008: + do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0); + return; + case 0x0020: + do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0); + return; + case 0x0010: + do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0); + return; + case 0x0040: + do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0); + return; + } + } +} +static VALUE +vm_const_get_under(ID id, rb_num_t flags, VALUE cbase) +{ + VALUE ns; + if ((ns = vm_search_const_defined_class(cbase, id)) == 0) { + return ns; + } + else if (((flags) & 0x08)) { + return rb_public_const_get_at(ns, id); + } + else { + return rb_const_get_at(ns, id); + } +} +static VALUE +vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass) +{ + if (!(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS)))) { + return 0; + } + else if (((flags) & 0x10)) { + VALUE tmp = rb_class_real(RCLASS_SUPER(klass)); + if (tmp != super) { + rb_raise(rb_eTypeError, + "superclass mismatch for class %""ll""i" "\v""", + rb_id2str(id)); + } + else { + return klass; + } + } + else { + return klass; + } +} +static VALUE +vm_check_if_module(ID id, VALUE mod) +{ + if (!(__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((mod), (RUBY_T_MODULE)) : (RB_TYPE_P)((mod), (RUBY_T_MODULE)))) { + return 0; + } + else { + return mod; + } +} +static VALUE +declare_under(ID id, VALUE cbase, VALUE c) +{ + rb_set_class_path_string(c, cbase, rb_id2str(id)); + rb_const_set(cbase, id, c); + return c; +} +static VALUE +vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super) +{ + VALUE s = ((flags) & 0x10) ? super : rb_cObject; + VALUE c = declare_under(id, cbase, rb_define_class_id(id, s)); + rb_define_alloc_func(c, rb_get_alloc_func(c)); + rb_class_inherited(s, c); + return c; +} +static VALUE +vm_declare_module(ID id, VALUE cbase) +{ + return declare_under(id, cbase, rb_module_new()); +} +__declspec(noreturn) static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old); +static void +unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old) +{ + VALUE name = rb_id2str(id); + VALUE message = rb_sprintf("%""ll""i" "\v"" is not a %s", + name, type); + VALUE location = rb_const_source_location_at(cbase, id); + if (!RB_NIL_P(location)) { + rb_str_catf(message, "\n%""ll""i" "\v"":%""ll""i" "\v"":" + " previous definition of %""ll""i" "\v"" was here", + rb_ary_entry(location, 0), rb_ary_entry(location, 1), name); + } + rb_exc_raise(rb_exc_new_str(rb_eTypeError, message)); +} +static VALUE +vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super) +{ + VALUE klass; + if (((flags) & 0x10) && !(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((super), (RUBY_T_CLASS)) : (RB_TYPE_P)((super), (RUBY_T_CLASS)))) { + rb_raise(rb_eTypeError, + "superclass must be an instance of Class (given an instance of %""ll""i" "\v"")", + rb_obj_class(super)); + } + vm_check_if_namespace(cbase); + rb_autoload_load(cbase, id); + if ((klass = vm_const_get_under(id, flags, cbase)) != 0) { + if (!vm_check_if_class(id, flags, super, klass)) + unmatched_redefinition("class", cbase, id, klass); + return klass; + } + else { + return vm_declare_class(id, flags, cbase, super); + } +} +static VALUE +vm_define_module(ID id, rb_num_t flags, VALUE cbase) +{ + VALUE mod; + vm_check_if_namespace(cbase); + if ((mod = vm_const_get_under(id, flags, cbase)) != 0) { + if (!vm_check_if_module(id, mod)) + unmatched_redefinition("module", cbase, id, mod); + return mod; + } + else { + return vm_declare_module(id, cbase); + } +} +static VALUE +vm_find_or_create_class_by_id(ID id, + rb_num_t flags, + VALUE cbase, + VALUE super) +{ + rb_vm_defineclass_type_t type = ((rb_vm_defineclass_type_t)(flags) & VM_DEFINECLASS_TYPE_MASK); + switch (type) { + case VM_DEFINECLASS_TYPE_CLASS: + return vm_define_class(id, flags, cbase, super); + case VM_DEFINECLASS_TYPE_SINGLETON_CLASS: + return rb_singleton_class(cbase); + case VM_DEFINECLASS_TYPE_MODULE: + return vm_define_module(id, flags, cbase); + default: + rb_bug("unknown defineclass type: %d", (int)type); + } +} +static rb_method_visibility_t +vm_scope_visibility_get(const rb_execution_context_t *ec) +{ + const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp); + if (!vm_env_cref_by_cref(cfp->ep)) { + return METHOD_VISI_PUBLIC; + } + else { + return CREF_SCOPE_VISI(vm_ec_cref(ec))->method_visi; + } +} +static int +vm_scope_module_func_check(const rb_execution_context_t *ec) +{ + const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp); + if (!vm_env_cref_by_cref(cfp->ep)) { + return 0; + } + else { + return CREF_SCOPE_VISI(vm_ec_cref(ec))->module_func; + } +} +static void +vm_define_method(const rb_execution_context_t *ec, VALUE obj, ID id, VALUE iseqval, int is_singleton) +{ + VALUE klass; + rb_method_visibility_t visi; + rb_cref_t *cref = vm_ec_cref(ec); + if (is_singleton) { + klass = rb_singleton_class(obj); + visi = METHOD_VISI_PUBLIC; + } + else { + klass = CREF_CLASS_FOR_DEFINITION(cref); + visi = vm_scope_visibility_get(ec); + } + if (RB_NIL_P(klass)) { + rb_raise(rb_eTypeError, "no class/module to add method"); + } + rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, visi); + if (!is_singleton && vm_scope_module_func_check(ec)) { + klass = rb_singleton_class(klass); + rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, METHOD_VISI_PUBLIC); + } +} +static VALUE +vm_invokeblock_i(struct rb_execution_context_struct *ec, + struct rb_control_frame_struct *reg_cfp, + struct rb_calling_info *calling) +{ + const struct rb_callinfo *ci = calling->ci; + VALUE block_handler = VM_CF_BLOCK_HANDLER((((reg_cfp)))); + if (block_handler == 0) { + rb_vm_localjump_error("no block given (yield)", ((VALUE)RUBY_Qnil), 0); + } + else { + return vm_invoke_block(ec, (((reg_cfp))), calling, ci, 0, block_handler); + } +} +static const struct rb_callcache * +vm_search_method_wrap(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv) +{ + return vm_search_method((VALUE)reg_cfp->iseq, cd, recv); +} +static const struct rb_callcache * +vm_search_invokeblock(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv) +{ + static const struct rb_callcache cc = { + .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), + .klass = 0, + .cme_ = 0, + .call_ = vm_invokeblock_i, + .aux_ = {0}, + }; + return &cc; +} +#define mexp_search_method vm_search_method_wrap +#define mexp_search_super vm_search_super_method +#define mexp_search_invokeblock vm_search_invokeblock +static +VALUE +vm_sendish( + struct rb_execution_context_struct *ec, + struct rb_control_frame_struct *reg_cfp, + struct rb_call_data *cd, + VALUE block_handler, + const struct rb_callcache *(*method_explorer)(const struct rb_control_frame_struct *cfp, struct rb_call_data *cd, VALUE recv) +) { + VALUE val = ((VALUE)RUBY_Qundef); + const struct rb_callinfo *ci = cd->ci; + const struct rb_callcache *cc; + int argc = vm_ci_argc(ci); + VALUE recv = (*(((((reg_cfp)->sp)))-(argc)-1)); + struct rb_calling_info calling = { + .block_handler = block_handler, + .kw_splat = (vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit)) > 0, + .recv = recv, + .argc = argc, + .ci = ci, + }; + calling.cc = cc = method_explorer((((reg_cfp))), cd, recv); + val = vm_cc_call(cc)(ec, (((reg_cfp))), &calling); + if (val != ((VALUE)RUBY_Qundef)) { + return val; + } + else { + do { (reg_cfp) = ec->cfp; } while (0); + } + if (((((reg_cfp)))->iseq)->body->catch_except_p) { + VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH); + return rb_vm_exec(ec, 1); + } + else if ((val = mjit_exec(ec)) == ((VALUE)RUBY_Qundef)) { + VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH); + return rb_vm_exec(ec, 0); + } + else { + return val; + } +} +VALUE rb_nil_to_s(VALUE); +VALUE rb_true_to_s(VALUE); +VALUE rb_false_to_s(VALUE); +VALUE rb_int_to_s(int argc, VALUE *argv, VALUE x); +VALUE rb_fix_to_s(VALUE); +VALUE rb_mod_to_s(VALUE); +VALUE rb_mod_name(VALUE); +static VALUE +vm_objtostring(const rb_iseq_t *iseq, VALUE recv, CALL_DATA cd) +{ + const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv); + switch (((int)rb_type(recv))) { + case RUBY_T_STRING: + return recv; + case RUBY_T_SYMBOL: + if (check_cfunc(vm_cc_cme(cc), rb_sym_to_s)) { + return rb_sym2str(recv); + } + break; + case RUBY_T_MODULE: + case RUBY_T_CLASS: + if (check_cfunc(vm_cc_cme(cc), rb_mod_to_s)) { + VALUE val = rb_mod_name(recv); + if (val == ((VALUE)RUBY_Qnil)) { + val = rb_mod_to_s(recv); + } + return val; + } + break; + case RUBY_T_NIL: + if (check_cfunc(vm_cc_cme(cc), rb_nil_to_s)) { + return rb_nil_to_s(recv); + } + break; + case RUBY_T_TRUE: + if (check_cfunc(vm_cc_cme(cc), rb_true_to_s)) { + return rb_true_to_s(recv); + } + break; + case RUBY_T_FALSE: + if (check_cfunc(vm_cc_cme(cc), rb_false_to_s)) { + return rb_false_to_s(recv); + } + break; + case RUBY_T_FIXNUM: + if (check_cfunc(vm_cc_cme(cc), rb_int_to_s)) { + return rb_fix_to_s(recv); + } + break; + } + return ((VALUE)RUBY_Qundef); +} +static VALUE +vm_opt_str_freeze(VALUE str, int bop, ID id) +{ + if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) { + return str; + } + else { + return ((VALUE)RUBY_Qundef); + } +} +#define id_cmp idCmp +static VALUE +vm_opt_newarray_max(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr) +{ + if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) { + if (num == 0) { + return ((VALUE)RUBY_Qnil); + } + else { + struct cmp_opt_data cmp_opt = { 0, 0 }; + VALUE result = *ptr; + rb_snum_t i = num - 1; + while (i-- > 0) { + const VALUE v = *++ptr; + if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Integer)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Integer)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Integer)), rb_method_basic_definition_p(rb_cInteger, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Integer))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : (((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((v)), (RUBY_T_STRING)) : (RB_TYPE_P)(((v)), (RUBY_T_STRING))) && rb_class_of(v) == rb_cString) && ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((result)), (RUBY_T_STRING)) : (RB_TYPE_P)(((result)), (RUBY_T_STRING))) && rb_class_of(result) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), rb_method_basic_definition_p(rb_cString, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), rb_method_basic_definition_p(rb_cFloat, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) > 0) { + result = v; + } + } + return result; + } + } + else { + return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMax, 0, ((void*)0), 0); + } +} +static VALUE +vm_opt_newarray_min(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr) +{ + if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) { + if (num == 0) { + return ((VALUE)RUBY_Qnil); + } + else { + struct cmp_opt_data cmp_opt = { 0, 0 }; + VALUE result = *ptr; + rb_snum_t i = num - 1; + while (i-- > 0) { + const VALUE v = *++ptr; + if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Integer)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Integer)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Integer)), rb_method_basic_definition_p(rb_cInteger, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Integer))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : (((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((v)), (RUBY_T_STRING)) : (RB_TYPE_P)(((v)), (RUBY_T_STRING))) && rb_class_of(v) == rb_cString) && ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((result)), (RUBY_T_STRING)) : (RB_TYPE_P)(((result)), (RUBY_T_STRING))) && rb_class_of(result) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), rb_method_basic_definition_p(rb_cString, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), rb_method_basic_definition_p(rb_cFloat, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) < 0) { + result = v; + } + } + return result; + } + } + else { + return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMin, 0, ((void*)0), 0); + } +} +#undef id_cmp +#define IMEMO_CONST_CACHE_SHAREABLE IMEMO_FL_USER0 +static inline _Bool +vm_inlined_ic_hit_p(VALUE flags, VALUE value, const rb_cref_t *ic_cref, rb_serial_t ic_serial, const VALUE *reg_ep) +{ + if (ic_serial == (ruby_vm_global_constant_state) && + ((flags & ((VALUE)RUBY_FL_USER4)) || rb_ractor_main_p())) { + ((void)0); + return (ic_cref == ((void*)0) || + ic_cref == vm_get_cref(reg_ep)); + } + return 0; +} +static _Bool +vm_ic_hit_p(const struct iseq_inline_constant_cache_entry *ice, const VALUE *reg_ep) +{ + ((void)0); + return vm_inlined_ic_hit_p(ice->flags, ice->value, ice->ic_cref, (ice)->ic_serial.raw, reg_ep); +} +_Bool +rb_vm_ic_hit_p(IC ic, const VALUE *reg_ep) +{ + return ic->entry && vm_ic_hit_p(ic->entry, reg_ep); +} +static void +vm_ic_update(const rb_iseq_t *iseq, IC ic, VALUE val, const VALUE *reg_ep) +{ + struct iseq_inline_constant_cache_entry *ice = (struct iseq_inline_constant_cache_entry *)rb_imemo_new(imemo_constcache, 0, 0, 0, 0); + rb_obj_write((VALUE)(ice), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ice->value)) unaligned_member_access_result = ((VALUE *)(&ice->value)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(val), "../ruby-3.1.5/vm_insnhelper.c", 4970); + ice->ic_cref = vm_get_const_key_cref(reg_ep); + (ice)->ic_serial.raw = ((ruby_vm_global_constant_state) - ruby_vm_const_missing_count); + if (rb_ractor_shareable_p(val)) ice->flags |= ((VALUE)RUBY_FL_USER4); + ruby_vm_const_missing_count = 0; + rb_obj_write((VALUE)(iseq), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&ic->entry)) unaligned_member_access_result = ((VALUE *)(&ic->entry)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(ice), "../ruby-3.1.5/vm_insnhelper.c", 4975); +} +static VALUE +vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is) +{ + rb_thread_t *th = rb_ec_thread_ptr(ec); + rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1); + again: + if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) { + return is->once.value; + } + else if (is->once.running_thread == ((void*)0)) { + VALUE val; + is->once.running_thread = th; + val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is); + rb_obj_write((VALUE)(ec->cfp->iseq), __extension__({ +#pragma clang diagnostic push + ; +#pragma clang diagnostic ignored "-Waddress-of-packed-member" + ; __typeof__((VALUE *)(&is->once.value)) unaligned_member_access_result = ((VALUE *)(&is->once.value)); +#pragma clang diagnostic pop + ; unaligned_member_access_result; }), (VALUE)(val), "../ruby-3.1.5/vm_insnhelper.c", 4997); + is->once.running_thread = RUNNING_THREAD_ONCE_DONE; + return val; + } + else if (is->once.running_thread == th) { + return vm_once_exec((VALUE)iseq); + } + else { + rb_vm_check_ints(ec); + rb_thread_schedule(); + goto again; + } +} +static OFFSET +vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key) +{ + switch (__extension__({ VALUE arg_obj = (key); RB_SPECIAL_CONST_P(arg_obj) ? -1 : (int)RB_BUILTIN_TYPE(arg_obj); })) { + case -1: + case RUBY_T_FLOAT: + case RUBY_T_SYMBOL: + case RUBY_T_BIGNUM: + case RUBY_T_STRING: + if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQQ)]&((1 << 6) | (1 << 0) | (1 << 1) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 2))) == 0), 1)))) { + st_data_t val; + if (RB_FLOAT_TYPE_P(key)) { + double kval = rb_float_value_inline(key); + if (!(__builtin_choose_expr ( __builtin_types_compatible_p (__typeof__ (kval), double), __fpclassify(kval), __builtin_choose_expr ( __builtin_types_compatible_p (__typeof__ (kval), float), __fpclassifyf(kval), __builtin_choose_expr ( __builtin_types_compatible_p (__typeof__ (kval), long double), __fpclassifyl(kval), (__builtin_trap(),0)))) == (0x0100 | 0x0400)) && modf(kval, &kval) == 0.0) { + key = (((kval) < (2147483647L / 2) + 1) && ((kval) >= ((-2147483647L -1L) / 2))) ? RB_INT2FIX((long)kval) : rb_dbl2big(kval); + } + } + if (rb_hash_stlike_lookup(hash, key, &val)) { + return rb_fix2long((VALUE)val); + } + else { + return else_offset; + } + } + } + return 0; +} +__declspec(noreturn) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *); +static void +vm_stack_consistency_error(const rb_execution_context_t *ec, + const rb_control_frame_t *cfp, + const VALUE *bp) +{ + const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack); + const ptrdiff_t nbp = ((bp) - (ec)->vm_stack); + static const char stack_consistency_error[] = + "Stack consistency error (sp: %""t""d"", bp: %""t""d"")"; + VALUE mesg = rb_sprintf(stack_consistency_error, nsp, nbp); + ((__builtin_constant_p("\n") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), ("\n"))); + rb_str_append(mesg, rb_iseq_disasm(cfp->iseq)); + rb_exc_fatal(rb_exc_new_str(rb_eFatal, mesg)); +} +static VALUE +vm_opt_plus(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) { + return rb_fix_plus_fix(recv, obj); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj)); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj)); + } + else if (RBASIC_CLASS(recv) == rb_cString && + RBASIC_CLASS(obj) == rb_cString && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) { + return rb_str_opt_plus(recv, obj); + } + else if (RBASIC_CLASS(recv) == rb_cArray && + RBASIC_CLASS(obj) == rb_cArray && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) { + return rb_ary_plus(recv, obj); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_minus(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) { + return rb_fix_minus_fix(recv, obj); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj)); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj)); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_mult(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) { + return rb_fix_mul_fix(recv, obj); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj)); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj)); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_div(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) { + return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) { + return rb_flo_div_flo(recv, obj); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) { + return rb_flo_div_flo(recv, obj); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_mod(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) { + return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj))); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) { + return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj))); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +VALUE +rb_vm_opt_mod(VALUE recv, VALUE obj) +{ + return vm_opt_mod(recv, obj); +} +static VALUE +vm_opt_neq(const rb_iseq_t *iseq, CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj) +{ + if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not_equal)) { + VALUE val = opt_equality(iseq, recv, obj, cd_eq); + if (val != ((VALUE)RUBY_Qundef)) { + return RB_TEST(val) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue); + } + } + return ((VALUE)RUBY_Qundef); +} +static VALUE +vm_opt_lt(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) { + return ((( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )recv < ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) { + return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) { + ; + return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_le(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) { + return ((( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )recv <= ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) { + return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) { + ; + return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_gt(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) { + return ((( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )recv > ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) { + return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) { + ; + return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_ge(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) { + return ((( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )recv >= ( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" + long long +#pragma clang diagnostic pop + )obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (FLONUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) { + return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cFloat && + RBASIC_CLASS(obj) == rb_cFloat && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) { + ; + return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse)); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_ltlt(VALUE recv, VALUE obj) +{ + if (RB_SPECIAL_CONST_P(recv)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cString && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) { + return rb_str_concat(recv, obj); + } + else if (RBASIC_CLASS(recv) == rb_cArray && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) { + return rb_ary_push(recv, obj); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_and(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) { + return (recv & obj) | 1; + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_or(VALUE recv, VALUE obj) +{ + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) { + return recv | obj; + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_aref(VALUE recv, VALUE obj) +{ + if (RB_SPECIAL_CONST_P(recv)) { + if (FIXNUM_2_P(recv, obj) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 0))) == 0), 1)))) { + return rb_fix_aref(recv, obj); + } + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cArray && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) { + if (RB_FIXNUM_P(obj)) { + return rb_ary_entry_internal(recv, rb_fix2long(obj)); + } + else { + return rb_ary_aref1(recv, obj); + } + } + else if (RBASIC_CLASS(recv) == rb_cHash && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) { + return rb_hash_aref(recv, obj); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_aset(VALUE recv, VALUE obj, VALUE set) +{ + if (RB_SPECIAL_CONST_P(recv)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cArray && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) && + RB_FIXNUM_P(obj)) { + rb_ary_store(recv, rb_fix2long(obj), set); + return set; + } + else if (RBASIC_CLASS(recv) == rb_cHash && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) { + rb_hash_aset(recv, obj, set); + return set; + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_aref_with(VALUE recv, VALUE key) +{ + if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) && + rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) { + return rb_hash_aref(recv, key); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_aset_with(VALUE recv, VALUE key, VALUE val) +{ + if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) && + rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) { + return rb_hash_aset(recv, key, val); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_length(VALUE recv, int bop) +{ + if (RB_SPECIAL_CONST_P(recv)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cString && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) { + if (bop == BOP_EMPTY_P) { + return rb_long2num_inline(RSTRING_LEN(recv)); + } + else { + return rb_str_length(recv); + } + } + else if (RBASIC_CLASS(recv) == rb_cArray && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) { + return rb_long2num_inline(rb_array_len(recv)); + } + else if (RBASIC_CLASS(recv) == rb_cHash && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) { + return __builtin_choose_expr( __builtin_constant_p(RHASH_SIZE(recv)), ((VALUE)(RHASH_SIZE(recv))) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(RHASH_SIZE(recv))); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_empty_p(VALUE recv) +{ + switch (vm_opt_length(recv, BOP_EMPTY_P)) { + case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef); + case __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)): return ((VALUE)RUBY_Qtrue); + default: return ((VALUE)RUBY_Qfalse); + } +} +VALUE rb_false(VALUE obj); +static VALUE +vm_opt_nil_p(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv) +{ + if (RB_NIL_P(recv) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_NIL_P)]&((1 << 9))) == 0), 1)))) { + return ((VALUE)RUBY_Qtrue); + } + else if (vm_method_cfunc_is(iseq, cd, recv, rb_false)) { + return ((VALUE)RUBY_Qfalse); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +fix_succ(VALUE x) +{ + switch (x) { + case ~0UL: + return __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)); + case ((~0UL)>>(int)(1)): + return rb_uint2big(1UL << (4 * 8 - 2)); + default: + return x + 2; + } +} +static VALUE +vm_opt_succ(VALUE recv) +{ + if (RB_FIXNUM_P(recv) && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) { + return fix_succ(recv); + } + else if (RB_SPECIAL_CONST_P(recv)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cString && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) { + return rb_str_succ(recv); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_not(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv) +{ + if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not)) { + return RB_TEST(recv) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +static VALUE +vm_opt_regexpmatch2(VALUE recv, VALUE obj) +{ + if (RB_SPECIAL_CONST_P(recv)) { + return ((VALUE)RUBY_Qundef); + } + else if (RBASIC_CLASS(recv) == rb_cString && + rb_class_of(obj) == rb_cRegexp && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) { + return rb_reg_match(obj, recv); + } + else if (RBASIC_CLASS(recv) == rb_cRegexp && + ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) { + return rb_reg_match(recv, obj); + } + else { + return ((VALUE)RUBY_Qundef); + } +} +rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos); +__declspec(noinline) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp); +static inline void +vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc, + rb_event_flag_t pc_events, rb_event_flag_t target_event, + rb_hook_list_t *global_hooks, rb_hook_list_t *local_hooks, VALUE val) +{ + rb_event_flag_t event = pc_events & target_event; + VALUE self = (((((reg_cfp)))->self)); + ((void)0); + if (event & global_hooks->events) { + reg_cfp->pc++; + vm_dtrace(event, ec); + rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0); + reg_cfp->pc--; + } + if (local_hooks != ((void*)0)) { + if (event & local_hooks->events) { + reg_cfp->pc++; + rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0); + reg_cfp->pc--; + } + } +} +_Bool +rb_vm_opt_cfunc_p(CALL_CACHE cc, int insn) +{ + switch (insn) { + case YARVINSN_opt_eq: + return check_cfunc(vm_cc_cme(cc), rb_obj_equal); + case YARVINSN_opt_nil_p: + return check_cfunc(vm_cc_cme(cc), rb_false); + case YARVINSN_opt_not: + return check_cfunc(vm_cc_cme(cc), rb_obj_not); + default: + return 0; + } +} +#define VM_TRACE_HOOK(target_event,val) do { if ((pc_events & (target_event)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (target_event), global_hooks, local_hooks, (val)); } } while (0) +static void +vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp) +{ + const VALUE *pc = reg_cfp->pc; + rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0020| 0x0040| 0x0100| 0x0200| 0x010000| 0x020000); + rb_event_flag_t global_events = enabled_flags; + if (enabled_flags == 0 && ruby_vm_event_local_num == 0) { + return; + } + else { + const rb_iseq_t *iseq = reg_cfp->iseq; + size_t pos = pc - iseq->body->iseq_encoded; + rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos); + rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks; + rb_event_flag_t iseq_local_events = local_hooks != ((void*)0) ? local_hooks->events : 0; + rb_hook_list_t *bmethod_local_hooks = ((void*)0); + rb_event_flag_t bmethod_local_events = 0; + _Bool bmethod_frame = VM_FRAME_BMETHOD_P(reg_cfp); + enabled_flags |= iseq_local_events; + ((void)0); + if (bmethod_frame) { + const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp); + ((void)0); + bmethod_local_hooks = me->def->body.bmethod.hooks; + if (bmethod_local_hooks) { + bmethod_local_events = bmethod_local_hooks->events; + } + } + if ((pc_events & enabled_flags) == 0 && !bmethod_frame) { + return; + } + else if (ec->trace_arg != ((void*)0)) { + return; + } + else { + rb_hook_list_t *global_hooks = rb_ec_ractor_hooks(ec); + rb_event_flag_t bmethod_events = global_events | bmethod_local_events; + if (0) { + ruby_debug_printf("vm_trace>>%4d (%4x) - %s:%d %s\n", + (int)pos, + (int)pc_events, + RSTRING_PTR(rb_iseq_path(iseq)), + (int)rb_iseq_line_no(iseq, pos), + RSTRING_PTR(rb_iseq_label(iseq))); + } + ((void)0); + ((void)0); + if ((pc_events & 0x0100) && bmethod_frame && (bmethod_events & 0x0008)) { + vm_trace_hook(ec, reg_cfp, pc, 0x0008, 0x0008, global_hooks, bmethod_local_hooks, ((VALUE)RUBY_Qundef)); + } + do { if ((pc_events & (0x0002 | 0x0008 | 0x0100)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0002 | 0x0008 | 0x0100), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0); + do { if ((pc_events & (0x0001)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0001), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0); + do { if ((pc_events & (0x010000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x010000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0); + do { if ((pc_events & (0x020000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x020000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0); + do { if ((pc_events & (0x0004 | 0x0010 | 0x0200)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0004 | 0x0010 | 0x0200), global_hooks, local_hooks, ((*(((((reg_cfp)->sp)))-(0)-1)))); } } while (0); + if ((pc_events & 0x0200) && bmethod_frame && (bmethod_events & 0x0010)) { + vm_trace_hook(ec, reg_cfp, pc, 0x0010, 0x0010, global_hooks, bmethod_local_hooks, (*(((((reg_cfp)->sp)))-(0)-1))); + } + } + } +} +#undef VM_TRACE_HOOK +void Init_vm_stack_canary(void) { } +static VALUE +builtin_invoker0(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr0_t)(rb_execution_context_t *ec, VALUE self); + return (*(rb_invoke_funcptr0_t)funcptr)(ec, self); +} +static VALUE +builtin_invoker1(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr1_t)(rb_execution_context_t *ec, VALUE self, VALUE v1); + return (*(rb_invoke_funcptr1_t)funcptr)(ec, self, argv[0]); +} +static VALUE +builtin_invoker2(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr2_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2); + return (*(rb_invoke_funcptr2_t)funcptr)(ec, self, argv[0], argv[1]); +} +static VALUE +builtin_invoker3(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr3_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3); + return (*(rb_invoke_funcptr3_t)funcptr)(ec, self, argv[0], argv[1], argv[2]); +} +static VALUE +builtin_invoker4(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr4_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4); + return (*(rb_invoke_funcptr4_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3]); +} +static VALUE +builtin_invoker5(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr5_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5); + return (*(rb_invoke_funcptr5_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4]); +} +static VALUE +builtin_invoker6(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr6_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6); + return (*(rb_invoke_funcptr6_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]); +} +static VALUE +builtin_invoker7(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr7_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7); + return (*(rb_invoke_funcptr7_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]); +} +static VALUE +builtin_invoker8(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr8_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8); + return (*(rb_invoke_funcptr8_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]); +} +static VALUE +builtin_invoker9(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr9_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9); + return (*(rb_invoke_funcptr9_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]); +} +static VALUE +builtin_invoker10(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr10_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10); + return (*(rb_invoke_funcptr10_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]); +} +static VALUE +builtin_invoker11(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr11_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11); + return (*(rb_invoke_funcptr11_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]); +} +static VALUE +builtin_invoker12(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr12_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12); + return (*(rb_invoke_funcptr12_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]); +} +static VALUE +builtin_invoker13(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr13_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13); + return (*(rb_invoke_funcptr13_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]); +} +static VALUE +builtin_invoker14(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr14_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14); + return (*(rb_invoke_funcptr14_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]); +} +static VALUE +builtin_invoker15(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr) +{ + typedef VALUE (*rb_invoke_funcptr15_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14, VALUE v15); + return (*(rb_invoke_funcptr15_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]); +} +typedef VALUE (*builtin_invoker)(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr); +static builtin_invoker +lookup_builtin_invoker(int argc) +{ + static const builtin_invoker invokers[] = { + builtin_invoker0, + builtin_invoker1, + builtin_invoker2, + builtin_invoker3, + builtin_invoker4, + builtin_invoker5, + builtin_invoker6, + builtin_invoker7, + builtin_invoker8, + builtin_invoker9, + builtin_invoker10, + builtin_invoker11, + builtin_invoker12, + builtin_invoker13, + builtin_invoker14, + builtin_invoker15, + }; + return invokers[argc]; +} +static inline VALUE +invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const struct rb_builtin_function* bf, const VALUE *argv) +{ + const _Bool canary_p = reg_cfp->iseq->body->builtin_inline_p; + if (canary_p) {} else {}; + VALUE ret = (*lookup_builtin_invoker(bf->argc))(ec, reg_cfp->self, argv, (rb_insn_func_t)bf->func_ptr); + if (canary_p) {(void)(YARVINSN_invokebuiltin);}; + return ret; +} +static VALUE +vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv) +{ + return invoke_bf(ec, cfp, bf, argv); +} +static VALUE +vm_invoke_builtin_delegate(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function *bf, unsigned int start_index) +{ + if (0) { + fputs("vm_invoke_builtin_delegate: passing -> ", (__acrt_iob_func(2))); + for (int i=0; iargc; i++) { + ruby_debug_printf(":%s ", rb_id2name(cfp->iseq->body->local_table[i+start_index])); + } + ruby_debug_printf("\n" "%s %s(%d):%p\n", __func__, bf->name, bf->argc, bf->func_ptr); + } + if (bf->argc == 0) { + return invoke_bf(ec, cfp, bf, ((void*)0)); + } + else { + const VALUE *argv = cfp->ep - cfp->iseq->body->local_table_size - ( 3) + 1 + start_index; + return invoke_bf(ec, cfp, bf, argv); + } +} +VALUE +rb_vm_lvar_exposed(rb_execution_context_t *ec, int index) +{ + const rb_control_frame_t *cfp = ec->cfp; + return cfp->ep[index]; +} +struct local_var_list { + VALUE tbl; +}; +static inline VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat); +static inline VALUE vm_yield_with_cref(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat, const rb_cref_t *cref, int is_lambda); +static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat); +static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat); +static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args); +VALUE rb_vm_exec(rb_execution_context_t *ec, _Bool mjit_enable_p); +static void vm_set_eval_stack(rb_execution_context_t * th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block); +static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars); +static VALUE rb_eUncaughtThrow; +static ID id_result, id_tag, id_value; +#define id_mesg idMesg +typedef enum call_type { + CALL_PUBLIC, + CALL_FCALL, + CALL_VCALL, + CALL_PUBLIC_KW, + CALL_FCALL_KW, + CALL_TYPE_MAX +} call_type; +static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope); +static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, const VALUE *argv); +static inline void +stack_check(rb_execution_context_t *ec) +{ + if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) && + rb_ec_stack_check(ec)) { + ((ec)->raised_flag |= (RAISED_STACKOVERFLOW)); + rb_ec_stack_overflow(ec, 0); + } +} +static void +raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, + enum method_missing_reason last_call_status) +{ + VALUE exc = rb_eNoMethodError; + VALUE format = 0; + if ((__builtin_expect(!!(argc == 0), 0))) { + rb_raise(rb_eArgError, "no method name given"); + } + else if ((__builtin_expect(!!(!RB_SYMBOL_P(argv[0])), 0))) { + const VALUE e = rb_eArgError; + rb_raise(e, "method name must be a Symbol but %""ll""i" "\v"" is given", + rb_obj_class(argv[0])); + } + stack_check(ec); + if (last_call_status & MISSING_PRIVATE) { + format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1)); + } + else if (last_call_status & MISSING_PROTECTED) { + format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1)); + } + else if (last_call_status & MISSING_VCALL) { + format = rb_fstring_new(("undefined local variable or method `%s' for %s%s%s"), (sizeof("undefined local variable or method `%s' for %s%s%s" "") - 1)); + exc = rb_eNameError; + } + else if (last_call_status & MISSING_SUPER) { + format = rb_fstring_new(("super: no superclass method `%s' for %s%s%s"), (sizeof("super: no superclass method `%s' for %s%s%s" "") - 1)); + } + { + exc = rb_make_no_method_exception(exc, format, obj, argc, argv, + last_call_status & (MISSING_FCALL|MISSING_VCALL)); + if (!(last_call_status & MISSING_MISSING)) { + rb_vm_pop_cfunc_frame(); + } + rb_exc_raise(exc); + } +} +static void +vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, + VALUE obj, int call_status) +{ + vm_passed_block_handler_set(ec, 0); + raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING); +} +static inline VALUE +method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat) +{ + VALUE *nargv, result, work, klass; + VALUE block_handler = vm_passed_block_handler(ec); + const rb_callable_method_entry_t *me; + ec->method_missing_reason = call_status; + if (id == idMethodMissing) { + goto missing; + } + nargv = ((VALUE *) (((size_t)(argc + 1) < 1024 / sizeof(VALUE)) ? ((work) = 0, __builtin_alloca(((argc + 1) * sizeof(VALUE)))) : rb_alloc_tmp_buffer2(&(work), (argc + 1), sizeof(VALUE)))); + nargv[0] = rb_id2sym(id); + memcpy((nargv + 1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))); + ++argc; + argv = nargv; + klass = rb_class_of(obj); + if (!klass) goto missing; + me = rb_callable_method_entry(klass, idMethodMissing); + if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing; + vm_passed_block_handler_set(ec, block_handler); + result = rb_vm_call_kw(ec, obj, idMethodMissing, argc, argv, me, kw_splat); + if (work) rb_free_tmp_buffer(&(work)); + return result; + missing: + raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING); + __builtin_unreachable(); +} +static rb_control_frame_t * +vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp) +{ + if (VM_FRAME_RUBYFRAME_P(cfp)) { + return (rb_control_frame_t *)cfp; + } + cfp = ((cfp)+1); + while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) { + if (VM_FRAME_RUBYFRAME_P(cfp)) { + return (rb_control_frame_t *)cfp; + } + if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) { + break; + } + cfp = ((cfp)+1); + } + return 0; +} +static void +rb_vm_pop_cfunc_frame(void) +{ + rb_execution_context_t *ec = rb_current_execution_context(1); + rb_control_frame_t *cfp = ec->cfp; + const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(cfp); + do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, cfp->self, me->def->original_id, me->called_id, me->owner, ((VALUE)RUBY_Qnil), 0); } } while (0); + do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0); + vm_pop_frame(ec, cfp, cfp->ep); +} +static VALUE +vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 0); +} +static VALUE +vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 1); +} +static VALUE +vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 2); +} +static VALUE +vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 3); +} +static VALUE +vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 4); +} +static VALUE +vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 5); +} +static VALUE +vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 0); +} +static VALUE +vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 1); +} +static VALUE +vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 2); +} +static VALUE +vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 3); +} +static VALUE +vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 4); +} +static VALUE +vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 5); +} +static VALUE +vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 0); +} +static VALUE +vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 1); +} +static VALUE +vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 2); +} +static VALUE +vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 3); +} +static VALUE +vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 4); +} +static VALUE +vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 5); +} +static VALUE +vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 0); +} +static VALUE +vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 1); +} +static VALUE +vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 2); +} +static VALUE +vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 3); +} +static VALUE +vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 4); +} +static VALUE +vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) +{ + ((void)0); + return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 5); +} +static const vm_call_handler vm_call_iseq_handlers[][6] = { + { + vm_call_iseq_setup_normal_0start_0params_0locals, + vm_call_iseq_setup_normal_0start_0params_1locals, + vm_call_iseq_setup_normal_0start_0params_2locals, + vm_call_iseq_setup_normal_0start_0params_3locals, + vm_call_iseq_setup_normal_0start_0params_4locals, + vm_call_iseq_setup_normal_0start_0params_5locals, + }, + { + vm_call_iseq_setup_normal_0start_1params_0locals, + vm_call_iseq_setup_normal_0start_1params_1locals, + vm_call_iseq_setup_normal_0start_1params_2locals, + vm_call_iseq_setup_normal_0start_1params_3locals, + vm_call_iseq_setup_normal_0start_1params_4locals, + vm_call_iseq_setup_normal_0start_1params_5locals, + }, + { + vm_call_iseq_setup_normal_0start_2params_0locals, + vm_call_iseq_setup_normal_0start_2params_1locals, + vm_call_iseq_setup_normal_0start_2params_2locals, + vm_call_iseq_setup_normal_0start_2params_3locals, + vm_call_iseq_setup_normal_0start_2params_4locals, + vm_call_iseq_setup_normal_0start_2params_5locals, + }, + { + vm_call_iseq_setup_normal_0start_3params_0locals, + vm_call_iseq_setup_normal_0start_3params_1locals, + vm_call_iseq_setup_normal_0start_3params_2locals, + vm_call_iseq_setup_normal_0start_3params_3locals, + vm_call_iseq_setup_normal_0start_3params_4locals, + vm_call_iseq_setup_normal_0start_3params_5locals, + }, +}; +static inline vm_call_handler +vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size) +{ + if ((__builtin_expect(!!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit)), 0))) { + return &vm_call_iseq_setup_tailcall_0start; + } + else if (0) { + return &vm_call_iseq_setup_normal_0start; + } + else if (param_size <= 3 && local_size <= 5) { + ((void)0); + return vm_call_iseq_handlers[param_size][local_size]; + } + else { + return &vm_call_iseq_setup_normal_0start; + } +} + diff --git a/clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/ruby/config.h b/clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/ruby/config.h new file mode 100644 index 00000000000..144aabbd0ca --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/aarch64-mingw-ucrt/ruby/config.h @@ -0,0 +1,312 @@ +#ifndef INCLUDE_RUBY_CONFIG_H +#define INCLUDE_RUBY_CONFIG_H 1 +/* confdefs.h */ +#define HAVE_STDIO_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_WCHAR_H 1 +#define STDC_HEADERS 1 +#define _ALL_SOURCE 1 +#define _DARWIN_C_SOURCE 1 +#define _GNU_SOURCE 1 +#define _HPUX_ALT_XOPEN_SOCKET_API 1 +#define _NETBSD_SOURCE 1 +#define _OPENBSD_SOURCE 1 +#define _POSIX_PTHREAD_SEMANTICS 1 +#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1 +#define __STDC_WANT_IEC_60559_BFP_EXT__ 1 +#define __STDC_WANT_IEC_60559_DFP_EXT__ 1 +#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1 +#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1 +#define __STDC_WANT_LIB_EXT2__ 1 +#define __STDC_WANT_MATH_SPEC_FUNCS__ 1 +#define _TANDEM_SOURCE 1 +#define __EXTENSIONS__ 1 +#define RUBY_MSVCRT_VERSION 140 +#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)") +#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop") +#define HAVE_STMT_AND_DECL_IN_EXPR 1 +#define HAVE_TYPE_NET_LUID 1 +#define HAVE__GMTIME64_S 1 +#define HAVE__WFREOPEN_S 1 +#define HAVE_DIRENT_H 1 +#define HAVE__BOOL 1 +#define HAVE_STDBOOL_H 1 +#define HAVE_DIRECT_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_IEEEFP_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_LOCALE_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_PROCESS_H 1 +#define HAVE_SETJMPEX_H 1 +#define HAVE_STDALIGN_H 1 +#define HAVE_SYS_FCNTL_H 1 +#define HAVE_SYS_FILE_H 1 +#define HAVE_SYS_UTIME_H 1 +#define HAVE_TIME_H 1 +#define HAVE_GMP_H 1 +#define HAVE_LIBGMP 1 +#define _FILE_OFFSET_BITS 64 +#define HAVE_TYPEOF 1 +#define restrict __restrict__ +#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 +#define SIZEOF___INT128 16 +#define SIZEOF_OFF_T 8 +#define SIZEOF_VOIDP 8 +#define SIZEOF_FLOAT 4 +#define SIZEOF_DOUBLE 8 +#define SIZEOF_TIME_T 8 +#define SIZEOF_CLOCK_T 4 +#define PACKED_STRUCT(x) x __attribute__((packed)) +#define USE_UNALIGNED_MEMBER_ACCESS 1 +#define PRI_LL_PREFIX "ll" +#define HAVE_PID_T 1 +#define rb_pid_t pid_t +#define SIGNEDNESS_OF_PID_T -1 +#define PIDT2NUM(v) LL2NUM(v) +#define NUM2PIDT(v) NUM2LL(v) +#define PRI_PIDT_PREFIX PRI_LL_PREFIX +#define rb_uid_t int +#define SIGNEDNESS_OF_UID_T -1 +#define UIDT2NUM(v) INT2NUM(v) +#define NUM2UIDT(v) NUM2INT(v) +#define PRI_UIDT_PREFIX PRI_INT_PREFIX +#define rb_gid_t int +#define SIGNEDNESS_OF_GID_T -1 +#define GIDT2NUM(v) INT2NUM(v) +#define NUM2GIDT(v) NUM2INT(v) +#define PRI_GIDT_PREFIX PRI_INT_PREFIX +#define HAVE_TIME_T 1 +#define rb_time_t time_t +#define SIGNEDNESS_OF_TIME_T -1 +#define TIMET2NUM(v) LL2NUM(v) +#define NUM2TIMET(v) NUM2LL(v) +#define PRI_TIMET_PREFIX PRI_LL_PREFIX +#define HAVE_DEV_T 1 +#define rb_dev_t dev_t +#define SIGNEDNESS_OF_DEV_T +1 +#define DEVT2NUM(v) UINT2NUM(v) +#define NUM2DEVT(v) NUM2UINT(v) +#define PRI_DEVT_PREFIX PRI_INT_PREFIX +#define HAVE_MODE_T 1 +#define rb_mode_t mode_t +#define SIGNEDNESS_OF_MODE_T +1 +#define MODET2NUM(v) USHORT2NUM(v) +#define NUM2MODET(v) NUM2USHORT(v) +#define PRI_MODET_PREFIX PRI_SHORT_PREFIX +#define rb_rlim_t long +#define SIGNEDNESS_OF_RLIM_T -1 +#define RLIM2NUM(v) LONG2NUM(v) +#define NUM2RLIM(v) NUM2LONG(v) +#define PRI_RLIM_PREFIX PRI_LONG_PREFIX +#define HAVE_OFF_T 1 +#define rb_off_t off_t +#define SIGNEDNESS_OF_OFF_T -1 +#define OFFT2NUM(v) LL2NUM(v) +#define NUM2OFFT(v) NUM2LL(v) +#define PRI_OFFT_PREFIX PRI_LL_PREFIX +#define HAVE_CLOCKID_T 1 +#define rb_clockid_t clockid_t +#define SIGNEDNESS_OF_CLOCKID_T -1 +#define CLOCKID2NUM(v) INT2NUM(v) +#define NUM2CLOCKID(v) NUM2INT(v) +#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX +#define HAVE_VA_ARGS_MACRO 1 +#define HAVE__ALIGNOF 1 +#define CONSTFUNC(x) __attribute__ ((__const__)) x +#define PUREFUNC(x) __attribute__ ((__pure__)) x +#define NORETURN(x) __attribute__ ((__noreturn__)) x +#define DEPRECATED(x) __attribute__ ((__deprecated__)) x +#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x +#define NOINLINE(x) __attribute__ ((__noinline__)) x +#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x +#define NO_SANITIZE(san, x) __attribute__ ((__no_sanitize__(san))) x +#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x +#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x +#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x +#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x +#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x +#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x +#define WEAK(x) __attribute__ ((__weak__)) x +#define HAVE_FUNC_WEAK 1 +#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg))) +#define HAVE_NULLPTR 1 +#define FUNC_STDCALL(x) __attribute__ ((__stdcall__)) x +#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x +#define FUNC_FASTCALL(x) __attribute__ ((__fastcall__)) x +#define FUNC_UNOPTIMIZED(x) __attribute__ ((__optimize__("O0"))) x +#define FUNC_MINIMIZED(x) __attribute__ ((__optimize__("-Os","-fomit-frame-pointer"))) x +#define HAVE_ATTRIBUTE_FUNCTION_ALIAS 1 +#define RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args) type prot __attribute__((alias(#name))); +#define RUBY_ALIAS_FUNCTION_VOID(prot, name, args) RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args) +#define HAVE_GCC_ATOMIC_BUILTINS 1 +#define HAVE_GCC_SYNC_BUILTINS 1 +#define UNREACHABLE __builtin_unreachable() +#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern +#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x +#define RUBY_FUNCTION_NAME_STRING __func__ +#define ENUM_OVER_INT 1 +#define HAVE_DECL_SYS_NERR 1 +#define HAVE_DECL_GETENV 1 +#define SIZEOF_SIZE_T 8 +#define SIZEOF_PTRDIFF_T 8 +#define SIZEOF_DEV_T 4 +#define PRI_SIZE_PREFIX "z" +#define PRI_PTRDIFF_PREFIX "t" +#define HAVE_STRUCT_STAT_ST_RDEV 1 +#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T +#define SIZEOF_STRUCT_STAT_ST_INO 2 +#define SIZEOF_STRUCT_STAT_ST_DEV SIZEOF_DEV_T +#define SIZEOF_STRUCT_STAT_ST_RDEV SIZEOF_DEV_T +#define HAVE_STRUCT_TIMEVAL 1 +#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_LONG +#define TYPEOF_TIMEVAL_TV_SEC long +#define HAVE_STRUCT_TIMESPEC 1 +#define HAVE_STRUCT_TIMEZONE 1 +#define HAVE_RB_FD_INIT 1 +#define HAVE_INT8_T 1 +#define SIZEOF_INT8_T 1 +#define HAVE_UINT8_T 1 +#define SIZEOF_UINT8_T 1 +#define HAVE_INT16_T 1 +#define SIZEOF_INT16_T 2 +#define HAVE_UINT16_T 1 +#define SIZEOF_UINT16_T 2 +#define HAVE_INT32_T 1 +#define SIZEOF_INT32_T 4 +#define HAVE_UINT32_T 1 +#define SIZEOF_UINT32_T 4 +#define HAVE_INT64_T 1 +#define SIZEOF_INT64_T 8 +#define HAVE_UINT64_T 1 +#define SIZEOF_UINT64_T 8 +#define HAVE_INT128_T 1 +#define int128_t __int128 +#define SIZEOF_INT128_T SIZEOF___INT128 +#define HAVE_UINT128_T 1 +#define uint128_t unsigned __int128 +#define SIZEOF_UINT128_T SIZEOF___INT128 +#define HAVE_INTPTR_T 1 +#define SIZEOF_INTPTR_T 8 +#define HAVE_UINTPTR_T 1 +#define SIZEOF_UINTPTR_T 8 +#define PRI_PTR_PREFIX "ll" +#define HAVE_SSIZE_T 1 +#define SIZEOF_SSIZE_T 8 +#define uid_t int +#define gid_t int +#define GETGROUPS_T int +#define HAVE_ALLOCA 1 +#define HAVE_DUP 1 +#define HAVE_DUP2 1 +#define HAVE_ACOSH 1 +#define HAVE_CBRT 1 +#define HAVE_ERF 1 +#define HAVE_FLOCK 1 +#define HAVE_HYPOT 1 +#define HAVE_MEMMOVE 1 +#define HAVE_NAN 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_STRCHR 1 +#define HAVE_STRERROR 1 +#define HAVE_STRSTR 1 +#define HAVE_ISFINITE 1 +#define HAVE_SIGNBIT 1 +#define vfork fork +#define HAVE_ATAN2L 1 +#define HAVE_ATAN2F 1 +#define HAVE_CHSIZE 1 +#define HAVE_CLOCK_GETTIME 1 +#define HAVE_COSH 1 +#define HAVE_FCNTL 1 +#define HAVE_FMOD 1 +#define HAVE_FSYNC 1 +#define HAVE_FTRUNCATE 1 +#define HAVE_FTRUNCATE64 1 +#define HAVE_GETCWD 1 +#define HAVE_GETLOGIN 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_GMTIME_R 1 +#define HAVE_LCHOWN 1 +#define HAVE_LINK 1 +#define HAVE_LLABS 1 +#define HAVE_LOG2 1 +#define HAVE_LSTAT 1 +#define HAVE_MBLEN 1 +#define HAVE_MKTIME 1 +#define HAVE_QSORT_S 1 +#define HAVE_READLINK 1 +#define HAVE_ROUND 1 +#define HAVE_SEEKDIR 1 +#define HAVE_SHUTDOWN 1 +#define HAVE_SINH 1 +#define HAVE_SPAWNV 1 +#define HAVE_SYMLINK 1 +#define HAVE_TANH 1 +#define HAVE_TELLDIR 1 +#define HAVE_TIMES 1 +#define HAVE_TRUNCATE 1 +#define HAVE_TRUNCATE64 1 +#define HAVE_WAITPID 1 +#if !defined __STDC_WANT_LIB_EXT1__ +#define __STDC_WANT_LIB_EXT1__ 1 +#endif /* !defined __STDC_WANT_LIB_EXT1__ */ +#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1 +#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1 +#define HAVE_BUILTIN___BUILTIN_BSWAP16 1 +#define HAVE_BUILTIN___BUILTIN_BSWAP32 1 +#define HAVE_BUILTIN___BUILTIN_BSWAP64 1 +#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1 +#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1 +#define HAVE_BUILTIN___BUILTIN_CLZ 1 +#define HAVE_BUILTIN___BUILTIN_CLZL 1 +#define HAVE_BUILTIN___BUILTIN_CLZLL 1 +#define HAVE_BUILTIN___BUILTIN_CTZ 1 +#define HAVE_BUILTIN___BUILTIN_CTZLL 1 +#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1 +#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1 +#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1 +#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1 +#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1 +#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1 +#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1 +#define HAVE_BUILTIN___BUILTIN_TRAP 1 +#define HAVE_BUILTIN___BUILTIN_EXPECT 1 +#define ATAN2_INF_C99 1 +#define HAVE_CLOCK_GETRES 1 +#define VOID_UNSETENV 1 +#define HAVE_DECL_TZNAME 1 +#define HAVE_TZNAME 1 +#define HAVE_DAYLIGHT 1 +#define NEGATIVE_TIME_T 1 +#define RSHIFT(x,y) ((x)>>(int)(y)) +#define STACK_GROW_DIRECTION -1 +#define COROUTINE_H "coroutine/arm64/Context.h" +#define HAVE_CONST_PAGE_SIZE 0 +#define DLEXT_MAXLEN 3 +#define DLEXT ".so" +#define LIBDIR_BASENAME "lib" +#define EXECUTABLE_EXTS ".exe",".com",".cmd",".bat" +#define RUBY_SETJMP(env) setjmp((env)) +#define RUBY_LONGJMP(env,val) longjmp((env),val) +#define RUBY_JMP_BUF jmp_buf +#define USE_MJIT 1 +#define THREAD_IMPL_H "thread_win32.h" +#define THREAD_IMPL_SRC "thread_win32.c" +#define LOAD_RELATIVE 1 +#define RUBY_PLATFORM "aarch64-mingw-ucrt" +#endif /* INCLUDE_RUBY_CONFIG_H */ diff --git a/clangarm64/include/ruby-3.1.0/ruby.h b/clangarm64/include/ruby-3.1.0/ruby.h new file mode 100644 index 00000000000..789804b7b47 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby.h @@ -0,0 +1,40 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/assert.h b/clangarm64/include/ruby-3.1.0/ruby/assert.h new file mode 100644 index 00000000000..c9f2c3fbef2 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/assert.h @@ -0,0 +1,234 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/atomic.h b/clangarm64/include/ruby-3.1.0/ruby/atomic.h new file mode 100644 index 00000000000..3eb80fbf7d1 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/atomic.h @@ -0,0 +1,890 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward.h b/clangarm64/include/ruby-3.1.0/ruby/backward.h new file mode 100644 index 00000000000..e12f98ac478 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward.h @@ -0,0 +1,71 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/assume.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/assume.h new file mode 100644 index 00000000000..265421df79c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/assume.h @@ -0,0 +1,58 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/attributes.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/attributes.h new file mode 100644 index 00000000000..73acfc9dc0e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/attributes.h @@ -0,0 +1,165 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/bool.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/bool.h new file mode 100644 index 00000000000..f2fa390c80b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/bool.h @@ -0,0 +1,36 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/gcc_version_since.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/gcc_version_since.h new file mode 100644 index 00000000000..00cc40ca569 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/gcc_version_since.h @@ -0,0 +1,37 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/inttypes.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/inttypes.h new file mode 100644 index 00000000000..45460878bc5 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/inttypes.h @@ -0,0 +1,131 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/limits.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/limits.h new file mode 100644 index 00000000000..6f7021e5f4d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/limits.h @@ -0,0 +1,99 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/long_long.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/long_long.h new file mode 100644 index 00000000000..8e6b2743fc4 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/long_long.h @@ -0,0 +1,73 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/r_cast.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/r_cast.h new file mode 100644 index 00000000000..3d0f40fd1e9 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/r_cast.h @@ -0,0 +1,32 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/rmodule.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/rmodule.h new file mode 100644 index 00000000000..53b37831c07 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/rmodule.h @@ -0,0 +1,36 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/stdalign.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/stdalign.h new file mode 100644 index 00000000000..8b491bf5645 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/stdalign.h @@ -0,0 +1,30 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/2/stdarg.h b/clangarm64/include/ruby-3.1.0/ruby/backward/2/stdarg.h new file mode 100644 index 00000000000..08659fee47e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/2/stdarg.h @@ -0,0 +1,69 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/backward/cxxanyargs.hpp b/clangarm64/include/ruby-3.1.0/ruby/backward/cxxanyargs.hpp new file mode 100644 index 00000000000..2414b7ae6d2 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/backward/cxxanyargs.hpp @@ -0,0 +1,700 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/debug.h b/clangarm64/include/ruby-3.1.0/ruby/debug.h new file mode 100644 index 00000000000..c88da9c43d6 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/debug.h @@ -0,0 +1,644 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/defines.h b/clangarm64/include/ruby-3.1.0/ruby/defines.h new file mode 100644 index 00000000000..48184f8a186 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/defines.h @@ -0,0 +1,116 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/digest.h b/clangarm64/include/ruby-3.1.0/ruby/digest.h new file mode 100644 index 00000000000..0d4f0e7cc23 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/digest.h @@ -0,0 +1,72 @@ +/************************************************ + + 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/clangarm64/include/ruby-3.1.0/ruby/encoding.h b/clangarm64/include/ruby-3.1.0/ruby/encoding.h new file mode 100644 index 00000000000..12563937011 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/encoding.h @@ -0,0 +1,31 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/fiber/scheduler.h b/clangarm64/include/ruby-3.1.0/ruby/fiber/scheduler.h new file mode 100644 index 00000000000..3ea52beb95d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/fiber/scheduler.h @@ -0,0 +1,336 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/intern.h b/clangarm64/include/ruby-3.1.0/ruby/intern.h new file mode 100644 index 00000000000..2480e2e7033 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/intern.h @@ -0,0 +1,64 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/anyargs.h b/clangarm64/include/ruby-3.1.0/ruby/internal/anyargs.h new file mode 100644 index 00000000000..9d8d16fdab6 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/anyargs.h @@ -0,0 +1,375 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic.h new file mode 100644 index 00000000000..3f7840c3840 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic.h @@ -0,0 +1,38 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/char.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/char.h new file mode 100644 index 00000000000..920fdc0c9d5 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/char.h @@ -0,0 +1,81 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/double.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/double.h new file mode 100644 index 00000000000..229de47aef8 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/double.h @@ -0,0 +1,72 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/fixnum.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/fixnum.h new file mode 100644 index 00000000000..c8927ac8243 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/fixnum.h @@ -0,0 +1,60 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/gid_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/gid_t.h new file mode 100644 index 00000000000..361220bfaba --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/gid_t.h @@ -0,0 +1,41 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/int.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/int.h new file mode 100644 index 00000000000..6bd8ec21845 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/int.h @@ -0,0 +1,264 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/intptr_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/intptr_t.h new file mode 100644 index 00000000000..a354f4469cd --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/intptr_t.h @@ -0,0 +1,74 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long.h new file mode 100644 index 00000000000..792f7be1795 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long.h @@ -0,0 +1,356 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long_long.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long_long.h new file mode 100644 index 00000000000..65dec8729df --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/long_long.h @@ -0,0 +1,135 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/mode_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/mode_t.h new file mode 100644 index 00000000000..5b7ad35fbc8 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/mode_t.h @@ -0,0 +1,41 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/off_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/off_t.h new file mode 100644 index 00000000000..0ec9362cc97 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/off_t.h @@ -0,0 +1,62 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/pid_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/pid_t.h new file mode 100644 index 00000000000..df9704e8f5d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/pid_t.h @@ -0,0 +1,41 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/short.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/short.h new file mode 100644 index 00000000000..7a324d945bd --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/short.h @@ -0,0 +1,113 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/size_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/size_t.h new file mode 100644 index 00000000000..1082160b8ef --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/size_t.h @@ -0,0 +1,66 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/st_data_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/st_data_t.h new file mode 100644 index 00000000000..3bff4ffc0bf --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/st_data_t.h @@ -0,0 +1,75 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/uid_t.h b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/uid_t.h new file mode 100644 index 00000000000..12cde2a9c87 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/arithmetic/uid_t.h @@ -0,0 +1,41 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/assume.h b/clangarm64/include/ruby-3.1.0/ruby/internal/assume.h new file mode 100644 index 00000000000..65d34d4ac8c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/assume.h @@ -0,0 +1,90 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/alloc_size.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/alloc_size.h new file mode 100644 index 00000000000..954a2010f63 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/alloc_size.h @@ -0,0 +1,32 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/artificial.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/artificial.h new file mode 100644 index 00000000000..ef5f36abff9 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/artificial.h @@ -0,0 +1,46 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/cold.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/cold.h new file mode 100644 index 00000000000..c68b3ae7849 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/cold.h @@ -0,0 +1,37 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/const.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/const.h new file mode 100644 index 00000000000..e66aa17c708 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/const.h @@ -0,0 +1,46 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/constexpr.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/constexpr.h new file mode 100644 index 00000000000..abc4f238b51 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/constexpr.h @@ -0,0 +1,84 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/deprecated.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/deprecated.h new file mode 100644 index 00000000000..e1bbdbd15ad --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/deprecated.h @@ -0,0 +1,75 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/diagnose_if.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/diagnose_if.h new file mode 100644 index 00000000000..cadc6ce2589 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/diagnose_if.h @@ -0,0 +1,42 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/enum_extensibility.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/enum_extensibility.h new file mode 100644 index 00000000000..eb0d5b6e9b2 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/enum_extensibility.h @@ -0,0 +1,32 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/error.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/error.h new file mode 100644 index 00000000000..2ed388a7704 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/error.h @@ -0,0 +1,32 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/flag_enum.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/flag_enum.h new file mode 100644 index 00000000000..3053d750744 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/flag_enum.h @@ -0,0 +1,33 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/forceinline.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/forceinline.h new file mode 100644 index 00000000000..b7daafede7c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/forceinline.h @@ -0,0 +1,40 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/format.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/format.h new file mode 100644 index 00000000000..b3488ee00a3 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/format.h @@ -0,0 +1,38 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/maybe_unused.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/maybe_unused.h new file mode 100644 index 00000000000..3ee8be4540d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/maybe_unused.h @@ -0,0 +1,38 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noalias.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noalias.h new file mode 100644 index 00000000000..0790ef60e56 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noalias.h @@ -0,0 +1,69 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/nodiscard.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/nodiscard.h new file mode 100644 index 00000000000..087192a7a8b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/nodiscard.h @@ -0,0 +1,45 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noexcept.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noexcept.h new file mode 100644 index 00000000000..ea3001df2af --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noexcept.h @@ -0,0 +1,91 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noinline.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noinline.h new file mode 100644 index 00000000000..b7605a0c917 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noinline.h @@ -0,0 +1,35 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/nonnull.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/nonnull.h new file mode 100644 index 00000000000..778d5be2088 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/nonnull.h @@ -0,0 +1,34 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noreturn.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noreturn.h new file mode 100644 index 00000000000..5839212037a --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/noreturn.h @@ -0,0 +1,48 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/pure.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/pure.h new file mode 100644 index 00000000000..015711bdabb --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/pure.h @@ -0,0 +1,43 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/restrict.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/restrict.h new file mode 100644 index 00000000000..e39104138c6 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/restrict.h @@ -0,0 +1,44 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/returns_nonnull.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/returns_nonnull.h new file mode 100644 index 00000000000..5d6f1d14591 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/returns_nonnull.h @@ -0,0 +1,37 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/warning.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/warning.h new file mode 100644 index 00000000000..e5ced269b88 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/warning.h @@ -0,0 +1,32 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/attr/weakref.h b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/weakref.h new file mode 100644 index 00000000000..f118bb62b86 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/attr/weakref.h @@ -0,0 +1,32 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/cast.h b/clangarm64/include/ruby-3.1.0/ruby/internal/cast.h new file mode 100644 index 00000000000..a31fddbe4cc --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/cast.h @@ -0,0 +1,50 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is.h new file mode 100644 index 00000000000..7070b033a0c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is.h @@ -0,0 +1,45 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/apple.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/apple.h new file mode 100644 index 00000000000..a81f1f2c8fa --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/apple.h @@ -0,0 +1,40 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/clang.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/clang.h new file mode 100644 index 00000000000..169ff789f66 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/clang.h @@ -0,0 +1,37 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/gcc.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/gcc.h new file mode 100644 index 00000000000..accc80e9aad --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/gcc.h @@ -0,0 +1,45 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/intel.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/intel.h new file mode 100644 index 00000000000..377946ace09 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/intel.h @@ -0,0 +1,40 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/msvc.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/msvc.h new file mode 100644 index 00000000000..8a864ea558a --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/msvc.h @@ -0,0 +1,56 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/sunpro.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/sunpro.h new file mode 100644 index 00000000000..c11c8452e79 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_is/sunpro.h @@ -0,0 +1,54 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_since.h b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_since.h new file mode 100644 index 00000000000..19290328840 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/compiler_since.h @@ -0,0 +1,61 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/config.h b/clangarm64/include/ruby-3.1.0/ruby/internal/config.h new file mode 100644 index 00000000000..51f863fc296 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/config.h @@ -0,0 +1,153 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/constant_p.h b/clangarm64/include/ruby-3.1.0/ruby/internal/constant_p.h new file mode 100644 index 00000000000..92d69cb9727 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/constant_p.h @@ -0,0 +1,38 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core.h new file mode 100644 index 00000000000..3f4561c6a61 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core.h @@ -0,0 +1,35 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rarray.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rarray.h new file mode 100644 index 00000000000..9f1d0509ea3 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rarray.h @@ -0,0 +1,590 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rbasic.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rbasic.h new file mode 100644 index 00000000000..4617f743a79 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rbasic.h @@ -0,0 +1,158 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rbignum.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rbignum.h new file mode 100644 index 00000000000..1d31743235f --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rbignum.h @@ -0,0 +1,80 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rclass.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rclass.h new file mode 100644 index 00000000000..13a33a28bd9 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rclass.h @@ -0,0 +1,140 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rdata.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rdata.h new file mode 100644 index 00000000000..f6656b65461 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rdata.h @@ -0,0 +1,410 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rfile.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rfile.h new file mode 100644 index 00000000000..f8dddde9e5a --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rfile.h @@ -0,0 +1,51 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rhash.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rhash.h new file mode 100644 index 00000000000..61d2c15d87a --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rhash.h @@ -0,0 +1,144 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rmatch.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rmatch.h new file mode 100644 index 00000000000..2d2fd897f5d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rmatch.h @@ -0,0 +1,146 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/robject.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/robject.h new file mode 100644 index 00000000000..f2028063a65 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/robject.h @@ -0,0 +1,185 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rregexp.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rregexp.h new file mode 100644 index 00000000000..cf54a399f13 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rregexp.h @@ -0,0 +1,168 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rstring.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rstring.h new file mode 100644 index 00000000000..a682dbe22fb --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rstring.h @@ -0,0 +1,577 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rstruct.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rstruct.h new file mode 100644 index 00000000000..69be487b592 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rstruct.h @@ -0,0 +1,121 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/core/rtypeddata.h b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rtypeddata.h new file mode 100644 index 00000000000..bbf208867df --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/core/rtypeddata.h @@ -0,0 +1,604 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/ctype.h b/clangarm64/include/ruby-3.1.0/ruby/internal/ctype.h new file mode 100644 index 00000000000..0f7ca6c5163 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/ctype.h @@ -0,0 +1,545 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/dllexport.h b/clangarm64/include/ruby-3.1.0/ruby/internal/dllexport.h new file mode 100644 index 00000000000..08a262209db --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/dllexport.h @@ -0,0 +1,112 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/dosish.h b/clangarm64/include/ruby-3.1.0/ruby/internal/dosish.h new file mode 100644 index 00000000000..7d354ddd1a4 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/dosish.h @@ -0,0 +1,89 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/coderange.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/coderange.h new file mode 100644 index 00000000000..7a81208c9e2 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/coderange.h @@ -0,0 +1,202 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/ctype.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/ctype.h new file mode 100644 index 00000000000..64aaf0a9908 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/ctype.h @@ -0,0 +1,243 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/encoding.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/encoding.h new file mode 100644 index 00000000000..9208d27ecf8 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/encoding.h @@ -0,0 +1,1058 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/pathname.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/pathname.h new file mode 100644 index 00000000000..0b5e85a5240 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/pathname.h @@ -0,0 +1,184 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/re.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/re.h new file mode 100644 index 00000000000..d0de23bc83c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/re.h @@ -0,0 +1,46 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/sprintf.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/sprintf.h new file mode 100644 index 00000000000..cb8737b4149 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/sprintf.h @@ -0,0 +1,78 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/string.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/string.h new file mode 100644 index 00000000000..6ed7ca1c90d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/string.h @@ -0,0 +1,346 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/symbol.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/symbol.h new file mode 100644 index 00000000000..9cd1b0dbf40 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/symbol.h @@ -0,0 +1,100 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/transcode.h b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/transcode.h new file mode 100644 index 00000000000..60c96a41c9f --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/encoding/transcode.h @@ -0,0 +1,558 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/error.h b/clangarm64/include/ruby-3.1.0/ruby/internal/error.h new file mode 100644 index 00000000000..49e2276cb95 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/error.h @@ -0,0 +1,582 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/eval.h b/clangarm64/include/ruby-3.1.0/ruby/internal/eval.h new file mode 100644 index 00000000000..34a53849dae --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/eval.h @@ -0,0 +1,373 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/event.h b/clangarm64/include/ruby-3.1.0/ruby/internal/event.h new file mode 100644 index 00000000000..04b137a1939 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/event.h @@ -0,0 +1,154 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/fl_type.h b/clangarm64/include/ruby-3.1.0/ruby/internal/fl_type.h new file mode 100644 index 00000000000..08405d6f30e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/fl_type.h @@ -0,0 +1,967 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/gc.h b/clangarm64/include/ruby-3.1.0/ruby/internal/gc.h new file mode 100644 index 00000000000..66fc14e5118 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/gc.h @@ -0,0 +1,57 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/glob.h b/clangarm64/include/ruby-3.1.0/ruby/internal/glob.h new file mode 100644 index 00000000000..adbccbdc5e1 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/glob.h @@ -0,0 +1,113 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/globals.h b/clangarm64/include/ruby-3.1.0/ruby/internal/globals.h new file mode 100644 index 00000000000..5a414fc4727 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/globals.h @@ -0,0 +1,209 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/attribute.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/attribute.h new file mode 100644 index 00000000000..f068a65cafd --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/attribute.h @@ -0,0 +1,163 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/builtin.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/builtin.h new file mode 100644 index 00000000000..957aff8375f --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/builtin.h @@ -0,0 +1,119 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/c_attribute.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/c_attribute.h new file mode 100644 index 00000000000..c5c48867bfd --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/c_attribute.h @@ -0,0 +1,38 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/cpp_attribute.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/cpp_attribute.h new file mode 100644 index 00000000000..6a393b1a24c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/cpp_attribute.h @@ -0,0 +1,86 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/declspec_attribute.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/declspec_attribute.h new file mode 100644 index 00000000000..1c526daf78e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/declspec_attribute.h @@ -0,0 +1,47 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/extension.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/extension.h new file mode 100644 index 00000000000..da8c0d3cc2c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/extension.h @@ -0,0 +1,33 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/feature.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/feature.h new file mode 100644 index 00000000000..7be8d273143 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/feature.h @@ -0,0 +1,31 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/has/warning.h b/clangarm64/include/ruby-3.1.0/ruby/internal/has/warning.h new file mode 100644 index 00000000000..12d7db183b9 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/has/warning.h @@ -0,0 +1,31 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/array.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/array.h new file mode 100644 index 00000000000..17964bf810e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/array.h @@ -0,0 +1,657 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/bignum.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/bignum.h new file mode 100644 index 00000000000..43d68018de9 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/bignum.h @@ -0,0 +1,846 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/class.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/class.h new file mode 100644 index 00000000000..2181ab93c74 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/class.h @@ -0,0 +1,382 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/compar.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/compar.h new file mode 100644 index 00000000000..dc3b377b01b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/compar.h @@ -0,0 +1,62 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/complex.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/complex.h new file mode 100644 index 00000000000..e111bd8ced7 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/complex.h @@ -0,0 +1,253 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/cont.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/cont.h new file mode 100644 index 00000000000..37493009f5e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/cont.h @@ -0,0 +1,260 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/dir.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/dir.h new file mode 100644 index 00000000000..da1873e068b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/dir.h @@ -0,0 +1,42 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/enum.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/enum.h new file mode 100644 index 00000000000..215ad826723 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/enum.h @@ -0,0 +1,73 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/enumerator.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/enumerator.h new file mode 100644 index 00000000000..20e5d7c6fcd --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/enumerator.h @@ -0,0 +1,259 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/error.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/error.h new file mode 100644 index 00000000000..37d3b8592b5 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/error.h @@ -0,0 +1,301 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/eval.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/eval.h new file mode 100644 index 00000000000..2230f7ab0c1 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/eval.h @@ -0,0 +1,222 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/file.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/file.h new file mode 100644 index 00000000000..2dc60c7ba78 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/file.h @@ -0,0 +1,213 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/gc.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/gc.h new file mode 100644 index 00000000000..e7b8008729b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/gc.h @@ -0,0 +1,392 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/hash.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/hash.h new file mode 100644 index 00000000000..9d2ce8279a4 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/hash.h @@ -0,0 +1,318 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/io.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/io.h new file mode 100644 index 00000000000..02c249723ef --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/io.h @@ -0,0 +1,661 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/load.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/load.h new file mode 100644 index 00000000000..288a16c2ec2 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/load.h @@ -0,0 +1,218 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/marshal.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/marshal.h new file mode 100644 index 00000000000..118d78a4a0d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/marshal.h @@ -0,0 +1,112 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/numeric.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/numeric.h new file mode 100644 index 00000000000..30863fb0c89 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/numeric.h @@ -0,0 +1,208 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/object.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/object.h new file mode 100644 index 00000000000..6bb4ccb2fee --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/object.h @@ -0,0 +1,569 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/parse.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/parse.h new file mode 100644 index 00000000000..7c4e9925b90 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/parse.h @@ -0,0 +1,194 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/proc.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/proc.h new file mode 100644 index 00000000000..b8c3c5e1466 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/proc.h @@ -0,0 +1,353 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/process.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/process.h new file mode 100644 index 00000000000..7a7b24ed4b0 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/process.h @@ -0,0 +1,273 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/random.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/random.h new file mode 100644 index 00000000000..5577f53cb4c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/random.h @@ -0,0 +1,116 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/range.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/range.h new file mode 100644 index 00000000000..1f7d7c313fb --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/range.h @@ -0,0 +1,89 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/rational.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/rational.h new file mode 100644 index 00000000000..ff4beca297d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/rational.h @@ -0,0 +1,172 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/re.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/re.h new file mode 100644 index 00000000000..31f55932758 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/re.h @@ -0,0 +1,249 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/ruby.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/ruby.h new file mode 100644 index 00000000000..efe61424ca6 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/ruby.h @@ -0,0 +1,77 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select.h new file mode 100644 index 00000000000..fabc287cd14 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select.h @@ -0,0 +1,86 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/largesize.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/largesize.h new file mode 100644 index 00000000000..d156f62034b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/largesize.h @@ -0,0 +1,217 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/posix.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/posix.h new file mode 100644 index 00000000000..5f828e66e2c --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/posix.h @@ -0,0 +1,144 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/win32.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/win32.h new file mode 100644 index 00000000000..edaf7a85237 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/select/win32.h @@ -0,0 +1,259 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/signal.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/signal.h new file mode 100644 index 00000000000..84f75584049 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/signal.h @@ -0,0 +1,152 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/sprintf.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/sprintf.h new file mode 100644 index 00000000000..aedc0f9ab1d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/sprintf.h @@ -0,0 +1,159 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/string.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/string.h new file mode 100644 index 00000000000..2ee8496256a --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/string.h @@ -0,0 +1,1821 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/struct.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/struct.h new file mode 100644 index 00000000000..312cf444e21 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/struct.h @@ -0,0 +1,203 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/thread.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/thread.h new file mode 100644 index 00000000000..716375acd76 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/thread.h @@ -0,0 +1,492 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/time.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/time.h new file mode 100644 index 00000000000..df482862eb0 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/time.h @@ -0,0 +1,161 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/variable.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/variable.h new file mode 100644 index 00000000000..479c3950c1e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/variable.h @@ -0,0 +1,628 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/intern/vm.h b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/vm.h new file mode 100644 index 00000000000..562d30a6fec --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/intern/vm.h @@ -0,0 +1,435 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/interpreter.h b/clangarm64/include/ruby-3.1.0/ruby/internal/interpreter.h new file mode 100644 index 00000000000..662d39c0ec5 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/interpreter.h @@ -0,0 +1,304 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/iterator.h b/clangarm64/include/ruby-3.1.0/ruby/internal/iterator.h new file mode 100644 index 00000000000..5f706460f86 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/iterator.h @@ -0,0 +1,513 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/method.h b/clangarm64/include/ruby-3.1.0/ruby/internal/method.h new file mode 100644 index 00000000000..19feb0c10b6 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/method.h @@ -0,0 +1,205 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/module.h b/clangarm64/include/ruby-3.1.0/ruby/internal/module.h new file mode 100644 index 00000000000..d678dd21027 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/module.h @@ -0,0 +1,177 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/newobj.h b/clangarm64/include/ruby-3.1.0/ruby/internal/newobj.h new file mode 100644 index 00000000000..a8a5557a25b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/newobj.h @@ -0,0 +1,195 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/rgengc.h b/clangarm64/include/ruby-3.1.0/ruby/internal/rgengc.h new file mode 100644 index 00000000000..7ea04442f67 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/rgengc.h @@ -0,0 +1,443 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/scan_args.h b/clangarm64/include/ruby-3.1.0/ruby/internal/scan_args.h new file mode 100644 index 00000000000..cf5b18f77d8 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/scan_args.h @@ -0,0 +1,534 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/special_consts.h b/clangarm64/include/ruby-3.1.0/ruby/internal/special_consts.h new file mode 100644 index 00000000000..38934e4da39 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/special_consts.h @@ -0,0 +1,295 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/static_assert.h b/clangarm64/include/ruby-3.1.0/ruby/internal/static_assert.h new file mode 100644 index 00000000000..594c2b2917b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/static_assert.h @@ -0,0 +1,77 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/stdalign.h b/clangarm64/include/ruby-3.1.0/ruby/internal/stdalign.h new file mode 100644 index 00000000000..ec68f6a8822 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/stdalign.h @@ -0,0 +1,135 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/stdbool.h b/clangarm64/include/ruby-3.1.0/ruby/internal/stdbool.h new file mode 100644 index 00000000000..b15321cb006 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/stdbool.h @@ -0,0 +1,51 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/symbol.h b/clangarm64/include/ruby-3.1.0/ruby/internal/symbol.h new file mode 100644 index 00000000000..869a31115ce --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/symbol.h @@ -0,0 +1,332 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/value.h b/clangarm64/include/ruby-3.1.0/ruby/internal/value.h new file mode 100644 index 00000000000..805cd835131 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/value.h @@ -0,0 +1,133 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/value_type.h b/clangarm64/include/ruby-3.1.0/ruby/internal/value_type.h new file mode 100644 index 00000000000..977f60a0094 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/value_type.h @@ -0,0 +1,449 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/variable.h b/clangarm64/include/ruby-3.1.0/ruby/internal/variable.h new file mode 100644 index 00000000000..1f84b92db01 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/variable.h @@ -0,0 +1,337 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/warning_push.h b/clangarm64/include/ruby-3.1.0/ruby/internal/warning_push.h new file mode 100644 index 00000000000..f5981633f83 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/warning_push.h @@ -0,0 +1,124 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/internal/xmalloc.h b/clangarm64/include/ruby-3.1.0/ruby/internal/xmalloc.h new file mode 100644 index 00000000000..57552e4e7de --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/internal/xmalloc.h @@ -0,0 +1,392 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/io.h b/clangarm64/include/ruby-3.1.0/ruby/io.h new file mode 100644 index 00000000000..3e035c114d7 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/io.h @@ -0,0 +1,976 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/io/buffer.h b/clangarm64/include/ruby-3.1.0/ruby/io/buffer.h new file mode 100644 index 00000000000..907fec20bb4 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/io/buffer.h @@ -0,0 +1,91 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/memory_view.h b/clangarm64/include/ruby-3.1.0/ruby/memory_view.h new file mode 100644 index 00000000000..83931038a05 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/memory_view.h @@ -0,0 +1,325 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/missing.h b/clangarm64/include/ruby-3.1.0/ruby/missing.h new file mode 100644 index 00000000000..1e97e294f14 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/missing.h @@ -0,0 +1,229 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/onigmo.h b/clangarm64/include/ruby-3.1.0/ruby/onigmo.h new file mode 100644 index 00000000000..6187b37dc37 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/onigmo.h @@ -0,0 +1,941 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/oniguruma.h b/clangarm64/include/ruby-3.1.0/ruby/oniguruma.h new file mode 100644 index 00000000000..dc83754aca4 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/oniguruma.h @@ -0,0 +1,8 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/ractor.h b/clangarm64/include/ruby-3.1.0/ruby/ractor.h new file mode 100644 index 00000000000..7811616f6d8 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/ractor.h @@ -0,0 +1,264 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/random.h b/clangarm64/include/ruby-3.1.0/ruby/random.h new file mode 100644 index 00000000000..657b37f034d --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/random.h @@ -0,0 +1,304 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/re.h b/clangarm64/include/ruby-3.1.0/ruby/re.h new file mode 100644 index 00000000000..3892d6e7f29 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/re.h @@ -0,0 +1,147 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/regex.h b/clangarm64/include/ruby-3.1.0/ruby/regex.h new file mode 100644 index 00000000000..53278173f8e --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/regex.h @@ -0,0 +1,43 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/ruby.h b/clangarm64/include/ruby-3.1.0/ruby/ruby.h new file mode 100644 index 00000000000..f35d13685ca --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/ruby.h @@ -0,0 +1,311 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/st.h b/clangarm64/include/ruby-3.1.0/ruby/st.h new file mode 100644 index 00000000000..1e4bb806867 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/st.h @@ -0,0 +1,197 @@ +/* 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/clangarm64/include/ruby-3.1.0/ruby/subst.h b/clangarm64/include/ruby-3.1.0/ruby/subst.h new file mode 100644 index 00000000000..d7b9a630509 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/subst.h @@ -0,0 +1,26 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/thread.h b/clangarm64/include/ruby-3.1.0/ruby/thread.h new file mode 100644 index 00000000000..18c792b3861 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/thread.h @@ -0,0 +1,195 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/thread_native.h b/clangarm64/include/ruby-3.1.0/ruby/thread_native.h new file mode 100644 index 00000000000..2945ff1e4d5 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/thread_native.h @@ -0,0 +1,199 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/util.h b/clangarm64/include/ruby-3.1.0/ruby/util.h new file mode 100644 index 00000000000..b2bc1a09f60 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/util.h @@ -0,0 +1,228 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/version.h b/clangarm64/include/ruby-3.1.0/ruby/version.h new file mode 100644 index 00000000000..104f78a0c6b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/version.h @@ -0,0 +1,158 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/vm.h b/clangarm64/include/ruby-3.1.0/ruby/vm.h new file mode 100644 index 00000000000..3458c28be7b --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/vm.h @@ -0,0 +1,54 @@ +#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/clangarm64/include/ruby-3.1.0/ruby/win32.h b/clangarm64/include/ruby-3.1.0/ruby/win32.h new file mode 100644 index 00000000000..c8ae599f2f8 --- /dev/null +++ b/clangarm64/include/ruby-3.1.0/ruby/win32.h @@ -0,0 +1,806 @@ +#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/clangarm64/include/yaml.h b/clangarm64/include/yaml.h new file mode 100644 index 00000000000..6739acf2771 --- /dev/null +++ b/clangarm64/include/yaml.h @@ -0,0 +1,1985 @@ +/** + * @file yaml.h + * @brief Public interface for libyaml. + * + * Include the header file with the code: + * @code + * #include + * @endcode + */ + +#ifndef YAML_H +#define YAML_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/** + * @defgroup export Export Definitions + * @{ + */ + +/** The public API declaration. */ + +#if defined(__MINGW32__) +# define YAML_DECLARE(type) type +#elif defined(_MSC_VER) +# if defined(YAML_DECLARE_STATIC) +# define YAML_DECLARE(type) type +# elif defined(YAML_DECLARE_EXPORT) +# define YAML_DECLARE(type) __declspec(dllexport) type +# else +# define YAML_DECLARE(type) __declspec(dllimport) type +# endif +#else +# define YAML_DECLARE(type) type +#endif + +/** @} */ + +/** + * @defgroup version Version Information + * @{ + */ + +/** + * Get the library version as a string. + * + * @returns The function returns the pointer to a static string of the form + * @c "X.Y.Z", where @c X is the major version number, @c Y is a minor version + * number, and @c Z is the patch version number. + */ + +YAML_DECLARE(const char *) +yaml_get_version_string(void); + +/** + * Get the library version numbers. + * + * @param[out] major Major version number. + * @param[out] minor Minor version number. + * @param[out] patch Patch version number. + */ + +YAML_DECLARE(void) +yaml_get_version(int *major, int *minor, int *patch); + +/** @} */ + +/** + * @defgroup basic Basic Types + * @{ + */ + +/** The character type (UTF-8 octet). */ +typedef unsigned char yaml_char_t; + +/** The version directive data. */ +typedef struct yaml_version_directive_s { + /** The major version number. */ + int major; + /** The minor version number. */ + int minor; +} yaml_version_directive_t; + +/** The tag directive data. */ +typedef struct yaml_tag_directive_s { + /** The tag handle. */ + yaml_char_t *handle; + /** The tag prefix. */ + yaml_char_t *prefix; +} yaml_tag_directive_t; + +/** The stream encoding. */ +typedef enum yaml_encoding_e { + /** Let the parser choose the encoding. */ + YAML_ANY_ENCODING, + /** The default UTF-8 encoding. */ + YAML_UTF8_ENCODING, + /** The UTF-16-LE encoding with BOM. */ + YAML_UTF16LE_ENCODING, + /** The UTF-16-BE encoding with BOM. */ + YAML_UTF16BE_ENCODING +} yaml_encoding_t; + +/** Line break types. */ + +typedef enum yaml_break_e { + /** Let the parser choose the break type. */ + YAML_ANY_BREAK, + /** Use CR for line breaks (Mac style). */ + YAML_CR_BREAK, + /** Use LN for line breaks (Unix style). */ + YAML_LN_BREAK, + /** Use CR LN for line breaks (DOS style). */ + YAML_CRLN_BREAK +} yaml_break_t; + +/** Many bad things could happen with the parser and emitter. */ +typedef enum yaml_error_type_e { + /** No error is produced. */ + YAML_NO_ERROR, + + /** Cannot allocate or reallocate a block of memory. */ + YAML_MEMORY_ERROR, + + /** Cannot read or decode the input stream. */ + YAML_READER_ERROR, + /** Cannot scan the input stream. */ + YAML_SCANNER_ERROR, + /** Cannot parse the input stream. */ + YAML_PARSER_ERROR, + /** Cannot compose a YAML document. */ + YAML_COMPOSER_ERROR, + + /** Cannot write to the output stream. */ + YAML_WRITER_ERROR, + /** Cannot emit a YAML stream. */ + YAML_EMITTER_ERROR +} yaml_error_type_t; + +/** The pointer position. */ +typedef struct yaml_mark_s { + /** The position index. */ + size_t index; + + /** The position line. */ + size_t line; + + /** The position column. */ + size_t column; +} yaml_mark_t; + +/** @} */ + +/** + * @defgroup styles Node Styles + * @{ + */ + +/** Scalar styles. */ +typedef enum yaml_scalar_style_e { + /** Let the emitter choose the style. */ + YAML_ANY_SCALAR_STYLE, + + /** The plain scalar style. */ + YAML_PLAIN_SCALAR_STYLE, + + /** The single-quoted scalar style. */ + YAML_SINGLE_QUOTED_SCALAR_STYLE, + /** The double-quoted scalar style. */ + YAML_DOUBLE_QUOTED_SCALAR_STYLE, + + /** The literal scalar style. */ + YAML_LITERAL_SCALAR_STYLE, + /** The folded scalar style. */ + YAML_FOLDED_SCALAR_STYLE +} yaml_scalar_style_t; + +/** Sequence styles. */ +typedef enum yaml_sequence_style_e { + /** Let the emitter choose the style. */ + YAML_ANY_SEQUENCE_STYLE, + + /** The block sequence style. */ + YAML_BLOCK_SEQUENCE_STYLE, + /** The flow sequence style. */ + YAML_FLOW_SEQUENCE_STYLE +} yaml_sequence_style_t; + +/** Mapping styles. */ +typedef enum yaml_mapping_style_e { + /** Let the emitter choose the style. */ + YAML_ANY_MAPPING_STYLE, + + /** The block mapping style. */ + YAML_BLOCK_MAPPING_STYLE, + /** The flow mapping style. */ + YAML_FLOW_MAPPING_STYLE +/* YAML_FLOW_SET_MAPPING_STYLE */ +} yaml_mapping_style_t; + +/** @} */ + +/** + * @defgroup tokens Tokens + * @{ + */ + +/** Token types. */ +typedef enum yaml_token_type_e { + /** An empty token. */ + YAML_NO_TOKEN, + + /** A STREAM-START token. */ + YAML_STREAM_START_TOKEN, + /** A STREAM-END token. */ + YAML_STREAM_END_TOKEN, + + /** A VERSION-DIRECTIVE token. */ + YAML_VERSION_DIRECTIVE_TOKEN, + /** A TAG-DIRECTIVE token. */ + YAML_TAG_DIRECTIVE_TOKEN, + /** A DOCUMENT-START token. */ + YAML_DOCUMENT_START_TOKEN, + /** A DOCUMENT-END token. */ + YAML_DOCUMENT_END_TOKEN, + + /** A BLOCK-SEQUENCE-START token. */ + YAML_BLOCK_SEQUENCE_START_TOKEN, + /** A BLOCK-MAPPING-START token. */ + YAML_BLOCK_MAPPING_START_TOKEN, + /** A BLOCK-END token. */ + YAML_BLOCK_END_TOKEN, + + /** A FLOW-SEQUENCE-START token. */ + YAML_FLOW_SEQUENCE_START_TOKEN, + /** A FLOW-SEQUENCE-END token. */ + YAML_FLOW_SEQUENCE_END_TOKEN, + /** A FLOW-MAPPING-START token. */ + YAML_FLOW_MAPPING_START_TOKEN, + /** A FLOW-MAPPING-END token. */ + YAML_FLOW_MAPPING_END_TOKEN, + + /** A BLOCK-ENTRY token. */ + YAML_BLOCK_ENTRY_TOKEN, + /** A FLOW-ENTRY token. */ + YAML_FLOW_ENTRY_TOKEN, + /** A KEY token. */ + YAML_KEY_TOKEN, + /** A VALUE token. */ + YAML_VALUE_TOKEN, + + /** An ALIAS token. */ + YAML_ALIAS_TOKEN, + /** An ANCHOR token. */ + YAML_ANCHOR_TOKEN, + /** A TAG token. */ + YAML_TAG_TOKEN, + /** A SCALAR token. */ + YAML_SCALAR_TOKEN +} yaml_token_type_t; + +/** The token structure. */ +typedef struct yaml_token_s { + + /** The token type. */ + yaml_token_type_t type; + + /** The token data. */ + union { + + /** The stream start (for @c YAML_STREAM_START_TOKEN). */ + struct { + /** The stream encoding. */ + yaml_encoding_t encoding; + } stream_start; + + /** The alias (for @c YAML_ALIAS_TOKEN). */ + struct { + /** The alias value. */ + yaml_char_t *value; + } alias; + + /** The anchor (for @c YAML_ANCHOR_TOKEN). */ + struct { + /** The anchor value. */ + yaml_char_t *value; + } anchor; + + /** The tag (for @c YAML_TAG_TOKEN). */ + struct { + /** The tag handle. */ + yaml_char_t *handle; + /** The tag suffix. */ + yaml_char_t *suffix; + } tag; + + /** The scalar value (for @c YAML_SCALAR_TOKEN). */ + struct { + /** The scalar value. */ + yaml_char_t *value; + /** The length of the scalar value. */ + size_t length; + /** The scalar style. */ + yaml_scalar_style_t style; + } scalar; + + /** The version directive (for @c YAML_VERSION_DIRECTIVE_TOKEN). */ + struct { + /** The major version number. */ + int major; + /** The minor version number. */ + int minor; + } version_directive; + + /** The tag directive (for @c YAML_TAG_DIRECTIVE_TOKEN). */ + struct { + /** The tag handle. */ + yaml_char_t *handle; + /** The tag prefix. */ + yaml_char_t *prefix; + } tag_directive; + + } data; + + /** The beginning of the token. */ + yaml_mark_t start_mark; + /** The end of the token. */ + yaml_mark_t end_mark; + +} yaml_token_t; + +/** + * Free any memory allocated for a token object. + * + * @param[in,out] token A token object. + */ + +YAML_DECLARE(void) +yaml_token_delete(yaml_token_t *token); + +/** @} */ + +/** + * @defgroup events Events + * @{ + */ + +/** Event types. */ +typedef enum yaml_event_type_e { + /** An empty event. */ + YAML_NO_EVENT, + + /** A STREAM-START event. */ + YAML_STREAM_START_EVENT, + /** A STREAM-END event. */ + YAML_STREAM_END_EVENT, + + /** A DOCUMENT-START event. */ + YAML_DOCUMENT_START_EVENT, + /** A DOCUMENT-END event. */ + YAML_DOCUMENT_END_EVENT, + + /** An ALIAS event. */ + YAML_ALIAS_EVENT, + /** A SCALAR event. */ + YAML_SCALAR_EVENT, + + /** A SEQUENCE-START event. */ + YAML_SEQUENCE_START_EVENT, + /** A SEQUENCE-END event. */ + YAML_SEQUENCE_END_EVENT, + + /** A MAPPING-START event. */ + YAML_MAPPING_START_EVENT, + /** A MAPPING-END event. */ + YAML_MAPPING_END_EVENT +} yaml_event_type_t; + +/** The event structure. */ +typedef struct yaml_event_s { + + /** The event type. */ + yaml_event_type_t type; + + /** The event data. */ + union { + + /** The stream parameters (for @c YAML_STREAM_START_EVENT). */ + struct { + /** The document encoding. */ + yaml_encoding_t encoding; + } stream_start; + + /** The document parameters (for @c YAML_DOCUMENT_START_EVENT). */ + struct { + /** The version directive. */ + yaml_version_directive_t *version_directive; + + /** The list of tag directives. */ + struct { + /** The beginning of the tag directives list. */ + yaml_tag_directive_t *start; + /** The end of the tag directives list. */ + yaml_tag_directive_t *end; + } tag_directives; + + /** Is the document indicator implicit? */ + int implicit; + } document_start; + + /** The document end parameters (for @c YAML_DOCUMENT_END_EVENT). */ + struct { + /** Is the document end indicator implicit? */ + int implicit; + } document_end; + + /** The alias parameters (for @c YAML_ALIAS_EVENT). */ + struct { + /** The anchor. */ + yaml_char_t *anchor; + } alias; + + /** The scalar parameters (for @c YAML_SCALAR_EVENT). */ + struct { + /** The anchor. */ + yaml_char_t *anchor; + /** The tag. */ + yaml_char_t *tag; + /** The scalar value. */ + yaml_char_t *value; + /** The length of the scalar value. */ + size_t length; + /** Is the tag optional for the plain style? */ + int plain_implicit; + /** Is the tag optional for any non-plain style? */ + int quoted_implicit; + /** The scalar style. */ + yaml_scalar_style_t style; + } scalar; + + /** The sequence parameters (for @c YAML_SEQUENCE_START_EVENT). */ + struct { + /** The anchor. */ + yaml_char_t *anchor; + /** The tag. */ + yaml_char_t *tag; + /** Is the tag optional? */ + int implicit; + /** The sequence style. */ + yaml_sequence_style_t style; + } sequence_start; + + /** The mapping parameters (for @c YAML_MAPPING_START_EVENT). */ + struct { + /** The anchor. */ + yaml_char_t *anchor; + /** The tag. */ + yaml_char_t *tag; + /** Is the tag optional? */ + int implicit; + /** The mapping style. */ + yaml_mapping_style_t style; + } mapping_start; + + } data; + + /** The beginning of the event. */ + yaml_mark_t start_mark; + /** The end of the event. */ + yaml_mark_t end_mark; + +} yaml_event_t; + +/** + * Create the STREAM-START event. + * + * @param[out] event An empty event object. + * @param[in] encoding The stream encoding. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_stream_start_event_initialize(yaml_event_t *event, + yaml_encoding_t encoding); + +/** + * Create the STREAM-END event. + * + * @param[out] event An empty event object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_stream_end_event_initialize(yaml_event_t *event); + +/** + * Create the DOCUMENT-START event. + * + * The @a implicit argument is considered as a stylistic parameter and may be + * ignored by the emitter. + * + * @param[out] event An empty event object. + * @param[in] version_directive The %YAML directive value or + * @c NULL. + * @param[in] tag_directives_start The beginning of the %TAG + * directives list. + * @param[in] tag_directives_end The end of the %TAG directives + * list. + * @param[in] implicit If the document start indicator is + * implicit. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_start_event_initialize(yaml_event_t *event, + yaml_version_directive_t *version_directive, + yaml_tag_directive_t *tag_directives_start, + yaml_tag_directive_t *tag_directives_end, + int implicit); + +/** + * Create the DOCUMENT-END event. + * + * The @a implicit argument is considered as a stylistic parameter and may be + * ignored by the emitter. + * + * @param[out] event An empty event object. + * @param[in] implicit If the document end indicator is implicit. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_end_event_initialize(yaml_event_t *event, int implicit); + +/** + * Create an ALIAS event. + * + * @param[out] event An empty event object. + * @param[in] anchor The anchor value. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_alias_event_initialize(yaml_event_t *event, const yaml_char_t *anchor); + +/** + * Create a SCALAR event. + * + * The @a style argument may be ignored by the emitter. + * + * Either the @a tag attribute or one of the @a plain_implicit and + * @a quoted_implicit flags must be set. + * + * @param[out] event An empty event object. + * @param[in] anchor The scalar anchor or @c NULL. + * @param[in] tag The scalar tag or @c NULL. + * @param[in] value The scalar value. + * @param[in] length The length of the scalar value. + * @param[in] plain_implicit If the tag may be omitted for the plain + * style. + * @param[in] quoted_implicit If the tag may be omitted for any + * non-plain style. + * @param[in] style The scalar style. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_scalar_event_initialize(yaml_event_t *event, + const yaml_char_t *anchor, const yaml_char_t *tag, + const yaml_char_t *value, int length, + int plain_implicit, int quoted_implicit, + yaml_scalar_style_t style); + +/** + * Create a SEQUENCE-START event. + * + * The @a style argument may be ignored by the emitter. + * + * Either the @a tag attribute or the @a implicit flag must be set. + * + * @param[out] event An empty event object. + * @param[in] anchor The sequence anchor or @c NULL. + * @param[in] tag The sequence tag or @c NULL. + * @param[in] implicit If the tag may be omitted. + * @param[in] style The sequence style. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_sequence_start_event_initialize(yaml_event_t *event, + const yaml_char_t *anchor, const yaml_char_t *tag, int implicit, + yaml_sequence_style_t style); + +/** + * Create a SEQUENCE-END event. + * + * @param[out] event An empty event object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_sequence_end_event_initialize(yaml_event_t *event); + +/** + * Create a MAPPING-START event. + * + * The @a style argument may be ignored by the emitter. + * + * Either the @a tag attribute or the @a implicit flag must be set. + * + * @param[out] event An empty event object. + * @param[in] anchor The mapping anchor or @c NULL. + * @param[in] tag The mapping tag or @c NULL. + * @param[in] implicit If the tag may be omitted. + * @param[in] style The mapping style. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_mapping_start_event_initialize(yaml_event_t *event, + const yaml_char_t *anchor, const yaml_char_t *tag, int implicit, + yaml_mapping_style_t style); + +/** + * Create a MAPPING-END event. + * + * @param[out] event An empty event object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_mapping_end_event_initialize(yaml_event_t *event); + +/** + * Free any memory allocated for an event object. + * + * @param[in,out] event An event object. + */ + +YAML_DECLARE(void) +yaml_event_delete(yaml_event_t *event); + +/** @} */ + +/** + * @defgroup nodes Nodes + * @{ + */ + +/** The tag @c !!null with the only possible value: @c null. */ +#define YAML_NULL_TAG "tag:yaml.org,2002:null" +/** The tag @c !!bool with the values: @c true and @c false. */ +#define YAML_BOOL_TAG "tag:yaml.org,2002:bool" +/** The tag @c !!str for string values. */ +#define YAML_STR_TAG "tag:yaml.org,2002:str" +/** The tag @c !!int for integer values. */ +#define YAML_INT_TAG "tag:yaml.org,2002:int" +/** The tag @c !!float for float values. */ +#define YAML_FLOAT_TAG "tag:yaml.org,2002:float" +/** The tag @c !!timestamp for date and time values. */ +#define YAML_TIMESTAMP_TAG "tag:yaml.org,2002:timestamp" + +/** The tag @c !!seq is used to denote sequences. */ +#define YAML_SEQ_TAG "tag:yaml.org,2002:seq" +/** The tag @c !!map is used to denote mapping. */ +#define YAML_MAP_TAG "tag:yaml.org,2002:map" + +/** The default scalar tag is @c !!str. */ +#define YAML_DEFAULT_SCALAR_TAG YAML_STR_TAG +/** The default sequence tag is @c !!seq. */ +#define YAML_DEFAULT_SEQUENCE_TAG YAML_SEQ_TAG +/** The default mapping tag is @c !!map. */ +#define YAML_DEFAULT_MAPPING_TAG YAML_MAP_TAG + +/** Node types. */ +typedef enum yaml_node_type_e { + /** An empty node. */ + YAML_NO_NODE, + + /** A scalar node. */ + YAML_SCALAR_NODE, + /** A sequence node. */ + YAML_SEQUENCE_NODE, + /** A mapping node. */ + YAML_MAPPING_NODE +} yaml_node_type_t; + +/** The forward definition of a document node structure. */ +typedef struct yaml_node_s yaml_node_t; + +/** An element of a sequence node. */ +typedef int yaml_node_item_t; + +/** An element of a mapping node. */ +typedef struct yaml_node_pair_s { + /** The key of the element. */ + int key; + /** The value of the element. */ + int value; +} yaml_node_pair_t; + +/** The node structure. */ +struct yaml_node_s { + + /** The node type. */ + yaml_node_type_t type; + + /** The node tag. */ + yaml_char_t *tag; + + /** The node data. */ + union { + + /** The scalar parameters (for @c YAML_SCALAR_NODE). */ + struct { + /** The scalar value. */ + yaml_char_t *value; + /** The length of the scalar value. */ + size_t length; + /** The scalar style. */ + yaml_scalar_style_t style; + } scalar; + + /** The sequence parameters (for @c YAML_SEQUENCE_NODE). */ + struct { + /** The stack of sequence items. */ + struct { + /** The beginning of the stack. */ + yaml_node_item_t *start; + /** The end of the stack. */ + yaml_node_item_t *end; + /** The top of the stack. */ + yaml_node_item_t *top; + } items; + /** The sequence style. */ + yaml_sequence_style_t style; + } sequence; + + /** The mapping parameters (for @c YAML_MAPPING_NODE). */ + struct { + /** The stack of mapping pairs (key, value). */ + struct { + /** The beginning of the stack. */ + yaml_node_pair_t *start; + /** The end of the stack. */ + yaml_node_pair_t *end; + /** The top of the stack. */ + yaml_node_pair_t *top; + } pairs; + /** The mapping style. */ + yaml_mapping_style_t style; + } mapping; + + } data; + + /** The beginning of the node. */ + yaml_mark_t start_mark; + /** The end of the node. */ + yaml_mark_t end_mark; + +}; + +/** The document structure. */ +typedef struct yaml_document_s { + + /** The document nodes. */ + struct { + /** The beginning of the stack. */ + yaml_node_t *start; + /** The end of the stack. */ + yaml_node_t *end; + /** The top of the stack. */ + yaml_node_t *top; + } nodes; + + /** The version directive. */ + yaml_version_directive_t *version_directive; + + /** The list of tag directives. */ + struct { + /** The beginning of the tag directives list. */ + yaml_tag_directive_t *start; + /** The end of the tag directives list. */ + yaml_tag_directive_t *end; + } tag_directives; + + /** Is the document start indicator implicit? */ + int start_implicit; + /** Is the document end indicator implicit? */ + int end_implicit; + + /** The beginning of the document. */ + yaml_mark_t start_mark; + /** The end of the document. */ + yaml_mark_t end_mark; + +} yaml_document_t; + +/** + * Create a YAML document. + * + * @param[out] document An empty document object. + * @param[in] version_directive The %YAML directive value or + * @c NULL. + * @param[in] tag_directives_start The beginning of the %TAG + * directives list. + * @param[in] tag_directives_end The end of the %TAG directives + * list. + * @param[in] start_implicit If the document start indicator is + * implicit. + * @param[in] end_implicit If the document end indicator is + * implicit. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_initialize(yaml_document_t *document, + yaml_version_directive_t *version_directive, + yaml_tag_directive_t *tag_directives_start, + yaml_tag_directive_t *tag_directives_end, + int start_implicit, int end_implicit); + +/** + * Delete a YAML document and all its nodes. + * + * @param[in,out] document A document object. + */ + +YAML_DECLARE(void) +yaml_document_delete(yaml_document_t *document); + +/** + * Get a node of a YAML document. + * + * The pointer returned by this function is valid until any of the functions + * modifying the documents are called. + * + * @param[in] document A document object. + * @param[in] index The node id. + * + * @returns the node objct or @c NULL if @c node_id is out of range. + */ + +YAML_DECLARE(yaml_node_t *) +yaml_document_get_node(yaml_document_t *document, int index); + +/** + * Get the root of a YAML document node. + * + * The root object is the first object added to the document. + * + * The pointer returned by this function is valid until any of the functions + * modifying the documents are called. + * + * An empty document produced by the parser signifies the end of a YAML + * stream. + * + * @param[in] document A document object. + * + * @returns the node object or @c NULL if the document is empty. + */ + +YAML_DECLARE(yaml_node_t *) +yaml_document_get_root_node(yaml_document_t *document); + +/** + * Create a SCALAR node and attach it to the document. + * + * The @a style argument may be ignored by the emitter. + * + * @param[in,out] document A document object. + * @param[in] tag The scalar tag. + * @param[in] value The scalar value. + * @param[in] length The length of the scalar value. + * @param[in] style The scalar style. + * + * @returns the node id or @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_add_scalar(yaml_document_t *document, + const yaml_char_t *tag, const yaml_char_t *value, int length, + yaml_scalar_style_t style); + +/** + * Create a SEQUENCE node and attach it to the document. + * + * The @a style argument may be ignored by the emitter. + * + * @param[in,out] document A document object. + * @param[in] tag The sequence tag. + * @param[in] style The sequence style. + * + * @returns the node id or @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_add_sequence(yaml_document_t *document, + const yaml_char_t *tag, yaml_sequence_style_t style); + +/** + * Create a MAPPING node and attach it to the document. + * + * The @a style argument may be ignored by the emitter. + * + * @param[in,out] document A document object. + * @param[in] tag The sequence tag. + * @param[in] style The sequence style. + * + * @returns the node id or @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_add_mapping(yaml_document_t *document, + const yaml_char_t *tag, yaml_mapping_style_t style); + +/** + * Add an item to a SEQUENCE node. + * + * @param[in,out] document A document object. + * @param[in] sequence The sequence node id. + * @param[in] item The item node id. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_append_sequence_item(yaml_document_t *document, + int sequence, int item); + +/** + * Add a pair of a key and a value to a MAPPING node. + * + * @param[in,out] document A document object. + * @param[in] mapping The mapping node id. + * @param[in] key The key node id. + * @param[in] value The value node id. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_document_append_mapping_pair(yaml_document_t *document, + int mapping, int key, int value); + +/** @} */ + +/** + * @defgroup parser Parser Definitions + * @{ + */ + +/** + * The prototype of a read handler. + * + * The read handler is called when the parser needs to read more bytes from the + * source. The handler should write not more than @a size bytes to the @a + * buffer. The number of written bytes should be set to the @a length variable. + * + * @param[in,out] data A pointer to an application data specified by + * yaml_parser_set_input(). + * @param[out] buffer The buffer to write the data from the source. + * @param[in] size The size of the buffer. + * @param[out] size_read The actual number of bytes read from the source. + * + * @returns On success, the handler should return @c 1. If the handler failed, + * the returned value should be @c 0. On EOF, the handler should set the + * @a size_read to @c 0 and return @c 1. + */ + +typedef int yaml_read_handler_t(void *data, unsigned char *buffer, size_t size, + size_t *size_read); + +/** + * This structure holds information about a potential simple key. + */ + +typedef struct yaml_simple_key_s { + /** Is a simple key possible? */ + int possible; + + /** Is a simple key required? */ + int required; + + /** The number of the token. */ + size_t token_number; + + /** The position mark. */ + yaml_mark_t mark; +} yaml_simple_key_t; + +/** + * The states of the parser. + */ +typedef enum yaml_parser_state_e { + /** Expect STREAM-START. */ + YAML_PARSE_STREAM_START_STATE, + /** Expect the beginning of an implicit document. */ + YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE, + /** Expect DOCUMENT-START. */ + YAML_PARSE_DOCUMENT_START_STATE, + /** Expect the content of a document. */ + YAML_PARSE_DOCUMENT_CONTENT_STATE, + /** Expect DOCUMENT-END. */ + YAML_PARSE_DOCUMENT_END_STATE, + + /** Expect a block node. */ + YAML_PARSE_BLOCK_NODE_STATE, + /** Expect a block node or indentless sequence. */ + YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE, + /** Expect a flow node. */ + YAML_PARSE_FLOW_NODE_STATE, + /** Expect the first entry of a block sequence. */ + YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE, + /** Expect an entry of a block sequence. */ + YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE, + + /** Expect an entry of an indentless sequence. */ + YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE, + /** Expect the first key of a block mapping. */ + YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE, + /** Expect a block mapping key. */ + YAML_PARSE_BLOCK_MAPPING_KEY_STATE, + /** Expect a block mapping value. */ + YAML_PARSE_BLOCK_MAPPING_VALUE_STATE, + /** Expect the first entry of a flow sequence. */ + YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE, + + /** Expect an entry of a flow sequence. */ + YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE, + /** Expect a key of an ordered mapping. */ + YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE, + /** Expect a value of an ordered mapping. */ + YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE, + /** Expect the and of an ordered mapping entry. */ + YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE, + /** Expect the first key of a flow mapping. */ + YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE, + /** Expect a key of a flow mapping. */ + + YAML_PARSE_FLOW_MAPPING_KEY_STATE, + /** Expect a value of a flow mapping. */ + YAML_PARSE_FLOW_MAPPING_VALUE_STATE, + /** Expect an empty value of a flow mapping. */ + YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE, + /** Expect nothing. */ + YAML_PARSE_END_STATE +} yaml_parser_state_t; + +/** + * This structure holds aliases data. + */ + +typedef struct yaml_alias_data_s { + /** The anchor. */ + yaml_char_t *anchor; + /** The node id. */ + int index; + /** The anchor mark. */ + yaml_mark_t mark; +} yaml_alias_data_t; + +/** + * The parser structure. + * + * All members are internal. Manage the structure using the @c yaml_parser_ + * family of functions. + */ + +typedef struct yaml_parser_s { + + /** + * @name Error handling + * @{ + */ + + /** Error type. */ + yaml_error_type_t error; + /** Error description. */ + const char *problem; + /** The byte about which the problem occured. */ + size_t problem_offset; + /** The problematic value (@c -1 is none). */ + int problem_value; + /** The problem position. */ + yaml_mark_t problem_mark; + /** The error context. */ + const char *context; + /** The context position. */ + yaml_mark_t context_mark; + + /** + * @} + */ + + /** + * @name Reader stuff + * @{ + */ + + /** Read handler. */ + yaml_read_handler_t *read_handler; + + /** A pointer for passing to the read handler. */ + void *read_handler_data; + + /** Standard (string or file) input data. */ + union { + /** String input data. */ + struct { + /** The string start pointer. */ + const unsigned char *start; + /** The string end pointer. */ + const unsigned char *end; + /** The string current position. */ + const unsigned char *current; + } string; + + /** File input data. */ + FILE *file; + } input; + + /** EOF flag */ + int eof; + + /** The working buffer. */ + struct { + /** The beginning of the buffer. */ + yaml_char_t *start; + /** The end of the buffer. */ + yaml_char_t *end; + /** The current position of the buffer. */ + yaml_char_t *pointer; + /** The last filled position of the buffer. */ + yaml_char_t *last; + } buffer; + + /* The number of unread characters in the buffer. */ + size_t unread; + + /** The raw buffer. */ + struct { + /** The beginning of the buffer. */ + unsigned char *start; + /** The end of the buffer. */ + unsigned char *end; + /** The current position of the buffer. */ + unsigned char *pointer; + /** The last filled position of the buffer. */ + unsigned char *last; + } raw_buffer; + + /** The input encoding. */ + yaml_encoding_t encoding; + + /** The offset of the current position (in bytes). */ + size_t offset; + + /** The mark of the current position. */ + yaml_mark_t mark; + + /** + * @} + */ + + /** + * @name Scanner stuff + * @{ + */ + + /** Have we started to scan the input stream? */ + int stream_start_produced; + + /** Have we reached the end of the input stream? */ + int stream_end_produced; + + /** The number of unclosed '[' and '{' indicators. */ + int flow_level; + + /** The tokens queue. */ + struct { + /** The beginning of the tokens queue. */ + yaml_token_t *start; + /** The end of the tokens queue. */ + yaml_token_t *end; + /** The head of the tokens queue. */ + yaml_token_t *head; + /** The tail of the tokens queue. */ + yaml_token_t *tail; + } tokens; + + /** The number of tokens fetched from the queue. */ + size_t tokens_parsed; + + /** Does the tokens queue contain a token ready for dequeueing. */ + int token_available; + + /** The indentation levels stack. */ + struct { + /** The beginning of the stack. */ + int *start; + /** The end of the stack. */ + int *end; + /** The top of the stack. */ + int *top; + } indents; + + /** The current indentation level. */ + int indent; + + /** May a simple key occur at the current position? */ + int simple_key_allowed; + + /** The stack of simple keys. */ + struct { + /** The beginning of the stack. */ + yaml_simple_key_t *start; + /** The end of the stack. */ + yaml_simple_key_t *end; + /** The top of the stack. */ + yaml_simple_key_t *top; + } simple_keys; + + /** + * @} + */ + + /** + * @name Parser stuff + * @{ + */ + + /** The parser states stack. */ + struct { + /** The beginning of the stack. */ + yaml_parser_state_t *start; + /** The end of the stack. */ + yaml_parser_state_t *end; + /** The top of the stack. */ + yaml_parser_state_t *top; + } states; + + /** The current parser state. */ + yaml_parser_state_t state; + + /** The stack of marks. */ + struct { + /** The beginning of the stack. */ + yaml_mark_t *start; + /** The end of the stack. */ + yaml_mark_t *end; + /** The top of the stack. */ + yaml_mark_t *top; + } marks; + + /** The list of TAG directives. */ + struct { + /** The beginning of the list. */ + yaml_tag_directive_t *start; + /** The end of the list. */ + yaml_tag_directive_t *end; + /** The top of the list. */ + yaml_tag_directive_t *top; + } tag_directives; + + /** + * @} + */ + + /** + * @name Dumper stuff + * @{ + */ + + /** The alias data. */ + struct { + /** The beginning of the list. */ + yaml_alias_data_t *start; + /** The end of the list. */ + yaml_alias_data_t *end; + /** The top of the list. */ + yaml_alias_data_t *top; + } aliases; + + /** The currently parsed document. */ + yaml_document_t *document; + + /** + * @} + */ + +} yaml_parser_t; + +/** + * Initialize a parser. + * + * This function creates a new parser object. An application is responsible + * for destroying the object using the yaml_parser_delete() function. + * + * @param[out] parser An empty parser object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_parser_initialize(yaml_parser_t *parser); + +/** + * Destroy a parser. + * + * @param[in,out] parser A parser object. + */ + +YAML_DECLARE(void) +yaml_parser_delete(yaml_parser_t *parser); + +/** + * Set a string input. + * + * Note that the @a input pointer must be valid while the @a parser object + * exists. The application is responsible for destroing @a input after + * destroying the @a parser. + * + * @param[in,out] parser A parser object. + * @param[in] input A source data. + * @param[in] size The length of the source data in bytes. + */ + +YAML_DECLARE(void) +yaml_parser_set_input_string(yaml_parser_t *parser, + const unsigned char *input, size_t size); + +/** + * Set a file input. + * + * @a file should be a file object open for reading. The application is + * responsible for closing the @a file. + * + * @param[in,out] parser A parser object. + * @param[in] file An open file. + */ + +YAML_DECLARE(void) +yaml_parser_set_input_file(yaml_parser_t *parser, FILE *file); + +/** + * Set a generic input handler. + * + * @param[in,out] parser A parser object. + * @param[in] handler A read handler. + * @param[in] data Any application data for passing to the read + * handler. + */ + +YAML_DECLARE(void) +yaml_parser_set_input(yaml_parser_t *parser, + yaml_read_handler_t *handler, void *data); + +/** + * Set the source encoding. + * + * @param[in,out] parser A parser object. + * @param[in] encoding The source encoding. + */ + +YAML_DECLARE(void) +yaml_parser_set_encoding(yaml_parser_t *parser, yaml_encoding_t encoding); + +/** + * Scan the input stream and produce the next token. + * + * Call the function subsequently to produce a sequence of tokens corresponding + * to the input stream. The initial token has the type + * @c YAML_STREAM_START_TOKEN while the ending token has the type + * @c YAML_STREAM_END_TOKEN. + * + * An application is responsible for freeing any buffers associated with the + * produced token object using the @c yaml_token_delete function. + * + * An application must not alternate the calls of yaml_parser_scan() with the + * calls of yaml_parser_parse() or yaml_parser_load(). Doing this will break + * the parser. + * + * @param[in,out] parser A parser object. + * @param[out] token An empty token object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_parser_scan(yaml_parser_t *parser, yaml_token_t *token); + +/** + * Parse the input stream and produce the next parsing event. + * + * Call the function subsequently to produce a sequence of events corresponding + * to the input stream. The initial event has the type + * @c YAML_STREAM_START_EVENT while the ending event has the type + * @c YAML_STREAM_END_EVENT. + * + * An application is responsible for freeing any buffers associated with the + * produced event object using the yaml_event_delete() function. + * + * An application must not alternate the calls of yaml_parser_parse() with the + * calls of yaml_parser_scan() or yaml_parser_load(). Doing this will break the + * parser. + * + * @param[in,out] parser A parser object. + * @param[out] event An empty event object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_parser_parse(yaml_parser_t *parser, yaml_event_t *event); + +/** + * Parse the input stream and produce the next YAML document. + * + * Call this function subsequently to produce a sequence of documents + * constituting the input stream. + * + * If the produced document has no root node, it means that the document + * end has been reached. + * + * An application is responsible for freeing any data associated with the + * produced document object using the yaml_document_delete() function. + * + * An application must not alternate the calls of yaml_parser_load() with the + * calls of yaml_parser_scan() or yaml_parser_parse(). Doing this will break + * the parser. + * + * @param[in,out] parser A parser object. + * @param[out] document An empty document object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_parser_load(yaml_parser_t *parser, yaml_document_t *document); + +/** @} */ + +/** + * @defgroup emitter Emitter Definitions + * @{ + */ + +/** + * The prototype of a write handler. + * + * The write handler is called when the emitter needs to flush the accumulated + * characters to the output. The handler should write @a size bytes of the + * @a buffer to the output. + * + * @param[in,out] data A pointer to an application data specified by + * yaml_emitter_set_output(). + * @param[in] buffer The buffer with bytes to be written. + * @param[in] size The size of the buffer. + * + * @returns On success, the handler should return @c 1. If the handler failed, + * the returned value should be @c 0. + */ + +typedef int yaml_write_handler_t(void *data, unsigned char *buffer, size_t size); + +/** The emitter states. */ +typedef enum yaml_emitter_state_e { + /** Expect STREAM-START. */ + YAML_EMIT_STREAM_START_STATE, + /** Expect the first DOCUMENT-START or STREAM-END. */ + YAML_EMIT_FIRST_DOCUMENT_START_STATE, + /** Expect DOCUMENT-START or STREAM-END. */ + YAML_EMIT_DOCUMENT_START_STATE, + /** Expect the content of a document. */ + YAML_EMIT_DOCUMENT_CONTENT_STATE, + /** Expect DOCUMENT-END. */ + YAML_EMIT_DOCUMENT_END_STATE, + + /** Expect the first item of a flow sequence. */ + YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE, + /** Expect an item of a flow sequence. */ + YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE, + /** Expect the first key of a flow mapping. */ + YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE, + /** Expect a key of a flow mapping. */ + YAML_EMIT_FLOW_MAPPING_KEY_STATE, + /** Expect a value for a simple key of a flow mapping. */ + YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE, + + /** Expect a value of a flow mapping. */ + YAML_EMIT_FLOW_MAPPING_VALUE_STATE, + /** Expect the first item of a block sequence. */ + YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE, + /** Expect an item of a block sequence. */ + YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE, + /** Expect the first key of a block mapping. */ + YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE, + /** Expect the key of a block mapping. */ + YAML_EMIT_BLOCK_MAPPING_KEY_STATE, + + /** Expect a value for a simple key of a block mapping. */ + YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE, + /** Expect a value of a block mapping. */ + YAML_EMIT_BLOCK_MAPPING_VALUE_STATE, + /** Expect nothing. */ + YAML_EMIT_END_STATE +} yaml_emitter_state_t; + + +/* This is needed for C++ */ + +typedef struct yaml_anchors_s { + /** The number of references. */ + int references; + /** The anchor id. */ + int anchor; + /** If the node has been emitted? */ + int serialized; +} yaml_anchors_t; + +/** + * The emitter structure. + * + * All members are internal. Manage the structure using the @c yaml_emitter_ + * family of functions. + */ + +typedef struct yaml_emitter_s { + + /** + * @name Error handling + * @{ + */ + + /** Error type. */ + yaml_error_type_t error; + /** Error description. */ + const char *problem; + + /** + * @} + */ + + /** + * @name Writer stuff + * @{ + */ + + /** Write handler. */ + yaml_write_handler_t *write_handler; + + /** A pointer for passing to the write handler. */ + void *write_handler_data; + + /** Standard (string or file) output data. */ + union { + /** String output data. */ + struct { + /** The buffer pointer. */ + unsigned char *buffer; + /** The buffer size. */ + size_t size; + /** The number of written bytes. */ + size_t *size_written; + } string; + + /** File output data. */ + FILE *file; + } output; + + /** The working buffer. */ + struct { + /** The beginning of the buffer. */ + yaml_char_t *start; + /** The end of the buffer. */ + yaml_char_t *end; + /** The current position of the buffer. */ + yaml_char_t *pointer; + /** The last filled position of the buffer. */ + yaml_char_t *last; + } buffer; + + /** The raw buffer. */ + struct { + /** The beginning of the buffer. */ + unsigned char *start; + /** The end of the buffer. */ + unsigned char *end; + /** The current position of the buffer. */ + unsigned char *pointer; + /** The last filled position of the buffer. */ + unsigned char *last; + } raw_buffer; + + /** The stream encoding. */ + yaml_encoding_t encoding; + + /** + * @} + */ + + /** + * @name Emitter stuff + * @{ + */ + + /** If the output is in the canonical style? */ + int canonical; + /** The number of indentation spaces. */ + int best_indent; + /** The preferred width of the output lines. */ + int best_width; + /** Allow unescaped non-ASCII characters? */ + int unicode; + /** The preferred line break. */ + yaml_break_t line_break; + + /** The stack of states. */ + struct { + /** The beginning of the stack. */ + yaml_emitter_state_t *start; + /** The end of the stack. */ + yaml_emitter_state_t *end; + /** The top of the stack. */ + yaml_emitter_state_t *top; + } states; + + /** The current emitter state. */ + yaml_emitter_state_t state; + + /** The event queue. */ + struct { + /** The beginning of the event queue. */ + yaml_event_t *start; + /** The end of the event queue. */ + yaml_event_t *end; + /** The head of the event queue. */ + yaml_event_t *head; + /** The tail of the event queue. */ + yaml_event_t *tail; + } events; + + /** The stack of indentation levels. */ + struct { + /** The beginning of the stack. */ + int *start; + /** The end of the stack. */ + int *end; + /** The top of the stack. */ + int *top; + } indents; + + /** The list of tag directives. */ + struct { + /** The beginning of the list. */ + yaml_tag_directive_t *start; + /** The end of the list. */ + yaml_tag_directive_t *end; + /** The top of the list. */ + yaml_tag_directive_t *top; + } tag_directives; + + /** The current indentation level. */ + int indent; + + /** The current flow level. */ + int flow_level; + + /** Is it the document root context? */ + int root_context; + /** Is it a sequence context? */ + int sequence_context; + /** Is it a mapping context? */ + int mapping_context; + /** Is it a simple mapping key context? */ + int simple_key_context; + + /** The current line. */ + int line; + /** The current column. */ + int column; + /** If the last character was a whitespace? */ + int whitespace; + /** If the last character was an indentation character (' ', '-', '?', ':')? */ + int indention; + /** If an explicit document end is required? */ + int open_ended; + + /** Anchor analysis. */ + struct { + /** The anchor value. */ + yaml_char_t *anchor; + /** The anchor length. */ + size_t anchor_length; + /** Is it an alias? */ + int alias; + } anchor_data; + + /** Tag analysis. */ + struct { + /** The tag handle. */ + yaml_char_t *handle; + /** The tag handle length. */ + size_t handle_length; + /** The tag suffix. */ + yaml_char_t *suffix; + /** The tag suffix length. */ + size_t suffix_length; + } tag_data; + + /** Scalar analysis. */ + struct { + /** The scalar value. */ + yaml_char_t *value; + /** The scalar length. */ + size_t length; + /** Does the scalar contain line breaks? */ + int multiline; + /** Can the scalar be expessed in the flow plain style? */ + int flow_plain_allowed; + /** Can the scalar be expressed in the block plain style? */ + int block_plain_allowed; + /** Can the scalar be expressed in the single quoted style? */ + int single_quoted_allowed; + /** Can the scalar be expressed in the literal or folded styles? */ + int block_allowed; + /** The output style. */ + yaml_scalar_style_t style; + } scalar_data; + + /** + * @} + */ + + /** + * @name Dumper stuff + * @{ + */ + + /** If the stream was already opened? */ + int opened; + /** If the stream was already closed? */ + int closed; + + /** The information associated with the document nodes. */ + yaml_anchors_t *anchors; + + /** The last assigned anchor id. */ + int last_anchor_id; + + /** The currently emitted document. */ + yaml_document_t *document; + + /** + * @} + */ + +} yaml_emitter_t; + +/** + * Initialize an emitter. + * + * This function creates a new emitter object. An application is responsible + * for destroying the object using the yaml_emitter_delete() function. + * + * @param[out] emitter An empty parser object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_emitter_initialize(yaml_emitter_t *emitter); + +/** + * Destroy an emitter. + * + * @param[in,out] emitter An emitter object. + */ + +YAML_DECLARE(void) +yaml_emitter_delete(yaml_emitter_t *emitter); + +/** + * Set a string output. + * + * The emitter will write the output characters to the @a output buffer of the + * size @a size. The emitter will set @a size_written to the number of written + * bytes. If the buffer is smaller than required, the emitter produces the + * YAML_WRITE_ERROR error. + * + * @param[in,out] emitter An emitter object. + * @param[in] output An output buffer. + * @param[in] size The buffer size. + * @param[in] size_written The pointer to save the number of written + * bytes. + */ + +YAML_DECLARE(void) +yaml_emitter_set_output_string(yaml_emitter_t *emitter, + unsigned char *output, size_t size, size_t *size_written); + +/** + * Set a file output. + * + * @a file should be a file object open for writing. The application is + * responsible for closing the @a file. + * + * @param[in,out] emitter An emitter object. + * @param[in] file An open file. + */ + +YAML_DECLARE(void) +yaml_emitter_set_output_file(yaml_emitter_t *emitter, FILE *file); + +/** + * Set a generic output handler. + * + * @param[in,out] emitter An emitter object. + * @param[in] handler A write handler. + * @param[in] data Any application data for passing to the write + * handler. + */ + +YAML_DECLARE(void) +yaml_emitter_set_output(yaml_emitter_t *emitter, + yaml_write_handler_t *handler, void *data); + +/** + * Set the output encoding. + * + * @param[in,out] emitter An emitter object. + * @param[in] encoding The output encoding. + */ + +YAML_DECLARE(void) +yaml_emitter_set_encoding(yaml_emitter_t *emitter, yaml_encoding_t encoding); + +/** + * Set if the output should be in the "canonical" format as in the YAML + * specification. + * + * @param[in,out] emitter An emitter object. + * @param[in] canonical If the output is canonical. + */ + +YAML_DECLARE(void) +yaml_emitter_set_canonical(yaml_emitter_t *emitter, int canonical); + +/** + * Set the indentation increment. + * + * @param[in,out] emitter An emitter object. + * @param[in] indent The indentation increment (1 < . < 10). + */ + +YAML_DECLARE(void) +yaml_emitter_set_indent(yaml_emitter_t *emitter, int indent); + +/** + * Set the preferred line width. @c -1 means unlimited. + * + * @param[in,out] emitter An emitter object. + * @param[in] width The preferred line width. + */ + +YAML_DECLARE(void) +yaml_emitter_set_width(yaml_emitter_t *emitter, int width); + +/** + * Set if unescaped non-ASCII characters are allowed. + * + * @param[in,out] emitter An emitter object. + * @param[in] unicode If unescaped Unicode characters are allowed. + */ + +YAML_DECLARE(void) +yaml_emitter_set_unicode(yaml_emitter_t *emitter, int unicode); + +/** + * Set the preferred line break. + * + * @param[in,out] emitter An emitter object. + * @param[in] line_break The preferred line break. + */ + +YAML_DECLARE(void) +yaml_emitter_set_break(yaml_emitter_t *emitter, yaml_break_t line_break); + +/** + * Emit an event. + * + * The event object may be generated using the yaml_parser_parse() function. + * The emitter takes the responsibility for the event object and destroys its + * content after it is emitted. The event object is destroyed even if the + * function fails. + * + * @param[in,out] emitter An emitter object. + * @param[in,out] event An event object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_emitter_emit(yaml_emitter_t *emitter, yaml_event_t *event); + +/** + * Start a YAML stream. + * + * This function should be used before yaml_emitter_dump() is called. + * + * @param[in,out] emitter An emitter object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_emitter_open(yaml_emitter_t *emitter); + +/** + * Finish a YAML stream. + * + * This function should be used after yaml_emitter_dump() is called. + * + * @param[in,out] emitter An emitter object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_emitter_close(yaml_emitter_t *emitter); + +/** + * Emit a YAML document. + * + * The documen object may be generated using the yaml_parser_load() function + * or the yaml_document_initialize() function. The emitter takes the + * responsibility for the document object and destroys its content after + * it is emitted. The document object is destroyed even if the function fails. + * + * @param[in,out] emitter An emitter object. + * @param[in,out] document A document object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document); + +/** + * Flush the accumulated characters to the output. + * + * @param[in,out] emitter An emitter object. + * + * @returns @c 1 if the function succeeded, @c 0 on error. + */ + +YAML_DECLARE(int) +yaml_emitter_flush(yaml_emitter_t *emitter); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef YAML_H */ + diff --git a/clangarm64/lib/libgdbm.a b/clangarm64/lib/libgdbm.a new file mode 100644 index 0000000000000000000000000000000000000000..a3009bb91bf26ca204bec55bd796ac2fff00f9c8 GIT binary patch literal 74744 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 BEdc-k literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libgdbm.dll.a b/clangarm64/lib/libgdbm.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..5dd471080480c259d310cfeef2cb9bad17996feb GIT binary patch literal 12716 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 Lj-Bma>zMxoW2>G8 literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libgdbm_compat.a b/clangarm64/lib/libgdbm_compat.a new file mode 100644 index 0000000000000000000000000000000000000000..20c8301b79c538d051c507d464cb9e599ad1a0eb GIT binary patch literal 15452 zcmdU04{(&nb$@rC;7$T#frU|UYMqQtK_Nl{fl$URABj`re+dP-!=#-`hjao3A;IaK z+I1bv4#|jdCJ~J?ac0_>iQQr;p44ecZMkhKCv=LZnbwUNd)j6u!gxHwA)O{bjcOb9 z_uKdFeS80qh#^CEX20*<+qb)K_x;(o`|Z``t6F3NY`-qpOKQshJXMe2`gUfUqD z{!x()dqqC7qjSfe?%wW<*w1Jawi-@J?Uw_{I7PhY=NzpX!$?AYDbv1@nR&ij(-&TN;4@6V*t{oQ@N zZN2yH*^x>Mhtjt<)oXx&cj8j%bf1=X^rVt${4^9g1`;UKIuikx{9!pItb7sb>`r&} z_L&y;CU;se-PzaM^8m4&*ZRId8A|EE`lco$`<8|cSsmycoeMP(`R|BGm4P6+3}!2U z`5HhjL-~GWrZ{p!8rthSlbNK!lz#ZqFkZi-zu%=`{o_Gf7C#{Vc>Vn|H;DH9`n|by zZ12Zt?~R~MzDT#avBfrD`W>&7Guys5a$%lKVf;g9JQ*E~`cu0^j!by*QB)kB@U9!( zBm-L?Z5r6h-vd#ZYB%LIbqg?UEI;AZ)Yh_JEl(k82LO4kvI$Q$Bs=Sd5;0u`|35h zc1PW~9(>)1%*2;p>HDjj%+HHIV4tWz^tu;;jmc;{;!iOLwh5C}{VfwLNk)@nQVr-D zWYt3eCegwc56YIvaD8^l`d4~ zS!i<@nRJd`P1?L6oD4uEwYhN?>ilc2&9oJ!i)r&RB{4LrbF@6B*=w^#Nm?t^=3GC_ zQtQtN7t?0dK}VU5XJ$a9J>=?jeY%t~n^^5qbh&v=foI+T!!PBTX_fTM@xVFIe_R>Q zT&T;-(Pw?oFJG79nakmsC%xz>z4IHMXFT*tL`^H

IL7!}o+&&M3<9)b!7^qL{3} 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 atI(=)&Wz!w6O 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 z z|KJeWCy?F)_lsrIT_UHc(^!y;I`ej{$T^8R^C9%U$sQBE$%skFg>FtqUE0+-|J9|@ zF?DmGgR`N(WzgMuxSDPiy{K-yX+-H(|KXkYPI$YteSlMZKWIZX5j;{L< z@%{#3l%wp1qdw3*JM=6KX{UQcJ8l=_=HYi8;-fn0M|_(Q7sdG()R6;5oZp7HUNmB( zPuk-$%MsU$h^x-;U%6Vv^+0r79i{PRg!f~F@iO8w<8mTwx<~PC5Mta|8FzGMhErr8 zu#3}8nJcy&x7Q^{*M4tdt`U6#dXjV8EwbN)Zoh;4a~a=G-fHvASvt_y(YJ?KF!Oi8 zcGvG#wD()!+tO$g*`}WLSM_g7lvp+=TI94_>R(b6><;SS6noMM0lnt>*UwV_Zjkj4 z`kUy=Sh2+|zPB*daG#($c6{~sw(K0xCDpXg~Q6EYFPWALPBmB)S@QJBZ zZztAeM2Uoc%S8sI(+xh-^>pNOx~-wgWp_oBj+5@+fci&z{!?4h#(3x)^zC#Z^725Z zae58X40l;=TW8MB!D2ybAF-?r_o5M&A2tl-62G*xWMYQfQ|C2OU+b=3w8V*=r)@?( z)r+Nn?tJ<#nbvSy)zaRX^J-^jznzx?ua*e$bV)B?M?a%qQwhrM9nebq`Z{tAaoUA4 zd}q4b@NCRLc~ZG%7~kJE8-BiGxSLXqJ|}$0KUqiZiJ3=X1HW^h@1fUm zQGQXlu2nVdeO66ur+WBX*ti3zi!VAwPRUof&c5RiIa@);^CuDam%YKr!`;ie;h$d3!Q0CsQLIs3PhrL0Px*+>t`gJw)3@ui_G&2W7vr{H}eBd(i!EvSQJ z?}J|z8Ey7$$*`Zx)}Rb!7`6r(M#(F_NyztXqRBX43;#{>I#k$npX}JhyT1fG`bF5& z8L+F&V) zGkD%yiV_`X>^5zG(IAq~owq0trTzEend0j>gXaqQF)_(@X3@_ZFGZ7oyL<*yn#hK? z$b3m`qA)H+!|$SJcS^qsOTQ{^lHHW6H{vt%j>2hB`D?~0!%(tV!=UF4?#Z~X<|lo= zZ;RVeyD;^laattI`Y>JipEO3V*+yZzA&Uq1UAUi%`@V#kA9`><19D9rUArw^$|s*y z-R50`%DYlLf2P2{2jO@VW`9^}^FK*>nKt^NZP*oc-T9e^a7z%TDR-+qv590aLAVCO zyj&hrdjdMTH%(BSTz-__t)wd}L%MP_KU`PHAM{`^@sivI{FB>icQsv4INj-&7ip=s zgq?4rHpb=i+-`5hp56TWc;Se(va*D?^ZKtNi8^l9bqC!p)(6ma0qQp8)Td!#kYua{&oMJB! z8DqP6PTze=p(t@y)7mvH#%4+ouTYf8(zI-aoMHwLb*$`SroKC0p(t@D5Ot{>A`ggD zUZjvylxSK&(}FRyv4rB)v){=;UdeYSP?|(5HEPg&dw>SXyDdOyv!S#O z0S%F;9f-^50uW0|4k4#-DC7_>O^XNOGD=a%A-tMzh~`Vzv=N$?4a9zZK)n!$L(Eht zO3Vl1wB-Q}lkx>LUr_U{(|nHsWk|jjO?zGOIYg^MQR1Y&>%hZ?bHfY7u}##pJWVSC zV)^b-C`xS7ceewvd^O2e1*RaoS?f5LIl7Ip0Hx8IHzweiSoL4$#> zJafb#T2J_cnn}y^%Ckd`C4dJ)3$&&+Pb_Gt-h%v^{`!DM)`jxTq$MIO@<(z|SaHJV zvICPmy?`kU!pYsl(I0-bZ16h(JV>mxU}pG9plMl^{NpFxE<~;nFW{Vr^j_aF(U_$D z>=qUF`yCq`^*w&p;{eWQdOX|XxgNjl@qcg%XAft*GufGfbB;6DS&8#C=O3JJI*&R3 z>}+$s<9yfIGpc7)0?w?c*-?*2?TI=ObtdW}&c3ext^uyWt{Yv$Tp6yBuCKfP-nH4a z!}Ws8=Dr!{WSmpoGu^l0T;TqiyTD!OUW0Q#&S%`uxnIV4)cv;mlH2B)jB~1Ifv3{5 z%(EQl8qZqKew@#E4tie3dDQc^=R=PXJsIZ|oKvG`MBf(u)#!rg!sxX)TX4RN6U80l zz&RP`tuelsFU5Q{rXZ#;W)05$I1k|b70#DpUXD2$^LC7gHDbRIJ2`f0?2Opka2CWC z#;(En0?t=rUyB_bH##mm?&i2J$IXlT3C_K7`{NGAy&RX+vwzQVI49togmYQX`+C;) zT-WoPJ^!ia13mZm{1wiT@mcX>;wQvUioZGjmiSxa?}-0;{6EI$#V?Bw#;?WsjrecI zKY;W5IP(%Z6aJxhZtq_G68nwmH@4rxevA55^{ei;x8KwKe%kM6{eFe>`F^kV`vcDC zq@GFNNcv_{BTjGsLH&pIPwzhl=cN8$=-)3nDR}_Suj0HTIWM^YXK`{MxjK1u@}6Y- zfNY%O2i!bhGR|o@{R658)DBoP;L!m;9I$gh>ltZoNWV+4|o^ndjn1n7?CnI zWqitnltU@6q#Q|UO*xvv5jdaQ z`OBTHJ5TTI#5uHaWaF0`7c|y3u5Ek@=f5>JH|}rzS>qpZW;Bgz8r?LeXEcS`GU2$LPIlt%Hp5N$c#2fJw zr^%~tP8|V056MEf>^G%#@_j;$7=xy}=Lhs4FeK;5Q4)&gyI3;mf;*7*E z;rvIOPbKb4{CAuO5?d0VP5edTlYO4YQI7KZtOR#-|&7nB~3`0lyq~_7y3``e=E-EIFI!I&;G4Ajbu;q z*yM@HUr4?+`O7#LK$pIr{P)QllfRw(aPoJPvr=wJnSygm%D<*GrR+(0GUch1r&Ind zW%LbSyy43@H{Vcy!?$pL2j`iAX9s3wPs~2G^z70s|9JoH6}MOXbH$d5V>rLR|6leu z?ElhlmK-iUTzz=$;cpzSJKS`5_u*-;%y>ooe*Evh@cY2;m*ZTA^LxMl@$W@zW^2}4 zdGx)bhuU6in{j;haYMWZTQ>?PX2rz_oH_XT z;FE(-;XH%$;*FPXOdQ&0=**#uhOWl>5Y9(%HVu7Z=+B1!eCTsSe>wEmIFI0b2j}}k z&kQ|>^Fy2$arPM2W0+@H^sscCb8*hYxoFr|hJ6j^w}yRZ*dCk*a1I!rGJHPHui&g5 zb!*nttS^t5Kjy$~V&1PF%WJ%+QSAD`{}mmbAI4wme<|yd|B}&}*V)?nr_R=jkDhd# za-8}N&IeCFc)I@dw$tK$@0pQj#+{jP=AJY6oq6a?! zIDhi|+4C39w|;QygP4w+J0^F0vE$1fogI}Qp8rsY&Q2jNcBW&gP)4Em)?2*OZ@+CC z_GHe;oj!Bw!rVnUQy1oVhYs~BhRNODAMT}D6$h|)3P)zThl02blAjX{Aa&DBH*ye zzBkh-)pXdzT>NL+d`Tf%j;7tAX_P8j(baw!Y!h712qp`6GtK0Z<|XA}K!Dkcgt+*g$L6>H()kf=!L zpjg6vxwNlEl7o3{!aDU!jZC|-691{O{jKVMy+jl~{$07$ShX8w3i>}+7DW^xe2a_o zgQK#fW>H1wd|WHUU|@J9cV6&O;|mXq4L{m$cf~DGUcEE?tpsG zu@#s16Rg&efkgbPrByu^qfWOE;qp?a-Ez<>7pq~XTQq)gstaE{R>O=LWAQ3gE)D|& zeQ9t22a+UL>sU=J(Mxc7!LwfR(ReAZt_ffLL%dxMEE74iXg{wkDYP|S8i3UjJ;dI# zShxK5xUr)F9EVwSZ}CS=@7 zJg&RPwV%d}F3lWX8sO{rpwL_~@|;{T0!<)0MOS?q+%&9sdDb01n?O7*$Zin`@f?ld ziA+EFp&1{V-FV1Bd4Uxj$dl!mb*({~J8gaZunakr&PL1z^GxuH_M}*M9Ui!eSZ$M# zG+5MAnu#|o&6uI3G`C_U1kLung<0jWG}}eTsm~$Jl*XfWBh#FHG-tSwmx+=2(IE4{ zXj+3j=;QD;lTP%D`Ja&wk!iKg2Kz93Z|XuKbRmd*s74-q3wrP!iynMi>A`xrBA}}t zR9p0*#MJ#TJ)qg*kRA{Z2K+u3J+RCkW}daognQL&?pv5SJZkTqN%|phU2Yb!Yd(h0 zinr40g8!lUckXVZ@r>Pp{Ig@FMrby^6^|jTbVJ#49-h0KR=e?P029+pes^`w)Vsgg zAbuwO%?9~8{$_*zW`n4W)3yEb^TtnVgQyXOCN-Kh`^X&Oa)|x-4?6_ZqL5QOr)dW@ zjoQ8BBTBrX5N3UW*zYlgoT5$BPHGwrX0TscZ-Ma_#FnTKudQIIc7euH?E&JD_bTKR z`!sF8racG5AsS-n2QEd z@&PINfRua+K|W1;PSaijQt~O}5N~L{R?T-z)7muc6cGE3K~I|HO9Eo~hA0#zvVk}! z?*vMb>39iw|TXg;sz8=`6HnnvqT z*zbHGmZcJi<*U_bD-fsSVTGau)?q4{v#0|A3D8{vV)-U2)GWw1B1sf!Oa>Al8EhAeQtog`xzlW>NA1Dfxhud1==_1 zkr70}qy~)uO2k9v*EWHoJV*xxhQm76MmcUb4oSKY1sCVhqXma`oDIbZ9vW$*W6mu# z9-{DZmvT|m;Gt4uS*aYMCh}OLT;d6z)PQ2ZR|)>pI9t*O-zSr*4$>GpD9rGbvTk%g zsWDpmF^970$G<2FIV=&Ukjb{tyOAMyXh{54+@|(Qh*As+)qoJC0u-tXOpz});y~qp zj%zaUAlpN}3PGV7!<4Sm3gr1FTvVGvzQ{_^b2CJ_0~D%hA z<(M4X4&Bmh=41%Hq(cw3^ADc2(Kq;Ig%N}4=I-pU!Fd|u?{*~K11TsSdPD5hM%X8e z9zWhI4;o=drr~(MAD1a%YfY!$M^Ml2fu_x;M+J^!xV)d!2>Zk?`&_$@un&SfuD&E$ z=|Vb2~PqHsOU1m76NizMNBhyAdV##-5AeVz=S84-MuBk?pHI1fC(Qha28cqD%8 zn6Lo5`+<@8PJ3vdA&taCq0N0l9c|dFQi~CJ8kx_J5_`|tZJ9I@TVQLSK>NUU+WPuq zF=Dyq+3|H5!Z)eWF0yUdm(_}Whlq~$hb)W6C|qCBH~OufzE#$}CTSRrMtza{Ki51v z4*Se}lXe=|%LBj9hV}?8i^iy6AJM0a|9tp|?MRe+l9bHHu~&sg4QVf%fp}>IU+?d+ zhxYeCHZq%f1b`LOjzVcqo0HzYx4fQ|*t17R$V&{VOB~<=wBPl!Nbg&ie>{i%t-O~>=)FvzR$3`fE;o7~nGck9GyUkbN&R^SX(!$J@0$L| zG}5TOHJzjnw1=t{90S|BW zhx-nEqR9(6vC6zxcQTTE zB z=5v_&CmsE3kU4TsZ!6k8f1P>jK;A~ov|42SYsk}hJotD#jrxOxq6GB=sflctV=m}u z06nZ}dw`hs91#0Gs8AG^a-i3Z%OTFwc@#|ry(0C8@(6vBA8rqL(>hnEDzeun^Yiqe5N z9nf-#up1MIx>|NIABfXS4>6W`J&;NpkV>28qd5?jHXxNYAePUZ(LmZX?W96ZaaQ?2 zhaY1QDs4b2Z3-c6nnrUVDs4b2Z9ts1Y#^3?vO-Z}CJ^<_&@BPtl;5FHl&A&bv^@;O zY1;+Fq3lrzyGnsLj@N-$((9QaVM%GEh5bT}R4N?`L3cHcW>Pqni9qa^Rt|GICIfLg zW-5eQ2E-+Zl^06-T7@t-1e7N8U>^{t_Ye@L_n6{yh&F{V?}d>YPH#LA%bWrR3Sll*^R;Nc=QQo0rqOO?_InJ7rD{_M^DL-TEENq}vQ*bI55ytU zJP`ZM1L722eIAJY?$Qz*(V@JqLwQ3Xr)br*W14mnh(l>t$RRFhJ`#jvx%_@<_L~kS zt~1#{oI?{8!ftsW&LP_0%&A-tgg=zvCWV|BS}{53fVvj-? z!qGIESHd6sw!mS(Zve4;Z9ps^?VKir62!2EDnTHYZ!!=VAfHbm%#>*wE#s!Um?;C| zIPO#kyL>fYk>)GWw1B1sf!Ht2T`9W(#Im%iyAHYhn`LPOjpIG3kVBl(w07kKd+9Nj z$myVstL!&MA*Y~?woFUZv=ktgWik-UQUt`Z(Ee)`)U-TiAEav`ehu(jUw?8N! zQDTqwyI1?&r~U5NG}@ibX*&qSvfPf5!wJY|%)A}6IgY(;&a}NY%z(YAiJR^ZgYQmYoWJw7R z2c{*(=W1o~$^hU152_6@&Agi$6NJRdg$Pj@fwq~ocV1=owGiw|xI z-1%_tfR)aJyB%&N+=;MV_rQGv?s~YjsP9|hrXc$p;JyTR7tx_l`{1UdJf4GV9{-!? z=Soy2*s%DS>OajTQJ&Ia!*GI0vySegm@sp71i5$&=(|N1{+=kG$2?xyJ=@Mh2`H|v z8=)j!h<`XeT|hC^u|>I*vdhimeb>SR)x+@*iULK7@D zGla5=QoZAl&8VoY&lHNCn5a%NMb1otM72{b$1NZ}3pzzpQ(IevSaTn=>@OD@5g>zC%O>pkN4TosflLnOCHu>V8_# z`u5z#`S|ET_$HnRPgZXJHm#gU$v(ag!_*e)>NE zzHcdB1TSX}BWDELK;HqLf1fezuoHY88HRVG4Eqy=>&56J z$(eZ}@G8A&F>|MX%WTLhJq-_-@~p48zkj+lX$;Fg9+xS{l|SUO5dI zA(3gwL>v@0#qEI%GZ2?Y$-wzmw~gZcIPt+q?9D(}lorZ&3h!#+OiQ|o+}QW%Mwn8z zYbeXBg|`#oQCO*0(TS^tbCBe6w7l|h)7S$4rmlV*Sz49Iw6|M($gYqHsww$LtmVC{aEPAJRc0NsY3H2?k&P_}08m_g@rI9XOC4BdF zhL1=7-Ze0ZRqGPT38}(wQ5UcLD{4Npn7G~_Lv%E1mG9AyRT{#^t#7X%q z?FZt-!?lBCkiQWpp17-|49G(l%kZ({EHK2=R4zWUFRDDQWCI&$zu%o98#w63@N`gF zbV+MBcJdL#OS~>MgFaKme>Gbf8UM7QA1{7Na{=;`bTJM3XWBWbj}}`;_Lgj&X>T)( zk8kI!>CH#nq^Dj>+@Gb5rSuL)-6&OcBh$yWan?`VVK#f#73#*?jPSgUeBOoC?aPFJ zrMev%zWKJwHq3C*Z17`{eP7;#|}Ve-Ckb6W*R2W5hJg z{f21I2j5`4DchU{54mJ(_)WUjx7WgEY;MDBI<3+fi|Yr-x22Z+tJV1@E}MU||C{9> zKBad<(T!kH}dx1khjm{jq;{$ehYa^d$?y~ zMOQAqG%)ig>y>W0v~C{1_1bll!eZTY`AIi7HnDC}8<2F9>M`kN^fl_H_haa0cX>O) zqMP>1=w{^C2&`XQIB$0%e|unmrvoddXf`{v$5SAW|CX@!jbJMDlt zy!AlrcauVx?a;KXnzkK?!#kzW_07n$Uz&$!S!f=fP?SI!Dp`tvSe6on_#MnltJJiW z%14ygsSsvf)LqQHXg->KXTSS2tp$i>IRwPA98oArw5z+AX#!%uXlqM^nI?rC0&QVM zqnUON5B*^k-VlX&R-NwR?bFH!-o2}kQ_R&gnscYvoZ=234zC1=zek4rX2%fzclC0=|}|Pc#{-z%Dsq8^J-eU z^1-w3?02sAJ74qBj6D0L8F@l@3p5bN+n|s`Jf`_}YCf8!XTLN{&wlp-vEPG0oPRGV zgh51%S+XqVoIA=AH1=!GxjRI>rqN~-4v)q=*>6DIb%;vMM|18h%SuhF1!BLOfmoKU z3SsxGy6X_FK^synbAH_^W-1@B2ih-< z&a&S-72-E=Gp$I|Xda&9tp(zA(7p~rm_<`}vCtNX{q9r9DfVkxi>A>WK8JTiA%}Qf z^Sz<@S~cyMrkw<0zqFH*^I$Fz$2(skyvbS9?$ES6Aog1c#OVks6eVbWox?Nd*B#;| z&?sc5pqX}#XTd(>TroB`wT z)`7;dtXBv#)S5;+E;&4!H)mN+X}+_XkLJ=jJaaCcXVBU2e%wMoUf`|uK-9Ff%Qt$n zd^AJNWj+E8d5$9sh{MZP2+t!;Gv}&#hMMEJfV&woWSR@+II@B0wQY9c1LD|bD1?<& zKpY#*_Hu0IY_GH1w{15lA6ONG?TZ{+9#E!?<6)qiIBh^2@-ZL|xlJLbeBl_=PH9@Z z@&Ubvm>lvxAP)Hm5KI5MLf9>g7e{j(F+dz%yh2WqsA)-><^|%sx>F&{+-trf%~zsn z0Zj`6vEOw-EX#U@qQowB7f(qbmSwL(*jKM<`!(%3AP(=WLRf#N`7UTanhxgh913C0 z77+VQ#7r}aUB1VEsOXmqf1dEhoA2VDZ^8X6 zVfL}ab-DC*nW3k-n?jLRQHf7RS`TU%BIngHA1;Z$6Bo^hB%)z61nxSxS#V#1OU=d< zJnUz}ErLr;#yxQJ;GTjTfSZkn=t{T&xa;6P2X`~vA$TZJIHt;F zix-neLwJ$DbcAdU`(n_!|MUeHIDUt`@lO^jE;-N1zlbvD;KDb?8 zR9s#}7Ry4xXWz+oF@@w=jf<>Uh(b9|_KYd`?l1{ZO_nXhGZZ{z<3f~Sppdl-QD`!k z>>g7n5c=XYS-=oaE_lcmT6mBhWEGhrQ<_^*PWI8tQ!XuKD4Y}oLpIaGgX|#dslq8N zS&|=QI~ww}fnryOjX%qa7tw|&%9FIZ?5k`A)5!iRN|(hT*bXh3$Tq9kyDa@!jEc_2x0&BaXyCU5H0Y{)p*Bb9xk*5u{#i7=Ee0ie(%Kmz*e~Q^+-IA zayH=i6nyQm4mh^9Vc|RYvT1aRuVcjW`?fS-d>&~`oZUmzWB%ZT58ElqRxNFxk|359 zpw0Lf@S^r6{s?nT@7ZITp4qT^_j{O+N=xyUPs8=hhAF#$jkzWI5;4B^+Oz{Z#Tzbm z=IoA*s~cs+z4&8{xBeRQOYa$rU->cSmezppk9aq#lpFcsbMn_KNoM*Y<%tM+{YZx? zGs)|}!Pjv$ncuq(nJG=C%%hB+FYb=*S$8#=sSG1`fHu&pgYO8H+q9_gaw9#WJ_tsp z6pE7X{h|70m+Ne)fnb-7c3Su5fYzCPuNewqyhqdKYFZ8u`G}J55QZMWZvg)ZMajlJ z^@AL;aR}=TREz&aLmwRfi54Xr-}L%)yl?=j=ar}xh-qhmSSlJzr4)q5Qt=dnZDN{3 zA>OsbQYGOnAJjvG7RjDgIeJCVEV(|J-Y;$WVuLiIcqtIR-%wZume7#~Xl;q`XQRR? zgS+qy38UoU7gcZbxLV)BYJ!n!w4%reli~fX>${W>I6k{JB`F3SgO1+*GAU1YOKQzF z<@SSLvnhK8zVVWqTgI1bQ{H0XL85TXRupPMhWiRFsWsb_#KXR1dkDX%_``jLzAYdd zl!}LaQAMDG)FRxMTZPN{Z1RM+deM}DFDgmOmmwd#UrQ7|(v?dO)bLg>KVrKs-zA+> zo>Uu!9`aVIO)L)NSC@b(4_ByV!==K0yZcH&d46S?wGVF-({G=H`0gqU&h^jm^p) z>y<}n)oB_uf~qkc*6K&UscD{rT1Sm-I;PfsT-D-@6?=Oo@;6vJ z4daA2M&z{Jmh=8`toAx?->@xH-2LQ~`M&q(8*8>L#dqqX=jFT~GtIx{qx6FJo zxO#VCyf{5}pm$!)gKw9Q8<;k4^uR&$9!mLX`Gg1mT%H5^S3!Fi_YwyFw0t4%Jw5Qo z@~`3E)|7qaPY-;2-ctjgn%4{WmJj^Nyu-LR8nn>^_u_hT-dCQRvU^&ssDI`{XU2Xl~AyVyrgWAzUX4@r~soW8JpZqUVVp3ik_k+x^=f z6ON`r5z}l%NiHu$3gJA!J7%*Dd3%DYzWH}3hynF5BWkZzjSfs)!McJ;pwAvMdrbv z2p+QxNglVn)aqNro6(2kbsL|4yqgUk%g4@rAoL&5{@Vq_t;jt|FpTM#r3 zd7Tbrz4k$~>f{$IA2e;Nrfmn}Q1$?^RC^V|tRWDGd_?hKE)$4lc|#%WaMiS9nsyS1 zLry_ookR926eWs)IK3r693Bl!v80un7SyzRfH=JM3Sov&^KI6ATQ%)rO=|#BsRUA~ zR0wm`>MrK0fmjwAUtn3Y3hCJ~sLh=gfA2R#jmt#de$^Cz+uQi!o2iXe1&0YkloHmKx{qCtL$J05pvQ3kcQ zcfw7FI|IqghPw-{53YH1-(#Q<==dx@#Aa;_L3p%nsX0VVpo%%J?-J#+?2F8m;iC(; z`{i6jOL2AC-bc+JI-*{C`p==hh}lD-q6=^7hhEb;MEcVs`ISZbZKK>5p@tAOekOgR z=lh{{*jVL@R4=@xPZX3}*Nu9l8}gpniVs#SFDxMqQb%`Vs&tFf%uHzMQ#cr9JcMlL z-hde}=~akA1CcS%D5hX2S+Zqm3WZaJK}FI&?TZLf51B%7k|Ao>JVfb@ix%pHc&36v zS{tHF1BLXLDc3UYO5%l&yHdG__aT(bl(dK*K(}wVtl?BsqC5o^RTx7K^$@PMD{cIw ziIcqY2=xyRV`DQ_OggMpf_|Tcd87WpOjXbC2kn#e52(-=Q%+ls+HSrWMbn#0BlxJD zZml8|1XYD9dc;}|**}<=WudSw{b%rfNAV)~Zu{ z5B&plnm5lhe9bcP&2I3srBQX!sR+RN85&xmWP=suV7;iP9b%aXhjylI{H~~9ZKPHmA|8b4L0f$u{4YS5sQFKqBh14_ zLer>AfmdfE%r_z5Um#xtWS9*)#>zHw*yx8K%-Kf$wjBs3!M1Lj7k;vAu^aOcP9DOE z7x7I3w9)7frGh8R7T@$EghT#+4cTgM6!j#3{VY*`2x0x&*o=FrRh!F1{b*b5wiw$c z{1#QUh~ohK$GAlOCgU61HbdTeOCI1;!A)6+hgR)V9-M-_k07i~kT*@qyU8$`>Ji5# zg!LxEI-FR$Z4msVLEZw$TL5{d3ZrQdcAk*Dx!@UXGn)2DnFdx-xzwOPNNG4a*w>Np zcgEp(Tm7~Kj7oP(-hbMbhVTX>ynKY0kMIVg?~|{>n*yGf*BXq%(y ztWzu)jPORIEGS-^Si3C`{mU8fJ6*(XgbjSU2;os*stB|`4zXYd_;w?#spxy{Mqb{8 zd+!>tQfGdQbUtDH^S0C&v1|@Tkjv2jd<5^r^WwdyQ@rBzkAD|z-;H*4A$Cz5#mfEM zT5;MAJm~CwTYiu)>V3lZ+@q zzvOl_V%KNq{o?SYXrvjor_CPK^k=Nf{}XmT{1L12kKr9?w1ebrlmXt0iZ3pSCbU62 zyrAiLqkSC+L%xgE49nyv|9`}|!Jlyb8CNI#cIQuzi@3$!<9PorS~Sb%xG*MyI6e3x zn&I-5l1-Z>+|g4Ek3aJ#8(aD zOeu6{Hg;Id#n{6MQe-Pw#hq)U%W z6h!Q}B%aH?$M(~D*Qq({^+~?a75R0uTD*Um${wHl%Rx^=ei6^*@-=U;*--8-|9I@A zamB!X!0xzE?o{S9?n31rjdJy%%>5{HKgxV5o;PTsZuX?CmhPC*c0k?t;B@!`^uy+m+K{<`tg(d#59As_zsR+1hKhoit9h z2L36}X^as0mPqx#CGy?gH-(RZkw32*<0Ji|e7BDCT~An-vngoD=4{n*@YfF4VD?xb zuFHM#@LFWQlI;ALM0kJu^&s6FEzKE%|gU`TOYDPcMHX!}_fAx4ZZ* z_g?2un!k~8p-g1w*&)01)M>*?ZbgfdJt(3%giq5Bq6(KuNfZCLa)mjy+lmVf0ed@-&V1ppXyj5CB3q7Cu5dN_K%pT|v7zrV;JzU`c5< zjMG6YA$c_c4V1AgLx5P8bRd>xghEb{rD@rkHW`RznF++Qp#_Ptpj5DE-1vR&NK&tVEJNzIOKF7&eMrN_(Mti z6vAXD5XVsjL_Qp%1c<{6DC88CnikZwdw@8O?LeHTEkGO|EzsofXx9pdN4r*7zBe?j zRnyvlI6R0Uk_=zG#|V9UtheyGUU}AbEKa#O7>k+-K6C6o@{Na)Z#bL<{x1-}`j*+% z`1`AP#wa%wzt05&EXV(?dqh&Ox`+mc(UKCcJUisr0Q^RR{G(!Wxk%EpRDQ+u?fQ7C~RK;O>I!gL?|@e7IRCmpr&D;a0+>ty;Bk zy)Yx|;kLou3^yB<@L{+CxR1fz2X_zLbf{ws+^ujA!F>tt8*r152W@cI!)=Fa9^KDi zP=-MuVbklQKFhg`iAoroT~OWLp=YXc*tR2-w3173b5+1mGyMnnzJ^c0+uzNLoTRb&7r!_l$w%2X?ZbQfl%y^ zgvF&;1U0vqr)&k&$Yv-?cWd?~6WJ3LSC=*WH7huFvNg=32(r&+#>F(ULnej&kwsz( ziA!@(WSc@1YQT||VhYlpOOrxmuR=VNz(bZRMEMdZWWz#~8K96g3sEM3LUt`g@q$7Y zE<_m#3fa04WjH8g^+FU{eoFR_Dc3XuW*T|;6EgeM4=d)PS2tu) zNqjAnW>Wi#gSnKa!Bv&TywL*$wbvlGus9H?&aI-22UpmU5Vlvrx>dnb7%0xSOvGLF z{g7kFjPCM&$k$QOX)2Sf#*9d(PyuKrZUz*Oj)}OupTn2siV#nb?1$x`88NGIqgzS1 zXk()F;FWqLY3Lx9Q~1}ec#))TXX1RI+mIjAaM3|)t0~@_#%IajSNvyLsaM+rBTFt{ zh6|(6Gy5#kr{t|A&Orcq)VA*PXHbCkFN#T9Kt&%t}3md#Ql#Fu*) z%+*GRpN&}eZjQDi3*`#5-WZLkMmqC7zKjyg`23GZqxn@S?88XRLHS`6naXbsMrx;^ z{5MfO zt`7LH+A&fGev6UE;8%q#rvo;;4+?s?0i)D3vvmS9MYC3wwm0E7>*Bbp>f#f&Po|4+ z*=a_qPbTVt}{TdgW>n^kkLq2fI=j z6hHXF@}Qtscpg|~HDx@b;^Y|!PJ79-pI)5Q45sFTU3O&>CEADoH2#CHWZ*v}2WnBs zDc=Uqw1b*<2#9<{$!)->Tkz3_|AeAMEsQnCu^x!y*bc;TGyrjUk16DoZyjRVE=|Kg zzl!555Qj(W89BTxv@w}B5r}C%jdFlEwmX10O8jVh}q}`297U3>SO5>D-FfO5d z;GI)I9PfIC@ct$sj$j&d$VUXzu?}Ug?u>6kf?{gce5FDX{8k7_UA8){k$JGLT z@WNe*+)fh>;$gTW@cR&4YEL909W&t4*lrG7^Y~<4ajy!-CSUtN4K17OR1w)G<7Zly z=F0|Rn%T;+cEGJ|I3x&NFlxmS=hQ{bw-e>#c1WdH^$%Hsqict>NZo(>`5*iXq9vX# z3k;JKPgdNwz8&h2rYI_<>~bB_!4{tItwh`*_2E9X+2-~9&-0-U>15@LboJUhq~_AA zP&Z_@3WuC)TVPlis0vmTR|H7ILg7#sjC74DlBb{|NLt5~n&PVbYIHV9{}iQ5mr$`t z-BdhM(OFB)kkLCpT%@l|xt6X|*ZM+b8qsw!g}%(%!5TB+5%0ba>&b-ex|Tb>LrV&; z+LIYQWBz|&Egk{U z185mlP+e`M65rVfzS?fq6lNiw3lV(Oqp;Qr3O5^kBZgUHpm=H5^(1o_pu9=(=A~ny zGcG#d4fYS;$j%P`NH+0Rf#Z4PQBQ3*>0?}a@iUdVumkq z{ZQW|*QL(v2DOKU{MBCUlr6ILYweScqlHZ2Q~cC=qRah^m_#%)yj|E0ojO%4dlBZ} zb+2oHDN8!mUD^N%N z?P$C-Ty#L@&95Qt{}LS7~V{OoSyBO2D6!Y`<-t!Qpm%?g8SglJ%N2-zHe*yX9!P=xvt9=jAx`a)J=f&uF zPu(c29jbWQx33JnOxjHzZ@8m>G&OZ!!l9e$cK&QiMm%~$*wJ6V8~5L{dopR)b(Tjo zS0W$Qpm%fO_oA6(cpwXFv5@Z{K?bzlvfEIOGf|EQ;>73;Sf_QaZ_6rb5w~Nmebu6| zbvvA5^jnY#RWy-!cA^K|hO!R34;r4;iO1JYn=}Qx;@kS|NG9G!l*xvRo!L|-O#KLdXyy_4!( zJt*%J{U1i{NTxEs8S)<=^p6=Xw=3EcD-uvH%jnI$Q{3zQb7Mu$j%e(Jr#S5?nLCDy zWor=^@;WmU{svJxfKlxeBlF>r4?A;SgHF18h{GPNH5~5ty+0do68BFx>d{QDz`EEM z4Y-*ohd~Ze5ipFym2Tf$zhSG-NW)vEfeSZ1TJCu8(elDOyyfd~iFH3HPh0m`Ijtr1 zu4|Yl_Wfj@TMQkDwM;KA?d_?X(_`ws)yR*G9vhOeb>s9Jq@ChEeqJ=Up`2&0N?kO^ za79mX*ZDWn+OrkVr}ss31J;pf{dym|3LO*Bt2Ia?(J2pFSBQ=mp`Vn_#(((dh41|H zhJ|=SCq4l_*UI7h$PePIPkmpTH@obH=-G8xySLkj_Qbqiwl4rZ2tbD)Ob`ig_7GJM8at9Pl9I67h>PAW z-Dpo7_~JS{$F(Al@g3f5v%Jy1&N+^_X7v-bH@IeFy`ZNJ`4ICv|GphYZ+`>I7wdX5M8|sSty?b6IT^(l^%~+dOS88|H%^f*41MiY-_JcPzA-Zmt zTQtvh*EV|+P;RlJ*_3-jg2--y%p_~meVzduGouI09=UP$oEto|p(_h+LmnN6yu*K2 zwr@2?iRvKlNyu9VS$9BIzsjp8jA$uqnc?wBUg-5n$l8SX;U|0Ss?2>Es6SJnFK>}f zqx`7;P#qz;6Cvy0*~GZpK|68Y*G%a?0X?$%%R_ji|DMAcbuov>A|18OE~IV4NF!qr z($pJi{4ff3V-QA9;zf2M>h@OHunoALj}v<{@dk;Fa8qe7D@JD0pYcs9af)$gV9Wa4 zp7UxC#N9Tiwz=Agb>lYIiH$w5HV=MX@Rzizx*f0f*?W8_zft2w$U=6b|6oy%)bToK8_xp!Z_?|QV*S+Y+j8)glRhU5=xH?W#~_cU7}0)O z-}M&O;}6I0n}4}JIiqJx9gXNcV0h{d7||!*!5-C-ctZztqkcESIDjy`2qPJzfTWj~ zhWk1`s-A)8!gM?zrr|j;weifNU+HIy&xV=8bVEN|9_?lgU@Mjup!=wK24#gmf9M(2 z>Z0$NJ2cPQh<%~N(_#ZpQ7Epp!@Gu)hu3h5iJ`b2?S==Pz&&DJh{ranYdEMwd&H5@ zGxO+>t~@>idr^0Vc%JQshn@v!AT_7qirf>?aksq@eNyu+D;@4M)Opwe^SS#1^rXop z_RfK>_~FimZY_mwO@Xcrhpy4+%~_N$>6kmMwi#v!1PCs39-&%}a2CDZZ25hPI7>9hCK%+9rr=_?l^x zu=cWfHSEufgqe4}3tN-%2h>@Nu5JP*9=e}v*!;2hJq7Mdc;4pX{sVAnKMd7j**5Fu z>ndnJ%eV79+s!&WN-Nr0vMqR!)|jHLO3(LJv^l!lS8ay1c3gOVSl?ccZph{jP}Xg@ z(xDsYk!GKxeS(S$ZHvDCm+}0=cf|3Adv4p2{3Va~T#(w>bM)KDm-PzY54=<1!N9^M z##1=dwrI8Y&3p?ZtVf|=Z^MpJI*ubwax=eSo8&>;*7}xx!~yeK+sjJ3TpM=n`0mqp zski88#a9gI8|aiS3a=1bj**Tgv{Ck=ol1KF_FB_ghO|=p@(eLv$&9s^iA|8X=@QoZ zvd#O&PE$Vg?i1g%-B9Jaw|1fXE42$>@Yok&9e?ukPTL~vtLRPT?74TN$9?YxPl@63 zG+_iD>v@~8HLuwk9;J=KbV0@jd;5g7kSiY-*$nJmfPM-8yU0@|EB6O}r|8ftS1F#; zhrM;g+luxiJqI5FeLeD?`Vi?tG?Q)cV3a=t*oEh`8*K-A#>~QRbDtK~0~$fz2)~qH zR=rZ|w^e)J=AU_R>dlTve0Oc?hS$_n7wSt1p3jsIl&>T|$wR+Q9_rVa@mTAHStltE zNQX!s@*K~pVY_iXkG0fP9;uIbW!+YJ-%P*D zP`A_FQ&**?dHuCWzt?T75_jy9?Mup2%1<**6h`>(uKloS(;{>jz0`|wjSbifVVwn;0-E_7yfQ6t!(?3hYG{qjgZTQug8$y(KFx#>R%@G40V{+9ww9 z8h(Ek&jQk?TKmcgvR_h5g?4|q(+lUtEEZK-PaH(!> zz=dJCM9*aOe_$It$~I)+D_yg3nfBpI&yGCDO8MOA4SA4L%zTWWC58C?2!5xl-)}?i7T94bJAQ`r#FGztmE)*&+} zWM4=~Ue|HP);POBbjD=Jeq@)dtuc8?WL%RN$ILpDMu|Zo6OA}RM#KC4)l;YLxwjiN z*(96UPtK=rpWk`vsi&%*`g7{kpQm!$e|d%r`^oIxLA#^2=je+=-O*OkD*eCfVs|n$ z+UNM5q#u^$B$$jZ$9j+KoA0(fcPaK}E^u4)PLU4O#uiBLi)UOi?xmrHU4zkm`FrH- z@E&R9{lVCXf0wlJ9%0W_?Y692%X?()_57qCmDv}E+WVC6frF2bufJq(Ht%Hoi=`8Ae9HV^)>Fw z$60)%Cwbu84$@Wo!|q++q_%n zm!?bcZp!g}v$M$a+|{K#>GGoV9iZK=A&uL)D?c|<$E~e#?dJ%uTlf8OZP!1f_NA9+ zy_*m4{%IgzG}|rRrQh@Y@=NhKT#V1X3rgeT5g#3Zr{@HHw-tG^^v@Lk zWR^Y|1E!J@m7achcu^Z(=;8DU2`aIsHDq`IjedPrs9! z=ws%81Mg&|SA8bM-Ip)*m)K919@p(F)7iq0l%`cO-tHX@PndC~HS&nY0CXC^oS$jb z+$$&2@L%if*SNrL2~%4t?a zX{MqEROM!aER4AU+1!5ve58%RR?|jjK+H~qOfUBbRORj8jP^c`Fne}}M_RpRsnpWU zkV?=P@2Wj4c@T{X$kK65Kk6pCt%-a(8^rY79cjh0L3ARB`Mo2c z3U^oJ>j|jR-4|)wBJDwt`Q055D=Q-3W07x9q-h6^#pNlG`Rxm+!tIZI2O{60NYkDj z^Q)aY=C=ZZ5VlW2a;dCLip{3aG;G-jOS(WpNYYWf)L}n;vNe zkonc#9wBN#B>K$ff8k7VsZ59n;~s@+AB%=#se#YOv!EG~~l+MY;z z5+om0PP>LI+`51$FCYuI0McrgoZA{{+d!uK`val{2JxpD1VoEDB$0ekKvhns&lq1* zK(t68%cC_QOQlYlu~cpge3Vm=#Z;%tNJ^E{sWPIm4hv*b4uDLG&X+MMI*`G_9T^a1 z2xRi62SgbHo#oTJ4wMH~xNeZ?bbUaTZbPJPinOgD`JfJhEVTOrqV|BSZP#)StKAhK ztKB*-#@>>H1Fg!{gDgd3K^B(@AdAbyfM|yzZF-~?Ko*y|0nrXcz6Fu*nn=4Y(iVZt z?;4P$V_iU1?kJsS``1(tgmZB9UxHIT)sDIhFngRJJ=53*9cJ0NW4fzEcSjfX)N z=OZAC^BVzKhrwtSh%l`U23efPf>0|ZdvZX;4`gwf8xYn4K^B*FpmThk6pK-3KxqYzwH$JqfZ>vL7VLtn&m}Tn+_P z>0XYs!;$s|$l_AXw2k>43^KoU0dZbeqz#X>Jjnb`1X=7S2gF+q6v}SkqeliZ$vpv4 zb|Y<%*4Oi7wwdtiksrD??}1L#_c??bW~=i z-{^6pcYf4V% zIqzK}5g)#C{`(eK^cv^Qy6kEf{P+la%KU^B14)TVXpODSt6Ceo7Iu8BZPA*KyH$wy zF^_4842`SWKDijp6|eUK>3pQFnf)k*63TE&q-yATin8icU9GJuevtcgp5Nd;o4fX{ z>sx*}{j3h|_iSJqv} zfAiZU0$0{8;=j>aJw-HW+Gw4T))i@MB5hrybw`?V$NX-Hv`vw=InuU9T6$HgvLct! zx>T)2{V(_ZQNc2&|3MVhLDGAs-*goN9bD*(3OO2&(Y5+Lx&I=HT?;H&pW5TC&Hh-5$KX$cEVb9AzKRD?98U3=uN8r!RG0cH z9z?Mw#Z$TtoKIeS-NFB}_$~e6XE%sq*MAPasBrKkRNX~!0~neW^`G^RE93H%7hSTj zom@syZIDLwWZKu0em-}&Q)ls|wm@=nIzU2gtiQyQbr@J(yzB;}=)XyxV>ka~aB`6a z>dM8wxs5cAxLCQkq{-sgiBgsz`NSZ(7}hO7jg}Ns`WW$5yH%vjhoTm&NO=TbYRih0 z26)t}6)76|OD+rcrR0&jQ7!?g4J`V)wjWO&a`f$7LpJYGI3%=}^?x7AaE*U9E1BqLyNJ3FTj)s6{UFd>o3}<|0LXl;pCsUj{|( zc9CZZ6t&<*3M&$PTVAB>MTlB;qx3&+L}6%;Q*ynt14xoCLE;PBxkR#Y(c&e|t2@}s z+}wh(9ClTK2rTwV9?=9q2)E5b|K<%Z^X>=6 zAB%GHvao|Y5WSZebuZj`nnLguve8f*TJxyXhbQ?;YOdBSk2!bc;w7CrLC;Q6YHTE` zE$sx|-ngW>t;5Gf(OXFT+Fj}KFO4yL;>a0z$yRjRao)AO5!vXXwUK;l^k?kZp7in! z9qB+nvATKXA}^_nE$gfBxztp%s-vxi?w-Q%!8UiT>}p=I@Ge@s zaP=pCg&iOlTyVjRyuY*q#9I0DxSbOUZu(s-lJ?}Sqc$9{SD(8KTK;#im%TtZkETCa zc-GE|^t%_5Tg@+S9m!Uo1EB@8-a(3SQ6-kZI?q+5DFitL)vDGQRSi z9TV~O7w|kD_-MF&{LY&^r9|F<57l+<*ri!!@N?T=`&7ktL~N$J>1W5E|9s{4eH%~M z{^P%>+OAo&uQ7Y~lMlF~2TpZ5*X}4Qb$8Z$kXdv-E2}>yan?95cn445zPjvkCwnR$1;ycwTJDY3CshNIef?xa8Y-af{WtKndXZgj4eEs4K>B8#L z89{}A>`yb^YOeU7|9lSpWVgTgCAVcCKZWz-zo^*$lk-@G1ZGZ#6`>Zl7>}xAJZ{m7 z18?QBxYD3})laMRjDD5QLYPJE*6P~Fuq?|8+J!MJw1nI z)+Ddt!J)t|X<4qhYr=1D=+@p-jGH zr)Qq&=!6l&I*^_!{3wD(5zXqMXjN`5|1|=Dy~2PPw*_gG0{dhEFAd_-OK$T8s=oqah z(zbz2@@|kxek>rYBZBf?@&S;Ak>?F-v@sy_F*YD(h$3xzq|E`D-z#{BU5vb^=j^Gh zVE}G8V^-7>#;hv$Phz}G!m!u*GqH81Q~obOtmU*5TRS>Dt09m_wF*D-yy zo_E33vo3vKWxMFJ9w-d_SbF@g8{WTxaKme15aVyN6#0 zG+tTP=&Q;Sf3U2@*%Ov8^JUp6ONfxRtS1*?sRkvF+>bZF(N@B<UgNm%{Q-b`AJBHLGirCZNw$&R z@1(cFeLFQwvk|(|jfI{cLhTDE?1MwOQ8V|u`i^?A*cK=%ZlLcd^<7@>$Hz|k0nQPx zCY|hN_Lu6fzN5;&kMht*z;j{XlZF)TdGGKX@$?Gr9#*(xSE{X=GrRSjQ!}`G*Z=$T zo4!AlUB1J>MrSX&;PpZLjP3Of5XY`WPYC~zFi+Fv?&g4C;tA$RcY6X;BKvY z4Sno?5AjysCvm6OwBYwq&leHFllkRb6aUp0vlXV+&+g{gzA)BB6EHrhVEHuqwSZI?2s&vyM?V?DV4YJU#1KC%M zz6h*W+7S@*-5?8BW8D_+UXX>mA7tSk09m+)0%Dy)q#cel_4zH_;k1*QU1!Y%$inCX zSs3d;7RFYPg^~2fS$_acp<(YkpbB?iq-nLQg)xp6OP$GN*7|Io^`(Ujds zYS$C@a$8CE?r4Fdcu9V-W2>%89lv>`Gta%6xTtfKT)(MqYx=E2P;{^K-qE|}Z*u>@ zVtie{{VwWf{>Kwf*lVtT7gg^WUE5#(5}VtTE9pAvWpTVNs!F3S@sxHpt&5t6uG~MP zV(Cvrv1@F&%cZolDGKkTex1!5eRg`s&@EcJcxj0xAympW)mZ%hcV^cp5vJ} z7)|9OPzEw}>zPz$jOWIZ*hm}i#6po5a&Eem&LbYB-L$gtI zp7ga^k)d!VuN`~D@2*MhRxaN;-H`OV%EpA#>7o|ytdyb2?wkcZ@6Eq(i?g?<7yt{X9py|L;rd z?xOW7ENbNI+)kzWFczt1vQuqPjdr7s8qb?9>iB7_N9n|~0v4dw)`l`p{Tf^4zI$UR zlr#E6PW*Rn`Ig#$*w`o&$6OY60$TXF?fvj;H$kku*8g6QrH1|^fgRLJ` zTR?xLp0o~o7#-%-c7=9Ax|@pL25KXQAGZx0zGGBw;5P6dj?)HCz-moWUy`~aD>qYV z2mg^Y4OB<&?Kl5Y{NC)vy2`25srKAqC4mz^llEL`dVsQ^a&Q>Bwd?Fk9&&2GvcUe3 z@4n7lpYnGUWuPNf2BxOUz-V-sl!1i)Wxm5y1|G*c%ePNVmw~CNGVrdFGO+g&D+4{L zGVtva2QC9Wl)XJqjNLdTRR$70stmlN@Ak4&IFp^C`o)!F)VtyjI{o!@I+sFf zqYvt~7}B_l#vv;FZeL0+XgB|bDqU|t6@F&dXnUc_$G|qaH9ljKJ0sc(vM@B)YGK?J z5aSw=c3-6353(>c7NfapHq(P_%;u?ps+>kvEVM-tZ2(zln?M$t<~%L-8e=h9GR9&f zD;ApOH*JKdB9};>7f~0;B(DLP6j}8)$=#8*KGHUUO!6L(#ZI z8sWAub_P`G9*VTxk@gtK!pPIPGI`HN#CtNxI|4F!Zv@1RF0aul0%C8ry1_nwM}kb_ zV*=v5J&?`y&xx*cqw7{sNE>1e>Eu02Q3uFE)7ny@N`JP8(Xn|l6_JYUUo zvVY}jp5LeEut#M9&mTxV{|V2Rr=CB|^PJT40Hb|2%FzN-@yY{>1Afo&RL4&XA>^XL zM@9M$igtnflN7{x+=o*L&U8KQBJNE*Z$dAf+z+7MZtltTn;Ia@2Z8T=+rjkcLqpqC z1BROlkv2Qhq%vJuzl_HC(gQdsf&n-U;b_?AgiEiuUX=1C>eC}pFF_|kP5Kb2PF=|9vco|*hql8cfx#H=!Hl(uE7h(O0OmF`Gk zMRUh8mGh#n$@o%+5tB!w;jCV4u$>~)@)JMxLy&*yoee5A>EZ9p2 zM_9UKI1Y#U<<43%-KvAB7HMa~uQa1PY0{MQC*^f%G*qp&b9ay7^T(t9Gs@cgrx}z( z!;Rs4+y)vA)l5XbAqWXKMiKkjW|x?Y%J{lnp*Ou0McxnaTTsTQQOWdJzxd|xyJ)mf z@hUi0+)kN3sYtOm!Fu>M1>Ovfer4{|iT(J#2+v=Y^G&|sf^vD=;CZl|@BAq<%K82q zJdgI{>mR?p@H|zW1Ex8!2)mQ1Lk#0qn zk&^0lpZ-3z0J}hSmg z)`wS~jP3WEvCH1g2+Ymd?21ddE4{5*ORq-5ULESz&L_^R7&+N@x>j4CyhAI06&|yV zE1D|ZQTBqxuzVas8q;xo#PjIf^-EY?J!^ZSeHe)aQ+iuqeY+lPB9h#GL zKkiCp(yhE`V>Pd2kmqmC#DD(d?#=S>`?Om6aIyT~TV^vW8R1bp_1mBo&>t^E+iSi| zm&thaPx{xPq-;pWHe^sIPpY{k!)k6Tiv!6SeQl|n#3tJ#tO|J*dwbYp^JPl**-FdQ zDW0B`seR;wm8p7Prs^qEvh~lq(U&D=#n)~K<%zO&wVPzN^`+}->18DHJM3kx&8?ef#wzQr9Ij&YQ@ z!cE(T%$jd|8{w0&6Mj`~v!30q1wU+i$k!=slh3*DFR#9vQ~oj^vKcO&IH$6;0D6-C z^p2M9E8PM{Na}C+XkpjXH;zrw3<;~tc3sb@g@aDPE;{vfChel?aob7InRTfime8x) z9kVA%9Ao_c?bwu>VTBpDW!#jSn!*frI8LcO^H0XfuK7#Iksb5eYYRsQeZ3g>S)6&n zcmHNqoo^o5-E;MD-nV?2Z~iE&)m|svpZd~YUj6l4;b`~J>MKWmTsC;SFQ)HaU%*}I z>ucfNlb!kWfzu1SUc9uhc0A`3)So&0^hWGA>OCo*rW5>f2U|79yJM6)y?q~Uig$Yj zHl|7fR&>o6a(d4x zob$mf%|6WX)%-PnPjHiH*B1=gE;&QmyTRkX^4Sq%ANlME^@ZjRd3?k;%0-^v5b)jb zoHNeir+CzVw|*Swx17p~`CUI!J9+fjf-e@_zw?@?UP(|3ltX}7t;v>n;%se}Hhu$B+4dfm^?4xd^Jt-Z#b zbaRbcaS!}Sc^T#E+negFo%Vg4qg5+z8>(|>%ogV@;Cl)0Am@YB=G;{23q76G=BlSj zCwck{ZLV(G-N@}lZkroEO{beSd7Phi_b|7@c|3NS^w~oiBx}2K({%5kUR;rJR}Z>{ zvoLbiQwI~@nVB^|KR2`XbDIdKyXKNl{uF!c3ahuK@C&8&vl%z7&CT)QbDK+cTrQ{O@GzrVid$SSz`0uGPoC&-?H6@$dF{O-gQeO74b~+@>J+ z-CpkCid(+7H1kJS&viXN-{g9KJ~K1;r9;Gd(~!%r|MIYnBN~UCzVao`lbM-W`12Q` zFI{@-Ntb78uHTN^T=Z}`OLS^Tf6a@>CTDJ$J5G61pj}W|sYc(UumPJtzzpLpygTWK zs-7#~nty&wMtbT)o~)eplJ%9Ql3z(V?LLWqtuLpw?ag4>I<4Q%nJzy*w%`u@Hc{tV z|FJN`zvF*=%!iryEz}mvIM(SF?4VAZohs)YL%x$L=il+=oYBAq+wQ47{Wkhqw?9yO z`u&=9FT~-Tk8HMb9Z7Ys6xFz4)*EZ?M74Ur@ohI&Sx3A<_S&|)g@N9U#15dT;CH3Cv zM?NYK`+icj{O+mLgITq2WGG|UiJx)V32w65&&%1}$j`ja*|xl6Whga0ROvD#qWcXjW&do*noermt2_Nli0gHIn@pm#~l zF1PD%e|hZGnXgr?xF2_Bw}%a)jjn~>#o089W8vMjb>nFxo;tSRXXMpR;-xsWh5zIj&ur-|H@X{#jPXMCZ6cq!V}wn zs`jQ#Pq!g++dYG<+-x88mgT1R2gm-eD>r+oBY*$3L8mh?yLtSML8nh7zbCN@;6u>+ za)Wm~L3z?o^@kBO%0KP?VZGl5AH0Y9b1(I0l&d@VJoV>hj)t2x?3NLYj@44spGP>W zQAG~#rm@+RR$P=-8@)&;YXV>>}Rwe?dU*1>EUOzBR|RvZSVQ%u?5FyM;=5E zSD}YvnIQ*th6mrKE9-`Brah_idgw$ClhAA3CzrFL%T3LzuA{&1A8fhPxnYlw3VO(( zhv#y=7ms$sHV!*+*v3hrEy>fCq}!1^?Z_nB5uLm83hl@!XYELyc7(hmj|LyiT;Jr| zk<9h^sE5Qo?bd@H$kV8YdcKX4I+E_o&BBbWcBQ`gsX6pXKS1B~{q#}a$10uD9m}fw zb9qnHP`}Uq;q?#QoEhBSK%Lb0YSLd+`yoE@T!D_W=v4R1)pw)cHhFFPLj%RZu|h;` zo7{MRmVDpd`p2c;YvQ4gu-VlWzv=ER<9T)de=n{w;*31miBG~+KYr|A)6b#L)l2+q zkvER_nZ|9f%iez4S8f|I;*r}%d>EVY(}wE_QXEn0!2Z^;cey!(PL-tg}EI^Rrm-iteqWrw#frGESix_i{O!}XkV za`KLw|MA>4;$d~hj%1vrcxPND(~Jod`?! z0&S_nTTa>QWYx=6w8MS5TL1o3{eM{fKHgcQTi%q3_4wTd_sXrb{r{4y&kuj>{(FY6zp`cc zpIzBJeAbn{vE*1ldW5pM0=@qW zE6~&rPINR6{k#(Nqq_Gn@1q|2M>Dgv2OauRU2H%<)Y0~h$k+3Ch$r)L^$XEerP@b+ z-$Yl1H7kys;VK`$IqK>J&aA2Qx>|&;Zbe6xgDW@wM|Z-;AD?i-#&4mkpU_r*16}B`aWHqahFhhB2%>PmElK3-}0(I&KlD&eB(sixyi=%t^twG_Z#O9KX%qNQXt+)c z2y3&E#u%-4t#k!Yo}XEEH+k3bEL7?3mC3cjPp+E0E}n%d<1YRRw=UAwgYx{U{28t% zfhw4$O>Ftn&vP2)mwA6fW&z&#dZ7tbxkLOP!!PG;%Du;<`V7;)pbBr-N~p?Pm{Xc_ z9Q=}4jil_tqu=a6tMdCtL?e~a^}2vq9{|#4PR^|fK1fkOqyseGyFM6^=8r6lBLQJG zk{8z5o^K?`Vl@V2X&W05AMKzJm*{$3bnOI<@lv`$+VY!oT18^=wt>tVfuLtsA*g zN`j9H*A)<@B+`oOShRY@1Bg!twLhFo3D|0MGdq5W2-hfz(5@}CG+Or@F z?Fh(9*kINjnB*}LtpS`R$25bWXq@d)JGI+!>$>tT-eqc;^GE15y~+TLzgtMx#Qj+!+uy ze?bK=Z+&##5M8yJXqII~0HI7`us$HHMT2HT%eey)4L&(((T9WH=Uwxl_j`0vLY9Mq=?MWrgmHgB zyy-w6@P3~Gh0s8AJWZCDEvB-(EQB3-)+$`)UGD%{xILiDJ*{Xd`9Ww34LjojVF@SF zWcS!|0Tzao`(HGb$Gw>Qt(K-`+jkh4YV7gw#AeE4x&4E%0ZeuDhA6~$6)O>xzNcsJ z$>y-HG6b6{a_;%ie z^JJFU%)31QUBXvuI+Y(bjbC_S{Ql>!C5|7IpZD*ns349&m*FQ<2wiQ4M8XbYmv2i{sHdSaGy)|wsPOhUA?zwxOa13 zSHbEL?h|+q+`;_-_xrf_k;Uqt&7(*?#(gX0@fq&P^?zXrm-V)c6`!ncfsIxW zfh+4%Z#2~{UFqd@^Na*-0m%5ICtbfyTfP-t7|x^sVe z>+}Caj*4gDs#SqVgGHm28J;}q$>a3$Bk~!Z1A*tO|Mj2Lzu`(RJtFVnNz~OawzE|f zyWVHPdQ}~7oAKNfkHKpLMHRW!SJ5DEQ;NsnS4<7QaWC~%G|2lJyZrQKMeC260NL@HAB z8h@Fe`C58|Z`)i2e1Xz$i}j7h;v1g8GvJo*&mvWgig+v){|Y6!vRW|cC8^;uIRmes zfy%Jyj z4MR)7^Cdi@{4f0r*FXlQ<)qK;X_pIK&C6}eWx5QU4Ya96n+Wara_u#pj zyXje!FCj-Y(zCCoU(~jwZSl%gjRfi%S2o|+X!Wac+49C!t5>dE{s|6D@Wy{vrQ_MSH1X)E zD;IaIUb#$RlsPP2xT-PCqZ#eDzi)`a|%LZ z*W#5+N!kE5h?g#xCFZtejjKA^L(8GM3QQ{LYSt0^`sJ$#^=DUCUSFXHj{ae5o(fU(rIBH`s=Cu3F-R{kFuCL_Qx3MdWoEw*QGOiK)|O zO!tm{^|ZafX3!YuOITOB%cAEV-j#c)5FPd&bAJUb?+#{Z>y8#Mdpp zHH(_Nnv1SIz&rGble&;sNOxi6G=<-EzQWR1!C_0{{E5@kG*$7X@U0HKB*|7!pMSnS z65=Jko8kHMa=uB^6jZ##w*{X6)Q@k{#K;5?-shk>sCLyQesrIiu!D~< zt3kM1-eh&{Yag4%$o4nqZ zZ9U2i){)%lJN}3;zMgYizQ}Ch)8DdDf4LC2ru-lzFi zx1t4|X!hY2?g}g6nStGbeas-xG2PtCDmbmys?LnOg8Q!8A>STxAXk0GoQ9gyr(~)J zRkLdB;YzpS0AUe;UkM`l?9pH0SkX2!SKofSX0eF(o#bIm6VHS*Eb|_>M!b&@XU)`z zzn0m(n!>GD*Y@6hbq%ZU8XLy7f9Z8r_`oX}l9kAjjQ@&1rMvB4k1hBlEA6UDyPg%N zZG`;*?&!h;Q9_rlEPqn^Ax>UD++Pl1Y-e@nYuG|SuT!@D3*p@2R%D<_XGd6J z`*8O3gL4Rz`ca>zeVdQFgnt$|30Gk{bf~++((GW`?Pr9m@O*mE?^(zd@7h3Dc;gsU zRM;10L)wW`cZgH;OZvtVul6!sD2@rwZHG)J$0!@!eiq2e#6Y@vo)fbb-wg3RgiM9M zfP0e1vzT#IJe3yRlX^5N=hnV>GAk%4QzNJsH8pOAX4_h+6A4erY?PnTAH|IR2dI

WyrfXZ>nNuMgTP@jN=y^b^}I{G|2tVyf*T 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 literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libpdcurses.dll.a b/clangarm64/lib/libpdcurses.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..d25afdddf519c223b87077ad112e8da690f6fc48 GIT binary patch literal 72734 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 Ro7?hB$yym$yuIy|{}1legTnv- literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libpdcurses_vt.a b/clangarm64/lib/libpdcurses_vt.a new file mode 100644 index 0000000000000000000000000000000000000000..63208a976ba2a87e2e1bd727d994ef866a1aa145 GIT binary patch literal 264944 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 nG71zTtUp8z>p3LVx|K_+AN5f2n^}9 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%0AGvucF;WN9|xTdT7?uU2K7|`qddCE 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 J?M*@9{{q8bhY0`x literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libpdcurses_wincon.a b/clangarm64/lib/libpdcurses_wincon.a new file mode 100644 index 0000000000000000000000000000000000000000..872197fc705b4f3574f1c18cad65efd58c8338c9 GIT binary patch literal 299388 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 literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libpdcurses_wingui.a b/clangarm64/lib/libpdcurses_wingui.a new file mode 100644 index 0000000000000000000000000000000000000000..6327e7a0b286070d7323584bbda3c106b6c5568e GIT binary patch literal 312410 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 z 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

WyrfXZ>nNuMgTP@jN=y^b^}I{G|2tVyf*T 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 literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libruby310.dll.a b/clangarm64/lib/libruby310.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..6ed80cdcf39f72b078bb41e216dde0d507a62d6c GIT binary patch literal 480066 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Ⓢs!gG{US&bB^C*gNj7>^<0 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 literal 0 HcmV?d00001 diff --git a/clangarm64/lib/libyaml.dll.a b/clangarm64/lib/libyaml.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..6294c7c9e5b33ee91189653ae7515efda068fea9 GIT binary patch literal 11640 zcmcIp&5smC6fc3G*${(>s0cWGEMLn4`!TbaAXy?Bi3kLjiDlYP!qDN#0b~tM}?xuj_z$lQcnL!njJ7E2ykYBj^0B06H=gKV6UJ*AO$-97Shj< z0-aby`UO&;ljo6sgcN8Fa0S5_%>kWiA$<)g(EN5zL2&uq>(_3q1()7@?~NOmudiLZ z5v0lbM`16WKRdt3g5c`SD_6=w>|;$z%B;P8^XfanrHgA9K`ZGE0$xcFrb##o;=6G_ z50ZY8C%||RvuS0Tc9eC;J+2x?QP2wqgQS03>RL-&nxk%*hC_=Y7C80d565x8i_JA4 zN2?gj9<@VOWs2D9isCfRsV&H~$#WCz16TBfRm4`; z?KltmSwztbwo7N2WlqIOnN6EIThV5%z@|6K!(m=!w?jy)FYYCI9uI?VnvKwElVy?B z2S^E*$EPS6_Xg4x434Ec}I#q^5zC$Y;=Yz3D z3;9#Ef{i34p2Zs~Rb}CH{ZT%ν}Gv7?SLba64C^^Q^n4!wIxloJo*t(I(EN9-8J zjLGFnjCA6n0u-&hm2O+ARLZhS<*Y!WR+z%;=H>V^s-?b`F6*RO7#ToR8G@2imW0h7{Q&U=!y>0ocfGx?bwE`IdP%>S&n2!MNoZ(u znW~j$a!EjUSyy2hdpwB3JPy{!8yhj6PEgq_(KO*OG>(J#ehyA8d)(k?lCW$~CWp#s z%)z<`B~B%fs#+qnAKu!Z9R=(HQq|7)1VU zmd0UknuR&^tV5t&kE7wzI$4uL#HqVYp!8H@S?*F(25<4qLZeejn8#!(_W7mP? zS21!+q5%H*$ib!8`0}jVDkwpX_QqZ*mRZwkxomEe zyZ@xWEzu0x1d^{D@fAnE%jxfEL9ywJI0=FDAAz=-)Wqv%ts{VE>c*&kmRpZEjoZ+E z&F*{0td>0;x{W@j(kcL#->NB1q+DH)md$-Q&sJxa(4P+dX!ut2HW1TQg z1Ul{{;Mp9z&IwG%E+VEBn&d0T*UPVXZ)41r;CPR+H!enP8{<0W?!0XtaeMWUF9rAa zF~^zbOa(edp_=2@*@bmKQvv73$hFQqI%x;U{BYM5 z(R5O?_Z(_FRxExyEs(T0I|cAROVygS8lsBqH??&6oc$!TPq!4`37TTnx}B*vfm#;? z(xOTaT5;?KGH`(&q*_q(!0OwETIW@aX*-UN{;Q*7=A70?88OQ*Bg8`L?3KMg41 zqZTig2P*!mMGYqT${y}Gde}IucBXNxmPYgv(aqO4YBh|{Oj>D%Hbe{$+=W{G=fOr4a^R%hY lxQ*LT>%1kGO!XYx9MiF9821On6c5YI5$l{hroB+Je*uu-bO8VW literal 0 HcmV?d00001 diff --git a/clangarm64/lib/pkgconfig/ruby-3.1.pc b/clangarm64/lib/pkgconfig/ruby-3.1.pc new file mode 100644 index 00000000000..9baabdc48a4 --- /dev/null +++ b/clangarm64/lib/pkgconfig/ruby-3.1.pc @@ -0,0 +1,59 @@ +MAJOR=3 +MINOR=1 +TEENY=5 +ruby_version=3.1.0 +RUBY_API_VERSION=${MAJOR}.${MINOR} +RUBY_PROGRAM_VERSION=${MAJOR}.${MINOR}.${TEENY} +arch=aarch64-mingw-ucrt +sitearch=aarch64-ucrt + +RUBY_BASE_NAME=ruby +RUBY_VERSION_NAME=${RUBY_BASE_NAME}-${ruby_version} +RUBY_SO_NAME=${RUBY_BASE_NAME}${MAJOR}${MINOR}0 +RUBY_INSTALL_NAME=${RUBY_BASE_NAME} +prefix=/clangarm64 +exec_prefix=${prefix} +bindir=${exec_prefix}/bin +libdir=${exec_prefix}/lib +includedir=${prefix}/include +archlibdir=${libdir}/${arch} +sitearchlibdir=${libdir}/${sitearch} +archincludedir=${includedir}/${arch} +sitearchincludedir=${includedir}/${sitearch} +ruby=${bindir}/${RUBY_INSTALL_NAME}.exe +rubylibprefix=${libdir}/${RUBY_BASE_NAME} +rubyarchprefix=${rubylibprefix}/${arch} +rubysitearchprefix=${rubylibprefix}/${sitearch} +rubylibdir=${rubylibprefix}/${ruby_version} +vendordir=${rubylibprefix}/vendor_ruby +sitedir=${rubylibprefix}/site_ruby +vendorlibdir=${vendordir}/${ruby_version} +sitelibdir=${sitedir}/${ruby_version} +rubyarchdir=${rubylibdir}/${arch} +vendorarchdir=${vendorlibdir}/${sitearch} +sitearchdir=${sitelibdir}/${sitearch} +rubyhdrdir=${includedir}/${RUBY_VERSION_NAME} +vendorhdrdir=${rubyhdrdir}/vendor_ruby +sitehdrdir=${rubyhdrdir}/site_ruby +rubyarchhdrdir=${rubyhdrdir}/${arch} +vendorarchhdrdir=${vendorhdrdir}/${sitearch} +sitearchhdrdir=${sitehdrdir}/${sitearch} +MAINLIBS=-lgmp -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt +SOEXT=dll +LIBPATH=@LIBPATH@ +LIBRUBY_A=lib${RUBY_SO_NAME}-static.a +LIBRUBY_SO=${RUBY_SO_NAME}.dll +LIBRUBY=lib${RUBY_SO_NAME}.dll.a +LIBRUBYARG_SHARED=-l${RUBY_SO_NAME} +LIBRUBYARG_STATIC=-l${RUBY_SO_NAME}-static ${MAINLIBS} +LIBRUBYARG=${LIBRUBYARG_SHARED} +LIBS=-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt +DLDFLAGS= -Wl,--enable-auto-image-base,--enable-auto-import + +Name: Ruby +Description: Object Oriented Script Language +Version: ${ruby_version} +URL: https://www.ruby-lang.org +Cflags: -I${rubyarchhdrdir} -I${rubyhdrdir} +Libs: ${DLDFLAGS} ${LIBRUBYARG_SHARED} ${LIBS} +Requires: diff --git a/clangarm64/lib/pkgconfig/yaml-0.1.pc b/clangarm64/lib/pkgconfig/yaml-0.1.pc new file mode 100644 index 00000000000..ccf64aad240 --- /dev/null +++ b/clangarm64/lib/pkgconfig/yaml-0.1.pc @@ -0,0 +1,10 @@ +prefix=/clangarm64 +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: LibYAML +Description: Library to parse and emit YAML +Version: 0.2.5 +Cflags: -I${includedir} +Libs: -L${libdir} -lyaml diff --git a/clangarm64/lib/ruby/3.1.0/English.rb b/clangarm64/lib/ruby/3.1.0/English.rb new file mode 100644 index 00000000000..ec90ff10cd0 --- /dev/null +++ b/clangarm64/lib/ruby/3.1.0/English.rb @@ -0,0 +1,182 @@ +# frozen_string_literal: true +# Include the English library file in a Ruby script, and you can +# reference the global variables such as $_ using less +# cryptic names, listed below. +# +# Without 'English': +# +# $\ = ' -- ' +# "waterbuffalo" =~ /buff/ +# print $', $$, "\n" +# +# With English: +# +# require "English" +# +# $OUTPUT_FIELD_SEPARATOR = ' -- ' +# "waterbuffalo" =~ /buff/ +# print $POSTMATCH, $PID, "\n" +# +# Below is a full list of descriptive aliases and their associated global +# variable: +# +# $ERROR_INFO:: $! +# $ERROR_POSITION:: $@ +# $FS:: $; +# $FIELD_SEPARATOR:: $; +# $OFS:: $, +# $OUTPUT_FIELD_SEPARATOR:: $, +# $RS:: $/ +# $INPUT_RECORD_SEPARATOR:: $/ +# $ORS:: $\ +# $OUTPUT_RECORD_SEPARATOR:: $\ +# $INPUT_LINE_NUMBER:: $. +# $NR:: $. +# $LAST_READ_LINE:: $_ +# $DEFAULT_OUTPUT:: $> +# $DEFAULT_INPUT:: $< +# $PID:: $$ +# $PROCESS_ID:: $$ +# $CHILD_STATUS:: $? +# $LAST_MATCH_INFO:: $~ +# $IGNORECASE:: $= +# $ARGV:: $* +# $MATCH:: $& +# $PREMATCH:: $` +# $POSTMATCH:: $' +# $LAST_PAREN_MATCH:: $+ +# +module English end if false + +# The exception object passed to +raise+. +alias $ERROR_INFO $! + +# The stack backtrace generated by the last +# exception. See Kernel#caller for details. Thread local. +alias $ERROR_POSITION $@ + +# The default separator pattern used by String#split. May be set from +# the command line using the -F flag. +alias $FS $; + +# The default separator pattern used by String#split. May be set from +# the command line using the -F flag. +alias $FIELD_SEPARATOR $; + +# The separator string output between the parameters to methods such +# as Kernel#print and Array#join. Defaults to +nil+, which adds no +# text. +alias $OFS $, + +# The separator string output between the parameters to methods such +# as Kernel#print and Array#join. Defaults to +nil+, which adds no +# text. +alias $OUTPUT_FIELD_SEPARATOR $, + +# The input record separator (newline by default). This is the value +# that routines such as Kernel#gets use to determine record +# boundaries. If set to +nil+, +gets+ will read the entire file. +alias $RS $/ + +# The input record separator (newline by default). This is the value +# that routines such as Kernel#gets use to determine record +# boundaries. If set to +nil+, +gets+ will read the entire file. +alias $INPUT_RECORD_SEPARATOR $/ + +# The string appended to the output of every call to methods such as +# Kernel#print and IO#write. The default value is +nil+. +alias $ORS $\ + +# The string appended to the output of every call to methods such as +# Kernel#print and IO#write. The default value is +nil+. +alias $OUTPUT_RECORD_SEPARATOR $\ + +# The number of the last line read from the current input file. +alias $INPUT_LINE_NUMBER $. + +# The number of the last line read from the current input file. +alias $NR $. + +# The last line read by Kernel#gets or +# Kernel#readline. Many string-related functions in the +# Kernel module operate on $_ by default. The variable is +# local to the current scope. Thread local. +alias $LAST_READ_LINE $_ + +# The destination of output for Kernel#print +# and Kernel#printf. The default value is +# $stdout. +alias $DEFAULT_OUTPUT $> + +# An object that provides access to the concatenation +# of the contents of all the files +# given as command-line arguments, or $stdin +# (in the case where there are no +# arguments). $< supports methods similar to a +# File object: +# +inmode+, +close+, +# closed?, +each+, +# each_byte, each_line, +# +eof+, eof?, +file+, +# +filename+, +fileno+, +# +getc+, +gets+, +lineno+, +# lineno=, +path+, +# +pos+, pos=, +# +read+, +readchar+, +# +readline+, +readlines+, +# +rewind+, +seek+, +skip+, +# +tell+, to_a, to_i, +# to_io, to_s, along with the +# methods in Enumerable. The method +file+ +# returns a File object for the file currently +# being read. This may change as $< reads +# through the files on the command line. Read only. +alias $DEFAULT_INPUT $< + +# The process number of the program being executed. Read only. +alias $PID $$ + +# The process number of the program being executed. Read only. +alias $PROCESS_ID $$ + +# The exit status of the last child process to terminate. Read +# only. Thread local. +alias $CHILD_STATUS $? + +# A +MatchData+ object that encapsulates the results of a successful +# pattern match. The variables $&, $`, $', +# and $1 to $9 are all derived from +# $~. Assigning to $~ changes the values of these +# derived variables. This variable is local to the current +# scope. +alias $LAST_MATCH_INFO $~ + +# This variable is no longer effective. Deprecated. +alias $IGNORECASE $= + +# An array of strings containing the command-line +# options from the invocation of the program. Options +# used by the Ruby interpreter will have been +# removed. Read only. Also known simply as +ARGV+. +alias $ARGV $* + +# The string matched by the last successful pattern +# match. This variable is local to the current +# scope. Read only. +alias $MATCH $& + +# The string preceding the match in the last +# successful pattern match. This variable is local to +# the current scope. Read only. +alias $PREMATCH $` + +# The string following the match in the last +# successful pattern match. This variable is local to +# the current scope. Read only. +alias $POSTMATCH $' + +# The contents of the highest-numbered group matched in the last +# successful pattern match. Thus, in "cat" =~ /(c|a)(t|z)/, +# $+ will be set to "t". This variable is local to the +# current scope. Read only. +alias $LAST_PAREN_MATCH $+ diff --git a/clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/bigdecimal.so b/clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/bigdecimal.so new file mode 100644 index 0000000000000000000000000000000000000000..718f929745a4aa47b06bb3f3ec00afbf8810f553 GIT binary patch literal 137728 zcmeFad3cr8)%U;8IRws0!k7sHk_6Nyajs#qwwwe92FDnyRV#_84a5l?Dk3Hk+XjPu zI6$R>Edkq_980AYR9ahtwy#07B5`Qd_c6h04@4^jlmrat{e15sxd~v~=c>=|pI@#k z*SYUKuD#aUYpuQZ+WWrns=JNP7}JM;?_b#aa*XG@Ngt5)+W}^M=#`vjeHXlvQ&K+j z_Uzl{-1?n4WjANfD7)pBTkpue?uP6+cixgc^Oo#$F1{@L=3B47;nd@ex#V19u8;OJ zj}1BXM)RT1{2m~7n^DMp`U(3@jed9g%n1GV`s;YkXL3o4ZT6Y* zo_6kj$!E&F?ewa5>K!-SeFtgTKXE|T*n1Hp+nCZ*=UiWQN0~9#jG^#4%8ccA4Zohh zFi@U)-JLUUx_;*MDkfMBXfb~|N;$hZW71WSLMr$65#<_Bz0EFY;Ub$tLj1c&lnbAF z$4$4ZB@64PJMHZ_qFm#tb8fil))~geW!NeAw6(;Ph{PVCUx&+ z&oz8{wXb3S41dF+;ihw9A2S=iD5)N3#>6NW3Kedg=rgm|CYh3EW47fbm`iUT5bg|x zd>eC3Rq@P2)0;v`W<&X*P*X!ZK4!Wxsc%p&78nxENCm&e@M79<_~YoN-(pljVWmfR29cAG0PIEqx7K9jL|q6DZ5#4`^`o(BHWpi z9qz2S(JXW8`h2FuEn`y29~$nQLH=aws?Nj46l`LAn+^q=n!p3&+!pkOJN2LIGwZi7 zmQMn~XkMhSGut=u&6YrFw2-*klvia^7m(WX;){tOuRCx$y) z>7yyJ5Z(ypmm4!iW4K=REFSRXe+nP`<|4DKrmwkFG-(oyfwX9AAT?jOxF#N7Zjwxa zH|@QP%`)U;!K%Jyb|Eypg!VBrAw4WK%5it37ewNkdYvg<1xAHC+gY=(t zFkbRk;GZxs+}V_9^K@Q(deaoY*^nEzd3qS|tNqoT@e;S*G@dmdG#A`@nhQJo_RNKE zQ14Cfau&FK(?h#PXqQVLqTN|>n|74j_9nDza%k5Y=%L*UHwgZr`R{?-iPW1&9r4(z z0cLg>d@O^9z4%zl_&)2#fsNO`;5Eyb*)4&GGlQmTh@H9)pan?(DlBFh)2c0!AH)u=3A_v>3r&XvrO|9B^Sw|-DckRLW|o+ zB}9C@m-5}Zo$k+w@fW%fPZ&z?zx?% zqfDp8Q)dMtKIBFV^WjF|*iSxlZ(UARzevl&#!B}?!yCwJc^DZ3PGkILg~IKduQ4T| z&U=?EyvD2#=9q|~9jou_X_Im)Z@u3Uh@gqr6%ERX2-d5ewyeD8oV>adA_4j-@#bxF z^S)~3UFgk=IeArMBkx1o^SpVfeeC|~##;SN^yZ!Hma%F$*YZ`!(q$aSQ}XLxY?c|v5Aud4WfH|>JHR=H2TX+Q288P%t% zc(*t0BhtcE#ckfSq5Z77A9~Zy?q|W$>P;)}7uf+U?|Ref`dP5Nc8!O&c1F ztRd|cZ`$NwWCv+Y-n5!vWE6e8;7$8w(1Py|-n5P&^sZX6(VKQo$bxyjH|@uvND<|p z^rn3jvc?hhrcF+a+)ufmlV;KPXNeK%&rza9z;q%jthra{cjvjW=9=KN%CED_r}rv9 zhVq*Gg3~JZTw)}LF(>ybcaq8>3k0WC?r(NEf3I>mDmTD%cEg#R6e$DF4(fT~%uu-@ zrgNpz;o0lZofa>SNQ&I#rlAk4v~W`7J5HMQeo2z%(zc@A{Vcw}(VJK9^uvWuXyv8xp^m9^|GD36v_STl581VpB#~$ zA^9}aTlcx1^da8#zgTVVE(&K@{Uv$xK63IFXIXiDym@{43opBi>c(60uIoCFd`Rxk z95RcGN)xQS&%Al5PG0s9tIbcmdD%|h>2_Ysn|HF?X1dj8t2eK}$-Cq@EAMS@-q}uG z*v472lXoWY-9F@08)p~vw{RvsvDI6*q$mAP-t^m?HV2(y_4fyF-jA)kbw%0zth{G> z`dfE7_oO#?)8BR4WL~Jw8gJfiC-3w$D{rMY&kPV9))g%tX2G(| zo0sb3mD;-OA#dLCPF~$v7N33Jn|HRAhrUX%`m1#EEWKXrv z$YTjO2UvMmIeA*AZTQWA$XNLF zO<-%q4&M<-kBZKhdh0(o0Q%eM)4b^~_oSceO>c4fyUp(J8{WK_legH;8|Tg2=j5%k z^G^5XeeUFKv-9%2dBK6A2ND=k2i0hlXuAoD{q&R zXRR612iaqvC?h%55telxxZ3 zmKCP+O|`Sa(m~jsPCKUut^8Nrb`}q^^zcEat^M~WM5^JR7TdmFXC56C*{62Uu`R&o zL$~hMJG#_@V;#Is`8K7YH?6d7cG`zZLq}R^y9Zf%xm9WDPTJ7HR@%Et%XHGhgOOQP z#cwHXq?2~dV5^VqO2fw1+FLOGS??#>_VjArU($QN-qWnL`Tx=TsZJaB4z|X%nKbP6 zby{n*eARUB>}Rj>vwWepoIa+c>mchX*3q9{UBnu?uz@v8MC<5sd;nROnmvrABrC`4 z(V9r>mf)S|c4l+r|q zXW{Gdu9@0$O-b$r1+||Be9@HZ=^cw0s|jc=o)W!-=Vh#c8^2;op7Mt~S0$R+kKv;! zH`0M6W7Mnda;5K)3Gx!*>D+hm- z;MSb@E$uZ9F=L(@V8&JUt!!_lT)98v!FprXmot{&;P8^HJhP{+zbUz_UvS)INrT3f z`-eUlO!DMUFnd-f*lm7NYL;aM!|m13FxYYLlF86EXz(QsHbb($&YB#&WL*xf^qXg9 ztG}I$HEWyM6C^EnbR#fk?y94H*?Zwm+0&A_X~3D)ac{eLwEG#;w3MzZoa&ad1k}?h0VX_8F=T%1V{q~>?cI}g4&7yda1AHgKn-40K`;ERmNGN}c9O+n=-vnP9) zDG~k)`F);tiyBiR@N8;9f+?V%ZI*nwJ|z;|g8z#3Xg1@@HrcORWf!GKUZBp5`gCh; zwi-OtI{5YB0}+0k{1$#~Ix&tya41{)9{M=iI0^^bPDwNyM(w+= zS+qB-jW;hbk<)3T9DdI7rL|SVFZHY+vV19R_#8?$C5GFdLYCf%TyBNG>JQwzq#nMl zr+f(hpLjELBt7K2^EVBYX)>kb>Vc<*IimSn0o->01F|!papdpMGRtnKZqre47yc|> zl6MT+l)-!Uy!_`p_5*l~@ga{*PWm&5hr+CV1EWtOB+wgT6>5i{qUCtlH z&#BQHoU#@ltV@ZoEtFd6H+w9Y-bjh~eXCY<_xllZgtjzCu5ju}&cI{VJg9*d!ED>7 zBi=)Ptk=A6AwMe{`2_vcmUN2R==R^DR}Onex47?NpBbk*FYzB5TDc^Mj+u&%nTT$g z?5kPfmb2PL=eY0jfTLqlcDSHaUu;pscz*UgN*2A-|~Cp8|PHV#iO zq)a_LT?0>-TRfc_eVV>Y9X^=^pOhYhpM}@1gZM~O*vpVk57;_gx(mDL!lMFnxDDiCEAc5{>(n%&dI!^%PU&bO-Z&1cQVFt&)E3M zUp3Oq$!5$4dH)nzt^P&0Q_rG%8FKPdo|PtD(!sNQt9$Wb=g@ZQ=Y`Fxp95U0{C#GZ zrJ|4AcB0`|0Dl;{}aE0$4C2{ zoHUK=d7fj8YrP4MO9qy?ya(?dIi$cBwA$ZE+vy3R{NIqS@@nh(Z&W_Dp7*u<>-|^! zx^34xX)5~!&vx5`thTS?J$UzVv^}V&?NBIxCF$O_f5Q92{HyKd{JL#NoHUhP#d~=VJrm_Y6-^=?6;DgP# zWqMCNyYeZ~{S42$=v1XW1?1I&Gc5U;pPFqh{SIYv)WLVKg4(P4p>$$G8+fc8&I$m~S=61ljAQ;6ie!hPGPR z$9s+T{A#1Cu({6HL7K^r;L8_&yABpMe3~R#VUL+KOJ@qM2YQctTTb_UdE3d$#wRS< z9bX_B>qmwJ8upJC9{MzNjkfJ~!O}9xBWDMq*TL1_X(Q2uCt!z1^BITuuC}jrYqKHyzhw z6G-OoWbZGCzSJ5{@N^x--eqs>)2k=3hAV1-4%Qm3$(3>AM|Jb+%?{1BPG;S844vrJ zg|)()Bfs_R^6vL|);t#;&*c9Hyb}_V8s=B;Da`3cd~&8LH?kweus>8)JdHfj`7Wof z{F-xlZs`}^SjV0q@E)O?au}aAFOQL5$E`EM^l(}>g&pq;JY{g9AEhJ5C7b3sD z#T$22$LY6#F`x?9ES_<;0 zH*U6*FB(g(%st+QtIDSB5o7YXv_ssPBh}}T81cTvD(?3`%naSFrTV|Fs?}DUmYF z?bR=~JU+F<`+fFb>^J-`_WOJFE4gvF9lf}fvF{k&Bj4)-Ssjn4Z}f_H%rS=!$T(}v zG5k>>a1!!`YV*KJgNGi&J@k-X%;5cq@(xXM6N33ZaJclE9{e=~rgyk4B3lK z?ApT*_QIjdM+ZmSd?Z;N46}aiPmIgg&5()5nc4T#PD4^vaqbCCnef!O5ImMxWg@v< z3m*qk!+l4I-b#9`Z%5wj}LE5MBhE}$Rovh z$i~`7HqN5&TLEkpwR1|NcdWWUc z-Y;qILedw}-c9p=xl-*cTHAkkGIGVrJ9BBV+ED%}XFfLPBFa{xSEmBw`@mg6oeJvQ zI)ClTPr6E*KUq6q_&~;>`I6^LtTn#S*2C!8i-)~D>OMDUj<~wUBcJzTA4w;#v1}B7 zv>w_?-fA9{um)Hk>=?&;f$X9ip^5wyTH9+cBB8G>hvcK3PM%i|)H?LjycP}Lrd?O= z>sfNnhhBf3XID1A#d8_7DL*m15xR~!4jA0Nddu7o6HMy&DbGC5SNX}{edd60=PuUV z@}K4P57kZqPot4BdUEZUAD=0UJOnBTLudwICMw(H%m zvp!yD$v}^P>TY0>%>P$#d@*H@h2#FcaD2B1$9;R@_^Z8eTur+!j`i%~cplF#j_>37 zU&Zma`kK^JDF2_t@fjW*-~MmnI15<*RUChI^|5ihe$?T7d|JOAK3+?nmyiF-yQ|N{ z$GO1Z;#kivjz{tA;`juf|5Y3h>PM^|u>L1;{Fl5QKF<6%ar}RPML6!7x2d5ET_(Rn z8*|9@KS=imkyoH}%bZ!>H)!d$-s`IPBtQ08fb~%y{L=~esr%xu?uWe^WW0XMc5v5> zvK=%Y7e?u^Scd5=ad;xe`swzwJH`o~%aD;(tP8XTY(X!t{u(&L50`_ClRp}ryIy=` z?Hk~aE|cB0z(i_*pY#b?Yt8IZ)>T>6_<8s>eGGf7RmD@mvq8rdQLZ1)vI7_an$#*F3iQ&&FT+a(wpFxHA@9{WJ!G@@SszCWhTgQ4aX#A4R^&_|N{3+THAdc?3JLJ8ps3r+60)It+^2Ay#sFs1enckTAeJMg(>+nvL+Yh%ei*_i<>&U&istFp5uLznZR z&w0@4TmCv`lN>kGCud>SvY@apr`MrpTEYp|DxN9JE;mSybkH%@IU*7g<6 zE9k+gBYRBm!FM@* z;k7=8mtReJ<;jnuvN7mT&GXEJs^X#GZVRyGeUKQ*9ax18gztWcnJd5NQtCD3Eh=sb z)mi=i7w^HZo0K4a3$+(^+UumfLY~WMPwT0AepC4k!FTE_lxD_TeH5ld@QF-NA0eOV zoJV`*y~cKz`uIQJD-QOx`<$b9+EE|58D{*m*J6A7&7Oy#+h>7c(GKj`=jlsz^xkx$ zxjVzx@$~)y8MW5FabLwsXKWn^ujTTa9x{;(_6MI$H|y76GpMb#(7@8=KRX^?PmeO8 zUYmZhbU=Ev5B1*ko7#;bv!RJ`HKm*Jnvc1&e^4B1Sx`Ld!bggmo{P?zQn+c(u8OsD zCf{4XGU@b(ij$vRUflN4ra8%nHqBXkWo_|87q6c4kJblnu$vZRH=RCz-O9v6Gnyv@-xlg`NjDRA>NnF&n4;g2WlI`EPMtTTY=1NwfPzJ#+2z~#q@=Cxm~F_Bln?QZZo z8(dU@!&b($13XRw{=b3C8-VvlaQOpZd;`1$q0N?j6L|?*y>y}j2Wx?~$h1c0#@pwH zpAA8q5Ole^^2wF+;&YqtsYo6^?*%jX9q4dP<+_!R#_wugQIRx!rP9FvwUxhK`QPz5 z&2LwPhKIoQJEU&`-|s+!D=QN&8(LYna%lWJ&6(s6CGRib{9Bc)S5AoE+E~m^^(=+QZLLizChLoSyAbt4CbQrjnX#YAAFO! zvdM4S{IA7J7S8%~{FZIV-4pN;rkUBt=Uj153ws9>(Q9@5<{xKdj zF~O~u98xTJkI!`6w`@D6eUhzbR^va)@%T*_Ir-gZSv+fLSKn*xGKO(q$-Yt$-7TL= z4)5}77;KXlhH@qWITB1Y1q-$I$a=Im`iHtXV}U8lmsl|wdW5ncE#CEa|8E*dXC2a> zH~*!T!dqU~q-JcJHvGtv-Fu#(?0YAgJ@x!9ENaB=F|)NM5B{m=T}l>(3pBjnugxxt^B5{_#JEvtTb=dKrI6eu#0`W2b0r zxq2KM? z1L)5_^Rkya;F zKfVa}?8@s`npDA1*N)H1g<+1yoEj~ozgGoAyA6ZzBYtT8%!YRZ@NTf+wc~*PNZFRp zdf<)yAbo2$yj`VB1HSNYe&K=F^@p$S1#b)dAm4YZ>^1GbW2cFJmK{l4hHN^~w)a?^ zb?Rb^@5Ag7zhdvh{+ae=-~ThdUx`m%;}f5Y=YvCSUa#+WIIoZSC%lfFIE>dHhSx-& z8;s4bu>_l6Q{dHd#uZB_A6pL32)`TP$<{;gFnhYHBmVss@FT-!e~dgA-`v@+qLHJWsd>n3EncYYj4y2klwNBn7Poc^PaGnaCW z{+@Bhevozqza>(}wZD7w%Ze-T553^*&*LB3f0P(7pR-m=g*PM*HK%;C^H>+lN0)o7 zbq4gr9!_GNF<9$~vw=ghO5 z(=YfuUSf@nvtOKlRA}Shg9HNnP2?Z-wkU*KW4*v&@(wRC4BM%H0-N0{}$BOXWm`3x}Z|Hbixwol&nPJ8)`m{X^?IXJndIOenKT&Ftc z*DRSC{IBi7Lz~(cj{TKYcj1*=+ZSHk+Flbsw>dO_%gU@bPTw=W>-=WF;+dKkFKLQ9 zedN_{ZyNM?d(&_K(q8}2hgKg8L`K(ba6d;SU6dAlA+&8&DRm9;J-a{<*0%7Uci0upX~qEKn5~rX#Ums zQ}k}&Tj5!2f`5iTgnghem4SXmoOEDKkqQ?&H<`LR<+b6NCN9XJ0&C$CoUAd{3gfi+9@->}De*~rWN;R*4l&FsyrbE~j> z@1u_V;MF|KHc*^<8ELC#jU7J}n?~g|@9XhNH+bwq{QHAleYpcUax~kpx4u;Dmt>9A zURQjKbWs)W1>a;3=q%rC!QsnTwcnZi08bed}^-#klt8u9QH)t@Dlm^qz7c1 z$>)c?QX-rx4o@~>8n7s4OM3;1)oQ|zR^zdMw6^GeCvJ5!^<_V(4b}IdckJ<`TK&t0 zxSqbN`q=(B=`Q&h7Y;E6<;eROXNIL`8j*ET%MX)SQOff~(z5xjCrv)dMr3aA(kF_UwdCl7yzKkan?`+v%4-6+3#YD4#NiYmb7rj!W_>ZF8 zWMSc3HsE#Wg`>rTU-V6rD*I>_W#hz)YCXFXyGOW;C1%uS6D!Id&h8@ON(xrfo4o8i|c zC+4Dw@^1X65g!x(xrH+I#9TCW$6TaG+vs0yvzF`puFg1P`{mL1suRt|g~am9hxG*K zuggiRDKc|UV{A=~L1SVp+cXyA#K6|~jAdI6V+rHybI0=H|H4?F^^C>lPuZhs*14Cw z9QX;|5zl@j%^tJ%vX4eb%@OgC#=DpG>#@!!_nt4$jQIawwzw`7M&X%$I}U z^2?t4AJM-%_r3FlHUE%r<4?!jqTgzdiy_-WYjXMrv)o9vS%~M@Ig;acOHDJh?dXgCFUn zh3ql8ILZS@Rmf4T*?Pwl+w#MX_v@NRtRL}6I*a4#TG z*J?b{wHk+XZ9V9RCva}u}_{5`a>`_X)y3T;F;_D(Dq57%F5-TLbdX!G>{P=9@m{xx13N0Rrc zRxHDVBk=<{^8Wc0o<*B^=defR#QsgPWB+V>EG=3j8PzNQsuJ|LwHMikdI_wz`!;lb zP4SxSMZWKg)WeTY^RM$u+J}@r(77ayS!>x?7Uw%Iv)AF`bDMwCquLX!weXf2Z48(( z#8Ho1#rdT&^mH!k$r^v~!JyZM;tZ4YzUu#Euvs<;9ejr`I8JNR*L|F6qK>s@rQT$3 zJ$z4!3Ag*rvgm*O5D&eqc>VNfIj~gqHwCO|x9w*vuKoRU2X^sB>kG1@E&pLud#X2K zpS3=wv~+Nu6)op|=VL_;oMqZ=mg5g1jeVV{VlRW67p@55gJ9ou&#>x+D}GA5-8|DW zB9cALaMsbbd48Yz<@3z1=wCeJ<@2!zE1SjZg8eS?_cLaTr-83=Y7cxr0zSbmo^GOz zEMJCYlf^8XEZySiIP>!}c=|1er(=#y7NdM`n{20Jlf}AivW)2W>0fQzJT3fcpVsE< z(ahCEk1e_bzFkLo#W<8<*X{%F?6q3^0UD!tO>K#0HTq?YHLQDT@B?k(H!=K3vHF>M z`{Q#&vpn{>Mu(bKXy3U$F<9#-mg-aFoI963fqyiY>fsgf{LU=To-i`0>md8VU(U88`?m_!pKrV5< zz2#vZ>(F}EsJX?0P@zuGtqYBw(T?>yj~9Mzjg3B*@1oXQSds&!RzF1ykt+ zo!0WAgR7(QH(2~2nu~^2+-h3!xDueNO+m>QM*B(f)!QxNZVX{9of7sVvM(kB;eJ`KWR^+Z^Qr-WJZ+HVavgW5c zA19u(&%V434AQGD@I?ys*GaZ~pBAUpo8YaZwOu~qBo`&fEJ^Hh4|oDAXt zpvk^hZ9P&BZ7qGTUq_F`2ia?u+ewqIImo-(mR_kQ%^Tx|U$I1E?V9I_?ONcA^tsf! z|8Cp!YdHJB9_$9{Z&)F`q;c+`s`wVh-?*j+FK+wZwtMu$k?r40`yYReHgs01*E$jz z-=#CDt`52i8V0ciG(PQbWf8OWkn93{fpzRhx%*IhcK4xt=)rqJ&R|m>F@hID^2reAv;;#b@XqlPKf-Jai7aOZT~t6|Dnd=Lsw(7bdRNqXPw#b?$=#H z`z_4182n|$|M_yqr4auoxui3d$CDopnsGJw_d>vs$US%2z){HmSIAExK2T+!>TA|3 zZd^9K?%eq^@ypP6+lI{Zv9~6^$voO9o{+70Cv679r6ZLN4K`*iBrX!33FefJ)bDxZ zyLi#F@S-^p=Gn!|B%T$g`Z@Olh697f3C|(3d%NJ&J$(3SXJ!u%P&&7~tP-16?HUUv3%Bd6|-mnde?!Y%uS-=~k~c!wXitp?vYLx)*=?#SkK zMSV`N?$rB)GP3b{^PQLHe$PCUPh33Y_%FKU=h6HZ*U_fqzi?z}&$+tl!M$ye|GfWV z4*l0Kw{0DjV##sMmv6B~7M>*sglBVk%~e(SJU<&KdsK4jD87t<>_g|SMtA@DB-w`v z4Y9}j-rP0A$N8fk-^LtprTHnFw;p|v2H!5V&M~A!?*cAAw3l68dRoW0`oy%_m%wT0 zdNVkT|Hq;WYt$gRQv9a1WD4uY0Y~7|9+PDKDd1Byk!~ty3}41M#gX){wuQqQY;#L4 zz}K#PDdk!7R(82PS8RHBp@&K-FMR(59G9w%$IrXD>)^Q!2Tzhd=ye|lvCfi#Qjw+0g7?DZQ0`ImdNTIllYJ;G!H_miDds`up&FId<_(bQb=K zb#E4**uCC1^Fu2ak|%wsJ(4l(k-R%dwqRAU(j>d;?+dOJ{|dkInZHi{LdJ17^<B@&Uwy;i}$T)LoTe3lQk0)I+%xXt--FlCAzw69T9c@aUPCd)sJIo;MLGYKy{{Aj} zBvmJdfA6EcCn$GaUbt&I_%nYgyU+9~$}-@zIzRk-!BuohxGRVBY*UmaUKI?!aM{R- z%ooKEo0rQ*PWj=2?fEZ8w(lJOtM*wV9&cax{$JW(n*DBj-VfhzPkgbpJv4vH%Eb9o zSLSw2sr^>h)Y`0sVQty;(eTT^ZijBaZkP~bE%cqAhKPO5-B7b)SXbdv;UL(^9i%zs zBTpQTO!eLP(@AavXl-~qCC7*MtTM3_(v&Yk)ymH>fFIO{0Z(b#7-y}_Sv|jV(sr<#{X|F`j z(rKo!Y-H$_(vfD+EhDq3^AdIH!Q%nwX27%3PN2Vf#$M03eT+LVR5tRee&#jh{ft<< zklG|)b-K$8v&uwNhIs9gdGOwMiN(-dYQfICZvTDFhqxcNGGO+IFLr{XT*_X*HGH7O z!L{%#otG0T9hqn5j@)@q?z2H+8b|qNjLh;4Z`=75@H+mwk*eq4eD#4BSbxp}F3~!V zHE3|~gDZrGso-kL=7pJw&~7H06YeL!)ilkE?hA^;@eZsy;(KMRmHl;cqZqZITIDRVsp)k z2A<0qe~*7C)mn2%PG>q=w+!CP_S7BC^FZoe%CBsh6OomF8V2e)+bGi6hjfffL(Vk< zr+5Mzpu!J7zj;-82lIWf6Ca&#(1-CrTE!&fNjlFeS2jqooWwxGC!2I8gZ?%kOFNm{ zr_hJa3yFtxUMSale-(F0tfr6G@RbS%VnFhxhnPp>&IT@x=RJI0rIbk_UHRhKI_`og zaPpO&#yKIClU{GaHx@)!H8Bp$H%1@Tz@xeJ4E<=#dj1}Jb?Q@hrzws?ZEPY=vGc7} znTq9Wb$r&MnY(UE?%_M#8K*tC#jX#aw+%ZEx$^4^ZC?s@^J3c{kkRcA*fyZI4``_6 z4+wgEKw0<$GO+(T{I;JZ==dsvTCX_wR2jysIE9eos|a@cDuzZk(|^q3JN8eoyMD=- z9=k8RRI*=w0AySK3)q@14*#7C|Fuwl7nXf8hkOwL@k?o0Y2oN8b58rpQ`vV+r}b-_GvD!Ryy)qFeLj{VQ`VTFIXvm`Iqdqo#fRd#&m13o5jfeKXq``v?#1t3$($-9E~kz$)v*q^ z6Bxv^ikT8W8+bSEUeT31CDFOEKiR|T#;fd2FJ5;7v(Ayt)EBi&upo`Q#7dQ+z)bpB^Rsw|fsiPw_r? zL|Q!hFVf~6{G(q)n*sjixrlek~6U-ymMy>-jgnb0Y;WCnIXrDu zW@SI-J92&1cKaUBn$fRwM`p&Z>M~Pu$4LB9nUzbjxRb67o33BLq#}AM@skEu&FQWEG2q4X5S}g*UKaR93P#^XX~sk_jOhicU}UF>?zG|9bvbT z54^tcjU!EV*~nJzZu13Lck=uvV*7(=cK=)34jMx>cGSxq(5SGw|5E`zwu4)8{2q8Xc8 zS-C`U6t8y-9H+g;D(+a-SgN6wbdGTUxYNJ**&6@Oc)?`qv>fO+Hh3?5OFV3K(8l-Q zDI12KEAB5`>du*(53TP7t#kF2bd>y9*HTvVq(?txcH2_(lPz1$Rd*(p7VeqsNdkDD{ zgC8YRcfv2hoYz<6!87<8cjZ9a)Swx=>OSt}<@r(S>>FUujZARp&W*|3f82yD>`mvt z(YJJ>MQ7qj#G@{61&*MzH?}v$+C$SipqV(5yBwQY>wy|)JK^9djQfl5 z=cAo{1I*Z(`zn{L2X}WkaZc)cHFDUMVUsym103BlY%~6@uO%M6?T|y8YVJvXJ!Hmh zr(N-!_{)`juHD#-FIc+o8v0ZGi}p-@Oq`DVcA37++V3!5*YC0Ce<}CI9x?x&v1j(H+d=5_G7gJ0$x{!G+|MyT@2czWn|<@PWpD31{$tyFha;)~{on zEAOY#&(K6-BC+*)$56FevPiviCZLJ2obB$HtL+#ed`;Ww%Y24}O;@UtZ%} z)?v{a?uC+E(|nU$Po!VjDein;IR#rd2|wj~{l?bedsG>fmruA9`7e2YdkFs>bF)Tq zpS|L}syPcLTl0%x)Y|3WiEsQiIBWbYKBk)fa`?87JFf3BE{(~A!*kz;Uk?V%xP`!# zC*Of&KKekg4C#z7m&{G4ovM&2u-ajs{DV3!9M#ArSN7x%JY4pOcZHv?QD3-ledI0N zi7q_;mUbRS$7l15EG`he!_a$`zqEY{Hu+TIdYbw^{I>REg5O)Ug8MgDHehROpT&X& z{+2Agl<~ySt6DqRzS(puE-WT;9}K{x)=PtF=Ctza%sI3~SJxj7PM8fM4OywSP39zXN}yU|$O#Kfzy}f}RyW zyW?MI|-cWKN9&ozPx)L;G5F=OnZ{FP5fQY zor8Zk(=00@F0(Y-q{{Zcmf!pNy+*&BJ-v$G=XvMOg47+ss^V|*>)z$$>aOG2V++FT zt_{>@Sm8Z2?8zDK71zB@npfUCAKiMIBWXve8-zEFZ|Ms6K1S7#zi{}ymwBAQS8S!) zn23CnKGS}mYxl+RFH4_F|0qrVBF)EHLEBHHdkOTdIv;kLzE#KG-TDwXvgRl@b{#y} z{qDr3&qN2Q56W!J=^skcnpW@bcy`dIq0bhJ4vH1&xdZdM$vO|s7+BM~F`{n0*Bw|j z79a5w^^_4lbDcTc0?pjHQN^>)qj}>gKA(&aKsGXTRy@T_&OrN!rx1KTVkI`S?h?M~HeXFXIF9}u z-gnc!Nt*ckXmr=zT+21)<2mchnMTE^xOZJ-|C96orqAK$|GoDXGI!RyJW~z6<=bO# z$+@@7zT5LyyeOFF2&Qlq`_MgifvS9OelMq72>OV}Cn6`jeBQh4x2-mN^lk{=&Ktby zZOJ@Kp78AycaHR~dy!MO`>x7i$Ry|=_>qCf)4Hgj8pa>wdNMiaB9l)}p~3 zd6u2!XRWcG{Z--RThN^~Ea#hhsqS^w%$Jhy%7+iEzK{57Cxz zrlp8&)QM)*7euDB0n8#j8bPEY4nT#u5|+O6!e>8 zoi|B~zD)b!38tV9*{|4vB<6i3=XJ~H54=ow{Z}&ocj=e;?1P4<1IMN#*6D9_uhUz{ zvPTE(^^Px5_V;gC+X}W)>dNm2o-E%}73)^+@k!NQbslgenHztqb-dyvEZIg3#mrYq zo0Ey1kl!oMmz2MX_==N#$@$r#@I4Rke-m*SiZ2kHZT!|!rjjzdmae)A{FclF7SXAY zzVnd9H3J-*seWXn1v#%cfz!kjJeMI~WDic_-Nn(1=h^s|Zv7E$OvUzWLJqhx!1W`& zOgZUdtDfaw=!t`B>*ur~o@Ab7eF@*$c$faYHgb&d$Zxclxc2LTn>fOJ;aTI|jc>m$ z&#X@iH_lCG4&G@x#vR1o)VF>lvvs~mc2|tL=Y0@g{$u!M=z`P;cD}V1x}UxjXD%C6 zYoq&kuMDKOwXg;W;sckAd@ICxalX6LVacJ4sJ_2*IW$(iACu?ZgY@Ai)gELMcOnKg zpPfC(FzZ}*4>H!TbX*XfUeCEW#T3`kr`EMcqs2_}jzx=_{{>pirGL?4Cjai5Mf8~I z&?CmT%d)V=N*(#zmB5-8JiWzugfsEJ@D+0KwHZ0qN-T%_&7v4~d=v31F=A4hXd_0u zP3Q4@9(NID+TSc{As$EHE9yfV-(|12oc&+LwS)>Odldft^eblLKJ2ngU>A)nKJN9c zW$t_U($7BR(|;pl+KZ3qUhcU`;XW|U->0~{yTcy(CxXP?+>(xKdwb`Za39(YkqTyCKqJJ@IN)O#B7 zCFop#B5^}gSz`s!C)0f?74lUnb|DFvo&cVT`LC}GT6ZH)YDVT*ca!B)ClNW5=hV@? z%4>SnA$ExSlzZyv&Wac`SKX<68)7HV#D}%%PJ|x?f?G=%6Y&pwFvv?b73uqCiv3f} z{qX2-@2^?0pWmr_;>&~aYnwGz=(|DuH#}izwEobw&6D@Xxh6w$c4&0(xn`N>vC?Zk zv%ksVPsogF|0DL5@Wx#Hky{vhF0eFlw}ZyPJ#!TrhsLhE*>o>k#eFZW)HrU}IQ;g# zY%#v^(EF}!bdv=Oc(Ux&VZc#C%#rk6L*T0Jb5omTAJm39b0r_frRd2^(3cmZH!nhe zUdVZ>3%EzVPoyGIesInnSbb$3cCUBS=kfKwV|*>>Po0O93{yrQ9BY|E+1>;BG2BXFqB$kRE;6$oGl^kp3V7*CLK zg&1EVc0dx}eDKQ-*mjUT#r>@JgqP2ukJhuX(@f_(_-QNq@jbnZY(GhPAoyU-Md%Ua zr0Zk%k=Ftb+)tm{Ta>ME=Yqne#GUNvPhK2bp$vN zFJNEC(#`TI;(u=Btg7sVz1$D(q69q_|VL|E+HOfp$v-7x(t&3&vH%&g?_4UzTFV zp617Xkk6Jg0YDHFr~ zC}+ONp2_1kWSxgpe2l$sGmt$8>B*(ZW^5-mkj81nl8!e8spHLXjJa!!SuY(VTBY|f z%YF+j-eQa{J;I#HA}@L|Fi757{MJiX-U2xMMZZCNvG+~nbNEvBg4&S1V5rkXZ2m#)gL?KC zwDLSNL@CEuMI3l8wJs%6Rd*tB=hq;)h(us@P!orX*;^pQKwhne5NK&`~i1TGP#Ti}U^7(|hN6Y|A_+?+2%_$3(m0CAZ!M z#1gB`y_fv~`_lftlhrnN+WPU$3P(SoKC#Z)JKC1>oc8tbRgkw_>Gqz|ww%B9q(?|M zd}r7ypPXcszYgB06&%n?>(wjZotdNf)&cd)xpP~xImEZ_LcCjdSy$utA+|g3IFpjc zw*@AqnKS&n>rU#KCx$0%q5X31A}^p_x31E@sP3BpOIy)AF^;7HAh^(#5A zbgN=~ayS>3H3)wv`z*$owfM@<@KsfvEx%Yjai_AS)Rz2l!LXUD{j9y0J#XzZb>Clv zZ>H-Ye((2m>;XdYRmA{QSr#(X2Ct9xRs_WtF=H!mCT2J22S;0!|*3xe-z3N)hQ%JXX z1e;axbf_PGw=fR1CEtViMDZap^c!>4>Z8Q&V~^_4$J^6r>#0!3(;tIh)w`Vh7WzMz z^z*5&v_kl`iT1TGBtLSlPj_=))SSj0!>M`L3r@L7)E!5?3A_gfRc%aTFGl%k_?p1= z5jOVQv?(~`Bi35awTlkWMp(8SePKgbx|@9}o=sa7YnDpZSf#`VAwxU0=T^>Is|h(= zjx6f-XEA2^vu66yi^K<&&oPteX5tD?`EzO4|u<|SV*6`SMO7FyY-#LNp=h~ytYpF_Wq1^{s5luI9cn|!|xmE zn#bKrFZje?#FqM5liBN2tuceZqB}l*NBtmcC-HTN^KXgHxj6Y^r{as9&bL#Fv^6s@%I}(+8e>Iwv=jv&+0E0JGI!DBRfwe$e5+Zlp}*d1lZ1{GuQW z=xdurrw2xK%kAfZNAlOIn-K1NSGY~Jzk&W&wZocx#|-YEVQwmx>2J_lzF9Lj>#~y3 z%ok!n#1A3)cy3o-YIFf|BmQ_eB@~;06+D2Q-*t1_$TotqgTlHuF8urO+|yWN3vi zw_qlHa~6}B#^5y0V$R8Ku5{A=vSms-0GSOlNOBAA7z-+_~k?lgQgffT;~mRhTM z?Hx;2#kleBh9#fUr=`;0slfax_zL<`rtPPGnuD(v`oGh`*BchT-dH&nd~F$!UYqI* zZB@T7(Du?^xQfp@bNnA^zkC!tJpYZAuMe19n?@hP8)<_@6X8$v5d6Jy7y_n(S8{9b z_or-qq8IF&W)+NIOWUk#qxT+)FLz~y6x-giDt>|@UX$pOiL{*=3h{%!e{7VXQsY*Xb;<}Qj{ z>9K?q>-)evh-o+QQSa|dXjP*_2*;s7hmdek58vQRNhTuOT!|wqW$#AdER$uDJP2(;zF|2Fn2|2y7?Q2q{;F=oy_?1szOUt5o@(Jc#| zGn%Z4xyNCsb&tb*%8NcX_NuoJpV(3BEwby~>eRc^s+VQ;_Z0mRgfiB}rD%QBHcB$A zzOQxKuz1RID&#TJ{(v(kj$dwG_vFT1RO=bCSrA>5%i zI~y8tzHtoSQ%juqbu(u*^?HAgTjg@WXU#XlOQa`rbDCCc@mFonGj;8GrqPOTRy)1N zVavI2=PC3j{8>61{OV4Sw22)8dd(?f;1%EV z6WWsOSg$jb+(9>)`{!2S(`QbW7;M?=>EE?oHMeEIYQG}ul0JC``!$5DnZmea!-lX| zPYxKjO+W7N0me(r1V)-&j>snnY}wRZc1ho&@7D_pgGX3F~ZX}2}B$5YJ4 zoe6KX*MhS+cHhEaOS^nFQ@MNng4cq>^^MRAh$rvQ7zVI6aUtVaL>r$lAGu3BvWT+F zD7)ystt%J3)_?daA3kK?MF(QU=Ed>%TnFvs6VaUb7`;4zcJ#g$JLDqT`Y+o0<)5;i z6>jhoMLwauPiSxV{H-hZ1qMcw|1e_wI&qq#`E5E z=)Pv*>*=>m!!zvRHQ+BTPcR!~_tjBWIwcrN-|9O9TbA z{2&kh(fxp)`6d36&8WNo#Ai<2O!wU^;=A}aY`$CIH$&{bWZT|GwtVTf_8?%lT6PA0ChUx_ov>=f9hqkRet065-Z);eq>*)V zNNZ@m&!=zg2KiQ0)(+|1hlPso@zvGXf{xpKa5 zb|Z5xjlT4(IjXuj$jXOi?i&9DW%{RaPL(km#`z>;jx*+Z=Gc>blQ7OV35)bh{fF7B zbla>-GbL@zx3!enq%!PnjiJn~v=^tX7WTH>wrY5G>*;Kh+wX;g?S55GFsfhXO36Cf z%*r=sOd5inO?HjJV4GqOV)%>pk+T*pvDdZM;YQT%O&&`0jFk9q}(N zjE^zrRG)p)$j|wXSKF*v;|BzSwQ7GFG1${-^CWo5Ex(3we?*z&irn$5_&!+m>3oxe zy1J+1qeS;Ckw1DdY5fEK+TF8089!j88L}1mcmNskD)9Y^w&UPkYo8y2Z}tBw488nmTe7#Y6}nlfKg?}4uG9cSh!-%NGV?`Qnyn34f! zIpgO!>pq`#7tay>K_@@`Wze76_%nT4_$x9ciPWDi{PC=Q%b-J;a)K#w7kSiupFH7? zyG!7=fzeNR?hpRlaaZt-%eS-^<8Bhk#>j`ZjlR^r`cZ#sTW!>v%-RnEhHq#3@>y?j@25ZN&g~H6oXCAC^Oo1FxRbF- zf85Pj);Kyxa(5-~^~~R$$ZVZ4iTi_u30Dn~PMUb3pL^Mgt{;Bop$w;9&KXm z>4DVReWce?|F4SYsknW-?3aB0lc_I$%-UdP?@D=a#VHw&tjHU@C{y2My~+3Biu$xi zR?PG*%uMnnw@H3TH%}p+=N5l*?MLH(xV=Aj^elS++4h^cqvw-^s_iHL@P+nQxTj|~ z`v!adZhrGV{*I5vA8PNFf<Apd2J4w@>Y7U)6-1j>_g8zQnE5 zjjyd1nrW>$Ja+U)jNGGk~lr1O_fDYWpSSDuCn9 zz}I>pUeb>;8i&Tt9!b9NAitT?L53Q`^ zJ1R3}gAJK-&m!(Jk{msmyNo^#Btzk=7@ z=#eKS2a);GF|Rs0W;Z(K6Y{c7wROx-86&tD^D}-`{z=ZaOD~1rikHwv%5kL6MZd(+ zFUk+UVW(%IUkvmdh<>o_0`#l;lKpT*U+8Se+#miHAFuVLZLK=4&qa%PU&QmGPw!i@3Lm`x(bX5NW}PLx zOV>!oE$9=tcon|$z@v{{w3_rq;6FTK%|+LZc1H&4>{`2D+zkdCQpItO##Lq99QP6rzHUBw77hDt`(Rzz7Y;G}+t{#wl zcJhG!=ERY|oS!^g^GE!NtRIrt-*nDOsJ$xh1oSSvIT2V4@-lJm%x9U~uRR#&d#1;k z*HZ9xXrDpzA$OR0ZRUC5XLC5$03Kg!piCjOlpU%##z(OA8|B;MTvpi-Y**}DKYp9P zo-MyJb|HO-jxo<#hzFGpn@?G__s_nywDphu#=1IO_V+a2k)ad5!aZ1Sx^S&IIhZu@ z_dtF>nsuwC_heV}o=aOkh?jISKR)7r7i+$0X^rD$7s^Jz8M|*2c8hHEr#Hn5X2J8( z#`u^6UFy$7Exy4A{{r`n%I-Lkbg!KuSUw>wb7XkQUiQN~`TvOjT~4`I;62U74|yL( znZNO?ckO8jk7s}v$qdK8w>al`?%2fdCm(>;Um4^}W_W#3LH2p&dn$*&vO@O#0N%4X zl1=hawURG;DeHK%F&Jbo%Ckom`npL8205#apG~&E=$;e|)>aTxSONW0`4+v!AJkju z@WvL>*{fb3jD_%!#NM0`gGdjx-M`xb1F5H<&6Y^!ICdC9)ooq^C+ z*>E3IK1j^8`f>Zn^4aHH^xawY_Yt&oWxt*!`>|I_9v6)hjv>SOc8`H3PfXRzrQbg z(%pMXe2dG+{SfxP<#b@Md{c_uWQ^|p%C27k-%sZ!@(W;x?zLhLvhqud!gGIhAilg5 z|H#{|@#Wir7o7;K{%8>}XpV=85epCJj6LU1*+j~hoo(35!wz@-W7b_;lbx6@&5OTs zPo-iqs*#zxUn~38o^MWcuyz)IBKMp)1MfE{Qmi zqx>>EDI>p3tgm9|Y`M6T{>v$=vHRd_*$Xko?+5OB=esn*8}oC|PJDS~;^RqnTyPF+ zeC@yBFJ5>5hu9kU;g>Rw+pX{NN{_P+p#7>3d+vmGaqI(Uj9LEn#gFkJedn9~mJu{sHBnr9~V0Efqtw1sRZtTnR%f?%b@M1HSuzW3mYsrXdK z=kXm(Fa4}I$)5ZBYoOoZad}?)4eh312lUGb*nYKtmwt2UKZuPlnQosQPv=g^H0!Rk zbZ98qJe{$&QciTLj-tnS);!DsZ}0G|v>njuzj+qTW)jD?1sf?1`f%_;aZ&k7%TwIK z0B}ppuHw^ki5HiQAV$0RLB8{T68mfuAM(wX46fii={o~S`O-&z){%nm5n`+~kEBQ6 z;k>ry(oyM8o5!NN?y=O-|vYz-|vYr zE{o?lpAL-haz=D5apAJ7_&&wBXPj^MsQhGSuDU$B**b@A#qLHm7sqzkFj;UE}pRLM>KI_1$JK^iWaXI-R^s8v5*yt?IDU||?^ldA1_(9U(<%*X{n@Cy< zzsCcgWR}*Os-t|Jm#GI|X=!{PhZu%8t?vZso`Uq~O8O)o0p7FUm-DXqq_dNEl3q@E zYi@s~XKt6VUemn+ofVUz&H2#iJp7^O5^rzskMDB&twWDV*Ov0z8-5>lAog#H?(}^c z*xtmac_)2s0JbdZD3&7jII-a9%bjm=hlejTRkA?(Q*ko6gKJha&MNPy0A8KF&=^$b z|Iv2t@ljRh-rsu$WY0{(EeV$aGYM$TOjJa<)_O7l(Ol3LNb8ZdCkgblNd~mROGU*b zXnPU{lz6Ev_?`r9Pm@8sRobMN4;O1sFlt5AzHLuG1hh3Fpx_OnguLJ1p4l+O)VA;Y zdHW}rIW$_}FB(gYvChBQ$vA(H`W%_Z9xM7H`ceBjFTR=g ziuH`gO~%h(vfRwiH#NU>9&R8ujQgI)=C^(ac#r=vo^wDkTjHyO&tua0OBb=G1vvvr zbS~Pr`w1TtTv>(04X_rRM;XN)t4y3P>&yk6cfovMO*qL~*+GBQj=m!ob#y%6sJ!T8 z9?x`!gVs6aA-fJ3yX-wB_8Gp|pC-f}v7b5lYA43rtVO>d&aMMm)|g7Jad6WG{T9sM zxw@5H0~*sD>X%HU@z#I0`^2mR@N2c9d{K{p+g5Pc%`+Ru9>sXnjujrQVMbpw?Zo@# zk8yVSgUB~g8xM(`4F4xd>_n!sCd6~om9b~zjgJN%zKrLJ|F>yE zdpVaI#GJW82i;akc~^9={hX@jcihVcXqSawXuRc{O0~x$9lM<5!n9Zi>xXow-K-0f zR6n|czOP3vYbCxcSU7S?3eWBSzC^49bSD0^MDU}Fs;vB?>PPFT8)tb&vpxrPhPxHZ zW<0h5M>lY3z9}xcn^VhwjF_Fnd95dD|V!LqE!A9l{45)7TzloxPiX#c?R#%zO`Z z&g3j+=DGNNE&Q(AUIVO%c(3NacBX_OP~y?dfjFf{;=MP8G7V7ey>CS41rI_Ae+Tsyi?{~Zg#T`@Q;0+)s0v;aE3nzPf~jknLi z|1a1s%o-a0aKMH?tTMoVdffuXd~o;o;C6VYNALo7gYXDXeSx3+5*i<;zoqo=5dBpf zVd|E@;&OZl{{!D|;%sh{XM2zlRelTOqx}zDAH)7)uhq&GBmN>@qjq=y_WMhJ&i;>< zL|ab2mbyjo=-%DmSD8C$Bw=qXu3Ez&M{~OOb>AT_?gbT$qvN*bs$ z>NEC!lQ@MQ_&@_~%Qn%=+T8h!(fCbb78Hlj3tx-u##U;Mi+Zrd|CRWKxAT5@zklcV z7AroX_b0B_DBu0yKbkh(P5;lQpWh>{;V0|c-uuP+wpF6zUi6UOT=q~*)i2za3!MK# z|9iQ=LI3cc6{aT|G$%)UE~5;($22pO`;pO}Y4Mz(e;IAe@>JZ_<{?kqn2HxDC5|C=D=GQ%xgW!o{G8P|EpJq+w$C#B5vkd1$es$J4rrc(ZpE0kQWaU zPx=;kJ_hgTW1S8DwzTc5tSv!vn6J|9iCk```rf*r$zOR{gJ0*w7yc&Db^xB=V}{$O zllS`=cE#4=*j-(oNRZr>MT|u+GHL7GOHbsve7%*~4V!w|H}F<=bW`tT?6KirdvGXCyF8oO@7D`oD*1%>vaw#?U%2m% zn%{0N-&(xyj)CHR!ShCJ&US~}FEKpDd8XOxai#j|9)84sN!><&(3q5aiQ8z$epPbG zbERz_`g#d?ISF1omp1r=&js3?HrJjU*dC-F#<2LL4Wlm>W&PQ zblZD`(qsA1ns`nNe1bd)eV3vuBiGI7;6BbLtj>#g7Ur3F#2$WM;TydRz+(o>_u?rX z5xDxOQ~*cer-);2-0U&r0M;;@qD8J6x^(cN>j4 zhAURjzFg!N;FhdZ*j!F8*>9(y9q%n{j0e6>bnLI1jS zhuvO$k14VB@YAi(@k(s<8?d$3!$W+~bCG%C=Oyq?_D1&I#J}X13a$s|I`N$sZr{o{ zJ&s)=Bwq!#g_Ua_-&}LPp}37j+psP4x>If2LN4!D>?Z_9@5we7#&=t}Ir#AU>e zp#MHWJzu2Uz0~u>nkVpIF5ma^_ED2Y;ybe6UG@NcFA&rFX_q~=>PwW}f!r7YZq5B| ze4{p>Ui0MU>8Hx}P5;^GNn_|&Dl*$N%07{r8r^|y^su>p(>vzK&KI9vzlnw9*=_yX z*6m~S!a=XkmoJ|<~__st?ym%)*vux{uDra(z)XCSHzO1AX^g;D|?E? zcRA2UHa2+apW~)CY}!q{+Bl2+VLZDH+U+2=Ilx-yMt+Ff5z>*X`T0z^=9kgESxkbGJ+7yq~eiqS$WC+1AI8O5YCBHz{GLgAl$X;$_FwUV!oVh1k zaW;5cPQ9`TNrwL+dLeoUyd%8Y13m>y7BD!nDSAUmJ@1m`)Lr1a9$q7yNmg;>M!_pt z%9gJZwg&Ma*}xr{M`!PSaueqlMCJpd6F2r-dtXirS*R5H*+TnUkvnRrKVR4IIj-$^ z(mcjS?TF907$3#KiL9rar>if$T!-DijBCWd1OWuJ;dHuE?rl;^cCn?(g}ov z4`^FHvTk4!zt{S(i|bZ&a3c->U1B|W6k4i9o{=D}O& zQnH%{%#ppjp_{iTt2np+Fwcn&a}SGZ?Z1cX;qa2TiHX@^4C}36UH_if9i7j9^*@H^ zwY}{b5uJ4Vzqg%4c2Er0=9*t_zH^{(-y=19H$Q@`u=z&sq^0gjzOUAJmXx}EkvnRd zH{UVvt$la&nv-t7dy`*v{xR%o>!IG);2WyrZQ#^%3tQI5-r>4nKURDABlb0^=Gu)+VWdd{E88ts<7 zdT8Gj^6)FNQP(8S2Kb1WP=_Z;FPFVnFo<8de_Zds5uK`wHLnL=B;I86e#f549N7Y& zZQva|pc>gj{=LWnB6qFoc634UD8Xafbd&rw2j+jaz20sw35IfD z7^}6PWep7h5nYWAVA#SA^3)P+lzMvYJH8|@EBH9vJCr_dV8b~!e4{a*KN8GI&L~YzFvBv+hXQaQ9`G^2035{dhb;D`3CZF zjzl&oT4Xf7WNz5>jyo8ussVke!bW_Q-GxjIQFCwTLnxxt1H@W=f7ZeZd*5Uipm_uo@g24dMk;MDRhsEYEFqS zf8I1YE4}_`R-@7QAbDyf^X+8*u4im(6S$})F6J<}XaX0?LH_RL`9baBKLReIrV;Hh zM@8Petlr-Ze?EkcA$>zSc4f9v^5P`p*(k8=r_2-l$GpDisG0TtZ+nSPgFhTHy~SSU zXNYmxN^J9u)HlHQg~TCwjg;tp9&#|4p3WlvOU+TeMbq!wgpAo(irjuTbV`iOzHR*O z1IJHcH#lsL?rZ|bkAdSOz_Sp!|J{6Im4GJ#PMe8|d5M4av^5?DHwV!HMiWo=E_gNX z*>Z#Ho=0!kjV|!A@C}|ziCJX6mb^o3(+XgI68KXMUsQ2?+vtyU2fl6m5-?Po-e?~C z`wvupyKRhV7B^O2()K0FG&65wyep+&huovdw=_`lk~tbX$LOf~jlV0s7k;;%Uk&Z8 zoW6e3Hte%U+^L-xLnFVV?xR&Vw%x}s;2ISvczd8^dG|oc%i!Tj^!fqlP5QLHt@tZ( zO}y89$fa)0p%u?ZZQHx%(lxKITiRr%M(QZ1xkL`7z6iAc9=c94Uz~$aQs>N~@1`d| zzclf@hv%Xd$#5T|OKCp5;PUh~z^h89lP3e5b+Z01g#K5u=Wab?vlYD8Fg9;8w~HAU z&g5;}#&4~E(tzoxp!`|#;LTS1-c z`E6KzYuoRr>my=?o-lpBYgjY)Q_m~ZqdG>ez1Kf-_2=6@hPIyMd*Sj3b)t_vTj5QO zda`8$@cBI1$j*7Amjv>|@jT6pZ6RY@0lfq>8kUL|vR|EV$VtXGjnpH3DPG^mn2-G= z0V5uJxt0E;AV+wacQ-)G%%w3+(B%un92PR44#9`K#Jp;Lxf#QE!QDz=xt8(zqCJO3 zcCI%^c6Kq3wlS~Xb&rfSGfwX&#%zl{XGZpRLGv0bbWNKNMfg`c^}LrJD7sgivE<3a zj63>bYy)%uVl&mIq5TOOng;EEo8K{LXtXOWI?Xk@b09%OzXPVxi;c$V{37P4&LF=o zaGkxjW}AU6clui9^xC{_qxl!lga_F)bOUhR$L}cZ9s`CTV{~kFbsM_W-aOjhyZVwg z=bdQiamMsU%0I=gkzeZVE84PduWY-RKCR`q#q|2T(8x-ziT#ZnMwarNx6UtK7=#b> zz=zep9&j~h9&~d3dcx!-M29ep+WV15 zXGqtr6>ntSX8nwybKob6=gLM&Albf*5eIoC(NbEp2#(!;NT?$s{&EKb9=Gf58@9@Ia{Ueap| zf3tR}bX&=6CtZ-m*dxpHC}2wxIct{j`3~Lx`91>nSGt6n7L=g2Qq;{a0U}_7SOJT zI*@6qee|J%=Z{sd$GR} zQ+w?^e#msk#4E#(G+(;|+0jhI+xm#NO(EVky2dvNS}rLvClJR!uCpkcm>rML2fuzg zLVke9__m7st~{f4A@?Cqr~e|)i~h%doHD8K$G%Bhv8hF|mldzsy15A&=o=B2iCc-) z{)B4}^XE=%X1OM@lJt88`q~lq%vg(QMYnBuVDb7b$fXN@vg%&!|1Ymeo%Hhg_onU7 zFsj!w7U*iW{a<|Sa{8+CE#-qD{@T{{AI$Yl`WPN%K%)a=jq3IEV?bwi($2t0<`s0R z=h^%>jYDov+w8X_e7t? ze;>T0BEfSW`TZk)!PP|lk6?R0^ey%=mna<`1-tBS9Vw?it%o!&y(#vKS}Y*xTTn>;p$n ze<3kW$5}(KW9@8mkB{u3AAt*uV{7TVU@ii8qTx!>FXL2!E>wihB7L|D`mLN|wq^il z1v=r^+?0VY!J9ub9ycE!zIcd-%jDo^8T}KTibiY9@sUF4G_uCC zMEy}c5$wc~{%`I3fVE+(i9ZB5wU&Hx(^c?-1=!NA#O^mAAL~3~1rjkw7v#52R8Amp z(8u^Zl2_o1^1bYQn!6R)9h}(W2r`fpTYNL~Saydh_(4NbY;pF9cx(E@+$syv|2etddOKg9{-=r($z8WmgID3+d8S96j6~!&-TC|c+KNoQA z#4;6dE!oJyQv>f)!R=0BZ9bZI27kzG_C7Z4Rd&k$JzkWIQ-gUSoBCi||7o0_Gc-E^J&f$8>G``=Gh^xZaYOcOP?2IM7Tc{^y_{d$6Uqpc@ymMzJP8Tje#QtciPz;Y}-;<10Q$+Z3}W~tP)B6@x;xJs_WL>5vVDZG;pNZ)sX zUt7MX4hui8<9{mxKE*TFq!6P@dBsOm4kN|_KjRd1lpJ8Nze9gfyV48v{RU$7Dn+lR zvHAb@$K=8@wJUGW>xSGJ?klF4XfHArs~%!+FUPh<6cEq#=&+|~iP)*f?}*`hT@?=m= z?`oA#=)VH)R?CdXkhJi;o4&P7u;WbQdwh_4^`3duTL)~~S4W+8&a4|LH(161{-?B- z6p5I zfa}-z;S<&xZpU_4ale9}<}CbiV|H6+;}p(1`|pd+oF}KaY?C!YvDnfjgadnz$)b2n zrs@=at*03e!|KgX@HOImPxB|mWOpE&XwDCg$u@YtfjT_!A8(eih_MdkWrreet=-gX z!*yHs>0E^mC*W=1U2x0r#vIWB?G{jX8GI@@T=$+{@hrQ{fiq<)C=(`b&neRt-)r%d z^?bYz$$<5gNrv5;%(>6lc-dD`BKg&>Gyj~^?RHbXnRiZ|I`h^pQ+K9J3uS7LpDB~Y zwT-hs#M|A)Hywl8{d+lmEY@_%lZuZf?xp%AVAuL>fPe9FtubX>JL^q3>w3%Z?=7ww zYs~E!{$Hyqn8#OP=gPr{t+lC~vRboi84s=3(ub^JXP3tZm#%lJS7r501$iE%-&8_B z!M}JLb4Fn&U`(*{udal5V3SJk2(Dk;;c2$p4011-z%ozFR$W<%x;~Vwm8dU+`dX-0 zb`J}BtQcp^ffhDe`Du+cQ;fNq`@r8fj=Cxa^=XXi|Lu1dTj#{vOVvGfsQwn}(YuN0 zZwE)fQ$AV2O_aTsvg(Vx=DwluxGd4$2*JlUf-U)*WZ14tls!p~SqG0jch-(Q z^w`G5!e7-D&N%=3zN(a38!q85uhFbt3rsE8HEVLoTY+seKF-Vc$yT7T4Pwi5QOAJG zm_^(Px{vm~jgNgk(dK^I)c1lf`Fp3Fa5pVc_O&GVoOt? zx`Q~aDdbG$T!)AY7&${=aRcy$YFanXLyx*1J8K>^DBoAhd!=&%yO7B#*T;Ih<5Xad z^Q@WoHeWt^9{a^IVky8fkv&D1LJKOJ{BAh!en=dGQDK?w)vcGbB7wbaawz#i?ybWVZw`0TMSt&!cFMVT;fr4ZOln)_41MG><|?=M z-^YWJkCEJVa&+E9{?XcR*Vi4w6w>{>aFD3i=QOO{`&y3mPOn}2wht8c+qxj zr+1pIUSwW)*|Q;ij}7-Z*71ed^L&QcsW<@np&z9l`AI{TH=1JkqCVm?iim?)&+i)S z-uNt!ZAk1p=t#0L{v-JdSQkE(zu*ApO*Mme*&SqG)E)uZ7@hnDfeVdv$;Hn7b$#Te zp^u_BN1st2i!}z)YZzbMTl8JJTynkx$vBR@@6;z5$A_JJ12&VCSIA>x`l8$R8jbS1 zHz#7Dw-L)wOZ>xn{^c_bATMXJj{cnSv*kbbJUC~%N~YflEcFRF&^jRb)ru99TlPRg z7FtU_+bg+OS?MB@S++1=f6TK7B!|SpeY)2Ba_Va0TF(yBpGUdAnSXpqZ}pvWHA!CW2*vB^ z#zrdmYSDcwkRR)firF{MLtii|W@(MS86GeLT5EAB@A$|ivXjbIF8N^>@B5nF4*bhr?aq9Wn=Nh-q zi`TQ3dYWB%Z-j}*w)w*&qv0LtF+G1U@y>4J!+{yH(|^FT#~DjKL$-KIb0bI|kSx~z zE%e{6CcId%|u!R)}W8e5LdF>CL)3~OCWGLG3_eE{5N z)8=yeWYm^H>v8=x`8vzAWtinDNm5M%zyP<#=3f7I+a|wjd{It__x@yBJH+_!RYn zpZVu--}jPWkW3+Zd68$LAL0ME>W_Wa5wWkFQJ)Vymzmg1?y9*z?vDwC^dCm|x9(&= zBQe%p;neh2eJ!3;q9g?GEH#prV_DJQR3u#|u4zjo{Z&NR8KsDzc+T*Z{?~>2L zItrY^zfGr{y`(i!W2Ly|QN4q6bfnw5ZM~hZKh4hZ&_te!2gvboGqUe4a8aMg(NWJF zbn^8ZJXekm*#=t3(NT~75B#jZ=`l`2IIUxD=oxs}!HsmyMz{~|Jtr{PVNnBczQ_r%9SIw>aBr?KcqeBE-4x- zo_zvdoIS>h6)#UJqxbJ8@D`VUv|l|vcH*V@88O1A+E%+Qr_YE<3%O{|rUh{PW}<%i zkO~fR{tGsRLiWpuF1x2-#M7 zX@yvy<-0A#mRV$k?=L&2_KGY25dPR29*;lxC2g!Fk6kiM!zRv;!^C_qWiMR>-I?5@ zGb$4GKEXGF(edAMPSEOBo?%-#rr6>m_`oZmzpsGnHx5oF9>hrG$zU%zK3j+O<(D_e z5peAx#uRy}kUh}K{}3{3U)8>Ul{12#&6+0*DC781ocP}3jN>f!KR0>V6No)|6EfsU z=Id>g*SSuzoz37nPLDb}IU}~zo!;4qtzC1_Y2$qA!0&wQB5cbCpb62N+79SBdo2~O zBfM(e-2pD!8Lu7mx&GsteF4*ty-sKIIk^Wika4ZpZM3lmyN=?a^H^uMF+cO5k6Olv z9GDUDdFh4Xj~Y9t-YC!8sk?_Yuod519`6j+7s>Img9{GrmuW^e)0wHQ*xy>gbqn8g zAh*djHlBE#gT&+f95|n34(Ry+@goOmtHV1!IvZI)@i(#uCbu1dkF`kAL!FkWo%jv3zH2Xs@);ZePx;J~cpjGY7*3A|oAGmNO>E-q$qIA;^(VgOzjivOL9=8% z@)t4=vA~B$^@Yd=fmZkrd3poKu+_kO^j!I19%39G9h-0GS6V__H$5}bUW4+fw=swI z#+rS#0|U>V;l=5($9Z0_oF|fF-1VF0iB|d&a^tyXbu)7%Fx{-)MSFJr{`|gWK4ZIG z|DiMWqZ~Zg?2p$kACF{3t>*z`oihHFFJ&3|;1=@k18nT|iSsVA`ZTAs-#ZY}ywkOC zFW%mQ%xT}JT0YU?w-V!E=PH0F#1yxJpV9;G^YC9vJXS5VU2p}l1I$6&r{(e3A)RRk}THt@!@gvCWB{lT94tl777m0_6o}`P}I+(j@ zX(fHkgH|+W^XRK=b9vBEm+pCP!dvy7=)o|XHpw@f2Q8FA>v_;Zmdc41L=*5U)qA@9 z(@mRxO8L|GTbedK$-UO7oZ*&zrrXx!_q&=l{e=6{;Ynjgo#nJq!@uk(wb*avZ>v$v zCD(btWRB%GO)#8J?FGdbfna8P}}a*P?Q`P^3`~>M)TeaKQ2Q4O(iz+33&GJ(A}Tn zH(-vA6tJ#K_a{Edj#*Rr`no3nviB7)Z&ZsHhncg+|ITTge?eU58F)_lGtSOW^~p^h zQ@gJ_FD6cp z^Hi}Bom8KZPj>8%>p~fUopW@(6PN~7Zee50|QeSRi%)SB+-q?L{ zW7dCbGMH*##pK0`wes1e-@q}4qP|dm{I2X)_=y=^6_^2MV_+EKT)sh z2@})&K68cZy~o}DP|Yvk-&sb#O8UXfP z;A?y!Jcsrd>Aso1%qG{t$K?NU;G77Y2Qsyf5;+Jw{6c+;$`3QHINSZL|4fFv$WxwK zkX@Ep+Yql88|KVo@Jr?3{03v-qpccnFP!BPV( zZ=Z|Yaz1k&UJ%a-turA4pP%H+ll`lp-%06_=p&B<mL(1W= za@src4zcC0oV#<5k6gDk>F z%)k2)Vi|7tkKK>`5xY`}aA~lF3=YqIz z(?~7L6b~r>0egD#u4Nuy!+c)2vipMKmHl@Vp??gK`|P>+S(L)VG4OPlcD|y#2d?Fr zHjjgEzvf!!-+z@+z0XW7?s%r&uh?v8p(M*(o~e0W1T016(;D~x3-j#y%9A-pL7;$m z4$qaBzaBKdG$#1xiCfrTwckvQ>|}lBoU!Vy%;%b=iVKzQL2f1LFs{Gpq{Y0^ z{x{)5{Vzk$IX|zZjmO_m^B8o-+!XV*gNe z0dlcDhP=1GVcbN|qZpq7Xic_}ciHQ5kl$#&Id*P%&S+>Yi)(C?)fRmXL%XA|GA8L= zHqY~NjB1r#PCdt-YgpW6x;g`{F_F>FH2P&vyJYu9|9;b`KE|Gnk>_k&s&&f2aZBR* zzxa3f%};4hyhePXZ2tgxIL3#LyVF7yu1S|#*sKG);CDBm6GD^g@N@Y%Lp2AQCgvpK z{c?Qm!A`umC}Z6wYj~4?h1syl8>yOeP2y~bH;M1`t;v{l+&w9z`LO|dT}Yoe?|ae- z_F2TtopXcCy^BnrZ^y2zYVSA6mCgMQ=3grO>pAAprR=q4yrwS)AK2K6r4I)gv#jeY zPFfSoGXItSw8C$6zF7_VI<_rCXK-1?oR8+y_(#BVPO7o0nQ?$-UJ=cN^)2I_Q#pB+ zp>cYBSoLn?jl4SPEA02ozqIi&z6;^IQCzd^{>5v|CCFvfLHclrJdb;jC8`ES%))zU z*L4CojtAJg0MG1pdx|}uYLjxnt8?bo(x!5r%+cKC8(q)jT5WmFZ~mw6`<&tqP0OB~ zZ+`1Py$?RQ*s#hobrzt``qO#oibbgeC!*o^p&@5oEC3gtQ}4cd4Bf?IeazweQNZTC z|H;K_OWz50wQ0GI-an3Z1N|eabHKevzAAHAbx~^V;!iGH=eO~7;L=9*KbQUspGDa^ zlbHTrPh1oI51ZkB;ZptgRCT>-*J~1kLA#o>$Qnnt9k3elQyx8jko@NVZM1gMzRqgv z;H);$kA2o%(m8j;(i4YXJGO|JXN!0_!HkX7)K&;EnI=v?Ag67_qCaXC|`w|6IXcCr7U$V_D~fopFlbzQWyZrHILp8HZf z(L<+7JK$x#bw^AKKVHx;yT?u7Q5|AjTkZ-!(1Oh*c?_D^ zM;M;M7)*(efzG{%k3ssU#$eXe*Zm!L#m7{5dIUU44(uYw&O=MhpnL~r7};;l+Mp-B z7QM=f1@ZYzfi9aVYvg0|exH34Z{l+z$6^I=BOf1)K!eu#`L;dJ8AsxxZQ3Y+HayVA zhtyTUxCP7%8?MSz-VXAv+q6*tZKy5_nn?b>i?Pyoc1{xLfLN#ptPJ2w&_e5@*zFQ^ zYHxo}qRwN`LcM4KzPcQ^rIT+x$LQ~wdUfz6d^`upKhW+s+SxqV?=>eC2TaCoO^bIS zbEEsQdVkSNqsO$Gp5mqtM@_%oG<}7fU3q9~xcv*J-v@s#o9OPk%rhq(3t0 z=}rDT;uyBV*JQ7F8{EjAq;?-BpJN~Y_!XbU_R_wBey#^!()&eIlIdmx<0xlN;Ulc2 z-yPoC_6F@~V7_%=#|<&BO0h>u{+X4SS0B>PKEA)T=9k_&_qbxg5Vh-^7#m2md-BEw zLGp-IZ?&IGhn^hT0el*F^Q>>uWAE{ep68$SJR^3P=juzBoo6#W#{Sg@{blolE#t!N zvV8Two;y2kUGsf8Kfv)nZjbj%whj^B* z@0r6T*K++>5c^x2iEUzB?DxzyjyK6 z`jwg3|EeuyowNFY++!j4WT!|bBQ7;(WoCX#d8S8e%E>1ehiI>WwF4hyq!!(Gl6=<8 zZSQN%s{-_SE%W!#x2m2wbb0rC^Jw45T9zp}#B1D^St{QD-6p@<4V%j|&2V|9+6mF0 zlsB3e7gKixy2BUjtD+BrKNwtizxM|NuPR1w3isI-^##i_H+yB9C1wnrCmH_RkpXp1 z>`?F;tk25Z;prOKE*>EsE&lBAie&!WMD8{5XU+%z6o0PxGqUqYhd<-H7{s3s{SW&! z*}H9lv%pK?_Y7>q=IFaJ8KYyhjQ3Em?LvRfT~l^{3hVYr`U?)CE9g6Ct^Sm~z0r5> zE_-Gz{eS0yci$5ZG``t6%QADp-HP*z?{6|k_Da6VSrfkB!xJK6FHqEGl-UQ6Jsmey~UWB=CVvmG22`;Dyf%;%wHo~IjGH)j53GG`KI-H^GS|GDtQ9L~!X4|oZAMe}ObdBm3{%^9r= zGbmRN&rrFG7$e!aE*w;DCS|ZM*k!iaWinz@2bKBgr2(7w*!4i?np6HkWxmO{*lRlc zCyThb9A9mFYl8pepra)7pSel=$N6Tb`~vVS=bQRLJZr`f-zW~RCFz@%LEp?A;+xw4 zCQdHto6q8nF6dozI*Ym1d<|zMGp~lCF#}mT9r_ntavssjHv!4k1 z^+3z;EzbBwf1k_Q&FJiP6FJL(?^ItNG$~t^UDnlQm&G=eUcq@fpZY#nmZ|Uln1X&u zAJndB$${PB!yf3ga-6Z<^Ad9IILgvbryrL3WL`N2eKRtjShfIb25VJGho5*~{5_(X zZ2DZu+9AF#`9Qp1aAu?Tz-)q4)p)vam9@VL_ za_Tz_z1rV-u*pFO$=~M0zuhN2Lv*?25&676tqTc0>GKx4kaVIKKN%RmTs#&0!#nMH z)y=AXp`z3KC zR_N_l?Kvb`pIOM}WK^WJN0zM2vH z&7d+}*mx{tc$?Q#=2yIT`uF`2ahXu>aTm59%R0mNp@p;7imW6au71s@U;20Cd}O2Eo!|P$dHQY0ekro)5R-oZUAYOK za3o=SEBFTX|M#$EaW3cz=#X-8{{?dKjpity4_fQxEW#u1F`-L59^a$h4Bw6g*nMsf zESYy(V9Drb8vHw`k9Bm+m!EpbAAEYFpSZf}Eyyv`U8XN@icvj_+@&wVgJk>MeyMMg z{81lKpY-@V^t6h^yWn)+B-tHhr&MnEeXK8vNz` ze7!e%rB~(l$8~J!Rkn_eUX==+77%A-JiVYFJ5PU#cy1ZG8M?qa)|YztZ?Tzjsbu9M zGwM%at~Pm$RauO|dap72MXxn`!y4C;V%C%|gS%4R?PPt$uriyy+_Q@k?{t<`q|O+V z(&7qsc#WCgqHJ`{=p{|l&s{Z&F?a`GT*O@O|D8GcvX@s*Ub1qHwWNmg*4{Di^>3x! zmDpYId9n99>VL`1y!1xueS&v2!;Mw1n1M@=@Z9IR*Uy;GegZqp4&Y6N*KQpi^>3iu z#k5yUd!@8DlJ<_+?XB}aL3`V1Z$+X#@?!a;)U_hfo~|FKy&Gt61Mk${leG6D&wIJQ zkoGpvUK8!5&|Z}Giu63GzXjxVm+eJ#l>8joYUcSoC!b2F6M55q&)Q(|Om*f`2YG6W z7iPccFFL=|PoA#Og}g7NE!E?lY_zW*zTTgbPF`;KH2Sr#6}{McY4jrM#;)Zno=#nd z@M9&n+kr1Z^j?%`Bl%r-|G>-|;Wuo7JQ)=XZK%5~6O=da;?F1Tyqz0TtFuE|`IdQ0Y#T=1tpIM1V% zla}b6o_WDx(eMU)Ut-SF>--hyOZ2V1J1yKFk5h}ElRVU(b@m^Ja)ueJ6u*z~nNz-ogUoY1A8OyV=G^!1axK9w_sa2uR-t&%DfS$3~~Q z?bzrvx8WPM&1775Vs3Ab&+P)?;#&Ow@OGnpLB9uknt?6t18gtEC2j9IWp!W!pDFuZ zJ#m)eHS*2I*DqtXv;J`gW68-Z?W0SNxhNxjUOews&iRbT;H1Zj*_*TvTSlGY!M?|!dQJ^#Idl3L==-nh$L!XBaR zf=6*-7t*%+_z?Yioqp9O^{eCK5oh(QlzXRNN1%n@+WpFiy$Bwib=yd+jSg(qXRM9R zH`*7Z_4FV4=KUqVJS*>P{~hdi#7<(Rv-gjmWchJV)oq&dRPCnm<7?ahFs`=UGc`Xr zliXj*TQKAG27eQ4RuMeerb*Tb&r36+p(Gn`4f?*~Qx0){Suu9J_tE>~YeSlC$8**O z*?2Yn{_NLmyRiqmaTYelyX`SEVmDWr!Czo|+=0#X=4G7gO+3<8jh)LMtz4xuXUMBr zp2)w7&&#S)zNEBH>)(;}I9t*+#%O$)y2u4mT`U=MxzYH7cVe`Yx;&oo(IUPT-PIsZ zkbJXo3Vm9EUme@<4E%z2?$wP|E89j@u55eR936dU?&F*9t-7df8}*JdQ==~<0}s&d zo6HG4e~11ERv$1HxYMH2XFSiBwl%j>*}A@=VecnT%iziV76wteM&d|vBKt8+bbcwy@LXcP0d9$U!D zk>2PEY=KQ?nr&ZM**~)5-h}=8@CO6imAB(8y1~t9-Be(2VogXvFL~pf@B5`^b)RD_lHYdxn!ENL zgg%BrOWo}Mz&qPGxUF5-KdQ(#7lAHCSK5bLR2L;~BdxOtdMw3exf^&6!B6B{3VnQL zjOWtFrPV2Cj;VE%77J;rexTJjkCjI_>3Is1s~*b~B-2?p)II{e|l zcKIZW`seLS#fE>wqdF79Xk0-)r*-J&@6wiKdZWshx0C%7%7OQC9d`YsT=L4vC|{m0 zfy-j{lSse*KJ>j0J;ve5*DxnU_YI7n=57Bc^IQ95Z#bP>I!^lzPjO_=Jn&e{{Hlas zd)b3j2%o8hUl&8qHH_T>-YrSUnzC&VwN}S@TWvdfZAA7v*&Xb;Sy9mz;wSxb7q}g4 zYY;4+?8Mq@o-JP+@@*5F5&AnmEDPP*n#nnx&{q1Iz>>@0s~PauTUo32!$+%VcMm=q zr{5m>n9NH9$li(t@FsYvWN=5$mcMN9d>NnphQAx0>CBf)!1uVXnZW>Z+vCg)?OEE& zJgMZTxQrWkmX7?rf%)P?7Qd00=#7;XZSPJDw->?l4w>vpugqx!H;wn17U!0T=cV?_ z7yKe;{H~<@6VUs9=wKdw!M`25(KV7>r6Z%&{NCl8(aZ_e7l4KjP~Y#UE4wPEEyR9_ zckqqhOm2l{LhSt^_@`tm;+SSw^kFF3Db#mnF3qO@$#ba(Tny%y z0nRetY18AU`DF$9?Nd`6ei`={CeNkEnKSUY@&8YH6a7D}H`V?fy$SxsndEW3>DOmu ztAOMw-6K=|5_mYThnTK&SldSsYi_Zwc!>3gpPSXa9NqCbSEIQTdj~e|B4o27;?_^t zc@133Eqts9Iu7zK2mi()&QZDS>H1Apf6YG6sV5iTe5!08^og%}MpZsz+JJ30@kj)DgDQ1GQ~?^%X1H@M;D_kyFk-eazuX#2kL?Bpz? z@fl)cWFrbQ7Y*!R#Fi1WL%yc@X5)b+X5;*m0}nrZd-@XD3OTE7hWFIluXdjrwWtR> zS=GzopT6Us7z#oswXBi1(PoF*d$D10AcZ}?v`JgH{p$m?mBRW@Taq!t`~>p~%3J6y zoD(0bA8*`tqS4rXA7y%`76q|k`2q_@PuKeGDI7g!9XfumJIL9Sd;CS&o#07qzTE?_3O2zdT9r>pu>!{EnoRj!!1u;te#@R;(4Uoq|7h2OemygW z%?rpUFmDgfjd=n2b*!wi%--vo{P{eWKcLqg^?woFYT$aK8d;k-fl(}-=u>>J*a_W- zufOr60X`S#J?-~hN8Vv~PAKH|`ij@YywY_J{bb$J8n?M>g*nN04gSlcBQ`IMj9KrG zjaldK%{?dBOOCoc>=+;3-QYhuZFo@nU@P%uJN!mzg~>BYp2st{%Cgn{NWtp)s~zf5Z>| z?Qh>Z_sq9@fD`*k`@4@725T-is;?oZw)S_cj>+QBiEsXr^i4fH>D@1e+Xvp8MdU5wnfKdfbUPlDfYN06>GdBlnJF8WApNf=efSh zwoNa?p0DzX^C+ZDRbbeXtd|z_SE>%;QR=RboO}Vhhy6WqFR~FWM0YNwkCAM}x}=2m zfKSD`EF;!~_?I#AVI7AD7!%4f56us^mwp`^H?YcgCmLG7^#I?Cu5G_Aws&*mH!}6@ zA$+@vWl`*ca<6u~Cxx=1J=aF)8h=B!6%L3mkf%4A4J{wSC+LArkrNgT4G{(ccH0CVN%*X#Fn65+yRG;K;aRW;sGypt{uAD<0 zBJY1he)3ArS}?5Tnc4jGPV?hR>MNqYb>odW#++~1b^SYIC7X+DTtxW| zk=!{Eu9j6d9Q zGMC(N8tX%hwfe4lMp-9jn;VzGXUEeo+JRRD%aDT-d{F1G!wctd=E0aLv}HnvJ@CgI z`Y!(DrSG8(V@`H+IFLiX4eCBb8wbD_^EReA?aTrE9^>`wBI?P-uBGQTuS(GJ3TU~8 zZ;PPiUTC@D5cw0K<@^LK3qH}Z#zFOnwx{B6uK*S|u=s!_3asV#BwzssVneHY+>>Kl z7=!Gb^2{t?+y)*+%a;M0`u#k)__6bk9p(w&uIJ74AKg9u3yh~LfnUvmo?-FaO()$W z&%*b%4~P|kw!3=G*4tS>mrnIGo?x%Q3a)SCHvwJglkrCT9%z40+%7gov6(@0VsYPf zR|P%Tr0TKbTyAFg=9&|Ij(j^n%u6%8t%W=>9@gOF#I6(!DCT9ntt%G}oQZi+A2rXI z3wx0}=a&8jJ2QMVkGLj1Q(TdUwnO|TL6@3yUVbmocflZf_=I&z{JCYAZ4-JbVH0}F zO0xG35FaF6<2d+do%@tcs6*qAuHXSqorh=Jga+bqTe1l;9%F=8(RRo*=Ei6ro@LvK zj-yjV$(ekZF(F4|O!RB)UC__o`u;+$#mBQ=U(nx8tW6iOHV1NvWlHGO(&IZB*B!2j zk(OtE=)c2l6>rDyHkPG%Za06fGcg$)-2t_~mhiUl*__XXjAkm&3czW6t%TDaXAr<_UHh#8kGpV7aSv5Cj~_(MNUoY~v6wIJB^Io~Sn zf5~H>HXtvC_k?c`nrWddVtUhulRwF2EWVZ8xSNrv$maV@wM9^RPNq^0UhYZ$VC1c2*w@&kc@4Mh1iba%N zT5>9TDmYsYn+9`5vUUft@0u@889(ndX9Ua1ym0$)>U)m8irvUXA5qsy=64hEN85nO zo^Rx&)LboQZC5?ogHc7FK2Fp@Tzu?V^6JSS(|tAl0e7|F%DzTkB(Gt~Ba=_e77c9y z_ky#JT)rK$L1KdvZcgB5RiAbR;&>2jpU^k0f70m{Gv?srK+dOeG9S55GLY)2|L-Qh z_-Pur&>TNNyKHKDaMDg=%;xt4a}>u=kL|95*oA;(U*d4s;|`9-oyO5#;1lj{!d9g9 zT{b|ir@y9;>>r6eh|i|P7jBo$w2E4`3Us%`{5ZWyWn|$4~3}@wH&E zuAhNzuq8>?pE)T$ULSl#ahc;|X~O zzco7CUV$z*hkCW{Iy9{DDoW6>P1}QF{Nnb~iHyzoSVN*7`Hd{qf$W}vZN+J)&Ut@w zV5Z=)h&SO(oQMhDliTwqY(58|y}@&aJnA9I0jhffbu*Vw`{J)bru>7SI6`Rm6ZDWf zo+B0-o@Uc9bHZXiSmziszC8TI?BwSyE-TamZwo+ohp3~QxwIJ>rU{#AI1yXr%(*KP z^wh;%ah~a{68VEm-Q#-={12q}RO79xL`@XnxdiuYb+0TN2lLpG91b=DYR0F-CIZ1BrK<7ow+?@cta;WOBUE z7U;pTyCu)jI*rYsF(_j}^^mKCAwG#!7S}91P|yTNt;&aN9UJ$C!OB zZRwkZ{J-$#Y1`DsnatM+w*1y1Y*GU*^3VX=akno<+-7Ga+qJhiH5#p{!v}YOGexlP z`jEHCId0qVQwCByHY9BLYD@55NPni$rr_9t>}kWz7+JeE`!!BM-sSEe*#04LdsCV@ zW6hQabCGk5*m=Bjv({*Q>wv?-a}Ie)^ldl%z6Ty6e(5!=PWE}l@F~n`LIyP%Bi7Mg z_94V1gG!GGB7=G=Lvuz7o;3KMX{_o_tM^xEk1q0I&auE8$@kK41@9!_)SPhIotPZ& z$a*55gXVePMDeXOopJx{Qp(tKg7ypGv5JY=fL;_Y>yN#YDBGQo^ERBWXMF5!-hE8& zYt^N-Uf1M>J1rBUza;7z7yF+?J1=t+`edj`p|*Co|4)c3XUsKO)|3J1ZkH0k?BVgpax>^Tdw z{|@|4&ta2h9)9`G@B=}9vROAFSFHPOlV7>1kX`VvSdkSI!|m(8?AiPfez+AAk!7I0 z4C14#6zC1!%AB{yP__Zb?>Y|JD`K8FaC=^wb(XzdzROy8;X3LmMj!iozRP5LyLhzx zmrJ0RI1NsS-TH4@i_>Bz{uP_A46#q*E0mWmB3@+EF!Y?qvkGr|lo<0dqR|ZcSIK(b ze@F6pobjCPPG3&z5$GaW@IepjfI|l!)`4U?2q%q!_meX`D#?DnQU1oE?B}25Z|sJ4 zKFi;@{`kQ5pRrzDj664*U%)jovQ9D}>n<`%Nb_P3@>mF8#6@fFdZ5@$jgB%>qZRn> z4l~}IS2d>Iv)7;JN{OUU1|6^DDD=TuUYvErd1uH>S8|?rsp0FrJEdjwc`n+SH??#5 z$+CUJT*IOpPnJD!-c?3h5BQN!;zo2t!EuodORDW3N`*h`+^&%oE8C{=)7fsjfDym% z-Y1Zq_9ylq$cMJfUPIz=??;BsW$Z?Ni9Oo*jDLsh_$2k{JK3)W_--LIdK6oy2VaKM zW-W8R7ui=n=WFq!-A7;LKip=H?0mu;6@96{?16jns|ER%^E)KFk0}B-KKybK`rt#} zkxf-?`)GSbWmVgYw7rnFixO=&CE8ZI4xW>JzM6O4Q{^WxPWuVo$3LK0iva!sFY#GE z`~mV0DAu{iv_cVl0x-{+igQoFPk=9wWlMPwd?D;lGc4n&vGNNPQ0`vx>wcDR;HN3f zTYLk{z$xuj=d3oy_K^PypB=V-){;|CvM0h5SxX-+>^r+?M>?o&*Qfqlsb98_Zs7G~ z7`LSn^C};%V340cFs!7^P`-kF_@XU*1@l$jBp$T?X8Aj2Sbd`wDR#+n9X>l=l=qf7 zVUcvY9{P8joHaA=Y4WQL@lgMTM;_e->?Iszs%wLvv#b42pr=2Do_-&C zy1q$%Zr6bx{ySpOcJOZf)AtdZmr~pmq;ByFaF2bjBm!J{=Ez?5d=#hR*DnO;g=63w zjAIRR#K*c`oSNSzxYu2TZ-VzLiA}VK3($AO1{AM6|3!Z)@o%l7F=Em*&$VB6-ItMT zs8eNgq5qciQ!drs%bYqZrg&oUF2&WU-g4%%HN<=Ixk|pbXu}6>4^@Y9y`3UI82Z=7 ziYalqq5#>Xg!_j3^ZVXK_R1pXg7Pj@@?QJBDyJZe5OaQtINA4??6%`bRL_URj$Ve0 za?|Zsk^2^YOI{4^5%6fd;UkqxD^IlY9re#3?@;K=YV-D+PqYqd2fc4^3G$}Fdn0^N z&wYaO6lPd*~|isE6Cd z7t82xp?C=KjGD6=^E~npi-$n#8*g%@HWu)2nW>EdVq^@S3)c_wT==l{-YLW%xzc;H zps{)vwgd9r491b{*0-VyXVF%2|CM`AcsMmGa3YVq{$b$Bhd)OWWlxRBKcV-@{8(p# zJF!^<^EsmtI6S*+eccCtjfcjj!it{^6<|H^&)dDe5&w9Y)!Xq*Ke z7_g%^@$DPmyt;4uva9=U=DPCK@V*w;xK3h9+Bw7K*h+L6<*L^D(E*KAus^Be9Qcv` zkxTYmiVcA|H_QC~Ci}f?BD}B1-m~A8(fcUh&8D5>|8{lXo+-O>wp?cJT?-DpmEUPI z%<)n2t=9RI+JNIhl~=q}y=$TEx5MFI@)aAV1?=|>#NN2;YTIWcThnp&)o#bmJg_^b zw}>{TRNm6Ij5vTC@~=KN)!b`*H{80Dxc$mg3;I;w2jG8)TRGx~j;q>5Uo`$(kk5Zl zp9X+sH~O;hG=W_9tH;zXeuF-cx98~6H|N^1VaF5Y))MD_UO}* zQybFeBPWW^zq5u z!>pwbHcQs`O^61mQ?j-H*qVJgray`Y7=74if08mCBN-#!A8_O6Va+r+$JH*An$X?q zuD0{nbSb|udwg}KQ!20ovg3RL2Yo!(sp+!w6=_@ojCC_}Sh=WnQr2a$ADri+dCf<) z*F_#P_XRDR4`83nq5oy~7_HWtcw6{;W^{ua@!xLdp!%cyh00I3WSsHfsmpc#!Byyt z3(y&_L}#4e>YNqESiNH0Ih*`8X*%D{9vi1k(YHmLcA1m28(pd4KIqOaBN(iIkGBsl zLUx&*a~gr$esAZnWX(B64l<2d_hUw*WUB*FSL>S(xLg0Sd06Y)#D#R@^C|(xHz{M+ z@wK^)zjrAAH*gh7z^p*CB2(HPAXS%&N+5Dec!_~$q9OP)*4N}PJvV5{4M6qo6H--sAnHp zJbwIM`dITq)|^w|^ZnE7#INHqymz=-<1)IN_!(F1Bfgbgb{KtbLI#z5Yz(jWySX3E z&oaX8-N=rK>%Izk1K%HVG*uQluV9cRwIjIU3h-R_Buv)et+{oDMUc0Y<= z+wD5n$?g7y_d~Xugri={5O2*~Y}%BJ6UOlsYunX*7JktR+m8`na}Q=1>F=NUJ|sH$ z5p~$~^1&C#EtwW-@X>CdcJUv1uCW&k4n3;gpyp2N)qTOneAR!J{Phao6!4zthQ8C+ z`AOG>%&Ek>%f%yu~>vJ@bvmxA@i4Pvth2 zUi??iMd^XYo}lhiBd$!y8gUs@uv=r`Mero;DMH_aH{cUsPXCzl_<^5IH;i`RhOZkj zV!rw`CvIAHNu%|3AT=0hmVzfl%%$7#c$e!=8{mh;TCNIAShag69e$msASPq?oZS=q~b){ThHyVUc1 z))eJatAfT0Jw~5k@c`#7^il1dZYv4iWco_BQJo?_T5`l;cz-_jeqEOn-(mBLu?yQf zkdMx)v(n);wTmmprnHyQw&c$;?2(cO>#$iC0E5OM#~1JaX?Vb~)Aw}YmNjoCWmyZ4 zO6J;r`_+At?c}p~keqSpoH19+9Bzg`iKp!3KaAXd8S-j9c|LoRRQ0-^X{w>5QIBke>~CtcG|y%v1z7#wX62KlG<;fea{1D^q1uJ$u(;G z-Gw*N41|(?77i2RA{fzO?7Wx4ciEJy`kEP2a-Q_L7)$LB;XKRjHB;g=*aW_<>)A(5 zSQpHTHRV0T`W68Ib&;m0sC33eldB!qqZ)ApLGlLW=$t=^F>y5 z7d~zAiLL~{PskIOpXw%TYm8ndX|gN-uJG;LYO%U(~) z`E)P4RHDvUoae@ME8+564PfgTHfUWoy(<{|K{mLJ&Ux#x-m+_de$ExU{d zxbuK}7wu;N<3q@*9$+NyF`5pH@jWfr!_lF?NL%1_hW0Hyhzu^$$H@-aOJgehpOvu;Wj@Bw+GZ7bx9BK(ys#g zZzcMKtXnNvcPH(6|5teKx`Ao4YN1_&Gc@{`gR*nWPb)ZvYJbb$=*xj5nylkGi!m|2 zc6DDe9St>3tQ$j)Q#Q|?agvU#ajH*@Q!!)YWvnWXouTOt<+^S}wr9Pl0=`46 zUn{`3a(zS^S$tKOSf2wO$R%VedeR)8!q^_a=)98g z8Iwgp?5BFhnlY1jtM(U|50X7Dq>do>2CyaL_~?;4_Z>sen0`)p@91;F$MUcfXwQ$z zbTfY?-yLL)gYFB$lfC zZhQd5WFIGva6CAgn9m+$$|%0e;~szM6~O)L%m1bEM6S_3a1-b7J?A<(KpfVov!fQ2ze)z^Gtal6@PIUpGpO} z^UBb#9|C6d&P9Prv-0+=wyIB*exBn%BRSd=gXlYorDqP4xb zNiO7)n}G~Wts1P=FxY}(rPkIsHbk-3p%40O3Dw##sE8Bovo!*>0koyB4xl2x?>c9n zbI%T7+u#4a_y7EUzeX=>pLNz=d+)W^UVEQCteuWd>`^Lt%Qs3_lyQ!s0l7!`75e(U z!P?IlNn7UXGJI(xze2tnI@4Ygm~A^B zeZxV%_e8f*Yo4Ex35(v#^q7h z^amHRZ+328JbR+y$%kvN-ORPe@|8Mrgg0OJ`<6CIzSvKd1AYm59HZ?$a*)JFk7Kw# zBhk5DOK3ms_|B9xCh+_T{dX?&ukwxSV|-G2YxcHW^3Z6$T ze?{hTds*@fP{%&}y0`tiZ{s0!Fpl?}dS2PL zhv>phlsxtGrCMVi?s?emNB&ZNsk6|n*(VM`uei63eOk@$Fn4enal7d9cH~Rn zx9K$d4&E7+y?p>_mwuyPj|5~YdUgb!jm(#cuC+~78xO))_K~ztRTKWi_wQecCwb|} zlfBoQj_P+_xopKJj>skb0#h!((dkMaB;64ESW1zt^osVjIJ+cmaf439k zdi%NOu!Ec;lsgkY1?ewl-$DN}I(Vwz(*82nr;hJGdiuNbq)m#hh@7nQpto*$9#tzR zQJ!B&p0R(T6Yt5Lx714u``P6A`^0CAmASZw^_}}y83*|DI2S{n`}pduy!G!%TjX5% zW@roJ>bD=!(5h$ls0qLO#dp+1?#|#{YY)DMQd)kup82mCy|eezFYod9-*eBp)wj)) z{fzSMkW_!$JjP#1QjVb~3tydtU3#DOH}L~7jJoK?`rCcJZe{EbFBp2N>eZQ?pITS?yw7<49*UW-IH0-B}mh;p<)&qWx#U3q7#flE~+=ZY#z~ zy*3TX9+#V*HBS1OsanrPH$*Q=8zURy2L)w2KIx6)l z<7Lskbk^sFQJ((X2PJK;o%zLnulbfrId@_c?Xt_9fWMh0{-rL@jMT0Y22<1lglbJMFQX zGg(8J7ftjfX5uR%^B8rT-dRl$KM|RfAu~ZucnuzMSFOm6_3DBq_8qtXm^t=@)N!9c zFYC7=w?ynt{^TZlsLio#A6wZEp}4|p-qxwL^nbWZjp9VH(}KkqkA-buP^8GA?>5;@Nk zj88gt?C$&0=oiMUV?Wa|Xx6c=dJs7TGg#+kO(DPYMI+@NV*fYs4}Nj>oo&>W@3Wik zlzNgn>W)1B9bZzqE>>o4OZ(ia&HJPQ3V*>8m&c>93c^;of;v7&-UBKj=jMa!-bCxSda zWsd$x65}@C_;Iaq+2h*J%NpzD@jkj^^{-v*enj#j^AcW~7qM$Xj#V_8b6&fkq#n3epmN8Jrc9cmw+QU!U(O%k95^YJ^k01Lh`aDG16m2OT z+tJ3eubWB{{bK*zrUB?lA$(>1Qsna-fnv zphuEV=_eH7eRmO4HjEzzcGEP4_L+0H4WmgkFllGXD#QqHOy9Pc-;1`J4JcRcn z7LQn+O5F>eGW0;&US_<1tmuNs(n`Pei*;bDv;*?v&4;4{37?|_^tDvX@@*7mA){OJap9IZs-elf%iyEte+R4{&Pidke#Hf zA{pb|HlpjtY9lt!6r+v6f0*psM?T(qcI0EV5qM12@{#(vQs?(rQug+pH_pEEC^kg$ zUN|ZHPN^r(119Arq>XGJ+&N<}{X!f1bm|*3`No{Vw`M-yoOyhE=CXEmmAl{3z85EU zAJ*psWZlDBE6kL+<+gZi;{e7w^ee+iKk~rj41E8VCI0lTw0^YrXP#V}#@cUL;?Dc7 z%R_EUx^vbCxh)x#Jt03nd0ZcKI|5GXqjXUH_Oa+}DR-AfSOb*2i%d$n(?{ZMVSc8R z^)ivil1HXlU_27xYQHhM>1b5<2pItfZZ>+l;<7nzhMlLxraQg z9+bVp$v)d~p{7K#lsVB*o>f18j zo3|G|d3zK7GG|+AmrH!-Z$E}z??s-ay-3+dpQY?#GoA96qsJY~FZv+m_v`Zif^?+4 zd_F+@G)$#Fr%<1iugXS@D^ zI@{o>vuF5*>8tB)0b#M-A{(#lnctl2$i7bVug7Qixn#fMe@OOUcVtgn{P3%CXQJba z%3gyz#oFH~Y)mfaD)N{U71<}^k2?Qrocr??jxC##y>buVtz`@Dnm1#?Gu1P0c=QKl zr$VnXMoKC}Z)83te<%LK*f%npvC>@5PJG0^k+u`;zsB$2rp#$_Kc zR_I5Y%f}|kep+;WPy3(Zp3GyeVl90P_YVK3(1`vWV~)7%H(P(ey$OF^&-m{4)d?52 zu{U!oW1@2QqJ6+VaoS(O`nW#FjuEF3y(^;)&-i?>mG7j_Pmf-gF!_#~xK~o{1zpSi z+s8!Td+^;x9`+D-S6r_d2|nh`d6s<+_yOfS*62)`pJvZsk`H^c>F;ADYin^VIPxp+S z_oQXep1wqTx`Fc~AJd*r)1G$x(zo;oV}YYGua~ms9@Yq+ZjQUK#|O+$4p9k-{V!|1 zCraBWv%X^zGv!Q08Ta6EA8bY=F!#>=OgCSF7PcJ+b2QIm9ve~Ps+D~yq9Nbx7%nR>F4$B z(T_GWndesU@=fv){iw8EX}6NkEjpilq|YV2dT8k@C*=B4$2KI=k3x4B_inH0q9(|F ziK5Grj?nJJo=AE!Hjp^&amnLeXD_ad51jtj85@ZGmp*h$A}!|b1&d!HwrEoW&XP9N{2^Lw36$3DwSQ;!$&*gO9B z+Q=UGSZ(AB_Qsulj=Oldt5o`OKkY)+8%t%cFnU|sLv3fjTFSvuYU7~?m9<7Olkbaz z%n8bvQu_R0AbW%l*(D&82=ux1rD8AJpTZv(wne^$WZ${?%#(W@KV@8e2{@tIA~p%S zBiN-xWGCMl^1Ot2)XT=BPpJuOnYZQ6uO4mS*|X7{&wcIUk0p_Bp|xEY|2fZm53NnK zpJ|(!#KqT}d@m((lt87tdP?q(?A07$F649iR%<--9BXo{(Ks^rkiONYWe`FJJCQ+% zG9Bzm`3JC9jpwdX{s*%&&Q^A@`&QXU*<~Nxq3n6Y_1ae&W5GXT_q(BI9d)$h*liYd zE_UCQFL^QK%d;!rQ6Bk%|EJ^&y;r{9(DF?|z8_+b|DJqTv)+Nd86)3H(hqf%wXBEz z6kYl7JX_CpT$(*X<~-W@E^&0N-O)AjBD$6VpB>%R2(d}h*ZcWqXvW59`@#9*Ud@~E z3G9bX248u5Z&oiHmK?=$vZttGD>| zE|d2UV-KXix5g%fSzk{Qd&$~iFG=UWL+%%Axj)6cQb)NUNc34FWC*w&kW`6iO@?Plg#BEdCoE|?`y_fY4qoKIveVHf@F zB-Rq{Cl4|Qe}uJ!Zlt$_b-_G6cRxhW-Q$bOn!Atq5@txAWbR(R$0c4@=H|OG58s`$ zAeF-s@dugGV>f3N9%U{*ojIeK%*XuYLA3?@J=!_5Q%IWh!DB?8tIuob;U|vFz4U;$ ze2bqZEI6^@LB1g)(8;sB%fNrG-*;b{(94)2lXs759x^xApL~_Fe=M7`^TkMK^$3cJC}TDGJo^nxn`C-xxHDKJjPL^2Nh9(FC#gFQEV zGt~1Q9kKXJSZF78?pIwezNOH~Yp4&eE^cL>TXe0Rxku^$w_w*Mk!EWb)K+ybTqUP#;jXDJw18{zK4q$OUu|*+J)R(BxBeN8N*Uv8H{6Pjyw|| z$eHw$*0~5*wbuci1Gxls=yOFgBDrPJ*w*cgA|&d7yu4E(Ct7$fwvc z=5m&ET*E!NDR-yIoMc(^G;0q-H)JVg zlR41{d6W4=X~T;B2_e!DyW*6w58s14Pe?yCcx>y9&-}noJ^4HPljJ_V2G0DI#!Xp~ z%N^f^H`{ZKVuuFv9WQy2wFmK?AbnxSvBEI=B*{Y)^NAv#1j-@umG4o~o|}sPc;z?# z?|g@L!-rGHG&=SLnOc4_4?DO+Ij!${-QJ{Ktf9Th-oPo+N6|h%#HST)Jjtq8Y`0&^ zAY9e!S4xkW{>{U zob!?MKr%j8a%QzF=ea2Jj`)jDyav5bWuN4p*H<2-zmfeC`@uQ;C7KR>ZAIxw?lSMg z+{8%sbXj{p6nn?9h5G!^%iO2_0pG3cAKw^)<^lM~cuDxTYFV-}r6DXH7~%NbYk~W%!aH?Vg$VVA|9Z-^k|P zXJ-$puQ>=m`Q{PZatyu>FWR8y6{mUi&b&?blF;|B;oB`?rudNH&U?zsH#>f4RdXhG zGVx+H9^bBG*vo63Id#TNQuc(s!EI7zKX=n41bi87`04Dp4_kbei+^7k14=pBqnbIL za*n}{jpbaZv=i}>lS=qaeAVK+V%;(Nj+vaBE~78ml&~jF&Mi04{$=d(XMS>T@cYa` z{DiaEJMg#h=Lt{$K+a^BO&-2Se13B;$hu>k$^I^9vSt5ZKD^d4zbxmwhM`Z_!9Oc_!8Hp zlSaZ-$~yPm&i4m%2q}KfeRG%Ux(w1>Lz=P%@sFq3EAwo2=kNKBU7=XpA&>qf)gxhf znzd&qLcP96+fG2v(x?B5Z`i)jeHz~xdlHAwMIU>kxWh2MQ|9SgIZH*oyxXty7QUZP z?xCLi*f-HZbUy`OcV+mY#it!(|gfT7l{gn*%{ITzI3}wi?3E3y3 zA98j}{3`dO&L&@vEkFI;9s$lFsz4m;Pv=>CpyxtYnxIDi4*zxeDJ|EP688$mM^bmc zV9!X~%j{die-7<|xhpxt)hn|E{Jn7(B>f`3*Njr}LB#uaM#ZxqrKj8{$ykRwPw;1} z@C`eJ^oH_lh`%`L<}uv=Mqeb)c`s%^CA`JoW(NAkU4%&i&V+|XWS<&BdysqmxOZ!A z*-z{7iB|Yj+3U$mEnl*#=#rZ!WS^3Ipv0eS2!Dx^M$r}7r~308*jso>5`Gl@oS%OW zAG7jad}Y2Dzdo&;@!XDU*)KsmkUK&yrR=Uurr9znBJHl=Kf`yOlr8t<=`m6+>Uq<< z{c^TQTeW0ZVAIPtSu1+d{&#$#w6lJgK|V9CW{vpT^3PPD^pY28M~|Uf>?fI#dBc`O z8Lu6A@LqhkpBS4#US*$#_=-Ie-*v`m_8uMSX^;1WUh*&W5>Mg?-CAE_(rIWU-h0r$ zJ%~BK56@3IHJG^H`d*sM<-O1MN+y2X@V&A080XkC*yGdhoqkI{7{J~hbX>~!-hhOR zBYU_Dg}!MDvTBPfx+I;v`zBL=_^yT);#6? z8sCLO)H7?+#$wx!fEPL$UrIhC{Z-^Ck9j-E6Sgih9i0o1j?7i$k*D;Za(@c2U;M?@ z?2BfNWeslN!U!MXkWDVO+RXlGx^Y2u2%JvFfKlIQcYSM8(@SzV9AAak@a^qturix(W%ge;^0;2y8#`W#k6UXW05r<5M%Q0q^y}+l_Bnc`v-) zkMElKYu+Exbu2o)ggaHF9=OvW^Ge={-`Naw?}PY@o249%|JelOBYAiH&-$|P?MvN! zL_05}3^L~+K7Ef8M`R}Q5Lq;$JK{%HeEEuegs1oro{Bv3G*6)wf4)L5>jqx`y|)jR zb&0N-P2#r~{|A{q+vn;|@RNKO8$MSV_i~|E{X8pu@;{DzIX-=J{&d=v!+Odo`-WHe z`pgiWlf7F3^8Xp>T8y?Lw>T(Bl8I#Lwj2Eo^ZeTzGeQW?zViO zrqY%^rcFuPkhUsx_Yvm=b`L&QJIv)%^Yl z%Dl`w)aTzA_pgrkm5DtPyx0+eavyLAdg-S>qm4=a(VIJ4!qmzsdeF_C%yS%lN6CbBHol7k`A$${hfG>$m%p zI8)P`c=XABU*8#id~IHkqI&d?zcA?}GLUl07(?><8`5v5jwP=mn|AuHPtVWZ?&BU4 zOCCC}ztH(S`X%x=BYV5(srb=8r1>C^<_yNOf|vJgUGVXTouVyUwrDrsMC~)w_U|#L z)CTSSoCkx77dgH04$ay$N@4)Sehm*K+Z*SPB`ki?oUYar>=rJUPW+00)|Wt`03 z*tq^`;~k8X9KU>`Kawx$H>K<+mE(jEP8oi^9g=?!16MZ1>;3@AWG;vRr^x0+9kJ!AO+%5VE?FxI@e7)?= zq#QE-Z3HjrIx>BMv_#(G^UlHT1b2dSiy||r^EPBFb?v<0&ikJu>s|C8GCq?w7A4(M z{5+Pd3+x%m(Ca*+qNi+j>GCei?G*yr$3c zFJ$>>;fzgY0{AxS_wS7r<-5?f?|rQEU`MG7nd`joPim=@>3+ULq36wJO-Lz5K zg6OD>_h&F}u=EpKy6zzR;-IVKz0}h&`ctU~S&!O=UcW9QB5;H?+zHY-%x&wL{ zmq}V5vaT%l!EU#y%~tzo9#rgw+H!Wq+y6J09UD%zmTS4oyCA-t zMfO|CgXptU2h#RMXFg@Wis)U-dzOz?tB(@dUQb-fr_gxo3mZ6Ec>Ia?0;PV1eh$x$ ze+_gB``RyaBz15T-(;dI>2d~q@`#P2l|C!S7VPBY=RqfT5vKBS&|^?x<3fjJ#N z_n@g8Zn)!N_VOajXJkKtyysi;_z-?&t4D4W+Q4eo5};2~oO>Zo;+mn8oM&oX9hWnQNb=@t-w)35q$ zd}E3DS?Fb*<*$E$wKC4sD_Ku#OWru+zSDQ-!l$XZ^LF+J9p7|i&Pgjh?1!{78JpEZ z|0%j8{AJALgU-*~XCC}BC|7^Z3KtG)`hl#)IeQHQs^1&lXR*7^oMJsb0Q~Hk>X(82 zBn@Y-@Y2pQzbJiHzsz5rK7Ds-V*U1fNrUtc>Yf+#d()4c92q!% zGrT@P#s8=H0X?H$w7)o~Ed@ze+EA}y(@$=quU*5uc*3wQu1^K4KBR5XF4n{)?D5|B z*+4$lpkoQN2kRU(dh#OWl5Ydr*wd0nH8=ZIJ@+-_QeRG6IamIL{!Z?4Pz#8|eGa0> zW_vOB=*gaNe=ojg`N^E_+3uno9p5)e>Mp=tlz(PEL$OAF7w!8#`tzR5^BzN=n&Q;D zgetXB<{)E(}%E{E4t4>}EuC0rDM(hYaxb7Bw zc4zg>3xv}}7tpbKbj-5R=vYt729utoiH<3BOnf_Z)Ukv{TgPNQUZG>7kw14x*!p!X zb7|ZUo&Kn8H{U@gEnUM_+25%6Ta2H?8VP%SB^~aWZQLJsQhhDkx@VU0$Vs^u?Tq-L zzGuY0ocPyG9kH>1a*C~mUoR=^cciSen?`Ja!>5h$4Qpj`Cz-WADL%XAAjd*zq|MjR zK4e|Wv5TT(zh~Si`#8iVu7s!9#0<(Mc2LIS_`W~EnB?UAvh))n$|+@%vi*&3o72qg zKS&))K0dzD*ORf=GrvV|#K(!GJ%Y3wiCc*LrOa>ej`bbvZ_nm)>J0C9AS>}z*l{gI z^nv?6dnVBKl)mdz?)`k5w)UvlCp}*;&)k7mzAM}@`>Y$fcV0@r zD{E5;d~;7?ZA$!F$lR0@$1ii5+<{>A{dx^r`d!hF^j^|0TK=M%$I9Fp^(o))V#n5S zr^6C{md}o}q#-i+88S%cY%?<1r!uBXd$nyyMwgSbkdvg{hqPr5q3+2|_cYS3YKX&k z*VBS~>BfHZWo>B9lXv3(kTs&-_1lMH=eN*bcTZN^A4eCRJ1u|0dfA45;!ex0&_50@ z@12%EiTm%n)3QJ16e~=dSP=K1_VK;ingy@9+N- zclC5TCi~cC4BUl3+@#E1@N3u^+$J_tY(oYl$i)#&K(OMxi5x$2-uoo z&#C6akF(ina#pg`^1YjA_~y0tQQ!}^y(jmOV;e*dMTh;_g_rcu`q-QP>@Mu-7HqC( z%;eThZ~8O#`JK_9ZRs#(s;6$GugGR>;ujqcXP?5y!6~ag^!J5s+xr64k&JttF<+u@ z(T~`(wLOnLe7Woo9OCObvLEYNL%7>$H}kl8zLx8v*y0T8;(hL?oJE<-_^t2%qICv+ zy{|j_{MNIst(M9+Mm~2NJvKZ(qq&dT-o!U5wjrsRZ$kfz$#e6NJ$^uYMc^s4!c%x< ztX3(_kH=*+@h#d!Tk_{+uFGd_)lc0dL6g2q;wH^#h*R4m{G?B6@0oqdUca}`Dy6e; zfwE6%;yW;%Jq`)1_jC4Y{4TzAyx$X+O!yv>b*DtWhZ6Mnkm%0+=z|aWjY38>^w0el z+CJw3YSJ5mFGTKwJJ$)zV zIH!p#zHN75Q!hiN5;w`;ZQboYwXO_%^7vA*DM`ona4&S3uiKt-#-BT|yU#J+!`H*`%f}#t|u^q#w!;rio*7*-fYo;!9RNvbi@p0c9 zX^WruJnBvA3EkT+FabGE;=A%u>O}T$Nc%~^caDs&Gx#O4M>vQPk5FmJkJxp#uL8I6aKmX+@PxnT3E$%h|Hu=5z!QGN6K?i|ANPcx^n`!r3IE&^{-r1UD^K_Z zPxud>@Ig=bT~GL^C;Vqm_&+`2k38W|JmJqh;W+wkr|!CV!ik=6cTc#7C)~#qPV z@q{n+ga>)TnV#@)Pk5v!Jk}Gw+!Mai6Q1G;PxplLJ>glN@H|iW8c+B-Px$MeaFHjx z$P-@T30HW+)t>M&PZ;0nuAFc5gm3nQZ}o)NdcxoFgzxZ#zvl_x;|c%B6Mn!Ge#8@Q z_JkkzgrD?;f947Q+!Ow#C;Tf<_ytdRwk0qa6aG(6_#;m^4ZoU> z-d^GfXL`aTJ>jvQ@DxvYx+k3P3D5F`@oDa+b+ado-%J<3))T(R6TaLN{+%cP6&^f( z-CaJ*JYoD4yZAw#aH1#txrb+*2jA=o|I8B}?g@AIgu8gck9)#>JmDUm@TH#ceoy!% zPk6T{e1|9eb59t5?QR*XJ>g$^!b?2iRi5y5p73`(;qQ6EfAECg^@QK>$Zehnf7BEH zl^x#ufB9eF7ruJNVyZnU&VsqhhWqq$tA^>%*>qVN=4!Z5Ls(dUcfB#FJ!yE#m5)u` z|H{{@N3xV>|4AD17iR;-8jSTfC9-&0xHwWCiVhF2C=OTEMk*_U<&`C2<#|(GSyxdK zsaSl*i>hkk)<~3Sq&!mViK8mQ%T=VJHe3x&Z7^C{Srd+~R2FBOwxqJIC>jnfiY!*V z4wa~y(6Vr_LnbVonY@LvSzMDdZ+_nFS!&eq5yMBQDU;{tsGNmUbLJF)3{IXo)AKYd zG|TgpH*0#{th|D2J*Wk-gtbZ-tP&LJ&XgKy9w4W=2HIc;?kwuZ>P(^L9B(gYCTcbiH=s{hPDzA&y zs*=buRT`=(RkfAD8u=$;{ZmmZpjy>bMNzpSYM2_5t%hZ*O!Xz^J1W&c(XzT|rK%2> zhawdv;cDRoP8CNhE5fRzu1XjzQlX+6RkO6ZRxOIGP?nOZMb)8VwFqskR>k2+R8>_j zCwgY4ns~*P>WVA){|Xge8l9vjf>BqhE3Z(i!qt_NR7GWl9Vo60R~Ls-{hF$9ajgok zs3J|WEQM7Sp^8bovP2l3M7oF)SX*6JQ5>obt6)i8d6l%Ht3$P=5?4hl7c25xQn|bW zSwt5F?bu=1DIwRv#E6c0uYAJqY zMW8xdLtRPX0)uHOg9GWaDr-r9mc=|nor~5HB?11e3kMce zR(ndAo^g5L(t(oIOI?KwR3dgXeL4K42E>ZnlCaAwqKegpOC3m$hH7d9i^9tTc9R9r zo~uj3B^kq2j@I@7{e|Z4qTKZ6%`cdT(F@Kgn5U&#N#7CE6D#wffR*3jF|$F2Dg)6_ z_2Tewm8Aw`Nu!RCY@ldmAnU9`q6CA#Sd2p95#!nFLP(_E)WB$o3fQ$@6h>{OnU|bV z_0z0ONuETRRL;D4v*)E>Qw6$&N~oy{72B2L+9s=5HT1vH;i@J~YbXg&#=3HBMxeY7 zQInW7ngBIwx0^+gYS1o`S=Ga(hb32*GPp|N^q>K&|8=7}{HrQ!BGOi|HlY$yiA2LC zmpe=X#ib#vB0V{nKy7K57F1n>?V_0IX1^$e>0Chb zqVs@HWmUM^HZ({yRu5CltI{*nz*TjZtLwz5p*$`J*C1Q0NypR19E}K71o9*&m_KP0 z(eR2`d9=bw7d2eEr!x|8^-Cy)Vx$_8gJ??B@G%|jG;99Wp97uu&a(p@yuYhGK9*-O z?edc`?OkIUH=REH_M|a?{0V8aO|qX~p5(lDAf#3t2R_wWxGsI|3zI@qD~o@8+x|(P zuDowf&uOntnz*Cprr*!*UDq*Q)`*d#MvoagZv2E$Q8ASed!9UH>a?8c!Z-GJe3Bi$ zEZc_H+A#aOHf(s#hD%OZu>O|elNEpadK6pmmN)OVVEDxs1qOnRaZ`Zp%W}sFd|*>r zIWYT=_hvl++;GYB&%Oa1J?O)-u2WTg+qjj_O`fV64}AM8qnAxpt+N)F?|gKsx?*GD z;f3!^&0hb^ii>~Jd)l189DL(&+Kg#;ync0;myg#^bK>=_=={tx+wPqH;mJuy;%AS) zdgR4fCv%tIe4QhgXV)CK`^o+HP8{{)rq>62lsDmuAAd0I)cFsO{Ndf}U-tj}s{^N2 zK30<6r8GqbhpaIu_8+Mm_|-e#D_M3u`ZYYDzjI2R_s~){)iBfU|M%(dqCj9lMOg)- zp+HqlxUQrUgA%R8%t-H5Rb5$ISzH+nINjO6lHrN!i((Yf@6<$A(L9B6Abp8+L}xI@ zqztSIRMypsA*l{kEDjG1)S~6#TC5+hh6Ywf!cqA`vW%MD1rMx(<>ZnQ1^_h@osldp z+!|hlhhga@%Vh4FNOf&pC_1+;%!tD_y;i%F%&e>p*91tMQL*L{i!g`6!o-QPJW^Xq zr-bd#S}|~ix|+N!AGUn#=m0~@+DJK_4ptpgdpV0h^5?UGiqp_}W>10j=R9|W&bSex zdU+Sn_2oc2_KBNp==^*9oX-w_hcYuWlU^lMTo#~DtSJ?dmV~9C*gD=_9-tp8XL!bQ zqH@X>uCB(?3729aH{YuF_S7s#8(^%Rr3j6?M_51gyVv*|$!g-0;Ib!!}JEdEHeD z#NIjMBqa?tOR21#wj8B?ygJhHSrQSPgZH*|dG}vyPg=G1{-0-8$BTge2mj3W_&=EN ze{oXj^PKkl4>C@+?NUc-ryohb+T_RQto8R=hjbi#M?Uhr?>V2V^HQyU;Q1iGcli}X z7MJMxw3V4 zy9rz=xO5NhN8mPqo8!U#0^Bxmg&y1=z_kj$v;4Jbe7lApY3Sc))2C^euHkqMr)yZC zVUdPa8m`iCy@s1Ld_=>aY52T``!zhM;YS*Ff5pznAPpyKI8(!~Ygnb>%^Lnl!^bpi z)$n&3zNevozs>(54YM?yrQz2#T&CfA4e!5dU(oP14UcMgLc=Z`Vv@fe8U{2RuHls$&eE_*!(|$-*YI8q zpVY8L!@U~*LBr!3ey(BH*X{JvG#sj7wuW;wEYfh5hPP_CNyEo9Y|-$5hQ~GhOv661 z(}KUtG`w8HnHm;p7}aovhMP2eNW&*JY|(I^hHVhQHKszlH}j{9MDd-`e>Yso``D3p8A$p~HWfes0k40S$kt;R_l% z^!qwI|4u(2?STJ8KPO_d<*%297isA58>F8{YdA&2SsmyWc6eT-pQ}3H|7B-wdH>7K z+H&}poweogFFR|?;a_&vmc##7JFC?EXgFMj8Luu1&a>vJLYym>CzckA-Hui4%mG`mif2Wl2Bn_7*0l3imKRk@(WE5B1uR)O#PZC9 z&EiUmw>(tMq`Xa28ZIsi>h-^%%#wTY_R@lbws>0fLRV4}suclQSjl^^BE*JJ``MnZ z4$3l~iKz}dk}rmNP}Y-K;j?Lkp_Nuiu(D_g(@nwU)gfJLB}LJZ$QD9LuOy80f~>&E z%12P_Xt}SJ?+Mu_V zv>iRMC;!o$ip9}zt!&uv#t2WYUYsK{VwywPS`?X9DU0C-US{x3G&v3zAYg|~o@IKU z;iBINGq42zMWT906UX4PvOW2KIrR`$K zn2nL{?1(A9)$iX)K@a@1y* z_tr{Sl@KoxFeOb}@v~g<{ zUFC?WI}@$03fE4xn*s|`#VmD^H*hoAB;xiMGWTf<7H9B5p_4IH^HUrF|CELQ9 z8D>Y|nNd`Mvjh}N5+}wiX3tO>Y%dZ}Y8Pr3XMNSi4Hsvt@N;Ly4vTxK_oPD>n#&sgfp?&b(DY#D4-W>$uN}lnXs1C+Y z-FGvHC~>|n&k1?2_}^{q)CHPR;P8=Y@W~Ftb-GpyzT>Rlf8LBb) zpl|YP1P@)pyEJ(hHziK;(D51mb{@!QCvth6s!uL}{wtn1*Mj>J&sPghr}>ZK`lxJw zGJ6KzS$+6WK=P%_+9@tOb&2pxo@2?ZOTytpza*WTz&$DW&N;7idN=*>we5HzC&I5$=5LG zE&z9l;C249z{#^!H~!q#E+|Dv@|QAqf3hfnKk@JsXfA`s(u2hOcU!x3Is7B|-zqTF7K_9t2@<)`wdb)fqR<-ZrY2Za`$X%O8*X{L0bTMXSb z&|EKclvAtlp>yF&;_Fk_$JMK6_#Nyq&#E7abBMZ3?jbz1E+u>PY=nfh{#^kb^08zk z`Zy3dT*ULGg4250)f2a;s`qzCM^dz&oGV{b;5$}$=ydQ0p868)?ufL#ON*?0ruH~| z=!fXmG|79PYb;#Xu7?jTll0=ITqbScZtCE6;d9LC z1F(l(bJr zpU7u&Kb{8&PTQM-N+p~RpC0_kgDaac9=#q(-Yk6~j_5&z4y0i2R0w*Q();v;`xUUy<6p7&1t zhvNgD7Io-Qt4-he96SPX2ldU!CWRJJqLdChh zy4r>{GJoE(rkNA7A$M8jx(Kvpx zPx7MUK6Mf6l=J3KoBx-zk?+iVf998G&YTvQGi}OndsbSg|MmBOg9M!VboN#LJ!qAg z{lhH`NF;8f-hb)rS1K&9_cz_5VXNLZyH~?P4ePBLNu^fkXD1&G`nhVp&4+uw?Q}H1 zeHx}Ou<V=^Pw)JPv2yj}uQqzE??C4wwY#ORmslZ{>9dIGWb3O2~EOY@l zegw`9fu8|efQ`&f?**n}VBZ360KNyjeza1b0iS2LeDd$v$2E@hfa}LAH6D0;f>JYq zxj6Y+2y6wG01r$dUEsbP(ghyAN~z7j^jYk^1umpBYyqw>Q0f41^8$9j0So99KLhTg zLrMOFPu=oW(gRMrp7emNA*FJGuN5hEJ#c1NsVZOzma!hVnMtqBz$PY@n*_glKPG)(X%p!Kk2jM(aNDD#2YhUsQnvutZznxqr++6sVDb*q1K#@_ z=>e~Qp7elKFL1gKxc5b+y1qmI@sd&jVAp-52ORwhdIW5FopgZeZOQ}O1l$1Z`VRbo zL*G^ESzt*!as}RUl(q_NJ*LzN;I==*{~-B3PI-W>z@fmVzfzCDuK!6o!1aGaZ-D71 z(N|#WC!`15hjZ3Vz>-r+Jq8^Axl-GJ>a)9_O#6z+1k=UP@s0G-M3ib`@;^IA?}W<*7@3n}HEE00o0Lc=m-d z4jtfQU#RM@8dWZ^1^frI$t&>rx#&1BcOG>FECGH7tOxoJqp!dSd?(H)&pcx{)k^iS z54&kW?6JBCd?PR&cmOz;bg-Wm#D1#L;GYJr5kA-W)I^>S1OMn76nFi#KE4n5%K934 z0KW-12bdm3CxIu*eX7p)kS|(ETi|(fHRT6BUxzG!t;>)DFnt9&0}QP4sm{IuzRSLW z40$g2CNcsRu7(zfT~@CFH+_qG0JZ^Fl793SpIShETE0!20YCbCKK7|!>g#$pb@xYb zz+S-UW}oU!e(JyPV-Gy#xyPrj@HNG)_yM}b`)xn;sn_9i_&%TdD|Af{P+sukAEJD~ zfBpSS0{>4*;0f%Q6u8mfnB17!7-&py%xWCpnB7?QP{Tuw4{duW@Nm|{;~&m?^!Q^Z z9#dQWTa&j2wx)00_IS(Vt&h+7$-cNHwg=w5(xS)jF zoW_NXg^i_+RgLwH8yYt^Ha0djKGC?Xv8C}qSBUH_Tq%l1UGdHvkFb{Vj@D5Yhs{T=wc*?3sAx=ILC6>gQsnV zG+v-Co?tu>lTQnneN5-XV&(TzDx0xFjAj~`tc$!fiKJW#=UA*ADU5OrjoQuoX+~Pl zgDEu9x|AHI`@9lM#?8g`Myy0IRYt5EBrQfUu^cW3Gv{J&etwQLJ~L>Z2D8wh`97F> zBdt5ZG#F`Zg>!+y=f_~$4QX6U3Fa7l7-FhYgU_$y8KoOEJHRM|&puKwHE4E&Sz++$ zLVeX5Gzv_;LGx>*nq^4!cSye7sGax0$TVK827R5;1cRoH93C(*wX};924*^Kxy``5 z4o$t=Dn&D=(=HYo8kG$u+bH|(@abgG+y=&P&*xd1s<%RP|l1{cGwBYTIK!MQV*?FobP zTrhi$QgGXhN_P23Eho@h9X4pSxdzSkw69XbVqXKM(Uq#R4{5VO zlTQxXTpG#G-Dr55k=8~q$Bnd}Mdw!-W&ar%W$-BlG1N$_2+RtDCLPRrBdtrpY%|gt zh~%3L%)gPJw+tQoDVWWMS%qDB%*anIm=#8TMxdF84L(D_0Nb%YjI zWzZY~GsmF$0i69t+3x~V=$75t2iA!%^O%h~h>hCdj$4SJim1UtL(bQOIc}sin32_Z zLo@q>S?HGC*?o4x$WI}1ZgA6b_WM0#(0rS;+TA=$er6*1(MH*)gGo2?^LtX??4~ZU zx*(riL-Gnty&?Ihp_^!w^l>l;49=HgZ3+!O7lGMe@Ocx?QG@0cFq;jUpCadNMkyWz zQ}3pQr!dL3nrQTK*P>BbuEgYh9r`@YkXR*{218;E(6t)1b2FGWLq2cQzt1uF{1(gx zmyhKqjac;tO@vn2>eBF9?Lk++X_V{NU>3UN5}L13Uqg-jdd~O1>&EUfw4XV*dJqs&(ufaJJOsXM` z-%+mdhQwY2Q*Y1=63lw%Yr@%+nQXMmrzqEEquwXdTU~E(9t&o(!Fd@HD=^Ac1*X9$ z*LkGgXw;VvOqC&@Q}kB17<@hk(`4|OMJu?apVyLHg$#2I?Y$69=w;MtZ!p=0R11hz z;>N;;TPFmbHDdjhSO<()zecN~MqMyXu1>h6fRD8Ux|bob8)!|XhQuDBT)76HMlfwI zAJN{Y(1a)4)ZuKMrg_?s&j*yE)sW9~NOj^=uY7*b*ygwq>rF7}E@w&WX)I*AQ9F-= z2^jhLCc2SjM|p(3&6A*X?=wK zxy7J44#scDIf)v)$S7B5FsTNg(R>dk8#KcOW6-=uDK;2sy$dGUNb6Rldccr#J(yIZ zTsx6iz0tnf!8~uIeh^H9kvey_s(l8{_rYv1Xuc+8r|uDxH9l5qHJB$@6|wtV8E4AQ z_w|NmPJqt=w-nB9`C5Z!Av7&6jcChA+TgZvUL9Kt<~XS{P}8aRK|XW7?4?Nuv)RCW zlUSRLul_s0)Ek&}w4Ir7jg{*-H0fweEUjee-`%+s$>C3F7l)^NQ=d$03K(-TvU}zL zbTQ7G=w;*&Qn&|eqZ~-7C?Nw5Cb)uQ7xc?+4w>JG23IlGaxoI0jb-YDD-DaL7z^Oi zSeO#5pNo-53DnnHMt&xOX)`bbz#Mil!Kw2Kf>#&d!N*&Q!D!t!elhvHfW%r1Oe2_9 z1H)Dj)sXKBsY*%7ZG2CCFHo5r`3^%K(IYyqpN1hiN zm<8~uGJ2U3^3!PK@atf5jntEo{9^`9BA8@@=1uB-n?du6v?fCuxx{+jprIqTws4W8 zC2OUAPqW=;(7Xv|j#2hcDbrg9&4*x04Vr99+HRC|4T-cHvAzXnp;3xq%CFtJonuT{MyyWgPqrIN3fToc+~=m{oE$k2!+?@=B@+!kVxJn_ zk_w-H2U7)vov!64z~maSn!#)~V*LP2y%B3PIV><@4F|Kqh}BOpZY<}pOL~q|c3!Dx zu<4^5Mi!*cBN({8zn^=YA~QLZJl$|@sPrhM-h^&SS(W?-&{^F+5_c1|B{ zFgPEj4X!Xa=fG#5!KVoedECVWQBBTr;bPHSJN3kR!lj|esu!Bjit&i`P4`0MH~Oz* z&|Gg|4pP$B+@4YRJV*{7GWxis)Xqe9c*HoL5;+^?`WQ^AQLc6{2jFMxvvd0I33v46 zocY>o@W~`U=?0(o;c>vA`4gCJE{$_0>##v{5qw%*8cya_$kDu^t_=A?w9Zo=H)1_R z4K}&fSiT}9*7a^I=Y-#9My%J7bE8`q&dD%8do*Ga`;h$XbMr$1)Kq%mg-pn4YZF{t zQd=2PE$ldn#p;bFoPgGrp;iQCY6AD+sZDMUg>yGX_@i(2^7%6~Z3fM5FzvT_X`TcV zb@L;9?gg{{yIz_#U^XXvd;B57=PobJJTUh%*o>9pFqqdidNFC_uzrmfGZmT@>%5rp zU?#5hVuE0{-R{M_0Vc|jCzjR@Fo%siZv>Nt^f4&>oU?$vjM~ZLeZ5gTmyyG!JG`79 zflsPYu5W;8Go%p(!yy8lmdG%Xr*;FgiuNUcr%&5-O8rLqcLP&Qi!(8$XT*Buj99my zLG!yaX!@Q(!xkb>S_>%maL!)ijbS(=`3U2G&tox(Vb zD7^w;eQwAt0xO*O=R7y<@{f5ka8VtPWxFqEs@6Gm1K}KAcaiwG(4IeRl;?1#jj+#1 z+vlJ)CU)Z4dlvePm$Bo}UQX7zX&ZsSw8IHF;>NKk86Tp zaB&@O;)CH*Iiy|7KRBj!u@R17o0vtBl9~=E@p-U>8gvNp1G{*6kYm64nDSJMC2RH^ zR<2$-r;@|#PMvX{U)+5-&*wgM?3Sp*Ie#1PJ)wP;^WA3>opFp?lgQa)y_G;?>|@+I zzd`%G_f)z~W}Z~nQA6c5i|sL=Mp#=EI5E7kLTfL35A0X&A!1D#J5_8W>;YA*-AIGc z14ElY&*a+=Xol(fK#m@}ud4LvYa7wwNVZGm_}6d|=W^ZQ5)@nhOi0JB|0=wUb70w# z++xmD{7-u@A2{AFpVkI^vY`O#961ntEuLRcROcioJw~yd=9rI z?)#X_4HxA!ILniai;a2UiJ@YSc49b>Qy;XTGN_%+&`np@P>L8v+_4D8s^;KwWG6dd zX!|jwiL=}AqG-sXuqz-e4oBdC(*dplDyp`;81dQQ@X!b1-RxVmo-~a9??y z%eY9#TZfBqoFO@eM%StglNpHOKE$OwhYKGRJ&IQakrK2)oM+n_hKl2DL3~jJaq1F0 z>w7$OdtO$BBcsNT4eC?yL>6;xvlU4r0ILUz<;ZlhV`mgSi+NFS^M0l?pV+I8{(NF@ zCOaO1VyKv#9~-A9B3%O4_mhpW=OFcdDCW23i&4jej!Q4KDqdV%gzIF-#dsXk*bZmx zH^j8uP}ol~rxk8I$FY@*@Guhp6*k`Xv*ps9!=sb?{tUl1?wgLDd+ZnbGr*;yLOmX> zT(q^!5XAY1+@}#-R$Lrqlz|3>YVh_Rv#a_&&K0D=Iq!8!;_k$C6XC%*o+C8soE|{j z%xEjp(btsy{;VE7>{sV@*kQjvt78uP)!F@r1gA5Cnv>(W6R}A#z@CZ}S4A#fYTR;H zW@Gfni~WGQ$fu1<>$(>bheIw_yKr)!4VPao)^)MtVjQ14F2ZF`UNw7b6kz#bajA;6 z_cIp(HBOqMo+`JErR~Q{eEm@OvFtkDtBm*-0i!4Jl2%&AN*EW9STn#*P>cyuw4G?V zQRg{c=A;_EKBplqp5os37E2tDCvwAwXrUxv4}2v_`$4>v$io@hYYpt`s<^!kH*;?C zQg@c)xfs27AVLoujTVVxI;XEKm^t6Yk;QVdD3&b7Q92aM37(qTn4}P>&neWdj0j-7`>KYKiCuSF%8o8($P4e+?M8k z&$+(lT$H`xEQmv(2t7eK4{w0sDROmAjAsld-w<Q?+_ zZH?rPLV}6D3aJEJsRCE0V%-^I8d?A@V6uELCLJ znSN7K$1Q+odm;A9ei5tfm>sqX>txsC7%gU6#h8ezG@Wzz`}quqjV^)h-A(&(bFofM z+TI;qwC%#peUy=Kgv4ZBlzX%Y$u(YlC5tOGjj?pYnQydX+OwFNizQq=!(^k32ixPD z7;%CLgn|qb-+SOo_*lpNlV^W#5UVrRQ<}W~zM-uGlnZ!0&YYHs>TI^$VRdCwK$vntqn>xsSmt#DS-18P$Sfv;qWz}B;}mOoM8}GZEYhJ8H>3wohWAfbPw4#}&z|-inVCR> z9|UZBqtTYJ)FN6L)OVX1X&>c53)R-(M{m@&zxYM%mkk7cL2L_xk`c+=|2k)%nX^Oi z^}YLgU+;a)k74h<_F8MNz4qFBuf5MYlbddDW)fp84PWC&HWn_DZw7o+?oUUteb!%1 zJs_?4)l{d)8?-e9>emKbb+&4k-(MfHRk>|}Ccn+=w-w)9VXLdJanHGeu~j9E)x?Ig zr^e1%!){~jGw?derr9!0qZpfof?aEL)>x!jYQB}^RP!dr(p69@WqSbNoiMRVplU>V za$#A6^sQj56r|VO#MmD=Pc>;}EJtmS10#%iC|k+c6iNqw$~2Mf%Nffz(DkoktPk>D z>@z3iZVsXHrK|8CiA;STG#ECtIww%$3b{~Cjm!9c0pDxzHGE{$%&BVf`f9v2*Al!E zUut_LzJ`xXcp5u)H_6(7FX2H}<40z!b54VXsOq8>wS-rWui+yTzmP9TAnF3!iZ9_g zsgU}}#4q6X)mL*}Mo>q1x8iH~$c!yE6fb4}jvBBr*3EiM;l>P>eY)bg=*M?R(X-X2 z=)hzaFHB>N7$4{6(d=4G$8PJ7?q>yOw$J8LcX4k%sL zOt#-MVC{+~64xq>Wse75pLuL-;xIYBAGoK@rq~%Xi**3Ei?RJb;kXMy|6|4$P5{j( z=3IwTXnuRWi7iT)EGKM`As<$ivq_G#ds@qxx$yAC=&>%O=$S_E8b~-NLXNXz<#?Y- zKA1a`uF^RrK<~iuz;6ElH>HXOIR&Y{;Sy%%bUA2Zj%ZR_n5O| zMW8)u9v5RM+qtfx-!Y_HO!@2{=wvd|1<=E_z}57*+ zI?c*qwI3MAT!|foeqb-pCha9&YmN>~XK~W=LdbtMLyjLo8(n*4*oMX7VeDG!Lk-cX zHXu1Zh8=uu7~9sC&Q{ZybV0@*^Z3{ibGCzYac3g&U6#of7-0v}**2_?3wEZn#v+X2 zG|(IC_oANaHVm~80wAXr%@&uEoeXUT*7%760p?{ww zb)e}r9eT}Wtg*-Z$RrDE9ZNPlFkOzvYnNc|>tp`1I_5M-ey8dz$3bmK=M&DpL}KFq zsT~#>>~OWg4#_si7Rh#h5B}8db85S}j^CgR9mI6|U14R}=kIzxdfv>!WUJ%BhvqD^ zNny#RwIQi-;v`I=4G#iZJQ68 zV3j#cbAM_`3Rjw#3ip`gcx5_^tMIK-xCe9hkHGh&1D?U*PfKBJWm^|#<*4=3A=m4` zsRWKn*Ujr2CWWc)RbyS6Nu%wVrPjS@tXswFR$U!7W2~Mt);-PZaZUbknF zO7}z5xwgnrOk$ELdj6aoJw1GJ|0@=jow$#^e*P{gdVUEDThR9&=+)9vtgcsm!&w}< zkN*aAJ!U!n3{p$BwuZW3Z%?Bfk=O#@sAJJa_25DD$A@ccUan+4u^Hoj{;r}Z+6vQJ zLcFdw4UOB0_4)%!&NsSYy&)m&2m*+VtqT;PB}AyDS)clP2qQgRB!FE9Bix zvZC$QL9(`>ESn%JXvl89Vw81aN>*tq$y$oGZbX|)(RK-BD8@RtBnp{S`A>s?57wx) z-~nH2EA4444SU?0B5l00r-vh$+YIfs>NYS-gITg#%W3{uZLQ@6Qrjf5FT3PfG`?(9 z#m2=f{5;l|WzbhI){OZ1=f|q`iTZ^bvA#5ol@Csu%=QsZ?POXnb7P-j?wrGSyZ@id zu?}UI)p`zO{NowO*7j#cezV*m$t`(Sxj>OJYu62LEw@R_ zHrmE8=VxY%&<_} zJb8KHqf+DXn_0mRuum6$PikaoNPi?X%EOSpEH%2YW>~B&95q>%7mi_#uYHyPt>-`t zGCsg%oC?_E6WN&3H0+_^RXGxCC;C$O5Nm8DeqWawr(%6J@_DsC;Vc}9ec;oC6Mb~# zLDql8T9L%TzE_L28ErKeN;$O>@{f;ZW4h31YD3Oo`)@`YM*I_JQ}~;aC;T>!-)Uj{ zmjHhX`m)P3WqDccXZeK|)_4{A={U|-D|u}0i;&e0d%(UElg(4wEn|w}z11vytb&CX zOYkkQzn{f=eEg}!d059|kDD!-Q7gMPVY;lA#?N#n;Vgaa?)=<8V~;tVa8|-c!g}sF zfql8?#p~OTnkP7j_Xj8!4o_<|TbQ$L68745hIMBm_PA`-hd7EhG+0jTddQr2IUAcN zO`cbHL~1;8GU1#uQtN{%KWwcOeX*hsg|pe*HtaW+mPunRmrJX2FJp5}C~t&bA0G$Z z>EpxYdf6Zs`W1T#gaZUL>JXRR+P#A@~N=w z*k=O?xG>loj+w%D07modgJTKIvvIMlD4#+7V`*5M{)RR40hOm5|0+`Bn)xM^jcexh zR6oR;xoe0u^9bg-Um6-ef^{=QvY92Un^N@SaoGRPnWE>P($;nB2(}tNmxI=3%$vF7 zkJ9@7ij{1Z)-x97zFDjfYyRzA{yBr>pGk16`DB;y)nb_!lOJ|-{v7;?aq#;qu=blJ zb?qdb(tfZhL;h$N)(p?5cR%dG7{KWAr%lt?De^hU#w=m1}fo?W~Jxo9jp2FbsR;0C++`o-k`ciKe&d_Rvz;cR{WoH=^FmxU8c7~Dj5@-*yR_qjUEQ~E8Kk8RAeh`}d# z{=UimxE0H;#NK~@?1A!V?8!hbv)0ZU$($K!EOS{)ZiOOcHBQ4^A{@e3>qjuB74>n3uhvZp^E2Zor;69|oC;X>i`y_wqx%!13w4=** z6MP9;_rJhpBRS8&=hXLuKIBOcBqzqFo5m(;zO$d!O!8-^LJp#Tz8Ajpxh2uKa9-BV zPGg|wL$J$H;6XN!Fq1!Pf-h-?Pnibaau|HfbojIIXTC5%$%I%SnGPLuYM?;y3RfEkAq&{to$v1g`>JDSXJ|cd&xKFR_AWfk*!N zPtw^Kta0I;rtv3i@MHe4t|`CmCv3HKde@HJS6HK6y6l0pN99kCU<}*-8NNspYivWm zEz`Rutzs&2+Cpk!-?Ia6q zCucaxk#hojp!4_Zn)5x7BQGh(q@)}kgB*5Mjwz}fbeHjM)hEh!v~oE}Hzu>Dn|lG< zbRTP+h<3=2C3$cz?4J7g^f0Ym??UD`u?G^(7U+}a3*j`V@@2iWX%_&Dx2bUUWKk=i+b*Nw2nrLf5o z*k&WeqqD+Y4%I)^q3`eE&If5a_BzB zGRSZxz8-BYagaSvggrN7?MZNZ{xbU1jP+#$=4pNg+eh&B4CchW*U3*|vvGXy8eSA9 z+obhSda0*#Bu_Kjv2UkIy9*6#jrUx?lrzZnKatO!aZH z;fan@@L$N5UV%OAhdodqkD9bT{uy;NR<9z}Y+-!t=g8B2DZ&30`COJ=D`73Rp)Gx_ zjRH=(eD!0^?%qWi<8YALnJ{d`SfV|^X>mSwVhq7gyN4rM%Ks0fmNa=;sT5hH)s1sJ z3D{xWb#`D(kK3W@!fr}nKgF=4C9t){ur>IH zSOe*9;6?1?rz?IQ9mr&H+{x^rdls^zQtUhERQLV!md5G+lQK zc;I?AhWev}+S!)QUU%Yt3VPkjDkp_M#(f60^W}4iiF!NmU-#G#Eh%WjUAA6NeWLaq zunUsGamZZo_mE?eK@L^_j~2&a>jw*Q4z5Ih%h0|Rceiw}--B_cv)>`4s%}j4)cwaI z%?syB<4)k-!b!T`1~}=1_TX*s&o`N}PuQ?#v|-HKu=ftu(OKB7g0+I~SB(9q`#sXb z!06om!V%hCWfAU#og8;ycu_yq3w{#rl+WLlhPxg~^^@$-t#xy80mf}n9`$8&TET4W zv6f-jGw-%PW`Tb*8ve~p*w1nJH+WVN#$9SR$xn84cwGtZXG-D=koP{q;vJ?5ukD;C z9n8I)ovKS`&RqEUSD|lRun`aLQM=M{cTH)AeDIZd40>UW3#CVPsP&MY>f45~1%JZ+ zMSckmj@@UgO5(3fJ7nKAUwVBDWX$kxIKZTd?Rip0W^~Eq13~!cgx^bh+Pot5SwuT@ zO?STDM`U$vJG`SPjy*ay3_3rH{c-=3SR-GspP)OTY2Ky-Rf)s`yEMN2DflPs>vFUc z_e?}f{LVoC&zmLO=M`gqU3i~+2z{aP--R>ZZ_uX%WO)H=5$P$1wLaW32KUqG!z7e% zH#@>K?q@mP7TmKOnI;$XK|gsmwmL(a(B20f zrC-7P^Wd&66FRN6$_JN8ne7C71vaw~Iw60K*6ih&JCWgRpCvP=Jr6u_&mWrvzt}EK zYG-4Z`kZDvaJoiej8Km~BWy~i=UbL`6=$TnPM@@VuP9FIXwNXVuWu&SM~ux#$dWr% zTPJcQsWAe%b0t$_B~ls}dZrY?nv#qAyiVYnEUo2qPA8kE`AF^c;EZUV+40yB@;6}L zm0x2~%cELb5i?uR2i?&6+lM(w{W*ethVHLQF{cNvr{@ua?q0bsqK?bsGs8zfgSAT? zE4@v!ZwuN~ai-YArjc?ScBkP$2FqrxedxlW;`9JVAJ6;X-(b%ffZt7H*7p<(%jnOM zc2l(X+vezdkEKQb=haNTGr0~j_5w%cad%$Wh36II$1MV!Xyze33jdR2d>Ui00A;eN zlYhSZ%~KeMx#{xjS?ThrLad{^G1j#9(U;auV@m6#>L*rSrOL7ey1fFtdT=*(CDK;x zztmnO`{G-~pY&|GN9!Zyr*6i0gy~NDK!C=WaD=_}2^o7L+mE&WWKWQVxBavz-ir04 z6MXyr_}w=;-hTF@zCZrvqmH-FeFT2leYx^M!t*@AR6Gypj{|1kY>5#}+z*NkU=rr0N#7j#!BL4KS;8|{#v4QrdkP{v*3Hk^45_TiZn&*M25i|hFg zsL1T)$F+9%086kUC z7|%l;mr=X9t>wQ#O5>>0l8q2wJXh|vJX8{==gQ!|*Jt2y0RD+4@$>TMx?d?1P%0dOx1wSsvnRAjX5%F@|Stf-Up0(d8(` zGiYjyd}SN?gEp-lnq!2+z@KEY!j=oAakVb2l^>vw&}sH@$Y-;n9{y|w>an)heqgr7 z2wp_bSS)gU9c;YJ3cCls6>@U7>=r)+~if85}E>tpv3_UQ#^ zzYVfu-?(V|@twhxX6%_V=UxCX7u4?NhtdevhI34zzEbpE_e0+rJUM zC48f7>O0vC3`NZk9v6}k=ZwZ9&^_t9@~3hqq8p5}d4=_@0vEccnBTsHAldSDFm*$T^w~Z{q!Zz@>jv)J$RDUGHA|C`^CY6uF z7vVf(lRx8tz zdItJcivC-8pWu%+l0Vvs_AIqOTrkmohV{OydOGIM`>lJJ>zB75^(eZ^rpWAG1u@u$Ru-u&YD3OY(9Xc2PbI z{~P`3{_AejwT`P@fuMKOm;cl!E6E+Ng#_0o(otW3;|JNN-4(ygjWKx;tTOP(J zZ!QZvHY*1*a4sc39AmONZ?y))o^dUn?H_y<^MQPiS>Ta}GJ|YJ9rt059)llt6#FRF z1k5FE|2+YI1EVj#R}=2wz4~4F&iY1n8uCXC`S%U^4-EOg z81f$(@}C&;pBnN5hP(-TsjjzChWuDV{tJfuVncqVA%CkOf4d=%7?mV{+%+WgPZ;vp zE0gelG356e@?SONCm8Y%81nZT@(&yGIAd50nYf+7EFL%!UQUuekB zG30+?$bZq0zs`_fYRJED$R9Q2-!3LMu1$w2i0Rc`D1U>S}jGNU8R?0zr3( zExECbl?1C@4Q_Tz$m?TnHDBtyX$5QY8wy(Xmh!SC^>q#Pez!lAtQUY9Ub2prS2)Yd zR^F(ra#FnRrH@eq=`$Le>O% z_w1m%nnZ?hw|WDiCYNt@lRMC2TjTQj+%>i}^#Mp^t7-|kgElnoN^(gNtU_nOL?_wc z4S8(Uc*)atP4kt_>?X*vVfKcF3+NrtkhjjQ;xz@_*JWrULcS+`aL=iJ^fI113S}Lx zr?_{}KkE2Z^6}DBhr?kDhFsOPwqTtr=pmKVxJgiS3w77oLheAF*Y83(gXyxl0|B+i zkgdBy8*jWDsq)X)8`fL>JEwX-{?5((-Pu1lo9pp!Z7FMLe0}~k;BwkH6bb%0GpHRM zK2)<=c-NPB=-){we*xcV_-eb(btO2m?2G}@ z?L57Xrz?2sJu(*pCO5J9+unJpBVtKj3NFmo&;LJe|i=nWwk$w34S= zc=`lSf6miadHOz2b$R~6%b)Tz?KZteOGokY44!_Gr{z4Y;_1CS-NDnnJpBbv-{R@} zJk?wIgqJOt1N523(=YN=gTlrKmCJd#Y7jiY%UgK*;Gp_#y!<3j_we+&L3o$!T+{p| zJJI-P{>SnD_SKd-9Q9UV*DCI2uWH>&wF>1$fZf$iAxQ2gNV2m!ItJVu^16J~Io_<>zup_D z_t(*7H_2td7{o-VQ$-t!md-N7C*WS|4WginvZl$e9q$-(Rn-TmF&ckwb)7oC$okxV zk^nis1}t{_a7OWm#z#%2``s+wX}xLxaq5QRDQqg$#;JU9)a*<0zvix&A|mY+>Y z2IKLT%CHz3MQ?qTLRwNG!BCC29!64ESMOKWuW7*Q6IwG=&4y$ZTcaB!!&I+PR2x-o zkdKqr7A$l_3ZUTm2+b;*mn1DMhV+{_jM1dlC~90SKJQwOW*-WjoHxQWw7SqnzpGBm zhc?o)7Imh~pL@-m8lR838oaaXg0nYx{j<@-*${O-R=U}~xwGfa9uk9}em@6;Y{tLV zh_Jk*d}Yas`SXTqQB|W6d5}a+cpQWk?{hE=HvTzS9=EIEbE-*a#%jhMV{#S^&>LOv zzyH4DSnrK2l66!nddqyQw|55WCb3p_)U?=yV(&~z&dH^6)+!*s-<57X);n_$j>6;| z{FVbdI;^DoYh9)^mF{oA*$g^bc8(6e@%3-0lJxfO0qpz4Yt%}$y)?_QUdWsCFu_Kw zP+_Lw$9fTCitrr9@O+;gUVO!|XVBhi;$QeA3^mzKbqMrZ?8Sp>oC;oFtEM!`7fve^*7kiFS>(+ zt*|MT_~M?UyrQ^b#V;2g*m-#R-78iU+g24Xo@2aw0qUjCe{v1z}$088lJAIaI#g!&g6aY znMGQC7G6HpdH*L@`9GBSBeEEqYMNoXVJu@G(%oP-V{=&#>qGh(%4rj@Vcfyk<4ALm z=1<0N5F&jG=?zF%U5+o(50O?P^vPV(Iy)K)|B5W(tPQY)#6Ps?NBW5#p3~2=ENu;>v1^qM$cEwuQf0JNWY6^R0 z{iuh1v9vq!dx}U`gCFcmO<`Xw3-Aci`$2D?i~gY8jr2WfhN*M`W4j;+?2KIj_@&P! z4g7zh0U2vIbu?m$WJPi!wun7)O(Z`eM^1M1ci?@kXjU{QYL8wM?TmHBx??%d*q+(` zOy%yayE}I8+1<69emfLXmRSt6rIFhrl@U**A<`UajkHA~k&Xy8aq07qse!Y@HMz+D z)1JfLi7;$>!kU8M-DmZ;T~m;0{ubkP$@p&LNDGCINuLQ zhrl@t2d+x6PPH{3t#=AkvjJ%ps3xQJSs+QZ^)UEsh00QpkKod5#m=cg6kLRPaUWAU zQHK=!d^ZtjdlCmndG!{m14>HqIfAy13G)0NkUdFx8mj4v32h0z*vrSA^i6$ZECGn! zYV2tZN;!}+h4VN#L#YM`eshn6F+k4368e)kiqecbSNI0W)>X(xJjFCZyoA#xLV&Y9 z2?0Y^4Qn|G?y0e8f`s_>0)sZ*!&u}9+V~S7d&U^4qTqUifb$d}T>{Q#aPAX0H{$gr zyMS{Y>gmP0)L7sbsMu`+4t_(1?G|tbUf_1bH2;+XP52piZF|e+1+mf%A_*RVm;+14xg6lWm25 z1PMn0(jeem4Vl{n9K0jLRtY%sA+t|tYc?Q#0*)Q6-!1T&21u!ZvkdlQ6Chs!Bwv6u z0%8#$TfiqvfIJGVUL!!>gv>bt1fsAJg3QwZ=}6)z2(d)pe74jRX+>Y~GY7TA(q(^{^2h}_Hrl_t$sZ)U5 z4SUA1(9qWXsK3T)q_P2(si0RJ);hCO}?9FKiAY)z1JaP2%X!H)aVq_!VJRnZ(f_ zm7JNW^U{C-=dxE0?wN>Is(pOP(3Z++yKZb0q574MtcODEeJpnOYZc z_MoS42|dMckgzU+ssxaT&^msPhrK1>Oa;Uv;E=c2Bj9`l$ZZ17Pa*S%0?s}_+L99T z$DVA3;NklrPrpFr0i;>r{Cz+g1gdWWl6IAGOz~zZYe-V*PY1K?I*$IlH%p-U1*qDR zRAh(SVNuT|+fw)wyq8iCfav+&6oJoknB85;o)Vw`4oE&y42f!;umV8r0@V|MbP818 z0;E)+`UDa#5U5T9azLOu0?2JiDlRh1w&{IG6?0=&)(DWLfXD)88Iaoq&Ktow2h^!v z>;eRA43OthSt&qbfOrJReo)~m!a(&f^xP~!@Xk4F6(9=aX%ishfzvHW*n~A9V$*x7 zKdW6K^lMKha0IGzu*{RfxG%)Ikt5*T0?ziSI%oaaZ-cu^unHm zC@@VtK@Y94>zvU+wi;A@f;?Bk6823u;?x1>i~xC!tmO(FM~@eX2ol~6s_rCbJ(6Iz zfb&IY%3CuOpq7Q)2%a%kRupn`%EJQzb?-X2%NV7vMSkk;u8cUf)vDj zUPJ)tNJ6-Jn5ds8AP;`iLZyHy;d2M%p-&>A^LY@fmI!&18o?)pQ+5H>#tW#z7vSI* zuLkkyhvw;%;#?!(?882ZzooMVaZz*N!+7EO7>d;>DvB3@UW1~HG@uX+p@F#1o+3h+ z6vCW%w36z7X>m~kMlzg9fF{GMbZSkKi$?k+iD5iyw2=VNgOxO(7T=>q^l(TjcE=di zb3tV)u*b+rjR4XBn$x0o6>kn8T1HXUHn{>diko8O{CKrh4V2TNh#wmSS>vq<4g&e= z{cG1@7<5uTB%c?Ehg%>7TWnAe&cefQmZNsTv`vmDNdu zH*^}BLJD4=sY6^{5|PZiIt378;W!onjUjIrTEo)%0Dqf@bB3V|3c=ENT@WUf6hw%j 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 PMM_qeREQ|(vr7I0UqTYT literal 0 HcmV?d00001 diff --git a/clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/coverage.so b/clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/coverage.so new file mode 100644 index 0000000000000000000000000000000000000000..af1ba510abec31f0a65d1c9c2bd6f17b8b2585bf GIT binary patch literal 28160 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 HR|EeCqt_T8 literal 0 HcmV?d00001 diff --git a/clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/date_core.so b/clangarm64/lib/ruby/3.1.0/aarch64-mingw-ucrt/date_core.so new file mode 100644 index 0000000000000000000000000000000000000000..22c743e97847193b0cc7ca3538c8cd50ed8b634f GIT binary patch literal 233472 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

;}{Do!boU*f>|HLh3%Jy!7 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%0DODsDGTPwz2# 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�$ZU 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 z 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